@wizishop/img-manager 15.2.11 → 15.2.13

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.
@@ -1 +1 @@
1
- {"version":3,"file":"wizishop-img-manager.mjs","sources":["../../../../projects/wz-img-manager/src/lib/services/img-selection.service.ts","../../../../projects/wz-img-manager/src/lib/services/user-settings.service.ts","../../../../projects/wz-img-manager/src/lib/services/img-event.service.ts","../../../../projects/wz-img-manager/src/lib/services/alert.service.ts","../../../../projects/wz-img-manager/src/lib/services/api.service.ts","../../../../projects/wz-img-manager/src/lib/services/upload.service.ts","../../../../projects/wz-img-manager/src/lib/services/canva.service.ts","../../../../projects/wz-img-manager/src/lib/services/dom.service.ts","../../../../projects/wz-img-manager/src/lib/animations/easeInOut/ease-in-out.animation.ts","../../../../projects/wz-img-manager/src/lib/components/loader/loader.component.ts","../../../../projects/wz-img-manager/src/lib/components/loader/loader.component.html","../../../../projects/wz-img-manager/src/lib/directives/drag-drop.directive.ts","../../../../projects/wz-img-manager/src/lib/components/img-upload/img-upload.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-upload/img-upload.component.html","../../../../projects/wz-img-manager/src/lib/animations/listAnnimation/list.animation.ts","../../../../projects/wz-img-manager/src/lib/services/pexels.service.ts","../../../../projects/wz-img-manager/src/lib/directives/abstract-debounce/abstract-debounce.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/abstract-debounce/debounce-keyup.directive.ts","../../../../projects/wz-img-manager/src/lib/components/shared/input-search/input-search.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/input-search/input-search.component.html","../../../../projects/wz-img-manager/src/lib/components/shared/alert/alert.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/alert/alert.component.html","../../../../projects/wz-img-manager/src/lib/directives/loading.directive.ts","../../../../projects/wz-img-manager/src/lib/components/pexels-lib/pexels-lib.component.ts","../../../../projects/wz-img-manager/src/lib/components/pexels-lib/pexels-lib.component.html","../../../../projects/wz-img-manager/src/lib/services/rename-picture.service.ts","../../../../projects/wz-img-manager/src/lib/services/img-manager.service.ts","../../../../projects/wz-img-manager/src/lib/services/config/img-cdn.service.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/images-actions-handler.ts","../../../../projects/wz-img-manager/src/lib/pipes/images/img-src.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/img-card/img-card.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/img-card/img-card.component.html","../../../../projects/wz-img-manager/src/lib/components/upload-list/upload-list.component.ts","../../../../projects/wz-img-manager/src/lib/components/upload-list/upload-list.component.html","../../../../projects/wz-img-manager/src/lib/directives/copy-to-clipboard.directive.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/info-section/info-section.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/info-section/info-section.component.html","../../../../projects/wz-img-manager/src/lib/animations/insertRemove/insert-remove.animation.ts","../../../../projects/wz-img-manager/src/lib/components/shared/dropdown/dropdown.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/dropdown/dropdown.component.html","../../../../projects/wz-img-manager/src/lib/components/img-editor/cropper/cropper.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/cropper/cropper.component.html","../../../../projects/wz-img-manager/src/lib/components/img-editor/img-editor.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/img-editor.component.html","../../../../projects/wz-img-manager/src/lib/directives/auto-hide.directive.ts","../../../../projects/wz-img-manager/src/lib/components/canva-btn/canva-btn.component.ts","../../../../projects/wz-img-manager/src/lib/components/canva-btn/canva-btn.component.html","../../../../projects/wz-img-manager/src/lib/pipes/pagination/total-pages/is-last-page.pipe.ts","../../../../projects/wz-img-manager/src/lib/pipes/pagination/array-total-pages/array-pages.pipe.ts","../../../../projects/wz-img-manager/src/lib/pipes/pagination/large-number-of-page/large-number-of-page.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/page-selector/page-selector.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/page-selector/page-selector.component.html","../../../../projects/wz-img-manager/src/lib/pipes/pagination/text/custom-text.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/pagination.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/pagination.component.html","../../../../projects/wz-img-manager/src/lib/pipes/number-to-array.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/mosaic-view.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/mosaic-view.component.html","../../../../projects/wz-img-manager/src/lib/services/table/filters-table.service.ts","../../../../projects/wz-img-manager/src/lib/components/shared/checkbox/checkbox.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/checkbox/checkbox.component.html","../../../../projects/wz-img-manager/src/lib/components/shared/table/table.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/table/table.component.html","../../../../projects/wz-img-manager/src/lib/directives/table/column.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/table/checkBoxRow.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/table/columnHeader.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/table/raw.directive.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/table-view/table-view.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/table-view/table-view.component.html","../../../../projects/wz-img-manager/src/lib/components/images-view/images-view.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/images-view.component.html","../../../../projects/wz-img-manager/src/lib/directives/zindex-toggle.directive.ts","../../../../projects/wz-img-manager/src/lib/pipes/select/select-filters.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/shared/select/select.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/select/select.component.html","../../../../projects/wz-img-manager/src/lib/components/img-tabs/img-tabs.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-tabs/img-tabs.component.html","../../../../projects/wz-img-manager/src/lib/components/img-selection/img-selection.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-selection/img-selection.component.html","../../../../projects/wz-img-manager/src/lib/wz-img-manager.component.ts","../../../../projects/wz-img-manager/src/lib/wz-img-manager.component.html","../../../../projects/wz-img-manager/src/lib/services/snackbar.service.ts","../../../../projects/wz-img-manager/src/lib/wz-img-manager.module.ts","../../../../projects/wz-img-manager/src/lib/dto/canva.dto.ts","../../../../projects/wz-img-manager/src/lib/dto/config/apis/api.dto.ts","../../../../projects/wz-img-manager/src/lib/dto/config/external/external-config.dto.ts","../../../../projects/wz-img-manager/src/public-api.ts","../../../../projects/wz-img-manager/src/wizishop-img-manager.ts"],"sourcesContent":["import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\nimport { BehaviorSubject } from 'rxjs';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Injectable()\nexport class ImgSelectionService {\n\n multipleImgMode: boolean = false;\n imgSelection$: BehaviorSubject<ImgPictureDTO[]> = new BehaviorSubject<ImgPictureDTO[]>([]);\n imgSelectedListLoading$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n constructor() {}\n\n getImgSelection() {\n return this.imgSelection$.getValue();\n }\n\n // Use in img manager webelement, when the product img selection is retrieved\n setImgSelection(imgSelectedList: ImgPictureDTO[]) {\n this.imgSelection$.next(imgSelectedList || []);\n }\n\n addImgSelected(picture : ImgPictureDTO) {\n if (this.multipleImgMode) {\n this.imgSelection$.next([...this.imgSelection$.getValue(), picture]);\n } else {\n this.imgSelection$.next([picture]);\n }\n }\n\n removeImgSelectedByIndex(index: number) {\n const imgSelectedList = this.imgSelection$.getValue();\n imgSelectedList.splice(index, 1);\n this.imgSelection$.next(imgSelectedList);\n\n }\n\n removeImgSelectedById(id_file: string) {\n if (!this.multipleImgMode) {\n this.imgSelection$.next([]);\n return;\n }\n this.imgSelection$.next(this.imgSelection$.getValue().filter(img => img.id_file !== id_file));\n }\n\n removeImgSelectionByIds(id_file_list: string[]) {\n if (!this.multipleImgMode) {\n this.imgSelection$.next([]);\n return;\n }\n this.imgSelection$.next(this.imgSelection$.getValue().filter(img => id_file_list.includes(img.id_file)));\n }\n\n removeAllImgSelected() { // TODO test it\n this.imgSelection$.next([]);\n }\n\n setMultipleImgMode(activated: boolean) {\n this.multipleImgMode = activated;\n }\n\n initImgSelectedList(imgSelectedList: ImgPictureDTO[]) {\n // Retrieve the imgSelectedList from parameter\n if (imgSelectedList) {\n this.imgSelection$.next(imgSelectedList);\n return;\n }\n this.imgSelection$.next([]);\n }\n\n /**\n * Use angular cdk function\n * Called by img selection component\n * @param event\n */\n moveImgOrder(event: CdkDragDrop<string[]>) {\n const fromIndex = event.previousIndex;\n const toIndex = event.currentIndex;\n const imgSelectedList = this.imgSelection$.getValue();\n imgSelectedList.splice(toIndex, 0, imgSelectedList.splice(fromIndex, 1)[0]);\n this.imgSelection$.next(imgSelectedList);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UserSettingsService {\n\n private userdisplayPreference = 'WzImgManagerListDisplayed';\n\n /**\n * true : display list\n * false : display mosaic\n * @param value\n */\n setUserDisplayPreference(value: boolean) {\n localStorage.setItem(this.userdisplayPreference, '' + value);\n }\n\n getUserDisplayPreference(): boolean {\n const value = localStorage.getItem(this.userdisplayPreference);\n return value == 'true';\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport { BehaviorSubject, ReplaySubject, Subject } from \"rxjs\";\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\n\n@Injectable()\nexport class ImgEventService {\n\n imgRemoved$ = new BehaviorSubject<string>(undefined);\n private imgToEditEvent: Subject<ImgPictureDTO> = new Subject<ImgPictureDTO>();\n private imgAdded: Subject<string> = new Subject<string>();\n private listDisplayedChange: Subject<boolean> = new Subject<boolean>();\n\n\n emitImgToEdit(imgToEdit: ImgPictureDTO){\n this.imgToEditEvent.next(imgToEdit);\n }\n\n getImgToEditEventListener(){\n return this.imgToEditEvent.asObservable();\n }\n\n emitImgAdded(id_file: string){\n this.imgAdded.next(id_file);\n }\n\n getImgAddedEventListner(){\n return this.imgAdded.asObservable();\n }\n\n emitlistDisplayedChange(value: boolean){\n this.listDisplayedChange.next(value);\n }\n\n getlistDisplayedChange(){\n return this.listDisplayedChange.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NwbAlertConfig, NwbAlertComponent } from '@wizishop/ng-wizi-bulma';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NwbAlertService } from '@wizishop/ng-wizi-bulma';\n\n@Injectable()\nexport class AlertService {\n\n actionMsg = 'ImgManager.alert.action';\n\n alertConfig: NwbAlertConfig = {\n message: '',\n duration: 5000\n }\n\n private alertRefComponent: NwbAlertComponent;\n\n constructor(\n private nwbAlertService: NwbAlertService,\n private translateService: TranslateService\n ) {}\n\n openAlert(msgKey: string) {\n this.closePreviousAlert();\n this.translateService.get(msgKey).subscribe(trans => {\n this.alertConfig.message = trans;\n this.setAlertColor(msgKey);\n\n this.alertRefComponent = this.nwbAlertService.open(this.alertConfig);\n this.alertRefComponent.afterClosed().subscribe();\n });\n }\n\n openAlertWithBackendResponse(msgKey: string, msgBackend: string) {\n this.translateService.get(msgKey).subscribe(trans => {\n this.alertConfig.message = trans;\n this.alertConfig.message += '<br/>' + JSON.parse(msgBackend).message;\n\n this.closePreviousAlert();\n this.alertRefComponent = this.nwbAlertService.open(this.alertConfig);\n this.alertRefComponent.afterClosed().subscribe();\n });\n }\n\n private closePreviousAlert() {\n if (this.alertRefComponent) {\n this.alertRefComponent.dismiss();\n }\n }\n\n private setAlertColor(msgKey: string) {\n const isErrorMsg: boolean = /error/i.test(msgKey);\n this.alertConfig.color = isErrorMsg ? 'is-danger' : 'is-success';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ImgPictureDTO, ImgPicturesDTO } from '../dto/img-manager.dto';\nimport { Observable } from 'rxjs';\nimport { ImgCDNConfigDTO } from '../dto/export-dtos.api';\nimport { HttpParams } from '@angular/common/http';\n\n@Injectable()\nexport abstract class ApiService {\n\n abstract CONFIG: {\n image_manager_route: string;\n canva_token: string;\n canva_url: string;\n pexels_token: string\n pexels_route: string;\n assets_route: string;\n }\n\n abstract IMG_SIZE : ImgCDNConfigDTO;\n\n abstract getShopCategory(): string;\n\n abstract getShopImgList(params?: HttpParams): Observable<ImgPicturesDTO>;\n\n abstract getShopTotalImgList(params?: HttpParams): Observable<number>;\n\n abstract getShopImg(idFile: string): Observable<ImgPictureDTO>;\n\n abstract uploadFile(formData: FormData): Observable<ImgPictureDTO>;\n\n abstract uploadFileByUrl(url: string, fileName?: string): Observable<ImgPictureDTO>;\n\n abstract replaceImg(imageBase64: string, id_file: string): Observable<ImgPictureDTO>;\n\n abstract changeImgName(fileName: string, id_file: string): Observable<ImgPictureDTO>;\n\n abstract removeImg(id_file: string): Observable<ImgPictureDTO>;\n\n abstract removeMultipleImg(id_array: string[]): Observable<ImgPictureDTO[]>;\n\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiService } from './api.service';\nimport { Subject, tap } from 'rxjs';\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\n\n@Injectable()\nexport class UploadService {\n\n imageUploaded$ = new Subject<ImgPictureDTO>();\n\n apiService = inject(ApiService);\n\n uploadFile(formData: FormData) {\n return this.apiService.uploadFile(formData).pipe(\n tap((img: ImgPictureDTO) => this.imageUploaded$.next(img))\n );\n }\n\n uploadFileByUrl(url: string, fileName?: string) {\n return this.apiService.uploadFileByUrl(url, fileName).pipe(\n tap((img: ImgPictureDTO) => this.imageUploaded$.next(img))\n );\n }\n\n}","import { Injectable } from '@angular/core';\nimport { Observable, Subscriber, BehaviorSubject } from 'rxjs';\nimport { CanvaButtonApi } from '../dto/canva.dto';\nimport { WiziBlockMediaDto } from '../dto/wizi-block-media.dto';\nimport { AlertService } from './alert.service';\nimport { ImgEventService } from './img-event.service';\nimport { take } from 'rxjs/operators';\nimport { CanvaCreateDesign } from '../dto/canva-create-design.dto';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UploadService } from './upload.service';\nimport { ApiService } from './api.service';\n\ndeclare let Canva : {\n DesignButton : {\n initialize: (opts: { apiKey: string }) => Promise<CanvaButtonApi>;\n }\n};\n\n@Injectable()\nexport class CanvaService {\n\n canvaApi // Object use to manage the canva api\n get canvaApiURL() {\n return this.apiService.CONFIG.canva_url;\n };\n get canvaApiKey() {\n return this.apiService.CONFIG.canva_token;\n }\n\n imgLoading = false;\n uploadingImg = 'ImgManager.CanvaBtn.uploadingImg';\n successUploadPhoto = 'ImgManager.CanvaBtn.successImport';\n errorUploadCanvaImg = 'ImgManager.CanvaBtn.errorUploadCanvaImg';\n errorRenameCanvaImg = 'ImgManager.CanvaBtn.errorRenameCanvaImg';\n\n forceToOpenCanva: boolean = false;\n\n private bindExpectedImgSizeEvent: BehaviorSubject<WiziBlockMediaDto> = new BehaviorSubject<WiziBlockMediaDto>(null);\n private bindExpectedSizeDone = this.bindExpectedImgSizeEvent.asObservable();\n\n constructor(\n private wzImgEventService: ImgEventService,\n private alertService: AlertService,\n private translateService: TranslateService,\n private uploadService: UploadService,\n private apiService: ApiService\n ) {}\n\n getCanvaLogo() {\n return this.apiService.CONFIG.assets_route + \"canva/icon_canva.svg\";\n }\n\n bindEventExepectedImgSizeChange() {\n return this.bindExpectedSizeDone;\n }\n\n expectedImgSizesChange (mediaDTO: WiziBlockMediaDto){\n this.bindExpectedImgSizeEvent.next(mediaDTO);\n if (this.forceToOpenCanva) {\n this.openCanva(parseInt(mediaDTO.image_width), parseInt(mediaDTO.image_height));\n }\n }\n\n getCanvaApi():Observable<CanvaButtonApi> {\n return new Observable(observer => {\n this.loadCanva().subscribe({\n complete: () => {\n if(this.canvaApi && Canva.DesignButton) {\n observer.next(this.canvaApi);\n observer.complete();\n } else {\n this.initializeCanva(observer);\n }\n }\n })\n });\n }\n\n private initializeCanva(observer: Subscriber<CanvaButtonApi>) {\n if (Canva.DesignButton) {\n Canva.DesignButton.initialize({\n apiKey: this.canvaApiKey\n\n }).then((canvaApi) => {\n this.canvaApi = canvaApi;\n observer.next(this.canvaApi);\n observer.complete();\n });\n }\n }\n\n private loadCanva():Observable<null> {\n return new Observable(observer => {\n if(this.canvaApi) {\n observer.complete();\n }else{\n this.loadCanvaScript(observer);\n }\n });\n }\n\n private loadCanvaScript(observer: Subscriber<null>) {\n\n const node = document.createElement('script');\n node.src = this.canvaApiURL;\n node.type = 'text/javascript';\n node.async = false;\n node.charset = 'utf-8';\n node.onload = () => {\n observer.complete();\n }\n document.getElementsByTagName('head')[0].appendChild(node);\n }\n\n openCanva(width: number, height: number) {\n if (this.imgLoading) {\n return;\n }\n this.getCanvaApi().pipe(take(1)).subscribe((api: CanvaButtonApi) => {\n this.canvaApi = api;\n this.addOverflowBody();\n this.createDesign(width, height);\n });\n }\n\n private addOverflowBody() {\n document.body.classList.add('ovh-canva');\n }\n\n private removeOverflowBody() {\n document.body.classList.remove('ovh-canva');\n }\n\n private createDesign(width: number, height: number) {\n const createDesign: CanvaCreateDesign = {\n type: 'EtsyShopIcon',\n dimensions : {\n units: 'px',\n width: width ? width : undefined,\n height: height ? height : undefined,\n },\n publishLabel: this.translateService.instant('ImgManager.CanvaBtn.publish'),\n };\n this.canvaApi.createDesign({\n design: createDesign,\n onDesignPublish: ({ exportUrl, designTitle }) => this.designPublished(exportUrl, designTitle),\n onDesignClose: () => {\n this.removeOverflowBody();\n }\n\n });\n }\n\n private designPublished(exportUrl: string, designTitle: string) {\n this.alertService.openAlert(this.uploadingImg);\n this.imgLoading = true;\n\n\n this.uploadService.uploadFileByUrl(exportUrl, designTitle).pipe(take(1)).subscribe({\n next: (img) => {\n this.imgLoading = false;\n this.removeOverflowBody();\n\n this.wzImgEventService.emitImgAdded(img.id_file);\n this.alertService.openAlert(this.successUploadPhoto);\n },\n error: error => {\n this.imgLoading = false;\n this.removeOverflowBody();\n\n if (error.error.code === 406 && error.error.message) {\n this.alertService.openAlertWithBackendResponse(this.errorUploadCanvaImg, error.error.message)\n } else {\n this.alertService.openAlert(this.errorUploadCanvaImg);\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class DomService {\n\n private documentEventSource = new Subject();\n private documentEventDone = this.documentEventSource.asObservable();\n\n private documentScrollSource = new Subject();\n private documentScrollDone = this.documentScrollSource.asObservable();\n\n documentEvent() {\n return this.documentEventDone;\n }\n\n setDocumentEventListener() {\n document.body.addEventListener('click', event => {\n this.documentEventSource.next(event.target);\n });\n }\n\n documentScroll() {\n return this.documentScrollDone;\n }\n\n setScrollEventListener() {\n window.onscroll = () => {\n this.documentScrollSource.next(window);\n };\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const easeInOut = // the fade-in/fade-out animation.\ntrigger('easeInOut', [\n\n // the \"in\" style determines the \"resting\" state of the element when it is visible.\n state('in', style({opacity: 1})),\n\n // fade in when created. this could also be written as transition('void => *')\n transition(':enter', [\n style({opacity: 0}),\n animate('0.5s ease-in-out' )\n ]),\n]);\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'wz-loader',\n templateUrl: './loader.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class LoaderComponent {\n @Input()\n text: string;\n @Input()\n small = false;\n @Input()\n position: string;\n}\n","<div class=\"wz-loader\" [ngClass]=\"{'is-small': small}\" [ngStyle]=\"{'position': position}\">\n <div class='loader loader1'>\n <div>\n <div>\n <div>\n <div>\n <div>\n <div></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"is-textcentered\" *ngIf=\"text\" [innerHTML]=\"text\"></p>\n</div>\n","import { Directive, Output, EventEmitter, HostBinding, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appDragDrop]'\n})\nexport class DragDropDirective {\n\n @Output() onFileDropped = new EventEmitter<Event>();\n\n @HostBinding('style.background-color') background = '#fff'\n @HostBinding('style.opacity') opacity = '1'\n\n @HostListener('dragover', ['$event']) onDragOver(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#f5f5f5';\n this.opacity = '0.8';\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#fff';\n this.opacity = '1';\n }\n\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#f5f5f5'\n this.opacity = '1'\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import {Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef} from '@angular/core';\nimport { Observable, forkJoin } from 'rxjs';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\nimport { AlertService } from '../../services/alert.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UploadService } from '../../services/upload.service';\nimport { ApiService } from '../../services/api.service';\n\n@Component({\n selector: 'img-upload',\n templateUrl: './img-upload.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class ImgUploadComponent implements OnInit {\n\n files: any = [];\n isLoading: boolean = false;\n assetsIcon: string;\n @Input() stateDisplayed: stateDisplayed;\n @Output() imgUploaded = new EventEmitter();\n\n @ViewChild('dragAndDropBox') dragAndDropBox: ElementRef;\n\n loadingText = 'ImgManager.ImgUpload.loading';\n errorUploadingImg = 'ImgManager.ImgUpload.errorUploadingImg';\n errorNotImg = 'ImgManager.ImgUpload.errorNotImg';\n\n MAX_IMAGE_SIZE = 10000000; // In bytes\n\n constructor(\n private alertService: AlertService,\n private apiService: ApiService,\n private translateService: TranslateService,\n private uploadService: UploadService\n ) {}\n\n ngOnInit(): void {\n this.assetsIcon = this.getAssets();\n }\n\n filesChangeByClick(event: any) {\n this.uploadFile(event.target.files);\n }\n\n getAssets() {\n return this.apiService.CONFIG.assets_route + \"img/icon_picture.svg\";\n }\n\n filesChangeByDragAndDrop(filesList: FileList) {\n this.removeDragAndDropStyle();\n this.uploadFile(Array.from(filesList));\n }\n\n uploadFile(files: File[]) {\n if (files && !files.length) {\n return;\n }\n\n this.isLoading =true;\n const imgToUploadList: Observable<any>[] = [];\n for (const file of files) {\n if(!this.isFileImage(file.type)) {\n this.alertService.openAlert(this.errorNotImg);\n this.isLoading = false;\n continue;\n }\n\n if (!this.isSizeValid(file.size)) {\n this.alertService.openAlert(\n this.translateService.instant('ImgManager.ImgUpload.ErrorImgSize', {\n fileName: file.name,\n fileSize: this.getImageSizeInKo(file.size),\n maxFileSize: this.getImageSizeInKo(this.MAX_IMAGE_SIZE)\n }));\n this.isLoading = false;\n continue;\n }\n\n const formData = new FormData();\n formData.append('image', file, file.name);\n imgToUploadList.push(this.uploadService.uploadFile(formData));\n }\n\n forkJoin(imgToUploadList).subscribe({\n next: (img: ImgPictureDTO[]) => {\n this.onImgUpload(img),\n this.isLoading =false;\n },\n error: error => {\n if (error?.error?.message && error.statusText !== 'Bad Request') {\n this.alertService.openAlertWithBackendResponse(this.errorUploadingImg, error.error.message);\n } else {\n this.alertService.openAlert(this.errorUploadingImg);\n }\n this.isLoading =false;\n }\n })\n }\n\n /**\n * Send the img uploaded to the tabs components,\n * Then the tabs components add the img to upload list by calling the method onImgUploaded of the upload-list component\n * @param img\n */\n onImgUpload(img: ImgPictureDTO[]) {\n this.imgUploaded.emit(img);\n }\n\n isFileImage(fileType: string) {\n return fileType.split('/')[0] === 'image';\n }\n\n isSizeValid(imageBytesSize: number): boolean {\n return imageBytesSize < this.MAX_IMAGE_SIZE;\n }\n\n getImageSizeInKo(size: number) {\n return Math.round(size / 1024);\n }\n\n /**\n * Remove the style of the drag and drop box\n * After an img is droped, the box is still grey\n */\n removeDragAndDropStyle() {\n this.dragAndDropBox.nativeElement.style = '';\n }\n}\n","<div\n class=\"img-upload has-text-centered\"\n [ngClass]=\"{'img-upload--small': stateDisplayed === 'small'}\"\n (click)=\"fileInput.click()\"\n appDragDrop\n (onFileDropped)=\"filesChangeByDragAndDrop($any($event))\"\n #dragAndDropBox\n [@easeInOut]=\"'in'\"\n>\n <input hidden type=\"file\" #fileInput (change)=\"filesChangeByClick($event)\" accept=\"image/*\" multiple >\n <div class=\"img-upload__container\" [ngClass]=\"{'img-upload__container--small': stateDisplayed === 'small'}\">\n\n <div class=\"img-upload__container__wrapper\">\n\n <div class=\"img-upload__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\" [position]=\"'relative'\"></wz-loader>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div class=\"blueColor img-upload__container__dropImgIconDiv\">\n <img *ngIf=\"assetsIcon\" [src]=\"assetsIcon\" alt=\"icon picture\" />\n <p>{{ 'ImgManager.ImgUpload.dropImg' | translate }}</p>\n </div>\n\n <p class=\"img-upload__container__or\">{{ 'ImgManager.ImgUpload.or' | translate }}</p>\n\n <div class=\"img-upload__container__text\">\n <i class=\"fal fa-file-upload\"></i>{{ 'ImgManager.ImgUpload.selectImg' | translate }}\n </div>\n </ng-container>\n\n </div>\n </div>\n</div>\n","import { stagger } from '@angular/animations';\nimport { query } from '@angular/animations';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\nexport const listAnnimation = // the fade-in/fade-out animation.\ntrigger('listAnimation', [\n transition(':enter, * => 0, * => -1', []),\n transition(':increment', [\n query(':enter', [\n style({opacity: 0, transform: 'translateY(100px)'}),\n stagger(50, [\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)', style({ opacity: 1, transform: 'none' })),\n ]),\n ], { optional: true })\n ]),\n]);\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport { map} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\nimport {WzImgLibDto} from \"../dto/pexels-img.dto\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ApiService } from './api.service';\n\n@Injectable()\nexport class PexelsService {\n get apiBaseUrl() {\n return this.apiService.CONFIG.pexels_route;\n };\n get apiKey() {\n return this.apiService.CONFIG.pexels_token;\n }\n lang: string;\n languages = {'fr': 'fr-FR', 'en': 'en-US', 'it': 'it-IT', 'es': 'es-ES'};\n\n constructor(\n private http: HttpClient,\n private apiService: ApiService,\n private translateService: TranslateService\n ) {\n this.setLang(this.translateService.currentLang);\n this.translateService.onLangChange.subscribe(langData => {\n this.setLang(langData.lang);\n })\n }\n\n setLang(lang: string) {\n this.lang = this.languages[lang] ? this.languages[lang] : 'fr-FR';\n }\n\n searchOnPexels(toSearch: string, perPage: number, page: number): Observable<WzImgLibDto> {\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: this.apiKey\n })\n };\n\n let request;\n\n // If search value is not empty or blank\n if (toSearch && !/^\\s*$/.test(toSearch)) {\n request = `/search?query=${toSearch}&per_page=${perPage}&page=${page}&locale=${this.lang}`;\n\n } else { // Search by category or display Pexels selection\n const shopCategory = this.apiService.getShopCategory();\n\n // Search by shop category\n if (shopCategory && shopCategory !== 'other' && shopCategory !== 'btob' && shopCategory !== 'default') {\n request = `/search?query=${shopCategory}&per_page=${perPage}&page=${page}&locale=en-US`;\n } else { // Display Pexels selection\n request = `/curated?per_page=${perPage}&page=${page}`;\n }\n }\n\n return this.http.get(this.apiBaseUrl + request, httpOptions).pipe(\n map((data: WzImgLibDto) => {\n return data;\n })\n );\n }\n}\n","import { Directive, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\n\n@Directive({\n selector: 'AbstractDebounceDirective'\n})\nexport class AbstractDebounceDirective implements OnDestroy {\n @Input()\n public debounceTime: number;\n\n @Output()\n public onEventChange: EventEmitter<any>;\n\n protected emitEvent$: Subject<any>;\n protected subscription$: Subject<void>;\n\n constructor() {\n this.debounceTime = 500;\n this.onEventChange = new EventEmitter<any>();\n this.emitEvent$ = new Subject<any>();\n this.subscription$ = new Subject<void>();\n }\n\n ngOnInit(): void {\n this.emitEvent$\n .pipe(\n takeUntil(this.subscription$),\n debounceTime(this.debounceTime),\n distinctUntilChanged(),\n tap(value => this.emitChange(value))\n )\n .subscribe();\n }\n\n public emitChange(value: any): void {\n this.onEventChange.emit(value);\n }\n\n ngOnDestroy(): void {\n this.subscription$.next();\n this.subscription$.complete();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { AbstractDebounceDirective } from './abstract-debounce.directive';\n@Directive({\n selector: 'input[debounceKeyUp]'\n})\nexport class DebounceKeyupDirective extends AbstractDebounceDirective {\n constructor() {\n super();\n }\n\n @HostListener('keyup', ['$event'])\n public onKeyUp(event: any): void {\n event.preventDefault();\n this.emitEvent$.next(event);\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'wz-input-search',\n templateUrl: './input-search.component.html',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputSearchComponent, multi: true }]\n})\nexport class InputSearchComponent implements ControlValueAccessor {\n @Input()\n placeholder = '';\n @Input()\n smallPadding = false;\n @Input()\n id;\n private innerValue: any = '';\n @Output() changeDebounced = new EventEmitter<any>(); // debounced\n\n private onTouchedCallback: () => void = () => {};\n private onChangeCallback: (_: any) => void = () => {};\n\n get value(): any {\n return this.innerValue;\n }\n\n set value(v: any) {\n if (v !== this.innerValue) {\n this.innerValue = v;\n this.onChangeCallback(v);\n }\n }\n\n writeValue(value: any) {\n if (value !== this.innerValue) {\n this.innerValue = value;\n }\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n public handleDebouncedKeyUp(event): void {\n this.changeDebounced.emit(event.target.value);\n }\n}\n","<div class=\"input-search field\" [ngClass]=\"smallPadding ? 'small-padding' : ''\">\n <p class=\"control has-icons-left has-icons-right\">\n <input\n [placeholder]=\"placeholder\"\n value=\"\"\n class=\"input\"\n type=\"text\"\n [attr.id]=\"id\"\n [(ngModel)]=\"value\"\n debounceKeyUp\n [debounceTime]=\"1000\"\n (onEventChange)=\"handleDebouncedKeyUp($event)\"\n />\n <i class=\"icon fal fa-search\"></i>\n </p>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'wz-alert',\n styleUrls: ['./alert.component.scss'],\n templateUrl: './alert.component.html'\n})\nexport class AlertComponent implements OnInit {\n @Input() icon = true;\n @Input() warning = false;\n @Input() success = false;\n @Input() iconClass = 'fas fa-info';\n constructor() {}\n ngOnInit(): void {}\n}\n","<div class=\"wz-alert\" [ngClass]=\"{ success: success, warning: warning }\">\n <i *ngIf=\"icon\" [ngClass]=\"iconClass\"></i>\n <p><ng-content></ng-content></p>\n</div>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[btnLoadingAnim]'\n})\nexport class LoadingDirective {\n\n element: ElementRef;\n currentLoading = 0;\n interval = null;\n\n constructor(el: ElementRef) {\n this.element = el;\n this.launchLoading();\n }\n\n launchLoading() {\n if (this.interval !== null) {\n return;\n }\n this.currentLoading = 10;\n\n this.element.nativeElement.style.width = this.currentLoading + '%';\n\n this.interval = setInterval(() => {\n if (this.currentLoading < 80) {\n this.currentLoading += Math.floor(Math.random() * 15);\n this.element.nativeElement.style.width = this.currentLoading + '%';\n }\n if (this.currentLoading >= 80 && this.currentLoading < 95) {\n this.currentLoading += Math.floor(Math.random() * 2);\n this.element.nativeElement.style.width = this.currentLoading + '%';\n }\n }, 70);\n }\n\n ngOnDestroy() {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = null;\n }\n }\n}\n","import {AfterViewInit, Component, ElementRef, ViewChild, Input, Output, EventEmitter} from '@angular/core';\nimport {PexelsService} from '../../services/pexels.service';\nimport {Subject, Subscription} from 'rxjs';\nimport {WzImgLibDto, PhotosColumns, WzImgLibPhotoDto} from '../../dto/pexels-img.dto';\nimport { TranslateService } from '@ngx-translate/core';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { listAnnimation } from '../../animations/listAnnimation/list.animation';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\nimport { AlertService } from '../../services/alert.service';\nimport { UploadService } from '../../services/upload.service';\n\n@Component({\n selector: 'pexels-lib',\n templateUrl: './pexels-lib.component.html',\n animations: [\n easeInOut,\n listAnnimation\n ]\n})\nexport class PexelLibComponent implements AfterViewInit {\n\n @Input()\n stateDisplayed: stateDisplayed;\n @Input()\n searchValue: string = '';\n /** Pass to true to hide search input */\n @Input()\n disableSearch: boolean = false;\n\n @Output()\n showImgUploaded = new EventEmitter();\n\n perPage = 30;\n searchUpdated = new Subject();\n oldSearchValue: string;\n nbResult = 0;\n wzImgLibDto: WzImgLibDto;\n currentPage = 1;\n isLoading = true;\n initComponent = true;\n photosColumns: PhotosColumns[] = [];\n nbColumns = 6;\n responsiveColumns = [1250, 1050, 750, 500];\n outerElement = null;\n\n uploadingImg = 'ImgManager.PexelLib.uploadingImg';\n untitled = 'ImgManager.PexelLib.untitled';\n successUploadPhoto = 'ImgManager.PexelLib.successImport';\n errorUploadPhoto = 'ImgManager.PexelLib.errorUploadPhoto';\n errorRetrievePhotos = 'ImgManager.PexelLib.errorRetrievePhotos';\n\n private subs: Subscription[] = [];\n\n @ViewChild('outerElement') set content(control: ElementRef) {\n this.outerElement = control;\n }\n\n constructor(\n private wzImgLibService: PexelsService,\n private alertService: AlertService,\n private translateService: TranslateService,\n private uploadService: UploadService\n ) { }\n\n ngAfterViewInit() {\n this.oldSearchValue = this.searchValue;\n this.isLoading = false;\n\n this.setNbColumnsToDisplayPhoto();\n this.setPhotosColumns();\n this.search();\n }\n\n setNbColumnsToDisplayPhoto(): void {\n const width = this.outerElement.nativeElement.offsetWidth;\n\n if (this.stateDisplayed !== 'window') {\n this.nbColumns = 8;\n }\n\n this.responsiveColumns.forEach(value => {\n if (width < value) {\n this.nbColumns--;\n }\n });\n }\n\n onSearchNameChanged() {\n this.onSearchChange();\n }\n\n onBottomReached() {\n this.scrollHandler();\n }\n\n onSearchChange() {\n this.search();\n }\n\n search() {\n if (this.isLoading) {\n return;\n }\n if (this.searchValue !== this.oldSearchValue) {\n this.resetSearch();\n }\n\n // All the picture are displayed\n if (this.nbResult && this.nbResult <= (this.currentPage - 1) * this.perPage) {\n return;\n }\n\n this.isLoading = true;\n const searchSub = this.wzImgLibService.searchOnPexels(this.searchValue, this.perPage, this.currentPage).subscribe({\n next: (data: WzImgLibDto) => {\n this.wzImgLibDto = data;\n this.nbResult = this.wzImgLibDto.total_results;\n\n if (this.nbResult) {\n data.photos.forEach(photo => {\n const bestColumnIndex = this.getBestColumn();\n const height = (photo.height / photo.width) * 1000;\n\n this.photosColumns[bestColumnIndex].height += height;\n this.photosColumns[bestColumnIndex].photos.push(photo);\n });\n }\n\n this.isLoading = false;\n this.initComponent = false;\n },\n error: error => {\n this.isLoading = false;\n this.initComponent = false;\n this.alertService.openAlert(this.errorRetrievePhotos);\n }\n });\n\n this.subs.push(searchSub);\n }\n\n scrollHandler() {\n if (this.isLoading) {\n return;\n }\n const bestColumnIndex = this.getBestColumn();\n const lastPic = this.photosColumns[bestColumnIndex].photos[this.photosColumns[bestColumnIndex].photos.length - 1];\n const lastPhoto = lastPic ? document.querySelector<HTMLImageElement>('img[src=\"' + lastPic.src.medium + '\"]') : null;\n\n if (lastPhoto) {\n if (!this.isLoading) {\n this.currentPage += 1;\n this.search();\n }\n }\n }\n\n setPhotosColumns() {\n for (let indexColumn=0; indexColumn < this.nbColumns ; indexColumn++) {\n const photosColumn: PhotosColumns = {\n height: 0,\n photos: []\n };\n this.photosColumns.push(photosColumn);\n }\n }\n\n getBestColumn(): number {\n const bestColumn = {\n index: 0,\n height: this.photosColumns[0].height\n };\n this.photosColumns.forEach((photosColumn, index) => {\n if (bestColumn.height > photosColumn.height) {\n bestColumn.index = index;\n bestColumn.height = photosColumn.height;\n }\n });\n return bestColumn.index;\n }\n\n resetSearch() {\n this.oldSearchValue = this.searchValue;\n this.photosColumns = [];\n this.currentPage = 1;\n this.setPhotosColumns();\n }\n\n uploadPhoto(photo: WzImgLibPhotoDto, url: string) {\n photo.uploading = true;\n\n const uploadSub = this.uploadService.uploadFileByUrl(url, photo.alt).subscribe(\n img => {\n photo.uploading = false;\n photo.uploaded = true;\n this.alertService.openAlert(this.successUploadPhoto);\n },\n error => {\n photo.uploading = false;\n if(error.error.code === 406 && error.error.message) {\n this.alertService.openAlertWithBackendResponse(this.errorUploadPhoto, error.error.message);\n } else {\n this.alertService.openAlert(this.errorUploadPhoto);\n }\n });\n\n // Display img uploading msg\n this.alertService.openAlert(this.uploadingImg);\n this.subs.push(uploadSub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","<div class=\"pexels-lib\" #outerElement [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n [reachedOffset]=\"300\"\n class=\"pexels-lib__scroll\"\n [ngClass]=\"{\n 'pexels-lib__scroll--smallDisplay': stateDisplayed === 'small',\n 'pexels-lib__scroll--noResult': !nbResult,\n 'pexels-lib__scroll--hide': (!nbResult && disableSearch)\n }\"\n (reachedBottom)=\"onBottomReached()\"\n >\n <div\n *ngIf=\"!disableSearch\"\n class=\"pexels-lib__search\"\n [ngClass]=\"{'pexels-lib__search--smallDisplay': stateDisplayed === 'small'}\"\n >\n <wz-input-search\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n (changeDebounced)=\"onSearchNameChanged()\"\n [smallPadding]=\"stateDisplayed === 'small'\">\n </wz-input-search>\n </div>\n\n <div *ngIf=\"!initComponent\" class=\"pexels-lib__wrapper\">\n <p *ngIf=\"nbResult\" class=\"pexels-lib__wrapper__result-nb\">{{ 'ImgManager.PexelLib.nbImgFound' | translate }} : {{ nbResult }}</p>\n\n <div class=\"pexels-lib__wrapper__result\">\n\n <div *ngFor=\"let photosColumn of photosColumns; let indexCol = index;\" class=\"pexels-lib__wrapper__result__column\" [@listAnimation]=\"photosColumn.photos.length\">\n <div *ngFor=\"let photo of photosColumn.photos; let indexPhoto = index;\" class=\"pexels-lib__wrapper__result__column__element\">\n\n <img [alt]=\"photo.src.medium\" [src]=\"photo.src.medium\"\n class=\"pexels-lib__wrapper__result__column__element__img\"/>\n\n <div class=\"pexels-lib__wrapper__result__column__element__wrapper\">\n <span class=\"pexels-lib__wrapper__result__column__element__wrapper__infos\">\n {{ photo.width }} x {{ photo.height}}\n </span>\n\n <div class=\"dropdown is-up\" [ngClass]=\"{'is-hoverable': !photo.uploading}\">\n <div class=\"dropdown-trigger\">\n <button\n type=\"button\"\n class=\"button pexels-lib__wrapper__result__column__element__wrapper__button\"\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\">\n\n <div *ngIf=\"!photo.uploading\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <span>{{ 'ImgManager.PexelLib.import' | translate }}</span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-up\" aria-hidden=\"true\"></i>\n </span>\n <ng-container *ngIf=\"photo.uploaded\">\n &nbsp;<i class=\"fal fa-check\"></i>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"photo.uploading\">\n {{ 'ImgManager.PexelLib.importation' | translate }}\n <span btnLoadingAnim class=\"btnLoadingAnnimation\"></span>\n </ng-container>\n\n </button>\n </div>\n <div class=\"dropdown-menu pexels-lib__wrapper__result__column__element__wrapper__dropdown\" id=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-content__wrapper\">\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.portrait)\">\n <p>{{ 'ImgManager.PexelLib.portrait' | translate }}</p>\n <i class=\"fal fa-check iPortrait\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.landscape)\">\n <p>{{ 'ImgManager.PexelLib.landscape' | translate }}</p>\n <i class=\"fal fa-check iLandscape\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <p>{{ 'ImgManager.PexelLib.original' | translate }}</p>\n <i class=\"fal fa-check iOriginal\"></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n </ng-scrollbar>\n\n <ng-container *ngIf=\"isLoading\">\n <wz-loader></wz-loader>\n </ng-container>\n <div\n *ngIf=\"!isLoading && !nbResult\"\n class=\"pexels-lib__alert\"\n [@easeInOut]=\"'in'\">\n <wz-alert [warning]=\"true\">\n {{ 'ImgManager.PexelLib.noResult' | translate }}\n </wz-alert>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { AlertService } from './alert.service';\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\nimport { PictureNameUpdate } from '../dto/picture-name-update.dto';\nimport { ApiService } from './api.service';\n\n@Injectable()\nexport class RenamePictureService {\n\n private picturesList: ImgPictureDTO[] = [];\n private errorRenameImg = 'ImgManager.ImgList.errorRenameImg';\n private msgSavingImgName = 'ImgManager.ImgLib.savingImgName';\n private msgImgNameSaved = 'ImgManager.ImgLib.imgNameSaved';\n\n constructor(\n private apiService: ApiService,\n private alertService: AlertService,\n )\n {}\n\n setPicturesList(picturesList: ImgPictureDTO[]) {\n this.picturesList = picturesList;\n }\n\n renamePicture(pictureNameUpdate: PictureNameUpdate) {\n const picture: ImgPictureDTO = this.getPictureById(pictureNameUpdate.id);\n if (!picture) {\n this.alertService.openAlert(this.errorRenameImg);\n return;\n }\n this.alertService.openAlert(this.msgSavingImgName);\n this.apiService\n .changeImgName(picture.display_name, picture.id_file)\n .subscribe(\n (data: ImgPictureDTO) => {\n picture.display_name = data.display_name;\n this.alertService.openAlert(this.msgImgNameSaved);\n },\n () => {\n picture.display_name = pictureNameUpdate.previousName;\n this.alertService.openAlert(this.errorRenameImg);\n }\n );\n }\n\n changeImageName(name: string, idFile: string) {\n return this.apiService.changeImgName(name, idFile);\n }\n\n private getPictureById(id_file: string): ImgPictureDTO {\n if (!this.picturesList) {\n return;\n }\n\n for (const picture of this.picturesList) {\n if(picture.id_file === id_file) {\n return picture;\n }\n }\n\n return null;\n }\n\n}","import { Injectable, Optional, SkipSelf, inject } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { delay, Observable, of, tap } from \"rxjs\";\nimport { ImgPictureDTO, ImgPicturesDTO, ParamsImgManagerDTO } from '../dto/img-manager.dto';\nimport { ImgManagerDisplayConfig } from '../dto/export-dtos.api';\nimport { ImgManagerConfig } from '../dto/config/img-manager';\nimport { ApiService } from './api.service';\n\n@Injectable()\nexport class ImgManagerService {\n\n params = new HttpParams().set(\"limit\",\"20\").set(\"page\",\"1\");\n\n // Display the img selection\n private pageFicheProductConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: true,\n showImgManagerModule: true,\n showSelection: true,\n displayBtn: true,\n pageficheProduct: true\n }\n\n private angularFicheProductConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: true,\n showImgManagerModule: true,\n showSelection: true,\n displayBtn: false,\n pageficheProduct: true\n }\n\n private wiziblockConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: false,\n showImgManagerModule: true,\n showSelection: false,\n displayBtn: false\n }\n\n private simpleWithButtonOpenerConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: false,\n showImgManagerModule: true,\n showSelection: false,\n displayBtn: true\n }\n\n private fullWindowConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'window',\n multipleImgMode: false,\n showImgManagerModule: true,\n showSelection: false,\n displayBtn: false\n }\n\n apiService = inject(ApiService);\n shopImgList: ImgPicturesDTO;\n previousParams: ParamsImgManagerDTO;\n\n getShopImgList(params?: ParamsImgManagerDTO, forceToUpdate: boolean = false) {\n if (\n !forceToUpdate &&\n params && this.previousParams && this.previousParams.limit === params.limit\n && this.previousParams.page === params.page && this.shopImgList\n && this.previousParams.search === params.search\n ) {\n return of(this.shopImgList).pipe(delay(0));\n }\n\n const httpParams = params ? this.resetParams(params) : undefined;\n\n return this.apiService.getShopImgList(httpParams).pipe(\n tap((shopImgList) => {\n this.shopImgList = shopImgList;\n this.previousParams = params;\n })\n );;\n }\n\n getShopTotalImgList(params?: ParamsImgManagerDTO) {\n const httpParams = params ? this.resetParams(params) : undefined;\n return this.apiService.getShopTotalImgList(httpParams);\n }\n\n getShopImg(idFile: string) {\n return this.apiService.getShopImg(idFile);\n }\n\n resetParams(params: ParamsImgManagerDTO){\n this.params = new HttpParams();\n this.params = this.params.set('id_file:sort', 'desc');\n for (const param in params) {\n this.params = this.params.set(param, params[param]);\n }\n\n if (params.search) {\n this.params = this.params.set('display_name:contains', params.search);\n }\n return this.params;\n }\n\n replaceImg(imageBase64: string, id_file: string) {\n return this.apiService.replaceImg(imageBase64, id_file);\n }\n\n\n removeImg(id_file: string) {\n return this.apiService.removeImg(id_file);\n }\n\n removeMultipleImg(id_array: string[]){\n return this.apiService.removeMultipleImg(id_array);\n }\n\n getImgManagerDisplayConfig(displayName: ImgManagerConfig) {\n switch (displayName) {\n case \"window\":\n return this.fullWindowConfig;\n\n case \"wizi-block\":\n return this.wiziblockConfig;\n\n case \"fiche-product\":\n return this.pageFicheProductConfig;\n\n case \"simple-with-button\":\n return this.simpleWithButtonOpenerConfig;\n\n case 'angular-fiche-product':\n return this.angularFicheProductConfig\n\n default:\n return;\n }\n }\n\n getAllImgManagerDisplayConfig(): ImgManagerDisplayConfig[] {\n return [\n this.fullWindowConfig,\n this.wiziblockConfig,\n this.pageFicheProductConfig,\n this.simpleWithButtonOpenerConfig,\n ]\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiService } from '../api.service';\n\n@Injectable()\nexport class ImgCDNService {\n\n imgCDNConfig = inject(ApiService).IMG_SIZE;\n\n getUrlImg(size: '100'|'200'|'400'|'800'|'raw'|string) {\n const urlProperty = Object.keys(this.imgCDNConfig)\n .filter(url =>\n new RegExp(size, 'i').test(url)\n )[0];\n\n return this.imgCDNConfig[urlProperty];\n }\n\n getAllSize(): string[] {\n return Object.keys(this.imgCDNConfig)\n .map(elem =>\n elem.match(/_(\\w+)_/)[1]\n );\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Directive, Input, Output } from \"@angular/core\";\nimport { EventEmitter } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subscription } from \"rxjs\";\nimport { stateDisplayed } from \"../../dto/export-dtos.api\";\nimport { PictureNameUpdate } from \"../../dto/picture-name-update.dto\";\nimport { ImgPictureDTO } from \"../../dto/img-manager.dto\";\nimport { AlertService } from \"../../services/alert.service\";\nimport { ImgCDNService } from \"../../services/config/img-cdn.service\";\nimport { ImgEventService } from \"../../services/img-event.service\";\nimport { ImgManagerService } from \"../../services/img-manager.service\";\nimport { ImgSelectionService } from \"../../services/img-selection.service\";\nimport { TableFilters } from \"../../services/table/filters-table.service\";\nimport { ApiService } from \"../../services/api.service\";\n\n@Directive()\nexport abstract class ImagesActionHandler {\n @Input()\n picturesList: ImgPictureDTO[] = [];\n @Output()\n picturesListChange: EventEmitter<void> = new EventEmitter();\n\n @Input()\n tableFilters: TableFilters = {\n sort: undefined,\n order: undefined,\n searchValue: '',\n totalItems: 0,\n itemsPerPage: 30,\n currentPage: 1\n };\n @Input()\n displayPexelsResults: boolean = false;\n\n @Input()\n disable: boolean = false;\n @Output()\n disableChange: EventEmitter<boolean> = new EventEmitter();\n\n @Output()\n filtersChange = new EventEmitter();\n @Output()\n pictureNameChange: EventEmitter<PictureNameUpdate> = new EventEmitter();\n\n @Input() isLoading = false;\n\n @Input()\n stateDisplayed: stateDisplayed;\n\n previousName: string; // Use to save the previous picture name, when a user change his name\n fakeImgRoute: string = this.apiService.CONFIG.assets_route + 'img/fake.png';\n\n private getDataAPISub: Subscription;\n private errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';\n private errorAlreadyUsedImg = 'ImgManager.ImgList.errorAlreadyUsed';\n\n constructor(\n protected imgManager: ImgManagerService,\n protected imgSelectionService: ImgSelectionService,\n protected http: HttpClient,\n protected imgCDNService: ImgCDNService,\n protected imgEventCardService: ImgEventService,\n protected alertService: AlertService,\n protected translateService: TranslateService,\n private apiService: ApiService\n ) {\n }\n\n /** Event emit when the header checkbox is checked */\n onToggleAllCheckBoxRow(event) {\n this.picturesList.forEach(data => {\n data.delSelected = event;\n });\n this._pictureListeChange();\n }\n\n onToggleDelSelection(index: number) {\n if (this.disable) {\n return;\n }\n this.picturesList[index].delSelected = !this.picturesList[index].delSelected;\n this._pictureListeChange();\n }\n\n /** Event emit each time filters change */\n onFiltersChange() {\n this.filtersChange.emit();\n }\n\n onEdit(picture: ImgPictureDTO) {\n this.imgEventCardService.emitImgToEdit(picture);\n }\n\n onToggleSelectImg(index: number) {\n if (this.disable || this.stateDisplayed === 'window') {\n return;\n }\n if (!this.picturesList[index].selected) {\n this.imgSelectionService.addImgSelected(this.picturesList[index]);\n this.picturesList[index].selected = true;\n } else {\n this.imgSelectionService.removeImgSelectedById(this.picturesList[index].id_file);\n this.picturesList[index].selected = false;\n }\n }\n\n onRemoveImg(picture: ImgPictureDTO) {\n picture.deleted = true;\n this.imgManager.removeImg(picture.id_file).subscribe(\n data => {\n this.imgEventCardService.imgRemoved$.next(picture.id_file);\n this.imgSelectionService.removeImgSelectedById(picture.id_file);\n },\n error => {\n const msg = error.status === 409 ? this.errorAlreadyUsedImg: this.errorRemoveImg;\n picture.deleted = false;\n this.alertService.openAlert(msg);\n });\n }\n\n onPictureNotLoading(event) {\n event.target.src = this.fakeImgRoute;\n }\n\n onDownloadImg(display_name: string, file_name: string) {\n this.http.get(this.getRAWImgRoute(file_name), { responseType: 'blob' }).subscribe(val => {\n let url = URL.createObjectURL(val);\n this.downloadUrl(url, display_name);\n URL.revokeObjectURL(url);\n });\n }\n\n onNameChange(id_file: string) {\n this.pictureNameChange.emit({id: id_file, previousName: this.previousName});\n }\n\n private getRAWImgRoute(file_name: string){\n return this.imgCDNService.getUrlImg('raw') + file_name;\n }\n\n private _pictureListeChange() {\n this.picturesListChange.emit();\n }\n\n private downloadUrl(url: string, fileName: string) {\n const a: any = document.createElement('a');\n a.href = url;\n a.download = fileName;\n a.click();\n }\n\n ngDestroy() {\n if (this.getDataAPISub) {\n this.getDataAPISub.unsubscribe();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ImgCDNService } from '../../services/config/img-cdn.service';\n\n@Pipe({\n name: 'imgSrc'\n})\nexport class ImageSrcPipe implements PipeTransform {\n\n constructor(private imgCDNService: ImgCDNService) { }\n\n transform(pictureName: string, size: string): string {\n if(!size) {\n throw \"The size is undefined in ImageSrcPipe.\";\n }\n\n const route: string = this.imgCDNService.getUrlImg(size);\n\n if (!route) {\n throw \"The expected size is not defined in ImageSrcPipe.\";\n }\n\n return route + pictureName;\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ImgEventService } from '../../../../services/img-event.service';\nimport { ImgPictureDTO } from '../../../../dto/img-manager.dto';\nimport { HttpClient } from '@angular/common/http';\nimport { ImgManagerService } from '../../../../services/img-manager.service';\nimport { ImgSelectionService } from '../../../../services/img-selection.service';\nimport { ImgCDNService } from '../../../../services/config/img-cdn.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ImagesActionHandler } from '../../images-actions-handler';\nimport { easeInOut } from '../../../../animations/easeInOut/ease-in-out.animation'\nimport { tabDisplayed } from '../../../../dto/export-dtos.api';\nimport { AlertService } from '../../../../services/alert.service';\nimport { ApiService } from '../../../../services/api.service';\n\n@Component({\n selector: 'img-card',\n templateUrl: './img-card.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class ImgCardComponent extends ImagesActionHandler implements OnInit {\n\n @Input()\n tabDisplayed: tabDisplayed;\n @Input()\n fullSize: boolean;\n @Input()\n picture: ImgPictureDTO;\n @Input()\n index: number;\n focusInput = false;\n\n @Output()\n toggleImgSelected: EventEmitter<void> = new EventEmitter();\n\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n isUploadSection: boolean = false;\n activeConfirmDelete = false;\n\n constructor(\n imgManager: ImgManagerService,\n imgSelectionService: ImgSelectionService,\n http: HttpClient,\n imgCDNService: ImgCDNService,\n imgEventCardService: ImgEventService,\n alertService: AlertService,\n translateService: TranslateService,\n apiService: ApiService\n ) {\n super(\n imgManager,\n imgSelectionService,\n http,\n imgCDNService,\n imgEventCardService,\n alertService,\n translateService,\n apiService\n );\n }\n\n ngOnInit(): void {\n this.isUploadSection = this.tabDisplayed === 'img-upload';\n }\n\n displayLargeWindow(): void {\n this.switchDisplayWindow.emit(true);\n }\n\n onToggleImgSelected() {\n this.toggleImgSelected.next();\n }\n}\n","<div class=\"addCssPriority\" [@easeInOut]=\"'in'\" [ngClass]=\"{ 'fullSize': fullSize }\">\n <div class=\"img-card\">\n <div class=\"img-card__container\"\n [ngClass]=\"{\n 'smallDisplay': stateDisplayed === 'small' || isUploadSection,\n 'imgSelected': picture.selected,\n 'deletion': picture.deleted}\">\n <img\n class=\"img-card__container__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [alt]=\"picture.display_name\"\n (click)=\"onToggleImgSelected()\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <div\n class=\"img-card__container__config\"\n *ngIf=\"!picture.deleted && stateDisplayed !== 'small'\"\n >\n <button type=\"button\" class=\"size\"><i class=\"fal fa-image-polaroid\"></i><span>{{picture.raw_height}}x{{picture.raw_width}}</span></button>\n <button type=\"button\" class=\"dl\" (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"><i class=\"fal fa-download\"></i><span>{{ 'ImgManager.ImgCard.download' | translate }}</span></button>\n <button type=\"button\" class=\"edit\" (click)=\"onEdit(picture)\"><i class=\"far fa-crop-alt\"></i><span>{{ 'ImgManager.ImgCard.edit' | translate }}</span></button>\n <button type=\"button\" class=\"deleted\" (click)=\"activeConfirmDelete = true;\"><i class=\"fal fa-times\"></i><span>{{ 'ImgManager.ImgCard.del' | translate }}</span></button>\n <button type=\"button\" class=\"selected\" (click)=\"onToggleImgSelected()\" *ngIf=\"stateDisplayed !== 'window'\">\n <i *ngIf=\"!picture.selected\" class=\"fal fa-square\"></i>\n <i *ngIf=\"picture.selected\" class=\"fas fa-check-square checked\"></i>\n <span>{{ 'ImgManager.ImgCard.select' | translate }}</span>\n </button>\n </div>\n <div\n class=\"img-card__container__config img-card__container__config--small\"\n *ngIf=\"!picture.deleted && stateDisplayed === 'small'\"\n >\n <button class=\"show-edit\" (click)=\"displayLargeWindow()\"><i class=\"fas fa-edit\"></i></button>\n </div>\n <div class=\"img-card__container__delete\" [ngClass]=\"{ 'show' : activeConfirmDelete}\">\n <span>{{ 'ImgManager.ImgCard.confirmDeleteImg' | translate }}</span>\n <div>\n <button (click)=\"activeConfirmDelete = false;\">{{ 'no' | translate }}</button>\n <button (click)=\"onRemoveImg(picture);activeConfirmDelete = false;\">{{ 'yes' | translate }}</button>\n </div>\n </div>\n <div class=\"img-card__container__valid\" *ngIf=\"stateDisplayed === 'small' && tabDisplayed == 'img-upload'\">\n <i class=\"far fa-check\"></i>\n <span>{{ 'ImgManager.ImgCard.validImgSmall' | translate }}</span>\n </div>\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"img-card__container__overlay\"\n [ngClass]=\"{'img-card__container__overlay--smallDisplay': stateDisplayed === 'small' || isUploadSection}\">\n <i (click)=\"onToggleImgSelected()\" class=\"fad fa-folder-times\"></i>\n </div>\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"picture.deleted\"></span>\n\n </div>\n <div\n class=\"img-card__nameContainer\"\n [ngClass]=\"{'smallNameDisplay': stateDisplayed === 'small' || isUploadSection, 'focus': focusInput}\">\n <input\n type=\"text\"\n class=\"wzImgMngInput img-card__nameContainer__name\"\n [(ngModel)]=\"picture.display_name\"\n (ngModelChange)=\"onNameChange(picture.id_file)\"\n [ngModelOptions]=\"{standalone: true, updateOn: 'blur'}\"\n (focus)=\"previousName=picture.display_name;focusInput = true;\"\n (blur)=\"focusInput = false;\"\n >\n <span>{{picture.display_name}}</span>\n </div>\n\n </div>\n</div>\n","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { Subscription } from 'rxjs';\nimport { ImgSelectionService } from '../../services/img-selection.service';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { PictureNameUpdate, stateDisplayed, tabDisplayed } from '../../dto/export-dtos.api';\nimport { RenamePictureService } from '../../services/rename-picture.service';\n\n@Component({\n selector: 'upload-list',\n templateUrl: './upload-list.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class UploadListComponent implements OnInit {\n\n picturesList: ImgPictureDTO[] = [];\n imgSelectionChange: Subscription;\n selectImgEvent: Subscription;\n\n @Input() stateDisplayed: stateDisplayed;\n @Input() tabDisplayed: tabDisplayed;\n @Input() multipleImgMode: boolean = false;\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n constructor(\n private imgSelectionService: ImgSelectionService,\n private renamePictureService: RenamePictureService\n ) { }\n\n ngOnInit(): void {\n this.setEvents();\n }\n\n onImgUploaded(img: ImgPictureDTO[]) {\n img.forEach(picture =>\n this.picturesList.push(picture)\n );\n this.renamePictureService.setPicturesList(this.picturesList);\n }\n\n onToggleSelectImg(index: number) {\n if (this.stateDisplayed === 'window') {\n return;\n }\n if (!this.picturesList[index].selected) {\n this.imgSelectionService.addImgSelected(this.picturesList[index]);\n this.picturesList[index].selected = true;\n } else {\n this.imgSelectionService.removeImgSelectedById(this.picturesList[index].id_file);\n this.picturesList[index].selected = false;\n }\n }\n\n switchDisplayWindowCard() {\n this.switchDisplayWindow.emit(true);\n }\n\n onRenamePicture(pictureRenamed: PictureNameUpdate) {\n this.renamePictureService.renamePicture(pictureRenamed);\n }\n\n private setEvents() {\n this.imgSelectionChange = this.imgSelectionService.imgSelection$.subscribe(imgSelection =>{\n const idFileList = [];\n imgSelection.map(img => idFileList.push(img.id_file));\n for (const picture of this.picturesList) {\n if (idFileList.indexOf(picture.id_file) === -1) {\n picture.selected = false;\n }\n }\n });\n }\n ngOnDestroy(): void {\n this.imgSelectionChange.unsubscribe();\n }\n}\n","<div class=\"upload-list\" [ngClass]=\"{'smallDisplay': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n class=\"upload-list__scroll\"\n [ngClass]=\"{\n 'upload-list__scroll--smallDisplay': stateDisplayed === 'small',\n 'upload-list__scroll--window': stateDisplayed === 'window'}\"\n >\n <div class=\"upload-list__box\">\n <div class=\"upload-list__box__container\">\n <div>\n <p class=\"mainColor\">\n {{ picturesList? picturesList.length : '' }}\n <ng-container *ngIf=\"picturesList && picturesList.length > 1\">{{ 'ImgManager.UploadList.imgSuccessImport' | translate }}</ng-container>\n <ng-container *ngIf=\"picturesList && picturesList.length === 1\">{{ 'ImgManager.UploadList.imgSuccessImportOne' | translate }}</ng-container>\n </p>\n <div class=\"dropdown is-hoverable\">\n <div class=\"dropdown-trigger\">\n <i\n aria-haspopup=\"true\" aria-controls=\"dropdown-menuInfoSeo\"\n class=\"fas fa-info-circle\">\n </i>\n </div>\n <div class=\"dropdown-menu dropDownShadow\" id=\"dropdown-menuInfoSeo\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"upload-list__box__cards\">\n <div class=\"upload-list__box__cards__card\" *ngFor=\"let picture of picturesList; let index = index;\">\n <img-card\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n ></img-card>\n <div class=\"upload-list__box__cards__card__btnBox\">\n <button type=\"button\" class=\"button success upload-list__box__cards__card__btnBox__btn\"><i class=\"fal fa-check\"></i></button>\n </div>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n","import { Directive, Input, Output, EventEmitter, HostListener } from \"@angular/core\";\n\n@Directive({ selector: '[copy-clipboard]' })\nexport class CopyClipboardDirective {\n\n @Input(\"copy-clipboard\")\n public payload: string;\n\n @Output(\"copied\")\n public copied: EventEmitter<string> = new EventEmitter<string>();\n\n @HostListener(\"click\", [\"$event\"])\n public onClick(event: MouseEvent): void {\n\n event.preventDefault();\n if (!this.payload)\n return;\n\n let listener = (e: ClipboardEvent) => {\n let clipboard = e.clipboardData || window[\"clipboardData\"];\n clipboard.setData(\"text\", this.payload.toString());\n e.preventDefault();\n\n this.copied.emit(this.payload);\n };\n\n document.addEventListener(\"copy\", listener, false)\n document.execCommand(\"copy\");\n document.removeEventListener(\"copy\", listener, false);\n }\n}","import { EventEmitter } from '@angular/core';\nimport { Output } from '@angular/core';\nimport { Component, OnInit, Input } from '@angular/core';\nimport { ImgPictureDTO } from '../../../dto/img-manager.dto';\nimport { AlertService } from '../../../services/alert.service';\n\n@Component({\n selector: 'info-section',\n templateUrl: './info-section.component.html'\n})\nexport class EditorInfoSectionComponent implements OnInit {\n\n @Input()\n imgToEdit: ImgPictureDTO;\n\n @Input()\n set isNameModified(isNameModified: boolean) {\n this._isNameModified = isNameModified;\n }\n get isNameModified(): boolean {\n return this._isNameModified;\n }\n private _isNameModified: boolean = false;\n\n @Output()\n isNameModifiedChange = new EventEmitter<boolean>();\n\n imgName: string;\n imgRoute: string;\n\n msgCopyToClipBoard: string = 'ImgManager.ImgEditor.copytoClipBoard';\n\n constructor(\n private alertService: AlertService,\n ) { }\n\n ngOnInit(): void {\n this.init();\n }\n\n init() {\n this.imgName = this.imgToEdit.display_name;\n }\n getFileSize() {\n return this.imgToEdit ? Math.round(parseInt(this.imgToEdit.size)/1000) : '-';\n }\n\n copyToClipBoard(event) {\n this.alertService.openAlert(this.msgCopyToClipBoard);\n }\n\n onNameChange() {\n this.isNameModifiedChange.emit(true);\n }\n}\n","\n<!-- Img properties -->\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">\n {{ 'ImgManager.UploadList.properties.imgName' | translate }}\n <span class=\"img-editor__infoSection__propertyEditable__tooltips\" [nwbToolTip]=\"'ImgManager.ImgEditor.NameInfo' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></span>\n </p>\n <input\n type=\"text\"\n class=\"img-editor__infoSection__propertyEditable__input\"\n placeholder=\"{{'ImgManager.ImgEditor.nameEx' | translate}} \"\n [(ngModel)]=\"imgToEdit.display_name\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"onNameChange()\">\n</div>\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgURL' | translate }}</p>\n <button type=\"button\" [copy-clipboard]=\"imgToEdit.file_name | imgSrc : 'raw'\" (copied)=\"copyToClipBoard($event)\" ><span class=\"img-editor__infoSection__propertyEditable__span\">{{imgToEdit.file_name}}</span>&nbsp;&nbsp;<i class=\"far fa-copy\"></i></button>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgSize' | translate }}&nbsp;:</p>\n <p>{{imgToEdit.raw_height}}*{{imgToEdit.raw_width}}px</p>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgWeight' | translate }}&nbsp;:</p>\n <p >{{getFileSize()}}&nbsp;ko</p>\n</div>\n\n<!-- SEO info -->\n\n<span class=\"img-editor__infoSection__divider\"></span>\n\n<div class=\"img-editor__infoSection__titleSEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.title' | translate }}</p>\n</div>\n\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.reziseTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.webpTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.cdnTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.lazyloadingTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nexport const insertRemove = // the fade-in/fade-out animation.\ntrigger('insertRemoveAnnim', [\n transition(':enter', [\n style({ opacity: 0 }),\n animate('0.5s ease-in-out', style({ opacity: 1 })),\n ])\n]);\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dropdown',\n templateUrl: './dropdown.component.html'\n})\nexport class DropdownComponent implements OnInit {\n\n @Input()\n dropDownMenuClass: string;\n @Input()\n disable: boolean = false;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"dropdown dropdownWizi\" [ngClass]=\"{'is-hoverable': !disable}\">\n <div class=\"dropdown-trigger\">\n\n <!-- Label -->\n <ng-content select=\"[label]\"></ng-content>\n\n </div>\n <div class=\"dropdown-menu\" [ngClass]=\"dropDownMenuClass\" role=\"menu\">\n <div class=\"dropdown-content\">\n\n <!-- Content -->\n <ng-content select=\"[item]\"></ng-content>\n\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { ImageCroppedEvent, ImageTransform, OutputFormat } from 'ngx-image-cropper';\nimport { Subject } from 'rxjs';\nimport { insertRemove } from '../../../animations/insertRemove/insert-remove.animation';\nimport { CropperConfigDTO, ImgCropperConfigDTO } from '../../../dto/img-editor-config.dto';\nimport { ImgPictureDTO } from '../../../dto/img-manager.dto';\nimport { ImgCDNService } from '../../../services/config/img-cdn.service';\n\n@Component({\n selector: 'cropper',\n templateUrl: './cropper.component.html',\n animations: [\n insertRemove\n ]\n})\nexport class CropperComponent implements OnInit {\n\n @Input()\n imgToEdit: ImgPictureDTO;\n\n @Input()\n set isImgModified(isImgModified: boolean) {\n this._isImgModified = isImgModified;\n if (!isImgModified) {\n this.restartEdit();\n }\n }\n get isImgModified(): boolean {\n return this._isImgModified;\n }\n private _isImgModified: boolean = false;\n\n @Output()\n isImgModifiedChange = new EventEmitter<boolean>();\n\n @Output()\n editClosed = new EventEmitter();\n\n @Output()\n currentCroppedImageChange = new EventEmitter<string>();\n\n msgFailLoad: string = 'ImgManager.ImgEditor.msgFailLoad';\n\n isNameModified: boolean = false;\n isCropperReady: boolean = false; // Use to not display the crop validation btn, after the img is loaded or changed\n currentCroppedImage: string = ''; // Img modified return in base64\n isCropped: boolean = false;\n isLoading: boolean = false;\n\n _isImgCropped: boolean = false;\n set isImgCropped(isImgCropped: boolean) {\n setTimeout(() => {\n this._isImgCropped = isImgCropped;\n }, 0);\n }\n\n get isImgCropped() : boolean {\n return this._isImgCropped;\n }\n imgCropperChange: Subject<void> = new Subject<void>();\n skipNextImgCropped: number = 1;\n\n // Image Cropper properties\n imgType: OutputFormat;\n imgRoute: string;\n imageChangedEvent: any = '';\n croppedImage: any = '';\n canvasRotation = 0;\n rotation = 0;\n scale = 1;\n showCropper = false;\n containWithinAspectRatio = false;\n transform: ImageTransform = {};\n\n defaultAspectRatio: number;\n\n // dropdown list\n resolutionConfig:ImgCropperConfigDTO[] = [\n {\n label: 'ImgManager.ImgEditor.config.origin',\n config: {\n maintainAspectRatio: true\n },\n },\n {\n label: 'ImgManager.ImgEditor.config.free',\n config: {\n maintainAspectRatio: false\n },\n active: true\n },\n {\n label: 'ImgManager.ImgEditor.config.square',\n config: {\n maintainAspectRatio: true,\n aspectRatio: 1 / 1\n }\n },\n {\n label: 'ImgManager.ImgEditor.config.Portrait',\n config: {\n maintainAspectRatio: true,\n aspectRatio: 3 / 4\n }\n },\n {\n label: 'ImgManager.ImgEditor.config.landscape',\n config: {\n maintainAspectRatio: true,\n aspectRatio: 5 / 3\n }\n }\n ];\n\n rotationConfig:ImgCropperConfigDTO[] = [\n {\n label: 'ImgManager.ImgEditor.config.schedule',\n icon: \"fal fa-redo-alt\",\n method: \"rotateRight\",\n active: true\n },\n {\n label: 'ImgManager.ImgEditor.config.AntiSchedule',\n icon: \"fal fa-undo-alt\",\n method: \"rotateLeft\"\n },\n {\n label: 'ImgManager.ImgEditor.config.flipVert',\n icon: \"fal fa-sort-alt\",\n method: \"flipVertical\"\n },\n {\n label: 'ImgManager.ImgEditor.config.flipHoriz',\n icon: \"fal fa-exchange-alt\",\n method: \"flipHorizontal\"\n }\n ];\n\n zoomConfig:ImgCropperConfigDTO[] = [\n {\n label: 'ImgManager.ImgEditor.config.zoom',\n icon: \"fal fa-search-plus\",\n method: \"zoomIn\",\n active: true\n },\n {\n label: 'ImgManager.ImgEditor.config.dezoom',\n icon: \"fal fa-search-minus\",\n method: \"zoomOut\"\n }\n ];\n\n // Img cropper variables\n imgCropperConfig:CropperConfigDTO = {\n maintainAspectRatio: false,\n aspectRatio: undefined\n }\n\n constructor(\n private imgCDNService: ImgCDNService\n ) { }\n\n ngOnInit(): void {\n this.init();\n this.detectImgCropperChange();\n }\n\n init() {\n this.imgRoute = this.getRAWImgRoute();\n this.imgType = this.getImgType();\n this.croppedImage = null;\n this.setDefautAspectRatio();\n }\n\n getRAWImgRoute(){\n return this.imgCDNService.getUrlImg('raw') + this.imgToEdit.file_name;\n }\n\n getImgType() {\n return (this.imgToEdit.file_name ? this.imgToEdit.file_name.split('.').pop() : undefined) as OutputFormat;\n }\n\n setDefautAspectRatio() {\n const height = parseInt(this.imgToEdit.raw_height);\n const width = parseInt(this.imgToEdit.raw_width);\n this.defaultAspectRatio = height / width;\n this.resolutionConfig[0].config.aspectRatio = this.defaultAspectRatio;\n this.imgCropperConfig.aspectRatio = this.defaultAspectRatio;\n }\n\n onEditClosed(msgKey?: string) {\n this.editClosed.emit(msgKey);\n }\n\n onRestart() {\n this.isImgModifiedChange.emit(false);\n }\n\n restartEdit() {\n this.init();\n this.resetConfCropper();\n }\n\n onImgModified() {\n this.isImgModified = true;\n this.isImgModifiedChange.emit(true);\n }\n\n ////// Img cropper methods ////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n /* Cropper output events */\n\n fileChangeEvent(event: any): void {\n this.imageChangedEvent = event;\n }\n\n imageCropped(event: ImageCroppedEvent) {\n this.imgCropperChange.next();\n\n this.currentCroppedImage = event.base64;\n this.currentCroppedImageChange.emit(this.currentCroppedImage);\n }\n\n imageLoaded() {\n this.showCropper = true;\n }\n\n cropperReady() {\n this.isCropperReady = true;\n }\n\n loadImageFailed() {\n this.onEditClosed(this.msgFailLoad);\n }\n\n /* Resize functions */\n\n changeResolutionSize(index: number) {\n this.setActiveItem(this.resolutionConfig, index);\n const config = this.resolutionConfig[index].config;\n this.setCropperProperties(config);\n }\n\n confirmCrop() {\n\n setTimeout(() => { // Avoid image-cropper error\n this.imgRoute = null;\n this.croppedImage = this.currentCroppedImage;\n this.skipNextImgCropped = 2;\n this.isImgCropped = false;\n }, 0);\n\n this.resetConfCropper();\n this.onImgModified();\n }\n\n resetConfCropper() {\n this.scale = 1;\n this.rotation = 0;\n this.canvasRotation = 0;\n this.transform = {};\n }\n\n private setActiveItem(array:any[], index: number) {\n // Set active-item class for the dropdown\n array.forEach((item, indexItem) => {\n item.active = indexItem === index ? true : false;\n });\n }\n\n private setCropperProperties(config: any) {\n for (const property in config) {\n this.imgCropperConfig[property] = config[property];\n }\n }\n\n private detectImgCropperChange() {\n this.imgCropperChange\n .subscribe(() => {\n this.skipNextImgCropped--;\n if (this.skipNextImgCropped >= 0) {\n return;\n }\n this.skipNextImgCropped = 0;\n this.isImgCropped = true;\n })\n\n }\n\n /* Rotations functions */\n\n rotateLeft() {\n this.canvasRotation--;\n this.flipAfterRotate();\n this.onImgModified();\n }\n\n rotateRight() {\n this.canvasRotation++;\n this.flipAfterRotate();\n this.onImgModified();\n }\n\n flipHorizontal() {\n this.transform = {\n ...this.transform,\n flipH: !this.transform.flipH\n };\n this.onImgModified();\n }\n\n flipVertical() {\n this.transform = {\n ...this.transform,\n flipV: !this.transform.flipV\n };\n this.onImgModified();\n }\n\n private flipAfterRotate() {\n const flippedH = this.transform.flipH;\n const flippedV = this.transform.flipV;\n this.transform = {\n ...this.transform,\n flipH: flippedV,\n flipV: flippedH\n };\n }\n\n /* Zoom functions */\n\n zoomOut() {\n this.scale -= this.scale < 0.2? 0 : .1;\n this.transform = {\n ...this.transform,\n scale: this.scale\n };\n this.onImgModified();\n }\n\n zoomIn() {\n this.scale += .1;\n this.transform = {\n ...this.transform,\n scale: this.scale\n };\n this.onImgModified();\n }\n\n applyMethod(method: string) {\n this[method](); // call the method contains in zoomConfig or rotationConfig\n }\n}\n","<div class=\"img-editor__container__toolsContainer\">\n\n <div *ngIf=\"isImgCropped\">\n <div\n class=\"img-editor__container__toolsContainer__tool img-editor__container__toolsContainer__tool--button\"\n (click)=\"confirmCrop()\"\n [nwbToolTip]=\"'ImgManager.ImgEditor.ValidtToolTip' | translate\"\n nwbToolTipPosition=\"left\"\n >\n <i class=\"far fa-check\"></i>\n <p>{{ 'ImgManager.ImgEditor.Valid' | translate }}</p>\n </div>\n </div>\n\n <!-- Resolution -->\n <dropdown dropdownId=\"dropdown-resolution\">\n <ng-container label>\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n >\n <i class=\"far fa-crop\"></i>\n <p>{{ 'ImgManager.ImgEditor.crop' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of resolutionConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"changeResolutionSize(index)\">\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Zoom -->\n <dropdown dropdownId=\"dropdown-rotation\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"zoomIn()\">\n <i class=\"far fa-expand-arrows-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.display' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of zoomConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Rotation -->\n <dropdown dropdownId=\"dropdown-rotation\" dropDownMenuClass=\"img-editor__container__toolsContainer__RotationDropdown\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"rotateRight()\">\n <i class=\"far fa-redo\"></i>\n <p>{{ 'ImgManager.ImgEditor.rotation' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of rotationConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n (click)=\"onRestart()\"\n @insertRemoveAnnim\n >\n <i class=\"far fa-retweet-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.restart' | translate }}</p>\n </div>\n</div>\n\n<div class=\"img-editor__image-cropper\" >\n <image-cropper\n [imageURL]=\"imgRoute\"\n [imageBase64]=\"croppedImage\"\n [maintainAspectRatio]=\"imgCropperConfig.maintainAspectRatio\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"imgCropperConfig.aspectRatio\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [alignImage]=\"'center'\"\n [style.display]=\"showCropper ? null : 'none'\"\n [format]=\"imgType\"\n [backgroundColor]=\"'white'\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n (cropperReady)=\"cropperReady()\"\n (loadImageFailed)=\"loadImageFailed()\"\n ></image-cropper>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { Observable, forkJoin } from 'rxjs';\nimport { ImgManagerService } from '../../services/img-manager.service';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { RenamePictureService } from '../../services/rename-picture.service';\n\n@Component({\n selector: 'img-editor',\n templateUrl: './img-editor.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class ImgEditorComponent implements OnInit {\n\n @Input()\n stateDisplayed;\n @Input()\n imgToEdit: ImgPictureDTO;\n\n @Output() editClosed = new EventEmitter();\n\n isLoading: boolean = false;\n isImgModified: boolean = false;\n isNameModified: boolean = false;\n currentCroppedImage: string = ''; // Img modified return in base64 by the cropper\n private previousName: string;\n\n msgFailSave: string = 'ImgManager.ImgEditor.msgFailSave';\n msgFailLoad: string = 'ImgManager.ImgEditor.msgFailLoad';\n msgSuccessEdit: string = \"Les modifications de l'image ont bien été enregistrées.\"\n\n constructor(\n private imgManagerService: ImgManagerService,\n private renamePictureService: RenamePictureService\n ) { }\n\n ngOnInit(): void {\n this.previousName = this.imgToEdit.display_name;\n }\n\n onSave() {\n if (this.isLoading) {\n return;\n }\n this.isLoading = true;\n\n if (!this.isImgModified && !this.isNameModified) {\n this.isLoading = false;\n this.onEditClosed();\n }\n\n const obsReplaceImg = this.imgManagerService.replaceImg(this.currentCroppedImage, this.imgToEdit.id_file);\n const obsChangeImgName = this.renamePictureService.changeImageName(this.imgToEdit.display_name, this.imgToEdit.id_file);\n\n if(this.isImgModified && this.isNameModified) {\n this.renameAndReplaceImg(obsChangeImgName, obsReplaceImg);\n return;\n }\n\n if(this.isImgModified){\n obsReplaceImg.subscribe({\n next: data => {\n this.isLoading = false;\n this.onEditClosed(this.msgSuccessEdit);\n },\n error: error => {\n this.isLoading = false;\n this.currentCroppedImage = '';\n this.onEditClosed(this.msgFailSave);\n }});\n return;\n }\n\n if (this.isNameModified) {\n obsChangeImgName.subscribe({\n next: data => {\n this.isLoading = false;\n this.previousName = this.imgToEdit.display_name;\n this.onEditClosed(this.msgSuccessEdit);\n },\n error: error => {\n this.isLoading = false;\n this.imgToEdit.display_name = this.previousName;\n this.onEditClosed(this.msgFailSave);\n }\n });\n }\n this.isNameModified = false;\n }\n\n onEditClosed(msgKey?: string) {\n this.editClosed.emit(msgKey);\n }\n\n onRestartEdit() {\n this.isImgModified = false;\n this.isNameModified = false;\n this.imgToEdit.display_name = this.previousName;\n }\n\n onCancel() {\n this.onEditClosed('');\n }\n\n onImgCropped(imgBase64: string) {\n this.currentCroppedImage = imgBase64;\n }\n\n private renameAndReplaceImg(obsChangeImgName: Observable<any>, obsReplaceImg: Observable<any>) {\n // Avoid to use forkjoin, because it can create conflict and loose the img\n obsChangeImgName.subscribe({\n next: res1 => {\n obsReplaceImg.subscribe({\n next: res2 => {\n this.onEditClosed(this.msgSuccessEdit);\n },\n error: error => {\n this.onEditClosed(this.msgFailSave);\n }\n });\n },\n error: error => {\n this.onEditClosed(this.msgFailSave);\n }\n });\n }\n}\n","<div class=\"img-editor\" [@easeInOut]=\"'in'\">\n\n <!-- Button Action Section -->\n\n <div class=\"img-editor__infoSection__actions\">\n <div>\n <button\n type=\"button\"\n class=\"button img-editor__infoSection__actions__cancel\"\n (click)=\"onCancel()\"\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <div\n class=\"button danger button img-editor__infoSection__actions__save\"\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\n (click)=\"onSave()\"\n >\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\n </div>\n\n </div>\n </div>\n\n <ng-scrollbar\n class=\"img-editor__scroll\"\n [ngClass]=\"{\n 'img-editor__scroll--full': stateDisplayed === 'full',\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\n 'img-editor__scroll--window': stateDisplayed === 'window'\n }\"\n >\n <div class=\"columns\">\n <!-- Left section -->\n <div class=\"column is-one-third img-editor__infoSection\">\n\n <info-section\n [imgToEdit]=\"imgToEdit\"\n [(isNameModified)]=\"isNameModified\"\n >\n </info-section>\n </div>\n\n\n <!-- Right section -->\n <div class=\"column img-editor__container\">\n <cropper\n [imgToEdit]=\"imgToEdit\"\n [(isImgModified)]=\"isImgModified\"\n (currentCroppedImageChange)=\"onImgCropped($event)\"\n (editClosed)=\"onEditClosed($event)\">\n </cropper>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n","import { Directive, ElementRef, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\nimport { DomService } from '../services/dom.service';\n\n@Directive({\n selector: '[wzAutoHide]'\n})\nexport class AutoHideDirective implements AfterViewInit {\n @Input() triggerElement: string;\n @Input() forceOn: Array<string> = null;\n\n constructor(private _elementRef: ElementRef, private domService: DomService) {}\n\n @Output('clickOutside') clickOutside: EventEmitter<any> = new EventEmitter();\n\n ngAfterViewInit(): void {\n this.domService.documentEvent().subscribe((targetElement: Element) => {\n const clickedInside = this._elementRef.nativeElement.contains(targetElement);\n const classNameFromElement = targetElement.getAttribute('class');\n\n if (!clickedInside && (classNameFromElement === null || !classNameFromElement.includes(this.triggerElement))) {\n this.clickOutside.emit(null);\n }\n\n if (this.forceOn != null && classNameFromElement !== null) {\n let needToClose = true;\n this.forceOn.forEach(v => {\n if (!classNameFromElement.includes(v)) {\n needToClose = false;\n }\n });\n if (needToClose) {\n this.clickOutside.emit(null);\n }\n }\n });\n }\n}\n","import {Component, OnInit, Output, EventEmitter, Input, OnDestroy } from '@angular/core';\nimport { CanvaService } from '../../services/canva.service';\nimport { CanvaButtonApi } from '../../dto/canva.dto';\nimport { WiziBlockMediaDto } from '../../dto/wizi-block-media.dto';\nimport { Subscription } from 'rxjs';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\n\n@Component({\n selector: 'canva-btn',\n templateUrl: './canva-btn.component.html'\n})\nexport class CanvaBtnComponent implements OnInit, OnDestroy {\n\n @Input() stateDisplayed: stateDisplayed;\n\n @Output() showImgUploaded = new EventEmitter();\n\n canvaApi: CanvaButtonApi;\n canvaLogoRouteAssets: string;\n imgLoading = false;\n\n availableFormat = {\n 'ImgManager.CanvaBtn.smallSquare' : {\n 'width' : 500,\n 'height' : 500\n },\n 'ImgManager.CanvaBtn.mediumSquare' : {\n 'width' : 1000,\n 'height' : 1000\n },\n 'ImgManager.CanvaBtn.bigSquare' : {\n 'width' : 2500,\n 'height' : 2500\n }\n }\n\n openDropDownMenu: boolean = false;\n\n expectedHeight: number;\n expectedWidth: number;\n subs: Subscription[] = [];\n\n constructor(\n private canvaService: CanvaService\n ) { }\n\n ngOnInit(): void {\n this.canvaLogoRouteAssets = this.canvaService.getCanvaLogo();\n this.listenCanvaExpectedSize();\n }\n\n listenCanvaExpectedSize() {\n // Subcribe to askImg from wizi-block\n const subExpectedImgSizesChange =\n this.canvaService.bindEventExepectedImgSizeChange().subscribe( (mediaDTO: WiziBlockMediaDto) => {\n if (mediaDTO) {\n this.expectedWidth = parseInt(mediaDTO.image_width, 10);\n this.expectedHeight = parseInt(mediaDTO.image_height, 10);\n } else {\n this.expectedWidth = undefined;\n this.expectedHeight = undefined;\n }\n });\n this.subs.push(subExpectedImgSizesChange);\n }\n\n onOpenCanva(width: number, height: number) {\n this.canvaService.openCanva(width, height);\n }\n\n ngOnDestroy() {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","<div class=\"canva dropdown is-right is-hoverable\"\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\n >\n <div class=\"dropdown-trigger\">\n <div\n class=\"button canva-btn\"\n aria-controls=\"dropdown-menuCanva\"\n (click)=\"openDropDownMenu = true;\"\n >\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\n\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropDownShadow\"\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\n id=\"dropdown-menuCanva\"\n role=\"menu\">\n <ng-scrollbar\n class=\"smallScroll\"\n >\n <div class=\"dropdown-content\">\n <div class=\"dropdownTitle\">\n <p>{{'ImgManager.CanvaBtn.createImg.title' | translate}}</p>\n </div>\n\n <div class=\"infoItem\">\n <p>{{'ImgManager.CanvaBtn.info' | translate}}</p>\n </div>\n\n <ng-container >\n <div\n *ngIf=\"expectedWidth && expectedHeight\"\n class=\"dropdown-item-wrapper\"\n >\n <div class=\"dropdown-item expectedSizes\" (click)=\"onOpenCanva(expectedWidth, expectedHeight)\">\n <p>{{'ImgManager.CanvaBtn.recommanded' | translate}}</p><p>{{expectedWidth}}*{{expectedHeight}}</p>\n </div>\n </div>\n </ng-container>\n\n <div\n *ngFor=\"let format of availableFormat| keyvalue\"\n class=\"dropdown-item-wrapper\">\n <div\n (click)=\"onOpenCanva(format.value.width, format.value.height)\"\n class=\"dropdown-item\">\n <p>{{format.key | translate}}</p><p>{{format.value.width}}*{{format.value.height}}</p>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'IsLastPage'\n})\nexport class PagniationIsLastPage implements PipeTransform {\n /**\n * Return true, if the current page is the last page. Otherwise, return false.\n * @param currentPage\n * @param totalItems\n * @param itemsPerPage\n */\n transform(currentPage: number, totalItems: number, itemsPerPage: number): boolean {\n if (!(currentPage >= 0 && totalItems >= 0 && itemsPerPage >= 0)) {\n throw new Error('currentPage or totalItems or itemsPerPage is/are missing in PagniationIsLastPage pipe.');\n }\n return currentPage === Math.ceil(totalItems / itemsPerPage);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ArrayTotalPages'\n})\nexport class PagniationArrayTotalPages implements PipeTransform {\n /**\n * Return an incremental array corresponding with the number page\n * [ 1, 2, 3 ..., last page number ]\n * @param totalItems\n * @param itemsPerPage\n */\n transform(totalItems: number, itemsPerPage: number): number[] {\n if (!(totalItems >= 0 && itemsPerPage >= 0)) {\n throw new Error('totalItems or itemsPerPage missing in ArrayTotalPages pipe.');\n }\n const arrayLength: number = Math.ceil(totalItems / itemsPerPage);\n return Array.apply(null, { length: arrayLength })\n .map(Number.call, Number)\n .map((x: number) => x + 1);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'LargeNumberOfPage'\n})\nexport class LargeNumberOfPagePipe implements PipeTransform {\n /**\n * Return an incremental array\n * Display 30 pages, from -15 to +15 of the current page\n * @param totalItems\n * @param itemsPerPage\n */\n transform(totalItems: number, itemsPerPage: number, currentPage: number): Array<{value: number, display:number}> {\n if (!(totalItems >= 0 && itemsPerPage >= 0)) {\n throw new Error('totalItems or itemsPerPage missing in ArrayTotalPages pipe.');\n }\n\n let arrayLength: number = 32;\n\n const startAtPage = currentPage <= 15 ? 0: currentPage - 15;\n const totalPage = Math.ceil(totalItems / itemsPerPage);\n\n\n\n const arrayWithPageNumber = Array.apply(null, { length: arrayLength })\n .map(Number.call, Number)\n .map((x: number) => {\n\n const pageIndex:any = {\n display: startAtPage + x + 1,\n value: startAtPage + x + 1\n };\n\n if (x === arrayLength - 2) {\n pageIndex.display = '...';\n }\n if (x === arrayLength - 1) {\n pageIndex.display = totalPage;\n pageIndex.value = totalPage;\n }\n return pageIndex;\n });\n\n\n if (startAtPage) {\n arrayWithPageNumber.unshift(\n {\n display: 1,\n value: 1\n },\n {\n display: \"...\",\n value: 2\n }\n );\n }\n return arrayWithPageNumber;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PaginationFilters {\n totalItems: number;\n itemsPerPage: number;\n currentPage: number;\n}\n\n@Component({\n selector: 'wz-page-selector',\n templateUrl: './page-selector.component.html'\n})\nexport class PageSelectorComponent {\n\n @Input() set pagination(pagination: PaginationFilters) {\n this._pagination = pagination;\n }\n get pagination(): PaginationFilters {\n return this._pagination;\n }\n private _pagination: PaginationFilters;\n\n @Input() set totalItems(totalItems: number) {\n this.numberOfPage = Math.ceil(totalItems / this.pagination.itemsPerPage);\n this.largeNumberOfPage = this.numberOfPage > 30;\n }\n get totalItems(): number {\n return this._totalItems;\n }\n private _totalItems: number;\n openAbsoluteSelect:boolean = false;\n\n largeNumberOfPage: boolean = false;\n numberOfPage: number = 0;\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n\n constructor() {}\n\n onGotoPageChange(event, directValue) {\n if (directValue) {\n this.pageChange.emit(event);\n this.openAbsoluteSelect = false;\n } else {\n this.pageChange.emit(parseInt(event.target.value));\n }\n }\n}\n","<div class=\"wz-selector\">\n\n <div class=\"wz-selector__default\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <div class=\"wz-selector__default__base\" *ngIf=\"largeNumberOfPage;\" (click)=\"openAbsoluteSelect = !openAbsoluteSelect\">\n <input name=\"page-input\" [value]=\"pagination.currentPage\" (change)=\"onGotoPageChange($event, false);openAbsoluteSelect = false;\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\" />\n <i class=\"fas fa-sort-down\"></i>\n </div>\n <div class=\"wz-selector__default__absolute\" *ngIf=\"openAbsoluteSelect\">\n <div class=\"wz-selector__default__absolute__wrapper\" *ngFor=\"let pageIndex of (pagination.totalItems | LargeNumberOfPage: pagination.itemsPerPage : pagination.currentPage).slice().reverse() as result\">\n <div class=\"wz-selector__default__absolute__wrapper__item\" [ngClass]=\"{'selected': pageIndex.value === pagination.currentPage}\" (click)=\"onGotoPageChange(pageIndex.value, true)\">\n <span>{{ pageIndex.display }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"!largeNumberOfPage\">\n <select name=\"page\" (change)=\"onGotoPageChange($event, false)\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <ng-container *ngFor=\"let pageIndex of pagination.totalItems | ArrayTotalPages: pagination.itemsPerPage\">\n <option [selected]=\"pageIndex === pagination.currentPage\" [value]=\"pageIndex\">\n {{ pageIndex }}\n </option>\n </ng-container>\n </select>\n </ng-container>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'customPagniationText'\n})\nexport class PagniationText implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * Update pagination text if at least one entrie change\n * @param currentPage\n * @param totalItems\n * @param itemsPerPage\n */\n transform(currentPage: number, totalItems: number, itemsPerPage: number): any {\n let currentItemsLow = 0,\n currentItemsHigh = 0;\n\n if (totalItems) {\n currentItemsLow = (currentPage - 1) * itemsPerPage + 1;\n currentItemsHigh = currentPage * itemsPerPage;\n }\n\n if (currentItemsHigh > totalItems) {\n currentItemsHigh = totalItems;\n }\n\n return this.translateService.instant('PaginationComponent.on', { low: currentItemsLow, high: currentItemsHigh, total: totalItems });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PagniationIsLastPage } from '../../../pipes/pagination/total-pages/is-last-page.pipe';\n\nexport interface PaginationFilters {\n totalItems: number;\n itemsPerPage: number;\n currentPage: number;\n}\n\n@Component({\n selector: 'wz-pagination',\n templateUrl: './pagination.component.html'\n})\nexport class PaginationComponent {\n @Input() set pagination(pagination: PaginationFilters) {\n this._pagination = pagination;\n }\n get pagination(): PaginationFilters {\n return this._pagination;\n }\n private _pagination: PaginationFilters;\n\n @Output() pageChange: EventEmitter<PaginationFilters> = new EventEmitter();\n\n constructor() {}\n\n decrementPage() {\n if (this.pagination.currentPage <= 1) {\n return;\n }\n this.pagination.currentPage--;\n this.pageChange.emit(this.pagination);\n }\n\n incrementPage() {\n const isLastPage = new PagniationIsLastPage().transform(\n this.pagination.currentPage,\n this.pagination.totalItems,\n this.pagination.itemsPerPage\n );\n if (isLastPage) {\n return;\n }\n this.pagination.currentPage++;\n this.pageChange.emit(this.pagination);\n }\n\n onGotoPageChange(pageNumber) {\n this.pagination.currentPage = parseInt(pageNumber);\n this.pageChange.emit(this.pagination);\n }\n}\n","<div class=\"wz-pagination\" *ngIf=\"pagination && pagination.itemsPerPage\">\n <div class=\"wz-pagination__wrapper\">\n <div class=\"wz-pagination__wrapper__page\">\n <p>{{ 'PaginationComponent.page' | translate }}</p>\n\n <wz-page-selector [pagination]=\"pagination\" [totalItems]=\"pagination.totalItems\" (pageChange)=\"onGotoPageChange($event)\"></wz-page-selector>\n </div>\n\n <div class=\"wz-pagination__wrapper__elements\">\n <p>{{ pagination.currentPage | customPagniationText: pagination.totalItems:pagination.itemsPerPage }}</p>\n </div>\n\n <div class=\"wz-pagination__wrapper__arrows\">\n <div\n (click)=\"decrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--left\"\n [ngClass]=\"{ 'wz-pagination__wrapper__arrows__arrow--disabled': pagination.currentPage === 1 }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n <div\n (click)=\"incrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--right\"\n [ngClass]=\"{\n 'wz-pagination__wrapper__arrows__arrow--disabled':\n pagination.currentPage | IsLastPage: pagination.totalItems:pagination.itemsPerPage\n }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n </div>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'numberToArray'\n})\nexport class NumberToArray implements PipeTransform {\n\n transform(number: number): any[] {\n return Array.from('x'.repeat(number));\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { listAnnimation } from '../../../animations/listAnnimation/list.animation';\nimport { PictureNameUpdate, tabDisplayed } from '../../../dto/export-dtos.api';\nimport { AlertService } from '../../../services/alert.service';\nimport { ImgCDNService } from '../../../services/config/img-cdn.service';\nimport { ImgEventService } from '../../../services/img-event.service';\nimport { ImgManagerService } from '../../../services/img-manager.service';\nimport { ImgSelectionService } from '../../../services/img-selection.service';\nimport { ImagesActionHandler } from '../images-actions-handler';\nimport { ApiService } from '../../../services/api.service';\n\n@Component({\n selector: 'mosaic-view',\n templateUrl: './mosaic-view.component.html',\n animations: [\n listAnnimation\n ]\n})\nexport class MosaicViewComponent extends ImagesActionHandler implements OnInit {\n\n @Input()\n tabDisplayed: tabDisplayed;\n @Input()\n fullSize: boolean;\n @Input()\n nbFakeImg: number = 0;\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n constructor(\n imgManager: ImgManagerService,\n imgSelectionService: ImgSelectionService,\n http: HttpClient,\n imgCDNService: ImgCDNService,\n imgEventCardService: ImgEventService,\n alertService: AlertService,\n translateService: TranslateService,\n apiService: ApiService\n ) {\n super(\n imgManager,\n imgSelectionService,\n http,\n imgCDNService,\n imgEventCardService,\n alertService,\n translateService,\n apiService\n );\n }\n\n ngOnInit(): void {\n }\n\n onSearchChange(event: string) {\n // Reset table filters\n this.tableFilters.sort = undefined;\n this.tableFilters.order = undefined;\n this.tableFilters.currentPage = 1;\n this.filtersChange.emit(this.tableFilters);\n }\n\n onCardRenamePicture(pictureRenamed: PictureNameUpdate) {\n this.pictureNameChange.next(pictureRenamed);\n }\n\n switchDisplayWindowCard() {\n this.switchDisplayWindow.emit(true);\n }\n\n trackById(index: number, picture: any) {\n return picture.id;\n }\n}\n","<div class=\"mosaic\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small', 'mosaic--displayPexelsImg': displayPexelsResults}\">\n <!-- Search section -->\n <div\n class=\"mosaic__search\"\n [ngClass]=\"{'mosaic__search--small': stateDisplayed === 'small'}\"\n *ngIf=\"tabDisplayed !== 'img-upload'\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"onSearchChange($event)\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [smallPadding]=\"stateDisplayed === 'small'\"\n ></wz-input-search>\n </div>\n\n <!-- Cards section -->\n <div\n class=\"mosaic__container__cards\"\n [ngClass]=\"{'mosaic__container__cards--padding': stateDisplayed !== 'window'}\"\n [@listAnimation]=\"picturesList.length\"\n *ngIf=\"!isLoading && !displayPexelsResults\"\n >\n <img-card\n *ngFor=\"let picture of picturesList; let index = index; trackBy: trackById \"\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [disable]=\"disable\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (pictureNameChange)=\"onCardRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n [fullSize]=\"fullSize\"\n ></img-card>\n <div\n *ngFor=\"let fakeImg of nbFakeImg | numberToArray\"\n class=\"mosaic__container__cards__fakeImg\"\n [ngClass]=\"{'mosaic__container__cards__fakeImg--smallFakeImg': stateDisplayed === 'small' || tabDisplayed === 'img-upload'}\">\n </div>\n </div>\n\n <!-- Loader section -->\n <div class=\"mosaic__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n\n <!-- Pagination section -->\n <div class=\"mosaic__pagination\" *ngIf=\"picturesList.length && tabDisplayed !== 'img-upload' && !displayPexelsResults\" >\n <wz-pagination\n [pagination]=\"tableFilters\"\n (pageChange)=\"onFiltersChange()\"\n >\n </wz-pagination>\n </div>\n\n</div>\n","import { Injectable } from '@angular/core';\nimport { NwbFilterGroup, NwbFilterRoutingBuilder } from '@wizishop/ng-wizi-bulma';\nimport { Subject } from 'rxjs';\nimport { PaginationFilters } from '../../components/shared/pagination/pagination.component';\n\nexport interface TableFilters extends PaginationFilters {\n sort: string;\n order: boolean;\n searchValue: string;\n}\n\n@Injectable()\nexport class FiltersTableService {\n filterGroups = new Map<string, NwbFilterGroup>();\n dataTableFilters: TableFilters = {\n sort: undefined,\n order: undefined,\n searchValue: undefined,\n totalItems: 0,\n itemsPerPage: 0,\n currentPage: 0\n };\n\n private sortSubject: Subject<any> = new Subject<any>();\n\n constructor(private filterRoutingBuilder: NwbFilterRoutingBuilder) {}\n\n getTableFilterGroup(dataTableName: string) {\n if (this.filterGroups.has(dataTableName)) {\n return this.filterGroups.get(dataTableName);\n }\n const filterGroup: NwbFilterGroup = this.filterRoutingBuilder.group(this.dataTableFilters, dataTableName);\n this.filterGroups.set(dataTableName, filterGroup);\n return filterGroup;\n }\n\n /**\n * Use to reset the others sorts of the table\n * @param dataTableName\n * @param sortName\n * @param order\n */\n emitSortChange(dataTableName: string, sortName: string, order: boolean) {\n this.sortSubject.next({ dataTableName, sortName, order });\n }\n\n getSortChangeListner() {\n return this.sortSubject.asObservable();\n }\n\n setPaginationFilters(dataTableName: string, totalItems: number, itemsPerPage: number, currentPage: number) {\n const filterGroup = this.getTableFilterGroup(dataTableName);\n filterGroup.setValues({\n itemsPerPage,\n currentPage\n });\n }\n\n setInitialPaginationFiltersIfNotExist(dataTableName: string, itemsPerPage: number, currentPage: number) {\n const filterGroup = this.getTableFilterGroup(dataTableName);\n filterGroup.setValues({\n itemsPerPage: filterGroup.get('itemsPerPage') ? parseInt(filterGroup.get('itemsPerPage')) : itemsPerPage,\n currentPage: filterGroup.get('currentPage') ? parseInt(filterGroup.get('currentPage')) : currentPage\n });\n }\n}","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'wz-checkbox',\n templateUrl: './checkbox.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }]\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input()\n label = '';\n @Input()\n value: any;\n @Input()\n type: string;\n @Input()\n alone = false;\n @Input()\n checked = false;\n @Input()\n id = '';\n @Input()\n name: string;\n disabled = false;\n constructor() {}\n private _onChange: Function;\n private _onTouched: Function;\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n writeValue(obj: any): void {\n this.value = obj;\n }\n\n onChange(value) {\n if (this._onChange) {\n this._onChange(value);\n }\n }\n}\n","<div class=\"checkBoxField field\" [ngClass]=\"{ 'field--nowrap': type === 'column', alone: alone }\">\n <div class=\"field__row\">\n <input\n type=\"checkbox\"\n [id]=\"id\"\n class=\"is-checkradio\"\n [name]=\"name\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [checked]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n />\n <label [attr.for]=\"id\">{{ label }}</label>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { NwbFilterGroup } from '@wizishop/ng-wizi-bulma';\nimport { Subscription } from 'rxjs';\nimport { TableFilters, FiltersTableService } from '../../../services/table/filters-table.service';\n\n@Component({\n selector: 'wz-table',\n templateUrl: './table.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TableComponent implements OnInit {\n /// Input/Output of table filters ///\n\n @Input() tableFilters: TableFilters;\n @Output() tableFiltersChange: EventEmitter<TableFilters> = new EventEmitter();\n\n @Input() tableRoutingName: string; // Name of the table\n @Input() placeholder: string = '';\n\n private _filterGroup: NwbFilterGroup;\n\n /// Input/Output of checkbox ///\n\n /** Pass to true to display checkbox in the header table */\n @Input() checkbox = false;\n /** Emit new header checboxValue */\n @Output() toggleAllCheckBox: EventEmitter<boolean> = new EventEmitter();\n\n /// Input to disable section ///\n\n /** Pass to true to hide search input */\n @Input() disableSearch: boolean = false;\n /** Pass to true to hide the pagniator */\n @Input() disablePagniation: boolean = false;\n\n /// Input for loader on table body ///\n @Input() isLoading = false;\n\n /// Private variables ///\n headerCheckBoxId: string;\n private filterGroupChangeSub: Subscription;\n\n constructor(private filtersTableService: FiltersTableService) {}\n\n ngOnInit(): void {\n this.headerCheckBoxId = uuid(); // Create checkbox unique id\n\n /* Handle routing filters */\n if (this.tableRoutingName) {\n this._filterGroup = this.filtersTableService.getTableFilterGroup(this.tableRoutingName);\n\n // Performe initial fetch data\n this._filterGroup.valuesChange$.next([]);\n\n this.setTablesFilters();\n\n // Listen to filters changes with debounced time to limit multiple api calls\n this.filterGroupChangeSub = this._filterGroup.valuesChange$.subscribe(filters => {\n this.setTablesFilters();\n });\n }\n }\n\n onToggleAllCheckBox(event) {\n this.toggleAllCheckBox.emit(event.target.checked);\n }\n\n searchChange(event: string) {\n // Reset table filters\n this.tableFilters.sort = undefined;\n this.tableFilters.order = undefined;\n this.tableFilters.currentPage = 1;\n this.tableFiltersChange.emit(this.tableFilters);\n\n // Reset routing filters\n if (this._filterGroup) {\n this._filterGroup.setValues({\n searchValue: this.tableFilters.searchValue,\n sort: undefined,\n order: undefined,\n currentPage: 1\n });\n }\n }\n\n pageChange() {\n this.tableFiltersChange.emit(this.tableFilters);\n if (this._filterGroup) {\n this._filterGroup.setValues({\n itemsPerPage: this.tableFilters.itemsPerPage,\n currentPage: this.tableFilters.currentPage\n });\n }\n }\n\n /**\n * Set tableFilters from routing data existing in the url\n * */\n private setTablesFilters() {\n this.tableFilters = {\n sort: this._filterGroup.get('sort'),\n order: this._filterGroup.get('order'),\n searchValue: this._filterGroup.get('searchValue'),\n itemsPerPage: this._filterGroup.get('itemsPerPage') ? parseInt(this._filterGroup.get('itemsPerPage')) : 0,\n currentPage: this._filterGroup.get('currentPage') ? parseInt(this._filterGroup.get('currentPage')) : 0,\n totalItems: this.tableFilters.totalItems\n };\n this.tableFiltersChange.emit(this.tableFilters);\n }\n\n ngDestroy() {\n if (this.filterGroupChangeSub) {\n this.filterGroupChangeSub.unsubscribe();\n }\n }\n}\n","<div class=\"wz-table\">\n <!-- Header section -->\n <div class=\"wz-table__head\" id=\"headerTable\">\n <div *ngIf=\"checkbox\" class=\"wz-table__head__cell wz-table__head__cell--checkbox\">\n <wz-checkbox [id]=\"headerCheckBoxId\" (change)=\"onToggleAllCheckBox($event)\" [alone]=\"true\"></wz-checkbox>\n </div>\n\n <!-- Header contents are added with the headerCell directive -->\n <ng-content select=\"[headerCell]\"></ng-content>\n </div>\n\n <!-- Search section -->\n <div *ngIf=\"!disableSearch\" class=\"wz-table__search\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"searchChange($event)\"\n [placeholder]=\"placeholder\"\n [smallPadding]=\"true\"\n ></wz-input-search>\n </div>\n\n <!-- Body section -->\n <div class=\"wz-table__body\">\n <!-- Loader on body -->\n <div class=\"wz-table__body__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n <!-- Body contents are added with the tableRow directive -->\n <ng-content select=\"[tableRow]\" *ngIf=\"!isLoading\"></ng-content>\n </div>\n\n <!-- Pagination section -->\n <wz-pagination *ngIf=\"!disablePagniation\" [pagination]=\"tableFilters\" (pageChange)=\"pageChange()\"></wz-pagination>\n</div>\n","import { DOCUMENT } from '@angular/common';\nimport { Inject } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[tableColumn]'\n})\nexport class TableColumn {\n @Input('columnSize') columnSize: string; // Optional.\n @Input('centerCell') centerCell: string; // Optional. left|center|right\n\n private centerCellValue: string[] = ['left', 'center', 'right'];\n\n constructor(private currentCell: ElementRef, private renderer: Renderer2, @Inject(DOCUMENT) private document) {}\n\n ngAfterViewInit() {\n this.applyCustomStylesOnCell();\n }\n\n applyCustomStylesOnCell() {\n this.currentCell.nativeElement.style.flexGrow = typeof this.columnSize !== 'undefined' ? this.columnSize : '1';\n this.renderer.addClass(this.currentCell.nativeElement, 'wz-table__body__line__cell');\n\n if (this.centerCell) {\n if (this.centerCellValue.indexOf(this.centerCell) === -1) {\n throw 'Error : The centerCell directive has no matched value. The value must be one of the following : left, center, right.';\n }\n\n let className = 'wz-table__body__line__cell--center' + '--' + this.centerCell;\n this.renderer.addClass(this.currentCell.nativeElement, className);\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ComponentFactoryResolver,\n EventEmitter,\n Inject,\n Output,\n Renderer2,\n Directive,\n ElementRef,\n Input,\n ComponentRef,\n ApplicationRef,\n EmbeddedViewRef,\n Injector,\n Type\n} from '@angular/core';\n\nimport { v4 as uuid } from 'uuid';\nimport { CheckboxComponent } from '../../components/shared/checkbox/checkbox.component';\n\n@Directive({\n selector: '[checkBoxRow]'\n})\nexport class CheckBoxRow {\n @Input('checkBoxId') checkBoxId: string | number;\n @Input('checkBoxName') checkBoxName: string;\n\n @Input('checkBoxValue') set checkBoxValue(value: boolean) {\n this._value = value;\n if (this.checkboxComponentRef) {\n this.setCheckBoxValue();\n }\n }\n _value: boolean;\n get checkBoxValue(): boolean {\n return this._value;\n }\n\n @Output() checkBoxValueChange: EventEmitter<boolean> = new EventEmitter();\n\n private checkboxComponentRef: ComponentRef<CheckboxComponent>;\n private htmlContainer: HtmlContainer;\n\n constructor(\n private currentRow: ElementRef,\n private appRef: ApplicationRef,\n private renderer: Renderer2,\n @Inject(DOCUMENT) private document,\n private resolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n ngOnInit() {\n this.createCheckBoxComponent();\n this.handleChecboxInputs();\n this.handleCheckboxOutputs();\n }\n\n createCheckBoxComponent() {\n // Create the container\n const checkBoxContainer = document.createElement('div');\n checkBoxContainer.className = 'wz-table__body__line__cell wz-table__body__line__cell--checkbox';\n\n // Insert divCheckBox in the DOM as the first child of the row\n this.renderer.insertBefore(this.currentRow.nativeElement, checkBoxContainer, this.currentRow.nativeElement.firstChild);\n\n // Insert the CheckBoxComponent inside the container (DOM and Angular DOM)\n this.htmlContainer = new HtmlContainer(checkBoxContainer, this.appRef, this.resolver, this.injector);\n this.checkboxComponentRef = this.htmlContainer.attach(CheckboxComponent);\n }\n\n private handleChecboxInputs() {\n this.checkboxComponentRef.instance.id = this.checkBoxId ? this.checkBoxId : uuid();\n this.checkboxComponentRef.instance.name = this.checkBoxName ? this.checkBoxName : undefined;\n this.checkboxComponentRef.instance.alone = true;\n this.setCheckBoxValue();\n }\n\n private setCheckBoxValue() {\n this.checkboxComponentRef.instance.value = this.checkBoxValue;\n }\n\n private handleCheckboxOutputs() {\n // Detect checkbox changes\n this.checkboxComponentRef.instance.registerOnChange(() => {\n this._toggleCheckbox();\n });\n }\n\n private _toggleCheckbox() {\n this.checkBoxValue = !this.checkBoxValue;\n this.checkBoxValueChange.emit(this.checkBoxValue);\n }\n\n ngOnDestroy() {\n this.htmlContainer.dispose();\n }\n}\n\nexport class HtmlContainer {\n private attached: boolean = false;\n\n private disposeFn: () => void;\n\n constructor(\n private hostElement: Element,\n private appRef: ApplicationRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n attach(component: Type<any>): ComponentRef<any> {\n if (this.attached) {\n throw new Error('component has already been attached');\n }\n\n this.attached = true;\n const childComponentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n\n let componentRef = childComponentFactory.create(this.injector);\n\n this.appRef.attachView(componentRef.hostView);\n this.disposeFn = () => {\n this.appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n };\n\n this.hostElement.appendChild((componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0]);\n\n return componentRef;\n }\n\n dispose() {\n if (this.attached) {\n this.disposeFn();\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { EventEmitter, Inject, Output } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { NwbFilterGroup } from '@wizishop/ng-wizi-bulma';\nimport { Subscription } from 'rxjs';\nimport { FiltersTableService, TableFilters } from '../../services/table/filters-table.service';\n\n@Directive({\n // The selector has the same name as the headerCell selector in table.component.html\n selector: '[headerCell]'\n})\nexport class TableColumnHeader {\n @Input('headerName') // Optional.\n set headerName(value: string) {\n this._headerName = value;\n this.setHeaderName();\n }\n _headerName: string = '';\n get headerName(): string {\n return this._headerName;\n }\n @Input('columnSize') columnSize: string; // Optional.\n @Input('filterRouting') filterRouting: boolean = false; // Optional. Set to true to use Filter Routing.\n @Input('tableName') tableName: string; // Optional, but mandatory to handle sorting\n @Input('sortName') sortName: string; // Optional, but mandatory to handle sorting\n @Input('centerCell') centerCell: string; // Optional. left|center|right\n @Output() onSortChange: EventEmitter<boolean> = new EventEmitter(); // Emit the sort value (true, false, undefuned) of the current sort icon when clicking\n @Input() tableFilters: TableFilters;\n @Output() tableFiltersChange: EventEmitter<TableFilters> = new EventEmitter();\n\n private centerCellValue: string[] = ['left', 'center', 'right'];\n\n private contentHeader: HTMLAnchorElement;\n private filterGroup: NwbFilterGroup;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private currentCell: ElementRef,\n private renderer: Renderer2,\n @Inject(DOCUMENT) private document,\n private filtersTableService: FiltersTableService\n ) {}\n\n ngOnInit() {\n if (this.tableName && this.sortName) {\n if (this.filterRouting) {\n this.handleSortRouting();\n } else {\n this.handleSortBasic();\n }\n }\n }\n\n ngAfterViewInit() {\n this.applyCustomStylesOnCell();\n this.renderHeaderColumn();\n }\n\n handleSortRouting() {\n this.filterGroup = this.filtersTableService.getTableFilterGroup(this.tableName);\n\n const filterGroupChangeSub = this.filterGroup.valuesChange$.subscribe(filters => {\n const filterSort = filters.filter(filter => filter.key === 'sort')[0];\n if (this.sortName !== filterSort.value) {\n this.resetSortIcon();\n }\n });\n this.subscriptions.push(filterGroupChangeSub);\n }\n\n handleSortBasic() {\n const sortChangeSub = this.filtersTableService.getSortChangeListner().subscribe(sort => {\n if (this.tableName === sort.dataTableName && this.sortName !== sort.sortName) {\n // Reset the current sort icon\n this.resetSortIcon();\n }\n });\n this.subscriptions.push(sortChangeSub);\n }\n\n resetSortIcon() {\n // Replace current icon with default icon\n this.contentHeader.className = this.contentHeader.className.replace(this.getCurrentSortIcon(), 'idle');\n }\n\n applyCustomStylesOnCell() {\n this.currentCell.nativeElement.style.flexGrow = typeof this.columnSize !== 'undefined' ? this.columnSize : '1';\n this.renderer.addClass(this.currentCell.nativeElement, 'wz-table__head__cell');\n\n if (this.centerCell) {\n if (this.centerCellValue.indexOf(this.centerCell) === -1) {\n throw 'Error : The centerCell directive has no matched value. The value must be one of the following : left, center, right.';\n }\n\n let className = 'wz-table__head__cell--center' + '--' + this.centerCell;\n this.renderer.addClass(this.currentCell.nativeElement, className);\n }\n }\n\n renderHeaderColumn() {\n this.createHeaderContent();\n this.renderer.appendChild(this.currentCell.nativeElement, this.contentHeader);\n }\n\n createHeaderContent() {\n this.contentHeader = document.createElement('a');\n this.contentHeader.className = 'wz-table__head__cell__search';\n this.setHeaderName();\n if (this.tableName && this.sortName) {\n this.handleSort();\n }\n }\n\n private setHeaderName() {\n if (!this.contentHeader) {\n return;\n }\n this.contentHeader.innerHTML = this.headerName;\n }\n\n handleSort() {\n // Set icon in the header column cell\n this.contentHeader.className += ' wz-table__head__cell__search--' + this.getInitialSortIcon();\n\n // On click on the content header, change the icon and emit event\n this.renderer.listen(this.contentHeader, 'click', () => {\n const currentIcon = this.getCurrentSortIcon();\n let newIcon: string;\n let newSort: string, newOrder: boolean;\n\n switch (currentIcon) {\n case 'idle':\n newIcon = 'up';\n newSort = this.sortName;\n newOrder = true;\n break;\n\n case 'up':\n newIcon = 'down';\n newSort = this.sortName;\n newOrder = false;\n break;\n\n case 'down':\n newIcon = 'idle';\n break;\n\n default:\n newIcon = 'idle';\n break;\n }\n // Replace the icon\n this.contentHeader.className = this.contentHeader.className.replace(currentIcon, newIcon);\n\n this.emitEvents(newSort, newOrder);\n });\n }\n\n getInitialSortIcon() {\n if (!this.filterRouting) {\n return 'idle';\n }\n // Get Initial Sort Icon for Routing Filter\n let initialSortIcon = 'idle';\n if (this.filterGroup.get('sort') === this.sortName) {\n initialSortIcon = this.filterGroup.get('order') == 'true' ? 'up' : 'down';\n }\n return initialSortIcon;\n }\n\n getCurrentSortIcon() {\n const regexp = /wz-table__head__cell__search--(?<icon>\\w+)/;\n const { groups } = regexp.exec(this.contentHeader.className);\n return groups.icon;\n }\n\n emitEvents(newSort, newOrder) {\n if (this.filterRouting) {\n // Will send the filter routing value has changes event\n this.filterGroup.setValues({\n sort: newSort,\n order: newOrder,\n currentPage: 1\n });\n } else {\n // Send the event sort change\n this.filtersTableService.emitSortChange(this.tableName, this.sortName, newOrder);\n }\n if (this.tableFilters) {\n this.tableFilters.sort = this.sortName;\n this.tableFilters.order = newOrder;\n this.tableFilters.currentPage = 1;\n this.tableFiltersChange.emit(this.tableFilters);\n }\n this.onSortChange.emit(newOrder);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n // The selector has the same name as the tableRaw selector in table.component.html\n selector: '[tableRow]'\n})\nexport class TableRow {\n constructor(private currentCell: ElementRef, private renderer: Renderer2, @Inject(DOCUMENT) private document) {}\n\n ngAfterViewInit() {\n this.applyCustomStylesOnCell();\n }\n\n applyCustomStylesOnCell() {\n this.renderer.addClass(this.currentCell.nativeElement, 'wz-table__body__line');\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { listAnnimation } from '../../../animations/listAnnimation/list.animation';\nimport { AlertService } from '../../../services/alert.service';\nimport { ImgCDNService } from '../../../services/config/img-cdn.service';\nimport { ImgEventService } from '../../../services/img-event.service';\nimport { ImgManagerService } from '../../../services/img-manager.service';\nimport { ImgSelectionService } from '../../../services/img-selection.service';\nimport { ImagesActionHandler } from '../images-actions-handler';\nimport { ApiService } from '../../../services/api.service';\n\n@Component({\n selector: 'table-view',\n templateUrl: './table-view.component.html',\n animations: [\n listAnnimation\n ]\n})\nexport class TableViewComponent extends ImagesActionHandler implements OnInit {\n dataTableName: string = 'imgagesView'; // Name of your table\n\n constructor(\n imgManager: ImgManagerService,\n imgSelectionService: ImgSelectionService,\n http: HttpClient,\n imgCDNService: ImgCDNService,\n imgEventCardService: ImgEventService,\n alertService: AlertService,\n translateService: TranslateService,\n apiService: ApiService\n ) {\n super(\n imgManager,\n imgSelectionService,\n http,\n imgCDNService,\n imgEventCardService,\n alertService,\n translateService,\n apiService\n );\n }\n\n ngOnInit() {\n }\n\n}\n","<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\n <wz-table\n [checkbox]=\"true\"\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\n [(tableFilters)]=\"tableFilters\"\n (tableFiltersChange)=\"onFiltersChange()\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [disablePagniation]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n >\n <!-- Header Section -->\n <div\n headerCell\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\n columnSize=\"2\"\n sortName=\"name\"\n ></div>\n <div\n headerCell\n centerCell=\"center\"\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\n ></div>\n <div headerCell columnSize=\"0\"></div>\n\n <!-- Body Section -->\n <div\n tableRow\n checkBoxRow\n [checkBoxValue]=\"picture.delSelected\"\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\n *ngFor=\"let picture of picturesList; let index = index\"\n >\n\n <div tableColumn columnSize=\"2\">\n <div class=\"table-view__row__container\">\n <div\n class=\"table-view__row__container__imgContainer\"\n [ngClass]=\"{'imgSelected': picture.selected}\"\n (click)=\"onToggleSelectImg(index)\">\n <img\n class=\"table-view__row__container__imgContainer__img\"\n [src]=\"picture.file_name | imgSrc : '100'\"\n alt=\"picture.display_name\"\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"table-view__row__container__imgContainer__overlay\"\n >\n <i class=\"fad fa-folder-times\"></i>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"wzImgMngInput table-view__row__container__name\"\n [(ngModel)]=\"picture.display_name\"\n (focus)=\"previousName=picture.display_name\"\n (blur)=\"onNameChange(picture.id_file)\"\n (click)=\"onToggleDelSelection(index)\"\n [ngClass]=\"{'desabled': picture.deleted}\"\n [disabled]=\"picture.deleted\"\n >\n </div>\n </div>\n\n <div\n tableColumn\n centerCell=\"center\"\n (click)=\"onToggleDelSelection(index)\"\n >\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\n </div>\n\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\n <!-- Dropdown -->\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\n <ng-container label>\n <div class=\"table-view__dropdown-options__label rotate\">\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\n >\n <i class=\"far fa-download download\"></i>&nbsp;\n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onEdit(picture)\"\n >\n <i class=\"far fa-crop-alt edit\"></i>&nbsp;\n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onRemoveImg(picture)\"\n >\n <i class=\"fal fa-times deleted\"></i>&nbsp;\n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\n </div>\n </ng-container>\n </dropdown>\n </div>\n </div>\n </wz-table>\n</div>\n","import {Component, OnInit, Input, ViewChild, ElementRef, AfterViewInit, Output, EventEmitter, inject, ChangeDetectionStrategy, ChangeDetectorRef} from '@angular/core';\nimport { ImgPictureDTO, ImgPicturesDTO, ParamsImgManagerDTO } from '../../dto/img-manager.dto';\nimport { ImgManagerService } from '../../services/img-manager.service';\nimport { Subscription, Subject} from 'rxjs';\nimport { debounceTime, take } from 'rxjs/operators';\nimport { ImgEventService } from '../../services/img-event.service';\nimport { ImgSelectionService } from '../../services/img-selection.service';\nimport { UserSettingsService } from '../../services/user-settings.service';\nimport { TableFilters } from '../../services/table/filters-table.service';\nimport { PictureNameUpdate } from '../../dto/picture-name-update.dto';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { insertRemove } from '../../animations/insertRemove/insert-remove.animation';\nimport { stateDisplayed, tabDisplayed } from '../../dto/export-dtos.api';\nimport { RenamePictureService } from '../../services/rename-picture.service';\nimport { AlertService } from '../../services/alert.service';\n\n@Component({\n selector: 'images-view',\n templateUrl: './images-view.component.html',\n animations: [\n easeInOut,\n insertRemove\n ]\n})\nexport class ImagesViewComponent implements OnInit, AfterViewInit {\n\n @Input() stateDisplayed: stateDisplayed;\n @Input() tabDisplayed: tabDisplayed;\n @Input() fullSize: boolean;\n @Input() maxLengthCardShow: number;\n @Input() nbRowToShow: number;\n @Input() listDisplayed = false; // Display format list or mosaic\n @Input() multipleImgMode = false;\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n // Data filters\n tableFilters: TableFilters = {\n sort: undefined,\n order: undefined,\n searchValue: '',\n totalItems: 0,\n itemsPerPage: 0,\n currentPage: 1\n };\n\n @ViewChild('imgLibContainer') imgLibContainer : ElementRef;\n widthLargeCard: number = 219; // Default value of a card width 199 + margin 20\n widthSmallCard: number = 160; // Default value of a card width 140 + margin 20\n nbMinImgPerLine: number;\n nbMaxImgPerLine: number;\n nbFakeImg: number = 0;\n\n imgFullWidthConfig:any = [\n {\n max: 419,\n largeImgWidthFactor : 1,\n smallImgWidthFactor : 0.5\n },\n {\n max: 499,\n largeImgWidthFactor : 1,\n smallImgWidthFactor : 0.5\n },\n {\n max: 719, // tablet\n largeImgWidthFactor : 0.5,\n smallImgWidthFactor : 0.3333\n },\n {\n max: 1023, // deskop\n largeImgWidthFactor : 0.3333,\n smallImgWidthFactor : 0.2\n },\n {\n max: 1399,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.125\n },\n {\n max: 1599,\n largeImgWidthFactor : 0.2,\n smallImgWidthFactor : 0.1111\n },\n {\n largeImgWidthFactor : 0.1666,\n smallImgWidthFactor : 0.1\n }\n ];\n\n imgWidthConfig:any = [\n {\n max: 1024,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.125\n },\n {\n max: 1199,\n largeImgWidthFactor : 0.3333,\n smallImgWidthFactor : 0.2\n },\n {\n max: 1299,\n largeImgWidthFactor : 0.3333,\n smallImgWidthFactor : 0.1666\n },\n {\n max: 1399,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.1666\n },\n {\n max: 1599,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.14\n },\n {\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.125\n }\n ];\n\n imgSubscribe: Subscription;\n imgRemovedEvent: Subscription;\n imgAddedEvent: Subscription;\n imgSelectionChange: Subscription;\n searchQueryChanged: Subject<string> = new Subject<string>();\n filtersChanged: Subject<void> = new Subject<void>();\n\n picturesList: ImgPictureDTO[] = [];\n savePictureList: ImgPictureDTO[] = [];\n imgSelectedList: ImgPictureDTO[];\n searchedValue: string; // Value from the search bar or img added by canva\n nbImgToDelSelected: number = 0;\n disable: boolean = false; // Use to disable action during server request\n isLoading: boolean = true;\n isTotalRetrieved: boolean = false;\n delListImgLoader = false;\n initComponent: boolean = true;\n failLoaded: boolean = false;\n displayPexelsResults: boolean = false; // Use when no img find by name, display img from Pexels\n searchText: string;\n confirmImgSup:boolean = false;\n previousSearchValue: string;\n\n // Paginator Params\n pageIndex: number =0;\n length: number = 0;\n pageSize: number = 30; // Default value\n pageSizeOptions: number[] = [25, 50, 100, 250];\n\n // Api Img manager Params\n params:ParamsImgManagerDTO;\n\n private errorGetAllImg = 'ImgManager.ImgLib.errorGetAllImg';\n private errorGetTotalImg = 'ImgManager.ImgLib.errorGetTotalImg';\n private errorGetImg = 'ImgManager.ImgLib.errorGetCanvaImg';\n private msgNoImgFound = 'ImgManager.ImgLib.noImgFound';\n private errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';\n\n constructor(\n private imgManager: ImgManagerService,\n private imgEventService: ImgEventService,\n private imgSelectionService: ImgSelectionService,\n private alertService: AlertService,\n private userSettingsService: UserSettingsService,\n private renamePictureService: RenamePictureService,\n private changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n /* if (this.maxLengthCardShow) {\n this.reducePictureListMaxLength();\n } */\n this.setEvents();\n this.imgSelectedList = this.imgSelectionService.getImgSelection();\n }\n\n ngAfterViewInit() {\n this.setNbImgToDisplay();\n this._getImgList();\n if (!this.savePictureList) {\n this.savePictureList = this.picturesList;\n }\n }\n\n getImgList() {\n this.filtersChanged.next();\n }\n\n /**\n * true : go to list display\n * false : go to mosaic display\n * @param activate\n */\n onSwitchFormatDisplayed(activate: boolean) {\n this.listDisplayed = activate;\n this.userSettingsService.setUserDisplayPreference(activate);\n this.imgEventService.emitlistDisplayedChange(activate);\n }\n\n /**\n * Calcul the number of img selected for masse deletion\n */\n onImgSelected() {\n this.setNbImgToDelSelected();\n }\n\n onShowImgUploaded() {\n this.searchText = null;\n this.searchedValue = null;\n this.getImgList();\n }\n\n onRenamePicture(pictureRenamed: PictureNameUpdate) {\n console.log('onRenamePicture pictureRenamed', pictureRenamed);\n this.renamePictureService.renamePicture(pictureRenamed);\n }\n\n removeListImg() {\n if (this.disable) {\n return;\n }\n this.disable = true;\n this.delListImgLoader = true;\n this.confirmImgSup = false;\n\n // Get the id of the img to remove\n // And add deleted property\n const idImgToRemove: string[] = [];\n this.picturesList.forEach( img => {\n if (img.delSelected) {\n img.deleted = true;\n idImgToRemove.push(img.id_file);\n }\n });\n\n this.imgManager.removeMultipleImg(idImgToRemove).subscribe(\n () => {\n this.getImgList();\n this.imgSelectionService.removeImgSelectionByIds(idImgToRemove);\n },\n error => {\n this.getImgList();\n this.alertService.openAlert(this.errorRemoveImg);\n }\n );\n\n\n }\n\n selectImgChosen() {\n if (this.disable) {\n return;\n }\n const picturesListSelected: ImgPictureDTO[] = [];\n this.picturesList.map(img => {\n if(img.delSelected) {\n img.delSelected =false;\n img.selected = true;\n }\n if (img.selected) {\n picturesListSelected.push(img);\n }\n });\n this.setNbImgToDelSelected();\n this.imgSelectionService.setImgSelection(picturesListSelected);\n }\n\n displayConfirmImgSup(){\n if (this.disable) {\n return;\n }\n this.confirmImgSup = true;\n }\n\n cancelSup() {\n this.confirmImgSup = false;\n }\n\n /**\n * Event emit when a img selected in order to delete\n */\n onPicturesListChange() {\n this.setNbImgToDelSelected();\n }\n\n onFiltersChange() {\n this.getImgList();\n }\n\n /**\n * Set default number of img per page to display at the initialisation\n * This number is between 30 and 50\n */\n private setNbImgToDisplay() {\n const containerWidth = this.imgLibContainer.nativeElement.offsetWidth + 30; // + 30px -> left + right margin\n const scrollWidth = window.innerWidth - document.body.offsetWidth;\n\n const [maxImgWidthFactor, minImgWidthFactor] = this.getImgWidthFactors();\n\n const minImgWidth = Math.floor(containerWidth * minImgWidthFactor);\n const maxImgWidth = Math.ceil((containerWidth + scrollWidth ) * maxImgWidthFactor);\n\n this.nbMaxImgPerLine = Math.floor(containerWidth / minImgWidth);\n this.nbMinImgPerLine = Math.floor( (containerWidth + scrollWidth ) / maxImgWidth);\n\n this.pageSize = this.getTotalImgPerPage();\n }\n\n private getImgWidthFactors(): number[] {\n const screenWidth = window.innerWidth;\n let minWidth:number = 0;\n let imgSizesConfig: number[] = [];\n\n const currentImgWidthConfig = this.fullSize ? this.imgFullWidthConfig : this.imgWidthConfig;\n\n for (const widthConfig of currentImgWidthConfig) {\n if (!widthConfig.max) {\n imgSizesConfig = [widthConfig.largeImgWidthFactor, widthConfig.smallImgWidthFactor];\n break;\n }\n if (minWidth < screenWidth && screenWidth <= widthConfig.max) {\n imgSizesConfig = [widthConfig.largeImgWidthFactor, widthConfig.smallImgWidthFactor];\n break;\n }\n minWidth = widthConfig.max;\n }\n return imgSizesConfig;\n }\n\n private getTotalImgPerPage(): number {\n if (this.nbRowToShow) {\n const nbImgPerLine = this.stateDisplayed === 'full' ? this.nbMinImgPerLine : this.nbMaxImgPerLine;\n return nbImgPerLine * this.nbRowToShow;\n }\n\n let total = this.nbMinImgPerLine;\n\n while (total < 30 || total % this.nbMaxImgPerLine !== 0 || total % this.nbMinImgPerLine !== 0) {\n total += this.nbMinImgPerLine;\n }\n return total;\n }\n\n private setParams() {\n this.params = {\n limit: this.maxLengthCardShow?.toString() || (this.tableFilters.itemsPerPage ? this.tableFilters.itemsPerPage.toString() : this.pageSize.toString()),\n page: this.tableFilters.currentPage.toString()\n };\n if (this.tableFilters.searchValue) {\n this.params.search = this.tableFilters.searchValue.toString();\n }\n }\n\n private initVariables(loadingSuccess: boolean) {\n this.nbImgToDelSelected = 0;\n this.disable = false;\n this.isLoading = false;\n this.delListImgLoader = false;\n this.initComponent = false;\n this.displayPexelsResults = false;\n this.failLoaded = !loadingSuccess;\n this.nbFakeImg = 0;\n }\n\n private selectImgSelected () {\n if (!this.imgSelectedList || !this.imgSelectedList.length) {\n return;\n }\n\n const idImgSlectedList: string[] = [];\n\n this.imgSelectedList.forEach(img =>\n idImgSlectedList.push(img.id_file)\n );\n\n this.picturesList.forEach(picture => {\n if (idImgSlectedList.indexOf(picture.id_file) !== -1) {\n picture.selected = true;\n }\n });\n }\n\n private displayPexelsLib () {\n this.displayPexelsResults = true;\n this.alertService.openAlert(this.msgNoImgFound);\n }\n\n /**\n * Set a img list in order to fill properly all the line of images displayed in mosaic.\n * Otherwise, the space-between css will do a bad display\n */\n private calculateNbImgFake(nbImgDisplayed: number) {\n const nbImgPerLine = this.stateDisplayed === 'small' || this.tabDisplayed === 'img-upload' ? this.nbMaxImgPerLine : this.nbMinImgPerLine;\n\n if (nbImgDisplayed % nbImgPerLine !== 0) {\n this.nbFakeImg = nbImgPerLine - nbImgDisplayed % nbImgPerLine;\n }\n }\n\n private getImg (id_file: string) {\n this.imgManager.getShopImg(id_file).pipe(take(1)).subscribe({\n next: (picture) => {\n\n if (!this.imgAlreadyExist(picture.id_file)) {\n // check the img is not already present\n this.picturesList.unshift(picture);\n this.length += 1;\n }\n },\n error: () => {\n this.alertService.openAlert(this.errorGetImg);\n }\n });\n }\n\n private imgAlreadyExist (id_file: string): boolean {\n for (const img of this.picturesList) {\n if (img.id_file === id_file) {\n return true;\n }\n }\n return false;\n }\n\n private setNbImgToDelSelected () {\n this.nbImgToDelSelected = this.picturesList.filter(img =>\n img.delSelected).length;\n\n if (!this.nbImgToDelSelected) {\n this.confirmImgSup = false;\n }\n }\n\n private setEvents() {\n // Add a timer to retrieve img when the search bar or the paginator are used\n this.searchQueryChanged\n .pipe(debounceTime(400)) // wait 0.5 sec after the last event before emitting last event\n .subscribe(data => {\n this.getImgList();\n });\n\n this.filtersChanged\n .pipe(debounceTime(800)) // wait 0.8 sec after the last event before emitting last event\n .subscribe(data => {\n this._getImgList();\n });\n\n // Reload img when img is/are removed\n this.imgRemovedEvent = this.imgEventService.imgRemoved$.subscribe(id_file =>{\n this.getImgList();\n });\n\n // Create img from Canva\n this.imgAddedEvent = this.imgEventService.getImgAddedEventListner().subscribe(id_file =>{\n if (id_file && !this.imgAlreadyExist(id_file)) {\n this.getImg(id_file);\n }\n });\n\n this.imgSelectionChange = this.imgSelectionService.imgSelection$.subscribe(imgSelection =>{\n if (this.listDisplayed) {\n return;\n }\n const idFileList = [];\n imgSelection.map(img => idFileList.push(img.id_file));\n for (const picture of this.picturesList) {\n if (idFileList.indexOf(picture.id_file) === -1) {\n picture.selected = false;\n }\n }\n });\n }\n\n private _getImgList() {\n this.isLoading = true;\n this.displayPexelsResults = false;\n this.setParams();\n\n this.refreshTotalImgList();\n\n const forceToUpdate = this.isLastImgRemovedInList();\n this.imgManager.getShopImgList(this.params, forceToUpdate).pipe(take(1)).subscribe({\n next: (data) => {\n this.initVariables(true);\n const nbImgDisplayed = data.data.length;\n this.calculateNbImgFake(nbImgDisplayed);\n this.picturesList = data.data;\n this.renamePictureService.setPicturesList(this.picturesList);\n this.selectImgSelected();\n\n this.length = this.isTotalRetrieved ? this.length : data.totalRecords;\n this.tableFilters.totalItems = this.isTotalRetrieved ? this.tableFilters.totalItems : data.totalRecords;\n this.tableFilters.itemsPerPage = this.tableFilters.itemsPerPage ? this.tableFilters.itemsPerPage : this.pageSize;\n\n // Display Pexels if no result\n if (data.totalRecords === 0) {\n this.displayPexelsLib();\n }\n\n this.changeDetectorRef.markForCheck(); // In wizi-admin, the change detection is not working properly\n\n },\n error: error => {\n this.alertService.openAlert(this.errorGetAllImg);\n this.initVariables(false);\n }});\n }\n\n private refreshTotalImgList() {\n const searchValue = this.tableFilters.searchValue;\n\n if (this.isTotalRetrieved && searchValue === this.previousSearchValue) {\n // Keep current total result\n return;\n }\n\n this.isTotalRetrieved = false;\n\n this.imgManager.getShopTotalImgList(this.params).pipe(take(1)).subscribe({\n next: total => {\n this.previousSearchValue = searchValue;\n this.isTotalRetrieved = true;\n this.length = total;\n this.tableFilters.totalItems = total;\n },\n\n error: error => {\n //this.alertService.openAlert(this.errorGetTotalImg);\n this.initVariables(false);\n }});\n }\n\n switchDisplayWindowMosaic() {\n this.switchDisplayWindow.emit(true);\n }\n\n isLastImgRemovedInList() {\n return this.picturesList.some(picture => picture.id_file === this.imgEventService.imgRemoved$.getValue());\n }\n\n ngOnDestroy(): void {\n this.searchQueryChanged.unsubscribe();\n this.imgRemovedEvent.unsubscribe();\n this.imgAddedEvent.unsubscribe();\n this.imgSelectionChange.unsubscribe();\n }\n}\n","<div class=\"images-view\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n <!-- Subheader : Img number and actions btn (sup img list, switch forma display) -->\n <div\n *ngIf=\"(stateDisplayed !== 'small' || tabDisplayed === 'img-upload')\"\n class=\"images-view__container\"\n [ngClass]=\"{'images-view__container--uploadTab': tabDisplayed === 'img-upload', 'images-view__container--window': stateDisplayed === 'window'}\"\n >\n\n <div *ngIf=\"tabDisplayed !== 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.nbImg' | translate }} : {{length}}</p>\n </div>\n <div *ngIf=\"tabDisplayed === 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.lastImgs' | translate }}</p>\n </div>\n\n <div class=\"field has-addons subHeaderActions\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n\n <!-- For listforma : Display btn del multiple img & Confirm action -->\n <div class=\"images-view__container__boxAction\">\n\n\n <!-- Select -->\n <button\n class=\"button success images-view__container__boxAction__import\"\n @insertRemoveAnnim\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup && !delListImgLoader && multipleImgMode\"\n (click)=\"selectImgChosen()\"\n type=\"button\"\n >\n <i class=\"fal fa-check\"></i>\n {{ 'ImgManager.ImgLib.select' | translate }} ({{nbImgToDelSelected}})\n </button>\n\n <!-- Display btn del multiple img -->\n <button\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup\"\n (click)=\"displayConfirmImgSup()\"\n class=\"button images-view__container__boxAction__delBtn danger\"\n @insertRemoveAnnim\n type=\"button\"\n >\n <i class=\"fal fa-times\"></i>{{ 'ImgManager.ImgLib.delMlt' | translate }} ({{nbImgToDelSelected}})\n <span btnLoadingAnim *ngIf=\"delListImgLoader\" class=\"btnLoadingAnnimation\"></span>\n </button>\n\n <!-- Confirm action -->\n <div\n class=\"images-view__container__boxAction__confirmSup\"\n [ngClass]=\"{'images-view__container__boxAction__confirmSup--visible': confirmImgSup}\">\n <p *ngIf=\"nbImgToDelSelected > 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestions' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <p *ngIf=\"nbImgToDelSelected === 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestion' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <div>\n <button\n class=\"button images-view__container__boxAction__confirmSup__cancel\"\n (click)=\"cancelSup()\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <button\n (click)=\"removeListImg()\"\n class=\"button images-view__container__delBtn danger\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.confirm' | translate }}\n </button>\n </div>\n </div>\n\n </div>\n\n\n <!-- Swith mosaic/list forma -->\n <div class=\"field has-addons images-view__container__buttonBox\">\n <div class=\"control\">\n <div\n class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': !listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(false)\"\n >\n <span class=\"icon is-small\">\n <i class=\"far fa-th\"></i>\n </span>\n </div>\n </div>\n\n <div class=\"control\">\n <div class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(true)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fas fa-bars\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n\n <!-- Images section -->\n<ng-scrollbar\n class=\"images-view__scroll\"\n [ngClass]=\"{\n 'images-view__scroll--hide--mosaic': displayPexelsResults && !listDisplayed,\n 'images-view__scroll--hide--mosaic--small': displayPexelsResults && !listDisplayed && stateDisplayed === 'small',\n 'images-view__scroll--hide--table': displayPexelsResults && listDisplayed,\n 'images-view__scroll--full': stateDisplayed === 'full',\n 'images-view__scroll--smallDisplay' : stateDisplayed === 'small' && tabDisplayed !== 'img-upload',\n 'images-view__scroll--smallUploadDisplay' : stateDisplayed === 'small' && tabDisplayed === 'img-upload',\n 'images-view__scroll--window': stateDisplayed === 'window'\n}\"\n>\n <div #imgLibContainer class=\"images-view__wrapper\">\n <div *ngIf=\"!listDisplayed || stateDisplayed === 'small'\" [@easeInOut]=\"'in'\">\n <mosaic-view\n [picturesList]=\"picturesList\"\n (picturesListChange)=\"onPicturesListChange()\"\n [tableFilters]=\"tableFilters\"\n (filtersChange)=\"onFiltersChange()\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowMosaic()\"\n [nbFakeImg]=\"nbFakeImg\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [displayPexelsResults]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n [fullSize]=\"fullSize\"\n >\n </mosaic-view>\n </div>\n\n <div *ngIf=\"listDisplayed && stateDisplayed !== 'small'\" [@easeInOut]=\"'in'\">\n <table-view\n [picturesList]=\"picturesList\"\n (picturesListChange)=\"onPicturesListChange()\"\n [tableFilters]=\"tableFilters\"\n (filtersChange)=\"onFiltersChange()\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n [displayPexelsResults]=\"displayPexelsResults\"\n [stateDisplayed]=\"stateDisplayed\"\n [isLoading]=\"isLoading\"\n >\n </table-view>\n </div>\n\n </div>\n</ng-scrollbar>\n\n<!-- Pexels Section - When no img found -->\n<div\n *ngIf=\"displayPexelsResults\"\n class=\"images-view--pexels\"\n [@easeInOut]=\"'in'\">\n <pexels-lib\n [searchValue]=\"tableFilters.searchValue\"\n (showImgUploaded)=\"onShowImgUploaded()\"\n [disableSearch]=\"true\"\n >\n </pexels-lib>\n</div>\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2} from '@angular/core';\n\n@Directive({\n selector: '[zIndexToggle]'\n})\nexport class ZindexToggleDirective implements OnInit, OnDestroy {\n isActived = false;\n\n @Output()\n public onEventChange: EventEmitter<any>;\n\n @Input('zIndexToggle')\n set isActive(value: boolean) {\n this.isActived = value;\n this.switchToggle();\n }\n get isActive(): boolean {\n return this.isActived;\n }\n\n constructor(private currentElement: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnInit(): void {\n }\n\n switchToggle() {\n if (this.isActived) {\n this.renderer.addClass(this.currentElement.nativeElement.parentElement.parentNode, 'zindexToggle');\n } else {\n this.renderer.removeClass(this.currentElement.nativeElement.parentElement.parentNode, 'zindexToggle');\n }\n }\n\n ngOnDestroy(): void {\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectItem } from '../../components/shared/select/select-items.dto';\n\n@Pipe({\n name: 'selectFilters'\n})\n\nexport class SelectFiltersPipe implements PipeTransform {\n transform(items: SelectItem[], filterName: string): any {\n return items.filter(item => {\n const regexp = new RegExp(filterName, 'i');\n return regexp.test(item.name);\n });\n }\n}","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectItem } from './select-items.dto';\nimport { CalllToAction } from './call-to-action.model';\n\n@Component({\n selector: 'wac-select',\n templateUrl: './select.component.html',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }]\n})\nexport class SelectComponent implements OnInit, ControlValueAccessor {\n @Input()\n items: SelectItem[];\n\n @Input()\n placeholder: string;\n\n @Input()\n label: string;\n\n @Input()\n maxWidthItems: string;\n\n @Input()\n search = false;\n\n @Input()\n type = 'default';\n\n @Input()\n callToAction: CalllToAction;\n\n @Input() maxWidth = '100%';\n\n @Input()\n disabled = false;\n\n @Output() selectValue = new EventEmitter<number>();\n\n @Output() clickOnCallToAction = new EventEmitter<any>();\n\n @ViewChild('search') searchElement: ElementRef;\n\n openCategories = false;\n searchValue = '';\n\n indexItemSelected: number = -1;\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n this.indexItemSelected = this.items.findIndex(item => item.selected);\n }\n\n onClose() {\n this.openCategories = false;\n }\n\n customTB(item: SelectItem, index: number) {\n return `${item.id}-${index}`;\n }\n\n onSelectItem(id: number) {\n this.unselectAll();\n this.setIndexItemSelected(id);\n const itemSelected: SelectItem = this.getItemSelected();\n itemSelected.selected = true;\n this.selectValue.emit(this.indexItemSelected);\n this.onChange(itemSelected);\n }\n\n onClickCallToAction() {\n this.onClose();\n this.clickOnCallToAction.emit(this.callToAction.value);\n }\n\n private getItemSelected(): SelectItem {\n return this.items[this.indexItemSelected];\n }\n\n showCategories() {\n this.openCategories = true;\n setTimeout(() => { // this will make the execution after the above boolean has changed\n this.searchElement.nativeElement.focus();\n }, 0);\n }\n\n private unselectAll() {\n this.items.forEach(item => item.selected = false);\n }\n\n private setIndexItemSelected(id: number) {\n this.indexItemSelected = this.items.findIndex(item => item.id === id);\n }\n\n // ControlValueAccessor methods\n\n onChange: (selectItem: SelectItem) => void = () => {};\n onTouch: any = () => {}\n\n writeValue(selectItem: any){\n if (!selectItem) {\n return;\n }\n this.unselectAll();\n selectItem.selected = true;\n this.setIndexItemSelected(selectItem.id);\n }\n\n registerOnChange(fn: any){\n this.onChange = fn;\n }\n registerOnTouched(fn: any){\n this.onTouch = fn;\n }\n}\n","<p *ngIf=\"label\" [innerHTML]=\"label\" class=\"wac-select__label\"></p>\n\n<div class=\"wac-select\" wzAutoHide (clickOutside)=\"onClose()\" [ngStyle]=\"{ 'max-width': maxWidth }\" [zIndexToggle]=\"openCategories\">\n\n <div class=\"wac-select__current\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && openCategories = !openCategories\" *ngIf=\"!search\">\n <span *ngIf=\"indexItemSelected !== -1\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span [innerHTML]=\"(indexItemSelected !== -1 ? items[indexItemSelected].name : placeholder) | translate\"></span><span><i class=\"fas fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__current wac-select__current--withSearch\" [ngClass]=\"{ 'select-disabled' : disabled, 'open-search': openCategories }\" *ngIf=\"search\">\n <div class=\"wac-select__current__search\" *ngIf=\"openCategories && !disabled\">\n <i class=\"far fa-search\"></i>\n <input #search type=\"text\" [(ngModel)]=\"searchValue\" />\n </div>\n <span (click)=\"openCategories = !openCategories;\" *ngIf=\"items[indexItemSelected]?.icon && !openCategories\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span (click)=\"showCategories()\" [innerHTML]=\"items[indexItemSelected]?.name ? items[indexItemSelected].name : placeholder\"></span>\n <span (click)=\"openCategories = !openCategories;\"><i class=\"fas fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openCategories, open: type === 'open' }\" [ngStyle]=\"{ 'max-width': maxWidthItems }\">\n <ng-scrollbar *ngIf=\"items.length\" style=\"height: 110px; width: 100%;\">\n\n <div *ngIf=\"callToAction\" class=\"wac-select__content__cta\">\n <div (click)=\"onClickCallToAction()\">\n <i *ngIf=\"callToAction.icon\" [classList]=\"callToAction.icon\"></i><strong *ngIf=\"callToAction.boldText\">{{ callToAction.boldText }}</strong\n ><span>{{ callToAction?.name }}</span>\n </div>\n </div>\n\n <div\n *ngFor=\"let item of items | selectFilters: searchValue; let index = index;\"\n (click)=\"onClose()\"\n class=\"wac-select__content__item\"\n >\n <div *ngIf=\"!item.hide\" [ngClass]=\"{ selected: item.selected }\" (click)=\"onSelectItem(item.id)\">\n <span class=\"icon\" [innerHTML]=\"item.icon\" *ngIf=\"item.icon\"></span>{{ item.name | translate }}\n </div>\n </div>\n\n </ng-scrollbar>\n\n <div *ngIf=\"!(items | selectFilters: searchValue)?.length\" class=\"wac-select__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>","import {Component, Input, OnInit, ViewChild, Output, EventEmitter} from '@angular/core';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { UploadListComponent } from '../upload-list/upload-list.component';\nimport { ImgEventService } from '../../services/img-event.service';\nimport { NwbSnackbarConfig } from '@wizishop/ng-wizi-bulma';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\nimport { AlertService } from '../../services/alert.service';\nimport {Router} from '@angular/router';\nimport { SelectItem } from '../shared/select/select-items.dto';\n\n@Component({\n selector: 'img-tabs',\n templateUrl: './img-tabs.component.html'\n})\nexport class ImgTabsComponent implements OnInit {\n\n @Input()\n multipleImgMode: boolean = false;\n @Input()\n stateDisplayed: stateDisplayed;\n @Input()\n listDisplayed = false;\n\n @Output()\n imgManagerClosed = new EventEmitter();\n\n @Output()\n currentTab = new EventEmitter();\n\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n tabs: SelectItem[] = [\n {\n name: 'ImgManager.Tabs.addImg',\n value: 'img-upload',\n selected: true,\n id: 0\n },\n {\n name: 'ImgManager.Tabs.imgLib',\n value: 'images-view',\n id: 1\n },\n {\n name: 'ImgManager.Tabs.freeImgLib',\n value: 'pexels-lib',\n id: 2\n },\n {\n name: 'ImgManager.Tabs.Editor',\n value: 'img-edition',\n hide: true,\n id: 3\n }\n ];\n\n tabActive: SelectItem = this.tabs[0];\n\n /* tabActive = 'images-view';\n tabs: string[] = ['img-upload', 'images-view', 'pexels-lib', 'img-edition']; */\n editTab = false;\n\n imgToEdit: ImgPictureDTO;\n\n imgUpload = false;\n\n @ViewChild( 'imgUploadedImg' )\n imgUploadedComponent: UploadListComponent ;\n\n snackBarNewVersionConfig: NwbSnackbarConfig = {\n message: '',\n duration: 3000\n };\n\n constructor(\n private imgEventEditService: ImgEventService,\n private alertService: AlertService,\n private route: Router\n ) { }\n\n ngOnInit(): void {\n this.imgEventEditService.getImgToEditEventListener().subscribe(imgToEdit =>{\n this.tabActive = this.tabs[3];\n this.imgToEdit = imgToEdit;\n this.editTab = true;\n this.currentTab.emit(this.tabs[3]);\n });\n }\n\n toggleTabs(item: SelectItem) {\n this.imgUpload = false;\n this.editTab = false;\n this.tabActive = item;\n }\n\n onImgUploaded(img: ImgPictureDTO[]) {\n this.imgUpload = true;\n this.imgUploadedComponent.onImgUploaded(img);\n }\n\n onEditClosed(msgKey: string) {\n this.editTab = false;\n this.toggleTabs(this.tabs[1]);\n if (msgKey) {\n this.alertService.openAlert(msgKey);\n }\n this.currentTab.emit('close');\n }\n\n onShowImgUploaded() {\n this.tabActive = this.tabs[1];\n }\n\n switchDisplayWindowImgView() {\n this.switchDisplayWindow.emit(true);\n }\n\n switchRouterLink(event) {\n\n }\n\n onImgManagerClosed() {\n this.imgManagerClosed.emit();\n }\n}\n","<div\n class=\"img-tabs\" [ngClass]=\"{'small': stateDisplayed === 'small'}\">\n <div class=\"wrapper-tabs\">\n <div\n class=\"tabs\"\n [ngClass]=\"\n {\n 'tabs--notWindow': stateDisplayed !== 'window',\n 'tabs--notDisplayed': stateDisplayed === 'window' && tabActive.value === tabs[3].value\n }\">\n\n <ul>\n <li class=\"is-active\" [ngClass]=\"{'is-active': tabActive.value === tabs[0].value}\" (click)=\"toggleTabs(tabs[0])\"><a>{{ tabs[0].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[1].value}\" (click)=\"toggleTabs(tabs[1])\"><a>{{ tabs[1].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[2].value}\" (click)=\"toggleTabs(tabs[2])\"><a>{{ tabs[2].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[3].value}\" *ngIf=\"editTab\"><a>{{ tabs[3].name | translate }}</a></li>\n </ul>\n <div\n class=\"img-tabs__canva\"\n [ngClass]=\"{'img-tabs__canva--window': stateDisplayed === 'window'}\">\n <canva-btn\n (showImgUploaded)=\"onShowImgUploaded()\"\n [stateDisplayed]=\"stateDisplayed\">\n </canva-btn>\n </div>\n </div>\n <div class=\"select-mobile-page\">\n <wac-select\n [(ngModel)]=\"tabActive\"\n name=\"tabs\"\n [items]=\"tabs\"\n ></wac-select>\n </div>\n </div>\n\n <!-- Upload section -->\n <div\n class=\"columns img-tabs__tabsFirst\"\n [ngClass]=\"{\n 'img-tabs__tabsFirst--small': stateDisplayed === 'small',\n 'img-tabs__tabsFirst--window': stateDisplayed === 'window'\n }\"\n *ngIf=\"tabActive.value === tabs[0].value\">\n <div class=\"column img-tabs__tabsFirst__upload\">\n <img-upload\n [stateDisplayed]=\"stateDisplayed\"\n (imgUploaded)=\"onImgUploaded($event)\"\n ></img-upload>\n </div>\n <div class=\"column img-tabs__tabsFirst__list\" [ngClass]=\"{\n 'img-tabs__tabsFirst__list--upload': imgUpload\n }\">\n <images-view\n *ngIf=\"!imgUpload\"\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"false\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n [nbRowToShow]=\"2\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"false\">\n </images-view>\n\n\n <div [hidden]=\"!imgUpload\">\n <upload-list\n #imgUploadedImg\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabActive.value\"\n [multipleImgMode]=\"multipleImgMode\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n >\n </upload-list>\n </div>\n </div>\n </div>\n\n <!-- Images section -->\n <div class=\"columns img-tabs__tabsSecond\" *ngIf=\"tabActive.value === tabs[1].value\">\n <div class=\"column\">\n\n <images-view\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"listDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"true\">\n </images-view>\n\n </div>\n </div>\n\n <!-- Pexels img section -->\n <div class=\"columns img-tabs__tabsThird\" *ngIf=\"tabActive.value === tabs[2].value\">\n <div class=\"column\">\n <pexels-lib\n [stateDisplayed]=\"stateDisplayed\"\n (showImgUploaded)=\"onShowImgUploaded()\">\n </pexels-lib>\n </div>\n </div>\n\n <!--Edition section -->\n <div class=\"columns img-tabs__tabsEdit\" *ngIf=\"tabActive.value === tabs[3].value\">\n <div class=\"column\">\n <img-editor\n [stateDisplayed]=\"stateDisplayed\"\n [imgToEdit]=\"imgToEdit\"\n (editClosed)=\"onEditClosed($event)\">\n </img-editor>\n </div>\n </div>\n\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ImgSelectionService } from '../../services/img-selection.service';\nimport {CdkDragDrop} from '@angular/cdk/drag-drop';\nimport { tabDisplayed } from '../../dto/export-dtos.api';\nimport { combineLatest } from 'rxjs';\n\n\n@Component({\n selector: 'img-selection',\n templateUrl: './img-selection.component.html'\n})\nexport class ImgSelectionComponent {\n\n @Input() tabDisplayed: tabDisplayed;\n @Output() imgManagerClosed = new EventEmitter();\n\n imgSelectedList$ = this.imgSelectionService.imgSelection$;\n removingAll: boolean = false;\n cancellingAll: boolean = false;\n importingAll: boolean = false;\n dragStart = false;\n isLoading$ = this.imgSelectionService.imgSelectedListLoading$;\n\n vm$ = combineLatest({\n imgSelectedList: this.imgSelectedList$,\n isLoading: this.isLoading$\n });\n\n\n trashPositionIndex = 0;\n trashPositionLeft = '-5px';\n\n constructor(\n private imgSelectionService: ImgSelectionService\n ) { }\n\n init() {\n this.removingAll = false;\n this.cancellingAll = false;\n this.importingAll = false;\n }\n\n removeImg(index: number) {\n this.imgSelectionService.removeImgSelectedByIndex(index);\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousIndex !== event.currentIndex) {\n this.imgSelectionService.moveImgOrder(event);\n }\n }\n\n removeImgFromSelection(event: CdkDragDrop<string[]>) {\n this.imgSelectionService.removeImgSelectedByIndex(event.previousIndex);\n }\n}\n","<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<ng-container *ngIf=\"vm$ | async as vm\">\n\n <div\n class=\"img-selection\"\n *ngIf=\"!vm.isLoading; else Loading\"\n [ngClass]=\"{'img-selection--visible' : vm.imgSelectedList && vm.imgSelectedList.length}\"\n >\n\n <div\n cdkDropList\n #selectionList=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n class=\"list_img_selection\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListConnectedTo]=\"[unSelectList]\"\n >\n\n <div\n class=\"img_box\"\n *ngFor=\"let picture of vm.imgSelectedList; let index = index\"\n cdkDrag\n (cdkDragStarted)=\"dragStart = true;\"\n (cdkDragEnded)=\"dragStart = false;\"\n >\n\n <img\n *ngIf=\"index < 1\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [title]=\"picture.display_name\"\n />\n\n <img\n *ngIf=\"index > 0\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '200'\"\n [title]=\"picture.display_name\"\n />\n\n <div class=\"delete-btn\" (click)=\"removeImg(index)\">{{'ImgManager.ImgSelection.deleteImg' | translate}}</div>\n\n <span class=\"drag__tooltips\">{{'ImgManager.ImgSelection.tooltips' | translate}}</span>\n\n </div>\n </div>\n </div>\n</ng-container>\n<!-- Loader -->\n<ng-template #Loading>\n <wz-loader></wz-loader>\n</ng-template>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ImgSelectionService } from './services/img-selection.service';\nimport { Subscription } from 'rxjs';\nimport { UserSettingsService } from './services/user-settings.service';\nimport { CanvaService } from './services/canva.service';\nimport { ImgEventService } from './services/img-event.service';\nimport { DomService } from './services/dom.service';\nimport { HostListener } from '@angular/core';\nimport { WiziBlockMediaDto } from './dto/wizi-block-media.dto';\nimport { stateDisplayed } from './dto/stateDisplayed.dto';\nimport { UploadService } from './services/upload.service';\n@Component({\n selector: 'wz-img-manager',\n templateUrl: './wz-img-manager.component.html'\n})\nexport class WzImgManagerComponent implements OnInit {\n @Input() stateDisplayed: stateDisplayed;\n @Input() showSelection: boolean = false;\n\n // If forceToOpenCanva is true : Canva will open with the canvaService.expectedImgSizesChange\n // If forceToOpenCanva is a WiziBlockMediaDto, Canva open immediatly\n @Input() set forceToOpenCanva(forceToOpenCanva: boolean|WiziBlockMediaDto) {\n this.canvaService.forceToOpenCanva = !!forceToOpenCanva;\n\n if (typeof forceToOpenCanva === 'boolean') {\n return;\n }\n\n this.canvaService.expectedImgSizesChange(forceToOpenCanva);\n }\n\n @Output() imgManagerClosed = new EventEmitter();\n private _multipleImgMode: boolean = false;\n\n @Input() set multipleImgMode(activate: boolean) {\n this._multipleImgMode = activate;\n this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);\n }\n\n get multipleImgMode(): boolean {\n return this._multipleImgMode;\n }\n\n _showImgManagerModule: boolean = false;\n @Input() set showImgManagerModule(activate: boolean) {\n this._showImgManagerModule = activate;\n if (activate) {\n this.displaySmall();\n }\n }\n\n get showImgManagerModule(): boolean {\n return this._multipleImgMode;\n }\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n if (this.stateDisplayed && this.stateDisplayed !== 'window') {\n this.onClose();\n }\n }\n\n @Output() imgSelectionChange = this.imgSelectionService.imgSelection$;\n\n @Output() imageUploaded = this.uploadService.imageUploaded$;\n\n close: boolean = false\n selectImgEvent: Subscription;\n listDisplayed: boolean = false;\n listDisplayedEvent: Subscription;\n hideTab: boolean = false;\n // Save the default overflow apply to html tag, when the module is full open\n private overflowHTML: string;\n private bodyPadding: number;\n\n constructor(\n private imgSelectionService: ImgSelectionService,\n private userSettingsService: UserSettingsService,\n private canvaService: CanvaService,\n private imgEventService: ImgEventService,\n private domService: DomService,\n private uploadService: UploadService\n ) {\n }\n\n ngOnInit(): void {\n this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);\n this.imgSelectionService.initImgSelectedList(null);\n this.selectImgEvent = this.imgSelectionService.imgSelection$.subscribe(imgSelection =>{\n\n if (imgSelection && imgSelection.length && this.checkCloseImgManager()) {\n // Close the img manager\n this.onClose();\n }\n });\n this.checkUserDisplayPreference();\n // Use when the img manager is full open or open in page. This display the user preference display, mosaic or list.\n this.listDisplayedEvent = this.imgEventService.getlistDisplayedChange().subscribe(value => this.listDisplayed = value);\n // Register dom service to listen on all event on the body to avoid having multiple instance of the same thing every where\n this.domService.setDocumentEventListener();\n }\n\n checkUserDisplayPreference() {\n if (this.stateDisplayed === 'window' || this.stateDisplayed === 'full') {\n this.listDisplayed = this.userSettingsService.getUserDisplayPreference();\n }\n }\n\n setCurrentTab(event) {\n if (event === 'img-edition') {\n this.hideTab = true;\n return;\n }\n this.hideTab = false;\n }\n\n displaySmall() {\n if (this.stateDisplayed !== 'window') {\n setTimeout(() => {\n this.stateDisplayed = 'small';\n this.addBodyBottomPaddingForModule();\n }, 10);\n }\n }\n\n openSmall() {\n this.stateDisplayed = 'small';\n this.setBodyMainScroll();\n this.listDisplayed = false;\n }\n\n openFull() {\n this.stateDisplayed = 'full';\n this.checkUserDisplayPreference();\n this.hideBodyMainScroll();\n }\n\n onClose() {\n this.stateDisplayed = 'closed';\n this.hideTab = false;\n this.setBodyMainScroll();\n this.removeBodyBottomPaddingForModule();\n // Wait the end of the closing annimation\n setTimeout(() => {\n this.imgManagerClosed.emit();\n }, 250);\n }\n\n onImgManagerClosed() {\n this.onClose();\n }\n\n /**\n * Close the img manager after one img is selected, if not in multiple img to select\n */\n checkCloseImgManager() {\n return !this.multipleImgMode && this.stateDisplayed !== 'window' ? true : false;\n }\n\n hideBodyMainScroll() {\n const html = document.getElementsByTagName('html')[0];\n\n if (!this.overflowHTML) {\n this.overflowHTML = html.style.overflowY;\n }\n\n html.style.overflowY = \"hidden\";\n }\n\n setBodyMainScroll() {\n const html = document.getElementsByTagName('html')[0];\n html.style.overflowY = this.overflowHTML ? this.overflowHTML : \"scroll\";\n }\n\n addBodyBottomPaddingForModule() {\n const body = document.getElementsByTagName('body')[0];\n this.bodyPadding = this.bodyPadding ? parseInt(body.style.paddingBottom) : 0;\n body.style.paddingBottom = this.bodyPadding + 300 + 'px';\n }\n\n removeBodyBottomPaddingForModule() {\n if (typeof this.bodyPadding !== 'undefined') {\n const body = document.getElementsByTagName('body')[0];\n body.style.paddingBottom = this.bodyPadding + 'px';\n this.bodyPadding = 0;\n }\n }\n\n changeDisplayTab() {\n this.stateDisplayed = 'full';\n }\n\n ngOnDestroy() {\n this.selectImgEvent.unsubscribe();\n this.canvaService.expectedImgSizesChange(null);\n this.listDisplayedEvent.unsubscribe();\n }\n}\n","<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n","import { Injectable } from '@angular/core';\nimport { NwbSnackbarService, NwbSnackbarConfig, NwbSnackbarComponent } from '@wizishop/ng-wizi-bulma';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class SnackBarService {\n\n actionMsg = 'ImgManager.snackBar.action';\n\n snackBarConfigAction: NwbSnackbarConfig = {\n message: '',\n duration: 5000\n };\n\n snackBarConfig: NwbSnackbarConfig = {\n message: '',\n duration: 5000\n };\n\n private snackBarRefComponent: NwbSnackbarComponent;\n\n constructor(\n private nwbSnackbar: NwbSnackbarService,\n private translateService: TranslateService\n ) {}\n\n openSnackBar(msgKey: string) {\n this.closePreviousSnackbar();\n this.translateService.get(msgKey).subscribe(trans => {\n this.snackBarConfig.message = trans;\n this.snackBarRefComponent = this.nwbSnackbar.open(this.snackBarConfig);\n this.snackBarRefComponent.afterClosed().subscribe();\n });\n }\n\n openSnackBarWithAction(msgKey: string) {\n return new Observable(observer => {\n\n this.translateService.get([msgKey, this.actionMsg]).subscribe((trans) => {\n\n this.snackBarConfigAction.message = trans[msgKey];\n this.snackBarConfigAction.action = trans[this.actionMsg];\n\n this.closePreviousSnackbar();\n this.snackBarRefComponent = this.nwbSnackbar.open(this.snackBarConfigAction);\n this.snackBarRefComponent.afterClosed().subscribe(manualClose => {\n observer.next(manualClose);\n observer.complete();\n });\n });\n });\n }\n\n openSnackBarWithBackendRespons(msgKey: string, msgBackend: string) {\n this.translateService.get(msgKey).subscribe(trans => {\n this.snackBarConfig.message = trans;\n this.snackBarConfig.message += '<br/>' + JSON.parse(msgBackend).message;\n\n this.closePreviousSnackbar();\n this.snackBarRefComponent = this.nwbSnackbar.open(this.snackBarConfig);\n this.snackBarRefComponent.afterClosed().subscribe();\n });\n }\n\n private closePreviousSnackbar() {\n if (this.snackBarRefComponent) {\n this.snackBarRefComponent.dismiss(false);\n }\n }\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { WzImgManagerComponent } from './wz-img-manager.component';\nimport { ImgUploadComponent } from './components/img-upload/img-upload.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ImgTabsComponent } from './components/img-tabs/img-tabs.component';\nimport { CommonModule } from '@angular/common';\nimport { DragDropDirective } from './directives/drag-drop.directive';\nimport { PexelLibComponent } from './components/pexels-lib/pexels-lib.component';\nimport { FormsModule } from '@angular/forms';\nimport { ImgCardComponent } from './components/images-view/mosaic-view/img-card/img-card.component';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { NgScrollbarReachedModule } from 'ngx-scrollbar/reached-event';\nimport { NwbAllModule } from '@wizishop/ng-wizi-bulma';\nimport { UploadListComponent } from './components/upload-list/upload-list.component';\nimport { ImgEditorComponent } from './components/img-editor/img-editor.component';\nimport { ImageCropperModule } from 'ngx-image-cropper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CanvaBtnComponent } from './components/canva-btn/canva-btn.component';\nimport { ImgSelectionComponent } from './components/img-selection/img-selection.component';;\nimport { LoadingDirective } from './directives/loading.directive';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AutoHideDirective } from './directives/auto-hide.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CopyClipboardDirective } from './directives/copy-to-clipboard.directive';\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\nimport { EditorInfoSectionComponent } from './components/img-editor/info-section/info-section.component';\nimport { CropperComponent } from './components/img-editor/cropper/cropper.component';\nimport { ImagesViewComponent } from './components/images-view/images-view.component';\nimport { MosaicViewComponent } from './components/images-view/mosaic-view/mosaic-view.component';\nimport { TableViewComponent } from './components/images-view/table-view/table-view.component';\nimport { TableComponent } from './components/shared/table/table.component';\nimport { InputSearchComponent } from './components/shared/input-search/input-search.component';\nimport { PaginationComponent } from './components/shared/pagination/pagination.component';\nimport { PagniationArrayTotalPages } from './pipes/pagination/array-total-pages/array-pages.pipe';\nimport { PagniationText } from './pipes/pagination/text/custom-text.pipe';\nimport { PagniationIsLastPage } from './pipes/pagination/total-pages/is-last-page.pipe';\nimport { CheckBoxRow } from './directives/table/checkBoxRow.directive';\nimport { TableColumn } from './directives/table/column.directive';\nimport { TableColumnHeader } from './directives/table/columnHeader.directive';\nimport { TableRow } from './directives/table/raw.directive';\nimport { CheckboxComponent } from './components/shared/checkbox/checkbox.component';\nimport { ImageSrcPipe } from './pipes/images/img-src.pipe';\nimport { AbstractDebounceDirective } from './directives/abstract-debounce/abstract-debounce.directive';\nimport { DebounceKeyupDirective } from './directives/abstract-debounce/debounce-keyup.directive';\nimport { LoaderComponent } from './components/loader/loader.component';\nimport { AlertComponent } from './components/shared/alert/alert.component';\nimport { NumberToArray } from './pipes/number-to-array.pipe';\nimport { PageSelectorComponent } from './components/shared/pagination/page-selector/page-selector.component';\nimport { LargeNumberOfPagePipe } from './pipes/pagination/large-number-of-page/large-number-of-page.pipe';\nimport { SelectComponent } from './components/shared/select/select.component';\nimport { SelectFiltersPipe } from './pipes/select/select-filters.pipe';\nimport { ZindexToggleDirective } from './directives/zindex-toggle.directive';\nimport { ImgCDNService } from './services/config/img-cdn.service';\nimport { FiltersTableService } from './services/table/filters-table.service';\nimport { AlertService } from './services/alert.service';\nimport { CanvaService } from './services/canva.service';\nimport { DomService } from './services/dom.service';\nimport { ImgEventService } from './services/img-event.service';\nimport { ImgManagerService } from './services/img-manager.service';\nimport { ImgSelectionService } from './services/img-selection.service';\nimport { PexelsService } from './services/pexels.service';\nimport { RenamePictureService } from './services/rename-picture.service';\nimport { SnackBarService } from './services/snackbar.service';\nimport { UploadService } from './services/upload.service';\nimport { UserSettingsService } from './services/user-settings.service';\n\nconst components = [\n WzImgManagerComponent,\n ImgTabsComponent,\n ImgUploadComponent,\n PexelLibComponent,\n ImgCardComponent,\n UploadListComponent,\n ImgEditorComponent,\n EditorInfoSectionComponent,\n CanvaBtnComponent,\n ImgSelectionComponent,\n LoaderComponent,\n DropdownComponent,\n CropperComponent,\n ImagesViewComponent,\n MosaicViewComponent,\n TableViewComponent,\n TableComponent,\n InputSearchComponent,\n PaginationComponent,\n CheckboxComponent,\n AlertComponent,\n PageSelectorComponent,\n SelectComponent\n];\n\nconst directives = [\n DragDropDirective,\n LoadingDirective,\n AutoHideDirective,\n CopyClipboardDirective,\n TableColumn,\n CheckBoxRow,\n TableColumnHeader,\n TableRow,\n AbstractDebounceDirective,\n DebounceKeyupDirective,\n ZindexToggleDirective\n];\n\nconst pipes = [\n PagniationArrayTotalPages,\n PagniationIsLastPage,\n PagniationText,\n ImageSrcPipe,\n NumberToArray,\n LargeNumberOfPagePipe,\n SelectFiltersPipe\n];\n\n@NgModule({\n declarations: [\n ...components,\n ...directives,\n ...pipes\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n FormsModule,\n NgScrollbarModule,\n NgScrollbarReachedModule,\n NwbAllModule,\n ImageCropperModule,\n CdkTableModule,\n DragDropModule,\n TranslateModule,\n ],\n providers: [],\n exports: [\n WzImgManagerComponent]\n})\nexport class WzImgManagerModule {\n static withConfig(ApiService: Provider): ModuleWithProviders<WzImgManagerModule> {\n return {\n ngModule: WzImgManagerModule,\n providers: [\n ImgManagerService,\n ApiService,\n ImgCDNService,\n FiltersTableService,\n AlertService,\n CanvaService,\n DomService,\n ImgEventService,\n ImgSelectionService,\n PexelsService,\n RenamePictureService,\n SnackBarService,\n UploadService,\n UserSettingsService\n ]\n };\n }\n }\n","import { CanvaCreateDesign } from \"./canva-create-design.dto\";\n\nexport class CanvaButtonApi {\n createDesign: (\n opts: {\n design: CanvaCreateDesign,\n editor?: {\n publishLabel: string,\n fileType: string\n }\n onDesignOpen?: (\n opts: { designId: string, designTitle: string }\n ) => void,\n onDesignPublish?: (\n opts: { exportUrl: string, designId: string, designTitle: string }\n ) => void,\n onDesignClose?: () => void\n }\n ) => void;\n editDesign: (opts: {\n opts: {\n design: {\n id: any\n },\n editor?: {\n publishLabel: string,\n fileType: string\n }\n onDesignOpen?: (\n opts: { designId: string, designTitle: string }\n ) => void,\n onDesignPublish?: (\n opts: { exportUrl: string, designId: string, designTitle: string }\n ) => void,\n onDesignClose?: () => void\n }\n }) => void;\n};","export class ImgApiDto {\n shop_token: string;\n image_manager_route = '';\n pexels_token: string;\n pexels_route = '';\n shop_category: string;\n canva_token: string;\n canva_url = '';\n assets_route: string = 'assets/img-manager/';\n}\n","import { ImgApiDto } from '../apis/api.dto';\nimport { ImgCDNConfigDTO } from '../image-cdn/image-cdn-config.dto';\n\nexport class ImgManagerConfigDto {\n api: ImgApiDto;\n imgCDNConfig : ImgCDNConfigDTO;\n}","/*\n * Public API Surface of wz-img-manager\n */\n\nexport { WzImgManagerModule } from './lib/wz-img-manager.module';\nexport { WzImgManagerComponent } from './lib/wz-img-manager.component';\nexport { ImgSelectionService } from './lib/services/img-selection.service';\nexport { ImgManagerService } from './lib/services/img-manager.service';\nexport { RenamePictureService } from './lib/services/rename-picture.service';\nexport { ApiService } from './lib/services/api.service';\nexport { CanvaService } from './lib/services/canva.service';\nexport * from './lib/dto/ImgManagerDisplayConfig.dto';\nexport * from './lib/dto/export-dtos.api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1.ImgEventService","i2.AlertService","i4.UploadService","i5.ApiService","i1","i1.AlertService","i2.ApiService","i5","i6.LoaderComponent","i7.DragDropDirective","tap","i3.DebounceKeyupDirective","i1.PexelsService","i6","i7","i9.LoaderComponent","i10.InputSearchComponent","i11.AlertComponent","i12.LoadingDirective","i1.ApiService","i1.ImgManagerService","i2.ImgSelectionService","i3","i4.ImgCDNService","i5.ImgEventService","i6.AlertService","i8.ApiService","i1.ImgCDNService","i9","i10","i11.LoadingDirective","i12.ImageSrcPipe","i1.ImgSelectionService","i2.RenamePictureService","i5.ImgCardComponent","i4.CopyClipboardDirective","i5.DebounceKeyupDirective","i7.ImageSrcPipe","i4","i5.DropdownComponent","i5.EditorInfoSectionComponent","i6.CropperComponent","i7.LoadingDirective","i8","i1.DomService","i1.CanvaService","i4.LoadingDirective","i5.AutoHideDirective","i3.PagniationArrayTotalPages","i4.LargeNumberOfPagePipe","i2.PageSelectorComponent","i4.PagniationIsLastPage","i5.PagniationText","i11.ImgCardComponent","i12.LoaderComponent","i13.InputSearchComponent","i14.PaginationComponent","i15.NumberToArray","uuid","i1.FiltersTableService","i4.LoaderComponent","i5.InputSearchComponent","i6.PaginationComponent","i7.CheckboxComponent","i11.DropdownComponent","i12.TableComponent","i13.TableColumn","i14.CheckBoxRow","i15.TableColumnHeader","i16.TableRow","i17.ImageSrcPipe","i2.ImgEventService","i3.ImgSelectionService","i4.AlertService","i5.UserSettingsService","i6.RenamePictureService","i9.PexelLibComponent","i10.MosaicViewComponent","i11.TableViewComponent","i13","i6.ZindexToggleDirective","i7.SelectFiltersPipe","i6.ImgUploadComponent","i7.PexelLibComponent","i8.UploadListComponent","i9.ImgEditorComponent","i10.CanvaBtnComponent","i11.ImagesViewComponent","i12.SelectComponent","i6.ImageSrcPipe","i2.UserSettingsService","i3.CanvaService","i4.ImgEventService","i5.DomService","i6.UploadService","i8.ImgTabsComponent","i9.ImgSelectionComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,mBAAmB,CAAA;AAM5B,IAAA,WAAA,GAAA;AAJA,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;QACjC,IAAA,CAAA,aAAa,GAAqC,IAAI,eAAe,CAAkB,EAAE,CAAC,CAAC;QAC3F,IAAA,CAAA,uBAAuB,GAA6B,IAAI,eAAe,CAAU,KAAK,CAAC,CAAC;KAExE;IAEhB,eAAe,GAAA;AACX,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KACxC;;AAGD,IAAA,eAAe,CAAC,eAAgC,EAAA;QAC5C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;KAClD;AAED,IAAA,cAAc,CAAC,OAAuB,EAAA;QAClC,IAAI,IAAI,CAAC,eAAe,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;AACxE,SAAA;AAAM,aAAA;YACH,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,SAAA;KACJ;AAED,IAAA,wBAAwB,CAAC,KAAa,EAAA;QAClC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACtD,QAAA,eAAe,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAE5C;AAED,IAAA,qBAAqB,CAAC,OAAe,EAAA;AACjC,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO;AACV,SAAA;QACD,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC;KACjG;AAED,IAAA,uBAAuB,CAAC,YAAsB,EAAA;AAC1C,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5B,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KAC5G;IAED,oBAAoB,GAAA;AAChB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC/B;AAED,IAAA,kBAAkB,CAAC,SAAkB,EAAA;AACjC,QAAA,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;KACpC;AAED,IAAA,mBAAmB,CAAC,eAAgC,EAAA;;AAEhD,QAAA,IAAI,eAAe,EAAE;AACjB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACzC,OAAO;AACV,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC/B;AAED;;;;AAIG;AACH,IAAA,YAAY,CAAC,KAA4B,EAAA;AACrC,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;AACtC,QAAA,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC;QACnC,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;AACtD,QAAA,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;KAC5C;;gHA5EQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCFE,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;AAGY,QAAA,IAAqB,CAAA,qBAAA,GAAG,2BAA2B,CAAC;KAgB/D;AAdG;;;;AAIG;AACH,IAAA,wBAAwB,CAAC,KAAc,EAAA;QACnC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;KAChE;IAED,wBAAwB,GAAA;QACpB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC/D,OAAO,KAAK,IAAI,MAAM,CAAC;KAC1B;;gHAhBQ,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCGE,eAAe,CAAA;AAD5B,IAAA,WAAA,GAAA;QAGE,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAS,SAAS,CAAC,CAAC;AAC7C,QAAA,IAAA,CAAA,cAAc,GAA2B,IAAI,OAAO,EAAiB,CAAC;AACtE,QAAA,IAAA,CAAA,QAAQ,GAAoB,IAAI,OAAO,EAAU,CAAC;AAClD,QAAA,IAAA,CAAA,mBAAmB,GAAqB,IAAI,OAAO,EAAW,CAAC;KA0BxE;AAvBE,IAAA,aAAa,CAAC,SAAwB,EAAA;AACnC,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACtC;IAED,yBAAyB,GAAA;AACtB,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;KAC5C;AAED,IAAA,YAAY,CAAC,OAAe,EAAA;AACzB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9B;IAED,uBAAuB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;KACtC;AAED,IAAA,uBAAuB,CAAC,KAAc,EAAA;AACnC,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACvC;IAED,sBAAsB,GAAA;AACnB,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;KACjD;;4GA9BS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;MCEE,YAAY,CAAA;IAWrB,WACY,CAAA,eAAgC,EAChC,gBAAkC,EAAA;AADlC,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAX9C,QAAA,IAAS,CAAA,SAAA,GAAG,yBAAyB,CAAC;QAEtC,IAAA,CAAA,WAAW,GAAmB;AAC5B,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,IAAI;SACf,CAAA;KAOO;AAER,IAAA,SAAS,CAAC,MAAc,EAAA;QACtB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAChD,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAE3B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;AACrD,SAAC,CAAC,CAAC;KACJ;IAED,4BAA4B,CAAC,MAAc,EAAE,UAAkB,EAAA;AAC7D,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAClD,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACjC,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YAErE,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACrE,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;AACnD,SAAC,CAAC,CAAC;KACJ;IAEO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,iBAAiB,EAAE;AAC1B,YAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC;AAClC,SAAA;KACF;AAEO,IAAA,aAAa,CAAC,MAAc,EAAA;QAClC,MAAM,UAAU,GAAY,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClD,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,UAAU,GAAG,WAAW,GAAG,YAAY,CAAC;KAClE;;yGA/CQ,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCEW,UAAU,CAAA;;uGAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAV,UAAU,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCAE,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;AAGI,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAiB,CAAC;AAE9C,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;KAcnC;AAZG,IAAA,UAAU,CAAC,QAAkB,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,CAC5C,GAAG,CAAC,CAAC,GAAkB,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAC7D,CAAC;KACL;IAED,eAAe,CAAC,GAAW,EAAE,QAAiB,EAAA;AAC1C,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CACtD,GAAG,CAAC,CAAC,GAAkB,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAC7D,CAAC;KACL;;0GAhBQ,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCcE,YAAY,CAAA;IAqBvB,WACU,CAAA,iBAAkC,EAClC,YAA0B,EAC1B,gBAAkC,EAClC,aAA4B,EAC5B,UAAsB,EAAA;AAJtB,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAiB;AAClC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAhBhC,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AACnB,QAAA,IAAY,CAAA,YAAA,GAAG,kCAAkC,CAAC;AAClD,QAAA,IAAkB,CAAA,kBAAA,GAAG,mCAAmC,CAAC;AACzD,QAAA,IAAmB,CAAA,mBAAA,GAAG,yCAAyC,CAAC;AAChE,QAAA,IAAmB,CAAA,mBAAA,GAAG,yCAAyC,CAAC;AAEhE,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;QAE1B,IAAA,CAAA,wBAAwB,GAAuC,IAAI,eAAe,CAAoB,IAAI,CAAC,CAAC;QAC5G,IAAA,CAAA,oBAAoB,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC;KAQxE;AAxBJ,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC;KACzC;;AACD,IAAA,IAAI,WAAW,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC;KAC3C;IAqBD,YAAY,GAAA;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,GAAG,sBAAsB,CAAC;KACpE;IAED,+BAA+B,GAAA;QAC7B,OAAO,IAAI,CAAC,oBAAoB,CAAC;KAClC;AAED,IAAA,sBAAsB,CAAE,QAA2B,EAAA;AACjD,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;AACjF,SAAA;KACF;IAED,WAAW,GAAA;AACT,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;AACjC,YAAA,IAAI,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC;gBACvB,QAAQ,EAAE,MAAK;AACX,oBAAA,IAAG,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,YAAY,EAAE;AACpC,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACvB,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAClC,qBAAA;iBACJ;AACA,aAAA,CAAC,CAAA;AACN,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAC,QAAoC,EAAA;QAC1D,IAAI,KAAK,CAAC,YAAY,EAAE;AACtB,YAAA,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC;gBAC5B,MAAM,EAAE,IAAI,CAAC,WAAW;AAEzB,aAAA,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,KAAI;AACnB,gBAAA,IAAI,CAAC,QAAQ,GAAI,QAAQ,CAAC;AAC1B,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC7B,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;IAEO,SAAS,GAAA;AACb,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAC/B,IAAG,IAAI,CAAC,QAAQ,EAAE;gBAChB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACrB,aAAA;AAAI,iBAAA;AACH,gBAAA,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;KACN;AAEO,IAAA,eAAe,CAAC,QAA0B,EAAA;QAEhD,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;AAC5B,QAAA,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;AAC9B,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACvB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAK;YACjB,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,SAAC,CAAA;AACD,QAAA,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;KAC5D;IAED,SAAS,CAAC,KAAa,EAAE,MAAc,EAAA;QACrC,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,GAAmB,KAAI;AACjE,YAAA,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,eAAe,EAAE,CAAC;AACvB,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACJ;IAEO,eAAe,GAAA;QACrB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;KAC1C;IAEO,kBAAkB,GAAA;QACxB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;KAC7C;IAEO,YAAY,CAAC,KAAa,EAAE,MAAc,EAAA;AAChD,QAAA,MAAO,YAAY,GAAsB;AACvC,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,UAAU,EAAG;AACX,gBAAA,KAAK,EAAE,IAAI;gBACX,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,SAAS;gBAChC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;AACpC,aAAA;YACD,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,6BAA6B,CAAC;SAC3E,CAAC;AACF,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AACzB,YAAA,MAAM,EAAE,YAAY;AACpB,YAAA,eAAe,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC;YAC7F,aAAa,EAAE,MAAK;gBAClB,IAAI,CAAC,kBAAkB,EAAE,CAAC;aAC3B;AAEF,SAAA,CAAC,CAAC;KACJ;IAEO,eAAe,CAAC,SAAiB,EAAE,WAAmB,EAAA;QAC5D,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AAGvB,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,YAAA,IAAI,EAAE,CAAC,GAAG,KAAI;AACZ,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAE1B,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aACtD;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAE1B,gBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;AACnD,oBAAA,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AAC9F,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;AACvD,iBAAA;aACF;AACF,SAAA,CAAC,CAAC;KACJ;;yGA9JU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBADxB,UAAU;;;MCdE,UAAU,CAAA;AADvB,IAAA,WAAA,GAAA;AAGU,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAE,CAAC;QACpC,IAAA,CAAA,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC;AAE5D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,OAAO,EAAE,CAAC;QACrC,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,CAAC;KAqBvE;IAnBC,aAAa,GAAA;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC;KAC/B;IAED,wBAAwB,GAAA;QACtB,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAG;YAC9C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC9C,SAAC,CAAC,CAAC;KACJ;IAED,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,kBAAkB,CAAC;KAChC;IAED,sBAAsB,GAAA;AACpB,QAAA,MAAM,CAAC,QAAQ,GAAG,MAAK;AACrB,YAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACzC,SAAC,CAAC;KACH;;uGA1BU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2GAAV,UAAU,EAAA,CAAA,CAAA;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB,UAAU;;;ACDJ,MAAM,SAAS;CACtB,OAAO,CAAC,WAAW,EAAE;;IAGnB,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;;IAGhC,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,CAAC;QACnB,OAAO,CAAC,kBAAkB,CAAE;KAC7B,CAAC;AACH,CAAA,CAAC;;MCNW,eAAe,CAAA;AAL5B,IAAA,WAAA,GAAA;AASE,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;KAGf;;4GAPY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,iHCP5B,qZAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDTa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACE,WAAW,EAAA,aAAA,EAEN,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qZAAA,EAAA,CAAA;8BAIrC,IAAI,EAAA,CAAA;sBADH,KAAK;gBAGN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAGN,QAAQ,EAAA,CAAA;sBADP,KAAK;;;MEPK,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAKY,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAS,CAAC;AAEb,QAAA,IAAU,CAAA,UAAA,GAAG,MAAM,CAAA;AAC5B,QAAA,IAAO,CAAA,OAAA,GAAG,GAAG,CAAA;KA0B5C;AAxBuC,IAAA,UAAU,CAAC,GAAQ,EAAA;QACvD,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;AAE6C,IAAA,WAAW,CAAC,GAAQ,EAAA;QAChE,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;KACpB;AAEwC,IAAA,MAAM,CAAC,GAAQ,EAAA;QACtD,GAAG,CAAC,cAAc,EAAE,CAAC;QACrB,GAAG,CAAC,eAAe,EAAE,CAAC;AACtB,QAAA,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;AAC3B,QAAA,IAAI,CAAC,OAAO,GAAG,GAAG,CAAA;AAClB,QAAA,MAAM,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC;AACrC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAChC,SAAA;KACF;;8GA9BU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,wBAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,cAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;iBAC1B,CAAA;8BAGW,aAAa,EAAA,CAAA;sBAAtB,MAAM;gBAEgC,UAAU,EAAA,CAAA;sBAAhD,WAAW;uBAAC,wBAAwB,CAAA;gBACP,OAAO,EAAA,CAAA;sBAApC,WAAW;uBAAC,eAAe,CAAA;gBAEU,UAAU,EAAA,CAAA;sBAA/C,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOU,WAAW,EAAA,CAAA;sBAAxD,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAOI,MAAM,EAAA,CAAA;sBAA9C,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCTrB,kBAAkB,CAAA;AAgB7B,IAAA,WAAA,CACU,YAA0B,EAC1B,UAAsB,EACtB,gBAAkC,EAClC,aAA4B,EAAA;AAH5B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAlBtC,QAAA,IAAK,CAAA,KAAA,GAAQ,EAAE,CAAC;AAChB,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAGjB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE,CAAC;AAI3C,QAAA,IAAW,CAAA,WAAA,GAAG,8BAA8B,CAAC;AAC7C,QAAA,IAAiB,CAAA,iBAAA,GAAG,wCAAwC,CAAC;AAC7D,QAAA,IAAW,CAAA,WAAA,GAAG,kCAAkC,CAAC;AAEjD,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CAAC;KAOpB;IAEN,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;KACpC;AAED,IAAA,kBAAkB,CAAC,KAAU,EAAA;QAC3B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KACrC;IAED,SAAS,GAAA;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,GAAG,sBAAsB,CAAC;KACrE;AAED,IAAA,wBAAwB,CAAC,SAAmB,EAAA;QAC1C,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;KACxC;AAED,IAAA,UAAU,CAAC,KAAa,EAAA;AACtB,QAAA,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YAC1B,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAE,IAAI,CAAC;QACrB,MAAM,eAAe,GAAsB,EAAE,CAAC;AAC9C,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;YACxB,IAAG,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AAC9C,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,SAAS;AACV,aAAA;YAED,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AAChC,gBAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CACzB,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mCAAmC,EAAE;oBACjE,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;oBAC1C,WAAW,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC;AACxD,iBAAA,CAAC,CAAC,CAAC;AACN,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,SAAS;AACV,aAAA;AAED,YAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1C,YAAA,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC/D,SAAA;AAED,QAAA,QAAQ,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC;AAClC,YAAA,IAAI,EAAE,CAAC,GAAoB,KAAI;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;AACrB,oBAAA,IAAI,CAAC,SAAS,GAAE,KAAK,CAAC;aACvB;YACD,KAAK,EAAE,KAAK,IAAG;;AACb,gBAAA,IAAI,CAAA,CAAA,EAAA,GAAA,KAAK,KAAL,IAAA,IAAA,KAAK,uBAAL,KAAK,CAAE,KAAK,MAAA,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAE,OAAO,KAAI,KAAK,CAAC,UAAU,KAAK,aAAa,EAAE;AAC/D,oBAAA,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC7F,iBAAA;AAAM,qBAAA;oBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrD,iBAAA;AACD,gBAAA,IAAI,CAAC,SAAS,GAAE,KAAK,CAAC;aACvB;AACF,SAAA,CAAC,CAAA;KACH;AAED;;;;AAIG;AACH,IAAA,WAAW,CAAC,GAAoB,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;AAED,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC1B,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;KAC3C;AAED,IAAA,WAAW,CAAC,cAAsB,EAAA;AAChC,QAAA,OAAO,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;KAC7C;AAED,IAAA,gBAAgB,CAAC,IAAY,EAAA;QAC3B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAChC;AAED;;;AAGG;IACH,sBAAsB,GAAA;QACpB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,GAAG,EAAE,CAAC;KAC9C;;+GAjHU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,gBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB/B,8yCAkCA,EDrBc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,SAAS;AACV,KAAA,EAAA,CAAA,CAAA;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEV,UAAA,EAAA;wBACV,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,8yCAAA,EAAA,CAAA;8KAOQ,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEsB,cAAc,EAAA,CAAA;sBAA1C,SAAS;uBAAC,gBAAgB,CAAA;;;AErBtB,MAAM,cAAc;CAC3B,OAAO,CAAC,eAAe,EAAE;AACvB,IAAA,UAAU,CAAC,yBAAyB,EAAE,EAAE,CAAC;IACzC,UAAU,CAAC,YAAY,EAAE;QACvB,KAAK,CAAC,QAAQ,EAAE;YACd,KAAK,CAAC,EAAC,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAC,CAAC;YACnD,OAAO,CAAC,EAAE,EAAE;AACV,gBAAA,OAAO,CAAC,sCAAsC,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;aAC1F,CAAC;AACH,SAAA,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;KACvB,CAAC;AACH,CAAA,CAAC;;MCNW,aAAa,CAAA;AAUxB,IAAA,WAAA,CACU,IAAgB,EAChB,UAAsB,EACtB,gBAAkC,EAAA;AAFlC,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAChB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAL5C,IAAA,CAAA,SAAS,GAAG,EAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAC,CAAC;QAOvE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,IAAG;AACtD,YAAA,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AAC9B,SAAC,CAAC,CAAA;KACF;AAlBF,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;KAC5C;;AACD,IAAA,IAAI,MAAM,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC;KAC5C;AAeA,IAAA,OAAO,CAAC,IAAY,EAAA;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;KAClE;AAEF,IAAA,cAAc,CAAC,QAAgB,EAAE,OAAe,EAAE,IAAY,EAAA;AAC5D,QAAA,MAAM,WAAW,GAAG;YAClB,OAAO,EAAE,IAAI,WAAW,CAAC;gBACvB,aAAa,EAAE,IAAI,CAAC,MAAM;aAC3B,CAAC;SACH,CAAC;AAEF,QAAA,IAAI,OAAO,CAAC;;QAGZ,IAAI,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;AACvC,YAAA,OAAO,GAAG,CAAA,cAAA,EAAiB,QAAQ,CAAA,UAAA,EAAa,OAAO,CAAA,MAAA,EAAS,IAAI,CAAA,QAAA,EAAW,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;AAE5F,SAAA;AAAM,aAAA;YACL,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC;;AAGvD,YAAA,IAAI,YAAY,IAAI,YAAY,KAAK,OAAO,IAAI,YAAY,KAAK,MAAM,IAAI,YAAY,KAAK,SAAS,EAAE;gBACrG,OAAO,GAAG,iBAAiB,YAAY,CAAA,UAAA,EAAa,OAAO,CAAS,MAAA,EAAA,IAAI,eAAe,CAAC;AACzF,aAAA;AAAM,iBAAA;AACL,gBAAA,OAAO,GAAG,CAAqB,kBAAA,EAAA,OAAO,CAAS,MAAA,EAAA,IAAI,EAAE,CAAC;AACvD,aAAA;AACF,SAAA;QAED,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,CAC/D,GAAG,CAAC,CAAC,IAAiB,KAAI;AACxB,YAAA,OAAO,IAAI,CAAC;SACb,CAAC,CACH,CAAC;KACH;;0GAtDU,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAE,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCDE,yBAAyB,CAAA;AAUpC,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,YAAY,EAAO,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAO,CAAC;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,EAAQ,CAAC;KAC1C;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU;AACZ,aAAA,IAAI,CACH,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,EAC7B,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,EAC/B,oBAAoB,EAAE,EACtBI,KAAG,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CACrC;AACA,aAAA,SAAS,EAAE,CAAC;KAChB;AAEM,IAAA,UAAU,CAAC,KAAU,EAAA;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAChC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;AAC1B,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;KAC/B;;sHAnCU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;0GAAzB,yBAAyB,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,2BAA2B;iBACtC,CAAA;0EAGQ,YAAY,EAAA,CAAA;sBADlB,KAAK;gBAIC,aAAa,EAAA,CAAA;sBADnB,MAAM;;;ACNH,MAAO,sBAAuB,SAAQ,yBAAyB,CAAA;AACnE,IAAA,WAAA,GAAA;AACE,QAAA,KAAK,EAAE,CAAC;KACT;AAGM,IAAA,OAAO,CAAC,KAAU,EAAA;QACvB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC7B;;mHATU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,sBAAsB;iBACjC,CAAA;0EAOQ,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCFtB,oBAAoB,CAAA;AALjC,IAAA,WAAA,GAAA;AAOE,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAEjB,QAAA,IAAY,CAAA,YAAA,GAAG,KAAK,CAAC;AAGb,QAAA,IAAU,CAAA,UAAA,GAAQ,EAAE,CAAC;QACnB,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAO,CAAC;AAE5C,QAAA,IAAA,CAAA,iBAAiB,GAAe,MAAK,GAAG,CAAC;AACzC,QAAA,IAAA,CAAA,gBAAgB,GAAqB,MAAK,GAAG,CAAC;KA8BvD;AA5BC,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,UAAU,CAAC;KACxB;IAED,IAAI,KAAK,CAAC,CAAM,EAAA;AACd,QAAA,IAAI,CAAC,KAAK,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;AACpB,YAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;AAC1B,SAAA;KACF;AAED,IAAA,UAAU,CAAC,KAAU,EAAA;AACnB,QAAA,IAAI,KAAK,KAAK,IAAI,CAAC,UAAU,EAAE;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;AACzB,SAAA;KACF;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;KAC5B;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;KAC7B;AAEM,IAAA,oBAAoB,CAAC,KAAK,EAAA;QAC/B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;KAC/C;;iHAxCU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAApB,oBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,oBAAoB,2KAFpB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,oBAAoB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,0BCN7F,keAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDRa,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAEhB,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,oBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,keAAA,EAAA,CAAA;8BAI3F,WAAW,EAAA,CAAA;sBADV,KAAK;gBAGN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAGN,EAAE,EAAA,CAAA;sBADD,KAAK;gBAGI,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;METI,cAAc,CAAA;AAKzB,IAAA,WAAA,GAAA;AAJS,QAAA,IAAI,CAAA,IAAA,GAAG,IAAI,CAAC;AACZ,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAChB,QAAA,IAAS,CAAA,SAAA,GAAG,aAAa,CAAC;KACnB;AAChB,IAAA,QAAQ,MAAW;;2GANR,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,0ICP3B,+KAIA,EAAA,MAAA,EAAA,CAAA,8pBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAP,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDGa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,+KAAA,EAAA,MAAA,EAAA,CAAA,8pBAAA,CAAA,EAAA,CAAA;0EAKX,IAAI,EAAA,CAAA;sBAAZ,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBACG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;MENK,gBAAgB,CAAA;AAM3B,IAAA,WAAA,CAAY,EAAc,EAAA;AAH1B,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AACnB,QAAA,IAAQ,CAAA,QAAA,GAAG,IAAI,CAAC;AAGd,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;AAEzB,QAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AAEnE,QAAA,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,MAAK;AAC/B,YAAA,IAAI,IAAI,CAAC,cAAc,GAAG,EAAE,EAAE;AAC5B,gBAAA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AACpE,aAAA;YACD,IAAI,IAAI,CAAC,cAAc,IAAI,EAAE,IAAI,IAAI,CAAC,cAAc,GAAG,EAAE,EAAE;AACzD,gBAAA,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;AACrD,gBAAA,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;AACpE,aAAA;SACF,EAAE,EAAE,CAAC,CAAC;KACR;IAED,WAAW,GAAA;QACT,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACtB,SAAA;KACF;;6GApCU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;iBAC7B,CAAA;;;MCeY,iBAAiB,CAAA;AAsC5B,IAAA,WAAA,CACU,eAA8B,EAC9B,YAA0B,EAC1B,gBAAkC,EAClC,aAA4B,EAAA;AAH5B,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAe;AAC9B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAClC,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AArCtC,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;;AAGzB,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAG/B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;AAErC,QAAA,IAAO,CAAA,OAAA,GAAG,EAAE,CAAC;AACb,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,QAAA,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AAEb,QAAA,IAAW,CAAA,WAAA,GAAG,CAAC,CAAC;AAChB,QAAA,IAAS,CAAA,SAAA,GAAG,IAAI,CAAC;AACjB,QAAA,IAAa,CAAA,aAAA,GAAG,IAAI,CAAC;AACrB,QAAA,IAAa,CAAA,aAAA,GAAoB,EAAE,CAAC;AACpC,QAAA,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;AACd,QAAA,IAAiB,CAAA,iBAAA,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC3C,QAAA,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;AAEpB,QAAA,IAAY,CAAA,YAAA,GAAG,kCAAkC,CAAC;AAClD,QAAA,IAAQ,CAAA,QAAA,GAAG,8BAA8B,CAAC;AAC1C,QAAA,IAAkB,CAAA,kBAAA,GAAG,mCAAmC,CAAC;AACzD,QAAA,IAAgB,CAAA,gBAAA,GAAG,sCAAsC,CAAC;AAC1D,QAAA,IAAmB,CAAA,mBAAA,GAAG,yCAAyC,CAAC;AAExD,QAAA,IAAI,CAAA,IAAA,GAAmB,EAAE,CAAC;KAW3B;IATP,IAA+B,OAAO,CAAC,OAAmB,EAAA;AACxD,QAAA,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;KAC7B;IASD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAEvB,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,0BAA0B,GAAA;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,WAAW,CAAC;AAE1D,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;AACpC,YAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;AACpB,SAAA;AAED,QAAA,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,IAAG;YACrC,IAAI,KAAK,GAAG,KAAK,EAAE;gBACjB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAED,mBAAmB,GAAA;QACjB,IAAI,CAAC,cAAc,EAAE,CAAC;KACvB;IAED,eAAe,GAAA;QACb,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,cAAc,GAAA;QACZ,IAAI,CAAC,MAAM,EAAE,CAAC;KACf;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,cAAc,EAAE;YAC5C,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;;AAGD,QAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAC3E,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC;AAChH,YAAA,IAAI,EAAE,CAAC,IAAiB,KAAI;AAC1B,gBAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;gBAE/C,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,oBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AAC1B,wBAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;AAC7C,wBAAA,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;wBAEnD,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;AACrD,wBAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzD,qBAAC,CAAC,CAAC;AACJ,iBAAA;AAED,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;aAC5B;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,gBAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;gBAC3B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;aACvD;AACF,SAAA,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC3B;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACR,SAAA;AACD,QAAA,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClH,MAAM,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAmB,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAErH,QAAA,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACnB,gBAAA,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;gBACtB,IAAI,CAAC,MAAM,EAAE,CAAC;AACf,aAAA;AACF,SAAA;KACF;IAED,gBAAgB,GAAA;AACd,QAAA,KAAK,IAAI,WAAW,GAAC,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC,SAAS,EAAG,WAAW,EAAE,EAAE;AACpE,YAAA,MAAM,YAAY,GAAkB;AAClC,gBAAA,MAAM,EAAE,CAAC;AACT,gBAAA,MAAM,EAAE,EAAE;aACX,CAAC;AACF,YAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACvC,SAAA;KACF;IAED,aAAa,GAAA;AACX,QAAA,MAAM,UAAU,GAAG;AACjB,YAAA,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM;SACrC,CAAC;QACF,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,KAAI;AACjD,YAAA,IAAI,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE;AAC3C,gBAAA,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;AACzB,gBAAA,UAAU,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;AACzC,aAAA;AACH,SAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC,KAAK,CAAC;KACzB;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC;AACvC,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;AACxB,QAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAED,WAAW,CAAC,KAAuB,EAAE,GAAW,EAAA;AAC9C,QAAA,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;AAEvB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAC5E,GAAG,IAAG;AACJ,YAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,YAAA,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACtD,EACD,KAAK,IAAG;AACN,YAAA,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC;AACxB,YAAA,IAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;AAClD,gBAAA,IAAI,CAAC,YAAY,CAAC,4BAA4B,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC5F,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACpD,aAAA;AACH,SAAC,CAAC,CAAC;;QAGH,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KAC7B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAC7C;;8GAlMU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAQ,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,YAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB9B,qyJA0GA,ED5Fc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,SAAS;QACT,cAAc;AACf,KAAA,EAAA,CAAA,CAAA;2FAEU,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAR7B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEV,UAAA,EAAA;wBACV,SAAS;wBACT,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,qyJAAA,EAAA,CAAA;iLAKD,cAAc,EAAA,CAAA;sBADb,KAAK;gBAGN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,eAAe,EAAA,CAAA;sBADd,MAAM;gBAwBwB,OAAO,EAAA,CAAA;sBAArC,SAAS;uBAAC,cAAc,CAAA;;;ME9Cd,oBAAoB,CAAA;IAO7B,WACU,CAAA,UAAsB,EACtB,YAA0B,EAAA;AAD1B,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAP5B,QAAA,IAAY,CAAA,YAAA,GAAoB,EAAE,CAAC;AACnC,QAAA,IAAc,CAAA,cAAA,GAAG,mCAAmC,CAAC;AACrD,QAAA,IAAgB,CAAA,gBAAA,GAAG,iCAAiC,CAAC;AACrD,QAAA,IAAe,CAAA,eAAA,GAAG,gCAAgC,CAAC;KAMzD;AAEF,IAAA,eAAe,CAAC,YAA6B,EAAA;AACzC,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;KACpC;AAED,IAAA,aAAa,CAAC,iBAAoC,EAAA;QAC9C,MAAM,OAAO,GAAkB,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACjD,OAAO;AACR,SAAA;QACD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,UAAU;aACZ,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC;AACpD,aAAA,SAAS,CACR,CAAC,IAAmB,KAAI;AACtB,YAAA,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACnD,EACD,MAAM;AACJ,YAAA,OAAO,CAAC,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC;YACtD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnD,SAAC,CACF,CAAC;KACP;IAED,eAAe,CAAC,IAAY,EAAE,MAAc,EAAA;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;KACpD;AAEO,IAAA,cAAc,CAAC,OAAe,EAAA;AAClC,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,OAAO;AACR,SAAA;AAED,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE;AACvC,YAAA,IAAG,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE;AAC9B,gBAAA,OAAO,OAAO,CAAC;AAChB,aAAA;AACF,SAAA;AAED,QAAA,OAAO,IAAI,CAAC;KACf;;iHAtDQ,oBAAoB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAlB,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;qHAApB,oBAAoB,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,UAAU;;;MCGE,iBAAiB,CAAA;AAD9B,IAAA,WAAA,GAAA;QAGE,IAAA,CAAA,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,OAAO,EAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAC,GAAG,CAAC,CAAC;;QAGpD,IAAA,CAAA,sBAAsB,GAA4B;AACxD,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,gBAAgB,EAAE,IAAI;SACvB,CAAA;QAEO,IAAA,CAAA,yBAAyB,GAA4B;AAC3D,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,UAAU,EAAE,KAAK;AACjB,YAAA,gBAAgB,EAAE,IAAI;SACvB,CAAA;QAEO,IAAA,CAAA,eAAe,GAA4B;AACjD,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,UAAU,EAAE,KAAK;SAClB,CAAA;QAEO,IAAA,CAAA,4BAA4B,GAA4B;AAC9D,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,UAAU,EAAE,IAAI;SACjB,CAAA;QAEO,IAAA,CAAA,gBAAgB,GAA4B;AAClD,YAAA,cAAc,EAAE,QAAQ;AACxB,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,oBAAoB,EAAE,IAAI;AAC1B,YAAA,aAAa,EAAE,KAAK;AACpB,YAAA,UAAU,EAAE,KAAK;SAClB,CAAA;AAED,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;KAyFjC;AArFC,IAAA,cAAc,CAAC,MAA4B,EAAE,aAAA,GAAyB,KAAK,EAAA;AACzE,QAAA,IACE,CAAC,aAAa;AACd,YAAA,MAAM,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK;eACxE,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW;eAC5D,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAC/C;AACA,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,SAAA;AAED,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;AAEjE,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CACpD,GAAG,CAAC,CAAC,WAAW,KAAI;AAClB,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;AAC/B,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;SAC9B,CAAC,CACH,CAAC;QAAA,CAAC;KACJ;AAED,IAAA,mBAAmB,CAAC,MAA4B,EAAA;AAC9C,QAAA,MAAM,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;KACxD;AAED,IAAA,UAAU,CAAC,MAAc,EAAA;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;KAC3C;AAED,IAAA,WAAW,CAAC,MAA2B,EAAA;AACrC,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;AAC/B,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACtD,QAAA,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;AAC1B,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACrD,SAAA;QAED,IAAI,MAAM,CAAC,MAAM,EAAE;AACjB,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;AACvE,SAAA;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAED,UAAU,CAAC,WAAmB,EAAE,OAAe,EAAA;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;KACzD;AAGD,IAAA,SAAS,CAAC,OAAe,EAAA;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;KAC3C;AAED,IAAA,iBAAiB,CAAC,QAAkB,EAAA;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;KACpD;AAED,IAAA,0BAA0B,CAAC,WAA6B,EAAA;AACtD,QAAA,QAAQ,WAAW;AACjB,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,gBAAgB,CAAC;AAE/B,YAAA,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,eAAe,CAAC;AAE9B,YAAA,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,sBAAsB,CAAC;AAErC,YAAA,KAAK,oBAAoB;gBACvB,OAAO,IAAI,CAAC,4BAA4B,CAAC;AAE3C,YAAA,KAAK,uBAAuB;gBAC1B,OAAO,IAAI,CAAC,yBAAyB,CAAA;AAEvC,YAAA;gBACE,OAAO;AACV,SAAA;KACF;IAED,6BAA6B,GAAA;QAC3B,OAAO;AACL,YAAA,IAAI,CAAC,gBAAgB;AACrB,YAAA,IAAI,CAAC,eAAe;AACpB,YAAA,IAAI,CAAC,sBAAsB;AAC3B,YAAA,IAAI,CAAC,4BAA4B;SAClC,CAAA;KACF;;8GAvIU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAjB,iBAAiB,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAD7B,UAAU;;;MCJE,aAAa,CAAA;AAD1B,IAAA,WAAA,GAAA;QAGE,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC;KAiB5C;AAfC,IAAA,SAAS,CAAC,IAA0C,EAAA;QAClD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;aAC/C,MAAM,CAAC,GAAG,IACT,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAChC,CAAC,CAAC,CAAC,CAAC;AAEL,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;KACzC;IAED,UAAU,GAAA;AACR,QAAA,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;AACpC,aAAA,GAAG,CAAC,IAAI,IACP,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CACzB,CAAC;KACH;;0GAlBU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;8GAAb,aAAa,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBADzB,UAAU;;;MCcW,mBAAmB,CAAA;AAwCrC,IAAA,WAAA,CACY,UAA6B,EAC7B,mBAAwC,EACxC,IAAgB,EAChB,aAA4B,EAC5B,mBAAoC,EACpC,YAA0B,EAC1B,gBAAkC,EACpC,UAAsB,EAAA;AAPpB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAC7B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAI,CAAA,IAAA,GAAJ,IAAI,CAAY;AAChB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAC5B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAiB;AACpC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AACpC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AA9ChC,QAAA,IAAY,CAAA,YAAA,GAAoB,EAAE,CAAC;AAEnC,QAAA,IAAA,CAAA,kBAAkB,GAAuB,IAAI,YAAY,EAAE,CAAC;QAG5D,IAAA,CAAA,YAAY,GAAiB;AAC3B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,YAAY,EAAE,EAAE;AAChB,YAAA,WAAW,EAAE,CAAC;SACf,CAAC;AAEF,QAAA,IAAoB,CAAA,oBAAA,GAAY,KAAK,CAAC;AAGtC,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;AAEzB,QAAA,IAAA,CAAA,aAAa,GAA0B,IAAI,YAAY,EAAE,CAAC;AAG1D,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;AAEnC,QAAA,IAAA,CAAA,iBAAiB,GAAoC,IAAI,YAAY,EAAE,CAAC;AAE/D,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;AAM3B,QAAA,IAAY,CAAA,YAAA,GAAW,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC;AAGpE,QAAA,IAAc,CAAA,cAAA,GAAG,mCAAmC,CAAC;AACrD,QAAA,IAAmB,CAAA,mBAAA,GAAG,qCAAqC,CAAC;KAYnE;;AAGD,IAAA,sBAAsB,CAAC,KAAK,EAAA;AAC1B,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,IAAG;AAC/B,YAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AAC3B,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;AAED,IAAA,oBAAoB,CAAC,KAAa,EAAA;QAChC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC;QAC7E,IAAI,CAAC,mBAAmB,EAAE,CAAC;KAC5B;;IAGD,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;KAC3B;AAED,IAAA,MAAM,CAAC,OAAsB,EAAA;AAC3B,QAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;KACjD;AAED,IAAA,iBAAiB,CAAC,KAAa,EAAA;QAC7B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACpD,OAAO;AACR,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACtC,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YACjF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3C,SAAA;KACF;AAED,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,SAAS,CAClD,IAAI,IAAG;YACL,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3D,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACjE,EACD,KAAK,IAAG;AACN,YAAA,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,GAAG,GAAI,IAAI,CAAC,mBAAmB,GAAE,IAAI,CAAC,cAAc,CAAC;AAClF,YAAA,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACnC,SAAC,CAAC,CAAC;KACN;AAED,IAAA,mBAAmB,CAAC,KAAK,EAAA;QACvB,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;KACtC;IAED,aAAa,CAAC,YAAoB,EAAE,SAAiB,EAAA;QACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;YACtF,IAAI,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AACnC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;AACpC,YAAA,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;AAC3B,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,YAAY,CAAC,OAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAC,CAAC,CAAC;KAC7E;AAEO,IAAA,cAAc,CAAC,SAAiB,EAAA;QACtC,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;KACxD;IAEO,mBAAmB,GAAA;AACzB,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;KAChC;IAEO,WAAW,CAAC,GAAW,EAAE,QAAgB,EAAA;QAC/C,MAAM,CAAC,GAAQ,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC3C,QAAA,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC;AACb,QAAA,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACtB,CAAC,CAAC,KAAK,EAAE,CAAC;KACX;IAED,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,aAAa,EAAE;AACtB,YAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AAClC,SAAA;KACF;;gHA3IiB,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAmB,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,YAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,sBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC,SAAS;gSAGN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAGN,kBAAkB,EAAA,CAAA;sBADjB,MAAM;gBAIP,YAAY,EAAA,CAAA;sBADX,KAAK;gBAUN,oBAAoB,EAAA,CAAA;sBADnB,KAAK;gBAIN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAGN,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAIP,aAAa,EAAA,CAAA;sBADZ,MAAM;gBAGP,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAGE,SAAS,EAAA,CAAA;sBAAjB,KAAK;gBAGN,cAAc,EAAA,CAAA;sBADb,KAAK;;;MCzCG,YAAY,CAAA;AAEvB,IAAA,WAAA,CAAoB,aAA4B,EAAA;AAA5B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;KAAK;IAErD,SAAS,CAAC,WAAmB,EAAE,IAAY,EAAA;QACzC,IAAG,CAAC,IAAI,EAAE;AACR,YAAA,MAAM,wCAAwC,CAAC;AAChD,SAAA;QAED,MAAM,KAAK,GAAW,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,MAAM,mDAAmD,CAAC;AAC3D,SAAA;QAED,OAAO,KAAK,GAAG,WAAW,CAAC;KAC5B;;yGAhBU,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;uGAAZ,YAAY,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,QAAQ;iBACf,CAAA;;;ACgBK,MAAO,gBAAiB,SAAQ,mBAAmB,CAAA;AAqBvD,IAAA,WAAA,CACE,UAA6B,EAC7B,mBAAwC,EACxC,IAAgB,EAChB,aAA4B,EAC5B,mBAAoC,EACpC,YAA0B,EAC1B,gBAAkC,EAClC,UAAsB,EAAA;AAEtB,QAAA,KAAK,CACH,UAAU,EACV,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,UAAU,CACX,CAAC;AA9BJ,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;AAGnB,QAAA,IAAA,CAAA,iBAAiB,GAAuB,IAAI,YAAY,EAAE,CAAC;AAG3D,QAAA,IAAA,CAAA,mBAAmB,GAA0B,IAAI,YAAY,EAAE,CAAC;AAEhE,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AACjC,QAAA,IAAmB,CAAA,mBAAA,GAAG,KAAK,CAAC;KAsB3B;IAED,QAAQ,GAAA;QACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,KAAK,YAAY,CAAC;KAC3D;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;IAED,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;KAC/B;;6GArDU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAP,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrB7B,uiIAuEA,EDtDc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAhB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAiB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,SAAS;AACV,KAAA,EAAA,CAAA,CAAA;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,EAER,UAAA,EAAA;wBACV,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,uiIAAA,EAAA,CAAA;gSAKD,YAAY,EAAA,CAAA;sBADX,KAAK;gBAGN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAGN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAGN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAKN,iBAAiB,EAAA,CAAA;sBADhB,MAAM;gBAIP,mBAAmB,EAAA,CAAA;sBADlB,MAAM;;;MErBI,mBAAmB,CAAA;IAY9B,WACU,CAAA,mBAAwC,EACxC,oBAA0C,EAAA;AAD1C,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;AAZpD,QAAA,IAAY,CAAA,YAAA,GAAoB,EAAE,CAAC;AAM1B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAE1C,QAAA,IAAA,CAAA,mBAAmB,GAA0B,IAAI,YAAY,EAAE,CAAC;KAK3D;IAEL,QAAQ,GAAA;QACN,IAAI,CAAC,SAAS,EAAE,CAAC;KAClB;AAED,IAAA,aAAa,CAAC,GAAoB,EAAA;AAChC,QAAA,GAAG,CAAC,OAAO,CAAC,OAAO,IACjB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAC9B,CAAC;QACJ,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC9D;AAED,IAAA,iBAAiB,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACpC,OAAO;AACR,SAAA;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE;AACtC,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC1C,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,mBAAmB,CAAC,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;YACjF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC3C,SAAA;KACF;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,eAAe,CAAC,cAAiC,EAAA;AAC/C,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;KACzD;IAEO,SAAS,GAAA;AACf,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;YACxF,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE;gBACvC,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,oBAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC1B,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IACD,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;KACvC;;gHA9DU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECfhC,uhHAgEA,EDrDc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAY,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,SAAS;AACV,KAAA,EAAA,CAAA,CAAA;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAEX,UAAA,EAAA;wBACV,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,uhHAAA,EAAA,CAAA;uIAQQ,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEN,mBAAmB,EAAA,CAAA;sBADlB,MAAM;;;MErBI,sBAAsB,CAAA;AADnC,IAAA,WAAA,GAAA;AAOS,QAAA,IAAA,CAAA,MAAM,GAAyB,IAAI,YAAY,EAAU,CAAC;KAqBlE;AAlBQ,IAAA,OAAO,CAAC,KAAiB,EAAA;QAE9B,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,OAAO;YACf,OAAO;AAET,QAAA,IAAI,QAAQ,GAAG,CAAC,CAAiB,KAAI;YACnC,IAAI,SAAS,GAAG,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;AAC3D,YAAA,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,cAAc,EAAE,CAAC;YAEnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjC,SAAC,CAAC;QAEF,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AAClD,QAAA,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,QAAQ,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;KACvD;;mHA1BU,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;uGAAtB,sBAAsB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAtB,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBADlC,SAAS;mBAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;8BAIlC,OAAO,EAAA,CAAA;sBADb,KAAK;uBAAC,gBAAgB,CAAA;gBAIhB,MAAM,EAAA,CAAA;sBADZ,MAAM;uBAAC,QAAQ,CAAA;gBAIT,OAAO,EAAA,CAAA;sBADb,YAAY;uBAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAA;;;MCDtB,0BAA0B,CAAA;AAsBrC,IAAA,WAAA,CACU,YAA0B,EAAA;AAA1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAX5B,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAGzC,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,YAAY,EAAW,CAAC;AAKnD,QAAA,IAAkB,CAAA,kBAAA,GAAW,sCAAsC,CAAC;KAI7D;IAnBP,IACI,cAAc,CAAC,cAAuB,EAAA;AACxC,QAAA,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;KACvC;AACD,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAeD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE,CAAC;KACb;IAED,IAAI,GAAA;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;KAC5C;IACD,WAAW,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAC,IAAI,CAAC,GAAG,GAAG,CAAC;KAC9E;AAED,IAAA,eAAe,CAAC,KAAK,EAAA;QACnB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;KACtD;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACtC;;uHA3CU,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAR,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,0BAA0B,qLCVvC,4gHA0DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAuB,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAa,sBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAwB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhDa,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAJtC,SAAS;+BACE,cAAc,EAAA,QAAA,EAAA,4gHAAA,EAAA,CAAA;gGAMxB,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIF,cAAc,EAAA,CAAA;sBADjB,KAAK;gBAUN,oBAAoB,EAAA,CAAA;sBADnB,MAAM;;;AEtBF,MAAM,YAAY;CACzB,OAAO,CAAC,mBAAmB,EAAE;IACvB,UAAU,CAAC,QAAQ,EAAE;AACnB,QAAA,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KACnD,CAAC;AACP,CAAA,CAAC;;MCFW,iBAAiB,CAAA;AAO5B,IAAA,WAAA,GAAA;AAFA,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;KAER;IAEjB,QAAQ,GAAA;KACP;;8GAVU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,wHCN9B,8cAeM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAjC,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDTO,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,8cAAA,EAAA,CAAA;0EAMpB,iBAAiB,EAAA,CAAA;sBADhB,KAAK;gBAGN,OAAO,EAAA,CAAA;sBADN,KAAK;;;MEKK,gBAAgB,CAAA;AA+I3B,IAAA,WAAA,CACU,aAA4B,EAAA;AAA5B,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AAjI9B,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAGxC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAW,CAAC;AAGlD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAGhC,QAAA,IAAA,CAAA,yBAAyB,GAAG,IAAI,YAAY,EAAU,CAAC;AAEvD,QAAA,IAAW,CAAA,WAAA,GAAW,kCAAkC,CAAC;AAEzD,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,cAAc,GAAY,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,mBAAmB,GAAW,EAAE,CAAC;AACjC,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAC3B,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAE3B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAU/B,QAAA,IAAA,CAAA,gBAAgB,GAAkB,IAAI,OAAO,EAAQ,CAAC;AACtD,QAAA,IAAkB,CAAA,kBAAA,GAAW,CAAC,CAAC;AAK/B,QAAA,IAAiB,CAAA,iBAAA,GAAQ,EAAE,CAAC;AAC5B,QAAA,IAAY,CAAA,YAAA,GAAQ,EAAE,CAAC;AACvB,QAAA,IAAc,CAAA,cAAA,GAAG,CAAC,CAAC;AACnB,QAAA,IAAQ,CAAA,QAAA,GAAG,CAAC,CAAC;AACb,QAAA,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;AACV,QAAA,IAAW,CAAA,WAAA,GAAG,KAAK,CAAC;AACpB,QAAA,IAAwB,CAAA,wBAAA,GAAG,KAAK,CAAC;AACjC,QAAA,IAAS,CAAA,SAAA,GAAmB,EAAE,CAAC;;QAK/B,IAAA,CAAA,gBAAgB,GAAyB;AACvC,YAAA;AACE,gBAAA,KAAK,EAAE,oCAAoC;AAC3C,gBAAA,MAAM,EAAE;AACN,oBAAA,mBAAmB,EAAE,IAAI;AAC1B,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,kCAAkC;AACzC,gBAAA,MAAM,EAAE;AACN,oBAAA,mBAAmB,EAAE,KAAK;AAC3B,iBAAA;AACD,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,oCAAoC;AAC3C,gBAAA,MAAM,EAAE;AACN,oBAAA,mBAAmB,EAAE,IAAI;oBACzB,WAAW,EAAE,CAAC,GAAG,CAAC;AACnB,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,sCAAsC;AAC7C,gBAAA,MAAM,EAAE;AACN,oBAAA,mBAAmB,EAAE,IAAI;oBACzB,WAAW,EAAE,CAAC,GAAG,CAAC;AACnB,iBAAA;AACF,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,uCAAuC;AAC9C,gBAAA,MAAM,EAAE;AACN,oBAAA,mBAAmB,EAAE,IAAI;oBACzB,WAAW,EAAE,CAAC,GAAG,CAAC;AACnB,iBAAA;AACF,aAAA;SACF,CAAC;QAEF,IAAA,CAAA,cAAc,GAAyB;AACrC,YAAA;AACE,gBAAA,KAAK,EAAE,sCAAsC;AAC7C,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,MAAM,EAAE,aAAa;AACrB,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,0CAA0C;AACjD,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,MAAM,EAAE,YAAY;AACrB,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,sCAAsC;AAC7C,gBAAA,IAAI,EAAE,iBAAiB;AACvB,gBAAA,MAAM,EAAE,cAAc;AACvB,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,uCAAuC;AAC9C,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,MAAM,EAAE,gBAAgB;AACzB,aAAA;SACF,CAAC;QAEF,IAAA,CAAA,UAAU,GAAyB;AACjC,YAAA;AACE,gBAAA,KAAK,EAAE,kCAAkC;AACzC,gBAAA,IAAI,EAAE,oBAAoB;AAC1B,gBAAA,MAAM,EAAE,QAAQ;AAChB,gBAAA,MAAM,EAAE,IAAI;AACb,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,oCAAoC;AAC3C,gBAAA,IAAI,EAAE,qBAAqB;AAC3B,gBAAA,MAAM,EAAE,SAAS;AAClB,aAAA;SACF,CAAC;;QAGF,IAAA,CAAA,gBAAgB,GAAoB;AAClC,YAAA,mBAAmB,EAAE,KAAK;AAC1B,YAAA,WAAW,EAAE,SAAS;SACvB,CAAA;KAII;IA5IL,IACI,aAAa,CAAC,aAAsB,EAAA;AACtC,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;QACpC,IAAI,CAAC,aAAa,EAAE;YAClB,IAAI,CAAC,WAAW,EAAE,CAAC;AACpB,SAAA;KACF;AACD,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,cAAc,CAAC;KAC5B;IAqBD,IAAI,YAAY,CAAC,YAAqB,EAAA;QACpC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;SACnC,EAAE,CAAC,CAAC,CAAC;KACP;AAED,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;KAC3B;IAwGD,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,sBAAsB,EAAE,CAAC;KAC/B;IAED,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;KAC7B;IAED,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;KACvE;IAED,UAAU,GAAA;QACR,QAAQ,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,SAAS,EAAkB;KAC3G;IAED,oBAAoB,GAAA;QAClB,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,kBAAkB,GAAG,MAAM,GAAG,KAAK,CAAC;AACzC,QAAA,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACtE,IAAI,CAAC,gBAAgB,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;KAC7D;AAED,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACtC;IAED,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,EAAE,CAAC;QACZ,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;AAC1B,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;;;AAMD,IAAA,eAAe,CAAC,KAAU,EAAA;AACxB,QAAA,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;KAChC;AAED,IAAA,YAAY,CAAC,KAAwB,EAAA;AACnC,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;AAE7B,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;KAC/D;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;KACzB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;KAC5B;IAED,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;KACrC;;AAID,IAAA,oBAAoB,CAAC,KAAa,EAAA;QAChC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;AACnD,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;KACnC;IAED,WAAW,GAAA;QAET,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;AAC7C,YAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B,EAAE,CAAC,CAAC,CAAC;QAEN,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AACf,QAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;AAClB,QAAA,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;IAEO,aAAa,CAAC,KAAW,EAAE,KAAa,EAAA;;QAE9C,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,KAAI;AAChC,YAAA,IAAI,CAAC,MAAM,GAAG,SAAS,KAAK,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC;AACnD,SAAC,CAAC,CAAC;KACJ;AAEO,IAAA,oBAAoB,CAAC,MAAW,EAAA;AACtC,QAAA,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE;YAC7B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACpD,SAAA;KACF;IAEO,sBAAsB,GAAA;AAC5B,QAAA,IAAI,CAAC,gBAAgB;aAClB,SAAS,CAAC,MAAK;YACd,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC1B,YAAA,IAAI,IAAI,CAAC,kBAAkB,IAAI,CAAC,EAAE;gBAChC,OAAO;AACR,aAAA;AACD,YAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;AAC7B,SAAC,CAAC,CAAA;KAEH;;IAID,UAAU,GAAA;QACN,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAED,WAAW,GAAA;QACP,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAED,cAAc,GAAA;AACV,QAAA,IAAI,CAAC,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACP,IAAI,CAAC,SAAS,CACjB,EAAA,EAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAC/B,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAED,YAAY,GAAA;AACR,QAAA,IAAI,CAAC,SAAS,GAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EACP,IAAI,CAAC,SAAS,CACjB,EAAA,EAAA,KAAK,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,GAC/B,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAEO,eAAe,GAAA;AACrB,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,SAAS,GACP,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,SAAS,CAAA,EAAA,EACjB,KAAK,EAAE,QAAQ,EACf,KAAK,EAAE,QAAQ,GAClB,CAAC;KACH;;IAID,OAAO,GAAA;AACH,QAAA,IAAI,CAAC,KAAK,IAAK,IAAI,CAAC,KAAK,GAAG,GAAG,GAAE,CAAC,GAAG,EAAE,CAAC;AACxC,QAAA,IAAI,CAAC,SAAS,GACP,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,SAAS,CACjB,EAAA,EAAA,KAAK,EAAE,IAAI,CAAC,KAAK,GACpB,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;IAED,MAAM,GAAA;AACF,QAAA,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;AACjB,QAAA,IAAI,CAAC,SAAS,GACP,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,MAAA,CAAA,EAAA,EAAA,IAAI,CAAC,SAAS,CACjB,EAAA,EAAA,KAAK,EAAE,IAAI,CAAC,KAAK,GACpB,CAAC;QACF,IAAI,CAAC,aAAa,EAAE,CAAC;KACxB;AAED,IAAA,WAAW,CAAC,MAAc,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;KAChB;;6GAhVU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAuB,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;iGAAhB,gBAAgB,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,yBAAA,EAAA,2BAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECf7B,+gIAuGA,ED5Fc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,oBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,IAAA,CAAA,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,WAAA,EAAA,cAAA,EAAA,QAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,aAAA,EAAA,8BAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,kBAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,qBAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,eAAA,EAAA,cAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,mBAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,YAAA,EAAA,UAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA1B,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,YAAY;AACb,KAAA,EAAA,CAAA,CAAA;2FAEU,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAEP,UAAA,EAAA;wBACV,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,+gIAAA,EAAA,CAAA;iGAKD,SAAS,EAAA,CAAA;sBADR,KAAK;gBAIF,aAAa,EAAA,CAAA;sBADhB,KAAK;gBAaN,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,MAAM;gBAIP,yBAAyB,EAAA,CAAA;sBADxB,MAAM;;;MExBI,kBAAkB,CAAA;IAmB7B,WACU,CAAA,iBAAoC,EACpC,oBAA0C,EAAA;AAD1C,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AACpC,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;AAd1C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAE1C,QAAA,IAAS,CAAA,SAAA,GAAY,KAAK,CAAC;AAC3B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAc,CAAA,cAAA,GAAY,KAAK,CAAC;AAChC,QAAA,IAAA,CAAA,mBAAmB,GAAW,EAAE,CAAC;AAGjC,QAAA,IAAW,CAAA,WAAA,GAAW,kCAAkC,CAAC;AACzD,QAAA,IAAW,CAAA,WAAA,GAAW,kCAAkC,CAAC;AACzD,QAAA,IAAc,CAAA,cAAA,GAAW,yDAAyD,CAAA;KAK3E;IAEP,QAAQ,GAAA;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;KACjD;IAED,MAAM,GAAA;QACJ,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,aAAa,IAAK,CAAC,IAAI,CAAC,cAAc,EAAE;AAChD,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;AAED,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC1G,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAExH,QAAA,IAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5C,YAAA,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;YAC1D,OAAO;AACR,SAAA;QAED,IAAG,IAAI,CAAC,aAAa,EAAC;YACpB,aAAa,CAAC,SAAS,CAAC;gBACtB,IAAI,EAAE,IAAI,IAAG;AACb,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACxC;gBACD,KAAK,EAAE,KAAK,IAAG;AACb,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,oBAAA,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;AAC9B,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACrC;AAAC,aAAA,CAAC,CAAC;YACJ,OAAO;AACR,SAAA;QAED,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,gBAAgB,CAAC,SAAS,CAAC;gBACzB,IAAI,EAAE,IAAI,IAAG;AACb,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;AAChD,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACxC;gBACD,KAAK,EAAE,KAAK,IAAG;AACb,oBAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;AAChD,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;iBACrC;AACA,aAAA,CAAC,CAAC;AACJ,SAAA;AACD,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;AAED,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;KAC9B;IAED,aAAa,GAAA;AACX,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;KACjD;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;KACvB;AAED,IAAA,YAAY,CAAC,SAAiB,EAAA;AAC5B,QAAA,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;KACtC;IAEO,mBAAmB,CAAC,gBAAiC,EAAE,aAA8B,EAAA;;QAE3F,gBAAgB,CAAC,SAAS,CAAC;YACzB,IAAI,EAAE,IAAI,IAAG;gBACX,aAAa,CAAC,SAAS,CAAC;oBACtB,IAAI,EAAE,IAAI,IAAG;AACX,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;qBACxC;oBACD,KAAK,EAAE,KAAK,IAAG;AACb,wBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;qBACrC;AACF,iBAAA,CAAC,CAAC;aACJ;YACD,KAAK,EAAE,KAAK,IAAG;AACb,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACrC;AACF,SAAA,CAAC,CAAC;KACJ;;+GAjHU,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAO,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAa,oBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd/B,w4DA0DA,EDhDc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAX,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,0BAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,EAAA,YAAA,EAAA,2BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,SAAS;AACV,KAAA,EAAA,CAAA,CAAA;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEV,UAAA,EAAA;wBACV,SAAS;AACV,qBAAA,EAAA,QAAA,EAAA,w4DAAA,EAAA,CAAA;qIAKD,cAAc,EAAA,CAAA;sBADb,KAAK;gBAGN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAGI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEfI,iBAAiB,CAAA;IAI5B,WAAoB,CAAA,WAAuB,EAAU,UAAsB,EAAA;AAAvD,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAAU,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AAFlE,QAAA,IAAO,CAAA,OAAA,GAAkB,IAAI,CAAC;AAIf,QAAA,IAAA,CAAA,YAAY,GAAsB,IAAI,YAAY,EAAE,CAAC;KAFE;IAI/E,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,aAAsB,KAAI;AACnE,YAAA,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC7E,MAAM,oBAAoB,GAAG,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AAEjE,YAAA,IAAI,CAAC,aAAa,KAAK,oBAAoB,KAAK,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE;AAC5G,gBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,aAAA;YAED,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,oBAAoB,KAAK,IAAI,EAAE;gBACzD,IAAI,WAAW,GAAG,IAAI,CAAC;AACvB,gBAAA,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAG;AACvB,oBAAA,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;wBACrC,WAAW,GAAG,KAAK,CAAC;AACrB,qBAAA;AACH,iBAAC,CAAC,CAAC;AACH,gBAAA,IAAI,WAAW,EAAE;AACf,oBAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9B,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;;8GA7BU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAjB,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAA;uHAEU,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,OAAO,EAAA,CAAA;sBAAf,KAAK;gBAIkB,YAAY,EAAA,CAAA;sBAAnC,MAAM;uBAAC,cAAc,CAAA;;;MCDX,iBAAiB,CAAA;AA+B5B,IAAA,WAAA,CACU,YAA0B,EAAA;AAA1B,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AA5B1B,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,YAAY,EAAE,CAAC;AAI/C,QAAA,IAAU,CAAA,UAAA,GAAG,KAAK,CAAC;QAEnB,IAAA,CAAA,eAAe,GAAG;AAChB,YAAA,iCAAiC,EAAG;AAClC,gBAAA,OAAO,EAAG,GAAG;AACb,gBAAA,QAAQ,EAAG,GAAG;AACf,aAAA;AACD,YAAA,kCAAkC,EAAG;AACnC,gBAAA,OAAO,EAAG,IAAI;AACd,gBAAA,QAAQ,EAAG,IAAI;AAChB,aAAA;AACD,YAAA,+BAA+B,EAAG;AAChC,gBAAA,OAAO,EAAG,IAAI;AACd,gBAAA,QAAQ,EAAG,IAAI;AAChB,aAAA;SACF,CAAA;AAED,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAIlC,QAAA,IAAI,CAAA,IAAA,GAAmB,EAAE,CAAC;KAInB;IAEP,QAAQ,GAAA;QACN,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAC7D,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAED,uBAAuB,GAAA;;AAErB,QAAA,MAAM,yBAAyB,GAC7B,IAAI,CAAC,YAAY,CAAC,+BAA+B,EAAE,CAAC,SAAS,CAAE,CAAC,QAA2B,KAAI;AAC7F,YAAA,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBACxD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAC3D,aAAA;AAAM,iBAAA;AACL,gBAAA,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;AAC/B,gBAAA,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,CAAC;AACL,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;KAC3C;IAED,WAAW,CAAC,KAAa,EAAE,MAAc,EAAA;QACvC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC5C;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;KAC7C;;8GA7DU,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gJCX9B,k0EAyDA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAvB,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,IAAA,EAAA,UAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlC,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FD9Ca,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;+BACE,WAAW,EAAA,QAAA,EAAA,k0EAAA,EAAA,CAAA;gGAKZ,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBAEI,eAAe,EAAA,CAAA;sBAAxB,MAAM;;;MEVI,oBAAoB,CAAA;AAC/B;;;;;AAKG;AACH,IAAA,SAAS,CAAC,WAAmB,EAAE,UAAkB,EAAE,YAAoB,EAAA;AACrE,QAAA,IAAI,EAAE,WAAW,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE;AAC/D,YAAA,MAAM,IAAI,KAAK,CAAC,wFAAwF,CAAC,CAAC;AAC3G,SAAA;QACD,OAAO,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC;KAC7D;;iHAZU,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;+GAApB,oBAAoB,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;2FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;iBACnB,CAAA;;;MCCY,yBAAyB,CAAA;AACpC;;;;;AAKG;IACH,SAAS,CAAC,UAAkB,EAAE,YAAoB,EAAA;QAChD,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAChF,SAAA;QACD,MAAM,WAAW,GAAW,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AAC9C,aAAA,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;aACxB,GAAG,CAAC,CAAC,CAAS,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;KAC9B;;sHAfU,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;oHAAzB,yBAAyB,EAAA,IAAA,EAAA,iBAAA,EAAA,CAAA,CAAA;2FAAzB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAHrC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,iBAAiB;iBACxB,CAAA;;;MCCY,qBAAqB,CAAA;AAChC;;;;;AAKG;AACH,IAAA,SAAS,CAAC,UAAkB,EAAE,YAAoB,EAAE,WAAmB,EAAA;QACrE,IAAI,EAAE,UAAU,IAAI,CAAC,IAAI,YAAY,IAAI,CAAC,CAAC,EAAE;AAC3C,YAAA,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;AAChF,SAAA;QAED,IAAI,WAAW,GAAW,EAAE,CAAC;AAE7B,QAAA,MAAM,WAAW,GAAG,WAAW,IAAI,EAAE,GAAG,CAAC,GAAG,WAAW,GAAG,EAAE,CAAC;QAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,YAAY,CAAC,CAAC;AAIvD,QAAA,MAAM,mBAAmB,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACrE,aAAA,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC;AACxB,aAAA,GAAG,CAAC,CAAC,CAAS,KAAI;AAEjB,YAAA,MAAM,SAAS,GAAO;AACpB,gBAAA,OAAO,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC;AAC5B,gBAAA,KAAK,EAAE,WAAW,GAAG,CAAC,GAAG,CAAC;aAC3B,CAAC;AAEF,YAAA,IAAI,CAAC,KAAK,WAAW,GAAG,CAAC,EAAE;AACxB,gBAAA,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;AAC5B,aAAA;AACD,YAAA,IAAI,CAAC,KAAK,WAAW,GAAG,CAAC,EAAE;AACzB,gBAAA,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC;AAC9B,gBAAA,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC;AAC7B,aAAA;AACD,YAAA,OAAO,SAAS,CAAC;AACnB,SAAC,CAAC,CAAC;AAGH,QAAA,IAAI,WAAW,EAAE;YACf,mBAAmB,CAAC,OAAO,CACzB;AACE,gBAAA,OAAO,EAAE,CAAC;AACV,gBAAA,KAAK,EAAE,CAAC;aACT,EACD;AACE,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,CAAC;AACT,aAAA,CACF,CAAC;AACH,SAAA;AACD,QAAA,OAAO,mBAAmB,CAAC;KAC5B;;kHApDU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;gHAArB,qBAAqB,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,mBAAmB;iBAC1B,CAAA;;;MCQY,qBAAqB,CAAA;AAyBhC,IAAA,WAAA,GAAA;AAPA,QAAA,IAAkB,CAAA,kBAAA,GAAW,KAAK,CAAC;AAEnC,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;AACnC,QAAA,IAAY,CAAA,YAAA,GAAW,CAAC,CAAC;AAEf,QAAA,IAAA,CAAA,UAAU,GAAyB,IAAI,YAAY,EAAE,CAAC;KAEhD;IAvBhB,IAAa,UAAU,CAAC,UAA6B,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AACD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAGD,IAAa,UAAU,CAAC,UAAkB,EAAA;AACxC,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;KACjD;AACD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAWD,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAA;AACjC,QAAA,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC5B,YAAA,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;AACjC,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,SAAA;KACF;;kHAlCU,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,+JCZlC,+oDA0BA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,uBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAiD,yBAAA,EAAA,IAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDda,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,kBAAkB,EAAA,QAAA,EAAA,+oDAAA,EAAA,CAAA;0EAKf,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAQO,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAaI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;ME7BI,cAAc,CAAA;AACzB,IAAA,WAAA,CAAoB,gBAAkC,EAAA;AAAlC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAAI;AAE1D;;;;;AAKG;AACH,IAAA,SAAS,CAAC,WAAmB,EAAE,UAAkB,EAAE,YAAoB,EAAA;AACrE,QAAA,IAAI,eAAe,GAAG,CAAC,EACrB,gBAAgB,GAAG,CAAC,CAAC;AAEvB,QAAA,IAAI,UAAU,EAAE;YACd,eAAe,GAAG,CAAC,WAAW,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,CAAC;AACvD,YAAA,gBAAgB,GAAG,WAAW,GAAG,YAAY,CAAC;AAC/C,SAAA;QAED,IAAI,gBAAgB,GAAG,UAAU,EAAE;YACjC,gBAAgB,GAAG,UAAU,CAAC;AAC/B,SAAA;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;KACrI;;2GAvBU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA7C,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;yGAAd,cAAc,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,CAAA;2FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,sBAAsB;iBAC7B,CAAA;;;MCQY,mBAAmB,CAAA;AAW9B,IAAA,WAAA,GAAA;AAFU,QAAA,IAAA,CAAA,UAAU,GAAoC,IAAI,YAAY,EAAE,CAAC;KAE3D;IAVhB,IAAa,UAAU,CAAC,UAA6B,EAAA;AACnD,QAAA,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;KAC/B;AACD,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAOD,aAAa,GAAA;AACX,QAAA,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,EAAE;YACpC,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACvC;IAED,aAAa,GAAA;QACX,MAAM,UAAU,GAAG,IAAI,oBAAoB,EAAE,CAAC,SAAS,CACrD,IAAI,CAAC,UAAU,CAAC,WAAW,EAC3B,IAAI,CAAC,UAAU,CAAC,UAAU,EAC1B,IAAI,CAAC,UAAU,CAAC,YAAY,CAC7B,CAAC;AACF,QAAA,IAAI,UAAU,EAAE;YACd,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC9B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACvC;AAED,IAAA,gBAAgB,CAAC,UAAU,EAAA;QACzB,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KACvC;;gHArCU,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,mBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,kICbhC,27CAiCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA8C,qBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,IAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDpBa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,27CAAA,EAAA,CAAA;0EAIZ,UAAU,EAAA,CAAA;sBAAtB,KAAK;gBAQI,UAAU,EAAA,CAAA;sBAAnB,MAAM;;;MEjBI,aAAa,CAAA;AAExB,IAAA,SAAS,CAAC,MAAc,EAAA;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KACvC;;0GAJU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;wGAAb,aAAa,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;2FAAb,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,eAAe;iBACtB,CAAA;;;ACgBK,MAAO,mBAAoB,SAAQ,mBAAmB,CAAA;AAW1D,IAAA,WAAA,CACE,UAA6B,EAC7B,mBAAwC,EACxC,IAAgB,EAChB,aAA4B,EAC5B,mBAAoC,EACpC,YAA0B,EAC1B,gBAAkC,EAClC,UAAsB,EAAA;AAEtB,QAAA,KAAK,CACH,UAAU,EACV,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,UAAU,CACX,CAAC;AAvBJ,QAAA,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;AAEtB,QAAA,IAAA,CAAA,mBAAmB,GAA0B,IAAI,YAAY,EAAE,CAAC;KAsB/D;IAED,QAAQ,GAAA;KACP;AAED,IAAA,cAAc,CAAC,KAAa,EAAA;;AAE1B,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KAC5C;AAED,IAAA,mBAAmB,CAAC,cAAiC,EAAA;AACnD,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;KAC7C;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;IAED,SAAS,CAAC,KAAa,EAAE,OAAY,EAAA;QACnC,OAAO,OAAO,CAAC,EAAE,CAAC;KACnB;;gHAtDU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAhC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBhC,0kEAsDA,EDtCc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAwB,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA1C,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA2C,aAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,cAAc;AACf,KAAA,EAAA,CAAA,CAAA;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAEX,UAAA,EAAA;wBACV,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,0kEAAA,EAAA,CAAA;gSAKD,YAAY,EAAA,CAAA;sBADX,KAAK;gBAGN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAGN,SAAS,EAAA,CAAA;sBADR,KAAK;gBAGN,mBAAmB,EAAA,CAAA;sBADlB,MAAM;;;MEhBI,mBAAmB,CAAA;AAa9B,IAAA,WAAA,CAAoB,oBAA6C,EAAA;AAA7C,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAyB;AAZjE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,GAAG,EAA0B,CAAC;QACjD,IAAA,CAAA,gBAAgB,GAAiB;AAC/B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,WAAW,EAAE,SAAS;AACtB,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE,CAAC;SACf,CAAC;AAEM,QAAA,IAAA,CAAA,WAAW,GAAiB,IAAI,OAAO,EAAO,CAAC;KAEc;AAErE,IAAA,mBAAmB,CAAC,aAAqB,EAAA;QACvC,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE;YACxC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;AAC7C,SAAA;AACD,QAAA,MAAM,WAAW,GAAmB,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAC1G,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;AAClD,QAAA,OAAO,WAAW,CAAC;KACpB;AAED;;;;;AAKG;AACH,IAAA,cAAc,CAAC,aAAqB,EAAE,QAAgB,EAAE,KAAc,EAAA;AACpE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;KAC3D;IAED,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;KACxC;AAED,IAAA,oBAAoB,CAAC,aAAqB,EAAE,UAAkB,EAAE,YAAoB,EAAE,WAAmB,EAAA;QACvG,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC5D,WAAW,CAAC,SAAS,CAAC;YACpB,YAAY;YACZ,WAAW;AACZ,SAAA,CAAC,CAAC;KACJ;AAED,IAAA,qCAAqC,CAAC,aAAqB,EAAE,YAAoB,EAAE,WAAmB,EAAA;QACpG,MAAM,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;QAC5D,WAAW,CAAC,SAAS,CAAC;YACpB,YAAY,EAAE,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,YAAY;YACxG,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,WAAW;AACrG,SAAA,CAAC,CAAC;KACJ;;gHApDU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,uBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;oHAAnB,mBAAmB,EAAA,CAAA,CAAA;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;;;MCFE,iBAAiB,CAAA;AAgB5B,IAAA,WAAA,GAAA;AAdA,QAAA,IAAK,CAAA,KAAA,GAAG,EAAE,CAAC;AAMX,QAAA,IAAK,CAAA,KAAA,GAAG,KAAK,CAAC;AAEd,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAEhB,QAAA,IAAE,CAAA,EAAA,GAAG,EAAE,CAAC;AAGR,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;KACD;AAIhB,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;KACrB;AAED,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACtB;AAED,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;KAC5B;AAED,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;KAClB;AAED,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACvB,SAAA;KACF;;8GAxCU,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,4JAFjB,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,0BCP1F,geAgBA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArD,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAL,IAAA,CAAA,4BAAA,EAAA,QAAA,EAAA,uGAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDPa,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,iBAER,iBAAiB,CAAC,IAAI,EAC1B,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAmB,iBAAA,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,geAAA,EAAA,CAAA;0EAIxF,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAGN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAGN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAGN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAGN,OAAO,EAAA,CAAA;sBADN,KAAK;gBAGN,EAAE,EAAA,CAAA;sBADD,KAAK;gBAGN,IAAI,EAAA,CAAA;sBADH,KAAK;;;MEXK,cAAc,CAAA;AAgCzB,IAAA,WAAA,CAAoB,mBAAwC,EAAA;AAAxC,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AA5BlD,QAAA,IAAA,CAAA,kBAAkB,GAA+B,IAAI,YAAY,EAAE,CAAC;AAGrE,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;;;AAOzB,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;;AAEhB,QAAA,IAAA,CAAA,iBAAiB,GAA0B,IAAI,YAAY,EAAE,CAAC;;;AAK/D,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;;AAE/B,QAAA,IAAiB,CAAA,iBAAA,GAAY,KAAK,CAAC;;AAGnC,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAMqC;IAEhE,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,gBAAgB,GAAG2D,EAAI,EAAE,CAAC;;QAG/B,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACzB,YAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;YAGxF,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEzC,IAAI,CAAC,gBAAgB,EAAE,CAAC;;AAGxB,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,IAAG;gBAC9E,IAAI,CAAC,gBAAgB,EAAE,CAAC;AAC1B,aAAC,CAAC,CAAC;AACJ,SAAA;KACF;AAED,IAAA,mBAAmB,CAAC,KAAK,EAAA;QACvB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACnD;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;;AAExB,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,SAAS,CAAC;AACpC,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;;QAGhD,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAC1B,gBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;AAC1C,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,SAAS;AAChB,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;IAED,UAAU,GAAA;QACR,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;AAC1B,gBAAA,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY;AAC5C,gBAAA,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW;AAC3C,aAAA,CAAC,CAAC;AACJ,SAAA;KACF;AAED;;AAEK;IACG,gBAAgB,GAAA;QACtB,IAAI,CAAC,YAAY,GAAG;YAClB,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC;YACrC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC;YACjD,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC;YACzG,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC;AACtG,YAAA,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU;SACzC,CAAC;QACF,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;KACjD;IAED,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC;AACzC,SAAA;KACF;;2GAxGU,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,cAAc,iXCX3B,8xCAkCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAArC,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,oBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,cAAA,EAAA,IAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FDvBa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACE,UAAU,EAAA,aAAA,EAEL,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,8xCAAA,EAAA,CAAA;uGAK5B,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACI,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBAEE,gBAAgB,EAAA,CAAA;sBAAxB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBAOG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAEI,iBAAiB,EAAA,CAAA;sBAA1B,MAAM;gBAKE,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAEG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBAGG,SAAS,EAAA,CAAA;sBAAjB,KAAK;;;ME7BK,WAAW,CAAA;AAMtB,IAAA,WAAA,CAAoB,WAAuB,EAAU,QAAmB,EAA4B,QAAQ,EAAA;AAAxF,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAA4B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAA;QAFpG,IAAe,CAAA,eAAA,GAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;KAEgD;IAEhH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAED,uBAAuB,GAAA;QACrB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AAC/G,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC;QAErF,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AACxD,gBAAA,MAAM,sHAAsH,CAAC;AAC9H,aAAA;YAED,IAAI,SAAS,GAAG,oCAAoC,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AAC9E,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACnE,SAAA;KACF;;AAxBU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,qEAM4D,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAN/E,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;iBAC1B,CAAA;;;8BAO4E,MAAM;+BAAC,QAAQ,CAAA;;yBALrE,UAAU,EAAA,CAAA;sBAA9B,KAAK;uBAAC,YAAY,CAAA;gBACE,UAAU,EAAA,CAAA;sBAA9B,KAAK;uBAAC,YAAY,CAAA;;;MCaR,WAAW,CAAA;IAoBtB,WACU,CAAA,UAAsB,EACtB,MAAsB,EACtB,QAAmB,EACD,QAAQ,EAC1B,QAAkC,EAClC,QAAkB,EAAA;AALlB,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;AACtB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAA;AAC1B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAA0B;AAClC,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AAXlB,QAAA,IAAA,CAAA,mBAAmB,GAA0B,IAAI,YAAY,EAAE,CAAC;KAYtE;IAvBJ,IAA4B,aAAa,CAAC,KAAc,EAAA;AACtD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,SAAA;KACF;AAED,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,MAAM,CAAC;KACpB;IAgBD,QAAQ,GAAA;QACN,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,uBAAuB,GAAA;;QAErB,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;AACxD,QAAA,iBAAiB,CAAC,SAAS,GAAG,iEAAiE,CAAC;;QAGhG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;;QAGvH,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrG,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;KAC1E;IAEO,mBAAmB,GAAA;QACzB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAGL,EAAI,EAAE,CAAC;QACnF,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;QAC5F,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC;QAChD,IAAI,CAAC,gBAAgB,EAAE,CAAC;KACzB;IAEO,gBAAgB,GAAA;QACtB,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;KAC/D;IAEO,qBAAqB,GAAA;;QAE3B,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAK;YACvD,IAAI,CAAC,eAAe,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;KACJ;IAEO,eAAe,GAAA;AACrB,QAAA,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACnD;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;KAC9B;;AAzEU,WAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,mGAwBZ,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,wBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAxBP,WAAW,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,eAAe;iBAC1B,CAAA;;;8BAyBI,MAAM;+BAAC,QAAQ,CAAA;;yBAvBG,UAAU,EAAA,CAAA;sBAA9B,KAAK;uBAAC,YAAY,CAAA;gBACI,YAAY,EAAA,CAAA;sBAAlC,KAAK;uBAAC,cAAc,CAAA;gBAEO,aAAa,EAAA,CAAA;sBAAxC,KAAK;uBAAC,eAAe,CAAA;gBAWZ,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;;MA6DI,aAAa,CAAA;AAKxB,IAAA,WAAA,CACU,WAAoB,EACpB,MAAsB,EACtB,wBAAkD,EAClD,QAAkB,EAAA;AAHlB,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAS;AACpB,QAAA,IAAM,CAAA,MAAA,GAAN,MAAM,CAAgB;AACtB,QAAA,IAAwB,CAAA,wBAAA,GAAxB,wBAAwB,CAA0B;AAClD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAU;AARpB,QAAA,IAAQ,CAAA,QAAA,GAAY,KAAK,CAAC;KAS9B;AAEJ,IAAA,MAAM,CAAC,SAAoB,EAAA;QACzB,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACxD,SAAA;AAED,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,MAAM,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC;QAE/F,IAAI,YAAY,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE/D,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,MAAK;YACpB,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9C,YAAY,CAAC,OAAO,EAAE,CAAC;AACzB,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,WAAW,CAAE,YAAY,CAAC,QAAiC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3F,QAAA,OAAO,YAAY,CAAC;KACrB;IAED,OAAO,GAAA;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,SAAS,EAAE,CAAC;AAClB,SAAA;KACF;AACF;;MC7HY,iBAAiB,CAAA;AA0B5B,IAAA,WAAA,CACU,WAAuB,EACvB,QAAmB,EACD,QAAQ,EAC1B,mBAAwC,EAAA;AAHxC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AACvB,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AACD,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAA;AAC1B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AAxBlD,QAAA,IAAW,CAAA,WAAA,GAAW,EAAE,CAAC;AAKD,QAAA,IAAA,CAAA,aAAa,GAAY,KAAK,CAAC;QAI7C,IAAA,CAAA,YAAY,GAA0B,IAAI,YAAY,EAAE,CAAC;AAEzD,QAAA,IAAA,CAAA,kBAAkB,GAA+B,IAAI,YAAY,EAAE,CAAC;QAEtE,IAAe,CAAA,eAAA,GAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAKxD,QAAA,IAAa,CAAA,aAAA,GAAmB,EAAE,CAAC;KAOvC;IA9BJ,IACI,UAAU,CAAC,KAAa,EAAA;AAC1B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;KACtB;AAED,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;KACzB;IAwBD,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAC1B,aAAA;AAAM,iBAAA;gBACL,IAAI,CAAC,eAAe,EAAE,CAAC;AACxB,aAAA;AACF,SAAA;KACF;IAED,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAEhF,QAAA,MAAM,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,IAAG;AAC9E,YAAA,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,YAAA,IAAI,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,KAAK,EAAE;gBACtC,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;KAC/C;IAED,eAAe,GAAA;AACb,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;AACrF,YAAA,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE;;gBAE5E,IAAI,CAAC,aAAa,EAAE,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACxC;IAED,aAAa,GAAA;;QAEX,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,MAAM,CAAC,CAAC;KACxG;IAED,uBAAuB,GAAA;QACrB,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;AAC/G,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;QAE/E,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AACxD,gBAAA,MAAM,sHAAsH,CAAC;AAC9H,aAAA;YAED,IAAI,SAAS,GAAG,8BAA8B,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;AACxE,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACnE,SAAA;KACF;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;KAC/E;IAED,mBAAmB,GAAA;QACjB,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AACjD,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,8BAA8B,CAAC;QAC9D,IAAI,CAAC,aAAa,EAAE,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,CAAC,UAAU,EAAE,CAAC;AACnB,SAAA;KACF;IAEO,aAAa,GAAA;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO;AACR,SAAA;QACD,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;KAChD;IAED,UAAU,GAAA;;QAER,IAAI,CAAC,aAAa,CAAC,SAAS,IAAI,iCAAiC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;;AAG9F,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,EAAE,MAAK;AACrD,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;AAC9C,YAAA,IAAI,OAAe,CAAC;YACpB,IAAI,OAAe,EAAE,QAAiB,CAAC;AAEvC,YAAA,QAAQ,WAAW;AACjB,gBAAA,KAAK,MAAM;oBACT,OAAO,GAAG,IAAI,CAAC;AACf,oBAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxB,QAAQ,GAAG,IAAI,CAAC;oBAChB,MAAM;AAER,gBAAA,KAAK,IAAI;oBACP,OAAO,GAAG,MAAM,CAAC;AACjB,oBAAA,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxB,QAAQ,GAAG,KAAK,CAAC;oBACjB,MAAM;AAER,gBAAA,KAAK,MAAM;oBACT,OAAO,GAAG,MAAM,CAAC;oBACjB,MAAM;AAER,gBAAA;oBACE,OAAO,GAAG,MAAM,CAAC;oBACjB,MAAM;AACT,aAAA;;AAED,YAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;AAE1F,YAAA,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,OAAO,MAAM,CAAC;AACf,SAAA;;QAED,IAAI,eAAe,GAAG,MAAM,CAAC;AAC7B,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE;AAClD,YAAA,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;AAC3E,SAAA;AACD,QAAA,OAAO,eAAe,CAAC;KACxB;IAED,kBAAkB,GAAA;QAChB,MAAM,MAAM,GAAG,4CAA4C,CAAC;AAC5D,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,MAAM,CAAC,IAAI,CAAC;KACpB;IAED,UAAU,CAAC,OAAO,EAAE,QAAQ,EAAA;QAC1B,IAAI,IAAI,CAAC,aAAa,EAAE;;AAEtB,YAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AACzB,gBAAA,IAAI,EAAE,OAAO;AACb,gBAAA,KAAK,EAAE,QAAQ;AACf,gBAAA,WAAW,EAAE,CAAC;AACf,aAAA,CAAC,CAAC;AACJ,SAAA;AAAM,aAAA;;AAEL,YAAA,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClF,SAAA;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;AACvC,YAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,QAAQ,CAAC;AACnC,YAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACjD,SAAA;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClC;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,IAAG;YACxC,YAAY,CAAC,WAAW,EAAE,CAAC;AAC7B,SAAC,CAAC,CAAC;KACJ;;AA/LU,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,qEA6BlB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGA7BP,iBAAiB,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,UAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,cAAc;iBACzB,CAAA;;;8BA8BI,MAAM;+BAAC,QAAQ,CAAA;;yBA3Bd,UAAU,EAAA,CAAA;sBADb,KAAK;uBAAC,YAAY,CAAA;gBASE,UAAU,EAAA,CAAA;sBAA9B,KAAK;uBAAC,YAAY,CAAA;gBACK,aAAa,EAAA,CAAA;sBAApC,KAAK;uBAAC,eAAe,CAAA;gBACF,SAAS,EAAA,CAAA;sBAA5B,KAAK;uBAAC,WAAW,CAAA;gBACC,QAAQ,EAAA,CAAA;sBAA1B,KAAK;uBAAC,UAAU,CAAA;gBACI,UAAU,EAAA,CAAA;sBAA9B,KAAK;uBAAC,YAAY,CAAA;gBACT,YAAY,EAAA,CAAA;sBAArB,MAAM;gBACE,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACI,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;;;MCpBI,QAAQ,CAAA;AACnB,IAAA,WAAA,CAAoB,WAAuB,EAAU,QAAmB,EAA4B,QAAQ,EAAA;AAAxF,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAA4B,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAA;KAAI;IAEhH,eAAe,GAAA;QACb,IAAI,CAAC,uBAAuB,EAAE,CAAC;KAChC;IAED,uBAAuB,GAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;KAChF;;AATU,QAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,QAAQ,qEAC+D,QAAQ,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;yFAD/E,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAAR,QAAQ,EAAA,UAAA,EAAA,CAAA;kBAJpB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;;AAET,oBAAA,QAAQ,EAAE,YAAY;iBACvB,CAAA;;;8BAE4E,MAAM;+BAAC,QAAQ,CAAA;;;;ACStF,MAAO,kBAAmB,SAAQ,mBAAmB,CAAA;AAGvD,IAAA,WAAA,CACE,UAA6B,EAC7B,mBAAwC,EACxC,IAAgB,EAChB,aAA4B,EAC5B,mBAAoC,EACpC,YAA0B,EAC1B,gBAAkC,EAClC,UAAsB,EAAA;AAEtB,QAAA,KAAK,CACH,UAAU,EACV,mBAAmB,EACnB,IAAI,EACJ,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,UAAU,CACX,CAAC;AArBJ,QAAA,IAAA,CAAA,aAAa,GAAW,aAAa,CAAC;KAsBrC;IAED,QAAQ,GAAA;KACP;;+GA1BQ,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAvC,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAX,EAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAlB,kBAAkB,EAAA,QAAA,EAAA,YAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB/B,0xIAmHA,EDpGc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmC,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,kBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,WAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,eAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAvD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAwD,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,cAAc;AACf,KAAA,EAAA,CAAA,CAAA;2FAEU,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEV,UAAA,EAAA;wBACV,cAAc;AACf,qBAAA,EAAA,QAAA,EAAA,0xIAAA,EAAA,CAAA;;;MEOU,mBAAmB,CAAA;AAwI9B,IAAA,WAAA,CACU,UAA6B,EAC7B,eAAgC,EAChC,mBAAwC,EACxC,YAA0B,EAC1B,mBAAwC,EACxC,oBAA0C,EAC1C,iBAAoC,EAAA;AANpC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAmB;AAC7B,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAoB,CAAA,oBAAA,GAApB,oBAAoB,CAAsB;AAC1C,QAAA,IAAiB,CAAA,iBAAA,GAAjB,iBAAiB,CAAmB;AAxIrC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAAC;AACtB,QAAA,IAAe,CAAA,eAAA,GAAG,KAAK,CAAC;AAEjC,QAAA,IAAA,CAAA,mBAAmB,GAA0B,IAAI,YAAY,EAAE,CAAC;;QAGhE,IAAA,CAAA,YAAY,GAAiB;AAC3B,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,KAAK,EAAE,SAAS;AAChB,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,YAAY,EAAE,CAAC;AACf,YAAA,WAAW,EAAE,CAAC;SACf,CAAC;AAGF,QAAA,IAAA,CAAA,cAAc,GAAW,GAAG,CAAC;AAC7B,QAAA,IAAA,CAAA,cAAc,GAAW,GAAG,CAAC;AAG7B,QAAA,IAAS,CAAA,SAAA,GAAW,CAAC,CAAC;QAEtB,IAAA,CAAA,kBAAkB,GAAO;AACvB,YAAA;AACE,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,mBAAmB,EAAG,CAAC;AACvB,gBAAA,mBAAmB,EAAG,GAAG;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,mBAAmB,EAAG,CAAC;AACvB,gBAAA,mBAAmB,EAAG,GAAG;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,GAAG;AACR,gBAAA,mBAAmB,EAAG,GAAG;AACzB,gBAAA,mBAAmB,EAAG,MAAM;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,MAAM;AAC5B,gBAAA,mBAAmB,EAAG,GAAG;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,IAAI;AAC1B,gBAAA,mBAAmB,EAAG,KAAK;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,GAAG;AACzB,gBAAA,mBAAmB,EAAG,MAAM;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,mBAAmB,EAAG,MAAM;AAC5B,gBAAA,mBAAmB,EAAG,GAAG;AAC1B,aAAA;SACF,CAAC;QAEF,IAAA,CAAA,cAAc,GAAO;AACnB,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,IAAI;AAC1B,gBAAA,mBAAmB,EAAG,KAAK;AAC5B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,MAAM;AAC5B,gBAAA,mBAAmB,EAAG,GAAG;AAC1B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,MAAM;AAC5B,gBAAA,mBAAmB,EAAG,MAAM;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,IAAI;AAC1B,gBAAA,mBAAmB,EAAG,MAAM;AAC7B,aAAA;AACD,YAAA;AACE,gBAAA,GAAG,EAAE,IAAI;AACT,gBAAA,mBAAmB,EAAG,IAAI;AAC1B,gBAAA,mBAAmB,EAAG,IAAI;AAC3B,aAAA;AACD,YAAA;AACE,gBAAA,mBAAmB,EAAG,IAAI;AAC1B,gBAAA,mBAAmB,EAAG,KAAK;AAC5B,aAAA;SACF,CAAC;AAMF,QAAA,IAAA,CAAA,kBAAkB,GAAoB,IAAI,OAAO,EAAU,CAAC;AAC5D,QAAA,IAAA,CAAA,cAAc,GAAkB,IAAI,OAAO,EAAQ,CAAC;AAEpD,QAAA,IAAY,CAAA,YAAA,GAAoB,EAAE,CAAC;AACnC,QAAA,IAAe,CAAA,eAAA,GAAoB,EAAE,CAAC;AAGtC,QAAA,IAAkB,CAAA,kBAAA,GAAW,CAAC,CAAC;AAC/B,QAAA,IAAA,CAAA,OAAO,GAAY,KAAK,CAAC;AACzB,QAAA,IAAS,CAAA,SAAA,GAAY,IAAI,CAAC;AAC1B,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAClC,QAAA,IAAgB,CAAA,gBAAA,GAAG,KAAK,CAAC;AACzB,QAAA,IAAa,CAAA,aAAA,GAAY,IAAI,CAAC;AAC9B,QAAA,IAAU,CAAA,UAAA,GAAY,KAAK,CAAC;AAC5B,QAAA,IAAA,CAAA,oBAAoB,GAAY,KAAK,CAAC;AAEtC,QAAA,IAAa,CAAA,aAAA,GAAW,KAAK,CAAC;;AAI9B,QAAA,IAAS,CAAA,SAAA,GAAU,CAAC,CAAC;AACrB,QAAA,IAAM,CAAA,MAAA,GAAW,CAAC,CAAC;AACnB,QAAA,IAAA,CAAA,QAAQ,GAAW,EAAE,CAAC;AACtB,QAAA,IAAe,CAAA,eAAA,GAAa,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAKvC,QAAA,IAAc,CAAA,cAAA,GAAG,kCAAkC,CAAC;AACpD,QAAA,IAAgB,CAAA,gBAAA,GAAG,oCAAoC,CAAC;AACxD,QAAA,IAAW,CAAA,WAAA,GAAG,oCAAoC,CAAC;AACnD,QAAA,IAAa,CAAA,aAAA,GAAG,8BAA8B,CAAC;AAC/C,QAAA,IAAc,CAAA,cAAA,GAAG,mCAAmC,CAAC;KASV;IAEnD,QAAQ,GAAA;AACN;;AAEI;QACJ,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,eAAe,EAAE,CAAC;KACnE;IAED,eAAe,GAAA;QACb,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;AACzB,YAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,YAAY,CAAC;AAC1C,SAAA;KACF;IAED,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;KAC5B;AAED;;;;AAIG;AACH,IAAA,uBAAuB,CAAC,QAAiB,EAAA;AACvC,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC9B,QAAA,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAC5D,QAAA,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;KACxD;AAED;;AAEG;IACH,aAAa,GAAA;QACX,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,iBAAiB,GAAA;AACf,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED,IAAA,eAAe,CAAC,cAAiC,EAAA;AAC/C,QAAA,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,cAAc,CAAC,CAAC;AAC9D,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;KACzD;IAED,aAAa,GAAA;QACX,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;;;QAI3B,MAAM,aAAa,GAAa,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAE,GAAG,IAAG;YAC/B,IAAI,GAAG,CAAC,WAAW,EAAE;AACnB,gBAAA,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AACnB,gBAAA,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;AACjC,aAAA;AACH,SAAC,CAAC,CAAC;QAEH,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC,SAAS,CACxD,MAAK;YACH,IAAI,CAAC,UAAU,EAAE,CAAC;AAClB,YAAA,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,aAAa,CAAC,CAAC;SACjE,EACD,KAAK,IAAG;YACN,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACnD,SAAC,CACF,CAAC;KAGH;IAED,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO;AACR,SAAA;QACD,MAAM,oBAAoB,GAAoB,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,IAAG;YAC1B,IAAG,GAAG,CAAC,WAAW,EAAE;AAClB,gBAAA,GAAG,CAAC,WAAW,GAAE,KAAK,CAAC;AACvB,gBAAA,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;AACrB,aAAA;YACD,IAAI,GAAG,CAAC,QAAQ,EAAE;AAChB,gBAAA,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAChC,aAAA;AACH,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;KAChE;IAED,oBAAoB,GAAA;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;KAC3B;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;AAED;;AAEG;IACH,oBAAoB,GAAA;QAClB,IAAI,CAAC,qBAAqB,EAAE,CAAC;KAC9B;IAED,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,EAAE,CAAC;KACnB;AAED;;;AAGG;IACK,iBAAiB,GAAA;AACvB,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,WAAW,GAAG,EAAE,CAAC;QAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QAElE,MAAM,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEzE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,iBAAiB,CAAC,CAAC;AACnE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,WAAW,IAAK,iBAAiB,CAAC,CAAC;QAEnF,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC,CAAC;AAChE,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC,cAAc,GAAG,WAAW,IAAK,WAAW,CAAC,CAAC;AAElF,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3C;IAEO,kBAAkB,GAAA;AACxB,QAAA,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;QACtC,IAAI,QAAQ,GAAU,CAAC,CAAC;QACxB,IAAI,cAAc,GAAa,EAAE,CAAC;AAElC,QAAA,MAAM,qBAAqB,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,CAAC;AAE5F,QAAA,KAAK,MAAM,WAAW,IAAI,qBAAqB,EAAE;AAC7C,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;gBACpB,cAAc,GAAG,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;gBACpF,MAAM;AACP,aAAA;YACD,IAAI,QAAQ,GAAG,WAAW,IAAI,WAAW,IAAI,WAAW,CAAC,GAAG,EAAE;gBAC5D,cAAc,GAAG,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,CAAC;gBACpF,MAAM;AACP,aAAA;AACD,YAAA,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC;AAC9B,SAAA;AACD,QAAA,OAAO,cAAc,CAAC;KACvB;IAEO,kBAAkB,GAAA;QACxB,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,KAAK,MAAM,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAClG,YAAA,OAAO,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC;AACxC,SAAA;AAED,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC;AAEjC,QAAA,OAAO,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,KAAK,CAAC,IAAK,KAAK,GAAG,IAAI,CAAC,eAAe,KAAK,CAAC,EAAE;AAC9F,YAAA,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC;AAC/B,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,SAAS,GAAA;;QACf,IAAI,CAAC,MAAM,GAAG;AACZ,YAAA,KAAK,EAAE,CAAA,CAAA,EAAA,GAAA,IAAI,CAAC,iBAAiB,MAAE,IAAA,IAAA,EAAA,KAAA,KAAA,CAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,QAAQ,EAAE,MAAK,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACpJ,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE;SAC/C,CAAC;AACF,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;AACjC,YAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;AAC/D,SAAA;KACF;AAEO,IAAA,aAAa,CAAC,cAAuB,EAAA;AAC3C,QAAA,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;AAC5B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,CAAC,cAAc,CAAC;AAClC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;KACpB;IAEO,iBAAiB,GAAA;QACvB,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE;YACzD,OAAO;AACR,SAAA;QAED,MAAM,gBAAgB,GAAa,EAAE,CAAC;AAEtC,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,IAC9B,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CACnC,CAAC;AAEF,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,IAAG;YAClC,IAAI,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AACpD,gBAAA,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;AACzB,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,gBAAgB,GAAA;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;KACjD;AAED;;;AAGG;AACK,IAAA,kBAAkB,CAAC,cAAsB,EAAA;QAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY,KAAK,YAAY,GAAG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;AAEzI,QAAA,IAAI,cAAc,GAAG,YAAY,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,SAAS,GAAG,YAAY,GAAG,cAAc,GAAG,YAAY,CAAC;AAC/D,SAAA;KACF;AAEO,IAAA,MAAM,CAAE,OAAe,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1D,YAAA,IAAI,EAAE,CAAC,OAAO,KAAI;gBAEhB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;;AAE1C,oBAAA,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AACnC,oBAAA,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AAClB,iBAAA;aACF;YACD,KAAK,EAAE,MAAK;gBACV,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC/C;AACF,SAAA,CAAC,CAAC;KACJ;AAEO,IAAA,eAAe,CAAE,OAAe,EAAA;AACtC,QAAA,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,YAAY,EAAE;AACnC,YAAA,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,EAAE;AAC3B,gBAAA,OAAO,IAAI,CAAC;AACb,aAAA;AACF,SAAA;AACD,QAAA,OAAO,KAAK,CAAC;KACd;IAEO,qBAAqB,GAAA;AAC3B,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,IACpD,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;AAE1B,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAC5B,YAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC5B,SAAA;KACF;IAEO,SAAS,GAAA;;AAEf,QAAA,IAAI,CAAC,kBAAkB;AACpB,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACvB,SAAS,CAAC,IAAI,IAAG;YACd,IAAI,CAAC,UAAU,EAAE,CAAC;AACxB,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,cAAc;AAChB,aAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;aACvB,SAAS,CAAC,IAAI,IAAG;YACd,IAAI,CAAC,WAAW,EAAE,CAAC;AACzB,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,IAAG;YAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;AACpB,SAAC,CAAC,CAAC;;AAGH,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC,SAAS,CAAC,OAAO,IAAG;YACtF,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE;AAC7C,gBAAA,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACtB,aAAA;AACH,SAAC,CAAC,CAAC;AAEH,QAAA,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;YACxF,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,OAAO;AACR,aAAA;YACD,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,YAAA,YAAY,CAAC,GAAG,CAAC,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;AACtD,YAAA,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,YAAY,EAAE;gBACvC,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;AAC9C,oBAAA,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC1B,iBAAA;AACF,aAAA;AACH,SAAC,CAAC,CAAC;KACJ;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE,CAAC;QAEjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;AAE3B,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACpD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,YAAA,IAAI,EAAE,CAAC,IAAI,KAAI;AACb,gBAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AACzB,gBAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;AACxC,gBAAA,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;AACxC,gBAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7D,IAAI,CAAC,iBAAiB,EAAE,CAAC;AAEzB,gBAAA,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtE,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;gBACxG,IAAI,CAAC,YAAY,CAAC,YAAY,GAAI,IAAI,CAAC,YAAY,CAAC,YAAY,GAAI,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;;AAGnH,gBAAA,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;oBAC3B,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACzB,iBAAA;AAED,gBAAA,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,CAAC;aAEzC;YACD,KAAK,EAAE,KAAK,IAAG;gBACb,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACjD,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aAC3B;AAAC,SAAA,CAAC,CAAC;KACL;IAEO,mBAAmB,GAAA;AACzB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC;QAElD,IAAI,IAAI,CAAC,gBAAgB,IAAI,WAAW,KAAK,IAAI,CAAC,mBAAmB,EAAE;;YAErE,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;AAE9B,QAAA,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,IAAI,EAAE,KAAK,IAAG;AACZ,gBAAA,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;AACvC,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;AAC7B,gBAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACpB,gBAAA,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,KAAK,CAAC;aACtC;YAED,KAAK,EAAE,KAAK,IAAG;;AAEb,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aAC7B;AAAC,SAAA,CAAC,CAAC;KACL;IAED,yBAAyB,GAAA;AACvB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;IAED,sBAAsB,GAAA;QACpB,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC3G;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;AACtC,QAAA,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;AACnC,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;AACjC,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;KACvC;;gHA1gBU,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAlD,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAmD,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;oGAAnB,mBAAmB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,mBAAA,EAAA,qBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBhC,66NAqKA,EDlJc,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA7D,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA6B,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiC,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,cAAA,EAAA,UAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA5D,gBAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA6D,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,UAAA,EAAA;QACV,SAAS;QACT,YAAY;AACb,KAAA,EAAA,CAAA,CAAA;2FAEU,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;YACE,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,aAAa,EAEX,UAAA,EAAA;wBACV,SAAS;wBACT,YAAY;AACb,qBAAA,EAAA,QAAA,EAAA,66NAAA,EAAA,CAAA;sRAIQ,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBACG,iBAAiB,EAAA,CAAA;sBAAzB,KAAK;gBACG,WAAW,EAAA,CAAA;sBAAnB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBACG,eAAe,EAAA,CAAA;sBAAvB,KAAK;gBAEN,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAauB,eAAe,EAAA,CAAA;sBAA5C,SAAS;uBAAC,iBAAiB,CAAA;;;MEzCjB,qBAAqB,CAAA;IAehC,WAAoB,CAAA,cAA0B,EAAU,QAAmB,EAAA;AAAvD,QAAA,IAAc,CAAA,cAAA,GAAd,cAAc,CAAY;AAAU,QAAA,IAAQ,CAAA,QAAA,GAAR,QAAQ,CAAW;AAd3E,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;KAejB;IAVD,IACI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;KACrB;AACD,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;KACvB;IAKD,QAAQ,GAAA;KACP;IAED,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AACpG,SAAA;AAAM,aAAA;AACL,YAAA,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;AACvG,SAAA;KACF;IAED,WAAW,GAAA;KACV;;kHA9BU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;sGAArB,qBAAqB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,CAAA,cAAA,EAAA,UAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;2FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,gBAAgB;iBAC3B,CAAA;yHAKQ,aAAa,EAAA,CAAA;sBADnB,MAAM;gBAIH,QAAQ,EAAA,CAAA;sBADX,KAAK;uBAAC,cAAc,CAAA;;;MCJV,iBAAiB,CAAA;IAC1B,SAAS,CAAC,KAAmB,EAAE,UAAkB,EAAA;AAC7C,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,IAAG;YACvB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,SAAC,CAAC,CAAC;KACN;;8GANQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,CAAA;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACF,oBAAA,IAAI,EAAE,eAAe;iBACxB,CAAA;;;MCMY,eAAe,CAAA;AAsC1B,IAAA,WAAA,CAAoB,gBAAkC,EAAA;AAAlC,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAxBtD,QAAA,IAAM,CAAA,MAAA,GAAG,KAAK,CAAC;AAGf,QAAA,IAAI,CAAA,IAAA,GAAG,SAAS,CAAC;AAKR,QAAA,IAAQ,CAAA,QAAA,GAAG,MAAM,CAAC;AAG3B,QAAA,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC;AAEP,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAEzC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAO,CAAC;AAIxD,QAAA,IAAc,CAAA,cAAA,GAAG,KAAK,CAAC;AACvB,QAAA,IAAW,CAAA,WAAA,GAAG,EAAE,CAAC;AAEjB,QAAA,IAAiB,CAAA,iBAAA,GAAW,CAAC,CAAC,CAAC;;AAmD/B,QAAA,IAAA,CAAA,QAAQ,GAAqC,MAAK,GAAG,CAAC;AACtD,QAAA,IAAA,CAAA,OAAO,GAAQ,MAAK,GAAG,CAAA;KAlDmC;IAE1D,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC;KACtE;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;KAC7B;IAED,QAAQ,CAAC,IAAgB,EAAE,KAAa,EAAA;AACtC,QAAA,OAAO,GAAG,IAAI,CAAC,EAAE,CAAI,CAAA,EAAA,KAAK,EAAE,CAAC;KAC9B;AAED,IAAA,YAAY,CAAC,EAAU,EAAA;QACrB,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC;AAC9B,QAAA,MAAM,YAAY,GAAe,IAAI,CAAC,eAAe,EAAE,CAAC;AACxD,QAAA,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AAC9C,QAAA,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;KAC7B;IAED,mBAAmB,GAAA;QACjB,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KACxD;IAEO,eAAe,GAAA;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC3C;IAED,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC1C,EAAE,CAAC,CAAC,CAAC;KACP;IAEO,WAAW,GAAA;AACjB,QAAA,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,CAAC;KACnD;AAEO,IAAA,oBAAoB,CAAC,EAAU,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACvE;AAOD,IAAA,UAAU,CAAC,UAAe,EAAA;QACxB,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;AACR,SAAA;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;AACnB,QAAA,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AAC3B,QAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;KAC1C;AAED,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;KACpB;AACD,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;KACnB;;4GAxGU,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA3E,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,eAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,4UAFf,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,mICTxF,mtFA8CM,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAkB,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,8MAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,gBAAA,EAAA,uBAAA,EAAA,4BAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,WAAA,EAAA,YAAA,EAAA,YAAA,EAAA,cAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,SAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAyB,iBAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiC,qBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA5E,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA6E,iBAAA,EAAA,IAAA,EAAA,eAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDnCO,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,YAAY,EAEX,SAAA,EAAA,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAA,eAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAA,QAAA,EAAA,mtFAAA,EAAA,CAAA;uGAItF,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,WAAW,EAAA,CAAA;sBADV,KAAK;gBAIN,KAAK,EAAA,CAAA;sBADJ,KAAK;gBAIN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,MAAM,EAAA,CAAA;sBADL,KAAK;gBAIN,IAAI,EAAA,CAAA;sBADH,KAAK;gBAIN,YAAY,EAAA,CAAA;sBADX,KAAK;gBAGG,QAAQ,EAAA,CAAA;sBAAhB,KAAK;gBAGN,QAAQ,EAAA,CAAA;sBADP,KAAK;gBAGI,WAAW,EAAA,CAAA;sBAApB,MAAM;gBAEG,mBAAmB,EAAA,CAAA;sBAA5B,MAAM;gBAEc,aAAa,EAAA,CAAA;sBAAjC,SAAS;uBAAC,QAAQ,CAAA;;;ME5BR,gBAAgB,CAAA;AA6D3B,IAAA,WAAA,CACU,mBAAoC,EACpC,YAA0B,EAC1B,KAAa,EAAA;AAFb,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAiB;AACpC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;AA7DvB,QAAA,IAAe,CAAA,eAAA,GAAY,KAAK,CAAC;AAIjC,QAAA,IAAa,CAAA,aAAA,GAAG,KAAK,CAAC;AAGtB,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;AAGtC,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE,CAAC;AAGhC,QAAA,IAAA,CAAA,mBAAmB,GAA0B,IAAI,YAAY,EAAE,CAAC;QAEhE,IAAA,CAAA,IAAI,GAAiB;AACnB,YAAA;AACE,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,EAAE,EAAE,CAAC;AACN,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,EAAE,EAAE,CAAC;AACN,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,4BAA4B;AAClC,gBAAA,KAAK,EAAE,YAAY;AACnB,gBAAA,EAAE,EAAE,CAAC;AACN,aAAA;AACD,YAAA;AACE,gBAAA,IAAI,EAAE,wBAAwB;AAC9B,gBAAA,KAAK,EAAE,aAAa;AACpB,gBAAA,IAAI,EAAE,IAAI;AACV,gBAAA,EAAE,EAAE,CAAC;AACN,aAAA;SACF,CAAC;QAEF,IAAA,CAAA,SAAS,GAAe,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAErC;AAC+E;AAC/E,QAAA,IAAO,CAAA,OAAA,GAAG,KAAK,CAAC;AAIhB,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAKlB,IAAA,CAAA,wBAAwB,GAAsB;AAC5C,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,IAAI;SACf,CAAC;KAMK;IAEP,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,EAAE,CAAC,SAAS,CAAC,SAAS,IAAG;YACzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC9B,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACrC,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,UAAU,CAAC,IAAgB,EAAA;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;KACvB;AAED,IAAA,aAAa,CAAC,GAAoB,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;AACtB,QAAA,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;KAC9C;AAED,IAAA,YAAY,CAAC,MAAc,EAAA;AACzB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9B,QAAA,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACrC,SAAA;AACD,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC/B;IAED,iBAAiB,GAAA;QACf,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KAC/B;IAED,0BAA0B,GAAA;AACxB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrC;AAED,IAAA,gBAAgB,CAAC,KAAK,EAAA;KAErB;IAED,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;KAC9B;;6GA9GU,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjF,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAqB,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,gBAAgB,mZCd7B,24HAmHA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAgB,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA/B,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,qDAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,SAAA,EAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA2E,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,mBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,aAAA,EAAA,OAAA,EAAA,eAAA,EAAA,QAAA,EAAA,MAAA,EAAA,cAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,aAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAT,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDrGa,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,SAAS;+BACE,UAAU,EAAA,QAAA,EAAA,24HAAA,EAAA,CAAA;kJAMpB,eAAe,EAAA,CAAA;sBADd,KAAK;gBAGN,cAAc,EAAA,CAAA;sBADb,KAAK;gBAGN,aAAa,EAAA,CAAA;sBADZ,KAAK;gBAIN,gBAAgB,EAAA,CAAA;sBADf,MAAM;gBAIP,UAAU,EAAA,CAAA;sBADT,MAAM;gBAIP,mBAAmB,EAAA,CAAA;sBADlB,MAAM;gBAuCP,oBAAoB,EAAA,CAAA;sBADnB,SAAS;uBAAE,gBAAgB,CAAA;;;MExDjB,qBAAqB,CAAA;AAqBhC,IAAA,WAAA,CACU,mBAAwC,EAAA;AAAxC,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AAnBxC,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;QAEhD,IAAA,CAAA,gBAAgB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;AAC1D,QAAA,IAAW,CAAA,WAAA,GAAY,KAAK,CAAC;AAC7B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAC/B,QAAA,IAAY,CAAA,YAAA,GAAY,KAAK,CAAC;AAC9B,QAAA,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAClB,IAAA,CAAA,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC;AAE9D,QAAA,IAAG,CAAA,GAAA,GAAG,aAAa,CAAC;YAClB,eAAe,EAAE,IAAI,CAAC,gBAAgB;YACtC,SAAS,EAAE,IAAI,CAAC,UAAU;AAC3B,SAAA,CAAC,CAAC;AAGH,QAAA,IAAkB,CAAA,kBAAA,GAAG,CAAC,CAAC;AACvB,QAAA,IAAiB,CAAA,iBAAA,GAAG,MAAM,CAAC;KAIpB;IAEP,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC3B;AAED,IAAA,SAAS,CAAC,KAAa,EAAA;AACrB,QAAA,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;KAC1D;AAED,IAAA,IAAI,CAAC,KAA4B,EAAA;AAC/B,QAAA,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,CAAC,YAAY,EAAE;AAC9C,YAAA,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;AAC9C,SAAA;KACF;AAED,IAAA,sBAAsB,CAAC,KAA4B,EAAA;QACjD,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;KACxE;;kHA3CU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA/C,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,kJCXlC,0uDA2DA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAV,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,8BAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,EAAA,iBAAA,EAAA,wBAAA,EAAA,IAAA,EAAA,qBAAA,EAAA,qBAAA,EAAA,4BAAA,EAAA,2BAAA,EAAA,0BAAA,EAAA,+BAAA,EAAA,2BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,oBAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,aAAA,EAAA,iBAAA,EAAA,oBAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,yBAAA,EAAA,iBAAA,EAAA,0BAAA,EAAA,qBAAA,EAAA,yBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,gBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAsC,eAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,OAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAArD,EAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAkF,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDhDa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,eAAe,EAAA,QAAA,EAAA,0uDAAA,EAAA,CAAA;uGAKhB,YAAY,EAAA,CAAA;sBAApB,KAAK;gBACI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;;;MECI,qBAAqB,CAAA;IA2DhC,WACU,CAAA,mBAAwC,EACxC,mBAAwC,EACxC,YAA0B,EAC1B,eAAgC,EAChC,UAAsB,EACtB,aAA4B,EAAA;AAL5B,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAmB,CAAA,mBAAA,GAAnB,mBAAmB,CAAqB;AACxC,QAAA,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;AAC1B,QAAA,IAAe,CAAA,eAAA,GAAf,eAAe,CAAiB;AAChC,QAAA,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;AACtB,QAAA,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;AA/D7B,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAc9B,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE,CAAC;AACxC,QAAA,IAAgB,CAAA,gBAAA,GAAY,KAAK,CAAC;AAW1C,QAAA,IAAqB,CAAA,qBAAA,GAAY,KAAK,CAAC;QAkB7B,IAAA,CAAA,kBAAkB,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC;QAE5D,IAAA,CAAA,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;AAE5D,QAAA,IAAK,CAAA,KAAA,GAAY,KAAK,CAAA;AAEtB,QAAA,IAAa,CAAA,aAAA,GAAY,KAAK,CAAC;AAE/B,QAAA,IAAO,CAAA,OAAA,GAAY,KAAK,CAAC;KAaxB;;;IA7DD,IAAa,gBAAgB,CAAC,gBAA2C,EAAA;QACvE,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;AAExD,QAAA,IAAI,OAAO,gBAAgB,KAAK,SAAS,EAAE;YACzC,OAAO;AACR,SAAA;AAED,QAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;KAC5D;IAKD,IAAa,eAAe,CAAC,QAAiB,EAAA;AAC5C,QAAA,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;QACjC,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KACpE;AAED,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;IAGD,IAAa,oBAAoB,CAAC,QAAiB,EAAA;AACjD,QAAA,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC;AACtC,QAAA,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,YAAY,EAAE,CAAC;AACrB,SAAA;KACF;AAED,IAAA,IAAI,oBAAoB,GAAA;QACtB,OAAO,IAAI,CAAC,gBAAgB,CAAC;KAC9B;AAEoD,IAAA,gBAAgB,CAAC,KAAoB,EAAA;QACxF,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YAC3D,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,SAAA;KACF;IAyBD,QAAQ,GAAA;QACN,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AACnE,QAAA,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,SAAS,CAAC,YAAY,IAAG;YAEpF,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;;gBAEtE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChB,aAAA;AACH,SAAC,CAAC,CAAC;QACH,IAAI,CAAC,0BAA0B,EAAE,CAAC;;QAElC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC;;AAEvH,QAAA,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC;KAC5C;IAED,0BAA0B,GAAA;QACxB,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,IAAI,CAAC,cAAc,KAAK,MAAM,EAAE;YACtE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,wBAAwB,EAAE,CAAC;AAC1E,SAAA;KACF;AAED,IAAA,aAAa,CAAC,KAAK,EAAA;QACjB,IAAI,KAAK,KAAK,aAAa,EAAE;AAC3B,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;YACpB,OAAO;AACR,SAAA;AACD,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;KACtB;IAED,YAAY,GAAA;AACV,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,EAAE;YACpC,UAAU,CAAC,MAAK;AACd,gBAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;gBAC9B,IAAI,CAAC,6BAA6B,EAAE,CAAC;aACtC,EAAE,EAAE,CAAC,CAAC;AACR,SAAA;KACF;IAED,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;QAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;KAC5B;IAED,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,kBAAkB,EAAE,CAAC;KAC3B;IAED,OAAO,GAAA;AACL,QAAA,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;QACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,gCAAgC,EAAE,CAAC;;QAExC,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;SAC9B,EAAE,GAAG,CAAC,CAAC;KACT;IAED,kBAAkB,GAAA;QAChB,IAAI,CAAC,OAAO,EAAE,CAAC;KAChB;AAED;;AAEG;IACH,oBAAoB,GAAA;AAClB,QAAA,OAAO,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,KAAK,QAAQ,GAAG,IAAI,GAAG,KAAK,CAAC;KACjF;IAED,kBAAkB,GAAA;QAChB,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;AAC1C,SAAA;AAED,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;KACjC;IAED,iBAAiB,GAAA;QACf,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;KACzE;IAED,6BAA6B,GAAA;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC7E,QAAA,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,GAAG,IAAI,CAAC;KAC1D;IAED,gCAAgC,GAAA;AAC9B,QAAA,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;YAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;AACnD,YAAA,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;AACtB,SAAA;KACF;IAED,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;KAC9B;IAED,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;AAClC,QAAA,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;AAC/C,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC;KACvC;;kHApLU,qBAAqB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAzD,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAA0D,mBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,qBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,qBAAqB,ycCflC,+wDAuCA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhF,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAiF,gBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,gBAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,qBAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;2FDxBa,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;+BACE,gBAAgB,EAAA,QAAA,EAAA,+wDAAA,EAAA,CAAA;wOAIjB,cAAc,EAAA,CAAA;sBAAtB,KAAK;gBACG,aAAa,EAAA,CAAA;sBAArB,KAAK;gBAIO,gBAAgB,EAAA,CAAA;sBAA5B,KAAK;gBAUI,gBAAgB,EAAA,CAAA;sBAAzB,MAAM;gBAGM,eAAe,EAAA,CAAA;sBAA3B,KAAK;gBAUO,oBAAoB,EAAA,CAAA;sBAAhC,KAAK;gBAW+C,gBAAgB,EAAA,CAAA;sBAApE,YAAY;uBAAC,yBAAyB,EAAE,CAAC,QAAQ,CAAC,CAAA;gBAMzC,kBAAkB,EAAA,CAAA;sBAA3B,MAAM;gBAEG,aAAa,EAAA,CAAA;sBAAtB,MAAM;;;MEzDI,eAAe,CAAA;IAgBxB,WACY,CAAA,WAA+B,EAC/B,gBAAkC,EAAA;AADlC,QAAA,IAAW,CAAA,WAAA,GAAX,WAAW,CAAoB;AAC/B,QAAA,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;AAhB9C,QAAA,IAAS,CAAA,SAAA,GAAG,4BAA4B,CAAC;QAEzC,IAAA,CAAA,oBAAoB,GAAsB;AACxC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,IAAA,CAAA,cAAc,GAAsB;AAClC,YAAA,OAAO,EAAE,EAAE;AACX,YAAA,QAAQ,EAAE,IAAI;SACf,CAAC;KAOM;AAER,IAAA,YAAY,CAAC,MAAc,EAAA;QACzB,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAChD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACvE,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;AACxD,SAAC,CAAC,CAAC;KACJ;AAED,IAAA,sBAAsB,CAAC,MAAc,EAAA;AACnC,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;AAE/B,YAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,KAAI;gBAEpE,IAAI,CAAC,oBAAoB,CAAC,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClD,IAAI,CAAC,oBAAoB,CAAC,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,gBAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBAC7E,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,WAAW,IAAG;AAC9D,oBAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC3B,QAAQ,CAAC,QAAQ,EAAE,CAAC;AACtB,iBAAC,CAAC,CAAC;AACP,aAAC,CAAC,CAAC;AACL,SAAC,CAAC,CAAC;KACJ;IAED,8BAA8B,CAAC,MAAc,EAAE,UAAkB,EAAA;AAC/D,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,IAAG;AAClD,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAC;AACpC,YAAA,IAAI,CAAC,cAAc,CAAC,OAAO,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YAExE,IAAI,CAAC,qBAAqB,EAAE,CAAC;AAC7B,YAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACvE,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC;AACtD,SAAC,CAAC,CAAC;KACJ;IAEO,qBAAqB,GAAA;QAC3B,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1C,SAAA;KACF;;4GA/DQ,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjG,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;gHAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAD3B,UAAU;;;ACagF,CAAC;AAgD5F,MAAM,UAAU,GAAG;IACf,qBAAqB;IACrB,gBAAgB;IAChB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,0BAA0B;IAC1B,iBAAiB;IACjB,qBAAqB;IACrB,eAAe;IACf,iBAAiB;IACjB,gBAAgB;IAChB,mBAAmB;IACnB,mBAAmB;IACnB,kBAAkB;IAClB,cAAc;IACd,oBAAoB;IACpB,mBAAmB;IACnB,iBAAiB;IACjB,cAAc;IACd,qBAAqB;IACrB,eAAe;CAClB,CAAC;AAEF,MAAM,UAAU,GAAG;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,sBAAsB;IACtB,WAAW;IACX,WAAW;IACX,iBAAiB;IACjB,QAAQ;IACR,yBAAyB;IACzB,sBAAsB;IACtB,qBAAqB;CACtB,CAAC;AAEF,MAAM,KAAK,GAAG;IACZ,yBAAyB;IACzB,oBAAoB;IACpB,cAAc;IACd,YAAY;IACZ,aAAa;IACb,qBAAqB;IACrB,iBAAiB;CAClB,CAAC;MAwBW,kBAAkB,CAAA;IAC7B,OAAO,UAAU,CAAC,UAAoB,EAAA;QACpC,OAAO;AACH,YAAA,QAAQ,EAAE,kBAAkB;AAC5B,YAAA,SAAS,EAAE;gBACT,iBAAiB;gBACjB,UAAU;gBACV,aAAa;gBACb,mBAAmB;gBACnB,YAAY;gBACZ,YAAY;gBACZ,UAAU;gBACV,eAAe;gBACf,mBAAmB;gBACnB,aAAa;gBACb,oBAAoB;gBACpB,eAAe;gBACf,aAAa;gBACb,mBAAmB;AACpB,aAAA;SACF,CAAC;KACL;;+GArBU,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAlB,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,iBAvE3B,qBAAqB;QACrB,gBAAgB;QAChB,kBAAkB;QAClB,iBAAiB;QACjB,gBAAgB;QAChB,mBAAmB;QACnB,kBAAkB;QAClB,0BAA0B;QAC1B,iBAAiB;QACjB,qBAAqB;QACrB,eAAe;QACf,iBAAiB;QACjB,gBAAgB;QAChB,mBAAmB;QACnB,mBAAmB;QACnB,kBAAkB;QAClB,cAAc;QACd,oBAAoB;QACpB,mBAAmB;QACnB,iBAAiB;QACjB,cAAc;QACd,qBAAqB;AACrB,QAAA,eAAe,EAIjB,iBAAiB;QACjB,gBAAgB;QAChB,iBAAiB;QACjB,sBAAsB;QACtB,WAAW;QACX,WAAW;QACX,iBAAiB;QACjB,QAAQ;QACR,yBAAyB;QACzB,sBAAsB;AACtB,QAAA,qBAAqB,EAIrB,yBAAyB;QACzB,oBAAoB;QACpB,cAAc;QACd,YAAY;QACZ,aAAa;QACb,qBAAqB;AACrB,QAAA,iBAAiB,aAUf,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,iBAAiB;QACjB,wBAAwB;QACxB,YAAY;QACZ,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,eAAe,aAIf,qBAAqB,CAAA,EAAA,CAAA,CAAA;AAEZ,kBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,YAf3B,YAAY;QACZ,gBAAgB;QAChB,WAAW;QACX,iBAAiB;QACjB,wBAAwB;QACxB,YAAY;QACZ,kBAAkB;QAClB,cAAc;QACd,cAAc;QACd,eAAe,CAAA,EAAA,CAAA,CAAA;2FAMN,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAtB9B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;AACZ,wBAAA,GAAG,UAAU;AACb,wBAAA,GAAG,UAAU;AACb,wBAAA,GAAG,KAAK;AACL,qBAAA;AACL,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,gBAAgB;wBAChB,WAAW;wBACX,iBAAiB;wBACjB,wBAAwB;wBACxB,YAAY;wBACZ,kBAAkB;wBAClB,cAAc;wBACd,cAAc;wBACd,eAAe;AAChB,qBAAA;AACD,oBAAA,SAAS,EAAE,EAAE;AACb,oBAAA,OAAO,EAAE;wBACP,qBAAqB;AAAC,qBAAA;iBACzB,CAAA;;;MCvIY,cAAc,CAAA;AAmC1B,CAAA;AAAA;;MCrCY,SAAS,CAAA;AAAtB,IAAA,WAAA,GAAA;AAEI,QAAA,IAAmB,CAAA,mBAAA,GAAG,EAAE,CAAC;AAEzB,QAAA,IAAY,CAAA,YAAA,GAAG,EAAE,CAAC;AAGlB,QAAA,IAAS,CAAA,SAAA,GAAG,EAAE,CAAC;AACf,QAAA,IAAY,CAAA,YAAA,GAAW,qBAAqB,CAAC;KAChD;AAAA;;MCNY,mBAAmB,CAAA;AAG/B;;ACND;;AAEG;;ACFH;;AAEG;;;;"}
1
+ {"version":3,"file":"wizishop-img-manager.mjs","sources":["../../../../projects/wz-img-manager/src/lib/services/img-selection.service.ts","../../../../projects/wz-img-manager/src/lib/services/user-settings.service.ts","../../../../projects/wz-img-manager/src/lib/services/img-event.service.ts","../../../../projects/wz-img-manager/src/lib/services/alert.service.ts","../../../../projects/wz-img-manager/src/lib/services/api.service.ts","../../../../projects/wz-img-manager/src/lib/services/upload.service.ts","../../../../projects/wz-img-manager/src/lib/services/canva.service.ts","../../../../projects/wz-img-manager/src/lib/services/dom.service.ts","../../../../projects/wz-img-manager/src/lib/animations/easeInOut/ease-in-out.animation.ts","../../../../projects/wz-img-manager/src/lib/components/loader/loader.component.ts","../../../../projects/wz-img-manager/src/lib/components/loader/loader.component.html","../../../../projects/wz-img-manager/src/lib/directives/drag-drop.directive.ts","../../../../projects/wz-img-manager/src/lib/components/img-upload/img-upload.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-upload/img-upload.component.html","../../../../projects/wz-img-manager/src/lib/animations/listAnnimation/list.animation.ts","../../../../projects/wz-img-manager/src/lib/services/pexels.service.ts","../../../../projects/wz-img-manager/src/lib/directives/abstract-debounce/abstract-debounce.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/abstract-debounce/debounce-keyup.directive.ts","../../../../projects/wz-img-manager/src/lib/components/shared/input-search/input-search.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/input-search/input-search.component.html","../../../../projects/wz-img-manager/src/lib/components/shared/alert/alert.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/alert/alert.component.html","../../../../projects/wz-img-manager/src/lib/directives/loading.directive.ts","../../../../projects/wz-img-manager/src/lib/components/pexels-lib/pexels-lib.component.ts","../../../../projects/wz-img-manager/src/lib/components/pexels-lib/pexels-lib.component.html","../../../../projects/wz-img-manager/src/lib/services/rename-picture.service.ts","../../../../projects/wz-img-manager/src/lib/services/image-not-found.service.ts","../../../../projects/wz-img-manager/src/lib/services/img-manager.service.ts","../../../../projects/wz-img-manager/src/lib/services/config/img-cdn.service.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/images-actions-handler.ts","../../../../projects/wz-img-manager/src/lib/pipes/images/img-src.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/img-card/img-card.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/img-card/img-card.component.html","../../../../projects/wz-img-manager/src/lib/components/upload-list/upload-list.component.ts","../../../../projects/wz-img-manager/src/lib/components/upload-list/upload-list.component.html","../../../../projects/wz-img-manager/src/lib/directives/copy-to-clipboard.directive.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/info-section/info-section.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/info-section/info-section.component.html","../../../../projects/wz-img-manager/src/lib/animations/insertRemove/insert-remove.animation.ts","../../../../projects/wz-img-manager/src/lib/components/shared/dropdown/dropdown.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/dropdown/dropdown.component.html","../../../../projects/wz-img-manager/src/lib/components/img-editor/cropper/cropper.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/cropper/cropper.component.html","../../../../projects/wz-img-manager/src/lib/components/img-editor/img-editor.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-editor/img-editor.component.html","../../../../projects/wz-img-manager/src/lib/directives/auto-hide.directive.ts","../../../../projects/wz-img-manager/src/lib/components/canva-btn/canva-btn.component.ts","../../../../projects/wz-img-manager/src/lib/components/canva-btn/canva-btn.component.html","../../../../projects/wz-img-manager/src/lib/pipes/pagination/total-pages/is-last-page.pipe.ts","../../../../projects/wz-img-manager/src/lib/pipes/pagination/array-total-pages/array-pages.pipe.ts","../../../../projects/wz-img-manager/src/lib/pipes/pagination/large-number-of-page/large-number-of-page.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/page-selector/page-selector.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/page-selector/page-selector.component.html","../../../../projects/wz-img-manager/src/lib/pipes/pagination/text/custom-text.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/pagination.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/pagination/pagination.component.html","../../../../projects/wz-img-manager/src/lib/pipes/number-to-array.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/mosaic-view.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/mosaic-view/mosaic-view.component.html","../../../../projects/wz-img-manager/src/lib/services/table/filters-table.service.ts","../../../../projects/wz-img-manager/src/lib/components/shared/checkbox/checkbox.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/checkbox/checkbox.component.html","../../../../projects/wz-img-manager/src/lib/components/shared/table/table.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/table/table.component.html","../../../../projects/wz-img-manager/src/lib/directives/table/column.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/table/checkBoxRow.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/table/columnHeader.directive.ts","../../../../projects/wz-img-manager/src/lib/directives/table/raw.directive.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/table-view/table-view.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/table-view/table-view.component.html","../../../../projects/wz-img-manager/src/lib/components/images-view/images-view.component.ts","../../../../projects/wz-img-manager/src/lib/components/images-view/images-view.component.html","../../../../projects/wz-img-manager/src/lib/directives/zindex-toggle.directive.ts","../../../../projects/wz-img-manager/src/lib/pipes/select/select-filters.pipe.ts","../../../../projects/wz-img-manager/src/lib/components/shared/select/select.component.ts","../../../../projects/wz-img-manager/src/lib/components/shared/select/select.component.html","../../../../projects/wz-img-manager/src/lib/components/img-tabs/img-tabs.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-tabs/img-tabs.component.html","../../../../projects/wz-img-manager/src/lib/components/img-selection/img-selection.component.ts","../../../../projects/wz-img-manager/src/lib/components/img-selection/img-selection.component.html","../../../../projects/wz-img-manager/src/lib/wz-img-manager.component.ts","../../../../projects/wz-img-manager/src/lib/wz-img-manager.component.html","../../../../projects/wz-img-manager/src/lib/services/snackbar.service.ts","../../../../projects/wz-img-manager/src/lib/wz-img-manager.module.ts","../../../../projects/wz-img-manager/src/lib/dto/canva.dto.ts","../../../../projects/wz-img-manager/src/lib/dto/config/apis/api.dto.ts","../../../../projects/wz-img-manager/src/lib/dto/config/external/external-config.dto.ts","../../../../projects/wz-img-manager/src/public-api.ts","../../../../projects/wz-img-manager/src/wizishop-img-manager.ts"],"sourcesContent":["import { Injectable, Optional, SkipSelf } from '@angular/core';\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\nimport { BehaviorSubject } from 'rxjs';\nimport { CdkDragDrop } from '@angular/cdk/drag-drop';\n\n@Injectable()\nexport class ImgSelectionService {\n\n multipleImgMode: boolean = false;\n imgSelection$: BehaviorSubject<ImgPictureDTO[]> = new BehaviorSubject<ImgPictureDTO[]>([]);\n imgSelectedListLoading$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);\n\n constructor() {}\n\n getImgSelection() {\n return this.imgSelection$.getValue();\n }\n\n // Use in img manager webelement, when the product img selection is retrieved\n setImgSelection(imgSelectedList: ImgPictureDTO[]) {\n this.imgSelection$.next(imgSelectedList || []);\n }\n\n addImgSelected(picture : ImgPictureDTO) {\n if (this.multipleImgMode) {\n this.imgSelection$.next([...this.imgSelection$.getValue(), picture]);\n } else {\n this.imgSelection$.next([picture]);\n }\n }\n\n removeImgSelectedByIndex(index: number) {\n const imgSelectedList = this.imgSelection$.getValue();\n imgSelectedList.splice(index, 1);\n this.imgSelection$.next(imgSelectedList);\n\n }\n\n removeImgSelectedById(id_file: string) {\n if (!this.multipleImgMode) {\n this.imgSelection$.next([]);\n return;\n }\n this.imgSelection$.next(this.imgSelection$.getValue().filter(img => img.id_file !== id_file));\n }\n\n removeImgSelectionByIds(id_file_list: string[]) {\n if (!this.multipleImgMode) {\n this.imgSelection$.next([]);\n return;\n }\n this.imgSelection$.next(this.imgSelection$.getValue().filter(img => id_file_list.includes(img.id_file)));\n }\n\n removeAllImgSelected() { // TODO test it\n this.imgSelection$.next([]);\n }\n\n setMultipleImgMode(activated: boolean) {\n this.multipleImgMode = activated;\n }\n\n initImgSelectedList(imgSelectedList: ImgPictureDTO[]) {\n // Retrieve the imgSelectedList from parameter\n if (imgSelectedList) {\n this.imgSelection$.next(imgSelectedList);\n return;\n }\n this.imgSelection$.next([]);\n }\n\n /**\n * Use angular cdk function\n * Called by img selection component\n * @param event\n */\n moveImgOrder(event: CdkDragDrop<string[]>) {\n const fromIndex = event.previousIndex;\n const toIndex = event.currentIndex;\n const imgSelectedList = this.imgSelection$.getValue();\n imgSelectedList.splice(toIndex, 0, imgSelectedList.splice(fromIndex, 1)[0]);\n this.imgSelection$.next(imgSelectedList);\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class UserSettingsService {\n\n private userdisplayPreference = 'WzImgManagerListDisplayed';\n\n /**\n * true : display list\n * false : display mosaic\n * @param value\n */\n setUserDisplayPreference(value: boolean) {\n localStorage.setItem(this.userdisplayPreference, '' + value);\n }\n\n getUserDisplayPreference(): boolean {\n const value = localStorage.getItem(this.userdisplayPreference);\n return value == 'true';\n }\n\n}\n","import {Injectable} from '@angular/core';\nimport { BehaviorSubject, Subject } from \"rxjs\";\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\n\n@Injectable()\nexport class ImgEventService {\n\n imgRemoved$ = new BehaviorSubject<string>(undefined);\n private imgToEditEvent: Subject<ImgPictureDTO> = new Subject<ImgPictureDTO>();\n private imgAdded: Subject<string> = new Subject<string>();\n private listDisplayedChange: Subject<boolean> = new Subject<boolean>();\n\n\n emitImgToEdit(imgToEdit: ImgPictureDTO){\n this.imgToEditEvent.next(imgToEdit);\n }\n\n getImgToEditEventListener(){\n return this.imgToEditEvent.asObservable();\n }\n\n emitImgAdded(id_file: string){\n this.imgAdded.next(id_file);\n }\n\n getImgAddedEventListner(){\n return this.imgAdded.asObservable();\n }\n\n emitlistDisplayedChange(value: boolean){\n this.listDisplayedChange.next(value);\n }\n\n getlistDisplayedChange(){\n return this.listDisplayedChange.asObservable();\n }\n}\n","import { Injectable } from '@angular/core';\nimport { NwbAlertConfig, NwbAlertComponent } from '@wizishop/ng-wizi-bulma';\nimport { TranslateService } from '@ngx-translate/core';\nimport { NwbAlertService } from '@wizishop/ng-wizi-bulma';\n\n@Injectable()\nexport class AlertService {\n\n actionMsg = 'ImgManager.alert.action';\n\n alertConfig: NwbAlertConfig = {\n message: '',\n duration: 5000\n }\n\n private alertRefComponent: NwbAlertComponent;\n\n constructor(\n private nwbAlertService: NwbAlertService,\n private translateService: TranslateService\n ) {}\n\n openAlert(msgKey: string) {\n this.closePreviousAlert();\n this.translateService.get(msgKey).subscribe(trans => {\n this.alertConfig.message = trans;\n this.setAlertColor(msgKey);\n\n this.alertRefComponent = this.nwbAlertService.open(this.alertConfig);\n this.alertRefComponent.afterClosed().subscribe();\n });\n }\n\n openAlertWithBackendResponse(msgKey: string, msgBackend: string) {\n this.translateService.get(msgKey).subscribe(trans => {\n this.alertConfig.message = trans;\n this.alertConfig.message += '<br/>' + JSON.parse(msgBackend).message;\n\n this.closePreviousAlert();\n this.alertRefComponent = this.nwbAlertService.open(this.alertConfig);\n this.alertRefComponent.afterClosed().subscribe();\n });\n }\n\n private closePreviousAlert() {\n if (this.alertRefComponent) {\n this.alertRefComponent.dismiss();\n }\n }\n\n private setAlertColor(msgKey: string) {\n const isErrorMsg: boolean = /error/i.test(msgKey);\n this.alertConfig.color = isErrorMsg ? 'is-danger' : 'is-success';\n }\n}\n","import { Injectable } from '@angular/core';\nimport { ImgPictureDTO, ImgPicturesDTO } from '../dto/img-manager.dto';\nimport { Observable, Subject } from 'rxjs';\nimport { ImgCDNConfigDTO } from '../dto/export-dtos.api';\nimport { HttpParams } from '@angular/common/http';\n\n@Injectable()\nexport abstract class ApiService {\n\n abstract CONFIG: {\n image_manager_route: string;\n canva_token: string;\n canva_url: string;\n pexels_token: string\n pexels_route: string;\n assets_route: string;\n }\n\n abstract IMG_SIZE : ImgCDNConfigDTO;\n\n abstract getShopCategory(): string;\n\n abstract getShopImgList(params?: HttpParams): Observable<ImgPicturesDTO>;\n\n abstract getShopTotalImgList(params?: HttpParams): Observable<number>;\n\n abstract getShopImg(idFile: string): Observable<ImgPictureDTO>;\n\n abstract uploadFile(formData: FormData): Observable<ImgPictureDTO>;\n\n abstract uploadFileByUrl(url: string, fileName?: string): Observable<ImgPictureDTO>;\n\n abstract replaceImg(imageBase64: string, id_file: string): Observable<ImgPictureDTO>;\n\n abstract changeImgName(fileName: string, id_file: string): Observable<ImgPictureDTO>;\n\n abstract removeImg(id_file: string): Observable<ImgPictureDTO>;\n\n abstract removeMultipleImg(id_array: string[]): Observable<ImgPictureDTO[]>;\n\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiService } from './api.service';\nimport { Subject, tap } from 'rxjs';\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\n\n@Injectable()\nexport class UploadService {\n\n imageUploaded$ = new Subject<ImgPictureDTO>();\n\n apiService = inject(ApiService);\n\n uploadFile(formData: FormData) {\n return this.apiService.uploadFile(formData).pipe(\n tap((img: ImgPictureDTO) => this.imageUploaded$.next(img))\n );\n }\n\n uploadFileByUrl(url: string, fileName?: string) {\n return this.apiService.uploadFileByUrl(url, fileName).pipe(\n tap((img: ImgPictureDTO) => this.imageUploaded$.next(img))\n );\n }\n\n}","import { Injectable } from '@angular/core';\nimport { Observable, Subscriber, BehaviorSubject } from 'rxjs';\nimport { CanvaButtonApi } from '../dto/canva.dto';\nimport { WiziBlockMediaDto } from '../dto/wizi-block-media.dto';\nimport { AlertService } from './alert.service';\nimport { ImgEventService } from './img-event.service';\nimport { take } from 'rxjs/operators';\nimport { CanvaCreateDesign } from '../dto/canva-create-design.dto';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UploadService } from './upload.service';\nimport { ApiService } from './api.service';\n\ndeclare let Canva : {\n DesignButton : {\n initialize: (opts: { apiKey: string }) => Promise<CanvaButtonApi>;\n }\n};\n\n@Injectable()\nexport class CanvaService {\n\n canvaApi // Object use to manage the canva api\n get canvaApiURL() {\n return this.apiService.CONFIG.canva_url;\n };\n get canvaApiKey() {\n return this.apiService.CONFIG.canva_token;\n }\n\n imgLoading = false;\n uploadingImg = 'ImgManager.CanvaBtn.uploadingImg';\n successUploadPhoto = 'ImgManager.CanvaBtn.successImport';\n errorUploadCanvaImg = 'ImgManager.CanvaBtn.errorUploadCanvaImg';\n errorRenameCanvaImg = 'ImgManager.CanvaBtn.errorRenameCanvaImg';\n\n forceToOpenCanva: boolean = false;\n\n private bindExpectedImgSizeEvent: BehaviorSubject<WiziBlockMediaDto> = new BehaviorSubject<WiziBlockMediaDto>(null);\n private bindExpectedSizeDone = this.bindExpectedImgSizeEvent.asObservable();\n\n constructor(\n private wzImgEventService: ImgEventService,\n private alertService: AlertService,\n private translateService: TranslateService,\n private uploadService: UploadService,\n private apiService: ApiService\n ) {}\n\n getCanvaLogo() {\n return this.apiService.CONFIG.assets_route + \"canva/icon_canva.svg\";\n }\n\n bindEventExepectedImgSizeChange() {\n return this.bindExpectedSizeDone;\n }\n\n expectedImgSizesChange (mediaDTO: WiziBlockMediaDto){\n this.bindExpectedImgSizeEvent.next(mediaDTO);\n if (this.forceToOpenCanva) {\n this.openCanva(parseInt(mediaDTO.image_width), parseInt(mediaDTO.image_height));\n }\n }\n\n getCanvaApi():Observable<CanvaButtonApi> {\n return new Observable(observer => {\n this.loadCanva().subscribe({\n complete: () => {\n if(this.canvaApi && Canva.DesignButton) {\n observer.next(this.canvaApi);\n observer.complete();\n } else {\n this.initializeCanva(observer);\n }\n }\n })\n });\n }\n\n private initializeCanva(observer: Subscriber<CanvaButtonApi>) {\n if (Canva.DesignButton) {\n Canva.DesignButton.initialize({\n apiKey: this.canvaApiKey\n\n }).then((canvaApi) => {\n this.canvaApi = canvaApi;\n observer.next(this.canvaApi);\n observer.complete();\n });\n }\n }\n\n private loadCanva():Observable<null> {\n return new Observable(observer => {\n if(this.canvaApi) {\n observer.complete();\n }else{\n this.loadCanvaScript(observer);\n }\n });\n }\n\n private loadCanvaScript(observer: Subscriber<null>) {\n\n const node = document.createElement('script');\n node.src = this.canvaApiURL;\n node.type = 'text/javascript';\n node.async = false;\n node.charset = 'utf-8';\n node.onload = () => {\n observer.complete();\n }\n document.getElementsByTagName('head')[0].appendChild(node);\n }\n\n openCanva(width: number, height: number) {\n if (this.imgLoading) {\n return;\n }\n this.getCanvaApi().pipe(take(1)).subscribe((api: CanvaButtonApi) => {\n this.canvaApi = api;\n this.addOverflowBody();\n this.createDesign(width, height);\n });\n }\n\n private addOverflowBody() {\n document.body.classList.add('ovh-canva');\n }\n\n private removeOverflowBody() {\n document.body.classList.remove('ovh-canva');\n }\n\n private createDesign(width: number, height: number) {\n const createDesign: CanvaCreateDesign = {\n type: 'EtsyShopIcon',\n dimensions : {\n units: 'px',\n width: width ? width : undefined,\n height: height ? height : undefined,\n },\n publishLabel: this.translateService.instant('ImgManager.CanvaBtn.publish'),\n };\n this.canvaApi.createDesign({\n design: createDesign,\n onDesignPublish: ({ exportUrl, designTitle }) => this.designPublished(exportUrl, designTitle),\n onDesignClose: () => {\n this.removeOverflowBody();\n }\n\n });\n }\n\n private designPublished(exportUrl: string, designTitle: string) {\n this.alertService.openAlert(this.uploadingImg);\n this.imgLoading = true;\n\n\n this.uploadService.uploadFileByUrl(exportUrl, designTitle).pipe(take(1)).subscribe({\n next: (img) => {\n this.imgLoading = false;\n this.removeOverflowBody();\n\n this.wzImgEventService.emitImgAdded(img.id_file);\n this.alertService.openAlert(this.successUploadPhoto);\n },\n error: error => {\n this.imgLoading = false;\n this.removeOverflowBody();\n\n if (error.error.code === 406 && error.error.message) {\n this.alertService.openAlertWithBackendResponse(this.errorUploadCanvaImg, error.error.message)\n } else {\n this.alertService.openAlert(this.errorUploadCanvaImg);\n }\n }\n });\n }\n}\n","import { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class DomService {\n\n private documentEventSource = new Subject();\n private documentEventDone = this.documentEventSource.asObservable();\n\n private documentScrollSource = new Subject();\n private documentScrollDone = this.documentScrollSource.asObservable();\n\n documentEvent() {\n return this.documentEventDone;\n }\n\n setDocumentEventListener() {\n document.body.addEventListener('click', event => {\n this.documentEventSource.next(event.target);\n });\n }\n\n documentScroll() {\n return this.documentScrollDone;\n }\n\n setScrollEventListener() {\n window.onscroll = () => {\n this.documentScrollSource.next(window);\n };\n }\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\n\nexport const easeInOut = // the fade-in/fade-out animation.\ntrigger('easeInOut', [\n\n // the \"in\" style determines the \"resting\" state of the element when it is visible.\n state('in', style({opacity: 1})),\n\n // fade in when created. this could also be written as transition('void => *')\n transition(':enter', [\n style({opacity: 0}),\n animate('0.5s ease-in-out' )\n ]),\n]);\n","import { Component, Input, ViewEncapsulation } from '@angular/core';\n\n@Component({\n selector: 'wz-loader',\n templateUrl: './loader.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class LoaderComponent {\n @Input()\n text: string;\n @Input()\n small = false;\n @Input()\n position: string;\n}\n","<div class=\"wz-loader\" [ngClass]=\"{'is-small': small}\" [ngStyle]=\"{'position': position}\">\n <div class='loader loader1'>\n <div>\n <div>\n <div>\n <div>\n <div>\n <div></div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <p class=\"is-textcentered\" *ngIf=\"text\" [innerHTML]=\"text\"></p>\n</div>\n","import { Directive, Output, EventEmitter, HostBinding, HostListener } from '@angular/core';\n\n@Directive({\n selector: '[appDragDrop]'\n})\nexport class DragDropDirective {\n\n @Output() onFileDropped = new EventEmitter<Event>();\n\n @HostBinding('style.background-color') background = '#fff'\n @HostBinding('style.opacity') opacity = '1'\n\n @HostListener('dragover', ['$event']) onDragOver(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#f5f5f5';\n this.opacity = '0.8';\n }\n\n @HostListener('dragleave', ['$event']) public onDragLeave(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#fff';\n this.opacity = '1';\n }\n\n @HostListener('drop', ['$event']) public ondrop(evt: any) {\n evt.preventDefault();\n evt.stopPropagation();\n this.background = '#f5f5f5'\n this.opacity = '1'\n const files = evt.dataTransfer.files;\n if (files.length > 0) {\n this.onFileDropped.emit(files);\n }\n }\n}\n","import {Component, OnInit, Input, Output, EventEmitter, ViewChild, ElementRef} from '@angular/core';\nimport { Observable, forkJoin } from 'rxjs';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\nimport { AlertService } from '../../services/alert.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { UploadService } from '../../services/upload.service';\nimport { ApiService } from '../../services/api.service';\n\n@Component({\n selector: 'img-upload',\n templateUrl: './img-upload.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class ImgUploadComponent implements OnInit {\n\n files: any = [];\n isLoading: boolean = false;\n assetsIcon: string;\n @Input() stateDisplayed: stateDisplayed;\n @Output() imgUploaded = new EventEmitter();\n\n @ViewChild('dragAndDropBox') dragAndDropBox: ElementRef;\n\n loadingText = 'ImgManager.ImgUpload.loading';\n errorUploadingImg = 'ImgManager.ImgUpload.errorUploadingImg';\n errorNotImg = 'ImgManager.ImgUpload.errorNotImg';\n\n MAX_IMAGE_SIZE = 10000000; // In bytes\n\n constructor(\n private alertService: AlertService,\n private apiService: ApiService,\n private translateService: TranslateService,\n private uploadService: UploadService\n ) {}\n\n ngOnInit(): void {\n this.assetsIcon = this.getAssets();\n }\n\n filesChangeByClick(event: any) {\n this.uploadFile(event.target.files);\n }\n\n getAssets() {\n return this.apiService.CONFIG.assets_route + \"img/icon_picture.svg\";\n }\n\n filesChangeByDragAndDrop(filesList: FileList) {\n this.removeDragAndDropStyle();\n this.uploadFile(Array.from(filesList));\n }\n\n uploadFile(files: File[]) {\n if (files && !files.length) {\n return;\n }\n\n this.isLoading =true;\n const imgToUploadList: Observable<any>[] = [];\n for (const file of files) {\n if(!this.isFileImage(file.type)) {\n this.alertService.openAlert(this.errorNotImg);\n this.isLoading = false;\n continue;\n }\n\n if (!this.isSizeValid(file.size)) {\n this.alertService.openAlert(\n this.translateService.instant('ImgManager.ImgUpload.ErrorImgSize', {\n fileName: file.name,\n fileSize: this.getImageSizeInKo(file.size),\n maxFileSize: this.getImageSizeInKo(this.MAX_IMAGE_SIZE)\n }));\n this.isLoading = false;\n continue;\n }\n\n const formData = new FormData();\n formData.append('image', file, file.name);\n imgToUploadList.push(this.uploadService.uploadFile(formData));\n }\n\n forkJoin(imgToUploadList).subscribe({\n next: (img: ImgPictureDTO[]) => {\n this.onImgUpload(img),\n this.isLoading =false;\n },\n error: error => {\n if (error?.error?.message && error.statusText !== 'Bad Request') {\n this.alertService.openAlertWithBackendResponse(this.errorUploadingImg, error.error.message);\n } else {\n this.alertService.openAlert(this.errorUploadingImg);\n }\n this.isLoading =false;\n }\n })\n }\n\n /**\n * Send the img uploaded to the tabs components,\n * Then the tabs components add the img to upload list by calling the method onImgUploaded of the upload-list component\n * @param img\n */\n onImgUpload(img: ImgPictureDTO[]) {\n this.imgUploaded.emit(img);\n }\n\n isFileImage(fileType: string) {\n return fileType.split('/')[0] === 'image';\n }\n\n isSizeValid(imageBytesSize: number): boolean {\n return imageBytesSize < this.MAX_IMAGE_SIZE;\n }\n\n getImageSizeInKo(size: number) {\n return Math.round(size / 1024);\n }\n\n /**\n * Remove the style of the drag and drop box\n * After an img is droped, the box is still grey\n */\n removeDragAndDropStyle() {\n this.dragAndDropBox.nativeElement.style = '';\n }\n}\n","<div\n class=\"img-upload has-text-centered\"\n [ngClass]=\"{'img-upload--small': stateDisplayed === 'small'}\"\n (click)=\"fileInput.click()\"\n appDragDrop\n (onFileDropped)=\"filesChangeByDragAndDrop($any($event))\"\n #dragAndDropBox\n [@easeInOut]=\"'in'\"\n>\n <input hidden type=\"file\" #fileInput (change)=\"filesChangeByClick($event)\" accept=\"image/*\" multiple >\n <div class=\"img-upload__container\" [ngClass]=\"{'img-upload__container--small': stateDisplayed === 'small'}\">\n\n <div class=\"img-upload__container__wrapper\">\n\n <div class=\"img-upload__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\" [position]=\"'relative'\"></wz-loader>\n </div>\n\n <ng-container *ngIf=\"!isLoading\">\n <div class=\"blueColor img-upload__container__dropImgIconDiv\">\n <img *ngIf=\"assetsIcon\" [src]=\"assetsIcon\" alt=\"icon picture\" />\n <p>{{ 'ImgManager.ImgUpload.dropImg' | translate }}</p>\n </div>\n\n <p class=\"img-upload__container__or\">{{ 'ImgManager.ImgUpload.or' | translate }}</p>\n\n <div class=\"img-upload__container__text\">\n <i class=\"fal fa-file-upload\"></i>{{ 'ImgManager.ImgUpload.selectImg' | translate }}\n </div>\n </ng-container>\n\n </div>\n </div>\n</div>\n","import { stagger } from '@angular/animations';\nimport { query } from '@angular/animations';\nimport { animate, style, transition, trigger } from '@angular/animations';\n\nexport const listAnnimation = // the fade-in/fade-out animation.\ntrigger('listAnimation', [\n transition(':enter, * => 0, * => -1', []),\n transition(':increment', [\n query(':enter', [\n style({opacity: 0, transform: 'translateY(100px)'}),\n stagger(50, [\n animate('500ms cubic-bezier(0.35, 0, 0.25, 1)', style({ opacity: 1, transform: 'none' })),\n ]),\n ], { optional: true })\n ]),\n]);\n","import {Injectable} from '@angular/core';\nimport {HttpClient, HttpHeaders} from '@angular/common/http';\nimport { map} from \"rxjs/operators\";\nimport {Observable} from \"rxjs\";\nimport {WzImgLibDto} from \"../dto/pexels-img.dto\";\nimport { TranslateService } from '@ngx-translate/core';\nimport { ApiService } from './api.service';\n\n@Injectable()\nexport class PexelsService {\n get apiBaseUrl() {\n return this.apiService.CONFIG.pexels_route;\n };\n get apiKey() {\n return this.apiService.CONFIG.pexels_token;\n }\n lang: string;\n languages = {'fr': 'fr-FR', 'en': 'en-US', 'it': 'it-IT', 'es': 'es-ES'};\n\n constructor(\n private http: HttpClient,\n private apiService: ApiService,\n private translateService: TranslateService\n ) {\n this.setLang(this.translateService.currentLang);\n this.translateService.onLangChange.subscribe(langData => {\n this.setLang(langData.lang);\n })\n }\n\n setLang(lang: string) {\n this.lang = this.languages[lang] ? this.languages[lang] : 'fr-FR';\n }\n\n searchOnPexels(toSearch: string, perPage: number, page: number): Observable<WzImgLibDto> {\n const httpOptions = {\n headers: new HttpHeaders({\n Authorization: this.apiKey\n })\n };\n\n let request;\n\n // If search value is not empty or blank\n if (toSearch && !/^\\s*$/.test(toSearch)) {\n request = `/search?query=${toSearch}&per_page=${perPage}&page=${page}&locale=${this.lang}`;\n\n } else { // Search by category or display Pexels selection\n const shopCategory = this.apiService.getShopCategory();\n\n // Search by shop category\n if (shopCategory && shopCategory !== 'other' && shopCategory !== 'btob' && shopCategory !== 'default') {\n request = `/search?query=${shopCategory}&per_page=${perPage}&page=${page}&locale=en-US`;\n } else { // Display Pexels selection\n request = `/curated?per_page=${perPage}&page=${page}`;\n }\n }\n\n return this.http.get(this.apiBaseUrl + request, httpOptions).pipe(\n map((data: WzImgLibDto) => {\n return data;\n })\n );\n }\n}\n","import { Directive, OnDestroy, Input, Output, EventEmitter } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { takeUntil, debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\n\n@Directive({\n selector: 'AbstractDebounceDirective'\n})\nexport class AbstractDebounceDirective implements OnDestroy {\n @Input()\n public debounceTime: number;\n\n @Output()\n public onEventChange: EventEmitter<any>;\n\n protected emitEvent$: Subject<any>;\n protected subscription$: Subject<void>;\n\n constructor() {\n this.debounceTime = 500;\n this.onEventChange = new EventEmitter<any>();\n this.emitEvent$ = new Subject<any>();\n this.subscription$ = new Subject<void>();\n }\n\n ngOnInit(): void {\n this.emitEvent$\n .pipe(\n takeUntil(this.subscription$),\n debounceTime(this.debounceTime),\n distinctUntilChanged(),\n tap(value => this.emitChange(value))\n )\n .subscribe();\n }\n\n public emitChange(value: any): void {\n this.onEventChange.emit(value);\n }\n\n ngOnDestroy(): void {\n this.subscription$.next();\n this.subscription$.complete();\n }\n}\n","import { Directive, HostListener } from '@angular/core';\nimport { AbstractDebounceDirective } from './abstract-debounce.directive';\n@Directive({\n selector: 'input[debounceKeyUp]'\n})\nexport class DebounceKeyupDirective extends AbstractDebounceDirective {\n constructor() {\n super();\n }\n\n @HostListener('keyup', ['$event'])\n public onKeyUp(event: any): void {\n event.preventDefault();\n this.emitEvent$.next(event);\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'wz-input-search',\n templateUrl: './input-search.component.html',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: InputSearchComponent, multi: true }]\n})\nexport class InputSearchComponent implements ControlValueAccessor {\n @Input()\n placeholder = '';\n @Input()\n smallPadding = false;\n @Input()\n id;\n private innerValue: any = '';\n @Output() changeDebounced = new EventEmitter<any>(); // debounced\n\n private onTouchedCallback: () => void = () => {};\n private onChangeCallback: (_: any) => void = () => {};\n\n get value(): any {\n return this.innerValue;\n }\n\n set value(v: any) {\n if (v !== this.innerValue) {\n this.innerValue = v;\n this.onChangeCallback(v);\n }\n }\n\n writeValue(value: any) {\n if (value !== this.innerValue) {\n this.innerValue = value;\n }\n }\n\n registerOnChange(fn: any) {\n this.onChangeCallback = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouchedCallback = fn;\n }\n\n public handleDebouncedKeyUp(event): void {\n this.changeDebounced.emit(event.target.value);\n }\n}\n","<div class=\"input-search field\" [ngClass]=\"smallPadding ? 'small-padding' : ''\">\n <p class=\"control has-icons-left has-icons-right\">\n <input\n [placeholder]=\"placeholder\"\n value=\"\"\n class=\"input\"\n type=\"text\"\n [attr.id]=\"id\"\n [(ngModel)]=\"value\"\n debounceKeyUp\n [debounceTime]=\"1000\"\n (onEventChange)=\"handleDebouncedKeyUp($event)\"\n />\n <i class=\"icon fal fa-search\"></i>\n </p>\n</div>\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'wz-alert',\n styleUrls: ['./alert.component.scss'],\n templateUrl: './alert.component.html'\n})\nexport class AlertComponent implements OnInit {\n @Input() icon = true;\n @Input() warning = false;\n @Input() success = false;\n @Input() iconClass = 'fas fa-info';\n constructor() {}\n ngOnInit(): void {}\n}\n","<div class=\"wz-alert\" [ngClass]=\"{ success: success, warning: warning }\">\n <i *ngIf=\"icon\" [ngClass]=\"iconClass\"></i>\n <p><ng-content></ng-content></p>\n</div>\n","import { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n selector: '[btnLoadingAnim]'\n})\nexport class LoadingDirective {\n\n element: ElementRef;\n currentLoading = 0;\n interval = null;\n\n constructor(el: ElementRef) {\n this.element = el;\n this.launchLoading();\n }\n\n launchLoading() {\n if (this.interval !== null) {\n return;\n }\n this.currentLoading = 10;\n\n this.element.nativeElement.style.width = this.currentLoading + '%';\n\n this.interval = setInterval(() => {\n if (this.currentLoading < 80) {\n this.currentLoading += Math.floor(Math.random() * 15);\n this.element.nativeElement.style.width = this.currentLoading + '%';\n }\n if (this.currentLoading >= 80 && this.currentLoading < 95) {\n this.currentLoading += Math.floor(Math.random() * 2);\n this.element.nativeElement.style.width = this.currentLoading + '%';\n }\n }, 70);\n }\n\n ngOnDestroy() {\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = null;\n }\n }\n}\n","import {AfterViewInit, Component, ElementRef, ViewChild, Input, Output, EventEmitter} from '@angular/core';\nimport {PexelsService} from '../../services/pexels.service';\nimport {Subject, Subscription} from 'rxjs';\nimport {WzImgLibDto, PhotosColumns, WzImgLibPhotoDto} from '../../dto/pexels-img.dto';\nimport { TranslateService } from '@ngx-translate/core';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { listAnnimation } from '../../animations/listAnnimation/list.animation';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\nimport { AlertService } from '../../services/alert.service';\nimport { UploadService } from '../../services/upload.service';\n\n@Component({\n selector: 'pexels-lib',\n templateUrl: './pexels-lib.component.html',\n animations: [\n easeInOut,\n listAnnimation\n ]\n})\nexport class PexelLibComponent implements AfterViewInit {\n\n @Input()\n stateDisplayed: stateDisplayed;\n @Input()\n searchValue: string = '';\n /** Pass to true to hide search input */\n @Input()\n disableSearch: boolean = false;\n\n @Output()\n showImgUploaded = new EventEmitter();\n\n perPage = 30;\n searchUpdated = new Subject();\n oldSearchValue: string;\n nbResult = 0;\n wzImgLibDto: WzImgLibDto;\n currentPage = 1;\n isLoading = true;\n initComponent = true;\n photosColumns: PhotosColumns[] = [];\n nbColumns = 6;\n responsiveColumns = [1250, 1050, 750, 500];\n outerElement = null;\n\n uploadingImg = 'ImgManager.PexelLib.uploadingImg';\n untitled = 'ImgManager.PexelLib.untitled';\n successUploadPhoto = 'ImgManager.PexelLib.successImport';\n errorUploadPhoto = 'ImgManager.PexelLib.errorUploadPhoto';\n errorRetrievePhotos = 'ImgManager.PexelLib.errorRetrievePhotos';\n\n private subs: Subscription[] = [];\n\n @ViewChild('outerElement') set content(control: ElementRef) {\n this.outerElement = control;\n }\n\n constructor(\n private wzImgLibService: PexelsService,\n private alertService: AlertService,\n private translateService: TranslateService,\n private uploadService: UploadService\n ) { }\n\n ngAfterViewInit() {\n this.oldSearchValue = this.searchValue;\n this.isLoading = false;\n\n this.setNbColumnsToDisplayPhoto();\n this.setPhotosColumns();\n this.search();\n }\n\n setNbColumnsToDisplayPhoto(): void {\n const width = this.outerElement.nativeElement.offsetWidth;\n\n if (this.stateDisplayed !== 'window') {\n this.nbColumns = 8;\n }\n\n this.responsiveColumns.forEach(value => {\n if (width < value) {\n this.nbColumns--;\n }\n });\n }\n\n onSearchNameChanged() {\n this.onSearchChange();\n }\n\n onBottomReached() {\n this.scrollHandler();\n }\n\n onSearchChange() {\n this.search();\n }\n\n search() {\n if (this.isLoading) {\n return;\n }\n if (this.searchValue !== this.oldSearchValue) {\n this.resetSearch();\n }\n\n // All the picture are displayed\n if (this.nbResult && this.nbResult <= (this.currentPage - 1) * this.perPage) {\n return;\n }\n\n this.isLoading = true;\n const searchSub = this.wzImgLibService.searchOnPexels(this.searchValue, this.perPage, this.currentPage).subscribe({\n next: (data: WzImgLibDto) => {\n this.wzImgLibDto = data;\n this.nbResult = this.wzImgLibDto.total_results;\n\n if (this.nbResult) {\n data.photos.forEach(photo => {\n const bestColumnIndex = this.getBestColumn();\n const height = (photo.height / photo.width) * 1000;\n\n this.photosColumns[bestColumnIndex].height += height;\n this.photosColumns[bestColumnIndex].photos.push(photo);\n });\n }\n\n this.isLoading = false;\n this.initComponent = false;\n },\n error: error => {\n this.isLoading = false;\n this.initComponent = false;\n this.alertService.openAlert(this.errorRetrievePhotos);\n }\n });\n\n this.subs.push(searchSub);\n }\n\n scrollHandler() {\n if (this.isLoading) {\n return;\n }\n const bestColumnIndex = this.getBestColumn();\n const lastPic = this.photosColumns[bestColumnIndex].photos[this.photosColumns[bestColumnIndex].photos.length - 1];\n const lastPhoto = lastPic ? document.querySelector<HTMLImageElement>('img[src=\"' + lastPic.src.medium + '\"]') : null;\n\n if (lastPhoto) {\n if (!this.isLoading) {\n this.currentPage += 1;\n this.search();\n }\n }\n }\n\n setPhotosColumns() {\n for (let indexColumn=0; indexColumn < this.nbColumns ; indexColumn++) {\n const photosColumn: PhotosColumns = {\n height: 0,\n photos: []\n };\n this.photosColumns.push(photosColumn);\n }\n }\n\n getBestColumn(): number {\n const bestColumn = {\n index: 0,\n height: this.photosColumns[0].height\n };\n this.photosColumns.forEach((photosColumn, index) => {\n if (bestColumn.height > photosColumn.height) {\n bestColumn.index = index;\n bestColumn.height = photosColumn.height;\n }\n });\n return bestColumn.index;\n }\n\n resetSearch() {\n this.oldSearchValue = this.searchValue;\n this.photosColumns = [];\n this.currentPage = 1;\n this.setPhotosColumns();\n }\n\n uploadPhoto(photo: WzImgLibPhotoDto, url: string) {\n photo.uploading = true;\n\n const uploadSub = this.uploadService.uploadFileByUrl(url, photo.alt).subscribe(\n img => {\n photo.uploading = false;\n photo.uploaded = true;\n this.alertService.openAlert(this.successUploadPhoto);\n },\n error => {\n photo.uploading = false;\n if(error.error.code === 406 && error.error.message) {\n this.alertService.openAlertWithBackendResponse(this.errorUploadPhoto, error.error.message);\n } else {\n this.alertService.openAlert(this.errorUploadPhoto);\n }\n });\n\n // Display img uploading msg\n this.alertService.openAlert(this.uploadingImg);\n this.subs.push(uploadSub);\n }\n\n ngOnDestroy(): void {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","<div class=\"pexels-lib\" #outerElement [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n [reachedOffset]=\"300\"\n class=\"pexels-lib__scroll\"\n [ngClass]=\"{\n 'pexels-lib__scroll--smallDisplay': stateDisplayed === 'small',\n 'pexels-lib__scroll--noResult': !nbResult,\n 'pexels-lib__scroll--hide': (!nbResult && disableSearch)\n }\"\n (reachedBottom)=\"onBottomReached()\"\n >\n <div\n *ngIf=\"!disableSearch\"\n class=\"pexels-lib__search\"\n [ngClass]=\"{'pexels-lib__search--smallDisplay': stateDisplayed === 'small'}\"\n >\n <wz-input-search\n [(ngModel)]=\"searchValue\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n (changeDebounced)=\"onSearchNameChanged()\"\n [smallPadding]=\"stateDisplayed === 'small'\">\n </wz-input-search>\n </div>\n\n <div *ngIf=\"!initComponent\" class=\"pexels-lib__wrapper\">\n <p *ngIf=\"nbResult\" class=\"pexels-lib__wrapper__result-nb\">{{ 'ImgManager.PexelLib.nbImgFound' | translate }} : {{ nbResult }}</p>\n\n <div class=\"pexels-lib__wrapper__result\">\n\n <div *ngFor=\"let photosColumn of photosColumns; let indexCol = index;\" class=\"pexels-lib__wrapper__result__column\" [@listAnimation]=\"photosColumn.photos.length\">\n <div *ngFor=\"let photo of photosColumn.photos; let indexPhoto = index;\" class=\"pexels-lib__wrapper__result__column__element\">\n\n <img [alt]=\"photo.src.medium\" [src]=\"photo.src.medium\"\n class=\"pexels-lib__wrapper__result__column__element__img\"/>\n\n <div class=\"pexels-lib__wrapper__result__column__element__wrapper\">\n <span class=\"pexels-lib__wrapper__result__column__element__wrapper__infos\">\n {{ photo.width }} x {{ photo.height}}\n </span>\n\n <div class=\"dropdown is-up\" [ngClass]=\"{'is-hoverable': !photo.uploading}\">\n <div class=\"dropdown-trigger\">\n <button\n type=\"button\"\n class=\"button pexels-lib__wrapper__result__column__element__wrapper__button\"\n aria-haspopup=\"true\"\n aria-controls=\"dropdown-menu\">\n\n <div *ngIf=\"!photo.uploading\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <span>{{ 'ImgManager.PexelLib.import' | translate }}</span>\n <span class=\"icon is-small\">\n <i class=\"fas fa-angle-up\" aria-hidden=\"true\"></i>\n </span>\n <ng-container *ngIf=\"photo.uploaded\">\n &nbsp;<i class=\"fal fa-check\"></i>\n </ng-container>\n </div>\n\n <ng-container *ngIf=\"photo.uploading\">\n {{ 'ImgManager.PexelLib.importation' | translate }}\n <span btnLoadingAnim class=\"btnLoadingAnnimation\"></span>\n </ng-container>\n\n </button>\n </div>\n <div class=\"dropdown-menu pexels-lib__wrapper__result__column__element__wrapper__dropdown\" id=\"dropdown-menu\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-content__wrapper\">\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.portrait)\">\n <p>{{ 'ImgManager.PexelLib.portrait' | translate }}</p>\n <i class=\"fal fa-check iPortrait\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.landscape)\">\n <p>{{ 'ImgManager.PexelLib.landscape' | translate }}</p>\n <i class=\"fal fa-check iLandscape\"></i>\n </div>\n <div class=\"dropdown-item\" (click)=\"uploadPhoto(photo, photo.src.large2x)\">\n <p>{{ 'ImgManager.PexelLib.original' | translate }}</p>\n <i class=\"fal fa-check iOriginal\"></i>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n </div>\n </div>\n </div>\n </div>\n\n </ng-scrollbar>\n\n <ng-container *ngIf=\"isLoading\">\n <wz-loader></wz-loader>\n </ng-container>\n <div\n *ngIf=\"!isLoading && !nbResult\"\n class=\"pexels-lib__alert\"\n [@easeInOut]=\"'in'\">\n <wz-alert [warning]=\"true\">\n {{ 'ImgManager.PexelLib.noResult' | translate }}\n </wz-alert>\n </div>\n</div>\n","import { Injectable } from '@angular/core';\nimport { AlertService } from './alert.service';\nimport { ImgPictureDTO } from '../dto/img-manager.dto';\nimport { PictureNameUpdate } from '../dto/picture-name-update.dto';\nimport { ApiService } from './api.service';\n\n@Injectable()\nexport class RenamePictureService {\n\n private picturesList: ImgPictureDTO[] = [];\n private errorRenameImg = 'ImgManager.ImgList.errorRenameImg';\n private msgSavingImgName = 'ImgManager.ImgLib.savingImgName';\n private msgImgNameSaved = 'ImgManager.ImgLib.imgNameSaved';\n\n constructor(\n private apiService: ApiService,\n private alertService: AlertService,\n )\n {}\n\n setPicturesList(picturesList: ImgPictureDTO[]) {\n this.picturesList = picturesList;\n }\n\n renamePicture(pictureNameUpdate: PictureNameUpdate) {\n const picture: ImgPictureDTO = this.getPictureById(pictureNameUpdate.id);\n if (!picture) {\n this.alertService.openAlert(this.errorRenameImg);\n return;\n }\n this.alertService.openAlert(this.msgSavingImgName);\n this.apiService\n .changeImgName(picture.display_name, picture.id_file)\n .subscribe(\n (data: ImgPictureDTO) => {\n picture.display_name = data.display_name;\n this.alertService.openAlert(this.msgImgNameSaved);\n },\n () => {\n picture.display_name = pictureNameUpdate.previousName;\n this.alertService.openAlert(this.errorRenameImg);\n }\n );\n }\n\n changeImageName(name: string, idFile: string) {\n return this.apiService.changeImgName(name, idFile);\n }\n\n private getPictureById(id_file: string): ImgPictureDTO {\n if (!this.picturesList) {\n return;\n }\n\n for (const picture of this.picturesList) {\n if(picture.id_file === id_file) {\n return picture;\n }\n }\n\n return null;\n }\n\n}","import { Injectable } from '@angular/core';\n\n@Injectable()\nexport class ImageNotFoundService {\n\n imageNotFound($url: string) {\n console.log('Image not found: ', $url);\n }\n\n}","import { Injectable, Optional, SkipSelf, inject } from '@angular/core';\nimport { HttpParams } from '@angular/common/http';\nimport { delay, Observable, of, tap } from \"rxjs\";\nimport { ImgPictureDTO, ImgPicturesDTO, ParamsImgManagerDTO } from '../dto/img-manager.dto';\nimport { ImgManagerDisplayConfig } from '../dto/export-dtos.api';\nimport { ImgManagerConfig } from '../dto/config/img-manager';\nimport { ApiService } from './api.service';\n\n@Injectable()\nexport class ImgManagerService {\n\n params = new HttpParams().set(\"limit\",\"20\").set(\"page\",\"1\");\n\n // Display the img selection\n private pageFicheProductConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: true,\n showImgManagerModule: true,\n showSelection: true,\n displayBtn: true,\n pageficheProduct: true\n }\n\n private angularFicheProductConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: true,\n showImgManagerModule: true,\n showSelection: true,\n displayBtn: false,\n pageficheProduct: true\n }\n\n private wiziblockConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: false,\n showImgManagerModule: true,\n showSelection: false,\n displayBtn: false\n }\n\n private simpleWithButtonOpenerConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'closed',\n multipleImgMode: false,\n showImgManagerModule: true,\n showSelection: false,\n displayBtn: true\n }\n\n private fullWindowConfig: ImgManagerDisplayConfig = {\n stateDisplayed: 'window',\n multipleImgMode: false,\n showImgManagerModule: true,\n showSelection: false,\n displayBtn: false\n }\n\n apiService = inject(ApiService);\n shopImgList: ImgPicturesDTO;\n previousParams: ParamsImgManagerDTO;\n\n getShopImgList(params?: ParamsImgManagerDTO, forceToUpdate: boolean = false) {\n if (\n !forceToUpdate &&\n params && this.previousParams && this.previousParams.limit === params.limit\n && this.previousParams.page === params.page && this.shopImgList\n && this.previousParams.search === params.search\n ) {\n return of(this.shopImgList).pipe(delay(0));\n }\n\n const httpParams = params ? this.resetParams(params) : undefined;\n\n return this.apiService.getShopImgList(httpParams).pipe(\n tap((shopImgList) => {\n this.shopImgList = shopImgList;\n this.previousParams = params;\n })\n );;\n }\n\n getShopTotalImgList(params?: ParamsImgManagerDTO) {\n const httpParams = params ? this.resetParams(params) : undefined;\n return this.apiService.getShopTotalImgList(httpParams);\n }\n\n getShopImg(idFile: string) {\n return this.apiService.getShopImg(idFile);\n }\n\n resetParams(params: ParamsImgManagerDTO){\n this.params = new HttpParams();\n this.params = this.params.set('id_file:sort', 'desc');\n for (const param in params) {\n this.params = this.params.set(param, params[param]);\n }\n\n if (params.search) {\n this.params = this.params.set('display_name:contains', params.search);\n }\n return this.params;\n }\n\n replaceImg(imageBase64: string, id_file: string) {\n return this.apiService.replaceImg(imageBase64, id_file);\n }\n\n\n removeImg(id_file: string) {\n return this.apiService.removeImg(id_file);\n }\n\n removeMultipleImg(id_array: string[]){\n return this.apiService.removeMultipleImg(id_array);\n }\n\n getImgManagerDisplayConfig(displayName: ImgManagerConfig) {\n switch (displayName) {\n case \"window\":\n return this.fullWindowConfig;\n\n case \"wizi-block\":\n return this.wiziblockConfig;\n\n case \"fiche-product\":\n return this.pageFicheProductConfig;\n\n case \"simple-with-button\":\n return this.simpleWithButtonOpenerConfig;\n\n case 'angular-fiche-product':\n return this.angularFicheProductConfig\n\n default:\n return;\n }\n }\n\n getAllImgManagerDisplayConfig(): ImgManagerDisplayConfig[] {\n return [\n this.fullWindowConfig,\n this.wiziblockConfig,\n this.pageFicheProductConfig,\n this.simpleWithButtonOpenerConfig,\n ]\n }\n}","import { Injectable, inject } from '@angular/core';\nimport { ApiService } from '../api.service';\n\n@Injectable()\nexport class ImgCDNService {\n\n imgCDNConfig = inject(ApiService).IMG_SIZE;\n\n getUrlImg(size: '100'|'200'|'400'|'800'|'raw'|string) {\n const urlProperty = Object.keys(this.imgCDNConfig)\n .filter(url =>\n new RegExp(size, 'i').test(url)\n )[0];\n\n return this.imgCDNConfig[urlProperty];\n }\n\n getAllSize(): string[] {\n return Object.keys(this.imgCDNConfig)\n .map(elem =>\n elem.match(/_(\\w+)_/)[1]\n );\n }\n}\n","import { HttpClient } from \"@angular/common/http\";\nimport { Directive, Input, Output, inject } from \"@angular/core\";\nimport { EventEmitter } from '@angular/core';\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { Subscription } from \"rxjs\";\nimport { stateDisplayed } from \"../../dto/export-dtos.api\";\nimport { PictureNameUpdate } from \"../../dto/picture-name-update.dto\";\nimport { ImgPictureDTO } from \"../../dto/img-manager.dto\";\nimport { AlertService } from \"../../services/alert.service\";\nimport { ImgCDNService } from \"../../services/config/img-cdn.service\";\nimport { ImgEventService } from \"../../services/img-event.service\";\nimport { ImgManagerService } from \"../../services/img-manager.service\";\nimport { ImgSelectionService } from \"../../services/img-selection.service\";\nimport { TableFilters } from \"../../services/table/filters-table.service\";\nimport { ApiService } from \"../../services/api.service\";\nimport { ImageNotFoundService } from \"../../services/image-not-found.service\";\n\n@Directive()\nexport abstract class ImagesActionHandler {\n @Input()\n picturesList: ImgPictureDTO[] = [];\n @Output()\n picturesListChange: EventEmitter<void> = new EventEmitter();\n\n @Input()\n tableFilters: TableFilters = {\n sort: undefined,\n order: undefined,\n searchValue: '',\n totalItems: 0,\n itemsPerPage: 30,\n currentPage: 1\n };\n @Input()\n displayPexelsResults: boolean = false;\n\n @Input()\n disable: boolean = false;\n @Output()\n disableChange: EventEmitter<boolean> = new EventEmitter();\n\n @Output()\n filtersChange = new EventEmitter();\n @Output()\n pictureNameChange: EventEmitter<PictureNameUpdate> = new EventEmitter();\n\n @Input() isLoading = false;\n\n @Input()\n stateDisplayed: stateDisplayed;\n\n previousName: string; // Use to save the previous picture name, when a user change his name\n fakeImgRoute: string = this.apiService.CONFIG.assets_route + 'img/fake.png';\n\n private getDataAPISub: Subscription;\n private errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';\n private errorAlreadyUsedImg = 'ImgManager.ImgList.errorAlreadyUsed';\n\n private imageNotFoundService = inject(ImageNotFoundService);\n\n constructor(\n protected imgManager: ImgManagerService,\n protected imgSelectionService: ImgSelectionService,\n protected http: HttpClient,\n protected imgCDNService: ImgCDNService,\n protected imgEventCardService: ImgEventService,\n protected alertService: AlertService,\n protected translateService: TranslateService,\n private apiService: ApiService,\n ) {\n }\n\n /** Event emit when the header checkbox is checked */\n onToggleAllCheckBoxRow(event) {\n this.picturesList.forEach(data => {\n data.delSelected = event;\n });\n this._pictureListeChange();\n }\n\n onToggleDelSelection(index: number) {\n if (this.disable) {\n return;\n }\n this.picturesList[index].delSelected = !this.picturesList[index].delSelected;\n this._pictureListeChange();\n }\n\n /** Event emit each time filters change */\n onFiltersChange() {\n this.filtersChange.emit();\n }\n\n onEdit(picture: ImgPictureDTO) {\n this.imgEventCardService.emitImgToEdit(picture);\n }\n\n onToggleSelectImg(index: number) {\n if (this.disable || this.stateDisplayed === 'window') {\n return;\n }\n if (!this.picturesList[index].selected) {\n this.imgSelectionService.addImgSelected(this.picturesList[index]);\n this.picturesList[index].selected = true;\n } else {\n this.imgSelectionService.removeImgSelectedById(this.picturesList[index].id_file);\n this.picturesList[index].selected = false;\n }\n }\n\n onRemoveImg(picture: ImgPictureDTO) {\n picture.deleted = true;\n this.imgManager.removeImg(picture.id_file).subscribe(\n data => {\n this.imgEventCardService.imgRemoved$.next(picture.id_file);\n this.imgSelectionService.removeImgSelectedById(picture.id_file);\n },\n error => {\n const msg = error.status === 409 ? this.errorAlreadyUsedImg: this.errorRemoveImg;\n picture.deleted = false;\n this.alertService.openAlert(msg);\n });\n }\n\n onPictureNotLoading(event) {\n this.imageNotFoundService.imageNotFound(event.target.src);\n event.target.src = this.fakeImgRoute;\n }\n\n onDownloadImg(display_name: string, file_name: string) {\n this.http.get(this.getRAWImgRoute(file_name), { responseType: 'blob' }).subscribe(val => {\n let url = URL.createObjectURL(val);\n this.downloadUrl(url, display_name);\n URL.revokeObjectURL(url);\n });\n }\n\n onNameChange(id_file: string) {\n this.pictureNameChange.emit({id: id_file, previousName: this.previousName});\n }\n\n private getRAWImgRoute(file_name: string){\n return this.imgCDNService.getUrlImg('raw') + file_name;\n }\n\n private _pictureListeChange() {\n this.picturesListChange.emit();\n }\n\n private downloadUrl(url: string, fileName: string) {\n const a: any = document.createElement('a');\n a.href = url;\n a.download = fileName;\n a.click();\n }\n\n ngDestroy() {\n if (this.getDataAPISub) {\n this.getDataAPISub.unsubscribe();\n }\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { ImgCDNService } from '../../services/config/img-cdn.service';\n\n@Pipe({\n name: 'imgSrc'\n})\nexport class ImageSrcPipe implements PipeTransform {\n\n constructor(private imgCDNService: ImgCDNService) { }\n\n transform(pictureName: string, size: string): string {\n if(!size) {\n throw \"The size is undefined in ImageSrcPipe.\";\n }\n\n const route: string = this.imgCDNService.getUrlImg(size);\n\n if (!route) {\n throw \"The expected size is not defined in ImageSrcPipe.\";\n }\n\n return route + pictureName;\n }\n}\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ImgEventService } from '../../../../services/img-event.service';\nimport { ImgPictureDTO } from '../../../../dto/img-manager.dto';\nimport { HttpClient } from '@angular/common/http';\nimport { ImgManagerService } from '../../../../services/img-manager.service';\nimport { ImgSelectionService } from '../../../../services/img-selection.service';\nimport { ImgCDNService } from '../../../../services/config/img-cdn.service';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ImagesActionHandler } from '../../images-actions-handler';\nimport { easeInOut } from '../../../../animations/easeInOut/ease-in-out.animation'\nimport { tabDisplayed } from '../../../../dto/export-dtos.api';\nimport { AlertService } from '../../../../services/alert.service';\nimport { ApiService } from '../../../../services/api.service';\n\n@Component({\n selector: 'img-card',\n templateUrl: './img-card.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class ImgCardComponent extends ImagesActionHandler implements OnInit {\n\n @Input()\n tabDisplayed: tabDisplayed;\n @Input()\n fullSize: boolean;\n @Input()\n picture: ImgPictureDTO;\n @Input()\n index: number;\n focusInput = false;\n\n @Output()\n toggleImgSelected: EventEmitter<void> = new EventEmitter();\n\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n isUploadSection: boolean = false;\n activeConfirmDelete = false;\n\n constructor(\n imgManager: ImgManagerService,\n imgSelectionService: ImgSelectionService,\n http: HttpClient,\n imgCDNService: ImgCDNService,\n imgEventCardService: ImgEventService,\n alertService: AlertService,\n translateService: TranslateService,\n apiService: ApiService\n ) {\n super(\n imgManager,\n imgSelectionService,\n http,\n imgCDNService,\n imgEventCardService,\n alertService,\n translateService,\n apiService\n );\n }\n\n ngOnInit(): void {\n this.isUploadSection = this.tabDisplayed === 'img-upload';\n }\n\n displayLargeWindow(): void {\n this.switchDisplayWindow.emit(true);\n }\n\n onToggleImgSelected() {\n this.toggleImgSelected.next();\n }\n}\n","<div class=\"addCssPriority\" [@easeInOut]=\"'in'\" [ngClass]=\"{ 'fullSize': fullSize }\">\n <div class=\"img-card\">\n <div class=\"img-card__container\"\n [ngClass]=\"{\n 'smallDisplay': stateDisplayed === 'small' || isUploadSection,\n 'imgSelected': picture.selected,\n 'deletion': picture.deleted}\">\n <img\n class=\"img-card__container__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [alt]=\"picture.display_name\"\n (click)=\"onToggleImgSelected()\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <div\n class=\"img-card__container__config\"\n *ngIf=\"!picture.deleted && stateDisplayed !== 'small'\"\n >\n <button type=\"button\" class=\"size\"><i class=\"fal fa-image-polaroid\"></i><span>{{picture.raw_height}}x{{picture.raw_width}}</span></button>\n <button type=\"button\" class=\"dl\" (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"><i class=\"fal fa-download\"></i><span>{{ 'ImgManager.ImgCard.download' | translate }}</span></button>\n <button type=\"button\" class=\"edit\" (click)=\"onEdit(picture)\"><i class=\"far fa-crop-alt\"></i><span>{{ 'ImgManager.ImgCard.edit' | translate }}</span></button>\n <button type=\"button\" class=\"deleted\" (click)=\"activeConfirmDelete = true;\"><i class=\"fal fa-times\"></i><span>{{ 'ImgManager.ImgCard.del' | translate }}</span></button>\n <button type=\"button\" class=\"selected\" (click)=\"onToggleImgSelected()\" *ngIf=\"stateDisplayed !== 'window'\">\n <i *ngIf=\"!picture.selected\" class=\"fal fa-square\"></i>\n <i *ngIf=\"picture.selected\" class=\"fas fa-check-square checked\"></i>\n <span>{{ 'ImgManager.ImgCard.select' | translate }}</span>\n </button>\n </div>\n <div\n class=\"img-card__container__config img-card__container__config--small\"\n *ngIf=\"!picture.deleted && stateDisplayed === 'small'\"\n >\n <button class=\"show-edit\" (click)=\"displayLargeWindow()\"><i class=\"fas fa-edit\"></i></button>\n </div>\n <div class=\"img-card__container__delete\" [ngClass]=\"{ 'show' : activeConfirmDelete}\">\n <span>{{ 'ImgManager.ImgCard.confirmDeleteImg' | translate }}</span>\n <div>\n <button (click)=\"activeConfirmDelete = false;\">{{ 'no' | translate }}</button>\n <button (click)=\"onRemoveImg(picture);activeConfirmDelete = false;\">{{ 'yes' | translate }}</button>\n </div>\n </div>\n <div class=\"img-card__container__valid\" *ngIf=\"stateDisplayed === 'small' && tabDisplayed == 'img-upload'\">\n <i class=\"far fa-check\"></i>\n <span>{{ 'ImgManager.ImgCard.validImgSmall' | translate }}</span>\n </div>\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"img-card__container__overlay\"\n [ngClass]=\"{'img-card__container__overlay--smallDisplay': stateDisplayed === 'small' || isUploadSection}\">\n <i (click)=\"onToggleImgSelected()\" class=\"fad fa-folder-times\"></i>\n </div>\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"picture.deleted\"></span>\n\n </div>\n <div\n class=\"img-card__nameContainer\"\n [ngClass]=\"{'smallNameDisplay': stateDisplayed === 'small' || isUploadSection, 'focus': focusInput}\">\n <input\n type=\"text\"\n class=\"wzImgMngInput img-card__nameContainer__name\"\n [(ngModel)]=\"picture.display_name\"\n (ngModelChange)=\"onNameChange(picture.id_file)\"\n [ngModelOptions]=\"{standalone: true, updateOn: 'blur'}\"\n (focus)=\"previousName=picture.display_name;focusInput = true;\"\n (blur)=\"focusInput = false;\"\n >\n <span>{{picture.display_name}}</span>\n </div>\n\n </div>\n</div>\n","import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { Subscription } from 'rxjs';\nimport { ImgSelectionService } from '../../services/img-selection.service';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { PictureNameUpdate, stateDisplayed, tabDisplayed } from '../../dto/export-dtos.api';\nimport { RenamePictureService } from '../../services/rename-picture.service';\n\n@Component({\n selector: 'upload-list',\n templateUrl: './upload-list.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class UploadListComponent implements OnInit {\n\n picturesList: ImgPictureDTO[] = [];\n imgSelectionChange: Subscription;\n selectImgEvent: Subscription;\n\n @Input() stateDisplayed: stateDisplayed;\n @Input() tabDisplayed: tabDisplayed;\n @Input() multipleImgMode: boolean = false;\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n constructor(\n private imgSelectionService: ImgSelectionService,\n private renamePictureService: RenamePictureService\n ) { }\n\n ngOnInit(): void {\n this.setEvents();\n }\n\n onImgUploaded(img: ImgPictureDTO[]) {\n img.forEach(picture =>\n this.picturesList.push(picture)\n );\n this.renamePictureService.setPicturesList(this.picturesList);\n }\n\n onToggleSelectImg(index: number) {\n if (this.stateDisplayed === 'window') {\n return;\n }\n if (!this.picturesList[index].selected) {\n this.imgSelectionService.addImgSelected(this.picturesList[index]);\n this.picturesList[index].selected = true;\n } else {\n this.imgSelectionService.removeImgSelectedById(this.picturesList[index].id_file);\n this.picturesList[index].selected = false;\n }\n }\n\n switchDisplayWindowCard() {\n this.switchDisplayWindow.emit(true);\n }\n\n onRenamePicture(pictureRenamed: PictureNameUpdate) {\n this.renamePictureService.renamePicture(pictureRenamed);\n }\n\n private setEvents() {\n this.imgSelectionChange = this.imgSelectionService.imgSelection$.subscribe(imgSelection =>{\n const idFileList = [];\n imgSelection.map(img => idFileList.push(img.id_file));\n for (const picture of this.picturesList) {\n if (idFileList.indexOf(picture.id_file) === -1) {\n picture.selected = false;\n }\n }\n });\n }\n ngOnDestroy(): void {\n this.imgSelectionChange.unsubscribe();\n }\n}\n","<div class=\"upload-list\" [ngClass]=\"{'smallDisplay': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n\n <ng-scrollbar\n class=\"upload-list__scroll\"\n [ngClass]=\"{\n 'upload-list__scroll--smallDisplay': stateDisplayed === 'small',\n 'upload-list__scroll--window': stateDisplayed === 'window'}\"\n >\n <div class=\"upload-list__box\">\n <div class=\"upload-list__box__container\">\n <div>\n <p class=\"mainColor\">\n {{ picturesList? picturesList.length : '' }}\n <ng-container *ngIf=\"picturesList && picturesList.length > 1\">{{ 'ImgManager.UploadList.imgSuccessImport' | translate }}</ng-container>\n <ng-container *ngIf=\"picturesList && picturesList.length === 1\">{{ 'ImgManager.UploadList.imgSuccessImportOne' | translate }}</ng-container>\n </p>\n <div class=\"dropdown is-hoverable\">\n <div class=\"dropdown-trigger\">\n <i\n aria-haspopup=\"true\" aria-controls=\"dropdown-menuInfoSeo\"\n class=\"fas fa-info-circle\">\n </i>\n </div>\n <div class=\"dropdown-menu dropDownShadow\" id=\"dropdown-menuInfoSeo\" role=\"menu\">\n <div class=\"dropdown-content\">\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n <div class=\"dropdown-item\">\n <p>{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i> 100%</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"upload-list__box__cards\">\n <div class=\"upload-list__box__cards__card\" *ngFor=\"let picture of picturesList; let index = index;\">\n <img-card\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n ></img-card>\n <div class=\"upload-list__box__cards__card__btnBox\">\n <button type=\"button\" class=\"button success upload-list__box__cards__card__btnBox__btn\"><i class=\"fal fa-check\"></i></button>\n </div>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n","import { Directive, Input, Output, EventEmitter, HostListener } from \"@angular/core\";\n\n@Directive({ selector: '[copy-clipboard]' })\nexport class CopyClipboardDirective {\n\n @Input(\"copy-clipboard\")\n public payload: string;\n\n @Output(\"copied\")\n public copied: EventEmitter<string> = new EventEmitter<string>();\n\n @HostListener(\"click\", [\"$event\"])\n public onClick(event: MouseEvent): void {\n\n event.preventDefault();\n if (!this.payload)\n return;\n\n let listener = (e: ClipboardEvent) => {\n let clipboard = e.clipboardData || window[\"clipboardData\"];\n clipboard.setData(\"text\", this.payload.toString());\n e.preventDefault();\n\n this.copied.emit(this.payload);\n };\n\n document.addEventListener(\"copy\", listener, false)\n document.execCommand(\"copy\");\n document.removeEventListener(\"copy\", listener, false);\n }\n}","import { EventEmitter } from '@angular/core';\nimport { Output } from '@angular/core';\nimport { Component, OnInit, Input } from '@angular/core';\nimport { ImgPictureDTO } from '../../../dto/img-manager.dto';\nimport { AlertService } from '../../../services/alert.service';\n\n@Component({\n selector: 'info-section',\n templateUrl: './info-section.component.html'\n})\nexport class EditorInfoSectionComponent implements OnInit {\n\n @Input()\n imgToEdit: ImgPictureDTO;\n\n @Input()\n set isNameModified(isNameModified: boolean) {\n this._isNameModified = isNameModified;\n }\n get isNameModified(): boolean {\n return this._isNameModified;\n }\n private _isNameModified: boolean = false;\n\n @Output()\n isNameModifiedChange = new EventEmitter<boolean>();\n\n imgName: string;\n imgRoute: string;\n\n msgCopyToClipBoard: string = 'ImgManager.ImgEditor.copytoClipBoard';\n\n constructor(\n private alertService: AlertService,\n ) { }\n\n ngOnInit(): void {\n this.init();\n }\n\n init() {\n this.imgName = this.imgToEdit.display_name;\n }\n getFileSize() {\n return this.imgToEdit ? Math.round(parseInt(this.imgToEdit.size)/1000) : '-';\n }\n\n copyToClipBoard(event) {\n this.alertService.openAlert(this.msgCopyToClipBoard);\n }\n\n onNameChange() {\n this.isNameModifiedChange.emit(true);\n }\n}\n","\n<!-- Img properties -->\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">\n {{ 'ImgManager.UploadList.properties.imgName' | translate }}\n <span class=\"img-editor__infoSection__propertyEditable__tooltips\" [nwbToolTip]=\"'ImgManager.ImgEditor.NameInfo' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></span>\n </p>\n <input\n type=\"text\"\n class=\"img-editor__infoSection__propertyEditable__input\"\n placeholder=\"{{'ImgManager.ImgEditor.nameEx' | translate}} \"\n [(ngModel)]=\"imgToEdit.display_name\"\n debounceKeyUp\n [debounceTime]=\"500\"\n (onEventChange)=\"onNameChange()\">\n</div>\n<div class=\"img-editor__infoSection__propertyEditable\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgURL' | translate }}</p>\n <button type=\"button\" [copy-clipboard]=\"imgToEdit.file_name | imgSrc : 'raw'\" (copied)=\"copyToClipBoard($event)\" ><span class=\"img-editor__infoSection__propertyEditable__span\">{{imgToEdit.file_name}}</span>&nbsp;&nbsp;<i class=\"far fa-copy\"></i></button>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgSize' | translate }}&nbsp;:</p>\n <p>{{imgToEdit.raw_height}}*{{imgToEdit.raw_width}}px</p>\n</div>\n<div class=\"img-editor__infoSection__property\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.properties.imgWeight' | translate }}&nbsp;:</p>\n <p >{{getFileSize()}}&nbsp;ko</p>\n</div>\n\n<!-- SEO info -->\n\n<span class=\"img-editor__infoSection__divider\"></span>\n\n<div class=\"img-editor__infoSection__titleSEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.title' | translate }}</p>\n</div>\n\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.rezise' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.reziseTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.webp' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.webpTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.cdn' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.cdnTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n\n</div>\n<div class=\"img-editor__infoSection__propertySEO\">\n <p class=\"mainColor\">{{ 'ImgManager.UploadList.seo.lazyloading' | translate }}</p>\n <p><i class=\"fal fa-check\"></i>&nbsp;100%</p>\n <p class=\"img-editor__infoSection__propertySEO__tooltips\" [nwbToolTip]=\"'ImgManager.UploadList.seo.lazyloadingTooltips' | translate\" [nwbToolTipIsMultiline]=\"true\" nwbToolTipPosition=\"right\"><i class=\"fas fa-info-circle\"></i></p>\n</div>\n","import { animate, style, transition, trigger } from '@angular/animations';\n\nexport const insertRemove = // the fade-in/fade-out animation.\ntrigger('insertRemoveAnnim', [\n transition(':enter', [\n style({ opacity: 0 }),\n animate('0.5s ease-in-out', style({ opacity: 1 })),\n ])\n]);\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dropdown',\n templateUrl: './dropdown.component.html'\n})\nexport class DropdownComponent implements OnInit {\n\n @Input()\n dropDownMenuClass: string;\n @Input()\n disable: boolean = false;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<div class=\"dropdown dropdownWizi\" [ngClass]=\"{'is-hoverable': !disable}\">\n <div class=\"dropdown-trigger\">\n\n <!-- Label -->\n <ng-content select=\"[label]\"></ng-content>\n\n </div>\n <div class=\"dropdown-menu\" [ngClass]=\"dropDownMenuClass\" role=\"menu\">\n <div class=\"dropdown-content\">\n\n <!-- Content -->\n <ng-content select=\"[item]\"></ng-content>\n\n </div>\n </div>\n</div>","import { Component, OnInit, Input, Output, EventEmitter, ViewChild } from '@angular/core';\nimport { ImageCroppedEvent, ImageTransform, OutputFormat } from 'ngx-image-cropper';\nimport { Subject } from 'rxjs';\nimport { insertRemove } from '../../../animations/insertRemove/insert-remove.animation';\nimport { CropperConfigDTO, ImgCropperConfigDTO } from '../../../dto/img-editor-config.dto';\nimport { ImgPictureDTO } from '../../../dto/img-manager.dto';\nimport { ImgCDNService } from '../../../services/config/img-cdn.service';\n\n@Component({\n selector: 'cropper',\n templateUrl: './cropper.component.html',\n animations: [\n insertRemove\n ]\n})\nexport class CropperComponent implements OnInit {\n\n @Input()\n imgToEdit: ImgPictureDTO;\n\n @Input()\n set isImgModified(isImgModified: boolean) {\n this._isImgModified = isImgModified;\n if (!isImgModified) {\n this.restartEdit();\n }\n }\n get isImgModified(): boolean {\n return this._isImgModified;\n }\n private _isImgModified: boolean = false;\n\n @Output()\n isImgModifiedChange = new EventEmitter<boolean>();\n\n @Output()\n editClosed = new EventEmitter();\n\n @Output()\n currentCroppedImageChange = new EventEmitter<string>();\n\n msgFailLoad: string = 'ImgManager.ImgEditor.msgFailLoad';\n\n isNameModified: boolean = false;\n isCropperReady: boolean = false; // Use to not display the crop validation btn, after the img is loaded or changed\n currentCroppedImage: string = ''; // Img modified return in base64\n isCropped: boolean = false;\n isLoading: boolean = false;\n\n _isImgCropped: boolean = false;\n set isImgCropped(isImgCropped: boolean) {\n setTimeout(() => {\n this._isImgCropped = isImgCropped;\n }, 0);\n }\n\n get isImgCropped() : boolean {\n return this._isImgCropped;\n }\n imgCropperChange: Subject<void> = new Subject<void>();\n skipNextImgCropped: number = 1;\n\n // Image Cropper properties\n imgType: OutputFormat;\n imgRoute: string;\n imageChangedEvent: any = '';\n croppedImage: any = '';\n canvasRotation = 0;\n rotation = 0;\n scale = 1;\n showCropper = false;\n containWithinAspectRatio = false;\n transform: ImageTransform = {};\n\n defaultAspectRatio: number;\n\n // dropdown list\n resolutionConfig:ImgCropperConfigDTO[] = [\n {\n label: 'ImgManager.ImgEditor.config.origin',\n config: {\n maintainAspectRatio: true\n },\n },\n {\n label: 'ImgManager.ImgEditor.config.free',\n config: {\n maintainAspectRatio: false\n },\n active: true\n },\n {\n label: 'ImgManager.ImgEditor.config.square',\n config: {\n maintainAspectRatio: true,\n aspectRatio: 1 / 1\n }\n },\n {\n label: 'ImgManager.ImgEditor.config.Portrait',\n config: {\n maintainAspectRatio: true,\n aspectRatio: 3 / 4\n }\n },\n {\n label: 'ImgManager.ImgEditor.config.landscape',\n config: {\n maintainAspectRatio: true,\n aspectRatio: 5 / 3\n }\n }\n ];\n\n rotationConfig:ImgCropperConfigDTO[] = [\n {\n label: 'ImgManager.ImgEditor.config.schedule',\n icon: \"fal fa-redo-alt\",\n method: \"rotateRight\",\n active: true\n },\n {\n label: 'ImgManager.ImgEditor.config.AntiSchedule',\n icon: \"fal fa-undo-alt\",\n method: \"rotateLeft\"\n },\n {\n label: 'ImgManager.ImgEditor.config.flipVert',\n icon: \"fal fa-sort-alt\",\n method: \"flipVertical\"\n },\n {\n label: 'ImgManager.ImgEditor.config.flipHoriz',\n icon: \"fal fa-exchange-alt\",\n method: \"flipHorizontal\"\n }\n ];\n\n zoomConfig:ImgCropperConfigDTO[] = [\n {\n label: 'ImgManager.ImgEditor.config.zoom',\n icon: \"fal fa-search-plus\",\n method: \"zoomIn\",\n active: true\n },\n {\n label: 'ImgManager.ImgEditor.config.dezoom',\n icon: \"fal fa-search-minus\",\n method: \"zoomOut\"\n }\n ];\n\n // Img cropper variables\n imgCropperConfig:CropperConfigDTO = {\n maintainAspectRatio: false,\n aspectRatio: undefined\n }\n\n constructor(\n private imgCDNService: ImgCDNService\n ) { }\n\n ngOnInit(): void {\n this.init();\n this.detectImgCropperChange();\n }\n\n init() {\n this.imgRoute = this.getRAWImgRoute();\n this.imgType = this.getImgType();\n this.croppedImage = null;\n this.setDefautAspectRatio();\n }\n\n getRAWImgRoute(){\n return this.imgCDNService.getUrlImg('raw') + this.imgToEdit.file_name;\n }\n\n getImgType() {\n return (this.imgToEdit.file_name ? this.imgToEdit.file_name.split('.').pop() : undefined) as OutputFormat;\n }\n\n setDefautAspectRatio() {\n const height = parseInt(this.imgToEdit.raw_height);\n const width = parseInt(this.imgToEdit.raw_width);\n this.defaultAspectRatio = height / width;\n this.resolutionConfig[0].config.aspectRatio = this.defaultAspectRatio;\n this.imgCropperConfig.aspectRatio = this.defaultAspectRatio;\n }\n\n onEditClosed(msgKey?: string) {\n this.editClosed.emit(msgKey);\n }\n\n onRestart() {\n this.isImgModifiedChange.emit(false);\n }\n\n restartEdit() {\n this.init();\n this.resetConfCropper();\n }\n\n onImgModified() {\n this.isImgModified = true;\n this.isImgModifiedChange.emit(true);\n }\n\n ////// Img cropper methods ////////////////////////////////////////////////////////////////////////////////////////////////////////\n\n /* Cropper output events */\n\n fileChangeEvent(event: any): void {\n this.imageChangedEvent = event;\n }\n\n imageCropped(event: ImageCroppedEvent) {\n this.imgCropperChange.next();\n\n this.currentCroppedImage = event.base64;\n this.currentCroppedImageChange.emit(this.currentCroppedImage);\n }\n\n imageLoaded() {\n this.showCropper = true;\n }\n\n cropperReady() {\n this.isCropperReady = true;\n }\n\n loadImageFailed() {\n this.onEditClosed(this.msgFailLoad);\n }\n\n /* Resize functions */\n\n changeResolutionSize(index: number) {\n this.setActiveItem(this.resolutionConfig, index);\n const config = this.resolutionConfig[index].config;\n this.setCropperProperties(config);\n }\n\n confirmCrop() {\n\n setTimeout(() => { // Avoid image-cropper error\n this.imgRoute = null;\n this.croppedImage = this.currentCroppedImage;\n this.skipNextImgCropped = 2;\n this.isImgCropped = false;\n }, 0);\n\n this.resetConfCropper();\n this.onImgModified();\n }\n\n resetConfCropper() {\n this.scale = 1;\n this.rotation = 0;\n this.canvasRotation = 0;\n this.transform = {};\n }\n\n private setActiveItem(array:any[], index: number) {\n // Set active-item class for the dropdown\n array.forEach((item, indexItem) => {\n item.active = indexItem === index ? true : false;\n });\n }\n\n private setCropperProperties(config: any) {\n for (const property in config) {\n this.imgCropperConfig[property] = config[property];\n }\n }\n\n private detectImgCropperChange() {\n this.imgCropperChange\n .subscribe(() => {\n this.skipNextImgCropped--;\n if (this.skipNextImgCropped >= 0) {\n return;\n }\n this.skipNextImgCropped = 0;\n this.isImgCropped = true;\n })\n\n }\n\n /* Rotations functions */\n\n rotateLeft() {\n this.canvasRotation--;\n this.flipAfterRotate();\n this.onImgModified();\n }\n\n rotateRight() {\n this.canvasRotation++;\n this.flipAfterRotate();\n this.onImgModified();\n }\n\n flipHorizontal() {\n this.transform = {\n ...this.transform,\n flipH: !this.transform.flipH\n };\n this.onImgModified();\n }\n\n flipVertical() {\n this.transform = {\n ...this.transform,\n flipV: !this.transform.flipV\n };\n this.onImgModified();\n }\n\n private flipAfterRotate() {\n const flippedH = this.transform.flipH;\n const flippedV = this.transform.flipV;\n this.transform = {\n ...this.transform,\n flipH: flippedV,\n flipV: flippedH\n };\n }\n\n /* Zoom functions */\n\n zoomOut() {\n this.scale -= this.scale < 0.2? 0 : .1;\n this.transform = {\n ...this.transform,\n scale: this.scale\n };\n this.onImgModified();\n }\n\n zoomIn() {\n this.scale += .1;\n this.transform = {\n ...this.transform,\n scale: this.scale\n };\n this.onImgModified();\n }\n\n applyMethod(method: string) {\n this[method](); // call the method contains in zoomConfig or rotationConfig\n }\n}\n","<div class=\"img-editor__container__toolsContainer\">\n\n <div *ngIf=\"isImgCropped\">\n <div\n class=\"img-editor__container__toolsContainer__tool img-editor__container__toolsContainer__tool--button\"\n (click)=\"confirmCrop()\"\n [nwbToolTip]=\"'ImgManager.ImgEditor.ValidtToolTip' | translate\"\n nwbToolTipPosition=\"left\"\n >\n <i class=\"far fa-check\"></i>\n <p>{{ 'ImgManager.ImgEditor.Valid' | translate }}</p>\n </div>\n </div>\n\n <!-- Resolution -->\n <dropdown dropdownId=\"dropdown-resolution\">\n <ng-container label>\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n >\n <i class=\"far fa-crop\"></i>\n <p>{{ 'ImgManager.ImgEditor.crop' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of resolutionConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"changeResolutionSize(index)\">\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Zoom -->\n <dropdown dropdownId=\"dropdown-rotation\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"zoomIn()\">\n <i class=\"far fa-expand-arrows-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.display' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of zoomConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <!-- Rotation -->\n <dropdown dropdownId=\"dropdown-rotation\" dropDownMenuClass=\"img-editor__container__toolsContainer__RotationDropdown\">\n <ng-container label>\n <div class=\"img-editor__container__toolsContainer__tool\" (click)=\"rotateRight()\">\n <i class=\"far fa-redo\"></i>\n <p>{{ 'ImgManager.ImgEditor.rotation' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item *ngFor=\"let item of rotationConfig; let index = index;\">\n <div\n class=\"dropdown-item\"\n [ngClass]=\"{'active-item': item.active}\"\n (click)=\"applyMethod(item.method)\">\n <i *ngIf=\"item.icon\" [ngClass]=\"item.icon\"></i>\n <p>{{item.label | translate}}</p>\n </div>\n </ng-container>\n </dropdown>\n\n <div\n class=\"img-editor__container__toolsContainer__tool\"\n (click)=\"onRestart()\"\n @insertRemoveAnnim\n >\n <i class=\"far fa-retweet-alt\"></i>\n <p>{{ 'ImgManager.ImgEditor.restart' | translate }}</p>\n </div>\n</div>\n\n<div class=\"img-editor__image-cropper\" >\n <image-cropper\n [imageURL]=\"imgRoute\"\n [imageBase64]=\"croppedImage\"\n [maintainAspectRatio]=\"imgCropperConfig.maintainAspectRatio\"\n [containWithinAspectRatio]=\"containWithinAspectRatio\"\n [aspectRatio]=\"imgCropperConfig.aspectRatio\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [alignImage]=\"'center'\"\n [style.display]=\"showCropper ? null : 'none'\"\n [format]=\"imgType\"\n [backgroundColor]=\"'white'\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n (cropperReady)=\"cropperReady()\"\n (loadImageFailed)=\"loadImageFailed()\"\n ></image-cropper>\n</div>\n","import { Component, OnInit, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { Observable, forkJoin } from 'rxjs';\nimport { ImgManagerService } from '../../services/img-manager.service';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { RenamePictureService } from '../../services/rename-picture.service';\n\n@Component({\n selector: 'img-editor',\n templateUrl: './img-editor.component.html',\n animations: [\n easeInOut\n ]\n})\nexport class ImgEditorComponent implements OnInit {\n\n @Input()\n stateDisplayed;\n @Input()\n imgToEdit: ImgPictureDTO;\n\n @Output() editClosed = new EventEmitter();\n\n isLoading: boolean = false;\n isImgModified: boolean = false;\n isNameModified: boolean = false;\n currentCroppedImage: string = ''; // Img modified return in base64 by the cropper\n private previousName: string;\n\n msgFailSave: string = 'ImgManager.ImgEditor.msgFailSave';\n msgFailLoad: string = 'ImgManager.ImgEditor.msgFailLoad';\n msgSuccessEdit: string = \"Les modifications de l'image ont bien été enregistrées.\"\n\n constructor(\n private imgManagerService: ImgManagerService,\n private renamePictureService: RenamePictureService\n ) { }\n\n ngOnInit(): void {\n this.previousName = this.imgToEdit.display_name;\n }\n\n onSave() {\n if (this.isLoading) {\n return;\n }\n this.isLoading = true;\n\n if (!this.isImgModified && !this.isNameModified) {\n this.isLoading = false;\n this.onEditClosed();\n }\n\n const obsReplaceImg = this.imgManagerService.replaceImg(this.currentCroppedImage, this.imgToEdit.id_file);\n const obsChangeImgName = this.renamePictureService.changeImageName(this.imgToEdit.display_name, this.imgToEdit.id_file);\n\n if(this.isImgModified && this.isNameModified) {\n this.renameAndReplaceImg(obsChangeImgName, obsReplaceImg);\n return;\n }\n\n if(this.isImgModified){\n obsReplaceImg.subscribe({\n next: data => {\n this.isLoading = false;\n this.onEditClosed(this.msgSuccessEdit);\n },\n error: error => {\n this.isLoading = false;\n this.currentCroppedImage = '';\n this.onEditClosed(this.msgFailSave);\n }});\n return;\n }\n\n if (this.isNameModified) {\n obsChangeImgName.subscribe({\n next: data => {\n this.isLoading = false;\n this.previousName = this.imgToEdit.display_name;\n this.onEditClosed(this.msgSuccessEdit);\n },\n error: error => {\n this.isLoading = false;\n this.imgToEdit.display_name = this.previousName;\n this.onEditClosed(this.msgFailSave);\n }\n });\n }\n this.isNameModified = false;\n }\n\n onEditClosed(msgKey?: string) {\n this.editClosed.emit(msgKey);\n }\n\n onRestartEdit() {\n this.isImgModified = false;\n this.isNameModified = false;\n this.imgToEdit.display_name = this.previousName;\n }\n\n onCancel() {\n this.onEditClosed('');\n }\n\n onImgCropped(imgBase64: string) {\n this.currentCroppedImage = imgBase64;\n }\n\n private renameAndReplaceImg(obsChangeImgName: Observable<any>, obsReplaceImg: Observable<any>) {\n // Avoid to use forkjoin, because it can create conflict and loose the img\n obsChangeImgName.subscribe({\n next: res1 => {\n obsReplaceImg.subscribe({\n next: res2 => {\n this.onEditClosed(this.msgSuccessEdit);\n },\n error: error => {\n this.onEditClosed(this.msgFailSave);\n }\n });\n },\n error: error => {\n this.onEditClosed(this.msgFailSave);\n }\n });\n }\n}\n","<div class=\"img-editor\" [@easeInOut]=\"'in'\">\n\n <!-- Button Action Section -->\n\n <div class=\"img-editor__infoSection__actions\">\n <div>\n <button\n type=\"button\"\n class=\"button img-editor__infoSection__actions__cancel\"\n (click)=\"onCancel()\"\n [disabled]=\"isLoading || (!isImgModified && !isNameModified)\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <div\n class=\"button danger button img-editor__infoSection__actions__save\"\n [ngClass]=\"{'img-editor__infoSection__actions__save--disable': isLoading}\"\n (click)=\"onSave()\"\n >\n {{ 'ImgManager.ImgEditor.saveBtn' | translate }}\n <span btnLoadingAnim *ngIf=\"isLoading\" class=\"btnLoadingAnnimation\"></span>\n </div>\n\n </div>\n </div>\n\n <ng-scrollbar\n class=\"img-editor__scroll\"\n [ngClass]=\"{\n 'img-editor__scroll--full': stateDisplayed === 'full',\n 'img-editor__scroll--smallDisplay': stateDisplayed === 'small',\n 'img-editor__scroll--window': stateDisplayed === 'window'\n }\"\n >\n <div class=\"columns\">\n <!-- Left section -->\n <div class=\"column is-one-third img-editor__infoSection\">\n\n <info-section\n [imgToEdit]=\"imgToEdit\"\n [(isNameModified)]=\"isNameModified\"\n >\n </info-section>\n </div>\n\n\n <!-- Right section -->\n <div class=\"column img-editor__container\">\n <cropper\n [imgToEdit]=\"imgToEdit\"\n [(isImgModified)]=\"isImgModified\"\n (currentCroppedImageChange)=\"onImgCropped($event)\"\n (editClosed)=\"onEditClosed($event)\">\n </cropper>\n </div>\n </div>\n </ng-scrollbar>\n</div>\n","import { Directive, ElementRef, Input, Output, EventEmitter, AfterViewInit } from '@angular/core';\nimport { DomService } from '../services/dom.service';\n\n@Directive({\n selector: '[wzAutoHide]'\n})\nexport class AutoHideDirective implements AfterViewInit {\n @Input() triggerElement: string;\n @Input() forceOn: Array<string> = null;\n\n constructor(private _elementRef: ElementRef, private domService: DomService) {}\n\n @Output('clickOutside') clickOutside: EventEmitter<any> = new EventEmitter();\n\n ngAfterViewInit(): void {\n this.domService.documentEvent().subscribe((targetElement: Element) => {\n const clickedInside = this._elementRef.nativeElement.contains(targetElement);\n const classNameFromElement = targetElement.getAttribute('class');\n\n if (!clickedInside && (classNameFromElement === null || !classNameFromElement.includes(this.triggerElement))) {\n this.clickOutside.emit(null);\n }\n\n if (this.forceOn != null && classNameFromElement !== null) {\n let needToClose = true;\n this.forceOn.forEach(v => {\n if (!classNameFromElement.includes(v)) {\n needToClose = false;\n }\n });\n if (needToClose) {\n this.clickOutside.emit(null);\n }\n }\n });\n }\n}\n","import {Component, OnInit, Output, EventEmitter, Input, OnDestroy } from '@angular/core';\nimport { CanvaService } from '../../services/canva.service';\nimport { CanvaButtonApi } from '../../dto/canva.dto';\nimport { WiziBlockMediaDto } from '../../dto/wizi-block-media.dto';\nimport { Subscription } from 'rxjs';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\n\n@Component({\n selector: 'canva-btn',\n templateUrl: './canva-btn.component.html'\n})\nexport class CanvaBtnComponent implements OnInit, OnDestroy {\n\n @Input() stateDisplayed: stateDisplayed;\n\n @Output() showImgUploaded = new EventEmitter();\n\n canvaApi: CanvaButtonApi;\n canvaLogoRouteAssets: string;\n imgLoading = false;\n\n availableFormat = {\n 'ImgManager.CanvaBtn.smallSquare' : {\n 'width' : 500,\n 'height' : 500\n },\n 'ImgManager.CanvaBtn.mediumSquare' : {\n 'width' : 1000,\n 'height' : 1000\n },\n 'ImgManager.CanvaBtn.bigSquare' : {\n 'width' : 2500,\n 'height' : 2500\n }\n }\n\n openDropDownMenu: boolean = false;\n\n expectedHeight: number;\n expectedWidth: number;\n subs: Subscription[] = [];\n\n constructor(\n private canvaService: CanvaService\n ) { }\n\n ngOnInit(): void {\n this.canvaLogoRouteAssets = this.canvaService.getCanvaLogo();\n this.listenCanvaExpectedSize();\n }\n\n listenCanvaExpectedSize() {\n // Subcribe to askImg from wizi-block\n const subExpectedImgSizesChange =\n this.canvaService.bindEventExepectedImgSizeChange().subscribe( (mediaDTO: WiziBlockMediaDto) => {\n if (mediaDTO) {\n this.expectedWidth = parseInt(mediaDTO.image_width, 10);\n this.expectedHeight = parseInt(mediaDTO.image_height, 10);\n } else {\n this.expectedWidth = undefined;\n this.expectedHeight = undefined;\n }\n });\n this.subs.push(subExpectedImgSizesChange);\n }\n\n onOpenCanva(width: number, height: number) {\n this.canvaService.openCanva(width, height);\n }\n\n ngOnDestroy() {\n this.subs.forEach(sub => sub.unsubscribe());\n }\n}\n","<div class=\"canva dropdown is-right is-hoverable\"\n wzAutoHide (clickOutside)=\"openDropDownMenu = false;\"\n [ngClass]=\"{'is-up': stateDisplayed === 'small', 'noTooltip': stateDisplayed !== 'small'}\"\n >\n <div class=\"dropdown-trigger\">\n <div\n class=\"button canva-btn\"\n aria-controls=\"dropdown-menuCanva\"\n (click)=\"openDropDownMenu = true;\"\n >\n <span>{{'ImgManager.CanvaBtn.createImg' | translate}}</span>\n <img [src]=\"canvaLogoRouteAssets\" class=\"canva-btn__logo\">\n\n <span btnLoadingAnim class=\"btnLoadingAnnimation\" *ngIf=\"imgLoading\"></span>\n </div>\n </div>\n <div\n class=\"dropdown-menu dropDownShadow\"\n [ngClass]=\"{'displayDropDownMenu': openDropDownMenu }\"\n id=\"dropdown-menuCanva\"\n role=\"menu\">\n <ng-scrollbar\n class=\"smallScroll\"\n >\n <div class=\"dropdown-content\">\n <div class=\"dropdownTitle\">\n <p>{{'ImgManager.CanvaBtn.createImg.title' | translate}}</p>\n </div>\n\n <div class=\"infoItem\">\n <p>{{'ImgManager.CanvaBtn.info' | translate}}</p>\n </div>\n\n <ng-container >\n <div\n *ngIf=\"expectedWidth && expectedHeight\"\n class=\"dropdown-item-wrapper\"\n >\n <div class=\"dropdown-item expectedSizes\" (click)=\"onOpenCanva(expectedWidth, expectedHeight)\">\n <p>{{'ImgManager.CanvaBtn.recommanded' | translate}}</p><p>{{expectedWidth}}*{{expectedHeight}}</p>\n </div>\n </div>\n </ng-container>\n\n <div\n *ngFor=\"let format of availableFormat| keyvalue\"\n class=\"dropdown-item-wrapper\">\n <div\n (click)=\"onOpenCanva(format.value.width, format.value.height)\"\n class=\"dropdown-item\">\n <p>{{format.key | translate}}</p><p>{{format.value.width}}*{{format.value.height}}</p>\n </div>\n </div>\n </div>\n </ng-scrollbar>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'IsLastPage'\n})\nexport class PagniationIsLastPage implements PipeTransform {\n /**\n * Return true, if the current page is the last page. Otherwise, return false.\n * @param currentPage\n * @param totalItems\n * @param itemsPerPage\n */\n transform(currentPage: number, totalItems: number, itemsPerPage: number): boolean {\n if (!(currentPage >= 0 && totalItems >= 0 && itemsPerPage >= 0)) {\n throw new Error('currentPage or totalItems or itemsPerPage is/are missing in PagniationIsLastPage pipe.');\n }\n return currentPage === Math.ceil(totalItems / itemsPerPage);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'ArrayTotalPages'\n})\nexport class PagniationArrayTotalPages implements PipeTransform {\n /**\n * Return an incremental array corresponding with the number page\n * [ 1, 2, 3 ..., last page number ]\n * @param totalItems\n * @param itemsPerPage\n */\n transform(totalItems: number, itemsPerPage: number): number[] {\n if (!(totalItems >= 0 && itemsPerPage >= 0)) {\n throw new Error('totalItems or itemsPerPage missing in ArrayTotalPages pipe.');\n }\n const arrayLength: number = Math.ceil(totalItems / itemsPerPage);\n return Array.apply(null, { length: arrayLength })\n .map(Number.call, Number)\n .map((x: number) => x + 1);\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'LargeNumberOfPage'\n})\nexport class LargeNumberOfPagePipe implements PipeTransform {\n /**\n * Return an incremental array\n * Display 30 pages, from -15 to +15 of the current page\n * @param totalItems\n * @param itemsPerPage\n */\n transform(totalItems: number, itemsPerPage: number, currentPage: number): Array<{value: number, display:number}> {\n if (!(totalItems >= 0 && itemsPerPage >= 0)) {\n throw new Error('totalItems or itemsPerPage missing in ArrayTotalPages pipe.');\n }\n\n let arrayLength: number = 32;\n\n const startAtPage = currentPage <= 15 ? 0: currentPage - 15;\n const totalPage = Math.ceil(totalItems / itemsPerPage);\n\n\n\n const arrayWithPageNumber = Array.apply(null, { length: arrayLength })\n .map(Number.call, Number)\n .map((x: number) => {\n\n const pageIndex:any = {\n display: startAtPage + x + 1,\n value: startAtPage + x + 1\n };\n\n if (x === arrayLength - 2) {\n pageIndex.display = '...';\n }\n if (x === arrayLength - 1) {\n pageIndex.display = totalPage;\n pageIndex.value = totalPage;\n }\n return pageIndex;\n });\n\n\n if (startAtPage) {\n arrayWithPageNumber.unshift(\n {\n display: 1,\n value: 1\n },\n {\n display: \"...\",\n value: 2\n }\n );\n }\n return arrayWithPageNumber;\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\n\nexport interface PaginationFilters {\n totalItems: number;\n itemsPerPage: number;\n currentPage: number;\n}\n\n@Component({\n selector: 'wz-page-selector',\n templateUrl: './page-selector.component.html'\n})\nexport class PageSelectorComponent {\n\n @Input() set pagination(pagination: PaginationFilters) {\n this._pagination = pagination;\n }\n get pagination(): PaginationFilters {\n return this._pagination;\n }\n private _pagination: PaginationFilters;\n\n @Input() set totalItems(totalItems: number) {\n this.numberOfPage = Math.ceil(totalItems / this.pagination.itemsPerPage);\n this.largeNumberOfPage = this.numberOfPage > 30;\n }\n get totalItems(): number {\n return this._totalItems;\n }\n private _totalItems: number;\n openAbsoluteSelect:boolean = false;\n\n largeNumberOfPage: boolean = false;\n numberOfPage: number = 0;\n\n @Output() pageChange: EventEmitter<number> = new EventEmitter();\n\n constructor() {}\n\n onGotoPageChange(event, directValue) {\n if (directValue) {\n this.pageChange.emit(event);\n this.openAbsoluteSelect = false;\n } else {\n this.pageChange.emit(parseInt(event.target.value));\n }\n }\n}\n","<div class=\"wz-selector\">\n\n <div class=\"wz-selector__default\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <div class=\"wz-selector__default__base\" *ngIf=\"largeNumberOfPage;\" (click)=\"openAbsoluteSelect = !openAbsoluteSelect\">\n <input name=\"page-input\" [value]=\"pagination.currentPage\" (change)=\"onGotoPageChange($event, false);openAbsoluteSelect = false;\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\" />\n <i class=\"fas fa-sort-down\"></i>\n </div>\n <div class=\"wz-selector__default__absolute\" *ngIf=\"openAbsoluteSelect\">\n <div class=\"wz-selector__default__absolute__wrapper\" *ngFor=\"let pageIndex of (pagination.totalItems | LargeNumberOfPage: pagination.itemsPerPage : pagination.currentPage).slice().reverse() as result\">\n <div class=\"wz-selector__default__absolute__wrapper__item\" [ngClass]=\"{'selected': pageIndex.value === pagination.currentPage}\" (click)=\"onGotoPageChange(pageIndex.value, true)\">\n <span>{{ pageIndex.display }}</span>\n </div>\n </div>\n </div>\n </div>\n\n <ng-container *ngIf=\"!largeNumberOfPage\">\n <select name=\"page\" (change)=\"onGotoPageChange($event, false)\" [ngStyle]=\"{'width': 40 + (10*pagination.currentPage.toString().length) + 'px'}\">\n <ng-container *ngFor=\"let pageIndex of pagination.totalItems | ArrayTotalPages: pagination.itemsPerPage\">\n <option [selected]=\"pageIndex === pagination.currentPage\" [value]=\"pageIndex\">\n {{ pageIndex }}\n </option>\n </ng-container>\n </select>\n </ng-container>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Pipe({\n name: 'customPagniationText'\n})\nexport class PagniationText implements PipeTransform {\n constructor(private translateService: TranslateService) {}\n\n /**\n * Update pagination text if at least one entrie change\n * @param currentPage\n * @param totalItems\n * @param itemsPerPage\n */\n transform(currentPage: number, totalItems: number, itemsPerPage: number): any {\n let currentItemsLow = 0,\n currentItemsHigh = 0;\n\n if (totalItems) {\n currentItemsLow = (currentPage - 1) * itemsPerPage + 1;\n currentItemsHigh = currentPage * itemsPerPage;\n }\n\n if (currentItemsHigh > totalItems) {\n currentItemsHigh = totalItems;\n }\n\n return this.translateService.instant('PaginationComponent.on', { low: currentItemsLow, high: currentItemsHigh, total: totalItems });\n }\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { PagniationIsLastPage } from '../../../pipes/pagination/total-pages/is-last-page.pipe';\n\nexport interface PaginationFilters {\n totalItems: number;\n itemsPerPage: number;\n currentPage: number;\n}\n\n@Component({\n selector: 'wz-pagination',\n templateUrl: './pagination.component.html'\n})\nexport class PaginationComponent {\n @Input() set pagination(pagination: PaginationFilters) {\n this._pagination = pagination;\n }\n get pagination(): PaginationFilters {\n return this._pagination;\n }\n private _pagination: PaginationFilters;\n\n @Output() pageChange: EventEmitter<PaginationFilters> = new EventEmitter();\n\n constructor() {}\n\n decrementPage() {\n if (this.pagination.currentPage <= 1) {\n return;\n }\n this.pagination.currentPage--;\n this.pageChange.emit(this.pagination);\n }\n\n incrementPage() {\n const isLastPage = new PagniationIsLastPage().transform(\n this.pagination.currentPage,\n this.pagination.totalItems,\n this.pagination.itemsPerPage\n );\n if (isLastPage) {\n return;\n }\n this.pagination.currentPage++;\n this.pageChange.emit(this.pagination);\n }\n\n onGotoPageChange(pageNumber) {\n this.pagination.currentPage = parseInt(pageNumber);\n this.pageChange.emit(this.pagination);\n }\n}\n","<div class=\"wz-pagination\" *ngIf=\"pagination && pagination.itemsPerPage\">\n <div class=\"wz-pagination__wrapper\">\n <div class=\"wz-pagination__wrapper__page\">\n <p>{{ 'PaginationComponent.page' | translate }}</p>\n\n <wz-page-selector [pagination]=\"pagination\" [totalItems]=\"pagination.totalItems\" (pageChange)=\"onGotoPageChange($event)\"></wz-page-selector>\n </div>\n\n <div class=\"wz-pagination__wrapper__elements\">\n <p>{{ pagination.currentPage | customPagniationText: pagination.totalItems:pagination.itemsPerPage }}</p>\n </div>\n\n <div class=\"wz-pagination__wrapper__arrows\">\n <div\n (click)=\"decrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--left\"\n [ngClass]=\"{ 'wz-pagination__wrapper__arrows__arrow--disabled': pagination.currentPage === 1 }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n <div\n (click)=\"incrementPage()\"\n class=\"wz-pagination__wrapper__arrows__arrow wz-pagination__wrapper__arrows__arrow--right\"\n [ngClass]=\"{\n 'wz-pagination__wrapper__arrows__arrow--disabled':\n pagination.currentPage | IsLastPage: pagination.totalItems:pagination.itemsPerPage\n }\"\n >\n <span class=\"wz-pagination__wrapper__arrows__arrow__icon\"></span>\n </div>\n </div>\n </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'numberToArray'\n})\nexport class NumberToArray implements PipeTransform {\n\n transform(number: number): any[] {\n return Array.from('x'.repeat(number));\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport {Component, EventEmitter, Input, OnInit, Output} from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { listAnnimation } from '../../../animations/listAnnimation/list.animation';\nimport { PictureNameUpdate, tabDisplayed } from '../../../dto/export-dtos.api';\nimport { AlertService } from '../../../services/alert.service';\nimport { ImgCDNService } from '../../../services/config/img-cdn.service';\nimport { ImgEventService } from '../../../services/img-event.service';\nimport { ImgManagerService } from '../../../services/img-manager.service';\nimport { ImgSelectionService } from '../../../services/img-selection.service';\nimport { ImagesActionHandler } from '../images-actions-handler';\nimport { ApiService } from '../../../services/api.service';\n\n@Component({\n selector: 'mosaic-view',\n templateUrl: './mosaic-view.component.html',\n animations: [\n listAnnimation\n ]\n})\nexport class MosaicViewComponent extends ImagesActionHandler implements OnInit {\n\n @Input()\n tabDisplayed: tabDisplayed;\n @Input()\n fullSize: boolean;\n @Input()\n nbFakeImg: number = 0;\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n constructor(\n imgManager: ImgManagerService,\n imgSelectionService: ImgSelectionService,\n http: HttpClient,\n imgCDNService: ImgCDNService,\n imgEventCardService: ImgEventService,\n alertService: AlertService,\n translateService: TranslateService,\n apiService: ApiService\n ) {\n super(\n imgManager,\n imgSelectionService,\n http,\n imgCDNService,\n imgEventCardService,\n alertService,\n translateService,\n apiService\n );\n }\n\n ngOnInit(): void {\n }\n\n onSearchChange(event: string) {\n // Reset table filters\n this.tableFilters.sort = undefined;\n this.tableFilters.order = undefined;\n this.tableFilters.currentPage = 1;\n this.filtersChange.emit(this.tableFilters);\n }\n\n onCardRenamePicture(pictureRenamed: PictureNameUpdate) {\n this.pictureNameChange.next(pictureRenamed);\n }\n\n switchDisplayWindowCard() {\n this.switchDisplayWindow.emit(true);\n }\n\n trackById(index: number, picture: any) {\n return picture.id;\n }\n}\n","<div class=\"mosaic\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small', 'mosaic--displayPexelsImg': displayPexelsResults}\">\n <!-- Search section -->\n <div\n class=\"mosaic__search\"\n [ngClass]=\"{'mosaic__search--small': stateDisplayed === 'small'}\"\n *ngIf=\"tabDisplayed !== 'img-upload'\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"onSearchChange($event)\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [smallPadding]=\"stateDisplayed === 'small'\"\n ></wz-input-search>\n </div>\n\n <!-- Cards section -->\n <div\n class=\"mosaic__container__cards\"\n [ngClass]=\"{'mosaic__container__cards--padding': stateDisplayed !== 'window'}\"\n [@listAnimation]=\"picturesList.length\"\n *ngIf=\"!isLoading && !displayPexelsResults\"\n >\n <img-card\n *ngFor=\"let picture of picturesList; let index = index; trackBy: trackById \"\n [picture]=\"picture\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [disable]=\"disable\"\n (toggleImgSelected)=\"onToggleSelectImg(index)\"\n (pictureNameChange)=\"onCardRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowCard()\"\n [fullSize]=\"fullSize\"\n ></img-card>\n <div\n *ngFor=\"let fakeImg of nbFakeImg | numberToArray\"\n class=\"mosaic__container__cards__fakeImg\"\n [ngClass]=\"{'mosaic__container__cards__fakeImg--smallFakeImg': stateDisplayed === 'small' || tabDisplayed === 'img-upload'}\">\n </div>\n </div>\n\n <!-- Loader section -->\n <div class=\"mosaic__container__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n\n <!-- Pagination section -->\n <div class=\"mosaic__pagination\" *ngIf=\"picturesList.length && tabDisplayed !== 'img-upload' && !displayPexelsResults\" >\n <wz-pagination\n [pagination]=\"tableFilters\"\n (pageChange)=\"onFiltersChange()\"\n >\n </wz-pagination>\n </div>\n\n</div>\n","import { Injectable } from '@angular/core';\nimport { NwbFilterGroup, NwbFilterRoutingBuilder } from '@wizishop/ng-wizi-bulma';\nimport { Subject } from 'rxjs';\nimport { PaginationFilters } from '../../components/shared/pagination/pagination.component';\n\nexport interface TableFilters extends PaginationFilters {\n sort: string;\n order: boolean;\n searchValue: string;\n}\n\n@Injectable()\nexport class FiltersTableService {\n filterGroups = new Map<string, NwbFilterGroup>();\n dataTableFilters: TableFilters = {\n sort: undefined,\n order: undefined,\n searchValue: undefined,\n totalItems: 0,\n itemsPerPage: 0,\n currentPage: 0\n };\n\n private sortSubject: Subject<any> = new Subject<any>();\n\n constructor(private filterRoutingBuilder: NwbFilterRoutingBuilder) {}\n\n getTableFilterGroup(dataTableName: string) {\n if (this.filterGroups.has(dataTableName)) {\n return this.filterGroups.get(dataTableName);\n }\n const filterGroup: NwbFilterGroup = this.filterRoutingBuilder.group(this.dataTableFilters, dataTableName);\n this.filterGroups.set(dataTableName, filterGroup);\n return filterGroup;\n }\n\n /**\n * Use to reset the others sorts of the table\n * @param dataTableName\n * @param sortName\n * @param order\n */\n emitSortChange(dataTableName: string, sortName: string, order: boolean) {\n this.sortSubject.next({ dataTableName, sortName, order });\n }\n\n getSortChangeListner() {\n return this.sortSubject.asObservable();\n }\n\n setPaginationFilters(dataTableName: string, totalItems: number, itemsPerPage: number, currentPage: number) {\n const filterGroup = this.getTableFilterGroup(dataTableName);\n filterGroup.setValues({\n itemsPerPage,\n currentPage\n });\n }\n\n setInitialPaginationFiltersIfNotExist(dataTableName: string, itemsPerPage: number, currentPage: number) {\n const filterGroup = this.getTableFilterGroup(dataTableName);\n filterGroup.setValues({\n itemsPerPage: filterGroup.get('itemsPerPage') ? parseInt(filterGroup.get('itemsPerPage')) : itemsPerPage,\n currentPage: filterGroup.get('currentPage') ? parseInt(filterGroup.get('currentPage')) : currentPage\n });\n }\n}","import { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\n\n@Component({\n selector: 'wz-checkbox',\n templateUrl: './checkbox.component.html',\n encapsulation: ViewEncapsulation.None,\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: CheckboxComponent, multi: true }]\n})\nexport class CheckboxComponent implements ControlValueAccessor {\n @Input()\n label = '';\n @Input()\n value: any;\n @Input()\n type: string;\n @Input()\n alone = false;\n @Input()\n checked = false;\n @Input()\n id = '';\n @Input()\n name: string;\n disabled = false;\n constructor() {}\n private _onChange: Function;\n private _onTouched: Function;\n\n registerOnChange(fn: any): void {\n this._onChange = fn;\n }\n\n registerOnTouched(fn: any): void {\n this._onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean): void {\n this.disabled = isDisabled;\n }\n\n writeValue(obj: any): void {\n this.value = obj;\n }\n\n onChange(value) {\n if (this._onChange) {\n this._onChange(value);\n }\n }\n}\n","<div class=\"checkBoxField field\" [ngClass]=\"{ 'field--nowrap': type === 'column', alone: alone }\">\n <div class=\"field__row\">\n <input\n type=\"checkbox\"\n [id]=\"id\"\n class=\"is-checkradio\"\n [name]=\"name\"\n [value]=\"value\"\n [disabled]=\"disabled\"\n [(ngModel)]=\"value\"\n [checked]=\"checked\"\n (ngModelChange)=\"onChange($event)\"\n />\n <label [attr.for]=\"id\">{{ label }}</label>\n </div>\n</div>\n","import { Component, EventEmitter, Input, OnInit, Output, ViewEncapsulation } from '@angular/core';\nimport { v4 as uuid } from 'uuid';\nimport { NwbFilterGroup } from '@wizishop/ng-wizi-bulma';\nimport { Subscription } from 'rxjs';\nimport { TableFilters, FiltersTableService } from '../../../services/table/filters-table.service';\n\n@Component({\n selector: 'wz-table',\n templateUrl: './table.component.html',\n encapsulation: ViewEncapsulation.None\n})\nexport class TableComponent implements OnInit {\n /// Input/Output of table filters ///\n\n @Input() tableFilters: TableFilters;\n @Output() tableFiltersChange: EventEmitter<TableFilters> = new EventEmitter();\n\n @Input() tableRoutingName: string; // Name of the table\n @Input() placeholder: string = '';\n\n private _filterGroup: NwbFilterGroup;\n\n /// Input/Output of checkbox ///\n\n /** Pass to true to display checkbox in the header table */\n @Input() checkbox = false;\n /** Emit new header checboxValue */\n @Output() toggleAllCheckBox: EventEmitter<boolean> = new EventEmitter();\n\n /// Input to disable section ///\n\n /** Pass to true to hide search input */\n @Input() disableSearch: boolean = false;\n /** Pass to true to hide the pagniator */\n @Input() disablePagniation: boolean = false;\n\n /// Input for loader on table body ///\n @Input() isLoading = false;\n\n /// Private variables ///\n headerCheckBoxId: string;\n private filterGroupChangeSub: Subscription;\n\n constructor(private filtersTableService: FiltersTableService) {}\n\n ngOnInit(): void {\n this.headerCheckBoxId = uuid(); // Create checkbox unique id\n\n /* Handle routing filters */\n if (this.tableRoutingName) {\n this._filterGroup = this.filtersTableService.getTableFilterGroup(this.tableRoutingName);\n\n // Performe initial fetch data\n this._filterGroup.valuesChange$.next([]);\n\n this.setTablesFilters();\n\n // Listen to filters changes with debounced time to limit multiple api calls\n this.filterGroupChangeSub = this._filterGroup.valuesChange$.subscribe(filters => {\n this.setTablesFilters();\n });\n }\n }\n\n onToggleAllCheckBox(event) {\n this.toggleAllCheckBox.emit(event.target.checked);\n }\n\n searchChange(event: string) {\n // Reset table filters\n this.tableFilters.sort = undefined;\n this.tableFilters.order = undefined;\n this.tableFilters.currentPage = 1;\n this.tableFiltersChange.emit(this.tableFilters);\n\n // Reset routing filters\n if (this._filterGroup) {\n this._filterGroup.setValues({\n searchValue: this.tableFilters.searchValue,\n sort: undefined,\n order: undefined,\n currentPage: 1\n });\n }\n }\n\n pageChange() {\n this.tableFiltersChange.emit(this.tableFilters);\n if (this._filterGroup) {\n this._filterGroup.setValues({\n itemsPerPage: this.tableFilters.itemsPerPage,\n currentPage: this.tableFilters.currentPage\n });\n }\n }\n\n /**\n * Set tableFilters from routing data existing in the url\n * */\n private setTablesFilters() {\n this.tableFilters = {\n sort: this._filterGroup.get('sort'),\n order: this._filterGroup.get('order'),\n searchValue: this._filterGroup.get('searchValue'),\n itemsPerPage: this._filterGroup.get('itemsPerPage') ? parseInt(this._filterGroup.get('itemsPerPage')) : 0,\n currentPage: this._filterGroup.get('currentPage') ? parseInt(this._filterGroup.get('currentPage')) : 0,\n totalItems: this.tableFilters.totalItems\n };\n this.tableFiltersChange.emit(this.tableFilters);\n }\n\n ngDestroy() {\n if (this.filterGroupChangeSub) {\n this.filterGroupChangeSub.unsubscribe();\n }\n }\n}\n","<div class=\"wz-table\">\n <!-- Header section -->\n <div class=\"wz-table__head\" id=\"headerTable\">\n <div *ngIf=\"checkbox\" class=\"wz-table__head__cell wz-table__head__cell--checkbox\">\n <wz-checkbox [id]=\"headerCheckBoxId\" (change)=\"onToggleAllCheckBox($event)\" [alone]=\"true\"></wz-checkbox>\n </div>\n\n <!-- Header contents are added with the headerCell directive -->\n <ng-content select=\"[headerCell]\"></ng-content>\n </div>\n\n <!-- Search section -->\n <div *ngIf=\"!disableSearch\" class=\"wz-table__search\">\n <wz-input-search\n [(ngModel)]=\"tableFilters.searchValue\"\n (changeDebounced)=\"searchChange($event)\"\n [placeholder]=\"placeholder\"\n [smallPadding]=\"true\"\n ></wz-input-search>\n </div>\n\n <!-- Body section -->\n <div class=\"wz-table__body\">\n <!-- Loader on body -->\n <div class=\"wz-table__body__loader\" *ngIf=\"isLoading\">\n <wz-loader [small]=\"true\"></wz-loader>\n </div>\n <!-- Body contents are added with the tableRow directive -->\n <ng-content select=\"[tableRow]\" *ngIf=\"!isLoading\"></ng-content>\n </div>\n\n <!-- Pagination section -->\n <wz-pagination *ngIf=\"!disablePagniation\" [pagination]=\"tableFilters\" (pageChange)=\"pageChange()\"></wz-pagination>\n</div>\n","import { DOCUMENT } from '@angular/common';\nimport { Inject } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n selector: '[tableColumn]'\n})\nexport class TableColumn {\n @Input('columnSize') columnSize: string; // Optional.\n @Input('centerCell') centerCell: string; // Optional. left|center|right\n\n private centerCellValue: string[] = ['left', 'center', 'right'];\n\n constructor(private currentCell: ElementRef, private renderer: Renderer2, @Inject(DOCUMENT) private document) {}\n\n ngAfterViewInit() {\n this.applyCustomStylesOnCell();\n }\n\n applyCustomStylesOnCell() {\n this.currentCell.nativeElement.style.flexGrow = typeof this.columnSize !== 'undefined' ? this.columnSize : '1';\n this.renderer.addClass(this.currentCell.nativeElement, 'wz-table__body__line__cell');\n\n if (this.centerCell) {\n if (this.centerCellValue.indexOf(this.centerCell) === -1) {\n throw 'Error : The centerCell directive has no matched value. The value must be one of the following : left, center, right.';\n }\n\n let className = 'wz-table__body__line__cell--center' + '--' + this.centerCell;\n this.renderer.addClass(this.currentCell.nativeElement, className);\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport {\n ComponentFactoryResolver,\n EventEmitter,\n Inject,\n Output,\n Renderer2,\n Directive,\n ElementRef,\n Input,\n ComponentRef,\n ApplicationRef,\n EmbeddedViewRef,\n Injector,\n Type\n} from '@angular/core';\n\nimport { v4 as uuid } from 'uuid';\nimport { CheckboxComponent } from '../../components/shared/checkbox/checkbox.component';\n\n@Directive({\n selector: '[checkBoxRow]'\n})\nexport class CheckBoxRow {\n @Input('checkBoxId') checkBoxId: string | number;\n @Input('checkBoxName') checkBoxName: string;\n\n @Input('checkBoxValue') set checkBoxValue(value: boolean) {\n this._value = value;\n if (this.checkboxComponentRef) {\n this.setCheckBoxValue();\n }\n }\n _value: boolean;\n get checkBoxValue(): boolean {\n return this._value;\n }\n\n @Output() checkBoxValueChange: EventEmitter<boolean> = new EventEmitter();\n\n private checkboxComponentRef: ComponentRef<CheckboxComponent>;\n private htmlContainer: HtmlContainer;\n\n constructor(\n private currentRow: ElementRef,\n private appRef: ApplicationRef,\n private renderer: Renderer2,\n @Inject(DOCUMENT) private document,\n private resolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n ngOnInit() {\n this.createCheckBoxComponent();\n this.handleChecboxInputs();\n this.handleCheckboxOutputs();\n }\n\n createCheckBoxComponent() {\n // Create the container\n const checkBoxContainer = document.createElement('div');\n checkBoxContainer.className = 'wz-table__body__line__cell wz-table__body__line__cell--checkbox';\n\n // Insert divCheckBox in the DOM as the first child of the row\n this.renderer.insertBefore(this.currentRow.nativeElement, checkBoxContainer, this.currentRow.nativeElement.firstChild);\n\n // Insert the CheckBoxComponent inside the container (DOM and Angular DOM)\n this.htmlContainer = new HtmlContainer(checkBoxContainer, this.appRef, this.resolver, this.injector);\n this.checkboxComponentRef = this.htmlContainer.attach(CheckboxComponent);\n }\n\n private handleChecboxInputs() {\n this.checkboxComponentRef.instance.id = this.checkBoxId ? this.checkBoxId : uuid();\n this.checkboxComponentRef.instance.name = this.checkBoxName ? this.checkBoxName : undefined;\n this.checkboxComponentRef.instance.alone = true;\n this.setCheckBoxValue();\n }\n\n private setCheckBoxValue() {\n this.checkboxComponentRef.instance.value = this.checkBoxValue;\n }\n\n private handleCheckboxOutputs() {\n // Detect checkbox changes\n this.checkboxComponentRef.instance.registerOnChange(() => {\n this._toggleCheckbox();\n });\n }\n\n private _toggleCheckbox() {\n this.checkBoxValue = !this.checkBoxValue;\n this.checkBoxValueChange.emit(this.checkBoxValue);\n }\n\n ngOnDestroy() {\n this.htmlContainer.dispose();\n }\n}\n\nexport class HtmlContainer {\n private attached: boolean = false;\n\n private disposeFn: () => void;\n\n constructor(\n private hostElement: Element,\n private appRef: ApplicationRef,\n private componentFactoryResolver: ComponentFactoryResolver,\n private injector: Injector\n ) {}\n\n attach(component: Type<any>): ComponentRef<any> {\n if (this.attached) {\n throw new Error('component has already been attached');\n }\n\n this.attached = true;\n const childComponentFactory = this.componentFactoryResolver.resolveComponentFactory(component);\n\n let componentRef = childComponentFactory.create(this.injector);\n\n this.appRef.attachView(componentRef.hostView);\n this.disposeFn = () => {\n this.appRef.detachView(componentRef.hostView);\n componentRef.destroy();\n };\n\n this.hostElement.appendChild((componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0]);\n\n return componentRef;\n }\n\n dispose() {\n if (this.attached) {\n this.disposeFn();\n }\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { EventEmitter, Inject, Output } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Directive, ElementRef, Input } from '@angular/core';\nimport { NwbFilterGroup } from '@wizishop/ng-wizi-bulma';\nimport { Subscription } from 'rxjs';\nimport { FiltersTableService, TableFilters } from '../../services/table/filters-table.service';\n\n@Directive({\n // The selector has the same name as the headerCell selector in table.component.html\n selector: '[headerCell]'\n})\nexport class TableColumnHeader {\n @Input('headerName') // Optional.\n set headerName(value: string) {\n this._headerName = value;\n this.setHeaderName();\n }\n _headerName: string = '';\n get headerName(): string {\n return this._headerName;\n }\n @Input('columnSize') columnSize: string; // Optional.\n @Input('filterRouting') filterRouting: boolean = false; // Optional. Set to true to use Filter Routing.\n @Input('tableName') tableName: string; // Optional, but mandatory to handle sorting\n @Input('sortName') sortName: string; // Optional, but mandatory to handle sorting\n @Input('centerCell') centerCell: string; // Optional. left|center|right\n @Output() onSortChange: EventEmitter<boolean> = new EventEmitter(); // Emit the sort value (true, false, undefuned) of the current sort icon when clicking\n @Input() tableFilters: TableFilters;\n @Output() tableFiltersChange: EventEmitter<TableFilters> = new EventEmitter();\n\n private centerCellValue: string[] = ['left', 'center', 'right'];\n\n private contentHeader: HTMLAnchorElement;\n private filterGroup: NwbFilterGroup;\n\n private subscriptions: Subscription[] = [];\n\n constructor(\n private currentCell: ElementRef,\n private renderer: Renderer2,\n @Inject(DOCUMENT) private document,\n private filtersTableService: FiltersTableService\n ) {}\n\n ngOnInit() {\n if (this.tableName && this.sortName) {\n if (this.filterRouting) {\n this.handleSortRouting();\n } else {\n this.handleSortBasic();\n }\n }\n }\n\n ngAfterViewInit() {\n this.applyCustomStylesOnCell();\n this.renderHeaderColumn();\n }\n\n handleSortRouting() {\n this.filterGroup = this.filtersTableService.getTableFilterGroup(this.tableName);\n\n const filterGroupChangeSub = this.filterGroup.valuesChange$.subscribe(filters => {\n const filterSort = filters.filter(filter => filter.key === 'sort')[0];\n if (this.sortName !== filterSort.value) {\n this.resetSortIcon();\n }\n });\n this.subscriptions.push(filterGroupChangeSub);\n }\n\n handleSortBasic() {\n const sortChangeSub = this.filtersTableService.getSortChangeListner().subscribe(sort => {\n if (this.tableName === sort.dataTableName && this.sortName !== sort.sortName) {\n // Reset the current sort icon\n this.resetSortIcon();\n }\n });\n this.subscriptions.push(sortChangeSub);\n }\n\n resetSortIcon() {\n // Replace current icon with default icon\n this.contentHeader.className = this.contentHeader.className.replace(this.getCurrentSortIcon(), 'idle');\n }\n\n applyCustomStylesOnCell() {\n this.currentCell.nativeElement.style.flexGrow = typeof this.columnSize !== 'undefined' ? this.columnSize : '1';\n this.renderer.addClass(this.currentCell.nativeElement, 'wz-table__head__cell');\n\n if (this.centerCell) {\n if (this.centerCellValue.indexOf(this.centerCell) === -1) {\n throw 'Error : The centerCell directive has no matched value. The value must be one of the following : left, center, right.';\n }\n\n let className = 'wz-table__head__cell--center' + '--' + this.centerCell;\n this.renderer.addClass(this.currentCell.nativeElement, className);\n }\n }\n\n renderHeaderColumn() {\n this.createHeaderContent();\n this.renderer.appendChild(this.currentCell.nativeElement, this.contentHeader);\n }\n\n createHeaderContent() {\n this.contentHeader = document.createElement('a');\n this.contentHeader.className = 'wz-table__head__cell__search';\n this.setHeaderName();\n if (this.tableName && this.sortName) {\n this.handleSort();\n }\n }\n\n private setHeaderName() {\n if (!this.contentHeader) {\n return;\n }\n this.contentHeader.innerHTML = this.headerName;\n }\n\n handleSort() {\n // Set icon in the header column cell\n this.contentHeader.className += ' wz-table__head__cell__search--' + this.getInitialSortIcon();\n\n // On click on the content header, change the icon and emit event\n this.renderer.listen(this.contentHeader, 'click', () => {\n const currentIcon = this.getCurrentSortIcon();\n let newIcon: string;\n let newSort: string, newOrder: boolean;\n\n switch (currentIcon) {\n case 'idle':\n newIcon = 'up';\n newSort = this.sortName;\n newOrder = true;\n break;\n\n case 'up':\n newIcon = 'down';\n newSort = this.sortName;\n newOrder = false;\n break;\n\n case 'down':\n newIcon = 'idle';\n break;\n\n default:\n newIcon = 'idle';\n break;\n }\n // Replace the icon\n this.contentHeader.className = this.contentHeader.className.replace(currentIcon, newIcon);\n\n this.emitEvents(newSort, newOrder);\n });\n }\n\n getInitialSortIcon() {\n if (!this.filterRouting) {\n return 'idle';\n }\n // Get Initial Sort Icon for Routing Filter\n let initialSortIcon = 'idle';\n if (this.filterGroup.get('sort') === this.sortName) {\n initialSortIcon = this.filterGroup.get('order') == 'true' ? 'up' : 'down';\n }\n return initialSortIcon;\n }\n\n getCurrentSortIcon() {\n const regexp = /wz-table__head__cell__search--(?<icon>\\w+)/;\n const { groups } = regexp.exec(this.contentHeader.className);\n return groups.icon;\n }\n\n emitEvents(newSort, newOrder) {\n if (this.filterRouting) {\n // Will send the filter routing value has changes event\n this.filterGroup.setValues({\n sort: newSort,\n order: newOrder,\n currentPage: 1\n });\n } else {\n // Send the event sort change\n this.filtersTableService.emitSortChange(this.tableName, this.sortName, newOrder);\n }\n if (this.tableFilters) {\n this.tableFilters.sort = this.sortName;\n this.tableFilters.order = newOrder;\n this.tableFilters.currentPage = 1;\n this.tableFiltersChange.emit(this.tableFilters);\n }\n this.onSortChange.emit(newOrder);\n }\n\n ngOnDestroy(): void {\n this.subscriptions.forEach(subscription => {\n subscription.unsubscribe();\n });\n }\n}\n","import { DOCUMENT } from '@angular/common';\nimport { Inject } from '@angular/core';\nimport { Renderer2 } from '@angular/core';\nimport { Directive, ElementRef } from '@angular/core';\n\n@Directive({\n // The selector has the same name as the tableRaw selector in table.component.html\n selector: '[tableRow]'\n})\nexport class TableRow {\n constructor(private currentCell: ElementRef, private renderer: Renderer2, @Inject(DOCUMENT) private document) {}\n\n ngAfterViewInit() {\n this.applyCustomStylesOnCell();\n }\n\n applyCustomStylesOnCell() {\n this.renderer.addClass(this.currentCell.nativeElement, 'wz-table__body__line');\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Component, OnInit } from '@angular/core';\nimport { TranslateService } from '@ngx-translate/core';\nimport { listAnnimation } from '../../../animations/listAnnimation/list.animation';\nimport { AlertService } from '../../../services/alert.service';\nimport { ImgCDNService } from '../../../services/config/img-cdn.service';\nimport { ImgEventService } from '../../../services/img-event.service';\nimport { ImgManagerService } from '../../../services/img-manager.service';\nimport { ImgSelectionService } from '../../../services/img-selection.service';\nimport { ImagesActionHandler } from '../images-actions-handler';\nimport { ApiService } from '../../../services/api.service';\n\n@Component({\n selector: 'table-view',\n templateUrl: './table-view.component.html',\n animations: [\n listAnnimation\n ]\n})\nexport class TableViewComponent extends ImagesActionHandler implements OnInit {\n dataTableName: string = 'imgagesView'; // Name of your table\n\n constructor(\n imgManager: ImgManagerService,\n imgSelectionService: ImgSelectionService,\n http: HttpClient,\n imgCDNService: ImgCDNService,\n imgEventCardService: ImgEventService,\n alertService: AlertService,\n translateService: TranslateService,\n apiService: ApiService\n ) {\n super(\n imgManager,\n imgSelectionService,\n http,\n imgCDNService,\n imgEventCardService,\n alertService,\n translateService,\n apiService\n );\n }\n\n ngOnInit() {\n }\n\n}\n","<div class=\"table-view\" [@listAnimation]=\"picturesList.length\">\n <wz-table\n [checkbox]=\"true\"\n (toggleAllCheckBox)=\"onToggleAllCheckBoxRow($event)\"\n [(tableFilters)]=\"tableFilters\"\n (tableFiltersChange)=\"onFiltersChange()\"\n [placeholder]=\"'ImgManager.SearchBar.placeholder' | translate\"\n [disablePagniation]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n >\n <!-- Header Section -->\n <div\n headerCell\n [headerName]=\"'ImgManager.ImgList.titleImgName' | translate\"\n columnSize=\"2\"\n sortName=\"name\"\n ></div>\n <div\n headerCell\n centerCell=\"center\"\n [headerName]=\"'ImgManager.ImgList.titleResolution' | translate\"\n ></div>\n <div headerCell columnSize=\"0\"></div>\n\n <!-- Body Section -->\n <div\n tableRow\n checkBoxRow\n [checkBoxValue]=\"picture.delSelected\"\n (checkBoxValueChange)=\"onToggleDelSelection(index)\"\n *ngFor=\"let picture of picturesList; let index = index\"\n >\n\n <div tableColumn columnSize=\"2\">\n <div class=\"table-view__row__container\">\n <div\n class=\"table-view__row__container__imgContainer\"\n [ngClass]=\"{'imgSelected': picture.selected}\"\n (click)=\"onToggleSelectImg(index)\">\n <img\n class=\"table-view__row__container__imgContainer__img\"\n [src]=\"picture.file_name | imgSrc : '100'\"\n alt=\"picture.display_name\"\n [ngClass]=\"{'pictureDeletion': picture.deleted}\"\n (error)=\"picture.imgNotLoaded=true;onPictureNotLoading($event);\"\n />\n <!-- If the img is not loaded, or the link is broken, an icon is displayed -->\n <div\n *ngIf=\"picture.imgNotLoaded\"\n class=\"table-view__row__container__imgContainer__overlay\"\n >\n <i class=\"fad fa-folder-times\"></i>\n </div>\n </div>\n <input\n type=\"text\"\n class=\"wzImgMngInput table-view__row__container__name\"\n [(ngModel)]=\"picture.display_name\"\n (focus)=\"previousName=picture.display_name\"\n (blur)=\"onNameChange(picture.id_file)\"\n (click)=\"onToggleDelSelection(index)\"\n [ngClass]=\"{'desabled': picture.deleted}\"\n [disabled]=\"picture.deleted\"\n >\n </div>\n </div>\n\n <div\n tableColumn\n centerCell=\"center\"\n (click)=\"onToggleDelSelection(index)\"\n >\n <p class=\"grey\">{{picture.raw_height}}x{{picture.raw_width}}</p>\n </div>\n\n <div tableColumn centerCell=\"center\" columnSize=\"0\" class=\"table-view__dropdown-options\">\n <!-- Dropdown -->\n <dropdown dropdownId=\"dropdown-options\" [disable]=\"picture.deleted\">\n <ng-container label>\n <div class=\"table-view__dropdown-options__label rotate\">\n <span> <i class=\"far fa-ellipsis-h is-size-4\" aria-haspopup=\"true\" aria-controls=\"dropdown-menu\"> </i> </span>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onDownloadImg(picture.display_name, picture.file_name)\"\n >\n <i class=\"far fa-download download\"></i>&nbsp;\n <p>{{ 'ImgManager.ImgList.download' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onEdit(picture)\"\n >\n <i class=\"far fa-crop-alt edit\"></i>&nbsp;\n <p>{{ 'ImgManager.ImgList.edit' | translate }}</p>\n </div>\n </ng-container>\n <ng-container item>\n <div\n class=\"dropdown-item\"\n (click)=\"onRemoveImg(picture)\"\n >\n <i class=\"fal fa-times deleted\"></i>&nbsp;\n <p>{{ 'ImgManager.ImgList.remove' | translate }}</p>\n </div>\n </ng-container>\n </dropdown>\n </div>\n </div>\n </wz-table>\n</div>\n","import {Component, OnInit, Input, ViewChild, ElementRef, AfterViewInit, Output, EventEmitter, inject, ChangeDetectionStrategy, ChangeDetectorRef} from '@angular/core';\nimport { ImgPictureDTO, ImgPicturesDTO, ParamsImgManagerDTO } from '../../dto/img-manager.dto';\nimport { ImgManagerService } from '../../services/img-manager.service';\nimport { Subscription, Subject} from 'rxjs';\nimport { debounceTime, take } from 'rxjs/operators';\nimport { ImgEventService } from '../../services/img-event.service';\nimport { ImgSelectionService } from '../../services/img-selection.service';\nimport { UserSettingsService } from '../../services/user-settings.service';\nimport { TableFilters } from '../../services/table/filters-table.service';\nimport { PictureNameUpdate } from '../../dto/picture-name-update.dto';\nimport { easeInOut } from '../../animations/easeInOut/ease-in-out.animation';\nimport { insertRemove } from '../../animations/insertRemove/insert-remove.animation';\nimport { stateDisplayed, tabDisplayed } from '../../dto/export-dtos.api';\nimport { RenamePictureService } from '../../services/rename-picture.service';\nimport { AlertService } from '../../services/alert.service';\n\n@Component({\n selector: 'images-view',\n templateUrl: './images-view.component.html',\n animations: [\n easeInOut,\n insertRemove\n ]\n})\nexport class ImagesViewComponent implements OnInit, AfterViewInit {\n\n @Input() stateDisplayed: stateDisplayed;\n @Input() tabDisplayed: tabDisplayed;\n @Input() fullSize: boolean;\n @Input() maxLengthCardShow: number;\n @Input() nbRowToShow: number;\n @Input() listDisplayed = false; // Display format list or mosaic\n @Input() multipleImgMode = false;\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n // Data filters\n tableFilters: TableFilters = {\n sort: undefined,\n order: undefined,\n searchValue: '',\n totalItems: 0,\n itemsPerPage: 0,\n currentPage: 1\n };\n\n @ViewChild('imgLibContainer') imgLibContainer : ElementRef;\n widthLargeCard: number = 219; // Default value of a card width 199 + margin 20\n widthSmallCard: number = 160; // Default value of a card width 140 + margin 20\n nbMinImgPerLine: number;\n nbMaxImgPerLine: number;\n nbFakeImg: number = 0;\n\n imgFullWidthConfig:any = [\n {\n max: 419,\n largeImgWidthFactor : 1,\n smallImgWidthFactor : 0.5\n },\n {\n max: 499,\n largeImgWidthFactor : 1,\n smallImgWidthFactor : 0.5\n },\n {\n max: 719, // tablet\n largeImgWidthFactor : 0.5,\n smallImgWidthFactor : 0.3333\n },\n {\n max: 1023, // deskop\n largeImgWidthFactor : 0.3333,\n smallImgWidthFactor : 0.2\n },\n {\n max: 1399,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.125\n },\n {\n max: 1599,\n largeImgWidthFactor : 0.2,\n smallImgWidthFactor : 0.1111\n },\n {\n largeImgWidthFactor : 0.1666,\n smallImgWidthFactor : 0.1\n }\n ];\n\n imgWidthConfig:any = [\n {\n max: 1024,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.125\n },\n {\n max: 1199,\n largeImgWidthFactor : 0.3333,\n smallImgWidthFactor : 0.2\n },\n {\n max: 1299,\n largeImgWidthFactor : 0.3333,\n smallImgWidthFactor : 0.1666\n },\n {\n max: 1399,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.1666\n },\n {\n max: 1599,\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.14\n },\n {\n largeImgWidthFactor : 0.25,\n smallImgWidthFactor : 0.125\n }\n ];\n\n imgSubscribe: Subscription;\n imgRemovedEvent: Subscription;\n imgAddedEvent: Subscription;\n imgSelectionChange: Subscription;\n searchQueryChanged: Subject<string> = new Subject<string>();\n filtersChanged: Subject<void> = new Subject<void>();\n\n picturesList: ImgPictureDTO[] = [];\n savePictureList: ImgPictureDTO[] = [];\n imgSelectedList: ImgPictureDTO[];\n searchedValue: string; // Value from the search bar or img added by canva\n nbImgToDelSelected: number = 0;\n disable: boolean = false; // Use to disable action during server request\n isLoading: boolean = true;\n isTotalRetrieved: boolean = false;\n delListImgLoader = false;\n initComponent: boolean = true;\n failLoaded: boolean = false;\n displayPexelsResults: boolean = false; // Use when no img find by name, display img from Pexels\n searchText: string;\n confirmImgSup:boolean = false;\n previousSearchValue: string;\n\n // Paginator Params\n pageIndex: number =0;\n length: number = 0;\n pageSize: number = 30; // Default value\n pageSizeOptions: number[] = [25, 50, 100, 250];\n\n // Api Img manager Params\n params:ParamsImgManagerDTO;\n\n private errorGetAllImg = 'ImgManager.ImgLib.errorGetAllImg';\n private errorGetTotalImg = 'ImgManager.ImgLib.errorGetTotalImg';\n private errorGetImg = 'ImgManager.ImgLib.errorGetCanvaImg';\n private msgNoImgFound = 'ImgManager.ImgLib.noImgFound';\n private errorRemoveImg = 'ImgManager.ImgList.errorRemoveImg';\n\n constructor(\n private imgManager: ImgManagerService,\n private imgEventService: ImgEventService,\n private imgSelectionService: ImgSelectionService,\n private alertService: AlertService,\n private userSettingsService: UserSettingsService,\n private renamePictureService: RenamePictureService,\n private changeDetectorRef: ChangeDetectorRef) { }\n\n ngOnInit(): void {\n /* if (this.maxLengthCardShow) {\n this.reducePictureListMaxLength();\n } */\n this.setEvents();\n this.imgSelectedList = this.imgSelectionService.getImgSelection();\n }\n\n ngAfterViewInit() {\n this.setNbImgToDisplay();\n this._getImgList();\n if (!this.savePictureList) {\n this.savePictureList = this.picturesList;\n }\n }\n\n getImgList() {\n this.filtersChanged.next();\n }\n\n /**\n * true : go to list display\n * false : go to mosaic display\n * @param activate\n */\n onSwitchFormatDisplayed(activate: boolean) {\n this.listDisplayed = activate;\n this.userSettingsService.setUserDisplayPreference(activate);\n this.imgEventService.emitlistDisplayedChange(activate);\n }\n\n /**\n * Calcul the number of img selected for masse deletion\n */\n onImgSelected() {\n this.setNbImgToDelSelected();\n }\n\n onShowImgUploaded() {\n this.searchText = null;\n this.searchedValue = null;\n this.getImgList();\n }\n\n onRenamePicture(pictureRenamed: PictureNameUpdate) {\n console.log('onRenamePicture pictureRenamed', pictureRenamed);\n this.renamePictureService.renamePicture(pictureRenamed);\n }\n\n removeListImg() {\n if (this.disable) {\n return;\n }\n this.disable = true;\n this.delListImgLoader = true;\n this.confirmImgSup = false;\n\n // Get the id of the img to remove\n // And add deleted property\n const idImgToRemove: string[] = [];\n this.picturesList.forEach( img => {\n if (img.delSelected) {\n img.deleted = true;\n idImgToRemove.push(img.id_file);\n }\n });\n\n this.imgManager.removeMultipleImg(idImgToRemove).subscribe(\n () => {\n this.getImgList();\n this.imgSelectionService.removeImgSelectionByIds(idImgToRemove);\n },\n error => {\n this.getImgList();\n this.alertService.openAlert(this.errorRemoveImg);\n }\n );\n\n\n }\n\n selectImgChosen() {\n if (this.disable) {\n return;\n }\n const picturesListSelected: ImgPictureDTO[] = [];\n this.picturesList.map(img => {\n if(img.delSelected) {\n img.delSelected =false;\n img.selected = true;\n }\n if (img.selected) {\n picturesListSelected.push(img);\n }\n });\n this.setNbImgToDelSelected();\n this.imgSelectionService.setImgSelection(picturesListSelected);\n }\n\n displayConfirmImgSup(){\n if (this.disable) {\n return;\n }\n this.confirmImgSup = true;\n }\n\n cancelSup() {\n this.confirmImgSup = false;\n }\n\n /**\n * Event emit when a img selected in order to delete\n */\n onPicturesListChange() {\n this.setNbImgToDelSelected();\n }\n\n onFiltersChange() {\n this.getImgList();\n }\n\n /**\n * Set default number of img per page to display at the initialisation\n * This number is between 30 and 50\n */\n private setNbImgToDisplay() {\n const containerWidth = this.imgLibContainer.nativeElement.offsetWidth + 30; // + 30px -> left + right margin\n const scrollWidth = window.innerWidth - document.body.offsetWidth;\n\n const [maxImgWidthFactor, minImgWidthFactor] = this.getImgWidthFactors();\n\n const minImgWidth = Math.floor(containerWidth * minImgWidthFactor);\n const maxImgWidth = Math.ceil((containerWidth + scrollWidth ) * maxImgWidthFactor);\n\n this.nbMaxImgPerLine = Math.floor(containerWidth / minImgWidth);\n this.nbMinImgPerLine = Math.floor( (containerWidth + scrollWidth ) / maxImgWidth);\n\n this.pageSize = this.getTotalImgPerPage();\n }\n\n private getImgWidthFactors(): number[] {\n const screenWidth = window.innerWidth;\n let minWidth:number = 0;\n let imgSizesConfig: number[] = [];\n\n const currentImgWidthConfig = this.fullSize ? this.imgFullWidthConfig : this.imgWidthConfig;\n\n for (const widthConfig of currentImgWidthConfig) {\n if (!widthConfig.max) {\n imgSizesConfig = [widthConfig.largeImgWidthFactor, widthConfig.smallImgWidthFactor];\n break;\n }\n if (minWidth < screenWidth && screenWidth <= widthConfig.max) {\n imgSizesConfig = [widthConfig.largeImgWidthFactor, widthConfig.smallImgWidthFactor];\n break;\n }\n minWidth = widthConfig.max;\n }\n return imgSizesConfig;\n }\n\n private getTotalImgPerPage(): number {\n if (this.nbRowToShow) {\n const nbImgPerLine = this.stateDisplayed === 'full' ? this.nbMinImgPerLine : this.nbMaxImgPerLine;\n return nbImgPerLine * this.nbRowToShow;\n }\n\n let total = this.nbMinImgPerLine;\n\n while (total < 30 || total % this.nbMaxImgPerLine !== 0 || total % this.nbMinImgPerLine !== 0) {\n total += this.nbMinImgPerLine;\n }\n return total;\n }\n\n private setParams() {\n this.params = {\n limit: this.maxLengthCardShow?.toString() || (this.tableFilters.itemsPerPage ? this.tableFilters.itemsPerPage.toString() : this.pageSize.toString()),\n page: this.tableFilters.currentPage.toString()\n };\n if (this.tableFilters.searchValue) {\n this.params.search = this.tableFilters.searchValue.toString();\n }\n }\n\n private initVariables(loadingSuccess: boolean) {\n this.nbImgToDelSelected = 0;\n this.disable = false;\n this.isLoading = false;\n this.delListImgLoader = false;\n this.initComponent = false;\n this.displayPexelsResults = false;\n this.failLoaded = !loadingSuccess;\n this.nbFakeImg = 0;\n }\n\n private selectImgSelected () {\n if (!this.imgSelectedList || !this.imgSelectedList.length) {\n return;\n }\n\n const idImgSlectedList: string[] = [];\n\n this.imgSelectedList.forEach(img =>\n idImgSlectedList.push(img.id_file)\n );\n\n this.picturesList.forEach(picture => {\n if (idImgSlectedList.indexOf(picture.id_file) !== -1) {\n picture.selected = true;\n }\n });\n }\n\n private displayPexelsLib () {\n this.displayPexelsResults = true;\n this.alertService.openAlert(this.msgNoImgFound);\n }\n\n /**\n * Set a img list in order to fill properly all the line of images displayed in mosaic.\n * Otherwise, the space-between css will do a bad display\n */\n private calculateNbImgFake(nbImgDisplayed: number) {\n const nbImgPerLine = this.stateDisplayed === 'small' || this.tabDisplayed === 'img-upload' ? this.nbMaxImgPerLine : this.nbMinImgPerLine;\n\n if (nbImgDisplayed % nbImgPerLine !== 0) {\n this.nbFakeImg = nbImgPerLine - nbImgDisplayed % nbImgPerLine;\n }\n }\n\n private getImg (id_file: string) {\n this.imgManager.getShopImg(id_file).pipe(take(1)).subscribe({\n next: (picture) => {\n\n if (!this.imgAlreadyExist(picture.id_file)) {\n // check the img is not already present\n this.picturesList.unshift(picture);\n this.length += 1;\n }\n },\n error: () => {\n this.alertService.openAlert(this.errorGetImg);\n }\n });\n }\n\n private imgAlreadyExist (id_file: string): boolean {\n for (const img of this.picturesList) {\n if (img.id_file === id_file) {\n return true;\n }\n }\n return false;\n }\n\n private setNbImgToDelSelected () {\n this.nbImgToDelSelected = this.picturesList.filter(img =>\n img.delSelected).length;\n\n if (!this.nbImgToDelSelected) {\n this.confirmImgSup = false;\n }\n }\n\n private setEvents() {\n // Add a timer to retrieve img when the search bar or the paginator are used\n this.searchQueryChanged\n .pipe(debounceTime(400)) // wait 0.5 sec after the last event before emitting last event\n .subscribe(data => {\n this.getImgList();\n });\n\n this.filtersChanged\n .pipe(debounceTime(800)) // wait 0.8 sec after the last event before emitting last event\n .subscribe(data => {\n this._getImgList();\n });\n\n // Reload img when img is/are removed\n this.imgRemovedEvent = this.imgEventService.imgRemoved$.subscribe(id_file =>{\n this.getImgList();\n });\n\n // Create img from Canva\n this.imgAddedEvent = this.imgEventService.getImgAddedEventListner().subscribe(id_file =>{\n if (id_file && !this.imgAlreadyExist(id_file)) {\n this.getImg(id_file);\n }\n });\n\n this.imgSelectionChange = this.imgSelectionService.imgSelection$.subscribe(imgSelection =>{\n if (this.listDisplayed) {\n return;\n }\n const idFileList = [];\n imgSelection.map(img => idFileList.push(img.id_file));\n for (const picture of this.picturesList) {\n if (idFileList.indexOf(picture.id_file) === -1) {\n picture.selected = false;\n }\n }\n });\n }\n\n private _getImgList() {\n this.isLoading = true;\n this.displayPexelsResults = false;\n this.setParams();\n\n this.refreshTotalImgList();\n\n const forceToUpdate = this.isLastImgRemovedInList();\n this.imgManager.getShopImgList(this.params, forceToUpdate).pipe(take(1)).subscribe({\n next: (data) => {\n this.initVariables(true);\n const nbImgDisplayed = data.data.length;\n this.calculateNbImgFake(nbImgDisplayed);\n this.picturesList = data.data;\n this.renamePictureService.setPicturesList(this.picturesList);\n this.selectImgSelected();\n\n this.length = this.isTotalRetrieved ? this.length : data.totalRecords;\n this.tableFilters.totalItems = this.isTotalRetrieved ? this.tableFilters.totalItems : data.totalRecords;\n this.tableFilters.itemsPerPage = this.tableFilters.itemsPerPage ? this.tableFilters.itemsPerPage : this.pageSize;\n\n // Display Pexels if no result\n if (data.totalRecords === 0) {\n this.displayPexelsLib();\n }\n\n this.changeDetectorRef.markForCheck(); // In wizi-admin, the change detection is not working properly\n\n },\n error: error => {\n this.alertService.openAlert(this.errorGetAllImg);\n this.initVariables(false);\n }});\n }\n\n private refreshTotalImgList() {\n const searchValue = this.tableFilters.searchValue;\n\n if (this.isTotalRetrieved && searchValue === this.previousSearchValue) {\n // Keep current total result\n return;\n }\n\n this.isTotalRetrieved = false;\n\n this.imgManager.getShopTotalImgList(this.params).pipe(take(1)).subscribe({\n next: total => {\n this.previousSearchValue = searchValue;\n this.isTotalRetrieved = true;\n this.length = total;\n this.tableFilters.totalItems = total;\n },\n\n error: error => {\n //this.alertService.openAlert(this.errorGetTotalImg);\n this.initVariables(false);\n }});\n }\n\n switchDisplayWindowMosaic() {\n this.switchDisplayWindow.emit(true);\n }\n\n isLastImgRemovedInList() {\n return this.picturesList.some(picture => picture.id_file === this.imgEventService.imgRemoved$.getValue());\n }\n\n ngOnDestroy(): void {\n this.searchQueryChanged.unsubscribe();\n this.imgRemovedEvent.unsubscribe();\n this.imgAddedEvent.unsubscribe();\n this.imgSelectionChange.unsubscribe();\n }\n}\n","<div class=\"images-view\" [ngClass]=\"{'fullSize': fullSize, 'small': stateDisplayed === 'small'}\" [@easeInOut]=\"'in'\">\n <!-- Subheader : Img number and actions btn (sup img list, switch forma display) -->\n <div\n *ngIf=\"(stateDisplayed !== 'small' || tabDisplayed === 'img-upload')\"\n class=\"images-view__container\"\n [ngClass]=\"{'images-view__container--uploadTab': tabDisplayed === 'img-upload', 'images-view__container--window': stateDisplayed === 'window'}\"\n >\n\n <div *ngIf=\"tabDisplayed !== 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.nbImg' | translate }} : {{length}}</p>\n </div>\n <div *ngIf=\"tabDisplayed === 'img-upload'\">\n <p class=\"mainColor\">{{ 'ImgManager.ImgLib.lastImgs' | translate }}</p>\n </div>\n\n <div class=\"field has-addons subHeaderActions\" *ngIf=\"tabDisplayed !== 'img-upload'\">\n\n <!-- For listforma : Display btn del multiple img & Confirm action -->\n <div class=\"images-view__container__boxAction\">\n\n\n <!-- Select -->\n <button\n class=\"button success images-view__container__boxAction__import\"\n @insertRemoveAnnim\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup && !delListImgLoader && multipleImgMode\"\n (click)=\"selectImgChosen()\"\n type=\"button\"\n >\n <i class=\"fal fa-check\"></i>\n {{ 'ImgManager.ImgLib.select' | translate }} ({{nbImgToDelSelected}})\n </button>\n\n <!-- Display btn del multiple img -->\n <button\n *ngIf=\"listDisplayed && nbImgToDelSelected && !confirmImgSup\"\n (click)=\"displayConfirmImgSup()\"\n class=\"button images-view__container__boxAction__delBtn danger\"\n @insertRemoveAnnim\n type=\"button\"\n >\n <i class=\"fal fa-times\"></i>{{ 'ImgManager.ImgLib.delMlt' | translate }} ({{nbImgToDelSelected}})\n <span btnLoadingAnim *ngIf=\"delListImgLoader\" class=\"btnLoadingAnnimation\"></span>\n </button>\n\n <!-- Confirm action -->\n <div\n class=\"images-view__container__boxAction__confirmSup\"\n [ngClass]=\"{'images-view__container__boxAction__confirmSup--visible': confirmImgSup}\">\n <p *ngIf=\"nbImgToDelSelected > 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestions' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <p *ngIf=\"nbImgToDelSelected === 1\" class=\"images-view__container__boxAction__confirmSup__text\">{{ 'ImgManager.ImgLib.confirmSupQuestion' | translate:{nbImage: nbImgToDelSelected} }}</p>\n <div>\n <button\n class=\"button images-view__container__boxAction__confirmSup__cancel\"\n (click)=\"cancelSup()\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.cancel' | translate }}\n </button>\n <button\n (click)=\"removeListImg()\"\n class=\"button images-view__container__delBtn danger\"\n type=\"button\"\n >\n {{ 'ImgManager.ImgLib.confirm' | translate }}\n </button>\n </div>\n </div>\n\n </div>\n\n\n <!-- Swith mosaic/list forma -->\n <div class=\"field has-addons images-view__container__buttonBox\">\n <div class=\"control\">\n <div\n class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': !listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(false)\"\n >\n <span class=\"icon is-small\">\n <i class=\"far fa-th\"></i>\n </span>\n </div>\n </div>\n\n <div class=\"control\">\n <div class=\"button is-lighted images-view__container__buttonBox__btn\"\n [ngClass]=\"{'actifDisplayed': listDisplayed}\"\n (click)=\"onSwitchFormatDisplayed(true)\"\n >\n <span class=\"icon is-small\">\n <i class=\"fas fa-bars\"></i>\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n\n\n <!-- Images section -->\n<ng-scrollbar\n class=\"images-view__scroll\"\n [ngClass]=\"{\n 'images-view__scroll--hide--mosaic': displayPexelsResults && !listDisplayed,\n 'images-view__scroll--hide--mosaic--small': displayPexelsResults && !listDisplayed && stateDisplayed === 'small',\n 'images-view__scroll--hide--table': displayPexelsResults && listDisplayed,\n 'images-view__scroll--full': stateDisplayed === 'full',\n 'images-view__scroll--smallDisplay' : stateDisplayed === 'small' && tabDisplayed !== 'img-upload',\n 'images-view__scroll--smallUploadDisplay' : stateDisplayed === 'small' && tabDisplayed === 'img-upload',\n 'images-view__scroll--window': stateDisplayed === 'window'\n}\"\n>\n <div #imgLibContainer class=\"images-view__wrapper\">\n <div *ngIf=\"!listDisplayed || stateDisplayed === 'small'\" [@easeInOut]=\"'in'\">\n <mosaic-view\n [picturesList]=\"picturesList\"\n (picturesListChange)=\"onPicturesListChange()\"\n [tableFilters]=\"tableFilters\"\n (filtersChange)=\"onFiltersChange()\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n (switchDisplayWindow)=\"switchDisplayWindowMosaic()\"\n [nbFakeImg]=\"nbFakeImg\"\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabDisplayed\"\n [displayPexelsResults]=\"displayPexelsResults\"\n [isLoading]=\"isLoading\"\n [fullSize]=\"fullSize\"\n >\n </mosaic-view>\n </div>\n\n <div *ngIf=\"listDisplayed && stateDisplayed !== 'small'\" [@easeInOut]=\"'in'\">\n <table-view\n [picturesList]=\"picturesList\"\n (picturesListChange)=\"onPicturesListChange()\"\n [tableFilters]=\"tableFilters\"\n (filtersChange)=\"onFiltersChange()\"\n [(disable)]=\"disable\"\n (pictureNameChange)=\"onRenamePicture($event)\"\n [displayPexelsResults]=\"displayPexelsResults\"\n [stateDisplayed]=\"stateDisplayed\"\n [isLoading]=\"isLoading\"\n >\n </table-view>\n </div>\n\n </div>\n</ng-scrollbar>\n\n<!-- Pexels Section - When no img found -->\n<div\n *ngIf=\"displayPexelsResults\"\n class=\"images-view--pexels\"\n [@easeInOut]=\"'in'\">\n <pexels-lib\n [searchValue]=\"tableFilters.searchValue\"\n (showImgUploaded)=\"onShowImgUploaded()\"\n [disableSearch]=\"true\"\n >\n </pexels-lib>\n</div>\n","import {Directive, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2} from '@angular/core';\n\n@Directive({\n selector: '[zIndexToggle]'\n})\nexport class ZindexToggleDirective implements OnInit, OnDestroy {\n isActived = false;\n\n @Output()\n public onEventChange: EventEmitter<any>;\n\n @Input('zIndexToggle')\n set isActive(value: boolean) {\n this.isActived = value;\n this.switchToggle();\n }\n get isActive(): boolean {\n return this.isActived;\n }\n\n constructor(private currentElement: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnInit(): void {\n }\n\n switchToggle() {\n if (this.isActived) {\n this.renderer.addClass(this.currentElement.nativeElement.parentElement.parentNode, 'zindexToggle');\n } else {\n this.renderer.removeClass(this.currentElement.nativeElement.parentElement.parentNode, 'zindexToggle');\n }\n }\n\n ngOnDestroy(): void {\n }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { SelectItem } from '../../components/shared/select/select-items.dto';\n\n@Pipe({\n name: 'selectFilters'\n})\n\nexport class SelectFiltersPipe implements PipeTransform {\n transform(items: SelectItem[], filterName: string): any {\n return items.filter(item => {\n const regexp = new RegExp(filterName, 'i');\n return regexp.test(item.name);\n });\n }\n}","import {Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild} from '@angular/core';\nimport {TranslateService} from '@ngx-translate/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { SelectItem } from './select-items.dto';\nimport { CalllToAction } from './call-to-action.model';\n\n@Component({\n selector: 'wac-select',\n templateUrl: './select.component.html',\n providers: [{ provide: NG_VALUE_ACCESSOR, useExisting: SelectComponent, multi: true }]\n})\nexport class SelectComponent implements OnInit, ControlValueAccessor {\n @Input()\n items: SelectItem[];\n\n @Input()\n placeholder: string;\n\n @Input()\n label: string;\n\n @Input()\n maxWidthItems: string;\n\n @Input()\n search = false;\n\n @Input()\n type = 'default';\n\n @Input()\n callToAction: CalllToAction;\n\n @Input() maxWidth = '100%';\n\n @Input()\n disabled = false;\n\n @Output() selectValue = new EventEmitter<number>();\n\n @Output() clickOnCallToAction = new EventEmitter<any>();\n\n @ViewChild('search') searchElement: ElementRef;\n\n openCategories = false;\n searchValue = '';\n\n indexItemSelected: number = -1;\n\n constructor(private translateService: TranslateService) {}\n\n ngOnInit(): void {\n this.indexItemSelected = this.items.findIndex(item => item.selected);\n }\n\n onClose() {\n this.openCategories = false;\n }\n\n customTB(item: SelectItem, index: number) {\n return `${item.id}-${index}`;\n }\n\n onSelectItem(id: number) {\n this.unselectAll();\n this.setIndexItemSelected(id);\n const itemSelected: SelectItem = this.getItemSelected();\n itemSelected.selected = true;\n this.selectValue.emit(this.indexItemSelected);\n this.onChange(itemSelected);\n }\n\n onClickCallToAction() {\n this.onClose();\n this.clickOnCallToAction.emit(this.callToAction.value);\n }\n\n private getItemSelected(): SelectItem {\n return this.items[this.indexItemSelected];\n }\n\n showCategories() {\n this.openCategories = true;\n setTimeout(() => { // this will make the execution after the above boolean has changed\n this.searchElement.nativeElement.focus();\n }, 0);\n }\n\n private unselectAll() {\n this.items.forEach(item => item.selected = false);\n }\n\n private setIndexItemSelected(id: number) {\n this.indexItemSelected = this.items.findIndex(item => item.id === id);\n }\n\n // ControlValueAccessor methods\n\n onChange: (selectItem: SelectItem) => void = () => {};\n onTouch: any = () => {}\n\n writeValue(selectItem: any){\n if (!selectItem) {\n return;\n }\n this.unselectAll();\n selectItem.selected = true;\n this.setIndexItemSelected(selectItem.id);\n }\n\n registerOnChange(fn: any){\n this.onChange = fn;\n }\n registerOnTouched(fn: any){\n this.onTouch = fn;\n }\n}\n","<p *ngIf=\"label\" [innerHTML]=\"label\" class=\"wac-select__label\"></p>\n\n<div class=\"wac-select\" wzAutoHide (clickOutside)=\"onClose()\" [ngStyle]=\"{ 'max-width': maxWidth }\" [zIndexToggle]=\"openCategories\">\n\n <div class=\"wac-select__current\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && openCategories = !openCategories\" *ngIf=\"!search\">\n <span *ngIf=\"indexItemSelected !== -1\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span [innerHTML]=\"(indexItemSelected !== -1 ? items[indexItemSelected].name : placeholder) | translate\"></span><span><i class=\"fas fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__current wac-select__current--withSearch\" [ngClass]=\"{ 'select-disabled' : disabled, 'open-search': openCategories }\" *ngIf=\"search\">\n <div class=\"wac-select__current__search\" *ngIf=\"openCategories && !disabled\">\n <i class=\"far fa-search\"></i>\n <input #search type=\"text\" [(ngModel)]=\"searchValue\" />\n </div>\n <span (click)=\"openCategories = !openCategories;\" *ngIf=\"items[indexItemSelected]?.icon && !openCategories\" class=\"icon\" [innerHTML]=\"items[indexItemSelected].icon\"></span>\n <span (click)=\"showCategories()\" [innerHTML]=\"items[indexItemSelected]?.name ? items[indexItemSelected].name : placeholder\"></span>\n <span (click)=\"openCategories = !openCategories;\"><i class=\"fas fa-chevron-down\"></i></span>\n </div>\n\n <div class=\"wac-select__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openCategories, open: type === 'open' }\" [ngStyle]=\"{ 'max-width': maxWidthItems }\">\n <ng-scrollbar *ngIf=\"items.length\" style=\"height: 110px; width: 100%;\">\n\n <div *ngIf=\"callToAction\" class=\"wac-select__content__cta\">\n <div (click)=\"onClickCallToAction()\">\n <i *ngIf=\"callToAction.icon\" [classList]=\"callToAction.icon\"></i><strong *ngIf=\"callToAction.boldText\">{{ callToAction.boldText }}</strong\n ><span>{{ callToAction?.name }}</span>\n </div>\n </div>\n\n <div\n *ngFor=\"let item of items | selectFilters: searchValue; let index = index;\"\n (click)=\"onClose()\"\n class=\"wac-select__content__item\"\n >\n <div *ngIf=\"!item.hide\" [ngClass]=\"{ selected: item.selected }\" (click)=\"onSelectItem(item.id)\">\n <span class=\"icon\" [innerHTML]=\"item.icon\" *ngIf=\"item.icon\"></span>{{ item.name | translate }}\n </div>\n </div>\n\n </ng-scrollbar>\n\n <div *ngIf=\"!(items | selectFilters: searchValue)?.length\" class=\"wac-select__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>","import {Component, Input, OnInit, ViewChild, Output, EventEmitter} from '@angular/core';\nimport { ImgPictureDTO } from '../../dto/img-manager.dto';\nimport { UploadListComponent } from '../upload-list/upload-list.component';\nimport { ImgEventService } from '../../services/img-event.service';\nimport { NwbSnackbarConfig } from '@wizishop/ng-wizi-bulma';\nimport { stateDisplayed } from '../../dto/export-dtos.api';\nimport { AlertService } from '../../services/alert.service';\nimport {Router} from '@angular/router';\nimport { SelectItem } from '../shared/select/select-items.dto';\n\n@Component({\n selector: 'img-tabs',\n templateUrl: './img-tabs.component.html'\n})\nexport class ImgTabsComponent implements OnInit {\n\n @Input()\n multipleImgMode: boolean = false;\n @Input()\n stateDisplayed: stateDisplayed;\n @Input()\n listDisplayed = false;\n\n @Output()\n imgManagerClosed = new EventEmitter();\n\n @Output()\n currentTab = new EventEmitter();\n\n @Output()\n switchDisplayWindow: EventEmitter<boolean> = new EventEmitter();\n\n tabs: SelectItem[] = [\n {\n name: 'ImgManager.Tabs.addImg',\n value: 'img-upload',\n selected: true,\n id: 0\n },\n {\n name: 'ImgManager.Tabs.imgLib',\n value: 'images-view',\n id: 1\n },\n {\n name: 'ImgManager.Tabs.freeImgLib',\n value: 'pexels-lib',\n id: 2\n },\n {\n name: 'ImgManager.Tabs.Editor',\n value: 'img-edition',\n hide: true,\n id: 3\n }\n ];\n\n tabActive: SelectItem = this.tabs[0];\n\n /* tabActive = 'images-view';\n tabs: string[] = ['img-upload', 'images-view', 'pexels-lib', 'img-edition']; */\n editTab = false;\n\n imgToEdit: ImgPictureDTO;\n\n imgUpload = false;\n\n @ViewChild( 'imgUploadedImg' )\n imgUploadedComponent: UploadListComponent ;\n\n snackBarNewVersionConfig: NwbSnackbarConfig = {\n message: '',\n duration: 3000\n };\n\n constructor(\n private imgEventEditService: ImgEventService,\n private alertService: AlertService,\n private route: Router\n ) { }\n\n ngOnInit(): void {\n this.imgEventEditService.getImgToEditEventListener().subscribe(imgToEdit =>{\n this.tabActive = this.tabs[3];\n this.imgToEdit = imgToEdit;\n this.editTab = true;\n this.currentTab.emit(this.tabs[3]);\n });\n }\n\n toggleTabs(item: SelectItem) {\n this.imgUpload = false;\n this.editTab = false;\n this.tabActive = item;\n }\n\n onImgUploaded(img: ImgPictureDTO[]) {\n this.imgUpload = true;\n this.imgUploadedComponent.onImgUploaded(img);\n }\n\n onEditClosed(msgKey: string) {\n this.editTab = false;\n this.toggleTabs(this.tabs[1]);\n if (msgKey) {\n this.alertService.openAlert(msgKey);\n }\n this.currentTab.emit('close');\n }\n\n onShowImgUploaded() {\n this.tabActive = this.tabs[1];\n }\n\n switchDisplayWindowImgView() {\n this.switchDisplayWindow.emit(true);\n }\n\n switchRouterLink(event) {\n\n }\n\n onImgManagerClosed() {\n this.imgManagerClosed.emit();\n }\n}\n","<div\n class=\"img-tabs\" [ngClass]=\"{'small': stateDisplayed === 'small'}\">\n <div class=\"wrapper-tabs\">\n <div\n class=\"tabs\"\n [ngClass]=\"\n {\n 'tabs--notWindow': stateDisplayed !== 'window',\n 'tabs--notDisplayed': stateDisplayed === 'window' && tabActive.value === tabs[3].value\n }\">\n\n <ul>\n <li class=\"is-active\" [ngClass]=\"{'is-active': tabActive.value === tabs[0].value}\" (click)=\"toggleTabs(tabs[0])\"><a>{{ tabs[0].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[1].value}\" (click)=\"toggleTabs(tabs[1])\"><a>{{ tabs[1].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[2].value}\" (click)=\"toggleTabs(tabs[2])\"><a>{{ tabs[2].name | translate }}</a></li>\n <li [ngClass]=\"{'is-active': tabActive.value === tabs[3].value}\" *ngIf=\"editTab\"><a>{{ tabs[3].name | translate }}</a></li>\n </ul>\n <div\n class=\"img-tabs__canva\"\n [ngClass]=\"{'img-tabs__canva--window': stateDisplayed === 'window'}\">\n <canva-btn\n (showImgUploaded)=\"onShowImgUploaded()\"\n [stateDisplayed]=\"stateDisplayed\">\n </canva-btn>\n </div>\n </div>\n <div class=\"select-mobile-page\">\n <wac-select\n [(ngModel)]=\"tabActive\"\n name=\"tabs\"\n [items]=\"tabs\"\n ></wac-select>\n </div>\n </div>\n\n <!-- Upload section -->\n <div\n class=\"columns img-tabs__tabsFirst\"\n [ngClass]=\"{\n 'img-tabs__tabsFirst--small': stateDisplayed === 'small',\n 'img-tabs__tabsFirst--window': stateDisplayed === 'window'\n }\"\n *ngIf=\"tabActive.value === tabs[0].value\">\n <div class=\"column img-tabs__tabsFirst__upload\">\n <img-upload\n [stateDisplayed]=\"stateDisplayed\"\n (imgUploaded)=\"onImgUploaded($event)\"\n ></img-upload>\n </div>\n <div class=\"column img-tabs__tabsFirst__list\" [ngClass]=\"{\n 'img-tabs__tabsFirst__list--upload': imgUpload\n }\">\n <images-view\n *ngIf=\"!imgUpload\"\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"false\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n [nbRowToShow]=\"2\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"false\">\n </images-view>\n\n\n <div [hidden]=\"!imgUpload\">\n <upload-list\n #imgUploadedImg\n [stateDisplayed]=\"stateDisplayed\"\n [tabDisplayed]=\"tabActive.value\"\n [multipleImgMode]=\"multipleImgMode\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n >\n </upload-list>\n </div>\n </div>\n </div>\n\n <!-- Images section -->\n <div class=\"columns img-tabs__tabsSecond\" *ngIf=\"tabActive.value === tabs[1].value\">\n <div class=\"column\">\n\n <images-view\n [stateDisplayed]=\"stateDisplayed\"\n [listDisplayed]=\"listDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [tabDisplayed]=\"tabActive.value\"\n (switchDisplayWindow)=\"switchDisplayWindowImgView()\"\n [fullSize]=\"true\">\n </images-view>\n\n </div>\n </div>\n\n <!-- Pexels img section -->\n <div class=\"columns img-tabs__tabsThird\" *ngIf=\"tabActive.value === tabs[2].value\">\n <div class=\"column\">\n <pexels-lib\n [stateDisplayed]=\"stateDisplayed\"\n (showImgUploaded)=\"onShowImgUploaded()\">\n </pexels-lib>\n </div>\n </div>\n\n <!--Edition section -->\n <div class=\"columns img-tabs__tabsEdit\" *ngIf=\"tabActive.value === tabs[3].value\">\n <div class=\"column\">\n <img-editor\n [stateDisplayed]=\"stateDisplayed\"\n [imgToEdit]=\"imgToEdit\"\n (editClosed)=\"onEditClosed($event)\">\n </img-editor>\n </div>\n </div>\n\n</div>\n","import { Component, Input, Output, EventEmitter } from '@angular/core';\nimport { ImgSelectionService } from '../../services/img-selection.service';\nimport {CdkDragDrop} from '@angular/cdk/drag-drop';\nimport { tabDisplayed } from '../../dto/export-dtos.api';\nimport { combineLatest } from 'rxjs';\n\n\n@Component({\n selector: 'img-selection',\n templateUrl: './img-selection.component.html'\n})\nexport class ImgSelectionComponent {\n\n @Input() tabDisplayed: tabDisplayed;\n @Output() imgManagerClosed = new EventEmitter();\n\n imgSelectedList$ = this.imgSelectionService.imgSelection$;\n removingAll: boolean = false;\n cancellingAll: boolean = false;\n importingAll: boolean = false;\n dragStart = false;\n isLoading$ = this.imgSelectionService.imgSelectedListLoading$;\n\n vm$ = combineLatest({\n imgSelectedList: this.imgSelectedList$,\n isLoading: this.isLoading$\n });\n\n\n trashPositionIndex = 0;\n trashPositionLeft = '-5px';\n\n constructor(\n private imgSelectionService: ImgSelectionService\n ) { }\n\n init() {\n this.removingAll = false;\n this.cancellingAll = false;\n this.importingAll = false;\n }\n\n removeImg(index: number) {\n this.imgSelectionService.removeImgSelectedByIndex(index);\n }\n\n drop(event: CdkDragDrop<string[]>) {\n if (event.previousIndex !== event.currentIndex) {\n this.imgSelectionService.moveImgOrder(event);\n }\n }\n\n removeImgFromSelection(event: CdkDragDrop<string[]>) {\n this.imgSelectionService.removeImgSelectedByIndex(event.previousIndex);\n }\n}\n","<div\n class=\"trash\"\n cdkDropList\n #unSelectList=\"cdkDropList\"\n (cdkDropListDropped)=\"removeImgFromSelection($event)\">\n <p>{{'ImgManager.ImgSelection.unselect' | translate}}</p>\n</div>\n\n<ng-container *ngIf=\"vm$ | async as vm\">\n\n <div\n class=\"img-selection\"\n *ngIf=\"!vm.isLoading; else Loading\"\n [ngClass]=\"{'img-selection--visible' : vm.imgSelectedList && vm.imgSelectedList.length}\"\n >\n\n <div\n cdkDropList\n #selectionList=\"cdkDropList\"\n cdkDropListOrientation=\"horizontal\"\n class=\"list_img_selection\"\n (cdkDropListDropped)=\"drop($event)\"\n [cdkDropListConnectedTo]=\"[unSelectList]\"\n >\n\n <div\n class=\"img_box\"\n *ngFor=\"let picture of vm.imgSelectedList; let index = index\"\n cdkDrag\n (cdkDragStarted)=\"dragStart = true;\"\n (cdkDragEnded)=\"dragStart = false;\"\n >\n\n <img\n *ngIf=\"index < 1\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '400'\"\n [title]=\"picture.display_name\"\n />\n\n <img\n *ngIf=\"index > 0\"\n class=\"drag__img\"\n [src]=\"picture.file_name | imgSrc : '200'\"\n [title]=\"picture.display_name\"\n />\n\n <div class=\"delete-btn\" (click)=\"removeImg(index)\">{{'ImgManager.ImgSelection.deleteImg' | translate}}</div>\n\n <span class=\"drag__tooltips\">{{'ImgManager.ImgSelection.tooltips' | translate}}</span>\n\n </div>\n </div>\n </div>\n</ng-container>\n<!-- Loader -->\n<ng-template #Loading>\n <wz-loader></wz-loader>\n</ng-template>\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ImgSelectionService } from './services/img-selection.service';\nimport { Subscription } from 'rxjs';\nimport { UserSettingsService } from './services/user-settings.service';\nimport { CanvaService } from './services/canva.service';\nimport { ImgEventService } from './services/img-event.service';\nimport { DomService } from './services/dom.service';\nimport { HostListener } from '@angular/core';\nimport { WiziBlockMediaDto } from './dto/wizi-block-media.dto';\nimport { stateDisplayed } from './dto/stateDisplayed.dto';\nimport { UploadService } from './services/upload.service';\n@Component({\n selector: 'wz-img-manager',\n templateUrl: './wz-img-manager.component.html'\n})\nexport class WzImgManagerComponent implements OnInit {\n @Input() stateDisplayed: stateDisplayed;\n @Input() showSelection: boolean = false;\n\n // If forceToOpenCanva is true : Canva will open with the canvaService.expectedImgSizesChange\n // If forceToOpenCanva is a WiziBlockMediaDto, Canva open immediatly\n @Input() set forceToOpenCanva(forceToOpenCanva: boolean|WiziBlockMediaDto) {\n this.canvaService.forceToOpenCanva = !!forceToOpenCanva;\n\n if (typeof forceToOpenCanva === 'boolean') {\n return;\n }\n\n this.canvaService.expectedImgSizesChange(forceToOpenCanva);\n }\n\n @Output() imgManagerClosed = new EventEmitter();\n private _multipleImgMode: boolean = false;\n\n @Input() set multipleImgMode(activate: boolean) {\n this._multipleImgMode = activate;\n this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);\n }\n\n get multipleImgMode(): boolean {\n return this._multipleImgMode;\n }\n\n _showImgManagerModule: boolean = false;\n @Input() set showImgManagerModule(activate: boolean) {\n this._showImgManagerModule = activate;\n if (activate) {\n this.displaySmall();\n }\n }\n\n get showImgManagerModule(): boolean {\n return this._multipleImgMode;\n }\n\n @HostListener('document:keydown.escape', ['$event']) onKeydownHandler(event: KeyboardEvent) {\n if (this.stateDisplayed && this.stateDisplayed !== 'window') {\n this.onClose();\n }\n }\n\n @Output() imgSelectionChange = this.imgSelectionService.imgSelection$;\n\n @Output() imageUploaded = this.uploadService.imageUploaded$;\n\n close: boolean = false\n selectImgEvent: Subscription;\n listDisplayed: boolean = false;\n listDisplayedEvent: Subscription;\n hideTab: boolean = false;\n // Save the default overflow apply to html tag, when the module is full open\n private overflowHTML: string;\n private bodyPadding: number;\n\n constructor(\n private imgSelectionService: ImgSelectionService,\n private userSettingsService: UserSettingsService,\n private canvaService: CanvaService,\n private imgEventService: ImgEventService,\n private domService: DomService,\n private uploadService: UploadService\n ) {\n }\n\n ngOnInit(): void {\n this.imgSelectionService.setMultipleImgMode(this._multipleImgMode);\n this.imgSelectionService.initImgSelectedList(null);\n this.selectImgEvent = this.imgSelectionService.imgSelection$.subscribe(imgSelection =>{\n\n if (imgSelection && imgSelection.length && this.checkCloseImgManager()) {\n // Close the img manager\n this.onClose();\n }\n });\n this.checkUserDisplayPreference();\n // Use when the img manager is full open or open in page. This display the user preference display, mosaic or list.\n this.listDisplayedEvent = this.imgEventService.getlistDisplayedChange().subscribe(value => this.listDisplayed = value);\n // Register dom service to listen on all event on the body to avoid having multiple instance of the same thing every where\n this.domService.setDocumentEventListener();\n }\n\n checkUserDisplayPreference() {\n if (this.stateDisplayed === 'window' || this.stateDisplayed === 'full') {\n this.listDisplayed = this.userSettingsService.getUserDisplayPreference();\n }\n }\n\n setCurrentTab(event) {\n if (event === 'img-edition') {\n this.hideTab = true;\n return;\n }\n this.hideTab = false;\n }\n\n displaySmall() {\n if (this.stateDisplayed !== 'window') {\n setTimeout(() => {\n this.stateDisplayed = 'small';\n this.addBodyBottomPaddingForModule();\n }, 10);\n }\n }\n\n openSmall() {\n this.stateDisplayed = 'small';\n this.setBodyMainScroll();\n this.listDisplayed = false;\n }\n\n openFull() {\n this.stateDisplayed = 'full';\n this.checkUserDisplayPreference();\n this.hideBodyMainScroll();\n }\n\n onClose() {\n this.stateDisplayed = 'closed';\n this.hideTab = false;\n this.setBodyMainScroll();\n this.removeBodyBottomPaddingForModule();\n // Wait the end of the closing annimation\n setTimeout(() => {\n this.imgManagerClosed.emit();\n }, 250);\n }\n\n onImgManagerClosed() {\n this.onClose();\n }\n\n /**\n * Close the img manager after one img is selected, if not in multiple img to select\n */\n checkCloseImgManager() {\n return !this.multipleImgMode && this.stateDisplayed !== 'window' ? true : false;\n }\n\n hideBodyMainScroll() {\n const html = document.getElementsByTagName('html')[0];\n\n if (!this.overflowHTML) {\n this.overflowHTML = html.style.overflowY;\n }\n\n html.style.overflowY = \"hidden\";\n }\n\n setBodyMainScroll() {\n const html = document.getElementsByTagName('html')[0];\n html.style.overflowY = this.overflowHTML ? this.overflowHTML : \"scroll\";\n }\n\n addBodyBottomPaddingForModule() {\n const body = document.getElementsByTagName('body')[0];\n this.bodyPadding = this.bodyPadding ? parseInt(body.style.paddingBottom) : 0;\n body.style.paddingBottom = this.bodyPadding + 300 + 'px';\n }\n\n removeBodyBottomPaddingForModule() {\n if (typeof this.bodyPadding !== 'undefined') {\n const body = document.getElementsByTagName('body')[0];\n body.style.paddingBottom = this.bodyPadding + 'px';\n this.bodyPadding = 0;\n }\n }\n\n changeDisplayTab() {\n this.stateDisplayed = 'full';\n }\n\n ngOnDestroy() {\n this.selectImgEvent.unsubscribe();\n this.canvaService.expectedImgSizesChange(null);\n this.listDisplayedEvent.unsubscribe();\n }\n}\n","<div class=\"wz-img-manager\">\n <!-- Img slection handler -->\n <div class=\"wz-img-manager__selectionHandler\" *ngIf=\"showSelection\">\n <img-selection></img-selection>\n </div>\n\n <!-- Img manager module -->\n <div\n *ngIf=\"_showImgManagerModule\"\n class=\"wz-img-manager__module\"\n [ngClass]=\"{\n 'wz-img-manager__module--small': stateDisplayed === 'small',\n 'wz-img-manager__module--full': stateDisplayed === 'full',\n 'wz-img-manager__module--window': stateDisplayed === 'window',\n 'wz-img-manager__module--edit': hideTab}\"\n >\n\n <div class=\"wz-img-manager__module__header\" *ngIf=\"stateDisplayed !== 'window'\">\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'full'\" type=\"button\"><span>Expand</span><i class=\"fal fa-compress-alt\"></i></button>\n <button (click)=\"openSmall()\" *ngIf=\"stateDisplayed === 'closed'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"openFull()\" *ngIf=\"stateDisplayed === 'small'\" type=\"button\"><span>Expand</span><i class=\"fal fa-expand-alt\"></i></button>\n <button (click)=\"onClose()\" *ngIf=\"stateDisplayed !== 'closed'\" type=\"button\"><span>Close</span><i class=\"fal fa-times\"></i></button>\n </div>\n\n <div\n class=\"wz-img-manager__module__content wz-block\"\n [ngClass]=\"{'wz-block--window': stateDisplayed === 'window'}\">\n <img-tabs\n [stateDisplayed]=\"stateDisplayed\"\n [multipleImgMode]=\"multipleImgMode\"\n [listDisplayed]=\"listDisplayed\"\n (imgManagerClosed)=\"onImgManagerClosed()\"\n (switchDisplayWindow)=\"changeDisplayTab()\"\n (currentTab)=\"setCurrentTab($event)\">\n </img-tabs>\n </div>\n </div>\n\n</div>\n","import { Injectable } from '@angular/core';\nimport { NwbSnackbarService, NwbSnackbarConfig, NwbSnackbarComponent } from '@wizishop/ng-wizi-bulma';\nimport { TranslateService } from '@ngx-translate/core';\nimport { Observable } from 'rxjs';\n\n@Injectable()\nexport class SnackBarService {\n\n actionMsg = 'ImgManager.snackBar.action';\n\n snackBarConfigAction: NwbSnackbarConfig = {\n message: '',\n duration: 5000\n };\n\n snackBarConfig: NwbSnackbarConfig = {\n message: '',\n duration: 5000\n };\n\n private snackBarRefComponent: NwbSnackbarComponent;\n\n constructor(\n private nwbSnackbar: NwbSnackbarService,\n private translateService: TranslateService\n ) {}\n\n openSnackBar(msgKey: string) {\n this.closePreviousSnackbar();\n this.translateService.get(msgKey).subscribe(trans => {\n this.snackBarConfig.message = trans;\n this.snackBarRefComponent = this.nwbSnackbar.open(this.snackBarConfig);\n this.snackBarRefComponent.afterClosed().subscribe();\n });\n }\n\n openSnackBarWithAction(msgKey: string) {\n return new Observable(observer => {\n\n this.translateService.get([msgKey, this.actionMsg]).subscribe((trans) => {\n\n this.snackBarConfigAction.message = trans[msgKey];\n this.snackBarConfigAction.action = trans[this.actionMsg];\n\n this.closePreviousSnackbar();\n this.snackBarRefComponent = this.nwbSnackbar.open(this.snackBarConfigAction);\n this.snackBarRefComponent.afterClosed().subscribe(manualClose => {\n observer.next(manualClose);\n observer.complete();\n });\n });\n });\n }\n\n openSnackBarWithBackendRespons(msgKey: string, msgBackend: string) {\n this.translateService.get(msgKey).subscribe(trans => {\n this.snackBarConfig.message = trans;\n this.snackBarConfig.message += '<br/>' + JSON.parse(msgBackend).message;\n\n this.closePreviousSnackbar();\n this.snackBarRefComponent = this.nwbSnackbar.open(this.snackBarConfig);\n this.snackBarRefComponent.afterClosed().subscribe();\n });\n }\n\n private closePreviousSnackbar() {\n if (this.snackBarRefComponent) {\n this.snackBarRefComponent.dismiss(false);\n }\n }\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { WzImgManagerComponent } from './wz-img-manager.component';\nimport { ImgUploadComponent } from './components/img-upload/img-upload.component';\nimport { HttpClientModule } from '@angular/common/http';\nimport { ImgTabsComponent } from './components/img-tabs/img-tabs.component';\nimport { CommonModule } from '@angular/common';\nimport { DragDropDirective } from './directives/drag-drop.directive';\nimport { PexelLibComponent } from './components/pexels-lib/pexels-lib.component';\nimport { FormsModule } from '@angular/forms';\nimport { ImgCardComponent } from './components/images-view/mosaic-view/img-card/img-card.component';\nimport { NgScrollbarModule } from 'ngx-scrollbar';\nimport { NgScrollbarReachedModule } from 'ngx-scrollbar/reached-event';\nimport { NwbAllModule } from '@wizishop/ng-wizi-bulma';\nimport { UploadListComponent } from './components/upload-list/upload-list.component';\nimport { ImgEditorComponent } from './components/img-editor/img-editor.component';\nimport { ImageCropperModule } from 'ngx-image-cropper';\nimport { CdkTableModule } from '@angular/cdk/table';\nimport { CanvaBtnComponent } from './components/canva-btn/canva-btn.component';\nimport { ImgSelectionComponent } from './components/img-selection/img-selection.component';;\nimport { LoadingDirective } from './directives/loading.directive';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { AutoHideDirective } from './directives/auto-hide.directive';\nimport { DragDropModule } from '@angular/cdk/drag-drop';\nimport { CopyClipboardDirective } from './directives/copy-to-clipboard.directive';\nimport { DropdownComponent } from './components/shared/dropdown/dropdown.component';\nimport { EditorInfoSectionComponent } from './components/img-editor/info-section/info-section.component';\nimport { CropperComponent } from './components/img-editor/cropper/cropper.component';\nimport { ImagesViewComponent } from './components/images-view/images-view.component';\nimport { MosaicViewComponent } from './components/images-view/mosaic-view/mosaic-view.component';\nimport { TableViewComponent } from './components/images-view/table-view/table-view.component';\nimport { TableComponent } from './components/shared/table/table.component';\nimport { InputSearchComponent } from './components/shared/input-search/input-search.component';\nimport { PaginationComponent } from './components/shared/pagination/pagination.component';\nimport { PagniationArrayTotalPages } from './pipes/pagination/array-total-pages/array-pages.pipe';\nimport { PagniationText } from './pipes/pagination/text/custom-text.pipe';\nimport { PagniationIsLastPage } from './pipes/pagination/total-pages/is-last-page.pipe';\nimport { CheckBoxRow } from './directives/table/checkBoxRow.directive';\nimport { TableColumn } from './directives/table/column.directive';\nimport { TableColumnHeader } from './directives/table/columnHeader.directive';\nimport { TableRow } from './directives/table/raw.directive';\nimport { CheckboxComponent } from './components/shared/checkbox/checkbox.component';\nimport { ImageSrcPipe } from './pipes/images/img-src.pipe';\nimport { AbstractDebounceDirective } from './directives/abstract-debounce/abstract-debounce.directive';\nimport { DebounceKeyupDirective } from './directives/abstract-debounce/debounce-keyup.directive';\nimport { LoaderComponent } from './components/loader/loader.component';\nimport { AlertComponent } from './components/shared/alert/alert.component';\nimport { NumberToArray } from './pipes/number-to-array.pipe';\nimport { PageSelectorComponent } from './components/shared/pagination/page-selector/page-selector.component';\nimport { LargeNumberOfPagePipe } from './pipes/pagination/large-number-of-page/large-number-of-page.pipe';\nimport { SelectComponent } from './components/shared/select/select.component';\nimport { SelectFiltersPipe } from './pipes/select/select-filters.pipe';\nimport { ZindexToggleDirective } from './directives/zindex-toggle.directive';\nimport { ImgCDNService } from './services/config/img-cdn.service';\nimport { FiltersTableService } from './services/table/filters-table.service';\nimport { AlertService } from './services/alert.service';\nimport { CanvaService } from './services/canva.service';\nimport { DomService } from './services/dom.service';\nimport { ImgEventService } from './services/img-event.service';\nimport { ImgManagerService } from './services/img-manager.service';\nimport { ImgSelectionService } from './services/img-selection.service';\nimport { PexelsService } from './services/pexels.service';\nimport { RenamePictureService } from './services/rename-picture.service';\nimport { SnackBarService } from './services/snackbar.service';\nimport { UploadService } from './services/upload.service';\nimport { UserSettingsService } from './services/user-settings.service';\nimport { ImageNotFoundService } from './services/image-not-found.service';\n\nconst components = [\n WzImgManagerComponent,\n ImgTabsComponent,\n ImgUploadComponent,\n PexelLibComponent,\n ImgCardComponent,\n UploadListComponent,\n ImgEditorComponent,\n EditorInfoSectionComponent,\n CanvaBtnComponent,\n ImgSelectionComponent,\n LoaderComponent,\n DropdownComponent,\n CropperComponent,\n ImagesViewComponent,\n MosaicViewComponent,\n TableViewComponent,\n TableComponent,\n InputSearchComponent,\n PaginationComponent,\n CheckboxComponent,\n AlertComponent,\n PageSelectorComponent,\n SelectComponent\n];\n\nconst directives = [\n DragDropDirective,\n LoadingDirective,\n AutoHideDirective,\n CopyClipboardDirective,\n TableColumn,\n CheckBoxRow,\n TableColumnHeader,\n TableRow,\n AbstractDebounceDirective,\n DebounceKeyupDirective,\n ZindexToggleDirective\n];\n\nconst pipes = [\n PagniationArrayTotalPages,\n PagniationIsLastPage,\n PagniationText,\n ImageSrcPipe,\n NumberToArray,\n LargeNumberOfPagePipe,\n SelectFiltersPipe\n];\n\n@NgModule({\n declarations: [\n ...components,\n ...directives,\n ...pipes\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n FormsModule,\n NgScrollbarModule,\n NgScrollbarReachedModule,\n NwbAllModule,\n ImageCropperModule,\n CdkTableModule,\n DragDropModule,\n TranslateModule,\n ],\n providers: [],\n exports: [\n WzImgManagerComponent]\n})\nexport class WzImgManagerModule {\n static withConfig(ApiService: Provider, ImageNotFoundProvider?: Provider): ModuleWithProviders<WzImgManagerModule> {\n\n return {\n ngModule: WzImgManagerModule,\n providers: [\n ImgManagerService,\n ApiService,\n ImgCDNService,\n FiltersTableService,\n AlertService,\n CanvaService,\n DomService,\n ImgEventService,\n ImgSelectionService,\n PexelsService,\n RenamePictureService,\n SnackBarService,\n UploadService,\n UserSettingsService,\n ImageNotFoundProvider ? ImageNotFoundProvider : ImageNotFoundService\n ]\n };\n }\n }\n","import { CanvaCreateDesign } from \"./canva-create-design.dto\";\n\nexport class CanvaButtonApi {\n createDesign: (\n opts: {\n design: CanvaCreateDesign,\n editor?: {\n publishLabel: string,\n fileType: string\n }\n onDesignOpen?: (\n opts: { designId: string, designTitle: string }\n ) => void,\n onDesignPublish?: (\n opts: { exportUrl: string, designId: string, designTitle: string }\n ) => void,\n onDesignClose?: () => void\n }\n ) => void;\n editDesign: (opts: {\n opts: {\n design: {\n id: any\n },\n editor?: {\n publishLabel: string,\n fileType: string\n }\n onDesignOpen?: (\n opts: { designId: string, designTitle: string }\n ) => void,\n onDesignPublish?: (\n opts: { exportUrl: string, designId: string, designTitle: string }\n ) => void,\n onDesignClose?: () => void\n }\n }) => void;\n};","export class ImgApiDto {\n shop_token: string;\n image_manager_route = '';\n pexels_token: string;\n pexels_route = '';\n shop_category: string;\n canva_token: string;\n canva_url = '';\n assets_route: string = 'assets/img-manager/';\n}\n","import { ImgApiDto } from '../apis/api.dto';\nimport { ImgCDNConfigDTO } from '../image-cdn/image-cdn-config.dto';\n\nexport class ImgManagerConfigDto {\n api: ImgApiDto;\n imgCDNConfig : ImgCDNConfigDTO;\n}","/*\n * Public API Surface of wz-img-manager\n */\n\nexport { WzImgManagerModule } from './lib/wz-img-manager.module';\nexport { WzImgManagerComponent } from './lib/wz-img-manager.component';\nexport { ImgSelectionService } from './lib/services/img-selection.service';\nexport { ImgManagerService } from './lib/services/img-manager.service';\nexport { RenamePictureService } from './lib/services/rename-picture.service';\nexport { ApiService } from './lib/services/api.service';\nexport { ImageNotFoundService } from './lib/services/image-not-found.service';\nexport { CanvaService } from './lib/services/canva.service';\nexport * from './lib/dto/ImgManagerDisplayConfig.dto';\nexport * from './lib/dto/export-dtos.api';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2","i1.ImgEventService","i2.AlertService","i4.UploadService","i5.ApiService","i1","i1.AlertService","i2.ApiService","i5","i6.LoaderComponent","i7.DragDropDirective","tap","i3.DebounceKeyupDirective","i1.PexelsService","i6","i7","i9.LoaderComponent","i10.InputSearchComponent","i11.AlertComponent","i12.LoadingDirective","i1.ApiService","i1.ImgManagerService","i2.ImgSelectionService","i3","i4.ImgCDNService","i5.ImgEventService","i6.AlertService","i8.ApiService","i1.ImgCDNService","i9","i10","i11.LoadingDirective","i12.ImageSrcPipe","i1.ImgSelectionService","i2.RenamePictureService","i5.ImgCardComponent","i4.CopyClipboardDirective","i5.DebounceKeyupDirective","i7.ImageSrcPipe","i4","i5.DropdownComponent","i5.EditorInfoSectionComponent","i6.CropperComponent","i7.LoadingDirective","i8","i1.DomService","i1.CanvaService","i4.LoadingDirective","i5.AutoHideDirective","i3.PagniationArrayTotalPages","i4.LargeNumberOfPagePipe","i2.PageSelectorComponent","i4.PagniationIsLastPage","i5.PagniationText","i11.ImgCardComponent","i12.LoaderComponent","i13.InputSearchComponent","i14.PaginationComponent","i15.NumberToArray","uuid","i1.FiltersTableService","i4.LoaderComponent","i5.InputSearchComponent","i6.PaginationComponent","i7.CheckboxComponent","i11.DropdownComponent","i12.TableComponent","i13.TableColumn","i14.CheckBoxRow","i15.TableColumnHeader","i16.TableRow","i17.ImageSrcPipe","i2.ImgEventService","i3.ImgSelectionService","i4.AlertService","i5.UserSettingsService","i6.RenamePictureService","i9.PexelLibComponent","i10.MosaicViewComponent","i11.TableViewComponent","i13","i6.ZindexToggleDirective","i7.SelectFiltersPipe","i6.ImgUploadComponent","i7.PexelLibComponent","i8.UploadListComponent","i9.ImgEditorComponent","i10.CanvaBtnComponent","i11.ImagesViewComponent","i12.SelectComponent","i6.ImageSrcPipe","i2.UserSettingsService","i3.CanvaService","i4.ImgEventService","i5.DomService","i6.UploadService","i8.ImgTabsComponent","i9.ImgSelectionComponent"],"mappings":"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"}