@libs-ui/components-tabs 0.2.329-0 → 0.2.331-0

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.
@@ -259,10 +259,10 @@ export class LibsUiComponentsTabsComponent {
259
259
  this.onDestroy.complete();
260
260
  }
261
261
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
262
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsTabsComponent, isStandalone: true, selector: "libs_ui-components-tabs", inputs: { tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, heightTabItem: { classPropertyName: "heightTabItem", publicName: "heightTabItem", isSignal: true, isRequired: false, transformFunction: null }, ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, allowDragDropPosition: { classPropertyName: "allowDragDropPosition", publicName: "allowDragDropPosition", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, configCss: { classPropertyName: "configCss", publicName: "configCss", isSignal: true, isRequired: false, transformFunction: null }, popoverShowMoreTabItem: { classPropertyName: "popoverShowMoreTabItem", publicName: "popoverShowMoreTabItem", isSignal: true, isRequired: false, transformFunction: null }, checkCanChangeTabSelected: { classPropertyName: "checkCanChangeTabSelected", publicName: "checkCanChangeTabSelected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keySelected: "keySelectedChange", configCss: "configCssChange", outKeySelected: "outKeySelected", outFunctionsControl: "outFunctionsControl", outDragTabChange: "outDragTabChange", outDisplayMoreItem: "outDisplayMoreItem", outAction: "outAction" }, viewQueries: [{ propertyName: "headerEl", first: true, predicate: ["headerEl"], descendants: true, isSignal: true }, { propertyName: "headerLeftEl", first: true, predicate: ["headerLeftEl"], descendants: true, isSignal: true }, { propertyName: "headerRightEl", first: true, predicate: ["headerRightEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"libs-ui-tab\">\n <div\n #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n #headerLeftEl\n class=\"libs-ui-tab-header-left\">\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div\n class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div\n LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? elementContainerEl.clientWidth / (itemsDisplay().length || 1) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div\n class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover\n class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277,\n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{ config: { content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more' } }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div\n #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div\n class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list\n [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n", styles: [".libs-ui-tab{position:relative;display:flex;width:100%}.libs-ui-tab .libs-ui-tab-header{position:relative;background-color:#fff;display:flex;flex-wrap:nowrap;width:100%;overflow:hidden;flex-shrink:0}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-header-center{display:flex;flex-wrap:nowrap}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container .libs-ui-icon-arrange{display:none}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container:hover .libs-ui-icon-arrange{display:block}.libs-ui-tab .libs-ui-tab-content-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: LibsUiComponentsDragContainerDirective, selector: "[LibsUiComponentsDragContainerDirective]", inputs: ["disableDragContainer", "mode", "directionDrag", "viewEncapsulation", "acceptDragSameGroup", "placeholder", "groupName", "dropToGroupName", "items", "stylesOverride"], outputs: ["itemsChange", "outDragStartContainer", "outDragOverContainer", "outDragLeaveContainer", "outDragEndContainer", "outDroppedContainer", "outDroppedContainerEmpty", "outFunctionControl"] }, { kind: "directive", type: LibsUiDragItemDirective, selector: "[LibsUiDragItemDirective]", inputs: ["fieldId", "item", "itemInContainerVirtualScroll", "throttleTimeHandlerDraggingEvent", "ignoreStopEvent", "onlyMouseDownStopEvent", "dragRootElement", "dragBoundary", "dragBoundaryAcceptMouseLeaveContainer", "elementContainer", "zIndex", "disable"], outputs: ["outDragStart", "outDragOver", "outDragLeave", "outDragEnd", "outDropped"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsTabsItemComponent, selector: "libs_ui-components-tabs-item", inputs: ["ignoreCalculatorTab", "step", "mode", "tabs", "item", "keySelected", "fieldLabel", "fieldKey", "cssDefault", "size", "disable", "disableLabel", "zIndex", "changeViewTab"], outputs: ["itemChange", "outAction"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
262
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsTabsComponent, isStandalone: true, selector: "libs_ui-components-tabs", inputs: { tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, heightTabItem: { classPropertyName: "heightTabItem", publicName: "heightTabItem", isSignal: true, isRequired: false, transformFunction: null }, ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, allowDragDropPosition: { classPropertyName: "allowDragDropPosition", publicName: "allowDragDropPosition", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, configCss: { classPropertyName: "configCss", publicName: "configCss", isSignal: true, isRequired: false, transformFunction: null }, popoverShowMoreTabItem: { classPropertyName: "popoverShowMoreTabItem", publicName: "popoverShowMoreTabItem", isSignal: true, isRequired: false, transformFunction: null }, checkCanChangeTabSelected: { classPropertyName: "checkCanChangeTabSelected", publicName: "checkCanChangeTabSelected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keySelected: "keySelectedChange", configCss: "configCssChange", outKeySelected: "outKeySelected", outFunctionsControl: "outFunctionsControl", outDragTabChange: "outDragTabChange", outDisplayMoreItem: "outDisplayMoreItem", outAction: "outAction" }, viewQueries: [{ propertyName: "headerEl", first: true, predicate: ["headerEl"], descendants: true, isSignal: true }, { propertyName: "headerLeftEl", first: true, predicate: ["headerLeftEl"], descendants: true, isSignal: true }, { propertyName: "headerRightEl", first: true, predicate: ["headerRightEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"libs-ui-tab\">\n <div\n #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n #headerLeftEl\n class=\"libs-ui-tab-header-left\">\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div\n class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div\n LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? elementContainerEl.clientWidth / (itemsDisplay().length || 1) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div\n class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover\n class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277,\n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{ config: { content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more' } }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div\n #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div\n class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list\n [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n", styles: [".libs-ui-tab{position:relative;display:flex;width:100%}.libs-ui-tab .libs-ui-tab-header{position:relative;background-color:#fff;display:flex;flex-wrap:nowrap;width:100%;overflow:hidden;flex-shrink:0}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-header-center{display:flex;flex-wrap:nowrap}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container .libs-ui-icon-arrange{display:none}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container:hover .libs-ui-icon-arrange{display:block}.libs-ui-tab .libs-ui-tab-content-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: LibsUiComponentsDragContainerDirective, selector: "[LibsUiComponentsDragContainerDirective]", inputs: ["disableDragContainer", "mode", "directionDrag", "viewEncapsulation", "acceptDragSameGroup", "placeholder", "groupName", "dropToGroupName", "items", "stylesOverride"], outputs: ["itemsChange", "outDragStartContainer", "outDragOverContainer", "outDragLeaveContainer", "outDragEndContainer", "outDroppedContainer", "outDroppedContainerEmpty", "outFunctionControl"] }, { kind: "directive", type: LibsUiDragItemDirective, selector: "[LibsUiDragItemDirective]", inputs: ["fieldId", "item", "itemInContainerVirtualScroll", "throttleTimeHandlerDraggingEvent", "ignoreStopEvent", "onlyMouseDownStopEvent", "dragRootElement", "dragBoundary", "dragBoundaryAcceptMouseLeaveContainer", "elementContainer", "zIndex", "disable", "ignoreUserSelectNone"], outputs: ["outDragStart", "outDragOver", "outDragLeave", "outDragEnd", "outDropped"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsTabsItemComponent, selector: "libs_ui-components-tabs-item", inputs: ["ignoreCalculatorTab", "step", "mode", "tabs", "item", "keySelected", "fieldLabel", "fieldKey", "cssDefault", "size", "disable", "disableLabel", "zIndex", "changeViewTab"], outputs: ["itemChange", "outAction"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
263
263
  }
264
264
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsTabsComponent, decorators: [{
265
265
  type: Component,
266
266
  args: [{ selector: 'libs_ui-components-tabs', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsTabsItemComponent, LibsUiComponentsListComponent], template: "<div class=\"libs-ui-tab\">\n <div\n #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n #headerLeftEl\n class=\"libs-ui-tab-header-left\">\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div\n class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div\n LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? elementContainerEl.clientWidth / (itemsDisplay().length || 1) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div\n class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover\n class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277,\n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{ config: { content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more' } }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div\n #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div\n class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list\n [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n", styles: [".libs-ui-tab{position:relative;display:flex;width:100%}.libs-ui-tab .libs-ui-tab-header{position:relative;background-color:#fff;display:flex;flex-wrap:nowrap;width:100%;overflow:hidden;flex-shrink:0}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-header-center{display:flex;flex-wrap:nowrap}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container .libs-ui-icon-arrange{display:none}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container:hover .libs-ui-icon-arrange{display:block}.libs-ui-tab .libs-ui-tab-content-container{width:100%;height:100%}\n"] }]
267
267
  }] });
268
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBUyxzQ0FBc0MsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZILE9BQU8sRUFBb0IsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQTBDLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFXakQsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxtQkFBbUI7SUFDVCxZQUFZLEdBQUcsTUFBTSxDQUFt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NkJBQTZCO2tCQVR6QyxTQUFTOytCQUVFLHlCQUF5QixjQUd2QixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxzQ0FBc0MsRUFBRSx1QkFBdUIsRUFBRSxnQ0FBZ0MsRUFBRSxzQ0FBc0MsRUFBRSxpQ0FBaUMsRUFBRSw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgSURyb3AsIExpYnNVaUNvbXBvbmVudHNEcmFnQ29udGFpbmVyRGlyZWN0aXZlLCBMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtZHJhZy1kcm9wJztcbmltcG9ydCB7IElMaXN0RGF0YUVtaXRLZXksIExpYnNVaUNvbXBvbmVudHNMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1saXN0JztcbmltcG9ydCB7IElQb3BvdmVyLCBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBjb252ZXJ0T2JqZWN0VG9TaWduYWwsIGlzTmlsLCB1dWlkIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElUYWJDc3NDb25maWcsIElUYWJzLCBJVGFic0Z1bmN0aW9uQ29udHJvbEV2ZW50LCBJVGFic0l0ZW0sIElUYWJzSXRlbUV2ZW50LCBUWVBFX1RBQl9NT0RFIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1RhYnNJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9pdGVtL2l0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IHRhYk1vcmVMaXN0Q29uZmlnIH0gZnJvbSAnLi91dGlscy90YWJzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSwgTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmUsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c1RhYnNJdGVtQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzTGlzdENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBpdGVtc0Rpc3BsYXkgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SVRhYnNJdGVtPj4+KFtdKTtcbiAgcHJvdGVjdGVkIGRpc3BsYXlNb3JlSXRlbSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCB0YWJNb3JlTGlzdENvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHRhYk1vcmVMaXN0Q29uZmlnKHRoaXMudHJhbnNsYXRlLCB0aGlzLmZpZWxkS2V5KCksIHRoaXMuZmllbGRMYWJlbCgpLCB0aGlzLnRhYnMoKSwgdGhpcy5kaXNhYmxlKCkpKTtcbiAgcHJvdGVjdGVkIGNoYW5nZVZpZXdUYWIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcm90ZWN0ZWQgZ3JvdXBOYW1lID0gc2lnbmFsPHN0cmluZz4odXVpZCgpKTtcbiAgcHJvdGVjdGVkIHN0eWxlc0RyYWdEcm9wT3ZlcnJpZGVDb21wdXRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudXBkYXRlU3R5bGVzRHJhZ0Ryb3BPdmVycmlkZSgpKTtcblxuICBwcml2YXRlIHBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCA9IHNpZ25hbDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSB0YWJzID0gaW5wdXQucmVxdWlyZWQ8SVRhYnM+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gbW9kZWwucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8VFlQRV9UQUJfTU9ERT4oJ2xlZnQnKTtcbiAgcmVhZG9ubHkgZmllbGRLZXkgPSBpbnB1dDxzdHJpbmc+KCdrZXknKTtcbiAgcmVhZG9ubHkgZmllbGRMYWJlbCA9IGlucHV0PHN0cmluZz4oJ2xhYmVsJyk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBoZWlnaHRUYWJJdGVtID0gaW5wdXQ8bnVtYmVyPig0MCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNhbGN1bGF0b3JUYWIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDwnbGFuZ2VyJyB8ICdtZWRpdW0nPignbWVkaXVtJyk7XG4gIHJlYWRvbmx5IGFsbG93RHJhZ0Ryb3BQb3NpdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgY29uZmlnQ3NzID0gbW9kZWw8SVRhYkNzc0NvbmZpZz4oKTtcbiAgcmVhZG9ubHkgcG9wb3ZlclNob3dNb3JlVGFiSXRlbSA9IGlucHV0PElQb3BvdmVyPigpO1xuICByZWFkb25seSBjaGVja0NhbkNoYW5nZVRhYlNlbGVjdGVkID0gaW5wdXQ8KCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0S2V5U2VsZWN0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbnNDb250cm9sID0gb3V0cHV0PElUYWJzRnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dERyYWdUYWJDaGFuZ2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgb3V0RGlzcGxheU1vcmVJdGVtID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG91dEFjdGlvbiA9IG91dHB1dDxJVGFic0l0ZW1FdmVudD4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyRWwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2hlYWRlckVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyTGVmdEVsID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdoZWFkZXJMZWZ0RWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJSaWdodEVsID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdoZWFkZXJSaWdodEVsJyk7XG5cbiAgLyogSU5KRUNUKi9cbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVUYWJzQ3NzQ29uZmlnKCk7XG4gICAgdGhpcy5vdXRGdW5jdGlvbnNDb250cm9sLmVtaXQodGhpcy5GdW5jdGlvbnNDb250cm9sKTtcbiAgICBpZiAodGhpcy5tb2RlKCkgIT09ICdsZWZ0JyB8fCB0aGlzLmlnbm9yZUNhbGN1bGF0b3JUYWIoKSkge1xuICAgICAgdGhpcy50YWJzKClcbiAgICAgICAgLml0ZW1zKClcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS51cGRhdGUoKGRhdGEpID0+ICh7IC4uLmRhdGEsIHNwZWNpZmljRGlzcGxheTogdHJ1ZSB9KSkpO1xuICAgICAgdGhpcy5pdGVtc0Rpc3BsYXkuc2V0KFxuICAgICAgICB0aGlzLnRhYnMoKVxuICAgICAgICAgIC5pdGVtcygpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbSgpLnNwZWNpZmljRGlzcGxheSlcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1MCksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYnMoKS5pdGVtcygpLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BsYXlNb3JlSXRlbS5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0b3JUYWJzSXRlbURpc3BsYXkoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuY2hhbmdlVmlld1RhYi5waXBlKGRlYm91bmNlVGltZSgyMCksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNhbGN1bGF0b3JUYWJzSXRlbURpc3BsYXkoKSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHVibGljIGdldCBGdW5jdGlvbnNDb250cm9sKCk6IElUYWJzRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICBhZGRUYWJzSXRlbTogdGhpcy5hZGRUYWJzSXRlbS5iaW5kKHRoaXMpLFxuICAgICAgY2FsY3VsYXRvclRhYnNJdGVtc0Rpc3BsYXk6IHRoaXMuY2FsY3VsYXRvclRhYnNJdGVtRGlzcGxheS5iaW5kKHRoaXMpLFxuICAgICAgc2VsZWN0ZWRUYWJzSXRlbTogdGhpcy5oYW5kbGVyU2VsZWN0ZWRUYWJzSXRlbS5iaW5kKHRoaXMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnNDc3NDb25maWcoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnQ3NzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoICh0aGlzLm1vZGUoKSkge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHRoaXMuY29uZmlnQ3NzLnNldCh7XG4gICAgICAgICAgZmlyc3Q6ICdtbC1bMjBweF0gbXItWzE2cHhdJyxcbiAgICAgICAgICBvdGhlcjogJ21sLVsyMHB4XSBtci1bMTZweF0nLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICB0aGlzLmNvbmZpZ0Nzcy5zZXQoe1xuICAgICAgICAgIGZpcnN0OiAncHgtWzEycHhdIG1sLVsxOHB4XSBtci1bMThweF0nLFxuICAgICAgICAgIG90aGVyOiAncHgtWzEycHhdIG14LVsxOHB4XScsXG4gICAgICAgICAgaGVhZGVyOiAnZmxleCBqdXN0aWZ5LWNlbnRlcicsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1oYXMtbGluZSc6XG4gICAgICAgIHRoaXMuY29uZmlnQ3NzLnNldCh7XG4gICAgICAgICAgZmlyc3Q6ICdweC1bMTZweF0nLFxuICAgICAgICAgIG90aGVyOiAncHgtWzE2cHhdJyxcbiAgICAgICAgICBoZWFkZXJDZW50ZXI6ICdpdGVtcy1jZW50ZXInLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzcGFjZS1iZXR3ZWVuJzpcbiAgICAgICAgdGhpcy5jb25maWdDc3Muc2V0KHtcbiAgICAgICAgICBmaXJzdDogJ214LWF1dG8nLFxuICAgICAgICAgIG90aGVyOiAnbXgtYXV0bycsXG4gICAgICAgICAgaGVhZGVyQ2VudGVyOiAndy1mdWxsJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3R5bGVzRHJhZ0Ryb3BPdmVycmlkZSgpIHtcbiAgICBpZiAodGhpcy5hbGxvd0RyYWdEcm9wUG9zaXRpb24oKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInLFxuICAgICAgICAgIHN0eWxlczogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaWJzLXVpLWRyYWctZHJvcC1pdGVtJyxcbiAgICAgICAgICBzdHlsZXM6ICdjdXJzb3I6IG1vdmU7JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJhZ2dpbmcnLFxuICAgICAgICAgIHN0eWxlczogJ2N1cnNvcjogbW92ZTsgYmFja2dyb3VuZDogI2RkZGRkZDsnLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGlicy11aS1kcmFnLWRyb3AtaXRlbScsXG4gICAgICAgIHN0eWxlczogJycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRpc2FibGUnLFxuICAgICAgICBzdHlsZXM6ICcnLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJEcm9wQ29udGFpbmVyKGV2ZW50OiBJRHJvcCkge1xuICAgIGNvbnN0IHsgaXRlbURyYWdJbmZvIH0gPSBldmVudDtcbiAgICBpZiAoIWl0ZW1EcmFnSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFicygpLml0ZW1zO1xuICAgIGNvbnN0IHsgaW5kZXhEcmFnLCBpbmRleERyb3AgfSA9IGl0ZW1EcmFnSW5mbztcbiAgICBpZiAoaXNOaWwoaW5kZXhEcmFnKSB8fCBpc05pbChpbmRleERyb3ApIHx8IGluZGV4RHJvcCA9PT0gaW5kZXhEcmFnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1EcmFnID0gaXRlbXMoKVtpbmRleERyYWcgYXMgbnVtYmVyXTtcbiAgICBpdGVtcy51cGRhdGUoKGl0ZW1zKSA9PiB7XG4gICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcmFnIGFzIG51bWJlciwgMSk7XG4gICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcm9wIGFzIG51bWJlciwgMCwgaXRlbURyYWcpO1xuICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgfSk7XG4gICAgdGhpcy5vdXREcmFnVGFiQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KGV2ZW50OiBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5wb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQuc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlclNlbGVjdGVkVGFic0l0ZW0oa2V5OiBzdHJpbmcsIHJlc2V0RGlzYWJsZSA9IHRydWUpIHtcbiAgICBjb25zdCBpdGVtU2VsZWN0ZWQgPSB0aGlzLnRhYnMoKVxuICAgICAgLml0ZW1zKClcbiAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0ga2V5KTtcbiAgICBpZiAoIWl0ZW1TZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVzZXREaXNhYmxlKSB7XG4gICAgICBpdGVtU2VsZWN0ZWQudXBkYXRlKChpdGVtKSA9PiAoeyAuLi5pdGVtLCBkaXNhYmxlOiBmYWxzZSB9KSk7XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlckNsaWNrSXRlbShpdGVtU2VsZWN0ZWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJTZWxlY3RlZEtleShldmVudDogSUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyQ2xpY2tJdGVtKGNvbnZlcnRPYmplY3RUb1NpZ25hbChldmVudC5pdGVtKSk7XG4gICAgdGhpcy5vdXREcmFnVGFiQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyQ2xpY2tJdGVtKGl0ZW06IFdyaXRhYmxlU2lnbmFsPElUYWJzSXRlbT4pIHtcbiAgICBpZiAoaXRlbSgpLmRpc2FibGUgfHwgdGhpcy5kaXNhYmxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hlY2tDYW5DaGFuZ2VUYWJTZWxlY3RlZCA9IHRoaXMuY2hlY2tDYW5DaGFuZ2VUYWJTZWxlY3RlZCgpO1xuICAgIGlmIChjaGVja0NhbkNoYW5nZVRhYlNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IGNoZWNrQ2FuQ2hhbmdlVGFiU2VsZWN0ZWQoKTtcbiAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICB0aGlzLmNoYW5nZUl0ZW1TZWxlY3RlZChpdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VJdGVtU2VsZWN0ZWQoaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUl0ZW1TZWxlY3RlZChpdGVtOiBXcml0YWJsZVNpZ25hbDxJVGFic0l0ZW0+KSB7XG4gICAgdGhpcy5rZXlTZWxlY3RlZC5zZXQoaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0pO1xuICAgIHRoaXMub3V0S2V5U2VsZWN0ZWQuZW1pdCh0aGlzLmtleVNlbGVjdGVkKCkpO1xuICAgIHRoaXMucG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KCk/LnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgdGhpcy5jYWxjdWxhdG9yVGFic0l0ZW1EaXNwbGF5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckFjdGlvbihldmVudDogSVRhYnNJdGVtRXZlbnQpIHtcbiAgICB0aGlzLm91dEFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkVGFic0l0ZW0oaXRlbTogV3JpdGFibGVTaWduYWw8SVRhYnNJdGVtPiwgc2VsZWN0ZWQgPSB0cnVlLCBhZGRGaXJzdD86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFicygpLml0ZW1zO1xuICAgIGl0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgIGlmIChhZGRGaXJzdCkge1xuICAgICAgICByZXR1cm4gW2l0ZW0sIC4uLml0ZW1zXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4uaXRlbXMsIGl0ZW1dO1xuICAgIH0pO1xuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgdGhpcy5oYW5kbGVyQ2xpY2tJdGVtKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjYWxjdWxhdG9yVGFic0l0ZW1EaXNwbGF5KCkge1xuICAgIGxldCBpdGVtcyA9IHRoaXMudGFicygpLml0ZW1zKCk7XG4gICAgY29uc3QgaW5kZXhJdGVtU2VsZWN0ZWQgPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSB0aGlzLmtleVNlbGVjdGVkKCkpO1xuICAgIGlmIChpbmRleEl0ZW1TZWxlY3RlZCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5TW9yZUl0ZW0uc2V0KGZhbHNlKTtcbiAgICBsZXQgZGlzcGxheU1vcmVJdGVtID0gZmFsc2U7XG4gICAgY29uc3QgaGVhZGVyV2lkdGggPSB0aGlzLmhlYWRlckVsKCkubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCB8fCAwO1xuICAgIGNvbnN0IGl0ZW1TZWxlY3RlZCA9IGl0ZW1zW2luZGV4SXRlbVNlbGVjdGVkXTtcbiAgICBjb25zdCBpdGVtU2VsZWN0ZWRXaWR0aCA9IGl0ZW1TZWxlY3RlZCgpLnNwZWNpZmljV2lkdGg7XG4gICAgbGV0IHRvdGFsV2lkdGhJdGVtc0Rpc3BsYXkgPSAodGhpcy5oZWFkZXJMZWZ0RWwoKS5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIHx8IDApICsgKHRoaXMuaGVhZGVyUmlnaHRFbCgpLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggfHwgMCkgKyAzMjtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKCFpdGVtKCkuc3BlY2lmaWNXaWR0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpdGVtLnVwZGF0ZSgoZGF0YSkgPT4gKHsgLi4uZGF0YSwgc3BlY2lmaWNEaXNwbGF5OiBmYWxzZSB9KSk7XG4gICAgICBjb25zdCBpdGVtV2lkdGggPSBpdGVtKCkuc3BlY2lmaWNXaWR0aCB8fCAwO1xuICAgICAgY29uc3Qgd2lkdGggPSB0b3RhbFdpZHRoSXRlbXNEaXNwbGF5ICsgaXRlbVdpZHRoICsgKGluZGV4IDwgaW5kZXhJdGVtU2VsZWN0ZWQgPyBpdGVtU2VsZWN0ZWRXaWR0aCA6IDApO1xuICAgICAgdG90YWxXaWR0aEl0ZW1zRGlzcGxheSArPSBpdGVtV2lkdGg7XG4gICAgICBpZiAod2lkdGggPiBoZWFkZXJXaWR0aCkge1xuICAgICAgICBkaXNwbGF5TW9yZUl0ZW0gPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpdGVtLnVwZGF0ZSgoZGF0YSkgPT4gKHsgLi4uZGF0YSwgc3BlY2lmaWNEaXNwbGF5OiB0cnVlIH0pKTtcbiAgICB9KTtcbiAgICBpdGVtU2VsZWN0ZWQudXBkYXRlKChkYXRhKSA9PiAoeyAuLi5kYXRhLCBzcGVjaWZpY0Rpc3BsYXk6IHRydWUgfSkpO1xuICAgIGNvbnN0IGRpc3BsYXkgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0oKS5zcGVjaWZpY0Rpc3BsYXkgPT09IHRydWUpO1xuICAgIGNvbnN0IG5vdERpc3BsYXkgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0oKS5zcGVjaWZpY0Rpc3BsYXkgPT09IGZhbHNlKTtcbiAgICBpdGVtcyA9IGRpc3BsYXkuY29uY2F0KG5vdERpc3BsYXkpO1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiBpdGVtLnVwZGF0ZSgoZGF0YSkgPT4gKHsgLi4uZGF0YSwgb3JkZXI6IGluZGV4IH0pKSk7XG4gICAgdGhpcy50YWJzKCkuaXRlbXMuc2V0KGl0ZW1zLnNvcnQoKHByZXYsIG5leHQpID0+IChwcmV2KCkub3JkZXIgfHwgMCkgLSAobmV4dCgpLm9yZGVyIHx8IDApKSk7XG4gICAgdGhpcy5kaXNwbGF5TW9yZUl0ZW0uc2V0KGRpc3BsYXlNb3JlSXRlbSk7XG4gICAgdGhpcy5vdXREaXNwbGF5TW9yZUl0ZW0uZW1pdCh0aGlzLmRpc3BsYXlNb3JlSXRlbSgpKTtcbiAgICB0aGlzLml0ZW1zRGlzcGxheS5zZXQoXG4gICAgICB0aGlzLnRhYnMoKVxuICAgICAgICAuaXRlbXMoKVxuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtKCkuc3BlY2lmaWNEaXNwbGF5KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxpYnMtdWktdGFiXCI+XG4gIDxkaXZcbiAgICAjaGVhZGVyRWxcbiAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlciB6LVsxXSB7eyBjb25maWdDc3MoKT8uaGVhZGVyIHx8ICcnIH19IHt7IHRhYnMoKS5jbGFzc0luY2x1ZGVIZWFkZXIgfHwgJycgfX1cIlxuICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwiaGVpZ2h0VGFiSXRlbSgpXCI+XG4gICAgPGRpdlxuICAgICAgI2hlYWRlckxlZnRFbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItbGVmdFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2LmxpYnMtdWktdGFiLWhlYWRlci1sZWZ0XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyIHt7IGNvbmZpZ0NzcygpPy5oZWFkZXJDZW50ZXIgfHwgJycgfX0ge3sgdGFicygpLmNsYXNzSW5jbHVkZUhlYWRlckNlbnRlciB8fCAnJyB9fVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIiFmbGV4IHctZnVsbFwiXG4gICAgICAgICNlbGVtZW50Q29udGFpbmVyRWxcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmVcbiAgICAgICAgW3N0eWxlc092ZXJyaWRlXT1cInN0eWxlc0RyYWdEcm9wT3ZlcnJpZGVDb21wdXRlZCgpXCJcbiAgICAgICAgW2dyb3VwTmFtZV09XCJncm91cE5hbWUoKVwiXG4gICAgICAgIFsoaXRlbXMpXT1cIml0ZW1zRGlzcGxheVwiXG4gICAgICAgIFtkaXJlY3Rpb25EcmFnXT1cIidob3Jpem9udGFsJ1wiXG4gICAgICAgIFtkaXNhYmxlRHJhZ0NvbnRhaW5lcl09XCIhYWxsb3dEcmFnRHJvcFBvc2l0aW9uKClcIlxuICAgICAgICBbYWNjZXB0RHJhZ1NhbWVHcm91cF09XCJhbGxvd0RyYWdEcm9wUG9zaXRpb24oKVwiXG4gICAgICAgIChvdXREcm9wcGVkQ29udGFpbmVyKT1cImhhbmRsZXJEcm9wQ29udGFpbmVyKCRldmVudClcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtc0Rpc3BsYXkoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlXG4gICAgICAgICAgICBbZGlzYWJsZV09XCJkaXNhYmxlKCkgfHwgIWFsbG93RHJhZ0Ryb3BQb3NpdGlvbigpXCJcbiAgICAgICAgICAgIFtlbGVtZW50Q29udGFpbmVyXT1cImVsZW1lbnRDb250YWluZXJFbFwiXG4gICAgICAgICAgICBbZHJhZ0JvdW5kYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgW2RyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGxpYnMtdWktdGFiLWl0ZW0tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJtb2RlKCkgPT09ICdzcGFjZS1iZXR3ZWVuJyA/IGVsZW1lbnRDb250YWluZXJFbC5jbGllbnRXaWR0aCAvIChpdGVtc0Rpc3BsYXkoKS5sZW5ndGggfHwgMSkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmZsZXhdPVwibW9kZSgpID09PSAnY2VudGVyLWhhcy1saW5lJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXRlbXMtY2VudGVyXT1cIm1vZGUoKSA9PT0gJ2NlbnRlci1oYXMtbGluZSdcIj5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dEcmFnRHJvcFBvc2l0aW9uKCkgJiYgIWRpc2FibGUoKSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktaWNvbi1hcnJhbmdlIHRleHQtWyM5Y2EyYWRdIGFic29sdXRlIHRvcC1bMTRweF0gbGVmdC1bNHB4XVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtdGFicy1pdGVtXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsIHctZnVsbCAge3sgdGFicygpLmNsYXNzSW5jbHVkZUl0ZW0gfHwgJycgfX1cIlxuICAgICAgICAgICAgICBbdGFic109XCJ0YWJzKClcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplKClcIlxuICAgICAgICAgICAgICBbKGl0ZW0pXT1cIml0ZW1cIlxuICAgICAgICAgICAgICBbc3RlcF09XCIkaW5kZXggKyAxXCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFwb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0oKS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlXT1cIml0ZW0oKS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlTGFiZWxdPVwiZGlzYWJsZUxhYmVsKClcIlxuICAgICAgICAgICAgICBba2V5U2VsZWN0ZWRdPVwia2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIFtmaWVsZExhYmVsXT1cImZpZWxkTGFiZWwoKVwiXG4gICAgICAgICAgICAgIFtmaWVsZEtleV09XCJmaWVsZEtleSgpXCJcbiAgICAgICAgICAgICAgW2Nzc0RlZmF1bHRdPVwiKCRmaXJzdCA/IGNvbmZpZ0NzcygpPy5maXJzdCA6IGNvbmZpZ0NzcygpPy5vdGhlcikgfHwgJydcIlxuICAgICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgICAgW21vZGVdPVwibW9kZSgpXCJcbiAgICAgICAgICAgICAgW2lnbm9yZUNhbGN1bGF0b3JUYWJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjaGFuZ2VWaWV3VGFiXT1cImNoYW5nZVZpZXdUYWJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNsaWNrSXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgIChvdXRBY3Rpb24pPVwiaGFuZGxlckFjdGlvbigkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIEBpZiAobW9kZSgpID09PSAnY2VudGVyLWhhcy1saW5lJyAmJiAhJGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctWzQwcHhdIGgtWzFweF0gYmctWyNlNmU3ZWFdXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgICAgW2NsYXNzLm1sLWF1dG9dPVwiZGlzcGxheU1vcmVJdGVtKCkgJiYgIXRhYnMoKS52aWV3TW9yZUlnbm9yZU1hcmdpbkxlZnRcIj5cbiAgICAgIEBpZiAoZGlzcGxheU1vcmVJdGVtKCkpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBbbW9kZV09XCInY2xpY2stdG9nZ2xlJ1wiXG4gICAgICAgICAgW2lnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgICAgICB6SW5kZXg6IHBvcG92ZXJTaG93TW9yZVRhYkl0ZW0oKT8uY29uZmlnPy56SW5kZXggfHwgMTAwMCxcbiAgICAgICAgICAgIG1heEhlaWdodDogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/Lm1heEhlaWdodCB8fCAyODcsXG4gICAgICAgICAgICBtYXhXaWR0aDogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/Lm1heFdpZHRoIHx8IDIwNDgsXG4gICAgICAgICAgICB3aWR0aDogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/LndpZHRoIHx8IDI3NyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/LmRpcmVjdGlvbiB8fCAnYm90dG9tJyxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBwb3BvdmVyU2hvd01vcmVUYWJJdGVtKCk/LmNvbmZpZz8udGVtcGxhdGUgfHwgbWVudUVsLFxuICAgICAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgICAgcG9zaXRpb246IHBvcG92ZXJTaG93TW9yZVRhYkl0ZW0oKT8uY29uZmlnPy5wb3NpdGlvbiB8fCB7IG1vZGU6ICdlbmQnLCBkaXN0YW5jZTogMCB9LFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgIFt0eXBlXT1cIididXR0b24tbGluay10aGlyZCdcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCInIXAtWzhweF0nXCJcbiAgICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLW1vcmUtdmVydGljYWwgcm90YXRlLTkwIHRleHQtWzE2cHhdIG1yLTAnXCJcbiAgICAgICAgICAgIFtwb3BvdmVyXT1cInsgY29uZmlnOiB7IGNvbnRlbnQ6IHBvcG92ZXJTaG93TW9yZVRhYkl0ZW0oKT8uY29uZmlnPy5jb250ZW50IHx8ICdpMThuX3ZpZXdfbW9yZScgfSB9XCJcbiAgICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCIgLz5cbiAgICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAjaGVhZGVyUmlnaHRFbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItcmlnaHQge3sgdGFicygpLmNsYXNzSW5jbHVkZUhlYWRlclJpZ2h0IHx8ICcnIH19XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkaXYubGlicy11aS10YWItaGVhZGVyLXJpZ2h0XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIHotMCB3LWZ1bGxcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlciB7eyBjb25maWdDc3MoKT8uaGVhZGVyIHx8ICcnIH19IHt7IHRhYnMoKS5jbGFzc0luY2x1ZGVIZWFkZXIgfHwgJycgfX1cIlxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJoZWlnaHRUYWJJdGVtKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyIHt7IGNvbmZpZ0NzcygpPy5oZWFkZXJDZW50ZXIgfHwgJycgfX0ge3sgdGFicygpLmNsYXNzSW5jbHVkZUhlYWRlckNlbnRlciB8fCAnJyB9fVwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIHRhYnMoKS5pdGVtcygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy10YWJzLWl0ZW1cbiAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsIHctZnVsbCB7eyB0YWJzKCkuY2xhc3NJbmNsdWRlSXRlbSB8fCAnJyB9fVwiXG4gICAgICAgICAgICBbdGFic109XCJ0YWJzKClcIlxuICAgICAgICAgICAgW3NpemVdPVwic2l6ZSgpXCJcbiAgICAgICAgICAgIFsoaXRlbSldPVwiaXRlbVwiXG4gICAgICAgICAgICBbc3RlcF09XCIkaW5kZXggKyAxXCJcbiAgICAgICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZUxhYmVsXT1cImRpc2FibGVMYWJlbCgpXCJcbiAgICAgICAgICAgIFtrZXlTZWxlY3RlZF09XCJrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgIFtmaWVsZExhYmVsXT1cImZpZWxkTGFiZWwoKVwiXG4gICAgICAgICAgICBbZmllbGRLZXldPVwiZmllbGRLZXkoKVwiXG4gICAgICAgICAgICBbY3NzRGVmYXVsdF09XCIoJGZpcnN0ID8gY29uZmlnQ3NzKCk/LmZpcnN0IDogY29uZmlnQ3NzKCk/Lm90aGVyKSB8fCAnJ1wiXG4gICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgIFttb2RlXT1cIm1vZGUoKVwiXG4gICAgICAgICAgICBbY2hhbmdlVmlld1RhYl09XCJjaGFuZ2VWaWV3VGFiXCJcbiAgICAgICAgICAgIFtpZ25vcmVDYWxjdWxhdG9yVGFiXT1cImlnbm9yZUNhbGN1bGF0b3JUYWIoKVwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNtZW51RWw+XG4gIDxsaWJzX3VpLWNvbXBvbmVudHMtbGlzdFxuICAgIFtjb25maWddPVwidGFiTW9yZUxpc3RDb25maWcoKVwiXG4gICAgW21heEl0ZW1TaG93XT1cIjVcIlxuICAgIFtoaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICBbcGFkZGluZ0xlZnRJdGVtXT1cInRydWVcIlxuICAgIChvdXRTZWxlY3RLZXkpPVwiaGFuZGxlclNlbGVjdGVkS2V5KCRldmVudClcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
268
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvdGFicy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvdGFicy9zcmMvdGFicy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBYyxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQWtCLE1BQU0sZUFBZSxDQUFDO0FBQzdLLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzVGLE9BQU8sRUFBUyxzQ0FBc0MsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3ZILE9BQU8sRUFBb0IsNkJBQTZCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRixPQUFPLEVBQTBDLGdDQUFnQyxFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDdkgsT0FBTyxFQUFFLHFCQUFxQixFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMxQyxPQUFPLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXpELE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7QUFXakQsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxtQkFBbUI7SUFDVCxZQUFZLEdBQUcsTUFBTSxDQUFtQyxFQUFFLENBQUMsQ0FBQztJQUM1RCxlQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDdkksYUFBYSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFDcEMsU0FBUyxHQUFHLE1BQU0sQ0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLDhCQUE4QixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO0lBRXZGLDJCQUEyQixHQUFHLE1BQU0sQ0FBMkMsU0FBUyxDQUFDLENBQUM7SUFDMUYsU0FBUyxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7SUFFeEMsZ0JBQWdCO0lBQ1AsSUFBSSxHQUFHLEtBQUssQ0FBQyxRQUFRLEVBQVMsQ0FBQztJQUMvQixXQUFXLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO0lBQ3ZDLElBQUksR0FBRyxLQUFLLENBQWdCLE1BQU0sQ0FBQyxDQUFDO0lBQ3BDLFFBQVEsR0FBRyxLQUFLLENBQVMsS0FBSyxDQUFDLENBQUM7SUFDaEMsVUFBVSxHQUFHLEtBQUssQ0FBUyxPQUFPLENBQUMsQ0FBQztJQUNwQyxPQUFPLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDM0IsWUFBWSxHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ2hDLGFBQWEsR0FBRyxLQUFLLENBQVMsRUFBRSxDQUFDLENBQUM7SUFDbEMsbUJBQW1CLEdBQUcsS0FBSyxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQzVDLElBQUksR0FBRyxLQUFLLENBQXNCLFFBQVEsQ0FBQyxDQUFDO0lBQzVDLHFCQUFxQixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ3pDLE1BQU0sR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN6QixTQUFTLEdBQUcsS0FBSyxFQUFpQixDQUFDO0lBQ25DLHNCQUFzQixHQUFHLEtBQUssRUFBWSxDQUFDO0lBQzNDLHlCQUF5QixHQUFHLEtBQUssRUFBb0MsQ0FBQztJQUUvRSxpQkFBaUI7SUFDUixjQUFjLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFDbEMsbUJBQW1CLEdBQUcsTUFBTSxFQUE2QixDQUFDO0lBQzFELGdCQUFnQixHQUFHLE1BQU0sRUFBUSxDQUFDO0lBQ2xDLGtCQUFrQixHQUFHLE1BQU0sRUFBVyxDQUFDO0lBQ3ZDLFNBQVMsR0FBRyxNQUFNLEVBQWtCLENBQUM7SUFFOUMsZ0JBQWdCO0lBQ0MsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsVUFBVSxDQUFDLENBQUM7SUFDdEQsWUFBWSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsY0FBYyxDQUFDLENBQUM7SUFDOUQsYUFBYSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQWEsZUFBZSxDQUFDLENBQUM7SUFFakYsV0FBVztJQUNILFNBQVMsR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUU3QyxRQUFRO1FBQ04sSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUNyRCxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxNQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsQ0FBQztZQUN6RCxJQUFJLENBQUMsSUFBSSxFQUFFO2lCQUNSLEtBQUssRUFBRTtpQkFDUCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQ25CLElBQUksQ0FBQyxJQUFJLEVBQUU7aUJBQ1IsS0FBSyxFQUFFO2lCQUNQLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLENBQzVDLENBQUM7WUFDRixPQUFPO1FBQ1QsQ0FBQztRQUNELFNBQVMsQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDO2FBQ3hCLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUNsRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDaEMsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztRQUNuQyxDQUFDLENBQUMsQ0FBQztRQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUM7SUFDekgsQ0FBQztJQUVELGVBQWU7SUFDZixJQUFXLGdCQUFnQjtRQUN6QixPQUFPO1lBQ0wsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN4QywwQkFBMEIsRUFBRSxJQUFJLENBQUMseUJBQXlCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNyRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztTQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVPLG1CQUFtQjtRQUN6QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLE9BQU87UUFDVCxDQUFDO1FBQ0QsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztZQUNwQixLQUFLLE1BQU07Z0JBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7b0JBQ2pCLEtBQUssRUFBRSxxQkFBcUI7b0JBQzVCLEtBQUssRUFBRSxxQkFBcUI7aUJBQzdCLENBQUMsQ0FBQztnQkFDSCxNQUFNO1lBQ1IsS0FBSyxRQUFRO2dCQUNYLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO29CQUNqQixLQUFLLEVBQUUsK0JBQStCO29CQUN0QyxLQUFLLEVBQUUscUJBQXFCO29CQUM1QixNQUFNLEVBQUUscUJBQXFCO2lCQUM5QixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtZQUNSLEtBQUssaUJBQWlCO2dCQUNwQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQztvQkFDakIsS0FBSyxFQUFFLFdBQVc7b0JBQ2xCLEtBQUssRUFBRSxXQUFXO29CQUNsQixZQUFZLEVBQUUsY0FBYztpQkFDN0IsQ0FBQyxDQUFDO2dCQUNILE1BQU07WUFDUixLQUFLLGVBQWU7Z0JBQ2xCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO29CQUNqQixLQUFLLEVBQUUsU0FBUztvQkFDaEIsS0FBSyxFQUFFLFNBQVM7b0JBQ2hCLFlBQVksRUFBRSxRQUFRO2lCQUN2QixDQUFDLENBQUM7Z0JBQ0gsTUFBTTtRQUNWLENBQUM7SUFDSCxDQUFDO0lBRU8sNEJBQTRCO1FBQ2xDLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUUsQ0FBQztZQUNqQyxPQUFPO2dCQUNMO29CQUNFLFNBQVMsRUFBRSxvQ0FBb0M7b0JBQy9DLE1BQU0sRUFBRSxFQUFFO2lCQUNYO2dCQUNEO29CQUNFLFNBQVMsRUFBRSx3QkFBd0I7b0JBQ25DLE1BQU0sRUFBRSxlQUFlO2lCQUN4QjtnQkFDRDtvQkFDRSxTQUFTLEVBQUUsaUNBQWlDO29CQUM1QyxNQUFNLEVBQUUsb0NBQW9DO2lCQUM3QzthQUNGLENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTztZQUNMO2dCQUNFLFNBQVMsRUFBRSx3QkFBd0I7Z0JBQ25DLE1BQU0sRUFBRSxFQUFFO2FBQ1g7WUFDRDtnQkFDRSxTQUFTLEVBQUUsZ0NBQWdDO2dCQUMzQyxNQUFNLEVBQUUsRUFBRTthQUNYO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFUyxvQkFBb0IsQ0FBQyxLQUFZO1FBQ3pDLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQyxNQUFNLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLFlBQVksQ0FBQztRQUM5QyxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BFLE9BQU87UUFDVCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsS0FBSyxFQUFFLENBQUMsU0FBbUIsQ0FBQyxDQUFDO1FBQzlDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtZQUNyQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQW1CLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFtQixFQUFFLENBQUMsRUFBRSxRQUFRLENBQUMsQ0FBQztZQUMvQyxPQUFPLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRVMsa0NBQWtDLENBQUMsS0FBbUM7UUFDOUUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRU8sS0FBSyxDQUFDLHVCQUF1QixDQUFDLEdBQVcsRUFBRSxZQUFZLEdBQUcsSUFBSTtRQUNwRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFO2FBQzdCLEtBQUssRUFBRTthQUNQLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDbkQsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ2xCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixZQUFZLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxLQUFtQztRQUM5RCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDWCxPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN6RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVTLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUErQjtRQUM5RCxJQUFJLElBQUksRUFBRSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztZQUNyQyxPQUFPO1FBQ1QsQ0FBQztRQUNELE1BQU0seUJBQXlCLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDbkUsSUFBSSx5QkFBeUIsRUFBRSxDQUFDO1lBQzlCLE1BQU0sS0FBSyxHQUFHLE1BQU0seUJBQXlCLEVBQUUsQ0FBQztZQUNoRCxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNWLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQyxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVPLGtCQUFrQixDQUFDLElBQStCO1FBQ3hELElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxDQUFDLDJCQUEyQixFQUFFLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQztRQUMzRCxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUNuQyxDQUFDO0lBRVMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxLQUFxQjtRQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU8sS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUErQixFQUFFLFFBQVEsR0FBRyxJQUFJLEVBQUUsUUFBa0I7UUFDNUYsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckIsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUM7WUFDMUIsQ0FBQztZQUNELE9BQU8sQ0FBQyxHQUFHLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztRQUMxQixDQUFDLENBQUMsQ0FBQztRQUNILElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFUyxLQUFLLENBQUMseUJBQXlCO1FBQ3ZDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQyxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ3BHLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNoQyxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7UUFDNUIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDLGFBQWEsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDO1FBQ25FLE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzlDLE1BQU0saUJBQWlCLEdBQUcsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDO1FBQ3ZELElBQUksc0JBQXNCLEdBQUcsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxhQUFhLENBQUMsV0FBVyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDMUIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsZUFBZSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztZQUM3RCxNQUFNLFNBQVMsR0FBRyxJQUFJLEVBQUUsQ0FBQyxhQUFhLElBQUksQ0FBQyxDQUFDO1lBQzVDLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixHQUFHLFNBQVMsR0FBRyxDQUFDLEtBQUssR0FBRyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3ZHLHNCQUFzQixJQUFJLFNBQVMsQ0FBQztZQUNwQyxJQUFJLEtBQUssR0FBRyxXQUFXLEVBQUUsQ0FBQztnQkFDeEIsZUFBZSxHQUFHLElBQUksQ0FBQztnQkFDdkIsT0FBTztZQUNULENBQUM7WUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM5RCxDQUFDLENBQUMsQ0FBQztRQUNILFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxlQUFlLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLGVBQWUsS0FBSyxJQUFJLENBQUMsQ0FBQztRQUN4RSxNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxlQUFlLEtBQUssS0FBSyxDQUFDLENBQUM7UUFDNUUsS0FBSyxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDbkMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkYsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3RixJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUNuQixJQUFJLENBQUMsSUFBSSxFQUFFO2FBQ1IsS0FBSyxFQUFFO2FBQ1AsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsQ0FDNUMsQ0FBQztJQUNKLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7d0dBOVFVLDZCQUE2Qjs0RkFBN0IsNkJBQTZCLDB1RkN0QjFDLG8vTEFxSUEsdW1CRGpIWSxzQ0FBc0MsMGNBQUUsdUJBQXVCLHViQUFFLGdDQUFnQyxvZ0JBQUUsc0NBQXNDLHNqQkFBRSxpQ0FBaUMscVNBQUUsNkJBQTZCOzs0RkFFMU0sNkJBQTZCO2tCQVR6QyxTQUFTOytCQUVFLHlCQUF5QixjQUd2QixJQUFJLG1CQUNDLHVCQUF1QixDQUFDLE1BQU0sV0FDdEMsQ0FBQyxzQ0FBc0MsRUFBRSx1QkFBdUIsRUFBRSxnQ0FBZ0MsRUFBRSxzQ0FBc0MsRUFBRSxpQ0FBaUMsRUFBRSw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBtb2RlbCwgT25EZXN0cm95LCBPbkluaXQsIG91dHB1dCwgc2lnbmFsLCB2aWV3Q2hpbGQsIFdyaXRhYmxlU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nO1xuaW1wb3J0IHsgSURyb3AsIExpYnNVaUNvbXBvbmVudHNEcmFnQ29udGFpbmVyRGlyZWN0aXZlLCBMaWJzVWlEcmFnSXRlbURpcmVjdGl2ZSB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtZHJhZy1kcm9wJztcbmltcG9ydCB7IElMaXN0RGF0YUVtaXRLZXksIExpYnNVaUNvbXBvbmVudHNMaXN0Q29tcG9uZW50IH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1saXN0JztcbmltcG9ydCB7IElQb3BvdmVyLCBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBjb252ZXJ0T2JqZWN0VG9TaWduYWwsIGlzTmlsLCB1dWlkIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xuaW1wb3J0IHsgZnJvbUV2ZW50LCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElUYWJDc3NDb25maWcsIElUYWJzLCBJVGFic0Z1bmN0aW9uQ29udHJvbEV2ZW50LCBJVGFic0l0ZW0sIElUYWJzSXRlbUV2ZW50LCBUWVBFX1RBQl9NT0RFIH0gZnJvbSAnLi9pbnRlcmZhY2VzL3RhYi5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGlic1VpQ29tcG9uZW50c1RhYnNJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi9pdGVtL2l0ZW0uY29tcG9uZW50JztcbmltcG9ydCB7IHRhYk1vcmVMaXN0Q29uZmlnIH0gZnJvbSAnLi91dGlscy90YWJzJztcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLXRhYnMnLFxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYnMuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtMaWJzVWlDb21wb25lbnRzRHJhZ0NvbnRhaW5lckRpcmVjdGl2ZSwgTGlic1VpRHJhZ0l0ZW1EaXJlY3RpdmUsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCwgTGlic1VpQ29tcG9uZW50c1RhYnNJdGVtQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzTGlzdENvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIExpYnNVaUNvbXBvbmVudHNUYWJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAvLyAjcmVnaW9uIFBST1BFUlRZXG4gIHByb3RlY3RlZCBpdGVtc0Rpc3BsYXkgPSBzaWduYWw8QXJyYXk8V3JpdGFibGVTaWduYWw8SVRhYnNJdGVtPj4+KFtdKTtcbiAgcHJvdGVjdGVkIGRpc3BsYXlNb3JlSXRlbSA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCB0YWJNb3JlTGlzdENvbmZpZyA9IGNvbXB1dGVkKCgpID0+IHRhYk1vcmVMaXN0Q29uZmlnKHRoaXMudHJhbnNsYXRlLCB0aGlzLmZpZWxkS2V5KCksIHRoaXMuZmllbGRMYWJlbCgpLCB0aGlzLnRhYnMoKSwgdGhpcy5kaXNhYmxlKCkpKTtcbiAgcHJvdGVjdGVkIGNoYW5nZVZpZXdUYWIgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcm90ZWN0ZWQgZ3JvdXBOYW1lID0gc2lnbmFsPHN0cmluZz4odXVpZCgpKTtcbiAgcHJvdGVjdGVkIHN0eWxlc0RyYWdEcm9wT3ZlcnJpZGVDb21wdXRlZCA9IGNvbXB1dGVkKCgpID0+IHRoaXMudXBkYXRlU3R5bGVzRHJhZ0Ryb3BPdmVycmlkZSgpKTtcblxuICBwcml2YXRlIHBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCA9IHNpZ25hbDxJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBwcml2YXRlIG9uRGVzdHJveSA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgLy8gI3JlZ2lvbiBJTlBVVFxuICByZWFkb25seSB0YWJzID0gaW5wdXQucmVxdWlyZWQ8SVRhYnM+KCk7XG4gIHJlYWRvbmx5IGtleVNlbGVjdGVkID0gbW9kZWwucmVxdWlyZWQ8c3RyaW5nPigpO1xuICByZWFkb25seSBtb2RlID0gaW5wdXQ8VFlQRV9UQUJfTU9ERT4oJ2xlZnQnKTtcbiAgcmVhZG9ubHkgZmllbGRLZXkgPSBpbnB1dDxzdHJpbmc+KCdrZXknKTtcbiAgcmVhZG9ubHkgZmllbGRMYWJlbCA9IGlucHV0PHN0cmluZz4oJ2xhYmVsJyk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBoZWlnaHRUYWJJdGVtID0gaW5wdXQ8bnVtYmVyPig0MCk7XG4gIHJlYWRvbmx5IGlnbm9yZUNhbGN1bGF0b3JUYWIgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHNpemUgPSBpbnB1dDwnbGFuZ2VyJyB8ICdtZWRpdW0nPignbWVkaXVtJyk7XG4gIHJlYWRvbmx5IGFsbG93RHJhZ0Ryb3BQb3NpdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IHpJbmRleCA9IGlucHV0PG51bWJlcj4oKTtcbiAgcmVhZG9ubHkgY29uZmlnQ3NzID0gbW9kZWw8SVRhYkNzc0NvbmZpZz4oKTtcbiAgcmVhZG9ubHkgcG9wb3ZlclNob3dNb3JlVGFiSXRlbSA9IGlucHV0PElQb3BvdmVyPigpO1xuICByZWFkb25seSBjaGVja0NhbkNoYW5nZVRhYlNlbGVjdGVkID0gaW5wdXQ8KCkgPT4gYm9vbGVhbiB8IFByb21pc2U8Ym9vbGVhbj4+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0S2V5U2VsZWN0ZWQgPSBvdXRwdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbnNDb250cm9sID0gb3V0cHV0PElUYWJzRnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dERyYWdUYWJDaGFuZ2UgPSBvdXRwdXQ8dm9pZD4oKTtcbiAgcmVhZG9ubHkgb3V0RGlzcGxheU1vcmVJdGVtID0gb3V0cHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IG91dEFjdGlvbiA9IG91dHB1dDxJVGFic0l0ZW1FdmVudD4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyRWwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2hlYWRlckVsJyk7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZGVyTGVmdEVsID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdoZWFkZXJMZWZ0RWwnKTtcbiAgcHJpdmF0ZSByZWFkb25seSBoZWFkZXJSaWdodEVsID0gdmlld0NoaWxkLnJlcXVpcmVkPEVsZW1lbnRSZWY+KCdoZWFkZXJSaWdodEVsJyk7XG5cbiAgLyogSU5KRUNUKi9cbiAgcHJpdmF0ZSB0cmFuc2xhdGUgPSBpbmplY3QoVHJhbnNsYXRlU2VydmljZSk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy51cGRhdGVUYWJzQ3NzQ29uZmlnKCk7XG4gICAgdGhpcy5vdXRGdW5jdGlvbnNDb250cm9sLmVtaXQodGhpcy5GdW5jdGlvbnNDb250cm9sKTtcbiAgICBpZiAodGhpcy5tb2RlKCkgIT09ICdsZWZ0JyB8fCB0aGlzLmlnbm9yZUNhbGN1bGF0b3JUYWIoKSkge1xuICAgICAgdGhpcy50YWJzKClcbiAgICAgICAgLml0ZW1zKClcbiAgICAgICAgLm1hcCgoaXRlbSkgPT4gaXRlbS51cGRhdGUoKGRhdGEpID0+ICh7IC4uLmRhdGEsIHNwZWNpZmljRGlzcGxheTogdHJ1ZSB9KSkpO1xuICAgICAgdGhpcy5pdGVtc0Rpc3BsYXkuc2V0KFxuICAgICAgICB0aGlzLnRhYnMoKVxuICAgICAgICAgIC5pdGVtcygpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSkgPT4gaXRlbSgpLnNwZWNpZmljRGlzcGxheSlcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUoZGVib3VuY2VUaW1lKDI1MCksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgaWYgKCF0aGlzLnRhYnMoKS5pdGVtcygpLmxlbmd0aCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmRpc3BsYXlNb3JlSXRlbS5zZXQoZmFsc2UpO1xuICAgICAgICB0aGlzLmNhbGN1bGF0b3JUYWJzSXRlbURpc3BsYXkoKTtcbiAgICAgIH0pO1xuICAgIHRoaXMuY2hhbmdlVmlld1RhYi5waXBlKGRlYm91bmNlVGltZSgyMCksIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB0aGlzLmNhbGN1bGF0b3JUYWJzSXRlbURpc3BsYXkoKSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHVibGljIGdldCBGdW5jdGlvbnNDb250cm9sKCk6IElUYWJzRnVuY3Rpb25Db250cm9sRXZlbnQge1xuICAgIHJldHVybiB7XG4gICAgICBhZGRUYWJzSXRlbTogdGhpcy5hZGRUYWJzSXRlbS5iaW5kKHRoaXMpLFxuICAgICAgY2FsY3VsYXRvclRhYnNJdGVtc0Rpc3BsYXk6IHRoaXMuY2FsY3VsYXRvclRhYnNJdGVtRGlzcGxheS5iaW5kKHRoaXMpLFxuICAgICAgc2VsZWN0ZWRUYWJzSXRlbTogdGhpcy5oYW5kbGVyU2VsZWN0ZWRUYWJzSXRlbS5iaW5kKHRoaXMpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVRhYnNDc3NDb25maWcoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlnQ3NzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc3dpdGNoICh0aGlzLm1vZGUoKSkge1xuICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgIHRoaXMuY29uZmlnQ3NzLnNldCh7XG4gICAgICAgICAgZmlyc3Q6ICdtbC1bMjBweF0gbXItWzE2cHhdJyxcbiAgICAgICAgICBvdGhlcjogJ21sLVsyMHB4XSBtci1bMTZweF0nLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdjZW50ZXInOlxuICAgICAgICB0aGlzLmNvbmZpZ0Nzcy5zZXQoe1xuICAgICAgICAgIGZpcnN0OiAncHgtWzEycHhdIG1sLVsxOHB4XSBtci1bMThweF0nLFxuICAgICAgICAgIG90aGVyOiAncHgtWzEycHhdIG14LVsxOHB4XScsXG4gICAgICAgICAgaGVhZGVyOiAnZmxleCBqdXN0aWZ5LWNlbnRlcicsXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2NlbnRlci1oYXMtbGluZSc6XG4gICAgICAgIHRoaXMuY29uZmlnQ3NzLnNldCh7XG4gICAgICAgICAgZmlyc3Q6ICdweC1bMTZweF0nLFxuICAgICAgICAgIG90aGVyOiAncHgtWzE2cHhdJyxcbiAgICAgICAgICBoZWFkZXJDZW50ZXI6ICdpdGVtcy1jZW50ZXInLFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzcGFjZS1iZXR3ZWVuJzpcbiAgICAgICAgdGhpcy5jb25maWdDc3Muc2V0KHtcbiAgICAgICAgICBmaXJzdDogJ214LWF1dG8nLFxuICAgICAgICAgIG90aGVyOiAnbXgtYXV0bycsXG4gICAgICAgICAgaGVhZGVyQ2VudGVyOiAndy1mdWxsJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlU3R5bGVzRHJhZ0Ryb3BPdmVycmlkZSgpIHtcbiAgICBpZiAodGhpcy5hbGxvd0RyYWdEcm9wUG9zaXRpb24oKSkge1xuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tcGxhY2Vob2xkZXInLFxuICAgICAgICAgIHN0eWxlczogJycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBjbGFzc05hbWU6ICdsaWJzLXVpLWRyYWctZHJvcC1pdGVtJyxcbiAgICAgICAgICBzdHlsZXM6ICdjdXJzb3I6IG1vdmU7JyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGNsYXNzTmFtZTogJ2xpYnMtdWktZHJhZy1kcm9wLWl0ZW0tZHJhZ2dpbmcnLFxuICAgICAgICAgIHN0eWxlczogJ2N1cnNvcjogbW92ZTsgYmFja2dyb3VuZDogI2RkZGRkZDsnLFxuICAgICAgICB9LFxuICAgICAgXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgY2xhc3NOYW1lOiAnbGlicy11aS1kcmFnLWRyb3AtaXRlbScsXG4gICAgICAgIHN0eWxlczogJycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBjbGFzc05hbWU6ICdsaWJzLXVpLWRyYWctZHJvcC1pdGVtLWRpc2FibGUnLFxuICAgICAgICBzdHlsZXM6ICcnLFxuICAgICAgfSxcbiAgICBdO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJEcm9wQ29udGFpbmVyKGV2ZW50OiBJRHJvcCkge1xuICAgIGNvbnN0IHsgaXRlbURyYWdJbmZvIH0gPSBldmVudDtcbiAgICBpZiAoIWl0ZW1EcmFnSW5mbykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFicygpLml0ZW1zO1xuICAgIGNvbnN0IHsgaW5kZXhEcmFnLCBpbmRleERyb3AgfSA9IGl0ZW1EcmFnSW5mbztcbiAgICBpZiAoaXNOaWwoaW5kZXhEcmFnKSB8fCBpc05pbChpbmRleERyb3ApIHx8IGluZGV4RHJvcCA9PT0gaW5kZXhEcmFnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGl0ZW1EcmFnID0gaXRlbXMoKVtpbmRleERyYWcgYXMgbnVtYmVyXTtcbiAgICBpdGVtcy51cGRhdGUoKGl0ZW1zKSA9PiB7XG4gICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcmFnIGFzIG51bWJlciwgMSk7XG4gICAgICBpdGVtcy5zcGxpY2UoaW5kZXhEcm9wIGFzIG51bWJlciwgMCwgaXRlbURyYWcpO1xuICAgICAgcmV0dXJuIFsuLi5pdGVtc107XG4gICAgfSk7XG4gICAgdGhpcy5vdXREcmFnVGFiQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KGV2ZW50OiBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5wb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQuc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlclNlbGVjdGVkVGFic0l0ZW0oa2V5OiBzdHJpbmcsIHJlc2V0RGlzYWJsZSA9IHRydWUpIHtcbiAgICBjb25zdCBpdGVtU2VsZWN0ZWQgPSB0aGlzLnRhYnMoKVxuICAgICAgLml0ZW1zKClcbiAgICAgIC5maW5kKChpdGVtKSA9PiBpdGVtKClbdGhpcy5maWVsZEtleSgpXSA9PT0ga2V5KTtcbiAgICBpZiAoIWl0ZW1TZWxlY3RlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAocmVzZXREaXNhYmxlKSB7XG4gICAgICBpdGVtU2VsZWN0ZWQudXBkYXRlKChpdGVtKSA9PiAoeyAuLi5pdGVtLCBkaXNhYmxlOiBmYWxzZSB9KSk7XG4gICAgfVxuICAgIHRoaXMuaGFuZGxlckNsaWNrSXRlbShpdGVtU2VsZWN0ZWQpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJTZWxlY3RlZEtleShldmVudDogSUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5oYW5kbGVyQ2xpY2tJdGVtKGNvbnZlcnRPYmplY3RUb1NpZ25hbChldmVudC5pdGVtKSk7XG4gICAgdGhpcy5vdXREcmFnVGFiQ2hhbmdlLmVtaXQoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyQ2xpY2tJdGVtKGl0ZW06IFdyaXRhYmxlU2lnbmFsPElUYWJzSXRlbT4pIHtcbiAgICBpZiAoaXRlbSgpLmRpc2FibGUgfHwgdGhpcy5kaXNhYmxlKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2hlY2tDYW5DaGFuZ2VUYWJTZWxlY3RlZCA9IHRoaXMuY2hlY2tDYW5DaGFuZ2VUYWJTZWxlY3RlZCgpO1xuICAgIGlmIChjaGVja0NhbkNoYW5nZVRhYlNlbGVjdGVkKSB7XG4gICAgICBjb25zdCBzdGF0ZSA9IGF3YWl0IGNoZWNrQ2FuQ2hhbmdlVGFiU2VsZWN0ZWQoKTtcbiAgICAgIGlmIChzdGF0ZSkge1xuICAgICAgICB0aGlzLmNoYW5nZUl0ZW1TZWxlY3RlZChpdGVtKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jaGFuZ2VJdGVtU2VsZWN0ZWQoaXRlbSk7XG4gIH1cblxuICBwcml2YXRlIGNoYW5nZUl0ZW1TZWxlY3RlZChpdGVtOiBXcml0YWJsZVNpZ25hbDxJVGFic0l0ZW0+KSB7XG4gICAgdGhpcy5rZXlTZWxlY3RlZC5zZXQoaXRlbSgpW3RoaXMuZmllbGRLZXkoKV0pO1xuICAgIHRoaXMub3V0S2V5U2VsZWN0ZWQuZW1pdCh0aGlzLmtleVNlbGVjdGVkKCkpO1xuICAgIHRoaXMucG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50KCk/LnJlbW92ZVBvcG92ZXJPdmVybGF5KCk7XG4gICAgdGhpcy5jYWxjdWxhdG9yVGFic0l0ZW1EaXNwbGF5KCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlckFjdGlvbihldmVudDogSVRhYnNJdGVtRXZlbnQpIHtcbiAgICB0aGlzLm91dEFjdGlvbi5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYWRkVGFic0l0ZW0oaXRlbTogV3JpdGFibGVTaWduYWw8SVRhYnNJdGVtPiwgc2VsZWN0ZWQgPSB0cnVlLCBhZGRGaXJzdD86IGJvb2xlYW4pIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMudGFicygpLml0ZW1zO1xuICAgIGl0ZW1zLnVwZGF0ZSgoaXRlbXMpID0+IHtcbiAgICAgIGlmIChhZGRGaXJzdCkge1xuICAgICAgICByZXR1cm4gW2l0ZW0sIC4uLml0ZW1zXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbLi4uaXRlbXMsIGl0ZW1dO1xuICAgIH0pO1xuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgdGhpcy5oYW5kbGVyQ2xpY2tJdGVtKGl0ZW0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBjYWxjdWxhdG9yVGFic0l0ZW1EaXNwbGF5KCkge1xuICAgIGxldCBpdGVtcyA9IHRoaXMudGFicygpLml0ZW1zKCk7XG4gICAgY29uc3QgaW5kZXhJdGVtU2VsZWN0ZWQgPSBpdGVtcy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0oKVt0aGlzLmZpZWxkS2V5KCldID09PSB0aGlzLmtleVNlbGVjdGVkKCkpO1xuICAgIGlmIChpbmRleEl0ZW1TZWxlY3RlZCA8IDApIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kaXNwbGF5TW9yZUl0ZW0uc2V0KGZhbHNlKTtcbiAgICBsZXQgZGlzcGxheU1vcmVJdGVtID0gZmFsc2U7XG4gICAgY29uc3QgaGVhZGVyV2lkdGggPSB0aGlzLmhlYWRlckVsKCkubmF0aXZlRWxlbWVudC5jbGllbnRXaWR0aCB8fCAwO1xuICAgIGNvbnN0IGl0ZW1TZWxlY3RlZCA9IGl0ZW1zW2luZGV4SXRlbVNlbGVjdGVkXTtcbiAgICBjb25zdCBpdGVtU2VsZWN0ZWRXaWR0aCA9IGl0ZW1TZWxlY3RlZCgpLnNwZWNpZmljV2lkdGg7XG4gICAgbGV0IHRvdGFsV2lkdGhJdGVtc0Rpc3BsYXkgPSAodGhpcy5oZWFkZXJMZWZ0RWwoKS5uYXRpdmVFbGVtZW50LmNsaWVudFdpZHRoIHx8IDApICsgKHRoaXMuaGVhZGVyUmlnaHRFbCgpLm5hdGl2ZUVsZW1lbnQuY2xpZW50V2lkdGggfHwgMCkgKyAzMjtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKCFpdGVtKCkuc3BlY2lmaWNXaWR0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpdGVtLnVwZGF0ZSgoZGF0YSkgPT4gKHsgLi4uZGF0YSwgc3BlY2lmaWNEaXNwbGF5OiBmYWxzZSB9KSk7XG4gICAgICBjb25zdCBpdGVtV2lkdGggPSBpdGVtKCkuc3BlY2lmaWNXaWR0aCB8fCAwO1xuICAgICAgY29uc3Qgd2lkdGggPSB0b3RhbFdpZHRoSXRlbXNEaXNwbGF5ICsgaXRlbVdpZHRoICsgKGluZGV4IDwgaW5kZXhJdGVtU2VsZWN0ZWQgPyBpdGVtU2VsZWN0ZWRXaWR0aCA6IDApO1xuICAgICAgdG90YWxXaWR0aEl0ZW1zRGlzcGxheSArPSBpdGVtV2lkdGg7XG4gICAgICBpZiAod2lkdGggPiBoZWFkZXJXaWR0aCkge1xuICAgICAgICBkaXNwbGF5TW9yZUl0ZW0gPSB0cnVlO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpdGVtLnVwZGF0ZSgoZGF0YSkgPT4gKHsgLi4uZGF0YSwgc3BlY2lmaWNEaXNwbGF5OiB0cnVlIH0pKTtcbiAgICB9KTtcbiAgICBpdGVtU2VsZWN0ZWQudXBkYXRlKChkYXRhKSA9PiAoeyAuLi5kYXRhLCBzcGVjaWZpY0Rpc3BsYXk6IHRydWUgfSkpO1xuICAgIGNvbnN0IGRpc3BsYXkgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0oKS5zcGVjaWZpY0Rpc3BsYXkgPT09IHRydWUpO1xuICAgIGNvbnN0IG5vdERpc3BsYXkgPSBpdGVtcy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0oKS5zcGVjaWZpY0Rpc3BsYXkgPT09IGZhbHNlKTtcbiAgICBpdGVtcyA9IGRpc3BsYXkuY29uY2F0KG5vdERpc3BsYXkpO1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiBpdGVtLnVwZGF0ZSgoZGF0YSkgPT4gKHsgLi4uZGF0YSwgb3JkZXI6IGluZGV4IH0pKSk7XG4gICAgdGhpcy50YWJzKCkuaXRlbXMuc2V0KGl0ZW1zLnNvcnQoKHByZXYsIG5leHQpID0+IChwcmV2KCkub3JkZXIgfHwgMCkgLSAobmV4dCgpLm9yZGVyIHx8IDApKSk7XG4gICAgdGhpcy5kaXNwbGF5TW9yZUl0ZW0uc2V0KGRpc3BsYXlNb3JlSXRlbSk7XG4gICAgdGhpcy5vdXREaXNwbGF5TW9yZUl0ZW0uZW1pdCh0aGlzLmRpc3BsYXlNb3JlSXRlbSgpKTtcbiAgICB0aGlzLml0ZW1zRGlzcGxheS5zZXQoXG4gICAgICB0aGlzLnRhYnMoKVxuICAgICAgICAuaXRlbXMoKVxuICAgICAgICAuZmlsdGVyKChpdGVtKSA9PiBpdGVtKCkuc3BlY2lmaWNEaXNwbGF5KVxuICAgICk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uRGVzdHJveS5uZXh0KCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImxpYnMtdWktdGFiXCI+XG4gIDxkaXZcbiAgICAjaGVhZGVyRWxcbiAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlciB6LVsxXSB7eyBjb25maWdDc3MoKT8uaGVhZGVyIHx8ICcnIH19IHt7IHRhYnMoKS5jbGFzc0luY2x1ZGVIZWFkZXIgfHwgJycgfX1cIlxuICAgIFtzdHlsZS5taW5IZWlnaHQucHhdPVwiaGVpZ2h0VGFiSXRlbSgpXCI+XG4gICAgPGRpdlxuICAgICAgI2hlYWRlckxlZnRFbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItbGVmdFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiZGl2LmxpYnMtdWktdGFiLWhlYWRlci1sZWZ0XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyIHt7IGNvbmZpZ0NzcygpPy5oZWFkZXJDZW50ZXIgfHwgJycgfX0ge3sgdGFicygpLmNsYXNzSW5jbHVkZUhlYWRlckNlbnRlciB8fCAnJyB9fVwiPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIiFmbGV4IHctZnVsbFwiXG4gICAgICAgICNlbGVtZW50Q29udGFpbmVyRWxcbiAgICAgICAgTGlic1VpQ29tcG9uZW50c0RyYWdDb250YWluZXJEaXJlY3RpdmVcbiAgICAgICAgW3N0eWxlc092ZXJyaWRlXT1cInN0eWxlc0RyYWdEcm9wT3ZlcnJpZGVDb21wdXRlZCgpXCJcbiAgICAgICAgW2dyb3VwTmFtZV09XCJncm91cE5hbWUoKVwiXG4gICAgICAgIFsoaXRlbXMpXT1cIml0ZW1zRGlzcGxheVwiXG4gICAgICAgIFtkaXJlY3Rpb25EcmFnXT1cIidob3Jpem9udGFsJ1wiXG4gICAgICAgIFtkaXNhYmxlRHJhZ0NvbnRhaW5lcl09XCIhYWxsb3dEcmFnRHJvcFBvc2l0aW9uKClcIlxuICAgICAgICBbYWNjZXB0RHJhZ1NhbWVHcm91cF09XCJhbGxvd0RyYWdEcm9wUG9zaXRpb24oKVwiXG4gICAgICAgIChvdXREcm9wcGVkQ29udGFpbmVyKT1cImhhbmRsZXJEcm9wQ29udGFpbmVyKCRldmVudClcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBpdGVtc0Rpc3BsYXkoKTsgdHJhY2sgaXRlbSkge1xuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIExpYnNVaURyYWdJdGVtRGlyZWN0aXZlXG4gICAgICAgICAgICBbZGlzYWJsZV09XCJkaXNhYmxlKCkgfHwgIWFsbG93RHJhZ0Ryb3BQb3NpdGlvbigpXCJcbiAgICAgICAgICAgIFtlbGVtZW50Q29udGFpbmVyXT1cImVsZW1lbnRDb250YWluZXJFbFwiXG4gICAgICAgICAgICBbZHJhZ0JvdW5kYXJ5XT1cInRydWVcIlxuICAgICAgICAgICAgW2RyYWdCb3VuZGFyeUFjY2VwdE1vdXNlTGVhdmVDb250YWluZXJdPVwidHJ1ZVwiXG4gICAgICAgICAgICBjbGFzcz1cInJlbGF0aXZlIGxpYnMtdWktdGFiLWl0ZW0tY29udGFpbmVyXCJcbiAgICAgICAgICAgIFtzdHlsZS53aWR0aC5weF09XCJtb2RlKCkgPT09ICdzcGFjZS1iZXR3ZWVuJyA/IGVsZW1lbnRDb250YWluZXJFbC5jbGllbnRXaWR0aCAvIChpdGVtc0Rpc3BsYXkoKS5sZW5ndGggfHwgMSkgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgW2NsYXNzLmZsZXhdPVwibW9kZSgpID09PSAnY2VudGVyLWhhcy1saW5lJ1wiXG4gICAgICAgICAgICBbY2xhc3MuaXRlbXMtY2VudGVyXT1cIm1vZGUoKSA9PT0gJ2NlbnRlci1oYXMtbGluZSdcIj5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dEcmFnRHJvcFBvc2l0aW9uKCkgJiYgIWRpc2FibGUoKSkge1xuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImxpYnMtdWktaWNvbi1hcnJhbmdlIHRleHQtWyM5Y2EyYWRdIGFic29sdXRlIHRvcC1bMTRweF0gbGVmdC1bNHB4XVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtdGFicy1pdGVtXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsIHctZnVsbCAge3sgdGFicygpLmNsYXNzSW5jbHVkZUl0ZW0gfHwgJycgfX1cIlxuICAgICAgICAgICAgICBbdGFic109XCJ0YWJzKClcIlxuICAgICAgICAgICAgICBbc2l6ZV09XCJzaXplKClcIlxuICAgICAgICAgICAgICBbKGl0ZW0pXT1cIml0ZW1cIlxuICAgICAgICAgICAgICBbc3RlcF09XCIkaW5kZXggKyAxXCJcbiAgICAgICAgICAgICAgW2NsYXNzLiFwb2ludGVyLWV2ZW50cy1ub25lXT1cIml0ZW0oKS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlXT1cIml0ZW0oKS5kaXNhYmxlIHx8IGRpc2FibGUoKVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlTGFiZWxdPVwiZGlzYWJsZUxhYmVsKClcIlxuICAgICAgICAgICAgICBba2V5U2VsZWN0ZWRdPVwia2V5U2VsZWN0ZWQoKVwiXG4gICAgICAgICAgICAgIFtmaWVsZExhYmVsXT1cImZpZWxkTGFiZWwoKVwiXG4gICAgICAgICAgICAgIFtmaWVsZEtleV09XCJmaWVsZEtleSgpXCJcbiAgICAgICAgICAgICAgW2Nzc0RlZmF1bHRdPVwiKCRmaXJzdCA/IGNvbmZpZ0NzcygpPy5maXJzdCA6IGNvbmZpZ0NzcygpPy5vdGhlcikgfHwgJydcIlxuICAgICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgICAgW21vZGVdPVwibW9kZSgpXCJcbiAgICAgICAgICAgICAgW2lnbm9yZUNhbGN1bGF0b3JUYWJdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtjaGFuZ2VWaWV3VGFiXT1cImNoYW5nZVZpZXdUYWJcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlckNsaWNrSXRlbShpdGVtKVwiXG4gICAgICAgICAgICAgIChvdXRBY3Rpb24pPVwiaGFuZGxlckFjdGlvbigkZXZlbnQpXCIgLz5cbiAgICAgICAgICAgIEBpZiAobW9kZSgpID09PSAnY2VudGVyLWhhcy1saW5lJyAmJiAhJGxhc3QpIHtcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInctWzQwcHhdIGgtWzFweF0gYmctWyNlNmU3ZWFdXCI+PC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiZmxleCBpdGVtcy1jZW50ZXJcIlxuICAgICAgW2NsYXNzLm1sLWF1dG9dPVwiZGlzcGxheU1vcmVJdGVtKCkgJiYgIXRhYnMoKS52aWV3TW9yZUlnbm9yZU1hcmdpbkxlZnRcIj5cbiAgICAgIEBpZiAoZGlzcGxheU1vcmVJdGVtKCkpIHtcbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgICAgY2xhc3M9XCJ3LWZ1bGwgaC1mdWxsIGZsZXggaXRlbXMtY2VudGVyXCJcbiAgICAgICAgICBbbW9kZV09XCInY2xpY2stdG9nZ2xlJ1wiXG4gICAgICAgICAgW2lnbm9yZUhpZGRlblBvcG92ZXJDb250ZW50V2hlbk1vdXNlTGVhdmVdPVwidHJ1ZVwiXG4gICAgICAgICAgW2NvbmZpZ109XCJ7XG4gICAgICAgICAgICB6SW5kZXg6IHBvcG92ZXJTaG93TW9yZVRhYkl0ZW0oKT8uY29uZmlnPy56SW5kZXggfHwgMTAwMCxcbiAgICAgICAgICAgIG1heEhlaWdodDogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/Lm1heEhlaWdodCB8fCAyODcsXG4gICAgICAgICAgICBtYXhXaWR0aDogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/Lm1heFdpZHRoIHx8IDIwNDgsXG4gICAgICAgICAgICB3aWR0aDogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/LndpZHRoIHx8IDI3NyxcbiAgICAgICAgICAgIGRpcmVjdGlvbjogcG9wb3ZlclNob3dNb3JlVGFiSXRlbSgpPy5jb25maWc/LmRpcmVjdGlvbiB8fCAnYm90dG9tJyxcbiAgICAgICAgICAgIHRlbXBsYXRlOiBwb3BvdmVyU2hvd01vcmVUYWJJdGVtKCk/LmNvbmZpZz8udGVtcGxhdGUgfHwgbWVudUVsLFxuICAgICAgICAgICAgd2hpdGVUaGVtZTogdHJ1ZSxcbiAgICAgICAgICAgIGlnbm9yZUFycm93OiB0cnVlLFxuICAgICAgICAgICAgcG9zaXRpb246IHBvcG92ZXJTaG93TW9yZVRhYkl0ZW0oKT8uY29uZmlnPy5wb3NpdGlvbiB8fCB7IG1vZGU6ICdlbmQnLCBkaXN0YW5jZTogMCB9LFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChvdXRGdW5jdGlvbnNDb250cm9sKT1cImhhbmRsZXJQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQoJGV2ZW50KVwiPlxuICAgICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b25cbiAgICAgICAgICAgIFt0eXBlXT1cIididXR0b24tbGluay10aGlyZCdcIlxuICAgICAgICAgICAgW2NsYXNzSW5jbHVkZV09XCInIXAtWzhweF0nXCJcbiAgICAgICAgICAgIFtpY29uT25seVR5cGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbY2xhc3NJY29uTGVmdF09XCInbGlicy11aS1pY29uLW1vcmUtdmVydGljYWwgcm90YXRlLTkwIHRleHQtWzE2cHhdIG1yLTAnXCJcbiAgICAgICAgICAgIFtwb3BvdmVyXT1cInsgY29uZmlnOiB7IGNvbnRlbnQ6IHBvcG92ZXJTaG93TW9yZVRhYkl0ZW0oKT8uY29uZmlnPy5jb250ZW50IHx8ICdpMThuX3ZpZXdfbW9yZScgfSB9XCJcbiAgICAgICAgICAgIFtpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudF09XCJ0cnVlXCIgLz5cbiAgICAgICAgPC9saWJzX3VpLWNvbXBvbmVudHMtcG9wb3Zlcj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgICA8ZGl2XG4gICAgICAjaGVhZGVyUmlnaHRFbFxuICAgICAgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItcmlnaHQge3sgdGFicygpLmNsYXNzSW5jbHVkZUhlYWRlclJpZ2h0IHx8ICcnIH19XCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJkaXYubGlicy11aS10YWItaGVhZGVyLXJpZ2h0XCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImFic29sdXRlIHRvcC0wIHotMCB3LWZ1bGxcIj5cbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImxpYnMtdWktdGFiLWhlYWRlciB7eyBjb25maWdDc3MoKT8uaGVhZGVyIHx8ICcnIH19IHt7IHRhYnMoKS5jbGFzc0luY2x1ZGVIZWFkZXIgfHwgJycgfX1cIlxuICAgICAgW3N0eWxlLm1pbkhlaWdodC5weF09XCJoZWlnaHRUYWJJdGVtKClcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLXRhYi1oZWFkZXItY2VudGVyIHt7IGNvbmZpZ0NzcygpPy5oZWFkZXJDZW50ZXIgfHwgJycgfX0ge3sgdGFicygpLmNsYXNzSW5jbHVkZUhlYWRlckNlbnRlciB8fCAnJyB9fVwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIHRhYnMoKS5pdGVtcygpOyB0cmFjayBpdGVtKSB7XG4gICAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy10YWJzLWl0ZW1cbiAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsIHctZnVsbCB7eyB0YWJzKCkuY2xhc3NJbmNsdWRlSXRlbSB8fCAnJyB9fVwiXG4gICAgICAgICAgICBbdGFic109XCJ0YWJzKClcIlxuICAgICAgICAgICAgW3NpemVdPVwic2l6ZSgpXCJcbiAgICAgICAgICAgIFsoaXRlbSldPVwiaXRlbVwiXG4gICAgICAgICAgICBbc3RlcF09XCIkaW5kZXggKyAxXCJcbiAgICAgICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGUoKVwiXG4gICAgICAgICAgICBbZGlzYWJsZUxhYmVsXT1cImRpc2FibGVMYWJlbCgpXCJcbiAgICAgICAgICAgIFtrZXlTZWxlY3RlZF09XCJrZXlTZWxlY3RlZCgpXCJcbiAgICAgICAgICAgIFtmaWVsZExhYmVsXT1cImZpZWxkTGFiZWwoKVwiXG4gICAgICAgICAgICBbZmllbGRLZXldPVwiZmllbGRLZXkoKVwiXG4gICAgICAgICAgICBbY3NzRGVmYXVsdF09XCIoJGZpcnN0ID8gY29uZmlnQ3NzKCk/LmZpcnN0IDogY29uZmlnQ3NzKCk/Lm90aGVyKSB8fCAnJ1wiXG4gICAgICAgICAgICBbekluZGV4XT1cInpJbmRleCgpXCJcbiAgICAgICAgICAgIFttb2RlXT1cIm1vZGUoKVwiXG4gICAgICAgICAgICBbY2hhbmdlVmlld1RhYl09XCJjaGFuZ2VWaWV3VGFiXCJcbiAgICAgICAgICAgIFtpZ25vcmVDYWxjdWxhdG9yVGFiXT1cImlnbm9yZUNhbGN1bGF0b3JUYWIoKVwiIC8+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNtZW51RWw+XG4gIDxsaWJzX3VpLWNvbXBvbmVudHMtbGlzdFxuICAgIFtjb25maWddPVwidGFiTW9yZUxpc3RDb25maWcoKVwiXG4gICAgW21heEl0ZW1TaG93XT1cIjVcIlxuICAgIFtoaWRkZW5JbnB1dFNlYXJjaF09XCJ0cnVlXCJcbiAgICBbcGFkZGluZ0xlZnRJdGVtXT1cInRydWVcIlxuICAgIChvdXRTZWxlY3RLZXkpPVwiaGFuZGxlclNlbGVjdGVkS2V5KCRldmVudClcIiAvPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -440,7 +440,7 @@ class LibsUiComponentsTabsComponent {
440
440
  this.onDestroy.complete();
441
441
  }
442
442
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
443
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsTabsComponent, isStandalone: true, selector: "libs_ui-components-tabs", inputs: { tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, heightTabItem: { classPropertyName: "heightTabItem", publicName: "heightTabItem", isSignal: true, isRequired: false, transformFunction: null }, ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, allowDragDropPosition: { classPropertyName: "allowDragDropPosition", publicName: "allowDragDropPosition", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, configCss: { classPropertyName: "configCss", publicName: "configCss", isSignal: true, isRequired: false, transformFunction: null }, popoverShowMoreTabItem: { classPropertyName: "popoverShowMoreTabItem", publicName: "popoverShowMoreTabItem", isSignal: true, isRequired: false, transformFunction: null }, checkCanChangeTabSelected: { classPropertyName: "checkCanChangeTabSelected", publicName: "checkCanChangeTabSelected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keySelected: "keySelectedChange", configCss: "configCssChange", outKeySelected: "outKeySelected", outFunctionsControl: "outFunctionsControl", outDragTabChange: "outDragTabChange", outDisplayMoreItem: "outDisplayMoreItem", outAction: "outAction" }, viewQueries: [{ propertyName: "headerEl", first: true, predicate: ["headerEl"], descendants: true, isSignal: true }, { propertyName: "headerLeftEl", first: true, predicate: ["headerLeftEl"], descendants: true, isSignal: true }, { propertyName: "headerRightEl", first: true, predicate: ["headerRightEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"libs-ui-tab\">\n <div\n #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n #headerLeftEl\n class=\"libs-ui-tab-header-left\">\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div\n class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div\n LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? elementContainerEl.clientWidth / (itemsDisplay().length || 1) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div\n class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover\n class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277,\n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{ config: { content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more' } }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div\n #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div\n class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list\n [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n", styles: [".libs-ui-tab{position:relative;display:flex;width:100%}.libs-ui-tab .libs-ui-tab-header{position:relative;background-color:#fff;display:flex;flex-wrap:nowrap;width:100%;overflow:hidden;flex-shrink:0}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-header-center{display:flex;flex-wrap:nowrap}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container .libs-ui-icon-arrange{display:none}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container:hover .libs-ui-icon-arrange{display:block}.libs-ui-tab .libs-ui-tab-content-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: LibsUiComponentsDragContainerDirective, selector: "[LibsUiComponentsDragContainerDirective]", inputs: ["disableDragContainer", "mode", "directionDrag", "viewEncapsulation", "acceptDragSameGroup", "placeholder", "groupName", "dropToGroupName", "items", "stylesOverride"], outputs: ["itemsChange", "outDragStartContainer", "outDragOverContainer", "outDragLeaveContainer", "outDragEndContainer", "outDroppedContainer", "outDroppedContainerEmpty", "outFunctionControl"] }, { kind: "directive", type: LibsUiDragItemDirective, selector: "[LibsUiDragItemDirective]", inputs: ["fieldId", "item", "itemInContainerVirtualScroll", "throttleTimeHandlerDraggingEvent", "ignoreStopEvent", "onlyMouseDownStopEvent", "dragRootElement", "dragBoundary", "dragBoundaryAcceptMouseLeaveContainer", "elementContainer", "zIndex", "disable"], outputs: ["outDragStart", "outDragOver", "outDragLeave", "outDragEnd", "outDropped"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsTabsItemComponent, selector: "libs_ui-components-tabs-item", inputs: ["ignoreCalculatorTab", "step", "mode", "tabs", "item", "keySelected", "fieldLabel", "fieldKey", "cssDefault", "size", "disable", "disableLabel", "zIndex", "changeViewTab"], outputs: ["itemChange", "outAction"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
443
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsTabsComponent, isStandalone: true, selector: "libs_ui-components-tabs", inputs: { tabs: { classPropertyName: "tabs", publicName: "tabs", isSignal: true, isRequired: true, transformFunction: null }, keySelected: { classPropertyName: "keySelected", publicName: "keySelected", isSignal: true, isRequired: true, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, fieldKey: { classPropertyName: "fieldKey", publicName: "fieldKey", isSignal: true, isRequired: false, transformFunction: null }, fieldLabel: { classPropertyName: "fieldLabel", publicName: "fieldLabel", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, disableLabel: { classPropertyName: "disableLabel", publicName: "disableLabel", isSignal: true, isRequired: false, transformFunction: null }, heightTabItem: { classPropertyName: "heightTabItem", publicName: "heightTabItem", isSignal: true, isRequired: false, transformFunction: null }, ignoreCalculatorTab: { classPropertyName: "ignoreCalculatorTab", publicName: "ignoreCalculatorTab", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, allowDragDropPosition: { classPropertyName: "allowDragDropPosition", publicName: "allowDragDropPosition", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, configCss: { classPropertyName: "configCss", publicName: "configCss", isSignal: true, isRequired: false, transformFunction: null }, popoverShowMoreTabItem: { classPropertyName: "popoverShowMoreTabItem", publicName: "popoverShowMoreTabItem", isSignal: true, isRequired: false, transformFunction: null }, checkCanChangeTabSelected: { classPropertyName: "checkCanChangeTabSelected", publicName: "checkCanChangeTabSelected", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { keySelected: "keySelectedChange", configCss: "configCssChange", outKeySelected: "outKeySelected", outFunctionsControl: "outFunctionsControl", outDragTabChange: "outDragTabChange", outDisplayMoreItem: "outDisplayMoreItem", outAction: "outAction" }, viewQueries: [{ propertyName: "headerEl", first: true, predicate: ["headerEl"], descendants: true, isSignal: true }, { propertyName: "headerLeftEl", first: true, predicate: ["headerLeftEl"], descendants: true, isSignal: true }, { propertyName: "headerRightEl", first: true, predicate: ["headerRightEl"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"libs-ui-tab\">\n <div\n #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n #headerLeftEl\n class=\"libs-ui-tab-header-left\">\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div\n class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div\n LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? elementContainerEl.clientWidth / (itemsDisplay().length || 1) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div\n class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover\n class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277,\n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{ config: { content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more' } }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div\n #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div\n class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list\n [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n", styles: [".libs-ui-tab{position:relative;display:flex;width:100%}.libs-ui-tab .libs-ui-tab-header{position:relative;background-color:#fff;display:flex;flex-wrap:nowrap;width:100%;overflow:hidden;flex-shrink:0}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-header-center{display:flex;flex-wrap:nowrap}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container .libs-ui-icon-arrange{display:none}.libs-ui-tab .libs-ui-tab-header .libs-ui-tab-item-container:hover .libs-ui-icon-arrange{display:block}.libs-ui-tab .libs-ui-tab-content-container{width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: LibsUiComponentsDragContainerDirective, selector: "[LibsUiComponentsDragContainerDirective]", inputs: ["disableDragContainer", "mode", "directionDrag", "viewEncapsulation", "acceptDragSameGroup", "placeholder", "groupName", "dropToGroupName", "items", "stylesOverride"], outputs: ["itemsChange", "outDragStartContainer", "outDragOverContainer", "outDragLeaveContainer", "outDragEndContainer", "outDroppedContainer", "outDroppedContainerEmpty", "outFunctionControl"] }, { kind: "directive", type: LibsUiDragItemDirective, selector: "[LibsUiDragItemDirective]", inputs: ["fieldId", "item", "itemInContainerVirtualScroll", "throttleTimeHandlerDraggingEvent", "ignoreStopEvent", "onlyMouseDownStopEvent", "dragRootElement", "dragBoundary", "dragBoundaryAcceptMouseLeaveContainer", "elementContainer", "zIndex", "disable", "ignoreUserSelectNone"], outputs: ["outDragStart", "outDragOver", "outDragLeave", "outDragEnd", "outDropped"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsButtonsButtonComponent, selector: "libs_ui-components-buttons-button", inputs: ["flagMouse", "type", "buttonCustom", "sizeButton", "label", "disable", "isPending", "imageLeft", "classInclude", "classIconLeft", "classIconRight", "classLabel", "iconOnlyType", "popover", "ignoreStopPropagationEvent", "zIndex", "widthLabelPopover", "styleIconLeft", "styleButton", "ignoreFocusWhenInputTab", "ignoreSetClickWhenShowPopover", "ignorePointerEvent", "isActive", "isHandlerEnterDocumentClickButton"], outputs: ["outClick", "outPopoverEvent", "outFunctionsControl"] }, { kind: "component", type: LibsUiComponentsTabsItemComponent, selector: "libs_ui-components-tabs-item", inputs: ["ignoreCalculatorTab", "step", "mode", "tabs", "item", "keySelected", "fieldLabel", "fieldKey", "cssDefault", "size", "disable", "disableLabel", "zIndex", "changeViewTab"], outputs: ["itemChange", "outAction"] }, { kind: "component", type: LibsUiComponentsListComponent, selector: "libs_ui-components-list", inputs: ["hiddenInputSearch", "dropdownTabKeyActive", "keySearch", "paddingLeftItem", "config", "autoSelectedFirstItemCallOutsideBefore", "isSearchOnline", "disable", "disableLabel", "labelConfig", "searchConfig", "searchPadding", "dividerClassInclude", "hasDivider", "buttonsOther", "hasButtonUnSelectOption", "clickExactly", "backgroundListCustom", "maxItemShow", "keySelected", "multiKeySelected", "keysDisableItem", "keysHiddenItem", "focusInputSearch", "skipFocusInputWhenKeySearchStoreUndefined", "functionGetItemsAutoAddList", "validRequired", "showValidateBottom", "zIndex", "loadingIconSize", "templateRefSearchNoData", "resetKeyWhenSelectAllKeyDropdown", "ignoreClassDisableDefaultWhenUseKeysDisableItem"], outputs: ["outSelectKey", "outSelectMultiKey", "outUnSelectMultiKey", "outClickButtonOther", "outFieldKey", "outChangeView", "outKeySearch", "outLoading", "outFunctionsControl", "outChangStageFlagMousePopover", "outLoadItemsComplete"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
444
444
  }
445
445
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsTabsComponent, decorators: [{
446
446
  type: Component,
@@ -1 +1 @@
1
- {"version":3,"file":"libs-ui-components-tabs.mjs","sources":["../../../../../libs-ui/components/tabs/src/item/item.component.ts","../../../../../libs-ui/components/tabs/src/item/item.component.html","../../../../../libs-ui/components/tabs/src/utils/tabs.ts","../../../../../libs-ui/components/tabs/src/tabs.component.ts","../../../../../libs-ui/components/tabs/src/tabs.component.html","../../../../../libs-ui/components/tabs/src/libs-ui-components-tabs.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { LibsUiComponentsBadgeComponent } from '@libs-ui/components-badge';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { escapeHtml, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { ITabsItem, ITabsItemEvent, ITabs, TYPE_TAB_MODE } from '../interfaces/tab.interface';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs-item',\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsBadgeComponent, LibsUiComponentsListComponent, LibsUiPipesCallFunctionInTemplatePipe],\n})\nexport class LibsUiComponentsTabsItemComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected labelComputed = computed(() => escapeHtml(this.translateService.instant(this.item()[this.fieldLabel()])));\n protected actionShowing = signal<boolean>(false);\n\n private mutationObserver = signal<MutationObserver | undefined>(undefined);\n private mutationObserverSubject = new Subject<void>();\n private onDestroy = new Subject<void>();\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n // #region INPUT\n readonly ignoreCalculatorTab = input.required<boolean>();\n readonly step = input.required<number>();\n readonly mode = input.required<TYPE_TAB_MODE>();\n readonly tabs = input.required<ITabs>();\n readonly item = model.required<ITabsItem>();\n readonly keySelected = input.required<string>();\n readonly fieldLabel = input.required<string>();\n readonly fieldKey = input.required<string>();\n readonly cssDefault = input.required<string>();\n readonly size = input.required<'langer' | 'medium'>();\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly zIndex = input<number>();\n readonly changeViewTab = input.required<Subject<void>>();\n\n // #region OUTPUT\n readonly outAction = output<ITabsItemEvent>();\n\n /* INJECT*/\n private element = inject(ElementRef);\n private translateService = inject(TranslateService);\n\n constructor() {\n effect(() => {\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n return;\n }\n untracked(() => {\n setTimeout(() => {\n this.updateSpecificWidth();\n this.mutationObserver()?.disconnect();\n this.mutationObserverSubject.pipe(debounceTime(10)).subscribe(() => this.updateSpecificWidth());\n this.mutationObserver.set(new MutationObserver(() => this.mutationObserverSubject.next()));\n this.mutationObserver()?.observe(this.element.nativeElement, { attributes: true, childList: true, subtree: true });\n });\n });\n });\n }\n\n ngOnInit() {\n if (!this.item().key) {\n this.item.update((item) => ({ ...item, key: uuid() }));\n }\n }\n\n /* FUNCTIONS */\n private updateSpecificWidth() {\n const preSpecificWidth = this.item().specificWidth;\n const width = this.element.nativeElement.offsetWidth;\n if (width && preSpecificWidth !== width) {\n this.item.update((item) => ({ ...item, specificWidth: width }));\n this.changeViewTab().next();\n }\n }\n\n protected handlerImgError(event: Event) {\n event.stopPropagation();\n (event as IEvent).target.src = this.item().linkImageError;\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.outAction.emit({ item: this.item(), key: event.key as string });\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event !== 'show' && event !== 'remove') {\n return;\n }\n this.actionShowing.set(event === 'show');\n }\n\n protected handlerClickButton(event: Event, type: 'configButtonLeft' | 'configButtonRight' | 'remove') {\n event.stopPropagation();\n if (type === 'remove') {\n this.outAction.emit({ key: 'remove', item: this.item() });\n return;\n }\n const action = this.item()[type]?.action;\n if (action) {\n action(this.item());\n }\n }\n\n ngOnDestroy(): void {\n this.mutationObserver()?.disconnect();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","@if (item(); as item) {\n <div\n #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i\n class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.is_pin) {\n <i\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div\n class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if (step() <= (tabs().stepCompleted || -1)) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div\n class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft || ''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight || ''\"\n [label]=\"item.configButtonLeft.label || ''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div\n class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span\n LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{ position: { mode: step() === 1 ? 'start' : 'center', distance: 0 }, zIndex: zIndex() }\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label ' + (item.classLabel || 'libs-ui-font-h6m') + (disableLabel() && disable() ? ' libs-ui-disable' : '') + (tabs().stepHasBackGround && disable() ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\"></div>\n }\n </div>\n }\n @if (item.popover) {\n <i\n class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"></i>\n }\n @if (item.iconRight) {\n <i\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge\n [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft || ''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight || ''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label || ''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover\n [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl\"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220,\n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '') + ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 },\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe: right.customView : item\"></div>\n } @else {\n <i\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\"></i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if (0 | LibsUiPipesCallFunctionInTemplatePipe: right.getListViewConfig : item : item[fieldKey()] : { valueIs0: 0 } | async; as config) {\n <libs_ui-components-list\n [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button\n [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight || ''\"\n [popover]=\"tabs().configButtonRemove?.popover || { config: { content: 'i18n_delete' } }\"\n [label]=\"tabs().configButtonRemove?.label || ''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6',\n },\n rootColor: '#f15767',\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n}\n","import { signal } from '@angular/core';\nimport { IDataFunctionCallInConfig, IListConfigItem } from '@libs-ui/components-list';\nimport { IHttpRequestConfig, returnListObject } from '@libs-ui/services-http-request';\nimport { convertObjectToSignal, escapeHtml, isNil } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { of } from 'rxjs';\nimport { ITabs, ITabsItem } from '../interfaces/tab.interface';\n\nexport const tabMoreListConfig = (translate: TranslateService, fieldKey: string, fieldLabel: string, tabs: ITabs, disable: boolean | undefined): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(\n tabs\n .items()\n .filter((item) => !item().specificDisplay)\n .map((item) => item())\n ),\n functionName: 'listObservable',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: fieldKey || 'key',\n getClassItem: () => '!py-[12px]',\n classRows: 'w-full',\n notUseVirtualScroll: true,\n rows: convertObjectToSignal([\n {\n classCols: 'flex items-center',\n cols: [\n {\n getPopover: (item: ITabsItem) => {\n if (!tabs.hasStep) {\n return;\n }\n const step = (item.order || 0) + 1;\n let classStep = 'bg-[#f8f9fa] text-[#9ca2ad]';\n if (item.invalid) {\n classStep = '!text-[#f15767] !bg-[#fdeaec]';\n }\n if (item.disable || disable) {\n classStep = 'bg-[#f8f9fa] text-[#cdd0d6]';\n }\n return {\n classInclude: 'flex',\n dataView: `\n <div class=\"libs-ui-font-h6m rounded-full min-w-[24px] min-h-[24px] flex items-center justify-center mr-[8px] ${classStep}\">\n ${step <= (tabs.stepCompleted || -1) ? `<i class=\"libs-ui-icon-check text-[#ffffff]\"></i>` : `${step}`}\n </div>\n `,\n };\n },\n },\n {\n getPopover: (item: ITabsItem) => (item.iconLeft ? { classInclude: 'flex', dataView: `<i class=\"${item.iconLeft} text-[16px] mr-[8px]\"></i>` } : undefined),\n },\n {\n getClassCol: (item: ITabsItem) => `libs-ui-font-h6m ${item.invalid ? '!text-[#f15767]' : 'text-[#6a7383]'}`,\n getValue: (data: IDataFunctionCallInConfig) => of(escapeHtml(translate.instant(data.item[fieldLabel] || ' '))),\n },\n {\n getPopover: (item: ITabsItem) => (item.popover ? { config: item.popover } : undefined),\n },\n {\n getPopover: (item: ITabsItem) => (item.iconRight ? { classInclude: 'flex', dataView: `<i class=\"${item.iconRight} text-[16px] ml-[8px]\"></i>` } : undefined),\n },\n {\n getConfigBadge: (item: ITabsItem) => {\n if (isNil(item.count)) {\n return;\n }\n return {\n mode: item.modeCount || 'x+',\n count: item.count,\n maxCount: item.maxCount || 99,\n classCircle: (item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : ''),\n };\n },\n },\n ],\n },\n ]),\n }),\n };\n};\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IDrop, LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective } from '@libs-ui/components-drag-drop';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { IPopover, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { convertObjectToSignal, isNil, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ITabCssConfig, ITabs, ITabsFunctionControlEvent, ITabsItem, ITabsItemEvent, TYPE_TAB_MODE } from './interfaces/tab.interface';\nimport { LibsUiComponentsTabsItemComponent } from './item/item.component';\nimport { tabMoreListConfig } from './utils/tabs';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsTabsItemComponent, LibsUiComponentsListComponent],\n})\nexport class LibsUiComponentsTabsComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected itemsDisplay = signal<Array<WritableSignal<ITabsItem>>>([]);\n protected displayMoreItem = signal<boolean>(false);\n protected tabMoreListConfig = computed(() => tabMoreListConfig(this.translate, this.fieldKey(), this.fieldLabel(), this.tabs(), this.disable()));\n protected changeViewTab = new Subject<void>();\n protected groupName = signal<string>(uuid());\n protected stylesDragDropOverrideComputed = computed(() => this.updateStylesDragDropOverride());\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly tabs = input.required<ITabs>();\n readonly keySelected = model.required<string>();\n readonly mode = input<TYPE_TAB_MODE>('left');\n readonly fieldKey = input<string>('key');\n readonly fieldLabel = input<string>('label');\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly heightTabItem = input<number>(40);\n readonly ignoreCalculatorTab = input<boolean>(false);\n readonly size = input<'langer' | 'medium'>('medium');\n readonly allowDragDropPosition = input<boolean>();\n readonly zIndex = input<number>();\n readonly configCss = model<ITabCssConfig>();\n readonly popoverShowMoreTabItem = input<IPopover>();\n readonly checkCanChangeTabSelected = input<() => boolean | Promise<boolean>>();\n\n // #region OUTPUT\n readonly outKeySelected = output<string>();\n readonly outFunctionsControl = output<ITabsFunctionControlEvent>();\n readonly outDragTabChange = output<void>();\n readonly outDisplayMoreItem = output<boolean>();\n readonly outAction = output<ITabsItemEvent>();\n\n /* VIEW CHILD */\n private readonly headerEl = viewChild.required<ElementRef>('headerEl');\n private readonly headerLeftEl = viewChild.required<ElementRef>('headerLeftEl');\n private readonly headerRightEl = viewChild.required<ElementRef>('headerRightEl');\n\n /* INJECT*/\n private translate = inject(TranslateService);\n\n ngOnInit() {\n this.updateTabsCssConfig();\n this.outFunctionsControl.emit(this.FunctionsControl);\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n this.tabs()\n .items()\n .map((item) => item.update((data) => ({ ...data, specificDisplay: true })));\n this.itemsDisplay.set(\n this.tabs()\n .items()\n .filter((item) => item().specificDisplay)\n );\n return;\n }\n fromEvent(window, 'resize')\n .pipe(debounceTime(250), takeUntil(this.onDestroy))\n .subscribe(() => {\n if (!this.tabs().items().length) {\n return;\n }\n this.displayMoreItem.set(false);\n this.calculatorTabsItemDisplay();\n });\n this.changeViewTab.pipe(debounceTime(20), takeUntil(this.onDestroy)).subscribe(() => this.calculatorTabsItemDisplay());\n }\n\n /* FUNCTIONS */\n public get FunctionsControl(): ITabsFunctionControlEvent {\n return {\n addTabsItem: this.addTabsItem.bind(this),\n calculatorTabsItemsDisplay: this.calculatorTabsItemDisplay.bind(this),\n selectedTabsItem: this.handlerSelectedTabsItem.bind(this),\n };\n }\n\n private updateTabsCssConfig() {\n if (this.configCss()) {\n return;\n }\n switch (this.mode()) {\n case 'left':\n this.configCss.set({\n first: 'ml-[20px] mr-[16px]',\n other: 'ml-[20px] mr-[16px]',\n });\n break;\n case 'center':\n this.configCss.set({\n first: 'px-[12px] ml-[18px] mr-[18px]',\n other: 'px-[12px] mx-[18px]',\n header: 'flex justify-center',\n });\n break;\n case 'center-has-line':\n this.configCss.set({\n first: 'px-[16px]',\n other: 'px-[16px]',\n headerCenter: 'items-center',\n });\n break;\n case 'space-between':\n this.configCss.set({\n first: 'mx-auto',\n other: 'mx-auto',\n headerCenter: 'w-full',\n });\n break;\n }\n }\n\n private updateStylesDragDropOverride() {\n if (this.allowDragDropPosition()) {\n return [\n {\n className: 'libs-ui-drag-drop-item-placeholder',\n styles: '',\n },\n {\n className: 'libs-ui-drag-drop-item',\n styles: 'cursor: move;',\n },\n {\n className: 'libs-ui-drag-drop-item-dragging',\n styles: 'cursor: move; background: #dddddd;',\n },\n ];\n }\n return [\n {\n className: 'libs-ui-drag-drop-item',\n styles: '',\n },\n {\n className: 'libs-ui-drag-drop-item-disable',\n styles: '',\n },\n ];\n }\n\n protected handlerDropContainer(event: IDrop) {\n const { itemDragInfo } = event;\n if (!itemDragInfo) {\n return;\n }\n const items = this.tabs().items;\n const { indexDrag, indexDrop } = itemDragInfo;\n if (isNil(indexDrag) || isNil(indexDrop) || indexDrop === indexDrag) {\n return;\n }\n const itemDrag = items()[indexDrag as number];\n items.update((items) => {\n items.splice(indexDrag as number, 1);\n items.splice(indexDrop as number, 0, itemDrag);\n return [...items];\n });\n this.outDragTabChange.emit();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n private async handlerSelectedTabsItem(key: string, resetDisable = true) {\n const itemSelected = this.tabs()\n .items()\n .find((item) => item()[this.fieldKey()] === key);\n if (!itemSelected) {\n return;\n }\n if (resetDisable) {\n itemSelected.update((item) => ({ ...item, disable: false }));\n }\n this.handlerClickItem(itemSelected);\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.handlerClickItem(convertObjectToSignal(event.item));\n this.outDragTabChange.emit();\n }\n\n protected async handlerClickItem(item: WritableSignal<ITabsItem>) {\n if (item().disable || this.disable()) {\n return;\n }\n const checkCanChangeTabSelected = this.checkCanChangeTabSelected();\n if (checkCanChangeTabSelected) {\n const state = await checkCanChangeTabSelected();\n if (state) {\n this.changeItemSelected(item);\n }\n return;\n }\n this.changeItemSelected(item);\n }\n\n private changeItemSelected(item: WritableSignal<ITabsItem>) {\n this.keySelected.set(item()[this.fieldKey()]);\n this.outKeySelected.emit(this.keySelected());\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n this.calculatorTabsItemDisplay();\n }\n\n protected async handlerAction(event: ITabsItemEvent) {\n this.outAction.emit(event);\n }\n\n private async addTabsItem(item: WritableSignal<ITabsItem>, selected = true, addFirst?: boolean) {\n const items = this.tabs().items;\n items.update((items) => {\n if (addFirst) {\n return [item, ...items];\n }\n return [...items, item];\n });\n if (selected) {\n this.handlerClickItem(item);\n }\n }\n\n protected async calculatorTabsItemDisplay() {\n let items = this.tabs().items();\n const indexItemSelected = items.findIndex((item) => item()[this.fieldKey()] === this.keySelected());\n if (indexItemSelected < 0) {\n return;\n }\n this.displayMoreItem.set(false);\n let displayMoreItem = false;\n const headerWidth = this.headerEl().nativeElement.clientWidth || 0;\n const itemSelected = items[indexItemSelected];\n const itemSelectedWidth = itemSelected().specificWidth;\n let totalWidthItemsDisplay = (this.headerLeftEl().nativeElement.clientWidth || 0) + (this.headerRightEl().nativeElement.clientWidth || 0) + 32;\n items.forEach((item, index) => {\n if (!item().specificWidth) {\n return;\n }\n item.update((data) => ({ ...data, specificDisplay: false }));\n const itemWidth = item().specificWidth || 0;\n const width = totalWidthItemsDisplay + itemWidth + (index < indexItemSelected ? itemSelectedWidth : 0);\n totalWidthItemsDisplay += itemWidth;\n if (width > headerWidth) {\n displayMoreItem = true;\n return;\n }\n item.update((data) => ({ ...data, specificDisplay: true }));\n });\n itemSelected.update((data) => ({ ...data, specificDisplay: true }));\n const display = items.filter((item) => item().specificDisplay === true);\n const notDisplay = items.filter((item) => item().specificDisplay === false);\n items = display.concat(notDisplay);\n items.forEach((item, index) => item.update((data) => ({ ...data, order: index })));\n this.tabs().items.set(items.sort((prev, next) => (prev().order || 0) - (next().order || 0)));\n this.displayMoreItem.set(displayMoreItem);\n this.outDisplayMoreItem.emit(this.displayMoreItem());\n this.itemsDisplay.set(\n this.tabs()\n .items()\n .filter((item) => item().specificDisplay)\n );\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div class=\"libs-ui-tab\">\n <div\n #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n #headerLeftEl\n class=\"libs-ui-tab-header-left\">\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div\n class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div\n LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? elementContainerEl.clientWidth / (itemsDisplay().length || 1) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div\n class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover\n class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277,\n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{ config: { content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more' } }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div\n #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div\n class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list\n [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["debounceTime"],"mappings":"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"}
1
+ {"version":3,"file":"libs-ui-components-tabs.mjs","sources":["../../../../../libs-ui/components/tabs/src/item/item.component.ts","../../../../../libs-ui/components/tabs/src/item/item.component.html","../../../../../libs-ui/components/tabs/src/utils/tabs.ts","../../../../../libs-ui/components/tabs/src/tabs.component.ts","../../../../../libs-ui/components/tabs/src/tabs.component.html","../../../../../libs-ui/components/tabs/src/libs-ui-components-tabs.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, untracked } from '@angular/core';\nimport { LibsUiComponentsBadgeComponent } from '@libs-ui/components-badge';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { escapeHtml, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { debounceTime, Subject } from 'rxjs';\nimport { ITabsItem, ITabsItemEvent, ITabs, TYPE_TAB_MODE } from '../interfaces/tab.interface';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { LibsUiPipesCallFunctionInTemplatePipe } from '@libs-ui/pipes-call-function-in-template';\nimport { AsyncPipe } from '@angular/common';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs-item',\n templateUrl: './item.component.html',\n styleUrls: ['./item.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [AsyncPipe, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsPopoverComponent, LibsUiComponentsBadgeComponent, LibsUiComponentsListComponent, LibsUiPipesCallFunctionInTemplatePipe],\n})\nexport class LibsUiComponentsTabsItemComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected labelComputed = computed(() => escapeHtml(this.translateService.instant(this.item()[this.fieldLabel()])));\n protected actionShowing = signal<boolean>(false);\n\n private mutationObserver = signal<MutationObserver | undefined>(undefined);\n private mutationObserverSubject = new Subject<void>();\n private onDestroy = new Subject<void>();\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n // #region INPUT\n readonly ignoreCalculatorTab = input.required<boolean>();\n readonly step = input.required<number>();\n readonly mode = input.required<TYPE_TAB_MODE>();\n readonly tabs = input.required<ITabs>();\n readonly item = model.required<ITabsItem>();\n readonly keySelected = input.required<string>();\n readonly fieldLabel = input.required<string>();\n readonly fieldKey = input.required<string>();\n readonly cssDefault = input.required<string>();\n readonly size = input.required<'langer' | 'medium'>();\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly zIndex = input<number>();\n readonly changeViewTab = input.required<Subject<void>>();\n\n // #region OUTPUT\n readonly outAction = output<ITabsItemEvent>();\n\n /* INJECT*/\n private element = inject(ElementRef);\n private translateService = inject(TranslateService);\n\n constructor() {\n effect(() => {\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n return;\n }\n untracked(() => {\n setTimeout(() => {\n this.updateSpecificWidth();\n this.mutationObserver()?.disconnect();\n this.mutationObserverSubject.pipe(debounceTime(10)).subscribe(() => this.updateSpecificWidth());\n this.mutationObserver.set(new MutationObserver(() => this.mutationObserverSubject.next()));\n this.mutationObserver()?.observe(this.element.nativeElement, { attributes: true, childList: true, subtree: true });\n });\n });\n });\n }\n\n ngOnInit() {\n if (!this.item().key) {\n this.item.update((item) => ({ ...item, key: uuid() }));\n }\n }\n\n /* FUNCTIONS */\n private updateSpecificWidth() {\n const preSpecificWidth = this.item().specificWidth;\n const width = this.element.nativeElement.offsetWidth;\n if (width && preSpecificWidth !== width) {\n this.item.update((item) => ({ ...item, specificWidth: width }));\n this.changeViewTab().next();\n }\n }\n\n protected handlerImgError(event: Event) {\n event.stopPropagation();\n (event as IEvent).target.src = this.item().linkImageError;\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.outAction.emit({ item: this.item(), key: event.key as string });\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n if (event !== 'show' && event !== 'remove') {\n return;\n }\n this.actionShowing.set(event === 'show');\n }\n\n protected handlerClickButton(event: Event, type: 'configButtonLeft' | 'configButtonRight' | 'remove') {\n event.stopPropagation();\n if (type === 'remove') {\n this.outAction.emit({ key: 'remove', item: this.item() });\n return;\n }\n const action = this.item()[type]?.action;\n if (action) {\n action(this.item());\n }\n }\n\n ngOnDestroy(): void {\n this.mutationObserver()?.disconnect();\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","@if (item(); as item) {\n <div\n #itemEl\n class=\"libs-ui-tab-header-center-item {{ cssDefault() }} {{ item.classInclude || '' }} {{ item[fieldKey()] === keySelected() && tabs().classIncludeActiveItem ? tabs().classIncludeActiveItem : '' }}\"\n [attr.key]=\"item[fieldKey()]\"\n [attr.invalid]=\"item.invalid && !tabs().ignoreShowLineBottomInTab\"\n [attr.active]=\"item[fieldKey()] === keySelected() && !tabs().ignoreShowLineBottomInTab\"\n [attr.disable]=\"disable()\"\n [class.!cursor-pointer]=\"!disable()\"\n [class.!cursor-default]=\"disable()\"\n [class.libs-ui-tab-header-center-item-hover]=\"!tabs().ignoreShowLineBottomInTab\"\n [class.libs-ui-tab-header-center-item-action-show]=\"actionShowing()\">\n @if (tabs().hasImage) {\n <img\n class=\"libs-ui-tab-header-center-item-image {{ item.classImageInclude || '' }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverImage\"\n [config]=\"item.popoverImage\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [src]=\"item.linkImage\"\n [attr.key]=\"item[fieldKey()]\"\n (error)=\"handlerImgError($event)\" />\n }\n @if (item.iconLeft) {\n <i\n class=\"libs-ui-tab-header-center-item-icon libs-ui-mr-8px {{ item.iconLeft }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconLeft\"\n [config]=\"item.popoverIconLeft\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.is_pin) {\n <i\n class=\"libs-ui-tab-header-center-item-icon mr-[8px] {{ item[fieldKey()] === keySelected() ? 'libs-ui-icon-pin-solid' : 'libs-ui-icon-pin-outline' }}\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (tabs().hasStep) {\n @if (tabs().stepHasBackGround) {\n <div\n class=\"libs-ui-tab-header-center-item-step !border-none libs-ui-font-h6m\"\n [class.!text-[#ffffff]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [class.bg-[#f8f9fa]]=\"step() > (tabs().stepCompleted || 0) && (tabs().ignoreSelectedBackgroundStep || disable()) && !item.invalid\"\n [class.bg-[#00bc62]]=\"step() <= (tabs().stepCompleted || -1) && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-default)]]=\"item[fieldKey()] === keySelected() && !tabs().ignoreSelectedBackgroundStep && !item.invalid\"\n [class.bg-[var(--libs-ui-color-light-2)]]=\"((item[fieldKey()] === keySelected() && tabs().ignoreSelectedBackgroundStep) || (step() > (tabs().stepCompleted || 0) && !tabs().ignoreSelectedBackgroundStep)) && !item.invalid\"\n [class.!bg-[#fdeaec]]=\"item.invalid\">\n @if (step() <= (tabs().stepCompleted || -1)) {\n <i class=\"libs-ui-icon-check text-[#ffffff]\"></i>\n } @else {\n <span [class.text-[#cdd0d6]]=\"disable()\">{{ step() }}</span>\n }\n </div>\n } @else {\n <div\n class=\"libs-ui-tab-header-center-item-step\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\">\n <span>{{ step() }}</span>\n </div>\n }\n }\n @if (item.configButtonLeft) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonLeft.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonLeft.classInclude || ''\"\n [classIconLeft]=\"item.configButtonLeft.classIconLeft || ''\"\n [classLabel]=\"item.configButtonLeft.classLabel || ''\"\n [classIconRight]=\"item.configButtonLeft.classIconRight || ''\"\n [label]=\"item.configButtonLeft.label || ''\"\n [popover]=\"item.configButtonLeft.popover || {}\"\n (outClick)=\"handlerClickButton($event, 'configButtonLeft')\" />\n }\n @if (item[fieldLabel()]) {\n <div\n class=\"relative flex\"\n [style.maxWidth.px]=\"tabs().maxWidthTextLabelItem || 160\">\n <span\n LibsUiComponentsPopoverDirective\n [type]=\"'text'\"\n [config]=\"{ position: { mode: step() === 1 ? 'start' : 'center', distance: 0 }, zIndex: zIndex() }\"\n [attr.size]=\"size()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.!text-[#f15767]]=\"item.invalid\"\n [ignoreStopPropagationEvent]=\"true\"\n [classInclude]=\"'w-full libs-ui-tab-header-center-item-label ' + (item.classLabel || 'libs-ui-font-h6m') + (disableLabel() && disable() ? ' libs-ui-disable' : '') + (tabs().stepHasBackGround && disable() ? ' text-[#cdd0d6]' : '')\"\n [innerHTML]=\"labelComputed()\"></span>\n @if (item.hasRedDot) {\n <div class=\"absolute right-[-6px] top-[-2px] w-[6px] h-[6px] bg-[#ee2d41] rounded-[6px]\"></div>\n }\n </div>\n }\n @if (item.popover) {\n <i\n class=\"libs-ui-tab-header-center-item-icon ml-[8px] libs-ui-icon-tooltip-outline\"\n LibsUiComponentsPopoverDirective\n [config]=\"item.popover\"\n [ignoreStopPropagationEvent]=\"true\"\n [class.libs-ui-disable]=\"disable()\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"></i>\n }\n @if (item.iconRight) {\n <i\n class=\"libs-ui-tab-header-center-item-icon {{ item.iconRight }}\"\n LibsUiComponentsPopoverDirective\n [ignoreShowPopover]=\"!item.popoverIconRight\"\n [config]=\"item.popoverIconRight\"\n [ignoreStopPropagationEvent]=\"true\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class.libs-ui-disable]=\"disable()\"></i>\n }\n @if (item.count !== undefined) {\n <libs_ui-components-badge\n [mode]=\"item.modeCount || 'x+'\"\n [count]=\"item.count\"\n [maxCount]=\"item.maxCount || 99\"\n [classCircle]=\"(item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : '')\"\n [active]=\"item[fieldKey()] === keySelected()\"\n [class.libs-ui-disable]=\"disable()\" />\n }\n @if (item.configButtonRight) {\n <libs_ui-components-buttons-button\n [type]=\"item.configButtonRight.type || 'button-link-third'\"\n [classInclude]=\"item.configButtonRight.classInclude || ''\"\n [classIconLeft]=\"item.configButtonRight.classIconLeft || ''\"\n [classLabel]=\"item.configButtonRight.classLabel || ''\"\n [classIconRight]=\"item.configButtonRight.classIconRight || ''\"\n [popover]=\"item.configButtonRight.popover || {}\"\n [label]=\"item.configButtonRight.label || ''\"\n (outClick)=\"handlerClickButton($event, 'configButtonRight')\" />\n }\n @if (tabs().actionRightConfig?.(); as right) {\n <libs_ui-components-popover\n [class]=\"right.classInclude || 'ml-[8px]'\"\n [class.libs-ui-tab-header-center-item-action]=\"right.onlyShowWhenHoverItemActive\"\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [mode]=\"'click-toggle'\"\n [ignoreStopPropagationEvent]=\"true\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [elementRefCustom]=\"right.onlyShowWhenHoverItemActive ? undefined : itemEl\"\n [config]=\"{\n zIndex: right.config?.()?.zIndex || 1000,\n maxHeight: right.config?.()?.maxHeight || 287,\n maxWidth: right.config?.()?.maxWidth || 2048,\n width: right.config?.()?.width || 220,\n direction: right.config?.()?.direction || 'bottom',\n template: right.config?.()?.template || actionEl,\n classInclude: (right.config?.()?.classInclude || '') + ' !rounded-[4px] overflow-hidden',\n whiteTheme: true,\n ignoreArrow: true,\n position: right.config?.()?.position || { mode: 'start', distance: 0 },\n }\"\n (outEvent)=\"handlerPopoverEvent($event)\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n @if (right.customView) {\n <div [innerHtml]=\"item[fieldKey()] | LibsUiPipesCallFunctionInTemplatePipe: right.customView : item\"></div>\n } @else {\n <i\n [attr.active]=\"item[fieldKey()] === keySelected()\"\n [attr.invalid]=\"item.invalid\"\n [attr.completed]=\"step() <= (tabs().stepCompleted || -1)\"\n [class]=\"right.onlyShowWhenHoverItemActive ? 'libs-ui-icon-more-vertical rotate-90 libs-ui-tab-header-center-item-icon' : 'libs-ui-icon-chevron-right rotate-90 libs-ui-tab-header-center-item-icon'\"></i>\n }\n </libs_ui-components-popover>\n <ng-template #actionEl>\n @if (0 | LibsUiPipesCallFunctionInTemplatePipe: right.getListViewConfig : item : item[fieldKey()] : { valueIs0: 0 } | async; as config) {\n <libs_ui-components-list\n [config]=\"config()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n }\n </ng-template>\n }\n @if (tabs().allowRemove && tabs().items().length > 1) {\n <libs_ui-components-buttons-button\n [type]=\"tabs().configButtonRemove?.type || 'button-link-custom'\"\n [iconOnlyType]=\"tabs().configButtonRemove?.iconOnlyType || true\"\n [classInclude]=\"tabs().configButtonRemove?.classInclude || 'ml-[8px] !p-0'\"\n [classIconLeft]=\"tabs().configButtonRemove?.classIconLeft || 'libs-ui-icon-close'\"\n [classLabel]=\"tabs().configButtonRemove?.classLabel || ''\"\n [classIconRight]=\"tabs().configButtonRemove?.classIconRight || ''\"\n [popover]=\"tabs().configButtonRemove?.popover || { config: { content: 'i18n_delete' } }\"\n [label]=\"tabs().configButtonRemove?.label || ''\"\n [buttonCustom]=\"{\n configStepColor: {\n text: '#6a7383',\n text_hover: '#f15767',\n text_active: '#f15767',\n text_disable: '#cdd0d6',\n },\n rootColor: '#f15767',\n }\"\n (outClick)=\"handlerClickButton($event, 'remove')\" />\n }\n </div>\n}\n","import { signal } from '@angular/core';\nimport { IDataFunctionCallInConfig, IListConfigItem } from '@libs-ui/components-list';\nimport { IHttpRequestConfig, returnListObject } from '@libs-ui/services-http-request';\nimport { convertObjectToSignal, escapeHtml, isNil } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { of } from 'rxjs';\nimport { ITabs, ITabsItem } from '../interfaces/tab.interface';\n\nexport const tabMoreListConfig = (translate: TranslateService, fieldKey: string, fieldLabel: string, tabs: ITabs, disable: boolean | undefined): IListConfigItem => {\n return {\n type: 'text',\n httpRequestData: signal<IHttpRequestConfig>({\n objectInstance: returnListObject(\n tabs\n .items()\n .filter((item) => !item().specificDisplay)\n .map((item) => item())\n ),\n functionName: 'listObservable',\n argumentsValue: [],\n }),\n configTemplateText: signal({\n fieldKey: fieldKey || 'key',\n getClassItem: () => '!py-[12px]',\n classRows: 'w-full',\n notUseVirtualScroll: true,\n rows: convertObjectToSignal([\n {\n classCols: 'flex items-center',\n cols: [\n {\n getPopover: (item: ITabsItem) => {\n if (!tabs.hasStep) {\n return;\n }\n const step = (item.order || 0) + 1;\n let classStep = 'bg-[#f8f9fa] text-[#9ca2ad]';\n if (item.invalid) {\n classStep = '!text-[#f15767] !bg-[#fdeaec]';\n }\n if (item.disable || disable) {\n classStep = 'bg-[#f8f9fa] text-[#cdd0d6]';\n }\n return {\n classInclude: 'flex',\n dataView: `\n <div class=\"libs-ui-font-h6m rounded-full min-w-[24px] min-h-[24px] flex items-center justify-center mr-[8px] ${classStep}\">\n ${step <= (tabs.stepCompleted || -1) ? `<i class=\"libs-ui-icon-check text-[#ffffff]\"></i>` : `${step}`}\n </div>\n `,\n };\n },\n },\n {\n getPopover: (item: ITabsItem) => (item.iconLeft ? { classInclude: 'flex', dataView: `<i class=\"${item.iconLeft} text-[16px] mr-[8px]\"></i>` } : undefined),\n },\n {\n getClassCol: (item: ITabsItem) => `libs-ui-font-h6m ${item.invalid ? '!text-[#f15767]' : 'text-[#6a7383]'}`,\n getValue: (data: IDataFunctionCallInConfig) => of(escapeHtml(translate.instant(data.item[fieldLabel] || ' '))),\n },\n {\n getPopover: (item: ITabsItem) => (item.popover ? { config: item.popover } : undefined),\n },\n {\n getPopover: (item: ITabsItem) => (item.iconRight ? { classInclude: 'flex', dataView: `<i class=\"${item.iconRight} text-[16px] ml-[8px]\"></i>` } : undefined),\n },\n {\n getConfigBadge: (item: ITabsItem) => {\n if (isNil(item.count)) {\n return;\n }\n return {\n mode: item.modeCount || 'x+',\n count: item.count,\n maxCount: item.maxCount || 99,\n classCircle: (item.classCircle || 'libs-ui-font-h5r') + (item.invalid ? ' !text-[#f15767] !bg-[#fdeaec]' : ''),\n };\n },\n },\n ],\n },\n ]),\n }),\n };\n};\n","import { ChangeDetectionStrategy, Component, computed, ElementRef, inject, input, model, OnDestroy, OnInit, output, signal, viewChild, WritableSignal } from '@angular/core';\nimport { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';\nimport { IDrop, LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective } from '@libs-ui/components-drag-drop';\nimport { IListDataEmitKey, LibsUiComponentsListComponent } from '@libs-ui/components-list';\nimport { IPopover, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';\nimport { convertObjectToSignal, isNil, uuid } from '@libs-ui/utils';\nimport { TranslateService } from '@ngx-translate/core';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ITabCssConfig, ITabs, ITabsFunctionControlEvent, ITabsItem, ITabsItemEvent, TYPE_TAB_MODE } from './interfaces/tab.interface';\nimport { LibsUiComponentsTabsItemComponent } from './item/item.component';\nimport { tabMoreListConfig } from './utils/tabs';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-tabs',\n templateUrl: './tabs.component.html',\n styleUrls: ['./tabs.component.scss'],\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [LibsUiComponentsDragContainerDirective, LibsUiDragItemDirective, LibsUiComponentsPopoverComponent, LibsUiComponentsButtonsButtonComponent, LibsUiComponentsTabsItemComponent, LibsUiComponentsListComponent],\n})\nexport class LibsUiComponentsTabsComponent implements OnInit, OnDestroy {\n // #region PROPERTY\n protected itemsDisplay = signal<Array<WritableSignal<ITabsItem>>>([]);\n protected displayMoreItem = signal<boolean>(false);\n protected tabMoreListConfig = computed(() => tabMoreListConfig(this.translate, this.fieldKey(), this.fieldLabel(), this.tabs(), this.disable()));\n protected changeViewTab = new Subject<void>();\n protected groupName = signal<string>(uuid());\n protected stylesDragDropOverrideComputed = computed(() => this.updateStylesDragDropOverride());\n\n private popoverFunctionControlEvent = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n private onDestroy = new Subject<void>();\n\n // #region INPUT\n readonly tabs = input.required<ITabs>();\n readonly keySelected = model.required<string>();\n readonly mode = input<TYPE_TAB_MODE>('left');\n readonly fieldKey = input<string>('key');\n readonly fieldLabel = input<string>('label');\n readonly disable = input<boolean>();\n readonly disableLabel = input<boolean>();\n readonly heightTabItem = input<number>(40);\n readonly ignoreCalculatorTab = input<boolean>(false);\n readonly size = input<'langer' | 'medium'>('medium');\n readonly allowDragDropPosition = input<boolean>();\n readonly zIndex = input<number>();\n readonly configCss = model<ITabCssConfig>();\n readonly popoverShowMoreTabItem = input<IPopover>();\n readonly checkCanChangeTabSelected = input<() => boolean | Promise<boolean>>();\n\n // #region OUTPUT\n readonly outKeySelected = output<string>();\n readonly outFunctionsControl = output<ITabsFunctionControlEvent>();\n readonly outDragTabChange = output<void>();\n readonly outDisplayMoreItem = output<boolean>();\n readonly outAction = output<ITabsItemEvent>();\n\n /* VIEW CHILD */\n private readonly headerEl = viewChild.required<ElementRef>('headerEl');\n private readonly headerLeftEl = viewChild.required<ElementRef>('headerLeftEl');\n private readonly headerRightEl = viewChild.required<ElementRef>('headerRightEl');\n\n /* INJECT*/\n private translate = inject(TranslateService);\n\n ngOnInit() {\n this.updateTabsCssConfig();\n this.outFunctionsControl.emit(this.FunctionsControl);\n if (this.mode() !== 'left' || this.ignoreCalculatorTab()) {\n this.tabs()\n .items()\n .map((item) => item.update((data) => ({ ...data, specificDisplay: true })));\n this.itemsDisplay.set(\n this.tabs()\n .items()\n .filter((item) => item().specificDisplay)\n );\n return;\n }\n fromEvent(window, 'resize')\n .pipe(debounceTime(250), takeUntil(this.onDestroy))\n .subscribe(() => {\n if (!this.tabs().items().length) {\n return;\n }\n this.displayMoreItem.set(false);\n this.calculatorTabsItemDisplay();\n });\n this.changeViewTab.pipe(debounceTime(20), takeUntil(this.onDestroy)).subscribe(() => this.calculatorTabsItemDisplay());\n }\n\n /* FUNCTIONS */\n public get FunctionsControl(): ITabsFunctionControlEvent {\n return {\n addTabsItem: this.addTabsItem.bind(this),\n calculatorTabsItemsDisplay: this.calculatorTabsItemDisplay.bind(this),\n selectedTabsItem: this.handlerSelectedTabsItem.bind(this),\n };\n }\n\n private updateTabsCssConfig() {\n if (this.configCss()) {\n return;\n }\n switch (this.mode()) {\n case 'left':\n this.configCss.set({\n first: 'ml-[20px] mr-[16px]',\n other: 'ml-[20px] mr-[16px]',\n });\n break;\n case 'center':\n this.configCss.set({\n first: 'px-[12px] ml-[18px] mr-[18px]',\n other: 'px-[12px] mx-[18px]',\n header: 'flex justify-center',\n });\n break;\n case 'center-has-line':\n this.configCss.set({\n first: 'px-[16px]',\n other: 'px-[16px]',\n headerCenter: 'items-center',\n });\n break;\n case 'space-between':\n this.configCss.set({\n first: 'mx-auto',\n other: 'mx-auto',\n headerCenter: 'w-full',\n });\n break;\n }\n }\n\n private updateStylesDragDropOverride() {\n if (this.allowDragDropPosition()) {\n return [\n {\n className: 'libs-ui-drag-drop-item-placeholder',\n styles: '',\n },\n {\n className: 'libs-ui-drag-drop-item',\n styles: 'cursor: move;',\n },\n {\n className: 'libs-ui-drag-drop-item-dragging',\n styles: 'cursor: move; background: #dddddd;',\n },\n ];\n }\n return [\n {\n className: 'libs-ui-drag-drop-item',\n styles: '',\n },\n {\n className: 'libs-ui-drag-drop-item-disable',\n styles: '',\n },\n ];\n }\n\n protected handlerDropContainer(event: IDrop) {\n const { itemDragInfo } = event;\n if (!itemDragInfo) {\n return;\n }\n const items = this.tabs().items;\n const { indexDrag, indexDrop } = itemDragInfo;\n if (isNil(indexDrag) || isNil(indexDrop) || indexDrop === indexDrag) {\n return;\n }\n const itemDrag = items()[indexDrag as number];\n items.update((items) => {\n items.splice(indexDrag as number, 1);\n items.splice(indexDrop as number, 0, itemDrag);\n return [...items];\n });\n this.outDragTabChange.emit();\n }\n\n protected handlerPopoverFunctionControlEvent(event: IPopoverFunctionControlEvent) {\n this.popoverFunctionControlEvent.set(event);\n }\n\n private async handlerSelectedTabsItem(key: string, resetDisable = true) {\n const itemSelected = this.tabs()\n .items()\n .find((item) => item()[this.fieldKey()] === key);\n if (!itemSelected) {\n return;\n }\n if (resetDisable) {\n itemSelected.update((item) => ({ ...item, disable: false }));\n }\n this.handlerClickItem(itemSelected);\n }\n\n protected handlerSelectedKey(event: IListDataEmitKey | undefined) {\n if (!event) {\n return;\n }\n this.handlerClickItem(convertObjectToSignal(event.item));\n this.outDragTabChange.emit();\n }\n\n protected async handlerClickItem(item: WritableSignal<ITabsItem>) {\n if (item().disable || this.disable()) {\n return;\n }\n const checkCanChangeTabSelected = this.checkCanChangeTabSelected();\n if (checkCanChangeTabSelected) {\n const state = await checkCanChangeTabSelected();\n if (state) {\n this.changeItemSelected(item);\n }\n return;\n }\n this.changeItemSelected(item);\n }\n\n private changeItemSelected(item: WritableSignal<ITabsItem>) {\n this.keySelected.set(item()[this.fieldKey()]);\n this.outKeySelected.emit(this.keySelected());\n this.popoverFunctionControlEvent()?.removePopoverOverlay();\n this.calculatorTabsItemDisplay();\n }\n\n protected async handlerAction(event: ITabsItemEvent) {\n this.outAction.emit(event);\n }\n\n private async addTabsItem(item: WritableSignal<ITabsItem>, selected = true, addFirst?: boolean) {\n const items = this.tabs().items;\n items.update((items) => {\n if (addFirst) {\n return [item, ...items];\n }\n return [...items, item];\n });\n if (selected) {\n this.handlerClickItem(item);\n }\n }\n\n protected async calculatorTabsItemDisplay() {\n let items = this.tabs().items();\n const indexItemSelected = items.findIndex((item) => item()[this.fieldKey()] === this.keySelected());\n if (indexItemSelected < 0) {\n return;\n }\n this.displayMoreItem.set(false);\n let displayMoreItem = false;\n const headerWidth = this.headerEl().nativeElement.clientWidth || 0;\n const itemSelected = items[indexItemSelected];\n const itemSelectedWidth = itemSelected().specificWidth;\n let totalWidthItemsDisplay = (this.headerLeftEl().nativeElement.clientWidth || 0) + (this.headerRightEl().nativeElement.clientWidth || 0) + 32;\n items.forEach((item, index) => {\n if (!item().specificWidth) {\n return;\n }\n item.update((data) => ({ ...data, specificDisplay: false }));\n const itemWidth = item().specificWidth || 0;\n const width = totalWidthItemsDisplay + itemWidth + (index < indexItemSelected ? itemSelectedWidth : 0);\n totalWidthItemsDisplay += itemWidth;\n if (width > headerWidth) {\n displayMoreItem = true;\n return;\n }\n item.update((data) => ({ ...data, specificDisplay: true }));\n });\n itemSelected.update((data) => ({ ...data, specificDisplay: true }));\n const display = items.filter((item) => item().specificDisplay === true);\n const notDisplay = items.filter((item) => item().specificDisplay === false);\n items = display.concat(notDisplay);\n items.forEach((item, index) => item.update((data) => ({ ...data, order: index })));\n this.tabs().items.set(items.sort((prev, next) => (prev().order || 0) - (next().order || 0)));\n this.displayMoreItem.set(displayMoreItem);\n this.outDisplayMoreItem.emit(this.displayMoreItem());\n this.itemsDisplay.set(\n this.tabs()\n .items()\n .filter((item) => item().specificDisplay)\n );\n }\n\n ngOnDestroy() {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","<div class=\"libs-ui-tab\">\n <div\n #headerEl\n class=\"libs-ui-tab-header z-[1] {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div\n #headerLeftEl\n class=\"libs-ui-tab-header-left\">\n <ng-content select=\"div.libs-ui-tab-header-left\"></ng-content>\n </div>\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n <div\n class=\"!flex w-full\"\n #elementContainerEl\n LibsUiComponentsDragContainerDirective\n [stylesOverride]=\"stylesDragDropOverrideComputed()\"\n [groupName]=\"groupName()\"\n [(items)]=\"itemsDisplay\"\n [directionDrag]=\"'horizontal'\"\n [disableDragContainer]=\"!allowDragDropPosition()\"\n [acceptDragSameGroup]=\"allowDragDropPosition()\"\n (outDroppedContainer)=\"handlerDropContainer($event)\">\n @for (item of itemsDisplay(); track item) {\n <div\n LibsUiDragItemDirective\n [disable]=\"disable() || !allowDragDropPosition()\"\n [elementContainer]=\"elementContainerEl\"\n [dragBoundary]=\"true\"\n [dragBoundaryAcceptMouseLeaveContainer]=\"true\"\n class=\"relative libs-ui-tab-item-container\"\n [style.width.px]=\"mode() === 'space-between' ? elementContainerEl.clientWidth / (itemsDisplay().length || 1) : undefined\"\n [class.flex]=\"mode() === 'center-has-line'\"\n [class.items-center]=\"mode() === 'center-has-line'\">\n @if (allowDragDropPosition() && !disable()) {\n <span class=\"libs-ui-icon-arrange text-[#9ca2ad] absolute top-[14px] left-[4px]\"></span>\n }\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [class.!pointer-events-none]=\"item().disable || disable()\"\n [disable]=\"item().disable || disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [ignoreCalculatorTab]=\"true\"\n [changeViewTab]=\"changeViewTab\"\n (click)=\"handlerClickItem(item)\"\n (outAction)=\"handlerAction($event)\" />\n @if (mode() === 'center-has-line' && !$last) {\n <div class=\"w-[40px] h-[1px] bg-[#e6e7ea]\"></div>\n }\n </div>\n }\n </div>\n </div>\n <div\n class=\"flex items-center\"\n [class.ml-auto]=\"displayMoreItem() && !tabs().viewMoreIgnoreMarginLeft\">\n @if (displayMoreItem()) {\n <libs_ui-components-popover\n class=\"w-full h-full flex items-center\"\n [mode]=\"'click-toggle'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"true\"\n [config]=\"{\n zIndex: popoverShowMoreTabItem()?.config?.zIndex || 1000,\n maxHeight: popoverShowMoreTabItem()?.config?.maxHeight || 287,\n maxWidth: popoverShowMoreTabItem()?.config?.maxWidth || 2048,\n width: popoverShowMoreTabItem()?.config?.width || 277,\n direction: popoverShowMoreTabItem()?.config?.direction || 'bottom',\n template: popoverShowMoreTabItem()?.config?.template || menuEl,\n whiteTheme: true,\n ignoreArrow: true,\n position: popoverShowMoreTabItem()?.config?.position || { mode: 'end', distance: 0 },\n }\"\n (outFunctionsControl)=\"handlerPopoverFunctionControlEvent($event)\">\n <libs_ui-components-buttons-button\n [type]=\"'button-link-third'\"\n [classInclude]=\"'!p-[8px]'\"\n [iconOnlyType]=\"true\"\n [classIconLeft]=\"'libs-ui-icon-more-vertical rotate-90 text-[16px] mr-0'\"\n [popover]=\"{ config: { content: popoverShowMoreTabItem()?.config?.content || 'i18n_view_more' } }\"\n [ignoreStopPropagationEvent]=\"true\" />\n </libs_ui-components-popover>\n }\n </div>\n <div\n #headerRightEl\n class=\"libs-ui-tab-header-right {{ tabs().classIncludeHeaderRight || '' }}\">\n <ng-content select=\"div.libs-ui-tab-header-right\"></ng-content>\n </div>\n </div>\n <div class=\"absolute top-0 z-0 w-full\">\n <div\n class=\"libs-ui-tab-header {{ configCss()?.header || '' }} {{ tabs().classIncludeHeader || '' }}\"\n [style.minHeight.px]=\"heightTabItem()\">\n <div class=\"libs-ui-tab-header-center {{ configCss()?.headerCenter || '' }} {{ tabs().classIncludeHeaderCenter || '' }}\">\n @for (item of tabs().items(); track item) {\n <libs_ui-components-tabs-item\n class=\"h-full w-full {{ tabs().classIncludeItem || '' }}\"\n [tabs]=\"tabs()\"\n [size]=\"size()\"\n [(item)]=\"item\"\n [step]=\"$index + 1\"\n [disable]=\"disable()\"\n [disableLabel]=\"disableLabel()\"\n [keySelected]=\"keySelected()\"\n [fieldLabel]=\"fieldLabel()\"\n [fieldKey]=\"fieldKey()\"\n [cssDefault]=\"($first ? configCss()?.first : configCss()?.other) || ''\"\n [zIndex]=\"zIndex()\"\n [mode]=\"mode()\"\n [changeViewTab]=\"changeViewTab\"\n [ignoreCalculatorTab]=\"ignoreCalculatorTab()\" />\n }\n </div>\n </div>\n </div>\n</div>\n<ng-template #menuEl>\n <libs_ui-components-list\n [config]=\"tabMoreListConfig()\"\n [maxItemShow]=\"5\"\n [hiddenInputSearch]=\"true\"\n [paddingLeftItem]=\"true\"\n (outSelectKey)=\"handlerSelectedKey($event)\" />\n</ng-template>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["debounceTime"],"mappings":";;;;;;;;;;;;;;;MAsBa,iCAAiC,CAAA;;IAElC,aAAa,GAAG,QAAQ,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;AACzG,IAAA,aAAa,GAAG,MAAM,CAAU,KAAK,CAAC;AAExC,IAAA,gBAAgB,GAAG,MAAM,CAA+B,SAAS,CAAC;AAClE,IAAA,uBAAuB,GAAG,IAAI,OAAO,EAAQ;AAC7C,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;AAE/B,IAAA,2BAA2B,GAAG,MAAM,CAA2C,SAAS,CAAC;;AAGxF,IAAA,mBAAmB,GAAG,KAAK,CAAC,QAAQ,EAAW;AAC/C,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAU;AAC/B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAiB;AACtC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAS;AAC9B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAa;AAClC,IAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAU;AACtC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAU;AACrC,IAAA,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAU;AACnC,IAAA,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAU;AACrC,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAuB;IAC5C,OAAO,GAAG,KAAK,EAAW;IAC1B,YAAY,GAAG,KAAK,EAAW;IAC/B,MAAM,GAAG,KAAK,EAAU;AACxB,IAAA,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAiB;;IAG/C,SAAS,GAAG,MAAM,EAAkB;;AAGrC,IAAA,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;AAC5B,IAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEnD,IAAA,WAAA,GAAA;QACE,MAAM,CAAC,MAAK;AACV,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;gBACxD;YACF;YACA,SAAS,CAAC,MAAK;gBACb,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,mBAAmB,EAAE;AAC1B,oBAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE;oBACrC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC/F,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC1F,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACpH,gBAAA,CAAC,CAAC;AACJ,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;YACpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACxD;IACF;;IAGQ,mBAAmB,GAAA;QACzB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW;AACpD,QAAA,IAAI,KAAK,IAAI,gBAAgB,KAAK,KAAK,EAAE;YACvC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;AAC/D,YAAA,IAAI,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE;QAC7B;IACF;AAEU,IAAA,eAAe,CAAC,KAAY,EAAA;QACpC,KAAK,CAAC,eAAe,EAAE;QACtB,KAAgB,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,cAAc;IAC3D;AAEU,IAAA,kBAAkB,CAAC,KAAmC,EAAA;QAC9D,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAa,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,2BAA2B,EAAE,EAAE,oBAAoB,EAAE;IAC5D;AAEU,IAAA,kCAAkC,CAAC,KAAmC,EAAA;AAC9E,QAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7C;AAEU,IAAA,mBAAmB,CAAC,KAAyB,EAAA;QACrD,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,EAAE;YAC1C;QACF;QACA,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,KAAK,MAAM,CAAC;IAC1C;IAEU,kBAAkB,CAAC,KAAY,EAAE,IAAyD,EAAA;QAClG,KAAK,CAAC,eAAe,EAAE;AACvB,QAAA,IAAI,IAAI,KAAK,QAAQ,EAAE;AACrB,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACzD;QACF;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM;QACxC,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,gBAAgB,EAAE,EAAE,UAAU,EAAE;AACrC,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;wGA3GW,iCAAiC,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAjC,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iCAAiC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,YAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB9C,+5VAkNA,EAAA,MAAA,EAAA,CAAA,u7EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,ED9LY,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sCAAsC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gCAAgC,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,8BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,8BAA8B,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,OAAA,EAAA,MAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,4BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,6BAA6B,w/BAAE,qCAAqC,EAAA,IAAA,EAAA,uCAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAExL,iCAAiC,EAAA,UAAA,EAAA,CAAA;kBAT7C,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,8BAA8B,cAG5B,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,WACtC,CAAC,SAAS,EAAE,sCAAsC,EAAE,gCAAgC,EAAE,8BAA8B,EAAE,6BAA6B,EAAE,qCAAqC,CAAC,EAAA,QAAA,EAAA,+5VAAA,EAAA,MAAA,EAAA,CAAA,u7EAAA,CAAA,EAAA;;;AEZ/L,MAAM,iBAAiB,GAAG,CAAC,SAA2B,EAAE,QAAgB,EAAE,UAAkB,EAAE,IAAW,EAAE,OAA4B,KAAqB;IACjK,OAAO;AACL,QAAA,IAAI,EAAE,MAAM;QACZ,eAAe,EAAE,MAAM,CAAqB;YAC1C,cAAc,EAAE,gBAAgB,CAC9B;AACG,iBAAA,KAAK;iBACL,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,eAAe;iBACxC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,CACzB;AACD,YAAA,YAAY,EAAE,gBAAgB;AAC9B,YAAA,cAAc,EAAE,EAAE;SACnB,CAAC;QACF,kBAAkB,EAAE,MAAM,CAAC;YACzB,QAAQ,EAAE,QAAQ,IAAI,KAAK;AAC3B,YAAA,YAAY,EAAE,MAAM,YAAY;AAChC,YAAA,SAAS,EAAE,QAAQ;AACnB,YAAA,mBAAmB,EAAE,IAAI;YACzB,IAAI,EAAE,qBAAqB,CAAC;AAC1B,gBAAA;AACE,oBAAA,SAAS,EAAE,mBAAmB;AAC9B,oBAAA,IAAI,EAAE;AACJ,wBAAA;AACE,4BAAA,UAAU,EAAE,CAAC,IAAe,KAAI;AAC9B,gCAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;oCACjB;gCACF;gCACA,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC;gCAClC,IAAI,SAAS,GAAG,6BAA6B;AAC7C,gCAAA,IAAI,IAAI,CAAC,OAAO,EAAE;oCAChB,SAAS,GAAG,+BAA+B;gCAC7C;AACA,gCAAA,IAAI,IAAI,CAAC,OAAO,IAAI,OAAO,EAAE;oCAC3B,SAAS,GAAG,6BAA6B;gCAC3C;gCACA,OAAO;AACL,oCAAA,YAAY,EAAE,MAAM;AACpB,oCAAA,QAAQ,EAAE;kIACsG,SAAS,CAAA;AACrH,oBAAA,EAAA,IAAI,KAAK,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,GAAG,CAAA,iDAAA,CAAmD,GAAG,CAAA,EAAG,IAAI,CAAA,CAAE;;AAEvG,kBAAA,CAAA;iCACF;4BACH,CAAC;AACF,yBAAA;AACD,wBAAA;AACE,4BAAA,UAAU,EAAE,CAAC,IAAe,MAAM,IAAI,CAAC,QAAQ,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,QAAQ,CAAA,2BAAA,CAA6B,EAAE,GAAG,SAAS,CAAC;AAC3J,yBAAA;AACD,wBAAA;AACE,4BAAA,WAAW,EAAE,CAAC,IAAe,KAAK,oBAAoB,IAAI,CAAC,OAAO,GAAG,iBAAiB,GAAG,gBAAgB,CAAA,CAAE;4BAC3G,QAAQ,EAAE,CAAC,IAA+B,KAAK,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;AAC/G,yBAAA;AACD,wBAAA;4BACE,UAAU,EAAE,CAAC,IAAe,MAAM,IAAI,CAAC,OAAO,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;AACvF,yBAAA;AACD,wBAAA;AACE,4BAAA,UAAU,EAAE,CAAC,IAAe,MAAM,IAAI,CAAC,SAAS,GAAG,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA,UAAA,EAAa,IAAI,CAAC,SAAS,CAAA,2BAAA,CAA6B,EAAE,GAAG,SAAS,CAAC;AAC7J,yBAAA;AACD,wBAAA;AACE,4BAAA,cAAc,EAAE,CAAC,IAAe,KAAI;AAClC,gCAAA,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oCACrB;gCACF;gCACA,OAAO;AACL,oCAAA,IAAI,EAAE,IAAI,CAAC,SAAS,IAAI,IAAI;oCAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;AACjB,oCAAA,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,EAAE;oCAC7B,WAAW,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,kBAAkB,KAAK,IAAI,CAAC,OAAO,GAAG,gCAAgC,GAAG,EAAE,CAAC;iCAC/G;4BACH,CAAC;AACF,yBAAA;AACF,qBAAA;AACF,iBAAA;aACF,CAAC;SACH,CAAC;KACH;AACH,CAAC;;MC9DY,6BAA6B,CAAA;;AAE9B,IAAA,YAAY,GAAG,MAAM,CAAmC,EAAE,CAAC;AAC3D,IAAA,eAAe,GAAG,MAAM,CAAU,KAAK,CAAC;AACxC,IAAA,iBAAiB,GAAG,QAAQ,CAAC,MAAM,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;AACtI,IAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AACnC,IAAA,SAAS,GAAG,MAAM,CAAS,IAAI,EAAE,CAAC;IAClC,8BAA8B,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;AAEtF,IAAA,2BAA2B,GAAG,MAAM,CAA2C,SAAS,CAAC;AACzF,IAAA,SAAS,GAAG,IAAI,OAAO,EAAQ;;AAG9B,IAAA,IAAI,GAAG,KAAK,CAAC,QAAQ,EAAS;AAC9B,IAAA,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAU;AACtC,IAAA,IAAI,GAAG,KAAK,CAAgB,MAAM,CAAC;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAS,KAAK,CAAC;AAC/B,IAAA,UAAU,GAAG,KAAK,CAAS,OAAO,CAAC;IACnC,OAAO,GAAG,KAAK,EAAW;IAC1B,YAAY,GAAG,KAAK,EAAW;AAC/B,IAAA,aAAa,GAAG,KAAK,CAAS,EAAE,CAAC;AACjC,IAAA,mBAAmB,GAAG,KAAK,CAAU,KAAK,CAAC;AAC3C,IAAA,IAAI,GAAG,KAAK,CAAsB,QAAQ,CAAC;IAC3C,qBAAqB,GAAG,KAAK,EAAW;IACxC,MAAM,GAAG,KAAK,EAAU;IACxB,SAAS,GAAG,KAAK,EAAiB;IAClC,sBAAsB,GAAG,KAAK,EAAY;IAC1C,yBAAyB,GAAG,KAAK,EAAoC;;IAGrE,cAAc,GAAG,MAAM,EAAU;IACjC,mBAAmB,GAAG,MAAM,EAA6B;IACzD,gBAAgB,GAAG,MAAM,EAAQ;IACjC,kBAAkB,GAAG,MAAM,EAAW;IACtC,SAAS,GAAG,MAAM,EAAkB;;AAG5B,IAAA,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAa,UAAU,CAAC;AACrD,IAAA,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAa,cAAc,CAAC;AAC7D,IAAA,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAa,eAAe,CAAC;;AAGxE,IAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE5C,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,EAAE;QAC1B,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;AACpD,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;YACxD,IAAI,CAAC,IAAI;AACN,iBAAA,KAAK;iBACL,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7E,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,IAAI;AACN,iBAAA,KAAK;AACL,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,CAC5C;YACD;QACF;AACA,QAAA,SAAS,CAAC,MAAM,EAAE,QAAQ;AACvB,aAAA,IAAI,CAACA,cAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;aACjD,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE;gBAC/B;YACF;AACA,YAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,yBAAyB,EAAE;AAClC,QAAA,CAAC,CAAC;AACJ,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAACA,cAAY,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACxH;;AAGA,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACxC,0BAA0B,EAAE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;YACrE,gBAAgB,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1D;IACH;IAEQ,mBAAmB,GAAA;AACzB,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB;QACF;AACA,QAAA,QAAQ,IAAI,CAAC,IAAI,EAAE;AACjB,YAAA,KAAK,MAAM;AACT,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACjB,oBAAA,KAAK,EAAE,qBAAqB;AAC5B,oBAAA,KAAK,EAAE,qBAAqB;AAC7B,iBAAA,CAAC;gBACF;AACF,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACjB,oBAAA,KAAK,EAAE,+BAA+B;AACtC,oBAAA,KAAK,EAAE,qBAAqB;AAC5B,oBAAA,MAAM,EAAE,qBAAqB;AAC9B,iBAAA,CAAC;gBACF;AACF,YAAA,KAAK,iBAAiB;AACpB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACjB,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,KAAK,EAAE,WAAW;AAClB,oBAAA,YAAY,EAAE,cAAc;AAC7B,iBAAA,CAAC;gBACF;AACF,YAAA,KAAK,eAAe;AAClB,gBAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;AACjB,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,KAAK,EAAE,SAAS;AAChB,oBAAA,YAAY,EAAE,QAAQ;AACvB,iBAAA,CAAC;gBACF;;IAEN;IAEQ,4BAA4B,GAAA;AAClC,QAAA,IAAI,IAAI,CAAC,qBAAqB,EAAE,EAAE;YAChC,OAAO;AACL,gBAAA;AACE,oBAAA,SAAS,EAAE,oCAAoC;AAC/C,oBAAA,MAAM,EAAE,EAAE;AACX,iBAAA;AACD,gBAAA;AACE,oBAAA,SAAS,EAAE,wBAAwB;AACnC,oBAAA,MAAM,EAAE,eAAe;AACxB,iBAAA;AACD,gBAAA;AACE,oBAAA,SAAS,EAAE,iCAAiC;AAC5C,oBAAA,MAAM,EAAE,oCAAoC;AAC7C,iBAAA;aACF;QACH;QACA,OAAO;AACL,YAAA;AACE,gBAAA,SAAS,EAAE,wBAAwB;AACnC,gBAAA,MAAM,EAAE,EAAE;AACX,aAAA;AACD,YAAA;AACE,gBAAA,SAAS,EAAE,gCAAgC;AAC3C,gBAAA,MAAM,EAAE,EAAE;AACX,aAAA;SACF;IACH;AAEU,IAAA,oBAAoB,CAAC,KAAY,EAAA;AACzC,QAAA,MAAM,EAAE,YAAY,EAAE,GAAG,KAAK;QAC9B,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;QACA,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK;AAC/B,QAAA,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,YAAY;AAC7C,QAAA,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,SAAS,EAAE;YACnE;QACF;AACA,QAAA,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,SAAmB,CAAC;AAC7C,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;AACrB,YAAA,KAAK,CAAC,MAAM,CAAC,SAAmB,EAAE,CAAC,CAAC;YACpC,KAAK,CAAC,MAAM,CAAC,SAAmB,EAAE,CAAC,EAAE,QAAQ,CAAC;AAC9C,YAAA,OAAO,CAAC,GAAG,KAAK,CAAC;AACnB,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;IAC9B;AAEU,IAAA,kCAAkC,CAAC,KAAmC,EAAA;AAC9E,QAAA,IAAI,CAAC,2BAA2B,CAAC,GAAG,CAAC,KAAK,CAAC;IAC7C;AAEQ,IAAA,MAAM,uBAAuB,CAAC,GAAW,EAAE,YAAY,GAAG,IAAI,EAAA;AACpE,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI;AAC3B,aAAA,KAAK;AACL,aAAA,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,GAAG,CAAC;QAClD,IAAI,CAAC,YAAY,EAAE;YACjB;QACF;QACA,IAAI,YAAY,EAAE;AAChB,YAAA,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D;AACA,QAAA,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC;IACrC;AAEU,IAAA,kBAAkB,CAAC,KAAmC,EAAA;QAC9D,IAAI,CAAC,KAAK,EAAE;YACV;QACF;QACA,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACxD,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;IAC9B;IAEU,MAAM,gBAAgB,CAAC,IAA+B,EAAA;QAC9D,IAAI,IAAI,EAAE,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE;YACpC;QACF;AACA,QAAA,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,EAAE;QAClE,IAAI,yBAAyB,EAAE;AAC7B,YAAA,MAAM,KAAK,GAAG,MAAM,yBAAyB,EAAE;YAC/C,IAAI,KAAK,EAAE;AACT,gBAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC/B;YACA;QACF;AACA,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IAC/B;AAEQ,IAAA,kBAAkB,CAAC,IAA+B,EAAA;AACxD,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5C,QAAA,IAAI,CAAC,2BAA2B,EAAE,EAAE,oBAAoB,EAAE;QAC1D,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEU,MAAM,aAAa,CAAC,KAAqB,EAAA;AACjD,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IAC5B;IAEQ,MAAM,WAAW,CAAC,IAA+B,EAAE,QAAQ,GAAG,IAAI,EAAE,QAAkB,EAAA;QAC5F,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK;AAC/B,QAAA,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,KAAI;YACrB,IAAI,QAAQ,EAAE;AACZ,gBAAA,OAAO,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC;YACzB;AACA,YAAA,OAAO,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC;AACzB,QAAA,CAAC,CAAC;QACF,IAAI,QAAQ,EAAE;AACZ,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC;QAC7B;IACF;AAEU,IAAA,MAAM,yBAAyB,GAAA;QACvC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE;QAC/B,MAAM,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC;AACnG,QAAA,IAAI,iBAAiB,GAAG,CAAC,EAAE;YACzB;QACF;AACA,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC;QAC/B,IAAI,eAAe,GAAG,KAAK;AAC3B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC;AAClE,QAAA,MAAM,YAAY,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAC7C,QAAA,MAAM,iBAAiB,GAAG,YAAY,EAAE,CAAC,aAAa;AACtD,QAAA,IAAI,sBAAsB,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE,CAAC,aAAa,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,EAAE;QAC9I,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC5B,YAAA,IAAI,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE;gBACzB;YACF;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC;YAC5D,MAAM,SAAS,GAAG,IAAI,EAAE,CAAC,aAAa,IAAI,CAAC;AAC3C,YAAA,MAAM,KAAK,GAAG,sBAAsB,GAAG,SAAS,IAAI,KAAK,GAAG,iBAAiB,GAAG,iBAAiB,GAAG,CAAC,CAAC;YACtG,sBAAsB,IAAI,SAAS;AACnC,YAAA,IAAI,KAAK,GAAG,WAAW,EAAE;gBACvB,eAAe,GAAG,IAAI;gBACtB;YACF;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7D,QAAA,CAAC,CAAC;AACF,QAAA,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;AACnE,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,eAAe,KAAK,IAAI,CAAC;AACvE,QAAA,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,eAAe,KAAK,KAAK,CAAC;AAC3E,QAAA,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC;AAClC,QAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,eAAe,CAAC;QACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,GAAG,CACnB,IAAI,CAAC,IAAI;AACN,aAAA,KAAK;AACL,aAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,eAAe,CAAC,CAC5C;IACH;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;IAC3B;wGA9QW,6BAA6B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAA7B,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,6BAA6B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,SAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,qBAAA,EAAA,EAAA,iBAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,sBAAA,EAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,yBAAA,EAAA,EAAA,iBAAA,EAAA,2BAAA,EAAA,UAAA,EAAA,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,UAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,UAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,eAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtB1C,o/LAqIA,EAAA,MAAA,EAAA,CAAA,+iBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDjHY,sCAAsC,EAAA,QAAA,EAAA,0CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,MAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,uBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,0BAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,uBAAuB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,MAAA,EAAA,8BAAA,EAAA,kCAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,uCAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gCAAgC,EAAA,QAAA,EAAA,+DAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,MAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,6BAAA,EAAA,cAAA,EAAA,0CAAA,EAAA,4BAAA,EAAA,kCAAA,EAAA,8BAAA,EAAA,oBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,wBAAA,EAAA,wBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sCAAsC,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,cAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,cAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,4BAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,eAAA,EAAA,aAAA,EAAA,yBAAA,EAAA,+BAAA,EAAA,oBAAA,EAAA,UAAA,EAAA,mCAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,EAAA,iBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iCAAiC,qSAAE,6BAA6B,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,cAAA,EAAA,aAAA,EAAA,cAAA,EAAA,eAAA,EAAA,qBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,yBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,aAAA,EAAA,aAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,2CAAA,EAAA,6BAAA,EAAA,eAAA,EAAA,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,kCAAA,EAAA,iDAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,+BAAA,EAAA,sBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;4FAE1M,6BAA6B,EAAA,UAAA,EAAA,CAAA;kBATzC,SAAS;AAEE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,IAAI,EAAA,eAAA,EACC,uBAAuB,CAAC,MAAM,WACtC,CAAC,sCAAsC,EAAE,uBAAuB,EAAE,gCAAgC,EAAE,sCAAsC,EAAE,iCAAiC,EAAE,6BAA6B,CAAC,EAAA,QAAA,EAAA,o/LAAA,EAAA,MAAA,EAAA,CAAA,+iBAAA,CAAA,EAAA;;;AEpBxN;;AAEG;;;;"}
package/package.json CHANGED
@@ -1,19 +1,19 @@
1
1
  {
2
2
  "name": "@libs-ui/components-tabs",
3
- "version": "0.2.329-0",
3
+ "version": "0.2.331-0",
4
4
  "peerDependencies": {
5
5
  "@angular/core": ">=18.0.0",
6
- "@libs-ui/components-badge": "0.2.329-0",
7
- "@libs-ui/components-buttons-button": "0.2.329-0",
8
- "@libs-ui/components-list": "0.2.329-0",
9
- "@libs-ui/components-popover": "0.2.329-0",
6
+ "@libs-ui/components-badge": "0.2.331-0",
7
+ "@libs-ui/components-buttons-button": "0.2.331-0",
8
+ "@libs-ui/components-list": "0.2.331-0",
9
+ "@libs-ui/components-popover": "0.2.331-0",
10
10
  "rxjs": "~7.8.0",
11
- "@libs-ui/interfaces-types": "0.2.329-0",
12
- "@libs-ui/utils": "0.2.329-0",
11
+ "@libs-ui/interfaces-types": "0.2.331-0",
12
+ "@libs-ui/utils": "0.2.331-0",
13
13
  "@ngx-translate/core": "^15.0.0",
14
- "@libs-ui/pipes-call-function-in-template": "0.2.329-0",
15
- "@libs-ui/components-drag-drop": "0.2.329-0",
16
- "@libs-ui/services-http-request": "0.2.329-0"
14
+ "@libs-ui/pipes-call-function-in-template": "0.2.331-0",
15
+ "@libs-ui/components-drag-drop": "0.2.331-0",
16
+ "@libs-ui/services-http-request": "0.2.331-0"
17
17
  },
18
18
  "sideEffects": false,
19
19
  "module": "fesm2022/libs-ui-components-tabs.mjs",