{"version":3,"file":"bitfoot-ngx-authology.mjs","sources":["../../../projects/ngx-authology/src/lib/authology.service.ts","../../../projects/ngx-authology/src/lib/authology.interceptor.ts","../../../projects/ngx-authology/src/lib/authology.module.ts","../../../projects/ngx-authology/src/lib/authology-restricted.guard.ts","../../../projects/ngx-authology/src/lib/authology-unrestricted.guard.ts","../../../projects/ngx-authology/src/public-api.ts","../../../projects/ngx-authology/src/bitfoot-ngx-authology.ts"],"sourcesContent":["\r\nimport { Inject, Injectable } from '@angular/core';\r\n\r\nimport { Observable, Observer } from 'rxjs';\r\nimport { CookieService } from 'ngx-cookie-service';\r\nimport { ApiService } from '@bitfoot/ngx-api';\r\nimport { VarsService } from '@bitfoot/ngx-vars';\r\nimport { NavLoadService } from '@bitfoot/ngx-navload';\r\n\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class AuthologyService {\r\n    isLocalhost: boolean;\r\n    isLocald: boolean;\r\n    brandContext: string = '';\r\n\r\n\r\n    constructor(\r\n        @Inject('config') private config: any,\r\n        private varsService: VarsService,\r\n        private cookieService: CookieService,\r\n        private apiService: ApiService,\r\n        private navLoadService: NavLoadService,\r\n    ) {\r\n        this.isLocalhost = this.varsService.env['authology']['cookieDomain'].includes('localhost');\r\n        this.isLocald = this.varsService.env['authology']['cookieDomain'].includes('locald');\r\n    }\r\n\r\n\r\n    brandContextSet(brand: string) {\r\n        this.brandContext = brand;\r\n    }\r\n\r\n\r\n    cookieAuthCheck(brand?: string) {\r\n        let cookie = this.getCookieBrand('cookieAuth', brand);\r\n\r\n        return new Observable((observer: Observer<boolean>) => {\r\n            if (this.cookieService.check(cookie['name'])) {\r\n                this.apiService.get('check-cookie', {}, brand).subscribe(res => {\r\n                    observer.next(true);\r\n                }, err => {\r\n                    observer.next(false);\r\n                });\r\n            } else {\r\n                observer.next(false);\r\n            }\r\n        });\r\n    }\r\n\r\n\r\n    cookieSet(key: string, value: string, brand?: string) {\r\n        let cookie: any = this.getCookieBrand(key, brand);\r\n\r\n        this.cookieService.set(cookie['name'], value, {\r\n            expires: cookie['expires'],\r\n            path: cookie['path'] ? cookie['path'] : '/',\r\n            domain: this.domainGet(),\r\n            secure: !(this.isLocalhost || this.isLocald), // localhost is false and remote are true,\r\n            sameSite: ((this.isLocalhost || this.isLocald) ? 'Lax' : 'None')\r\n        });\r\n    }\r\n\r\n\r\n    cookieGet(key: string, brand?: string) {\r\n        let cookie = this.getCookieBrand(key, brand);\r\n\r\n        return this.cookieService.get(cookie['name']);\r\n    }\r\n\r\n\r\n    cookieDelete(key: string, brand?: string) {\r\n        let cookie = this.getCookieBrand(key, brand);\r\n\r\n        this.cookieService.delete(\r\n            cookie['name'],\r\n            cookie['path'] ? cookie['path'] : '/',\r\n            this.domainGet()\r\n        );\r\n    }\r\n\r\n\r\n    /**\r\n     * logout\r\n     * Observation: While implementing this function in a project, it was found that if you run\r\n     * this.router.navigate the cookie still shows in console but in reality the cookie has been deleted;\r\n     * the action of cookie deleting is confirmed if you refresh the page or use window.open instead.\r\n     * \r\n     * @param systemBasedLogout // Pass true when __redirect query param should be part of the login url.\r\n     * @returns \r\n     */\r\n    logout(systemBasedLogout?: boolean) {\r\n        const promises = new Array;\r\n\r\n        if (('login_all' in this.config) && this.config['login_all']) {\r\n            Object.keys(this.config['cookieAuth']).forEach(thisBrand => {\r\n                promises.push(new Promise((resolve, reject) => {\r\n                    this.cookieDelete('cookieAuth', thisBrand);\r\n                    resolve(true);\r\n                }));\r\n            });\r\n        } else {\r\n            promises.push(new Promise((resolve, reject) => {\r\n                this.cookieDelete('cookieAuth', this.brandContext);\r\n                resolve(true);\r\n            }));\r\n        }\r\n\r\n        return Promise.all([promises]).then((result) => {\r\n            if (this.config.routes['redirect'] && !this.config.routes['login']) {\r\n                window.open(this.varsService.env['authology']['loginUrl'] + '?__redirect=' + location.href, '_self');\r\n            } else {\r\n                if (systemBasedLogout) {\r\n                    window.open('//' + location.host + this.config['routes'].login + '?__redirect=' + this.navLoadService['sitenav']['transiting'], '_self');\r\n                } \r\n                else if (this.brandContext) {\r\n                    window.open('//' + location.host + '/' + this.config['routes'][this.brandContext].login, '_self');\r\n                }\r\n                else {\r\n                    window.open('//' + location.host + this.config['routes'].login, '_self');\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n\r\n    laravelPassportLogin(username: string, password: string, rememberMe: boolean) {\r\n        const promises = new Array;\r\n\r\n        if (('login_all' in this.config) && this.config['login_all']) {\r\n            Object.keys(this.config['cookieAuth']).forEach(thisBrand => {\r\n                promises.push(new Promise((resolve, reject) => {\r\n                    this.laravelPassportLoginHandler(username, password, thisBrand).subscribe(res => {\r\n                        this.cookieSet('cookieAuth', res.access_token, thisBrand);\r\n\r\n                        if (rememberMe) {\r\n                            this.cookieSet('cookieRememberMe', username, thisBrand);\r\n                        } else {\r\n                            this.cookieDelete('cookieRememberMe', thisBrand);\r\n                        }\r\n\r\n                        resolve(true);\r\n                    }, err => {\r\n                        reject(err);\r\n                    });\r\n                }));\r\n            });\r\n        } else {\r\n            promises.push(new Promise((resolve, reject) => {\r\n                this.laravelPassportLoginHandler(username, password, this.brandContext).subscribe(res => {\r\n                    this.cookieSet('cookieAuth', res.access_token, this.brandContext);\r\n\r\n                    if (rememberMe) {\r\n                        this.cookieSet('cookieRememberMe', username, this.brandContext);\r\n                    } else {\r\n                        this.cookieDelete('cookieRememberMe', this.brandContext);\r\n                    }\r\n\r\n                    resolve(true);\r\n                }, err => {\r\n                    reject(err);\r\n                });\r\n            }));\r\n        }\r\n\r\n        return Promise.all(promises);\r\n    }\r\n\r\n\r\n    private laravelPassportLoginHandler(username: string, password: string, thisBrand?: string): Observable<any> {\r\n        let cookiesObject = (thisBrand && (thisBrand in this.config['cookieAuth'])) ? this.config['cookieAuth'][thisBrand] : this.config['cookieAuth'];\r\n        let passportObject = (thisBrand && (thisBrand in this.varsService.env['authology']['passport'])) ? this.varsService.env['authology']['passport'][thisBrand] : this.varsService.env['authology']['passport'];\r\n\r\n        return this.apiService.post(cookiesObject.laravel_passport_login.path, {\r\n            body: {\r\n                client_id: passportObject.client_id,\r\n                client_secret: passportObject.client_secret,\r\n                grant_type: passportObject.grant_type,\r\n                scope: cookiesObject.laravel_passport_login.scope,\r\n                username,\r\n                password,\r\n        }}, thisBrand);\r\n    }\r\n\r\n\r\n    private domainGet() {\r\n        return (this.isLocalhost ? 'localhost' : this.varsService.env['authology']['cookieDomain']);\r\n    }\r\n\r\n\r\n    private getCookieBrand(key: string, brand?: string) {\r\n        if ('name' in this.config[key]) {\r\n            return this.setCookieNameBasedOnEnv(this.config[key]);\r\n        } else if (brand) {\r\n            return this.setCookieNameBasedOnEnv(this.config[key][brand]);\r\n        } else {\r\n            throw new Error('Please specify brand key.');\r\n        }\r\n    }\r\n\r\n\r\n    /**\r\n     * setCookieNameBasedOnEnv\r\n     * Keep cookie name unqiue based on environment. This is to avoid creating a conflict with the production environment.\r\n     * \r\n     * @param configCookieObject \r\n     * @returns \r\n     */\r\n    private setCookieNameBasedOnEnv(configCookieObject: any) {\r\n        let _thisConfigCookieObject = JSON.parse(JSON.stringify(configCookieObject));\r\n\r\n        if (this.varsService.env['authology']['env'] != 'production') {\r\n            _thisConfigCookieObject['name'] += this.varsService.env['authology']['env'];\r\n        }\r\n\r\n        return _thisConfigCookieObject;\r\n    }\r\n}\r\n","\nimport { Inject, Injectable } from '@angular/core';\nimport { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor, HttpResponse, HttpErrorResponse } from '@angular/common/http';\n\nimport { Observable } from 'rxjs';\nimport { tap } from 'rxjs/operators';\n\nimport { AuthologyService } from './authology.service';\n\n\n@Injectable()\nexport class TokenInterceptor implements HttpInterceptor {\n    constructor(\n        private authologyService: AuthologyService\n    ) {}\n\n\n    intercept(request: HttpRequest<any> | any, next: HttpHandler): Observable<HttpEvent<any>> {\n        request = request.clone({\n            headers: request.headers.set(\"Authorization\", `Bearer ${this.authologyService.cookieGet('cookieAuth', request.headers.get('Cookie-Brand'))}`)\n        });\n\n        return next.handle(request);\n    }\n}\n\n\nexport class JwtInterceptor implements HttpInterceptor {\n    constructor(\n        private authologyService: AuthologyService\n    ) {}\n\n\n    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {\n        return next.handle(request).pipe(tap(\n            (event: HttpEvent<any>) => {\n                if (event instanceof HttpResponse) {\n                    // do stuff with response if you want\n                }\n            }, (err: any) => {\n                if (err instanceof HttpErrorResponse) {\n                    console.log('JwtInterceptor', 'err', err);\n\n                    if (err.status === 401 || err.status === 403) {\n                        this.authologyService.logout(true);\n                    }\n                }\n            })\n        );\n    }\n}\n","\r\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\n\r\nimport { ApiService } from '@bitfoot/ngx-api';\r\nimport { CookieService } from 'ngx-cookie-service';\r\n\r\nimport { JwtInterceptor, TokenInterceptor } from './authology.interceptor';\r\nimport { AuthologyService } from './authology.service';\r\n\r\n\r\n@NgModule({\r\n})\r\nexport class AuthologyModule {\r\n    static forRoot(config: any): ModuleWithProviders<AuthologyModule> {\r\n        return {\r\n            ngModule: AuthologyModule,\r\n            providers: [{\r\n                provide: HTTP_INTERCEPTORS,\r\n                useClass: TokenInterceptor,\r\n                multi: true\r\n            }, {\r\n                provide: HTTP_INTERCEPTORS,\r\n                useClass: JwtInterceptor,\r\n                multi: true,\r\n                deps: [\r\n                    AuthologyService\r\n                ]\r\n            }, {\r\n                provide: 'config',\r\n                useValue: config\r\n            },\r\n                ApiService,\r\n                AuthologyService,\r\n                CookieService\r\n            ]\r\n        };\r\n    }\r\n}\r\n","\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { Observable, Observer } from 'rxjs';\r\nimport { VarsService } from '@bitfoot/ngx-vars';\r\nimport { NavLoadService } from '@bitfoot/ngx-navload';\r\n\r\nimport { AuthologyService } from './authology.service';\r\n\r\n\r\n@Injectable()\r\nexport class AuthologyRestrictedGuard implements CanActivate {\r\n    constructor(\r\n        @Inject('config') private config: any,\r\n        private authologyService: AuthologyService,\r\n        private router: Router,\r\n        private varsService: VarsService,\r\n        private navLoadService: NavLoadService,\r\n    ) {}\r\n\r\n\r\n    canActivate(next: ActivatedRouteSnapshot | any, state: RouterStateSnapshot) {\r\n        const brands = next.data.brands as Array<string>;\r\n\r\n        return new Observable((observer: Observer<boolean>) => {\r\n            if (brands && brands.length) {\r\n                let count = brands.length;\r\n\r\n                brands.forEach(thisBrand => {\r\n                    this.authologyService.cookieAuthCheck(thisBrand).subscribe(res => {\r\n                        count--;\r\n\r\n                        if (res) {\r\n                            if (!count) observer.next(true);\r\n                        } else {\r\n                            this.router.navigate([this.config.routes[thisBrand] ? this.config.routes[thisBrand].login : this.config.routes.login]);\r\n                        }\r\n                    });\r\n                });\r\n            } else {\r\n                this.authologyService.cookieAuthCheck().subscribe(res => {\r\n                    if (res) {\r\n                        observer.next(true);\r\n                    } else {\r\n                        if (this.config.routes['redirect'] && !this.config.routes['login']) {\r\n                            window.open(this.varsService.env['authology']['loginUrl'] + '?__redirect=' + window.location.href, '_self');\r\n                        } else {\r\n                            if (this.navLoadService.sitenav.transiting) {\r\n                                this.router.navigate([this.config.routes.login], {\r\n                                    queryParams: {\r\n                                        __redirect: this.navLoadService.sitenav.transiting\r\n                                    }\r\n                                });\r\n                            } else {\r\n                                this.router.navigate([this.config.routes.login]);\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\r\n}\r\n","\r\nimport { Inject, Injectable } from '@angular/core';\r\nimport { Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\r\n\r\nimport { Observable, Observer } from 'rxjs';\r\n\r\nimport { AuthologyService } from './authology.service';\r\n\r\n\r\n@Injectable()\r\nexport class AuthologyUnrestrictedGuard implements CanActivate {\r\n    constructor(\r\n        @Inject('config') private config: any,\r\n        private authologyService: AuthologyService,\r\n        private router: Router,\r\n    ) {}\r\n\r\n\r\n    canActivate(next: ActivatedRouteSnapshot | any, state: RouterStateSnapshot) {\r\n        const brands = next.data.brands as Array<string>;\r\n\r\n        return new Observable((observer: Observer<boolean>) => {\r\n            if (brands && brands.length) {\r\n                let count = brands.length;\r\n\r\n                brands.forEach(thisBrand => {\r\n                    this.authologyService.cookieAuthCheck(thisBrand).subscribe(res => {\r\n                        count--;\r\n\r\n                        if (res) {\r\n                            if (!count) {\r\n                                this.router.navigate([this.config.routes[thisBrand] ? this.config.routes[thisBrand].default_auth : this.config.routes.default_auth]);\r\n\r\n                                /* @todo: This is an example code that will come handy when redirect at brand level will be required, similar to below.\r\n                                if ((this.config.routes[thisBrand] && this.config.routes[thisBrand].redirect) || this.config.routes['redirect']) {\r\n                                    window.open(next.queryParamMap.get('redirect'), '_self');\r\n                                } else {\r\n                                    this.router.navigate([this.config.routes[thisBrand] ? this.config.routes[thisBrand].default_auth : this.config.routes.default_auth]);\r\n                                }\r\n                                */\r\n                            }\r\n                        } else {\r\n                            observer.next(true);\r\n                        }\r\n                    });\r\n                });\r\n            } else {\r\n                this.authologyService.cookieAuthCheck().subscribe(res => {\r\n                    if (res) {\r\n                        if (this.config.routes['redirect'] && next.queryParamMap.get('__redirect')) {\r\n                            window.open(next.queryParamMap.get('__redirect'), '_self');\r\n                        } else {\r\n                            this.router.navigate([this.config.routes.default_auth]);\r\n                        }\r\n                    } else {\r\n                        observer.next(true);\r\n                    }\r\n                });\r\n            }\r\n        });\r\n    }\r\n}\r\n","/*\n * Public API Surface of ngx-authology\n */\n\nexport * from './lib/authology.module';\nexport * from './lib/authology-restricted.guard';\nexport * from './lib/authology-unrestricted.guard';\nexport * from './lib/authology.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.AuthologyService","i2","i3"],"mappings":";;;;;;;;;;;;;MAaa,gBAAgB,CAAA;IAMzB,WAC8B,CAAA,MAAW,EAC7B,WAAwB,EACxB,aAA4B,EAC5B,UAAsB,EACtB,cAA8B,EAAA;QAJZ,IAAM,CAAA,MAAA,GAAN,MAAM,CAAK;QAC7B,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAa,CAAA,aAAA,GAAb,aAAa,CAAe;QAC5B,IAAU,CAAA,UAAA,GAAV,UAAU,CAAY;QACtB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;QAR1C,IAAY,CAAA,YAAA,GAAW,EAAE,CAAC;AAUtB,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AAC3F,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;KACxF;AAGD,IAAA,eAAe,CAAC,KAAa,EAAA;AACzB,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;KAC7B;AAGD,IAAA,eAAe,CAAC,KAAc,EAAA;QAC1B,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;AAEtD,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAA2B,KAAI;YAClD,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE;AAC1C,gBAAA,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC3D,oBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB,EAAE,GAAG,IAAG;AACL,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACzB,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;AACH,gBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACxB,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAGD,IAAA,SAAS,CAAC,GAAW,EAAE,KAAa,EAAE,KAAc,EAAA;QAChD,IAAI,MAAM,GAAQ,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAElD,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE;AAC1C,YAAA,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;AAC1B,YAAA,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG;AAC3C,YAAA,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE;YACxB,MAAM,EAAE,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,CAAC;AAC5C,YAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,KAAK,GAAG,MAAM,CAAC;AACnE,SAAA,CAAC,CAAC;KACN;IAGD,SAAS,CAAC,GAAW,EAAE,KAAc,EAAA;QACjC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;KACjD;IAGD,YAAY,CAAC,GAAW,EAAE,KAAc,EAAA;QACpC,IAAI,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAE7C,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CACrB,MAAM,CAAC,MAAM,CAAC,EACd,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,EACrC,IAAI,CAAC,SAAS,EAAE,CACnB,CAAC;KACL;AAGD;;;;;;;;AAQG;AACH,IAAA,MAAM,CAAC,iBAA2B,EAAA;AAC9B,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC;AAE3B,QAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAC1D,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;gBACvD,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC1C,oBAAA,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB,CAAC,CAAC,CAAC;AACR,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACH,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;gBAC1C,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB,CAAC,CAAC,CAAC;AACP,SAAA;AAED,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AAC3C,YAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAChE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACxG,aAAA;AAAM,iBAAA;AACH,gBAAA,IAAI,iBAAiB,EAAE;AACnB,oBAAA,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC5I,iBAAA;qBACI,IAAI,IAAI,CAAC,YAAY,EAAE;oBACxB,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACrG,iBAAA;AACI,qBAAA;oBACD,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AAC5E,iBAAA;AACJ,aAAA;AACL,SAAC,CAAC,CAAC;KACN;AAGD,IAAA,oBAAoB,CAAC,QAAgB,EAAE,QAAgB,EAAE,UAAmB,EAAA;AACxE,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAC;AAE3B,QAAA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;AAC1D,YAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,IAAG;gBACvD,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC1C,oBAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;wBAC5E,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE1D,wBAAA,IAAI,UAAU,EAAE;4BACZ,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAC3D,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;AACpD,yBAAA;wBAED,OAAO,CAAC,IAAI,CAAC,CAAC;qBACjB,EAAE,GAAG,IAAG;wBACL,MAAM,CAAC,GAAG,CAAC,CAAC;AAChB,qBAAC,CAAC,CAAC;iBACN,CAAC,CAAC,CAAC;AACR,aAAC,CAAC,CAAC;AACN,SAAA;AAAM,aAAA;YACH,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAI;AAC1C,gBAAA,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AACpF,oBAAA,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAElE,oBAAA,IAAI,UAAU,EAAE;wBACZ,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AACnE,qBAAA;AAAM,yBAAA;wBACH,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;AAC5D,qBAAA;oBAED,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB,EAAE,GAAG,IAAG;oBACL,MAAM,CAAC,GAAG,CAAC,CAAC;AAChB,iBAAC,CAAC,CAAC;aACN,CAAC,CAAC,CAAC;AACP,SAAA;AAED,QAAA,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;KAChC;AAGO,IAAA,2BAA2B,CAAC,QAAgB,EAAE,QAAgB,EAAE,SAAkB,EAAA;AACtF,QAAA,IAAI,aAAa,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC/I,IAAI,cAAc,GAAG,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC;QAE5M,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,IAAI,EAAE;AACnE,YAAA,IAAI,EAAE;gBACF,SAAS,EAAE,cAAc,CAAC,SAAS;gBACnC,aAAa,EAAE,cAAc,CAAC,aAAa;gBAC3C,UAAU,EAAE,cAAc,CAAC,UAAU;AACrC,gBAAA,KAAK,EAAE,aAAa,CAAC,sBAAsB,CAAC,KAAK;gBACjD,QAAQ;gBACR,QAAQ;AACf,aAAA;SAAC,EAAE,SAAS,CAAC,CAAC;KAClB;IAGO,SAAS,GAAA;QACb,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,cAAc,CAAC,EAAE;KAC/F;IAGO,cAAc,CAAC,GAAW,EAAE,KAAc,EAAA;QAC9C,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;YAC5B,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AACzD,SAAA;AAAM,aAAA,IAAI,KAAK,EAAE;AACd,YAAA,OAAO,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChE,SAAA;AAAM,aAAA;AACH,YAAA,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;AAChD,SAAA;KACJ;AAGD;;;;;;AAMG;AACK,IAAA,uBAAuB,CAAC,kBAAuB,EAAA;AACnD,QAAA,IAAI,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAE7E,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,IAAI,YAAY,EAAE;AAC1D,YAAA,uBAAuB,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC;AAC/E,SAAA;AAED,QAAA,OAAO,uBAAuB,CAAC;KAClC;;AA7MQ,gBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,kBAOb,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,aAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAPX,gBAAA,CAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,gBAAgB,cAFb,MAAM,EAAA,CAAA,CAAA;2FAET,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAH5B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,UAAU,EAAE,MAAM;AACrB,iBAAA,CAAA;;0BAQQ,MAAM;2BAAC,QAAQ,CAAA;;;MCTX,gBAAgB,CAAA;AACzB,IAAA,WAAA,CACY,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAC1C;IAGJ,SAAS,CAAC,OAA+B,EAAE,IAAiB,EAAA;AACxD,QAAA,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;AACpB,YAAA,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAA,CAAE,CAAC;AAChJ,SAAA,CAAC,CAAC;AAEH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KAC/B;;6GAZQ,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;iHAAhB,gBAAgB,EAAA,CAAA,CAAA;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAD5B,UAAU;;MAiBE,cAAc,CAAA;AACvB,IAAA,WAAA,CACY,gBAAkC,EAAA;QAAlC,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;KAC1C;IAGJ,SAAS,CAAC,OAAyB,EAAE,IAAiB,EAAA;AAClD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAChC,CAAC,KAAqB,KAAI;YACtB,IAAI,KAAK,YAAY,YAAY,EAAE;;AAElC,aAAA;AACL,SAAC,EAAE,CAAC,GAAQ,KAAI;YACZ,IAAI,GAAG,YAAY,iBAAiB,EAAE;gBAClC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBAE1C,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;AAC1C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACtC,iBAAA;AACJ,aAAA;SACJ,CAAC,CACL,CAAC;KACL;AACJ;;MCrCY,eAAe,CAAA;IACxB,OAAO,OAAO,CAAC,MAAW,EAAA;QACtB,OAAO;AACH,YAAA,QAAQ,EAAE,eAAe;AACzB,YAAA,SAAS,EAAE,CAAC;AACR,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,QAAQ,EAAE,gBAAgB;AAC1B,oBAAA,KAAK,EAAE,IAAI;iBACd,EAAE;AACC,oBAAA,OAAO,EAAE,iBAAiB;AAC1B,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,KAAK,EAAE,IAAI;AACX,oBAAA,IAAI,EAAE;wBACF,gBAAgB;AACnB,qBAAA;iBACJ,EAAE;AACC,oBAAA,OAAO,EAAE,QAAQ;AACjB,oBAAA,QAAQ,EAAE,MAAM;AACnB,iBAAA;gBACG,UAAU;gBACV,gBAAgB;gBAChB,aAAa;AAChB,aAAA;SACJ,CAAC;KACL;;4GAxBQ,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,CAAA,CAAA;6GAAf,eAAe,EAAA,CAAA,CAAA;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAF3B,QAAQ;mBAAC,EACT,CAAA;;;MCAY,wBAAwB,CAAA;IACjC,WAC8B,CAAA,MAAW,EAC7B,gBAAkC,EAClC,MAAc,EACd,WAAwB,EACxB,cAA8B,EAAA;QAJZ,IAAM,CAAA,MAAA,GAAN,MAAM,CAAK;QAC7B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;QACd,IAAW,CAAA,WAAA,GAAX,WAAW,CAAa;QACxB,IAAc,CAAA,cAAA,GAAd,cAAc,CAAgB;KACtC;IAGJ,WAAW,CAAC,IAAkC,EAAE,KAA0B,EAAA;AACtE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAuB,CAAC;AAEjD,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAA2B,KAAI;AAClD,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,gBAAA,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAE1B,gBAAA,MAAM,CAAC,OAAO,CAAC,SAAS,IAAG;AACvB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC7D,wBAAA,KAAK,EAAE,CAAC;AAER,wBAAA,IAAI,GAAG,EAAE;AACL,4BAAA,IAAI,CAAC,KAAK;AAAE,gCAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACnC,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1H,yBAAA;AACL,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,GAAG,IAAG;AACpD,oBAAA,IAAI,GAAG,EAAE;AACL,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,qBAAA;AAAM,yBAAA;AACH,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;4BAChE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,GAAG,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAC/G,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE;AACxC,gCAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;AAC7C,oCAAA,WAAW,EAAE;AACT,wCAAA,UAAU,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,UAAU;AACrD,qCAAA;AACJ,iCAAA,CAAC,CAAC;AACN,6BAAA;AAAM,iCAAA;AACH,gCAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACpD,6BAAA;AACJ,yBAAA;AACJ,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;AAlDQ,wBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,wBAAwB,kBAErB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,cAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;yHAFX,wBAAwB,EAAA,CAAA,CAAA;2FAAxB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;;0BAGF,MAAM;2BAAC,QAAQ,CAAA;;;MCJX,0BAA0B,CAAA;AACnC,IAAA,WAAA,CAC8B,MAAW,EAC7B,gBAAkC,EAClC,MAAc,EAAA;QAFI,IAAM,CAAA,MAAA,GAAN,MAAM,CAAK;QAC7B,IAAgB,CAAA,gBAAA,GAAhB,gBAAgB,CAAkB;QAClC,IAAM,CAAA,MAAA,GAAN,MAAM,CAAQ;KACtB;IAGJ,WAAW,CAAC,IAAkC,EAAE,KAA0B,EAAA;AACtE,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAuB,CAAC;AAEjD,QAAA,OAAO,IAAI,UAAU,CAAC,CAAC,QAA2B,KAAI;AAClD,YAAA,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE;AACzB,gBAAA,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;AAE1B,gBAAA,MAAM,CAAC,OAAO,CAAC,SAAS,IAAG;AACvB,oBAAA,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,GAAG,IAAG;AAC7D,wBAAA,KAAK,EAAE,CAAC;AAER,wBAAA,IAAI,GAAG,EAAE;4BACL,IAAI,CAAC,KAAK,EAAE;AACR,gCAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAErI;;;;;;AAME;AACL,6BAAA;AACJ,yBAAA;AAAM,6BAAA;AACH,4BAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,yBAAA;AACL,qBAAC,CAAC,CAAC;AACP,iBAAC,CAAC,CAAC;AACN,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,GAAG,IAAG;AACpD,oBAAA,IAAI,GAAG,EAAE;AACL,wBAAA,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE;AACxE,4BAAA,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC;AAC9D,yBAAA;AAAM,6BAAA;AACH,4BAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;AAC3D,yBAAA;AACJ,qBAAA;AAAM,yBAAA;AACH,wBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvB,qBAAA;AACL,iBAAC,CAAC,CAAC;AACN,aAAA;AACL,SAAC,CAAC,CAAC;KACN;;AAlDQ,0BAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,0BAA0B,kBAEvB,QAAQ,EAAA,EAAA,EAAA,KAAA,EAAAF,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,IAAA,CAAA,MAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;2HAFX,0BAA0B,EAAA,CAAA,CAAA;2FAA1B,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBADtC,UAAU;;0BAGF,MAAM;2BAAC,QAAQ,CAAA;;;ACZxB;;AAEG;;ACFH;;AAEG;;;;"}