{"version":3,"file":"ironsource-fusion-ui-components-multi-dropdown-common-base.mjs","sources":["../../../projects/fusion-ui/components/multi-dropdown/common/base/multi-dropdown.base.component.ts","../../../projects/fusion-ui/components/multi-dropdown/common/base/ironsource-fusion-ui-components-multi-dropdown-common-base.ts"],"sourcesContent":["import {Directive, Input, OnChanges, OnInit, TemplateRef} from '@angular/core';\nimport {DROPDOWN_OPTIONS_WITHOUT_SCROLL, DropdownBaseComponent} from '@ironsource/fusion-ui/components/dropdown/common/base';\nimport {DropdownOption} from '@ironsource/fusion-ui/components/dropdown-option/entities';\nimport {Observable} from 'rxjs';\nimport {map, startWith, takeUntil} from 'rxjs/operators';\nimport {isNullOrUndefined} from '@ironsource/fusion-ui/utils';\n\n@Directive()\nexport abstract class MultiDropdownBaseComponent extends DropdownBaseComponent implements OnInit, OnChanges {\n    /** @ignore */\n    @Input() confirm = true;\n    /** @ignore */\n    @Input() selectAllLabel: string;\n    /** @ignore */\n    @Input() templateRef: TemplateRef<any>; // todo: rename it to optionTemplate ref. Just in use in demand\n    /** @ignore */\n    tempSelected: DropdownOption[];\n    /** @ignore */\n    tempOptions: DropdownOption[];\n    /** @ignore */\n    optionsWithoutScroll = DROPDOWN_OPTIONS_WITHOUT_SCROLL;\n    /** @ignore */\n    hasSearchValue$: Observable<boolean> = new Observable<boolean>();\n    /** @ignore */\n    showSelectedFirst: boolean = false;\n    @Input() testId: string;\n\n    get isMulti(): boolean {\n        return true;\n    }\n\n    ngOnInit() {\n        this.id = `is-multi-dropdown-${this.uniqueIdService.getUniqueId()}`;\n        this.tempSelected = this.selected || [];\n        this.tempOptions = this.cloneArray(this.options);\n        // if has \"select all\"\n        this.optionsWithoutScroll = this.selectAllLabel ? this.optionsWithoutScroll - 1 : this.optionsWithoutScroll;\n        // if has \"search\"\n        this.optionsWithoutScroll = this.search || this.autoComplete ? this.optionsWithoutScroll - 1 : this.optionsWithoutScroll;\n        super.ngOnInit();\n\n        this.hasSearchValue$ = this.searchValue.valueChanges.pipe(\n            takeUntil(this.onDestroy$),\n            startWith(false),\n            map(searchValue => !!searchValue)\n        );\n\n        this.resetState$\n            .asObservable()\n            .pipe(takeUntil(this.onDestroy$))\n            .subscribe(_ => {\n                this.applySelect(true, false);\n            });\n    }\n\n    /**\n     * Relevant only for auto complete mode.\n     * If options changed outside compoenent we need to update tempOptions to\n     * be the new options\n     */\n    ngOnChanges(changes) {\n        if (changes.options && changes.options.currentValue !== changes.options.previousValue) {\n            this.tempOptions = changes.options.currentValue;\n            if (!changes.options.firstChange) {\n                this.tempSelected = this.cloneArray(this.selected);\n                this.isInSelectAllAction();\n                super.setLabel();\n            }\n        }\n        this.dropdownSelectConfigurations$.next(this.getDropdownSelectConfigurations());\n    }\n\n    /** @ignore */\n    getHolderCSSClasses(): string[] {\n        return [...super.getHolderCSSClasses(), ...[this.confirm && 'is-with-confirm']].filter(Boolean);\n    }\n\n    /** @ignore */\n    getOptionClasses(option: DropdownOption, index?: number) {\n        const isGroup = this.isGroupOption(option);\n        const hideGroup = this.showSelectedFirst && isGroup ? this.hideGroup(index) : false;\n\n        return {\n            [option.class]: option.class,\n            'fu-group': isGroup,\n            'fu-group-first': isGroup && index === 0,\n            'fu-group-hide': hideGroup\n        };\n    }\n\n    /**\n     * Open dropdown windows\n     * @internal\n     */\n    openDropdown(event: MouseEvent) {\n        this.tempSelected = this.cloneArray(this.selected);\n        super.openDropdown(event);\n        this.isInSelectAllAction();\n    }\n\n    /**\n     * Set to clear / select all by the given default action button\n     * @internal\n     */\n    selectAll(checked?: boolean) {\n        if (checked) {\n            this.tempOptions.forEach(option => {\n                if (option.childOptions || option.isGroup) {\n                    option.childOptions?.forEach(child => {\n                        child.checked = true;\n                    });\n                } else {\n                    option.checked = true;\n                }\n            });\n            this.tempSelected = this.cloneArray(\n                this.tempOptions.reduce((acc, option) => {\n                    if (option.childOptions || option.isGroup) {\n                        option.childOptions?.forEach(option => {\n                            if (option.checked) {\n                                acc.push(option);\n                            }\n                        });\n                    } else {\n                        if (option.checked) {\n                            acc.push(option);\n                        }\n                    }\n                    return acc;\n                }, [])\n            );\n        } else {\n            this.tempSelected = [];\n            this.tempOptions.forEach(option => {\n                if (option.childOptions || option.isGroup) {\n                    option.childOptions?.forEach(child => {\n                        child.checked = false;\n                    });\n                } else {\n                    option.checked = false;\n                }\n            });\n        }\n        this.isInSelectAllAction();\n        if (!this.confirm) {\n            this.applySelect();\n        }\n    }\n\n    clearAll() {\n        this.selectAll(false);\n    }\n\n    /**\n     * Saving selected options\n     * @internal\n     */\n    applySelect(close = false, doSelectedChanged = true): void {\n        this.selected = this.tempSelected;\n\n        if (this.showSelectedFirst && this.selected.length && this.isIndeterminate) {\n            this.options = this.getSelectedOptionsFirst();\n        } else {\n            this.options = this.tempOptions;\n        }\n        if (doSelectedChanged) {\n            this.setLabel();\n            this.selectedChange.emit(\n                this.selected.map(item => {\n                    item.isSelected = true;\n                    return item;\n                })\n            );\n            this.propagateChange(this.selected);\n        }\n\n        if (close) {\n            this.closeDropdown();\n        }\n    }\n\n    /**\n     * select / remove option from selected list\n     * @internal\n     */\n    changeSelected(option): void {\n        const objSelectedIndex = this.getSelectedIndex(option);\n        if (objSelectedIndex > -1) {\n            this.tempSelected.splice(objSelectedIndex, 1);\n        } else {\n            this.tempSelected.push(option);\n        }\n        this.isInSelectAllAction();\n        if (!this.confirm) {\n            this.applySelect();\n        }\n    }\n\n    /** @ignore */\n    isSelected(option: DropdownOption): boolean {\n        return this.tempSelected && this.tempSelected.findIndex(item => item.id === option.id) !== -1;\n    }\n\n    /**\n     * Check if dropdown is in default button mode.\n     * If all options selected Or if none of the options selected.\n     * @internal\n     */\n    isInSelectAllAction() {\n        const tempOptionsList = this.tempOptions.reduce((acc, option) => {\n            if (option.childOptions || option.isGroup) {\n                option.childOptions?.forEach(option => {\n                    acc.push(option);\n                });\n            } else {\n                acc.push(option);\n            }\n            return acc;\n        }, []);\n\n        this.isAllSelected = tempOptionsList.length === this.tempSelected.length;\n        this.isIndeterminate = this.tempSelected.length !== 0 && this.tempSelected.length !== tempOptionsList.length;\n    }\n\n    /**\n     * @returns number - index of selected in options array or -1 if not selected\n     * @internal\n     */\n    getSelectedIndex(option) {\n        let optionSelectedIndex = -1;\n        let selectedList = this.confirm ? this.tempSelected : this.selected;\n        selectedList = selectedList || []; // when page did not loaded yet selectedList is undefined\n        selectedList.forEach((selectedOption, index) => {\n            if (selectedOption[this.mappingOptions.id] === option[this.mappingOptions.id]) {\n                optionSelectedIndex = index;\n            }\n        });\n\n        return optionSelectedIndex;\n    }\n\n    /** @ignore */\n    optionParentClicked($event, targetClass?: string, stateClass?: string) {\n        const targetEl = $event.currentTarget;\n        const targetClassList = targetEl.classList;\n        if (targetClassList.contains(targetClass || 'is-has-children')) {\n            if (targetClassList.contains(stateClass || 'is-open')) {\n                this.renderer.removeClass(targetEl, stateClass || 'is-open');\n            } else {\n                this.renderer.addClass(targetEl, stateClass || 'is-open');\n            }\n        }\n    }\n\n    /**\n     * selects all children in case of parent selection (relevant only to V4)\n     * @ignore\n     */\n    handleChildrenChange(options: DropdownOption[]): void {\n        const isAllSameValue = this.checkAllOptionsHaveSameSelectedValue(options);\n        const isIndeterminate = this.getIsParentIndeterminate(options);\n        options.forEach(option => {\n            if (isAllSameValue || (isIndeterminate && !this.isSelected(option))) {\n                this.changeSelected(option);\n            }\n        });\n    }\n    /**\n     * get parent indeterminate state (relevant only to V4)\n     * @ignore\n     */\n    getIsParentIndeterminate(options: DropdownOption[]): boolean {\n        const isSomeChecked = options.some(this.isSelected.bind(this));\n        const isAllChecked = this.getIsAllChildrenChecked(options);\n        return isSomeChecked && !isAllChecked;\n    }\n    /**\n     * get parent checked indeterminate state (relevant only to V4)\n     * @ignore\n     */\n    getIsAllChildrenChecked(options: DropdownOption[]): boolean {\n        return options.every(this.isSelected.bind(this));\n    }\n    private checkAllOptionsHaveSameSelectedValue(options: DropdownOption[]): boolean {\n        const firstValue = this.isSelected(options[0]);\n        return options.every(option => this.isSelected(option) === firstValue);\n    }\n\n    /**\n     * copy arrays without reference\n     */\n    private cloneArray(array) {\n        return [...array];\n    }\n\n    private isGroupOption(option: DropdownOption) {\n        return option.isGroup && !option.childOptions;\n    }\n\n    private hideGroup(index: number): boolean {\n        const nextOption = this.displayedOptions$.getValue()[index + 1];\n        return (!isNullOrUndefined(nextOption) && this.isGroupOption(nextOption)) || isNullOrUndefined(nextOption);\n    }\n\n    private getSelectedOptionsFirst(): DropdownOption[] {\n        return [...this.tempOptions].sort((a, b) => {\n            const isASelected = this.selected.includes(a);\n            const isBSelected = this.selected.includes(b);\n            return isASelected === isBSelected ? 0 : isASelected ? -1 : 1;\n        });\n    }\n\n    /** @ignore */\n    writeValue(value: any): void {\n        super.writeValue(value);\n        this.tempSelected = this.selected;\n        this.isInSelectAllAction();\n        super.setLabel();\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;;AAQM,MAAgB,0BAA2B,SAAQ,qBAAqB,CAAA;AAD9E,IAAA,WAAA,GAAA;;;QAGa,IAAO,CAAA,OAAA,GAAG,IAAI,CAAC;;QAUxB,IAAoB,CAAA,oBAAA,GAAG,+BAA+B,CAAC;;AAEvD,QAAA,IAAA,CAAA,eAAe,GAAwB,IAAI,UAAU,EAAW,CAAC;;QAEjE,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AAuStC,KAAA;AApSG,IAAA,IAAI,OAAO,GAAA;AACP,QAAA,OAAO,IAAI,CAAC;KACf;IAED,QAAQ,GAAA;QACJ,IAAI,CAAC,EAAE,GAAG,CAAqB,kBAAA,EAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAA,CAAE,CAAC;QACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;QAEjD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;;QAE5G,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzH,KAAK,CAAC,QAAQ,EAAE,CAAC;AAEjB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CACrD,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,EAC1B,SAAS,CAAC,KAAK,CAAC,EAChB,GAAG,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,CACpC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW;AACX,aAAA,YAAY,EAAE;AACd,aAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAChC,SAAS,CAAC,CAAC,IAAG;AACX,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;KACV;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,OAAO,EAAA;AACf,QAAA,IAAI,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE;YACnF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC;AAChD,YAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE;gBAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACnD,IAAI,CAAC,mBAAmB,EAAE,CAAC;gBAC3B,KAAK,CAAC,QAAQ,EAAE,CAAC;AACpB,aAAA;AACJ,SAAA;QACD,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC;KACnF;;IAGD,mBAAmB,GAAA;QACf,OAAO,CAAC,GAAG,KAAK,CAAC,mBAAmB,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACnG;;IAGD,gBAAgB,CAAC,MAAsB,EAAE,KAAc,EAAA;QACnD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;QAEpF,OAAO;AACH,YAAA,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK;AAC5B,YAAA,UAAU,EAAE,OAAO;AACnB,YAAA,gBAAgB,EAAE,OAAO,IAAI,KAAK,KAAK,CAAC;AACxC,YAAA,eAAe,EAAE,SAAS;SAC7B,CAAC;KACL;AAED;;;AAGG;AACH,IAAA,YAAY,CAAC,KAAiB,EAAA;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnD,QAAA,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC9B;AAED;;;AAGG;AACH,IAAA,SAAS,CAAC,OAAiB,EAAA;AACvB,QAAA,IAAI,OAAO,EAAE;AACT,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,IAAG;AAC9B,gBAAA,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE;AACvC,oBAAA,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,IAAG;AACjC,wBAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;AACzB,qBAAC,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AACzB,iBAAA;AACL,aAAC,CAAC,CAAC;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,UAAU,CAC/B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;AACpC,gBAAA,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE;AACvC,oBAAA,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,IAAG;wBAClC,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,4BAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpB,yBAAA;AACL,qBAAC,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;oBACH,IAAI,MAAM,CAAC,OAAO,EAAE;AAChB,wBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpB,qBAAA;AACJ,iBAAA;AACD,gBAAA,OAAO,GAAG,CAAC;AACf,aAAC,EAAE,EAAE,CAAC,CACT,CAAC;AACL,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,IAAG;AAC9B,gBAAA,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE;AACvC,oBAAA,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,IAAG;AACjC,wBAAA,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1B,qBAAC,CAAC,CAAC;AACN,iBAAA;AAAM,qBAAA;AACH,oBAAA,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAC1B,iBAAA;AACL,aAAC,CAAC,CAAC;AACN,SAAA;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;KACJ;IAED,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KACzB;AAED;;;AAGG;AACH,IAAA,WAAW,CAAC,KAAK,GAAG,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAAA;AAC/C,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;AAElC,QAAA,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,EAAE;AACxE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;AACjD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;AACnC,SAAA;AACD,QAAA,IAAI,iBAAiB,EAAE;YACnB,IAAI,CAAC,QAAQ,EAAE,CAAC;AAChB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAG;AACrB,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,gBAAA,OAAO,IAAI,CAAC;aACf,CAAC,CACL,CAAC;AACF,YAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACvC,SAAA;AAED,QAAA,IAAI,KAAK,EAAE;YACP,IAAI,CAAC,aAAa,EAAE,CAAC;AACxB,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,cAAc,CAAC,MAAM,EAAA;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;AACvD,QAAA,IAAI,gBAAgB,GAAG,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;AACjD,SAAA;AAAM,aAAA;AACH,YAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,SAAA;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACf,IAAI,CAAC,WAAW,EAAE,CAAC;AACtB,SAAA;KACJ;;AAGD,IAAA,UAAU,CAAC,MAAsB,EAAA;QAC7B,OAAO,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;KACjG;AAED;;;;AAIG;IACH,mBAAmB,GAAA;AACf,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,KAAI;AAC5D,YAAA,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE;AACvC,gBAAA,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,MAAM,IAAG;AAClC,oBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACrB,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpB,aAAA;AACD,YAAA,OAAO,GAAG,CAAC;SACd,EAAE,EAAE,CAAC,CAAC;AAEP,QAAA,IAAI,CAAC,aAAa,GAAG,eAAe,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACzE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,CAAC;KAChH;AAED;;;AAGG;AACH,IAAA,gBAAgB,CAAC,MAAM,EAAA;AACnB,QAAA,IAAI,mBAAmB,GAAG,CAAC,CAAC,CAAC;AAC7B,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;AACpE,QAAA,YAAY,GAAG,YAAY,IAAI,EAAE,CAAC;QAClC,YAAY,CAAC,OAAO,CAAC,CAAC,cAAc,EAAE,KAAK,KAAI;AAC3C,YAAA,IAAI,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;gBAC3E,mBAAmB,GAAG,KAAK,CAAC;AAC/B,aAAA;AACL,SAAC,CAAC,CAAC;AAEH,QAAA,OAAO,mBAAmB,CAAC;KAC9B;;AAGD,IAAA,mBAAmB,CAAC,MAAM,EAAE,WAAoB,EAAE,UAAmB,EAAA;AACjE,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AACtC,QAAA,MAAM,eAAe,GAAG,QAAQ,CAAC,SAAS,CAAC;QAC3C,IAAI,eAAe,CAAC,QAAQ,CAAC,WAAW,IAAI,iBAAiB,CAAC,EAAE;YAC5D,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,IAAI,SAAS,CAAC,EAAE;gBACnD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC;AAChE,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC;AAC7D,aAAA;AACJ,SAAA;KACJ;AAED;;;AAGG;AACH,IAAA,oBAAoB,CAAC,OAAyB,EAAA;QAC1C,MAAM,cAAc,GAAG,IAAI,CAAC,oCAAoC,CAAC,OAAO,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC/D,QAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;AACrB,YAAA,IAAI,cAAc,KAAK,eAAe,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE;AACjE,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AAC/B,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AACD;;;AAGG;AACH,IAAA,wBAAwB,CAAC,OAAyB,EAAA;AAC9C,QAAA,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC3D,QAAA,OAAO,aAAa,IAAI,CAAC,YAAY,CAAC;KACzC;AACD;;;AAGG;AACH,IAAA,uBAAuB,CAAC,OAAyB,EAAA;AAC7C,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACpD;AACO,IAAA,oCAAoC,CAAC,OAAyB,EAAA;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/C,QAAA,OAAO,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,UAAU,CAAC,CAAC;KAC1E;AAED;;AAEG;AACK,IAAA,UAAU,CAAC,KAAK,EAAA;AACpB,QAAA,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;KACrB;AAEO,IAAA,aAAa,CAAC,MAAsB,EAAA;QACxC,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;KACjD;AAEO,IAAA,SAAS,CAAC,KAAa,EAAA;AAC3B,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AAChE,QAAA,OAAO,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,iBAAiB,CAAC,UAAU,CAAC,CAAC;KAC9G;IAEO,uBAAuB,GAAA;AAC3B,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAI;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,WAAW,KAAK,WAAW,GAAG,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAClE,SAAC,CAAC,CAAC;KACN;;AAGD,IAAA,UAAU,CAAC,KAAU,EAAA;AACjB,QAAA,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;QAClC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,KAAK,CAAC,QAAQ,EAAE,CAAC;KACpB;AAtTiB,IAAA,SAAA,IAAA,CAAA,IAAA,iBAAA,CAAA,MAAA,EAAA,IAAA,uCAAA,CAAA,CAAA,OAAA,SAAA,kCAAA,CAAA,CAAA,EAAA,EAAA,OAAA,CAAA,uCAAA,KAAA,uCAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,0BAA0B,SAA1B,0BAA0B,CAAA,CAAA,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA;oEAA1B,0BAA0B,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,0BAAA,EAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,CAAA,EAAA;;iFAA1B,0BAA0B,EAAA,CAAA;cAD/C,SAAS;gBAGG,OAAO,EAAA,CAAA;kBAAf,KAAK;YAEG,cAAc,EAAA,CAAA;kBAAtB,KAAK;YAEG,WAAW,EAAA,CAAA;kBAAnB,KAAK;YAWG,MAAM,EAAA,CAAA;kBAAd,KAAK;;;ACzBV;;AAEG;;;;"}