{"version":3,"file":"ngx-metafrenzy.mjs","sources":["../../src/app/metafrenzy/metafrenzy.service.ts","../../src/app/metafrenzy/metafrenzy.guard.ts","../../src/app/metafrenzy/metafrenzy.module.ts","../../src/ngx-metafrenzy.ts"],"sourcesContent":["import { Injectable, RendererFactory2, Inject, ViewEncapsulation } from '@angular/core';\nimport { Meta, Title } from '@angular/platform-browser';\nimport { DOCUMENT } from '@angular/common';\n\nexport interface LinkDefinition {\n    charset?: string;\n    crossorigin?: string;\n    href?: string;\n    hreflang?: string;\n    media?: string;\n    rel?: string;\n    rev?: string;\n    sizes?: string;\n    target?: string;\n    type?: string;\n    [prop: string]: string | undefined;\n}\n\nexport interface OpenGraph {\n    title?: string;\n    description?: string;\n    type?: string;\n    url?: string;\n    image?: string;\n    site_name?: string;\n    [prop: string]: string | undefined;\n}\n\nexport interface Tags {\n    title?: string;\n    description?: string;\n    url?: string;\n    robots?: Robots;\n    image?: string;\n}\n\nexport type Robots =\n    'index,follow' | 'index,nofollow' | 'noindex,nofollow' | 'noindex,follow' |\n    'index, follow' | 'index, nofollow' | 'noindex, nofollow' | 'noindex, follow';\n\n@Injectable()\nexport class MetafrenzyService {\n\n    constructor(\n        private readonly title: Title,\n        private readonly meta: Meta,\n        private readonly rendererFactory: RendererFactory2,\n        @Inject(DOCUMENT) private document: any\n    ) {}\n\n    setTitle(title: string) {\n        this.title.setTitle(title);\n    }\n\n    getTitle(): string {\n        return this.title.getTitle();\n    }\n\n    setMetaTag(name: string, content: string) {\n        const metaDefinition: any = {};\n\n        if (name.lastIndexOf('og:', 0) === 0) {\n            metaDefinition['property'] = name;\n        } else {\n            metaDefinition['name'] = name;\n        }\n\n        metaDefinition['content'] = content;\n\n        this.meta.updateTag(metaDefinition);\n    }\n\n    getMetaTag(selector: string, returnElement?: boolean): string|HTMLMetaElement {\n        const tag = this.meta.getTag(selector);\n        if (!tag) {\n            return '';\n        }\n\n        return returnElement === true ? tag : tag.content;\n    }\n\n    removeMetaTag(selector: string|HTMLMetaElement) {\n        if (selector instanceof HTMLMetaElement) {\n            this.meta.removeTagElement(selector);\n        } else {\n            this.meta.removeTag(selector);\n        }\n    }\n\n    setMetaCharsetTag(value: string) {\n        this.meta.updateTag({\n            charset: value\n        }, 'charset');\n    }\n\n    removeLinkTags(shouldRemoveLinkTagCb: (linkTag: HTMLLinkElement) => boolean) {\n        const links: HTMLCollectionOf<HTMLLinkElement> = this.document.head.getElementsByTagName('link');\n\n        const toRemove: HTMLLinkElement[] = [];\n\n        for (let i = 0; i < links.length; i++) {\n            if (shouldRemoveLinkTagCb(links[i])) {\n                toRemove.push(links[i]);\n            }\n        }\n\n        toRemove.forEach(el => el.remove());\n    }\n\n    setLinkTag(tag: LinkDefinition) {\n        try {\n            const renderer = this.rendererFactory.createRenderer(this.document, {\n                id: '-1',\n                encapsulation: ViewEncapsulation.None,\n                styles: [],\n                data: {}\n            });\n\n            const link = renderer.createElement('link');\n            const head = this.document.head;\n\n            Object.keys(tag).forEach((property: string) => {\n                return renderer.setAttribute(link, property, String(tag[property]));\n            });\n\n            this.removeLinkTags(el => {\n                if (\n                    (el.getAttribute('name') !== null &&\n                        el.getAttribute('name') === link.getAttribute('name')) ||\n                    (el.getAttribute('rel') !== null &&\n                        el.getAttribute('rel') === link.getAttribute('rel') &&\n                        link.getAttribute('rel') !== 'stylesheet' &&\n                        link.getAttribute('rel') !== 'alternate')\n                ) {\n                  return true;\n                }\n\n                return false;\n            });\n\n            renderer.appendChild(head, link);\n        } catch (e) {}\n    }\n\n    setAllTitleTags(title: string) {\n        this.setTitle(title);\n        this.setMetaTag('og:title', title);\n    }\n\n    setAllDescriptionTags(description: string) {\n        this.setMetaTag('description', description);\n        this.setMetaTag('og:description', description);\n    }\n\n    setCanonical(href: string) {\n        this.setLinkTag({\n            rel: 'canonical',\n            href\n        });\n    }\n\n    removeCanonical() {\n      this.removeLinkTags(el => el.getAttribute('rel') === 'canonical');\n    }\n\n    setRobots(content: Robots) {\n        this.setLinkTag({\n            rel: 'robots',\n            content\n        });\n    }\n\n    setOpenGraph(og: OpenGraph) {\n        Object.keys(og).forEach((name: string) => {\n            this.setMetaTag('og:' + name, String(og[name]));\n        });\n    }\n\n    setTags(tags: Tags) {\n        if (tags.hasOwnProperty('title') && tags.title) {\n            this.setAllTitleTags(tags.title);\n        }\n\n        if (tags.hasOwnProperty('description') && tags.description) {\n            this.setAllDescriptionTags(tags.description);\n        }\n\n        if (tags.hasOwnProperty('url') && tags.url) {\n            this.setMetaTag('og:url', tags.url);\n            this.setCanonical(tags.url);\n        }\n\n        if (tags.hasOwnProperty('image') && tags.image) {\n            this.setMetaTag('og:image:url', tags.image);\n        }\n\n        if (tags.hasOwnProperty('robots') && tags.robots) {\n            this.setRobots(tags.robots);\n        }\n    }\n\n}\n","import { Injectable } from '@angular/core';\nimport { CanActivate, CanActivateChild, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';\nimport { Observable } from 'rxjs';\n\nimport { MetafrenzyService, LinkDefinition } from './metafrenzy.service';\n\n@Injectable()\nexport class MetafrenzyGuard implements CanActivate, CanActivateChild {\n    constructor(private readonly metafrenzyService: MetafrenzyService) {}\n\n    canActivate(\n        next: ActivatedRouteSnapshot,\n        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n\n        const metaTags = (next && next.data && next.data.metafrenzy) ? next.data.metafrenzy : null;\n\n        if (metaTags) {\n            for (const key in metaTags) {\n                if (!metaTags.hasOwnProperty(key)) {\n                    continue;\n                }\n\n                const value = metaTags[key];\n\n                if (key === 'title') {\n                    this.metafrenzyService.setTitle(value);\n                } else if (key === 'tags') {\n                    value.forEach((tag: any) => {\n                        if ('name' in tag && 'content' in tag) {\n                            this.metafrenzyService.setMetaTag(tag.name, tag.content);\n                        }\n                    });\n                } else if (key === 'links') {\n                    value.forEach((link: LinkDefinition) => {\n                        this.metafrenzyService.setLinkTag(link);\n                    });\n                }\n            }\n        }\n\n        return true;\n    }\n\n    canActivateChild(\n        next: ActivatedRouteSnapshot,\n        state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n\n        return this.canActivate(next, state);\n    }\n\n    canDeactivate<T>(\n        compontent: T,\n        current: ActivatedRouteSnapshot): Observable<boolean> | Promise<boolean> | boolean {\n\n        const metaTags = (current && current.data && current.data.metafrenzy) ? current.data.metafrenzy : null;\n\n        if (metaTags) {\n            for (const key in metaTags) {\n                if (!metaTags.hasOwnProperty(key)) {\n                    continue;\n                }\n\n                const value = metaTags[key];\n\n                if (key === 'title') {\n                    this.metafrenzyService.setTitle('');\n                } else if (key === 'tags') {\n                    value.forEach((tag: any) => {\n                        if ('name' in tag && 'content' in tag) {\n                            this.metafrenzyService.removeMetaTag(`name=\"${tag.name}\"`);\n                        }\n                    });\n                } else if (key === 'links') {\n                    value.forEach((link: LinkDefinition) => {\n                        this.metafrenzyService.removeLinkTags(el => {\n                            if (\n                                (el.getAttribute('name') !== null &&\n                                    el.getAttribute('name') === link.name) ||\n                                (el.getAttribute('rel') !== null &&\n                                    el.getAttribute('rel') === link.rel &&\n                                    link.rel !== 'stylesheet' &&\n                                    link.rel !== 'alternate')\n                            ) {\n                              return true;\n                            }\n\n                            return false;\n                        });\n                    });\n                }\n            }\n        }\n\n        return true;\n    }\n}\n","import { NgModule, ModuleWithProviders } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { MetafrenzyService } from './metafrenzy.service';\nimport { MetafrenzyGuard } from './metafrenzy.guard';\n\n@NgModule({\n    imports: [\n        CommonModule\n    ]\n})\nexport class MetafrenzyModule {\n    static forRoot(): ModuleWithProviders<MetafrenzyModule> {\n        return {\n            ngModule: MetafrenzyModule,\n            providers: [\n                MetafrenzyService,\n                MetafrenzyGuard\n            ]\n        };\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAyCa,iBAAiB;IAE1B,YACqB,KAAY,EACZ,IAAU,EACV,eAAiC,EACxB,QAAa;QAHtB,UAAK,GAAL,KAAK,CAAO;QACZ,SAAI,GAAJ,IAAI,CAAM;QACV,oBAAe,GAAf,eAAe,CAAkB;QACxB,aAAQ,GAAR,QAAQ,CAAK;KACvC;IAEJ,QAAQ,CAAC,KAAa;QAClB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC9B;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;KAChC;IAED,UAAU,CAAC,IAAY,EAAE,OAAe;QACpC,MAAM,cAAc,GAAQ,EAAE,CAAC;QAE/B,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE;YAClC,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;SACrC;aAAM;YACH,cAAc,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;SACjC;QAED,cAAc,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QAEpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;KACvC;IAED,UAAU,CAAC,QAAgB,EAAE,aAAuB;QAChD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,EAAE;YACN,OAAO,EAAE,CAAC;SACb;QAED,OAAO,aAAa,KAAK,IAAI,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC;KACrD;IAED,aAAa,CAAC,QAAgC;QAC1C,IAAI,QAAQ,YAAY,eAAe,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SACxC;aAAM;YACH,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;SACjC;KACJ;IAED,iBAAiB,CAAC,KAAa;QAC3B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAChB,OAAO,EAAE,KAAK;SACjB,EAAE,SAAS,CAAC,CAAC;KACjB;IAED,cAAc,CAAC,qBAA4D;QACvE,MAAM,KAAK,GAAsC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAEjG,MAAM,QAAQ,GAAsB,EAAE,CAAC;QAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC3B;SACJ;QAED,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;KACvC;IAED,UAAU,CAAC,GAAmB;QAC1B,IAAI;YACA,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,EAAE;gBAChE,EAAE,EAAE,IAAI;gBACR,aAAa,EAAE,iBAAiB,CAAC,IAAI;gBACrC,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;aACX,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEhC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,QAAgB;gBACtC,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;aACvE,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,EAAE;gBAClB,IACI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI;oBAC7B,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;qBACxD,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI;wBAC5B,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;wBACnD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,YAAY;wBACzC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,EAC/C;oBACA,OAAO,IAAI,CAAC;iBACb;gBAED,OAAO,KAAK,CAAC;aAChB,CAAC,CAAC;YAEH,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SACpC;QAAC,OAAO,CAAC,EAAE,GAAE;KACjB;IAED,eAAe,CAAC,KAAa;QACzB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;KACtC;IAED,qBAAqB,CAAC,WAAmB;QACrC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;KAClD;IAED,YAAY,CAAC,IAAY;QACrB,IAAI,CAAC,UAAU,CAAC;YACZ,GAAG,EAAE,WAAW;YAChB,IAAI;SACP,CAAC,CAAC;KACN;IAED,eAAe;QACb,IAAI,CAAC,cAAc,CAAC,EAAE,IAAI,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,CAAC;KACnE;IAED,SAAS,CAAC,OAAe;QACrB,IAAI,CAAC,UAAU,CAAC;YACZ,GAAG,EAAE,QAAQ;YACb,OAAO;SACV,CAAC,CAAC;KACN;IAED,YAAY,CAAC,EAAa;QACtB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAY;YACjC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACnD,CAAC,CAAC;KACN;IAED,OAAO,CAAC,IAAU;QACd,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5C,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACpC;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE;YACxD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SAChD;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE;YACxC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;YAC5C,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/C;QAED,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,EAAE;YAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/B;KACJ;;8GA9JQ,iBAAiB,2FAMd,QAAQ;kHANX,iBAAiB;2FAAjB,iBAAiB;kBAD7B,UAAU;;;8BAOF,MAAM;+BAAC,QAAQ;;;;MCxCX,eAAe;IACxB,YAA6B,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;KAAI;IAErE,WAAW,CACP,IAA4B,EAC5B,KAA0B;QAE1B,MAAM,QAAQ,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAE3F,IAAI,QAAQ,EAAE;YACV,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC/B,SAAS;iBACZ;gBAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAE5B,IAAI,GAAG,KAAK,OAAO,EAAE;oBACjB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;iBAC1C;qBAAM,IAAI,GAAG,KAAK,MAAM,EAAE;oBACvB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAQ;wBACnB,IAAI,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE;4BACnC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;yBAC5D;qBACJ,CAAC,CAAC;iBACN;qBAAM,IAAI,GAAG,KAAK,OAAO,EAAE;oBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAoB;wBAC/B,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;qBAC3C,CAAC,CAAC;iBACN;aACJ;SACJ;QAED,OAAO,IAAI,CAAC;KACf;IAED,gBAAgB,CACZ,IAA4B,EAC5B,KAA0B;QAE1B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;KACxC;IAED,aAAa,CACT,UAAa,EACb,OAA+B;QAE/B,MAAM,QAAQ,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvG,IAAI,QAAQ,EAAE;YACV,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBACxB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;oBAC/B,SAAS;iBACZ;gBAED,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAE5B,IAAI,GAAG,KAAK,OAAO,EAAE;oBACjB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;iBACvC;qBAAM,IAAI,GAAG,KAAK,MAAM,EAAE;oBACvB,KAAK,CAAC,OAAO,CAAC,CAAC,GAAQ;wBACnB,IAAI,MAAM,IAAI,GAAG,IAAI,SAAS,IAAI,GAAG,EAAE;4BACnC,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;yBAC9D;qBACJ,CAAC,CAAC;iBACN;qBAAM,IAAI,GAAG,KAAK,OAAO,EAAE;oBACxB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAoB;wBAC/B,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAAE;4BACpC,IACI,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI;gCAC7B,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,IAAI;iCACxC,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI;oCAC5B,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,GAAG;oCACnC,IAAI,CAAC,GAAG,KAAK,YAAY;oCACzB,IAAI,CAAC,GAAG,KAAK,WAAW,CAAC,EAC/B;gCACA,OAAO,IAAI,CAAC;6BACb;4BAED,OAAO,KAAK,CAAC;yBAChB,CAAC,CAAC;qBACN,CAAC,CAAC;iBACN;aACJ;SACJ;QAED,OAAO,IAAI,CAAC;KACf;;4GAvFQ,eAAe;gHAAf,eAAe;2FAAf,eAAe;kBAD3B,UAAU;;;MCKE,gBAAgB;IACzB,OAAO,OAAO;QACV,OAAO;YACH,QAAQ,EAAE,gBAAgB;YAC1B,SAAS,EAAE;gBACP,iBAAiB;gBACjB,eAAe;aAClB;SACJ,CAAC;KACL;;6GATQ,gBAAgB;8GAAhB,gBAAgB,YAHrB,YAAY;8GAGP,gBAAgB,YAJhB;YACL,YAAY;SACf;2FAEQ,gBAAgB;kBAL5B,QAAQ;mBAAC;oBACN,OAAO,EAAE;wBACL,YAAY;qBACf;iBACJ;;;ACVD;;;;;;"}