@gloww/gloww 20.0.0-beta.48 → 20.0.0-beta.49
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":"gloww-gloww.mjs","sources":["../../../projects/gloww/src/lib/Services/gloww.service.ts","../../../projects/gloww/src/lib/Services/version-check.service.ts","../../../projects/gloww/src/lib/Directives/route.directive.ts","../../../projects/gloww/src/lib/Pipes/safe-html.pipe.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.html","../../../projects/gloww/src/lib/Services/dialog.service.ts","../../../projects/gloww/src/lib/Services/nav.service.ts","../../../projects/gloww/src/lib/Services/voice-recognition.service.ts","../../../projects/gloww/src/lib/Components/secure-img/secure-img.component.ts","../../../projects/gloww/src/lib/Directives/file-sink.directive.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.html","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.ts","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.html","../../../projects/gloww/src/lib/Components/search-form/search-form.component.ts","../../../projects/gloww/src/lib/Components/search-form/search-form.component.html","../../../projects/gloww/src/lib/Components/header/header.component.ts","../../../projects/gloww/src/lib/Components/header/header.component.html","../../../projects/gloww/src/lib/Components/result-table/result-table.component.ts","../../../projects/gloww/src/lib/Components/result-table/result-table.component.html","../../../projects/gloww/src/lib/Services/gloww-i18n.service.ts","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.ts","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.html","../../../projects/gloww/src/lib/gloww-security/Models/oauthassociation.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication-service-config.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication.service.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.html","../../../projects/gloww/src/lib/Components/prompt/prompt.component.ts","../../../projects/gloww/src/lib/Components/prompt/prompt.component.html","../../../projects/gloww/src/lib/Pipes/retry-with-delay.ts","../../../projects/gloww/src/lib/Pipes/secure.pipe.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.html","../../../projects/gloww/src/lib/Services/snippets.service.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.html","../../../projects/gloww/src/lib/Pipes/html-format.pipe.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.html","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/jwt.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/error.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/staging.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/auth.guard.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/administrator.guard.ts","../../../projects/gloww/src/lib/gloww-security/gloww-security.module.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.html","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.ts","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.html","../../../projects/gloww/src/lib/Services/folder-service-config.ts","../../../projects/gloww/src/lib/Services/folder.service.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.html","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.ts","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.html","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.ts","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.html","../../../projects/gloww/src/lib/Components/dummy/dummy.component.ts","../../../projects/gloww/src/lib/Components/dummy/dummy.component.html","../../../projects/gloww/src/lib/Components/select/select.component.ts","../../../projects/gloww/src/lib/Components/select/select.component.html","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.ts","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.html","../../../projects/gloww/src/lib/Components/datetime/datetime.component.ts","../../../projects/gloww/src/lib/Components/datetime/datetime.component.html","../../../projects/gloww/src/lib/Directives/callback.directive.ts","../../../projects/gloww/src/lib/Services/gloww-mat-paginator-intl.service.ts","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-task-response-dialog.component.ts","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-task-response-dialog.component.html","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-tasks.component.ts","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-tasks.component.html","../../../projects/gloww/src/lib/Components/base-collection/base-collection.component.ts","../../../projects/gloww/src/lib/Guards/has-unsaved-data.guard.ts","../../../projects/gloww/src/lib/gloww.module.ts","../../../projects/gloww/src/lib/gloww-security/Services/gloww-security.service.ts","../../../projects/gloww/src/lib/Helpers/gloww-validators.ts","../../../projects/gloww/src/public-api.ts","../../../projects/gloww/src/gloww-gloww.ts"],"sourcesContent":["import { Injectable, InjectionToken, Injector } from '@angular/core';\nimport { firstValueFrom, Subject } from 'rxjs';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { PlatformLocation } from '@angular/common';\r\nimport { Location } from '@angular/common';\r\n\r\nexport const API_SERVER_URL = new InjectionToken<string>('ApiServerUrl.config');\r\nexport const GLOWW_APPLI = new InjectionToken<string>('GlowwAppli.config');\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwService {\r\n public baseHref: string;\r\n public InternalBasePath = '???';\r\n basePathChange: Subject<string> = new Subject<string>();\r\n public get basePath() {\r\n return this.InternalBasePath;\r\n }\r\n public set basePath(value: string) {\r\n //alert(`setBasePath ${value}`)\r\n //if (value.match(/_mgmt(\\/|$)/)) {\r\n const change = this.InternalBasePath != value;\r\n var oldUrl = this.location.path();\r\n var newUrl = oldUrl.replace(`/${this.InternalBasePath}/`, `/${value}/`);\r\n console.log(`GlowwService setBasePath (${this.InternalBasePath},${value}) ${oldUrl} -> ${newUrl}`);\r\n this.InternalBasePath = value;\r\n if (change) {\r\n this.location.go(newUrl);\r\n this.basePathChange.next(newUrl);\r\n }\r\n //} else {\r\n //console.log(`not mgmt ${value}`);;\r\n //}\r\n }\r\n public baseUrl = '/';\r\n protected http: HttpClient;\r\n protected BasePath: string;\r\n protected ApiServerUrl: string;\r\n protected platformLocation: PlatformLocation;\r\n protected location: Location\r\n constructor(private _injector: Injector) {\r\n this.location = _injector.get(Location);\r\n this.http = _injector.get(HttpClient);\r\n this.platformLocation = _injector.get(PlatformLocation);\r\n try { this.ApiServerUrl = _injector.get(API_SERVER_URL); } catch { }\r\n try { this.BasePath = _injector.get(GLOWW_APPLI) } catch { } this.BasePath = this.BasePath ?? 'GlowwApi';\r\n\r\n //@Optional() @Inject(API_SERVER_URL) apiServerUrl: string, @Optional() @Inject(GLOWW_APPLI) glowwAppli: string\r\n this.baseHref = this.platformLocation.getBaseHrefFromDOM();\r\n this.InternalBasePath = this.BasePath;\r\n if (this.ApiServerUrl) { this.baseUrl = this.ApiServerUrl; if (!this.baseUrl.endsWith('/')) { this.baseUrl += '/'; } }\r\n }\r\n public getParams(obj: any) {\r\n let params = new HttpParams();\r\n if (!obj) { return params; }\r\n Object.keys(obj).forEach(p => {\r\n if (obj[p]) {\r\n params = params.append(p.toString(), obj[p].toString());\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n public async noSrc() {\r\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noSrc`));\r\n }\r\n\r\n public async noRestSecurity() {\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noRestSecurity`));\n }\n\n public commitUserTask(userTaskId: number, args: Record<string, any>) {\n return this.http.post(`/FlowMgmt/UserTask/Commit/${userTaskId}`, args ?? {}, {\n responseType: 'text'\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VersionCheckService {\r\n // this will be replaced by actual hash post-build.js\r\n private currentHash = '{{POST_BUILD_ENTERS_HASH_HERE}}';\r\n private callback;\r\n public url;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Checks in every set frequency the version of frontend application\r\n * @param url the url to test (default : /version.json)\r\n * @param frequency - in milliseconds, defaults to 1 minutes\r\n * @param callback - function to call when the version is different, default askReloadApplication\r\n */\r\n public initVersionCheck(url = '/version.json', frequency = 1000 * 60, callback = this.askReloadApplication) {\r\n this.callback = callback;\r\n this.url = url;\r\n this.checkVersion();\r\n setInterval(() => {\r\n this.checkVersion();\r\n }, frequency);\r\n }\r\n\r\n public askReloadApplication() {\r\n console.log('askReload');\r\n // ENTER YOUR CODE TO DO SOMETHING UPON VERSION CHANGE\r\n if (confirm('Une nouvelle version est disponible sur le serveur. Il est nécessaire de recharger l\\'application. Veuillez confirmer le rechargement de l\\'application')) {\r\n this.reloadApplication();\r\n }\r\n }\r\n public reloadApplication() {\r\n console.log('reload');\r\n let search = location.search;\r\n if (search) { search += '&'; }\r\n search += '___t=' + new Date().getTime();\r\n console.log(`Search ${search}`);\r\n location.search = search;\r\n }\r\n\r\n private checkVersion() {\r\n // timestamp these requests to invalidate caches\r\n this.http.get(this.url + '?t=' + new Date().getTime())\r\n // .first()\r\n .subscribe(\r\n (response: any) => {\r\n console.log('get version ok');\r\n const hash = response.hash;\r\n const hashChanged = this.hasHashChanged(this.currentHash, hash);\r\n console.log(`HASH : Current : ${this.currentHash}, New : ${hash}, Changed ${hashChanged}`);\r\n\r\n // If new version, do something\r\n if (hashChanged) {\r\n this.callback();\r\n }\r\n // store the new hash so we wouldn't trigger versionChange again\r\n // only necessary in case you did not force refresh\r\n this.currentHash = hash;\r\n },\r\n (err) => {\r\n console.error(err, 'Could not get version');\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Checks if hash has changed.\r\n * This file has the JS hash, if it is a different one than in the version.json\r\n * we are dealing with version change\r\n * @param currentHash currenthash\r\n * @param newHash newhash\r\n * @returns the currenthash and newhash are different\r\n */\r\n private hasHashChanged(currentHash, newHash) {\r\n return currentHash !== newHash;\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Router } from '@angular/router';\n\n\n@Directive({\n selector: '[glowwRoute]',\n standalone: true\n})\nexport class RouteDirective {\n\r\n constructor(private el: ElementRef, private router: Router) { }\r\n @Input() dlg: any;\r\n\r\n @HostListener('click', ['$event.target']) onClick($event) {\r\n console.info('clicked: ' + $event.getAttribute('data-link'));\r\n if (this.dlg) { this.dlg.close(true); }\r\n var goRoute = $event.getAttribute('data-link');\r\n this.router.navigate([goRoute]);\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: true\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\r\n\tconstructor(private sanitizer: DomSanitizer) { }\r\n\r\n\ttransform(style) {\r\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustStyle(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\r\n\t}\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { RouteDirective } from '../../Directives/route.directive';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'glw-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, RouteDirective, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class ConfirmationComponent {\r\n\r\n title: string;\r\n message: string;\r\n mode: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ConfirmationComponent>, @Inject(MAT_DIALOG_DATA) public data: ConfirmationModel) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.mode = data.mode ?? 'confirmation';\r\n }\r\n\r\n onConfirm(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(false);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class ConfirmationModel {\r\n constructor(public title: string, public message: string, public mode?: string) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\n {{title}}\n</h1>\n\n<div mat-dialog-content>\n <p [innerHTML]=\"message | safeHtml\" glowwRoute [dlg]=\"dialogRef\"></p>\n</div>\n\n@if (mode==='confirmation') {\n <mat-dialog-actions>\n <button mat-button (click)=\"onDismiss()\">No</button>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\n </mat-dialog-actions>\n}\n@if (mode==='alert') {\n <mat-dialog-actions>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">OK</button>\n </mat-dialog-actions>\n}","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationComponent, ConfirmationModel } from '../Components/confirmation/confirmation.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(protected dialog: MatDialog) { }\r\n\r\n createConfirmationDialog(title: string, message: string, mode?: string) {\r\n const dialogData = new ConfirmationModel(title, message, mode);\r\n return this.dialog.open(ConfirmationComponent, {\r\n maxWidth: '80%',\r\n data: dialogData,\r\n disableClose: true\r\n });\r\n }\r\n\r\n\r\n openConfirmationDialog(title: string, message: string, mode?: string) {\r\n return this.createConfirmationDialog(title, message, mode).afterClosed();\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Event, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavService {\r\n public appDrawer: any;\r\n public currentUrl = new BehaviorSubject<string>(undefined);\r\n\r\n constructor(private router: Router) {\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.currentUrl.next(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public closeNav() {\r\n this.appDrawer.close();\r\n }\r\n\r\n public openNav() {\r\n this.appDrawer.open();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\ndeclare var webkitSpeechRecognition: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VoiceRecognitionService {\r\n\r\n recognition = new webkitSpeechRecognition();\r\n isStoppedSpeechRecog = false;\r\n public text = '';\r\n tempWords: any;\r\n\r\n constructor() { }\r\n\r\n init() {\r\n\r\n this.recognition.interimResults = true;\r\n this.recognition.lang = 'fr-be';\r\n\r\n this.recognition.addEventListener('result', (e: any) => {\r\n const transcript = Array.from(e.results)\r\n .map((result: any) => result[0])\r\n .map((result) => result.transcript)\r\n .join('');\r\n this.tempWords = transcript;\r\n console.log(transcript);\r\n });\r\n }\r\n\r\n start() {\r\n this.isStoppedSpeechRecog = false;\r\n this.recognition.start();\r\n console.log(\"Speech recognition started\")\r\n this.recognition.addEventListener('end', (condition: any) => {\r\n if (this.isStoppedSpeechRecog) {\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n } else {\r\n this.wordConcat()\r\n this.recognition.start();\r\n }\r\n });\r\n }\r\n stop() {\r\n this.isStoppedSpeechRecog = true;\r\n this.wordConcat()\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n }\r\n\r\n wordConcat() {\r\n this.text = this.text + ' ' + this.tempWords + '.';\r\n this.tempWords = '';\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { switchMap, map } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\n selector: 'secure-img',\n template: `\n <img [src]=\"dataUrl$ | async\" style=\"object-fit: contain;\"/>\n `,\n imports: [AsyncPipe]\n})\r\nexport class SecureImgComponent implements OnChanges {\r\n // This code block just creates an rxjs stream from the src\r\n // this makes sure that we can handle source changes\r\n // or even when the component gets destroyed\r\n // So basically turn src into src$\r\n @Input() public src!: string;\r\n private src$ = new BehaviorSubject(this.src);\r\n ngOnChanges(): void {\r\n this.src$.next(this.src);\r\n }\r\n\r\n // this stream will contain the actual url that our img tag will load\r\n // everytime the src changes, the previous call would be canceled and the\r\n // new resource would be loaded\r\n dataUrl$ = this.src$.pipe(switchMap(url => this.loadImage(url)))\r\n\r\n // we need HttpClient to load the image\r\n constructor(private httpClient: HttpClient, private domSanitizer: DomSanitizer) {\r\n }\r\n\r\n private loadImage(url: string): Observable<any> {\r\n return this.httpClient\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))))\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[glowwFileSink]',\n standalone: true\n})\nexport class FileSinkDirective {\n\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, Inject, Input, AfterViewInit } from '@angular/core';\r\nimport { UntypedFormGroup, FormBuilder, FormArray, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { FileSinkDirective } from '../../Directives/file-sink.directive';\nimport { NgClass } from '@angular/common';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-file',\n templateUrl: './upload-file.component.html',\n styleUrls: ['./upload-file.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: UploadFileComponent\n }\n ],\n imports: [MatCard, FileSinkDirective, MatCardContent, NgClass, MatProgressBar, MatCardActions, MatButton]\n})\r\nexport class UploadFileComponent implements ControlValueAccessor, AfterViewInit {\r\n @ViewChild('fileUpload') fileUpload: ElementRef;\r\n @Input() multiple: boolean = false;\r\n @Input() allowAltFileName: boolean = false;\r\n @Input() acceptMime: string = '*/*';\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n form: UntypedFormGroup;\r\n\r\n files = [];\r\n\r\n constructor() {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n const fileUpload = this.fileUpload.nativeElement;\r\n fileUpload.onchange = () => {\r\n if (!this.multiple || !this.files) {\r\n this.files = [];\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n //if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n };\r\n }\r\n\r\n get value() {\r\n return this.files;\r\n //return this._value;\r\n }\r\n\r\n set value(val) {\r\n this.files = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n\r\n writeValue(obj: any): void {\r\n this.value = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n\r\n SelectFiles() {\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n this.fileUpload.nativeElement.click();\r\n }\r\n\r\n ChangeAltName(i, $event) {\r\n this.files[i].altFileName = $event.target.value;\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n prepareFilesList(files: Array<any>) {\r\n if (files.length > 1 && !this.multiple) {\r\n alert(\"You can only drop an only file at once\");\r\n return;\r\n }\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n if (!this.files) this.files = [];\r\n for (const file of files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals = 2) {\r\n if (bytes === 0) {\r\n return \"0 Bytes\";\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\r\n }\r\n\r\n deleteFile(index: number) {\r\n if (this.files[index].progress && this.files[index].progress < 100) {\r\n console.log(\"Upload in progress.\");\r\n return;\r\n }\r\n this.files.splice(index, 1);\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<mat-card appearance=\"outlined\" glowwFileSink (fileDropped)=\"onFileDropped($event)\" style=\"height:calc(100% - 40px)\">\n <mat-card-content style=\"min-height:100px;height:calc(100% - 60px)\">\n @if (files && files.length) {\n <div class=\"files-list\" style=\"height:calc(100% - 60px)\">\n @for (file of files; track file; let i = $index) {\n <div class=\"single-file\" [ngClass]=\"file.status\">\n <i class=\"fa-thin fa-file fa-lg\"></i>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file?.fileName }}\n </h4>\n <p class=\"size\">\n {{ formatBytes(file?.size) }}\n </p>\n <mat-progress-bar [value]=\"file.progress\"></mat-progress-bar>\n </div>\n <i class=\"fa-thin fa-trash fa-lg\" (click)=\"deleteFile(i)\"></i>\n </div>\n }\n </div>\n }\n @if (!files || !files.length) {\n <div style=\"height:calc(100% - 60px)\">No file(s) selected</div>\n }\n <input type=\"file\" #fileUpload id=\"fileUpload\" name=\"fileUpload\" [accept]=\"acceptMime\" style=\"display:none;\" [multiple]=\"multiple\" />\n </mat-card-content>\n <mat-card-actions style=\"text-align:center\">\n <button mat-raised-button color=\"accent\" (click)=\"SelectFiles()\">\n <i class=\"fal fa-file-upload\"></i> @if (!multiple) {\n <span>Select file or Drop a file</span>\n }\n @if (multiple) {\n <span>Select file(s) or drop file(s)</span>\n }\n </button>\n</mat-card-actions>\n</mat-card>","import { Component, OnInit, ViewChild, ElementRef, Inject, Input } from '@angular/core';\r\nimport { FormGroup, UntypedFormBuilder, FormArray, FormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { UploadFileComponent } from '../upload-file/upload-file.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-doc',\n templateUrl: './upload-doc.component.html',\n styleUrls: ['./upload-doc.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, UploadFileComponent, FormsModule, MatDialogActions, MatButton]\n})\r\nexport class UploadDocComponent {\r\n\r\n multiple: boolean = false;\r\n allowAltFileName: boolean = false;\r\n\r\n acceptMime = '*/*';\r\n files = [];\r\n callback: (files: any) => Observable<any>;\r\n constructor(private dialogRef: MatDialogRef<UploadDocComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private formBuilder: UntypedFormBuilder) {\r\n if (data && data.acceptMime) {\r\n this.acceptMime = data.acceptMime;\r\n }\r\n if (data && data.multiple) {\r\n this.multiple = data.multiple;\r\n }\r\n if (data && data.allowAltFileName) {\r\n this.allowAltFileName = data.allowAltFileName;\r\n }\r\n if (data && data.callback) {\r\n this.callback = data.callback;\r\n }\r\n }\r\n\r\n /*\r\n get fileNames(): FormArray {\r\n return this.form.get(\"fileNames\") as FormArray\r\n }\r\n\r\n FileName(fn: string): FormGroup {\r\n return this.formBuilder.group({\r\n fileName: fn\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onClick() {\r\n const fileUpload = this.fileUpload.nativeElement; fileUpload.onchange = () => {\r\n if (this.multiple) {\r\n this.files = [];\r\n if (this.allowAltFileName) { this.fileNames.clear(); }\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name });\r\n if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n };\r\n fileUpload.click();\r\n }\r\n\r\n private uploadFiles() {\r\n this.fileUpload.nativeElement.value = '';\r\n this.files.forEach(file => {\r\n alert('upload file');\r\n // this.uploadFile(file);\r\n });\r\n }\r\n */\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n save() {\r\n console.log(\"save UploadDoc\");\r\n console.log(`this.files.length ${this.files.length}`);\r\n /*if (this.allowAltFileName) {\r\n for (let i = 0; i < this.files.length; i++) {\r\n // Comment to be sure new version\r\n this.files[i].name = this.fileNames.value[i].fileName;\r\n }\r\n }*/\r\n if (this.callback) {\r\n this.callback(this.files).subscribe(res => this.dialogRef.close(this.files));\r\n } else {\r\n this.dialogRef.close(this.files);\r\n }\r\n }\r\n}\r\n","<h2 mat-dialog-title>\r\n Association d'un nouveau document</h2>\r\n\r\n<mat-dialog-content>\r\n\r\n <gloww-upload-file [(ngModel)]=\"files\" [acceptMime]=\"acceptMime\" [multiple]=\"multiple\" [allowAltFileName]=\"allowAltFileName\"></gloww-upload-file>\r\n\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n</mat-dialog-actions>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-search-form',\n templateUrl: './search-form.component.html',\n styleUrls: ['./search-form.component.scss']\n})\r\nexport class SearchFormComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { AfterContentInit, Component, ContentChildren, OnInit, QueryList } from '@angular/core';\r\nimport { MatColumnDef } from '@angular/material/table';\r\n\r\n@Component({\n selector: 'glw-result-table',\n templateUrl: './result-table.component.html',\n styleUrls: ['./result-table.component.scss']\n})\r\nexport class ResultTableComponent implements OnInit, AfterContentInit {\r\n\t@ContentChildren(MatColumnDef) columnDefs: QueryList<MatColumnDef>;\r\n\tconstructor() { }\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tconsole.log(this.columnDefs.length);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Injectable, Optional } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({ providedIn: 'root' })\nexport class GlowwI18nService {\n\tconstructor(@Optional() private readonly translate: TranslateService | null) {}\n\n\tget langChanges$(): Observable<unknown> {\n\t\treturn this.translate?.onLangChange ?? of(null);\n\t}\n\n\tinstant(key: string, fallback: string): string {\n\t\tif (!this.translate) {\n\t\t\treturn fallback;\n\t\t}\n\n\t\tconst translated = this.translate.instant(key);\n\t\treturn translated && translated !== key ? translated : fallback;\n\t}\n}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\n\n@Component({\n selector: 'glw-filter-form',\n templateUrl: './filter-form.component.html',\n styleUrls: ['./filter-form.component.css'],\n imports: [MatCard, MatCardContent, MatCardActions, MatButton, MatIcon]\n})\nexport class FilterFormComponent implements OnInit {\n @Output() filter = new EventEmitter<any>();\n constructor(private readonly i18n: GlowwI18nService) { }\n\n ngOnInit(): void {\n }\n\n onFilter() {\n this.filter.emit(\"xxx\");\n }\n\n get filterLabel(): string {\n return this.i18n.instant('COMMON.FILTER', 'Filter');\n }\n\n}\n","<mat-card appearance=\"outlined\">\r\n <mat-card-content>\r\n <ng-content></ng-content>\r\n </mat-card-content>\r\n <mat-card-actions align=\"end\">\n <button mat-stroked-button color=\"accent\" (click)=\"onFilter()\">\n <mat-icon>search</mat-icon>\n {{ filterLabel }}\n </button>\n </mat-card-actions>\n</mat-card>\n","export class Oauthassociation {\r\n public idOAuth: number;\r\n public provider: string;\r\n public name: string;\r\n public value: string;\r\n\r\n public toString() {\r\n return this.provider;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationServiceConfig {\r\n currentUserVariableName?= 'currentuser';\r\n authenticationUrl?= `/admin/authusers/authenticate`;\r\n changePasswordUrl?= `/admin/authusers/changePassword`;\r\n askResetPasswordCodeUrl?= `/admin/authusers/askResetPasswordCode`;\r\n resetPassworUrl?= `/admin/authusers/resetPassword`;\r\n environment?= '__GlowwSecurity__';\r\n showDomain?= false;\r\n askGSM?= false;\r\n googleClientId?= '';\r\n facebookClientId?= '';\r\n amazonClientId?= '';\r\n microsoftClientId?= '';\r\n}\r\n","import { Oauthassociation } from './../Models/oauthassociation';\r\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\nimport { User } from '../Models/user';\r\nimport { AuthenticationServiceConfig } from './authentication-service-config';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n private currentUserSubject: BehaviorSubject<User>;\r\n public currentUser: Observable<User>;\r\n public currentUserVariableName: string;\r\n public authenticationUrl: string;\r\n public changePasswordUrl: string;\r\n public askResetPasswordCodeUrl: string;\r\n public resetPasswordUrl: string;\r\n public OAuthGetProvidersUrl: string;\r\n public OAuthAskCodeUrl: string;\r\n public OAuthAssociationUrl: string;\r\n public OAuthGetAssociationsUrl: string;\r\n public OAuthDeleteAssociationUrl: string;\r\n public environment: string;\r\n public showdomain: boolean;\r\n public hasLocalStorage = false;\r\n\r\n constructor(private http: HttpClient, @Inject(PLATFORM_ID) private platformId: any, @Optional() config?: AuthenticationServiceConfig) {\r\n this.hasLocalStorage = isPlatformBrowser(this.platformId);\r\n if (config && config.currentUserVariableName) { this.currentUserVariableName = config.currentUserVariableName; } else { this.currentUserVariableName = 'currentUser'; }\r\n if (config && config.authenticationUrl) { this.authenticationUrl = config.authenticationUrl; } else { this.authenticationUrl = `/admin/authusers/authenticate`; }\r\n if (config && config.changePasswordUrl) { this.changePasswordUrl = config.changePasswordUrl; } else { this.changePasswordUrl = this.authenticationUrl.replace('authenticate', 'changePassword'); }\r\n if (config && config.askResetPasswordCodeUrl) { this.askResetPasswordCodeUrl = config.askResetPasswordCodeUrl; } else { this.askResetPasswordCodeUrl = this.authenticationUrl.replace('authenticate', 'askResetPasswordCode'); }\r\n if (config && config.resetPassworUrl) { this.resetPasswordUrl = config.resetPassworUrl; } else { this.resetPasswordUrl = this.authenticationUrl.replace('authenticate', 'resetPassword'); }\r\n this.OAuthGetProvidersUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetProviders');\r\n this.OAuthAskCodeUrl = this.authenticationUrl.replace('authenticate', 'OAuthAskCode');\r\n this.OAuthAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthAssociation');\r\n this.OAuthGetAssociationsUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetAssociations');\r\n this.OAuthDeleteAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthDeleteAssociation');\r\n if (config && config.environment) { this.environment = config.environment; }\r\n if (config && config.showDomain) { this.showdomain = config.showDomain; }\r\n if (this.hasLocalStorage) { // Angular Universal\r\n this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem(this.currentUserVariableName)));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n }\r\n\r\n public get currentUserValue(): User {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value !== null;\r\n }\r\n\r\n login(domain: string, username: string, password: string) {\r\n const formData = new FormData();\r\n if (this.showdomain) { formData.set('domain', domain); }\r\n formData.set('environment', this.environment);\r\n formData.set('username', username);\r\n formData.set('password', password);\r\n return this.http.post<any>(this.authenticationUrl, formData, { observe: 'response' })\r\n .pipe(map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n const user: any = resp.body;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n }));\r\n }\r\n\r\n changePassword(domain: string, username: string, oldpassword: string, newpassword: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: this.currentUserValue.domain ?? '',\r\n username: this.currentUserValue.username,\r\n newpassword,\r\n oldpassword,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.changePasswordUrl, { params });\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n if (this.hasLocalStorage) { localStorage.removeItem(this.currentUserVariableName); }\r\n this.currentUserSubject.next(null);\r\n }\r\n\r\n askResetPasswordCode(domain: string, firstname: string, lastname: string, email: string, gsm: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: '',\r\n firstname,\r\n lastname,\r\n email,\r\n gsm,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.askResetPasswordCodeUrl, { params });\r\n }\r\n\r\n resetPassword(email: string, code: string, password: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n email,\r\n code,\r\n password,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.resetPasswordUrl, { params });\r\n }\r\n\r\n getOAuthProviders() {\r\n return this.http.get<string[]>(this.OAuthGetProvidersUrl);\r\n }\r\n\r\n OAuthAskCode(environment: string, login: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n login,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAskCodeUrl, { params });\r\n }\r\n\r\n OAuthAssociation(environment: string, code: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n code,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAssociationUrl, { params }).pipe(\r\n map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n console.log(\"OAuthAuthentication\");\r\n console.log(resp);\r\n const user: any = resp;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n })\r\n );\r\n }\r\n getOAuthAssociations() {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<Oauthassociation[]>(this.OAuthGetAssociationsUrl, { params }).pipe(\r\n tap((value) => console.log(value)),\r\n map((value) => value.map(item => Object.assign(new Oauthassociation(), item))),\r\n tap((value) => console.log(value))\r\n );\r\n }\r\n\r\n OAuthDeleteAssociation(provider: string, idOAuth: number) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment,\r\n provider,\r\n idOAuth\r\n }\r\n });\r\n return this.http.get(this.OAuthDeleteAssociationUrl, { params });\r\n }\r\n\r\n}\r\n","import { DisplayObjectsConfiguration } from './../display-objects-configuration';\nimport { SearchFormComponent } from '../search-form/search-form.component';\n//import { Reference } from '@angular/compiler/src/render3/r3_ast';\nimport { Component, ContentChild, OnInit, ViewChild, AfterViewInit, ElementRef, Directive, ChangeDetectorRef, Injector, ChangeDetectionStrategy, AfterContentInit, QueryList, ContentChildren, OnChanges, SimpleChanges, Input, TemplateRef, Inject } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, UntypedFormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { MatColumnDef, MatTable, MatTableDataSource, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow } from '@angular/material/table';\r\nimport { combineLatest, forkJoin, ObjectUnsubscribedError, observable, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { HeaderComponent } from '../header/header.component';\r\nimport { ResultTableComponent } from '../result-table/result-table.component';\r\nimport { interval } from 'rxjs';\r\nimport { HttpErrorResponse, HttpEvent, HttpEventType, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Location, NgClass } from '@angular/common';\r\nimport { ActivatedRoute, Data, Router, RouterLink } from '@angular/router';\nimport { MatDialog, MatDialogConfig, MatDialogModule } from '@angular/material/dialog';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { AuthenticationService } from '../../gloww-security/Services/authentication.service';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { map, catchError, mergeMap, tap, filter, switchMap, take } from 'rxjs/operators';\nimport { FilterFormComponent } from '../filter-form/filter-form.component';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatError, MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\n\r\nexport interface Action {\r\n icon: any;\r\n name?: string;\r\n routerLinkFct?: (obj) => string[];\r\n display?: (obj) => boolean;\r\n};\r\n\r\n@Component({\n selector: 'glw-display-objects',\n templateUrl: './display-objects.component.html',\n styleUrls: ['./display-objects.component.scss'],\n imports: [MatCard, MatCardContent, MatError, FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption, MatCardActions, MatButton, MatIcon, MatTable, MatSort, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, RouterLink, NgClass, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow, MatPaginator, MatProgressSpinner, MatDialogModule]\n})\nexport class DisplayObjectsComponent<TObj> implements OnInit, AfterContentInit, AfterViewInit, OnChanges {\n private static readonly DISPLAY_PARAM = '__display';\n private static readonly DISPLAY_FORM = 'form';\n private static readonly DISPLAY_RESULT = 'result';\n private static readonly INTERNAL_QUERY_KEYS = new Set(['__guid', DisplayObjectsComponent.DISPLAY_PARAM]);\n\n @ContentChild(HeaderComponent) header: HeaderComponent;\n @ContentChild(SearchFormComponent) searchFormLayout: SearchFormComponent;\r\n @ContentChild(FilterFormComponent) filterFormLayout: FilterFormComponent;\r\n @ContentChild(ResultTableComponent) resultLayout: ResultTableComponent;\r\n @ViewChild(MatTable, { static: false }) table: MatTable<any>;\r\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: false }) sort: MatSort;\r\n\r\n // after the <ng-content> has been initialized, the column definitions are available.\r\n // All that's left is to add them to the table ourselves:\r\n @Input() configuration: DisplayObjectsConfiguration<TObj>;\r\n @Input() displayObjLink: (obj: TObj, action?: string) => (string | string[]);\r\n @Input() canDisplayObj: ((user: any, obj: TObj, action?: string) => boolean) | boolean = false;\r\n @Input() canEdit: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canDelete: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canAdd: ((user: any) => boolean) | boolean = true;\r\n @Input() form: UntypedFormGroup;\r\n @Input() SearchForm: any;\r\n @Input() searchRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() postRequest: (obj?: TObj | any) => Observable<TObj>;\r\n @Input() deleteRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() putRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() maxrows: string[];\r\n @Input() mandatoryParams: object = {};\r\n @Input() actions = [];\r\n @Input() dialogConfig: object = {};\r\n ///////@Input() fileFields: string[];\r\n @Input() parent: any;\r\n\r\n @Input() columns: () => string[];\r\n @Input() objectName: string;\r\n @Input() primaryKey: string | string[];\r\n @Input() Editor: TemplateRef<any>;\r\n @Input() AddEditor: TemplateRef<any>;\r\n columnsToDisplay = [];\r\n dataSource: MatTableDataSource<TObj>;\r\n displayform = true;\r\n displayresult = false;\r\n queryParams: any = {};\n resultException: string;\n currentUser: any;\n form2: UntypedFormGroup;\n data: object;\n routeParams: object;\n glowwService: GlowwService;\n private viewInitialized = false;\n\n constructor(@Inject('glowwService') glowwService: GlowwService, private changeDetectorRef: ChangeDetectorRef, private dialog: MatDialog, private router: Router, private location: Location, private authenticationService: AuthenticationService, private formBuilder: UntypedFormBuilder, private route: ActivatedRoute, private i18n: GlowwI18nService) {\n this.glowwService = glowwService;\r\n const component = this;\r\n this.currentUser = (this.authenticationService.currentUserValue as any).UserInfo;\r\n this.form2 = this.formBuilder.group({\r\n _MaxRow_: [null]\r\n });\r\n //debugger;\r\n this.data = this.route.snapshot.data;\n this.routeParams = this.route.snapshot.params;\n route.params.subscribe(routeParams => {\n this.routeParams = routeParams;\n if (this.viewInitialized) {\n this.applyRouteState(this.route.snapshot.queryParams);\n }\n });\n route.queryParams.subscribe(queryParams => {\n this.queryParams = { ...queryParams };\n if (this.viewInitialized) {\n this.applyRouteState(queryParams);\n }\n });\n }\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n }\r\n\r\n InitRequest() {\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n if (!this.postRequest) {\r\n this.postRequest = this.glowwService[`post${this.objectName}`];\r\n }\r\n if (!this.deleteRequest) {\r\n this.deleteRequest = this.glowwService[`delete${this.objectName}`];\r\n }\r\n if (!this.putRequest) {\r\n this.putRequest = this.glowwService[`put${this.objectName}`];\r\n }\r\n }\r\n\r\n sortData(sort: Sort) {\r\n this.sort.sort({ id: sort.active, start: sort.direction ? sort.direction : \"asc\", disableClear: true });\r\n //this.sort.sortChange.emit(sort);\r\n }\r\n\r\n\r\n\r\n getValue4Sort(item: any, header: string | object): string | number {\r\n let fct = \"\";\r\n let parts = [];\r\n if (typeof header === 'object') {\r\n fct = header[\"fct\"];\r\n parts = header[\"parts\"];\r\n } else {\r\n console.log(`previewMatchSortingFn ${item} - ${header}`);\r\n const headerFct = header.split(\"---\");\r\n fct = null;\r\n if (headerFct.length === 2) { fct = headerFct[1]; }\r\n parts = headerFct[0].split(\".\");\r\n }\r\n let res = item;\r\n for (let i = 0; i < parts.length; i++) {\r\n res = res[parts[i]];\r\n if (!res) return null;\r\n }\r\n switch (fct) {\r\n case \"insensitive\":\r\n return res.toString().toLowerCase();\r\n }\r\n return res;\r\n }\r\n\r\n ngAfterViewInit(): void {\n if (!this.objectName) this.objectName = this.parent.objectName;\r\n if (!this.actions || this.actions.length === 0) this.actions = this.parent.actions;\r\n if (!this.primaryKey) this.primaryKey = this.parent.primaryKey;\r\n if (!this.columns) this.columns = this.parent.columnsToDisplay;\r\n if (!this.Editor) this.Editor = this.parent.editor;\r\n if (!this.AddEditor) this.AddEditor = this.parent.addEditor ?? this.parent.editor;\r\n ///////if (!this.fileFields) this.fileFields = this.parent.fileFields;\r\n if (!this.maxrows) this.maxrows = this.parent.maxrows;\r\n\r\n this.InitRequest();\n if (this.maxrows?.length > 0) { this.form.addControl(\"_MaxRow_\", new UntypedFormControl(null)); }\n //debugger;\r\n console.log(`INIT : formLayout:${this.searchFormLayout}-displayform:${this.displayform}`)\n this.glowwService.basePathChange.subscribe(newUrl => {\n console.log(`basePathChange ${newUrl}: fromLayout:${this.searchFormLayout}-displayform:${this.displayform}`);\n this.parent.form?.reset();\n this.applyRouteState(this.route.snapshot.queryParams);\n });\n this.viewInitialized = true;\n this.applyRouteState(this.route.snapshot.queryParams);\n }\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n }\n\n t(key: string, fallback: string): string {\n return this.i18n.instant(key, fallback);\n }\n\n Init(data?: Data) {\n if ((data && Object.keys(data).length > 0) || this.displayresult) {\n this.Search(data);\n }\n }\n\n hasSearchState(): boolean {\n return this.displayresult || this.hasSearchQueryParams(this.route.snapshot.queryParams);\n }\n\n onBack(): void {\n const searchQuery = this.buildSearchQueryParams();\n if (!Object.keys(searchQuery).length) {\n this.showForm();\n this.syncFormWithQueryParams({});\n return;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n ...searchQuery,\n [DisplayObjectsComponent.DISPLAY_PARAM]: DisplayObjectsComponent.DISPLAY_FORM\n }\n });\n }\n\n onRefresh(): void {\n this.Search();\n }\n\r\n currentFilter: (data: TObj, filter: string) => boolean = null;\r\n SetFilterPredicate() {\r\n this.dataSource.filterPredicate = function(record, filterString) {\r\n console.log(filterString);\r\n var filter = JSON.parse(filterString);\r\n let isMatch = true;\r\n const keys = Object.keys(filter);\r\n for (let key of keys) {\r\n let value = filter[key];\r\n if (!value) continue;\r\n const re = /(?<Field>.+?)(?=___|$)(?:___(?<Option>.+))?/m;\r\n const keyplus = re.exec(key);\r\n let m;\r\n\r\n let option = \"\";\r\n if (keyplus) {\r\n console.log(`Regex OK ${keyplus}`);\r\n key = keyplus[1];\r\n option = keyplus[2]??\"\";\r\n }\r\n console.log(`${key} - ${option}`)\r\n if (key == \"AllFields\") {\r\n const filterValue = filter[\"AllFields\"].trim().toLowerCase();\r\n const dataStr = Object.keys(record)\r\n .reduce((currentTerm: string, key: string) => {\r\n return currentTerm + (record as { [key: string]: any })[key] + '◬';\r\n }, '')\r\n isMatch = (dataStr.toLowerCase().indexOf(filterValue) != -1);\r\n } else {\r\n console.log(`${key} ${record[key as string]} `);\r\n let fieldValue = record[key as string] ?? \"\";\r\n if (option.includes(\"i\")) {\r\n fieldValue = fieldValue.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n if (option.includes(\"c\")) {\r\n isMatch = fieldValue.includes(value);\r\n } else {\r\n isMatch = (fieldValue == value);\r\n }\r\n\r\n\r\n console.log(`${key} ${record[key as string]} ${value} : ${isMatch}`);\r\n }\r\n if (!isMatch) return false;\r\n }\r\n return isMatch;\r\n }\r\n }\r\n\r\n\r\n Search(data?: Data) {\n console.log(`Search ${this.glowwService.InternalBasePath}`);\r\n if (data) this.data = data;\r\n this.showResult();\n this.resultException = null;\n\n this.queryParams = {};\n\n if (this.data) {\n Object.keys(this.data).forEach(name => {\n this.queryParams[name] = this.data[name];\n });\n }\r\n if (this.routeParams) {\n Object.keys(this.routeParams).forEach(name => {\n this.queryParams[name] = this.routeParams[name];\n });\n }\n const routeQueryParams = this.route.snapshot.queryParams ?? {};\n Object.keys(routeQueryParams).forEach(name => {\n if (!DisplayObjectsComponent.INTERNAL_QUERY_KEYS.has(name)) {\n this.queryParams[name] = routeQueryParams[name];\n }\n });\n\n if (this.mandatoryParams) {\n Object.keys(this.mandatoryParams).forEach(name => {\n this.queryParams[name] = this.mandatoryParams[name];\n });\n }\n Object.keys(this.queryParams).forEach(name => {\n this.queryParams[name] = this.serializeQueryParamValue(this.queryParams[name]);\n });\n this.queryParams['__guid'] = (Math.random().toString()).substring(2);\n\r\n console.log(\"Before searchRequest\");\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, this.queryParams).subscribe(r => {\r\n console.log(\"search done\");\r\n try {\n this.dataSource = new MatTableDataSource<TObj>(r);\n this.SetFilterPredicate();\n } catch (ex) {\r\n alert(`${ex}`);\r\n }\r\n console.log(\"dataSource changed\");\r\n this.changeDetectorRef.detectChanges();\r\n this.UpdateTable();\r\n },\r\n error => {\n this.showForm();\n this.resultException = this.toErrorMessage(error);\n });\n }\n\r\n clean(obj) {\n for (const propName in obj) {\n if (obj[propName] === null || obj[propName] === undefined) {\n delete obj[propName];\n }\n }\r\n }\r\n\r\n onSearch() {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n ...this.buildSearchQueryParams(),\n [DisplayObjectsComponent.DISPLAY_PARAM]: DisplayObjectsComponent.DISPLAY_RESULT\n }\n });\n\n }\n\n private serializeQueryParamValue(value: any): any {\n if (value === undefined || value === null || value === '') {\n return value;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : moment(value).format('YYYY-MM-DD HH:mm:ss');\n }\n\n if (moment.isMoment(value)) {\n return value.isValid() ? value.format('YYYY-MM-DD HH:mm:ss') : null;\n }\n\n return value;\n }\n\r\n onFilter() {\r\n\r\n\r\n }\r\n\r\n UpdateDataSource(r: TObj[]) {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.SetFilterPredicate();\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.UpdateTable();\r\n\r\n }\r\n\r\n UpdateTable() {\r\n console.log(\"UpdateTable()\");\r\n if (this.dataSource) {\r\n if (!this.table) {\r\n console.log('!this.table');\r\n return;\r\n }\r\n this.resultLayout.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n this.dataSource.paginator = this.paginator;\r\n this.dataSource.sort = this.sort;\r\n this.dataSource.sortingDataAccessor = this.getValue4Sort;\r\n console.log(`After this.dataSource.sort = ${this.parent.sort}`);\r\n this.columnsToDisplay = this.columns();\r\n }\r\n }\r\n\r\n canDisplayObjThis(obj, action?) {\r\n try {\r\n if (!this.displayObjLink) { return false; }\r\n if (typeof this.canDisplayObj === 'boolean') { return this.canDisplayObj; }\r\n return this.canDisplayObj(this.currentUser, obj, action);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n canAddThis() {\r\n try {\r\n if (!this.canAdd) { return false; }\r\n if (typeof this.canAdd === 'boolean') { return this.canAdd; }\r\n return this.canAdd(this.currentUser);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canEditThis(obj) {\r\n try {\r\n if (!this.canEdit) { return false; }\r\n if (typeof this.canEdit === 'boolean') { return this.canEdit; }\r\n return this.canEdit(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canDeleteThis(obj) {\r\n try {\r\n if (!this.canDelete) { return false; }\r\n if (typeof this.canDelete === 'boolean') { return this.canDelete; }\r\n return this.canDelete(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return false;\r\n }\r\n }\r\n\r\n displayObjLinkThis(obj, action?) {\r\n if (!this.displayObjLink) { return null; }\r\n return this.displayObjLink(obj, action);\r\n }\r\n\r\n\r\n isString(value): boolean {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n getPrimaryKey(obj: object | TObj): object[] {\r\n let res = [];\r\n if (this.isString(this.primaryKey)) {\r\n console.log(\"string\");\r\n res.push(obj[this.primaryKey as string]);\r\n } else {\r\n console.log(\"string[]\");\r\n (this.primaryKey as string[]).forEach(key => res.push(obj[key]));\r\n }\r\n return res;\r\n }\r\n\r\n _saveObj(obj: any): Observable<any> {\r\n var subject = new Subject<any>();\r\n this.postRequest.call(this.glowwService, obj).subscribe(\r\n data => {\r\n const tmp = this.dataSource.data;\r\n tmp.push(data);\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to add Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n _saveFile(fileField: string, obj: any, file: any): Observable<any> {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n return this.glowwService[`post${this.objectName}${fileField}`].call(this.glowwService, this.getPrimaryKey(obj), formData).pipe(\r\n tap((event: HttpEvent<any>) => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n file.progress = Math.round(event.loaded * 100 / (event.total ?? 1));\r\n file.inProgress = file.progress !== 100;\r\n break;\r\n case HttpEventType.Response:\r\n file.progress = 100;\r\n file.status = \"Done\";\r\n file.inProgress = false;\r\n break;\r\n }\r\n }),\r\n filter((event: HttpEvent<any>) => {\r\n console.log(`filter ${event.type}`);\r\n return event.type === HttpEventType.Response\r\n }),\r\n map((event: HttpResponse<any>) => {\r\n console.log(`map ${event.type}`);\r\n const tmp = this.dataSource.data;\r\n tmp[tmp.indexOf(obj)] = event.body;\r\n this.dataSource.data = tmp;\r\n console.log(`after replace...`);\r\n return event.body;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n file.inProgress = false;\r\n file.status = \"Error\";\r\n console.log(`${file.data.name} upload failed.`);\r\n //subject.error(error);\r\n return of(`${file.data.name} upload failed.`);\r\n })\r\n );\r\n }\r\n\r\n AddObj() {\n const dialogConfig = new MatDialogConfig();\n dialogConfig.disableClose = true;\n dialogConfig.autoFocus = true;\n dialogConfig.closeOnNavigation = false;\n dialogConfig.panelClass = 'gw-resizable-dialog-panel';\n dialogConfig.width = '900px';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.maxHeight = '100vh';\n if (this.dialogConfig) {\n Object.keys(this.dialogConfig).forEach(\n name => {\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n let args = {};\r\n Object.keys(this.route.snapshot?.params).forEach(key => {\r\n args[key] = this.route.snapshot?.params[key];\r\n dialogConfig.data = args;\r\n });\r\n\r\n\r\n const dlg = this.dialog.open(this.AddEditor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n console.log(`fileFields ${fileFields?.length}`);\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n console.log(`fileField ${fileField}`);\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._saveObj(datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n console.log(`file.fileName ${file.fileName}`);\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._saveObj(datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._saveObj(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DeleteObj(obj) {\r\n if (confirm(this.t('GLOWW.CONFIRM_DELETE', 'Are you sure you want to delete this object ?'))) {\n this.deleteRequest.apply(this.glowwService, this.getPrimaryKey(obj)).subscribe(\n p => {\r\n const i = this.dataSource.data.indexOf(obj);\r\n const tmp = this.dataSource.data;\r\n tmp.splice(i, 1);\r\n this.dataSource.data = tmp;\r\n },\n error => {\n alert(`${this.t('GLOWW.UNABLE_TO_DELETE_OBJECT', 'Unable to delete object')} ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\n }\n );\n }\n }\r\n\r\n _updateObj(current: any, newData: any): Observable<any> {\r\n let args: object[] = this.getPrimaryKey(current); args.push(newData);\r\n var subject = new Subject<any>();\r\n this.putRequest.apply(this.glowwService, args).subscribe(\r\n data => {\r\n const i = this.dataSource.data.indexOf(current);\r\n const tmp = this.dataSource.data;\r\n tmp[i] = data;\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to update Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n\r\n\r\n EditObj(obj: TObj) {\n const dialogConfig = new MatDialogConfig();\n dialogConfig.disableClose = true;\n dialogConfig.autoFocus = true;\n dialogConfig.closeOnNavigation = false;\n dialogConfig.panelClass = 'gw-resizable-dialog-panel';\n dialogConfig.width = '900px';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.maxHeight = '100vh';\n\n if (this.dialogConfig) {\n Object.keys(this.dialogConfig).forEach(\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n const current = { ...obj };\r\n dialogConfig.data = obj;\r\n const dlg = this.dialog.open(this.Editor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._updateObj(current, datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._updateObj(current, datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._updateObj(current, data);\r\n }\r\n }\r\n );\r\n }\n\n private toErrorMessage(error: any): string {\n if (!error) {\n return '';\n }\n\n const details = error.error?.message || error.error || error.message || error.statusText || `${error}`;\n return `${this.t('GLOWW.UNABLE_TO_QUERY', 'Unable to query')} : ${details}`;\n }\n\n private applyRouteState(queryParams: any): void {\n this.dataSource = null;\n this.resultException = null;\n this.queryParams = { ...(queryParams ?? {}) };\n this.syncFormWithQueryParams(this.queryParams);\n\n if (this.shouldDisplayForm(this.queryParams)) {\n this.showForm();\n this.changeDetectorRef.detectChanges();\n return;\n }\n\n if (this.shouldDisplayResult(this.queryParams)) {\n this.showResult();\n this.changeDetectorRef.detectChanges();\n this.Search();\n return;\n }\n\n this.showForm();\n this.changeDetectorRef.detectChanges();\n }\n\n private shouldDisplayForm(queryParams: any): boolean {\n if (!this.searchFormLayout) {\n return false;\n }\n\n return queryParams?.[DisplayObjectsComponent.DISPLAY_PARAM] === DisplayObjectsComponent.DISPLAY_FORM;\n }\n\n private shouldDisplayResult(queryParams: any): boolean {\n if (!this.searchFormLayout && this.resultLayout) {\n return true;\n }\n\n if (Object.keys(this.data ?? {}).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\n return true;\n }\n\n if (Object.keys(this.routeParams ?? {}).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\n return true;\n }\n\n return queryParams?.[DisplayObjectsComponent.DISPLAY_PARAM] === DisplayObjectsComponent.DISPLAY_RESULT\n || this.hasSearchQueryParams(queryParams);\n }\n\n private hasSearchQueryParams(queryParams: any): boolean {\n if (!queryParams) {\n return false;\n }\n\n return Object.keys(queryParams).some(key =>\n !DisplayObjectsComponent.INTERNAL_QUERY_KEYS.has(key) &&\n queryParams[key] !== null &&\n queryParams[key] !== undefined &&\n queryParams[key] !== ''\n );\n }\n\n private syncFormWithQueryParams(queryParams: any): void {\n const searchData = {};\n Object.keys(queryParams ?? {}).forEach(key => {\n if (DisplayObjectsComponent.INTERNAL_QUERY_KEYS.has(key) || key === '_MaxRow_') {\n return;\n }\n\n searchData[key] = queryParams[key];\n });\n\n const parentForm = this.parent?.form;\n if (parentForm?.contains('searchData')) {\n parentForm.patchValue({\n searchData: Object.keys(searchData).length ? searchData : null\n }, { emitEvent: false });\n }\n\n if (this.form2?.contains('_MaxRow_')) {\n this.form2.patchValue({\n _MaxRow_: queryParams?._MaxRow_ ?? null\n }, { emitEvent: false });\n }\n }\n\n private buildSearchQueryParams(): any {\n const nextQueryParams: any = {};\n const searchData: any = this.parent?.form?.value?.searchData;\n const form2Value: any = this.form2.value;\n if (searchData) {\n Object.keys(searchData).forEach(name => {\n nextQueryParams[name] = this.serializeQueryParamValue(searchData[name]);\n });\n }\n if (form2Value._MaxRow_) {\n nextQueryParams._MaxRow_ = form2Value._MaxRow_;\n }\n this.clean(nextQueryParams);\n return nextQueryParams;\n }\n\n private showForm(): void {\n this.displayform = true;\n this.displayresult = false;\n }\n\n private showResult(): void {\n this.displayform = false;\n this.displayresult = true;\n }\n\n}\n","<div>\n <ng-content select=\"glw-header\"></ng-content>\n</div>\n\n@if (displayform) {\n <div>\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n @if (resultException) {\n <mat-error>\n {{ resultException }}\n </mat-error>\n }\n <ng-content select=\"glw-search-form\"></ng-content>\n <!--<ng-container *ngComponentOutlet=\"SearchForm; injector: objInjector\"></ng-container>-->\n @if (maxrows) {\n <div [formGroup]=\"form2\">\n <br />\n <mat-form-field>\n <mat-select [placeholder]=\"t('COMMON.MAX_ROW', 'MaxRow')\" formControlName=\"_MaxRow_\">\n @for (maxrow of maxrows; track maxrow) {\n <mat-option [value]=\"maxrow\">\n @if (maxrow) {\n <span>{{maxrow}} {{ t('COMMON.OBJECTS_SUFFIX', 'objects') }}</span>\n }\n @if (!maxrow) {\n <span>{{ t('COMMON.DEFAULT', 'Default') }}</span>\n }\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n }\n </mat-card-content>\n <mat-card-actions>\n <button mat-stroked-button color=\"accent\" (click)=\"onSearch()\">\n <mat-icon>search</mat-icon>\n {{ t('COMMON.SEARCH', 'Search') }}\n </button>\n </mat-card-actions>\n </mat-card>\n </div>\n}\n\n<div [hidden]=\"!displayresult\">\n <!--*ngIf=\"displayresult\"-->\n <div class=\"mat-elevation-z8\" [hidden]=\"!dataSource\">\n <ng-content select=\"[filter]\"></ng-content>\n\n <!--*ngIf=\"dataSource; else Spinner\"-->\n <table mat-table [dataSource]=\"dataSource\" matSort>\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef>\n @if (hasSearchState()) {\n <i class=\"fal fa-arrow-left\" (click)=\"onBack()\" [attr.title]=\"t('COMMON.BACK', 'Back')\">\n </i>\n <i class=\"fal fa-rotate-right\" (click)=\"onRefresh()\" [attr.title]=\"t('COMMON.REFRESH', 'Refresh')\">\n </i>\n }\n @if (canAddThis()) {\n <i class=\"fal fa-plus\" (click)=\"AddObj()\">\n </i>\n }\n </th>\n <td mat-cell *matCellDef=\"let obj\">\n @if (canDisplayObjThis(obj)) {\n <i class=\"fal fa-eye\" [routerLink]=\"displayObjLinkThis(obj)\">\n </i>\n }\n @for (action of actions; track action) {\n @if (action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\">\n </i>\n }\n @if (!action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\"></i>\n }\n }\n @if (canDeleteThis(obj)) {\n <i class=\"fal fa-trash-alt\" (click)=\"DeleteObj(obj)\">\n </i>\n }\n @if (canEditThis(obj)) {\n <i class=\"fal fa-pencil\" (click)=\"EditObj(obj)\">\n </i>\n }\n </td>\n </ng-container>\n <ng-content select=\"glw-result-table\"></ng-content>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let myRowData; columns: columnsToDisplay\"></tr>\n </table>\n <mat-paginator [pageSize]=\"10\" [pageSizeOptions]=\"[10, 20, 50, 100]\" [showFirstLastButtons]=\"true\"></mat-paginator>\n </div>\n <div #Spinner [hidden]=\"dataSource\">\n <mat-spinner></mat-spinner>\n </div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class PromptComponent implements OnInit {\r\n title: string;\r\n message: string;\r\n form: UntypedFormGroup;\r\n\r\n constructor(public dialogRef: MatDialogRef<PromptComponent>, @Inject(MAT_DIALOG_DATA) public data: PromptModel, private formBuilder: UntypedFormBuilder) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.form = this.formBuilder.group({\r\n prompt: [data.initialValue, data.required ? Validators.required : null],\r\n });\r\n }\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onCancel(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(false);\r\n }\r\n\r\n onOK(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(this.form.value.prompt);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class PromptModel {\r\n constructor(public title: string, public message: string, public initialValue: string, public required: boolean) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n","import { MonoTypeOperatorFunction } from 'rxjs';\r\nimport { delay as delayOperator, retryWhen, scan, tap } from 'rxjs/operators';\r\n\r\nexport function retryWithDelay<T>(\r\n delay: number,\r\n count = 1\r\n): MonoTypeOperatorFunction<T> {\r\n return (input) =>\r\n input.pipe(\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n scan((acc, error) => ({ count: acc.count + 1, error }), {\r\n count: 0,\r\n error: undefined as any,\r\n }),\r\n tap((current) => {\r\n if (current.count > count) {\r\n throw current.error;\r\n }\r\n }),\r\n delayOperator(delay)\r\n )\r\n )\r\n );\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { switchMap, map, catchError, retry, delay } from 'rxjs/operators';\nimport { retryWithDelay } from './retry-with-delay';\n\n@Pipe({\n name: 'secure',\n standalone: true\n})\nexport class SecurePipe implements PipeTransform {\n\r\n constructor(private http: HttpClient, private domSanitizer: DomSanitizer) { }\r\n\r\n transform(url: any, delayVal?: any, retryVal?: any) {\r\n if (!delayVal) { delayVal = 5000; }\r\n if (!retryVal) { retryVal = 0; }\r\n return this.http\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(\r\n map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))),\r\n retryWithDelay(delayVal, retryVal)\r\n );\r\n }\r\n}\r\n","import { Component, HostBinding, Inject, Input, OnInit, AfterViewInit } from '@angular/core';\r\nimport { NavItem } from '../../Models/nav-item';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { NavService } from '../../Services/nav.service';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { async } from 'rxjs';\nimport { NgStyle, NgClass, AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatListItemTitle } from '@angular/material/list';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\n\r\n@Component({\n selector: 'gloww-menu-list-item',\n templateUrl: './menu-list-item.component.html',\n styleUrls: ['./menu-list-item.component.scss'],\n animations: [\n trigger('indicatorRotate', [\n state('collapsed', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)'))\n ])\n ],\n imports: [NgStyle, NgClass, RouterLink, MatIcon, MatListItem, MatListItemIcon, MatListItemTitle, AsyncPipe]\n})\nexport class MenuListItemComponent implements OnInit, AfterViewInit {\n\r\n private _expanded: boolean = false;\r\n get expanded(): boolean {\r\n return this._expanded;\r\n }\r\n set expanded(value: boolean) {\r\n console.log(\"change expanded\");\r\n this._expanded = value;\r\n }\r\n\r\n @HostBinding('attr.aria-expanded') ariaExpanded = this.expanded;\r\n @Input() item: NavItem;\r\n @Input() depth: number;\r\n glowwService: GlowwService;\r\n _disabled: Promise<boolean>;\r\n _hidden: Promise<boolean>;\r\n\r\n\r\n constructor(@Inject('glowwService') glowwService: GlowwService, public navService: NavService, public router: Router, private readonly i18n: GlowwI18nService) {\n this.glowwService = glowwService;\n if (this.depth === undefined) {\n this.depth = 0;\n }\r\n }\r\n ngAfterViewInit(): void {\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n this.glowwService.basePathChange.subscribe(newUrl => {\r\n console.log(`basePathChange in menu ${newUrl}`);\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n onItemSelected(item: NavItem) {\r\n if (item.children && item.children.length) {\r\n this.expanded = !this.expanded;\r\n }\r\n }\r\n\r\n isActive(item: NavItem) {\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n return route ? this.router.isActive(route, true) : false\r\n }\r\n }\r\n\r\n routerLink(item: NavItem) {\n //if (this.isDisabled(item)) return null;\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n }\r\n return route;\n }\n\n displayName(item: NavItem): string {\n return this.i18n.instant(item.displayName, item.displayName);\n }\n\r\n falsePromise = new Promise<boolean>((resolve, reject) => {\r\n resolve(false)\r\n });\r\n\r\n getDisabledPromise() {\r\n //console.log(`isdisable item ${item.displayName} ${item.disabled}`);\r\n if (!this.item.disabled) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.disabled as any)();\r\n }\r\n\r\n getHiddenPromise() {\r\n if (!this.item.hidden) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.hidden as any)();\r\n }\r\n\r\n}\r\n","@if (item) {\n @if (!(_hidden | async)) {\n <div class=\"thisMenu\" (click)=\"onItemSelected(item)\" [class.disabled]=\"(_disabled | async)\">\n <a mat-list-item lines=\"1\"\n [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\"\n [ngClass]=\"{'active': isActive(item) && !(_disabled | async), 'expanded': expanded}\"\n class=\"menu-list-item\"\n [routerLink]=\"routerLink(item)\">\n <span matListItemIcon class=\"routeIcon\">\n <i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i>\n </span>\n <span matListItemTitle class=\"menu-label\">{{ displayName(item) }}</span>\n </a>\n @if (item.children?.length && !(_disabled | async)) {\n <div class=\"expand-container\">\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\n expand_more\n </mat-icon>\n </div>\n }\n </div>\n }\n @if (expanded && !(_disabled | async)) {\n <div>\n @for (child of item.children; track child) {\n <gloww-menu-list-item [item]=\"child\" [depth]=\"depth+1\">\n </gloww-menu-list-item>\n }\n </div>\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface Snippet {\r\n name: string;\r\n code?: string;\r\n externfile?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SnippetsService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getSnippets(path: string): Observable<Snippet[]> {\r\n return this.http.get<Snippet[]>(path);\r\n }\r\n\r\n getSnippetCode(path: string) {\r\n return this.http.get(path, {\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n}\r\n","import { Snippet, SnippetsService } from './../../Services/snippets.service';\r\nimport { Component, Input, OnInit, ViewChild, AfterViewInit, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { CodemirrorComponent, CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport * as prettier from 'prettier/standalone';\r\nimport * as parserTypescript from 'prettier/plugins/typescript';\r\nimport * as parserBabel from 'prettier/plugins/babel';\r\nimport { MatLabel } from '@angular/material/input';\r\nimport { MatSelect, MatOption } from '@angular/material/select';\r\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'gloww-code-editor',\r\n templateUrl: './code-editor.component.html',\r\n styleUrls: ['./code-editor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: CodeEditorComponent\r\n }\r\n ],\r\n imports: [MatLabel, MatSelect, FormsModule, MatOption, MatButton, CodemirrorModule]\r\n})\r\nexport class CodeEditorComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('display') display: string = null;\r\n @Input('mode') mode: any = \"text/typescript\";\r\n @Input('formatter') formatter?: string;\r\n @Input('formatterOptions') formatterOptions?: any = { useTabs: true, printWidth: 160 };\r\n @Input('snippets') snippets?: Snippet[];\r\n @Input('snippetsPath') snippetsPath?: string;\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n resizable = true;\r\n\r\n currentSnippet?: Snippet;\r\n doc: any = null;\r\n extraKeys = {\r\n \"Alt-K\": function(cm) { alert('Alt-K'); cm.blockComment(cm.doc.getCursor('from'), cm.doc.getCursor('to'));/*cm.toggleComment();*/ },\r\n \"Shift-Alt-K\": \"toggleComment\",\r\n \"Alt-N\": this.autoFormatSelection.bind(this)\r\n };\r\n\r\n constructor(private snippetsService: SnippetsService, private glowwService: GlowwService) {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n console.log(this.codeMirrorComponent);\r\n console.log(this.codeMirrorComponent.codeMirror);\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n console.log(this.doc);\r\n if (this.snippetsPath) {\r\n this.snippetsService.getSnippets(this.snippetsPath.replace(\"/assets/\", this.glowwService.baseHref + \"/assets/\")).subscribe((snippets) => {\r\n if (!this.snippets) {\r\n this.snippets = [];\r\n }\r\n snippets.forEach((snippet) => this.snippets.push(snippet));\r\n });\r\n }\r\n }\r\n\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (typeof (obj) === 'object' && obj != null) {\r\n this.value = JSON.stringify(obj);\r\n } else {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n insert() {\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n var cursor = this.doc.getCursor();\r\n if (this.currentSnippet.code) {\r\n this.doc.replaceRange(this.currentSnippet.code, cursor);\r\n }\r\n if (this.currentSnippet.externfile) {\r\n this.snippetsService.getSnippetCode(this.currentSnippet.externfile).subscribe((code) => this.doc.replaceRange(code, cursor));\r\n }\r\n }\r\n\r\n getSelectedRange(doc) {\r\n return { from: doc.getCursor('from'), to: doc.getCursor('to') };\r\n }\r\n\r\n getFormatter(): string {\r\n if (this.formatter) return this.formatter;\r\n if (this.mode.match(/typescript/)) { return \"typescript\"; }\r\n return null;\r\n }\r\n\r\n\r\n autoFormatSelection(cm) {\r\n try {\r\n const formatter = this.getFormatter();\r\n if (!formatter) {\r\n alert(\"no formatter defined for this code\");\r\n return;\r\n }\r\n let options: any = { ...this.formatterOptions };\r\n options.parser = formatter;\r\n options.plugins = [parserTypescript, parserBabel]\r\n\r\n cm.doc.setValue(prettier.format(cm.doc.getValue(), options));\r\n } catch (ex) {\r\n alert(`Unable to format this code, check Syntax`);\r\n }\r\n }\r\n}\r\n","<div class=\"editor-container mainDiv\">\n <mat-label>{{display}}</mat-label>\n\n @if (snippets?.length) {\n <div class=\"snippet-header\">\n <mat-select [(ngModel)]=\"currentSnippet\" class=\"snippet-select\">\n @for (snippet of snippets; track snippet) {\n <mat-option [value]=\"snippet\">{{snippet.name}}</mat-option>\n }\n </mat-select>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"insert()\">Insert</button>\n </div>\n }\n\n <ngx-codemirror\n [(ngModel)]=\"value\"\n [options]=\"{lineNumbers: true, theme: 'eclipse', indentWithTabs:true, indentUnit: 4, matchBrackets: true, mode: mode, fixedGutter:false, extraKeys: extraKeys}\"\n class=\"editor-full-width\">\n </ngx-codemirror>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'htmlFormat',\n standalone: true\n})\nexport class HtmlFormatPipe implements PipeTransform {\n\r\n constructor(private _sanitizer?: DomSanitizer) { }\r\n\r\n transform(value: string, ...args: unknown[]): string {\r\n const newval = value.replace(/(^\\s*\\w|\\.\\s\\w)/g, m => m.toUpperCase()).replace(/\\s\\./ig, '').replace(/\\s*Nouvelle ligne\\s*.\\s*/ig, '<br/>').trim();\r\n if (!this._sanitizer) return newval;\r\n return this._sanitizer.bypassSecurityTrustHtml(newval) as string;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, OnInit, Output, Input } from '@angular/core';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\n selector: 'gloww-social-network',\n templateUrl: './social-network.component.html',\n styleUrls: ['./social-network.component.scss'],\n imports: [NgClass]\n})\r\nexport class SocialNetworkComponent implements OnInit {\r\n @Input() oAuthProviders: any[];\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n\r\n icons = {\r\n Google: \"fa-brands fa-google\",\r\n LinkedIN: \"fa-brands fa-linkedin\",\r\n Facebook: \"fa-brands fa-facebook\",\r\n Github: \"fa-brands fa-github\",\r\n Amazon: \"fa-brands fa-amazon\",\r\n Apple: \"fa-brands fa-apple\",\r\n Microsoft: \"fa-brands fa-microsoft\",\r\n Twitter: \"fa-brands fa-twitter\",\r\n VK: \"fa-brands fa-vk\",\r\n };\r\n\r\n // oAuthAssociations: string[];\r\n // oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService) {\r\n // this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n // this.authenticationService.getOAuthAssociations().subscribe(oap => this.oAuthAssociations = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n execute(provider) {\r\n this.callback.emit(provider);\r\n }\r\n writeobj(provider) {\r\n console.log(provider);\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","@if (oAuthProviders) {\n <div class=\"social-network-container\">\n @for (provider of oAuthProviders; track provider) {\n <a (click)=\"execute(provider)\" class=\"provider-link\" [title]=\"provider\">\n <i [ngClass]=\"icons[provider.toString()]\"></i>\n </a>\n }\n </div>\n}","import { MatIconModule } from '@angular/material/icon';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\nimport { MatCard, MatCardHeader, MatCardTitle, MatCardContent } from '@angular/material/card';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\r\n\r\n@Component({\n selector: 'gloww-login',\n templateUrl: 'login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [MatCard, MatCardHeader, MatCardTitle, FormsModule, ReactiveFormsModule, MatCardContent, MatFormField, MatLabel, MatInput, MatButton, SocialNetworkComponent]\n}) export class LoginComponent implements OnInit {\n public loginForm: UntypedFormGroup;\r\n public lostPasswordForm: UntypedFormGroup;\r\n public resetPasswordForm: UntypedFormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n application: string;\r\n error = '';\r\n showDomain = false;\r\n state = 1;\r\n config: AuthenticationServiceConfig;\r\n oAuthProviders: string[];\r\n\r\n idOauth?: number;\r\n provider?: string;\r\n name?: string;\r\n value?: string;\n\n\n constructor(private formBuilder: UntypedFormBuilder, private route: ActivatedRoute, private router: Router, private authenticationService: AuthenticationService, @Optional() config?: AuthenticationServiceConfig) {\n // redirect to home if already logged in\r\n if (this.authenticationService.currentUserValue) {\r\n this.router.navigate(['/']);\r\n }\r\n this.config = config;\r\n if (config && config.showDomain) {\n this.showDomain = config.showDomain;\n }\n\n this.initializeForms();\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\n }\n\n private initializeForms() {\n const grp: any = {\n username: ['', Validators.required],\n password: ['', Validators.required]\n };\n const lostPwd: any = {\n email: ['', Validators.required],\n gsm: [''],\n firstname: ['', Validators.required],\n lastname: ['', Validators.required]\n };\n const resetPwd: any = {\n email: ['', Validators.required],\n code: ['', Validators.required],\n newPassword: ['', Validators.required],\n confirmationPassword: ['', Validators.required]\n };\n if (this.showDomain) {\n grp.domain = [''];\n }\n this.loginForm = this.formBuilder.group(grp);\n this.lostPasswordForm = this.formBuilder.group(lostPwd);\n this.resetPasswordForm = this.formBuilder.group(resetPwd, { validator: this.MatchPassword });\n }\n\n MatchPassword(fg: UntypedFormGroup) {\n if (!fg) { return; }\n return fg.get('newpassword')?.value === fg.get('confirmationPassword')?.value;\n }\n ngOnInit() {\n // get return url from route parameters or default to '/'\n this.returnUrl = this.route.snapshot.queryParams.returnUrl;//|| window.location.search;\n this.application = this.route.snapshot.queryParams.application;//|| window.location.pathname;\r\n console.log(`returnUrl : ${this.returnUrl}`);\r\n console.log(`application : ${this.application}`);\r\n\r\n this.idOauth = this.route.snapshot.queryParams.idOauth;\r\n this.provider = this.route.snapshot.queryParams.provider;\r\n this.name = this.route.snapshot.queryParams.name;\r\n this.value = this.route.snapshot.queryParams.value;\r\n if (this.idOauth) {\r\n this.state = 4;\r\n }\r\n\r\n }\r\n\r\n // convenience getter for easy access to form fields\r\n get f() { return this.loginForm.controls; }\r\n\r\n resetError() {\r\n this.error = \"\";\r\n }\r\n\r\n onConnect() {\r\n this.submitted = true;\r\n this.error = \"\";\r\n // stop here if form is invalid\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n this.loading = true;\r\n let domain = '';\r\n if (this.showDomain) {\r\n domain = this.f.domain.value;\r\n }\r\n this.authenticationService.login(domain, this.f.username.value, this.f.password.value)\r\n .pipe(first())\r\n .subscribe(data => {\r\n console.log(`navigate to ${this.returnUrl}`);\r\n this.router.navigate([this.returnUrl]);\r\n }, error => {\r\n if (error.error?.Code) {\r\n switch (error.error?.Code) {\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur(${error.error?.Params?.Username}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n if (!this.error) this.error = error.error.Message;\r\n }\r\n else {\r\n this.error = 'Impossible de se connecter. ';\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n\r\n onAskResetPasswordCode() {\r\n let gsm = this.lostPasswordForm.value.gsm;\r\n if (!this.config?.askGSM) {\r\n gsm = '--noGSM--';\r\n }\r\n this.authenticationService\r\n .askResetPasswordCode('', this.lostPasswordForm.value.firstname, this.lostPasswordForm.value.lastname, this.lostPasswordForm.value.email, gsm)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 3;\r\n }\r\n\r\n onResetPassword() {\r\n this.authenticationService\r\n .resetPassword(this.resetPasswordForm.value.email, this.resetPasswordForm.value.code, this.resetPasswordForm.value.newPassword)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 1;\r\n }\r\n\r\n OAuthSignIn(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}?returnUrl=${encodeURI(this.returnUrl)}&application=${encodeURI(this.application)}&loginUrl=${encodeURI(window.location.pathname)}¤tUserVariableName=${this.authenticationService.currentUserVariableName}`;\r\n window.location.href = url;\r\n }\r\n\r\n onOAuthAskCode(): void {\r\n this.authenticationService\r\n .OAuthAskCode(this.authenticationService.environment, this.resetPasswordForm.value.email, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n d => {\r\n this.state = 5;\r\n },\r\n error => { }\r\n );\r\n }\r\n onOAuthAssociation(): void {\r\n this.authenticationService\r\n .OAuthAssociation(this.authenticationService.environment, this.resetPasswordForm.value.code, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n user => {\r\n console.log(user);\r\n window.location.href = this.returnUrl;\r\n },\r\n error => { }\r\n );\r\n }\r\n}\r\n","<div class=\"login-wrapper center-layout\">\n <mat-card appearance=\"outlined\" class=\"login-card\">\n <mat-card-header>\n <mat-card-title>Connexion</mat-card-title>\n </mat-card-header>\n\n @if (state==1) {\n <form class=\"example-form\" [formGroup]=\"loginForm\" (ngSubmit)=\"onConnect()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n @if (showDomain) {\n <mat-form-field class=\"full-width\">\n <mat-label>Domain</mat-label>\n <input matInput formControlName=\"domain\" (change)=\"resetError()\">\n </mat-form-field>\n }\n <mat-form-field class=\"full-width\">\n <mat-label>Username</mat-label>\n <input matInput formControlName=\"username\" (change)=\"resetError()\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Password</mat-label>\n <input matInput formControlName=\"password\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </mat-card-content>\n <div class=\"action-buttons-row\">\n <button mat-raised-button color=\"primary\" type=\"submit\">Me Connecter</button>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"state=2; resetError();\">\n Mot de passe oublié\n </button>\n </div>\n <div class=\"social-divider\">\n <gloww-social-network (callback)=\"OAuthSignIn($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\n </div>\n </form>\n }\n\n @if (state==2) {\n <form class=\"example-form\" [formGroup]=\"lostPasswordForm\" (ngSubmit)=\"onAskResetPasswordCode()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n </mat-card-content>\n <div class=\"action-buttons-column\">\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Demande de réinitialisation</button>\n <button mat-stroked-button color=\"primary\" class=\"btn-block\" (click)=\"state=3\">J'ai un code</button>\n </div>\n </form>\n }\n\n </mat-card>\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\tconstructor(private authenticationService: AuthenticationService) { }\r\n\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\t// add authorization header with jwt token if available\r\n\t\ttry {\r\n\t\t\tconst currentUser = this.authenticationService.currentUserValue;\r\n\t\t\tif (currentUser && currentUser.Token) {\r\n\t\t\t\trequest = request.clone({\r\n\t\t\t\t\tsetHeaders: {\r\n\t\t\t\t\t\tAuthorization: `Bearer ${currentUser.Token}`\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(`jwt interceptor ${e}`);\r\n\t\t}\r\n\r\n\t\treturn next.handle(request);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(err => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n this.authenticationService.logout();\r\n location.reload();\r\n }\r\n\r\n const error = err.error ? (err.error.message || err.StatusText) : err.statusText;\r\n if (console) console.log(err);\r\n return throwError(err);\r\n }));\r\n }\r\n}\r\n","import { MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-change-password-dlg',\n templateUrl: './change-password-dlg.component.html',\n styleUrls: ['./change-password-dlg.component.scss'],\n imports: [MatDialogTitle, FormsModule, ReactiveFormsModule, CdkScrollable, MatDialogContent, MatFormField, MatLabel, MatInput, MatDialogActions, MatButton]\n})\r\nexport class ChangePasswordDlgComponent implements OnInit {\r\n error: string;\r\n form: UntypedFormGroup;\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<ChangePasswordDlgComponent>, private authenticationService: AuthenticationService) {\r\n this.form = this.formBuilder.group({\r\n oldpassword: ['', Validators.required],\r\n newpassword: ['', Validators.required],\r\n confirmationpassword: ['', Validators.required]\r\n }, { validator: c => c.get('newpassword').value === c.get('confirmationpassword').value });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n resetError() {\r\n this.error = '';\r\n }\r\n\r\n onSubmit() {\r\n this.resetError();\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n const user = this.authenticationService.currentUserValue;\r\n this.authenticationService.changePassword('', user.username, this.form.value.oldpassword, this.form.value.newpassword).subscribe(r =>\r\n this.dialogRef.close(true),\r\n error => {\r\n switch (error.error?.Code) {\r\n case 'COMPLEXITY':\r\n this.error = 'Le mot de passe souhaitez n\\'est pas suffisamment complexe. Veuillez utiliser un mot de passe long (8 caractères minimum) combinant des majuscules, minuscules, chiffres et caractères spéciaux.';\r\n break;\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur (${error.error?.Params?.Username}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n this.error = error.error.Message;\r\n }\r\n );\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<h2 mat-dialog-title>Change Password</h2>\n\n<form class=\"password-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <mat-dialog-content>\n <div class=\"form-container\">\n @if (error) {\n <div class=\"error-msg full-width\">\n {{error}}\n </div>\n }\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Old Password</mat-label>\n <input matInput formControlName=\"oldpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>New Password</mat-label>\n <input matInput formControlName=\"newpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Confirmation</mat-label>\n <input matInput formControlName=\"confirmationpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <button mat-button (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Change Password\n </button>\n </mat-dialog-actions>\n</form>","import { Oauthassociation } from './../../Models/oauthassociation';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-social-network-dlg',\n templateUrl: './social-network-dlg.component.html',\n styleUrls: ['./social-network-dlg.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, SocialNetworkComponent, MatDialogActions, MatButton]\n})\r\nexport class SocialNetworkDlgComponent implements OnInit {\r\n\r\n oAuthProviders: string[];\r\n oAuthAssociations: Oauthassociation[];\r\n config: AuthenticationServiceConfig;\r\n\r\n constructor(private dialogRef: MatDialogRef<SocialNetworkDlgComponent>, private authenticationService: AuthenticationService, private dialog: MatDialog, @Optional() config?: AuthenticationServiceConfig) {\r\n this.config = config;\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n this.authenticationService.getOAuthAssociations().subscribe(oap => {\r\n this.oAuthAssociations = oap;//oap.map(item => Object.assign(new Oauthassociation(), item));\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n OK() {\r\n this.dialogRef.close();\r\n }\r\n\r\n OAuthAddAssociation(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}`;\r\n window.location.href = url;\r\n }\r\n OAuthDeleteAssociation(association: Oauthassociation): void {\r\n this.authenticationService.OAuthDeleteAssociation(association.provider, association.idOAuth).subscribe(\r\n result => {\r\n alert(\"Association supprimée\");\r\n const index = this.oAuthAssociations.indexOf(association, 0);\r\n if (index >= 0) {\r\n this.oAuthAssociations.splice(index, 1);\r\n } else {\r\n alert(\"unable to delete item\");\r\n }\r\n //this.oAuthAssociations.find(a => a === association\r\n },\r\n error => {\r\n alert('Impossible d\\'effacer l\\'association');\r\n }\r\n\r\n )\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Gestion des identifications par réseaux sociaux</h2>\r\n<mat-dialog-content>\r\n <h3>Associations établies</h3>\r\n <p>Choisissez l'association que vous souhaitez supprimer</p>\r\n <gloww-social-network (callback)=\"OAuthDeleteAssociation($event)\" [oAuthProviders]=\"oAuthAssociations\"></gloww-social-network>\r\n <h3>Nouvelle association</h3>\r\n <p>Choisissez le provider</p>\r\n <gloww-social-network (callback)=\"OAuthAddAssociation($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-stroked-button color=\"accent\" class=\"btn-block\" (click)=\"OK() \">OK</button>\r\n</mat-dialog-actions>","import { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { MatDialogConfig, MatDialog } from '@angular/material/dialog';\r\nimport { ChangePasswordDlgComponent } from '../change-password-dlg/change-password-dlg.component';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { SocialNetworkDlgComponent } from '../social-network-dlg/social-network-dlg.component';\nimport { NgClass } from '@angular/common';\nimport { Subscription } from 'rxjs';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n selector: 'gloww-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrls: ['./user-menu.component.scss'],\n imports: [NgClass, RouterLink, MatIconModule]\n})\nexport class UserMenuComponent implements OnInit {\n\n @Input() size = '1x';\n @Input() imageUser = null;\n @Input() loginpage = '';\r\n\r\n showMenuUser = false;\n connected = false;\n oAuthProviders: string[];\n private currentUserSubscription: Subscription;\n\n constructor(private authenticationService: AuthenticationService, private dialog: MatDialog, private router: Router) {\n this.setCurrentUser(this.authenticationService.currentUserValue);\n this.currentUserSubscription = this.authenticationService.currentUser?.subscribe(person => this.setCurrentUser(person));\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this.currentUserSubscription?.unsubscribe();\n }\n\n private setCurrentUser(person: any) {\n this.connected = !!person;\n this.imageUser = null;\n if (person?.UserInfo?.Picture) {\n this.imageUser = '/' + this.authenticationService.environment + '/' + person.UserInfo.Picture;\n }\n }\n\r\n Logout() {\r\n this.showMenuUser = false;\r\n this.authenticationService.logout();\r\n this.router.navigate(['/']);\r\n }\r\n\r\n ChangePassword() {\r\n this.showMenuUser = true;\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(ChangePasswordDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n if (result) { alert('Password Changed'); }\r\n });\r\n }\r\n\r\n toggleMenuUser() {\r\n this.showMenuUser = !this.showMenuUser;\r\n }\r\n\r\n Configuration() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(SocialNetworkDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n\r\n });\r\n }\r\n\r\n}\r\n","@if (connected) {\n <div>\n <span (click)=\"toggleMenuUser()\">\n @if (imageUser) {\n <img [src]=\"imageUser\" style=\"height:40px;float:left; padding-left:20px\" />\n }\n @if (!imageUser) {\n <span class=\"user-menu-icon\" [ngClass]=\"size\">\n <mat-icon>account_circle</mat-icon>\n </span>\n }\n </span>\n @if (showMenuUser) {\n <div class=\"menuUser\">\n <ul class=\"menuSec\" style=\"border: solid lightgrey;\">\n <li (click)=\"ChangePassword()\">\n <i class=\"fal fa-key-skeleton\"></i>Change Password\n </li>\n @if (oAuthProviders && oAuthProviders.length) {\n <li (click)=\"Configuration()\">\n <i class=\"fal fa-tools\"></i>Configuration\n </li>\n }\n <li (click)=\"Logout()\">\n <i class=\"fal fa-sign-out\"></i>Déconnexion\n </li>\n </ul>\n </div>\n }\n </div>\n}\n@if (!connected && loginpage) {\n <div>\n <span style=\"height:40px;float:left; padding-left:20px\" [routerLink]=\"loginpage\">Connexion</span>\n </div>\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StagingInterceptor implements HttpInterceptor {\r\n constructor() { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // add authorization header with jwt token if available\r\n try {\r\n if (!request.url.match(/version\\.json(\\?|$)/ig)) {\r\n console.log(`Replace ${request.url}`);\r\n return next.handle(request.clone({ url: request.url.replace(\"__Staging\", \"\") }));\r\n }\r\n } catch (e) {\r\n console.log(`staging interceptor ${e}`);\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { APP_BASE_HREF, PlatformLocation } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard {\r\n\r\n private baseHref = null;\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n this.baseHref = platformLocation.getBaseHrefFromDOM();\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser) {\r\n // logged in so return true\r\n const jwtToken = jwtDecode<any>(currentUser.Token);\r\n if (Date.now() < jwtToken.exp * 1000) {\r\n return true;\r\n } else {\r\n this.authenticationService.logout();\r\n }\r\n }\r\n const vd = window.location.pathname\r\n if (vd.endsWith(\"/login\")) { return true; }\r\n\r\n console.log(window.location);\r\n console.log(route);\r\n console.log(state);\r\n console.log(state.url);\r\n console.log(window.location.search);\r\n console.log(window.location.pathname);\r\n\r\n const returnUrl = window.location.pathname.substr(this.baseHref.length);\r\n //let application = window.location.pathname.substr(0, window.location.pathname.length - state.url.length);\r\n /*if (state.url === '/') {\r\n application = window.location.pathname.endsWith(\"/\") ? application.substr(0, window.location.pathname.length - 1) : window.location.pathname;\r\n }\r\n if (!application) { application = '/'; }\r\n console.log(application);*/\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: `${returnUrl}${window.location.search}`, application: `${this.baseHref}` } });\r\n return false;\r\n }\r\n}\r\n","import { PlatformLocation } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthenticationService } from '../gloww-security.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdministratorGuard {\r\n\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n\r\n }\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator || currentUser.isAdministrator;\r\n }\r\n\r\n}\r\n","import { AdministratorGuard } from './Helpers';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from './Services/authentication-service-config';\nimport { EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoginComponent } from './Components/login/login.component';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { AuthGuard } from './Helpers';\r\nimport { JwtInterceptor } from './Helpers/jwt.interceptor';\r\nimport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nimport { AuthenticationService } from './Services/authentication.service';\r\n\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\r\nimport { MatButton, MatButtonModule } from '@angular/material/button';\r\nimport { UserMenuComponent } from './Components/user-menu/user-menu.component';\r\nimport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\r\nimport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nimport { StagingInterceptor } from './Helpers/staging.interceptor';\n\nexport const GLOWW_SECURITY_STANDALONE_DECLARATIONS = [\n LoginComponent,\n ChangePasswordDlgComponent,\n UserMenuComponent,\n SocialNetworkDlgComponent,\n SocialNetworkComponent\n] as const;\n\nfunction getGlowwSecurityProviders(authenticationServiceConfig: AuthenticationServiceConfig): Provider[] {\n return [\n AuthenticationService,\n AuthenticationServiceConfig,\n { provide: AuthenticationServiceConfig, useValue: authenticationServiceConfig },\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n //{ provide: HTTP_INTERCEPTORS, useClass: StagingInterceptor, multi: true },\n //socialLoginProviders\n ];\n}\n\nexport function provideGlowwSecurity(authenticationServiceConfig: AuthenticationServiceConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideHttpClient(withInterceptorsFromDi()),\n ...getGlowwSecurityProviders(authenticationServiceConfig)\n ]);\n}\n\n@NgModule({\n exports: [...GLOWW_SECURITY_STANDALONE_DECLARATIONS, RouterModule], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatToolbarModule,\n MatButtonModule,\n MatSidenavModule,\n MatInputModule,\n MatFormFieldModule,\n MatCardModule,\n MatDialogModule,\n RouterModule,\n ...GLOWW_SECURITY_STANDALONE_DECLARATIONS], providers: [provideHttpClient(withInterceptorsFromDi())] })\nexport class GlowwSecurityModule {\n public static forRoot(authenticationServiceConfig: AuthenticationServiceConfig): ModuleWithProviders<GlowwSecurityModule> {\n\r\n /*\r\n var socialLoginProviders = {\r\n provide: 'SocialAuthServiceConfig',\r\n useValue: {\r\n autoLogin: false,\r\n providers: [\r\n ],\r\n onError: (err) => {\r\n console.error(err);\r\n }\r\n } as SocialAuthServiceConfig,\r\n };\r\n\r\n if (authenticationServiceConfig.googleClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: GoogleLoginProvider.PROVIDER_ID,\r\n provider: new GoogleLoginProvider(\r\n authenticationServiceConfig.googleClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.facebookClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: FacebookLoginProvider.PROVIDER_ID,\r\n provider: new FacebookLoginProvider(\r\n authenticationServiceConfig.facebookClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.amazonClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: AmazonLoginProvider.PROVIDER_ID,\r\n provider: new AmazonLoginProvider(\r\n authenticationServiceConfig.amazonClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.microsoftClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: MicrosoftLoginProvider.PROVIDER_ID,\r\n provider: new MicrosoftLoginProvider(\r\n authenticationServiceConfig.microsoftClientId\r\n )\r\n }\r\n )\r\n }\r\n */\r\n\r\n return {\n ngModule: GlowwSecurityModule,\n providers: getGlowwSecurityProviders(authenticationServiceConfig)\n };\n }\n}\n\r\nexport { LoginComponent } from './Components/login/login.component';\nexport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\nexport { UserMenuComponent } from './Components/user-menu/user-menu.component';\nexport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\nexport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nexport { AuthenticationService } from './Services/authentication.service';\nexport { JwtInterceptor } from './Helpers/jwt.interceptor';\nexport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nexport { StagingInterceptor } from './Helpers/staging.interceptor';\r\nexport { AuthGuard } from './Helpers';\r\nexport { AdministratorGuard } from './Helpers/';\r\n","import { Component, Input, OnInit, SecurityContext, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { HtmlFormatPipe } from '../../Pipes/html-format.pipe';\r\nimport { VoiceRecognitionService } from '../../Services/voice-recognition.service';\r\n//import { AngularEditorConfig, AngularEditorToolbarComponent } from '@kolkov/angular-editor';\r\n//import { AngularEditorButtonConfig } from '@kolkov/angular-editor/lib/config';\r\nimport { AngularEditorConfig, AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { AuthenticationService } from '../../gloww-security/gloww-security.module';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\n\r\n@Component({\n selector: 'gloww-html-editor',\n templateUrl: './html-editor.component.html',\n styleUrls: ['./html-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: HtmlEditorComponent\n }\n ],\n imports: [AngularEditorModule, FormsModule, CdkScrollable, MatDialogContent, MatDialogActions, HtmlFormatPipe]\n})\r\nexport class HtmlEditorComponent implements ControlValueAccessor {\r\n @ViewChild('voiceRecognitionDlg') voiceRecognitionTemplate!: TemplateRef<any>;\r\n //@Input() formControlName: string = \"\";\r\n @Input() placeHolder: string = \"\";\r\n @Input('value') _value: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n //CCH tb?: AngularEditorToolbarComponent;\r\n dialogRef?: MatDialogRef<any, any>;\r\n\r\n allowedStyles = ['text-align'];\r\n allowedTags = ['p', 'span', 'div', 'hr', 'br', 'b', 'i', 'u', 'sup', 'sub', 'strike', 'ol', 'ul', 'li'];\r\n public editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '75px',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: '',\r\n defaultFontSize: '3',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n }\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n //cch sanitize: (html: string) => this.sanitize(html),\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n ['insertImage', 'insertVideo', 'customClasses', 'heading', 'heading',\r\n 'fontName',\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor', !this.isAdministrator() ? 'toggleEditorMode' : '']\r\n ],\r\n/* additionalButtons: [\r\n {\r\n title: 'Speech Recognition',\r\n click: (tb: AngularEditorToolbarComponent, event) => {\r\n this.tb = tb;\r\n tb.focus();\r\n this.voiceRecognitionService.start();\r\n this.voiceRecognitionService.text = \"\";\r\n this.dialogRef = this.dialog.open(this.voiceRecognitionTemplate, {\r\n width: '550px'\r\n });\r\n\r\n },\r\n icon: 'fas fa-comment-plus'\r\n }\r\n ]*/\r\n };\r\n\r\n cancel() {\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n paste() {\r\n //CCH this.tb?.insertHtml(new HtmlFormatPipe().transform(this.voiceRecognitionService.text));\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n constructor(private sanitizer: DomSanitizer, private authenticationService: AuthenticationService, public voiceRecognitionService: VoiceRecognitionService, public dialog: MatDialog) {\r\n this.voiceRecognitionService.init();\r\n }\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n sanitize(html: string): string {\r\n let itres = this.sanitizer.sanitize(SecurityContext.STYLE, html)?.replace(new RegExp('\\\\</?[a-z]+:[a-z]+\\\\>', 'gi'), '').replace(/class=\"Mso[a-z]+\"/ig, '');\r\n const matchTags = itres?.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/ig);\r\n matchTags?.forEach(m => {\r\n const matchTag = m.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/i);\r\n if (matchTag?.groups && this.allowedTags.indexOf(matchTag?.groups['tag']) < 0) {\r\n itres = itres?.replace(m, '');\r\n }\r\n });\r\n\r\n while (true) {\r\n const matchStyle = itres?.match(/style\\s*=\\s*\"(?<style>[^\"]+)\"/i);\r\n if (!matchStyle || !matchStyle?.groups) { break; }\r\n const styles = matchStyle?.groups['style']?.replace(/"/ig, '\"');\r\n const smatches = styles.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/ig);\r\n const newStyles: any[] = [];\r\n smatches?.forEach((v, i, a) => {\r\n const ssmatches = v.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/i);\r\n if (ssmatches?.groups) {\r\n const name = ssmatches?.groups['name'];\r\n if (this.allowedStyles.indexOf(name) >= 0) {\r\n newStyles.push(v);\r\n }\r\n const value = ssmatches.groups['value'];\r\n console.log(`${name}=${value}`);\r\n }\r\n });\r\n let attr = '';\r\n if (newStyles.length) { attr = `stylenew=\"${newStyles.join(';')}\"`; }\r\n itres = itres?.replace(matchStyle[0], attr);\r\n }\r\n return itres?.replace(/stylenew=/ig, 'style=') ?? \"\";\r\n }\r\n\r\n isAdministrator() {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator === 1 || currentUser.isAdministrator === 1;\r\n }\r\n\r\n}\r\n","<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activée. Veuillez dicter le texte à insérer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n","import { CodeEditorComponent } from './../../code-editor/code-editor.component';\r\nimport { Component, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { CodeEditorComponent as CodeEditorComponent_1 } from '../../code-editor/code-editor.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-file-edit',\n templateUrl: './file-edit.component.html',\n styleUrls: ['./file-edit.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDrag, MatDialogTitle, CdkDragHandle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatLabel, MatInput, CodeEditorComponent_1, MatDialogActions, MatButton]\n})\r\nexport class FileEditComponent implements OnInit {\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent\r\n\r\n form: UntypedFormGroup;\r\n ext: string;\r\n\r\n modes = {\r\n \".txt\": \"null\",\r\n \".cs\": \"clike\",\r\n \".js\": \"javascript\",\r\n \".json\": { name: \"javascript\", json: true },\r\n \".css\": \"css\",\r\n \".scss\": \"scss\",\r\n \".htm\": \"html\",\r\n \".html\": \"html\",\r\n \".xml\": \"xml\",\r\n \".xsl\": \"xml\",\r\n \".xslt\": \"xml\",\r\n \".yml\": \"yaml\",\r\n \".yaml\": \"yaml\",\r\n\r\n };\r\n\r\n\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<FileEditComponent>, @Inject(MAT_DIALOG_DATA) definition) {\r\n this.form = this.formBuilder.group({\r\n path: [null, Validators.required],\r\n content: [null]\r\n });\r\n if (definition) {\r\n this.form.patchValue(definition);\r\n try {\r\n this.ext = definition.path.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|yml|yaml|exp|sh|pwsh|xsl|xslt)$/ig)[0];\r\n } catch {\r\n this.ext = null;\r\n }\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n getMode() {\r\n try {\r\n if (this.ext && this.modes[this.ext]) {\r\n return this.modes[this.ext];\r\n } else {\r\n return \"null\";\r\n }\r\n } catch {\r\n return \"null\";\r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n save() {\r\n this.dialogRef.close(this.form.value);\r\n }\r\n\r\n initDone = false;\r\n onResized(event: ResizedEvent) {\r\n /*console.log(`new Height ${event.newRect?.height}`);\r\n this.cmHeight = `${event.newRect?.height - 15}px`;*/\r\n if (this.initDone) {\r\n this.codeMirrorComponent.codeMirror.setSize(null, event.newRect?.height - 5);\r\n } else {\r\n this.initDone = true;\r\n }\r\n }\r\n\r\n}\r\n","<div cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" class=\"dlg\">\r\n <h2 mat-dialog-title cdkDragHandle>Ajout/Edition d'un fichier</h2>\r\n \r\n <mat-dialog-content [formGroup]=\"form\" class=\"dialog-form-content\">\r\n <div class=\"column-layout fill-container\">\r\n <mat-form-field appearance=\"outline\" class=\"width-100\">\r\n <mat-label>Path</mat-label>\r\n <input matInput [readonly]=\"true\" placeholder=\"Path\" formControlName=\"path\">\r\n </mat-form-field>\r\n\r\n <div class=\"editor-flex-grow\">\r\n <gloww-code-editor [mode]=\"getMode()\" formControlName=\"content\"></gloww-code-editor>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n </mat-dialog-actions>\r\n</div>","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FolderServiceConfig {\r\n apiPath?= '/';\r\n static Create(t?: any): FolderServiceConfig {\r\n const res = new FolderServiceConfig();\r\n if (t) {\r\n Object.assign(res, t);\r\n }\r\n return res;\r\n }\r\n}\r\n","import { FolderServiceConfig } from './folder-service-config';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { API_PATH } from '../injection-token';\r\nimport { API_SERVER_URL } from './gloww.service';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n\r\nexport interface DirectoryContent {\r\n files: string[];\r\n directories: string[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FolderService {\r\n\r\n constructor(private http: HttpClient, private folderServiceConfig: FolderServiceConfig, @Optional() @Inject(API_SERVER_URL) apiServerUrl: string) {\r\n console.log(`folderServiceConfig ${folderServiceConfig.apiPath}`);\r\n console.log(`apiServierUrl ${apiServerUrl}`);\r\n }\r\n async noFolders() {\r\n return await firstValueFrom(this.http.get<boolean>(`${this.folderServiceConfig.apiPath}noFolders`));\r\n }\r\n\r\n\r\n getDirectoryContent(path: string) {\r\n return this.http.get<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path ?? \"\"}`);\r\n }\r\n postDirectoryContent(path: string) {\r\n const formData = new FormData();\r\n return this.http.post<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path}`, formData, {});\r\n }\r\n\r\n getFileContent(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'text'\r\n });\r\n }\r\n getFileContentBlob(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n postFileContent(path: string, formData: FormData) {\r\n return this.http.post<any>(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, formData, {\r\n reportProgress: true,\r\n observe: 'events'\r\n });\r\n }\r\n}\r\n","import { HttpEventType, HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Router, ActivatedRoute, NavigationEnd, RouterLink } from '@angular/router';\r\nimport { of } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { DirectoryContent, FolderService } from '../../../Services/folder.service';\r\nimport { PromptModel, PromptComponent } from '../../prompt/prompt.component';\r\nimport { UploadDocComponent } from '../../upload-doc/upload-doc.component';\r\nimport { UploadFileComponent } from '../../upload-file/upload-file.component';\r\nimport { FileEditComponent } from '../file-edit/file-edit.component';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Component({\n selector: 'gloww-folders',\n templateUrl: './folders.component.html',\n styleUrls: ['./folders.component.scss'],\n imports: [RouterLink, MatProgressSpinner]\n})\r\nexport class FoldersComponent implements OnInit {\r\n\r\n\r\n currentDir: string;\r\n directoryContent: DirectoryContent;\r\n\r\n\r\n constructor(private folderService: FolderService, private router: Router, private route: ActivatedRoute, private dialog: MatDialog) {\r\n //flowService.getDirectoryContent(route.snapshot.params.id).subscribe(r => this.directoryContent = r);\r\n\r\n this.router.events.subscribe((event: NavigationEnd) => {\r\n if (event instanceof NavigationEnd) {\r\n const urlParts = event.url.split('/');\r\n this.currentDir = urlParts.slice(2).join(\"/\");\r\n this.directoryContent = null;\r\n folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n addFolder() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New Folder\", \"Please give the name of the folder to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(folder => {\r\n if (folder) {\r\n this.folderService.postDirectoryContent(this.currentDir + '/' + folder).subscribe(c => {\r\n this.router.navigate(this.getRouterLink(folder)),\r\n error => alert(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n addFile() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New File\", \"Please give the name of the text file to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(fileName => {\r\n if (fileName) {\r\n this.Edit(fileName);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n });\r\n }\r\n\r\n addFileUpload() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { acceptMime: 'image/*', multiple: true, allowAltFileName: true };\r\n\r\n this.dialog.open(UploadDocComponent, dialogConfig).afterClosed().subscribe(files => {\r\n if (files) {\r\n files.forEach(file => {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n this.UploadFile(this.currentDir + \"/\" + file.fileName, formData);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n });\r\n }\r\n });\r\n }\r\n getRouterLink(directory?: string) {\r\n if (!this.currentDir) {\r\n return ['/folders', directory];\r\n }\r\n if (!directory) {\r\n let res = ['/folders', ...this.currentDir.split(\"/\")];\r\n res.pop();\r\n return res;\r\n }\r\n return ['/folders', ...this.currentDir.split(\"/\"), directory]\r\n }\r\n getHref(f: string) {\r\n if (!this.currentDir) {\r\n return ['/FlowMgmt', 'folders', f].join('/');\r\n }\r\n\r\n return ['/FlowMgmt', 'folders', ...this.currentDir.split(\"/\"), f].join('/');\r\n }\r\n\r\n\r\n\r\n dataURItoBlob(content) {\r\n const byteString = content;\r\n /*const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n let j = 0;\r\n for (let i = 0; i < byteString.length; i++) {\r\n let chr = byteString.charCodeAt(i);\r\n if (chr <= 255) {\r\n int8Array[j++] = chr;\r\n } else {\r\n console.log(`${chr}:${Math.floor(chr / 255)},${chr % 255}`)\r\n int8Array[j++] = Math.floor(chr / 255);\r\n int8Array[j++] = chr % 255;\r\n }\r\n }*/\r\n const te = new TextEncoder();\r\n const uint8array = te.encode(byteString);\r\n const blob = new Blob([uint8array], { type: 'text/plain;charset=UTF-8;' });\r\n return blob;\r\n }\r\n\r\n isEditable(filename: string): boolean {\r\n return filename.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|exp|sh|pwsh|yml|yaml|xsl|xslt)$/ig) != null;\r\n }\r\n\r\n UploadFile(fileName: string, formData: FormData) {\r\n this.folderService.postFileContent(fileName, formData).pipe(\r\n map(event => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n //file.progress = Math.round(event.loaded * 100 / event.total);\r\n break;\r\n case HttpEventType.Response:\r\n return event.body;\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n //file.inProgress = false;\r\n return of(`${fileName} upload failed.`);\r\n })).subscribe((event: any) => {\r\n if (typeof (event) === 'object') {\r\n //obj.Logo = event.Logo;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n Edit(fileName: string) {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n let content: string;\r\n this.folderService.getFileContent(this.currentDir + '/' + fileName).subscribe(c => {\r\n dialogConfig.data = { path: this.currentDir + '/' + fileName, content: c };\r\n this.dialog.open(FileEditComponent, dialogConfig).afterClosed().subscribe(data => {\r\n if (data) {\r\n const formData = new FormData();\r\n const imageName = fileName;\r\n const imageBlob = this.dataURItoBlob(data.content);\r\n const file = new File([imageBlob], imageName, { type: 'text/plain;charset=UTF-8;' });\r\n formData.append('file', file);\r\n this.UploadFile(this.currentDir + '/' + fileName, formData);\r\n //file.inProgress = true;\r\n\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n /*\r\nthis.http.get(`${environment.apiUrl}`, {\r\n responseType: 'arraybuffer', headers: headers\r\n}\r\n).subscribe(response => this.downLoadFile(response, \"application/ms-excel\"));*/\r\n\r\n downloadFile(fileName: string) {\r\n this.folderService.getFileContentBlob(this.currentDir + '/' + fileName).subscribe(blob => {\r\n this.downLoadFile2(blob, blob.type)\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Method is use to download file.\r\n * @param data - Array Buffer data\r\n * @param type - type of the document.\r\n */\r\n downLoadFile2(data: any, type: string) {\r\n let blob = new Blob([data], { type: type });\r\n let url = window.URL.createObjectURL(blob);\r\n let pwa = window.open(url);\r\n if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n alert('Please disable your Pop-up blocker and try again.');\r\n }\r\n }\r\n\r\n}\r\n","<h1>\n <i class=\"fal fa-folder\" size=\"40px\"></i> /{{currentDir}}\n @if (currentDir) {\n <i class=\"fal fa-level-up\" [routerLink]=\"getRouterLink()\"></i>\n }\n</h1>\n@if (directoryContent) {\n <div>\n <i class=\"fal fa-folder-plus\" (click)=\"addFolder()\" size=\"30px\"></i>\n <ul>\n @for (d of directoryContent.directories; track d) {\n <li>\n <i class=\"fal fa-folder\"></i><a [routerLink]=\"getRouterLink(d)\">{{d}}</a>\n </li>\n }\n </ul>\n <i class=\"fal fa-file-plus\" (click)=\"addFile()\" size=\"30px\"></i>\n <i class=\"fal fa-file-upload\" (click)=\"addFileUpload()\" size=\"30px\"></i>\n <ul>\n @for (f of directoryContent.files; track f) {\n <li>\n @if (isEditable(f)) {\n <a (click)=\"Edit(f)\" href=\"javascript:void(0);\">\n <i class=\"fal fa-file\"></i> {{f}}\n </a>\n } @else {\n <i class=\"fal fa-file fa-disabled\"></i> <a (click)=\"downloadFile(f)\" target=\"_blank\" href=\"javascript:void(0);\">{{f}}</a>\n }\n </li>\n }\n </ul>\n </div>\n} @else {\n <mat-spinner></mat-spinner>\n}\n","import { HttpResponse, HttpErrorResponse, HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport FileSaver from 'file-saver';\r\nimport JSZip from 'jszip';\r\nimport { filter, map } from 'rxjs/operators';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatProgressBar } from '@angular/material/progress-bar';\r\n\r\n@Component({\n selector: 'gloww-download-progress',\n templateUrl: './download-progress.component.html',\n styleUrls: ['./download-progress.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, MatProgressBar, MatDialogActions]\n})\r\nexport class DownloadProgressComponent implements OnInit {\r\n\r\n done: number;\r\n name: string;\r\n files: { name: string, url: string }[];\r\n current: { url: string, loaded: number, total: number }[];\r\n message: string;\r\n percent: number;\r\n constructor(private dialogRef: MatDialogRef<DownloadProgressComponent>, @Inject(MAT_DIALOG_DATA) arg: any, public httpClient: HttpClient) {\r\n this.done = -1;\r\n this.name = arg.name;\r\n this.files = arg.files;\r\n this.current = []\r\n this.message = \"Download des fichiers\";\r\n this.percent = -1;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.name) {\r\n this.downloadZip();\r\n } else {\r\n this.download();\r\n }\r\n\r\n }\r\n\r\n async getFile(url: string, callback: (url: string, loaded: number, total: number) => void) {\r\n const httpOptions = {\r\n observe: \"events\",\r\n reportProgress: true,\r\n responseType: \"blob\" //as 'json'\r\n };\r\n const res = await this.httpClient.get(url, httpOptions as any).pipe(\r\n map((event: any) => {\r\n console.log(event);\r\n /*if (event.type === HttpEventType.DownloadProgress) {\r\n console.log(`download progress ${(event as HttpEventType.DownloadProgress).valueOf}`);\r\n }\r\n if (event.type === HttpEventType.Response) {\r\n console.log(\"donwload completed\");\r\n }*/\r\n if (event.type === 3) {\r\n callback(url, event.loaded, event.total)\r\n }\r\n if (event instanceof HttpResponse) {\r\n callback(url, -1, -1);\r\n }\r\n return event;\r\n }),\r\n filter((event: any) => event instanceof HttpResponse)).toPromise().catch((err: HttpErrorResponse) => {\r\n const error = err.error;\r\n return error;\r\n });\r\n return res.body;\r\n }\r\n\r\n callback(url: string, loaded: number, total: number) {\r\n const index = this.current.findIndex(c => c.url === url);\r\n if (total === -1) {\r\n this.done += 1;\r\n this.current.splice(index, 1);\r\n } else {\r\n if (index === -1) {\r\n this.current.push({ url, loaded, total });\r\n } else {\r\n this.current[index].loaded = loaded;\r\n }\r\n\r\n }\r\n }\r\n\r\n callback_zip(metadata: any) {\r\n this.percent = metadata.percent;\r\n }\r\n\r\n async downloadZip() {\r\n const zip = new JSZip();\r\n // tslint:disable-next-line:prefer-for-of\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n zip.file(file.name, b);\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n\r\n await zip.generateAsync({ type: 'blob' }, this.callback_zip.bind(this)).then((content) => {\r\n if (content) {\r\n FileSaver.saveAs(content, this.name);\r\n }\r\n });\r\n this.dialogRef.close();\r\n }\r\n\r\n async download() {\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n if (file.name===\"open\"){\r\n var blobURL = URL.createObjectURL(b);\r\n window.open(blobURL);\r\n }else{\r\n FileSaver.saveAs(b, file.name);\r\n }\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n this.dialogRef.close();\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Progression Download</h2>\n\n<mat-dialog-content>\n <H3>{{message}}</H3>\n @if (percent>0) {\n <mat-progress-bar [value]=\"percent\"></mat-progress-bar>\n }\n @if (done>=0) {\n <div>\n <mat-progress-bar [value]=\"done*100/files.length\"></mat-progress-bar> {{done}}/{{files.length}}\n <br />\n <ul>\n @for ( file of current; track file; let i = $index) {\n <li>\n <span id=\"file-label\">{{file.url}}</span>\n <mat-progress-bar [value]=\"file.loaded*100/file.total\"></mat-progress-bar>\n </li>\n }\n </ul>\n </div>\n }\n</mat-dialog-content>\n\n\n<mat-dialog-actions>\n <!--<button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\n <button class=\"mat-raised-button mat-primary\" (click)=\"save()\">Save</button>-->\n</mat-dialog-actions>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { DownloadProgressComponent } from '../download-progress/download-progress.component';\r\n\r\n@Component({\n selector: 'gloww-secure-a',\n templateUrl: './secure-a.component.html',\n styleUrls: ['./secure-a.component.scss']\n})\r\nexport class SecureAComponent implements OnInit {\r\n @Input() href: string;\r\n @Input() name: string\r\n\r\n constructor(private dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n click() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { files: [{ url: this.href, name: this.name }] };\r\n\r\n this.dialog.open(DownloadProgressComponent, dialogConfig).afterClosed().subscribe();\r\n }\r\n\r\n}\r\n","<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'gloww-dummy',\n templateUrl: './dummy.component.html',\n styleUrls: ['./dummy.component.scss']\n})\r\nexport class DummyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>dummy works!</p>\r\n","import { Component, OnInit, Input, AfterViewInit, Inject } from '@angular/core';\r\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport { CodeEditorComponent } from '../code-editor/code-editor.component';\nimport { MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\r\n\r\n@Component({\n selector: 'gloww-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: SelectComponent\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption]\n})\r\nexport class SelectComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n @Input('compareField') compareField: any = null\r\n @Input() compareWith: (o1: any, o2: any) => boolean;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\r\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder) {\r\n this.glowwService = glowwService;\r\n this.form = this.formBuilder.group({\r\n select: [null, null]\r\n });\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.error = null;\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n let queryParams: any = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(name => {\r\n queryParams[name] = this.data[name];\r\n });\r\n }\r\n\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, queryParams).subscribe(items => this.items = items,\r\n error => {\r\n this.error = error;\r\n });\r\n\r\n if (!this.compareWith && this.compareField) {\r\n this.compareWith = (o1, o2) => o1[this.compareField] == o2[this.compareField];\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n writeValue(val: any): void {\r\n val && this.form.setValue({ select: val }, { emitEvent: false });\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.select[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.select);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\r\n if (this.displayField) {\r\n return item[this.displayField];\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\r\n }\r\n }\r\n\r\n}\r\n\r\n","<form [formGroup]=\"form\">\n @if (error) {\n <div style=\"color:red\">{{error}}</div>\n }\n <mat-form-field>\n <mat-select [placeholder]=\"placeHolder\" formControlName=\"select\" [compareWith]=\"compareWith\">\n @for (item of items; track item) {\n <mat-option [value]=\"item\">{{displayObj(item)}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n</form>","import { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { Component, OnInit, Input, AfterViewInit, Inject, ChangeDetectorRef, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Observable, of } from 'rxjs';\nimport { TranslateDefaultParser } from '@ngx-translate/core';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatAutocompleteTrigger, MatAutocomplete } from '@angular/material/autocomplete';\nimport { MatOption } from '@angular/material/select';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-auto-complete',\n templateUrl: './auto-complete.component.html',\n styleUrls: ['./auto-complete.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatAutocompleteTrigger, MatAutocomplete, MatOption, SafeHtmlPipe]\n})\r\nexport class AutoCompleteComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('searchField') searchField: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayExpr') displayExpr: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\n resultCtrl: UntypedFormControl;\n public parser = new TranslateDefaultParser();\n private pendingExternalValue: any = undefined;\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder, private ref: ChangeDetectorRef) {\r\n this.glowwService = glowwService;\r\n this.resultCtrl = new UntypedFormControl();\r\n this.form = this.formBuilder.group({\r\n __result: this.resultCtrl\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n public options: any[] = [];//Observable<unknown>;\r\n ngOnInit(): void {\n //debugger;\n this.searchRequest = this.glowwService[`search${this.objectName}`];\n this.resultCtrl.valueChanges.pipe(\r\n filter(res => res != null && res.length > 2),\r\n distinctUntilChanged(),\r\n debounceTime(250),\r\n tap(() => { this.error = \"\"; this.options = []; }),\r\n switchMap(searchStr => {\r\n let searchObj = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(k => {\r\n searchObj[k] = this.data[k];\r\n });\r\n }\r\n searchObj[this.searchField] = searchStr;\r\n return this.searchRequest.call(this.glowwService, searchObj).pipe(\r\n map(res => res),\r\n catchError(err => {\r\n this.error = err.message;\r\n this.ref.markForCheck();\r\n return of([])\r\n })\r\n )\r\n })\r\n ).subscribe(\n {\n next: (data: any[]) => {\n this.options = data;\n this.ref.markForCheck();\n },\r\n error: (error) => { this.error = error }\n }\n );\n\n if (this.pendingExternalValue !== undefined) {\n this.applyExternalValue(this.pendingExternalValue);\n this.pendingExternalValue = undefined;\n }\n }\n\n\n writeValue(val: any): void {\n if (val === undefined || val === null || val === '') {\n this.form.setValue({ __result: null }, { emitEvent: false });\n return;\n }\n\n if (!this.searchRequest) {\n this.pendingExternalValue = val;\n return;\n }\n\n this.applyExternalValue(val);\n }\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.__result[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.__result);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\n if (!item) return null;\n if (typeof item !== 'object') {\n return item;\n }\n console.log(\"displayOf\");\n if (this.displayField) {\n return item[this.displayField];\n } else if (this.displayExpr) {\r\n return this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g, \"{\").replace(/\\\\\\}/g, \"}\"), item);\r\n //return '?1' + this.parser.interpolate(\"{{Name}}\", { Name: \"test\" }) + '?2' + this.parser.interpolate(\"{{Name}}\", item)+'?3'+this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g,\"{\").replace(/\\\\\\}/g,\"}\"), item) +'?4'+ item;\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\n }\n }\n\n private applyExternalValue(val: any): void {\n if (typeof val === 'object') {\n this.form.setValue({ __result: val }, { emitEvent: false });\n this.ref.markForCheck();\n return;\n }\n\n if (!this.returnField || !this.searchRequest) {\n this.form.setValue({ __result: val }, { emitEvent: false });\n this.ref.markForCheck();\n return;\n }\n\n const searchObj = {};\n if (this.data) {\n Object.keys(this.data).forEach(k => {\n searchObj[k] = this.data[k];\n });\n }\n searchObj[this.returnField] = val;\n\n this.searchRequest.call(this.glowwService, searchObj).pipe(\n catchError(() => of([]))\n ).subscribe((results: any[]) => {\n const match = results.find(item => item?.[this.returnField] == val) ?? results[0] ?? val;\n this.form.setValue({ __result: match }, { emitEvent: false });\n this.ref.markForCheck();\n });\n }\n}\n\r\n","<div [formGroup]=\"form\" style=\"width:100%\" class=\"mainDiv\">\n <div style=\"color:red\">{{error}}</div>\n <mat-form-field style=\"width:100%\" class=\"autocff\">\n <input type=\"text\" matInput formControlName=\"__result\" [matAutocomplete]=\"auto\" [placeholder]=\"placeHolder\">\n </mat-form-field>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayObj.bind(this)\">\n @for (option of options; track option) {\n <mat-option [value]=\"option\" [innerHTML]=\"displayObj(option) | safeHtml\">\n </mat-option>\n }\n </mat-autocomplete>\n</div>","import { Component, Inject, Input, Optional, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport moment from 'moment';\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput, MatSuffix } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n selector: 'gloww-datetime',\n standalone: true,\n templateUrl: './datetime.component.html',\n styleUrls: ['./datetime.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DatetimeComponent)\n }\n ],\n imports: [ReactiveFormsModule, MatFormField, MatLabel, MatInput, MatDatepickerInput, MatDatepickerToggle, MatDatepicker, MatSuffix, MatButton]\n})\nexport class DatetimeComponent implements ControlValueAccessor {\n private static readonly DATE_FORMATS = [\n moment.ISO_8601,\n 'DD/MM/YYYY HH:mm:ss',\n 'DD/MM/YYYY HH:mm',\n 'DD/MM/YYYY',\n 'MM/DD/YYYY HH:mm:ss',\n 'MM/DD/YYYY HH:mm',\n 'MM/DD/YYYY',\n 'YYYY-MM-DD HH:mm:ss',\n 'YYYY-MM-DD HH:mm',\n 'YYYY-MM-DD',\n 'YYYY-MM-DDTHH:mm:ss',\n 'YYYY-MM-DDTHH:mm'\n ];\n private static readonly CLOCK_CENTER = 50;\n private static readonly CLOCK_OUTER_RADIUS = 36;\n private static readonly CLOCK_INNER_RADIUS = 25;\n private static readonly CLOCK_TICK_OUTER_RADIUS = 48;\n private static readonly CLOCK_TICK_INNER_RADIUS = 41;\n private static readonly CLOCK_TICK_LABEL_RADIUS = 34;\n private static readonly CLOCK_OUTER_HAND_HEIGHT = '34%';\n private static readonly CLOCK_INNER_HAND_HEIGHT = '23%';\n private static readonly CLOCK_MINUTE_HAND_HEIGHT = '48%';\n\n @Input('value') _value: Date | null = null;\n @Input('display') display: string | null = null;\n @Input('placeHolder') placeHolder: string | null = null;\n @Input('mode') mode: string = 'date';\n @Input() showSeconds = false;\n\n readonly dateControl = new FormControl<Date | null>(null);\n readonly hourControl = new FormControl<string>('00', { nonNullable: true });\n readonly minuteControl = new FormControl<string>('00', { nonNullable: true });\n readonly secondControl = new FormControl<string>('00', { nonNullable: true });\n\n readonly hourMarkers = this.buildHourMarkers();\n readonly minuteTicks = this.buildUnitTicks();\n readonly secondTicks = this.buildUnitTicks();\n\n isDisabled = false;\n isClockOpen = false;\n clockStep: 'hour' | 'minute' | 'second' = 'hour';\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) private readonly locale?: string) {\n this.dateControl.valueChanges.subscribe(() => this.emitCurrentValue());\n this.hourControl.valueChanges.subscribe(() => this.emitCurrentValue());\n this.minuteControl.valueChanges.subscribe(() => this.emitCurrentValue());\n this.secondControl.valueChanges.subscribe(() => this.emitCurrentValue());\n }\n\n get isDateTime(): boolean {\n return this.mode === 'datetime';\n }\n\n get value(): Date | null {\n return this._value;\n }\n\n set value(val: any) {\n this.setValueFromOutside(val, true);\n }\n\n writeValue(obj: any): void {\n this.setValueFromOutside(obj, false);\n }\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.isDisabled = isDisabled;\n const action = isDisabled ? 'disable' : 'enable';\n this.dateControl[action]({ emitEvent: false });\n this.hourControl[action]({ emitEvent: false });\n this.minuteControl[action]({ emitEvent: false });\n this.secondControl[action]({ emitEvent: false });\n }\n\n clear(): void {\n this._value = null;\n this.isClockOpen = false;\n this.dateControl.setValue(null, { emitEvent: false });\n this.hourControl.setValue('00', { emitEvent: false });\n this.minuteControl.setValue('00', { emitEvent: false });\n this.secondControl.setValue('00', { emitEvent: false });\n this.onChange(null);\n this.onTouched();\n }\n\n markTouched(): void {\n this.onTouched();\n }\n\n get timeSummary(): string {\n return this.showSeconds\n ? `${this.normalizeTimePartValue(this.hourControl.value, 23, true)}:${this.normalizeTimePartValue(this.minuteControl.value, 59, true)}:${this.normalizeTimePartValue(this.secondControl.value, 59, true)}`\n : `${this.normalizeTimePartValue(this.hourControl.value, 23, true)}:${this.normalizeTimePartValue(this.minuteControl.value, 59, true)}`;\n }\n\n get clockTitle(): string {\n switch (this.clockStep) {\n case 'hour':\n return 'Hours';\n case 'minute':\n return 'Minutes';\n default:\n return 'Seconds';\n }\n }\n\n openClock(): void {\n if (this.isDisabled) {\n return;\n }\n this.isClockOpen = true;\n this.clockStep = 'hour';\n this.onTouched();\n }\n\n closeClock(): void {\n this.isClockOpen = false;\n this.onTouched();\n }\n\n onTimePartInput(part: 'hour' | 'minute' | 'second'): void {\n const control = this.getTimeControl(part);\n const max = this.getTimePartMax(part);\n control.setValue(this.normalizeTimePartValue(control.value, max, false), { emitEvent: false });\n this.emitCurrentValue();\n }\n\n onTimePartBlur(part: 'hour' | 'minute' | 'second'): void {\n const control = this.getTimeControl(part);\n const max = this.getTimePartMax(part);\n control.setValue(this.normalizeTimePartValue(control.value, max, true), { emitEvent: false });\n this.emitCurrentValue();\n this.onTouched();\n }\n\n selectClockHour(value: number, event?: MouseEvent): void {\n event?.stopPropagation();\n this.hourControl.setValue(value.toString().padStart(2, '0'), { emitEvent: false });\n this.emitCurrentValue();\n this.clockStep = 'minute';\n this.onTouched();\n }\n\n selectClockMinute(value: number, event?: MouseEvent): void {\n event?.stopPropagation();\n this.minuteControl.setValue(value.toString().padStart(2, '0'), { emitEvent: false });\n this.emitCurrentValue();\n if (this.showSeconds) {\n this.clockStep = 'second';\n } else {\n this.closeClock();\n }\n this.onTouched();\n }\n\n selectClockSecond(value: number, event?: MouseEvent): void {\n event?.stopPropagation();\n this.secondControl.setValue(value.toString().padStart(2, '0'), { emitEvent: false });\n this.emitCurrentValue();\n this.closeClock();\n this.onTouched();\n }\n\n selectClockTick(value: number, event: MouseEvent): void {\n if (this.clockStep === 'minute') {\n this.selectClockMinute(value, event);\n return;\n }\n\n if (this.clockStep === 'second') {\n this.selectClockSecond(value, event);\n }\n }\n\n goToClockStep(step: 'hour' | 'minute' | 'second'): void {\n this.clockStep = step;\n }\n\n onClockFaceClick(event: MouseEvent): void {\n if (this.clockStep === 'hour') {\n return;\n }\n\n const target = event.currentTarget as HTMLElement | null;\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n const centerX = rect.left + (rect.width / 2);\n const centerY = rect.top + (rect.height / 2);\n const dx = event.clientX - centerX;\n const dy = event.clientY - centerY;\n const angle = Math.atan2(dy, dx) + (Math.PI / 2);\n const normalized = angle < 0 ? angle + (Math.PI * 2) : angle;\n const rawValue = Math.round((normalized / (Math.PI * 2)) * 60) % 60;\n\n if (this.clockStep === 'minute') {\n this.selectClockMinute(rawValue);\n return;\n }\n\n this.selectClockSecond(rawValue);\n }\n\n isHourSelected(value: number): boolean {\n return this.toNumber(this.hourControl.value) === value;\n }\n\n isMinuteSelected(value: number): boolean {\n return this.toNumber(this.minuteControl.value) === value;\n }\n\n isSecondSelected(value: number): boolean {\n return this.toNumber(this.secondControl.value) === value;\n }\n\n get clockHandTransform(): string {\n if (this.clockStep === 'hour') {\n const hour = this.toNumber(this.hourControl.value) % 12;\n return `translate(-50%, -100%) rotate(${(hour / 12) * 360}deg)`;\n }\n\n if (this.clockStep === 'minute') {\n const minute = this.toNumber(this.minuteControl.value) % 60;\n return `translate(-50%, -100%) rotate(${(minute / 60) * 360}deg)`;\n }\n\n const second = this.toNumber(this.secondControl.value) % 60;\n return `translate(-50%, -100%) rotate(${(second / 60) * 360}deg)`;\n }\n\n get clockHandHeight(): string {\n if (this.clockStep === 'hour') {\n const hour = this.toNumber(this.hourControl.value);\n return hour < 12 ? '38%' : '25%';\n }\n\n return '45%';\n }\n\n get hourHandTransform(): string {\n const hour = this.toNumber(this.hourControl.value) % 12;\n return `translate(-50%, -100%) rotate(${(hour / 12) * 360}deg)`;\n }\n\n get hourHandHeight(): string {\n const hour = this.toNumber(this.hourControl.value);\n return hour < 12 ? DatetimeComponent.CLOCK_OUTER_HAND_HEIGHT : DatetimeComponent.CLOCK_INNER_HAND_HEIGHT;\n }\n\n get minuteHandTransform(): string {\n const minute = (this.toNumber(this.minuteControl.value) % 60) + (this.toNumber(this.secondControl.value) / 60);\n return `translate(-50%, -100%) rotate(${(minute / 60) * 360}deg)`;\n }\n\n get minuteHandHeight(): string {\n return DatetimeComponent.CLOCK_MINUTE_HAND_HEIGHT;\n }\n\n get selectedHourMarker(): ClockMarker {\n const hour = this.toNumber(this.hourControl.value);\n return this.buildClockMarker(\n hour,\n hour < 12 ? DatetimeComponent.CLOCK_OUTER_RADIUS : DatetimeComponent.CLOCK_INNER_RADIUS,\n hour.toString().padStart(2, '0')\n );\n }\n\n private setValueFromOutside(value: any, emit: boolean): void {\n const normalized = this.normalizeDateValue(value);\n this._value = normalized;\n\n this.dateControl.setValue(normalized ? new Date(normalized.getTime()) : null, { emitEvent: false });\n this.hourControl.setValue(normalized ? normalized.getHours().toString().padStart(2, '0') : '00', { emitEvent: false });\n this.minuteControl.setValue(normalized ? normalized.getMinutes().toString().padStart(2, '0') : '00', { emitEvent: false });\n this.secondControl.setValue(normalized ? normalized.getSeconds().toString().padStart(2, '0') : '00', { emitEvent: false });\n\n if (emit) {\n this.onChange(normalized);\n this.onTouched();\n }\n }\n\n private emitCurrentValue(): void {\n const date = this.normalizeDateValue(this.dateControl.value);\n\n if (!date) {\n this._value = null;\n this.onChange(null);\n return;\n }\n\n const next = new Date(date.getTime());\n next.setHours(this.toNumber(this.hourControl.value), this.toNumber(this.minuteControl.value), this.showSeconds ? this.toNumber(this.secondControl.value) : 0, 0);\n this._value = next;\n this.onChange(next);\n }\n\n private toNumber(value: string | null): number {\n const parsed = Number.parseInt(value ?? '0', 10);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n\n private getTimeControl(part: 'hour' | 'minute' | 'second'): FormControl<string> {\n switch (part) {\n case 'hour':\n return this.hourControl;\n case 'minute':\n return this.minuteControl;\n default:\n return this.secondControl;\n }\n }\n\n private getTimePartMax(part: 'hour' | 'minute' | 'second'): number {\n return part === 'hour' ? 23 : 59;\n }\n\n private normalizeTimePartValue(value: string | null | undefined, max: number, pad: boolean): string {\n const digits = `${value ?? ''}`.replace(/\\D/g, '').slice(-2);\n\n if (!digits) {\n return pad ? '00' : '';\n }\n\n const parsed = Number.parseInt(digits, 10);\n const clamped = Number.isNaN(parsed) ? 0 : Math.min(max, Math.max(0, parsed));\n return pad || digits.length > 1 ? clamped.toString().padStart(2, '0') : clamped.toString();\n }\n\n private normalizeDateValue(value: any): Date | null {\n if (value === undefined || value === null || value === '') {\n return null;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : new Date(value.getTime());\n }\n\n if (moment.isMoment(value)) {\n const date = value.toDate();\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n const strictMoment = moment(value, DatetimeComponent.DATE_FORMATS, this.locale ?? undefined, true);\n if (strictMoment.isValid()) {\n return strictMoment.toDate();\n }\n\n const lenientMoment = moment(value, DatetimeComponent.DATE_FORMATS, this.locale ?? undefined, false);\n if (lenientMoment.isValid()) {\n return lenientMoment.toDate();\n }\n\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n return null;\n }\n\n private buildHourMarkers(): ClockMarker[] {\n return Array.from({ length: 24 }, (_, index) => this.buildClockMarker(index, index < 12 ? DatetimeComponent.CLOCK_OUTER_RADIUS : DatetimeComponent.CLOCK_INNER_RADIUS, index.toString().padStart(2, '0')));\n }\n\n private buildUnitTicks(): ClockTick[] {\n return Array.from({ length: 12 }, (_, index) => {\n const value = index * 5;\n const angle = (index / 12) * (Math.PI * 2) - (Math.PI / 2);\n const x1 = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * DatetimeComponent.CLOCK_TICK_INNER_RADIUS;\n const y1 = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * DatetimeComponent.CLOCK_TICK_INNER_RADIUS;\n const x2 = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * DatetimeComponent.CLOCK_TICK_OUTER_RADIUS;\n const y2 = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * DatetimeComponent.CLOCK_TICK_OUTER_RADIUS;\n const labelX = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * DatetimeComponent.CLOCK_TICK_LABEL_RADIUS;\n const labelY = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * DatetimeComponent.CLOCK_TICK_LABEL_RADIUS;\n return {\n value,\n label: value.toString().padStart(2, '0'),\n x1: `${x1}%`,\n y1: `${y1}%`,\n x2: `${x2}%`,\n y2: `${y2}%`,\n labelLeft: `${labelX}%`,\n labelTop: `${labelY}%`,\n };\n });\n }\n\n private buildClockMarker(index: number, radius: number, label: string): ClockMarker {\n const angle = ((index % 12) / 12) * (Math.PI * 2) - (Math.PI / 2);\n const x = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * radius;\n const y = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * radius;\n return {\n value: index,\n label,\n left: `${x}%`,\n top: `${y}%`\n };\n }\n}\n\ninterface ClockMarker {\n value: number;\n label: string;\n left: string;\n top: string;\n}\n\ninterface ClockTick {\n value: number;\n label: string;\n x1: string;\n y1: string;\n x2: string;\n y2: string;\n labelLeft: string;\n labelTop: string;\n}\n","<div class=\"datetime-wrapper\" [class.datetime-mode]=\"isDateTime\" [class.has-seconds]=\"showSeconds\">\n <mat-form-field class=\"date-field\">\n @if (display) {\n <mat-label>{{ display }}</mat-label>\n }\n <input\n matInput\n [matDatepicker]=\"picker\"\n [placeholder]=\"placeHolder\"\n [formControl]=\"dateControl\"\n [disabled]=\"isDisabled\"\n (dateChange)=\"markTouched()\"\n (blur)=\"markTouched()\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n\n @if (isDateTime) {\n <div class=\"middle-actions\">\n <button\n mat-icon-button\n type=\"button\"\n class=\"icon-action\"\n [disabled]=\"isDisabled\"\n title=\"Clear date and time\"\n aria-label=\"Clear date and time\"\n (click)=\"clear()\">\n <i class=\"fal fa-eraser\"></i>\n </button>\n\n <button\n mat-icon-button\n type=\"button\"\n class=\"icon-action\"\n [disabled]=\"isDisabled\"\n title=\"Open time clock\"\n aria-label=\"Open time clock\"\n (click)=\"openClock()\">\n <i class=\"fal fa-clock\"></i>\n </button>\n </div>\n\n <div class=\"time-row\">\n <mat-form-field class=\"time-field\">\n <mat-label>HH</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n max=\"23\"\n inputmode=\"numeric\"\n [formControl]=\"hourControl\"\n [disabled]=\"isDisabled\"\n (input)=\"onTimePartInput('hour')\"\n (blur)=\"onTimePartBlur('hour')\">\n </mat-form-field>\n\n <mat-form-field class=\"time-field\">\n <mat-label>MM</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n max=\"59\"\n inputmode=\"numeric\"\n [formControl]=\"minuteControl\"\n [disabled]=\"isDisabled\"\n (input)=\"onTimePartInput('minute')\"\n (blur)=\"onTimePartBlur('minute')\">\n </mat-form-field>\n\n @if (showSeconds) {\n <mat-form-field class=\"time-field\">\n <mat-label>SS</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n max=\"59\"\n inputmode=\"numeric\"\n [formControl]=\"secondControl\"\n [disabled]=\"isDisabled\"\n (input)=\"onTimePartInput('second')\"\n (blur)=\"onTimePartBlur('second')\">\n </mat-form-field>\n }\n </div>\n\n @if (isClockOpen) {\n <div class=\"clock-backdrop\" (click)=\"closeClock()\"></div>\n\n <div class=\"clock-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"clock-panel\">\n <div class=\"clock-panel-header\">\n <div class=\"clock-panel-title\">{{ clockTitle }}</div>\n <button\n mat-button\n type=\"button\"\n class=\"clock-close\"\n [disabled]=\"isDisabled\"\n (click)=\"closeClock()\">\n Close\n </button>\n </div>\n\n <div class=\"clock-summary\">\n <button mat-button type=\"button\" class=\"clock-step\" [class.active]=\"clockStep === 'hour'\" (click)=\"goToClockStep('hour')\">\n {{ hourControl.value || '00' }}\n </button>\n <span>:</span>\n <button mat-button type=\"button\" class=\"clock-step\" [class.active]=\"clockStep === 'minute'\" (click)=\"goToClockStep('minute')\">\n {{ minuteControl.value || '00' }}\n </button>\n @if (showSeconds) {\n <span>:</span>\n <button mat-button type=\"button\" class=\"clock-step\" [class.active]=\"clockStep === 'second'\" (click)=\"goToClockStep('second')\">\n {{ secondControl.value || '00' }}\n </button>\n }\n </div>\n\n <div class=\"clock-face\" [class.clickable-face]=\"clockStep !== 'hour'\" [class.hour-face]=\"clockStep === 'hour'\" (click)=\"onClockFaceClick($event)\">\n <div class=\"clock-hand clock-hour-hand\" [style.transform]=\"hourHandTransform\" [style.height]=\"hourHandHeight\"></div>\n <div class=\"clock-hand clock-minute-hand\" [style.transform]=\"minuteHandTransform\" [style.height]=\"minuteHandHeight\"></div>\n\n @if (clockStep === 'hour') {\n @for (marker of hourMarkers; track marker.value) {\n <button\n type=\"button\"\n class=\"clock-hour-label\"\n [class.selected]=\"isHourSelected(marker.value)\"\n [class.inner-ring]=\"marker.value >= 12\"\n [style.left]=\"marker.left\"\n [style.top]=\"marker.top\"\n (click)=\"selectClockHour(marker.value, $event)\">\n {{ marker.label }}\n </button>\n }\n }\n\n @if (clockStep !== 'hour') {\n <div\n class=\"clock-hour-indicator\"\n [class.inner-ring]=\"selectedHourMarker.value >= 12\"\n [style.left]=\"selectedHourMarker.left\"\n [style.top]=\"selectedHourMarker.top\">\n {{ selectedHourMarker.label }}\n </div>\n }\n\n @if (clockStep === 'minute') {\n <svg class=\"clock-ticks-svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n @for (tick of minuteTicks; track tick.value) {\n <line\n class=\"clock-tick-line\"\n [class.selected]=\"isMinuteSelected(tick.value)\"\n [attr.x1]=\"tick.x1\"\n [attr.y1]=\"tick.y1\"\n [attr.x2]=\"tick.x2\"\n [attr.y2]=\"tick.y2\"\n (click)=\"selectClockTick(tick.value, $event)\"></line>\n }\n </svg>\n @for (tick of minuteTicks; track tick.value) {\n <div\n class=\"clock-tick-label\"\n [class.selected]=\"isMinuteSelected(tick.value)\"\n [style.left]=\"tick.labelLeft\"\n [style.top]=\"tick.labelTop\"\n (click)=\"selectClockTick(tick.value, $event)\">\n {{ tick.label }}\n </div>\n }\n }\n\n @if (clockStep === 'second') {\n <svg class=\"clock-ticks-svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n @for (tick of secondTicks; track tick.value) {\n <line\n class=\"clock-tick-line\"\n [class.selected]=\"isSecondSelected(tick.value)\"\n [attr.x1]=\"tick.x1\"\n [attr.y1]=\"tick.y1\"\n [attr.x2]=\"tick.x2\"\n [attr.y2]=\"tick.y2\"\n (click)=\"selectClockTick(tick.value, $event)\"></line>\n }\n </svg>\n @for (tick of secondTicks; track tick.value) {\n <div\n class=\"clock-tick-label\"\n [class.selected]=\"isSecondSelected(tick.value)\"\n [style.left]=\"tick.labelLeft\"\n [style.top]=\"tick.labelTop\"\n (click)=\"selectClockTick(tick.value, $event)\">\n {{ tick.label }}\n </div>\n }\n }\n\n <div class=\"clock-center-dot\"></div>\n </div>\n\n <div class=\"clock-help\">\n @if (clockStep === 'hour') {\n <span>Outer ring 00-11, inner ring 12-23.</span>\n }\n @if (clockStep === 'minute') {\n <span>Click the dial. The nearest minute will be selected.</span>\n }\n @if (clockStep === 'second') {\n <span>Click the dial. The nearest second will be selected.</span>\n }\n </div>\n\n <div class=\"clock-footer\">\n <span>{{ timeSummary }}</span>\n </div>\n </div>\n </div>\n }\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[glowwCallback]',\n standalone: true\n})\nexport class CallbackDirective {\n\n constructor() { }\n\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { Subscription } from 'rxjs';\nimport { GlowwI18nService } from './gloww-i18n.service';\n\n@Injectable()\nexport class GlowwMatPaginatorIntlService extends MatPaginatorIntl implements OnDestroy {\n\tprivate readonly subscription: Subscription;\n\n\tconstructor(private readonly i18n: GlowwI18nService) {\n\t\tsuper();\n\t\tthis.subscription = this.i18n.langChanges$.subscribe(() => this.translateLabels());\n\t\tthis.translateLabels();\n\t}\n\n\toverride getRangeLabel = (page: number, pageSize: number, length: number): string => {\n\t\tif (length === 0 || pageSize === 0) {\n\t\t\treturn `0 ${this.i18n.instant('PAGINATOR.OF', 'of')} ${length}`;\n\t\t}\n\n\t\tconst startIndex = page * pageSize;\n\t\tconst endIndex = Math.min(startIndex + pageSize, length);\n\t\treturn `${startIndex + 1}-${endIndex} ${this.i18n.instant('PAGINATOR.OF', 'of')} ${length}`;\n\t};\n\n\tngOnDestroy(): void {\n\t\tthis.subscription.unsubscribe();\n\t}\n\n\tprivate translateLabels(): void {\n\t\tthis.itemsPerPageLabel = this.i18n.instant('PAGINATOR.ITEMS_PER_PAGE', 'Items per page');\n\t\tthis.nextPageLabel = this.i18n.instant('PAGINATOR.NEXT_PAGE', 'Next page');\n\t\tthis.previousPageLabel = this.i18n.instant('PAGINATOR.PREVIOUS_PAGE', 'Previous page');\n\t\tthis.firstPageLabel = this.i18n.instant('PAGINATOR.FIRST_PAGE', 'First page');\n\t\tthis.lastPageLabel = this.i18n.instant('PAGINATOR.LAST_PAGE', 'Last page');\n\t\tthis.changes.next();\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { DatetimeComponent } from '../datetime/datetime.component';\n\nexport type AssignedUserTaskResponseMode = 'single-choice' | 'multi-choice' | 'adhoc' | 'external';\n\nexport interface AssignedUserTaskChoiceOption {\n value: string;\n label: string;\n fieldName?: string;\n}\n\nexport interface AssignedUserTaskFieldOption {\n value: any;\n label: string;\n}\n\nexport interface AssignedUserTaskFieldSpec {\n name: string;\n label: string;\n type: 'text' | 'textarea' | 'number' | 'boolean' | 'select' | 'date' | 'datetime';\n required?: boolean;\n rows?: number;\n placeholder?: string;\n options?: AssignedUserTaskFieldOption[];\n defaultValue?: any;\n}\n\nexport interface AssignedUserTaskResponseDialogData {\n mode: AssignedUserTaskResponseMode;\n title: string;\n message?: string;\n choices?: AssignedUserTaskChoiceOption[];\n fields?: AssignedUserTaskFieldSpec[];\n externalUrl?: string;\n externalOpenMode?: 'iframe' | 'window';\n currentVariables?: Record<string, any>;\n submitLabel: string;\n cancelLabel: string;\n reopenExternalLabel: string;\n completeExternalLabel: string;\n externalWindowMessage: string;\n}\n\nexport interface AssignedUserTaskResponseDialogResult {\n payload: Record<string, any>;\n}\n\n@Component({\n selector: 'glw-assigned-user-task-response-dialog',\n standalone: true,\n templateUrl: './assigned-user-task-response-dialog.component.html',\n styleUrls: ['./assigned-user-task-response-dialog.component.scss'],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CdkScrollable,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatRadioModule,\n MatSelectModule,\n DatetimeComponent\n ]\n})\nexport class AssignedUserTaskResponseDialogComponent implements OnInit {\n form: UntypedFormGroup;\n externalSafeUrl?: SafeResourceUrl;\n externalWindowRef: Window | null = null;\n choiceFieldNames: string[] = [];\n\n constructor(\n private readonly formBuilder: UntypedFormBuilder,\n private readonly dialogRef: MatDialogRef<AssignedUserTaskResponseDialogComponent, AssignedUserTaskResponseDialogResult>,\n @Inject(MAT_DIALOG_DATA) public readonly data: AssignedUserTaskResponseDialogData,\n private readonly sanitizer: DomSanitizer\n ) {\n this.form = this.formBuilder.group({});\n }\n\n ngOnInit(): void {\n this.initializeForm();\n this.initializeExternalContent();\n }\n\n onCancel(): void {\n this.externalWindowRef?.close();\n this.dialogRef.close();\n }\n\n onSubmit(): void {\n if (this.form.invalid) {\n this.form.markAllAsTouched();\n return;\n }\n\n this.dialogRef.close({ payload: this.buildPayload() });\n }\n\n reopenExternalWindow(): void {\n if (!this.data.externalUrl) {\n return;\n }\n\n this.externalWindowRef = window.open(this.data.externalUrl, '_blank', 'noopener,noreferrer');\n }\n\n control(name: string): UntypedFormControl {\n return this.form.get(name) as UntypedFormControl;\n }\n\n choiceControlName(choice: AssignedUserTaskChoiceOption): string {\n return this.choiceFieldName(choice);\n }\n\n private initializeForm(): void {\n switch (this.data.mode) {\n case 'single-choice':\n this.form.addControl('choice', new UntypedFormControl(null, Validators.required));\n break;\n case 'multi-choice':\n (this.data.choices ?? []).forEach(choice => {\n const fieldName = this.choiceFieldName(choice);\n this.choiceFieldNames.push(fieldName);\n this.form.addControl(fieldName, new UntypedFormControl(false));\n });\n break;\n case 'adhoc':\n case 'external':\n (this.data.fields ?? []).forEach(field => {\n this.form.addControl(\n field.name,\n new UntypedFormControl(\n this.resolveDefaultValue(field),\n field.required ? Validators.required : null\n )\n );\n });\n break;\n }\n }\n\n private initializeExternalContent(): void {\n if (this.data.mode !== 'external' || !this.data.externalUrl) {\n return;\n }\n\n if (this.data.externalOpenMode === 'window') {\n this.reopenExternalWindow();\n return;\n }\n\n this.externalSafeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.data.externalUrl);\n }\n\n private resolveDefaultValue(field: AssignedUserTaskFieldSpec): any {\n if (field.defaultValue !== undefined) {\n return field.defaultValue;\n }\n\n const currentValue = this.data.currentVariables?.[field.name];\n if (currentValue !== undefined) {\n return currentValue;\n }\n\n return field.type === 'boolean' ? false : null;\n }\n\n private buildPayload(): Record<string, any> {\n const payload: Record<string, any> = {};\n\n switch (this.data.mode) {\n case 'single-choice': {\n const selectedValue = this.form.getRawValue().choice;\n const selectedChoice = (this.data.choices ?? []).find(choice => choice.value === selectedValue);\n payload.response = selectedValue;\n payload.choice = selectedValue;\n payload.responseLabel = selectedChoice?.label ?? selectedValue;\n if (selectedChoice?.fieldName) {\n payload[selectedChoice.fieldName] = true;\n }\n break;\n }\n case 'multi-choice': {\n const selectedChoices = (this.data.choices ?? []).filter(choice => {\n const fieldName = this.choiceFieldName(choice);\n return !!this.form.getRawValue()[fieldName];\n });\n payload.responses = selectedChoices.map(choice => choice.value);\n payload.choices = [...payload.responses];\n payload.responseLabels = selectedChoices.map(choice => choice.label);\n selectedChoices.forEach(choice => {\n payload[choice.fieldName ?? choice.value] = true;\n });\n break;\n }\n case 'adhoc':\n case 'external':\n Object.assign(payload, this.form.getRawValue());\n break;\n }\n\n return payload;\n }\n\n private choiceFieldName(choice: AssignedUserTaskChoiceOption): string {\n return choice.fieldName ?? `choice_${choice.value.replace(/[^a-zA-Z0-9_]/g, '_')}`;\n }\n}\n","<h2 mat-dialog-title>{{ data.title }}</h2>\n\n<mat-dialog-content cdkScrollable>\n @if (data.message) {\n <div class=\"assigned-user-task-response-message\">{{ data.message }}</div>\n }\n\n <form [formGroup]=\"form\" class=\"assigned-user-task-response-form\">\n @if (data.mode === 'single-choice') {\n <mat-radio-group formControlName=\"choice\" class=\"assigned-user-task-response-choices\">\n @for (choice of data.choices ?? []; track choice.value) {\n <mat-radio-button [value]=\"choice.value\">{{ choice.label }}</mat-radio-button>\n }\n </mat-radio-group>\n }\n\n @if (data.mode === 'multi-choice') {\n <div class=\"assigned-user-task-response-choices\">\n @for (choice of data.choices ?? []; track choice.value) {\n <mat-checkbox [formControlName]=\"choiceControlName(choice)\">\n {{ choice.label }}\n </mat-checkbox>\n }\n </div>\n }\n\n @if (data.mode === 'adhoc' || data.mode === 'external') {\n <div class=\"assigned-user-task-response-fields\">\n @for (field of data.fields ?? []; track field.name) {\n <div class=\"assigned-user-task-response-field\">\n @if (field.type === 'boolean') {\n <mat-checkbox [formControlName]=\"field.name\">{{ field.label }}</mat-checkbox>\n }\n\n @if (field.type === 'text' || field.type === 'number' || field.type === 'textarea') {\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ field.label }}</mat-label>\n @if (field.type === 'textarea') {\n <textarea\n matInput\n [formControlName]=\"field.name\"\n [rows]=\"field.rows ?? 4\"\n [placeholder]=\"field.placeholder ?? ''\"></textarea>\n } @else {\n <input\n matInput\n [type]=\"field.type === 'number' ? 'number' : 'text'\"\n [formControlName]=\"field.name\"\n [placeholder]=\"field.placeholder ?? ''\" />\n }\n </mat-form-field>\n }\n\n @if (field.type === 'select') {\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ field.label }}</mat-label>\n <mat-select [formControlName]=\"field.name\">\n @for (option of field.options ?? []; track option.value) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (field.type === 'date' || field.type === 'datetime') {\n <label class=\"assigned-user-task-response-datetime-label\">{{ field.label }}</label>\n <gloww-datetime\n [mode]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [showSeconds]=\"field.type === 'datetime'\"\n [formControlName]=\"field.name\"></gloww-datetime>\n }\n </div>\n }\n </div>\n }\n\n @if (data.mode === 'external' && data.externalOpenMode !== 'window' && externalSafeUrl) {\n <div class=\"assigned-user-task-response-iframe-wrapper\">\n <iframe class=\"assigned-user-task-response-iframe\" [src]=\"externalSafeUrl\" title=\"User task external response\"></iframe>\n </div>\n }\n\n @if (data.mode === 'external' && data.externalOpenMode === 'window') {\n <div class=\"assigned-user-task-response-window-message\">\n {{ data.externalWindowMessage }}\n </div>\n <button mat-stroked-button type=\"button\" (click)=\"reopenExternalWindow()\">\n <mat-icon>open_in_new</mat-icon>\n {{ data.reopenExternalLabel }}\n </button>\n }\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" (click)=\"onCancel()\">{{ data.cancelLabel }}</button>\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"onSubmit()\">\n {{ data.mode === 'external' ? data.completeExternalLabel : data.submitLabel }}\n </button>\n</mat-dialog-actions>\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { catchError, finalize } from 'rxjs/operators';\nimport { firstValueFrom, of } from 'rxjs';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\nimport { AuthenticationService } from '../../gloww-security/Services/authentication.service';\nimport { AssignedUserTaskResponseDialogComponent, AssignedUserTaskResponseDialogData, AssignedUserTaskChoiceOption, AssignedUserTaskFieldSpec } from './assigned-user-task-response-dialog.component';\n\ntype UserTaskExecutionStep = {\n ExecutionID?: number;\n ProcessStepID?: string | number;\n HasAsExecution?: {\n DefinitionID?: string;\n ProcessID?: number;\n };\n};\n\ntype UserTask = {\n Title?: string;\n DialogTitle?: string;\n MESSAGE?: string;\n MESSAGE2?: string;\n Category?: string;\n Statut?: string;\n RepliedBY?: string;\n Form?: string;\n FormType?: string;\n CHOICES?: string;\n JSINFO?: string;\n VARIABLES?: string;\n USERTASKID?: number;\n ProcessStepID?: number;\n HasAsExecutionStep?: UserTaskExecutionStep;\n};\n\ntype UserTaskAssignment = {\n AssignmentID: number;\n UserTaskId?: number;\n Domain?: string;\n Username?: string;\n Responsible?: boolean;\n STATUT?: string;\n Category?: string;\n IsCandidate?: UserTask;\n};\n\n@Component({\n selector: 'glw-assigned-user-tasks',\n templateUrl: './assigned-user-tasks.component.html',\n styleUrls: ['./assigned-user-tasks.component.scss'],\n imports: [\n MatButtonModule,\n MatCardModule,\n MatIconModule,\n MatDialogModule,\n MatPaginatorModule,\n MatProgressSpinnerModule,\n MatSortModule,\n MatTableModule\n ]\n})\nexport class AssignedUserTasksComponent implements OnInit {\n @ViewChild(MatSort, { static: true }) sort!: MatSort;\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n\n displayedColumns = ['action', 'task', 'definition', 'status', 'message', 'assignment'];\n dataSource = new MatTableDataSource<UserTaskAssignment>([]);\n loading = false;\n errorMessage = '';\n respondingTaskId?: number;\n\n constructor(\n @Inject('glowwService') private readonly glowwService: GlowwService & {\n searchBPMN2_UserTask_Assignment: (obj?: any) => any;\n getBPMN2_UserTask: (userTaskId: number) => any;\n commitUserTask: (userTaskId: number, args: Record<string, any>) => any;\n },\n private readonly authenticationService: AuthenticationService,\n private readonly i18n: GlowwI18nService,\n private readonly dialog: MatDialog\n ) {}\n\n ngOnInit(): void {\n this.dataSource.sortingDataAccessor = (item, property) => this.getSortValue(item, property);\n this.dataSource.sort = this.sort;\n this.loadAssignments();\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n }\n\n t(key: string, fallback: string): string {\n return this.i18n.instant(key, fallback);\n }\n\n loadAssignments(): void {\n const query = this.buildQuery();\n this.loading = true;\n this.errorMessage = '';\n\n this.glowwService.searchBPMN2_UserTask_Assignment(query).pipe(\n catchError(error => {\n this.errorMessage = error?.error?.message || error?.message || `${error}`;\n return of([]);\n }),\n finalize(() => {\n this.loading = false;\n })\n ).subscribe((items: UserTaskAssignment[]) => {\n this.dataSource.data = (items ?? []).filter(item => this.isPendingTask(item));\n if (this.paginator) {\n this.dataSource.paginator = this.paginator;\n }\n });\n }\n\n async respondToTask(taskAssignment: UserTaskAssignment): Promise<void> {\n const userTaskId = taskAssignment.UserTaskId ?? taskAssignment.IsCandidate?.USERTASKID;\n if (!userTaskId) {\n return;\n }\n\n this.respondingTaskId = userTaskId;\n try {\n const task = await firstValueFrom(this.glowwService.getBPMN2_UserTask(userTaskId)) as UserTask;\n const dialogData = this.buildDialogData(task);\n const dialogRef = this.dialog.open(AssignedUserTaskResponseDialogComponent, {\n width: 'min(960px, calc(100vw - 24px))',\n maxWidth: 'calc(100vw - 24px)',\n maxHeight: 'calc(100vh - 24px)',\n disableClose: true,\n autoFocus: false,\n data: dialogData\n });\n\n const result = await firstValueFrom(dialogRef.afterClosed());\n if (!result?.payload) {\n return;\n }\n\n const currentUser = this.authenticationService.currentUserValue as any;\n const payload: Record<string, any> = {\n ...this.parseVariables(task.VARIABLES),\n ...result.payload,\n __Username: currentUser?.username ?? '',\n __UserTaskId: userTaskId\n };\n\n await firstValueFrom(this.glowwService.commitUserTask(userTaskId, payload));\n this.loadAssignments();\n } catch (error: any) {\n this.errorMessage = error?.error?.message || error?.message || `${error}`;\n } finally {\n this.respondingTaskId = undefined;\n }\n }\n\n getTaskLabel(taskAssignment: UserTaskAssignment): string {\n return taskAssignment.IsCandidate?.Title\n || taskAssignment.IsCandidate?.DialogTitle\n || `${this.t('GLOWW.USER_TASK', 'User task')} #${taskAssignment.UserTaskId ?? taskAssignment.AssignmentID}`;\n }\n\n getDefinitionLabel(taskAssignment: UserTaskAssignment): string {\n const execution = taskAssignment.IsCandidate?.HasAsExecutionStep?.HasAsExecution;\n if (!execution?.DefinitionID) {\n return '';\n }\n\n return execution.ProcessID\n ? `${execution.DefinitionID} (${execution.ProcessID})`\n : execution.DefinitionID;\n }\n\n getStatusLabel(taskAssignment: UserTaskAssignment): string {\n return taskAssignment.IsCandidate?.Statut\n || taskAssignment.STATUT\n || '';\n }\n\n getAssignmentLabel(taskAssignment: UserTaskAssignment): string {\n const type = taskAssignment.Responsible\n ? this.t('GLOWW.RESPONSIBLE', 'Responsible')\n : this.t('GLOWW.CANDIDATE', 'Candidate');\n\n return `${taskAssignment.Domain ? `${taskAssignment.Domain}\\\\` : ''}${taskAssignment.Username ?? ''} (${type})`;\n }\n\n canRespond(taskAssignment: UserTaskAssignment): boolean {\n return !!(taskAssignment.UserTaskId ?? taskAssignment.IsCandidate?.USERTASKID)\n && this.isPendingTask(taskAssignment);\n }\n\n private buildQuery(): Record<string, any> {\n const currentUser = this.authenticationService.currentUserValue as any;\n const query: Record<string, any> = {};\n\n if (currentUser?.username) {\n query.Username = currentUser.username;\n }\n\n if (currentUser?.domain) {\n query.Domain = currentUser.domain;\n }\n\n query.STATUT = 'WAITING';\n\n return query;\n }\n\n private isPendingTask(taskAssignment: UserTaskAssignment): boolean {\n const status = this.getStatusLabel(taskAssignment).toUpperCase();\n return status === '' || status === 'RUNNING';\n }\n\n private getSortValue(item: UserTaskAssignment, property: string): string | number {\n switch (property) {\n case 'task':\n return this.getTaskLabel(item).toLowerCase();\n case 'definition':\n return this.getDefinitionLabel(item).toLowerCase();\n case 'status':\n return this.getStatusLabel(item).toLowerCase();\n case 'message':\n return (item.IsCandidate?.MESSAGE ?? '').toLowerCase();\n case 'assignment':\n return this.getAssignmentLabel(item).toLowerCase();\n default:\n return item.AssignmentID ?? 0;\n }\n }\n\n private buildDialogData(task: UserTask): AssignedUserTaskResponseDialogData {\n const jsInfo = this.parseMaybeJson(task.JSINFO);\n const formInfo = this.parseMaybeJson(task.Form);\n const currentVariables = this.parseVariables(task.VARIABLES);\n const fields = this.normalizeFields(jsInfo, formInfo, currentVariables);\n const externalConfig = this.resolveExternalConfig(task, jsInfo, formInfo);\n\n if (externalConfig) {\n return {\n mode: 'external',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n fields,\n currentVariables,\n externalUrl: externalConfig.url,\n externalOpenMode: externalConfig.openMode,\n submitLabel: this.t('COMMON.SAVE', 'Save'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: this.t('GLOWW.REOPEN_EXTERNAL_FORM', 'Reopen external form'),\n completeExternalLabel: this.t('GLOWW.COMPLETE_TASK', 'Complete task'),\n externalWindowMessage: this.t('GLOWW.COMPLETE_EXTERNAL_FORM_THEN_VALIDATE', 'Complete the external form, then validate the task here.')\n };\n }\n\n if ((task.FormType || '1') === '2') {\n return {\n mode: 'multi-choice',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n choices: this.parseChoices(task.CHOICES),\n submitLabel: this.t('GLOWW.SUBMIT_RESPONSE', 'Submit response'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: '',\n completeExternalLabel: '',\n externalWindowMessage: ''\n };\n }\n\n if ((task.FormType || '1') === '1' && (task.CHOICES || '').trim()) {\n return {\n mode: 'single-choice',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n choices: this.parseChoices(task.CHOICES),\n submitLabel: this.t('GLOWW.SUBMIT_RESPONSE', 'Submit response'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: '',\n completeExternalLabel: '',\n externalWindowMessage: ''\n };\n }\n\n return {\n mode: 'adhoc',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n fields: fields.length > 0 ? fields : [{\n name: 'response',\n label: this.t('GLOWW.RESPONSE', 'Response'),\n type: 'textarea',\n rows: 6\n }],\n currentVariables,\n submitLabel: this.t('GLOWW.SUBMIT_RESPONSE', 'Submit response'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: '',\n completeExternalLabel: '',\n externalWindowMessage: ''\n };\n }\n\n private parseChoices(rawChoices?: string): AssignedUserTaskChoiceOption[] {\n if (!rawChoices?.trim()) {\n return [];\n }\n\n const parsedJson = this.parseMaybeJson(rawChoices);\n if (Array.isArray(parsedJson)) {\n return parsedJson\n .map(choice => this.normalizeChoice(choice))\n .filter((choice): choice is AssignedUserTaskChoiceOption => !!choice);\n }\n\n return rawChoices\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter(line => !!line)\n .map(line => this.normalizeChoice(line))\n .filter((choice): choice is AssignedUserTaskChoiceOption => !!choice);\n }\n\n private normalizeChoice(choice: any): AssignedUserTaskChoiceOption | null {\n if (!choice && choice !== 0) {\n return null;\n }\n\n if (typeof choice === 'object') {\n const value = `${choice.value ?? choice.key ?? choice.id ?? choice.name ?? choice.label ?? choice}`;\n const label = `${choice.label ?? choice.name ?? value}`;\n return {\n value,\n label,\n fieldName: choice.fieldName ?? choice.name\n };\n }\n\n const text = `${choice}`.trim();\n const match = text.match(/^([^|=;:]+)\\s*[|=;:]\\s*(.+)$/);\n if (!match) {\n return { value: text, label: text };\n }\n\n const value = match[1].trim();\n const label = match[2].trim();\n return {\n value,\n label,\n fieldName: value.replace(/[^a-zA-Z0-9_]/g, '_')\n };\n }\n\n private parseMaybeJson(rawValue?: string): any {\n if (!rawValue?.trim()) {\n return null;\n }\n\n try {\n return JSON.parse(rawValue);\n } catch {\n return null;\n }\n }\n\n private parseVariables(rawValue?: string): Record<string, any> {\n const parsed = this.parseMaybeJson(rawValue);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? parsed\n : {};\n }\n\n private normalizeFields(jsInfo: any, formInfo: any, currentVariables: Record<string, any>): AssignedUserTaskFieldSpec[] {\n const rawFields = Array.isArray(jsInfo)\n ? jsInfo\n : Array.isArray(jsInfo?.fields)\n ? jsInfo.fields\n : Array.isArray(formInfo)\n ? formInfo\n : Array.isArray(formInfo?.fields)\n ? formInfo.fields\n : [];\n\n return rawFields\n .map((field: any) => this.normalizeField(field, currentVariables))\n .filter((field: AssignedUserTaskFieldSpec | null): field is AssignedUserTaskFieldSpec => !!field);\n }\n\n private normalizeField(field: any, currentVariables: Record<string, any>): AssignedUserTaskFieldSpec | null {\n if (!field) {\n return null;\n }\n\n if (typeof field === 'string') {\n return {\n name: field,\n label: field,\n type: 'text',\n defaultValue: currentVariables[field]\n };\n }\n\n const typeMap: Record<string, AssignedUserTaskFieldSpec['type']> = {\n string: 'text',\n text: 'text',\n textarea: 'textarea',\n memo: 'textarea',\n number: 'number',\n integer: 'number',\n bool: 'boolean',\n boolean: 'boolean',\n select: 'select',\n choice: 'select',\n date: 'date',\n datetime: 'datetime'\n };\n\n const name = field.name ?? field.key ?? field.id;\n if (!name) {\n return null;\n }\n\n return {\n name,\n label: field.label ?? field.title ?? name,\n type: typeMap[(field.type ?? 'text').toString().toLowerCase()] ?? 'text',\n required: !!field.required,\n rows: field.rows,\n placeholder: field.placeholder,\n defaultValue: currentVariables[name] ?? field.defaultValue ?? field.value,\n options: Array.isArray(field.options)\n ? field.options.map((option: any) => ({\n value: option?.value ?? option?.key ?? option,\n label: option?.label ?? option?.name ?? option?.value ?? option\n }))\n : undefined\n };\n }\n\n private resolveExternalConfig(task: UserTask, jsInfo: any, formInfo: any): { url: string; openMode: 'iframe' | 'window' } | null {\n const configCandidate = [jsInfo, formInfo].find(candidate => candidate && typeof candidate === 'object' && !Array.isArray(candidate));\n const directUrl = `${configCandidate?.url ?? configCandidate?.href ?? configCandidate?.externalUrl ?? task.Form ?? task.JSINFO ?? ''}`.trim();\n\n if (!this.looksLikeUrl(directUrl)) {\n return null;\n }\n\n const openModeValue = `${configCandidate?.openMode ?? configCandidate?.openIn ?? configCandidate?.target ?? ''}`.toLowerCase();\n const openMode = configCandidate?.newWindow === true\n || openModeValue === 'window'\n || openModeValue === 'new-window'\n || openModeValue === '_blank'\n ? 'window'\n : 'iframe';\n\n return {\n url: directUrl,\n openMode\n };\n }\n\n private looksLikeUrl(value?: string): boolean {\n return !!value && /^(https?:\\/\\/|\\/)/i.test(value.trim());\n }\n}\n","<mat-card class=\"assigned-user-tasks-card\" appearance=\"outlined\">\n <mat-card-header class=\"assigned-user-tasks-header\">\n <mat-card-title>{{ t('GLOWW.MY_ASSIGNED_TASKS', 'My assigned tasks') }}</mat-card-title>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"loadAssignments()\">\n <mat-icon>refresh</mat-icon>\n {{ t('COMMON.REFRESH', 'Refresh') }}\n </button>\n </mat-card-header>\n\n <mat-card-content>\n @if (errorMessage) {\n <div class=\"assigned-user-tasks-error\">\n {{ t('GLOWW.UNABLE_TO_QUERY', 'Unable to query') }}: {{ errorMessage }}\n </div>\n }\n\n @if (loading) {\n <div class=\"assigned-user-tasks-loading\">\n <mat-spinner diameter=\"36\"></mat-spinner>\n </div>\n }\n\n @if (!loading) {\n <div class=\"assigned-user-tasks-table-wrapper\">\n <table mat-table [dataSource]=\"dataSource\" matSort>\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let obj\">\n <button\n mat-stroked-button\n color=\"primary\"\n type=\"button\"\n (click)=\"respondToTask(obj)\"\n [disabled]=\"!canRespond(obj) || respondingTaskId === (obj.UserTaskId ?? obj.IsCandidate?.USERTASKID)\">\n <i class=\"fal fa-reply\"></i>\n {{ t('GLOWW.RESPOND', 'Respond') }}\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"task\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"task\">{{ t('LISTS.TASK', 'Task') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getTaskLabel(obj) }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"definition\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"definition\">{{ t('LISTS.DEFINITION_ID', 'Definition ID') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getDefinitionLabel(obj) }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"status\">{{ t('LISTS.STATUS', 'Status') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getStatusLabel(obj) }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"message\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"message\">{{ t('LISTS.MESSAGE', 'Message') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ obj.IsCandidate?.MESSAGE }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"assignment\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"assignment\">{{ t('LISTS.ASSIGNED_TO', 'Assigned to') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getAssignmentLabel(obj) }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n </div>\n\n @if (!dataSource.data.length) {\n <div class=\"assigned-user-tasks-empty\">\n {{ t('GLOWW.NO_ASSIGNED_TASKS', 'No task is currently assigned to you.') }}\n </div>\n }\n }\n </mat-card-content>\n\n <mat-card-actions>\n <mat-paginator [pageSize]=\"10\" [pageSizeOptions]=\"[10, 20, 50, 100]\" [showFirstLastButtons]=\"true\"></mat-paginator>\n </mat-card-actions>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\nexport abstract class BaseCollectionComponent {\r\n\r\n filterform: FormGroup;\r\n constructor(private _formBuilder: FormBuilder) {\r\n this.filterform = this._formBuilder.group({\r\n filterData: [null, null],\r\n });\r\n }\r\n\r\n abstract GetDataSource(): MatTableDataSource<any>;\r\n\r\n Filter(args?) {\r\n const filterDictionary = new Map<string, string>();\r\n var jsonString = JSON.stringify(args ?? this.filterform.value.filterData);\r\n this.GetDataSource().filter = jsonString;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { IHasUnsavedData } from './ihas-unsaved-data';\r\n\r\n/*@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HasUnsavedDataGuard implements CanDeactivate<unknown> {\r\n canDeactivate(\r\n component: unknown,\r\n currentRoute: ActivatedRouteSnapshot,\r\n currentState: RouterStateSnapshot,\r\n nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return true;\r\n }\r\n\r\n}*/\r\n\r\n@Injectable()\r\nexport class HasUnsavedDataGuard {\r\n canDeactivate(component: IHasUnsavedData): boolean {\r\n if (component.hasUnsavedData && component.hasUnsavedData()) {\r\n return confirm('You have some unsaved form data. Are you sure, you want to leave this page ? ');\r\n }\r\n return true;\r\n }\r\n}\r\n","import { FolderService } from './Services/folder.service';\r\nimport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { NavService } from './Services/nav.service';\r\nimport { SecureImgComponent } from './Components/secure-img/secure-img.component';\r\nimport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\r\nimport { VersionCheckService } from './Services/version-check.service';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { \r\n NgxMatDatetimePickerModule, // Existe selon ta liste\r\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\r\n NgxMatNativeDateModule, // Existe selon ta liste\r\n} from 'ngx-mat-datetime-picker-v2';\r\n/*import { NgxMatMomentModule } from '@angular-material-components/moment-adapter';*/\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\r\nimport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\r\nimport { HeaderComponent } from './Components/header/header.component';\r\nimport { ResultTableComponent } from './Components/result-table/result-table.component';\r\nimport { SearchFormComponent } from './Components/search-form/search-form.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PromptComponent } from './Components/prompt/prompt.component';\r\nimport { SecurePipe } from './Pipes/secure.pipe';\r\nimport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\r\nimport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\r\nimport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\r\nimport { HtmlFormatPipe } from './Pipes/html-format.pipe';\r\nimport { UploadFileComponent } from './Components/upload-file/upload-file.component';\r\nimport { FileSinkDirective } from './Directives/file-sink.directive';\r\nimport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\r\nimport { FoldersComponent } from './Components/folders/folders/folders.component';\r\nimport { FolderServiceConfig } from './Services/folder-service-config';\r\nimport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\r\nimport { SecureAComponent } from './Components/secure-a/secure-a.component';\r\nimport { DummyComponent } from './Components/dummy/dummy.component';\r\nimport { SelectComponent } from './Components/select/select.component';\r\nimport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { DatetimeComponent } from './Components/datetime/datetime.component';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\nimport { RouteDirective } from './Directives/route.directive';\nimport { CallbackDirective } from './Directives/callback.directive';\nimport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nimport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\nimport { GlowwMatPaginatorIntlService } from './Services/gloww-mat-paginator-intl.service';\nimport { AssignedUserTasksComponent } from './Components/assigned-user-tasks/assigned-user-tasks.component';\n\nexport const GLOWW_STANDALONE_DECLARATIONS = [\n UploadDocComponent,\n SafeHtmlPipe,\n DisplayObjectsComponent,\n HeaderComponent,\n ResultTableComponent,\n SearchFormComponent,\n ConfirmationComponent,\n PromptComponent,\n SecurePipe,\n SecureImgComponent,\n MenuListItemComponent,\n CodeEditorComponent,\n HtmlEditorComponent,\n HtmlFormatPipe,\n UploadFileComponent,\n FileSinkDirective,\n FileEditComponent,\n FoldersComponent,\n DownloadProgressComponent,\n SecureAComponent,\n DummyComponent,\n SelectComponent,\n AutoCompleteComponent,\n DatetimeComponent,\n AssignedUserTasksComponent,\n RouteDirective,\n CallbackDirective,\n FilterFormComponent\n] as const;\n\nexport const GLOWW_MODULE_EXPORTS = [\n ...GLOWW_STANDALONE_DECLARATIONS,\n MatDatepickerModule,\n NgxMatDatetimePickerModule,\n NgxMatTimepickerComponent,\n NgxMatNativeDateModule\n] as const;\n\nfunction getGlowwProviders(folderServiceConfig?: FolderServiceConfig): Provider[] {\n return [\n VersionCheckService,\n NavService,\n VoiceRecognitionService,\n {\n provide: FolderServiceConfig,\n useValue: folderServiceConfig\n },\n { provide: MAT_DATE_LOCALE, useValue: 'fr' }\n ];\n}\n\nexport function provideGloww(folderServiceConfig?: FolderServiceConfig): EnvironmentProviders {\n return makeEnvironmentProviders(getGlowwProviders(folderServiceConfig));\n}\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatTableModule,\n MatSelectModule,\n MatPaginatorModule,\n MatSortModule,\n MatProgressSpinnerModule,\n MatAutocompleteModule,\n CodemirrorModule,\n AngularEditorModule,\n MatDatepickerModule,\n NgxMatDatetimePickerModule, // Existe selon ta liste\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\n NgxMatNativeDateModule, // Existe selon ta liste\n //NgxMatMomentModule,\n DragDropModule,\n AngularResizeEventModule,\n ...GLOWW_STANDALONE_DECLARATIONS\n ],\n providers: [{ provide: MatPaginatorIntl, useClass: GlowwMatPaginatorIntlService }],\n exports: [...GLOWW_MODULE_EXPORTS]\n})\nexport class GlowwModule {\n public static forRoot(folderServiceConfig?: FolderServiceConfig): ModuleWithProviders<GlowwModule> {\n console.log(`forRoot ${folderServiceConfig}`);\n return {\n ngModule: GlowwModule,\n providers: getGlowwProviders(folderServiceConfig)\n };\n }\n}\n\r\nexport { VersionCheckService } from './Services/version-check.service';\r\nexport { FolderService } from './Services/folder.service'\r\nexport { DialogService } from './Services/dialog.service';\r\nexport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nexport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\nexport { HeaderComponent } from './Components/header/header.component';\nexport { ResultTableComponent } from './Components/result-table/result-table.component';\nexport { SearchFormComponent } from './Components/search-form/search-form.component';\nexport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nexport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\nexport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\nexport { UploadFileComponent } from './Components/upload-file/upload-file.component';\nexport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\nexport { PromptComponent } from './Components/prompt/prompt.component';\nexport { SecureImgComponent } from './Components/secure-img/secure-img.component';\nexport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\nexport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\nexport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\nexport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\nexport { FoldersComponent } from './Components/folders/folders/folders.component';\nexport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\nexport { DummyComponent } from './Components/dummy/dummy.component'\nexport { SelectComponent } from './Components/select/select.component'\nexport { DatetimeComponent } from './Components/datetime/datetime.component'\nexport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component'\nexport { AssignedUserTasksComponent } from './Components/assigned-user-tasks/assigned-user-tasks.component'\nexport { SecureAComponent } from './Components/secure-a/secure-a.component';\nexport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\nexport { SecurePipe } from './Pipes/secure.pipe';\nexport { HtmlFormatPipe } from './Pipes/html-format.pipe';\nexport { FileSinkDirective } from './Directives/file-sink.directive';\nexport { RouteDirective } from './Directives/route.directive';\nexport { CallbackDirective } from './Directives/callback.directive';\nexport { HasUnsavedDataGuard } from './Guards/has-unsaved-data.guard'\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwSecurityService {\r\n\r\n constructor() { }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class GlowwValidators {\r\n public static isObject(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (typeof control.value !== 'object') {\r\n return { 'isNotObject': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isEmail(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotEmail': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInteger(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:^\\s*\\d*\\s*$)/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotInteger': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isNumber(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:(?:^\\s*(?:\\d+(?:[\\.]\\d+)?)?\\s*$))/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotNumber': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isUrl(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(((https?:(?:\\/\\/)?)?(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv4(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv4Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/\\d{1,2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv6(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv6Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/\\d{1-3}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isMacAddr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\\1){4}[[:xdigit:]]{2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInternationalPhoneNr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\\d{1,14}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isJson(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n if (typeof control.value === 'object') { return null; }\r\n if (typeof control.value !== 'string') {\r\n return { 'isNotJson': true };\r\n }\r\n try {\r\n const j = JSON.parse(control.value);\r\n } catch (ex) {\r\n return { 'invalidJson': true };\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of gloww\r\n */\r\n\r\nexport * from './lib/Services/gloww.service';\r\nexport * from './lib/Services/version-check.service';\r\nexport * from './lib/Services/dialog.service';\r\nexport * from './lib/Services/nav.service';\r\nexport * from './lib/gloww.module';\nexport * from './lib/Models/nav-item';\r\nexport * from './lib/Pipes/safe-html.pipe';\nexport * from './lib/Pipes/secure.pipe';\nexport * from './lib/Pipes/html-format.pipe';\nexport * from './lib/Directives/callback.directive';\nexport * from './lib/Directives/file-sink.directive';\nexport * from './lib/Directives/route.directive';\nexport * from './lib/Components/upload-doc/upload-doc.component';\nexport * from './lib/Components/upload-file/upload-file.component';\nexport * from './lib/Components/display-objects/display-objects.component';\nexport * from './lib/Components/confirmation/confirmation.component';\nexport * from './lib/Components/prompt/prompt.component';\nexport * from './lib/Components/secure-img/secure-img.component';\nexport * from './lib/Components/secure-a/secure-a.component';\nexport * from './lib/Components/header/header.component';\nexport * from './lib/Components/result-table/result-table.component';\nexport * from './lib/Components/search-form/search-form.component';\nexport * from './lib/Components/filter-form/filter-form.component';\nexport * from './lib/Components/dummy/dummy.component'\nexport * from './lib/Components/datetime/datetime.component'\nexport * from './lib/Components/select/select.component'\nexport * from './lib/Components/auto-complete/auto-complete.component'\nexport * from './lib/Components/assigned-user-tasks/assigned-user-tasks.component'\nexport * from './lib/Components/menu-list-item/menu-list-item.component';\nexport * from './lib/Components/code-editor/code-editor.component';\nexport * from './lib/Components/html-editor/html-editor.component';\nexport * from './lib/Components/folders/file-edit/file-edit.component';\nexport * from './lib/Components/folders/folders/folders.component';\nexport * from './lib/Components/download-progress/download-progress.component';\nexport * from './lib/Guards/has-unsaved-data.guard'\nexport * from './lib/Guards/ihas-unsaved-data'\n\nexport * from './lib/gloww-security/Components/login/login.component';\nexport * from './lib/gloww-security/Components/change-password-dlg/change-password-dlg.component';\nexport * from './lib/gloww-security/Components/user-menu/user-menu.component';\nexport * from './lib/gloww-security/Components/social-network/social-network.component';\nexport * from './lib/gloww-security/Components/social-network-dlg/social-network-dlg.component';\nexport * from './lib/gloww-security/Services/gloww-security.service';\nexport * from './lib/gloww-security/gloww-security.module';\nexport * from './lib/gloww-security/Services/authentication-service-config';\nexport * from './lib/Services/folder.service';\nexport * from './lib/Services/folder-service-config';\nexport * from './lib/Helpers/gloww-validators';\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i1.GlowwI18nService","i2.AuthenticationServiceConfig","i4.AuthenticationService","i5","i6.GlowwI18nService","delay","delayOperator","i1.NavService","i3.GlowwI18nService","i1.SnippetsService","i2.GlowwService","i3","i1.AuthenticationService","i3.AuthenticationService","i4.AuthenticationServiceConfig","i2.AuthenticationService","i3.AuthenticationServiceConfig","i4","i3.VoiceRecognitionService","CodeEditorComponent_1","i1.FolderService","MatFormField","MatLabel","i7","i2.GlowwI18nService","i6","i8","i9"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAMa,cAAc,GAAG,IAAI,cAAc,CAAS,qBAAqB;MACjE,WAAW,GAAG,IAAI,cAAc,CAAS,mBAAmB;MAI5D,YAAY,CAAA;AAIvB,IAAA,IAAW,QAAQ,GAAA;QACjB,OAAO,IAAI,CAAC,gBAAgB;IAC9B;IACA,IAAW,QAAQ,CAAC,KAAa,EAAA;;;AAG/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,IAAI,KAAK;QAC7C,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACjC,QAAA,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAG,CAAC;AACvE,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,0BAAA,EAA6B,IAAI,CAAC,gBAAgB,CAAA,CAAA,EAAI,KAAK,KAAK,MAAM,CAAA,IAAA,EAAO,MAAM,CAAA,CAAE,CAAC;AAClG,QAAA,IAAI,CAAC,gBAAgB,GAAG,KAAK;QAC7B,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC;AACxB,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAClC;;;;IAIF;AAOA,IAAA,WAAA,CAAoB,SAAmB,EAAA;QAAnB,IAAA,CAAA,SAAS,GAAT,SAAS;QA3BtB,IAAA,CAAA,gBAAgB,GAAG,KAAK;AAC/B,QAAA,IAAA,CAAA,cAAc,GAAoB,IAAI,OAAO,EAAU;QAoBhD,IAAA,CAAA,OAAO,GAAG,GAAG;QAOlB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACvD,QAAA,IAAI;YAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC;QAAE;QAAE,MAAM,EAAE;AACnE,QAAA,IAAI;YAAE,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC;QAAC;QAAE,MAAM,EAAE;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,UAAU;;QAGxG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;AAC1D,QAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,QAAQ;AACrC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AAAE,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AAAE,gBAAA,IAAI,CAAC,OAAO,IAAI,GAAG;YAAE;QAAE;IACvH;AACO,IAAA,SAAS,CAAC,GAAQ,EAAA;AACvB,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;QAC7B,IAAI,CAAC,GAAG,EAAE;AAAE,YAAA,OAAO,MAAM;QAAE;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;AAC3B,YAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE;AACV,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACzD;AACF,QAAA,CAAC,CAAC;AACF,QAAA,OAAO,MAAM;IACf;AAEO,IAAA,MAAM,KAAK,GAAA;QAChB,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,CAAA,YAAA,EAAe,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,MAAA,CAAQ,CAAC,CAAC;IACxH;AAEO,IAAA,MAAM,cAAc,GAAA;QACzB,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,CAAA,YAAA,EAAe,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA,eAAA,CAAiB,CAAC,CAAC;IACjI;IAEO,cAAc,CAAC,UAAkB,EAAE,IAAyB,EAAA;AACjE,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA,0BAAA,EAA6B,UAAU,CAAA,CAAE,EAAE,IAAI,IAAI,EAAE,EAAE;AAC3E,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;+GAhEW,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAZ,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,YAAY,cAFX,MAAM,EAAA,CAAA,CAAA;;4FAEP,YAAY,EAAA,UAAA,EAAA,CAAA;kBAHxB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCJY,mBAAmB,CAAA;AAM9B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;;QAJhB,IAAA,CAAA,WAAW,GAAG,iCAAiC;IAIf;AAExC;;;;;AAKG;AACI,IAAA,gBAAgB,CAAC,GAAG,GAAG,eAAe,EAAE,SAAS,GAAG,IAAI,GAAG,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAA;AACxG,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,GAAG,GAAG,GAAG;QACd,IAAI,CAAC,YAAY,EAAE;QACnB,WAAW,CAAC,MAAK;YACf,IAAI,CAAC,YAAY,EAAE;QACrB,CAAC,EAAE,SAAS,CAAC;IACf;IAEO,oBAAoB,GAAA;AACzB,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;;AAExB,QAAA,IAAI,OAAO,CAAC,yJAAyJ,CAAC,EAAE;YACtK,IAAI,CAAC,iBAAiB,EAAE;QAC1B;IACF;IACO,iBAAiB,GAAA;AACtB,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrB,QAAA,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM;QAC5B,IAAI,MAAM,EAAE;YAAE,MAAM,IAAI,GAAG;QAAE;QAC7B,MAAM,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AACxC,QAAA,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAA,CAAE,CAAC;AAC/B,QAAA,QAAQ,CAAC,MAAM,GAAG,MAAM;IAC1B;IAEQ,YAAY,GAAA;;AAElB,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;;AAElD,aAAA,SAAS,CACR,CAAC,QAAa,KAAI;AAChB,YAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AAC7B,YAAA,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI;AAC1B,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC;AAC/D,YAAA,OAAO,CAAC,GAAG,CAAC,CAAA,iBAAA,EAAoB,IAAI,CAAC,WAAW,CAAA,QAAA,EAAW,IAAI,CAAA,UAAA,EAAa,WAAW,CAAA,CAAE,CAAC;;YAG1F,IAAI,WAAW,EAAE;gBACf,IAAI,CAAC,QAAQ,EAAE;YACjB;;;AAGA,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACzB,QAAA,CAAC,EACD,CAAC,GAAG,KAAI;AACN,YAAA,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC;AAC7C,QAAA,CAAC,CACF;IACL;AAEA;;;;;;;AAOG;IACK,cAAc,CAAC,WAAW,EAAE,OAAO,EAAA;QACzC,OAAO,WAAW,KAAK,OAAO;IAChC;+GA1EW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cAFlB,MAAM,EAAA,CAAA,CAAA;;4FAEP,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAH/B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCGY,cAAc,CAAA;IAEzB,WAAA,CAAoB,EAAc,EAAU,MAAc,EAAA;QAAtC,IAAA,CAAA,EAAE,GAAF,EAAE;QAAsB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAY;AAGpB,IAAA,OAAO,CAAC,MAAM,EAAA;AACtD,QAAA,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;AAC5D,QAAA,IAAI,IAAI,CAAC,GAAG,EAAE;AAAE,YAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE;QACtC,IAAI,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC;IAEjC;+GAXW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAIE;;sBAEA,YAAY;uBAAC,OAAO,EAAE,CAAC,eAAe,CAAC;;;MCN7B,YAAY,CAAA;AAExB,IAAA,WAAA,CAAoB,SAAuB,EAAA;QAAvB,IAAA,CAAA,SAAS,GAAT,SAAS;IAAkB;AAE/C,IAAA,SAAS,CAAC,KAAK,EAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,KAAK,CAAC;;;IAGrD;+GARY,YAAY,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAZ,YAAY,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;4FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCOY,qBAAqB,CAAA;IAMhC,WAAA,CAAmB,SAA8C,EAAkC,IAAuB,EAAA;QAAvG,IAAA,CAAA,SAAS,GAAT,SAAS;QAAuE,IAAA,CAAA,IAAI,GAAJ,IAAI;;AAErG,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,cAAc;IACzC;IAEA,SAAS,GAAA;;AAEP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5B;IAEA,SAAS,GAAA;;AAEP,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;IAC7B;AArBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,gDAM2C,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAN/E,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECblC,oiBAkBC,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDPa,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,KAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,oUAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE3G,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBANjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAGnB,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,oiBAAA,EAAA;;0BAQnD,MAAM;2BAAC,eAAe;;AAmB5F;MACa,iBAAiB,CAAA;AAC5B,IAAA,WAAA,CAAmB,KAAa,EAAS,OAAe,EAAS,IAAa,EAAA;QAA3D,IAAA,CAAA,KAAK,GAAL,KAAK;QAAiB,IAAA,CAAA,OAAO,GAAP,OAAO;QAAiB,IAAA,CAAA,IAAI,GAAJ,IAAI;IACrE;AACD;;MEnCY,aAAa,CAAA;AAExB,IAAA,WAAA,CAAsB,MAAiB,EAAA;QAAjB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAe;AAE3C,IAAA,wBAAwB,CAAC,KAAa,EAAE,OAAe,EAAE,IAAa,EAAA;QACpE,MAAM,UAAU,GAAG,IAAI,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,EAAE;AAC7C,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;AAGA,IAAA,sBAAsB,CAAC,KAAa,EAAE,OAAe,EAAE,IAAa,EAAA;AAClE,QAAA,OAAO,IAAI,CAAC,wBAAwB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE;IAC1E;+GAhBW,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCDY,UAAU,CAAA;AAIrB,IAAA,WAAA,CAAoB,MAAc,EAAA;QAAd,IAAA,CAAA,MAAM,GAAN,MAAM;AAFnB,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,eAAe,CAAS,SAAS,CAAC;QAGxD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAY,KAAI;AAC5C,YAAA,IAAI,KAAK,YAAY,aAAa,EAAE;gBAClC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC/C;AACF,QAAA,CAAC,CAAC;IACJ;IAEO,QAAQ,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;IAEO,OAAO,GAAA;AACZ,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;IACvB;+GAlBW,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAV,UAAU,EAAA,CAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBADtB;;;MCIY,uBAAuB,CAAA;AAOlC,IAAA,WAAA,GAAA;AALA,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,uBAAuB,EAAE;QAC3C,IAAA,CAAA,oBAAoB,GAAG,KAAK;QACrB,IAAA,CAAA,IAAI,GAAG,EAAE;IAGA;IAEhB,IAAI,GAAA;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,IAAI;AACtC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,OAAO;QAE/B,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAM,KAAI;YACrD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO;iBACpC,GAAG,CAAC,CAAC,MAAW,KAAK,MAAM,CAAC,CAAC,CAAC;iBAC9B,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,UAAU;iBACjC,IAAI,CAAC,EAAE,CAAC;AACX,YAAA,IAAI,CAAC,SAAS,GAAG,UAAU;AAC3B,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACzB,QAAA,CAAC,CAAC;IACJ;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;AACxB,QAAA,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC,SAAc,KAAI;AAC1D,YAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,gBAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;YACvC;iBAAO;gBACL,IAAI,CAAC,UAAU,EAAE;AACjB,gBAAA,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC1B;AACF,QAAA,CAAC,CAAC;IACJ;IACA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI;QAChC,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;AACvB,QAAA,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACvC;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,GAAG,GAAG;AAClD,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;+GAhDW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,cAFtB,MAAM,EAAA,CAAA,CAAA;;4FAEP,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCOY,kBAAkB,CAAA;IAO7B,WAAW,GAAA;QACT,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC1B;;IAQA,WAAA,CAAoB,UAAsB,EAAU,YAA0B,EAAA;QAA1D,IAAA,CAAA,UAAU,GAAV,UAAU;QAAsB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAXxD,IAAA,CAAA,IAAI,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;;;;QAQ5C,IAAA,CAAA,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAIhE;AAEQ,IAAA,SAAS,CAAC,GAAW,EAAA;QAC3B,OAAO,IAAI,CAAC;;aAET,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;;aAEjC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF;+GA1BW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,EAAA,GAAA,EAAA,KAAA,EAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EALjB;;AAEX,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACW,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEV,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,QAAQ,EAAE;;AAEX,EAAA,CAAA;oBACC,OAAO,EAAE,CAAC,SAAS;AACtB,iBAAA;;sBAME;;;MCbU,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;AAOY,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAO;AA0BhD,IAAA;;AAvBuC,IAAA,UAAU,CAAC,GAAG,EAAA;QAClD,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;IACtB;;AAG8C,IAAA,WAAW,CAAC,GAAG,EAAA;QAC3D,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;IACvB;;AAGyC,IAAA,MAAM,CAAC,GAAG,EAAA;QACjD,GAAG,CAAC,cAAc,EAAE;QACpB,GAAG,CAAC,eAAe,EAAE;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,KAAK;AACrB,QAAA,IAAI,KAAK,GAAG,GAAG,CAAC,YAAY,CAAC,KAAK;AAClC,QAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;QAC9B;IACF;+GA5BW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,UAAA,EAAA,oBAAA,EAAA,WAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,gBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE;AACb,iBAAA;;sBAGE,WAAW;uBAAC,gBAAgB;;sBAC5B;;sBAGA,YAAY;uBAAC,UAAU,EAAE,CAAC,QAAQ,CAAC;;sBAOnC,YAAY;uBAAC,WAAW,EAAE,CAAC,QAAQ,CAAC;;sBAOpC,YAAY;uBAAC,MAAM,EAAE,CAAC,QAAQ,CAAC;;;MCHrB,mBAAmB,CAAA;AAW9B,IAAA,WAAA,GAAA;QATS,IAAA,CAAA,QAAQ,GAAY,KAAK;QACzB,IAAA,CAAA,gBAAgB,GAAY,KAAK;QACjC,IAAA,CAAA,UAAU,GAAW,KAAK;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAG,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAG,CAAC;QAG1B,IAAA,CAAA,KAAK,GAAG,EAAE;IAIV;IACA,eAAe,GAAA;AACb,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AAChD,QAAA,UAAU,CAAC,QAAQ,GAAG,MAAK;YACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACjC,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACjB;AACA,YAAA,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,EAAE;AACnC,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;;YAEpI;AACA,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,SAAS,EAAE;AAClB,QAAA,CAAC;IACH;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,KAAK;;IAEnB;IAEA,IAAI,KAAK,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;AAChB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;IAClB;AAGA,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG;IAClB;AACA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;IAErC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzD,YAAA,IAAI,OAAO,CAAC,uCAAuC,CAAC,EAAE;AACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACjB;iBAAO;gBACL;YACF;QACF;AACA,QAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,EAAE;IACvC;IAEA,aAAa,CAAC,CAAC,EAAE,MAAM,EAAA;AACrB,QAAA,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK;AAC/C,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,aAAa,CAAC,MAAM,EAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;IAC/B;AACA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;QAChC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtC,KAAK,CAAC,wCAAwC,CAAC;YAC/C;QACF;AACA,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACzD,YAAA,IAAI,OAAO,CAAC,uCAAuC,CAAC,EAAE;AACpD,gBAAA,IAAI,CAAC,KAAK,GAAG,EAAE;YACjB;iBAAO;gBACL;YACF;QACF;QACA,IAAI,CAAC,IAAI,CAAC,KAAK;AAAE,YAAA,IAAI,CAAC,KAAK,GAAG,EAAE;AAChC,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QACpI;AACA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA;;;;AAIC;AACD,IAAA,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,EAAA;AAC7B,QAAA,IAAI,KAAK,KAAK,CAAC,EAAE;AACf,YAAA,OAAO,SAAS;QAClB;QACA,MAAM,CAAC,GAAG,IAAI;AACd,QAAA,MAAM,EAAE,GAAG,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ;QACvC,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QACvE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,OAAO,UAAU,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAC1E;AAEA,IAAA,UAAU,CAAC,KAAa,EAAA;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,GAAG,EAAE;AAClE,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;YAClC;QACF;QACA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC3B,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;+GAtHW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,YAAA,EAAA,EAAA,SAAA,EATjB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBL,8jDAoCW,EAAA,MAAA,EAAA,CAAA,8rCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDfG,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,8GAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE/F,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAGlB;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,8jDAAA,EAAA,MAAA,EAAA,CAAA,8rCAAA,CAAA,EAAA;;sBAG1G,SAAS;uBAAC,YAAY;;sBACtB;;sBACA;;sBACA;;;MEbU,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,CAAoB,SAA2C,EAAkC,IAAS,EAAU,WAA+B,EAAA;QAA/H,IAAA,CAAA,SAAS,GAAT,SAAS;QAAoE,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAe,IAAA,CAAA,WAAW,GAAX,WAAW;QAN/H,IAAA,CAAA,QAAQ,GAAY,KAAK;QACzB,IAAA,CAAA,gBAAgB,GAAY,KAAK;QAEjC,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,KAAK,GAAG,EAAE;AAGR,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AAC3B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU;QACnC;AACA,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC/B;AACA,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;AACjC,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB;QAC/C;AACA,QAAA,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE;AACzB,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAC/B;IACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCE;IAEF,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;IAEA,IAAI,GAAA;AACF,QAAA,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA,CAAE,CAAC;AACrD;;;;;AAKG;AACH,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9E;aAAO;YACL,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QAClC;IACF;AA9EW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,gDAQ4C,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAR7E,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECd/B,ifAYA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAc,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,kBAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,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,EAAE,gBAAgB,4HAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE/G,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,OAAA,EAGnB,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,ifAAA,EAAA,MAAA,EAAA,CAAA,oEAAA,CAAA,EAAA;;0BAUzD,MAAM;2BAAC,eAAe;;;MEf7E,mBAAmB,CAAA;AAE/B,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;+GALY,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,2ECPhC,2BAAyB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOZ,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAL/B,SAAS;+BACI,iBAAiB,EAAA,QAAA,EAAA,2BAAA,EAAA;;;MEIlB,eAAe,CAAA;AAE3B,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;+GALY,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,sECP5B,2BAAyB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOZ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAL3B,SAAS;+BACI,YAAY,EAAA,QAAA,EAAA,2BAAA,EAAA;;;MEKb,oBAAoB,CAAA;AAEhC,IAAA,WAAA,GAAA,EAAgB;IAEhB,kBAAkB,GAAA;QACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IACpC;IAEA,QAAQ,GAAA;IACR;+GATY,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,SAAA,EACf,YAAY,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECT9B,2BAAyB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDQZ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBALhC,SAAS;+BACI,kBAAkB,EAAA,QAAA,EAAA,2BAAA,EAAA;;sBAK9B,eAAe;uBAAC,YAAY;;;MEJjB,gBAAgB,CAAA;AAC5B,IAAA,WAAA,CAAyC,SAAkC,EAAA;QAAlC,IAAA,CAAA,SAAS,GAAT,SAAS;IAA4B;AAE9E,IAAA,IAAI,YAAY,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,EAAE,YAAY,IAAI,EAAE,CAAC,IAAI,CAAC;IAChD;IAEA,OAAO,CAAC,GAAW,EAAE,QAAgB,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AACpB,YAAA,OAAO,QAAQ;QAChB;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;AAC9C,QAAA,OAAO,UAAU,IAAI,UAAU,KAAK,GAAG,GAAG,UAAU,GAAG,QAAQ;IAChE;+GAdY,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cADH,MAAM,EAAA,CAAA,CAAA;;4FACnB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAEpB;;;MCMD,mBAAmB,CAAA;AAE9B,IAAA,WAAA,CAA6B,IAAsB,EAAA;QAAtB,IAAA,CAAA,IAAI,GAAJ,IAAI;AADvB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,YAAY,EAAO;IACa;IAEvD,QAAQ,GAAA;IACR;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;IACzB;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,QAAQ,CAAC;IACrD;+GAbW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZhC,sVAWA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDc,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE5D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;+BACI,iBAAiB,EAAA,OAAA,EAGlB,CAAC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,CAAC,EAAA,QAAA,EAAA,sVAAA,EAAA;;sBAGvE;;;MEbU,gBAAgB,CAAA;IAMpB,QAAQ,GAAA;QACb,OAAO,IAAI,CAAC,QAAQ;IACtB;AACD;;MCNY,2BAA2B,CAAA;AADxC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,uBAAuB,GAAG,aAAa;QACvC,IAAA,CAAA,iBAAiB,GAAG,+BAA+B;QACnD,IAAA,CAAA,iBAAiB,GAAG,iCAAiC;QACrD,IAAA,CAAA,uBAAuB,GAAG,uCAAuC;QACjE,IAAA,CAAA,eAAe,GAAG,gCAAgC;QAClD,IAAA,CAAA,WAAW,GAAG,mBAAmB;QACjC,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,MAAM,GAAG,KAAK;QACd,IAAA,CAAA,cAAc,GAAG,EAAE;QACnB,IAAA,CAAA,gBAAgB,GAAG,EAAE;QACrB,IAAA,CAAA,cAAc,GAAG,EAAE;QACnB,IAAA,CAAA,iBAAiB,GAAG,EAAE;AACvB,IAAA;+GAbY,2BAA2B,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAA3B,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,2BAA2B,cADd,MAAM,EAAA,CAAA,CAAA;;4FACnB,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCSrB,qBAAqB,CAAA;AAiBhC,IAAA,WAAA,CAAoB,IAAgB,EAA+B,UAAe,EAAc,MAAoC,EAAA;QAAhH,IAAA,CAAA,IAAI,GAAJ,IAAI;QAA2C,IAAA,CAAA,UAAU,GAAV,UAAU;QAFtE,IAAA,CAAA,eAAe,GAAG,KAAK;QAG5B,IAAI,CAAC,eAAe,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC;AACzD,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,uBAAuB,EAAE;AAAE,YAAA,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB;QAAE;aAAO;AAAE,YAAA,IAAI,CAAC,uBAAuB,GAAG,aAAa;QAAE;AACtK,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAAE,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB;QAAE;aAAO;AAAE,YAAA,IAAI,CAAC,iBAAiB,GAAG,CAAA,6BAAA,CAA+B;QAAE;AAChK,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE;AAAE,YAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB;QAAE;aAAO;AAAE,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,gBAAgB,CAAC;QAAE;AACjM,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,uBAAuB,EAAE;AAAE,YAAA,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB;QAAE;aAAO;AAAE,YAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,sBAAsB,CAAC;QAAE;AAC/N,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,eAAe,EAAE;AAAE,YAAA,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,eAAe;QAAE;aAAO;AAAE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,eAAe,CAAC;QAAE;AAC1L,QAAA,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,mBAAmB,CAAC;AAC/F,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC;AACrF,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,kBAAkB,CAAC;AAC7F,QAAA,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,sBAAsB,CAAC;AACrG,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,cAAc,EAAE,wBAAwB,CAAC;AACzG,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE;AAAE,YAAA,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW;QAAE;AAC3E,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;AAAE,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;QAAE;AACxE,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,kBAAkB,GAAG,IAAI,eAAe,CAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACnH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE;QAC3D;IACF;AAEA,IAAA,IAAW,gBAAgB,GAAA;AACzB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAAE,YAAA,OAAO,IAAI;AAAE,QAAA,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK;IACtC;AAEA,IAAA,IAAW,WAAW,GAAA;AACpB,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;AAAE,YAAA,OAAO,IAAI;AAAE,QAAA,CAAC;AAC9C,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,KAAK,IAAI;IAC/C;AAEA,IAAA,KAAK,CAAC,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAA;AACtD,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;AAC/B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AAAE,YAAA,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC;QAAE;QACvD,QAAQ,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC;AAC7C,QAAA,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;AAClC,QAAA,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,IAAI,CAAC,iBAAiB,EAAE,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;AACjF,aAAA,IAAI,CAAC,GAAG,CAAC,IAAI,IAAG;;AAEf,YAAA,MAAM,IAAI,GAAQ,IAAI,CAAC,IAAI;AAC3B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AAAE,gBAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAAE;AACtG,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,YAAA,OAAO,IAAI;QACb,CAAC,CAAC,CAAC;IACP;AAEA,IAAA,cAAc,CAAC,MAAc,EAAE,QAAgB,EAAE,WAAmB,EAAE,WAAmB,EAAA;AACvF,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE;AACV,gBAAA,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,EAAE;AAC1C,gBAAA,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,QAAQ;gBACxC,WAAW;gBACX,WAAW;gBACX,WAAW,EAAE,IAAI,CAAC;AACnB;AACF,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,IAAI,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,CAAC;IAC/D;IAEA,MAAM,GAAA;;AAEJ,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AAAE,YAAA,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,CAAC;QAAE;AACnF,QAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;IACpC;IAEA,oBAAoB,CAAC,MAAc,EAAE,SAAiB,EAAE,QAAgB,EAAE,KAAa,EAAE,GAAW,EAAA;AAClG,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE;AACV,gBAAA,MAAM,EAAE,EAAE;gBACV,SAAS;gBACT,QAAQ;gBACR,KAAK;gBACL,GAAG;gBACH,WAAW,EAAE,IAAI,CAAC;AACnB;AACF,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC;IACrE;AAEA,IAAA,aAAa,CAAC,KAAa,EAAE,IAAY,EAAE,QAAgB,EAAA;AACzD,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE;gBACV,KAAK;gBACL,IAAI;gBACJ,QAAQ;gBACR,WAAW,EAAE,IAAI,CAAC;AACnB;AACF,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,IAAI,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,CAAC;IAC9D;IAEA,iBAAiB,GAAA;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAW,IAAI,CAAC,oBAAoB,CAAC;IAC3D;IAEA,YAAY,CAAC,WAAmB,EAAE,KAAa,EAAE,OAAe,EAAE,QAAgB,EAAE,IAAY,EAAE,KAAa,EAAA;AAC7G,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE;gBACV,WAAW;gBACX,KAAK;gBACL,OAAO;gBACP,QAAQ;gBACR,IAAI;gBACJ;AACD;AACF,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,IAAI,CAAC,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC;IAC7D;IAEA,gBAAgB,CAAC,WAAmB,EAAE,IAAY,EAAE,OAAe,EAAE,QAAgB,EAAE,IAAY,EAAE,KAAa,EAAA;AAChH,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE;gBACV,WAAW;gBACX,IAAI;gBACJ,OAAO;gBACP,QAAQ;gBACR,IAAI;gBACJ;AACD;AACF,SAAA,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CAClE,GAAG,CAAC,IAAI,IAAG;;AAET,YAAA,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;AAClC,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACjB,MAAM,IAAI,GAAQ,IAAI;AACtB,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AAAE,gBAAA,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAAE;AACtG,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;AAClC,YAAA,OAAO,IAAI;QACb,CAAC,CAAC,CACH;IACH;IACA,oBAAoB,GAAA;AAClB,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE;gBACV,WAAW,EAAE,IAAI,CAAC;AACnB;AACF,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAqB,IAAI,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,CACrF,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAClC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,gBAAgB,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAC9E,GAAG,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CACnC;IACH;IAEA,sBAAsB,CAAC,QAAgB,EAAE,OAAe,EAAA;AACtD,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;AAC5B,YAAA,UAAU,EAAE;gBACV,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,QAAQ;gBACR;AACD;AACF,SAAA,CAAC;AACF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,CAAC;IAClE;AA3KW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,4CAiBc,WAAW,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAjB9C,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,cADR,MAAM,EAAA,CAAA,CAAA;;4FACnB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBADjC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;0BAkBO,MAAM;2BAAC,WAAW;;0BAA4B;;;ACOtF;MAQY,uBAAuB,CAAA;aACV,IAAA,CAAA,aAAa,GAAG,WAAH,CAAe;aAC5B,IAAA,CAAA,YAAY,GAAG,MAAH,CAAU;aACtB,IAAA,CAAA,cAAc,GAAG,QAAH,CAAY;AAC1B,IAAA,SAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC;AAiDzG,IAAA,WAAA,CAAoC,YAA0B,EAAU,iBAAoC,EAAU,MAAiB,EAAU,MAAc,EAAU,QAAkB,EAAU,qBAA4C,EAAU,WAA+B,EAAU,KAAqB,EAAU,IAAsB,EAAA;QAAjR,IAAA,CAAA,iBAAiB,GAAjB,iBAAiB;QAA6B,IAAA,CAAA,MAAM,GAAN,MAAM;QAAqB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,QAAQ,GAAR,QAAQ;QAAoB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAAiC,IAAA,CAAA,WAAW,GAAX,WAAW;QAA8B,IAAA,CAAA,KAAK,GAAL,KAAK;QAA0B,IAAA,CAAA,IAAI,GAAJ,IAAI;QAnC9T,IAAA,CAAA,aAAa,GAAmE,KAAK;QACrF,IAAA,CAAA,OAAO,GAAkD,IAAI;QAC7D,IAAA,CAAA,SAAS,GAAkD,IAAI;QAC/D,IAAA,CAAA,MAAM,GAAuC,IAAI;QAQjD,IAAA,CAAA,eAAe,GAAW,EAAE;QAC5B,IAAA,CAAA,OAAO,GAAG,EAAE;QACZ,IAAA,CAAA,YAAY,GAAW,EAAE;QASlC,IAAA,CAAA,gBAAgB,GAAG,EAAE;QAErB,IAAA,CAAA,WAAW,GAAG,IAAI;QAClB,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,WAAW,GAAQ,EAAE;QAOb,IAAA,CAAA,eAAe,GAAG,KAAK;QA+I/B,IAAA,CAAA,aAAa,GAA4C,IAAI;AA5I3D,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;QAChC,MAAM,SAAS,GAAG,IAAI;QACtB,IAAI,CAAC,WAAW,GAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAwB,CAAC,QAAQ;QAChF,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAClC,QAAQ,EAAE,CAAC,IAAI;AAChB,SAAA,CAAC;;QAEF,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI;QACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM;AAC7C,QAAA,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,IAAG;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,WAAW;AAC9B,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;YACvD;AACF,QAAA,CAAC,CAAC;AACF,QAAA,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,IAAG;AACxC,YAAA,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,WAAW,EAAE;AACrC,YAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,gBAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YACnC;AACF,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,WAAW,CAAC,OAAsB,EAAA;IAElC;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QACpE;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QAChE;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QACpE;AACA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,GAAA,EAAM,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QAC9D;IACF;AAEA,IAAA,QAAQ,CAAC,IAAU,EAAA;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;IAEzG;IAIA,aAAa,CAAC,IAAS,EAAE,MAAuB,EAAA;QAC9C,IAAI,GAAG,GAAG,EAAE;QACZ,IAAI,KAAK,GAAG,EAAE;AACd,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AAC9B,YAAA,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;AACnB,YAAA,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB;aAAO;YACL,OAAO,CAAC,GAAG,CAAC,CAAA,sBAAA,EAAyB,IAAI,CAAA,GAAA,EAAM,MAAM,CAAA,CAAE,CAAC;YACxD,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;YACrC,GAAG,GAAG,IAAI;AACV,YAAA,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;AAAE,gBAAA,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;YAAE;YAClD,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;QACjC;QACA,IAAI,GAAG,GAAG,IAAI;AACd,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnB,YAAA,IAAI,CAAC,GAAG;AAAE,gBAAA,OAAO,IAAI;QACvB;QACA,QAAQ,GAAG;AACT,YAAA,KAAK,aAAa;AAChB,gBAAA,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE;;AAEvC,QAAA,OAAO,GAAG;IACZ;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;QAC9D,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;QAClF,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU;QAC9D,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB;QAC9D,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS;AAAE,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;;QAEjF,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO;QAErD,IAAI,CAAC,WAAW,EAAE;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,EAAE;AAAE,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAAE;;AAEhG,QAAA,OAAO,CAAC,GAAG,CAAC,CAAA,kBAAA,EAAqB,IAAI,CAAC,gBAAgB,CAAA,aAAA,EAAgB,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;QACzF,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAG;AAClD,YAAA,OAAO,CAAC,GAAG,CAAC,CAAA,eAAA,EAAkB,MAAM,CAAA,aAAA,EAAgB,IAAI,CAAC,gBAAgB,gBAAgB,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;AAC5G,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE;YACzB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;AACvD,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;IACvD;IACA,kBAAkB,GAAA;IAElB;IAEA,QAAQ,GAAA;IACR;IAEA,WAAW,GAAA;IACX;IAEA,CAAC,CAAC,GAAW,EAAE,QAAgB,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;IACzC;AAEA,IAAA,IAAI,CAAC,IAAW,EAAA;AACd,QAAA,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,aAAa,EAAE;AAChE,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACnB;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;IACzF;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,EAAE;QACjD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE;YACpC,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,uBAAuB,CAAC,EAAE,CAAC;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,YAAA,WAAW,EAAE;AACX,gBAAA,GAAG,WAAW;AACd,gBAAA,CAAC,uBAAuB,CAAC,aAAa,GAAG,uBAAuB,CAAC;AAClE;AACF,SAAA,CAAC;IACJ;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,MAAM,EAAE;IACf;IAGA,kBAAkB,GAAA;QAChB,IAAI,CAAC,UAAU,CAAC,eAAe,GAAG,UAAS,MAAM,EAAE,YAAY,EAAA;AAC7D,YAAA,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;YACzB,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;YACrC,IAAI,OAAO,GAAG,IAAI;YAClB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;AAChC,YAAA,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;AACpB,gBAAA,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;AACvB,gBAAA,IAAI,CAAC,KAAK;oBAAE;gBACZ,MAAM,EAAE,GAAG,8CAA8C;gBACzD,MAAM,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;AAC5B,gBAAA,IAAI,CAAC;gBAEL,IAAI,MAAM,GAAG,EAAE;gBACf,IAAI,OAAO,EAAE;AACX,oBAAA,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAA,CAAE,CAAC;AAClC,oBAAA,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC;AAChB,oBAAA,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAE,EAAE;gBACzB;gBACA,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,GAAG,CAAA,GAAA,EAAM,MAAM,CAAA,CAAE,CAAC;AACjC,gBAAA,IAAI,GAAG,IAAI,WAAW,EAAE;AACtB,oBAAA,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;AAC5D,oBAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM;AAC/B,yBAAA,MAAM,CAAC,CAAC,WAAmB,EAAE,GAAW,KAAI;wBAC3C,OAAO,WAAW,GAAI,MAAiC,CAAC,GAAG,CAAC,GAAG,GAAG;oBACpE,CAAC,EAAE,EAAE,CAAC;AACR,oBAAA,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9D;qBAAO;AACL,oBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,MAAM,CAAC,GAAa,CAAC,CAAA,CAAA,CAAG,CAAC;oBAC/C,IAAI,UAAU,GAAG,MAAM,CAAC,GAAa,CAAC,IAAI,EAAE;AAC5C,oBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,wBAAA,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE;AACrC,wBAAA,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE;oBAC7B;AACA,oBAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;AACxB,wBAAA,OAAO,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC;oBACtC;yBAAO;AACL,wBAAA,OAAO,IAAI,UAAU,IAAI,KAAK,CAAC;oBACjC;AAGA,oBAAA,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,GAAG,IAAI,MAAM,CAAC,GAAa,CAAC,IAAI,KAAK,CAAA,GAAA,EAAM,OAAO,CAAA,CAAE,CAAC;gBACtE;AACA,gBAAA,IAAI,CAAC,OAAO;AAAE,oBAAA,OAAO,KAAK;YAC5B;AACA,YAAA,OAAO,OAAO;AAChB,QAAA,CAAC;IACH;AAGA,IAAA,MAAM,CAAC,IAAW,EAAA;QAChB,OAAO,CAAC,GAAG,CAAC,CAAA,OAAA,EAAU,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAA,CAAE,CAAC;AAC3D,QAAA,IAAI,IAAI;AAAE,YAAA,IAAI,CAAC,IAAI,GAAG,IAAI;QAC1B,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;AAE3B,QAAA,IAAI,CAAC,WAAW,GAAG,EAAE;AAErB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACpC,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AAC1C,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACjD,YAAA,CAAC,CAAC;QACJ;QACA,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE;QAC9D,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;YAC3C,IAAI,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC1D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,IAAI,CAAC,eAAe,EAAE;AACxB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAC/C,gBAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACrD,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AAC3C,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;AAChF,QAAA,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;AAEpE,QAAA,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;;AAEnC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AACzE,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;AAC1B,YAAA,IAAI;gBACF,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAO,CAAC,CAAC;gBACjD,IAAI,CAAC,kBAAkB,EAAE;YAC3B;YAAE,OAAO,EAAE,EAAE;AACX,gBAAA,KAAK,CAAC,CAAA,EAAG,EAAE,CAAA,CAAE,CAAC;YAChB;AACA,YAAA,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC;AACjC,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,WAAW,EAAE;QACpB,CAAC,EACC,KAAK,IAAG;YACN,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AACnD,QAAA,CAAC,CAAC;IACN;AAEA,IAAA,KAAK,CAAC,GAAG,EAAA;AACP,QAAA,KAAK,MAAM,QAAQ,IAAI,GAAG,EAAE;AAC1B,YAAA,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,SAAS,EAAE;AACzD,gBAAA,OAAO,GAAG,CAAC,QAAQ,CAAC;YACtB;QACF;IACF;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE;YACvB,UAAU,EAAE,IAAI,CAAC,KAAK;AACtB,YAAA,WAAW,EAAE;gBACX,GAAG,IAAI,CAAC,sBAAsB,EAAE;AAChC,gBAAA,CAAC,uBAAuB,CAAC,aAAa,GAAG,uBAAuB,CAAC;AAClE;AACF,SAAA,CAAC;IAEJ;AAEQ,IAAA,wBAAwB,CAAC,KAAU,EAAA;AACzC,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC;QAC3F;AAEA,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,KAAK,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,IAAI;QACrE;AAEA,QAAA,OAAO,KAAK;IACd;IAEA,QAAQ,GAAA;IAGR;AAEA,IAAA,gBAAgB,CAAC,CAAS,EAAA;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,CAAO,CAAC,CAAC;QACjD,IAAI,CAAC,kBAAkB,EAAE;AACzB,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;QAEtC,IAAI,CAAC,WAAW,EAAE;IAEpB;IAEA,WAAW,GAAA;AACT,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;AAC5B,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,gBAAA,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;gBAC1B;YACF;YACA,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YACrF,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;YAChC,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,IAAI,CAAC,aAAa;YACxD,OAAO,CAAC,GAAG,CAAC,CAAA,8BAAA,EAAiC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,CAAE,CAAC;AAChE,YAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,EAAE;QACxC;IACF;IAEA,iBAAiB,CAAC,GAAG,EAAE,MAAO,EAAA;AAC5B,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAAE,gBAAA,OAAO,KAAK;YAAE;AAC1C,YAAA,IAAI,OAAO,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE;gBAAE,OAAO,IAAI,CAAC,aAAa;YAAE;AAC1E,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC;QAC1D;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACf,YAAA,OAAO,IAAI;QACb;IACF;IACA,UAAU,GAAA;AACR,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;AAAE,gBAAA,OAAO,KAAK;YAAE;AAClC,YAAA,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;gBAAE,OAAO,IAAI,CAAC,MAAM;YAAE;YAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;QACtC;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACf,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,WAAW,CAAC,GAAG,EAAA;AACb,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AAAE,gBAAA,OAAO,KAAK;YAAE;AACnC,YAAA,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE;gBAAE,OAAO,IAAI,CAAC,OAAO;YAAE;YAC9D,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;QAC5C;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACf,YAAA,OAAO,IAAI;QACb;IACF;AAEA,IAAA,aAAa,CAAC,GAAG,EAAA;AACf,QAAA,IAAI;AACF,YAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;AAAE,gBAAA,OAAO,KAAK;YAAE;AACrC,YAAA,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;gBAAE,OAAO,IAAI,CAAC,SAAS;YAAE;YAClE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC;QAC9C;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACf,YAAA,OAAO,KAAK;QACd;IACF;IAEA,kBAAkB,CAAC,GAAG,EAAE,MAAO,EAAA;AAC7B,QAAA,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAAE,YAAA,OAAO,IAAI;QAAE;QACzC,OAAO,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC;IACzC;AAGA,IAAA,QAAQ,CAAC,KAAK,EAAA;QACZ,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,YAAY,MAAM;IAC7D;AACA,IAAA,aAAa,CAAC,GAAkB,EAAA;QAC9B,IAAI,GAAG,GAAG,EAAE;QACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;AAClC,YAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACrB,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAoB,CAAC,CAAC;QAC1C;aAAO;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;AACtB,YAAA,IAAI,CAAC,UAAuB,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE;AACA,QAAA,OAAO,GAAG;IACZ;AAEA,IAAA,QAAQ,CAAC,GAAQ,EAAA;AACf,QAAA,IAAI,OAAO,GAAG,IAAI,OAAO,EAAO;AAChC,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,SAAS,CACrD,IAAI,IAAG;AACL,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;AAChC,YAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;AACd,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,CAAC,EACD,KAAK,IAAG;AACN,YAAA,KAAK,CAAC,CAAA,qBAAA,EAAwB,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAA,EAAA,EAAK,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;AACnG,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACtB,QAAA,CAAC,CACF;AACD,QAAA,OAAO,OAAO;IAChB;AACA,IAAA,SAAS,CAAC,SAAiB,EAAE,GAAQ,EAAE,IAAS,EAAA;AAC9C,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,UAAU,CAAA,EAAG,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC5H,GAAG,CAAC,CAAC,KAAqB,KAAI;AAC5B,YAAA,QAAQ,KAAK,CAAC,IAAI;gBAChB,KAAK,aAAa,CAAC,cAAc;oBAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;oBACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,KAAK,GAAG;oBACvC;gBACF,KAAK,aAAa,CAAC,QAAQ;AACzB,oBAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;AACnB,oBAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,oBAAA,IAAI,CAAC,UAAU,GAAG,KAAK;oBACvB;;AAEN,QAAA,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,KAAqB,KAAI;YAC/B,OAAO,CAAC,GAAG,CAAC,CAAA,OAAA,EAAU,KAAK,CAAC,IAAI,CAAA,CAAE,CAAC;AACnC,YAAA,OAAO,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ;AAC9C,QAAA,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,KAAwB,KAAI;YAC/B,OAAO,CAAC,GAAG,CAAC,CAAA,IAAA,EAAO,KAAK,CAAC,IAAI,CAAA,CAAE,CAAC;AAChC,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;AAChC,YAAA,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI;AAClC,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG;AAC1B,YAAA,OAAO,CAAC,GAAG,CAAC,CAAA,gBAAA,CAAkB,CAAC;YAC/B,OAAO,KAAK,CAAC,IAAI;AACnB,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAwB,KAAI;AACtC,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;AACvB,YAAA,IAAI,CAAC,MAAM,GAAG,OAAO;YACrB,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA,eAAA,CAAiB,CAAC;;YAE/C,OAAO,EAAE,CAAC,CAAA,EAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAA,eAAA,CAAiB,CAAC;QAC/C,CAAC,CAAC,CACH;IACH;IAEA,MAAM,GAAA;AACJ,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAC1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAA,YAAY,CAAC,UAAU,GAAG,2BAA2B;AACrD,QAAA,YAAY,CAAC,KAAK,GAAG,OAAO;AAC5B,QAAA,YAAY,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAA,YAAY,CAAC,SAAS,GAAG,OAAO;AAChC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CACpC,IAAI,IAAG;gBACL,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9C,YAAA,CAAC,CACF;QACH;QACA,IAAI,IAAI,GAAG,EAAE;AACb,QAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AACrD,YAAA,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;AAC5C,YAAA,YAAY,CAAC,IAAI,GAAG,IAAI;AAC1B,QAAA,CAAC,CAAC;AAGF,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,YAAY,CAAC;QAC1D,GAAG,CAAC,iBAAiB,CAAC,QAAQ,IAC5B,IAAI,IAAG;AACL,YAAA,IAAI,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE;AAC1B,YAAA,MAAM,UAAU,GAAI,IAAI,CAAC,MAAc,CAAC,UAAU;YAClD,OAAO,CAAC,GAAG,CAAC,CAAA,WAAA,EAAc,UAAU,EAAE,MAAM,CAAA,CAAE,CAAC;AAC/C,YAAA,IAAI,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE;;AAE3B,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;AAC/B,gBAAA,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,CAAA,CAAE,CAAC;AACrC,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;AACjC,gBAAA,OAAO,QAAQ,CAAC,SAAS,CAAC;gBAC1B,MAAM,MAAM,GAAwC,EAAE;AACtD,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,oBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACrD,wBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CACtC,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5D,CAAC;wBACJ,OAAO,CAAC,GAAG,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;AAC7C,wBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG;oBAC7B;AACF,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE5C;AAAO,iBAAA,IAAI,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;;gBAEjC,MAAM,MAAM,GAAG,EAAE;AACjB,gBAAA,UAAU,CAAC,OAAO,CAAC,EAAE,IAAG;oBACtB,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AACzB,oBAAA,OAAO,QAAQ,CAAC,EAAE,CAAC;AACnB,oBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CACjC,QAAQ,CAAC,OAAO,IAAG;wBACjB,IAAI,MAAM,GAAsB,EAAE;AAClC,wBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAkB,KAAI;AACrE,4BAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gCAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC3D;AACF,wBAAA,CAAC,CAAC;AACF,wBAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC;AACP,gBAAA,CAAC,CAAC;YACJ;iBAAO;;AAEL,gBAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC5B;AACF,QAAA,CAAC,CACF;IACH;AAEA,IAAA,SAAS,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,sBAAsB,EAAE,+CAA+C,CAAC,CAAC,EAAE;YAC5F,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAC5E,CAAC,IAAG;AACF,gBAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AAC3C,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;AAChC,gBAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAChB,gBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG;YAC5B,CAAC,EACD,KAAK,IAAG;AACN,gBAAA,KAAK,CAAC,CAAA,EAAG,IAAI,CAAC,CAAC,CAAC,+BAA+B,EAAE,yBAAyB,CAAC,CAAA,CAAA,EAAI,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,UAAU,CAAA,EAAA,EAAK,KAAK,CAAC,OAAO,CAAA,EAAA,EAAK,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;AACtJ,YAAA,CAAC,CACF;QACH;IACF;IAEA,UAAU,CAAC,OAAY,EAAE,OAAY,EAAA;QACnC,IAAI,IAAI,GAAa,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;AAAE,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;AACpE,QAAA,IAAI,OAAO,GAAG,IAAI,OAAO,EAAO;AAChC,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,SAAS,CACtD,IAAI,IAAG;AACL,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;AAC/C,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;AAChC,YAAA,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI;AACb,YAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG;AAC1B,YAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,CAAC,EACD,KAAK,IAAG;AACN,YAAA,KAAK,CAAC,CAAA,wBAAA,EAA2B,KAAK,CAAC,MAAM,CAAA,CAAA,EAAI,KAAK,CAAC,UAAU,KAAK,KAAK,CAAC,OAAO,CAAA,EAAA,EAAK,KAAK,CAAC,KAAK,CAAA,CAAE,CAAC;AACtG,YAAA,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;AACtB,QAAA,CAAC,CACF;AACD,QAAA,OAAO,OAAO;IAChB;AAGA,IAAA,OAAO,CAAC,GAAS,EAAA;AACf,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAC1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAA,YAAY,CAAC,UAAU,GAAG,2BAA2B;AACrD,QAAA,YAAY,CAAC,KAAK,GAAG,OAAO;AAC5B,QAAA,YAAY,CAAC,QAAQ,GAAG,OAAO;AAC/B,QAAA,YAAY,CAAC,SAAS,GAAG,OAAO;AAEhC,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,CACpC,IAAI,IAAG;gBACL,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAC9C,YAAA,CAAC,CACF;QACH;AACA,QAAA,MAAM,OAAO,GAAG,EAAE,GAAG,GAAG,EAAE;AAC1B,QAAA,YAAY,CAAC,IAAI,GAAG,GAAG;AACvB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC;QACvD,GAAG,CAAC,iBAAiB,CAAC,QAAQ,IAC5B,IAAI,IAAG;AACL,YAAA,IAAI,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE;AAC1B,YAAA,MAAM,UAAU,GAAI,IAAI,CAAC,MAAc,CAAC,UAAU;AAClD,YAAA,IAAI,UAAU,EAAE,MAAM,IAAI,CAAC,EAAE;;AAE3B,gBAAA,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC;AAC/B,gBAAA,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC;AACjC,gBAAA,OAAO,QAAQ,CAAC,SAAS,CAAC;gBAC1B,MAAM,MAAM,GAAwC,EAAE;AACtD,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,oBAAA,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AACrD,wBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CACjD,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,CAC5D,CAAC;AACJ,wBAAA,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG;oBAC7B;AACF,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAE5C;AAAO,iBAAA,IAAI,UAAU,EAAE,MAAM,GAAG,CAAC,EAAE;;gBAEjC,MAAM,MAAM,GAAG,EAAE;AACjB,gBAAA,UAAU,CAAC,OAAO,CAAC,EAAE,IAAG;oBACtB,MAAM,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC;AACzB,oBAAA,OAAO,QAAQ,CAAC,EAAE,CAAC;AACnB,oBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC5C,QAAQ,CAAC,OAAO,IAAG;wBACjB,IAAI,MAAM,GAAsB,EAAE;AAClC,wBAAA,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAkB,KAAI;AACrE,4BAAA,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AACpB,gCAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC3D;AACF,wBAAA,CAAC,CAAC;AACF,wBAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1B,CAAC,CAAC,CAAC;AACP,gBAAA,CAAC,CAAC;YACJ;iBAAO;;gBAEL,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC;YACvC;AACF,QAAA,CAAC,CACF;IACH;AAEQ,IAAA,cAAc,CAAC,KAAU,EAAA;QAC/B,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,IAAI,CAAA,EAAG,KAAK,CAAA,CAAE;AACtG,QAAA,OAAO,CAAA,EAAG,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC,CAAA,GAAA,EAAM,OAAO,CAAA,CAAE;IAC7E;AAEQ,IAAA,eAAe,CAAC,WAAgB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI;QAC3B,IAAI,CAAC,WAAW,GAAG,EAAE,IAAI,WAAW,IAAI,EAAE,CAAC,EAAE;AAC7C,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC;QAE9C,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC5C,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACtC;QACF;QAEA,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;YAC9C,IAAI,CAAC,UAAU,EAAE;AACjB,YAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,MAAM,EAAE;YACb;QACF;QAEA,IAAI,CAAC,QAAQ,EAAE;AACf,QAAA,IAAI,CAAC,iBAAiB,CAAC,aAAa,EAAE;IACxC;AAEQ,IAAA,iBAAiB,CAAC,WAAgB,EAAA;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;AAC1B,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,WAAW,GAAG,uBAAuB,CAAC,aAAa,CAAC,KAAK,uBAAuB,CAAC,YAAY;IACtG;AAEQ,IAAA,mBAAmB,CAAC,WAAgB,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,YAAY,EAAE;AAC/C,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,EAAE;AAC/E,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,MAAM,CAAC,EAAE;AACtF,YAAA,OAAO,IAAI;QACb;QAEA,OAAO,WAAW,GAAG,uBAAuB,CAAC,aAAa,CAAC,KAAK,uBAAuB,CAAC;AACnF,eAAA,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC;IAC7C;AAEQ,IAAA,oBAAoB,CAAC,WAAgB,EAAA;QAC3C,IAAI,CAAC,WAAW,EAAE;AAChB,YAAA,OAAO,KAAK;QACd;QAEA,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,IACtC,CAAC,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC;AACrD,YAAA,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI;AACzB,YAAA,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS;AAC9B,YAAA,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CACxB;IACH;AAEQ,IAAA,uBAAuB,CAAC,WAAgB,EAAA;QAC9C,MAAM,UAAU,GAAG,EAAE;AACrB,QAAA,MAAM,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,IAAG;AAC3C,YAAA,IAAI,uBAAuB,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,UAAU,EAAE;gBAC9E;YACF;YAEA,UAAU,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC;AACpC,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI;AACpC,QAAA,IAAI,UAAU,EAAE,QAAQ,CAAC,YAAY,CAAC,EAAE;YACtC,UAAU,CAAC,UAAU,CAAC;AACpB,gBAAA,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,UAAU,GAAG;AAC3D,aAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1B;QAEA,IAAI,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,EAAE;AACpC,YAAA,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC;AACpB,gBAAA,QAAQ,EAAE,WAAW,EAAE,QAAQ,IAAI;AACpC,aAAA,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC1B;IACF;IAEQ,sBAAsB,GAAA;QAC5B,MAAM,eAAe,GAAQ,EAAE;QAC/B,MAAM,UAAU,GAAQ,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,UAAU;AAC5D,QAAA,MAAM,UAAU,GAAQ,IAAI,CAAC,KAAK,CAAC,KAAK;QACxC,IAAI,UAAU,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;AACrC,gBAAA,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACzE,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,IAAI,UAAU,CAAC,QAAQ,EAAE;AACvB,YAAA,eAAe,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ;QAChD;AACA,QAAA,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;AAC3B,QAAA,OAAO,eAAe;IACxB;IAEQ,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;IAC5B;IAEQ,UAAU,GAAA;AAChB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;IAC3B;AAvwBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uBAAuB,kBAqDd,cAAc,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,QAAA,EAAA,EAAA,EAAA,KAAA,EAAAI,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArDvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,aAAA,EAAA,eAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,eAAA,EAAA,OAAA,EAAA,SAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,UAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,SAAA,EAAA,YAAA,EAAA,cAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,MAAA,EAAA,QAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAMpB,eAAe,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACf,mBAAmB,mFACnB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACnB,oBAAoB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACvB,QAAQ,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACR,YAAY,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACZ,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvDpB,2sHAmGA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED1Dc,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,iFAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,2CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,gGAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,QAAA,EAAA,aAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,MAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,oBAAA,EAAA,YAAA,EAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,oHAAE,YAAY,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,MAAM,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,EAAA,QAAA,EAAA,UAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,8KAAE,eAAe,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE7V,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;+BACI,qBAAqB,EAAA,OAAA,EAGtB,CAAC,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,CAAC,EAAA,QAAA,EAAA,2sHAAA,EAAA,MAAA,EAAA,CAAA,kDAAA,CAAA,EAAA;;0BAuD5V,MAAM;2BAAC,cAAc;;sBA/CjC,YAAY;uBAAC,eAAe;;sBAC5B,YAAY;uBAAC,mBAAmB;;sBAChC,YAAY;uBAAC,mBAAmB;;sBAChC,YAAY;uBAAC,oBAAoB;;sBACjC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBACrC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBACzC,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAIpC;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEpEU,eAAe,CAAA;AAK1B,IAAA,WAAA,CAAmB,SAAwC,EAAkC,IAAiB,EAAU,WAA+B,EAAA;QAApI,IAAA,CAAA,SAAS,GAAT,SAAS;QAAiE,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAuB,IAAA,CAAA,WAAW,GAAX,WAAW;;AAEjI,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK;AACvB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;QAC3B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;AACxE,SAAA,CAAC;IACJ;IACA,QAAQ,GAAA;IAER;IAEA,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC;IAC7B;IAEA,IAAI,GAAA;;AAEF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC9C;AAzBW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,gDAK2C,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AALzE,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,wECd5B,khBAeA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHc,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,gBAAgB,wGAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,4LAAE,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,oUAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAErJ,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;+BACI,cAAc,EAAA,OAAA,EAGf,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,khBAAA,EAAA;;0BAOnG,MAAM;2BAAC,eAAe;;AAwBtF;MACa,WAAW,CAAA;AACtB,IAAA,WAAA,CAAmB,KAAa,EAAS,OAAe,EAAS,YAAoB,EAAS,QAAiB,EAAA;QAA5F,IAAA,CAAA,KAAK,GAAL,KAAK;QAAiB,IAAA,CAAA,OAAO,GAAP,OAAO;QAAiB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAAiB,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACtG;AACD;;SE5Ce,cAAc,CAC5BM,OAAa,EACb,KAAK,GAAG,CAAC,EAAA;AAET,IAAA,OAAO,CAAC,KAAK,KACX,KAAK,CAAC,IAAI,CACR,SAAS,CAAC,CAAC,MAAM,KACf,MAAM,CAAC,IAAI,CACT,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;AACtD,QAAA,KAAK,EAAE,CAAC;AACR,QAAA,KAAK,EAAE,SAAgB;AACxB,KAAA,CAAC,EACF,GAAG,CAAC,CAAC,OAAO,KAAI;AACd,QAAA,IAAI,OAAO,CAAC,KAAK,GAAG,KAAK,EAAE;YACzB,MAAM,OAAO,CAAC,KAAK;QACrB;IACF,CAAC,CAAC,EACFC,KAAa,CAACD,OAAK,CAAC,CACrB,CACF,CACF;AACL;;MCba,UAAU,CAAA;IAErB,WAAA,CAAoB,IAAgB,EAAU,YAA0B,EAAA;QAApD,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,YAAY,GAAZ,YAAY;IAAkB;AAE5E,IAAA,SAAS,CAAC,GAAQ,EAAE,QAAc,EAAE,QAAc,EAAA;QAChD,IAAI,CAAC,QAAQ,EAAE;YAAE,QAAQ,GAAG,IAAI;QAAE;QAClC,IAAI,CAAC,QAAQ,EAAE;YAAE,QAAQ,GAAG,CAAC;QAAE;QAC/B,OAAO,IAAI,CAAC;;aAET,GAAG,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,EAAE;;AAEjC,aAAA,IAAI,CACH,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1E,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CACnC;IACL;+GAfW,UAAU,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAN,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA;;4FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCeY,qBAAqB,CAAA;AAGhC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;IACvB;IACA,IAAI,QAAQ,CAAC,KAAc,EAAA;AACzB,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;AAC9B,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACxB;AAUA,IAAA,WAAA,CAAoC,YAA0B,EAAS,UAAsB,EAAS,MAAc,EAAmB,IAAsB,EAAA;QAAtF,IAAA,CAAA,UAAU,GAAV,UAAU;QAAqB,IAAA,CAAA,MAAM,GAAN,MAAM;QAA2B,IAAA,CAAA,IAAI,GAAJ,IAAI;QAjBnI,IAAA,CAAA,SAAS,GAAY,KAAK;AASC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,QAAQ;QAyD/D,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,KAAI;YACtD,OAAO,CAAC,KAAK,CAAC;AAChB,QAAA,CAAC,CAAC;AAlDA,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE;AAC5B,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC;QAChB;IACF;IACA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;QACtC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,IAAG;AAClD,YAAA,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAA,CAAE,CAAC;AAC/C,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE;AAC1C,YAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACxC,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;IAER;AAEA,IAAA,cAAc,CAAC,IAAa,EAAA;QAC1B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACzC,YAAA,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ;QAChC;IACF;AAEA,IAAA,QAAQ,CAAC,IAAa,EAAA;AACpB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAe;QACrC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AACzC,YAAA,MAAM,QAAQ,GAA4B,IAAI,CAAC,IAAI,CAAC,KAAK;AACzD,YAAA,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;AAC3B,YAAA,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,KAAK;QAC1D;IACF;AAEA,IAAA,UAAU,CAAC,IAAa,EAAA;;AAEtB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAe;QACrC,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,EAAE;AACzC,YAAA,MAAM,QAAQ,GAA4B,IAAI,CAAC,IAAI,CAAC,KAAK;AACzD,YAAA,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;QAC7B;AACA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,WAAW,CAAC,IAAa,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;IAC9D;IAMA,kBAAkB,GAAA;;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACvB,OAAO,IAAI,CAAC,YAAY;QAC1B;AACA,QAAA,OAAQ,IAAI,CAAC,IAAI,CAAC,QAAgB,EAAE;IACtC;IAEA,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACrB,OAAO,IAAI,CAAC,YAAY;QAC1B;AACA,QAAA,OAAQ,IAAI,CAAC,IAAI,CAAC,MAAc,EAAE;IACpC;AArFW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAmBZ,cAAc,EAAA,EAAA,EAAA,KAAA,EAAAQ,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAnBvB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,oBAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzBlC,sqCA+BA,EAAA,MAAA,EAAA,CAAA,o5BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDNa,qBAAqB,4FAFpB,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,oOAAE,OAAO,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,WAAW,EAAA,QAAA,EAAA,wDAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,8DAAE,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,CAAA,EAAA,UAAA,EAP9F;YACR,OAAO,CAAC,iBAAiB,EAAE;gBACvB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;gBACxD,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACzD,gBAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,mCAAmC,CAAC;aACpF;AACJ,SAAA,EAAA,CAAA,CAAA;;4FAGQ,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAbjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,EAAA,UAAA,EAGpB;wBACR,OAAO,CAAC,iBAAiB,EAAE;4BACvB,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;4BACxD,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;AACzD,4BAAA,UAAU,CAAC,wBAAwB,EAAE,OAAO,CAAC,mCAAmC,CAAC;yBACpF;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,sqCAAA,EAAA,MAAA,EAAA,CAAA,o5BAAA,CAAA,EAAA;;0BAqBhG,MAAM;2BAAC,cAAc;;sBARjC,WAAW;uBAAC,oBAAoB;;sBAChC;;sBACA;;;MEzBU,eAAe,CAAA;AAE1B,IAAA,WAAA,CAAoB,IAAgB,EAAA;QAAhB,IAAA,CAAA,IAAI,GAAJ,IAAI;IAAgB;AAExC,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,IAAI,CAAC;IACvC;AAEA,IAAA,cAAc,CAAC,IAAY,EAAA;AACzB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE;AACzB,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;+GAZW,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,cAFd,MAAM,EAAA,CAAA,CAAA;;4FAEP,eAAe,EAAA,UAAA,EAAA,CAAA;kBAH3B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCeY,mBAAmB,CAAA;IAsB9B,WAAA,CAAoB,eAAgC,EAAU,YAA0B,EAAA;QAApE,IAAA,CAAA,eAAe,GAAf,eAAe;QAA2B,IAAA,CAAA,YAAY,GAAZ,YAAY;QArB1D,IAAA,CAAA,MAAM,GAAQ,IAAI;QAChB,IAAA,CAAA,OAAO,GAAW,IAAI;QACzB,IAAA,CAAA,IAAI,GAAQ,iBAAiB;QAEjB,IAAA,CAAA,gBAAgB,GAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE;AAKtF,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAG,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAG,CAAC;QAC1B,IAAA,CAAA,SAAS,GAAG,IAAI;QAGhB,IAAA,CAAA,GAAG,GAAQ,IAAI;AACf,QAAA,IAAA,CAAA,SAAS,GAAG;AACV,YAAA,OAAO,EAAE,UAAS,EAAE,EAAA,EAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAwB,CAAC;AACnI,YAAA,aAAa,EAAE,eAAe;YAC9B,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI;SAC5C;IAID;IACA,eAAe,GAAA;AACb,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE;AACxD,QAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,KAAI;AACtI,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAClB,oBAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;gBACpB;AACA,gBAAA,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC5D,YAAA,CAAC,CAAC;QACJ;IACF;AAGA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IAAI,KAAK,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;IAClB;AACA,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,QAAQ,GAAG,CAAC,KAAK,QAAQ,IAAI,GAAG,IAAI,IAAI,EAAE;YAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;QAClC;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;QAClB;IACF;AACA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AACA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;;IAErC;IACA,MAAM,GAAA;QACJ,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE;QACxD,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;AACjC,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;AAC5B,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC;QACzD;AACA,QAAA,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;AAClC,YAAA,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9H;IACF;AAEA,IAAA,gBAAgB,CAAC,GAAG,EAAA;AAClB,QAAA,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;IACjE;IAEA,YAAY,GAAA;QACV,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC,SAAS;QACzC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE;AAAE,YAAA,OAAO,YAAY;QAAE;AAC1D,QAAA,OAAO,IAAI;IACb;AAGA,IAAA,mBAAmB,CAAC,EAAE,EAAA;AACpB,QAAA,IAAI;AACF,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE;YACrC,IAAI,CAAC,SAAS,EAAE;gBACd,KAAK,CAAC,oCAAoC,CAAC;gBAC3C;YACF;YACA,IAAI,OAAO,GAAQ,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE;AAC/C,YAAA,OAAO,CAAC,MAAM,GAAG,SAAS;YAC1B,OAAO,CAAC,OAAO,GAAG,CAAC,gBAAgB,EAAE,WAAW,CAAC;AAEjD,YAAA,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC;QAC9D;QAAE,OAAO,EAAE,EAAE;YACX,KAAK,CAAC,CAAA,wCAAA,CAA0C,CAAC;QACnD;IACF;+GAvGW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,eAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,MAAA,EAAA,SAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,YAAA,EAAA,cAAA,EAAA,EAAA,SAAA,EATjB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;AACJ,SAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAWQ,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnChC,4wBAmBM,EAAA,MAAA,EAAA,CAAA,sVAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDMQ,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,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,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,wUAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,MAAA,EAAA,WAAA,EAAA,SAAA,EAAA,wBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,aAAA,EAAA,QAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAEzE,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAd/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,aAAA,EAGd,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,4wBAAA,EAAA,MAAA,EAAA,CAAA,sVAAA,CAAA,EAAA;;sBAGpF,KAAK;uBAAC,OAAO;;sBACb,KAAK;uBAAC,SAAS;;sBACf,KAAK;uBAAC,MAAM;;sBACZ,KAAK;uBAAC,WAAW;;sBACjB,KAAK;uBAAC,kBAAkB;;sBACxB,KAAK;uBAAC,UAAU;;sBAChB,KAAK;uBAAC,cAAc;;sBACpB,SAAS;uBAAC,mBAAmB;;;ME5BnB,cAAc,CAAA;AAEzB,IAAA,WAAA,CAAoB,UAAyB,EAAA;QAAzB,IAAA,CAAA,UAAU,GAAV,UAAU;IAAmB;AAEjD,IAAA,SAAS,CAAC,KAAa,EAAE,GAAG,IAAe,EAAA;AACzC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE;QAClJ,IAAI,CAAC,IAAI,CAAC,UAAU;AAAE,YAAA,OAAO,MAAM;QACnC,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,MAAM,CAAW;IAClE;+GARW,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAJ1B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,YAAY;AAClB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCIY,sBAAsB,CAAA;;;AAmBjC,IAAA,WAAA,CAAoB,qBAA4C,EAAA;QAA5C,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;AAjB/B,QAAA,IAAA,CAAA,QAAQ,GAAsB,IAAI,YAAY,EAAE;AAE1D,QAAA,IAAA,CAAA,KAAK,GAAG;AACN,YAAA,MAAM,EAAE,qBAAqB;AAC7B,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,QAAQ,EAAE,uBAAuB;AACjC,YAAA,MAAM,EAAE,qBAAqB;AAC7B,YAAA,MAAM,EAAE,qBAAqB;AAC7B,YAAA,KAAK,EAAE,oBAAoB;AAC3B,YAAA,SAAS,EAAE,wBAAwB;AACnC,YAAA,OAAO,EAAE,sBAAsB;AAC/B,YAAA,EAAE,EAAE,iBAAiB;SACtB;;;IAQD;IAEA,QAAQ,GAAA;IACR;AAEA,IAAA,OAAO,CAAC,QAAQ,EAAA;AACd,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC9B;AACA,IAAA,QAAQ,CAAC,QAAQ,EAAA;AACf,QAAA,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;IACvB;+GAhCW,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,gBAAA,EAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECVnC,6SAQC,EAAA,MAAA,EAAA,CAAA,8UAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAa,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAER,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;+BACI,sBAAsB,EAAA,OAAA,EAGvB,CAAC,OAAO,CAAC,EAAA,QAAA,EAAA,6SAAA,EAAA,MAAA,EAAA,CAAA,8UAAA,CAAA,EAAA;;sBAGnB;;sBACA;;;MEKa,cAAc,CAAA;IAoB5B,WAAA,CAAoB,WAA+B,EAAU,KAAqB,EAAU,MAAc,EAAU,qBAA4C,EAAc,MAAoC,EAAA;QAA9L,IAAA,CAAA,WAAW,GAAX,WAAW;QAA8B,IAAA,CAAA,KAAK,GAAL,KAAK;QAA0B,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAhBzI,IAAA,CAAA,OAAO,GAAG,KAAK;QACf,IAAA,CAAA,SAAS,GAAG,KAAK;QAGjB,IAAA,CAAA,KAAK,GAAG,EAAE;QACV,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,KAAK,GAAG,CAAC;;AAYP,QAAA,IAAI,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE;YAC/C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;QAC7B;AACA,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,EAAE;AAC/B,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;QACrC;QAEA,IAAI,CAAC,eAAe,EAAE;AACtB,QAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC5F;IAEQ,eAAe,GAAA;AACrB,QAAA,MAAM,GAAG,GAAQ;AACf,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACnC,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;SACnC;AACD,QAAA,MAAM,OAAO,GAAQ;AACnB,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;YAChC,GAAG,EAAE,CAAC,EAAE,CAAC;AACT,YAAA,SAAS,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACpC,YAAA,QAAQ,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;SACnC;AACD,QAAA,MAAM,QAAQ,GAAQ;AACpB,YAAA,KAAK,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAChC,YAAA,IAAI,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AAC/B,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtC,YAAA,oBAAoB,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;SAC/C;AACD,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AACnB,YAAA,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB;QACA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;QAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC;AACvD,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9F;AAEA,IAAA,aAAa,CAAC,EAAoB,EAAA;QAChC,IAAI,CAAC,EAAE,EAAE;YAAE;QAAQ;AACnB,QAAA,OAAO,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,KAAK;IAC/E;IACA,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC;AAC3D,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,CAAA,cAAA,EAAiB,IAAI,CAAC,WAAW,CAAA,CAAE,CAAC;AAEhD,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,OAAO;AACtD,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ;AACxD,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;AAChD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK;AAClD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC;QAChB;IAEF;;IAGA,IAAI,CAAC,GAAA,EAAK,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAE1C,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;IACjB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;;AAEf,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YAC1B;QACF;AACA,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;QACnB,IAAI,MAAM,GAAG,EAAE;AACf,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK;QAC9B;QACA,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;aAClF,IAAI,CAAC,KAAK,EAAE;aACZ,SAAS,CAAC,IAAI,IAAG;YAChB,OAAO,CAAC,GAAG,CAAC,CAAA,YAAA,EAAe,IAAI,CAAC,SAAS,CAAA,CAAE,CAAC;YAC5C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC,EAAE,KAAK,IAAG;AACT,YAAA,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE;AACrB,gBAAA,QAAQ,KAAK,CAAC,KAAK,EAAE,IAAI;AACvB,oBAAA,KAAK,SAAS;AACZ,wBAAA,IAAI,CAAC,KAAK,GAAG,kFAAkF;wBAC/F;AACF,oBAAA,KAAK,cAAc;AACjB,wBAAA,IAAI,CAAC,KAAK,GAAG,4LAA4L;wBACzM;AACF,oBAAA,KAAK,eAAe;AAClB,wBAAA,IAAI,CAAC,KAAK,GAAG,CAAA,6DAAA,EAAgE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAA,0DAAA,CAA4D;wBAChK;AACF,oBAAA,KAAK,eAAe;wBAClB,IAAI,CAAC,KAAK,GAAG,CAAA,8DAAA,EAAiE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAA,uCAAA,EAA0C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,WAAW;wBACzL;AACF,oBAAA,KAAK,oBAAoB;wBACvB,IAAI,CAAC,KAAK,GAAG,CAAA,qDAAA,EAAwD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAA,uCAAA,EAA0C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,WAAW;wBACtL;;gBAGJ,IAAI,CAAC,IAAI,CAAC,KAAK;oBAAE,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO;YACnD;iBACK;AACH,gBAAA,IAAI,CAAC,KAAK,GAAG,8BAA8B;YAC7C;AACA,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACtB,QAAA,CAAC,CAAC;IACN;IAEA,sBAAsB,GAAA;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG;AACzC,QAAA,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE;YACxB,GAAG,GAAG,WAAW;QACnB;AACA,QAAA,IAAI,CAAC;AACF,aAAA,oBAAoB,CAAC,EAAE,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG;AAC5I,aAAA,SAAS,CACR,CAAC,IAAG,EAAG,CAAC,EACR,KAAK,IAAG,EAAG,CAAC,CACb;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;IAChB;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC;aACF,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,WAAW;AAC7H,aAAA,SAAS,CACR,CAAC,IAAG,EAAG,CAAC,EACR,KAAK,IAAG,EAAG,CAAC,CACb;AACH,QAAA,IAAI,CAAC,KAAK,GAAG,CAAC;IAChB;AAEA,IAAA,WAAW,CAAC,QAAgB,EAAA;QAC1B,MAAM,GAAG,GAAG,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,uBAAA,EAA0B,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,cAAc,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA,UAAA,EAAa,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA,yBAAA,EAA4B,IAAI,CAAC,qBAAqB,CAAC,uBAAuB,CAAA,CAAE;AACpT,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG;IAC5B;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC;AACF,aAAA,YAAY,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;aAC3I,SAAS,CACR,CAAC,IAAG;AACF,YAAA,IAAI,CAAC,KAAK,GAAG,CAAC;AAChB,QAAA,CAAC,EACD,KAAK,IAAG,EAAG,CAAC,CACb;IACL;IACA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC;AACF,aAAA,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK;aAC9I,SAAS,CACR,IAAI,IAAG;AACL,YAAA,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YACjB,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS;AACvC,QAAA,CAAC,EACD,KAAK,IAAG,EAAG,CAAC,CACb;IACL;+GAtLc,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAe,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAd,cAAc,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB9B,q1EAsDM,EAAA,MAAA,EAAA,CAAA,+rCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtCQ,OAAO,oGAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,kDAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAhB,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,sDAAE,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FACzJ,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL7B,SAAS;+BACI,aAAa,EAAA,OAAA,EAGd,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,sBAAsB,CAAC,EAAA,QAAA,EAAA,q1EAAA,EAAA,MAAA,EAAA,CAAA,+rCAAA,CAAA,EAAA;;0BAqBL;;;ME9BxJ,cAAc,CAAA;AAC1B,IAAA,WAAA,CAAoB,qBAA4C,EAAA;QAA5C,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;IAA2B;IAEpE,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;;AAErD,QAAA,IAAI;AACH,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB;AAC/D,YAAA,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;AACrC,gBAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACvB,oBAAA,UAAU,EAAE;AACX,wBAAA,aAAa,EAAE,CAAA,OAAA,EAAU,WAAW,CAAC,KAAK,CAAA;AAC1C;AACD,iBAAA,CAAC;YACH;QACD;QAAE,OAAO,CAAC,EAAE;AACX,YAAA,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA,CAAE,CAAC;QACpC;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC5B;+GAnBY,cAAc,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAc,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAd,cAAc,EAAA,CAAA,CAAA;;4FAAd,cAAc,EAAA,UAAA,EAAA,CAAA;kBAD1B;;;MCEY,gBAAgB,CAAA;AAC3B,IAAA,WAAA,CAAoB,qBAA4C,EAAA;QAA5C,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;IAA2B;IAEpE,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAG;AAChD,YAAA,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;;AAEtB,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;gBACnC,QAAQ,CAAC,MAAM,EAAE;YACnB;YAEA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU;AAChF,YAAA,IAAI,OAAO;AAAE,gBAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;AAC7B,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC;QACxB,CAAC,CAAC,CAAC;IACL;+GAfW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAhB,gBAAgB,EAAA,CAAA,CAAA;;4FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B;;;MCOY,0BAA0B,CAAA;AAGrC,IAAA,WAAA,CAAoB,WAA+B,EAAU,SAAmD,EAAU,qBAA4C,EAAA;QAAlJ,IAAA,CAAA,WAAW,GAAX,WAAW;QAA8B,IAAA,CAAA,SAAS,GAAT,SAAS;QAAoD,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAC7I,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtC,YAAA,WAAW,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ,CAAC;AACtC,YAAA,oBAAoB,EAAE,CAAC,EAAE,EAAE,UAAU,CAAC,QAAQ;SAC/C,EAAE,EAAE,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5F;IAEA,QAAQ,GAAA;IACR;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,KAAK,GAAG,EAAE;IACjB;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,EAAE;AACjB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACrB;QACF;AACA,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB;QACxD,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC,IAChI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAC1B,KAAK,IAAG;AACN,YAAA,QAAQ,KAAK,CAAC,KAAK,EAAE,IAAI;AACvB,gBAAA,KAAK,YAAY;AACf,oBAAA,IAAI,CAAC,KAAK,GAAG,kMAAkM;oBAC/M;AACF,gBAAA,KAAK,SAAS;AACZ,oBAAA,IAAI,CAAC,KAAK,GAAG,kFAAkF;oBAC/F;AACF,gBAAA,KAAK,cAAc;AACjB,oBAAA,IAAI,CAAC,KAAK,GAAG,4LAA4L;oBACzM;AACF,gBAAA,KAAK,eAAe;AAClB,oBAAA,IAAI,CAAC,KAAK,GAAG,CAAA,8DAAA,EAAiE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAA,2DAAA,CAA6D;oBAClK;AACF,gBAAA,KAAK,eAAe;oBAClB,IAAI,CAAC,KAAK,GAAG,CAAA,+DAAA,EAAkE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAA,wCAAA,EAA2C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,WAAW;oBAC3L;AACF,gBAAA,KAAK,oBAAoB;oBACvB,IAAI,CAAC,KAAK,GAAG,CAAA,sDAAA,EAAyD,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAA,wCAAA,EAA2C,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,WAAW;oBACxL;;YAGJ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO;AAClC,QAAA,CAAC,CACF;IACH;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;+GAvDW,0BAA0B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAd,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAc,qBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAA1B,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,0BAA0B,qFCdvC,wzCAkCO,EAAA,MAAA,EAAA,CAAA,iUAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBO,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,mqBAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAf,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,4LAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,4HAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEjJ,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBANtC,SAAS;+BACI,2BAA2B,EAAA,OAAA,EAG5B,CAAC,cAAc,EAAE,WAAW,EAAE,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,wzCAAA,EAAA,MAAA,EAAA,CAAA,iUAAA,CAAA,EAAA;;;MEGlJ,yBAAyB,CAAA;AAMpC,IAAA,WAAA,CAAoB,SAAkD,EAAU,qBAA4C,EAAU,MAAiB,EAAc,MAAoC,EAAA;QAArL,IAAA,CAAA,SAAS,GAAT,SAAS;QAAmD,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAAiC,IAAA,CAAA,MAAM,GAAN,MAAM;AAC1I,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;AACpB,QAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1F,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,EAAE,CAAC,SAAS,CAAC,GAAG,IAAG;AAChE,YAAA,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;AAC/B,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;IACR;IAEA,EAAE,GAAA;AACA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAEA,IAAA,mBAAmB,CAAC,QAAgB,EAAA;AAClC,QAAA,MAAM,GAAG,GAAG,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,uBAAA,EAA0B,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACpG,QAAA,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG;IAC5B;AACA,IAAA,sBAAsB,CAAC,WAA6B,EAAA;AAClD,QAAA,IAAI,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,SAAS,CACpG,MAAM,IAAG;YACP,KAAK,CAAC,uBAAuB,CAAC;AAC9B,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;AAC5D,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;gBACd,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;YACzC;iBAAO;gBACL,KAAK,CAAC,uBAAuB,CAAC;YAChC;;QAEF,CAAC,EACD,KAAK,IAAG;YACN,KAAK,CAAC,sCAAsC,CAAC;AAC/C,QAAA,CAAC,CAEF;IAEH;+GA3CW,yBAAyB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAjB,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAkB,2BAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECftC,8tBAWqB,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDEP,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAErG,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,0BAA0B,EAAA,OAAA,EAG3B,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,8tBAAA,EAAA,MAAA,EAAA,CAAA,qBAAA,CAAA,EAAA;;0BAQyC;;;MEL/I,iBAAiB,CAAA;AAW5B,IAAA,WAAA,CAAoB,qBAA4C,EAAU,MAAiB,EAAU,MAAc,EAAA;QAA/F,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAAiC,IAAA,CAAA,MAAM,GAAN,MAAM;QAAqB,IAAA,CAAA,MAAM,GAAN,MAAM;QATlG,IAAA,CAAA,IAAI,GAAG,IAAI;QACX,IAAA,CAAA,SAAS,GAAG,IAAI;QAChB,IAAA,CAAA,SAAS,GAAG,EAAE;QAEvB,IAAA,CAAA,YAAY,GAAG,KAAK;QACpB,IAAA,CAAA,SAAS,GAAG,KAAK;QAKf,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC;QAChE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACvH,QAAA,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;IAC5F;IAEA,QAAQ,GAAA;IACR;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,uBAAuB,EAAE,WAAW,EAAE;IAC7C;AAEQ,IAAA,cAAc,CAAC,MAAW,EAAA;AAChC,QAAA,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,MAAM;AACzB,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AACrB,QAAA,IAAI,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO;QAC/F;IACF;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,QAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;QACnC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;IAC7B;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;AACxB,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAE1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AAEtC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;YAC1F,IAAI,MAAM,EAAE;gBAAE,KAAK,CAAC,kBAAkB,CAAC;YAAE;AAC3C,QAAA,CAAC,CAAC;IACJ;IAEA,cAAc,GAAA;AACZ,QAAA,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY;IACxC;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAE1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AAEtC,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;AAE3F,QAAA,CAAC,CAAC;IACJ;+GAjEW,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,SAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,EAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,qJChB9B,unCAoCA,EAAA,MAAA,EAAA,CAAA,qgBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDtBc,OAAO,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,UAAU,mOAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEnC,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAN7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,WAGlB,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,EAAA,QAAA,EAAA,unCAAA,EAAA,MAAA,EAAA,CAAA,qgBAAA,CAAA,EAAA;;sBAI9C;;sBACA;;sBACA;;;MEfU,kBAAkB,CAAA;AAC7B,IAAA,WAAA,GAAA,EAAgB;IAEhB,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;;AAEpD,QAAA,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE;gBAC/C,OAAO,CAAC,GAAG,CAAC,CAAA,QAAA,EAAW,OAAO,CAAC,GAAG,CAAA,CAAE,CAAC;gBACrC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAClF;QACF;QAAE,OAAO,CAAC,EAAE;AACV,YAAA,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA,CAAE,CAAC;QACzC;AAEA,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B;+GAfW,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAlB,kBAAkB,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCIY,SAAS,CAAA;AAGpB,IAAA,WAAA,CACU,MAAc,EACd,qBAA4C,EAC5C;;;QAFA,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAJlB,IAAA,CAAA,QAAQ,GAAG,IAAI;AAOrB,QAAA,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC,kBAAkB,EAAE;IACvD;IAEA,WAAW,CAAC,KAA6B,EAAE,KAA0B,EAAA;AACnE,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAgB;QAC/D,IAAI,WAAW,EAAE;;YAEf,MAAM,QAAQ,GAAG,SAAS,CAAM,WAAW,CAAC,KAAK,CAAC;YAClD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,GAAG,GAAG,IAAI,EAAE;AACpC,gBAAA,OAAO,IAAI;YACb;iBAAO;AACL,gBAAA,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE;YACrC;QACF;AACA,QAAA,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ;AACnC,QAAA,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;AAAE,YAAA,OAAO,IAAI;QAAE;AAE1C,QAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC5B,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAClB,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAClB,QAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;AAErC,QAAA,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;;AAEvE;;;;AAI2B;;AAE3B,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,CAAA,EAAG,SAAS,CAAA,EAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAA,CAAE,EAAE,WAAW,EAAE,CAAA,EAAG,IAAI,CAAC,QAAQ,CAAA,CAAE,EAAE,EAAE,CAAC;AAC1I,QAAA,OAAO,KAAK;IACd;+GA3CW,SAAS,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAnB,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAT,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,SAAS,cADI,MAAM,EAAA,CAAA,CAAA;;4FACnB,SAAS,EAAA,UAAA,EAAA,CAAA;kBADrB,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCErB,kBAAkB,CAAA;AAE7B,IAAA,WAAA,CACU,MAAc,EACd,qBAA4C,EAC5C;;;QAFA,IAAA,CAAA,MAAM,GAAN,MAAM;QACN,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;IAI1B;IAEA,WAAW,CACT,KAA6B,EAC7B,KAA0B,EAAA;QAC1B,MAAM,WAAW,GAAS,IAAI,CAAC,qBAAqB,CAAC,gBAAwB,CAAC,QAAQ;AACtF,QAAA,OAAO,WAAW,CAAC,eAAe,IAAI,WAAW,CAAC,eAAe;IACnE;+GAhBW,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjB,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,kBAAkB,cAFjB,MAAM,EAAA,CAAA,CAAA;;4FAEP,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACkBM,MAAM,sCAAsC,GAAG;IAClD,cAAc;IACd,0BAA0B;IAC1B,iBAAiB;IACjB,yBAAyB;IACzB;;AAGJ,SAAS,yBAAyB,CAAC,2BAAwD,EAAA;IACvF,OAAO;QACH,qBAAqB;QACrB,2BAA2B;AAC3B,QAAA,EAAE,OAAO,EAAE,2BAA2B,EAAE,QAAQ,EAAE,2BAA2B,EAAE;QAC/E,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,IAAI,EAAE;QACrE,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,EAAE;;;KAG1E;AACL;AAEM,SAAU,oBAAoB,CAAC,2BAAwD,EAAA;AACzF,IAAA,OAAO,wBAAwB,CAAC;QAC5B,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;QAC3C,GAAG,yBAAyB,CAAC,2BAA2B;AAC3D,KAAA,CAAC;AACN;MAea,mBAAmB,CAAA;IACvB,OAAO,OAAO,CAAC,2BAAwD,EAAA;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDE;QAEF,OAAO;AACL,YAAA,QAAQ,EAAE,mBAAmB;AAC7B,YAAA,SAAS,EAAE,yBAAyB,CAAC,2BAA2B;SACjE;IACH;+GA9DW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,YAZkD,YAAY;YACtF,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,eAAe;AACf,YAAA,YAAY,EArChB,cAAc;YACd,0BAA0B;YAC1B,iBAAiB;YACjB,yBAAyB;AACzB,YAAA,sBAAsB,aAJtB,cAAc;YACd,0BAA0B;YAC1B,iBAAiB;YACjB,yBAAyB;AACzB,YAAA,sBAAsB,EAuB+B,YAAY,CAAA,EAAA,CAAA,CAAA;gHAYxD,mBAAmB,EAAA,SAAA,EAD+B,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC,CAAC,EAAA,OAAA,EAAA,CAX1B,YAAY;YACtF,WAAW;YACX,mBAAmB;YACnB,gBAAgB;YAChB,eAAe;YACf,gBAAgB;YAChB,cAAc;YACd,kBAAkB;YAClB,aAAa;YACb,eAAe;AACf,YAAA,YAAY,EArChB,cAAc;YACd,0BAA0B;YAC1B,iBAAiB;AACjB,YAAA,yBAAyB,EAwB4B,YAAY,CAAA,EAAA,CAAA,CAAA;;4FAYxD,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,GAAG,sCAAsC,EAAE,YAAY,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY;wBACtF,WAAW;wBACX,mBAAmB;wBACnB,gBAAgB;wBAChB,eAAe;wBACf,gBAAgB;wBAChB,cAAc;wBACd,kBAAkB;wBAClB,aAAa;wBACb,eAAe;wBACf,YAAY;wBACZ,GAAG,sCAAsC,CAAC,EAAE,SAAS,EAAE,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;AAAG,iBAAA;;;MCxCjG,mBAAmB,CAAA;IAkE9B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;;AAEnC,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;IACzB;IAEA,KAAK,GAAA;;AAEH,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;;AAEnC,QAAA,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE;IACzB;AAEA,IAAA,WAAA,CAAoB,SAAuB,EAAU,qBAA4C,EAAS,uBAAgD,EAAS,MAAiB,EAAA;QAAhK,IAAA,CAAA,SAAS,GAAT,SAAS;QAAwB,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QAAgC,IAAA,CAAA,uBAAuB,GAAvB,uBAAuB;QAAkC,IAAA,CAAA,MAAM,GAAN,MAAM;;QA5EhK,IAAA,CAAA,WAAW,GAAW,EAAE;QACjB,IAAA,CAAA,MAAM,GAAQ,IAAI;AAClC,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAG,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAG,CAAC;AAK1B,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,YAAY,CAAC;AAC9B,QAAA,IAAA,CAAA,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;AAChG,QAAA,IAAA,CAAA,YAAY,GAAwB;AACzC,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,SAAS,EAAE,MAAM;AACjB,YAAA,KAAK,EAAE,MAAM;AACb,YAAA,QAAQ,EAAE,GAAG;AACb,YAAA,SAAS,EAAE,KAAK;AAChB,YAAA,aAAa,EAAE,IAAI;AACnB,YAAA,WAAW,EAAE,IAAI;AACjB,YAAA,WAAW,EAAE,oBAAoB;AACjC,YAAA,yBAAyB,EAAE,GAAG;AAC9B,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,eAAe,EAAE,GAAG;AACpB,YAAA,KAAK,EAAE;AACL,gBAAA,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO;AAChC,aAAA;AACD,YAAA,aAAa,EAAE;AACb,gBAAA;AACE,oBAAA,IAAI,EAAE,OAAO;AACb,oBAAA,KAAK,EAAE,OAAO;AACf;AACF,aAAA;AACD,YAAA,SAAS,EAAE,UAAU;AACrB,YAAA,qBAAqB,EAAE,KAAK;;AAE5B,YAAA,eAAe,EAAE,KAAK;AACtB,YAAA,oBAAoB,EAAE;gBACpB,CAAC,aAAa,EAAE,aAAa,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS;oBAClE,UAAU;oBACV,UAAU;oBACV,WAAW;AACX,oBAAA,iBAAiB,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,kBAAkB,GAAG,EAAE;AACvE,aAAA;AACL;;;;;;;;;;;;;;;AAeO;SACJ;AAgBC,QAAA,IAAI,CAAC,uBAAuB,CAAC,IAAI,EAAE;IACrC;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IAAI,KAAK,CAAC,GAAG,EAAA;AACX,QAAA,IAAI,CAAC,MAAM,GAAG,GAAG;AACjB,QAAA,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAClB,IAAI,CAAC,SAAS,EAAE;IAClB;AACA,IAAA,UAAU,CAAC,GAAQ,EAAA;QACjB,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,CAAC,KAAK,GAAG,GAAG;QAClB;IACF;AACA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AACA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,QAAQ,CAAC,IAAY,EAAA;AACnB,QAAA,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,uBAAuB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,EAAE,CAAC;QAC3J,MAAM,SAAS,GAAG,KAAK,EAAE,KAAK,CAAC,qCAAqC,CAAC;AACrE,QAAA,SAAS,EAAE,OAAO,CAAC,CAAC,IAAG;YACrB,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,oCAAoC,CAAC;YAC9D,IAAI,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC7E,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/B;AACF,QAAA,CAAC,CAAC;QAEF,OAAO,IAAI,EAAE;YACX,MAAM,UAAU,GAAG,KAAK,EAAE,KAAK,CAAC,gCAAgC,CAAC;YACjE,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE;gBAAE;YAAO;AACjD,YAAA,MAAM,MAAM,GAAG,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC;YACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC;YAC1E,MAAM,SAAS,GAAU,EAAE;YAC3B,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAI;gBAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,0CAA0C,CAAC;AACrE,gBAAA,IAAI,SAAS,EAAE,MAAM,EAAE;oBACrB,MAAM,IAAI,GAAG,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC;oBACtC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;AACzC,wBAAA,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;oBACnB;oBACA,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;oBACvC,OAAO,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,KAAK,CAAA,CAAE,CAAC;gBACjC;AACF,YAAA,CAAC,CAAC;YACF,IAAI,IAAI,GAAG,EAAE;AACb,YAAA,IAAI,SAAS,CAAC,MAAM,EAAE;gBAAE,IAAI,GAAG,aAAa,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,CAAA,CAAG;YAAE;AACpE,YAAA,KAAK,GAAG,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAC7C;QACA,OAAO,KAAK,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,IAAI,EAAE;IACtD;IAEA,eAAe,GAAA;QACb,MAAM,WAAW,GAAS,IAAI,CAAC,qBAAqB,CAAC,gBAAwB,CAAC,QAAQ;QACtF,OAAO,WAAW,CAAC,eAAe,KAAK,CAAC,IAAI,WAAW,CAAC,eAAe,KAAK,CAAC;IAC/E;+GA7IW,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAjB,IAAA,CAAA,YAAA,EAAA,EAAA,EAAA,KAAA,EAAAiB,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAG,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,EAAA,SAAA,EATjB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;SACJ,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,0BAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECtBL,ovBAcA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDSc,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,aAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,mWAAiB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,cAAc,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEpG,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAb/B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,mBAAmB,EAAA,SAAA,EAGlB;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAA;AACd;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,cAAc,CAAC,EAAA,QAAA,EAAA,ovBAAA,EAAA;;sBAG/G,SAAS;uBAAC,qBAAqB;;sBAE/B;;sBACA,KAAK;uBAAC,OAAO;;;MEVH,iBAAiB,CAAA;AAwB5B,IAAA,WAAA,CAAoB,WAA+B,EAAU,SAA0C,EAA2B,UAAU,EAAA;QAAxH,IAAA,CAAA,WAAW,GAAX,WAAW;QAA8B,IAAA,CAAA,SAAS,GAAT,SAAS;AAlBtE,QAAA,IAAA,CAAA,KAAK,GAAG;AACN,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,OAAO;AACd,YAAA,KAAK,EAAE,YAAY;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE;AAC3C,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,MAAM;AACf,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,OAAO,EAAE,KAAK;AACd,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,OAAO,EAAE,MAAM;SAEhB;QA4CD,IAAA,CAAA,QAAQ,GAAG,KAAK;QAxCd,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,IAAI,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC;YACjC,OAAO,EAAE,CAAC,IAAI;AACf,SAAA,CAAC;QACF,IAAI,UAAU,EAAE;AACd,YAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;AAChC,YAAA,IAAI;AACF,gBAAA,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC,CAAC,CAAC;YACrH;AAAE,YAAA,MAAM;AACN,gBAAA,IAAI,CAAC,GAAG,GAAG,IAAI;YACjB;QAIF;IACF;IAEA,OAAO,GAAA;AACL,QAAA,IAAI;AACF,YAAA,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACpC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;YAC7B;iBAAO;AACL,gBAAA,OAAO,MAAM;YACf;QACF;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,MAAM;QACf;IAEF;IAEA,QAAQ,GAAA;IACR;IAEA,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;IACA,IAAI,GAAA;QACF,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACvC;AAGA,IAAA,SAAS,CAAC,KAAmB,EAAA;AAC3B;AACoD;AACpD,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC;QAC9E;aAAO;AACL,YAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;QACtB;IACF;AA1EW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,oFAwBqF,eAAe,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAxBrH,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,qBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACjB,mBAAmB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBhC,2/BAoBM,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHQ,OAAO,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,EAAA,cAAA,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,EAAE,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAiB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAnB,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEqB,mBAAqB,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,MAAA,EAAA,WAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAEhM,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,OAAA,EAC5B,CAAC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAEA,mBAAqB,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,2/BAAA,EAAA,MAAA,EAAA,CAAA,ysBAAA,CAAA,EAAA;;0BA0BlG,MAAM;2BAAC,eAAe;;sBAvB/H,SAAS;uBAAC,mBAAmB;;;MEjBnB,mBAAmB,CAAA;AADhC,IAAA,WAAA,GAAA;QAEE,IAAA,CAAA,OAAO,GAAG,GAAG;AAQd,IAAA;IAPC,OAAO,MAAM,CAAC,CAAO,EAAA;AACnB,QAAA,MAAM,GAAG,GAAG,IAAI,mBAAmB,EAAE;QACrC,IAAI,CAAC,EAAE;AACL,YAAA,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACvB;AACA,QAAA,OAAO,GAAG;IACZ;+GARW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,mBAAmB,cADN,MAAM,EAAA,CAAA,CAAA;;4FACnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCcrB,aAAa,CAAA;AAExB,IAAA,WAAA,CAAoB,IAAgB,EAAU,mBAAwC,EAAsC,YAAoB,EAAA;QAA5H,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAsB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;QAC/D,OAAO,CAAC,GAAG,CAAC,CAAA,oBAAA,EAAuB,mBAAmB,CAAC,OAAO,CAAA,CAAE,CAAC;AACjE,QAAA,OAAO,CAAC,GAAG,CAAC,iBAAiB,YAAY,CAAA,CAAE,CAAC;IAC9C;AACA,IAAA,MAAM,SAAS,GAAA;AACb,QAAA,OAAO,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAA,SAAA,CAAW,CAAC,CAAC;IACrG;AAGA,IAAA,mBAAmB,CAAC,IAAY,EAAA;AAC9B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAA,YAAA,EAAe,IAAI,IAAI,EAAE,CAAA,CAAE,CAAC;IACxG;AACA,IAAA,oBAAoB,CAAC,IAAY,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAmB,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAA,YAAA,EAAe,IAAI,CAAA,CAAE,EAAE,QAAQ,EAAE,EAAE,CAAC;IACjH;AAEA,IAAA,cAAc,CAAC,IAAY,EAAA;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAA,MAAA,EAAS,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA,CAAE,EAAE;AACzG,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;AACA,IAAA,kBAAkB,CAAC,IAAY,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAA,MAAA,EAAS,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA,CAAE,EAAE;AACzG,YAAA,YAAY,EAAE;AACf,SAAA,CAAC;IACJ;IAEA,eAAe,CAAC,IAAY,EAAE,QAAkB,EAAA;AAC9C,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,CAAA,EAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAA,MAAA,EAAS,CAAC,IAAI,IAAI,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA,CAAE,EAAE,QAAQ,EAAE;AACzH,YAAA,cAAc,EAAE,IAAI;AACpB,YAAA,OAAO,EAAE;AACV,SAAA,CAAC;IACJ;AAnCW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,4EAEoF,cAAc,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAF/G,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFZ,MAAM,EAAA,CAAA,CAAA;;4FAEP,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHzB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;0BAG0F;;0BAAY,MAAM;2BAAC,cAAc;;;MCC/G,gBAAgB,CAAA;AAO3B,IAAA,WAAA,CAAoB,aAA4B,EAAU,MAAc,EAAU,KAAqB,EAAU,MAAiB,EAAA;;QAA9G,IAAA,CAAA,aAAa,GAAb,aAAa;QAAyB,IAAA,CAAA,MAAM,GAAN,MAAM;QAAkB,IAAA,CAAA,KAAK,GAAL,KAAK;QAA0B,IAAA,CAAA,MAAM,GAAN,MAAM;QAGrH,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAoB,KAAI;AACpD,YAAA,IAAI,KAAK,YAAY,aAAa,EAAE;gBAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AACrC,gBAAA,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAC7C,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;gBAC5B,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAC9F;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,QAAQ,GAAA;IACR;IAEA,SAAS,GAAA;AACP,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAE1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAA,YAAY,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,YAAY,EAAE,8CAA8C,EAAE,EAAE,EAAE,IAAI,CAAC;AAE3G,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,MAAM,IAAG;YAC/E,IAAI,MAAM,EAAE;AACV,gBAAA,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;oBACpF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,wBAAA,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC;AACzB,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,OAAO,GAAA;AACL,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAE1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAA,YAAY,CAAC,IAAI,GAAG,IAAI,WAAW,CAAC,UAAU,EAAE,iDAAiD,EAAE,EAAE,EAAE,IAAI,CAAC;AAE5G,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAG;YACjF,IAAI,QAAQ,EAAE;AACZ,gBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACnB,gBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;gBAC5B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;YACnG;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,aAAa,GAAA;AACX,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAE1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AACtC,QAAA,YAAY,CAAC,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE;AAErF,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,KAAK,IAAG;YACjF,IAAI,KAAK,EAAE;AACT,gBAAA,KAAK,CAAC,OAAO,CAAC,IAAI,IAAG;AACnB,oBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;oBAC/B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;AAClC,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAChE,oBAAA,IAAI,CAAC,gBAAgB,GAAG,IAAI;oBAC5B,IAAI,CAAC,aAAa,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC;AACnG,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;IACJ;AACA,IAAA,aAAa,CAAC,SAAkB,EAAA;AAC9B,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,CAAC,UAAU,EAAE,SAAS,CAAC;QAChC;QACA,IAAI,CAAC,SAAS,EAAE;AACd,YAAA,IAAI,GAAG,GAAG,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,EAAE;AACT,YAAA,OAAO,GAAG;QACZ;AACA,QAAA,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC;IAC/D;AACA,IAAA,OAAO,CAAC,CAAS,EAAA;AACf,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACpB,YAAA,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9C;QAEA,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7E;AAIA,IAAA,aAAa,CAAC,OAAO,EAAA;QACnB,MAAM,UAAU,GAAG,OAAO;AAC1B;;;;;;;;;;;;AAYG;AACH,QAAA,MAAM,EAAE,GAAG,IAAI,WAAW,EAAE;QAC5B,MAAM,UAAU,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC;AACxC,QAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;AAC1E,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,UAAU,CAAC,QAAgB,EAAA;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,8EAA8E,CAAC,IAAI,IAAI;IAC/G;IAEA,UAAU,CAAC,QAAgB,EAAE,QAAkB,EAAA;AAC7C,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CACzD,GAAG,CAAC,KAAK,IAAG;AACV,YAAA,QAAQ,KAAK,CAAC,IAAI;gBAChB,KAAK,aAAa,CAAC,cAAc;;oBAE/B;gBACF,KAAK,aAAa,CAAC,QAAQ;oBACzB,OAAO,KAAK,CAAC,IAAI;;AAEvB,QAAA,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,KAAwB,KAAI;;AAEtC,YAAA,OAAO,EAAE,CAAC,CAAA,EAAG,QAAQ,CAAA,eAAA,CAAiB,CAAC;QACzC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAU,KAAI;AAC3B,YAAA,IAAI,QAAQ,KAAK,CAAC,KAAK,QAAQ,EAAE;;YAEjC;AACF,QAAA,CAAC,CAAC;IACN;AAIA,IAAA,IAAI,CAAC,QAAgB,EAAA;AACnB,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAE1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;AAEtC,QAAA,IAAI,OAAe;AACnB,QAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,IAAG;AAChF,YAAA,YAAY,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE;AAC1E,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,IAAI,IAAG;gBAC/E,IAAI,IAAI,EAAE;AACR,oBAAA,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE;oBAC/B,MAAM,SAAS,GAAG,QAAQ;oBAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;AAClD,oBAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;AACpF,oBAAA,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC;AAC7B,oBAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,EAAE,QAAQ,CAAC;;gBAG7D;AACF,YAAA,CAAC,CAAC;AACJ,QAAA,CAAC,CACA;IACH;AAEA;;;;AAI6E;AAE7E,IAAA,YAAY,CAAC,QAAgB,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,SAAS,CAAC,IAAI,IAAG;YACvF,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;AACrC,QAAA,CAAC,CAAC;IACJ;AAGA;;;;AAIG;IACH,aAAa,CAAC,IAAS,EAAE,IAAY,EAAA;AACnC,QAAA,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3C,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QAC1C,IAAI,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;AAC1B,QAAA,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,GAAG,CAAC,MAAM,IAAI,WAAW,EAAE;YAC1D,KAAK,CAAC,mDAAmD,CAAC;QAC5D;IACF;+GAtMW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnB7B,qpCAmCA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDlBc,UAAU,oOAAE,kBAAkB,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAE/B,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAN5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,eAAe,EAAA,OAAA,EAGhB,CAAC,UAAU,EAAE,kBAAkB,CAAC,EAAA,QAAA,EAAA,qpCAAA,EAAA,MAAA,EAAA,CAAA,2FAAA,CAAA,EAAA;;;MEFhC,yBAAyB,CAAA;AAQpC,IAAA,WAAA,CAAoB,SAAkD,EAA2B,GAAQ,EAAS,UAAsB,EAAA;QAApH,IAAA,CAAA,SAAS,GAAT,SAAS;QAAqF,IAAA,CAAA,UAAU,GAAV,UAAU;AAC1H,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AACpB,QAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK;AACtB,QAAA,IAAI,CAAC,OAAO,GAAG,EAAE;AACjB,QAAA,IAAI,CAAC,OAAO,GAAG,uBAAuB;AACtC,QAAA,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,CAAC,WAAW,EAAE;QACpB;aAAO;YACL,IAAI,CAAC,QAAQ,EAAE;QACjB;IAEF;AAEA,IAAA,MAAM,OAAO,CAAC,GAAW,EAAE,QAA8D,EAAA;AACvF,QAAA,MAAM,WAAW,GAAG;AAClB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,MAAM;SACrB;QACD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,WAAkB,CAAC,CAAC,IAAI,CACjE,GAAG,CAAC,CAAC,KAAU,KAAI;AACjB,YAAA,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAClB;;;;;AAKG;AACH,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,EAAE;gBACpB,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC;YAC1C;AACA,YAAA,IAAI,KAAK,YAAY,YAAY,EAAE;gBACjC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB;AACA,YAAA,OAAO,KAAK;QACd,CAAC,CAAC,EACF,MAAM,CAAC,CAAC,KAAU,KAAK,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,GAAsB,KAAI;AAClG,YAAA,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK;AACvB,YAAA,OAAO,KAAK;AACd,QAAA,CAAC,CAAC;QACJ,OAAO,GAAG,CAAC,IAAI;IACjB;AAEA,IAAA,QAAQ,CAAC,GAAW,EAAE,MAAc,EAAE,KAAa,EAAA;AACjD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;AACxD,QAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,YAAA,IAAI,CAAC,IAAI,IAAI,CAAC;YACd,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B;aAAO;AACL,YAAA,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;AAChB,gBAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC3C;iBAAO;gBACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM;YACrC;QAEF;IACF;AAEA,IAAA,YAAY,CAAC,QAAa,EAAA;AACxB,QAAA,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO;IACjC;AAEA,IAAA,MAAM,WAAW,GAAA;AACf,QAAA,MAAM,GAAG,GAAG,IAAI,KAAK,EAAE;;AAEvB,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAM,CAAC,GAAG,CAAC,OAAO,IAAI,KAAI;AAC/C,YAAA,IAAI,QAAa;AACjB,YAAA,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,GAAQ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;YACtE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,2BAA2B;AAC1C,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QAEd,MAAM,GAAG,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAI;YACvF,IAAI,OAAO,EAAE;gBACX,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC;YACtC;AACF,QAAA,CAAC,CAAC;AACF,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;AAEA,IAAA,MAAM,QAAQ,GAAA;AACZ,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC;AACb,QAAA,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAM,CAAC,GAAG,CAAC,OAAO,IAAI,KAAI;AAC/C,YAAA,IAAI,QAAa;AACjB,YAAA,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjE,MAAM,CAAC,GAAQ,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,QAAQ,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC;AACtE,YAAA,IAAI,IAAI,CAAC,IAAI,KAAG,MAAM,EAAC;gBACrB,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;AACpC,gBAAA,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;YACtB;iBAAK;gBACH,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;YAChC;QACF,CAAC,CAAC,CAAC;AACH,QAAA,IAAI,CAAC,OAAO,GAAG,2BAA2B;AAC1C,QAAA,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AACd,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IAExB;AAjHW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,yBAAyB,gDAQ4C,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAZ,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGARpF,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECftC,q2BA2BqB,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDdP,cAAc,+HAAiB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,cAAc,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,OAAA,EAAA,aAAA,EAAA,MAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAElF,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBANrC,SAAS;+BACI,yBAAyB,EAAA,OAAA,EAG1B,CAAC,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,CAAC,EAAA,QAAA,EAAA,q2BAAA,EAAA;;0BAUrB,MAAM;2BAAC,eAAe;;;MEdpF,gBAAgB,CAAA;AAI3B,IAAA,WAAA,CAAoB,MAAiB,EAAA;QAAjB,IAAA,CAAA,MAAM,GAAN,MAAM;IAAe;IAEzC,QAAQ,GAAA;IACR;IAEA,KAAK,GAAA;AACH,QAAA,MAAM,YAAY,GAAG,IAAI,eAAe,EAAE;AAE1C,QAAA,YAAY,CAAC,YAAY,GAAG,IAAI;AAChC,QAAA,YAAY,CAAC,SAAS,GAAG,IAAI;AAC7B,QAAA,YAAY,CAAC,iBAAiB,GAAG,KAAK;QACtC,YAAY,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE;AAEpE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,YAAY,CAAC,CAAC,WAAW,EAAE,CAAC,SAAS,EAAE;IACrF;+GAlBW,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAD,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,kHCT7B,+FAEI,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDOS,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;+BACI,gBAAgB,EAAA,QAAA,EAAA,+FAAA,EAAA;;sBAK3B;;sBACA;;;MEJU,cAAc,CAAA;AAEzB,IAAA,WAAA,GAAA,EAAgB;IAEhB,QAAQ,GAAA;IACR;+GALW,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,cAAc,uECP3B,yBACA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FDMa,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,SAAS;+BACI,aAAa,EAAA,QAAA,EAAA,yBAAA,EAAA;;;MEkBd,eAAe,CAAA;IAqB1B,WAAA,CAAoC,YAAiB,EAAU,WAA+B,EAAA;QAA/B,IAAA,CAAA,WAAW,GAAX,WAAW;QApB1D,IAAA,CAAA,MAAM,GAAQ,IAAI;QACb,IAAA,CAAA,UAAU,GAAQ,IAAI;QACrB,IAAA,CAAA,WAAW,GAAQ,IAAI;QACtB,IAAA,CAAA,YAAY,GAAQ,IAAI;QAC1B,IAAA,CAAA,UAAU,GAAQ,IAAI;QACrB,IAAA,CAAA,WAAW,GAAQ,IAAI;QAC9B,IAAA,CAAA,IAAI,GAAQ,IAAI;QACR,IAAA,CAAA,YAAY,GAAQ,IAAI;AAG/C,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAG,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAG,CAAC;QACnB,IAAA,CAAA,KAAK,GAAU,EAAE;AAiExB,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,CAAM,KAAI,EAAG,CAAC;AAxD/B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AACjC,YAAA,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI;AACpB,SAAA,CAAC;AACF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;IACpE;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI;AACjB,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QACpE;QACA,IAAI,WAAW,GAAQ,EAAE;AACzB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,IAAG;gBACpC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACrC,YAAA,CAAC,CAAC;QACJ;;QAGA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,GAAG,KAAK,EAC3F,KAAK,IAAG;AACN,YAAA,IAAI,CAAC,KAAK,GAAG,KAAK;AACpB,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE;YAC1C,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC;QAC/E;IACF;IACA,kBAAkB,GAAA;IAElB;IAEA,QAAQ,GAAA;IACR;AAGA,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAClE;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,IAAG;AACtC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzD;iBAAO;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACvC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAIA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;QACnC,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ;;IAElD;AAEA,IAAA,UAAU,CAAC,IAAI,EAAA;AACb,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAChC;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B;IACF;AA3FW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,eAAe,kBAqBN,cAAc,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AArBvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EATb;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE;AAChB;SACJ,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EClBL,0YAWO,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDQO,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,oVAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,UAAA,EAAA,8BAAA,EAAA,aAAA,EAAA,UAAA,EAAA,UAAA,EAAA,wBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,2BAAA,EAAA,gBAAA,EAAA,IAAA,EAAA,YAAA,EAAA,0BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,IAAA,EAAA,UAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAErE,eAAe,EAAA,UAAA,EAAA,CAAA;kBAb3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,cAAc,EAAA,SAAA,EAGb;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAA;AACd;qBACJ,EAAA,OAAA,EACQ,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,0YAAA,EAAA;;0BAuBpE,MAAM;2BAAC,cAAc;;sBApBjC,KAAK;uBAAC,OAAO;;sBACb,KAAK;uBAAC,YAAY;;sBAClB,KAAK;uBAAC,aAAa;;sBACnB,KAAK;uBAAC,cAAc;;sBACpB,KAAK;uBAAC,YAAY;;sBAClB,KAAK;uBAAC,aAAa;;sBACnB,KAAK;uBAAC,MAAM;;sBACZ,KAAK;uBAAC,cAAc;;sBACpB;;sBAOA;;;MEbU,qBAAqB,CAAA;AAuBhC,IAAA,WAAA,CAAoC,YAAiB,EAAU,WAA+B,EAAU,GAAsB,EAAA;QAA/D,IAAA,CAAA,WAAW,GAAX,WAAW;QAA8B,IAAA,CAAA,GAAG,GAAH,GAAG;QAtB3F,IAAA,CAAA,MAAM,GAAQ,IAAI;QACb,IAAA,CAAA,UAAU,GAAQ,IAAI;QACrB,IAAA,CAAA,WAAW,GAAQ,IAAI;QACvB,IAAA,CAAA,WAAW,GAAQ,IAAI;QACtB,IAAA,CAAA,YAAY,GAAQ,IAAI;QACzB,IAAA,CAAA,WAAW,GAAQ,IAAI;QACxB,IAAA,CAAA,UAAU,GAAQ,IAAI;QACrB,IAAA,CAAA,WAAW,GAAQ,IAAI;QAC9B,IAAA,CAAA,IAAI,GAAQ,IAAI;AAC/B,QAAA,IAAA,CAAA,QAAQ,GAAQ,MAAK,EAAG,CAAC;AACzB,QAAA,IAAA,CAAA,SAAS,GAAQ,MAAK,EAAG,CAAC;QACnB,IAAA,CAAA,KAAK,GAAU,EAAE;AAQjB,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,sBAAsB,EAAE;QACpC,IAAA,CAAA,oBAAoB,GAAQ,SAAS;AActC,QAAA,IAAA,CAAA,OAAO,GAAU,EAAE,CAAC;AAwE3B,QAAA,IAAA,CAAA,eAAe,GAAG,CAAC,CAAM,KAAI,EAAG,CAAC;AAnF/B,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY;AAChC,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,kBAAkB,EAAE;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YACjC,QAAQ,EAAE,IAAI,CAAC;AAChB,SAAA,CAAC;IACJ;IAEA,eAAe,GAAA;IAEf;IAGA,QAAQ,GAAA;;AAEN,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,UAAU,CAAA,CAAE,CAAC;QAClE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAC/B,MAAM,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,EAC5C,oBAAoB,EAAE,EACtB,YAAY,CAAC,GAAG,CAAC,EACjB,GAAG,CAAC,MAAK,EAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EAClD,SAAS,CAAC,SAAS,IAAG;YACpB,IAAI,SAAS,GAAG,EAAE;AAClB,YAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,gBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;oBACjC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,gBAAA,CAAC,CAAC;YACJ;AACA,YAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,SAAS;AACvC,YAAA,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,IAAI,CAC/D,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,EACf,UAAU,CAAC,GAAG,IAAG;AACf,gBAAA,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,OAAO;AACxB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACvB,gBAAA,OAAO,EAAE,CAAC,EAAE,CAAC;YACf,CAAC,CAAC,CACH;AACH,QAAA,CAAC,CAAC,CACH,CAAC,SAAS,CACT;AACE,YAAA,IAAI,EAAE,CAAC,IAAW,KAAI;AACpB,gBAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,gBAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACzB,CAAC;AACD,YAAA,KAAK,EAAE,CAAC,KAAK,KAAI,EAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA,CAAC;AACxC,SAAA,CACF;AAED,QAAA,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE;AAC3C,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,oBAAoB,CAAC;AAClD,YAAA,IAAI,CAAC,oBAAoB,GAAG,SAAS;QACvC;IACF;AAGA,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE,EAAE;AACnD,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;YAC5D;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AACvB,YAAA,IAAI,CAAC,oBAAoB,GAAG,GAAG;YAC/B;QACF;AAEA,QAAA,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC;IAC9B;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,IAAG;AACtC,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,gBAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC3D;iBAAO;gBACL,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzC;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAIA,IAAA,gBAAgB,CAAE,UAAmB,EAAA;QACnC,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ;;IAElD;AAEA,IAAA,UAAU,CAAC,IAAI,EAAA;AACb,QAAA,IAAI,CAAC,IAAI;AAAE,YAAA,OAAO,IAAI;AACtB,QAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC5B,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;AACxB,QAAA,IAAI,IAAI,CAAC,YAAY,EAAE;AACrB,YAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QAChC;AAAO,aAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAC3B,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;;QAEpG;AAAO,aAAA,IAAI,IAAI,CAAC,UAAU,EAAE;AAC1B,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B;IACF;AAEQ,IAAA,kBAAkB,CAAC,GAAQ,EAAA;AACjC,QAAA,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;AAC3B,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;AAC5C,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC3D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;YACvB;QACF;QAEA,MAAM,SAAS,GAAG,EAAE;AACpB,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAG;gBACjC,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7B,YAAA,CAAC,CAAC;QACJ;AACA,QAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,GAAG;AAEjC,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,IAAI,CACxD,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CACzB,CAAC,SAAS,CAAC,CAAC,OAAc,KAAI;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG;AACxF,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC7D,YAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE;AACzB,QAAA,CAAC,CAAC;IACJ;AA9JW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,kBAuBZ,cAAc,EAAA,EAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAvBvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,cAAA,EAAA,WAAA,EAAA,aAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,SAAA,EATnB;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,qBAAqB;AACtD;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrBL,+kBAWM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDWQ,WAAW,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,mBAAmB,oVAAE,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,EAAA,QAAA,EAAA,mDAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,yBAAA,EAAA,4BAAA,EAAA,cAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,eAAe,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,uBAAA,EAAA,wBAAA,EAAA,kBAAA,EAAA,YAAA,EAAA,eAAA,EAAA,OAAA,EAAA,8BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,gJAAE,YAAY,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAE3H,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAdjC,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,aAAA,EAGhB,iBAAiB,CAAC,IAAI,EAAA,SAAA,EAC1B;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,2BAA2B;AACtD;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,EAAE,QAAQ,EAAE,sBAAsB,EAAE,eAAe,EAAE,SAAS,EAAE,YAAY,CAAC,EAAA,QAAA,EAAA,+kBAAA,EAAA;;0BAyB1H,MAAM;2BAAC,cAAc;;sBAtBjC,KAAK;uBAAC,OAAO;;sBACb,KAAK;uBAAC,YAAY;;sBAClB,KAAK;uBAAC,aAAa;;sBACnB,KAAK;uBAAC,aAAa;;sBACnB,KAAK;uBAAC,cAAc;;sBACpB,KAAK;uBAAC,aAAa;;sBACnB,KAAK;uBAAC,YAAY;;sBAClB,KAAK;uBAAC,aAAa;;sBACnB,KAAK;uBAAC,MAAM;;sBAMZ;;;MEhBU,iBAAiB,CAAA;AACJ,IAAA,SAAA,IAAA,CAAA,YAAY,GAAG;AACrC,QAAA,MAAM,CAAC,QAAQ;QACf,qBAAqB;QACrB,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB,kBAAkB;QAClB,YAAY;QACZ,qBAAqB;QACrB;AACD,KAbmC,CAalC;aACsB,IAAA,CAAA,YAAY,GAAG,EAAH,CAAM;aAClB,IAAA,CAAA,kBAAkB,GAAG,EAAH,CAAM;aACxB,IAAA,CAAA,kBAAkB,GAAG,EAAH,CAAM;aACxB,IAAA,CAAA,uBAAuB,GAAG,EAAH,CAAM;aAC7B,IAAA,CAAA,uBAAuB,GAAG,EAAH,CAAM;aAC7B,IAAA,CAAA,uBAAuB,GAAG,EAAH,CAAM;aAC7B,IAAA,CAAA,uBAAuB,GAAG,KAAH,CAAS;aAChC,IAAA,CAAA,uBAAuB,GAAG,KAAH,CAAS;aAChC,IAAA,CAAA,wBAAwB,GAAG,KAAH,CAAS;AAuBzD,IAAA,WAAA,CAAkE,MAAe,EAAA;QAAf,IAAA,CAAA,MAAM,GAAN,MAAM;QArBxD,IAAA,CAAA,MAAM,GAAgB,IAAI;QACxB,IAAA,CAAA,OAAO,GAAkB,IAAI;QACzB,IAAA,CAAA,WAAW,GAAkB,IAAI;QACxC,IAAA,CAAA,IAAI,GAAW,MAAM;QAC3B,IAAA,CAAA,WAAW,GAAG,KAAK;AAEnB,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,WAAW,CAAc,IAAI,CAAC;AAChD,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,WAAW,CAAS,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAS,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACpE,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,WAAW,CAAS,IAAI,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAEpE,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE;AACrC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;AACnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE;QAE5C,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,WAAW,GAAG,KAAK;QACnB,IAAA,CAAA,SAAS,GAAiC,MAAM;AAChD,QAAA,IAAA,CAAA,QAAQ,GAAiC,MAAK,EAAE,CAAC;AACjD,QAAA,IAAA,CAAA,SAAS,GAAe,MAAK,EAAE,CAAC;AAG9B,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACtE,QAAA,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACtE,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1E;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU;IACjC;AAEA,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;IACpB;IAEA,IAAI,KAAK,CAAC,GAAQ,EAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC;IACrC;AAEA,IAAA,UAAU,CAAC,GAAQ,EAAA;AACjB,QAAA,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,KAAK,CAAC;IACtC;AAEA,IAAA,gBAAgB,CAAC,EAAO,EAAA;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,EAAE;IACpB;AAEA,IAAA,iBAAiB,CAAC,EAAO,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEA,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AAClC,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;QAC5B,MAAM,MAAM,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ;AAChD,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC9C,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAChD,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAClD;IAEA,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;AACxB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACvD,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,WAAW,GAAA;QACT,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC;cACR,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA;AACxM,cAAE,CAAA,EAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAA,CAAA,EAAI,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE;IAC3I;AAEA,IAAA,IAAI,UAAU,GAAA;AACZ,QAAA,QAAQ,IAAI,CAAC,SAAS;AACpB,YAAA,KAAK,MAAM;AACT,gBAAA,OAAO,OAAO;AAChB,YAAA,KAAK,QAAQ;AACX,gBAAA,OAAO,SAAS;AAClB,YAAA;AACE,gBAAA,OAAO,SAAS;;IAEtB;IAEA,SAAS,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB;QACF;AACA,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,MAAM;QACvB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,UAAU,GAAA;AACR,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QACxB,IAAI,CAAC,SAAS,EAAE;IAClB;AAEA,IAAA,eAAe,CAAC,IAAkC,EAAA;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC9F,IAAI,CAAC,gBAAgB,EAAE;IACzB;AAEA,IAAA,cAAc,CAAC,IAAkC,EAAA;QAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QACrC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAC7F,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,eAAe,CAAC,KAAa,EAAE,KAAkB,EAAA;QAC/C,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAClF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QACzB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,iBAAiB,CAAC,KAAa,EAAE,KAAkB,EAAA;QACjD,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpF,IAAI,CAAC,gBAAgB,EAAE;AACvB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AACpB,YAAA,IAAI,CAAC,SAAS,GAAG,QAAQ;QAC3B;aAAO;YACL,IAAI,CAAC,UAAU,EAAE;QACnB;QACA,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,iBAAiB,CAAC,KAAa,EAAE,KAAkB,EAAA;QACjD,KAAK,EAAE,eAAe,EAAE;QACxB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QACpF,IAAI,CAAC,gBAAgB,EAAE;QACvB,IAAI,CAAC,UAAU,EAAE;QACjB,IAAI,CAAC,SAAS,EAAE;IAClB;IAEA,eAAe,CAAC,KAAa,EAAE,KAAiB,EAAA;AAC9C,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;YACpC;QACF;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC;QACtC;IACF;AAEA,IAAA,aAAa,CAAC,IAAkC,EAAA;AAC9C,QAAA,IAAI,CAAC,SAAS,GAAG,IAAI;IACvB;AAEA,IAAA,gBAAgB,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;YAC7B;QACF;AAEA,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,aAAmC;QACxD,IAAI,CAAC,MAAM,EAAE;YACX;QACF;AAEA,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,qBAAqB,EAAE;AAC3C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;AAC5C,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO;AAClC,QAAA,MAAM,EAAE,GAAG,KAAK,CAAC,OAAO,GAAG,OAAO;AAClC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE;AAEnE,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;YAChC;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC;IAClC;AAEA,IAAA,cAAc,CAAC,KAAa,EAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,KAAK;IACxD;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK;IAC1D;AAEA,IAAA,gBAAgB,CAAC,KAAa,EAAA;AAC5B,QAAA,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,KAAK,KAAK;IAC1D;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;AAC7B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;YACvD,OAAO,CAAA,8BAAA,EAAiC,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,CAAA,IAAA,CAAM;QACjE;AAEA,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,QAAQ,EAAE;AAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3D,OAAO,CAAA,8BAAA,EAAiC,CAAC,MAAM,GAAG,EAAE,IAAI,GAAG,CAAA,IAAA,CAAM;QACnE;AAEA,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE;QAC3D,OAAO,CAAA,8BAAA,EAAiC,CAAC,MAAM,GAAG,EAAE,IAAI,GAAG,CAAA,IAAA,CAAM;IACnE;AAEA,IAAA,IAAI,eAAe,GAAA;AACjB,QAAA,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE;AAC7B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAClD,OAAO,IAAI,GAAG,EAAE,GAAG,KAAK,GAAG,KAAK;QAClC;AAEA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,IAAI,iBAAiB,GAAA;AACnB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,EAAE;QACvD,OAAO,CAAA,8BAAA,EAAiC,CAAC,IAAI,GAAG,EAAE,IAAI,GAAG,CAAA,IAAA,CAAM;IACjE;AAEA,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAClD,QAAA,OAAO,IAAI,GAAG,EAAE,GAAG,iBAAiB,CAAC,uBAAuB,GAAG,iBAAiB,CAAC,uBAAuB;IAC1G;AAEA,IAAA,IAAI,mBAAmB,GAAA;AACrB,QAAA,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC9G,OAAO,CAAA,8BAAA,EAAiC,CAAC,MAAM,GAAG,EAAE,IAAI,GAAG,CAAA,IAAA,CAAM;IACnE;AAEA,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,iBAAiB,CAAC,wBAAwB;IACnD;AAEA,IAAA,IAAI,kBAAkB,GAAA;AACpB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAC1B,IAAI,EACJ,IAAI,GAAG,EAAE,GAAG,iBAAiB,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,kBAAkB,EACvF,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACjC;IACH;IAEQ,mBAAmB,CAAC,KAAU,EAAE,IAAa,EAAA;QACnD,MAAM,UAAU,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;AACjD,QAAA,IAAI,CAAC,MAAM,GAAG,UAAU;AAExB,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACnG,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACtH,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AAC1H,QAAA,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;QAE1H,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;YACzB,IAAI,CAAC,SAAS,EAAE;QAClB;IACF;IAEQ,gBAAgB,GAAA;AACtB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAE5D,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,YAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACnB;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAChK,QAAA,IAAI,CAAC,MAAM,GAAG,IAAI;AAClB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IACrB;AAEQ,IAAA,QAAQ,CAAC,KAAoB,EAAA;AACnC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,IAAI,GAAG,EAAE,EAAE,CAAC;AAChD,QAAA,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM;IAC1C;AAEQ,IAAA,cAAc,CAAC,IAAkC,EAAA;QACvD,QAAQ,IAAI;AACV,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,WAAW;AACzB,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,aAAa;AAC3B,YAAA;gBACE,OAAO,IAAI,CAAC,aAAa;;IAE/B;AAEQ,IAAA,cAAc,CAAC,IAAkC,EAAA;QACvD,OAAO,IAAI,KAAK,MAAM,GAAG,EAAE,GAAG,EAAE;IAClC;AAEQ,IAAA,sBAAsB,CAAC,KAAgC,EAAE,GAAW,EAAE,GAAY,EAAA;QACxF,MAAM,MAAM,GAAG,CAAA,EAAG,KAAK,IAAI,EAAE,CAAA,CAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,MAAM,EAAE;YACX,OAAO,GAAG,GAAG,IAAI,GAAG,EAAE;QACxB;QAEA,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;AAC1C,QAAA,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7E,QAAA,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE;IAC5F;AAEQ,IAAA,kBAAkB,CAAC,KAAU,EAAA;AACnC,QAAA,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AACzD,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,KAAK,YAAY,IAAI,EAAE;YACzB,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACzE;AAEA,QAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE;AAC3B,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QACnD;QAEA,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC1D,YAAA,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,IAAI,CAAC;AAClG,YAAA,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE;AAC1B,gBAAA,OAAO,YAAY,CAAC,MAAM,EAAE;YAC9B;AAEA,YAAA,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,IAAI,SAAS,EAAE,KAAK,CAAC;AACpG,YAAA,IAAI,aAAa,CAAC,OAAO,EAAE,EAAE;AAC3B,gBAAA,OAAO,aAAa,CAAC,MAAM,EAAE;YAC/B;AAEA,YAAA,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;QACnD;AAEA,QAAA,OAAO,IAAI;IACb;IAEQ,gBAAgB,GAAA;QACtB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,GAAG,EAAE,GAAG,iBAAiB,CAAC,kBAAkB,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5M;IAEQ,cAAc,GAAA;AACpB,QAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,KAAI;AAC7C,YAAA,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC;YACvB,MAAM,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC1D,YAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,uBAAuB;AACvG,YAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,uBAAuB;AACvG,YAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,uBAAuB;AACvG,YAAA,MAAM,EAAE,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,uBAAuB;AACvG,YAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,uBAAuB;AAC3G,YAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,CAAC,uBAAuB;YAC3G,OAAO;gBACL,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;gBACxC,EAAE,EAAE,CAAA,EAAG,EAAE,CAAA,CAAA,CAAG;gBACZ,EAAE,EAAE,CAAA,EAAG,EAAE,CAAA,CAAA,CAAG;gBACZ,EAAE,EAAE,CAAA,EAAG,EAAE,CAAA,CAAA,CAAG;gBACZ,EAAE,EAAE,CAAA,EAAG,EAAE,CAAA,CAAA,CAAG;gBACZ,SAAS,EAAE,CAAA,EAAG,MAAM,CAAA,CAAA,CAAG;gBACvB,QAAQ,EAAE,CAAA,EAAG,MAAM,CAAA,CAAA,CAAG;aACvB;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,KAAa,EAAE,MAAc,EAAE,KAAa,EAAA;QACnE,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AACjE,QAAA,MAAM,CAAC,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM;AACnE,QAAA,MAAM,CAAC,GAAG,iBAAiB,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM;QACnE,OAAO;AACL,YAAA,KAAK,EAAE,KAAK;YACZ,KAAK;YACL,IAAI,EAAE,CAAA,EAAG,CAAC,CAAA,CAAA,CAAG;YACb,GAAG,EAAE,CAAA,EAAG,CAAC,CAAA,CAAA;SACV;IACH;AA5ZW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,iBAAiB,kBA8CI,eAAe,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AA9CpC,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,CAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,IAAA,EAAA,MAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,SAAA,EATf;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,KAAK,EAAE,IAAI;AACX,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,iBAAiB;AAClD;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpBL,ggQA+NA,EAAA,MAAA,EAAA,CAAA,kgHAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED1Mc,mBAAmB,8mCAAEuB,cAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAEC,UAAQ,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,QAAQ,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,kBAAkB,mKAAE,mBAAmB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,KAAA,EAAA,UAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,SAAS,qHAAE,SAAS,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAEpI,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAd7B,SAAS;+BACI,gBAAgB,EAAA,UAAA,EACd,IAAI,EAAA,SAAA,EAGL;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,KAAK,EAAE,IAAI;AACX,4BAAA,WAAW,EAAE,UAAU,CAAC,uBAAuB;AAClD;AACJ,qBAAA,EAAA,OAAA,EACQ,CAAC,mBAAmB,EAAED,cAAY,EAAEC,UAAQ,EAAE,QAAQ,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,ggQAAA,EAAA,MAAA,EAAA,CAAA,kgHAAA,CAAA,EAAA;;0BAgDnI;;0BAAY,MAAM;2BAAC,eAAe;;sBArB9C,KAAK;uBAAC,OAAO;;sBACb,KAAK;uBAAC,SAAS;;sBACf,KAAK;uBAAC,aAAa;;sBACnB,KAAK;uBAAC,MAAM;;sBACZ;;;ME9CU,iBAAiB,CAAA;AAE5B,IAAA,WAAA,GAAA,EAAgB;+GAFL,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,iBAAiB;AAC3B,oBAAA,UAAU,EAAE;AACf,iBAAA;;;ACCK,MAAO,4BAA6B,SAAQ,gBAAgB,CAAA;AAGjE,IAAA,WAAA,CAA6B,IAAsB,EAAA;AAClD,QAAA,KAAK,EAAE;QADqB,IAAA,CAAA,IAAI,GAAJ,IAAI;QAMxB,IAAA,CAAA,aAAa,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAE,MAAc,KAAY;YACnF,IAAI,MAAM,KAAK,CAAC,IAAI,QAAQ,KAAK,CAAC,EAAE;AACnC,gBAAA,OAAO,CAAA,EAAA,EAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA,CAAA,EAAI,MAAM,EAAE;YAChE;AAEA,YAAA,MAAM,UAAU,GAAG,IAAI,GAAG,QAAQ;AAClC,YAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,QAAQ,EAAE,MAAM,CAAC;YACxD,OAAO,CAAA,EAAG,UAAU,GAAG,CAAC,IAAI,QAAQ,CAAA,CAAA,EAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAA,CAAA,EAAI,MAAM,EAAE;AAC5F,QAAA,CAAC;AAZA,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAClF,IAAI,CAAC,eAAe,EAAE;IACvB;IAYA,WAAW,GAAA;AACV,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE;IAChC;IAEQ,eAAe,GAAA;AACtB,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,gBAAgB,CAAC;AACxF,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,WAAW,CAAC;AAC1E,QAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,eAAe,CAAC;AACtF,QAAA,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,YAAY,CAAC;AAC7E,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,WAAW,CAAC;AAC1E,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;IACpB;+GA9BY,4BAA4B,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAtB,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA5B,4BAA4B,EAAA,CAAA,CAAA;;4FAA5B,4BAA4B,EAAA,UAAA,EAAA,CAAA;kBADxC;;;MC4EY,uCAAuC,CAAA;AAMlD,IAAA,WAAA,CACmB,WAA+B,EAC/B,SAAsG,EAC9E,IAAwC,EAChE,SAAuB,EAAA;QAHvB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,SAAS,GAAT,SAAS;QACe,IAAA,CAAA,IAAI,GAAJ,IAAI;QAC5B,IAAA,CAAA,SAAS,GAAT,SAAS;QAP5B,IAAA,CAAA,iBAAiB,GAAkB,IAAI;QACvC,IAAA,CAAA,gBAAgB,GAAa,EAAE;QAQ7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;IACxC;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,cAAc,EAAE;QACrB,IAAI,CAAC,yBAAyB,EAAE;IAClC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,iBAAiB,EAAE,KAAK,EAAE;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;IACxB;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrB,YAAA,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC5B;QACF;AAEA,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;IACxD;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC1B;QACF;AAEA,QAAA,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,qBAAqB,CAAC;IAC9F;AAEA,IAAA,OAAO,CAAC,IAAY,EAAA;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAuB;IAClD;AAEA,IAAA,iBAAiB,CAAC,MAAoC,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;IACrC;IAEQ,cAAc,GAAA;AACpB,QAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,YAAA,KAAK,eAAe;AAClB,gBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;gBACjF;AACF,YAAA,KAAK,cAAc;AACjB,gBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,IAAG;oBACzC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;AAC9C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC;AACrC,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AAChE,gBAAA,CAAC,CAAC;gBACF;AACF,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,UAAU;AACb,gBAAA,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,KAAK,IAAG;AACvC,oBAAA,IAAI,CAAC,IAAI,CAAC,UAAU,CAClB,KAAK,CAAC,IAAI,EACV,IAAI,kBAAkB,CACpB,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAC/B,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,GAAG,IAAI,CAC5C,CACF;AACH,gBAAA,CAAC,CAAC;gBACF;;IAEN;IAEQ,yBAAyB,GAAA;AAC/B,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YAC3D;QACF;QAEA,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,QAAQ,EAAE;YAC3C,IAAI,CAAC,oBAAoB,EAAE;YAC3B;QACF;AAEA,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7F;AAEQ,IAAA,mBAAmB,CAAC,KAAgC,EAAA;AAC1D,QAAA,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;YACpC,OAAO,KAAK,CAAC,YAAY;QAC3B;AAEA,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC;AAC7D,QAAA,IAAI,YAAY,KAAK,SAAS,EAAE;AAC9B,YAAA,OAAO,YAAY;QACrB;AAEA,QAAA,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,GAAG,KAAK,GAAG,IAAI;IAChD;IAEQ,YAAY,GAAA;QAClB,MAAM,OAAO,GAAwB,EAAE;AAEvC,QAAA,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,KAAK,eAAe,EAAE;gBACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM;gBACpD,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,aAAa,CAAC;AAC/F,gBAAA,OAAO,CAAC,QAAQ,GAAG,aAAa;AAChC,gBAAA,OAAO,CAAC,MAAM,GAAG,aAAa;gBAC9B,OAAO,CAAC,aAAa,GAAG,cAAc,EAAE,KAAK,IAAI,aAAa;AAC9D,gBAAA,IAAI,cAAc,EAAE,SAAS,EAAE;AAC7B,oBAAA,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,GAAG,IAAI;gBAC1C;gBACA;YACF;YACA,KAAK,cAAc,EAAE;AACnB,gBAAA,MAAM,eAAe,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,MAAM,CAAC,MAAM,IAAG;oBAChE,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;oBAC9C,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC;AAC7C,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,CAAC,SAAS,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;gBAC/D,OAAO,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;AACxC,gBAAA,OAAO,CAAC,cAAc,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;AACpE,gBAAA,eAAe,CAAC,OAAO,CAAC,MAAM,IAAG;oBAC/B,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI;AAClD,gBAAA,CAAC,CAAC;gBACF;YACF;AACA,YAAA,KAAK,OAAO;AACZ,YAAA,KAAK,UAAU;AACb,gBAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC/C;;AAGJ,QAAA,OAAO,OAAO;IAChB;AAEQ,IAAA,eAAe,CAAC,MAAoC,EAAA;AAC1D,QAAA,OAAO,MAAM,CAAC,SAAS,IAAI,CAAA,OAAA,EAAU,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAAE;IACpF;AA9IW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,uCAAuC,oFASxC,eAAe,EAAA,EAAA,EAAA,KAAA,EAAAW,IAAA,CAAA,YAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AATd,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,uCAAuC,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,wCAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjFpD,4sIAoGA,EAAA,MAAA,EAAA,CAAA,2vBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDnCI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACZ,mBAAmB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAb,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,8CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,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,oBAAA,EAAA,QAAA,EAAA,0FAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,UAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACnB,aAAa,EAAA,QAAA,EAAA,mCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,cAAc,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,IAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACd,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,gBAAgB,EAAA,QAAA,EAAA,8DAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAChB,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAmB,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,iBAAiB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAd,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,eAAA,EAAA,WAAA,EAAA,IAAA,EAAA,UAAA,EAAA,eAAA,EAAA,MAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACjB,kBAAkB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAClB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAoB,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,yHAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,IAAA,EAAA,aAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,mBAAA,EAAA,kBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,SAAA,EAAA,OAAA,EAAA,eAAA,EAAA,UAAA,EAAA,UAAA,EAAA,OAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACd,eAAe,gtBACf,iBAAiB,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,aAAA,EAAA,MAAA,EAAA,aAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGR,uCAAuC,EAAA,UAAA,EAAA,CAAA;kBAtBnD,SAAS;+BACE,wCAAwC,EAAA,UAAA,EACtC,IAAI,EAAA,OAAA,EAGP;wBACP,YAAY;wBACZ,mBAAmB;wBACnB,aAAa;wBACb,cAAc;wBACd,gBAAgB;wBAChB,gBAAgB;wBAChB,eAAe;wBACf,iBAAiB;wBACjB,kBAAkB;wBAClB,aAAa;wBACb,cAAc;wBACd,cAAc;wBACd,eAAe;wBACf;AACD,qBAAA,EAAA,QAAA,EAAA,4sIAAA,EAAA,MAAA,EAAA,CAAA,2vBAAA,CAAA,EAAA;;0BAWE,MAAM;2BAAC,eAAe;;;MErBd,0BAA0B,CAAA;AAUrC,IAAA,WAAA,CAC2C,YAIxC,EACgB,qBAA4C,EAC5C,IAAsB,EACtB,MAAiB,EAAA;QAPO,IAAA,CAAA,YAAY,GAAZ,YAAY;QAKpC,IAAA,CAAA,qBAAqB,GAArB,qBAAqB;QACrB,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,MAAM,GAAN,MAAM;AAdzB,QAAA,IAAA,CAAA,gBAAgB,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC;AACtF,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,kBAAkB,CAAqB,EAAE,CAAC;QAC3D,IAAA,CAAA,OAAO,GAAG,KAAK;QACf,IAAA,CAAA,YAAY,GAAG,EAAE;IAYd;IAEH,QAAQ,GAAA;QACN,IAAI,CAAC,UAAU,CAAC,mBAAmB,GAAG,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC3F,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAChC,IAAI,CAAC,eAAe,EAAE;IACxB;IAEA,eAAe,GAAA;QACb,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;IAC5C;IAEA,CAAC,CAAC,GAAW,EAAE,QAAgB,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC;IACzC;IAEA,eAAe,GAAA;AACb,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE;AAC/B,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI;AACnB,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AAEtB,QAAA,IAAI,CAAC,YAAY,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC,IAAI,CAC3D,UAAU,CAAC,KAAK,IAAG;AACjB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI,CAAA,EAAG,KAAK,EAAE;AACzE,YAAA,OAAO,EAAE,CAAC,EAAE,CAAC;AACf,QAAA,CAAC,CAAC,EACF,QAAQ,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,OAAO,GAAG,KAAK;QACtB,CAAC,CAAC,CACH,CAAC,SAAS,CAAC,CAAC,KAA2B,KAAI;YAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;AAC7E,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;YAC5C;AACF,QAAA,CAAC,CAAC;IACJ;IAEA,MAAM,aAAa,CAAC,cAAkC,EAAA;QACpD,MAAM,UAAU,GAAG,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,WAAW,EAAE,UAAU;QACtF,IAAI,CAAC,UAAU,EAAE;YACf;QACF;AAEA,QAAA,IAAI,CAAC,gBAAgB,GAAG,UAAU;AAClC,QAAA,IAAI;AACF,YAAA,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAa;YAC9F,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;YAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE;AAC1E,gBAAA,KAAK,EAAE,gCAAgC;AACvC,gBAAA,QAAQ,EAAE,oBAAoB;AAC9B,gBAAA,SAAS,EAAE,oBAAoB;AAC/B,gBAAA,YAAY,EAAE,IAAI;AAClB,gBAAA,SAAS,EAAE,KAAK;AAChB,gBAAA,IAAI,EAAE;AACP,aAAA,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;AAC5D,YAAA,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE;gBACpB;YACF;AAEA,YAAA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAuB;AACtE,YAAA,MAAM,OAAO,GAAwB;AACnC,gBAAA,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;gBACtC,GAAG,MAAM,CAAC,OAAO;AACjB,gBAAA,UAAU,EAAE,WAAW,EAAE,QAAQ,IAAI,EAAE;AACvC,gBAAA,YAAY,EAAE;aACf;AAED,YAAA,MAAM,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAC3E,IAAI,CAAC,eAAe,EAAE;QACxB;QAAE,OAAO,KAAU,EAAE;AACnB,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,IAAI,CAAA,EAAG,KAAK,EAAE;QAC3E;gBAAU;AACR,YAAA,IAAI,CAAC,gBAAgB,GAAG,SAAS;QACnC;IACF;AAEA,IAAA,YAAY,CAAC,cAAkC,EAAA;AAC7C,QAAA,OAAO,cAAc,CAAC,WAAW,EAAE;eAC9B,cAAc,CAAC,WAAW,EAAE;AAC5B,eAAA,CAAA,EAAG,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAA,EAAA,EAAK,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,YAAY,EAAE;IAC/G;AAEA,IAAA,kBAAkB,CAAC,cAAkC,EAAA;QACnD,MAAM,SAAS,GAAG,cAAc,CAAC,WAAW,EAAE,kBAAkB,EAAE,cAAc;AAChF,QAAA,IAAI,CAAC,SAAS,EAAE,YAAY,EAAE;AAC5B,YAAA,OAAO,EAAE;QACX;QAEA,OAAO,SAAS,CAAC;cACb,GAAG,SAAS,CAAC,YAAY,CAAA,EAAA,EAAK,SAAS,CAAC,SAAS,CAAA,CAAA;AACnD,cAAE,SAAS,CAAC,YAAY;IAC5B;AAEA,IAAA,cAAc,CAAC,cAAkC,EAAA;AAC/C,QAAA,OAAO,cAAc,CAAC,WAAW,EAAE;AAC9B,eAAA,cAAc,CAAC;AACf,eAAA,EAAE;IACT;AAEA,IAAA,kBAAkB,CAAC,cAAkC,EAAA;AACnD,QAAA,MAAM,IAAI,GAAG,cAAc,CAAC;cACxB,IAAI,CAAC,CAAC,CAAC,mBAAmB,EAAE,aAAa;cACzC,IAAI,CAAC,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC;QAE1C,OAAO,CAAA,EAAG,cAAc,CAAC,MAAM,GAAG,CAAA,EAAG,cAAc,CAAC,MAAM,CAAA,EAAA,CAAI,GAAG,EAAE,CAAA,EAAG,cAAc,CAAC,QAAQ,IAAI,EAAE,CAAA,EAAA,EAAK,IAAI,CAAA,CAAA,CAAG;IACjH;AAEA,IAAA,UAAU,CAAC,cAAkC,EAAA;AAC3C,QAAA,OAAO,CAAC,EAAE,cAAc,CAAC,UAAU,IAAI,cAAc,CAAC,WAAW,EAAE,UAAU;AACxE,eAAA,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC;IACzC;IAEQ,UAAU,GAAA;AAChB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,gBAAuB;QACtE,MAAM,KAAK,GAAwB,EAAE;AAErC,QAAA,IAAI,WAAW,EAAE,QAAQ,EAAE;AACzB,YAAA,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ;QACvC;AAEA,QAAA,IAAI,WAAW,EAAE,MAAM,EAAE;AACvB,YAAA,KAAK,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM;QACnC;AAEA,QAAA,KAAK,CAAC,MAAM,GAAG,SAAS;AAExB,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,aAAa,CAAC,cAAkC,EAAA;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE;AAChE,QAAA,OAAO,MAAM,KAAK,EAAE,IAAI,MAAM,KAAK,SAAS;IAC9C;IAEQ,YAAY,CAAC,IAAwB,EAAE,QAAgB,EAAA;QAC7D,QAAQ,QAAQ;AACd,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;AAC9C,YAAA,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;AACpD,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;AAChD,YAAA,KAAK,SAAS;AACZ,gBAAA,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,IAAI,EAAE,EAAE,WAAW,EAAE;AACxD,YAAA,KAAK,YAAY;gBACf,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;AACpD,YAAA;AACE,gBAAA,OAAO,IAAI,CAAC,YAAY,IAAI,CAAC;;IAEnC;AAEQ,IAAA,eAAe,CAAC,IAAc,EAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/C,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC;AAC5D,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC;AACvE,QAAA,MAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC;QAEzE,IAAI,cAAc,EAAE;YAClB,OAAO;AACL,gBAAA,IAAI,EAAE,UAAU;AAChB,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;gBAC3F,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM;gBACN,gBAAgB;gBAChB,WAAW,EAAE,cAAc,CAAC,GAAG;gBAC/B,gBAAgB,EAAE,cAAc,CAAC,QAAQ;gBACzC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC;gBAC1C,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC;gBAC9C,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC,4BAA4B,EAAE,sBAAsB,CAAC;gBACjF,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,EAAE,eAAe,CAAC;gBACrE,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,4CAA4C,EAAE,0DAA0D;aACvI;QACH;QAEA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,MAAM,GAAG,EAAE;YAClC,OAAO;AACL,gBAAA,IAAI,EAAE,cAAc;AACpB,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;gBAC3F,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;gBACxC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;gBAC/D,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC;AAC9C,gBAAA,mBAAmB,EAAE,EAAE;AACvB,gBAAA,qBAAqB,EAAE,EAAE;AACzB,gBAAA,qBAAqB,EAAE;aACxB;QACH;QAEA,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE;YACjE,OAAO;AACL,gBAAA,IAAI,EAAE,eAAe;AACrB,gBAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;gBAC3F,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC;gBACxC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;gBAC/D,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC;AAC9C,gBAAA,mBAAmB,EAAE,EAAE;AACvB,gBAAA,qBAAqB,EAAE,EAAE;AACzB,gBAAA,qBAAqB,EAAE;aACxB;QACH;QAEA,OAAO;AACL,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,KAAK,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;YAC3F,OAAO,EAAE,IAAI,CAAC,OAAO;AACrB,YAAA,MAAM,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC;AACpC,oBAAA,IAAI,EAAE,UAAU;oBAChB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,UAAU,CAAC;AAC3C,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,IAAI,EAAE;iBACP,CAAC;YACF,gBAAgB;YAChB,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;YAC/D,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC;AAC9C,YAAA,mBAAmB,EAAE,EAAE;AACvB,YAAA,qBAAqB,EAAE,EAAE;AACzB,YAAA,qBAAqB,EAAE;SACxB;IACH;AAEQ,IAAA,YAAY,CAAC,UAAmB,EAAA;AACtC,QAAA,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE;AACvB,YAAA,OAAO,EAAE;QACX;QAEA,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AAClD,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;AAC7B,YAAA,OAAO;iBACJ,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;iBAC1C,MAAM,CAAC,CAAC,MAAM,KAA6C,CAAC,CAAC,MAAM,CAAC;QACzE;AAEA,QAAA,OAAO;aACJ,KAAK,CAAC,OAAO;aACb,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE;aACvB,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI;aACrB,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;aACtC,MAAM,CAAC,CAAC,MAAM,KAA6C,CAAC,CAAC,MAAM,CAAC;IACzE;AAEQ,IAAA,eAAe,CAAC,MAAW,EAAA;AACjC,QAAA,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;YAC9B,MAAM,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAA,CAAE;AACnG,YAAA,MAAM,KAAK,GAAG,CAAA,EAAG,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,EAAE;YACvD,OAAO;gBACL,KAAK;gBACL,KAAK;AACL,gBAAA,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC;aACvC;QACH;QAEA,MAAM,IAAI,GAAG,CAAA,EAAG,MAAM,EAAE,CAAC,IAAI,EAAE;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC;QACxD,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;QACrC;QAEA,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;QAC7B,OAAO;YACL,KAAK;YACL,KAAK;YACL,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG;SAC/C;IACH;AAEQ,IAAA,cAAc,CAAC,QAAiB,EAAA;AACtC,QAAA,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE;AACrB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI;AACF,YAAA,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC7B;AAAE,QAAA,MAAM;AACN,YAAA,OAAO,IAAI;QACb;IACF;AAEQ,IAAA,cAAc,CAAC,QAAiB,EAAA;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;AAC5C,QAAA,OAAO,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;AAClE,cAAE;cACA,EAAE;IACR;AAEQ,IAAA,eAAe,CAAC,MAAW,EAAE,QAAa,EAAE,gBAAqC,EAAA;AACvF,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM;AACpC,cAAE;cACA,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;kBAC1B,MAAM,CAAC;AACT,kBAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;AACtB,sBAAE;sBACA,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM;0BAC5B,QAAQ,CAAC;0BACT,EAAE;AAEZ,QAAA,OAAO;AACJ,aAAA,GAAG,CAAC,CAAC,KAAU,KAAK,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC;aAChE,MAAM,CAAC,CAAC,KAAuC,KAAyC,CAAC,CAAC,KAAK,CAAC;IACrG;IAEQ,cAAc,CAAC,KAAU,EAAE,gBAAqC,EAAA;QACtE,IAAI,CAAC,KAAK,EAAE;AACV,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC7B,OAAO;AACL,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,KAAK;AACZ,gBAAA,IAAI,EAAE,MAAM;AACZ,gBAAA,YAAY,EAAE,gBAAgB,CAAC,KAAK;aACrC;QACH;AAEA,QAAA,MAAM,OAAO,GAAsD;AACjE,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,UAAU;AACpB,YAAA,IAAI,EAAE,UAAU;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,IAAI,EAAE,SAAS;AACf,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,MAAM,EAAE,QAAQ;AAChB,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE;SACX;AAED,QAAA,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;QAChD,IAAI,CAAC,IAAI,EAAE;AACT,YAAA,OAAO,IAAI;QACb;QAEA,OAAO;YACL,IAAI;YACJ,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,IAAI,IAAI;AACzC,YAAA,IAAI,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,MAAM,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,IAAI,MAAM;AACxE,YAAA,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;AAC9B,YAAA,YAAY,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,KAAK;YACzE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO;AAClC,kBAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,MAAM;oBAClC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,GAAG,IAAI,MAAM;AAC7C,oBAAA,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,IAAI;AAC1D,iBAAA,CAAC;AACJ,kBAAE;SACL;IACH;AAEQ,IAAA,qBAAqB,CAAC,IAAc,EAAE,MAAW,EAAE,QAAa,EAAA;AACtE,QAAA,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AACrI,QAAA,MAAM,SAAS,GAAG,CAAA,EAAG,eAAe,EAAE,GAAG,IAAI,eAAe,EAAE,IAAI,IAAI,eAAe,EAAE,WAAW,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAA,CAAE,CAAC,IAAI,EAAE;QAE7I,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;AACjC,YAAA,OAAO,IAAI;QACb;QAEA,MAAM,aAAa,GAAG,CAAA,EAAG,eAAe,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,WAAW,EAAE;AAC9H,QAAA,MAAM,QAAQ,GAAG,eAAe,EAAE,SAAS,KAAK;AAC3C,eAAA,aAAa,KAAK;AAClB,eAAA,aAAa,KAAK;AAClB,eAAA,aAAa,KAAK;AACrB,cAAE;cACA,QAAQ;QAEZ,OAAO;AACL,YAAA,GAAG,EAAE,SAAS;YACd;SACD;IACH;AAEQ,IAAA,YAAY,CAAC,KAAc,EAAA;AACjC,QAAA,OAAO,CAAC,CAAC,KAAK,IAAI,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC3D;AAnZW,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAW3B,cAAc,EAAA,EAAA,EAAA,KAAA,EAAAX,qBAAA,EAAA,EAAA,EAAA,KAAA,EAAAY,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAb,IAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAXb,0BAA0B,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAC1B,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,WAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACP,YAAY,gDCvEzB,+gHAkFA,EAAA,MAAA,EAAA,CAAA,icAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvBI,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAM,IAAA,CAAA,SAAA,EAAA,QAAA,EAAA,iOAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,QAAA,EAAA,CAAA,WAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,aAAa,2hBACb,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,SAAA,EAAA,SAAA,EAAA,UAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACf,kBAAkB,mSAClB,wBAAwB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,mCAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,EAAA,OAAA,EAAA,UAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACxB,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,qBAAA,EAAA,iBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,UAAA,EAAA,uBAAA,EAAA,cAAA,CAAA,EAAA,QAAA,EAAA,CAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,cAAc,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,QAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,uBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,UAAA,EAAA,QAAA,EAAA,cAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,SAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,aAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,OAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,YAAA,EAAA,QAAA,EAAA,oCAAA,EAAA,QAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,GAAA,CAAA,MAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,QAAA,EAAA,CAAA,QAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;4FAGL,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBAftC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,EAAA,OAAA,EAG1B;wBACP,eAAe;wBACf,aAAa;wBACb,aAAa;wBACb,eAAe;wBACf,kBAAkB;wBAClB,wBAAwB;wBACxB,aAAa;wBACb;AACD,qBAAA,EAAA,QAAA,EAAA,+gHAAA,EAAA,MAAA,EAAA,CAAA,icAAA,CAAA,EAAA;;0BAaE,MAAM;2BAAC,cAAc;;sBAVvB,SAAS;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;;sBACnC,SAAS;uBAAC,YAAY;;;MEnEH,uBAAuB,CAAA;AAG3C,IAAA,WAAA,CAAoB,YAAyB,EAAA;QAAzB,IAAA,CAAA,YAAY,GAAZ,YAAY;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;AACxC,YAAA,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;AACzB,SAAA,CAAC;IACJ;AAIA,IAAA,MAAM,CAAC,IAAK,EAAA;AACV,QAAA,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAkB;AAClD,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;AACzE,QAAA,IAAI,CAAC,aAAa,EAAE,CAAC,MAAM,GAAG,UAAU;IAC1C;AAGD;;ACjBD;;;;;;;;;;;;AAYG;MAGU,mBAAmB,CAAA;AAC9B,IAAA,aAAa,CAAC,SAA0B,EAAA;QACtC,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,EAAE,EAAE;AAC1D,YAAA,OAAO,OAAO,CAAC,+EAA+E,CAAC;QACjG;AACA,QAAA,OAAO,IAAI;IACb;+GANW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAAnB,mBAAmB,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAD/B;;;AC+CM,MAAM,6BAA6B,GAAG;IACzC,kBAAkB;IAClB,YAAY;IACZ,uBAAuB;IACvB,eAAe;IACf,oBAAoB;IACpB,mBAAmB;IACnB,qBAAqB;IACrB,eAAe;IACf,UAAU;IACV,kBAAkB;IAClB,qBAAqB;IACrB,mBAAmB;IACnB,mBAAmB;IACnB,cAAc;IACd,mBAAmB;IACnB,iBAAiB;IACjB,iBAAiB;IACjB,gBAAgB;IAChB,yBAAyB;IACzB,gBAAgB;IAChB,cAAc;IACd,eAAe;IACf,qBAAqB;IACrB,iBAAiB;IACjB,0BAA0B;IAC1B,cAAc;IACd,iBAAiB;IACjB;;AAGG,MAAM,oBAAoB,GAAG;AAChC,IAAA,GAAG,6BAA6B;IAChC,mBAAmB;IACnB,0BAA0B;IAC1B,yBAAyB;IACzB;;AAGJ,SAAS,iBAAiB,CAAC,mBAAyC,EAAA;IAChE,OAAO;QACH,mBAAmB;QACnB,UAAU;QACV,uBAAuB;AACvB,QAAA;AACI,YAAA,OAAO,EAAE,mBAAmB;AAC5B,YAAA,QAAQ,EAAE;AACb,SAAA;AACD,QAAA,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,IAAI;KAC7C;AACL;AAEM,SAAU,YAAY,CAAC,mBAAyC,EAAA;AAClE,IAAA,OAAO,wBAAwB,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,CAAC;AAC3E;MAmCa,WAAW,CAAA;IACf,OAAO,OAAO,CAAC,mBAAyC,EAAA;AAC7D,QAAA,OAAO,CAAC,GAAG,CAAC,WAAW,mBAAmB,CAAA,CAAE,CAAC;QAC7C,OAAO;AACL,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,SAAS,EAAE,iBAAiB,CAAC,mBAAmB;SACjD;IACH;+GAPW,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,YA/BhB,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,aAAa;YACb,eAAe;YACf,aAAa;YACb,wBAAwB;YACxB,oBAAoB;YACpB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,aAAa;YACb,wBAAwB;YACxB,qBAAqB;YACrB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;AACnB,YAAA,0BAA0B;AAC1B,YAAA,yBAAyB;AACzB,YAAA,sBAAsB;;YAEtB,cAAc;AACd,YAAA,wBAAwB,EAlF5B,kBAAkB;YAClB,YAAY;YACZ,uBAAuB;YACvB,eAAe;YACf,oBAAoB;YACpB,mBAAmB;YACnB,qBAAqB;YACrB,eAAe;YACf,UAAU;YACV,kBAAkB;YAClB,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,cAAc;YACd,mBAAmB;YACnB,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;YAChB,yBAAyB;YACzB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,iBAAiB;YACjB,0BAA0B;YAC1B,cAAc;YACd,iBAAiB;AACjB,YAAA,mBAAmB,aA3BnB,kBAAkB;YAClB,YAAY;YACZ,uBAAuB;YACvB,eAAe;YACf,oBAAoB;YACpB,mBAAmB;YACnB,qBAAqB;YACrB,eAAe;YACf,UAAU;YACV,kBAAkB;YAClB,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YACnB,cAAc;YACd,mBAAmB;YACnB,iBAAiB;YACjB,iBAAiB;YACjB,gBAAgB;YAChB,yBAAyB;YACzB,gBAAgB;YAChB,cAAc;YACd,eAAe;YACf,qBAAqB;YACrB,iBAAiB;YACjB,0BAA0B;YAC1B,cAAc;YACd,iBAAiB;AACjB,YAAA,mBAAmB,EAKnB,mBAAmB;YACnB,0BAA0B;YAC1B,yBAAyB;YACzB,sBAAsB,CAAA,EAAA,CAAA,CAAA;AAqDb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,EAAA,SAAA,EAHT,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC,YA5B9E,YAAY;YACZ,YAAY;YACZ,WAAW;YACX,mBAAmB;YACnB,eAAe;YACf,cAAc;YACd,aAAa;YACb,eAAe;YACf,aAAa;YACb,wBAAwB;YACxB,oBAAoB;YACpB,cAAc;YACd,eAAe;YACf,kBAAkB;YAClB,aAAa;YACb,wBAAwB;YACxB,qBAAqB;YACrB,gBAAgB;YAChB,mBAAmB;YACnB,mBAAmB;AACnB,YAAA,0BAA0B;AAC1B,YAAA,yBAAyB;AACzB,YAAA,sBAAsB;;YAEtB,cAAc;AACd,YAAA,wBAAwB,EAlF5B,kBAAkB;YAElB,uBAAuB;YAIvB,qBAAqB;YACrB,eAAe;YAGf,qBAAqB;YACrB,mBAAmB;YACnB,mBAAmB;YAEnB,mBAAmB;YAEnB,iBAAiB;YACjB,gBAAgB;YAChB,yBAAyB;YAGzB,eAAe;YACf,qBAAqB;YACrB,iBAAiB;YACjB,0BAA0B;AAG1B,YAAA,mBAAmB,EAKnB,mBAAmB;YACnB,0BAA0B;YAE1B,sBAAsB,CAAA,EAAA,CAAA,CAAA;;4FAqDb,WAAW,EAAA,UAAA,EAAA,CAAA;kBAjCvB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACN,oBAAA,OAAO,EAAE;wBACL,YAAY;wBACZ,YAAY;wBACZ,WAAW;wBACX,mBAAmB;wBACnB,eAAe;wBACf,cAAc;wBACd,aAAa;wBACb,eAAe;wBACf,aAAa;wBACb,wBAAwB;wBACxB,oBAAoB;wBACpB,cAAc;wBACd,eAAe;wBACf,kBAAkB;wBAClB,aAAa;wBACb,wBAAwB;wBACxB,qBAAqB;wBACrB,gBAAgB;wBAChB,mBAAmB;wBACnB,mBAAmB;AACnB,wBAAA,0BAA0B;AAC1B,wBAAA,yBAAyB;AACzB,wBAAA,sBAAsB;;wBAEtB,cAAc;wBACd,wBAAwB;AACxB,wBAAA,GAAG;AACN,qBAAA;oBACD,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,4BAA4B,EAAE,CAAC;AAClF,oBAAA,OAAO,EAAE,CAAC,GAAG,oBAAoB;AACpC,iBAAA;;;MCrJY,oBAAoB,CAAA;AAE/B,IAAA,WAAA,GAAA,EAAgB;+GAFL,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,cAFnB,MAAM,EAAA,CAAA,CAAA;;4FAEP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCFY,eAAe,CAAA;IACnB,OAAO,QAAQ,CAAC,OAAwB,EAAA;AAC7C,QAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;AACrC,YAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,OAAO,CAAC,OAAwB,EAAA;QAC5C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,4aAA4a;QACrb,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE;QAC/B;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,SAAS,CAAC,OAAwB,EAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,iBAAiB;AAC1B,QAAA,IAAI,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,MAAM,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;AACrH,YAAA,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE;QACjC;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,QAAQ,CAAC,OAAwB,EAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,sCAAsC;AAC/C,QAAA,IAAI,CAAC,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,MAAM,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE;AACrH,YAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,KAAK,CAAC,OAAwB,EAAA;QAC1C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,kLAAkL;QAC3L,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,MAAM,CAAC,OAAwB,EAAA;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,kKAAkK;QAC3K,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IACO,OAAO,WAAW,CAAC,OAAwB,EAAA;QAChD,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,2KAA2K;QACpL,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,MAAM,CAAC,OAAwB,EAAA;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,upBAAupB;QAChqB,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IACO,OAAO,WAAW,CAAC,OAAwB,EAAA;QAChD,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,gqBAAgqB;QACzqB,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,SAAS,CAAC,OAAwB,EAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,oEAAoE;QAC7E,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,sBAAsB,CAAC,OAAwB,EAAA;QAC3D,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;QAC/B,IAAI,EAAE,GAAG,6JAA6J;QACtK,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;AAC5E,YAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE;QAC7B;AACA,QAAA,OAAO,IAAI;IACb;IAEO,OAAO,MAAM,CAAC,OAAwB,EAAA;QAC3C,IAAI,CAAC,OAAO,CAAC,KAAK;AAAE,YAAA,OAAO,IAAI;AAC/B,QAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;AAAE,YAAA,OAAO,IAAI;QAAE;AACtD,QAAA,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE;AACrC,YAAA,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE;QAC9B;AACA,QAAA,IAAI;YACF,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC;QAAE,OAAO,EAAE,EAAE;AACX,YAAA,OAAO,EAAE,aAAa,EAAE,IAAI,EAAE;QAChC;AACA,QAAA,OAAO,IAAI;IACb;AAED;;AChHD;;AAEG;;ACFH;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"gloww-gloww.mjs","sources":["../../../projects/gloww/src/lib/Services/gloww.service.ts","../../../projects/gloww/src/lib/Services/version-check.service.ts","../../../projects/gloww/src/lib/Directives/route.directive.ts","../../../projects/gloww/src/lib/Pipes/safe-html.pipe.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.ts","../../../projects/gloww/src/lib/Components/confirmation/confirmation.component.html","../../../projects/gloww/src/lib/Services/dialog.service.ts","../../../projects/gloww/src/lib/Services/nav.service.ts","../../../projects/gloww/src/lib/Services/voice-recognition.service.ts","../../../projects/gloww/src/lib/Components/secure-img/secure-img.component.ts","../../../projects/gloww/src/lib/Directives/file-sink.directive.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.ts","../../../projects/gloww/src/lib/Components/upload-file/upload-file.component.html","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.ts","../../../projects/gloww/src/lib/Components/upload-doc/upload-doc.component.html","../../../projects/gloww/src/lib/Components/search-form/search-form.component.ts","../../../projects/gloww/src/lib/Components/search-form/search-form.component.html","../../../projects/gloww/src/lib/Components/header/header.component.ts","../../../projects/gloww/src/lib/Components/header/header.component.html","../../../projects/gloww/src/lib/Components/result-table/result-table.component.ts","../../../projects/gloww/src/lib/Components/result-table/result-table.component.html","../../../projects/gloww/src/lib/Services/gloww-i18n.service.ts","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.ts","../../../projects/gloww/src/lib/Components/filter-form/filter-form.component.html","../../../projects/gloww/src/lib/gloww-security/Models/oauthassociation.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication-service-config.ts","../../../projects/gloww/src/lib/gloww-security/Services/authentication.service.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.ts","../../../projects/gloww/src/lib/Components/display-objects/display-objects.component.html","../../../projects/gloww/src/lib/Components/prompt/prompt.component.ts","../../../projects/gloww/src/lib/Components/prompt/prompt.component.html","../../../projects/gloww/src/lib/Pipes/retry-with-delay.ts","../../../projects/gloww/src/lib/Pipes/secure.pipe.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.ts","../../../projects/gloww/src/lib/Components/menu-list-item/menu-list-item.component.html","../../../projects/gloww/src/lib/Services/snippets.service.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.ts","../../../projects/gloww/src/lib/Components/code-editor/code-editor.component.html","../../../projects/gloww/src/lib/Pipes/html-format.pipe.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network/social-network.component.html","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/login/login.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/jwt.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/error.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/change-password-dlg/change-password-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/social-network-dlg/social-network-dlg.component.html","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.ts","../../../projects/gloww/src/lib/gloww-security/Components/user-menu/user-menu.component.html","../../../projects/gloww/src/lib/gloww-security/Helpers/staging.interceptor.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/auth.guard.ts","../../../projects/gloww/src/lib/gloww-security/Helpers/administrator.guard.ts","../../../projects/gloww/src/lib/gloww-security/gloww-security.module.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.ts","../../../projects/gloww/src/lib/Components/html-editor/html-editor.component.html","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.ts","../../../projects/gloww/src/lib/Components/folders/file-edit/file-edit.component.html","../../../projects/gloww/src/lib/Services/folder-service-config.ts","../../../projects/gloww/src/lib/Services/folder.service.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.ts","../../../projects/gloww/src/lib/Components/folders/folders/folders.component.html","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.ts","../../../projects/gloww/src/lib/Components/download-progress/download-progress.component.html","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.ts","../../../projects/gloww/src/lib/Components/secure-a/secure-a.component.html","../../../projects/gloww/src/lib/Components/dummy/dummy.component.ts","../../../projects/gloww/src/lib/Components/dummy/dummy.component.html","../../../projects/gloww/src/lib/Components/select/select.component.ts","../../../projects/gloww/src/lib/Components/select/select.component.html","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.ts","../../../projects/gloww/src/lib/Components/auto-complete/auto-complete.component.html","../../../projects/gloww/src/lib/Components/datetime/datetime.component.ts","../../../projects/gloww/src/lib/Components/datetime/datetime.component.html","../../../projects/gloww/src/lib/Directives/callback.directive.ts","../../../projects/gloww/src/lib/Services/gloww-mat-paginator-intl.service.ts","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-task-response-dialog.component.ts","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-task-response-dialog.component.html","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-tasks.component.ts","../../../projects/gloww/src/lib/Components/assigned-user-tasks/assigned-user-tasks.component.html","../../../projects/gloww/src/lib/Components/base-collection/base-collection.component.ts","../../../projects/gloww/src/lib/Guards/has-unsaved-data.guard.ts","../../../projects/gloww/src/lib/gloww.module.ts","../../../projects/gloww/src/lib/gloww-security/Services/gloww-security.service.ts","../../../projects/gloww/src/lib/Helpers/gloww-validators.ts","../../../projects/gloww/src/public-api.ts","../../../projects/gloww/src/gloww-gloww.ts"],"sourcesContent":["import { Injectable, InjectionToken, Injector } from '@angular/core';\nimport { firstValueFrom, Subject } from 'rxjs';\nimport { HttpClient, HttpParams } from '@angular/common/http';\nimport { PlatformLocation } from '@angular/common';\r\nimport { Location } from '@angular/common';\r\n\r\nexport const API_SERVER_URL = new InjectionToken<string>('ApiServerUrl.config');\r\nexport const GLOWW_APPLI = new InjectionToken<string>('GlowwAppli.config');\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwService {\r\n public baseHref: string;\r\n public InternalBasePath = '???';\r\n basePathChange: Subject<string> = new Subject<string>();\r\n public get basePath() {\r\n return this.InternalBasePath;\r\n }\r\n public set basePath(value: string) {\r\n //alert(`setBasePath ${value}`)\r\n //if (value.match(/_mgmt(\\/|$)/)) {\r\n const change = this.InternalBasePath != value;\r\n var oldUrl = this.location.path();\r\n var newUrl = oldUrl.replace(`/${this.InternalBasePath}/`, `/${value}/`);\r\n console.log(`GlowwService setBasePath (${this.InternalBasePath},${value}) ${oldUrl} -> ${newUrl}`);\r\n this.InternalBasePath = value;\r\n if (change) {\r\n this.location.go(newUrl);\r\n this.basePathChange.next(newUrl);\r\n }\r\n //} else {\r\n //console.log(`not mgmt ${value}`);;\r\n //}\r\n }\r\n public baseUrl = '/';\r\n protected http: HttpClient;\r\n protected BasePath: string;\r\n protected ApiServerUrl: string;\r\n protected platformLocation: PlatformLocation;\r\n protected location: Location\r\n constructor(private _injector: Injector) {\r\n this.location = _injector.get(Location);\r\n this.http = _injector.get(HttpClient);\r\n this.platformLocation = _injector.get(PlatformLocation);\r\n try { this.ApiServerUrl = _injector.get(API_SERVER_URL); } catch { }\r\n try { this.BasePath = _injector.get(GLOWW_APPLI) } catch { } this.BasePath = this.BasePath ?? 'GlowwApi';\r\n\r\n //@Optional() @Inject(API_SERVER_URL) apiServerUrl: string, @Optional() @Inject(GLOWW_APPLI) glowwAppli: string\r\n this.baseHref = this.platformLocation.getBaseHrefFromDOM();\r\n this.InternalBasePath = this.BasePath;\r\n if (this.ApiServerUrl) { this.baseUrl = this.ApiServerUrl; if (!this.baseUrl.endsWith('/')) { this.baseUrl += '/'; } }\r\n }\r\n public getParams(obj: any) {\r\n let params = new HttpParams();\r\n if (!obj) { return params; }\r\n Object.keys(obj).forEach(p => {\r\n if (obj[p]) {\r\n params = params.append(p.toString(), obj[p].toString());\r\n }\r\n });\r\n return params;\r\n }\r\n\r\n public async noSrc() {\r\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noSrc`));\r\n }\r\n\r\n public async noRestSecurity() {\n return await firstValueFrom(this.http.get<boolean>(`/admin/ORMS/${this.InternalBasePath.replace(/_mgmt/, \"\")}/noRestSecurity`));\n }\n\n public commitUserTask(userTaskId: number, args: Record<string, any>) {\n return this.http.post(`/FlowMgmt/UserTask/Commit/${userTaskId}`, args ?? {}, {\n responseType: 'text'\n });\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VersionCheckService {\r\n // this will be replaced by actual hash post-build.js\r\n private currentHash = '{{POST_BUILD_ENTERS_HASH_HERE}}';\r\n private callback;\r\n public url;\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n /**\r\n * Checks in every set frequency the version of frontend application\r\n * @param url the url to test (default : /version.json)\r\n * @param frequency - in milliseconds, defaults to 1 minutes\r\n * @param callback - function to call when the version is different, default askReloadApplication\r\n */\r\n public initVersionCheck(url = '/version.json', frequency = 1000 * 60, callback = this.askReloadApplication) {\r\n this.callback = callback;\r\n this.url = url;\r\n this.checkVersion();\r\n setInterval(() => {\r\n this.checkVersion();\r\n }, frequency);\r\n }\r\n\r\n public askReloadApplication() {\r\n console.log('askReload');\r\n // ENTER YOUR CODE TO DO SOMETHING UPON VERSION CHANGE\r\n if (confirm('Une nouvelle version est disponible sur le serveur. Il est nécessaire de recharger l\\'application. Veuillez confirmer le rechargement de l\\'application')) {\r\n this.reloadApplication();\r\n }\r\n }\r\n public reloadApplication() {\r\n console.log('reload');\r\n let search = location.search;\r\n if (search) { search += '&'; }\r\n search += '___t=' + new Date().getTime();\r\n console.log(`Search ${search}`);\r\n location.search = search;\r\n }\r\n\r\n private checkVersion() {\r\n // timestamp these requests to invalidate caches\r\n this.http.get(this.url + '?t=' + new Date().getTime())\r\n // .first()\r\n .subscribe(\r\n (response: any) => {\r\n console.log('get version ok');\r\n const hash = response.hash;\r\n const hashChanged = this.hasHashChanged(this.currentHash, hash);\r\n console.log(`HASH : Current : ${this.currentHash}, New : ${hash}, Changed ${hashChanged}`);\r\n\r\n // If new version, do something\r\n if (hashChanged) {\r\n this.callback();\r\n }\r\n // store the new hash so we wouldn't trigger versionChange again\r\n // only necessary in case you did not force refresh\r\n this.currentHash = hash;\r\n },\r\n (err) => {\r\n console.error(err, 'Could not get version');\r\n }\r\n );\r\n }\r\n\r\n /**\r\n * Checks if hash has changed.\r\n * This file has the JS hash, if it is a different one than in the version.json\r\n * we are dealing with version change\r\n * @param currentHash currenthash\r\n * @param newHash newhash\r\n * @returns the currenthash and newhash are different\r\n */\r\n private hasHashChanged(currentHash, newHash) {\r\n return currentHash !== newHash;\r\n }\r\n}\r\n","import { Directive, ElementRef, HostListener, Input } from '@angular/core';\nimport { Router } from '@angular/router';\n\n\n@Directive({\n selector: '[glowwRoute]',\n standalone: true\n})\nexport class RouteDirective {\n\r\n constructor(private el: ElementRef, private router: Router) { }\r\n @Input() dlg: any;\r\n\r\n @HostListener('click', ['$event.target']) onClick($event) {\r\n console.info('clicked: ' + $event.getAttribute('data-link'));\r\n if (this.dlg) { this.dlg.close(true); }\r\n var goRoute = $event.getAttribute('data-link');\r\n this.router.navigate([goRoute]);\r\n\r\n }\r\n\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'safeHtml',\n standalone: true\n})\nexport class SafeHtmlPipe implements PipeTransform {\n\r\n\tconstructor(private sanitizer: DomSanitizer) { }\r\n\r\n\ttransform(style) {\r\n\t\treturn this.sanitizer.bypassSecurityTrustHtml(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustStyle(style);\r\n\t\t// return this.sanitizer.bypassSecurityTrustXxx(style); - see docs\r\n\t}\r\n\r\n}\r\n","import { Component, OnInit, Inject } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { RouteDirective } from '../../Directives/route.directive';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'glw-confirmation',\n templateUrl: './confirmation.component.html',\n styleUrls: ['./confirmation.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, RouteDirective, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class ConfirmationComponent {\r\n\r\n title: string;\r\n message: string;\r\n mode: string;\r\n\r\n constructor(public dialogRef: MatDialogRef<ConfirmationComponent>, @Inject(MAT_DIALOG_DATA) public data: ConfirmationModel) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.mode = data.mode ?? 'confirmation';\r\n }\r\n\r\n onConfirm(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(true);\r\n }\r\n\r\n onDismiss(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(false);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class ConfirmationModel {\r\n constructor(public title: string, public message: string, public mode?: string) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\n {{title}}\n</h1>\n\n<div mat-dialog-content>\n <p [innerHTML]=\"message | safeHtml\" glowwRoute [dlg]=\"dialogRef\"></p>\n</div>\n\n@if (mode==='confirmation') {\n <mat-dialog-actions>\n <button mat-button (click)=\"onDismiss()\">No</button>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">Yes</button>\n </mat-dialog-actions>\n}\n@if (mode==='alert') {\n <mat-dialog-actions>\n <button mat-raised-button color=\"primary\" (click)=\"onConfirm()\">OK</button>\n </mat-dialog-actions>\n}","import { Injectable } from '@angular/core';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { ConfirmationComponent, ConfirmationModel } from '../Components/confirmation/confirmation.component';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogService {\r\n\r\n constructor(protected dialog: MatDialog) { }\r\n\r\n createConfirmationDialog(title: string, message: string, mode?: string) {\r\n const dialogData = new ConfirmationModel(title, message, mode);\r\n return this.dialog.open(ConfirmationComponent, {\r\n maxWidth: '80%',\r\n data: dialogData,\r\n disableClose: true\r\n });\r\n }\r\n\r\n\r\n openConfirmationDialog(title: string, message: string, mode?: string) {\r\n return this.createConfirmationDialog(title, message, mode).afterClosed();\r\n }\r\n}\r\n","import { EventEmitter, Injectable } from '@angular/core';\r\nimport { Event, NavigationEnd, Router } from '@angular/router';\r\nimport { BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class NavService {\r\n public appDrawer: any;\r\n public currentUrl = new BehaviorSubject<string>(undefined);\r\n\r\n constructor(private router: Router) {\r\n this.router.events.subscribe((event: Event) => {\r\n if (event instanceof NavigationEnd) {\r\n this.currentUrl.next(event.urlAfterRedirects);\r\n }\r\n });\r\n }\r\n\r\n public closeNav() {\r\n this.appDrawer.close();\r\n }\r\n\r\n public openNav() {\r\n this.appDrawer.open();\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n\r\ndeclare var webkitSpeechRecognition: any;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class VoiceRecognitionService {\r\n\r\n recognition = new webkitSpeechRecognition();\r\n isStoppedSpeechRecog = false;\r\n public text = '';\r\n tempWords: any;\r\n\r\n constructor() { }\r\n\r\n init() {\r\n\r\n this.recognition.interimResults = true;\r\n this.recognition.lang = 'fr-be';\r\n\r\n this.recognition.addEventListener('result', (e: any) => {\r\n const transcript = Array.from(e.results)\r\n .map((result: any) => result[0])\r\n .map((result) => result.transcript)\r\n .join('');\r\n this.tempWords = transcript;\r\n console.log(transcript);\r\n });\r\n }\r\n\r\n start() {\r\n this.isStoppedSpeechRecog = false;\r\n this.recognition.start();\r\n console.log(\"Speech recognition started\")\r\n this.recognition.addEventListener('end', (condition: any) => {\r\n if (this.isStoppedSpeechRecog) {\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n } else {\r\n this.wordConcat()\r\n this.recognition.start();\r\n }\r\n });\r\n }\r\n stop() {\r\n this.isStoppedSpeechRecog = true;\r\n this.wordConcat()\r\n this.recognition.stop();\r\n console.log(\"End speech recognition\")\r\n }\r\n\r\n wordConcat() {\r\n this.text = this.text + ' ' + this.tempWords + '.';\r\n this.tempWords = '';\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Component, Input, OnChanges, OnInit } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { switchMap, map } from 'rxjs/operators';\nimport { AsyncPipe } from '@angular/common';\r\n\r\n@Component({\n selector: 'secure-img',\n template: `\n <img [src]=\"dataUrl$ | async\" style=\"object-fit: contain;\"/>\n `,\n imports: [AsyncPipe]\n})\r\nexport class SecureImgComponent implements OnChanges {\r\n // This code block just creates an rxjs stream from the src\r\n // this makes sure that we can handle source changes\r\n // or even when the component gets destroyed\r\n // So basically turn src into src$\r\n @Input() public src!: string;\r\n private src$ = new BehaviorSubject(this.src);\r\n ngOnChanges(): void {\r\n this.src$.next(this.src);\r\n }\r\n\r\n // this stream will contain the actual url that our img tag will load\r\n // everytime the src changes, the previous call would be canceled and the\r\n // new resource would be loaded\r\n dataUrl$ = this.src$.pipe(switchMap(url => this.loadImage(url)))\r\n\r\n // we need HttpClient to load the image\r\n constructor(private httpClient: HttpClient, private domSanitizer: DomSanitizer) {\r\n }\r\n\r\n private loadImage(url: string): Observable<any> {\r\n return this.httpClient\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))))\r\n }\r\n}\r\n","import { Directive, EventEmitter, HostBinding, HostListener, Output } from '@angular/core';\n\n@Directive({\n selector: '[glowwFileSink]',\n standalone: true\n})\nexport class FileSinkDirective {\n\r\n @HostBinding('class.fileover') fileOver: boolean;\r\n @Output() fileDropped = new EventEmitter<any>();\r\n\r\n // Dragover listener\r\n @HostListener('dragover', ['$event']) onDragOver(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = true;\r\n }\r\n\r\n // Dragleave listener\r\n @HostListener('dragleave', ['$event']) public onDragLeave(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n }\r\n\r\n // Drop listener\r\n @HostListener('drop', ['$event']) public ondrop(evt) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.fileOver = false;\r\n let files = evt.dataTransfer.files;\r\n if (files.length > 0) {\r\n this.fileDropped.emit(files);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit, ViewChild, ElementRef, Inject, Input, AfterViewInit } from '@angular/core';\r\nimport { UntypedFormGroup, FormBuilder, FormArray, NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { FileSinkDirective } from '../../Directives/file-sink.directive';\nimport { NgClass } from '@angular/common';\nimport { MatProgressBar } from '@angular/material/progress-bar';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-file',\n templateUrl: './upload-file.component.html',\n styleUrls: ['./upload-file.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: UploadFileComponent\n }\n ],\n imports: [MatCard, FileSinkDirective, MatCardContent, NgClass, MatProgressBar, MatCardActions, MatButton]\n})\r\nexport class UploadFileComponent implements ControlValueAccessor, AfterViewInit {\r\n @ViewChild('fileUpload') fileUpload: ElementRef;\r\n @Input() multiple: boolean = false;\r\n @Input() allowAltFileName: boolean = false;\r\n @Input() acceptMime: string = '*/*';\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n form: UntypedFormGroup;\r\n\r\n files = [];\r\n\r\n constructor() {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n const fileUpload = this.fileUpload.nativeElement;\r\n fileUpload.onchange = () => {\r\n if (!this.multiple || !this.files) {\r\n this.files = [];\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n //if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n };\r\n }\r\n\r\n get value() {\r\n return this.files;\r\n //return this._value;\r\n }\r\n\r\n set value(val) {\r\n this.files = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n\r\n\r\n writeValue(obj: any): void {\r\n this.value = obj;\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n\r\n SelectFiles() {\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n this.fileUpload.nativeElement.click();\r\n }\r\n\r\n ChangeAltName(i, $event) {\r\n this.files[i].altFileName = $event.target.value;\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n onFileDropped($event) {\r\n this.prepareFilesList($event);\r\n }\r\n prepareFilesList(files: Array<any>) {\r\n if (files.length > 1 && !this.multiple) {\r\n alert(\"You can only drop an only file at once\");\r\n return;\r\n }\r\n if (this.files && this.files.length > 0 && !this.multiple) {\r\n if (confirm(\"Do you want to replace current file ?\")) {\r\n this.files = [];\r\n } else {\r\n return;\r\n }\r\n }\r\n if (!this.files) this.files = [];\r\n for (const file of files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name, size: file.size, altFileName: '', status: '' });\r\n }\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n\r\n /**\r\n * format bytes\r\n * @param bytes (File size in bytes)\r\n * @param decimals (Decimals point)\r\n */\r\n formatBytes(bytes, decimals = 2) {\r\n if (bytes === 0) {\r\n return \"0 Bytes\";\r\n }\r\n const k = 1024;\r\n const dm = decimals <= 0 ? 0 : decimals;\r\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\", \"EB\", \"ZB\", \"YB\"];\r\n const i = Math.floor(Math.log(bytes) / Math.log(k));\r\n return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + \" \" + sizes[i];\r\n }\r\n\r\n deleteFile(index: number) {\r\n if (this.files[index].progress && this.files[index].progress < 100) {\r\n console.log(\"Upload in progress.\");\r\n return;\r\n }\r\n this.files.splice(index, 1);\r\n this.onChange(this.files);\r\n this.onTouched();\r\n }\r\n}\r\n\r\n","<mat-card appearance=\"outlined\" glowwFileSink (fileDropped)=\"onFileDropped($event)\" style=\"height:calc(100% - 40px)\">\n <mat-card-content style=\"min-height:100px;height:calc(100% - 60px)\">\n @if (files && files.length) {\n <div class=\"files-list\" style=\"height:calc(100% - 60px)\">\n @for (file of files; track file; let i = $index) {\n <div class=\"single-file\" [ngClass]=\"file.status\">\n <i class=\"fa-thin fa-file fa-lg\"></i>\n <div class=\"info\">\n <h4 class=\"name\">\n {{ file?.fileName }}\n </h4>\n <p class=\"size\">\n {{ formatBytes(file?.size) }}\n </p>\n <mat-progress-bar [value]=\"file.progress\"></mat-progress-bar>\n </div>\n <i class=\"fa-thin fa-trash fa-lg\" (click)=\"deleteFile(i)\"></i>\n </div>\n }\n </div>\n }\n @if (!files || !files.length) {\n <div style=\"height:calc(100% - 60px)\">No file(s) selected</div>\n }\n <input type=\"file\" #fileUpload id=\"fileUpload\" name=\"fileUpload\" [accept]=\"acceptMime\" style=\"display:none;\" [multiple]=\"multiple\" />\n </mat-card-content>\n <mat-card-actions style=\"text-align:center\">\n <button mat-raised-button color=\"accent\" (click)=\"SelectFiles()\">\n <i class=\"fal fa-file-upload\"></i> @if (!multiple) {\n <span>Select file or Drop a file</span>\n }\n @if (multiple) {\n <span>Select file(s) or drop file(s)</span>\n }\n </button>\n</mat-card-actions>\n</mat-card>","import { Component, OnInit, ViewChild, ElementRef, Inject, Input } from '@angular/core';\r\nimport { FormGroup, UntypedFormBuilder, FormArray, FormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Observable } from 'rxjs';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { UploadFileComponent } from '../upload-file/upload-file.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-upload-doc',\n templateUrl: './upload-doc.component.html',\n styleUrls: ['./upload-doc.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, UploadFileComponent, FormsModule, MatDialogActions, MatButton]\n})\r\nexport class UploadDocComponent {\r\n\r\n multiple: boolean = false;\r\n allowAltFileName: boolean = false;\r\n\r\n acceptMime = '*/*';\r\n files = [];\r\n callback: (files: any) => Observable<any>;\r\n constructor(private dialogRef: MatDialogRef<UploadDocComponent>, @Inject(MAT_DIALOG_DATA) public data: any, private formBuilder: UntypedFormBuilder) {\r\n if (data && data.acceptMime) {\r\n this.acceptMime = data.acceptMime;\r\n }\r\n if (data && data.multiple) {\r\n this.multiple = data.multiple;\r\n }\r\n if (data && data.allowAltFileName) {\r\n this.allowAltFileName = data.allowAltFileName;\r\n }\r\n if (data && data.callback) {\r\n this.callback = data.callback;\r\n }\r\n }\r\n\r\n /*\r\n get fileNames(): FormArray {\r\n return this.form.get(\"fileNames\") as FormArray\r\n }\r\n\r\n FileName(fn: string): FormGroup {\r\n return this.formBuilder.group({\r\n fileName: fn\r\n })\r\n }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n onClick() {\r\n const fileUpload = this.fileUpload.nativeElement; fileUpload.onchange = () => {\r\n if (this.multiple) {\r\n this.files = [];\r\n if (this.allowAltFileName) { this.fileNames.clear(); }\r\n }\r\n for (const file of fileUpload.files) {\r\n this.files.push({ data: file, inProgress: false, progress: 0, fileName: file.name });\r\n if (this.allowAltFileName) { this.fileNames.push(this.FileName(file.name)); }\r\n }\r\n };\r\n fileUpload.click();\r\n }\r\n\r\n private uploadFiles() {\r\n this.fileUpload.nativeElement.value = '';\r\n this.files.forEach(file => {\r\n alert('upload file');\r\n // this.uploadFile(file);\r\n });\r\n }\r\n */\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n save() {\r\n console.log(\"save UploadDoc\");\r\n console.log(`this.files.length ${this.files.length}`);\r\n /*if (this.allowAltFileName) {\r\n for (let i = 0; i < this.files.length; i++) {\r\n // Comment to be sure new version\r\n this.files[i].name = this.fileNames.value[i].fileName;\r\n }\r\n }*/\r\n if (this.callback) {\r\n this.callback(this.files).subscribe(res => this.dialogRef.close(this.files));\r\n } else {\r\n this.dialogRef.close(this.files);\r\n }\r\n }\r\n}\r\n","<h2 mat-dialog-title>\r\n Association d'un nouveau document</h2>\r\n\r\n<mat-dialog-content>\r\n\r\n <gloww-upload-file [(ngModel)]=\"files\" [acceptMime]=\"acceptMime\" [multiple]=\"multiple\" [allowAltFileName]=\"allowAltFileName\"></gloww-upload-file>\r\n\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n</mat-dialog-actions>\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-search-form',\n templateUrl: './search-form.component.html',\n styleUrls: ['./search-form.component.scss']\n})\r\nexport class SearchFormComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'glw-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\r\nexport class HeaderComponent implements OnInit {\r\n\r\n\tconstructor() { }\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { AfterContentInit, Component, ContentChildren, OnInit, QueryList } from '@angular/core';\r\nimport { MatColumnDef } from '@angular/material/table';\r\n\r\n@Component({\n selector: 'glw-result-table',\n templateUrl: './result-table.component.html',\n styleUrls: ['./result-table.component.scss']\n})\r\nexport class ResultTableComponent implements OnInit, AfterContentInit {\r\n\t@ContentChildren(MatColumnDef) columnDefs: QueryList<MatColumnDef>;\r\n\tconstructor() { }\r\n\r\n\tngAfterContentInit(): void {\r\n\t\tconsole.log(this.columnDefs.length);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t}\r\n\r\n}\r\n","<ng-content></ng-content>","import { Injectable, Optional } from '@angular/core';\nimport { Observable, of } from 'rxjs';\nimport { TranslateService } from '@ngx-translate/core';\n\n@Injectable({ providedIn: 'root' })\nexport class GlowwI18nService {\n\tconstructor(@Optional() private readonly translate: TranslateService | null) {}\n\n\tget langChanges$(): Observable<unknown> {\n\t\treturn this.translate?.onLangChange ?? of(null);\n\t}\n\n\tinstant(key: string, fallback: string): string {\n\t\tif (!this.translate) {\n\t\t\treturn fallback;\n\t\t}\n\n\t\tconst translated = this.translate.instant(key);\n\t\treturn translated && translated !== key ? translated : fallback;\n\t}\n}\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\n\n@Component({\n selector: 'glw-filter-form',\n templateUrl: './filter-form.component.html',\n styleUrls: ['./filter-form.component.css'],\n imports: [MatCard, MatCardContent, MatCardActions, MatButton, MatIcon]\n})\nexport class FilterFormComponent implements OnInit {\n @Output() filter = new EventEmitter<any>();\n constructor(private readonly i18n: GlowwI18nService) { }\n\n ngOnInit(): void {\n }\n\n onFilter() {\n this.filter.emit(\"xxx\");\n }\n\n get filterLabel(): string {\n return this.i18n.instant('COMMON.FILTER', 'Filter');\n }\n\n}\n","<mat-card appearance=\"outlined\">\r\n <mat-card-content>\r\n <ng-content></ng-content>\r\n </mat-card-content>\r\n <mat-card-actions align=\"end\">\n <button mat-stroked-button color=\"accent\" (click)=\"onFilter()\">\n <mat-icon>search</mat-icon>\n {{ filterLabel }}\n </button>\n </mat-card-actions>\n</mat-card>\n","export class Oauthassociation {\r\n public idOAuth: number;\r\n public provider: string;\r\n public name: string;\r\n public value: string;\r\n\r\n public toString() {\r\n return this.provider;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationServiceConfig {\r\n currentUserVariableName?= 'currentuser';\r\n authenticationUrl?= `/admin/authusers/authenticate`;\r\n changePasswordUrl?= `/admin/authusers/changePassword`;\r\n askResetPasswordCodeUrl?= `/admin/authusers/askResetPasswordCode`;\r\n resetPassworUrl?= `/admin/authusers/resetPassword`;\r\n environment?= '__GlowwSecurity__';\r\n showDomain?= false;\r\n askGSM?= false;\r\n googleClientId?= '';\r\n facebookClientId?= '';\r\n amazonClientId?= '';\r\n microsoftClientId?= '';\r\n}\r\n","import { Oauthassociation } from './../Models/oauthassociation';\r\nimport { Inject, Injectable, Optional, PLATFORM_ID } from '@angular/core';\r\nimport { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\n\r\nimport { User } from '../Models/user';\r\nimport { AuthenticationServiceConfig } from './authentication-service-config';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthenticationService {\r\n private currentUserSubject: BehaviorSubject<User>;\r\n public currentUser: Observable<User>;\r\n public currentUserVariableName: string;\r\n public authenticationUrl: string;\r\n public changePasswordUrl: string;\r\n public askResetPasswordCodeUrl: string;\r\n public resetPasswordUrl: string;\r\n public OAuthGetProvidersUrl: string;\r\n public OAuthAskCodeUrl: string;\r\n public OAuthAssociationUrl: string;\r\n public OAuthGetAssociationsUrl: string;\r\n public OAuthDeleteAssociationUrl: string;\r\n public environment: string;\r\n public showdomain: boolean;\r\n public hasLocalStorage = false;\r\n\r\n constructor(private http: HttpClient, @Inject(PLATFORM_ID) private platformId: any, @Optional() config?: AuthenticationServiceConfig) {\r\n this.hasLocalStorage = isPlatformBrowser(this.platformId);\r\n if (config && config.currentUserVariableName) { this.currentUserVariableName = config.currentUserVariableName; } else { this.currentUserVariableName = 'currentUser'; }\r\n if (config && config.authenticationUrl) { this.authenticationUrl = config.authenticationUrl; } else { this.authenticationUrl = `/admin/authusers/authenticate`; }\r\n if (config && config.changePasswordUrl) { this.changePasswordUrl = config.changePasswordUrl; } else { this.changePasswordUrl = this.authenticationUrl.replace('authenticate', 'changePassword'); }\r\n if (config && config.askResetPasswordCodeUrl) { this.askResetPasswordCodeUrl = config.askResetPasswordCodeUrl; } else { this.askResetPasswordCodeUrl = this.authenticationUrl.replace('authenticate', 'askResetPasswordCode'); }\r\n if (config && config.resetPassworUrl) { this.resetPasswordUrl = config.resetPassworUrl; } else { this.resetPasswordUrl = this.authenticationUrl.replace('authenticate', 'resetPassword'); }\r\n this.OAuthGetProvidersUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetProviders');\r\n this.OAuthAskCodeUrl = this.authenticationUrl.replace('authenticate', 'OAuthAskCode');\r\n this.OAuthAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthAssociation');\r\n this.OAuthGetAssociationsUrl = this.authenticationUrl.replace('authenticate', 'OAuthGetAssociations');\r\n this.OAuthDeleteAssociationUrl = this.authenticationUrl.replace('authenticate', 'OAuthDeleteAssociation');\r\n if (config && config.environment) { this.environment = config.environment; }\r\n if (config && config.showDomain) { this.showdomain = config.showDomain; }\r\n if (this.hasLocalStorage) { // Angular Universal\r\n this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem(this.currentUserVariableName)));\r\n this.currentUser = this.currentUserSubject.asObservable();\r\n }\r\n }\r\n\r\n public get currentUserValue(): User {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n if (!this.currentUserSubject) { return null; } // Angular Universsal\r\n return this.currentUserSubject.value !== null;\r\n }\r\n\r\n login(domain: string, username: string, password: string) {\r\n const formData = new FormData();\r\n if (this.showdomain) { formData.set('domain', domain); }\r\n formData.set('environment', this.environment);\r\n formData.set('username', username);\r\n formData.set('password', password);\r\n return this.http.post<any>(this.authenticationUrl, formData, { observe: 'response' })\r\n .pipe(map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n const user: any = resp.body;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n }));\r\n }\r\n\r\n changePassword(domain: string, username: string, oldpassword: string, newpassword: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: this.currentUserValue.domain ?? '',\r\n username: this.currentUserValue.username,\r\n newpassword,\r\n oldpassword,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.changePasswordUrl, { params });\r\n }\r\n\r\n logout() {\r\n // remove user from local storage to log user out\r\n if (this.hasLocalStorage) { localStorage.removeItem(this.currentUserVariableName); }\r\n this.currentUserSubject.next(null);\r\n }\r\n\r\n askResetPasswordCode(domain: string, firstname: string, lastname: string, email: string, gsm: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n domain: '',\r\n firstname,\r\n lastname,\r\n email,\r\n gsm,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.askResetPasswordCodeUrl, { params });\r\n }\r\n\r\n resetPassword(email: string, code: string, password: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n email,\r\n code,\r\n password,\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<any>(this.resetPasswordUrl, { params });\r\n }\r\n\r\n getOAuthProviders() {\r\n return this.http.get<string[]>(this.OAuthGetProvidersUrl);\r\n }\r\n\r\n OAuthAskCode(environment: string, login: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n login,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAskCodeUrl, { params });\r\n }\r\n\r\n OAuthAssociation(environment: string, code: string, idOauth: number, provider: string, name: string, value: string) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment,\r\n code,\r\n idOauth,\r\n provider,\r\n name,\r\n value\r\n }\r\n });\r\n return this.http.get<any>(this.OAuthAssociationUrl, { params }).pipe(\r\n map(resp => {\r\n // store user details and jwt token in local storage to keep user logged in between page refreshes\r\n console.log(\"OAuthAuthentication\");\r\n console.log(resp);\r\n const user: any = resp;\r\n if (this.hasLocalStorage) { localStorage.setItem(this.currentUserVariableName, JSON.stringify(user)); }\r\n this.currentUserSubject.next(user);\r\n return user;\r\n })\r\n );\r\n }\r\n getOAuthAssociations() {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment\r\n }\r\n });\r\n return this.http.get<Oauthassociation[]>(this.OAuthGetAssociationsUrl, { params }).pipe(\r\n tap((value) => console.log(value)),\r\n map((value) => value.map(item => Object.assign(new Oauthassociation(), item))),\r\n tap((value) => console.log(value))\r\n );\r\n }\r\n\r\n OAuthDeleteAssociation(provider: string, idOAuth: number) {\r\n const params = new HttpParams({\r\n fromObject: {\r\n environment: this.environment,\r\n provider,\r\n idOAuth\r\n }\r\n });\r\n return this.http.get(this.OAuthDeleteAssociationUrl, { params });\r\n }\r\n\r\n}\r\n","import { DisplayObjectsConfiguration } from './../display-objects-configuration';\nimport { SearchFormComponent } from '../search-form/search-form.component';\n//import { Reference } from '@angular/compiler/src/render3/r3_ast';\nimport { Component, ContentChild, OnInit, ViewChild, AfterViewInit, ElementRef, Directive, ChangeDetectorRef, Injector, ChangeDetectionStrategy, AfterContentInit, QueryList, ContentChildren, OnChanges, SimpleChanges, Input, TemplateRef, Inject } from '@angular/core';\nimport { UntypedFormControl, UntypedFormGroup, UntypedFormBuilder, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatSort, Sort } from '@angular/material/sort';\r\nimport { MatColumnDef, MatTable, MatTableDataSource, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow } from '@angular/material/table';\r\nimport { combineLatest, forkJoin, ObjectUnsubscribedError, observable, Observable, of, Subject, Subscription } from 'rxjs';\r\nimport { HeaderComponent } from '../header/header.component';\r\nimport { ResultTableComponent } from '../result-table/result-table.component';\r\nimport { interval } from 'rxjs';\r\nimport { HttpErrorResponse, HttpEvent, HttpEventType, HttpParams, HttpResponse } from '@angular/common/http';\r\nimport { Location, NgClass } from '@angular/common';\r\nimport { ActivatedRoute, Data, Router, RouterLink } from '@angular/router';\nimport { MatDialog, MatDialogConfig, MatDialogModule } from '@angular/material/dialog';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { AuthenticationService } from '../../gloww-security/Services/authentication.service';\nimport { Moment } from 'moment';\nimport moment from 'moment';\nimport { map, catchError, mergeMap, tap, filter, switchMap, take } from 'rxjs/operators';\nimport { FilterFormComponent } from '../filter-form/filter-form.component';\nimport { MatCard, MatCardContent, MatCardActions } from '@angular/material/card';\nimport { MatError, MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\nimport { MatButton } from '@angular/material/button';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\n\r\nexport interface Action {\r\n icon: any;\r\n name?: string;\r\n routerLinkFct?: (obj) => string[];\r\n display?: (obj) => boolean;\r\n};\r\n\r\n@Component({\n selector: 'glw-display-objects',\n templateUrl: './display-objects.component.html',\n styleUrls: ['./display-objects.component.scss'],\n imports: [MatCard, MatCardContent, MatError, FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption, MatCardActions, MatButton, MatIcon, MatTable, MatSort, MatColumnDef, MatHeaderCellDef, MatHeaderCell, MatCellDef, MatCell, RouterLink, NgClass, MatHeaderRowDef, MatHeaderRow, MatRowDef, MatRow, MatPaginator, MatProgressSpinner, MatDialogModule]\n})\nexport class DisplayObjectsComponent<TObj> implements OnInit, AfterContentInit, AfterViewInit, OnChanges {\n private static readonly DISPLAY_PARAM = '__display';\n private static readonly DISPLAY_FORM = 'form';\n private static readonly DISPLAY_RESULT = 'result';\n private static readonly INTERNAL_QUERY_KEYS = new Set(['__guid', DisplayObjectsComponent.DISPLAY_PARAM]);\n\n @ContentChild(HeaderComponent) header: HeaderComponent;\n @ContentChild(SearchFormComponent) searchFormLayout: SearchFormComponent;\r\n @ContentChild(FilterFormComponent) filterFormLayout: FilterFormComponent;\r\n @ContentChild(ResultTableComponent) resultLayout: ResultTableComponent;\r\n @ViewChild(MatTable, { static: false }) table: MatTable<any>;\r\n @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;\r\n @ViewChild(MatSort, { static: false }) sort: MatSort;\r\n\r\n // after the <ng-content> has been initialized, the column definitions are available.\r\n // All that's left is to add them to the table ourselves:\r\n @Input() configuration: DisplayObjectsConfiguration<TObj>;\r\n @Input() displayObjLink: (obj: TObj, action?: string) => (string | string[]);\r\n @Input() canDisplayObj: ((user: any, obj: TObj, action?: string) => boolean) | boolean = false;\r\n @Input() canEdit: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canDelete: ((user: any, obj: TObj) => boolean) | boolean = true;\r\n @Input() canAdd: ((user: any) => boolean) | boolean = true;\r\n @Input() form: UntypedFormGroup;\r\n @Input() SearchForm: any;\r\n @Input() searchRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() postRequest: (obj?: TObj | any) => Observable<TObj>;\r\n @Input() deleteRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() putRequest: (obj?: TObj | any) => Observable<TObj[]>;\r\n @Input() maxrows: string[];\r\n @Input() mandatoryParams: object = {};\r\n @Input() actions = [];\r\n @Input() dialogConfig: object = {};\r\n ///////@Input() fileFields: string[];\r\n @Input() parent: any;\r\n\r\n @Input() columns: () => string[];\r\n @Input() objectName: string;\r\n @Input() primaryKey: string | string[];\r\n @Input() Editor: TemplateRef<any>;\r\n @Input() AddEditor: TemplateRef<any>;\r\n columnsToDisplay = [];\r\n dataSource: MatTableDataSource<TObj>;\r\n displayform = true;\r\n displayresult = false;\r\n queryParams: any = {};\n resultException: string;\n currentUser: any;\n form2: UntypedFormGroup;\n data: object;\n routeParams: object;\n glowwService: GlowwService;\n private viewInitialized = false;\n\n constructor(@Inject('glowwService') glowwService: GlowwService, private changeDetectorRef: ChangeDetectorRef, private dialog: MatDialog, private router: Router, private location: Location, private authenticationService: AuthenticationService, private formBuilder: UntypedFormBuilder, private route: ActivatedRoute, private i18n: GlowwI18nService) {\n this.glowwService = glowwService;\r\n const component = this;\r\n this.currentUser = (this.authenticationService.currentUserValue as any).UserInfo;\r\n this.form2 = this.formBuilder.group({\r\n _MaxRow_: [null]\r\n });\r\n //debugger;\r\n this.data = this.route.snapshot.data;\n this.routeParams = this.route.snapshot.params;\n route.params.subscribe(routeParams => {\n this.routeParams = routeParams;\n if (this.viewInitialized) {\n this.applyRouteState(this.route.snapshot.queryParams);\n }\n });\n route.queryParams.subscribe(queryParams => {\n this.queryParams = { ...queryParams };\n if (this.viewInitialized) {\n this.applyRouteState(queryParams);\n }\n });\n }\n ngOnChanges(changes: SimpleChanges): void {\r\n\r\n }\r\n\r\n InitRequest() {\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n if (!this.postRequest) {\r\n this.postRequest = this.glowwService[`post${this.objectName}`];\r\n }\r\n if (!this.deleteRequest) {\r\n this.deleteRequest = this.glowwService[`delete${this.objectName}`];\r\n }\r\n if (!this.putRequest) {\r\n this.putRequest = this.glowwService[`put${this.objectName}`];\r\n }\r\n }\r\n\r\n sortData(sort: Sort) {\r\n this.sort.sort({ id: sort.active, start: sort.direction ? sort.direction : \"asc\", disableClear: true });\r\n //this.sort.sortChange.emit(sort);\r\n }\r\n\r\n\r\n\r\n getValue4Sort(item: any, header: string | object): string | number {\r\n let fct = \"\";\r\n let parts = [];\r\n if (typeof header === 'object') {\r\n fct = header[\"fct\"];\r\n parts = header[\"parts\"];\r\n } else {\r\n console.log(`previewMatchSortingFn ${item} - ${header}`);\r\n const headerFct = header.split(\"---\");\r\n fct = null;\r\n if (headerFct.length === 2) { fct = headerFct[1]; }\r\n parts = headerFct[0].split(\".\");\r\n }\r\n let res = item;\r\n for (let i = 0; i < parts.length; i++) {\r\n res = res[parts[i]];\r\n if (!res) return null;\r\n }\r\n switch (fct) {\r\n case \"insensitive\":\r\n return res.toString().toLowerCase();\r\n }\r\n return res;\r\n }\r\n\r\n ngAfterViewInit(): void {\n if (!this.objectName) this.objectName = this.parent.objectName;\r\n if (!this.actions || this.actions.length === 0) this.actions = this.parent.actions;\r\n if (!this.primaryKey) this.primaryKey = this.parent.primaryKey;\r\n if (!this.columns) this.columns = this.parent.columnsToDisplay;\r\n if (!this.Editor) this.Editor = this.parent.editor;\r\n if (!this.AddEditor) this.AddEditor = this.parent.addEditor ?? this.parent.editor;\r\n ///////if (!this.fileFields) this.fileFields = this.parent.fileFields;\r\n if (!this.maxrows) this.maxrows = this.parent.maxrows;\r\n\r\n this.InitRequest();\n if (this.maxrows?.length > 0) { this.form.addControl(\"_MaxRow_\", new UntypedFormControl(null)); }\n //debugger;\r\n console.log(`INIT : formLayout:${this.searchFormLayout}-displayform:${this.displayform}`)\n this.glowwService.basePathChange.subscribe(newUrl => {\n console.log(`basePathChange ${newUrl}: fromLayout:${this.searchFormLayout}-displayform:${this.displayform}`);\n this.parent.form?.reset();\n this.applyRouteState(this.route.snapshot.queryParams);\n });\n this.viewInitialized = true;\n this.applyRouteState(this.route.snapshot.queryParams);\n }\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n }\n\n t(key: string, fallback: string): string {\n return this.i18n.instant(key, fallback);\n }\n\n Init(data?: Data) {\n if ((data && Object.keys(data).length > 0) || this.displayresult) {\n this.Search(data);\n }\n }\n\n hasSearchState(): boolean {\n return this.displayresult || this.hasSearchQueryParams(this.route.snapshot.queryParams);\n }\n\n onBack(): void {\n const searchQuery = this.buildSearchQueryParams();\n if (!Object.keys(searchQuery).length) {\n this.showForm();\n this.syncFormWithQueryParams({});\n return;\n }\n\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n ...searchQuery,\n [DisplayObjectsComponent.DISPLAY_PARAM]: DisplayObjectsComponent.DISPLAY_FORM\n }\n });\n }\n\n onRefresh(): void {\n this.Search();\n }\n\r\n currentFilter: (data: TObj, filter: string) => boolean = null;\r\n SetFilterPredicate() {\r\n this.dataSource.filterPredicate = function(record, filterString) {\r\n console.log(filterString);\r\n var filter = JSON.parse(filterString);\r\n let isMatch = true;\r\n const keys = Object.keys(filter);\r\n for (let key of keys) {\r\n let value = filter[key];\r\n if (!value) continue;\r\n const re = /(?<Field>.+?)(?=___|$)(?:___(?<Option>.+))?/m;\r\n const keyplus = re.exec(key);\r\n let m;\r\n\r\n let option = \"\";\r\n if (keyplus) {\r\n console.log(`Regex OK ${keyplus}`);\r\n key = keyplus[1];\r\n option = keyplus[2]??\"\";\r\n }\r\n console.log(`${key} - ${option}`)\r\n if (key == \"AllFields\") {\r\n const filterValue = filter[\"AllFields\"].trim().toLowerCase();\r\n const dataStr = Object.keys(record)\r\n .reduce((currentTerm: string, key: string) => {\r\n return currentTerm + (record as { [key: string]: any })[key] + '◬';\r\n }, '')\r\n isMatch = (dataStr.toLowerCase().indexOf(filterValue) != -1);\r\n } else {\r\n console.log(`${key} ${record[key as string]} `);\r\n let fieldValue = record[key as string] ?? \"\";\r\n if (option.includes(\"i\")) {\r\n fieldValue = fieldValue.toLowerCase();\r\n value = value.toLowerCase();\r\n }\r\n if (option.includes(\"c\")) {\r\n isMatch = fieldValue.includes(value);\r\n } else {\r\n isMatch = (fieldValue == value);\r\n }\r\n\r\n\r\n console.log(`${key} ${record[key as string]} ${value} : ${isMatch}`);\r\n }\r\n if (!isMatch) return false;\r\n }\r\n return isMatch;\r\n }\r\n }\r\n\r\n\r\n Search(data?: Data) {\n console.log(`Search ${this.glowwService.InternalBasePath}`);\r\n if (data) this.data = data;\r\n this.showResult();\n this.resultException = null;\n\n this.queryParams = {};\n\n if (this.data) {\n Object.keys(this.data).forEach(name => {\n this.queryParams[name] = this.data[name];\n });\n }\r\n if (this.routeParams) {\n Object.keys(this.routeParams).forEach(name => {\n this.queryParams[name] = this.routeParams[name];\n });\n }\n const routeQueryParams = this.route.snapshot.queryParams ?? {};\n Object.keys(routeQueryParams).forEach(name => {\n if (!DisplayObjectsComponent.INTERNAL_QUERY_KEYS.has(name)) {\n this.queryParams[name] = routeQueryParams[name];\n }\n });\n\n if (this.mandatoryParams) {\n Object.keys(this.mandatoryParams).forEach(name => {\n this.queryParams[name] = this.mandatoryParams[name];\n });\n }\n Object.keys(this.queryParams).forEach(name => {\n this.queryParams[name] = this.serializeQueryParamValue(this.queryParams[name]);\n });\n this.queryParams['__guid'] = (Math.random().toString()).substring(2);\n\r\n console.log(\"Before searchRequest\");\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, this.queryParams).subscribe(r => {\r\n console.log(\"search done\");\r\n try {\n this.dataSource = new MatTableDataSource<TObj>(r);\n this.SetFilterPredicate();\n } catch (ex) {\r\n alert(`${ex}`);\r\n }\r\n console.log(\"dataSource changed\");\r\n this.changeDetectorRef.detectChanges();\r\n this.UpdateTable();\r\n },\r\n error => {\n this.showForm();\n this.resultException = this.toErrorMessage(error);\n });\n }\n\r\n clean(obj) {\n for (const propName in obj) {\n if (obj[propName] === null || obj[propName] === undefined) {\n delete obj[propName];\n }\n }\r\n }\r\n\r\n onSearch() {\n this.router.navigate([], {\n relativeTo: this.route,\n queryParams: {\n ...this.buildSearchQueryParams(),\n [DisplayObjectsComponent.DISPLAY_PARAM]: DisplayObjectsComponent.DISPLAY_RESULT\n }\n });\n\n }\n\n private serializeQueryParamValue(value: any): any {\n if (value === undefined || value === null || value === '') {\n return value;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : moment(value).format('YYYY-MM-DD HH:mm:ss');\n }\n\n if (moment.isMoment(value)) {\n return value.isValid() ? value.format('YYYY-MM-DD HH:mm:ss') : null;\n }\n\n return value;\n }\n\r\n onFilter() {\r\n\r\n\r\n }\r\n\r\n UpdateDataSource(r: TObj[]) {\r\n this.dataSource = new MatTableDataSource<TObj>(r);\r\n this.SetFilterPredicate();\r\n this.changeDetectorRef.detectChanges();\r\n\r\n this.UpdateTable();\r\n\r\n }\r\n\r\n UpdateTable() {\r\n console.log(\"UpdateTable()\");\r\n if (this.dataSource) {\r\n if (!this.table) {\r\n console.log('!this.table');\r\n return;\r\n }\r\n this.resultLayout.columnDefs.forEach(columnDef => this.table.addColumnDef(columnDef));\r\n this.dataSource.paginator = this.paginator;\r\n this.dataSource.sort = this.sort;\r\n this.dataSource.sortingDataAccessor = this.getValue4Sort;\r\n console.log(`After this.dataSource.sort = ${this.parent.sort}`);\r\n this.columnsToDisplay = this.columns();\r\n }\r\n }\r\n\r\n canDisplayObjThis(obj, action?) {\r\n try {\r\n if (!this.displayObjLink) { return false; }\r\n if (typeof this.canDisplayObj === 'boolean') { return this.canDisplayObj; }\r\n return this.canDisplayObj(this.currentUser, obj, action);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n canAddThis() {\r\n try {\r\n if (!this.canAdd) { return false; }\r\n if (typeof this.canAdd === 'boolean') { return this.canAdd; }\r\n return this.canAdd(this.currentUser);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canEditThis(obj) {\r\n try {\r\n if (!this.canEdit) { return false; }\r\n if (typeof this.canEdit === 'boolean') { return this.canEdit; }\r\n return this.canEdit(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return true;\r\n }\r\n }\r\n\r\n canDeleteThis(obj) {\r\n try {\r\n if (!this.canDelete) { return false; }\r\n if (typeof this.canDelete === 'boolean') { return this.canDelete; }\r\n return this.canDelete(this.currentUser, obj);\r\n } catch (ex) {\r\n console.log(ex);\r\n return false;\r\n }\r\n }\r\n\r\n displayObjLinkThis(obj, action?) {\r\n if (!this.displayObjLink) { return null; }\r\n return this.displayObjLink(obj, action);\r\n }\r\n\r\n\r\n isString(value): boolean {\r\n return typeof value === 'string' || value instanceof String;\r\n }\r\n getPrimaryKey(obj: object | TObj): object[] {\r\n let res = [];\r\n if (this.isString(this.primaryKey)) {\r\n console.log(\"string\");\r\n res.push(obj[this.primaryKey as string]);\r\n } else {\r\n console.log(\"string[]\");\r\n (this.primaryKey as string[]).forEach(key => res.push(obj[key]));\r\n }\r\n return res;\r\n }\r\n\r\n _saveObj(obj: any): Observable<any> {\r\n var subject = new Subject<any>();\r\n this.postRequest.call(this.glowwService, obj).subscribe(\r\n data => {\r\n const tmp = this.dataSource.data;\r\n tmp.push(data);\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to add Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n _saveFile(fileField: string, obj: any, file: any): Observable<any> {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n return this.glowwService[`post${this.objectName}${fileField}`].call(this.glowwService, this.getPrimaryKey(obj), formData).pipe(\r\n tap((event: HttpEvent<any>) => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n file.progress = Math.round(event.loaded * 100 / (event.total ?? 1));\r\n file.inProgress = file.progress !== 100;\r\n break;\r\n case HttpEventType.Response:\r\n file.progress = 100;\r\n file.status = \"Done\";\r\n file.inProgress = false;\r\n break;\r\n }\r\n }),\r\n filter((event: HttpEvent<any>) => {\r\n console.log(`filter ${event.type}`);\r\n return event.type === HttpEventType.Response\r\n }),\r\n map((event: HttpResponse<any>) => {\r\n console.log(`map ${event.type}`);\r\n const tmp = this.dataSource.data;\r\n tmp[tmp.indexOf(obj)] = event.body;\r\n this.dataSource.data = tmp;\r\n console.log(`after replace...`);\r\n return event.body;\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n file.inProgress = false;\r\n file.status = \"Error\";\r\n console.log(`${file.data.name} upload failed.`);\r\n //subject.error(error);\r\n return of(`${file.data.name} upload failed.`);\r\n })\r\n );\r\n }\r\n\r\n AddObj() {\n const dialogConfig = new MatDialogConfig();\n dialogConfig.disableClose = true;\n dialogConfig.autoFocus = true;\n dialogConfig.closeOnNavigation = false;\n dialogConfig.panelClass = 'gw-resizable-dialog-panel';\n dialogConfig.width = '900px';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.maxHeight = '100vh';\n if (this.dialogConfig) {\n Object.keys(this.dialogConfig).forEach(\n name => {\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n let args = {};\r\n Object.keys(this.route.snapshot?.params).forEach(key => {\r\n args[key] = this.route.snapshot?.params[key];\r\n dialogConfig.data = args;\r\n });\r\n\r\n\r\n const dlg = this.dialog.open(this.AddEditor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n console.log(`fileFields ${fileFields?.length}`);\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n console.log(`fileField ${fileField}`);\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._saveObj(datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n console.log(`file.fileName ${file.fileName}`);\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._saveObj(datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._saveObj(data);\r\n }\r\n }\r\n );\r\n }\r\n\r\n DeleteObj(obj) {\r\n if (confirm(this.t('GLOWW.CONFIRM_DELETE', 'Are you sure you want to delete this object ?'))) {\n this.deleteRequest.apply(this.glowwService, this.getPrimaryKey(obj)).subscribe(\n p => {\r\n const i = this.dataSource.data.indexOf(obj);\r\n const tmp = this.dataSource.data;\r\n tmp.splice(i, 1);\r\n this.dataSource.data = tmp;\r\n },\n error => {\n alert(`${this.t('GLOWW.UNABLE_TO_DELETE_OBJECT', 'Unable to delete object')} ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\n }\n );\n }\n }\r\n\r\n _updateObj(current: any, newData: any): Observable<any> {\r\n let args: object[] = this.getPrimaryKey(current); args.push(newData);\r\n var subject = new Subject<any>();\r\n this.putRequest.apply(this.glowwService, args).subscribe(\r\n data => {\r\n const i = this.dataSource.data.indexOf(current);\r\n const tmp = this.dataSource.data;\r\n tmp[i] = data;\r\n this.dataSource.data = tmp;\r\n subject.next(data);\r\n },\r\n error => {\r\n alert(`Unable to update Object ${error.status} ${error.statusText}\\n${error.Message}\\n${error.error}`);\r\n subject.error(error);\r\n }\r\n );\r\n return subject;\r\n }\r\n\r\n\r\n EditObj(obj: TObj) {\n const dialogConfig = new MatDialogConfig();\n dialogConfig.disableClose = true;\n dialogConfig.autoFocus = true;\n dialogConfig.closeOnNavigation = false;\n dialogConfig.panelClass = 'gw-resizable-dialog-panel';\n dialogConfig.width = '900px';\n dialogConfig.maxWidth = '100vw';\n dialogConfig.maxHeight = '100vh';\n\n if (this.dialogConfig) {\n Object.keys(this.dialogConfig).forEach(\n name => {\r\n dialogConfig[name] = this.dialogConfig[name];\r\n }\r\n );\r\n }\r\n const current = { ...obj };\r\n dialogConfig.data = obj;\r\n const dlg = this.dialog.open(this.Editor, dialogConfig);\r\n dlg.componentInstance.callback = (\r\n data => {\r\n let datacopy = { ...data };\r\n const fileFields = (this.Editor as any).fileFields;\r\n if (fileFields?.length == 1) {\r\n // Un seul champ, il peut être multiple\r\n const fileField = fileFields[0];\r\n const files = datacopy[fileField];\r\n delete datacopy[fileField];\r\n const allobs: { [key: string]: Observable<any>; } = {}\r\n files.forEach(file => {\r\n if (file.statut !== 'Done' && file.statut !== 'Error') {\r\n const obs = this._updateObj(current, datacopy).pipe(\r\n switchMap(newdata => this._saveFile(fileField, newdata, file)\r\n ));\r\n allobs[file.fileName] = obs;\r\n }\r\n });\r\n return combineLatest(allobs).pipe(take(1));\r\n\r\n } else if (fileFields?.length > 1) {\r\n // Plusieurs champs file, il ne peut y avoir qu'une seul fichier par champ.\r\n const fields = {};\r\n fileFields.forEach(ff => {\r\n fields[ff] = datacopy[ff];\r\n delete datacopy[ff];\r\n return this._updateObj(current, datacopy).pipe(\r\n mergeMap(newdata => {\r\n var allobs: Observable<any>[] = [];\r\n Object.entries(fields).forEach(([fileField, files]: [string, any[]]) => {\r\n if (files.length > 0) {\r\n allobs.push(this._saveFile(fileField, newdata, files[0]));\r\n }\r\n })\r\n return forkJoin(allobs); // TODO : PAS TERMINE... JAMAIS UTILISE...\r\n }));\r\n })\r\n } else {\r\n // Form sans fichier\r\n return this._updateObj(current, data);\r\n }\r\n }\r\n );\r\n }\n\n private toErrorMessage(error: any): string {\n if (!error) {\n return '';\n }\n\n const details = error.error?.message || error.error || error.message || error.statusText || `${error}`;\n return `${this.t('GLOWW.UNABLE_TO_QUERY', 'Unable to query')} : ${details}`;\n }\n\n private applyRouteState(queryParams: any): void {\n this.dataSource = null;\n this.resultException = null;\n this.queryParams = { ...(queryParams ?? {}) };\n this.syncFormWithQueryParams(this.queryParams);\n\n if (this.shouldDisplayForm(this.queryParams)) {\n this.showForm();\n this.changeDetectorRef.detectChanges();\n return;\n }\n\n if (this.shouldDisplayResult(this.queryParams)) {\n this.showResult();\n this.changeDetectorRef.detectChanges();\n this.Search();\n return;\n }\n\n this.showForm();\n this.changeDetectorRef.detectChanges();\n }\n\n private shouldDisplayForm(queryParams: any): boolean {\n if (!this.searchFormLayout) {\n return false;\n }\n\n return queryParams?.[DisplayObjectsComponent.DISPLAY_PARAM] === DisplayObjectsComponent.DISPLAY_FORM;\n }\n\n private shouldDisplayResult(queryParams: any): boolean {\n if (!this.searchFormLayout && this.resultLayout) {\n return true;\n }\n\n if (Object.keys(this.data ?? {}).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\n return true;\n }\n\n if (Object.keys(this.routeParams ?? {}).length > 0 && (this.data[\"__mode\"] !== \"edit\")) {\n return true;\n }\n\n return queryParams?.[DisplayObjectsComponent.DISPLAY_PARAM] === DisplayObjectsComponent.DISPLAY_RESULT\n || this.hasSearchQueryParams(queryParams);\n }\n\n private hasSearchQueryParams(queryParams: any): boolean {\n if (!queryParams) {\n return false;\n }\n\n return Object.keys(queryParams).some(key =>\n !DisplayObjectsComponent.INTERNAL_QUERY_KEYS.has(key) &&\n queryParams[key] !== null &&\n queryParams[key] !== undefined &&\n queryParams[key] !== ''\n );\n }\n\n private syncFormWithQueryParams(queryParams: any): void {\n const searchData = {};\n Object.keys(queryParams ?? {}).forEach(key => {\n if (DisplayObjectsComponent.INTERNAL_QUERY_KEYS.has(key) || key === '_MaxRow_') {\n return;\n }\n\n searchData[key] = queryParams[key];\n });\n\n const parentForm = this.parent?.form;\n if (parentForm?.contains('searchData')) {\n parentForm.patchValue({\n searchData: Object.keys(searchData).length ? searchData : null\n }, { emitEvent: false });\n }\n\n if (this.form2?.contains('_MaxRow_')) {\n this.form2.patchValue({\n _MaxRow_: queryParams?._MaxRow_ ?? null\n }, { emitEvent: false });\n }\n }\n\n private buildSearchQueryParams(): any {\n const nextQueryParams: any = {};\n const searchData: any = this.parent?.form?.value?.searchData;\n const form2Value: any = this.form2.value;\n if (searchData) {\n Object.keys(searchData).forEach(name => {\n nextQueryParams[name] = this.serializeQueryParamValue(searchData[name]);\n });\n }\n if (form2Value._MaxRow_) {\n nextQueryParams._MaxRow_ = form2Value._MaxRow_;\n }\n this.clean(nextQueryParams);\n return nextQueryParams;\n }\n\n private showForm(): void {\n this.displayform = true;\n this.displayresult = false;\n }\n\n private showResult(): void {\n this.displayform = false;\n this.displayresult = true;\n }\n\n}\n","<div>\n <ng-content select=\"glw-header\"></ng-content>\n</div>\n\n@if (displayform) {\n <div>\n <mat-card appearance=\"outlined\">\n <mat-card-content>\n @if (resultException) {\n <mat-error>\n {{ resultException }}\n </mat-error>\n }\n <ng-content select=\"glw-search-form\"></ng-content>\n <!--<ng-container *ngComponentOutlet=\"SearchForm; injector: objInjector\"></ng-container>-->\n @if (maxrows) {\n <div [formGroup]=\"form2\">\n <br />\n <mat-form-field>\n <mat-select [placeholder]=\"t('COMMON.MAX_ROW', 'MaxRow')\" formControlName=\"_MaxRow_\">\n @for (maxrow of maxrows; track maxrow) {\n <mat-option [value]=\"maxrow\">\n @if (maxrow) {\n <span>{{maxrow}} {{ t('COMMON.OBJECTS_SUFFIX', 'objects') }}</span>\n }\n @if (!maxrow) {\n <span>{{ t('COMMON.DEFAULT', 'Default') }}</span>\n }\n </mat-option>\n }\n </mat-select>\n </mat-form-field>\n </div>\n }\n </mat-card-content>\n <mat-card-actions>\n <button mat-stroked-button color=\"accent\" (click)=\"onSearch()\">\n <mat-icon>search</mat-icon>\n {{ t('COMMON.SEARCH', 'Search') }}\n </button>\n </mat-card-actions>\n </mat-card>\n </div>\n}\n\n<div [hidden]=\"!displayresult\">\n <!--*ngIf=\"displayresult\"-->\n <div class=\"mat-elevation-z8\" [hidden]=\"!dataSource\">\n <ng-content select=\"[filter]\"></ng-content>\n\n <!--*ngIf=\"dataSource; else Spinner\"-->\n <table mat-table [dataSource]=\"dataSource\" matSort>\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef>\n @if (hasSearchState()) {\n <i class=\"fal fa-arrow-left\" (click)=\"onBack()\" [attr.title]=\"t('COMMON.BACK', 'Back')\">\n </i>\n <i class=\"fal fa-rotate-right\" (click)=\"onRefresh()\" [attr.title]=\"t('COMMON.REFRESH', 'Refresh')\">\n </i>\n }\n @if (canAddThis()) {\n <i class=\"fal fa-plus\" (click)=\"AddObj()\">\n </i>\n }\n </th>\n <td mat-cell *matCellDef=\"let obj\">\n @if (canDisplayObjThis(obj)) {\n <i class=\"fal fa-eye\" [routerLink]=\"displayObjLinkThis(obj)\">\n </i>\n }\n @for (action of actions; track action) {\n @if (action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\">\n </i>\n }\n @if (!action.icon.icon && (!action.display || action.display(obj, action.name))) {\n <i [ngClass]=\"action.icon\" [routerLink]=\"action.routerLinkFct(obj)\"></i>\n }\n }\n @if (canDeleteThis(obj)) {\n <i class=\"fal fa-trash-alt\" (click)=\"DeleteObj(obj)\">\n </i>\n }\n @if (canEditThis(obj)) {\n <i class=\"fal fa-pencil\" (click)=\"EditObj(obj)\">\n </i>\n }\n </td>\n </ng-container>\n <ng-content select=\"glw-result-table\"></ng-content>\n <tr mat-header-row *matHeaderRowDef=\"columnsToDisplay\"></tr>\n <tr mat-row *matRowDef=\"let myRowData; columns: columnsToDisplay\"></tr>\n </table>\n <mat-paginator [pageSize]=\"10\" [pageSizeOptions]=\"[10, 20, 50, 100]\" [showFirstLastButtons]=\"true\"></mat-paginator>\n </div>\n <div #Spinner [hidden]=\"dataSource\">\n <mat-spinner></mat-spinner>\n </div>\n</div>\n","import { Component, Inject, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-prompt',\n templateUrl: './prompt.component.html',\n styleUrls: ['./prompt.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatDialogActions, MatButton, SafeHtmlPipe]\n})\r\nexport class PromptComponent implements OnInit {\r\n title: string;\r\n message: string;\r\n form: UntypedFormGroup;\r\n\r\n constructor(public dialogRef: MatDialogRef<PromptComponent>, @Inject(MAT_DIALOG_DATA) public data: PromptModel, private formBuilder: UntypedFormBuilder) {\r\n // Update view with given values\r\n this.title = data.title;\r\n this.message = data.message;\r\n this.form = this.formBuilder.group({\r\n prompt: [data.initialValue, data.required ? Validators.required : null],\r\n });\r\n }\r\n ngOnInit(): void {\r\n\r\n }\r\n\r\n onCancel(): void {\r\n // Close the dialog, return true\r\n this.dialogRef.close(false);\r\n }\r\n\r\n onOK(): void {\r\n // Close the dialog, return false\r\n this.dialogRef.close(this.form.value.prompt);\r\n }\r\n\r\n}\r\n\r\n// tslint:disable-next-line: max-classes-per-file\r\nexport class PromptModel {\r\n constructor(public title: string, public message: string, public initialValue: string, public required: boolean) {\r\n }\r\n}\r\n","<h1 mat-dialog-title>\r\n {{title}}\r\n</h1>\r\n\r\n<div mat-dialog-content [formGroup]=\"form\">\r\n <p [innerHTML]=\"message | safeHtml\"></p>\r\n <mat-form-field>\r\n <input matInput placeholder=\"Prompt\" formControlName=\"prompt\" style=\"width: calc(100% - 32px);\">\r\n </mat-form-field>\r\n</div>\r\n\r\n<mat-dialog-actions>\r\n <button mat-button (click)=\"onCancel()\">Cancel</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"onOK()\">Yes</button>\r\n</mat-dialog-actions>\r\n","import { MonoTypeOperatorFunction } from 'rxjs';\r\nimport { delay as delayOperator, retryWhen, scan, tap } from 'rxjs/operators';\r\n\r\nexport function retryWithDelay<T>(\r\n delay: number,\r\n count = 1\r\n): MonoTypeOperatorFunction<T> {\r\n return (input) =>\r\n input.pipe(\r\n retryWhen((errors) =>\r\n errors.pipe(\r\n scan((acc, error) => ({ count: acc.count + 1, error }), {\r\n count: 0,\r\n error: undefined as any,\r\n }),\r\n tap((current) => {\r\n if (current.count > count) {\r\n throw current.error;\r\n }\r\n }),\r\n delayOperator(delay)\r\n )\r\n )\r\n );\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { HttpClient, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of } from 'rxjs';\r\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { switchMap, map, catchError, retry, delay } from 'rxjs/operators';\nimport { retryWithDelay } from './retry-with-delay';\n\n@Pipe({\n name: 'secure',\n standalone: true\n})\nexport class SecurePipe implements PipeTransform {\n\r\n constructor(private http: HttpClient, private domSanitizer: DomSanitizer) { }\r\n\r\n transform(url: any, delayVal?: any, retryVal?: any) {\r\n if (!delayVal) { delayVal = 5000; }\r\n if (!retryVal) { retryVal = 0; }\r\n return this.http\r\n // load the image as a blob\r\n .get(url, { responseType: 'blob' })\r\n // create an object url of that blob that we can use in the src attribute\r\n .pipe(\r\n map(e => this.domSanitizer.bypassSecurityTrustUrl(URL.createObjectURL(e))),\r\n retryWithDelay(delayVal, retryVal)\r\n );\r\n }\r\n}\r\n","import { Component, HostBinding, Inject, Input, OnInit, AfterViewInit } from '@angular/core';\r\nimport { NavItem } from '../../Models/nav-item';\r\nimport { Router, RouterLink } from '@angular/router';\r\nimport { NavService } from '../../Services/nav.service';\r\nimport { animate, state, style, transition, trigger } from '@angular/animations';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { async } from 'rxjs';\nimport { NgStyle, NgClass, AsyncPipe } from '@angular/common';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatListItem, MatListItemIcon, MatListItemTitle } from '@angular/material/list';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\n\r\n@Component({\n selector: 'gloww-menu-list-item',\n templateUrl: './menu-list-item.component.html',\n styleUrls: ['./menu-list-item.component.scss'],\n animations: [\n trigger('indicatorRotate', [\n state('collapsed', style({ transform: 'rotate(0deg)' })),\n state('expanded', style({ transform: 'rotate(180deg)' })),\n transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4,0.0,0.2,1)'))\n ])\n ],\n imports: [NgStyle, NgClass, RouterLink, MatIcon, MatListItem, MatListItemIcon, MatListItemTitle, AsyncPipe]\n})\nexport class MenuListItemComponent implements OnInit, AfterViewInit {\n\r\n private _expanded: boolean = false;\r\n get expanded(): boolean {\r\n return this._expanded;\r\n }\r\n set expanded(value: boolean) {\r\n console.log(\"change expanded\");\r\n this._expanded = value;\r\n }\r\n\r\n @HostBinding('attr.aria-expanded') ariaExpanded = this.expanded;\r\n @Input() item: NavItem;\r\n @Input() depth: number;\r\n glowwService: GlowwService;\r\n _disabled: Promise<boolean>;\r\n _hidden: Promise<boolean>;\r\n\r\n\r\n constructor(@Inject('glowwService') glowwService: GlowwService, public navService: NavService, public router: Router, private readonly i18n: GlowwI18nService) {\n this.glowwService = glowwService;\n if (this.depth === undefined) {\n this.depth = 0;\n }\r\n }\r\n ngAfterViewInit(): void {\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n this.glowwService.basePathChange.subscribe(newUrl => {\r\n console.log(`basePathChange in menu ${newUrl}`);\r\n this._disabled = this.getDisabledPromise();\r\n this._hidden = this.getHiddenPromise();\r\n });\r\n }\r\n\r\n ngOnInit() {\r\n\r\n }\r\n\r\n onItemSelected(item: NavItem) {\r\n if (item.children && item.children.length) {\r\n this.expanded = !this.expanded;\r\n }\r\n }\r\n\r\n isActive(item: NavItem) {\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n return route ? this.router.isActive(route, true) : false\r\n }\r\n }\r\n\r\n routerLink(item: NavItem) {\n //if (this.isDisabled(item)) return null;\r\n let route = this.item.route as string;\r\n if (typeof this.item.route === 'function') {\r\n const routefct: () => string | string[] = this.item.route;\r\n route = routefct.call(this);\r\n }\r\n return route;\n }\n\n displayName(item: NavItem): string {\n return this.i18n.instant(item.displayName, item.displayName);\n }\n\r\n falsePromise = new Promise<boolean>((resolve, reject) => {\r\n resolve(false)\r\n });\r\n\r\n getDisabledPromise() {\r\n //console.log(`isdisable item ${item.displayName} ${item.disabled}`);\r\n if (!this.item.disabled) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.disabled as any)();\r\n }\r\n\r\n getHiddenPromise() {\r\n if (!this.item.hidden) {\r\n return this.falsePromise;\r\n }\r\n return (this.item.hidden as any)();\r\n }\r\n\r\n}\r\n","@if (item) {\n @if (!(_hidden | async)) {\n <div class=\"thisMenu\" (click)=\"onItemSelected(item)\" [class.disabled]=\"(_disabled | async)\">\n <a mat-list-item lines=\"1\"\n [ngStyle]=\"{'padding-left': (depth * 12) + 'px'}\"\n [ngClass]=\"{'active': isActive(item) && !(_disabled | async), 'expanded': expanded}\"\n class=\"menu-list-item\"\n [routerLink]=\"routerLink(item)\">\n <span matListItemIcon class=\"routeIcon\">\n <i [ngClass]=\"item.icon\" [ngStyle]=\"item.iconStyle\"></i>\n </span>\n <span matListItemTitle class=\"menu-label\">{{ displayName(item) }}</span>\n </a>\n @if (item.children?.length && !(_disabled | async)) {\n <div class=\"expand-container\">\n <mat-icon [@indicatorRotate]=\"expanded ? 'expanded': 'collapsed'\" class=\"expandIcon\">\n expand_more\n </mat-icon>\n </div>\n }\n </div>\n }\n @if (expanded && !(_disabled | async)) {\n <div>\n @for (child of item.children; track child) {\n <gloww-menu-list-item [item]=\"child\" [depth]=\"depth+1\">\n </gloww-menu-list-item>\n }\n </div>\n }\n}\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\n\r\nexport interface Snippet {\r\n name: string;\r\n code?: string;\r\n externfile?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SnippetsService {\r\n\r\n constructor(private http: HttpClient) { }\r\n\r\n getSnippets(path: string): Observable<Snippet[]> {\r\n return this.http.get<Snippet[]>(path);\r\n }\r\n\r\n getSnippetCode(path: string) {\r\n return this.http.get(path, {\r\n responseType: 'text'\r\n });\r\n }\r\n\r\n}\r\n","import { Snippet, SnippetsService } from './../../Services/snippets.service';\r\nimport { Component, Input, OnInit, ViewChild, AfterViewInit, ViewEncapsulation } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { CodemirrorComponent, CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport * as prettier from 'prettier/standalone';\r\nimport * as parserTypescript from 'prettier/plugins/typescript';\r\nimport * as parserBabel from 'prettier/plugins/babel';\r\nimport { MatLabel } from '@angular/material/input';\r\nimport { MatSelect, MatOption } from '@angular/material/select';\r\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\r\n selector: 'gloww-code-editor',\r\n templateUrl: './code-editor.component.html',\r\n styleUrls: ['./code-editor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n multi: true,\r\n useExisting: CodeEditorComponent\r\n }\r\n ],\r\n imports: [MatLabel, MatSelect, FormsModule, MatOption, MatButton, CodemirrorModule]\r\n})\r\nexport class CodeEditorComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('display') display: string = null;\r\n @Input('mode') mode: any = \"text/typescript\";\r\n @Input('formatter') formatter?: string;\r\n @Input('formatterOptions') formatterOptions?: any = { useTabs: true, printWidth: 160 };\r\n @Input('snippets') snippets?: Snippet[];\r\n @Input('snippetsPath') snippetsPath?: string;\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n resizable = true;\r\n\r\n currentSnippet?: Snippet;\r\n doc: any = null;\r\n extraKeys = {\r\n \"Alt-K\": function(cm) { alert('Alt-K'); cm.blockComment(cm.doc.getCursor('from'), cm.doc.getCursor('to'));/*cm.toggleComment();*/ },\r\n \"Shift-Alt-K\": \"toggleComment\",\r\n \"Alt-N\": this.autoFormatSelection.bind(this)\r\n };\r\n\r\n constructor(private snippetsService: SnippetsService, private glowwService: GlowwService) {\r\n\r\n }\r\n ngAfterViewInit(): void {\r\n console.log(this.codeMirrorComponent);\r\n console.log(this.codeMirrorComponent.codeMirror);\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n console.log(this.doc);\r\n if (this.snippetsPath) {\r\n this.snippetsService.getSnippets(this.snippetsPath.replace(\"/assets/\", this.glowwService.baseHref + \"/assets/\")).subscribe((snippets) => {\r\n if (!this.snippets) {\r\n this.snippets = [];\r\n }\r\n snippets.forEach((snippet) => this.snippets.push(snippet));\r\n });\r\n }\r\n }\r\n\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (typeof (obj) === 'object' && obj != null) {\r\n this.value = JSON.stringify(obj);\r\n } else {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n setDisabledState?(isDisabled: boolean): void {\r\n //throw new Error('Method not implemented.');\r\n }\r\n insert() {\r\n this.doc = this.codeMirrorComponent.codeMirror?.getDoc();\r\n var cursor = this.doc.getCursor();\r\n if (this.currentSnippet.code) {\r\n this.doc.replaceRange(this.currentSnippet.code, cursor);\r\n }\r\n if (this.currentSnippet.externfile) {\r\n this.snippetsService.getSnippetCode(this.currentSnippet.externfile).subscribe((code) => this.doc.replaceRange(code, cursor));\r\n }\r\n }\r\n\r\n getSelectedRange(doc) {\r\n return { from: doc.getCursor('from'), to: doc.getCursor('to') };\r\n }\r\n\r\n getFormatter(): string {\r\n if (this.formatter) return this.formatter;\r\n if (this.mode.match(/typescript/)) { return \"typescript\"; }\r\n return null;\r\n }\r\n\r\n\r\n autoFormatSelection(cm) {\r\n try {\r\n const formatter = this.getFormatter();\r\n if (!formatter) {\r\n alert(\"no formatter defined for this code\");\r\n return;\r\n }\r\n let options: any = { ...this.formatterOptions };\r\n options.parser = formatter;\r\n options.plugins = [parserTypescript, parserBabel]\r\n\r\n cm.doc.setValue(prettier.format(cm.doc.getValue(), options));\r\n } catch (ex) {\r\n alert(`Unable to format this code, check Syntax`);\r\n }\r\n }\r\n}\r\n","<div class=\"editor-container mainDiv\">\n <mat-label>{{display}}</mat-label>\n\n @if (snippets?.length) {\n <div class=\"snippet-header\">\n <mat-select [(ngModel)]=\"currentSnippet\" class=\"snippet-select\">\n @for (snippet of snippets; track snippet) {\n <mat-option [value]=\"snippet\">{{snippet.name}}</mat-option>\n }\n </mat-select>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"insert()\">Insert</button>\n </div>\n }\n\n <ngx-codemirror\n [(ngModel)]=\"value\"\n [options]=\"{lineNumbers: true, theme: 'eclipse', indentWithTabs:true, indentUnit: 4, matchBrackets: true, mode: mode, fixedGutter:false, extraKeys: extraKeys}\"\n class=\"editor-full-width\">\n </ngx-codemirror>\n</div>","import { Pipe, PipeTransform } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Pipe({\n name: 'htmlFormat',\n standalone: true\n})\nexport class HtmlFormatPipe implements PipeTransform {\n\r\n constructor(private _sanitizer?: DomSanitizer) { }\r\n\r\n transform(value: string, ...args: unknown[]): string {\r\n const newval = value.replace(/(^\\s*\\w|\\.\\s\\w)/g, m => m.toUpperCase()).replace(/\\s\\./ig, '').replace(/\\s*Nouvelle ligne\\s*.\\s*/ig, '<br/>').trim();\r\n if (!this._sanitizer) return newval;\r\n return this._sanitizer.bypassSecurityTrustHtml(newval) as string;\r\n }\r\n\r\n}\r\n","import { Component, EventEmitter, OnInit, Output, Input } from '@angular/core';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { NgClass } from '@angular/common';\r\n\r\n@Component({\n selector: 'gloww-social-network',\n templateUrl: './social-network.component.html',\n styleUrls: ['./social-network.component.scss'],\n imports: [NgClass]\n})\r\nexport class SocialNetworkComponent implements OnInit {\r\n @Input() oAuthProviders: any[];\r\n @Output() callback: EventEmitter<any> = new EventEmitter();\r\n\r\n icons = {\r\n Google: \"fa-brands fa-google\",\r\n LinkedIN: \"fa-brands fa-linkedin\",\r\n Facebook: \"fa-brands fa-facebook\",\r\n Github: \"fa-brands fa-github\",\r\n Amazon: \"fa-brands fa-amazon\",\r\n Apple: \"fa-brands fa-apple\",\r\n Microsoft: \"fa-brands fa-microsoft\",\r\n Twitter: \"fa-brands fa-twitter\",\r\n VK: \"fa-brands fa-vk\",\r\n };\r\n\r\n // oAuthAssociations: string[];\r\n // oAuthProviders: string[];\r\n\r\n constructor(private authenticationService: AuthenticationService) {\r\n // this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n // this.authenticationService.getOAuthAssociations().subscribe(oap => this.oAuthAssociations = oap);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n execute(provider) {\r\n this.callback.emit(provider);\r\n }\r\n writeobj(provider) {\r\n console.log(provider);\r\n }\r\n\r\n\r\n\r\n}\r\n\r\n","@if (oAuthProviders) {\n <div class=\"social-network-container\">\n @for (provider of oAuthProviders; track provider) {\n <a (click)=\"execute(provider)\" class=\"provider-link\" [title]=\"provider\">\n <i [ngClass]=\"icons[provider.toString()]\"></i>\n </a>\n }\n </div>\n}","import { MatIconModule } from '@angular/material/icon';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { Router, ActivatedRoute } from '@angular/router';\r\nimport { UntypedFormBuilder, UntypedFormGroup, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { first } from 'rxjs/operators';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\nimport { MatCard, MatCardHeader, MatCardTitle, MatCardContent } from '@angular/material/card';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\r\n\r\n@Component({\n selector: 'gloww-login',\n templateUrl: 'login.component.html',\n styleUrls: ['./login.component.scss'],\n imports: [MatCard, MatCardHeader, MatCardTitle, FormsModule, ReactiveFormsModule, MatCardContent, MatFormField, MatLabel, MatInput, MatButton, SocialNetworkComponent]\n}) export class LoginComponent implements OnInit {\n public loginForm: UntypedFormGroup;\r\n public lostPasswordForm: UntypedFormGroup;\r\n public resetPasswordForm: UntypedFormGroup;\r\n loading = false;\r\n submitted = false;\r\n returnUrl: string;\r\n application: string;\r\n error = '';\r\n showDomain = false;\r\n state = 1;\r\n config: AuthenticationServiceConfig;\r\n oAuthProviders: string[];\r\n\r\n idOauth?: number;\r\n provider?: string;\r\n name?: string;\r\n value?: string;\n\n\n constructor(private formBuilder: UntypedFormBuilder, private route: ActivatedRoute, private router: Router, private authenticationService: AuthenticationService, @Optional() config?: AuthenticationServiceConfig) {\n // redirect to home if already logged in\r\n if (this.authenticationService.currentUserValue) {\r\n this.router.navigate(['/']);\r\n }\r\n this.config = config;\r\n if (config && config.showDomain) {\n this.showDomain = config.showDomain;\n }\n\n this.initializeForms();\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\n }\n\n private initializeForms() {\n const grp: any = {\n username: ['', Validators.required],\n password: ['', Validators.required]\n };\n const lostPwd: any = {\n email: ['', Validators.required],\n gsm: [''],\n firstname: ['', Validators.required],\n lastname: ['', Validators.required]\n };\n const resetPwd: any = {\n email: ['', Validators.required],\n code: ['', Validators.required],\n newPassword: ['', Validators.required],\n confirmationPassword: ['', Validators.required]\n };\n if (this.showDomain) {\n grp.domain = [''];\n }\n this.loginForm = this.formBuilder.group(grp);\n this.lostPasswordForm = this.formBuilder.group(lostPwd);\n this.resetPasswordForm = this.formBuilder.group(resetPwd, { validator: this.MatchPassword });\n }\n\n MatchPassword(fg: UntypedFormGroup) {\n if (!fg) { return; }\n return fg.get('newpassword')?.value === fg.get('confirmationPassword')?.value;\n }\n ngOnInit() {\n // get return url from route parameters or default to '/'\n this.returnUrl = this.route.snapshot.queryParams.returnUrl;//|| window.location.search;\n this.application = this.route.snapshot.queryParams.application;//|| window.location.pathname;\r\n console.log(`returnUrl : ${this.returnUrl}`);\r\n console.log(`application : ${this.application}`);\r\n\r\n this.idOauth = this.route.snapshot.queryParams.idOauth;\r\n this.provider = this.route.snapshot.queryParams.provider;\r\n this.name = this.route.snapshot.queryParams.name;\r\n this.value = this.route.snapshot.queryParams.value;\r\n if (this.idOauth) {\r\n this.state = 4;\r\n }\r\n\r\n }\r\n\r\n // convenience getter for easy access to form fields\r\n get f() { return this.loginForm.controls; }\r\n\r\n resetError() {\r\n this.error = \"\";\r\n }\r\n\r\n onConnect() {\r\n this.submitted = true;\r\n this.error = \"\";\r\n // stop here if form is invalid\r\n if (this.loginForm.invalid) {\r\n return;\r\n }\r\n this.loading = true;\r\n let domain = '';\r\n if (this.showDomain) {\r\n domain = this.f.domain.value;\r\n }\r\n this.authenticationService.login(domain, this.f.username.value, this.f.password.value)\r\n .pipe(first())\r\n .subscribe(data => {\r\n console.log(`navigate to ${this.returnUrl}`);\r\n this.router.navigate([this.returnUrl]);\r\n }, error => {\r\n if (error.error?.Code) {\r\n switch (error.error?.Code) {\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP(${error.error?.Params?.IP}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur(${error.error?.Params?.Username}).Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n if (!this.error) this.error = error.error.Message;\r\n }\r\n else {\r\n this.error = 'Impossible de se connecter. ';\r\n }\r\n this.loading = false;\r\n });\r\n }\r\n\r\n onAskResetPasswordCode() {\r\n let gsm = this.lostPasswordForm.value.gsm;\r\n if (!this.config?.askGSM) {\r\n gsm = '--noGSM--';\r\n }\r\n this.authenticationService\r\n .askResetPasswordCode('', this.lostPasswordForm.value.firstname, this.lostPasswordForm.value.lastname, this.lostPasswordForm.value.email, gsm)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 3;\r\n }\r\n\r\n onResetPassword() {\r\n this.authenticationService\r\n .resetPassword(this.resetPasswordForm.value.email, this.resetPasswordForm.value.code, this.resetPasswordForm.value.newPassword)\r\n .subscribe(\r\n d => { },\r\n error => { }\r\n );\r\n this.state = 1;\r\n }\r\n\r\n OAuthSignIn(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}?returnUrl=${encodeURI(this.returnUrl)}&application=${encodeURI(this.application)}&loginUrl=${encodeURI(window.location.pathname)}¤tUserVariableName=${this.authenticationService.currentUserVariableName}`;\r\n window.location.href = url;\r\n }\r\n\r\n onOAuthAskCode(): void {\r\n this.authenticationService\r\n .OAuthAskCode(this.authenticationService.environment, this.resetPasswordForm.value.email, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n d => {\r\n this.state = 5;\r\n },\r\n error => { }\r\n );\r\n }\r\n onOAuthAssociation(): void {\r\n this.authenticationService\r\n .OAuthAssociation(this.authenticationService.environment, this.resetPasswordForm.value.code, this.idOauth, this.provider, this.name, this.value)\r\n .subscribe(\r\n user => {\r\n console.log(user);\r\n window.location.href = this.returnUrl;\r\n },\r\n error => { }\r\n );\r\n }\r\n}\r\n","<div class=\"login-wrapper center-layout\">\n <mat-card appearance=\"outlined\" class=\"login-card\">\n <mat-card-header>\n <mat-card-title>Connexion</mat-card-title>\n </mat-card-header>\n\n @if (state==1) {\n <form class=\"example-form\" [formGroup]=\"loginForm\" (ngSubmit)=\"onConnect()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n @if (showDomain) {\n <mat-form-field class=\"full-width\">\n <mat-label>Domain</mat-label>\n <input matInput formControlName=\"domain\" (change)=\"resetError()\">\n </mat-form-field>\n }\n <mat-form-field class=\"full-width\">\n <mat-label>Username</mat-label>\n <input matInput formControlName=\"username\" (change)=\"resetError()\">\n </mat-form-field>\n <mat-form-field class=\"full-width\">\n <mat-label>Password</mat-label>\n <input matInput formControlName=\"password\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </mat-card-content>\n <div class=\"action-buttons-row\">\n <button mat-raised-button color=\"primary\" type=\"submit\">Me Connecter</button>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"state=2; resetError();\">\n Mot de passe oublié\n </button>\n </div>\n <div class=\"social-divider\">\n <gloww-social-network (callback)=\"OAuthSignIn($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\n </div>\n </form>\n }\n\n @if (state==2) {\n <form class=\"example-form\" [formGroup]=\"lostPasswordForm\" (ngSubmit)=\"onAskResetPasswordCode()\">\n <mat-card-content class=\"form-grid\">\n @if (error) {\n <span class=\"error-msg full-width\">{{error}}</span>\n }\n </mat-card-content>\n <div class=\"action-buttons-column\">\n <button mat-raised-button color=\"primary\" class=\"btn-block\" type=\"submit\">Demande de réinitialisation</button>\n <button mat-stroked-button color=\"primary\" class=\"btn-block\" (click)=\"state=3\">J'ai un code</button>\n </div>\n </form>\n }\n\n </mat-card>\n</div>","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class JwtInterceptor implements HttpInterceptor {\r\n\tconstructor(private authenticationService: AuthenticationService) { }\r\n\r\n\tintercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n\t\t// add authorization header with jwt token if available\r\n\t\ttry {\r\n\t\t\tconst currentUser = this.authenticationService.currentUserValue;\r\n\t\t\tif (currentUser && currentUser.Token) {\r\n\t\t\t\trequest = request.clone({\r\n\t\t\t\t\tsetHeaders: {\r\n\t\t\t\t\t\tAuthorization: `Bearer ${currentUser.Token}`\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(`jwt interceptor ${e}`);\r\n\t\t}\r\n\r\n\t\treturn next.handle(request);\r\n\t}\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable()\r\nexport class ErrorInterceptor implements HttpInterceptor {\r\n constructor(private authenticationService: AuthenticationService) { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n return next.handle(request).pipe(catchError(err => {\r\n if (err.status === 401) {\r\n // auto logout if 401 response returned from api\r\n this.authenticationService.logout();\r\n location.reload();\r\n }\r\n\r\n const error = err.error ? (err.error.message || err.StatusText) : err.statusText;\r\n if (console) console.log(err);\r\n return throwError(err);\r\n }));\r\n }\r\n}\r\n","import { MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-change-password-dlg',\n templateUrl: './change-password-dlg.component.html',\n styleUrls: ['./change-password-dlg.component.scss'],\n imports: [MatDialogTitle, FormsModule, ReactiveFormsModule, CdkScrollable, MatDialogContent, MatFormField, MatLabel, MatInput, MatDialogActions, MatButton]\n})\r\nexport class ChangePasswordDlgComponent implements OnInit {\r\n error: string;\r\n form: UntypedFormGroup;\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<ChangePasswordDlgComponent>, private authenticationService: AuthenticationService) {\r\n this.form = this.formBuilder.group({\r\n oldpassword: ['', Validators.required],\r\n newpassword: ['', Validators.required],\r\n confirmationpassword: ['', Validators.required]\r\n }, { validator: c => c.get('newpassword').value === c.get('confirmationpassword').value });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n resetError() {\r\n this.error = '';\r\n }\r\n\r\n onSubmit() {\r\n this.resetError();\r\n if (this.form.invalid) {\r\n return;\r\n }\r\n const user = this.authenticationService.currentUserValue;\r\n this.authenticationService.changePassword('', user.username, this.form.value.oldpassword, this.form.value.newpassword).subscribe(r =>\r\n this.dialogRef.close(true),\r\n error => {\r\n switch (error.error?.Code) {\r\n case 'COMPLEXITY':\r\n this.error = 'Le mot de passe souhaitez n\\'est pas suffisamment complexe. Veuillez utiliser un mot de passe long (8 caractères minimum) combinant des majuscules, minuscules, chiffres et caractères spéciaux.';\r\n break;\r\n case 'BADAUTH':\r\n this.error = 'Utilisateur inconnu ou mauvais mot de passe. Veuillez vérifier vos identifiants.';\r\n break;\r\n case 'WEAKPASSWORD':\r\n this.error = 'Le mot de passe que vous avez utilisez est trop faible. S\\'il s\\'agit effectivement de votre mot de passe, veuillez le réinitialiser au moyen de la fonctionnalité \"Mot de passe oublié\". ';\r\n break;\r\n case 'BLACKLISTEDIP':\r\n this.error = `Trop de tentatives de connexion à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez plus vous connecter à partir de ce poste.`;\r\n break;\r\n case 'TOOMANYFROMIP':\r\n this.error = `Trop de tentatives de connexion, à partir de cette adresse IP (${error.error?.Params?.IP}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n case 'TOOMANYFORUSERNAME':\r\n this.error = `Trop de tentatives de connexion pour cet utilisateur (${error.error?.Params?.Username}). Vous ne pouvez pas réessayer pendant ${error.error?.Params?.nbrMinutes} minutes.`\r\n break;\r\n\r\n }\r\n this.error = error.error.Message;\r\n }\r\n );\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n\r\n}\r\n","<h2 mat-dialog-title>Change Password</h2>\n\n<form class=\"password-form\" [formGroup]=\"form\" (ngSubmit)=\"onSubmit()\">\n <mat-dialog-content>\n <div class=\"form-container\">\n @if (error) {\n <div class=\"error-msg full-width\">\n {{error}}\n </div>\n }\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Old Password</mat-label>\n <input matInput formControlName=\"oldpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>New Password</mat-label>\n <input matInput formControlName=\"newpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n\n <mat-form-field class=\"full-width\" appearance=\"outline\">\n <mat-label>Confirmation</mat-label>\n <input matInput formControlName=\"confirmationpassword\" type=\"password\" (change)=\"resetError()\">\n </mat-form-field>\n </div>\n </mat-dialog-content>\n\n <mat-dialog-actions align=\"end\">\n <button mat-button (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button color=\"primary\" type=\"submit\" [disabled]=\"form.invalid\">\n Change Password\n </button>\n </mat-dialog-actions>\n</form>","import { Oauthassociation } from './../../Models/oauthassociation';\r\nimport { Component, OnInit, Optional } from '@angular/core';\r\nimport { MatDialog, MatDialogRef, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from '../../Services/authentication-service-config';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { SocialNetworkComponent } from '../social-network/social-network.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-social-network-dlg',\n templateUrl: './social-network-dlg.component.html',\n styleUrls: ['./social-network-dlg.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, SocialNetworkComponent, MatDialogActions, MatButton]\n})\r\nexport class SocialNetworkDlgComponent implements OnInit {\r\n\r\n oAuthProviders: string[];\r\n oAuthAssociations: Oauthassociation[];\r\n config: AuthenticationServiceConfig;\r\n\r\n constructor(private dialogRef: MatDialogRef<SocialNetworkDlgComponent>, private authenticationService: AuthenticationService, private dialog: MatDialog, @Optional() config?: AuthenticationServiceConfig) {\r\n this.config = config;\r\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\r\n this.authenticationService.getOAuthAssociations().subscribe(oap => {\r\n this.oAuthAssociations = oap;//oap.map(item => Object.assign(new Oauthassociation(), item));\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n OK() {\r\n this.dialogRef.close();\r\n }\r\n\r\n OAuthAddAssociation(provider: String): void {\r\n const url = `${window.location.origin}/admin/AuthUsers/OAuth/${provider}/${this.config.environment}`;\r\n window.location.href = url;\r\n }\r\n OAuthDeleteAssociation(association: Oauthassociation): void {\r\n this.authenticationService.OAuthDeleteAssociation(association.provider, association.idOAuth).subscribe(\r\n result => {\r\n alert(\"Association supprimée\");\r\n const index = this.oAuthAssociations.indexOf(association, 0);\r\n if (index >= 0) {\r\n this.oAuthAssociations.splice(index, 1);\r\n } else {\r\n alert(\"unable to delete item\");\r\n }\r\n //this.oAuthAssociations.find(a => a === association\r\n },\r\n error => {\r\n alert('Impossible d\\'effacer l\\'association');\r\n }\r\n\r\n )\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Gestion des identifications par réseaux sociaux</h2>\r\n<mat-dialog-content>\r\n <h3>Associations établies</h3>\r\n <p>Choisissez l'association que vous souhaitez supprimer</p>\r\n <gloww-social-network (callback)=\"OAuthDeleteAssociation($event)\" [oAuthProviders]=\"oAuthAssociations\"></gloww-social-network>\r\n <h3>Nouvelle association</h3>\r\n <p>Choisissez le provider</p>\r\n <gloww-social-network (callback)=\"OAuthAddAssociation($event)\" [oAuthProviders]=\"oAuthProviders\"></gloww-social-network>\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button mat-stroked-button color=\"accent\" class=\"btn-block\" (click)=\"OK() \">OK</button>\r\n</mat-dialog-actions>","import { ActivatedRoute, Router, RouterLink } from '@angular/router';\r\nimport { Component, OnInit, Input } from '@angular/core';\r\nimport { MatDialogConfig, MatDialog } from '@angular/material/dialog';\r\nimport { ChangePasswordDlgComponent } from '../change-password-dlg/change-password-dlg.component';\r\nimport { AuthenticationService } from '../../Services/authentication.service';\r\nimport { SocialNetworkDlgComponent } from '../social-network-dlg/social-network-dlg.component';\nimport { NgClass } from '@angular/common';\nimport { Subscription } from 'rxjs';\n\n@Component({\n selector: 'gloww-user-menu',\n templateUrl: './user-menu.component.html',\n styleUrls: ['./user-menu.component.scss'],\n imports: [NgClass, RouterLink]\n})\nexport class UserMenuComponent implements OnInit {\n\n @Input() size = '1x';\n @Input() imageUser = null;\n @Input() loginpage = '';\r\n\r\n showMenuUser = false;\n connected = false;\n oAuthProviders: string[];\n private currentUserSubscription: Subscription;\n\n constructor(private authenticationService: AuthenticationService, private dialog: MatDialog, private router: Router) {\n this.setCurrentUser(this.authenticationService.currentUserValue);\n this.currentUserSubscription = this.authenticationService.currentUser?.subscribe(person => this.setCurrentUser(person));\n this.authenticationService.getOAuthProviders().subscribe(oap => this.oAuthProviders = oap);\n }\n\n ngOnInit(): void {\n }\n\n ngOnDestroy(): void {\n this.currentUserSubscription?.unsubscribe();\n }\n\n private setCurrentUser(person: any) {\n this.connected = !!person;\n this.imageUser = null;\n if (person?.UserInfo?.Picture) {\n this.imageUser = '/' + this.authenticationService.environment + '/' + person.UserInfo.Picture;\n }\n }\n\r\n Logout() {\r\n this.showMenuUser = false;\r\n this.authenticationService.logout();\r\n this.router.navigate(['/']);\r\n }\r\n\r\n ChangePassword() {\r\n this.showMenuUser = true;\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(ChangePasswordDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n if (result) { alert('Password Changed'); }\r\n });\r\n }\r\n\r\n toggleMenuUser() {\r\n this.showMenuUser = !this.showMenuUser;\r\n }\r\n\r\n Configuration() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n this.dialog.open(SocialNetworkDlgComponent, dialogConfig).afterClosed().subscribe(result => {\r\n\r\n });\r\n }\r\n\r\n}\r\n","@if (connected) {\n <div>\n <span (click)=\"toggleMenuUser()\">\n @if (imageUser) {\n <img [src]=\"imageUser\" style=\"height:40px;float:left; padding-left:20px\" />\n }\n @if (!imageUser) {\n <i [ngClass]=\"'fal fa-user '+size\" style=\"float:left; padding-left:10px\">\n <!--[size]=\"size\"-->\n </i>\n }\n </span>\n @if (showMenuUser) {\n <div class=\"menuUser\">\n <ul class=\"menuSec\" style=\"border: solid lightgrey;\">\n <li (click)=\"ChangePassword()\">\n <i class=\"fal fa-key-skeleton\"></i>Change Password\n </li>\n @if (oAuthProviders && oAuthProviders.length) {\n <li (click)=\"Configuration()\">\n <i class=\"fal fa-tools\"></i>Configuration\n </li>\n }\n <li (click)=\"Logout()\">\n <i class=\"fal fa-sign-out\"></i>Déconnexion\n </li>\n </ul>\n </div>\n }\n </div>\n}\n@if (!connected && loginpage) {\n <div>\n <span style=\"height:40px;float:left; padding-left:20px\" [routerLink]=\"loginpage\">Connexion</span>\n </div>\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\n\r\n@Injectable()\r\nexport class StagingInterceptor implements HttpInterceptor {\r\n constructor() { }\r\n\r\n intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\r\n // add authorization header with jwt token if available\r\n try {\r\n if (!request.url.match(/version\\.json(\\?|$)/ig)) {\r\n console.log(`Replace ${request.url}`);\r\n return next.handle(request.clone({ url: request.url.replace(\"__Staging\", \"\") }));\r\n }\r\n } catch (e) {\r\n console.log(`staging interceptor ${e}`);\r\n }\r\n\r\n return next.handle(request);\r\n }\r\n}\r\n","import { APP_BASE_HREF, PlatformLocation } from '@angular/common';\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Router, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\nimport { jwtDecode } from 'jwt-decode';\r\n\r\nimport { AuthenticationService } from '../Services/authentication.service';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class AuthGuard {\r\n\r\n private baseHref = null;\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n this.baseHref = platformLocation.getBaseHrefFromDOM();\r\n }\r\n\r\n canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {\r\n const currentUser = this.authenticationService.currentUserValue;\r\n if (currentUser) {\r\n // logged in so return true\r\n const jwtToken = jwtDecode<any>(currentUser.Token);\r\n if (Date.now() < jwtToken.exp * 1000) {\r\n return true;\r\n } else {\r\n this.authenticationService.logout();\r\n }\r\n }\r\n const vd = window.location.pathname\r\n if (vd.endsWith(\"/login\")) { return true; }\r\n\r\n console.log(window.location);\r\n console.log(route);\r\n console.log(state);\r\n console.log(state.url);\r\n console.log(window.location.search);\r\n console.log(window.location.pathname);\r\n\r\n const returnUrl = window.location.pathname.substr(this.baseHref.length);\r\n //let application = window.location.pathname.substr(0, window.location.pathname.length - state.url.length);\r\n /*if (state.url === '/') {\r\n application = window.location.pathname.endsWith(\"/\") ? application.substr(0, window.location.pathname.length - 1) : window.location.pathname;\r\n }\r\n if (!application) { application = '/'; }\r\n console.log(application);*/\r\n // not logged in so redirect to login page with the return url\r\n this.router.navigate(['/login'], { queryParams: { returnUrl: `${returnUrl}${window.location.search}`, application: `${this.baseHref}` } });\r\n return false;\r\n }\r\n}\r\n","import { PlatformLocation } from '@angular/common';\r\nimport { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthenticationService } from '../gloww-security.module';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdministratorGuard {\r\n\r\n constructor(\r\n private router: Router,\r\n private authenticationService: AuthenticationService,\r\n private platformLocation: PlatformLocation\r\n //@Inject(APP_BASE_HREF) baseHref: string\r\n ) {\r\n\r\n }\r\n\r\n canActivate(\r\n route: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator || currentUser.isAdministrator;\r\n }\r\n\r\n}\r\n","import { AdministratorGuard } from './Helpers';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { AuthenticationServiceConfig } from './Services/authentication-service-config';\nimport { EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { LoginComponent } from './Components/login/login.component';\nimport { ReactiveFormsModule, FormsModule } from '@angular/forms';\nimport { HTTP_INTERCEPTORS, provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { AuthGuard } from './Helpers';\r\nimport { JwtInterceptor } from './Helpers/jwt.interceptor';\r\nimport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nimport { AuthenticationService } from './Services/authentication.service';\r\n\r\nimport { MatToolbarModule } from '@angular/material/toolbar';\r\nimport { MatSidenavModule } from '@angular/material/sidenav';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { RouterModule } from '@angular/router';\r\nimport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\r\nimport { MatButton, MatButtonModule } from '@angular/material/button';\r\nimport { UserMenuComponent } from './Components/user-menu/user-menu.component';\r\nimport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\r\nimport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nimport { StagingInterceptor } from './Helpers/staging.interceptor';\n\nexport const GLOWW_SECURITY_STANDALONE_DECLARATIONS = [\n LoginComponent,\n ChangePasswordDlgComponent,\n UserMenuComponent,\n SocialNetworkDlgComponent,\n SocialNetworkComponent\n] as const;\n\nfunction getGlowwSecurityProviders(authenticationServiceConfig: AuthenticationServiceConfig): Provider[] {\n return [\n AuthenticationService,\n AuthenticationServiceConfig,\n { provide: AuthenticationServiceConfig, useValue: authenticationServiceConfig },\n { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true },\n { provide: HTTP_INTERCEPTORS, useClass: ErrorInterceptor, multi: true },\n //{ provide: HTTP_INTERCEPTORS, useClass: StagingInterceptor, multi: true },\n //socialLoginProviders\n ];\n}\n\nexport function provideGlowwSecurity(authenticationServiceConfig: AuthenticationServiceConfig): EnvironmentProviders {\n return makeEnvironmentProviders([\n provideHttpClient(withInterceptorsFromDi()),\n ...getGlowwSecurityProviders(authenticationServiceConfig)\n ]);\n}\n\n@NgModule({\n exports: [...GLOWW_SECURITY_STANDALONE_DECLARATIONS, RouterModule], imports: [CommonModule,\n FormsModule,\n ReactiveFormsModule,\n MatToolbarModule,\n MatButtonModule,\n MatSidenavModule,\n MatInputModule,\n MatFormFieldModule,\n MatCardModule,\n MatDialogModule,\n RouterModule,\n ...GLOWW_SECURITY_STANDALONE_DECLARATIONS], providers: [provideHttpClient(withInterceptorsFromDi())] })\nexport class GlowwSecurityModule {\n public static forRoot(authenticationServiceConfig: AuthenticationServiceConfig): ModuleWithProviders<GlowwSecurityModule> {\n\r\n /*\r\n var socialLoginProviders = {\r\n provide: 'SocialAuthServiceConfig',\r\n useValue: {\r\n autoLogin: false,\r\n providers: [\r\n ],\r\n onError: (err) => {\r\n console.error(err);\r\n }\r\n } as SocialAuthServiceConfig,\r\n };\r\n\r\n if (authenticationServiceConfig.googleClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: GoogleLoginProvider.PROVIDER_ID,\r\n provider: new GoogleLoginProvider(\r\n authenticationServiceConfig.googleClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.facebookClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: FacebookLoginProvider.PROVIDER_ID,\r\n provider: new FacebookLoginProvider(\r\n authenticationServiceConfig.facebookClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.amazonClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: AmazonLoginProvider.PROVIDER_ID,\r\n provider: new AmazonLoginProvider(\r\n authenticationServiceConfig.amazonClientId\r\n )\r\n }\r\n )\r\n }\r\n if (authenticationServiceConfig.microsoftClientId) {\r\n socialLoginProviders.useValue.providers.push(\r\n {\r\n id: MicrosoftLoginProvider.PROVIDER_ID,\r\n provider: new MicrosoftLoginProvider(\r\n authenticationServiceConfig.microsoftClientId\r\n )\r\n }\r\n )\r\n }\r\n */\r\n\r\n return {\n ngModule: GlowwSecurityModule,\n providers: getGlowwSecurityProviders(authenticationServiceConfig)\n };\n }\n}\n\r\nexport { LoginComponent } from './Components/login/login.component';\nexport { ChangePasswordDlgComponent } from './Components/change-password-dlg/change-password-dlg.component';\nexport { UserMenuComponent } from './Components/user-menu/user-menu.component';\nexport { SocialNetworkDlgComponent } from './Components/social-network-dlg/social-network-dlg.component';\nexport { SocialNetworkComponent } from './Components/social-network/social-network.component';\nexport { AuthenticationService } from './Services/authentication.service';\nexport { JwtInterceptor } from './Helpers/jwt.interceptor';\nexport { ErrorInterceptor } from './Helpers/error.interceptor';\r\nexport { StagingInterceptor } from './Helpers/staging.interceptor';\r\nexport { AuthGuard } from './Helpers';\r\nexport { AdministratorGuard } from './Helpers/';\r\n","import { Component, Input, OnInit, SecurityContext, TemplateRef, ViewChild } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, FormsModule } from '@angular/forms';\r\nimport { MatDialog, MatDialogRef, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\nimport { HtmlFormatPipe } from '../../Pipes/html-format.pipe';\r\nimport { VoiceRecognitionService } from '../../Services/voice-recognition.service';\r\n//import { AngularEditorConfig, AngularEditorToolbarComponent } from '@kolkov/angular-editor';\r\n//import { AngularEditorButtonConfig } from '@kolkov/angular-editor/lib/config';\r\nimport { AngularEditorConfig, AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { AuthenticationService } from '../../gloww-security/gloww-security.module';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\r\n\r\n@Component({\n selector: 'gloww-html-editor',\n templateUrl: './html-editor.component.html',\n styleUrls: ['./html-editor.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: HtmlEditorComponent\n }\n ],\n imports: [AngularEditorModule, FormsModule, CdkScrollable, MatDialogContent, MatDialogActions, HtmlFormatPipe]\n})\r\nexport class HtmlEditorComponent implements ControlValueAccessor {\r\n @ViewChild('voiceRecognitionDlg') voiceRecognitionTemplate!: TemplateRef<any>;\r\n //@Input() formControlName: string = \"\";\r\n @Input() placeHolder: string = \"\";\r\n @Input('value') _value: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n\r\n //CCH tb?: AngularEditorToolbarComponent;\r\n dialogRef?: MatDialogRef<any, any>;\r\n\r\n allowedStyles = ['text-align'];\r\n allowedTags = ['p', 'span', 'div', 'hr', 'br', 'b', 'i', 'u', 'sup', 'sub', 'strike', 'ol', 'ul', 'li'];\r\n public editorConfig: AngularEditorConfig = {\r\n editable: true,\r\n spellcheck: true,\r\n height: 'auto',\r\n minHeight: '75px',\r\n maxHeight: 'auto',\r\n width: 'auto',\r\n minWidth: '0',\r\n translate: 'yes',\r\n enableToolbar: true,\r\n showToolbar: true,\r\n placeholder: 'Enter text here...',\r\n defaultParagraphSeparator: 'p',\r\n defaultFontName: '',\r\n defaultFontSize: '3',\r\n fonts: [\r\n { class: 'arial', name: 'Arial' }\r\n ],\r\n customClasses: [\r\n {\r\n name: 'quote',\r\n class: 'quote',\r\n }\r\n ],\r\n uploadUrl: 'v1/image',\r\n uploadWithCredentials: false,\r\n //cch sanitize: (html: string) => this.sanitize(html),\r\n toolbarPosition: 'top',\r\n toolbarHiddenButtons: [\r\n ['insertImage', 'insertVideo', 'customClasses', 'heading', 'heading',\r\n 'fontName',\r\n 'fontSize',\r\n 'textColor',\r\n 'backgroundColor', !this.isAdministrator() ? 'toggleEditorMode' : '']\r\n ],\r\n/* additionalButtons: [\r\n {\r\n title: 'Speech Recognition',\r\n click: (tb: AngularEditorToolbarComponent, event) => {\r\n this.tb = tb;\r\n tb.focus();\r\n this.voiceRecognitionService.start();\r\n this.voiceRecognitionService.text = \"\";\r\n this.dialogRef = this.dialog.open(this.voiceRecognitionTemplate, {\r\n width: '550px'\r\n });\r\n\r\n },\r\n icon: 'fas fa-comment-plus'\r\n }\r\n ]*/\r\n };\r\n\r\n cancel() {\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n paste() {\r\n //CCH this.tb?.insertHtml(new HtmlFormatPipe().transform(this.voiceRecognitionService.text));\r\n this.voiceRecognitionService.stop();\r\n //CCH this.tb = undefined;\r\n this.dialogRef?.close();\r\n }\r\n\r\n constructor(private sanitizer: DomSanitizer, private authenticationService: AuthenticationService, public voiceRecognitionService: VoiceRecognitionService, public dialog: MatDialog) {\r\n this.voiceRecognitionService.init();\r\n }\r\n\r\n get value() {\r\n return this._value;\r\n }\r\n\r\n set value(val) {\r\n this._value = val;\r\n this.onChange(val);\r\n this.onTouched();\r\n }\r\n writeValue(obj: any): void {\r\n if (obj) {\r\n this.value = obj;\r\n }\r\n }\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n }\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n sanitize(html: string): string {\r\n let itres = this.sanitizer.sanitize(SecurityContext.STYLE, html)?.replace(new RegExp('\\\\</?[a-z]+:[a-z]+\\\\>', 'gi'), '').replace(/class=\"Mso[a-z]+\"/ig, '');\r\n const matchTags = itres?.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/ig);\r\n matchTags?.forEach(m => {\r\n const matchTag = m.match(/<\\s*\\/?(?<tag>[a-z0-9]+)\\s*[^>]*>/i);\r\n if (matchTag?.groups && this.allowedTags.indexOf(matchTag?.groups['tag']) < 0) {\r\n itres = itres?.replace(m, '');\r\n }\r\n });\r\n\r\n while (true) {\r\n const matchStyle = itres?.match(/style\\s*=\\s*\"(?<style>[^\"]+)\"/i);\r\n if (!matchStyle || !matchStyle?.groups) { break; }\r\n const styles = matchStyle?.groups['style']?.replace(/"/ig, '\"');\r\n const smatches = styles.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/ig);\r\n const newStyles: any[] = [];\r\n smatches?.forEach((v, i, a) => {\r\n const ssmatches = v.match(/(?<name>[^;:]+)\\s*:\\s*(?<value>[^;]+);*/i);\r\n if (ssmatches?.groups) {\r\n const name = ssmatches?.groups['name'];\r\n if (this.allowedStyles.indexOf(name) >= 0) {\r\n newStyles.push(v);\r\n }\r\n const value = ssmatches.groups['value'];\r\n console.log(`${name}=${value}`);\r\n }\r\n });\r\n let attr = '';\r\n if (newStyles.length) { attr = `stylenew=\"${newStyles.join(';')}\"`; }\r\n itres = itres?.replace(matchStyle[0], attr);\r\n }\r\n return itres?.replace(/stylenew=/ig, 'style=') ?? \"\";\r\n }\r\n\r\n isAdministrator() {\r\n const currentUser: any = (this.authenticationService.currentUserValue as any).UserInfo;\r\n return currentUser.IsAdministrator === 1 || currentUser.isAdministrator === 1;\r\n }\r\n\r\n}\r\n","<div>\r\n <angular-editor [(ngModel)]=\"value\" [config]=\"editorConfig\" [placeholder]=\"placeHolder\"></angular-editor>\r\n</div>\r\n<ng-template #voiceRecognitionDlg>\r\n <mat-dialog-content>\r\n <div>La reconnaissance vocale est activée. Veuillez dicter le texte à insérer.</div>\r\n <div [innerHTML]=\"voiceRecognitionService.text | htmlFormat\" style=\"width:500px;height:300px;border:1px solid; border-color: blue;\"></div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions>\r\n <button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\r\n <button class=\"mat-raised-button mat-primary\" (click)=\"paste()\">Paste</button>\r\n </mat-dialog-actions>\r\n</ng-template>\r\n","import { CodeEditorComponent } from './../../code-editor/code-editor.component';\r\nimport { Component, Inject, OnInit, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { UntypedFormGroup, UntypedFormBuilder, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport { CodemirrorComponent } from '@ctrl/ngx-codemirror';\r\nimport { ResizedEvent } from 'angular-resize-event';\nimport { CdkDrag, CdkDragHandle } from '@angular/cdk/drag-drop';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatFormField, MatLabel, MatInput } from '@angular/material/input';\nimport { CodeEditorComponent as CodeEditorComponent_1 } from '../../code-editor/code-editor.component';\nimport { MatButton } from '@angular/material/button';\r\n\r\n@Component({\n selector: 'gloww-file-edit',\n templateUrl: './file-edit.component.html',\n styleUrls: ['./file-edit.component.scss'],\n encapsulation: ViewEncapsulation.None,\n imports: [CdkDrag, MatDialogTitle, CdkDragHandle, CdkScrollable, MatDialogContent, FormsModule, ReactiveFormsModule, MatFormField, MatLabel, MatInput, CodeEditorComponent_1, MatDialogActions, MatButton]\n})\r\nexport class FileEditComponent implements OnInit {\r\n @ViewChild(CodemirrorComponent) codeMirrorComponent: CodemirrorComponent\r\n\r\n form: UntypedFormGroup;\r\n ext: string;\r\n\r\n modes = {\r\n \".txt\": \"null\",\r\n \".cs\": \"clike\",\r\n \".js\": \"javascript\",\r\n \".json\": { name: \"javascript\", json: true },\r\n \".css\": \"css\",\r\n \".scss\": \"scss\",\r\n \".htm\": \"html\",\r\n \".html\": \"html\",\r\n \".xml\": \"xml\",\r\n \".xsl\": \"xml\",\r\n \".xslt\": \"xml\",\r\n \".yml\": \"yaml\",\r\n \".yaml\": \"yaml\",\r\n\r\n };\r\n\r\n\r\n constructor(private formBuilder: UntypedFormBuilder, private dialogRef: MatDialogRef<FileEditComponent>, @Inject(MAT_DIALOG_DATA) definition) {\r\n this.form = this.formBuilder.group({\r\n path: [null, Validators.required],\r\n content: [null]\r\n });\r\n if (definition) {\r\n this.form.patchValue(definition);\r\n try {\r\n this.ext = definition.path.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|yml|yaml|exp|sh|pwsh|xsl|xslt)$/ig)[0];\r\n } catch {\r\n this.ext = null;\r\n }\r\n\r\n\r\n\r\n }\r\n }\r\n\r\n getMode() {\r\n try {\r\n if (this.ext && this.modes[this.ext]) {\r\n return this.modes[this.ext];\r\n } else {\r\n return \"null\";\r\n }\r\n } catch {\r\n return \"null\";\r\n }\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n cancel() {\r\n this.dialogRef.close();\r\n }\r\n save() {\r\n this.dialogRef.close(this.form.value);\r\n }\r\n\r\n initDone = false;\r\n onResized(event: ResizedEvent) {\r\n /*console.log(`new Height ${event.newRect?.height}`);\r\n this.cmHeight = `${event.newRect?.height - 15}px`;*/\r\n if (this.initDone) {\r\n this.codeMirrorComponent.codeMirror.setSize(null, event.newRect?.height - 5);\r\n } else {\r\n this.initDone = true;\r\n }\r\n }\r\n\r\n}\r\n","<div cdkDrag cdkDragRootElement=\".cdk-overlay-pane\" class=\"dlg\">\r\n <h2 mat-dialog-title cdkDragHandle>Ajout/Edition d'un fichier</h2>\r\n \r\n <mat-dialog-content [formGroup]=\"form\" class=\"dialog-form-content\">\r\n <div class=\"column-layout fill-container\">\r\n <mat-form-field appearance=\"outline\" class=\"width-100\">\r\n <mat-label>Path</mat-label>\r\n <input matInput [readonly]=\"true\" placeholder=\"Path\" formControlName=\"path\">\r\n </mat-form-field>\r\n\r\n <div class=\"editor-flex-grow\">\r\n <gloww-code-editor [mode]=\"getMode()\" formControlName=\"content\"></gloww-code-editor>\r\n </div>\r\n </div>\r\n </mat-dialog-content>\r\n\r\n <mat-dialog-actions align=\"end\">\r\n <button mat-raised-button (click)=\"cancel()\">Close</button>\r\n <button mat-raised-button color=\"primary\" (click)=\"save()\">Save</button>\r\n </mat-dialog-actions>\r\n</div>","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class FolderServiceConfig {\r\n apiPath?= '/';\r\n static Create(t?: any): FolderServiceConfig {\r\n const res = new FolderServiceConfig();\r\n if (t) {\r\n Object.assign(res, t);\r\n }\r\n return res;\r\n }\r\n}\r\n","import { FolderServiceConfig } from './folder-service-config';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Inject, Injectable, Optional } from '@angular/core';\r\nimport { API_PATH } from '../injection-token';\r\nimport { API_SERVER_URL } from './gloww.service';\r\nimport { firstValueFrom } from 'rxjs';\r\n\r\n\r\nexport interface DirectoryContent {\r\n files: string[];\r\n directories: string[];\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FolderService {\r\n\r\n constructor(private http: HttpClient, private folderServiceConfig: FolderServiceConfig, @Optional() @Inject(API_SERVER_URL) apiServerUrl: string) {\r\n console.log(`folderServiceConfig ${folderServiceConfig.apiPath}`);\r\n console.log(`apiServierUrl ${apiServerUrl}`);\r\n }\r\n async noFolders() {\r\n return await firstValueFrom(this.http.get<boolean>(`${this.folderServiceConfig.apiPath}noFolders`));\r\n }\r\n\r\n\r\n getDirectoryContent(path: string) {\r\n return this.http.get<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path ?? \"\"}`);\r\n }\r\n postDirectoryContent(path: string) {\r\n const formData = new FormData();\r\n return this.http.post<DirectoryContent>(`${this.folderServiceConfig.apiPath}Directories/${path}`, formData, {});\r\n }\r\n\r\n getFileContent(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'text'\r\n });\r\n }\r\n getFileContentBlob(path: string) {\r\n return this.http.get(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, {\r\n responseType: 'blob'\r\n });\r\n }\r\n\r\n postFileContent(path: string, formData: FormData) {\r\n return this.http.post<any>(`${this.folderServiceConfig.apiPath}Files/${(path ?? \"\").replace(/[\\/\\\\]/g, '%2F')}`, formData, {\r\n reportProgress: true,\r\n observe: 'events'\r\n });\r\n }\r\n}\r\n","import { HttpEventType, HttpErrorResponse } from '@angular/common/http';\r\nimport { Component, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { Router, ActivatedRoute, NavigationEnd, RouterLink } from '@angular/router';\r\nimport { of } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { DirectoryContent, FolderService } from '../../../Services/folder.service';\r\nimport { PromptModel, PromptComponent } from '../../prompt/prompt.component';\r\nimport { UploadDocComponent } from '../../upload-doc/upload-doc.component';\r\nimport { UploadFileComponent } from '../../upload-file/upload-file.component';\r\nimport { FileEditComponent } from '../file-edit/file-edit.component';\nimport { MatProgressSpinner } from '@angular/material/progress-spinner';\r\n\r\n@Component({\n selector: 'gloww-folders',\n templateUrl: './folders.component.html',\n styleUrls: ['./folders.component.scss'],\n imports: [RouterLink, MatProgressSpinner]\n})\r\nexport class FoldersComponent implements OnInit {\r\n\r\n\r\n currentDir: string;\r\n directoryContent: DirectoryContent;\r\n\r\n\r\n constructor(private folderService: FolderService, private router: Router, private route: ActivatedRoute, private dialog: MatDialog) {\r\n //flowService.getDirectoryContent(route.snapshot.params.id).subscribe(r => this.directoryContent = r);\r\n\r\n this.router.events.subscribe((event: NavigationEnd) => {\r\n if (event instanceof NavigationEnd) {\r\n const urlParts = event.url.split('/');\r\n this.currentDir = urlParts.slice(2).join(\"/\");\r\n this.directoryContent = null;\r\n folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n })\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n addFolder() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New Folder\", \"Please give the name of the folder to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(folder => {\r\n if (folder) {\r\n this.folderService.postDirectoryContent(this.currentDir + '/' + folder).subscribe(c => {\r\n this.router.navigate(this.getRouterLink(folder)),\r\n error => alert(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n addFile() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = new PromptModel(\"New File\", \"Please give the name of the text file to create\", \"\", true);\r\n\r\n this.dialog.open(PromptComponent, dialogConfig).afterClosed().subscribe(fileName => {\r\n if (fileName) {\r\n this.Edit(fileName);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n }\r\n });\r\n }\r\n\r\n addFileUpload() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { acceptMime: 'image/*', multiple: true, allowAltFileName: true };\r\n\r\n this.dialog.open(UploadDocComponent, dialogConfig).afterClosed().subscribe(files => {\r\n if (files) {\r\n files.forEach(file => {\r\n const formData = new FormData();\r\n formData.append('file', file.data);\r\n this.UploadFile(this.currentDir + \"/\" + file.fileName, formData);\r\n this.directoryContent = null;\r\n this.folderService.getDirectoryContent(this.currentDir).subscribe(r => this.directoryContent = r);\r\n });\r\n }\r\n });\r\n }\r\n getRouterLink(directory?: string) {\r\n if (!this.currentDir) {\r\n return ['/folders', directory];\r\n }\r\n if (!directory) {\r\n let res = ['/folders', ...this.currentDir.split(\"/\")];\r\n res.pop();\r\n return res;\r\n }\r\n return ['/folders', ...this.currentDir.split(\"/\"), directory]\r\n }\r\n getHref(f: string) {\r\n if (!this.currentDir) {\r\n return ['/FlowMgmt', 'folders', f].join('/');\r\n }\r\n\r\n return ['/FlowMgmt', 'folders', ...this.currentDir.split(\"/\"), f].join('/');\r\n }\r\n\r\n\r\n\r\n dataURItoBlob(content) {\r\n const byteString = content;\r\n /*const arrayBuffer = new ArrayBuffer(byteString.length);\r\n const int8Array = new Uint8Array(arrayBuffer);\r\n let j = 0;\r\n for (let i = 0; i < byteString.length; i++) {\r\n let chr = byteString.charCodeAt(i);\r\n if (chr <= 255) {\r\n int8Array[j++] = chr;\r\n } else {\r\n console.log(`${chr}:${Math.floor(chr / 255)},${chr % 255}`)\r\n int8Array[j++] = Math.floor(chr / 255);\r\n int8Array[j++] = chr % 255;\r\n }\r\n }*/\r\n const te = new TextEncoder();\r\n const uint8array = te.encode(byteString);\r\n const blob = new Blob([uint8array], { type: 'text/plain;charset=UTF-8;' });\r\n return blob;\r\n }\r\n\r\n isEditable(filename: string): boolean {\r\n return filename.match(/\\.(txt|js|json|ts|cs|css|scss|xml|html|htm|exp|sh|pwsh|yml|yaml|xsl|xslt)$/ig) != null;\r\n }\r\n\r\n UploadFile(fileName: string, formData: FormData) {\r\n this.folderService.postFileContent(fileName, formData).pipe(\r\n map(event => {\r\n switch (event.type) {\r\n case HttpEventType.UploadProgress:\r\n //file.progress = Math.round(event.loaded * 100 / event.total);\r\n break;\r\n case HttpEventType.Response:\r\n return event.body;\r\n }\r\n }),\r\n catchError((error: HttpErrorResponse) => {\r\n //file.inProgress = false;\r\n return of(`${fileName} upload failed.`);\r\n })).subscribe((event: any) => {\r\n if (typeof (event) === 'object') {\r\n //obj.Logo = event.Logo;\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n Edit(fileName: string) {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n\r\n let content: string;\r\n this.folderService.getFileContent(this.currentDir + '/' + fileName).subscribe(c => {\r\n dialogConfig.data = { path: this.currentDir + '/' + fileName, content: c };\r\n this.dialog.open(FileEditComponent, dialogConfig).afterClosed().subscribe(data => {\r\n if (data) {\r\n const formData = new FormData();\r\n const imageName = fileName;\r\n const imageBlob = this.dataURItoBlob(data.content);\r\n const file = new File([imageBlob], imageName, { type: 'text/plain;charset=UTF-8;' });\r\n formData.append('file', file);\r\n this.UploadFile(this.currentDir + '/' + fileName, formData);\r\n //file.inProgress = true;\r\n\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n /*\r\nthis.http.get(`${environment.apiUrl}`, {\r\n responseType: 'arraybuffer', headers: headers\r\n}\r\n).subscribe(response => this.downLoadFile(response, \"application/ms-excel\"));*/\r\n\r\n downloadFile(fileName: string) {\r\n this.folderService.getFileContentBlob(this.currentDir + '/' + fileName).subscribe(blob => {\r\n this.downLoadFile2(blob, blob.type)\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Method is use to download file.\r\n * @param data - Array Buffer data\r\n * @param type - type of the document.\r\n */\r\n downLoadFile2(data: any, type: string) {\r\n let blob = new Blob([data], { type: type });\r\n let url = window.URL.createObjectURL(blob);\r\n let pwa = window.open(url);\r\n if (!pwa || pwa.closed || typeof pwa.closed == 'undefined') {\r\n alert('Please disable your Pop-up blocker and try again.');\r\n }\r\n }\r\n\r\n}\r\n","<h1>\n <i class=\"fal fa-folder\" size=\"40px\"></i> /{{currentDir}}\n @if (currentDir) {\n <i class=\"fal fa-level-up\" [routerLink]=\"getRouterLink()\"></i>\n }\n</h1>\n@if (directoryContent) {\n <div>\n <i class=\"fal fa-folder-plus\" (click)=\"addFolder()\" size=\"30px\"></i>\n <ul>\n @for (d of directoryContent.directories; track d) {\n <li>\n <i class=\"fal fa-folder\"></i><a [routerLink]=\"getRouterLink(d)\">{{d}}</a>\n </li>\n }\n </ul>\n <i class=\"fal fa-file-plus\" (click)=\"addFile()\" size=\"30px\"></i>\n <i class=\"fal fa-file-upload\" (click)=\"addFileUpload()\" size=\"30px\"></i>\n <ul>\n @for (f of directoryContent.files; track f) {\n <li>\n @if (isEditable(f)) {\n <a (click)=\"Edit(f)\" href=\"javascript:void(0);\">\n <i class=\"fal fa-file\"></i> {{f}}\n </a>\n } @else {\n <i class=\"fal fa-file fa-disabled\"></i> <a (click)=\"downloadFile(f)\" target=\"_blank\" href=\"javascript:void(0);\">{{f}}</a>\n }\n </li>\n }\n </ul>\n </div>\n} @else {\n <mat-spinner></mat-spinner>\n}\n","import { HttpResponse, HttpErrorResponse, HttpClient } from '@angular/common/http';\r\nimport { Component, Inject, OnInit } from '@angular/core';\r\nimport { MatDialogRef, MAT_DIALOG_DATA, MatDialogTitle, MatDialogContent, MatDialogActions } from '@angular/material/dialog';\r\nimport FileSaver from 'file-saver';\r\nimport JSZip from 'jszip';\r\nimport { filter, map } from 'rxjs/operators';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MatProgressBar } from '@angular/material/progress-bar';\r\n\r\n@Component({\n selector: 'gloww-download-progress',\n templateUrl: './download-progress.component.html',\n styleUrls: ['./download-progress.component.scss'],\n imports: [MatDialogTitle, CdkScrollable, MatDialogContent, MatProgressBar, MatDialogActions]\n})\r\nexport class DownloadProgressComponent implements OnInit {\r\n\r\n done: number;\r\n name: string;\r\n files: { name: string, url: string }[];\r\n current: { url: string, loaded: number, total: number }[];\r\n message: string;\r\n percent: number;\r\n constructor(private dialogRef: MatDialogRef<DownloadProgressComponent>, @Inject(MAT_DIALOG_DATA) arg: any, public httpClient: HttpClient) {\r\n this.done = -1;\r\n this.name = arg.name;\r\n this.files = arg.files;\r\n this.current = []\r\n this.message = \"Download des fichiers\";\r\n this.percent = -1;\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.name) {\r\n this.downloadZip();\r\n } else {\r\n this.download();\r\n }\r\n\r\n }\r\n\r\n async getFile(url: string, callback: (url: string, loaded: number, total: number) => void) {\r\n const httpOptions = {\r\n observe: \"events\",\r\n reportProgress: true,\r\n responseType: \"blob\" //as 'json'\r\n };\r\n const res = await this.httpClient.get(url, httpOptions as any).pipe(\r\n map((event: any) => {\r\n console.log(event);\r\n /*if (event.type === HttpEventType.DownloadProgress) {\r\n console.log(`download progress ${(event as HttpEventType.DownloadProgress).valueOf}`);\r\n }\r\n if (event.type === HttpEventType.Response) {\r\n console.log(\"donwload completed\");\r\n }*/\r\n if (event.type === 3) {\r\n callback(url, event.loaded, event.total)\r\n }\r\n if (event instanceof HttpResponse) {\r\n callback(url, -1, -1);\r\n }\r\n return event;\r\n }),\r\n filter((event: any) => event instanceof HttpResponse)).toPromise().catch((err: HttpErrorResponse) => {\r\n const error = err.error;\r\n return error;\r\n });\r\n return res.body;\r\n }\r\n\r\n callback(url: string, loaded: number, total: number) {\r\n const index = this.current.findIndex(c => c.url === url);\r\n if (total === -1) {\r\n this.done += 1;\r\n this.current.splice(index, 1);\r\n } else {\r\n if (index === -1) {\r\n this.current.push({ url, loaded, total });\r\n } else {\r\n this.current[index].loaded = loaded;\r\n }\r\n\r\n }\r\n }\r\n\r\n callback_zip(metadata: any) {\r\n this.percent = metadata.percent;\r\n }\r\n\r\n async downloadZip() {\r\n const zip = new JSZip();\r\n // tslint:disable-next-line:prefer-for-of\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n zip.file(file.name, b);\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n\r\n await zip.generateAsync({ type: 'blob' }, this.callback_zip.bind(this)).then((content) => {\r\n if (content) {\r\n FileSaver.saveAs(content, this.name);\r\n }\r\n });\r\n this.dialogRef.close();\r\n }\r\n\r\n async download() {\r\n this.done = 0;\r\n await Promise.all(this.files!.map(async (file) => {\r\n let fileData: any;\r\n fileData = await this.getFile(file.url, this.callback.bind(this));\r\n const b: any = new Blob([fileData], { type: '' + fileData.type + '' });\r\n if (file.name===\"open\"){\r\n var blobURL = URL.createObjectURL(b);\r\n window.open(blobURL);\r\n }else{\r\n FileSaver.saveAs(b, file.name);\r\n }\r\n }));\r\n this.message = \"Génération du fichier Zip\";\r\n this.done = -1;\r\n this.dialogRef.close();\r\n\r\n }\r\n}\r\n","<h2 mat-dialog-title>Progression Download</h2>\n\n<mat-dialog-content>\n <H3>{{message}}</H3>\n @if (percent>0) {\n <mat-progress-bar [value]=\"percent\"></mat-progress-bar>\n }\n @if (done>=0) {\n <div>\n <mat-progress-bar [value]=\"done*100/files.length\"></mat-progress-bar> {{done}}/{{files.length}}\n <br />\n <ul>\n @for ( file of current; track file; let i = $index) {\n <li>\n <span id=\"file-label\">{{file.url}}</span>\n <mat-progress-bar [value]=\"file.loaded*100/file.total\"></mat-progress-bar>\n </li>\n }\n </ul>\n </div>\n }\n</mat-dialog-content>\n\n\n<mat-dialog-actions>\n <!--<button class=\"mat-raised-button\" (click)=\"cancel()\">Close</button>\n <button class=\"mat-raised-button mat-primary\" (click)=\"save()\">Save</button>-->\n</mat-dialog-actions>","import { Component, Input, OnInit } from '@angular/core';\r\nimport { MatDialog, MatDialogConfig } from '@angular/material/dialog';\r\nimport { DownloadProgressComponent } from '../download-progress/download-progress.component';\r\n\r\n@Component({\n selector: 'gloww-secure-a',\n templateUrl: './secure-a.component.html',\n styleUrls: ['./secure-a.component.scss']\n})\r\nexport class SecureAComponent implements OnInit {\r\n @Input() href: string;\r\n @Input() name: string\r\n\r\n constructor(private dialog: MatDialog) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n click() {\r\n const dialogConfig = new MatDialogConfig();\r\n\r\n dialogConfig.disableClose = true;\r\n dialogConfig.autoFocus = true;\r\n dialogConfig.closeOnNavigation = false;\r\n dialogConfig.data = { files: [{ url: this.href, name: this.name }] };\r\n\r\n this.dialog.open(DownloadProgressComponent, dialogConfig).afterClosed().subscribe();\r\n }\r\n\r\n}\r\n","<a (click)=\"click()\" href=\"javascript:void(0);\">\r\n <ng-content></ng-content>\r\n</a>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\n selector: 'gloww-dummy',\n templateUrl: './dummy.component.html',\n styleUrls: ['./dummy.component.scss']\n})\r\nexport class DummyComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<p>dummy works!</p>\r\n","import { Component, OnInit, Input, AfterViewInit, Inject } from '@angular/core';\r\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { Observable } from 'rxjs';\r\nimport { GlowwService } from '../../Services/gloww.service';\r\nimport { CodeEditorComponent } from '../code-editor/code-editor.component';\nimport { MatFormField } from '@angular/material/input';\nimport { MatSelect, MatOption } from '@angular/material/select';\r\n\r\n@Component({\n selector: 'gloww-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: SelectComponent\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatSelect, MatOption]\n})\r\nexport class SelectComponent implements ControlValueAccessor, AfterViewInit {\r\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n @Input('compareField') compareField: any = null\r\n @Input() compareWith: (o1: any, o2: any) => boolean;\r\n\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\r\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder) {\r\n this.glowwService = glowwService;\r\n this.form = this.formBuilder.group({\r\n select: [null, null]\r\n });\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.error = null;\r\n if (!this.searchRequest) {\r\n this.searchRequest = this.glowwService[`search${this.objectName}`];\r\n }\r\n let queryParams: any = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(name => {\r\n queryParams[name] = this.data[name];\r\n });\r\n }\r\n\r\n //debugger;\r\n this.searchRequest.call(this.glowwService, queryParams).subscribe(items => this.items = items,\r\n error => {\r\n this.error = error;\r\n });\r\n\r\n if (!this.compareWith && this.compareField) {\r\n this.compareWith = (o1, o2) => o1[this.compareField] == o2[this.compareField];\r\n }\r\n }\r\n ngAfterContentInit(): void {\r\n\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n\r\n writeValue(val: any): void {\r\n val && this.form.setValue({ select: val }, { emitEvent: false });\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.select[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.select);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\r\n if (this.displayField) {\r\n return item[this.displayField];\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\r\n }\r\n }\r\n\r\n}\r\n\r\n","<form [formGroup]=\"form\">\n @if (error) {\n <div style=\"color:red\">{{error}}</div>\n }\n <mat-form-field>\n <mat-select [placeholder]=\"placeHolder\" formControlName=\"select\" [compareWith]=\"compareWith\">\n @for (item of items; track item) {\n <mat-option [value]=\"item\">{{displayObj(item)}}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n</form>","import { catchError, debounceTime, distinctUntilChanged, filter, map, switchMap, tap } from 'rxjs/operators';\nimport { Component, OnInit, Input, AfterViewInit, Inject, ChangeDetectorRef, forwardRef, ViewEncapsulation } from '@angular/core';\nimport { ControlValueAccessor, UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { Observable, of } from 'rxjs';\nimport { TranslateDefaultParser } from '@ngx-translate/core';\nimport { MatFormField, MatInput } from '@angular/material/input';\nimport { MatAutocompleteTrigger, MatAutocomplete } from '@angular/material/autocomplete';\nimport { MatOption } from '@angular/material/select';\nimport { SafeHtmlPipe } from '../../Pipes/safe-html.pipe';\r\n\r\n@Component({\n selector: 'gloww-auto-complete',\n templateUrl: './auto-complete.component.html',\n styleUrls: ['./auto-complete.component.scss'],\n encapsulation: ViewEncapsulation.None,\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => AutoCompleteComponent)\n }\n ],\n imports: [FormsModule, ReactiveFormsModule, MatFormField, MatInput, MatAutocompleteTrigger, MatAutocomplete, MatOption, SafeHtmlPipe]\n})\r\nexport class AutoCompleteComponent implements ControlValueAccessor, OnInit, AfterViewInit {\n @Input('value') _value: any = null;\r\n @Input('objectName') objectName: any = null;\r\n @Input('searchField') searchField: any = null;\r\n @Input('returnField') returnField: any = null;\r\n @Input('displayField') displayField: any = null;\r\n @Input('displayExpr') displayExpr: any = null;\r\n @Input('displayFct') displayFct: any = null;\r\n @Input('placeHolder') placeHolder: any = null;\r\n @Input('data') data: any = null;\r\n onChange: any = () => { };\r\n onTouched: any = () => { };\r\n public items: any[] = [];\r\n public error: string;\r\n\r\n @Input() searchRequest: (obj?: any) => Observable<[]>;\r\n\r\n public form: UntypedFormGroup;\r\n glowwService: any;\n resultCtrl: UntypedFormControl;\n public parser = new TranslateDefaultParser();\n private pendingExternalValue: any = undefined;\n\r\n constructor(@Inject('glowwService') glowwService: any, private formBuilder: UntypedFormBuilder, private ref: ChangeDetectorRef) {\r\n this.glowwService = glowwService;\r\n this.resultCtrl = new UntypedFormControl();\r\n this.form = this.formBuilder.group({\r\n __result: this.resultCtrl\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n\r\n }\r\n\r\n public options: any[] = [];//Observable<unknown>;\r\n ngOnInit(): void {\n //debugger;\n this.searchRequest = this.glowwService[`search${this.objectName}`];\n this.resultCtrl.valueChanges.pipe(\r\n filter(res => res != null && res.length > 2),\r\n distinctUntilChanged(),\r\n debounceTime(250),\r\n tap(() => { this.error = \"\"; this.options = []; }),\r\n switchMap(searchStr => {\r\n let searchObj = {};\r\n if (this.data) {\r\n Object.keys(this.data).forEach(k => {\r\n searchObj[k] = this.data[k];\r\n });\r\n }\r\n searchObj[this.searchField] = searchStr;\r\n return this.searchRequest.call(this.glowwService, searchObj).pipe(\r\n map(res => res),\r\n catchError(err => {\r\n this.error = err.message;\r\n this.ref.markForCheck();\r\n return of([])\r\n })\r\n )\r\n })\r\n ).subscribe(\n {\n next: (data: any[]) => {\n this.options = data;\n this.ref.markForCheck();\n },\r\n error: (error) => { this.error = error }\n }\n );\n\n if (this.pendingExternalValue !== undefined) {\n this.applyExternalValue(this.pendingExternalValue);\n this.pendingExternalValue = undefined;\n }\n }\n\n\n writeValue(val: any): void {\n if (val === undefined || val === null || val === '') {\n this.form.setValue({ __result: null }, { emitEvent: false });\n return;\n }\n\n if (!this.searchRequest) {\n this.pendingExternalValue = val;\n return;\n }\n\n this.applyExternalValue(val);\n }\n\r\n registerOnChange(fn: any): void {\r\n this.onChange = fn;\r\n this.form.valueChanges.subscribe(data => {\r\n if (this.returnField) {\r\n this.onChange(this.form.value.__result[this.returnField]);\r\n } else {\r\n this.onChange(this.form.value.__result);\r\n }\r\n });\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n propagateChange = (_: any) => { };\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n const status = isDisabled ? 'disable' : 'enable';\r\n //TODO\r\n }\r\n\r\n displayObj(item) {\n if (!item) return null;\n if (typeof item !== 'object') {\n return item;\n }\n console.log(\"displayOf\");\n if (this.displayField) {\n return item[this.displayField];\n } else if (this.displayExpr) {\r\n return this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g, \"{\").replace(/\\\\\\}/g, \"}\"), item);\r\n //return '?1' + this.parser.interpolate(\"{{Name}}\", { Name: \"test\" }) + '?2' + this.parser.interpolate(\"{{Name}}\", item)+'?3'+this.parser.interpolate(this.displayExpr.replace(/\\\\\\{/g,\"{\").replace(/\\\\\\}/g,\"}\"), item) +'?4'+ item;\r\n } else if (this.displayFct) {\r\n return this.displayFct(item);\n }\n }\n\n private applyExternalValue(val: any): void {\n if (typeof val === 'object') {\n this.form.setValue({ __result: val }, { emitEvent: false });\n this.ref.markForCheck();\n return;\n }\n\n if (!this.returnField || !this.searchRequest) {\n this.form.setValue({ __result: val }, { emitEvent: false });\n this.ref.markForCheck();\n return;\n }\n\n const searchObj = {};\n if (this.data) {\n Object.keys(this.data).forEach(k => {\n searchObj[k] = this.data[k];\n });\n }\n searchObj[this.returnField] = val;\n\n this.searchRequest.call(this.glowwService, searchObj).pipe(\n catchError(() => of([]))\n ).subscribe((results: any[]) => {\n const match = results.find(item => item?.[this.returnField] == val) ?? results[0] ?? val;\n this.form.setValue({ __result: match }, { emitEvent: false });\n this.ref.markForCheck();\n });\n }\n}\n\r\n","<div [formGroup]=\"form\" style=\"width:100%\" class=\"mainDiv\">\n <div style=\"color:red\">{{error}}</div>\n <mat-form-field style=\"width:100%\" class=\"autocff\">\n <input type=\"text\" matInput formControlName=\"__result\" [matAutocomplete]=\"auto\" [placeholder]=\"placeHolder\">\n </mat-form-field>\n <mat-autocomplete #auto=\"matAutocomplete\" [displayWith]=\"displayObj.bind(this)\">\n @for (option of options; track option) {\n <mat-option [value]=\"option\" [innerHTML]=\"displayObj(option) | safeHtml\">\n </mat-option>\n }\n </mat-autocomplete>\n</div>","import { Component, Inject, Input, Optional, forwardRef } from '@angular/core';\nimport { ControlValueAccessor, FormControl, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\nimport moment from 'moment';\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\nimport { MatDatepicker, MatDatepickerInput, MatDatepickerToggle } from '@angular/material/datepicker';\nimport { MatFormField, MatLabel } from '@angular/material/form-field';\nimport { MatInput, MatSuffix } from '@angular/material/input';\nimport { MatButton } from '@angular/material/button';\n\n@Component({\n selector: 'gloww-datetime',\n standalone: true,\n templateUrl: './datetime.component.html',\n styleUrls: ['./datetime.component.scss'],\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n multi: true,\n useExisting: forwardRef(() => DatetimeComponent)\n }\n ],\n imports: [ReactiveFormsModule, MatFormField, MatLabel, MatInput, MatDatepickerInput, MatDatepickerToggle, MatDatepicker, MatSuffix, MatButton]\n})\nexport class DatetimeComponent implements ControlValueAccessor {\n private static readonly DATE_FORMATS = [\n moment.ISO_8601,\n 'DD/MM/YYYY HH:mm:ss',\n 'DD/MM/YYYY HH:mm',\n 'DD/MM/YYYY',\n 'MM/DD/YYYY HH:mm:ss',\n 'MM/DD/YYYY HH:mm',\n 'MM/DD/YYYY',\n 'YYYY-MM-DD HH:mm:ss',\n 'YYYY-MM-DD HH:mm',\n 'YYYY-MM-DD',\n 'YYYY-MM-DDTHH:mm:ss',\n 'YYYY-MM-DDTHH:mm'\n ];\n private static readonly CLOCK_CENTER = 50;\n private static readonly CLOCK_OUTER_RADIUS = 36;\n private static readonly CLOCK_INNER_RADIUS = 25;\n private static readonly CLOCK_TICK_OUTER_RADIUS = 48;\n private static readonly CLOCK_TICK_INNER_RADIUS = 41;\n private static readonly CLOCK_TICK_LABEL_RADIUS = 34;\n private static readonly CLOCK_OUTER_HAND_HEIGHT = '34%';\n private static readonly CLOCK_INNER_HAND_HEIGHT = '23%';\n private static readonly CLOCK_MINUTE_HAND_HEIGHT = '48%';\n\n @Input('value') _value: Date | null = null;\n @Input('display') display: string | null = null;\n @Input('placeHolder') placeHolder: string | null = null;\n @Input('mode') mode: string = 'date';\n @Input() showSeconds = false;\n\n readonly dateControl = new FormControl<Date | null>(null);\n readonly hourControl = new FormControl<string>('00', { nonNullable: true });\n readonly minuteControl = new FormControl<string>('00', { nonNullable: true });\n readonly secondControl = new FormControl<string>('00', { nonNullable: true });\n\n readonly hourMarkers = this.buildHourMarkers();\n readonly minuteTicks = this.buildUnitTicks();\n readonly secondTicks = this.buildUnitTicks();\n\n isDisabled = false;\n isClockOpen = false;\n clockStep: 'hour' | 'minute' | 'second' = 'hour';\n onChange: (value: Date | null) => void = () => {};\n onTouched: () => void = () => {};\n\n constructor(@Optional() @Inject(MAT_DATE_LOCALE) private readonly locale?: string) {\n this.dateControl.valueChanges.subscribe(() => this.emitCurrentValue());\n this.hourControl.valueChanges.subscribe(() => this.emitCurrentValue());\n this.minuteControl.valueChanges.subscribe(() => this.emitCurrentValue());\n this.secondControl.valueChanges.subscribe(() => this.emitCurrentValue());\n }\n\n get isDateTime(): boolean {\n return this.mode === 'datetime';\n }\n\n get value(): Date | null {\n return this._value;\n }\n\n set value(val: any) {\n this.setValueFromOutside(val, true);\n }\n\n writeValue(obj: any): void {\n this.setValueFromOutside(obj, false);\n }\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.isDisabled = isDisabled;\n const action = isDisabled ? 'disable' : 'enable';\n this.dateControl[action]({ emitEvent: false });\n this.hourControl[action]({ emitEvent: false });\n this.minuteControl[action]({ emitEvent: false });\n this.secondControl[action]({ emitEvent: false });\n }\n\n clear(): void {\n this._value = null;\n this.isClockOpen = false;\n this.dateControl.setValue(null, { emitEvent: false });\n this.hourControl.setValue('00', { emitEvent: false });\n this.minuteControl.setValue('00', { emitEvent: false });\n this.secondControl.setValue('00', { emitEvent: false });\n this.onChange(null);\n this.onTouched();\n }\n\n markTouched(): void {\n this.onTouched();\n }\n\n get timeSummary(): string {\n return this.showSeconds\n ? `${this.normalizeTimePartValue(this.hourControl.value, 23, true)}:${this.normalizeTimePartValue(this.minuteControl.value, 59, true)}:${this.normalizeTimePartValue(this.secondControl.value, 59, true)}`\n : `${this.normalizeTimePartValue(this.hourControl.value, 23, true)}:${this.normalizeTimePartValue(this.minuteControl.value, 59, true)}`;\n }\n\n get clockTitle(): string {\n switch (this.clockStep) {\n case 'hour':\n return 'Hours';\n case 'minute':\n return 'Minutes';\n default:\n return 'Seconds';\n }\n }\n\n openClock(): void {\n if (this.isDisabled) {\n return;\n }\n this.isClockOpen = true;\n this.clockStep = 'hour';\n this.onTouched();\n }\n\n closeClock(): void {\n this.isClockOpen = false;\n this.onTouched();\n }\n\n onTimePartInput(part: 'hour' | 'minute' | 'second'): void {\n const control = this.getTimeControl(part);\n const max = this.getTimePartMax(part);\n control.setValue(this.normalizeTimePartValue(control.value, max, false), { emitEvent: false });\n this.emitCurrentValue();\n }\n\n onTimePartBlur(part: 'hour' | 'minute' | 'second'): void {\n const control = this.getTimeControl(part);\n const max = this.getTimePartMax(part);\n control.setValue(this.normalizeTimePartValue(control.value, max, true), { emitEvent: false });\n this.emitCurrentValue();\n this.onTouched();\n }\n\n selectClockHour(value: number, event?: MouseEvent): void {\n event?.stopPropagation();\n this.hourControl.setValue(value.toString().padStart(2, '0'), { emitEvent: false });\n this.emitCurrentValue();\n this.clockStep = 'minute';\n this.onTouched();\n }\n\n selectClockMinute(value: number, event?: MouseEvent): void {\n event?.stopPropagation();\n this.minuteControl.setValue(value.toString().padStart(2, '0'), { emitEvent: false });\n this.emitCurrentValue();\n if (this.showSeconds) {\n this.clockStep = 'second';\n } else {\n this.closeClock();\n }\n this.onTouched();\n }\n\n selectClockSecond(value: number, event?: MouseEvent): void {\n event?.stopPropagation();\n this.secondControl.setValue(value.toString().padStart(2, '0'), { emitEvent: false });\n this.emitCurrentValue();\n this.closeClock();\n this.onTouched();\n }\n\n selectClockTick(value: number, event: MouseEvent): void {\n if (this.clockStep === 'minute') {\n this.selectClockMinute(value, event);\n return;\n }\n\n if (this.clockStep === 'second') {\n this.selectClockSecond(value, event);\n }\n }\n\n goToClockStep(step: 'hour' | 'minute' | 'second'): void {\n this.clockStep = step;\n }\n\n onClockFaceClick(event: MouseEvent): void {\n if (this.clockStep === 'hour') {\n return;\n }\n\n const target = event.currentTarget as HTMLElement | null;\n if (!target) {\n return;\n }\n\n const rect = target.getBoundingClientRect();\n const centerX = rect.left + (rect.width / 2);\n const centerY = rect.top + (rect.height / 2);\n const dx = event.clientX - centerX;\n const dy = event.clientY - centerY;\n const angle = Math.atan2(dy, dx) + (Math.PI / 2);\n const normalized = angle < 0 ? angle + (Math.PI * 2) : angle;\n const rawValue = Math.round((normalized / (Math.PI * 2)) * 60) % 60;\n\n if (this.clockStep === 'minute') {\n this.selectClockMinute(rawValue);\n return;\n }\n\n this.selectClockSecond(rawValue);\n }\n\n isHourSelected(value: number): boolean {\n return this.toNumber(this.hourControl.value) === value;\n }\n\n isMinuteSelected(value: number): boolean {\n return this.toNumber(this.minuteControl.value) === value;\n }\n\n isSecondSelected(value: number): boolean {\n return this.toNumber(this.secondControl.value) === value;\n }\n\n get clockHandTransform(): string {\n if (this.clockStep === 'hour') {\n const hour = this.toNumber(this.hourControl.value) % 12;\n return `translate(-50%, -100%) rotate(${(hour / 12) * 360}deg)`;\n }\n\n if (this.clockStep === 'minute') {\n const minute = this.toNumber(this.minuteControl.value) % 60;\n return `translate(-50%, -100%) rotate(${(minute / 60) * 360}deg)`;\n }\n\n const second = this.toNumber(this.secondControl.value) % 60;\n return `translate(-50%, -100%) rotate(${(second / 60) * 360}deg)`;\n }\n\n get clockHandHeight(): string {\n if (this.clockStep === 'hour') {\n const hour = this.toNumber(this.hourControl.value);\n return hour < 12 ? '38%' : '25%';\n }\n\n return '45%';\n }\n\n get hourHandTransform(): string {\n const hour = this.toNumber(this.hourControl.value) % 12;\n return `translate(-50%, -100%) rotate(${(hour / 12) * 360}deg)`;\n }\n\n get hourHandHeight(): string {\n const hour = this.toNumber(this.hourControl.value);\n return hour < 12 ? DatetimeComponent.CLOCK_OUTER_HAND_HEIGHT : DatetimeComponent.CLOCK_INNER_HAND_HEIGHT;\n }\n\n get minuteHandTransform(): string {\n const minute = (this.toNumber(this.minuteControl.value) % 60) + (this.toNumber(this.secondControl.value) / 60);\n return `translate(-50%, -100%) rotate(${(minute / 60) * 360}deg)`;\n }\n\n get minuteHandHeight(): string {\n return DatetimeComponent.CLOCK_MINUTE_HAND_HEIGHT;\n }\n\n get selectedHourMarker(): ClockMarker {\n const hour = this.toNumber(this.hourControl.value);\n return this.buildClockMarker(\n hour,\n hour < 12 ? DatetimeComponent.CLOCK_OUTER_RADIUS : DatetimeComponent.CLOCK_INNER_RADIUS,\n hour.toString().padStart(2, '0')\n );\n }\n\n private setValueFromOutside(value: any, emit: boolean): void {\n const normalized = this.normalizeDateValue(value);\n this._value = normalized;\n\n this.dateControl.setValue(normalized ? new Date(normalized.getTime()) : null, { emitEvent: false });\n this.hourControl.setValue(normalized ? normalized.getHours().toString().padStart(2, '0') : '00', { emitEvent: false });\n this.minuteControl.setValue(normalized ? normalized.getMinutes().toString().padStart(2, '0') : '00', { emitEvent: false });\n this.secondControl.setValue(normalized ? normalized.getSeconds().toString().padStart(2, '0') : '00', { emitEvent: false });\n\n if (emit) {\n this.onChange(normalized);\n this.onTouched();\n }\n }\n\n private emitCurrentValue(): void {\n const date = this.normalizeDateValue(this.dateControl.value);\n\n if (!date) {\n this._value = null;\n this.onChange(null);\n return;\n }\n\n const next = new Date(date.getTime());\n next.setHours(this.toNumber(this.hourControl.value), this.toNumber(this.minuteControl.value), this.showSeconds ? this.toNumber(this.secondControl.value) : 0, 0);\n this._value = next;\n this.onChange(next);\n }\n\n private toNumber(value: string | null): number {\n const parsed = Number.parseInt(value ?? '0', 10);\n return Number.isNaN(parsed) ? 0 : parsed;\n }\n\n private getTimeControl(part: 'hour' | 'minute' | 'second'): FormControl<string> {\n switch (part) {\n case 'hour':\n return this.hourControl;\n case 'minute':\n return this.minuteControl;\n default:\n return this.secondControl;\n }\n }\n\n private getTimePartMax(part: 'hour' | 'minute' | 'second'): number {\n return part === 'hour' ? 23 : 59;\n }\n\n private normalizeTimePartValue(value: string | null | undefined, max: number, pad: boolean): string {\n const digits = `${value ?? ''}`.replace(/\\D/g, '').slice(-2);\n\n if (!digits) {\n return pad ? '00' : '';\n }\n\n const parsed = Number.parseInt(digits, 10);\n const clamped = Number.isNaN(parsed) ? 0 : Math.min(max, Math.max(0, parsed));\n return pad || digits.length > 1 ? clamped.toString().padStart(2, '0') : clamped.toString();\n }\n\n private normalizeDateValue(value: any): Date | null {\n if (value === undefined || value === null || value === '') {\n return null;\n }\n\n if (value instanceof Date) {\n return Number.isNaN(value.getTime()) ? null : new Date(value.getTime());\n }\n\n if (moment.isMoment(value)) {\n const date = value.toDate();\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n if (typeof value === 'string' || typeof value === 'number') {\n const strictMoment = moment(value, DatetimeComponent.DATE_FORMATS, this.locale ?? undefined, true);\n if (strictMoment.isValid()) {\n return strictMoment.toDate();\n }\n\n const lenientMoment = moment(value, DatetimeComponent.DATE_FORMATS, this.locale ?? undefined, false);\n if (lenientMoment.isValid()) {\n return lenientMoment.toDate();\n }\n\n const date = new Date(value);\n return Number.isNaN(date.getTime()) ? null : date;\n }\n\n return null;\n }\n\n private buildHourMarkers(): ClockMarker[] {\n return Array.from({ length: 24 }, (_, index) => this.buildClockMarker(index, index < 12 ? DatetimeComponent.CLOCK_OUTER_RADIUS : DatetimeComponent.CLOCK_INNER_RADIUS, index.toString().padStart(2, '0')));\n }\n\n private buildUnitTicks(): ClockTick[] {\n return Array.from({ length: 12 }, (_, index) => {\n const value = index * 5;\n const angle = (index / 12) * (Math.PI * 2) - (Math.PI / 2);\n const x1 = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * DatetimeComponent.CLOCK_TICK_INNER_RADIUS;\n const y1 = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * DatetimeComponent.CLOCK_TICK_INNER_RADIUS;\n const x2 = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * DatetimeComponent.CLOCK_TICK_OUTER_RADIUS;\n const y2 = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * DatetimeComponent.CLOCK_TICK_OUTER_RADIUS;\n const labelX = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * DatetimeComponent.CLOCK_TICK_LABEL_RADIUS;\n const labelY = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * DatetimeComponent.CLOCK_TICK_LABEL_RADIUS;\n return {\n value,\n label: value.toString().padStart(2, '0'),\n x1: `${x1}%`,\n y1: `${y1}%`,\n x2: `${x2}%`,\n y2: `${y2}%`,\n labelLeft: `${labelX}%`,\n labelTop: `${labelY}%`,\n };\n });\n }\n\n private buildClockMarker(index: number, radius: number, label: string): ClockMarker {\n const angle = ((index % 12) / 12) * (Math.PI * 2) - (Math.PI / 2);\n const x = DatetimeComponent.CLOCK_CENTER + Math.cos(angle) * radius;\n const y = DatetimeComponent.CLOCK_CENTER + Math.sin(angle) * radius;\n return {\n value: index,\n label,\n left: `${x}%`,\n top: `${y}%`\n };\n }\n}\n\ninterface ClockMarker {\n value: number;\n label: string;\n left: string;\n top: string;\n}\n\ninterface ClockTick {\n value: number;\n label: string;\n x1: string;\n y1: string;\n x2: string;\n y2: string;\n labelLeft: string;\n labelTop: string;\n}\n","<div class=\"datetime-wrapper\" [class.datetime-mode]=\"isDateTime\" [class.has-seconds]=\"showSeconds\">\n <mat-form-field class=\"date-field\">\n @if (display) {\n <mat-label>{{ display }}</mat-label>\n }\n <input\n matInput\n [matDatepicker]=\"picker\"\n [placeholder]=\"placeHolder\"\n [formControl]=\"dateControl\"\n [disabled]=\"isDisabled\"\n (dateChange)=\"markTouched()\"\n (blur)=\"markTouched()\">\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-datepicker #picker></mat-datepicker>\n </mat-form-field>\n\n @if (isDateTime) {\n <div class=\"middle-actions\">\n <button\n mat-icon-button\n type=\"button\"\n class=\"icon-action\"\n [disabled]=\"isDisabled\"\n title=\"Clear date and time\"\n aria-label=\"Clear date and time\"\n (click)=\"clear()\">\n <i class=\"fal fa-eraser\"></i>\n </button>\n\n <button\n mat-icon-button\n type=\"button\"\n class=\"icon-action\"\n [disabled]=\"isDisabled\"\n title=\"Open time clock\"\n aria-label=\"Open time clock\"\n (click)=\"openClock()\">\n <i class=\"fal fa-clock\"></i>\n </button>\n </div>\n\n <div class=\"time-row\">\n <mat-form-field class=\"time-field\">\n <mat-label>HH</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n max=\"23\"\n inputmode=\"numeric\"\n [formControl]=\"hourControl\"\n [disabled]=\"isDisabled\"\n (input)=\"onTimePartInput('hour')\"\n (blur)=\"onTimePartBlur('hour')\">\n </mat-form-field>\n\n <mat-form-field class=\"time-field\">\n <mat-label>MM</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n max=\"59\"\n inputmode=\"numeric\"\n [formControl]=\"minuteControl\"\n [disabled]=\"isDisabled\"\n (input)=\"onTimePartInput('minute')\"\n (blur)=\"onTimePartBlur('minute')\">\n </mat-form-field>\n\n @if (showSeconds) {\n <mat-form-field class=\"time-field\">\n <mat-label>SS</mat-label>\n <input\n matInput\n type=\"number\"\n min=\"0\"\n max=\"59\"\n inputmode=\"numeric\"\n [formControl]=\"secondControl\"\n [disabled]=\"isDisabled\"\n (input)=\"onTimePartInput('second')\"\n (blur)=\"onTimePartBlur('second')\">\n </mat-form-field>\n }\n </div>\n\n @if (isClockOpen) {\n <div class=\"clock-backdrop\" (click)=\"closeClock()\"></div>\n\n <div class=\"clock-dialog\" (click)=\"$event.stopPropagation()\">\n <div class=\"clock-panel\">\n <div class=\"clock-panel-header\">\n <div class=\"clock-panel-title\">{{ clockTitle }}</div>\n <button\n mat-button\n type=\"button\"\n class=\"clock-close\"\n [disabled]=\"isDisabled\"\n (click)=\"closeClock()\">\n Close\n </button>\n </div>\n\n <div class=\"clock-summary\">\n <button mat-button type=\"button\" class=\"clock-step\" [class.active]=\"clockStep === 'hour'\" (click)=\"goToClockStep('hour')\">\n {{ hourControl.value || '00' }}\n </button>\n <span>:</span>\n <button mat-button type=\"button\" class=\"clock-step\" [class.active]=\"clockStep === 'minute'\" (click)=\"goToClockStep('minute')\">\n {{ minuteControl.value || '00' }}\n </button>\n @if (showSeconds) {\n <span>:</span>\n <button mat-button type=\"button\" class=\"clock-step\" [class.active]=\"clockStep === 'second'\" (click)=\"goToClockStep('second')\">\n {{ secondControl.value || '00' }}\n </button>\n }\n </div>\n\n <div class=\"clock-face\" [class.clickable-face]=\"clockStep !== 'hour'\" [class.hour-face]=\"clockStep === 'hour'\" (click)=\"onClockFaceClick($event)\">\n <div class=\"clock-hand clock-hour-hand\" [style.transform]=\"hourHandTransform\" [style.height]=\"hourHandHeight\"></div>\n <div class=\"clock-hand clock-minute-hand\" [style.transform]=\"minuteHandTransform\" [style.height]=\"minuteHandHeight\"></div>\n\n @if (clockStep === 'hour') {\n @for (marker of hourMarkers; track marker.value) {\n <button\n type=\"button\"\n class=\"clock-hour-label\"\n [class.selected]=\"isHourSelected(marker.value)\"\n [class.inner-ring]=\"marker.value >= 12\"\n [style.left]=\"marker.left\"\n [style.top]=\"marker.top\"\n (click)=\"selectClockHour(marker.value, $event)\">\n {{ marker.label }}\n </button>\n }\n }\n\n @if (clockStep !== 'hour') {\n <div\n class=\"clock-hour-indicator\"\n [class.inner-ring]=\"selectedHourMarker.value >= 12\"\n [style.left]=\"selectedHourMarker.left\"\n [style.top]=\"selectedHourMarker.top\">\n {{ selectedHourMarker.label }}\n </div>\n }\n\n @if (clockStep === 'minute') {\n <svg class=\"clock-ticks-svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n @for (tick of minuteTicks; track tick.value) {\n <line\n class=\"clock-tick-line\"\n [class.selected]=\"isMinuteSelected(tick.value)\"\n [attr.x1]=\"tick.x1\"\n [attr.y1]=\"tick.y1\"\n [attr.x2]=\"tick.x2\"\n [attr.y2]=\"tick.y2\"\n (click)=\"selectClockTick(tick.value, $event)\"></line>\n }\n </svg>\n @for (tick of minuteTicks; track tick.value) {\n <div\n class=\"clock-tick-label\"\n [class.selected]=\"isMinuteSelected(tick.value)\"\n [style.left]=\"tick.labelLeft\"\n [style.top]=\"tick.labelTop\"\n (click)=\"selectClockTick(tick.value, $event)\">\n {{ tick.label }}\n </div>\n }\n }\n\n @if (clockStep === 'second') {\n <svg class=\"clock-ticks-svg\" viewBox=\"0 0 100 100\" preserveAspectRatio=\"none\" aria-hidden=\"true\">\n @for (tick of secondTicks; track tick.value) {\n <line\n class=\"clock-tick-line\"\n [class.selected]=\"isSecondSelected(tick.value)\"\n [attr.x1]=\"tick.x1\"\n [attr.y1]=\"tick.y1\"\n [attr.x2]=\"tick.x2\"\n [attr.y2]=\"tick.y2\"\n (click)=\"selectClockTick(tick.value, $event)\"></line>\n }\n </svg>\n @for (tick of secondTicks; track tick.value) {\n <div\n class=\"clock-tick-label\"\n [class.selected]=\"isSecondSelected(tick.value)\"\n [style.left]=\"tick.labelLeft\"\n [style.top]=\"tick.labelTop\"\n (click)=\"selectClockTick(tick.value, $event)\">\n {{ tick.label }}\n </div>\n }\n }\n\n <div class=\"clock-center-dot\"></div>\n </div>\n\n <div class=\"clock-help\">\n @if (clockStep === 'hour') {\n <span>Outer ring 00-11, inner ring 12-23.</span>\n }\n @if (clockStep === 'minute') {\n <span>Click the dial. The nearest minute will be selected.</span>\n }\n @if (clockStep === 'second') {\n <span>Click the dial. The nearest second will be selected.</span>\n }\n </div>\n\n <div class=\"clock-footer\">\n <span>{{ timeSummary }}</span>\n </div>\n </div>\n </div>\n }\n }\n</div>\n","import { Directive } from '@angular/core';\n\n@Directive({\n selector: '[glowwCallback]',\n standalone: true\n})\nexport class CallbackDirective {\n\n constructor() { }\n\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { Subscription } from 'rxjs';\nimport { GlowwI18nService } from './gloww-i18n.service';\n\n@Injectable()\nexport class GlowwMatPaginatorIntlService extends MatPaginatorIntl implements OnDestroy {\n\tprivate readonly subscription: Subscription;\n\n\tconstructor(private readonly i18n: GlowwI18nService) {\n\t\tsuper();\n\t\tthis.subscription = this.i18n.langChanges$.subscribe(() => this.translateLabels());\n\t\tthis.translateLabels();\n\t}\n\n\toverride getRangeLabel = (page: number, pageSize: number, length: number): string => {\n\t\tif (length === 0 || pageSize === 0) {\n\t\t\treturn `0 ${this.i18n.instant('PAGINATOR.OF', 'of')} ${length}`;\n\t\t}\n\n\t\tconst startIndex = page * pageSize;\n\t\tconst endIndex = Math.min(startIndex + pageSize, length);\n\t\treturn `${startIndex + 1}-${endIndex} ${this.i18n.instant('PAGINATOR.OF', 'of')} ${length}`;\n\t};\n\n\tngOnDestroy(): void {\n\t\tthis.subscription.unsubscribe();\n\t}\n\n\tprivate translateLabels(): void {\n\t\tthis.itemsPerPageLabel = this.i18n.instant('PAGINATOR.ITEMS_PER_PAGE', 'Items per page');\n\t\tthis.nextPageLabel = this.i18n.instant('PAGINATOR.NEXT_PAGE', 'Next page');\n\t\tthis.previousPageLabel = this.i18n.instant('PAGINATOR.PREVIOUS_PAGE', 'Previous page');\n\t\tthis.firstPageLabel = this.i18n.instant('PAGINATOR.FIRST_PAGE', 'First page');\n\t\tthis.lastPageLabel = this.i18n.instant('PAGINATOR.LAST_PAGE', 'Last page');\n\t\tthis.changes.next();\n\t}\n}\n","import { CommonModule } from '@angular/common';\nimport { Component, Inject, OnInit } from '@angular/core';\nimport { UntypedFormBuilder, UntypedFormControl, UntypedFormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\nimport { DomSanitizer, SafeResourceUrl } from '@angular/platform-browser';\nimport { CdkScrollable } from '@angular/cdk/scrolling';\nimport { MAT_DIALOG_DATA, MatDialogActions, MatDialogContent, MatDialogRef, MatDialogTitle } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatRadioModule } from '@angular/material/radio';\nimport { MatSelectModule } from '@angular/material/select';\nimport { DatetimeComponent } from '../datetime/datetime.component';\n\nexport type AssignedUserTaskResponseMode = 'single-choice' | 'multi-choice' | 'adhoc' | 'external';\n\nexport interface AssignedUserTaskChoiceOption {\n value: string;\n label: string;\n fieldName?: string;\n}\n\nexport interface AssignedUserTaskFieldOption {\n value: any;\n label: string;\n}\n\nexport interface AssignedUserTaskFieldSpec {\n name: string;\n label: string;\n type: 'text' | 'textarea' | 'number' | 'boolean' | 'select' | 'date' | 'datetime';\n required?: boolean;\n rows?: number;\n placeholder?: string;\n options?: AssignedUserTaskFieldOption[];\n defaultValue?: any;\n}\n\nexport interface AssignedUserTaskResponseDialogData {\n mode: AssignedUserTaskResponseMode;\n title: string;\n message?: string;\n choices?: AssignedUserTaskChoiceOption[];\n fields?: AssignedUserTaskFieldSpec[];\n externalUrl?: string;\n externalOpenMode?: 'iframe' | 'window';\n currentVariables?: Record<string, any>;\n submitLabel: string;\n cancelLabel: string;\n reopenExternalLabel: string;\n completeExternalLabel: string;\n externalWindowMessage: string;\n}\n\nexport interface AssignedUserTaskResponseDialogResult {\n payload: Record<string, any>;\n}\n\n@Component({\n selector: 'glw-assigned-user-task-response-dialog',\n standalone: true,\n templateUrl: './assigned-user-task-response-dialog.component.html',\n styleUrls: ['./assigned-user-task-response-dialog.component.scss'],\n imports: [\n CommonModule,\n ReactiveFormsModule,\n CdkScrollable,\n MatDialogTitle,\n MatDialogContent,\n MatDialogActions,\n MatButtonModule,\n MatCheckboxModule,\n MatFormFieldModule,\n MatIconModule,\n MatInputModule,\n MatRadioModule,\n MatSelectModule,\n DatetimeComponent\n ]\n})\nexport class AssignedUserTaskResponseDialogComponent implements OnInit {\n form: UntypedFormGroup;\n externalSafeUrl?: SafeResourceUrl;\n externalWindowRef: Window | null = null;\n choiceFieldNames: string[] = [];\n\n constructor(\n private readonly formBuilder: UntypedFormBuilder,\n private readonly dialogRef: MatDialogRef<AssignedUserTaskResponseDialogComponent, AssignedUserTaskResponseDialogResult>,\n @Inject(MAT_DIALOG_DATA) public readonly data: AssignedUserTaskResponseDialogData,\n private readonly sanitizer: DomSanitizer\n ) {\n this.form = this.formBuilder.group({});\n }\n\n ngOnInit(): void {\n this.initializeForm();\n this.initializeExternalContent();\n }\n\n onCancel(): void {\n this.externalWindowRef?.close();\n this.dialogRef.close();\n }\n\n onSubmit(): void {\n if (this.form.invalid) {\n this.form.markAllAsTouched();\n return;\n }\n\n this.dialogRef.close({ payload: this.buildPayload() });\n }\n\n reopenExternalWindow(): void {\n if (!this.data.externalUrl) {\n return;\n }\n\n this.externalWindowRef = window.open(this.data.externalUrl, '_blank', 'noopener,noreferrer');\n }\n\n control(name: string): UntypedFormControl {\n return this.form.get(name) as UntypedFormControl;\n }\n\n choiceControlName(choice: AssignedUserTaskChoiceOption): string {\n return this.choiceFieldName(choice);\n }\n\n private initializeForm(): void {\n switch (this.data.mode) {\n case 'single-choice':\n this.form.addControl('choice', new UntypedFormControl(null, Validators.required));\n break;\n case 'multi-choice':\n (this.data.choices ?? []).forEach(choice => {\n const fieldName = this.choiceFieldName(choice);\n this.choiceFieldNames.push(fieldName);\n this.form.addControl(fieldName, new UntypedFormControl(false));\n });\n break;\n case 'adhoc':\n case 'external':\n (this.data.fields ?? []).forEach(field => {\n this.form.addControl(\n field.name,\n new UntypedFormControl(\n this.resolveDefaultValue(field),\n field.required ? Validators.required : null\n )\n );\n });\n break;\n }\n }\n\n private initializeExternalContent(): void {\n if (this.data.mode !== 'external' || !this.data.externalUrl) {\n return;\n }\n\n if (this.data.externalOpenMode === 'window') {\n this.reopenExternalWindow();\n return;\n }\n\n this.externalSafeUrl = this.sanitizer.bypassSecurityTrustResourceUrl(this.data.externalUrl);\n }\n\n private resolveDefaultValue(field: AssignedUserTaskFieldSpec): any {\n if (field.defaultValue !== undefined) {\n return field.defaultValue;\n }\n\n const currentValue = this.data.currentVariables?.[field.name];\n if (currentValue !== undefined) {\n return currentValue;\n }\n\n return field.type === 'boolean' ? false : null;\n }\n\n private buildPayload(): Record<string, any> {\n const payload: Record<string, any> = {};\n\n switch (this.data.mode) {\n case 'single-choice': {\n const selectedValue = this.form.getRawValue().choice;\n const selectedChoice = (this.data.choices ?? []).find(choice => choice.value === selectedValue);\n payload.response = selectedValue;\n payload.choice = selectedValue;\n payload.responseLabel = selectedChoice?.label ?? selectedValue;\n if (selectedChoice?.fieldName) {\n payload[selectedChoice.fieldName] = true;\n }\n break;\n }\n case 'multi-choice': {\n const selectedChoices = (this.data.choices ?? []).filter(choice => {\n const fieldName = this.choiceFieldName(choice);\n return !!this.form.getRawValue()[fieldName];\n });\n payload.responses = selectedChoices.map(choice => choice.value);\n payload.choices = [...payload.responses];\n payload.responseLabels = selectedChoices.map(choice => choice.label);\n selectedChoices.forEach(choice => {\n payload[choice.fieldName ?? choice.value] = true;\n });\n break;\n }\n case 'adhoc':\n case 'external':\n Object.assign(payload, this.form.getRawValue());\n break;\n }\n\n return payload;\n }\n\n private choiceFieldName(choice: AssignedUserTaskChoiceOption): string {\n return choice.fieldName ?? `choice_${choice.value.replace(/[^a-zA-Z0-9_]/g, '_')}`;\n }\n}\n","<h2 mat-dialog-title>{{ data.title }}</h2>\n\n<mat-dialog-content cdkScrollable>\n @if (data.message) {\n <div class=\"assigned-user-task-response-message\">{{ data.message }}</div>\n }\n\n <form [formGroup]=\"form\" class=\"assigned-user-task-response-form\">\n @if (data.mode === 'single-choice') {\n <mat-radio-group formControlName=\"choice\" class=\"assigned-user-task-response-choices\">\n @for (choice of data.choices ?? []; track choice.value) {\n <mat-radio-button [value]=\"choice.value\">{{ choice.label }}</mat-radio-button>\n }\n </mat-radio-group>\n }\n\n @if (data.mode === 'multi-choice') {\n <div class=\"assigned-user-task-response-choices\">\n @for (choice of data.choices ?? []; track choice.value) {\n <mat-checkbox [formControlName]=\"choiceControlName(choice)\">\n {{ choice.label }}\n </mat-checkbox>\n }\n </div>\n }\n\n @if (data.mode === 'adhoc' || data.mode === 'external') {\n <div class=\"assigned-user-task-response-fields\">\n @for (field of data.fields ?? []; track field.name) {\n <div class=\"assigned-user-task-response-field\">\n @if (field.type === 'boolean') {\n <mat-checkbox [formControlName]=\"field.name\">{{ field.label }}</mat-checkbox>\n }\n\n @if (field.type === 'text' || field.type === 'number' || field.type === 'textarea') {\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ field.label }}</mat-label>\n @if (field.type === 'textarea') {\n <textarea\n matInput\n [formControlName]=\"field.name\"\n [rows]=\"field.rows ?? 4\"\n [placeholder]=\"field.placeholder ?? ''\"></textarea>\n } @else {\n <input\n matInput\n [type]=\"field.type === 'number' ? 'number' : 'text'\"\n [formControlName]=\"field.name\"\n [placeholder]=\"field.placeholder ?? ''\" />\n }\n </mat-form-field>\n }\n\n @if (field.type === 'select') {\n <mat-form-field appearance=\"outline\" subscriptSizing=\"dynamic\">\n <mat-label>{{ field.label }}</mat-label>\n <mat-select [formControlName]=\"field.name\">\n @for (option of field.options ?? []; track option.value) {\n <mat-option [value]=\"option.value\">{{ option.label }}</mat-option>\n }\n </mat-select>\n </mat-form-field>\n }\n\n @if (field.type === 'date' || field.type === 'datetime') {\n <label class=\"assigned-user-task-response-datetime-label\">{{ field.label }}</label>\n <gloww-datetime\n [mode]=\"field.type === 'date' ? 'date' : 'datetime'\"\n [showSeconds]=\"field.type === 'datetime'\"\n [formControlName]=\"field.name\"></gloww-datetime>\n }\n </div>\n }\n </div>\n }\n\n @if (data.mode === 'external' && data.externalOpenMode !== 'window' && externalSafeUrl) {\n <div class=\"assigned-user-task-response-iframe-wrapper\">\n <iframe class=\"assigned-user-task-response-iframe\" [src]=\"externalSafeUrl\" title=\"User task external response\"></iframe>\n </div>\n }\n\n @if (data.mode === 'external' && data.externalOpenMode === 'window') {\n <div class=\"assigned-user-task-response-window-message\">\n {{ data.externalWindowMessage }}\n </div>\n <button mat-stroked-button type=\"button\" (click)=\"reopenExternalWindow()\">\n <mat-icon>open_in_new</mat-icon>\n {{ data.reopenExternalLabel }}\n </button>\n }\n </form>\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <button mat-button type=\"button\" (click)=\"onCancel()\">{{ data.cancelLabel }}</button>\n <button mat-flat-button color=\"primary\" type=\"button\" (click)=\"onSubmit()\">\n {{ data.mode === 'external' ? data.completeExternalLabel : data.submitLabel }}\n </button>\n</mat-dialog-actions>\n","import { Component, Inject, OnInit, ViewChild } from '@angular/core';\nimport { MatDialog, MatDialogModule } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatCardModule } from '@angular/material/card';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';\nimport { MatSort, MatSortModule } from '@angular/material/sort';\nimport { MatTableDataSource, MatTableModule } from '@angular/material/table';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { catchError, finalize } from 'rxjs/operators';\nimport { firstValueFrom, of } from 'rxjs';\nimport { GlowwService } from '../../Services/gloww.service';\nimport { GlowwI18nService } from '../../Services/gloww-i18n.service';\nimport { AuthenticationService } from '../../gloww-security/Services/authentication.service';\nimport { AssignedUserTaskResponseDialogComponent, AssignedUserTaskResponseDialogData, AssignedUserTaskChoiceOption, AssignedUserTaskFieldSpec } from './assigned-user-task-response-dialog.component';\n\ntype UserTaskExecutionStep = {\n ExecutionID?: number;\n ProcessStepID?: string | number;\n HasAsExecution?: {\n DefinitionID?: string;\n ProcessID?: number;\n };\n};\n\ntype UserTask = {\n Title?: string;\n DialogTitle?: string;\n MESSAGE?: string;\n MESSAGE2?: string;\n Category?: string;\n Statut?: string;\n RepliedBY?: string;\n Form?: string;\n FormType?: string;\n CHOICES?: string;\n JSINFO?: string;\n VARIABLES?: string;\n USERTASKID?: number;\n ProcessStepID?: number;\n HasAsExecutionStep?: UserTaskExecutionStep;\n};\n\ntype UserTaskAssignment = {\n AssignmentID: number;\n UserTaskId?: number;\n Domain?: string;\n Username?: string;\n Responsible?: boolean;\n STATUT?: string;\n Category?: string;\n IsCandidate?: UserTask;\n};\n\n@Component({\n selector: 'glw-assigned-user-tasks',\n templateUrl: './assigned-user-tasks.component.html',\n styleUrls: ['./assigned-user-tasks.component.scss'],\n imports: [\n MatButtonModule,\n MatCardModule,\n MatIconModule,\n MatDialogModule,\n MatPaginatorModule,\n MatProgressSpinnerModule,\n MatSortModule,\n MatTableModule\n ]\n})\nexport class AssignedUserTasksComponent implements OnInit {\n @ViewChild(MatSort, { static: true }) sort!: MatSort;\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n\n displayedColumns = ['action', 'task', 'definition', 'status', 'message', 'assignment'];\n dataSource = new MatTableDataSource<UserTaskAssignment>([]);\n loading = false;\n errorMessage = '';\n respondingTaskId?: number;\n\n constructor(\n @Inject('glowwService') private readonly glowwService: GlowwService & {\n searchBPMN2_UserTask_Assignment: (obj?: any) => any;\n getBPMN2_UserTask: (userTaskId: number) => any;\n commitUserTask: (userTaskId: number, args: Record<string, any>) => any;\n },\n private readonly authenticationService: AuthenticationService,\n private readonly i18n: GlowwI18nService,\n private readonly dialog: MatDialog\n ) {}\n\n ngOnInit(): void {\n this.dataSource.sortingDataAccessor = (item, property) => this.getSortValue(item, property);\n this.dataSource.sort = this.sort;\n this.loadAssignments();\n }\n\n ngAfterViewInit(): void {\n this.dataSource.paginator = this.paginator;\n }\n\n t(key: string, fallback: string): string {\n return this.i18n.instant(key, fallback);\n }\n\n loadAssignments(): void {\n const query = this.buildQuery();\n this.loading = true;\n this.errorMessage = '';\n\n this.glowwService.searchBPMN2_UserTask_Assignment(query).pipe(\n catchError(error => {\n this.errorMessage = error?.error?.message || error?.message || `${error}`;\n return of([]);\n }),\n finalize(() => {\n this.loading = false;\n })\n ).subscribe((items: UserTaskAssignment[]) => {\n this.dataSource.data = (items ?? []).filter(item => this.isPendingTask(item));\n if (this.paginator) {\n this.dataSource.paginator = this.paginator;\n }\n });\n }\n\n async respondToTask(taskAssignment: UserTaskAssignment): Promise<void> {\n const userTaskId = taskAssignment.UserTaskId ?? taskAssignment.IsCandidate?.USERTASKID;\n if (!userTaskId) {\n return;\n }\n\n this.respondingTaskId = userTaskId;\n try {\n const task = await firstValueFrom(this.glowwService.getBPMN2_UserTask(userTaskId)) as UserTask;\n const dialogData = this.buildDialogData(task);\n const dialogRef = this.dialog.open(AssignedUserTaskResponseDialogComponent, {\n width: 'min(960px, calc(100vw - 24px))',\n maxWidth: 'calc(100vw - 24px)',\n maxHeight: 'calc(100vh - 24px)',\n disableClose: true,\n autoFocus: false,\n data: dialogData\n });\n\n const result = await firstValueFrom(dialogRef.afterClosed());\n if (!result?.payload) {\n return;\n }\n\n const currentUser = this.authenticationService.currentUserValue as any;\n const payload: Record<string, any> = {\n ...this.parseVariables(task.VARIABLES),\n ...result.payload,\n __Username: currentUser?.username ?? '',\n __UserTaskId: userTaskId\n };\n\n await firstValueFrom(this.glowwService.commitUserTask(userTaskId, payload));\n this.loadAssignments();\n } catch (error: any) {\n this.errorMessage = error?.error?.message || error?.message || `${error}`;\n } finally {\n this.respondingTaskId = undefined;\n }\n }\n\n getTaskLabel(taskAssignment: UserTaskAssignment): string {\n return taskAssignment.IsCandidate?.Title\n || taskAssignment.IsCandidate?.DialogTitle\n || `${this.t('GLOWW.USER_TASK', 'User task')} #${taskAssignment.UserTaskId ?? taskAssignment.AssignmentID}`;\n }\n\n getDefinitionLabel(taskAssignment: UserTaskAssignment): string {\n const execution = taskAssignment.IsCandidate?.HasAsExecutionStep?.HasAsExecution;\n if (!execution?.DefinitionID) {\n return '';\n }\n\n return execution.ProcessID\n ? `${execution.DefinitionID} (${execution.ProcessID})`\n : execution.DefinitionID;\n }\n\n getStatusLabel(taskAssignment: UserTaskAssignment): string {\n return taskAssignment.IsCandidate?.Statut\n || taskAssignment.STATUT\n || '';\n }\n\n getAssignmentLabel(taskAssignment: UserTaskAssignment): string {\n const type = taskAssignment.Responsible\n ? this.t('GLOWW.RESPONSIBLE', 'Responsible')\n : this.t('GLOWW.CANDIDATE', 'Candidate');\n\n return `${taskAssignment.Domain ? `${taskAssignment.Domain}\\\\` : ''}${taskAssignment.Username ?? ''} (${type})`;\n }\n\n canRespond(taskAssignment: UserTaskAssignment): boolean {\n return !!(taskAssignment.UserTaskId ?? taskAssignment.IsCandidate?.USERTASKID)\n && this.isPendingTask(taskAssignment);\n }\n\n private buildQuery(): Record<string, any> {\n const currentUser = this.authenticationService.currentUserValue as any;\n const query: Record<string, any> = {};\n\n if (currentUser?.username) {\n query.Username = currentUser.username;\n }\n\n if (currentUser?.domain) {\n query.Domain = currentUser.domain;\n }\n\n query.STATUT = 'WAITING';\n\n return query;\n }\n\n private isPendingTask(taskAssignment: UserTaskAssignment): boolean {\n const status = this.getStatusLabel(taskAssignment).toUpperCase();\n return status === '' || status === 'RUNNING';\n }\n\n private getSortValue(item: UserTaskAssignment, property: string): string | number {\n switch (property) {\n case 'task':\n return this.getTaskLabel(item).toLowerCase();\n case 'definition':\n return this.getDefinitionLabel(item).toLowerCase();\n case 'status':\n return this.getStatusLabel(item).toLowerCase();\n case 'message':\n return (item.IsCandidate?.MESSAGE ?? '').toLowerCase();\n case 'assignment':\n return this.getAssignmentLabel(item).toLowerCase();\n default:\n return item.AssignmentID ?? 0;\n }\n }\n\n private buildDialogData(task: UserTask): AssignedUserTaskResponseDialogData {\n const jsInfo = this.parseMaybeJson(task.JSINFO);\n const formInfo = this.parseMaybeJson(task.Form);\n const currentVariables = this.parseVariables(task.VARIABLES);\n const fields = this.normalizeFields(jsInfo, formInfo, currentVariables);\n const externalConfig = this.resolveExternalConfig(task, jsInfo, formInfo);\n\n if (externalConfig) {\n return {\n mode: 'external',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n fields,\n currentVariables,\n externalUrl: externalConfig.url,\n externalOpenMode: externalConfig.openMode,\n submitLabel: this.t('COMMON.SAVE', 'Save'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: this.t('GLOWW.REOPEN_EXTERNAL_FORM', 'Reopen external form'),\n completeExternalLabel: this.t('GLOWW.COMPLETE_TASK', 'Complete task'),\n externalWindowMessage: this.t('GLOWW.COMPLETE_EXTERNAL_FORM_THEN_VALIDATE', 'Complete the external form, then validate the task here.')\n };\n }\n\n if ((task.FormType || '1') === '2') {\n return {\n mode: 'multi-choice',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n choices: this.parseChoices(task.CHOICES),\n submitLabel: this.t('GLOWW.SUBMIT_RESPONSE', 'Submit response'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: '',\n completeExternalLabel: '',\n externalWindowMessage: ''\n };\n }\n\n if ((task.FormType || '1') === '1' && (task.CHOICES || '').trim()) {\n return {\n mode: 'single-choice',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n choices: this.parseChoices(task.CHOICES),\n submitLabel: this.t('GLOWW.SUBMIT_RESPONSE', 'Submit response'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: '',\n completeExternalLabel: '',\n externalWindowMessage: ''\n };\n }\n\n return {\n mode: 'adhoc',\n title: task.DialogTitle || task.Title || this.t('GLOWW.RESPOND_TO_TASK', 'Respond to task'),\n message: task.MESSAGE,\n fields: fields.length > 0 ? fields : [{\n name: 'response',\n label: this.t('GLOWW.RESPONSE', 'Response'),\n type: 'textarea',\n rows: 6\n }],\n currentVariables,\n submitLabel: this.t('GLOWW.SUBMIT_RESPONSE', 'Submit response'),\n cancelLabel: this.t('COMMON.CANCEL', 'Cancel'),\n reopenExternalLabel: '',\n completeExternalLabel: '',\n externalWindowMessage: ''\n };\n }\n\n private parseChoices(rawChoices?: string): AssignedUserTaskChoiceOption[] {\n if (!rawChoices?.trim()) {\n return [];\n }\n\n const parsedJson = this.parseMaybeJson(rawChoices);\n if (Array.isArray(parsedJson)) {\n return parsedJson\n .map(choice => this.normalizeChoice(choice))\n .filter((choice): choice is AssignedUserTaskChoiceOption => !!choice);\n }\n\n return rawChoices\n .split(/\\r?\\n/)\n .map(line => line.trim())\n .filter(line => !!line)\n .map(line => this.normalizeChoice(line))\n .filter((choice): choice is AssignedUserTaskChoiceOption => !!choice);\n }\n\n private normalizeChoice(choice: any): AssignedUserTaskChoiceOption | null {\n if (!choice && choice !== 0) {\n return null;\n }\n\n if (typeof choice === 'object') {\n const value = `${choice.value ?? choice.key ?? choice.id ?? choice.name ?? choice.label ?? choice}`;\n const label = `${choice.label ?? choice.name ?? value}`;\n return {\n value,\n label,\n fieldName: choice.fieldName ?? choice.name\n };\n }\n\n const text = `${choice}`.trim();\n const match = text.match(/^([^|=;:]+)\\s*[|=;:]\\s*(.+)$/);\n if (!match) {\n return { value: text, label: text };\n }\n\n const value = match[1].trim();\n const label = match[2].trim();\n return {\n value,\n label,\n fieldName: value.replace(/[^a-zA-Z0-9_]/g, '_')\n };\n }\n\n private parseMaybeJson(rawValue?: string): any {\n if (!rawValue?.trim()) {\n return null;\n }\n\n try {\n return JSON.parse(rawValue);\n } catch {\n return null;\n }\n }\n\n private parseVariables(rawValue?: string): Record<string, any> {\n const parsed = this.parseMaybeJson(rawValue);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? parsed\n : {};\n }\n\n private normalizeFields(jsInfo: any, formInfo: any, currentVariables: Record<string, any>): AssignedUserTaskFieldSpec[] {\n const rawFields = Array.isArray(jsInfo)\n ? jsInfo\n : Array.isArray(jsInfo?.fields)\n ? jsInfo.fields\n : Array.isArray(formInfo)\n ? formInfo\n : Array.isArray(formInfo?.fields)\n ? formInfo.fields\n : [];\n\n return rawFields\n .map((field: any) => this.normalizeField(field, currentVariables))\n .filter((field: AssignedUserTaskFieldSpec | null): field is AssignedUserTaskFieldSpec => !!field);\n }\n\n private normalizeField(field: any, currentVariables: Record<string, any>): AssignedUserTaskFieldSpec | null {\n if (!field) {\n return null;\n }\n\n if (typeof field === 'string') {\n return {\n name: field,\n label: field,\n type: 'text',\n defaultValue: currentVariables[field]\n };\n }\n\n const typeMap: Record<string, AssignedUserTaskFieldSpec['type']> = {\n string: 'text',\n text: 'text',\n textarea: 'textarea',\n memo: 'textarea',\n number: 'number',\n integer: 'number',\n bool: 'boolean',\n boolean: 'boolean',\n select: 'select',\n choice: 'select',\n date: 'date',\n datetime: 'datetime'\n };\n\n const name = field.name ?? field.key ?? field.id;\n if (!name) {\n return null;\n }\n\n return {\n name,\n label: field.label ?? field.title ?? name,\n type: typeMap[(field.type ?? 'text').toString().toLowerCase()] ?? 'text',\n required: !!field.required,\n rows: field.rows,\n placeholder: field.placeholder,\n defaultValue: currentVariables[name] ?? field.defaultValue ?? field.value,\n options: Array.isArray(field.options)\n ? field.options.map((option: any) => ({\n value: option?.value ?? option?.key ?? option,\n label: option?.label ?? option?.name ?? option?.value ?? option\n }))\n : undefined\n };\n }\n\n private resolveExternalConfig(task: UserTask, jsInfo: any, formInfo: any): { url: string; openMode: 'iframe' | 'window' } | null {\n const configCandidate = [jsInfo, formInfo].find(candidate => candidate && typeof candidate === 'object' && !Array.isArray(candidate));\n const directUrl = `${configCandidate?.url ?? configCandidate?.href ?? configCandidate?.externalUrl ?? task.Form ?? task.JSINFO ?? ''}`.trim();\n\n if (!this.looksLikeUrl(directUrl)) {\n return null;\n }\n\n const openModeValue = `${configCandidate?.openMode ?? configCandidate?.openIn ?? configCandidate?.target ?? ''}`.toLowerCase();\n const openMode = configCandidate?.newWindow === true\n || openModeValue === 'window'\n || openModeValue === 'new-window'\n || openModeValue === '_blank'\n ? 'window'\n : 'iframe';\n\n return {\n url: directUrl,\n openMode\n };\n }\n\n private looksLikeUrl(value?: string): boolean {\n return !!value && /^(https?:\\/\\/|\\/)/i.test(value.trim());\n }\n}\n","<mat-card class=\"assigned-user-tasks-card\" appearance=\"outlined\">\n <mat-card-header class=\"assigned-user-tasks-header\">\n <mat-card-title>{{ t('GLOWW.MY_ASSIGNED_TASKS', 'My assigned tasks') }}</mat-card-title>\n <button mat-stroked-button color=\"primary\" type=\"button\" (click)=\"loadAssignments()\">\n <mat-icon>refresh</mat-icon>\n {{ t('COMMON.REFRESH', 'Refresh') }}\n </button>\n </mat-card-header>\n\n <mat-card-content>\n @if (errorMessage) {\n <div class=\"assigned-user-tasks-error\">\n {{ t('GLOWW.UNABLE_TO_QUERY', 'Unable to query') }}: {{ errorMessage }}\n </div>\n }\n\n @if (loading) {\n <div class=\"assigned-user-tasks-loading\">\n <mat-spinner diameter=\"36\"></mat-spinner>\n </div>\n }\n\n @if (!loading) {\n <div class=\"assigned-user-tasks-table-wrapper\">\n <table mat-table [dataSource]=\"dataSource\" matSort>\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef></th>\n <td mat-cell *matCellDef=\"let obj\">\n <button\n mat-stroked-button\n color=\"primary\"\n type=\"button\"\n (click)=\"respondToTask(obj)\"\n [disabled]=\"!canRespond(obj) || respondingTaskId === (obj.UserTaskId ?? obj.IsCandidate?.USERTASKID)\">\n <i class=\"fal fa-reply\"></i>\n {{ t('GLOWW.RESPOND', 'Respond') }}\n </button>\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"task\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"task\">{{ t('LISTS.TASK', 'Task') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getTaskLabel(obj) }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"definition\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"definition\">{{ t('LISTS.DEFINITION_ID', 'Definition ID') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getDefinitionLabel(obj) }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"status\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"status\">{{ t('LISTS.STATUS', 'Status') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getStatusLabel(obj) }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"message\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"message\">{{ t('LISTS.MESSAGE', 'Message') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ obj.IsCandidate?.MESSAGE }}</td>\n </ng-container>\n\n <ng-container matColumnDef=\"assignment\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header=\"assignment\">{{ t('LISTS.ASSIGNED_TO', 'Assigned to') }}</th>\n <td mat-cell *matCellDef=\"let obj\">{{ getAssignmentLabel(obj) }}</td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns\"></tr>\n </table>\n </div>\n\n @if (!dataSource.data.length) {\n <div class=\"assigned-user-tasks-empty\">\n {{ t('GLOWW.NO_ASSIGNED_TASKS', 'No task is currently assigned to you.') }}\n </div>\n }\n }\n </mat-card-content>\n\n <mat-card-actions>\n <mat-paginator [pageSize]=\"10\" [pageSizeOptions]=\"[10, 20, 50, 100]\" [showFirstLastButtons]=\"true\"></mat-paginator>\n </mat-card-actions>\n</mat-card>\n","import { Component, OnInit } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { MatTableDataSource } from '@angular/material/table';\r\n\r\nexport abstract class BaseCollectionComponent {\r\n\r\n filterform: FormGroup;\r\n constructor(private _formBuilder: FormBuilder) {\r\n this.filterform = this._formBuilder.group({\r\n filterData: [null, null],\r\n });\r\n }\r\n\r\n abstract GetDataSource(): MatTableDataSource<any>;\r\n\r\n Filter(args?) {\r\n const filterDictionary = new Map<string, string>();\r\n var jsonString = JSON.stringify(args ?? this.filterform.value.filterData);\r\n this.GetDataSource().filter = jsonString;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRouteSnapshot, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { IHasUnsavedData } from './ihas-unsaved-data';\r\n\r\n/*@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HasUnsavedDataGuard implements CanDeactivate<unknown> {\r\n canDeactivate(\r\n component: unknown,\r\n currentRoute: ActivatedRouteSnapshot,\r\n currentState: RouterStateSnapshot,\r\n nextState?: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n return true;\r\n }\r\n\r\n}*/\r\n\r\n@Injectable()\r\nexport class HasUnsavedDataGuard {\r\n canDeactivate(component: IHasUnsavedData): boolean {\r\n if (component.hasUnsavedData && component.hasUnsavedData()) {\r\n return confirm('You have some unsaved form data. Are you sure, you want to leave this page ? ');\r\n }\r\n return true;\r\n }\r\n}\r\n","import { FolderService } from './Services/folder.service';\r\nimport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nimport { AngularEditorModule } from '@kolkov/angular-editor';\r\nimport { NavService } from './Services/nav.service';\r\nimport { SecureImgComponent } from './Components/secure-img/secure-img.component';\r\nimport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\r\nimport { MatSortModule } from '@angular/material/sort';\r\nimport { MatPaginatorModule } from '@angular/material/paginator';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { MatTableModule } from '@angular/material/table';\r\nimport { VersionCheckService } from './Services/version-check.service';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressSpinnerModule } from '@angular/material/progress-spinner';\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { CodemirrorModule } from '@ctrl/ngx-codemirror';\r\nimport { EnvironmentProviders, makeEnvironmentProviders, ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { \r\n NgxMatDatetimePickerModule, // Existe selon ta liste\r\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\r\n NgxMatNativeDateModule, // Existe selon ta liste\r\n} from 'ngx-mat-datetime-picker-v2';\r\n/*import { NgxMatMomentModule } from '@angular-material-components/moment-adapter';*/\r\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\r\nimport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\r\nimport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\r\nimport { HeaderComponent } from './Components/header/header.component';\r\nimport { ResultTableComponent } from './Components/result-table/result-table.component';\r\nimport { SearchFormComponent } from './Components/search-form/search-form.component';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { PromptComponent } from './Components/prompt/prompt.component';\r\nimport { SecurePipe } from './Pipes/secure.pipe';\r\nimport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\r\nimport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\r\nimport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\r\nimport { HtmlFormatPipe } from './Pipes/html-format.pipe';\r\nimport { UploadFileComponent } from './Components/upload-file/upload-file.component';\r\nimport { FileSinkDirective } from './Directives/file-sink.directive';\r\nimport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\r\nimport { FoldersComponent } from './Components/folders/folders/folders.component';\r\nimport { FolderServiceConfig } from './Services/folder-service-config';\r\nimport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\r\nimport { SecureAComponent } from './Components/secure-a/secure-a.component';\r\nimport { DummyComponent } from './Components/dummy/dummy.component';\r\nimport { SelectComponent } from './Components/select/select.component';\r\nimport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component';\r\nimport { MatAutocompleteModule } from '@angular/material/autocomplete';\r\nimport { DatetimeComponent } from './Components/datetime/datetime.component';\r\nimport { MAT_DATE_LOCALE } from '@angular/material/core';\r\nimport { DragDropModule } from '@angular/cdk/drag-drop';\r\n\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\nimport { RouteDirective } from './Directives/route.directive';\nimport { CallbackDirective } from './Directives/callback.directive';\nimport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nimport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\nimport { GlowwMatPaginatorIntlService } from './Services/gloww-mat-paginator-intl.service';\nimport { AssignedUserTasksComponent } from './Components/assigned-user-tasks/assigned-user-tasks.component';\n\nexport const GLOWW_STANDALONE_DECLARATIONS = [\n UploadDocComponent,\n SafeHtmlPipe,\n DisplayObjectsComponent,\n HeaderComponent,\n ResultTableComponent,\n SearchFormComponent,\n ConfirmationComponent,\n PromptComponent,\n SecurePipe,\n SecureImgComponent,\n MenuListItemComponent,\n CodeEditorComponent,\n HtmlEditorComponent,\n HtmlFormatPipe,\n UploadFileComponent,\n FileSinkDirective,\n FileEditComponent,\n FoldersComponent,\n DownloadProgressComponent,\n SecureAComponent,\n DummyComponent,\n SelectComponent,\n AutoCompleteComponent,\n DatetimeComponent,\n AssignedUserTasksComponent,\n RouteDirective,\n CallbackDirective,\n FilterFormComponent\n] as const;\n\nexport const GLOWW_MODULE_EXPORTS = [\n ...GLOWW_STANDALONE_DECLARATIONS,\n MatDatepickerModule,\n NgxMatDatetimePickerModule,\n NgxMatTimepickerComponent,\n NgxMatNativeDateModule\n] as const;\n\nfunction getGlowwProviders(folderServiceConfig?: FolderServiceConfig): Provider[] {\n return [\n VersionCheckService,\n NavService,\n VoiceRecognitionService,\n {\n provide: FolderServiceConfig,\n useValue: folderServiceConfig\n },\n { provide: MAT_DATE_LOCALE, useValue: 'fr' }\n ];\n}\n\nexport function provideGloww(folderServiceConfig?: FolderServiceConfig): EnvironmentProviders {\n return makeEnvironmentProviders(getGlowwProviders(folderServiceConfig));\n}\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n FormsModule,\n ReactiveFormsModule,\n MatDialogModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n MatCardModule,\n MatProgressSpinnerModule,\n MatProgressBarModule,\n MatTableModule,\n MatSelectModule,\n MatPaginatorModule,\n MatSortModule,\n MatProgressSpinnerModule,\n MatAutocompleteModule,\n CodemirrorModule,\n AngularEditorModule,\n MatDatepickerModule,\n NgxMatDatetimePickerModule, // Existe selon ta liste\n NgxMatTimepickerComponent, // Attention : ta liste dit \"NgxMatTimepickerComponent\"\n NgxMatNativeDateModule, // Existe selon ta liste\n //NgxMatMomentModule,\n DragDropModule,\n AngularResizeEventModule,\n ...GLOWW_STANDALONE_DECLARATIONS\n ],\n providers: [{ provide: MatPaginatorIntl, useClass: GlowwMatPaginatorIntlService }],\n exports: [...GLOWW_MODULE_EXPORTS]\n})\nexport class GlowwModule {\n public static forRoot(folderServiceConfig?: FolderServiceConfig): ModuleWithProviders<GlowwModule> {\n console.log(`forRoot ${folderServiceConfig}`);\n return {\n ngModule: GlowwModule,\n providers: getGlowwProviders(folderServiceConfig)\n };\n }\n}\n\r\nexport { VersionCheckService } from './Services/version-check.service';\r\nexport { FolderService } from './Services/folder.service'\r\nexport { DialogService } from './Services/dialog.service';\r\nexport { VoiceRecognitionService } from './Services/voice-recognition.service';\r\nexport { DisplayObjectsComponent } from './Components/display-objects/display-objects.component';\nexport { HeaderComponent } from './Components/header/header.component';\nexport { ResultTableComponent } from './Components/result-table/result-table.component';\nexport { SearchFormComponent } from './Components/search-form/search-form.component';\nexport { FilterFormComponent } from './Components/filter-form/filter-form.component';\nexport { BaseCollectionComponent } from './Components/base-collection/base-collection.component';\nexport { UploadDocComponent } from './Components/upload-doc/upload-doc.component';\nexport { UploadFileComponent } from './Components/upload-file/upload-file.component';\nexport { ConfirmationComponent } from './Components/confirmation/confirmation.component';\nexport { PromptComponent } from './Components/prompt/prompt.component';\nexport { SecureImgComponent } from './Components/secure-img/secure-img.component';\nexport { MenuListItemComponent } from './Components/menu-list-item/menu-list-item.component';\nexport { CodeEditorComponent } from './Components/code-editor/code-editor.component';\nexport { HtmlEditorComponent } from './Components/html-editor/html-editor.component';\nexport { FileEditComponent } from './Components/folders/file-edit/file-edit.component';\nexport { FoldersComponent } from './Components/folders/folders/folders.component';\nexport { DownloadProgressComponent } from './Components/download-progress/download-progress.component';\nexport { DummyComponent } from './Components/dummy/dummy.component'\nexport { SelectComponent } from './Components/select/select.component'\nexport { DatetimeComponent } from './Components/datetime/datetime.component'\nexport { AutoCompleteComponent } from './Components/auto-complete/auto-complete.component'\nexport { AssignedUserTasksComponent } from './Components/assigned-user-tasks/assigned-user-tasks.component'\nexport { SecureAComponent } from './Components/secure-a/secure-a.component';\nexport { SafeHtmlPipe } from './Pipes/safe-html.pipe';\nexport { SecurePipe } from './Pipes/secure.pipe';\nexport { HtmlFormatPipe } from './Pipes/html-format.pipe';\nexport { FileSinkDirective } from './Directives/file-sink.directive';\nexport { RouteDirective } from './Directives/route.directive';\nexport { CallbackDirective } from './Directives/callback.directive';\nexport { HasUnsavedDataGuard } from './Guards/has-unsaved-data.guard'\n","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GlowwSecurityService {\r\n\r\n constructor() { }\r\n}\r\n","import { AbstractControl } from \"@angular/forms\";\r\n\r\nexport class GlowwValidators {\r\n public static isObject(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (typeof control.value !== 'object') {\r\n return { 'isNotObject': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isEmail(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotEmail': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInteger(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:^\\s*\\d*\\s*$)/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotInteger': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isNumber(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /(?:(?:^\\s*(?:\\d+(?:[\\.]\\d+)?)?\\s*$))/\r\n if ((typeof control.value !== 'number') && (typeof control.value !== 'string' || !control.value.toString().match(re))) {\r\n return { 'isNotNumber': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isUrl(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(((https?:(?:\\/\\/)?)?(?:[\\-;:&=\\+\\$,\\w]+@)?[A-Za-z0-9\\.\\-]+|(?:www\\.|[\\-;:&=\\+\\$,\\w]+@)[A-Za-z0-9\\.\\-]+)((?:\\/[\\+~%\\/\\.\\w\\-_]*)?\\??(?:[\\-\\+=&;%@\\.\\w_]*)#?(?:[\\.\\!\\/\\\\\\w]*))?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv4(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv4Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\/\\d{1,2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isIPv6(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n public static isIPv6Range(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\\/\\d{1-3}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isMacAddr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^(?:[[:xdigit:]]{2}([-:]))(?:[[:xdigit:]]{2}\\1){4}[[:xdigit:]]{2}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isInternationalPhoneNr(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n var re = /^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\\d{1,14}$/\r\n if (typeof control.value !== 'string' || !control.value.toString().match(re)) {\r\n return { 'isNotUrl': true };\r\n }\r\n return null;\r\n }\r\n\r\n public static isJson(control: AbstractControl): { [key: string]: boolean } | null {\r\n if (!control.value) return null;\r\n if (typeof control.value === 'object') { return null; }\r\n if (typeof control.value !== 'string') {\r\n return { 'isNotJson': true };\r\n }\r\n try {\r\n const j = JSON.parse(control.value);\r\n } catch (ex) {\r\n return { 'invalidJson': true };\r\n }\r\n return null;\r\n }\r\n\r\n}\r\n","/*\r\n * Public API Surface of gloww\r\n */\r\n\r\nexport * from './lib/Services/gloww.service';\r\nexport * from './lib/Services/version-check.service';\r\nexport * from './lib/Services/dialog.service';\r\nexport * from './lib/Services/nav.service';\r\nexport * from './lib/gloww.module';\nexport * from './lib/Models/nav-item';\r\nexport * from './lib/Pipes/safe-html.pipe';\nexport * from './lib/Pipes/secure.pipe';\nexport * from './lib/Pipes/html-format.pipe';\nexport * from './lib/Directives/callback.directive';\nexport * from './lib/Directives/file-sink.directive';\nexport * from './lib/Directives/route.directive';\nexport * from './lib/Components/upload-doc/upload-doc.component';\nexport * from './lib/Components/upload-file/upload-file.component';\nexport * from './lib/Components/display-objects/display-objects.component';\nexport * from './lib/Components/confirmation/confirmation.component';\nexport * from './lib/Components/prompt/prompt.component';\nexport * from './lib/Components/secure-img/secure-img.component';\nexport * from './lib/Components/secure-a/secure-a.component';\nexport * from './lib/Components/header/header.component';\nexport * from './lib/Components/result-table/result-table.component';\nexport * from './lib/Components/search-form/search-form.component';\nexport * from './lib/Components/filter-form/filter-form.component';\nexport * from './lib/Components/dummy/dummy.component'\nexport * from './lib/Components/datetime/datetime.component'\nexport * from './lib/Components/select/select.component'\nexport * from './lib/Components/auto-complete/auto-complete.component'\nexport * from './lib/Components/assigned-user-tasks/assigned-user-tasks.component'\nexport * from './lib/Components/menu-list-item/menu-list-item.component';\nexport * from './lib/Components/code-editor/code-editor.component';\nexport * from './lib/Components/html-editor/html-editor.component';\nexport * from './lib/Components/folders/file-edit/file-edit.component';\nexport * from './lib/Components/folders/folders/folders.component';\nexport * from './lib/Components/download-progress/download-progress.component';\nexport * from './lib/Guards/has-unsaved-data.guard'\nexport * from './lib/Guards/ihas-unsaved-data'\n\nexport * from './lib/gloww-security/Components/login/login.component';\nexport * from './lib/gloww-security/Components/change-password-dlg/change-password-dlg.component';\nexport * from './lib/gloww-security/Components/user-menu/user-menu.component';\nexport * from './lib/gloww-security/Components/social-network/social-network.component';\nexport * from './lib/gloww-security/Components/social-network-dlg/social-network-dlg.component';\nexport * from './lib/gloww-security/Services/gloww-security.service';\nexport * from './lib/gloww-security/gloww-security.module';\nexport * from './lib/gloww-security/Services/authentication-service-config';\nexport * from './lib/Services/folder.service';\nexport * from './lib/Services/folder-service-config';\nexport * from './lib/Helpers/gloww-validators';\n\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i1.GlowwI18nService","i2.AuthenticationServiceConfig","i4.AuthenticationService","i5","i6.GlowwI18nService","delay","delayOperator","i1.NavService","i3.GlowwI18nService","i1.SnippetsService","i2.GlowwService","i3","i1.AuthenticationService","i3.AuthenticationService","i4.AuthenticationServiceConfig","i2.AuthenticationService","i3.AuthenticationServiceConfig","i3.VoiceRecognitionService","i4","CodeEditorComponent_1","i1.FolderService","MatFormField","MatLabel","i2.GlowwI18nService","i6","i8","i9"],"mappings":"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"}
|