{"version":3,"file":"alfresco-aca-shared.mjs","sources":["../../../../projects/aca-shared/src/lib/adf-extensions/extensions-data-loader.guard.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-content.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-error.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout-header.component.ts","../../../../projects/aca-shared/src/lib/services/content-api.service.ts","../../../../projects/aca-shared/src/lib/services/router.extension.service.ts","../../../../projects/aca-shared/src/lib/components/open-in-app/open-in-app.component.ts","../../../../projects/aca-shared/src/lib/components/open-in-app/open-in-app.component.html","../../../../projects/aca-shared/src/lib/services/aca-mobile-app-switcher.service.ts","../../../../projects/aca-shared/src/lib/constants/mime-types.ts","../../../../projects/aca-shared/src/lib/services/app-settings.service.ts","../../../../projects/aca-shared/src/lib/services/user-profile.service.ts","../../../../projects/aca-shared/src/lib/services/app.service.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.component.ts","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.component.html","../../../../projects/aca-shared/src/lib/components/page-layout/page-layout.module.ts","../../../../projects/aca-shared/src/lib/components/locked-by/locked-by.component.ts","../../../../projects/aca-shared/src/lib/components/generic-error/generic-error.component.ts","../../../../projects/aca-shared/src/lib/components/generic-error/generic-error.component.html","../../../../projects/aca-shared/src/lib/services/node-permission.service.ts","../../../../projects/aca-shared/src/lib/services/app.extension.service.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-button/toolbar-button.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-button/toolbar-button.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu/toolbar-menu.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-menu/toolbar-menu.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-action/toolbar-action.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar-action/toolbar-action.component.html","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar.component.ts","../../../../projects/aca-shared/src/lib/components/toolbar/toolbar.component.html","../../../../projects/aca-shared/src/lib/components/info-drawer/info-drawer.component.ts","../../../../projects/aca-shared/src/lib/components/info-drawer/info-drawer.component.html","../../../../projects/aca-shared/src/lib/components/document-base-page/document-base-page.service.ts","../../../../projects/aca-shared/src/lib/utils/node.utils.ts","../../../../projects/aca-shared/src/lib/services/auto-download.service.ts","../../../../projects/aca-shared/src/lib/services/navigation-history.service.ts","../../../../projects/aca-shared/src/lib/components/document-base-page/document-base-page.component.ts","../../../../projects/aca-shared/src/lib/constants/index.ts","../../../../projects/aca-shared/src/lib/directives/contextmenu/contextmenu.directive.ts","../../../../projects/aca-shared/src/lib/directives/pagination.directive.ts","../../../../projects/aca-shared/src/lib/models/types.ts","../../../../projects/aca-shared/src/lib/models/viewer.rules.ts","../../../../projects/aca-shared/src/lib/routing/shared.guard.ts","../../../../projects/aca-shared/src/lib/routing/plugin-enabled.guard.ts","../../../../projects/aca-shared/src/lib/services/app-hook.service.ts","../../../../projects/aca-shared/src/lib/testing/lib-testing-module.ts","../../../../projects/aca-shared/src/public-api.ts","../../../../projects/aca-shared/src/alfresco-aca-shared.ts"],"sourcesContent":["/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { InjectionToken, inject } from '@angular/core';\nimport { ActivatedRouteSnapshot, CanActivateFn } from '@angular/router';\nimport { Observable, forkJoin, of } from 'rxjs';\nimport { tap, map, catchError } from 'rxjs/operators';\n\nexport type ExtensionLoaderCallback = (route: ActivatedRouteSnapshot) => Observable<boolean>;\n\nexport const DefaultExtensionLoaderFactory = () => [];\n\nexport const EXTENSION_DATA_LOADERS = new InjectionToken<ExtensionLoaderCallback[]>('EXTENSION_DATA_LOADERS', {\n  providedIn: 'root',\n  factory: DefaultExtensionLoaderFactory\n});\n\nlet invoked = false;\n\nexport const ExtensionsDataLoaderGuard: CanActivateFn = (route: ActivatedRouteSnapshot): Observable<boolean> => {\n  const extensionDataLoaders = inject(EXTENSION_DATA_LOADERS);\n  if (!invoked) {\n    if (!extensionDataLoaders.length) {\n      invoked = true;\n      return of(true);\n    }\n\n    const dataLoaderCallbacks = extensionDataLoaders.map((callback) => callback(route));\n\n    // Undocumented forkJoin behaviour/bug:\n    // https://github.com/ReactiveX/rxjs/issues/3246\n    // So all callbacks need to emit before completion, otherwise forkJoin will short circuit\n    return forkJoin(...dataLoaderCallbacks).pipe(\n      map(() => true),\n      tap(() => (invoked = true)),\n      catchError((e) => {\n        // eslint-disable-next-line no-console\n        console.error('Some of the extension data loader guards has been errored.');\n        // eslint-disable-next-line no-console\n        console.error(e);\n        return of(true);\n      })\n    );\n  } else {\n    return of(true);\n  }\n};\n\nexport const resetInvoked = () => {\n  invoked = false;\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, HostBinding, Input, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-content` CSS selector instead\n@Component({\n  standalone: true,\n  selector: 'aca-page-layout-content',\n  template: `<ng-content />`,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'aca-page-layout-content' }\n})\nexport class PageLayoutContentComponent {\n  @Input()\n  @HostBinding('class.aca-scrollable')\n  scrollable = false;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-error` selectors instead\n@Component({\n  standalone: true,\n  selector: 'aca-page-layout-error',\n  template: `<ng-content />`,\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'aca-page-layout-error' }\n})\nexport class PageLayoutErrorComponent {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\n\n// @deprecated Use `.aca-page-layout-header` CSS selector instead\n@Component({\n  standalone: true,\n  selector: 'aca-page-layout-header',\n  template: '<ng-content />',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'aca-page-layout-header' }\n})\nexport class PageLayoutHeaderComponent {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { UserPreferencesService } from '@alfresco/adf-core';\nimport { AlfrescoApiService } from '@alfresco/adf-content-services';\nimport { Observable, from } from 'rxjs';\nimport {\n  NodePaging,\n  Node,\n  DeletedNodesPaging,\n  PersonEntry,\n  NodeEntry,\n  DiscoveryEntry,\n  FavoritePaging,\n  SharedLinkPaging,\n  SearchRequest,\n  ResultSetPaging,\n  SiteBodyCreate,\n  SiteEntry,\n  FavoriteBodyCreate,\n  FavoriteEntry,\n  NodesApi,\n  TrashcanApi,\n  SharedlinksApi,\n  DiscoveryApi,\n  FavoritesApi,\n  ContentApi,\n  SitesApi,\n  SearchApi,\n  PeopleApi,\n  VersionsApi,\n  DirectAccessUrlEntry,\n  VersionPaging,\n  LazyApi\n} from '@alfresco/js-api';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ContentApiService {\n  private readonly api = inject(AlfrescoApiService);\n  private readonly preferences = inject(UserPreferencesService);\n\n  @LazyApi((self: ContentApiService) => new NodesApi(self.api.getInstance()))\n  declare nodesApi: NodesApi;\n\n  @LazyApi((self: ContentApiService) => new TrashcanApi(self.api.getInstance()))\n  declare trashcanApi: TrashcanApi;\n\n  @LazyApi((self: ContentApiService) => new SharedlinksApi(self.api.getInstance()))\n  declare sharedLinksApi: SharedlinksApi;\n\n  @LazyApi((self: ContentApiService) => new DiscoveryApi(self.api.getInstance()))\n  declare discoveryApi: DiscoveryApi;\n\n  @LazyApi((self: ContentApiService) => new FavoritesApi(self.api.getInstance()))\n  declare favoritesApi: FavoritesApi;\n\n  @LazyApi((self: ContentApiService) => new ContentApi(self.api.getInstance()))\n  declare contentApi: ContentApi;\n\n  @LazyApi((self: ContentApiService) => new SitesApi(self.api.getInstance()))\n  declare sitesApi: SitesApi;\n\n  @LazyApi((self: ContentApiService) => new SearchApi(self.api.getInstance()))\n  declare searchApi: SearchApi;\n\n  @LazyApi((self: ContentApiService) => new PeopleApi(self.api.getInstance()))\n  declare peopleApi: PeopleApi;\n\n  @LazyApi((self: ContentApiService) => new VersionsApi(self.api.getInstance()))\n  declare versionsApi: VersionsApi;\n\n  /**\n   * Moves a node to the trashcan.\n   *\n   * @param nodeId ID of the target node\n   * @param options Optional parameters supported by JS-API\n   * @returns Empty result that notifies when the deletion is complete\n   */\n  deleteNode(nodeId: string, options: { permanent?: boolean } = {}): Observable<void> {\n    return from(this.nodesApi.deleteNode(nodeId, options));\n  }\n\n  /**\n   * Gets the stored information about a node.\n   *\n   * @param nodeId ID of the target node\n   * @param options Optional parameters supported by JS-API\n   * @returns Node information\n   */\n  getNode(nodeId: string, options: any = {}): Observable<NodeEntry> {\n    const defaults = {\n      include: ['path', 'properties', 'allowableOperations', 'permissions', 'definition']\n    };\n    const queryOptions = Object.assign(defaults, options);\n\n    return from(this.nodesApi.getNode(nodeId, queryOptions));\n  }\n\n  getNodeInfo(nodeId: string, options?: any): Observable<Node> {\n    const defaults = {\n      include: ['isFavorite', 'allowableOperations', 'path', 'definition']\n    };\n    const queryOptions = Object.assign(defaults, options || {});\n\n    return from(\n      new Promise<Node>((resolve, reject) => {\n        this.nodesApi.getNode(nodeId, queryOptions).then(\n          (nodeEntry: NodeEntry) => {\n            resolve(nodeEntry.entry);\n          },\n          (error) => {\n            reject(error);\n          }\n        );\n      })\n    );\n  }\n\n  /**\n   * Gets the items contained in a folder node.\n   *\n   * @param nodeId ID of the target node\n   * @param options Optional parameters supported by JS-API\n   * @returns List of child items from the folder\n   */\n  getNodeChildren(nodeId: string, options: any = {}): Observable<NodePaging> {\n    const defaults = {\n      maxItems: this.preferences.paginationSize,\n      skipCount: 0,\n      include: ['isLocked', 'path', 'properties', 'allowableOperations', 'permissions']\n    };\n    const queryOptions = Object.assign(defaults, options);\n\n    return from(this.nodesApi.listNodeChildren(nodeId, queryOptions));\n  }\n\n  deleteSharedLink(linkId: string): Observable<any> {\n    return from(this.sharedLinksApi.deleteSharedLink(linkId));\n  }\n\n  getDeletedNodes(options: any = {}): Observable<DeletedNodesPaging> {\n    const defaults = {\n      include: ['path']\n    };\n    const queryOptions = Object.assign(defaults, options);\n\n    return from(this.trashcanApi.listDeletedNodes(queryOptions));\n  }\n\n  restoreNode(nodeId: string): Observable<NodeEntry> {\n    return from(this.trashcanApi.restoreDeletedNode(nodeId));\n  }\n\n  purgeDeletedNode(nodeId: string): Observable<any> {\n    return from(this.trashcanApi.deleteDeletedNode(nodeId));\n  }\n\n  /**\n   * Gets information about a user identified by their username.\n   *\n   * @param personId ID of the target user\n   * @param options Api options\n   * @returns User information\n   */\n  getPerson(personId: string, options?: { fields?: Array<string> }): Observable<PersonEntry> {\n    return from(this.peopleApi.getPerson(personId, options));\n  }\n\n  /**\n   * Copy a node to destination node\n   *\n   * @param nodeId The id of the node to be copied\n   * @param targetParentId The id of the folder-node where the node have to be copied to\n   * @param name The new name for the copy that would be added on the destination folder\n   * @param opts Api options\n   */\n  copyNode(nodeId: string, targetParentId: string, name?: string, opts?: { include?: Array<string>; fields?: Array<string> }): Observable<NodeEntry> {\n    return from(this.nodesApi.copyNode(nodeId, { targetParentId, name }, opts));\n  }\n\n  /**\n   * Gets product information for Content Services.\n   *\n   * @returns ProductVersionModel containing product details\n   */\n  getRepositoryInformation(): Observable<DiscoveryEntry> {\n    return from(this.discoveryApi.getRepositoryInformation());\n  }\n\n  getFavorites(\n    personId: string,\n    opts?: {\n      skipCount?: number;\n      maxItems?: number;\n      where?: string;\n      fields?: Array<string>;\n    }\n  ): Observable<FavoritePaging> {\n    return from(this.favoritesApi.listFavorites(personId, opts));\n  }\n\n  getFavoriteLibraries(personId: string = '-me-', opts?: any): Observable<FavoritePaging> {\n    return this.getFavorites(personId, {\n      ...opts,\n      where: '(EXISTS(target/site))'\n    }).pipe(\n      map((response: FavoritePaging) => ({\n        list: {\n          entries: response.list.entries.map(({ entry }: any) => {\n            entry.target.site.createdAt = entry.createdAt;\n            return {\n              entry: entry.target.site\n            };\n          }),\n          pagination: response.list.pagination\n        }\n      }))\n    );\n  }\n\n  findSharedLinks(opts?: any): Observable<SharedLinkPaging> {\n    return from(this.sharedLinksApi.listSharedLinks(opts));\n  }\n\n  getSharedLinkContent(sharedId: string, attachment?: boolean): string {\n    return this.contentApi.getSharedLinkContentUrl(sharedId, attachment);\n  }\n\n  search(request: SearchRequest): Observable<ResultSetPaging> {\n    return from(this.searchApi.search(request));\n  }\n\n  getContentUrl(nodeId: string, attachment?: boolean): string {\n    return this.contentApi.getContentUrl(nodeId, attachment);\n  }\n\n  getVersionContentUrl(nodeId: string, versionId: string, attachment?: boolean): string {\n    return this.contentApi.getVersionContentUrl(nodeId, versionId, attachment);\n  }\n\n  deleteSite(siteId?: string, opts?: { permanent?: boolean }): Observable<any> {\n    return from(this.sitesApi.deleteSite(siteId, opts));\n  }\n\n  leaveSite(siteId?: string): Observable<any> {\n    return from(this.sitesApi.deleteSiteMembership(siteId, '-me-'));\n  }\n\n  createSite(\n    siteBody: SiteBodyCreate,\n    opts?: {\n      fields?: Array<string>;\n      skipConfiguration?: boolean;\n      skipAddToFavorites?: boolean;\n    }\n  ): Observable<SiteEntry> {\n    return from(this.sitesApi.createSite(siteBody, opts));\n  }\n\n  getSite(siteId?: string, opts?: { relations?: Array<string>; fields?: Array<string> }): Observable<SiteEntry> {\n    return from(this.sitesApi.getSite(siteId, opts));\n  }\n\n  updateLibrary(siteId: string, siteBody: SiteBodyCreate): Observable<SiteEntry> {\n    return from(this.sitesApi.updateSite(siteId, siteBody));\n  }\n\n  addFavorite(nodes: Array<NodeEntry>): Observable<FavoriteEntry> {\n    const payload: FavoriteBodyCreate[] = nodes.map((node) => {\n      const { isFolder, nodeId, id } = node.entry as any;\n      const siteId = node.entry['guid'];\n      const type = siteId ? 'site' : isFolder ? 'folder' : 'file';\n      const guid = siteId || nodeId || id;\n\n      return {\n        target: {\n          [type]: {\n            guid\n          }\n        }\n      };\n    });\n\n    return from(this.favoritesApi.createFavorite('-me-', payload as any));\n  }\n\n  removeFavorite(nodes: Array<NodeEntry>): Observable<any> {\n    return from(\n      Promise.all(\n        nodes.map((node: any) => {\n          const id = node.entry.nodeId || node.entry.id;\n          return this.favoritesApi.deleteFavorite('-me-', id);\n        })\n      )\n    );\n  }\n\n  unlockNode(nodeId: string, opts?: any): Promise<NodeEntry> {\n    return this.nodesApi.unlockNode(nodeId, opts);\n  }\n\n  getNodeVersions(nodeId: string, opts?: any): Observable<VersionPaging> {\n    return from(this.versionsApi.listVersionHistory(nodeId, opts));\n  }\n\n  requestNodeDirectAccessUrl(nodeId: string): Observable<DirectAccessUrlEntry> {\n    return from(this.nodesApi.requestDirectAccessUrl(nodeId));\n  }\n\n  requestVersionDirectAccessUrl(nodeId: string, versionId: string): Observable<DirectAccessUrlEntry> {\n    return from(this.versionsApi.requestDirectAccessUrl(nodeId, versionId));\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, Type, inject } from '@angular/core';\nimport { ExtensionService } from '@alfresco/adf-extensions';\nimport { ExtensionRoute } from '../models/types';\nimport { Router } from '@angular/router';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RouterExtensionService {\n  private readonly router = inject(Router);\n  protected readonly extensions = inject(ExtensionService);\n\n  defaults = {\n    layout: 'app.layout.main',\n    auth: ['app.auth', 'app.extensions.dataLoaderGuard']\n  };\n\n  mapExtensionRoutes() {\n    const routesWithoutParent = [];\n    this.getApplicationRoutes().forEach((extensionRoute: ExtensionRoute) => {\n      if (this.extensionRouteHasChild(extensionRoute)) {\n        const parentRoute = this.findRoute(extensionRoute.parentRoute);\n        if (parentRoute) {\n          this.convertExtensionRouteToRoute(extensionRoute);\n          parentRoute.children.unshift(extensionRoute);\n        }\n      } else {\n        routesWithoutParent.push(extensionRoute);\n      }\n    });\n\n    this.router.config.unshift(...routesWithoutParent);\n  }\n\n  public getApplicationRoutes(): Array<ExtensionRoute> {\n    return this.extensions.routes.map((route) => {\n      const guards = this.extensions.getAuthGuards(route.auth && route.auth.length > 0 ? route.auth : this.defaults.auth);\n\n      return {\n        path: route.path,\n        component: this.getComponentById(route.layout ?? this.defaults.layout),\n        canActivateChild: guards,\n        canActivate: guards,\n        parentRoute: route.parentRoute,\n        children: [\n          ...(route['children']\n            ? route['children'].map(({ path, component, outlet, data }) => ({\n                path,\n                outlet,\n                data,\n                component: this.getComponentById(component)\n              }))\n            : []),\n          {\n            path: '',\n            component: this.getComponentById(route.component),\n            data: route.data\n          }\n        ]\n      };\n    });\n  }\n\n  private getComponentById(id: string): Type<unknown> {\n    return this.extensions.getComponentById(id);\n  }\n\n  private extensionRouteHasChild(route: ExtensionRoute): boolean {\n    return route.parentRoute !== undefined;\n  }\n\n  private convertExtensionRouteToRoute(extensionRoute: ExtensionRoute) {\n    delete extensionRoute.parentRoute;\n    delete extensionRoute.component;\n  }\n\n  private findRoute(parentRoute) {\n    const routeIndex = this.router.config.findIndex((route) => route.path === parentRoute);\n\n    return this.router.config[routeIndex];\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { A11yModule } from '@angular/cdk/a11y';\n\nexport interface OpenInAppDialogOptions {\n  redirectUrl: string;\n  appStoreUrl: string;\n}\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule, A11yModule, MatDialogModule],\n  selector: 'aca-open-in-app',\n  templateUrl: './open-in-app.component.html',\n  styleUrls: ['./open-in-app.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class OpenInAppComponent {\n  data = inject<OpenInAppDialogOptions>(MAT_DIALOG_DATA);\n  private readonly dialog = inject<MatDialogRef<OpenInAppComponent>>(MatDialogRef);\n\n  private readonly redirectUrl: string;\n  public appStoreUrl: string;\n  public window: Window & typeof globalThis = window;\n\n  constructor() {\n    const data = this.data;\n\n    if (data) {\n      this.redirectUrl = data.redirectUrl;\n      this.appStoreUrl = data.appStoreUrl;\n    }\n  }\n\n  openInApp(): void {\n    this.window.location.href = this.redirectUrl;\n  }\n\n  downloadIosApp(): void {\n    this.window.location.href = this.appStoreUrl;\n  }\n\n  onCloseDialog(): void {\n    const time: number = new Date().getTime();\n    sessionStorage.setItem('mobile_notification_expires_in', time.toString());\n    this.dialog.close();\n  }\n}\n","<div class=\"aca-open-in-app\">\n  <div class=\"aca-mobile-application-container\">\n    <span>{{ 'APP.DIALOGS.MOBILE_APP.OPEN_ALFRESCO_MOBILE_APP' | translate }}</span>\n    <button mat-icon-button mat-dialog-close class=\"aca-cross-button\" (click)=\"onCloseDialog()\" >\n      <mat-icon class=\"aca-cross-button-icon\">close</mat-icon>\n    </button>\n  </div>\n\n  <div class=\"aca-open-in-app-button-container\">\n    <button mat-button (click)=\"openInApp()\"\n            data-automation-id=\"open-in-app-button\"\n            class=\"aca-open-in-app-button-container\" cdkFocusInitial>\n      <span>{{ 'APP.DIALOGS.MOBILE_APP.MOBILE_APP_BUTTON_LABEL' | translate }}</span>\n    </button>\n  </div>\n\n  <div class=\"aca-download-app-container\" *ngIf=\"appStoreUrl\">\n    <button mat-button data-automation-id=\"download-app-button\" class=\"aca-download-app-container-button\" (click)=\"downloadIosApp()\">\n      <span>{{ 'APP.DIALOGS.MOBILE_APP.DOWNLOAD_APP_BUTTON_LABEL' | translate }}</span>\n    </button>\n  </div>\n</div>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AppConfigService } from '@alfresco/adf-core';\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { OpenInAppComponent } from '../components/open-in-app/open-in-app.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AcaMobileAppSwitcherService {\n  public redirectUrl: string;\n  private dialogRef: MatDialogRef<OpenInAppComponent>;\n  private readonly config = inject(AppConfigService);\n  private readonly dialog = inject(MatDialog);\n\n  get appStoreUrl(): string {\n    const defaultValue = 'https://apps.apple.com/us/app/alfresco-mobile-workspace/id1514434480';\n    return this.config.get<string>('mobileAppSwitch.appStoreUrl', defaultValue);\n  }\n\n  get sessionTimeout(): number {\n    return this.config.get<number>('mobileAppSwitch.sessionTimeout', 12);\n  }\n\n  getIPhoneRedirectUrl(url: string): string {\n    const prefix = this.config.get<string>('mobileAppSwitch.iphoneUrl', 'iosamw://');\n    return prefix + url;\n  }\n\n  getAndroidRedirectUrl(url: string): string {\n    const prefix = this.config.get<string>('mobileAppSwitch.androidUrlPart1', 'intent:///');\n    const suffix = this.config.get<string>('mobileAppSwitch.androidUrlPart2', '#Intent;scheme=androidamw;package=com.alfresco.content.app;end');\n    return prefix + url + suffix;\n  }\n\n  resolveExistenceOfDialog(): void {\n    const url: string = this.getCurrentUrl();\n    const queryParams: string = url.split('?')[1];\n    let queryParamsList = [];\n    let hideBanner = false;\n    if (queryParams !== null && queryParams !== undefined) {\n      queryParamsList = queryParams.split('&');\n      hideBanner = queryParamsList.some((param) => param.split('=')[0] === 'mobileapps' && param.split('=')[1] === 'true');\n    }\n    if (!hideBanner) {\n      this.verifySessionExistsForDialog();\n    }\n  }\n\n  verifySessionExistsForDialog(): void {\n    const sessionTime: string = sessionStorage.getItem('mobile_notification_expires_in');\n    if (sessionTime !== null) {\n      const currentTime: number = new Date().getTime();\n      const sessionConvertedTime: number = parseFloat(sessionTime);\n      const timeDifference: number = (currentTime - sessionConvertedTime) / (1000 * 60 * 60);\n\n      if (timeDifference > this.sessionTimeout) {\n        this.clearSessionExpireTime();\n        this.identifyBrowserAndSetRedirectURL();\n      }\n    } else {\n      this.identifyBrowserAndSetRedirectURL();\n    }\n  }\n\n  identifyBrowserAndSetRedirectURL(): void {\n    const ua: string = navigator.userAgent.toLowerCase();\n    const isAndroid: boolean = ua.indexOf('android') > -1;\n    const isIPadInSafari = /Macintosh/i.test(ua) && navigator.maxTouchPoints && navigator.maxTouchPoints > 1;\n    const isIOS: boolean = ua.indexOf('iphone') > -1 || ua.indexOf('ipad') > -1 || ua.indexOf('ipod') > -1 || isIPadInSafari;\n    const currentUrl: string = this.getCurrentUrl();\n\n    if (isIOS === true) {\n      this.redirectUrl = this.getIPhoneRedirectUrl(currentUrl);\n    } else if (isAndroid === true) {\n      this.redirectUrl = this.getAndroidRedirectUrl(currentUrl);\n    }\n\n    if (this.redirectUrl !== undefined && this.redirectUrl !== null) {\n      this.openDialog(this.redirectUrl, this.appStoreUrl);\n    }\n  }\n\n  openDialog(redirectUrl: string, appStoreUrl?: string): void {\n    if (!this.dialogRef) {\n      this.dialogRef = this.dialog.open(OpenInAppComponent, {\n        data: {\n          redirectUrl,\n          appStoreUrl\n        },\n        hasBackdrop: false,\n        width: '100%',\n        role: 'dialog',\n        position: { bottom: '0' }\n      });\n    }\n  }\n\n  clearSessionExpireTime(): void {\n    sessionStorage.removeItem('mobile_notification_expires_in');\n  }\n\n  getCurrentUrl(): string {\n    return window.location.href;\n  }\n\n  closeDialog(): void {\n    if (this.dialogRef) {\n      this.dialog.closeAll();\n      this.dialogRef = null;\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\n/* eslint-disable @cspell/spellchecker */\n\nexport interface AlfrescoMimeType {\n  label: string;\n  value: string;\n}\n\nexport const DefaultMimeTypes: AlfrescoMimeType[] = [\n  { value: 'video/3gpp', label: '3G Video' },\n  { value: 'video/3gpp2', label: '3G2 Video' },\n  { value: 'application/vnd.alfresco.ai.features.v1+json', label: 'AI-Features' },\n  { value: 'application/vnd.alfresco.ai.labels.v1+json', label: 'AI-Labels' },\n  { value: 'application/vnd.alfresco.ai.pii.entities.v1+json', label: 'AI-PII-Entities' },\n  { value: 'application/vnd.alfresco.ai.speech-to-text.v1+json', label: 'AI-SpeechToText' },\n  { value: 'application/vnd.alfresco.ai.textract.v1+json', label: 'AI-Textract' },\n  { value: 'audio/x-aiff', label: 'AIFF Audio' },\n  { value: 'application/vnd.adobe.air-application-installer-package+zip', label: 'Adobe AIR' },\n  { value: 'application/vnd.adobe.xdp+xml', label: 'Adobe Acrobat XML Data Package' },\n  { value: 'application/vnd.adobe.aftereffects.project', label: 'Adobe AfterEffects Project' },\n  { value: 'application/vnd.adobe.aftereffects.template', label: 'Adobe AfterEffects Template' },\n  { value: 'image/x-raw-adobe', label: 'Adobe Digital Negative Image' },\n  { value: 'application/x-zip', label: 'Adobe Flex Project File' },\n  { value: 'application/framemaker', label: 'Adobe FrameMaker' },\n  { value: 'application/illustrator', label: 'Adobe Illustrator File' },\n  { value: 'application/x-indesign', label: 'Adobe InDesign Document' },\n  { value: 'application/pdf', label: 'Adobe PDF Document' },\n  { value: 'application/pagemaker', label: 'Adobe PageMaker' },\n  { value: 'image/vnd.adobe.photoshop', label: 'Adobe Photoshop' },\n  { value: 'image/vnd.adobe.premiere', label: 'Adobe Premiere' },\n  { value: 'audio/vnd.adobe.soundbooth', label: 'Adobe SoundBooth' },\n  { value: 'application/acp', label: 'Alfresco Content Package' },\n  { value: 'application/vnd.android.package-archive', label: 'Android Package' },\n  { value: 'image/x-portable-anymap', label: 'Anymap Image' },\n  { value: 'image/icns', label: 'Apple Icon' },\n  { value: 'application/vnd.apple.keynote', label: 'Apple iWork Keynote' },\n  { value: 'application/vnd.apple.numbers', label: 'Apple iWork Numbers' },\n  { value: 'application/vnd.apple.pages', label: 'Apple iWork Pages' },\n  { value: 'image/vnd.dwg', label: 'AutoCAD Drawing' },\n  { value: 'image/x-dwt', label: 'AutoCAD Template' },\n  { value: 'audio/basic', label: 'Basic Audio' },\n  { value: 'application/x-dosexec', label: 'Binary File' },\n  { value: 'application/octet-stream', label: 'Binary File (Octet Stream)' },\n  { value: 'image/bmp', label: 'Bitmap Image' },\n  { value: 'image/cgm', label: 'CGM Image' },\n  { value: 'image/x-raw-canon', label: 'Canon RAW Image' },\n  { value: 'text/csv', label: 'Comma Separated Values (CSV)' },\n  { value: 'application/dita+xml', label: 'DITA' },\n  { value: 'message/rfc822', label: 'EMail' },\n  { value: 'application/eps', label: 'EPS Type PostScript' },\n  { value: 'audio/x-flac', label: 'FLAC Audio' },\n  { value: 'application/x-fla', label: 'Flash Source' },\n  { value: 'video/x-flv', label: 'Flash Video' },\n  { value: 'image/x-raw-fuji', label: 'Fuji RAW Image' },\n  { value: 'image/gif', label: 'GIF Image' },\n  { value: 'application/x-gzip', label: 'GZIP' },\n  { value: 'application/x-gtar', label: 'GZIP Tarball' },\n  { value: 'image/x-portable-graymap', label: 'Greymap Image' },\n  { value: 'text/html', label: 'HTML' },\n  { value: 'application/vnd.oasis.opendocument.text-web', label: 'HTML Document Template' },\n  { value: 'image/x-raw-hasselblad', label: 'Hasselblad RAW Image' },\n  { value: 'image/ief', label: 'IEF Image' },\n  { value: 'image/jp2', label: 'JPEG 2000 Image' },\n  { value: 'image/jpeg', label: 'JPEG Image' },\n  { value: 'application/json', label: 'JSON' },\n  { value: 'application/java-archive', label: 'Java Archive' },\n  { value: 'application/java', label: 'Java Class' },\n  { value: 'text/x-jsp', label: 'Java Server Page' },\n  { value: 'text/x-java-source', label: 'Java Source File' },\n  { value: 'application/x-javascript', label: 'JavaScript' },\n  { value: 'image/x-raw-kodak', label: 'Kodak RAW Image' },\n  { value: 'application/x-latex', label: 'LaTeX' },\n  { value: 'image/x-raw-leica', label: 'Leica RAW Image' },\n  { value: 'audio/mpeg', label: 'MPEG Audio' },\n  { value: 'video/mp2t', label: 'MPEG Transport Stream' },\n  { value: 'video/mpeg', label: 'MPEG Video' },\n  { value: 'video/mpeg2', label: 'MPEG2 Video' },\n  { value: 'audio/mp4', label: 'MPEG4 Audio' },\n  { value: 'video/mp4', label: 'MPEG4 Video' },\n  { value: 'video/x-m4v', label: 'MPEG4 Video (m4v)' },\n  { value: 'video/x-ms-asf', label: 'MS ASF Streaming Video' },\n  { value: 'video/x-msvideo', label: 'MS Video' },\n  { value: 'audio/x-ms-wma', label: 'MS WMA Streaming Audio' },\n  { value: 'video/x-ms-wmv', label: 'MS WMV Streaming Video' },\n  { value: 'application/x-troff-man', label: 'Man Page' },\n  { value: 'text/x-markdown', label: 'Markdown' },\n  { value: 'text/mediawiki', label: 'MediaWiki Markup' },\n  { value: 'application/vnd.ms-excel', label: 'Microsoft Excel' },\n  { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', label: 'Microsoft Excel 2007' },\n  { value: 'application/vnd.ms-excel.addin.macroenabled.12', label: 'Microsoft Excel 2007 add-in' },\n  { value: 'application/vnd.ms-excel.sheet.binary.macroenabled.12', label: 'Microsoft Excel 2007 binary workbook' },\n  { value: 'application/vnd.ms-excel.sheet.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook' },\n  { value: 'application/vnd.ms-excel.template.macroenabled.12', label: 'Microsoft Excel 2007 macro-enabled workbook template' },\n  { value: 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', label: 'Microsoft Excel template 2007' },\n  { value: 'application/vnd.ms-outlook', label: 'Microsoft Outlook Message' },\n  { value: 'application/vnd.ms-powerpoint', label: 'Microsoft PowerPoint' },\n  { value: 'application/vnd.openxmlformats-officedocument.presentationml.presentation', label: 'Microsoft PowerPoint 2007' },\n  { value: 'application/vnd.ms-powerpoint.addin.macroenabled.12', label: 'Microsoft PowerPoint 2007 add-in' },\n  { value: 'application/vnd.ms-powerpoint.presentation.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation' },\n  { value: 'application/vnd.ms-powerpoint.template.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled presentation template' },\n  { value: 'application/vnd.ms-powerpoint.slide.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide' },\n  { value: 'application/vnd.ms-powerpoint.slideshow.macroenabled.12', label: 'Microsoft PowerPoint 2007 macro-enabled slide show' },\n  { value: 'application/vnd.openxmlformats-officedocument.presentationml.slide', label: 'Microsoft PowerPoint 2007 slide' },\n  { value: 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', label: 'Microsoft PowerPoint 2007 slide show' },\n  { value: 'application/vnd.openxmlformats-officedocument.presentationml.template', label: 'Microsoft PowerPoint 2007 template' },\n  { value: 'application/vnd.ms-project', label: 'Microsoft Project' },\n  { value: 'application/vnd.visio', label: 'Microsoft Visio' },\n  { value: 'application/vnd.visio2013', label: 'Microsoft Visio 2013' },\n  { value: 'application/vnd.ms-visio.drawing.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled drawing' },\n  { value: 'application/vnd.ms-visio.stencil.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled stencil' },\n  { value: 'application/vnd.ms-visio.template.macroenabled.main+xml', label: 'Microsoft Visio macro-enabled template' },\n  { value: 'application/vnd.ms-visio.stencil.main+xml', label: 'Microsoft Visio stencil' },\n  { value: 'application/vnd.ms-visio.template.main+xml', label: 'Microsoft Visio template' },\n  { value: 'application/msword', label: 'Microsoft Word' },\n  { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', label: 'Microsoft Word 2007' },\n  { value: 'application/vnd.ms-word.document.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document' },\n  { value: 'application/vnd.ms-word.template.macroenabled.12', label: 'Microsoft Word 2007 macro-enabled document template' },\n  { value: 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', label: 'Microsoft Word 2007 template' },\n  { value: 'image/x-raw-minolta', label: 'Minolta RAW Image' },\n  { value: 'image/x-raw-nikon', label: 'Nikon RAW Image' },\n  { value: 'audio/ogg', label: 'Ogg Audio' },\n  { value: 'application/ogg', label: 'Ogg Multiplex' },\n  { value: 'video/ogg', label: 'Ogg Video' },\n  { value: 'audio/vorbis', label: 'Ogg Vorbis Audio' },\n  { value: 'image/x-raw-olympus', label: 'Olympus RAW Image' },\n  { value: 'application/vnd.oasis.opendocument.chart', label: 'OpenDocument Chart' },\n  { value: 'application/vnd.oasis.opendocument.database', label: 'OpenDocument Database' },\n  { value: 'application/vnd.oasis.opendocument.graphics', label: 'OpenDocument Drawing' },\n  { value: 'application/vnd.oasis.opendocument.graphics-template', label: 'OpenDocument Drawing Template' },\n  { value: 'application/vnd.oasis.opendocument.formula', label: 'OpenDocument Formula' },\n  { value: 'application/vnd.oasis.opendocument.image', label: 'OpenDocument Image' },\n  { value: 'application/vnd.oasis.opendocument.text-master', label: 'OpenDocument Master Document' },\n  { value: 'application/vnd.oasis.opendocument.presentation', label: 'OpenDocument Presentation' },\n  { value: 'application/vnd.oasis.opendocument.presentation-template', label: 'OpenDocument Presentation Template' },\n  { value: 'application/vnd.oasis.opendocument.spreadsheet', label: 'OpenDocument Spreadsheet' },\n  { value: 'application/vnd.oasis.opendocument.spreadsheet-template', label: 'OpenDocument Spreadsheet Template' },\n  { value: 'application/vnd.oasis.opendocument.text', label: 'OpenDocument Text (OpenOffice 2.0)' },\n  { value: 'application/vnd.oasis.opendocument.text-template', label: 'OpenDocument Text Template' },\n  { value: 'application/vnd.sun.xml.calc', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0' },\n  { value: 'application/vnd.sun.xml.calc.template', label: 'OpenOffice 1.0/StarOffice6.0 Calc 6.0 Template' },\n  { value: 'application/vnd.sun.xml.draw', label: 'OpenOffice 1.0/StarOffice6.0 Draw 6.0' },\n  { value: 'application/vnd.sun.xml.impress', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0' },\n  { value: 'application/vnd.sun.xml.impress.template', label: 'OpenOffice 1.0/StarOffice6.0 Impress 6.0 Template' },\n  { value: 'application/vnd.sun.xml.writer', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0' },\n  { value: 'application/vnd.sun.xml.writer.template', label: 'OpenOffice 1.0/StarOffice6.0 Writer 6.0 Template' },\n  { value: 'image/png', label: 'PNG Image' },\n  { value: 'image/x-raw-panasonic', label: 'Panasonic RAW Image' },\n  { value: 'image/x-raw-pentax', label: 'Pentax RAW Image' },\n  { value: 'image/x-portable-pixmap', label: 'Pixmap Image' },\n  { value: 'text/plain', label: 'Plain Text' },\n  { value: 'image/x-portable-bitmap', label: 'Portable Bitmap' },\n  { value: 'application/postscript', label: 'PostScript' },\n  { value: 'application/remote-printing', label: 'Printer Text File' },\n  { value: 'video/quicktime', label: 'Quicktime Video' },\n  { value: 'video/x-rad-screenplay', label: 'RAD Screen Display' },\n  { value: 'application/x-rar-compressed', label: 'RAR Archive' },\n  { value: 'image/x-raw-red', label: 'RED RAW Image' },\n  { value: 'image/x-rgb', label: 'RGB Image' },\n  { value: 'application/rss+xml', label: 'RSS' },\n  { value: 'image/x-cmu-raster', label: 'Raster Image' },\n  { value: 'text/richtext', label: 'Rich Text' },\n  { value: 'application/rtf', label: 'Rich Text Format' },\n  { value: 'video/x-sgi-movie', label: 'SGI Video' },\n  { value: 'text/sgml', label: 'SGML (Human Readable)' },\n  { value: 'application/sgml', label: 'SGML (Machine Readable)' },\n  { value: 'image/svg+xml', label: 'Scalable Vector Graphics Image' },\n  { value: 'application/x-sh', label: 'Shell Script' },\n  { value: 'application/x-shockwave-flash', label: 'Shockwave Flash' },\n  { value: 'image/x-raw-sigma', label: 'Sigma RAW Image' },\n  { value: 'image/x-raw-sony', label: 'Sony RAW Image' },\n  { value: 'application/vnd.stardivision.chart', label: 'StarChart 5.x' },\n  { value: 'application/vnd.stardivision.calc', label: 'StarCalc 5.x' },\n  { value: 'application/vnd.stardivision.draw', label: 'StarDraw 5.x' },\n  { value: 'application/vnd.stardivision.impress', label: 'StarImpress 5.x' },\n  { value: 'application/vnd.stardivision.impress-packed', label: 'StarImpress Packed 5.x' },\n  { value: 'application/vnd.stardivision.math', label: 'StarMath 5.x' },\n  { value: 'application/vnd.stardivision.writer', label: 'StarWriter 5.x' },\n  { value: 'application/vnd.stardivision.writer-global', label: 'StarWriter 5.x global' },\n  { value: 'text/css', label: 'Style Sheet' },\n  { value: 'image/tiff', label: 'TIFF Image' },\n  { value: 'text/tab-separated-values', label: 'Tab Separated Values' },\n  { value: 'application/x-tar', label: 'Tarball' },\n  { value: 'application/x-tex', label: 'Tex' },\n  { value: 'application/x-texinfo', label: 'Tex Info' },\n  { value: 'x-world/x-vrml', label: 'VRML' },\n  { value: 'audio/x-wav', label: 'WAV Audio' },\n  { value: 'video/webm', label: 'WebM Video' },\n  { value: 'application/wordperfect', label: 'WordPerfect' },\n  { value: 'image/x-xbitmap', label: 'XBitmap Image' },\n  { value: 'application/xhtml+xml', label: 'XHTML' },\n  { value: 'text/xml', label: 'XML' },\n  { value: 'image/x-xpixmap', label: 'XPixmap Image' },\n  { value: 'image/x-xwindowdump', label: 'XWindow Dump' },\n  { value: 'application/x-compress', label: 'Z Compress' },\n  { value: 'application/zip', label: 'ZIP' },\n  { value: 'text/calendar', label: 'iCalendar File' }\n];\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { AppConfigService, CloseButtonPosition } from '@alfresco/adf-core';\nimport { AlfrescoMimeType, DefaultMimeTypes } from '../constants/mime-types';\n\n@Injectable({ providedIn: 'root' })\nexport class AppSettingsService {\n  private readonly appConfig = inject(AppConfigService);\n\n  /**\n   * Get the application copyright text from the app settings.\n   */\n  get appCopyright(): string {\n    return this.appConfig.get<string>('application.copyright', '');\n  }\n\n  /**\n   * Get the AOS (Alfresco Office Services) host URL from the app settings.\n   */\n  get aosHost(): string {\n    return this.appConfig.get<string>('aosHost');\n  }\n\n  /**\n   * Get the default landing page from the app settings.\n   * Default value: `/personal-files`.\n   */\n  get landingPage(): string {\n    return this.appConfig.get<string>('landingPage', '/personal-files');\n  }\n\n  /**\n   * Get the list of mime types from the app settings.\n   */\n  get mimeTypes(): AlfrescoMimeType[] {\n    return this.appConfig.get<AlfrescoMimeType[]>('mimeTypes', DefaultMimeTypes);\n  }\n\n  /**\n   * Get the application name from the app settings.\n   */\n  get appName(): string {\n    return this.appConfig.get<string>('application.name', 'Alfresco Content Application');\n  }\n\n  /**\n   * Get the application version from the app settings.\n   */\n  get appVersion(): string {\n    return this.appConfig.get<string>('application.version', '1.0.0');\n  }\n\n  /**\n   * Get the application logo URL from the app settings.\n   */\n  get appLogoUrl(): string {\n    return this.appConfig.get<string>('application.logo', 'assets/images/app-logo.svg');\n  }\n\n  /**\n   * Get the custom CSS stylesheet path from the app settings.\n   */\n  get customCssPath(): string {\n    return this.appConfig.get<string>('customCssPath', '');\n  }\n\n  /**\n   * Get the custom web font path from the app settings.\n   */\n  get webFontPath(): string {\n    return this.appConfig.get<string>('webFontPath', '');\n  }\n\n  /**\n   * Get the base share URL from the app settings.\n   */\n  get baseShareUrl(): string {\n    let result = this.appConfig.get<string>('baseShareUrl', '');\n    if (!result.endsWith('/')) {\n      result += '/';\n    }\n    return result;\n  }\n\n  /**\n   * Get the viewer close button position from the app settings.\n   */\n  get viewerCloseButtonPosition(): CloseButtonPosition {\n    return this.appConfig.get('viewer.closeButtonPosition', CloseButtonPosition.Right);\n  }\n\n  /**\n   * Get the viewer max retries from the app settings.\n   */\n  get viewerMaxRetries(): number {\n    return this.appConfig.get<number>('viewer.maxRetries', 1);\n  }\n\n  /**\n   * Enabled state of the comment feature for upload dialog\n   */\n  get uploadAllowComments(): boolean {\n    return this.appConfig.get<boolean>('adf-version-manager.allowComments', true);\n  }\n\n  /**\n   * Enabled state of the download feature for upload dialog\n   */\n  get uploadAllowDownload(): boolean {\n    return this.appConfig.get<boolean>('adf-version-manager.allowDownload', true);\n  }\n\n  /**\n   * Allow to view versions if true, disallow otherwise.\n   */\n  get versionManagerAllowViewVersions(): boolean {\n    return this.appConfig.get<boolean>('adf-version-manager.allowViewVersions', true);\n  }\n\n  /**\n   * Allow to delete versions if true, disallow otherwise.\n   */\n  get versionManagerAllowVersionDelete(): boolean {\n    return this.appConfig.get<boolean>('adf-version-manager.allowVersionDelete', true);\n  }\n\n  /**\n   * Allow to open actions menu when true, otherwise hides it.\n   */\n  get versionManagerShowActions(): boolean {\n    return this.appConfig.get<boolean>('adf-version-manager.showActions', true);\n  }\n\n  /**\n   * Gets the enablement of the file auto tryDownload feature from the app settings.\n   */\n  get autoDownloadEnabled(): boolean {\n    return this.appConfig.get<boolean>('viewer.enableFileAutoDownload', true);\n  }\n\n  /**\n   * Gets the file auto tryDownload size threshold in MB from the app settings.\n   */\n  get authDownloadThreshold(): number {\n    return this.appConfig.get<number>('viewer.fileAutoDownloadSizeThresholdInMB', 15);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { ProfileState } from '@alfresco/adf-extensions';\nimport { AlfrescoApiService, GroupService } from '@alfresco/adf-content-services';\nimport { BehaviorSubject } from 'rxjs';\nimport { PeopleApi, LazyApi } from '@alfresco/js-api';\n\n@Injectable({ providedIn: 'root' })\nexport class UserProfileService {\n  private readonly api = inject(AlfrescoApiService);\n  private readonly groupService = inject(GroupService);\n\n  @LazyApi((self: UserProfileService) => new PeopleApi(self.api.getInstance()))\n  declare private readonly peopleApi: PeopleApi;\n\n  private readonly userProfile = new BehaviorSubject<ProfileState>(null);\n  userProfile$ = this.userProfile.asObservable();\n\n  /**\n   * Load user profile.\n   */\n  async loadUserProfile(): Promise<ProfileState> {\n    const groupsEntries = await this.groupService.listAllGroupMembershipsForPerson('-me-', { maxItems: 250 });\n\n    const groups = [];\n    if (groupsEntries) {\n      groups.push(...groupsEntries.map((obj) => obj.entry));\n    }\n\n    const { entry: user } = await this.peopleApi.getPerson('-me-');\n\n    const id = user.id;\n    const firstName = user.firstName || '';\n    const lastName = user.lastName || '';\n    const userName = `${firstName} ${lastName}`;\n    const initials = [firstName[0], lastName[0]].join('');\n    const email = user.email;\n\n    const capabilities = user.capabilities;\n    const isAdmin = capabilities ? capabilities.isAdmin : true;\n\n    const profile: ProfileState = {\n      firstName,\n      lastName,\n      userName,\n      initials,\n      isAdmin,\n      id,\n      groups,\n      email\n    };\n\n    this.userProfile.next(profile);\n    return profile;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport {\n  AppConfigService,\n  AuthenticationService,\n  NotificationService,\n  PageTitleService,\n  StorageService,\n  UserPreferencesService\n} from '@alfresco/adf-core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport {\n  AlfrescoApiService,\n  FileUploadErrorEvent,\n  SearchQueryBuilderService,\n  SharedLinksApiService,\n  UploadService\n} from '@alfresco/adf-content-services';\nimport { OverlayContainer } from '@angular/cdk/overlay';\nimport { ActivatedRoute, ActivationEnd, NavigationStart, Router } from '@angular/router';\nimport { filter, map } from 'rxjs/operators';\nimport { AppStore, ResetSelectionAction, SetCurrentUrlAction, SetRepositoryInfoAction, SetUserProfileAction } from '@alfresco/aca-shared/store';\nimport { ContentApiService } from './content-api.service';\nimport { RouterExtensionService } from './router.extension.service';\nimport { Store } from '@ngrx/store';\nimport { DiscoveryEntry } from '@alfresco/js-api';\nimport { AcaMobileAppSwitcherService } from './aca-mobile-app-switcher.service';\nimport { ShellAppService } from '@alfresco/adf-core/shell';\nimport { AppSettingsService } from './app-settings.service';\nimport { UserProfileService } from './user-profile.service';\nimport { MatDialog } from '@angular/material/dialog';\n\n@Injectable({\n  providedIn: 'root'\n})\n// After moving shell to ADF to core, AppService will implement ShellAppService\nexport class AppService implements ShellAppService {\n  preferencesService = inject(UserPreferencesService);\n  private readonly authenticationService = inject(AuthenticationService);\n  private readonly store = inject<Store<AppStore>>(Store);\n  private readonly router = inject(Router);\n  private readonly activatedRoute = inject(ActivatedRoute);\n  private readonly config = inject(AppConfigService);\n  private readonly pageTitle = inject(PageTitleService);\n  private readonly alfrescoApiService = inject(AlfrescoApiService);\n  private readonly uploadService = inject(UploadService);\n  private readonly routerExtensionService = inject(RouterExtensionService);\n  private readonly contentApi = inject(ContentApiService);\n  private readonly sharedLinksApiService = inject(SharedLinksApiService);\n  private readonly overlayContainer = inject(OverlayContainer);\n  private readonly acaMobileAppSwitcherService = inject(AcaMobileAppSwitcherService);\n  private readonly appSettingsService = inject(AppSettingsService);\n  private readonly userProfileService = inject(UserProfileService);\n  private readonly storage = inject(StorageService);\n\n  private readonly notificationService = inject(NotificationService);\n  private readonly matDialog = inject(MatDialog);\n  private readonly ready: BehaviorSubject<boolean>;\n\n  ready$: Observable<boolean>;\n\n  private readonly pageHeading = new BehaviorSubject('');\n  /** @deprecated page title is updated automatically */\n  pageHeading$ = this.pageHeading.asObservable();\n\n  appNavNarMode$: Subject<'collapsed' | 'expanded'> = new BehaviorSubject('expanded');\n  toggleAppNavBar$ = new Subject<void>();\n\n  hideSidenavConditions = ['/preview/'];\n  minimizeSidenavConditions = [];\n\n  /**\n   * Whether `withCredentials` mode is enabled.\n   * Usually means that `Kerberos` mode is used.\n   */\n  get withCredentials(): boolean {\n    return this.config.get<boolean>('auth.withCredentials', false);\n  }\n\n  constructor() {\n    const searchQueryBuilderService = inject(SearchQueryBuilderService);\n    const acaMobileAppSwitcherService = this.acaMobileAppSwitcherService;\n\n    this.ready = new BehaviorSubject(this.authenticationService.isLoggedIn() || this.withCredentials);\n    this.ready$ = this.ready.asObservable();\n\n    this.authenticationService.onLogin.subscribe(() => {\n      this.ready.next(true);\n      this.preferencesService.setStoragePrefix(this.authenticationService.getUsername());\n    });\n\n    this.authenticationService.onLogout.subscribe(() => {\n      this.storage.removeItem(this.preferencesService.getPropertyKey('expandedSidenav'));\n      searchQueryBuilderService.resetToDefaults();\n      acaMobileAppSwitcherService.clearSessionExpireTime();\n      acaMobileAppSwitcherService.closeDialog();\n    });\n\n    this.router.events\n      .pipe(\n        filter((event) => event instanceof ActivationEnd && event.snapshot.children.length === 0),\n        map((event: ActivationEnd) => event.snapshot?.data?.title ?? '')\n      )\n      .subscribe((title) => {\n        this.pageHeading.next(title);\n        this.pageTitle.setTitle(title);\n      });\n  }\n\n  init(): void {\n    this.alfrescoApiService.getInstance().on('error', (error: { status: number; response: any }) => {\n      if (error.status === 401 && !this.alfrescoApiService.isExcludedErrorListener(error?.response?.req?.url)) {\n        if (!this.authenticationService.isLoggedIn()) {\n          this.matDialog.closeAll();\n\n          let redirectUrl = this.activatedRoute.snapshot.queryParams['redirectUrl'];\n          if (!redirectUrl) {\n            redirectUrl = this.router.url;\n          }\n\n          this.router.navigate(['/login'], {\n            queryParams: { redirectUrl }\n          });\n        }\n      }\n    });\n\n    this.loadCustomCss();\n    this.loadCustomWebFont();\n\n    const { router } = this;\n\n    this.router.events.pipe(filter((event) => event instanceof ActivationEnd && event.snapshot.children.length === 0)).subscribe(() => {\n      this.store.dispatch(new SetCurrentUrlAction(router.url));\n    });\n\n    this.router.events.pipe(filter((event) => event instanceof NavigationStart)).subscribe(() => {\n      this.store.dispatch(new ResetSelectionAction());\n    });\n\n    this.routerExtensionService.mapExtensionRoutes();\n\n    this.uploadService.fileUploadError.subscribe((error) => this.onFileUploadedError(error));\n\n    this.sharedLinksApiService.error.subscribe((err: { message: string }) => {\n      if (err?.message) {\n        this.notificationService.showError(err.message);\n      }\n    });\n\n    this.ready$.subscribe((isReady) => {\n      if (isReady) {\n        this.loadRepositoryStatus();\n        this.loadUserProfile();\n        setTimeout(() => {\n          this.openMobileAppDialog();\n        });\n      }\n    });\n\n    this.overlayContainer.getContainerElement().setAttribute('role', 'region');\n  }\n\n  setAppNavbarMode(mode: 'expanded' | 'collapsed'): void {\n    this.appNavNarMode$.next(mode);\n    this.preferencesService.set('expandedSidenav', mode === 'expanded');\n  }\n\n  private loadRepositoryStatus() {\n    this.contentApi.getRepositoryInformation().subscribe((response: DiscoveryEntry) => {\n      if (response?.entry?.repository) {\n        this.store.dispatch(new SetRepositoryInfoAction(response.entry.repository));\n      }\n    });\n  }\n\n  private async loadUserProfile() {\n    const profile = await this.userProfileService.loadUserProfile();\n    this.store.dispatch(new SetUserProfileAction(profile));\n  }\n\n  onFileUploadedError(error: FileUploadErrorEvent) {\n    let message = 'APP.MESSAGES.UPLOAD.ERROR.GENERIC';\n\n    if (error?.error?.status === 403) {\n      message = 'APP.MESSAGES.UPLOAD.ERROR.403';\n    }\n\n    if (error?.error?.status === 404) {\n      message = 'APP.MESSAGES.UPLOAD.ERROR.404';\n    }\n\n    if (error?.error?.status === 409) {\n      message = 'APP.MESSAGES.UPLOAD.ERROR.CONFLICT';\n    }\n\n    if (error?.error?.status === 500) {\n      message = 'APP.MESSAGES.UPLOAD.ERROR.500';\n    }\n\n    if (error?.error?.status === 504) {\n      message = 'APP.MESSAGES.UPLOAD.ERROR.504';\n    }\n\n    this.notificationService.showError(message);\n  }\n\n  private loadCustomCss(): void {\n    const customCssPath = this.appSettingsService.customCssPath;\n    if (customCssPath) {\n      this.createLink(customCssPath);\n    }\n  }\n\n  private loadCustomWebFont(): void {\n    const webFontPath = this.appSettingsService.webFontPath;\n    if (webFontPath) {\n      this.createLink(webFontPath);\n    }\n  }\n\n  private createLink(url: string): void {\n    const cssLinkElement = document.createElement('link');\n    cssLinkElement.setAttribute('rel', 'stylesheet');\n    cssLinkElement.setAttribute('type', 'text/css');\n    cssLinkElement.setAttribute('href', url);\n    document.head.appendChild(cssLinkElement);\n  }\n\n  public openMobileAppDialog(): void {\n    const isMobileSwitchEnabled: boolean = this.config.get<boolean>('mobileAppSwitch.enabled', false);\n    if (isMobileSwitchEnabled) {\n      this.acaMobileAppSwitcherService.resolveExistenceOfDialog();\n    } else {\n      this.acaMobileAppSwitcherService.clearSessionExpireTime();\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { AppService } from '../../services/app.service';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, MatIconModule],\n  selector: 'aca-page-layout',\n  templateUrl: './page-layout.component.html',\n  styleUrls: ['./page-layout.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'aca-page-layout' }\n})\nexport class PageLayoutComponent {\n  private readonly appService = inject(AppService);\n\n  @Input()\n  hasError = false;\n\n  appNavNarMode$: Observable<'collapsed' | 'expanded'>;\n\n  constructor() {\n    const appService = this.appService;\n\n    this.appNavNarMode$ = appService.appNavNarMode$.pipe(takeUntilDestroyed());\n  }\n\n  toggleClick() {\n    this.appService.toggleAppNavBar$.next();\n  }\n}\n","<div class=\"aca-content-header\">\n    <button *ngIf=\"(appNavNarMode$ | async) === 'collapsed'\"\n      mat-icon-button\n      class=\"aca-content-header-button\"\n      (click)=\"toggleClick()\"\n      title=\"{{'APP.TOOLTIPS.EXPAND_NAVIGATION' | translate}}\">\n      <mat-icon>keyboard_double_arrow_right</mat-icon>\n    </button>\n    <ng-content select=\".aca-page-layout-header, aca-page-layout-header\" />\n</div>\n\n<ng-container *ngIf=\"hasError\">\n  <ng-content select=\".aca-page-layout-error, aca-page-layout-error\" />\n</ng-container>\n\n<ng-container *ngIf=\"!hasError\">\n  <ng-content select=\".aca-page-layout-content, aca-page-layout-content\" />\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NgModule } from '@angular/core';\nimport { PageLayoutContentComponent } from './page-layout-content.component';\nimport { PageLayoutErrorComponent } from './page-layout-error.component';\nimport { PageLayoutHeaderComponent } from './page-layout-header.component';\nimport { PageLayoutComponent } from './page-layout.component';\n\n@NgModule({\n  imports: [PageLayoutComponent, PageLayoutContentComponent, PageLayoutErrorComponent, PageLayoutHeaderComponent],\n  exports: [PageLayoutContentComponent, PageLayoutErrorComponent, PageLayoutHeaderComponent, PageLayoutComponent]\n})\nexport class PageLayoutModule {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, OnInit, ViewEncapsulation } from '@angular/core';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatIconModule } from '@angular/material/icon';\n\n@Component({\n  imports: [TranslatePipe, MatIconModule],\n  selector: 'aca-locked-by',\n  template: `\n    <mat-icon class=\"aca-locked-by--icon\">lock</mat-icon>\n    <span class=\"aca-locked-by--label\">{{ 'APP.LOCKED_BY' | translate }}</span>\n    <span class=\"aca-locked-by--name\">{{ text }}</span>\n  `,\n  styleUrls: ['./locked-by.component.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'aca-locked-by'\n  }\n})\nexport class LockedByComponent implements OnInit {\n  @Input()\n  node: NodeEntry;\n\n  public text: string;\n\n  ngOnInit(): void {\n    this.text = this.node?.entry?.properties?.['cm:lockOwner']?.displayName;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';\nimport { MatIconModule } from '@angular/material/icon';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n  imports: [MatIconModule, TranslatePipe],\n  selector: 'aca-generic-error',\n  templateUrl: './generic-error.component.html',\n  styleUrls: ['./generic-error.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'aca-generic-error' }\n})\nexport class GenericErrorComponent {\n  @Input()\n  text = 'APP.MESSAGES.ERRORS.MISSING_CONTENT';\n}\n","<mat-icon class=\"generic-error__icon\">error</mat-icon>\n<p class=\"generic-error__title\">\n  {{ text | translate }}\n</p>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { NodePermissions } from '@alfresco/adf-extensions';\nimport { Node, SharedLink, SharedLinkEntry, NodeEntry } from '@alfresco/js-api';\n\nexport type PermissionSource = NodeEntry | SharedLinkEntry | Node;\n\nexport interface PermissionOptions {\n  target?: string;\n  operation?: string;\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NodePermissionService implements NodePermissions {\n  static readonly DEFAULT_OPERATION = 'OR';\n\n  private readonly defaultOptions: PermissionOptions = {\n    operation: NodePermissionService.DEFAULT_OPERATION,\n    target: null\n  };\n\n  check(source: PermissionSource | PermissionSource[], permissions: string[], options?: PermissionOptions): boolean {\n    const opts = Object.assign({}, this.defaultOptions, options || {});\n\n    if (!source) {\n      return false;\n    }\n\n    if (Array.isArray(source)) {\n      source = source.filter((item) => item);\n\n      if (source.length > 0) {\n        return source.every((node) => this.isOperationAllowed(node, permissions, opts));\n      }\n      return false;\n    } else {\n      return this.isOperationAllowed(source, permissions, opts);\n    }\n  }\n\n  private isOperationAllowed(node: PermissionSource, permissions: string[], options: PermissionOptions): boolean {\n    const allowableOperations = this.getAllowableOperations(node, options.target);\n\n    if (allowableOperations.length) {\n      if (options.operation === NodePermissionService.DEFAULT_OPERATION) {\n        return permissions.some((permission) => allowableOperations.includes(permission));\n      } else {\n        return permissions.every((permission) => allowableOperations.includes(permission));\n      }\n    }\n\n    return false;\n  }\n\n  private getAllowableOperations(node: PermissionSource, property?: string): string[] {\n    let entry: Node | SharedLink;\n\n    if ('entry' in node) {\n      entry = node.entry;\n    } else {\n      entry = node;\n    }\n\n    if (property) {\n      return entry[property] || [];\n    }\n\n    if ('allowableOperationsOnTarget' in entry) {\n      return entry.allowableOperationsOnTarget || [];\n    } else {\n      return entry.allowableOperations || [];\n    }\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { EnvironmentProviders, inject, Injectable, provideAppInitializer } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { AppStore, getRuleContext } from '@alfresco/aca-shared/store';\nimport {\n  ContentActionRef,\n  ContentActionType,\n  DocumentListPresetRef,\n  ExtensionConfig,\n  ExtensionLoaderService,\n  ExtensionRef,\n  ExtensionService,\n  IconRef,\n  mergeArrays,\n  mergeObjects,\n  NavBarGroupRef,\n  NavigationState,\n  ProfileState,\n  reduceEmptyMenus,\n  reduceSeparators,\n  RuleContext,\n  RuleEvaluator,\n  SelectionState,\n  SidebarTabRef,\n  sortByOrder\n} from '@alfresco/adf-extensions';\nimport { AppConfigService, AuthenticationService, LogService } from '@alfresco/adf-core';\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\nimport { NodeEntry, RepositoryInfo } from '@alfresco/js-api';\nimport { ViewerRules } from '../models/viewer.rules';\nimport { Badge, UserProfileSection } from '../models/types';\nimport { NodePermissionService } from '../services/node-permission.service';\nimport { map } from 'rxjs/operators';\nimport { SearchCategory } from '@alfresco/adf-content-services';\n\nexport function provideContentAppExtensions(): EnvironmentProviders[] {\n  return [\n    provideAppInitializer(() => {\n      const service = inject(AppExtensionService);\n      return service.load();\n    })\n  ];\n}\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AppExtensionService implements RuleContext {\n  readonly auth = inject(AuthenticationService);\n  protected readonly store = inject<Store<AppStore>>(Store);\n  protected readonly loader = inject(ExtensionLoaderService);\n  protected readonly extensions = inject(ExtensionService);\n  readonly permissions = inject(NodePermissionService);\n  readonly appConfig = inject(AppConfigService);\n  protected readonly matIconRegistry = inject(MatIconRegistry);\n  protected readonly sanitizer = inject(DomSanitizer);\n  protected readonly logger = inject(LogService);\n\n  private readonly _references = new BehaviorSubject<ExtensionRef[]>([]);\n  bulkActionExecuted$ = new Subject<void>();\n\n  navbar: Array<NavBarGroupRef> = [];\n  sidebarTabs: Array<SidebarTabRef> = [];\n  contentMetadata: any;\n  search: any;\n  viewerRules: ViewerRules = {};\n\n  private readonly _headerActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _toolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _viewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _sharedLinkViewerToolbarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _contextMenuActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _openWithActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _createActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _sidebarActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _badges = new BehaviorSubject<Array<Badge>>([]);\n  private readonly _filesDocumentListPreset = new BehaviorSubject<Array<DocumentListPresetRef>>([]);\n  private readonly _customMetadataPanels = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _bulkActions = new BehaviorSubject<Array<ContentActionRef>>([]);\n  private readonly _userProfileSections = new BehaviorSubject<Array<UserProfileSection>>([]);\n\n  documentListPresets: {\n    libraries: Array<DocumentListPresetRef>;\n    favoriteLibraries: Array<DocumentListPresetRef>;\n    shared: Array<DocumentListPresetRef>;\n    recent: Array<DocumentListPresetRef>;\n    favorites: Array<DocumentListPresetRef>;\n    trashcan: Array<DocumentListPresetRef>;\n    searchLibraries: Array<DocumentListPresetRef>;\n    searchResults: Array<DocumentListPresetRef>;\n  } = {\n    libraries: [],\n    favoriteLibraries: [],\n    shared: [],\n    recent: [],\n    favorites: [],\n    trashcan: [],\n    searchLibraries: [],\n    searchResults: []\n  };\n\n  selection: SelectionState;\n  navigation: NavigationState;\n  profile: ProfileState;\n  repository: RepositoryInfo;\n  withCredentials: boolean;\n\n  references$: Observable<ExtensionRef[]>;\n  filesDocumentListPreset$: Observable<DocumentListPresetRef[]> = this._filesDocumentListPreset.asObservable();\n\n  config: ExtensionConfig;\n\n  constructor() {\n    this.references$ = this._references.asObservable();\n\n    this.store.select(getRuleContext).subscribe((result) => {\n      this.selection = result.selection;\n      this.navigation = result.navigation;\n      this.profile = result.profile;\n      this.repository = result.repository;\n\n      if (this.config) {\n        this.setup(this.config);\n      }\n    });\n  }\n\n  async load() {\n    this.config = await this.extensions.load();\n    this.setup(this.config);\n  }\n\n  setup(config: ExtensionConfig) {\n    if (!config) {\n      this.logger.error('Extension configuration not found');\n      return;\n    }\n\n    this._headerActions.next(this.loader.getContentActions(config, 'features.header'));\n    this._sidebarActions.next(this.loader.getContentActions(config, 'features.sidebar.toolbar'));\n    this._toolbarActions.next(this.loader.getContentActions(config, 'features.toolbar'));\n    this._viewerToolbarActions.next(this.loader.getContentActions(config, 'features.viewer.toolbarActions'));\n    this._sharedLinkViewerToolbarActions.next(this.loader.getContentActions(config, 'features.viewer.shared.toolbarActions'));\n    this._contextMenuActions.next(this.loader.getContentActions(config, 'features.contextMenu'));\n    this._openWithActions.next(this.loader.getContentActions(config, 'features.viewer.openWith'));\n    this._createActions.next(this.loader.getElements<ContentActionRef>(config, 'features.create'));\n    this._badges.next(this.loader.getElements<Badge>(config, 'features.badges'));\n    this._userProfileSections.next(this.loader.getElements<UserProfileSection>(config, 'features.userProfileSections'));\n    this._filesDocumentListPreset.next(this.getDocumentListPreset(config, 'files'));\n    this._customMetadataPanels.next(this.loader.getElements<ContentActionRef>(config, 'features.customMetadataPanels'));\n    this._bulkActions.next(this.loader.getElements<ContentActionRef>(config, 'features.bulk-actions'));\n\n    this.navbar = this.loadNavBar(config);\n    this.sidebarTabs = this.loader.getElements<SidebarTabRef>(config, 'features.sidebar.tabs');\n    this.contentMetadata = this.loadContentMetadata(config);\n    this.search = this.loadSearchForms(config);\n    this.search?.forEach((searchSet) => {\n      searchSet.categories = searchSet.categories?.filter((category) => this.filterVisible(category));\n    });\n\n    this.documentListPresets = {\n      libraries: this.getDocumentListPreset(config, 'libraries'),\n      favoriteLibraries: this.getDocumentListPreset(config, 'favoriteLibraries'),\n      shared: this.getDocumentListPreset(config, 'shared'),\n      recent: this.getDocumentListPreset(config, 'recent'),\n      favorites: this.getDocumentListPreset(config, 'favorites'),\n      trashcan: this.getDocumentListPreset(config, 'trashcan'),\n      searchLibraries: this.getDocumentListPreset(config, 'search-libraries'),\n      searchResults: this.getDocumentListPreset(config, 'search-results')\n    };\n\n    this.withCredentials = this.appConfig.get<boolean>('auth.withCredentials', false);\n\n    if (config.features?.viewer) {\n      this.viewerRules = (config.features.viewer['rules'] as ViewerRules) || {};\n    }\n\n    this.registerIcons(config);\n\n    const references = (config.$references || []).filter((entry) => typeof entry === 'object').map((entry) => entry as ExtensionRef);\n    this._references.next(references);\n  }\n\n  protected registerIcons(config: ExtensionConfig) {\n    const icons: Array<IconRef> = this.loader.getElements<IconRef>(config, 'features.icons').filter((entry) => !entry.disabled);\n\n    for (const icon of icons) {\n      const [ns, id] = icon.id.split(':');\n      const value = icon.value;\n\n      if (!value) {\n        this.logger.warn(`Missing icon value for \"${icon.id}\".`);\n      } else if (!ns || !id) {\n        this.logger.warn(`Incorrect icon id format.`);\n      } else {\n        this.matIconRegistry.addSvgIconInNamespace(ns, id, this.sanitizer.bypassSecurityTrustResourceUrl(value));\n      }\n    }\n  }\n\n  protected loadNavBar(config: ExtensionConfig): Array<NavBarGroupRef> {\n    return this.loader.getElements<NavBarGroupRef>(config, 'features.navbar');\n  }\n\n  protected getDocumentListPreset(config: ExtensionConfig, key: string): DocumentListPresetRef[] {\n    return this.loader\n      .getElements<DocumentListPresetRef>(config, `features.documentList.${key}`)\n      .filter((group) => this.filterVisible(group))\n      .filter((entry) => !entry.disabled)\n      .map((entry) => {\n        entry.resizable = entry.resizable ?? true;\n        return entry;\n      })\n      .sort(sortByOrder);\n  }\n\n  getApplicationNavigation(elements): Array<NavBarGroupRef> {\n    return elements\n      .filter((group) => this.filterVisible(group))\n      .map((group) => ({\n        ...group,\n        items: (group.items || [])\n          .filter((entry) => !entry.disabled)\n          .filter((item) => this.filterVisible(item))\n          .sort(sortByOrder)\n          .map((item) => {\n            if (item.children && item.children.length > 0) {\n              item.children = item.children\n                .filter((entry) => !entry.disabled)\n                .filter((child) => this.filterVisible(child))\n                .sort(sortByOrder)\n                .map((child) => {\n                  if (child.component) {\n                    return {\n                      ...child\n                    };\n                  }\n\n                  if (!child.click) {\n                    const childRouteRef = this.extensions.getRouteById(child.route);\n                    const childUrl = `/${childRouteRef ? childRouteRef.path : child.route}`;\n                    return {\n                      ...child,\n                      url: childUrl\n                    };\n                  }\n\n                  return {\n                    ...child,\n                    action: child.click\n                  };\n                });\n\n              return {\n                ...item\n              };\n            }\n\n            if (item.component) {\n              return { ...item };\n            }\n\n            if (!item.click) {\n              const routeRef = this.extensions.getRouteById(item.route);\n              const url = `/${routeRef ? routeRef.path : item.route}`;\n              return {\n                ...item,\n                url\n              };\n            }\n\n            return {\n              ...item,\n              action: item.click\n            };\n          })\n          .reduce(reduceEmptyMenus, [])\n      }));\n  }\n\n  loadContentMetadata(config: ExtensionConfig): any {\n    const elements = this.loader.getElements<any>(config, 'features.content-metadata-presets');\n    if (!elements.length) {\n      return null;\n    }\n\n    let presets = {};\n    presets = this.filterDisabled(mergeObjects(presets, ...elements));\n\n    const metadata = this.appConfig.config['content-metadata'] || {};\n    metadata.presets = presets;\n\n    this.appConfig.config['content-metadata'] = metadata;\n    return { presets };\n  }\n\n  loadSearchForms(config: ExtensionConfig): any {\n    const elements = this.loader.getElements<any>(config, 'features.search');\n    if (!elements.length) {\n      return null;\n    }\n\n    const search = mergeArrays([], elements)\n      .filter((entry) => !entry.disabled)\n      .filter((entry) => this.filterVisible(entry))\n      .sort(sortByOrder);\n\n    this.appConfig.config['search'] = search;\n    return search;\n  }\n\n  filterDisabled(object: Array<{ disabled: boolean }> | { disabled: boolean }) {\n    if (Array.isArray(object)) {\n      return object.filter((item) => !item.disabled).map((item) => this.filterDisabled(item));\n    } else if (typeof object === 'object') {\n      if (!object.disabled) {\n        Object.keys(object).forEach((prop) => {\n          object[prop] = this.filterDisabled(object[prop]);\n        });\n        return object;\n      }\n    } else {\n      return object;\n    }\n  }\n\n  getSidebarTabs(): Array<SidebarTabRef> {\n    return this.sidebarTabs.filter((action) => this.filterVisible(action));\n  }\n\n  private setActionDisabledFromRule(action: ContentActionRef) {\n    let disabled = false;\n\n    if (action?.rules?.enabled) {\n      disabled = !this.extensions.evaluateRule(action.rules.enabled, this);\n    }\n\n    return {\n      ...action,\n      disabled\n    };\n  }\n\n  updateSidebarActions() {\n    this._sidebarActions.next(this.loader.getContentActions(this.config, 'features.sidebar.toolbar'));\n  }\n\n  getCreateActions(): Observable<Array<ContentActionRef>> {\n    return this._createActions.pipe(\n      map((createActions) =>\n        createActions\n          .filter((action) => this.filterVisible(action))\n          .map((action) => this.copyAction(action))\n          .map((action) => this.buildMenu(action))\n          .map((action) => this.setActionDisabledFromRule(action))\n      )\n    );\n  }\n\n  getBadges(node: NodeEntry): Observable<Array<Badge>> {\n    return this._badges.pipe(map((badges) => badges.filter((badge) => this.evaluateRule(badge.rules.visible, node))));\n  }\n\n  getUserProfileSections(): Observable<Array<UserProfileSection>> {\n    return this._userProfileSections.pipe(map((sections) => sections.filter((section) => this.evaluateRule(section.rules.visible))));\n  }\n\n  getCustomMetadataPanels(node: NodeEntry): Observable<Array<ContentActionRef>> {\n    return this._customMetadataPanels.pipe(map((panels) => panels.filter((panel) => this.evaluateRule(panel.rules.visible, node))));\n  }\n\n  private buildMenu(actionRef: ContentActionRef): ContentActionRef {\n    if (actionRef.type === ContentActionType.menu && actionRef.children && actionRef.children.length > 0) {\n      const children = actionRef.children.filter((action) => this.filterVisible(action)).map((action) => this.buildMenu(action));\n\n      actionRef.children = children\n        .map((action) => this.setActionDisabledFromRule(action))\n        .sort(sortByOrder)\n        .reduce(reduceEmptyMenus, [])\n        .reduce(reduceSeparators, []);\n    }\n\n    return actionRef;\n  }\n\n  private getAllowedActions(actions: ContentActionRef[]): ContentActionRef[] {\n    return (actions || [])\n      .filter((action) => this.filterVisible(action))\n      .map((action) => {\n        if (action.type === ContentActionType.menu) {\n          const copy = this.copyAction(action);\n          if (copy.children && copy.children.length > 0) {\n            copy.children = copy.children\n              .filter((entry) => !entry.disabled)\n              .filter((childAction) => this.filterVisible(childAction))\n              .sort(sortByOrder)\n              .reduce(reduceSeparators, []);\n          }\n          return copy;\n        }\n        return action;\n      })\n      .map((action) => this.setActionDisabledFromRule(action))\n      .reduce(reduceEmptyMenus, [])\n      .reduce(reduceSeparators, []);\n  }\n\n  getAllowedSidebarActions(): Observable<Array<ContentActionRef>> {\n    return this._sidebarActions.pipe(map((sidebarActions) => this.getAllowedActions(sidebarActions)));\n  }\n\n  getAllowedToolbarActions(): Observable<Array<ContentActionRef>> {\n    return this._toolbarActions.pipe(map((toolbarActions) => this.getAllowedActions(toolbarActions)));\n  }\n\n  getViewerToolbarActions(): Observable<Array<ContentActionRef>> {\n    return this._viewerToolbarActions.pipe(map((viewerToolbarActions) => this.getAllowedActions(viewerToolbarActions)));\n  }\n\n  getBulkActions(): Observable<Array<ContentActionRef>> {\n    return this._bulkActions.pipe(map((bulkActions) => this.getAllowedActions(bulkActions)));\n  }\n\n  getOpenWithActions(): Observable<Array<ContentActionRef>> {\n    return this._openWithActions.pipe(map((openWithActions) => this.getAllowedActions(openWithActions)));\n  }\n\n  getSharedLinkViewerToolbarActions(): Observable<Array<ContentActionRef>> {\n    return this._sharedLinkViewerToolbarActions.pipe(\n      map((sharedLinkViewerToolbarActions) => (!this.selection.isEmpty ? this.getAllowedActions(sharedLinkViewerToolbarActions) : []))\n    );\n  }\n\n  getHeaderActions(): Observable<Array<ContentActionRef>> {\n    return this._headerActions.pipe(\n      map((headerActions) =>\n        headerActions\n          .filter((action) => this.filterVisible(action))\n          .map((action) => {\n            if (action.type === ContentActionType.menu) {\n              const copy = this.copyAction(action);\n              if (copy.children && copy.children.length > 0) {\n                copy.children = copy.children\n                  .filter((childAction) => this.filterVisible(childAction))\n                  .sort(sortByOrder)\n                  .reduce(reduceEmptyMenus, [])\n                  .reduce(reduceSeparators, []);\n              }\n              return copy;\n            }\n\n            return action;\n          })\n          .map((action) => this.setActionDisabledFromRule(action))\n          .sort(sortByOrder)\n          .reduce(reduceEmptyMenus, [])\n          .reduce(reduceSeparators, [])\n      )\n    );\n  }\n\n  getAllowedContextMenuActions(): Observable<Array<ContentActionRef>> {\n    return this._contextMenuActions.pipe(map((contextMenuActions) => (!this.selection.isEmpty ? this.getAllowedActions(contextMenuActions) : [])));\n  }\n\n  copyAction(action: ContentActionRef): ContentActionRef {\n    return {\n      ...action,\n      children: (action.children || []).map((child) => this.copyAction(child))\n    };\n  }\n\n  filterVisible(action: ContentActionRef | SidebarTabRef | DocumentListPresetRef | SearchCategory): boolean {\n    if (action?.rules?.visible) {\n      if (Array.isArray(action.rules.visible)) {\n        return action.rules.visible.every((rule) => this.extensions.evaluateRule(rule, this));\n      }\n      return this.extensions.evaluateRule(action.rules.visible, this);\n    }\n    return true;\n  }\n\n  isViewerExtensionDisabled(extension: any): boolean {\n    if (extension) {\n      if (extension.disabled) {\n        return true;\n      }\n\n      if (extension.rules?.disabled) {\n        return this.extensions.evaluateRule(extension.rules.disabled, this);\n      }\n    }\n\n    return false;\n  }\n\n  runActionById(id: string, additionalPayload?: any) {\n    const action = this.extensions.getActionById(id);\n    if (action) {\n      const { type, payload } = action;\n      const context = {\n        selection: this.selection\n      };\n      const expression = this.extensions.runExpression(payload, context);\n\n      this.store.dispatch({\n        type,\n        payload: expression,\n        configuration: additionalPayload\n      });\n    } else {\n      this.store.dispatch({\n        type: id,\n        configuration: additionalPayload\n      });\n    }\n  }\n\n  // todo: move to ADF/RuleService\n  isRuleDefined(ruleId: string): boolean {\n    return !!(ruleId && this.getEvaluator(ruleId));\n  }\n\n  // todo: move to ADF/RuleService\n  evaluateRule(ruleId: string | string[], ...args: any[]): boolean {\n    let evaluatorList: RuleEvaluator[] = [];\n    if (Array.isArray(ruleId)) {\n      evaluatorList = ruleId.filter((rule) => !!this.getEvaluator(rule)).map((rule) => this.getEvaluator(rule));\n    } else {\n      const evaluator = this.getEvaluator(ruleId);\n      if (evaluator) {\n        evaluatorList.push(evaluator);\n      }\n    }\n    if (evaluatorList?.length > 0) {\n      return evaluatorList.every((evaluator) => evaluator(this, ...args));\n    }\n\n    return false;\n  }\n\n  getEvaluator(key: string): RuleEvaluator {\n    return this.extensions.getEvaluator(key);\n  }\n\n  canPreviewNode(node: NodeEntry) {\n    const rules = this.viewerRules;\n\n    if (this.isRuleDefined(rules.canPreview)) {\n      const canPreview = this.evaluateRule(rules.canPreview, node);\n\n      if (!canPreview) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  canShowViewerNavigation(node: NodeEntry) {\n    const rules = this.viewerRules;\n\n    if (this.isRuleDefined(rules.showNavigation)) {\n      const showNavigation = this.evaluateRule(rules.showNavigation, node);\n      if (!showNavigation) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  bulkActionExecuted(): void {\n    this.bulkActionExecuted$.next();\n  }\n\n  isFeatureSupported(feature: string): boolean {\n    return this.extensions.evaluateRule(feature, this);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { AfterViewInit, Component, Input, ViewChild, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '../../../services/app.extension.service';\nimport { MatMenuItem, MatMenuModule } from '@angular/material/menu';\nimport { CommonModule } from '@angular/common';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatMenuModule, MatDividerModule, IconComponent, DynamicExtensionComponent],\n  selector: 'app-toolbar-menu-item',\n  templateUrl: './toolbar-menu-item.component.html',\n  styleUrls: ['./toolbar-menu-item.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toolbar-menu-item' }\n})\nexport class ToolbarMenuItemComponent implements AfterViewInit {\n  private readonly extensions = inject(AppExtensionService);\n\n  @Input()\n  actionRef: ContentActionRef;\n  @Input()\n  menuId?: string;\n\n  @ViewChild(MatMenuItem)\n  menuItem: MatMenuItem;\n\n  @ViewChild(DynamicExtensionComponent)\n  dynamicComponent: DynamicExtensionComponent;\n\n  runAction() {\n    if (this.hasClickAction(this.actionRef)) {\n      this.extensions.runActionById(\n        this.actionRef.actions.click,\n        this.menuId\n          ? {\n              focusedElementOnCloseSelector: `#${this.menuId.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.')}`\n            }\n          : undefined\n      );\n    }\n  }\n\n  ngAfterViewInit() {\n    if (this.dynamicComponent?.menuItem) {\n      this.menuItem = this.dynamicComponent.menuItem;\n    }\n  }\n\n  private hasClickAction(actionRef: ContentActionRef): boolean {\n    return !!actionRef?.actions?.click;\n  }\n\n  trackByActionId(_: number, obj: ContentActionRef): string {\n    return obj.id;\n  }\n}\n","<ng-container [ngSwitch]=\"actionRef.type\">\n  <ng-container *ngSwitchCase=\"'menu'\">\n    <button [id]=\"actionRef.id\" mat-menu-item role=\"menuitem\" tabindex=\"0\" [disabled]=\"actionRef.disabled\" [matMenuTriggerFor]=\"childMenu\">\n      <adf-icon [value]=\"actionRef.icon\" />\n      <span data-automation-id=\"menu-item-title\">{{ actionRef.title | translate }}</span>\n    </button>\n\n    <mat-menu #childMenu=\"matMenu\" class=\"app-create-menu__sub-menu\">\n      <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n        <app-toolbar-menu-item [actionRef]=\"child\" />\n      </ng-container>\n    </mat-menu>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'separator'\">\n    <mat-divider aria-hidden=\"true\" />\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'custom'\">\n    <adf-dynamic-component [id]=\"actionRef.component\" />\n  </ng-container>\n\n  <ng-container *ngSwitchDefault>\n    <button\n      [id]=\"actionRef.id\"\n      role=\"menuitem\"\n      mat-menu-item\n      [role]=\"'menuitem'\"\n      tabindex=\"0\"\n      [disabled]=\"actionRef.disabled\"\n      [attr.title]=\"(actionRef.disabled ? actionRef['description-disabled'] : actionRef.description || actionRef.title) | translate\"\n      (click)=\"runAction()\"\n    >\n      <adf-icon [value]=\"actionRef.icon\" class=\"app-toolbar-menu-item--icon\" />\n      <span data-automation-id=\"menu-item-title\">{{ actionRef.title | translate }}</span>\n    </button>\n  </ng-container>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, inject } from '@angular/core';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { AppExtensionService } from '../../../services/app.extension.service';\nimport { ThemePalette } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ToolbarMenuItemComponent } from '../toolbar-menu-item/toolbar-menu-item.component';\nimport { IconComponent } from '@alfresco/adf-core';\n\nexport enum ToolbarButtonType {\n  ICON_BUTTON = 'icon-button',\n  FLAT_BUTTON = 'flat-button',\n  STROKED_BUTTON = 'stroked-button',\n  MENU_ITEM = 'menu-item'\n}\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, ToolbarMenuItemComponent, IconComponent],\n  selector: 'app-toolbar-button',\n  templateUrl: './toolbar-button.component.html',\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toolbar-button' }\n})\nexport class ToolbarButtonComponent {\n  private readonly extensions = inject(AppExtensionService);\n\n  @Input()\n  data: {\n    buttonType?: ToolbarButtonType;\n    color?: string;\n  };\n\n  @Input()\n  type: ToolbarButtonType = ToolbarButtonType.ICON_BUTTON;\n\n  @Input()\n  color: ThemePalette;\n\n  @Input()\n  actionRef: ContentActionRef;\n\n  runAction() {\n    if (this.hasClickAction(this.actionRef)) {\n      this.extensions.runActionById(this.actionRef.actions.click, {\n        focusedElementOnCloseSelector: `#${this.actionRef.id.replace(/\\\\/g, '\\\\\\\\').replace(/\\./g, '\\\\.')}`\n      });\n    }\n  }\n\n  private hasClickAction(actionRef: ContentActionRef): boolean {\n    return !!actionRef?.actions?.click;\n  }\n}\n","<ng-container [ngSwitch]=\"data?.buttonType || type\">\n  <ng-container *ngSwitchCase=\"'icon-button'\">\n    <button\n      [id]=\"actionRef.id\"\n      mat-icon-button\n      [color]=\"color\"\n      [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n      [attr.title]=\"actionRef.description || actionRef.title | translate\"\n      [disabled]=\"actionRef.disabled\"\n      (click)=\"runAction()\"\n    >\n      <adf-icon [value]=\"actionRef.icon\" />\n    </button>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'flat-button'\">\n    <button\n      [id]=\"actionRef.id\"\n      [color]=\"data?.color || color\"\n      mat-flat-button\n      [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n      [attr.title]=\"actionRef.description || actionRef.title | translate\"\n      [disabled]=\"actionRef.disabled\"\n      (click)=\"runAction()\"\n    >\n      <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n    </button>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'stroked-button'\">\n    <button\n      [id]=\"actionRef.id\"\n      [color]=\"data?.color || color\"\n      mat-stroked-button\n      [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n      [attr.title]=\"actionRef.description || actionRef.title | translate\"\n      [disabled]=\"actionRef.disabled\"\n      (click)=\"runAction()\"\n    >\n      <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n    </button>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'menu-item'\">\n    <app-toolbar-menu-item [actionRef]=\"actionRef\" />\n  </ng-container>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation, HostListener, ViewChild, ViewChildren, QueryList, AfterViewInit, OnInit } from '@angular/core';\nimport { ContentActionRef, ContentActionType, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { MatMenu, MatMenuItem, MatMenuModule, MatMenuTrigger } from '@angular/material/menu';\nimport { ThemePalette } from '@angular/material/core';\nimport { ToolbarMenuItemComponent } from '../toolbar-menu-item/toolbar-menu-item.component';\nimport { CommonModule } from '@angular/common';\nimport { MatButtonModule } from '@angular/material/button';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconComponent } from '@alfresco/adf-core';\n\n@Component({\n  imports: [CommonModule, TranslatePipe, MatButtonModule, MatMenuModule, ToolbarMenuItemComponent, IconComponent, DynamicExtensionComponent],\n  selector: 'app-toolbar-menu',\n  templateUrl: './toolbar-menu.component.html',\n  encapsulation: ViewEncapsulation.None,\n  host: { class: 'app-toolbar-menu' }\n})\nexport class ToolbarMenuComponent implements OnInit, AfterViewInit {\n  @Input()\n  actionRef: ContentActionRef;\n\n  @Input()\n  color: ThemePalette;\n\n  @ViewChild('matTrigger')\n  matTrigger: MatMenuTrigger;\n\n  @ViewChild(MatMenu)\n  menu: MatMenu;\n\n  @ViewChildren(ToolbarMenuItemComponent)\n  toolbarMenuItems: QueryList<ToolbarMenuItemComponent>;\n\n  @ViewChildren(DynamicExtensionComponent)\n  dynamicExtensionComponents: QueryList<DynamicExtensionComponent>;\n\n  @Input()\n  data: {\n    menuType?: string;\n    color?: string;\n  };\n\n  type = 'default';\n\n  @HostListener('document:keydown.Escape')\n  handleKeydownEscape() {\n    this.matTrigger.closeMenu();\n  }\n\n  ngOnInit(): void {\n    this.type = this.data?.menuType || 'default';\n  }\n\n  ngAfterViewInit(): void {\n    const dynamicComponentMap = new Map<string, DynamicExtensionComponent>(\n      this.dynamicExtensionComponents.map((component) => [component.id, component])\n    );\n\n    const toolbarItemMap = new Map<string, ToolbarMenuItemComponent>();\n    this.toolbarMenuItems.forEach((item) => {\n      if (item.actionRef?.id) {\n        toolbarItemMap.set(item.actionRef.id, item);\n      }\n    });\n\n    const menuItems: MatMenuItem[] = [];\n    this.actionRef.children?.forEach((child) => {\n      if (child.type === ContentActionType.custom) {\n        const componentId = child.component || child.id;\n        const component = dynamicComponentMap.get(componentId);\n        if (component?.menuItem) {\n          menuItems.push(component.menuItem);\n        }\n      } else {\n        const toolbarItem = toolbarItemMap.get(child.id);\n        if (toolbarItem?.menuItem) {\n          menuItems.push(toolbarItem.menuItem);\n        }\n      }\n    });\n\n    const menuItemsQueryList = new QueryList<MatMenuItem>();\n    menuItemsQueryList.reset(menuItems);\n    this.menu._allItems = menuItemsQueryList;\n    this.menu.ngAfterContentInit();\n  }\n\n  trackByActionId(_: number, obj: ContentActionRef): string {\n    return obj.id;\n  }\n}\n","<ng-container [ngSwitch]=\"type\">\n  <ng-container *ngSwitchCase=\"'button'\">\n    <button\n      [id]=\"actionRef.id\"\n      [color]=\"data?.color || color\"\n      mat-button\n      [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n      [attr.title]=\"actionRef.description || actionRef.title | translate\"\n      [matMenuTriggerFor]=\"menu\"\n      [disabled]=\"actionRef.disabled\"\n      #matTrigger=\"matMenuTrigger\"\n    >\n      <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n    </button>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'flat-button'\">\n    <button\n      [id]=\"actionRef.id\"\n      [color]=\"data?.color || color\"\n      mat-flat-button\n      [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n      [attr.title]=\"actionRef.description || actionRef.title | translate\"\n      [matMenuTriggerFor]=\"menu\"\n      [disabled]=\"actionRef.disabled\"\n      #matTrigger=\"matMenuTrigger\"\n    >\n      <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n    </button>\n  </ng-container>\n\n  <ng-container *ngSwitchCase=\"'stroked-button'\">\n    <button\n      [id]=\"actionRef.id\"\n      [color]=\"data?.color || color\"\n      mat-stroked-button\n      [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n      [attr.title]=\"actionRef.description || actionRef.title | translate\"\n      [matMenuTriggerFor]=\"menu\"\n      [disabled]=\"actionRef.disabled\"\n      #matTrigger=\"matMenuTrigger\"\n    >\n      <span *ngIf=\"actionRef.title\">{{ actionRef.title | translate }}</span>\n    </button>\n  </ng-container>\n\n  <ng-container *ngSwitchDefault>\n    <button\n      [id]=\"actionRef.id\"\n      [color]=\"data?.color || color\"\n      mat-icon-button\n      [attr.aria-label]=\"actionRef.description || actionRef.title | translate\"\n      [attr.title]=\"actionRef.description || actionRef.title | translate\"\n      [matMenuTriggerFor]=\"menu\"\n      [disabled]=\"actionRef.disabled\"\n      #matTrigger=\"matMenuTrigger\"\n    >\n      <adf-icon *ngIf=\"actionRef.icon\" [value]=\"actionRef.icon\" />\n    </button>\n  </ng-container>\n</ng-container>\n\n<mat-menu #menu=\"matMenu\" [overlapTrigger]=\"false\" [xPosition]=\"'before'\">\n  <ng-container *ngFor=\"let child of actionRef.children; trackBy: trackByActionId\">\n    <ng-container [ngSwitch]=\"child.type\">\n      <ng-container *ngSwitchCase=\"'custom'\">\n        <adf-dynamic-component [id]=\"child.component\" [data]=\"child.data\" />\n      </ng-container>\n      <ng-container *ngSwitchDefault>\n        <app-toolbar-menu-item [actionRef]=\"child\" [menuId]=\"actionRef.id\" />\n      </ng-container>\n    </ng-container>\n  </ng-container>\n</mat-menu>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, ViewEncapsulation, ChangeDetectionStrategy, Input, DoCheck, ChangeDetectorRef, inject } from '@angular/core';\nimport { ContentActionRef, DynamicExtensionComponent } from '@alfresco/adf-extensions';\nimport { ToolbarButtonComponent, ToolbarButtonType } from '../toolbar-button/toolbar-button.component';\nimport { ThemePalette } from '@angular/material/core';\nimport { CommonModule } from '@angular/common';\nimport { ToolbarMenuComponent } from '../toolbar-menu/toolbar-menu.component';\n\n@Component({\n  imports: [CommonModule, ToolbarButtonComponent, ToolbarMenuComponent, DynamicExtensionComponent],\n  selector: 'aca-toolbar-action',\n  templateUrl: './toolbar-action.component.html',\n  styleUrl: './toolbar-action.component.scss',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  host: { class: 'aca-toolbar-action' }\n})\nexport class ToolbarActionComponent implements DoCheck {\n  private readonly cd = inject(ChangeDetectorRef);\n\n  @Input()\n  data: {\n    buttonType?: ToolbarButtonType;\n    color?: string;\n  };\n\n  @Input()\n  type: ToolbarButtonType = ToolbarButtonType.ICON_BUTTON;\n\n  @Input()\n  color: ThemePalette;\n\n  @Input()\n  actionRef: ContentActionRef;\n\n  // todo: review after ADF 2.6\n  // preview component : change detection workaround for children without input\n  ngDoCheck() {\n    if (this.actionRef.id.includes('app.viewer')) {\n      this.cd.markForCheck();\n    }\n  }\n}\n","<ng-container [ngSwitch]=\"actionRef.type\">\n  <div *ngSwitchCase=\"'default'\">\n    <app-toolbar-button [type]=\"type\" [actionRef]=\"actionRef\" [color]=\"color\" />\n  </div>\n\n  <div *ngSwitchCase=\"'button'\">\n    <app-toolbar-button [type]=\"data?.buttonType || type\" [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n  </div>\n\n  <div *ngSwitchCase=\"'separator'\" [id]=\"actionRef.id\" class=\"aca-toolbar-divider\"></div>\n\n  <ng-container *ngSwitchCase=\"'menu'\">\n    <app-toolbar-menu [actionRef]=\"actionRef\" [color]=\"color\" [data]=\"actionRef.data\" />\n  </ng-container>\n\n  <div *ngSwitchCase=\"'custom'\">\n    <adf-dynamic-component [data]=\"actionRef.data\" [id]=\"actionRef.component\" />\n  </div>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, Input, ViewEncapsulation } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { ToolbarActionComponent } from './toolbar-action/toolbar-action.component';\nimport { MatToolbarModule } from '@angular/material/toolbar';\n\n@Component({\n  selector: 'aca-toolbar',\n  imports: [CommonModule, ToolbarActionComponent, MatToolbarModule],\n  templateUrl: './toolbar.component.html',\n  styleUrls: ['./toolbar.component.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class ToolbarComponent {\n  @Input({ required: true }) items: ContentActionRef[];\n\n  trackByActionId(_: number, action: ContentActionRef) {\n    return action.id;\n  }\n}\n","<mat-toolbar class=\"aca-toolbar\">\n  <ng-container *ngFor=\"let item of items; trackBy: trackByActionId\">\n    <aca-toolbar-action [actionRef]=\"item\" />\n  </ng-container>\n</mat-toolbar>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Component, DestroyRef, HostListener, inject, Input, OnChanges, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\nimport { Node, NodeEntry, SiteEntry } from '@alfresco/js-api';\nimport { ContentActionRef, DynamicTabComponent, SidebarTabRef } from '@alfresco/adf-extensions';\nimport { Store } from '@ngrx/store';\nimport { infoDrawerPreview, SetInfoDrawerStateAction, ToggleInfoDrawerAction } from '@alfresco/aca-shared/store';\nimport { AppExtensionService } from '../../services/app.extension.service';\nimport { ContentApiService } from '../../services/content-api.service';\nimport { CommonModule } from '@angular/common';\nimport { MatProgressBarModule } from '@angular/material/progress-bar';\nimport { InfoDrawerComponent as AdfInfoDrawerComponent, InfoDrawerTabComponent } from '@alfresco/adf-core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { A11yModule } from '@angular/cdk/a11y';\nimport { ToolbarComponent } from '../toolbar/toolbar.component';\nimport { ContentService, NodesApiService } from '@alfresco/adf-content-services';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Component({\n  imports: [\n    CommonModule,\n    TranslatePipe,\n    MatProgressBarModule,\n    AdfInfoDrawerComponent,\n    A11yModule,\n    ToolbarComponent,\n    DynamicTabComponent,\n    InfoDrawerTabComponent\n  ],\n  selector: 'aca-info-drawer',\n  templateUrl: './info-drawer.component.html',\n  encapsulation: ViewEncapsulation.None\n})\nexport class InfoDrawerComponent implements OnChanges, OnInit, OnDestroy {\n  private readonly store = inject<Store<any>>(Store);\n  private readonly contentApi = inject(ContentApiService);\n  private readonly extensions = inject(AppExtensionService);\n  private readonly nodesService = inject(NodesApiService);\n  private readonly contentService = inject(ContentService);\n\n  @Input()\n  nodeId: string;\n\n  @Input({ required: true })\n  node: NodeEntry;\n\n  isLoading = false;\n  displayNode: Node | SiteEntry;\n  tabs: Array<SidebarTabRef> = [];\n  actions: Array<ContentActionRef> = [];\n\n  preventFromClosing = false;\n  icon: string = null;\n\n  @HostListener('keydown.escape')\n  onEscapeKeyboardEvent(): void {\n    this.close();\n  }\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.tabs = this.extensions.getSidebarTabs();\n    this.extensions\n      .getAllowedSidebarActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.actions = actions;\n      });\n\n    this.store\n      .select(infoDrawerPreview)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((isInfoDrawerPreviewOpened) => {\n        this.preventFromClosing = isInfoDrawerPreviewOpened;\n      });\n\n    this.nodesService.nodeUpdated.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((node: any) => {\n      this.node.entry = node;\n    });\n  }\n\n  ngOnDestroy() {\n    if (!this.preventFromClosing) {\n      this.store.dispatch(new SetInfoDrawerStateAction(false));\n    }\n  }\n\n  ngOnChanges() {\n    if (this.node) {\n      if (this.node['isLibrary']) {\n        return this.setDisplayNode(this.node);\n      }\n\n      const entry: any = this.node.entry;\n\n      const id = entry.nodeId || entry.id;\n      return this.loadNodeInfo(id);\n    }\n  }\n\n  private close() {\n    this.store.dispatch(new ToggleInfoDrawerAction());\n  }\n\n  private loadNodeInfo(nodeId: string) {\n    if (nodeId) {\n      this.isLoading = true;\n\n      this.contentApi.getNodeInfo(nodeId).subscribe(\n        (entity) => {\n          this.setDisplayNode(entity);\n          this.node.entry = entity;\n          this.isLoading = false;\n        },\n        () => (this.isLoading = false)\n      );\n    }\n  }\n\n  private setDisplayNode(node: any) {\n    this.displayNode = node;\n    this.icon = this.contentService.getNodeIcon(node);\n  }\n}\n","<div *ngIf=\"isLoading\">\n  <mat-progress-bar mode=\"indeterminate\" [attr.aria-label]=\"'APP.INFO_DRAWER.DATA_LOADING' | translate\" />\n</div>\n<ng-container *ngIf=\"!isLoading && !!displayNode\">\n  <adf-info-drawer class=\"aca-info-drawer\" [icon]=\"icon\" [title]=\"node?.entry?.name || 'APP.INFO_DRAWER.TITLE'\" cdkTrapFocusAutoCapture>\n    <aca-toolbar [items]=\"actions\" info-drawer-buttons />\n\n    <adf-info-drawer-tab *ngFor=\"let tab of tabs\" [icon]=\"tab.icon\" [label]=\"tab.title\">\n      <adf-dynamic-tab [node]=\"$any(displayNode)\" [id]=\"tab.component\" [attr.data-automation-id]=\"tab.component\" />\n    </adf-info-drawer-tab>\n  </adf-info-drawer>\n</ng-container>\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { NodeEntry, Node } from '@alfresco/js-api';\n\nexport abstract class DocumentBasePageService {\n  abstract canUpdateNode(node: NodeEntry): boolean;\n  abstract canUploadContent(node: Node): boolean;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Node } from '@alfresco/js-api';\n\nexport function isLocked(node: { entry: Node }): boolean {\n  if (node?.entry) {\n    const { entry } = node;\n\n    return entry.isLocked || entry.properties?.['cm:lockType'] === 'READ_ONLY_LOCK' || entry.properties?.['cm:lockType'] === 'WRITE_LOCK';\n  } else {\n    return false;\n  }\n}\n\nexport function isLibrary(node: { entry: Node | any }): boolean {\n  if (node?.entry) {\n    const { entry } = node;\n\n    return !!(entry.guid && entry.id && entry.preset && entry.title && entry.visibility) || entry.nodeType === 'st:site';\n  } else {\n    return false;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { inject, Injectable } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { NodeEntry } from '@alfresco/js-api';\nimport { FileAutoDownloadComponent } from '@alfresco/adf-content-services';\n\nconst BYTES_TO_MB_CONVERSION_VALUE = 1048576;\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AutoDownloadService {\n  private readonly dialog = inject(MatDialog);\n\n  private shouldDownload(node: NodeEntry, threshold: number): boolean {\n    const fileSizeInBytes = node?.entry?.content?.sizeInBytes || 0;\n    const sizeInMB = fileSizeInBytes / BYTES_TO_MB_CONVERSION_VALUE;\n\n    return sizeInMB && sizeInMB > threshold;\n  }\n\n  /**\n   * Opens the dialog to download the node content.\n   * Determines whether node content should be auto downloaded based on the file size and the configured threshold.\n   * @param node node entry\n   * @param threshold file size threshold in MB\n   */\n  tryDownload(node: NodeEntry, threshold: number): boolean {\n    if (this.shouldDownload(node, threshold)) {\n      this.dialog.open(FileAutoDownloadComponent, { disableClose: true, data: node });\n      return true;\n    }\n\n    return false;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, inject } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\nimport { filter, startWith } from 'rxjs/operators';\nimport { Observable } from 'rxjs';\n\n@Injectable({ providedIn: 'root' })\nexport class NavigationHistoryService {\n  private readonly router = inject(Router);\n\n  history: string[] = [];\n\n  listenToRouteChanges(): Observable<NavigationEnd> {\n    return this.router.events.pipe(\n      startWith(new NavigationEnd(0, this.router.url, this.router.url)),\n      filter((event: NavigationEnd) => event instanceof NavigationEnd)\n    );\n  }\n\n  shouldReturnLastSelection(url: string): boolean {\n    return (\n      this.history.length > 2 &&\n      this.history[this.history.length - 2].startsWith(url) &&\n      [...this.history]\n        .reverse()\n        .slice(1)\n        .find((oldUrl) => !oldUrl.startsWith(url)) === this.history[this.history.length - 1]\n    );\n  }\n\n  setHistory(event: NavigationEnd): void {\n    this.history.push(event.urlAfterRedirects);\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport {\n  DocumentListComponent,\n  DocumentListService,\n  SearchAiInputState,\n  SearchAiService,\n  ShareDataRow,\n  UploadService\n} from '@alfresco/adf-content-services';\nimport { ShowHeaderMode, UserPreferencesService } from '@alfresco/adf-core';\nimport { ContentActionRef, DocumentListPresetRef, SelectionState } from '@alfresco/adf-extensions';\nimport { DestroyRef, Directive, HostListener, inject, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewChild } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport { Node, NodeEntry, NodePaging } from '@alfresco/js-api';\nimport { Observable, Subscription } from 'rxjs';\nimport { DocumentBasePageService } from './document-base-page.service';\nimport {\n  AppStore,\n  getAppSelection,\n  getCurrentFolder,\n  isInfoDrawerOpened,\n  SetSelectedNodesAction,\n  ViewNodeAction,\n  ViewNodeExtras\n} from '@alfresco/aca-shared/store';\nimport { AppExtensionService } from '../../services/app.extension.service';\nimport { isLibrary, isLocked } from '../../utils/node.utils';\nimport { AutoDownloadService } from '../../services/auto-download.service';\nimport { BreakpointObserver, Breakpoints } from '@angular/cdk/layout';\nimport { Router } from '@angular/router';\nimport { AppSettingsService } from '../../services/app-settings.service';\nimport { NavigationHistoryService } from '../../services/navigation-history.service';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n/* eslint-disable @angular-eslint/directive-class-suffix */\n@Directive()\nexport abstract class PageComponent implements OnInit, OnDestroy, OnChanges {\n  @ViewChild(DocumentListComponent)\n  documentList: DocumentListComponent;\n\n  title = 'Page';\n  infoDrawerOpened$: Observable<boolean>;\n  node: Node;\n  selection: SelectionState;\n  actions: Array<ContentActionRef> = [];\n  viewerToolbarActions: Array<ContentActionRef> = [];\n  bulkActions: ContentActionRef[] = [];\n  canUpdateNode = false;\n  canUpload = false;\n  nodeResult: NodePaging;\n  showHeader: ShowHeaderMode = ShowHeaderMode.Data;\n  filterSorting = 'name-asc';\n  createActions: ContentActionRef[] = [];\n  isSmallScreen = false;\n  selectedRowItemsCount = 0;\n  selectedNodesState: SelectionState;\n\n  protected documentListService = inject(DocumentListService);\n  protected settings = inject(AppSettingsService);\n  protected extensions = inject(AppExtensionService);\n  protected content = inject(DocumentBasePageService);\n  protected store = inject<Store<AppStore>>(Store<AppStore>);\n  protected breakpointObserver = inject(BreakpointObserver);\n  protected uploadService = inject(UploadService);\n  protected router = inject(Router);\n  protected userPreferencesService = inject(UserPreferencesService);\n  protected searchAiService = inject(SearchAiService);\n\n  protected readonly destroyRef = inject(DestroyRef);\n\n  private readonly autoDownloadService = inject(AutoDownloadService, { optional: true });\n  private readonly navigationHistoryService = inject(NavigationHistoryService);\n\n  protected subscriptions: Subscription[] = [];\n\n  private _searchAiInputState: SearchAiInputState = {\n    active: false\n  };\n\n  get searchAiInputState(): SearchAiInputState {\n    return this._searchAiInputState;\n  }\n\n  ngOnInit() {\n    this.extensions\n      .getCreateActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.createActions = actions;\n      });\n\n    this.infoDrawerOpened$ = this.store.select(isInfoDrawerOpened);\n\n    this.store\n      .select(getAppSelection)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((selection) => {\n        this.selection = selection;\n        this.canUpdateNode = this.selection.count === 1 && this.content.canUpdateNode(selection.first);\n      });\n\n    this.extensions\n      .getAllowedToolbarActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.actions = actions;\n      });\n\n    this.extensions\n      .getBulkActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.bulkActions = actions;\n      });\n\n    this.extensions\n      .getViewerToolbarActions()\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((actions) => {\n        this.viewerToolbarActions = actions;\n      });\n\n    this.store\n      .select(getCurrentFolder)\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((node) => {\n        this.canUpload = node && this.content.canUploadContent(node);\n      });\n\n    this.breakpointObserver\n      .observe([Breakpoints.HandsetPortrait, Breakpoints.HandsetLandscape])\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((result) => {\n        this.isSmallScreen = result.matches;\n      });\n\n    this.searchAiService.toggleSearchAiInput$\n      .pipe(takeUntilDestroyed(this.destroyRef))\n      .subscribe((searchAiInputState) => (this._searchAiInputState = searchAiInputState));\n\n    this.setKnowledgeRetrievalState();\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    if (changes.nodeResult?.currentValue) {\n      this.nodeResult = changes.nodeResult.currentValue;\n    }\n  }\n\n  ngOnDestroy() {\n    this.subscriptions.forEach((subscription) => subscription.unsubscribe());\n    this.subscriptions = [];\n\n    this.store.dispatch(new SetSelectedNodesAction([]));\n  }\n\n  showPreview(node: NodeEntry, extras?: ViewNodeExtras) {\n    if (node?.entry) {\n      if (!this.settings.autoDownloadEnabled || !this.autoDownloadService.tryDownload(node, this.settings.authDownloadThreshold)) {\n        let id: string;\n\n        if (node.entry.nodeType === 'app:filelink') {\n          id = node.entry.properties['cm:destination'];\n        } else {\n          id = (node as any).entry.nodeId || (node as any).entry.guid || node.entry.id;\n        }\n\n        this.store.dispatch(new ViewNodeAction(id, extras));\n      }\n    }\n  }\n\n  onSelectedItemsCountChanged(count: number) {\n    this.selectedRowItemsCount = count;\n  }\n\n  getParentNodeId(): string {\n    return this.node ? this.node.id : null;\n  }\n\n  imageResolver(row: ShareDataRow): string | null {\n    if (row) {\n      if (isLocked(row.node)) {\n        return 'material-icons://lock';\n      }\n\n      if (isLibrary(row.node)) {\n        return 'material-icons://library_books';\n      }\n    }\n\n    return null;\n  }\n\n  reload(selectedNode?: NodeEntry): void {\n    if (this.isOutletPreviewUrl()) {\n      return;\n    }\n\n    this.documentListService.reload();\n    if (selectedNode) {\n      this.store.dispatch(new SetSelectedNodesAction([selectedNode]));\n    }\n  }\n\n  trackByActionId(_: number, action: ContentActionRef) {\n    return action.id;\n  }\n\n  trackById(_: number, obj: { id: string }) {\n    return obj.id;\n  }\n\n  trackByColumnId(_: number, obj: DocumentListPresetRef): string {\n    return obj.id;\n  }\n\n  private setKnowledgeRetrievalState() {\n    const nodes = this.userPreferencesService.get('knowledgeRetrievalNodes');\n    if (nodes && this.navigationHistoryService.shouldReturnLastSelection('/knowledge-retrieval')) {\n      this.selectedNodesState = JSON.parse(nodes);\n    }\n\n    if (!this.selectedNodesState && !this.router.url.startsWith('/knowledge-retrieval')) {\n      this.searchAiService.updateSearchAiInputState({\n        active: false\n      });\n    }\n  }\n\n  private isOutletPreviewUrl(): boolean {\n    return location.href.includes('viewer:view');\n  }\n\n  @HostListener('sorting-changed', ['$event'])\n  onSortingChanged(event: any) {\n    this.filterSorting = event.detail.key + '-' + event.detail.direction;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './mime-types';\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, HostListener, inject, Input, OnInit } from '@angular/core';\nimport { debounceTime } from 'rxjs/operators';\nimport { Subject } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppStore, ContextMenu, CustomContextMenu } from '@alfresco/aca-shared/store';\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n  standalone: true,\n  selector: '[acaContextActions]',\n  exportAs: 'acaContextActions'\n})\nexport class ContextActionsDirective implements OnInit {\n  private readonly store = inject<Store<AppStore>>(Store);\n\n  // eslint-disable-next-line\n  @Input('acaContextEnable')\n  enabled = true;\n\n  @Input()\n  customActions: ContentActionRef[] = [];\n\n  @HostListener('contextmenu', ['$event'])\n  onContextMenuEvent(event: MouseEvent) {\n    if (event) {\n      event.preventDefault();\n\n      if (this.enabled) {\n        const target = this.getTarget(event);\n        if (target) {\n          this.execute(event, target);\n        }\n      }\n    }\n  }\n\n  private readonly execute$: Subject<any> = new Subject();\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.execute$.pipe(debounceTime(300), takeUntilDestroyed(this.destroyRef)).subscribe((event: MouseEvent) => {\n      if (this.customActions?.length) {\n        this.store.dispatch(new CustomContextMenu(event, this.customActions));\n      } else {\n        this.store.dispatch(new ContextMenu(event));\n      }\n    });\n  }\n  execute(event: MouseEvent, target: Element) {\n    if (!this.isSelected(target)) {\n      target.dispatchEvent(new MouseEvent('click'));\n    }\n\n    if (this.isEmptyTable(target)) {\n      return null;\n    }\n\n    this.execute$.next(event);\n  }\n\n  private getTarget(event: MouseEvent): Element {\n    const target = event.target as Element;\n    return this.findAncestor(target, 'adf-datatable-cell');\n  }\n\n  private isSelected(target: Element): boolean {\n    if (!target) {\n      return false;\n    }\n\n    return this.findAncestor(target, 'adf-datatable-row').classList.contains('adf-is-selected');\n  }\n\n  private isEmptyTable(target: Element): boolean {\n    return this.findAncestor(target, 'adf-datatable-cell').classList.contains('adf-no-content-container');\n  }\n\n  private findAncestor(el: Element, className: string): Element {\n    while (el && !el.classList.contains(className)) {\n      el = el.parentElement;\n    }\n    return el;\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { DestroyRef, Directive, inject, OnInit } from '@angular/core';\nimport { AppConfigService, PaginationComponent, PaginationModel, UserPreferencesService } from '@alfresco/adf-core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\n\n@Directive({\n  standalone: true,\n  selector: '[acaPagination]'\n})\nexport class PaginationDirective implements OnInit {\n  private readonly pagination = inject(PaginationComponent);\n  private readonly preferences = inject(UserPreferencesService);\n  private readonly config = inject(AppConfigService);\n\n  private readonly destroyRef = inject(DestroyRef);\n\n  ngOnInit() {\n    this.pagination.supportedPageSizes = this.config.get('pagination.supportedPageSizes');\n    this.pagination.changePageSize.pipe(takeUntilDestroyed(this.destroyRef)).subscribe((event: PaginationModel) => {\n      this.preferences.paginationSize = event.maxItems;\n    });\n  }\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ContentActionRef } from '@alfresco/adf-extensions';\nimport { Route } from '@angular/router';\n\nexport interface ExtensionRoute extends Route {\n  parentRoute?: string;\n}\n\nexport interface Badge extends Partial<Pick<ContentActionRef, 'component' | 'actions' | 'rules'>> {\n  id: string;\n  icon: string;\n  tooltip: string;\n}\n\nexport interface UserProfileSection extends Partial<Pick<ContentActionRef, 'component' | 'rules'>> {\n  id: string;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport interface ViewerRules {\n  /**\n   * Checks if user can preview the node.\n   */\n  canPreview?: string;\n\n  /**\n   * Shows navigation options\n   */\n  showNavigation?: string;\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { CanActivateFn } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { Store } from '@ngrx/store';\nimport { AppStore, isQuickShareEnabled } from '@alfresco/aca-shared/store';\n\nexport const AppSharedRuleGuard: CanActivateFn = (): Observable<boolean> => {\n  const store = inject(Store<AppStore>);\n  return store.select(isQuickShareEnabled);\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { ActivatedRouteSnapshot, Router, CanActivateFn } from '@angular/router';\nimport { inject } from '@angular/core';\nimport { AppConfigService } from '@alfresco/adf-core';\n\nexport const PluginEnabledGuard: CanActivateFn = (route: ActivatedRouteSnapshot) => {\n  const appConfigService = inject(AppConfigService);\n  const router = inject(Router);\n\n  const isPluginEnabled = appConfigService.get(route.data.plugin, true);\n\n  if (!isPluginEnabled) {\n    router.navigate(['/']);\n  }\n\n  return isPluginEnabled;\n};\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport { SiteEntry } from '@alfresco/js-api';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AppHookService {\n  /**\n   * Gets emitted when user delete the node\n   */\n  nodesDeleted = new Subject<void>();\n\n  /**\n   * Gets emitted when user delete the library\n   */\n  libraryDeleted = new Subject<string>();\n\n  /**\n   * Gets emitted when user create the library\n   */\n  libraryCreated = new Subject<SiteEntry>();\n\n  /**\n   * Gets emitted when user update the library\n   */\n  libraryUpdated = new Subject<SiteEntry>();\n\n  /**\n   * Gets emitted when library update fails\n   */\n  libraryUpdateFailed = new Subject<void>();\n\n  /**\n   * Gets emitted when user join the library\n   */\n  libraryJoined = new Subject<void>();\n\n  /**\n   * Gets emitted when user left the library\n   */\n  libraryLeft = new Subject<string>();\n\n  /**\n   * Gets emitted when library throws 400 error code\n   */\n  library400Error = new Subject<void>();\n\n  /**\n   * Gets emitted when user join the library\n   */\n  joinLibraryToggle = new Subject<void>();\n\n  /**\n   * Gets emitted when user unlink the node\n   */\n  linksUnshared = new Subject<void>();\n\n  /**\n   * Gets emitted when user mark the favorite library\n   */\n  favoriteLibraryToggle = new Subject<void>();\n}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nimport { Injectable, NgModule } from '@angular/core';\nimport { NoopAnimationsModule } from '@angular/platform-browser/animations';\nimport { NoopTranslateModule } from '@alfresco/adf-core';\nimport { AlfrescoApiService, AlfrescoApiServiceMock } from '@alfresco/adf-content-services';\nimport { provideHttpClient, withInterceptorsFromDi } from '@angular/common/http';\nimport { RouterTestingModule } from '@angular/router/testing';\nimport { provideEffects } from '@ngrx/effects';\nimport { provideStore } from '@ngrx/store';\nimport { MatIconTestingModule } from '@angular/material/icon/testing';\nimport { OverlayModule } from '@angular/cdk/overlay';\nimport { RepositoryInfo, VersionInfo } from '@alfresco/js-api';\nimport { BehaviorSubject, Observable, of } from 'rxjs';\nimport { DocumentBasePageService } from '../../public-api';\n\nexport const initialState = {\n  app: {\n    appName: 'Alfresco Content Application',\n    logoPath: 'assets/images/updated-alfresco-logo.svg',\n    sharedUrl: '',\n    user: {\n      isAdmin: null,\n      id: null,\n      firstName: '',\n      lastName: ''\n    },\n    selection: {\n      nodes: [],\n      libraries: [],\n      isEmpty: true,\n      count: 0\n    },\n    navigation: {\n      currentFolder: null\n    },\n    infoDrawerOpened: false,\n    infoDrawerMetadataAspect: '',\n    showFacetFilter: true,\n    repository: {\n      status: {\n        isQuickShareEnabled: true\n      }\n    } as any\n  }\n};\n\nexport const discoveryApiServiceMockValue = {\n  ecmProductInfo$: new BehaviorSubject<RepositoryInfo | null>(null),\n  getEcmProductInfo: (): Observable<RepositoryInfo> =>\n    of(\n      new RepositoryInfo({\n        version: {\n          major: '10.0.0'\n        } as VersionInfo\n      })\n    )\n};\n\n@Injectable()\nexport class DocumentBasePageServiceMock extends DocumentBasePageService {\n  canUpdateNode(): boolean {\n    return true;\n  }\n\n  canUploadContent(): boolean {\n    return true;\n  }\n}\n\n@NgModule({\n  imports: [NoopAnimationsModule, NoopTranslateModule, RouterTestingModule, MatIconTestingModule, OverlayModule],\n  providers: [\n    provideStore(\n      { app: null },\n      {\n        initialState,\n        runtimeChecks: {\n          strictStateImmutability: false,\n          strictActionImmutability: false\n        }\n      }\n    ),\n    provideEffects([]),\n    { provide: AlfrescoApiService, useClass: AlfrescoApiServiceMock },\n    provideHttpClient(withInterceptorsFromDi())\n  ]\n})\nexport class LibTestingModule {}\n","/*!\n * Copyright © 2005-2025 Hyland Software, Inc. and its affiliates. All rights reserved.\n *\n * Alfresco Example Content Application\n *\n * This file is part of the Alfresco Example Content Application.\n * If the software was purchased under a paid Alfresco license, the terms of\n * the paid license agreement will prevail. Otherwise, the software is\n * provided under the following open source license terms:\n *\n * The Alfresco Example Content Application is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Lesser General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * The Alfresco Example Content Application is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Lesser General Public License for more details.\n *\n * You should have received a copy of the GNU Lesser General Public License\n * from Hyland Software. If not, see <http://www.gnu.org/licenses/>.\n */\n\nexport * from './lib/adf-extensions/extensions-data-loader.guard';\nexport * from './lib/components/page-layout/page-layout-content.component';\nexport * from './lib/components/page-layout/page-layout-error.component';\nexport * from './lib/components/page-layout/page-layout-header.component';\nexport * from './lib/components/page-layout/page-layout.component';\nexport * from './lib/components/page-layout/page-layout.module';\nexport * from './lib/components/locked-by/locked-by.component';\nexport * from './lib/components/generic-error/generic-error.component';\nexport * from './lib/components/toolbar/toolbar.component';\nexport * from './lib/components/toolbar/toolbar-action/toolbar-action.component';\nexport * from './lib/components/toolbar/toolbar-button/toolbar-button.component';\nexport * from './lib/components/toolbar/toolbar-menu/toolbar-menu.component';\nexport * from './lib/components/toolbar/toolbar-menu-item/toolbar-menu-item.component';\nexport * from './lib/components/info-drawer/info-drawer.component';\nexport * from './lib/components/document-base-page/document-base-page.component';\nexport * from './lib/components/document-base-page/document-base-page.service';\nexport * from './lib/components/open-in-app/open-in-app.component';\nexport * from './lib/constants';\n\nexport * from './lib/directives/contextmenu/contextmenu.directive';\nexport * from './lib/directives/pagination.directive';\n\nexport * from './lib/models/types';\nexport * from './lib/models/viewer.rules';\n\nexport * from './lib/routing/shared.guard';\nexport * from './lib/routing/plugin-enabled.guard';\n\nexport * from './lib/services/app.service';\nexport * from './lib/services/content-api.service';\nexport * from './lib/services/node-permission.service';\nexport * from './lib/services/app.extension.service';\nexport * from './lib/services/router.extension.service';\nexport * from './lib/services/app-hook.service';\nexport * from './lib/services/auto-download.service';\nexport * from './lib/services/app-settings.service';\nexport * from './lib/services/user-profile.service';\nexport * from './lib/services/navigation-history.service';\n\nexport * from './lib/testing/lib-testing-module';\n\nexport * from './lib/utils/node.utils';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3","AdfInfoDrawerComponent"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,6BAA6B,GAAG,MAAM;MAEtC,sBAAsB,GAAG,IAAI,cAAc,CAA4B,wBAAwB,EAAE;AAC5G,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE;AACV,CAAA;AAED,IAAI,OAAO,GAAG,KAAK;AAEZ,MAAM,yBAAyB,GAAkB,CAAC,KAA6B,KAAyB;AAC7G,IAAA,MAAM,oBAAoB,GAAG,MAAM,CAAC,sBAAsB,CAAC;IAC3D,IAAI,CAAC,OAAO,EAAE;AACZ,QAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE;YAChC,OAAO,GAAG,IAAI;AACd,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB;AAEA,QAAA,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC;;;;AAKnF,QAAA,OAAO,QAAQ,CAAC,GAAG,mBAAmB,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,MAAM,IAAI,CAAC,EACf,GAAG,CAAC,OAAO,OAAO,GAAG,IAAI,CAAC,CAAC,EAC3B,UAAU,CAAC,CAAC,CAAC,KAAI;;AAEf,YAAA,OAAO,CAAC,KAAK,CAAC,4DAA4D,CAAC;;AAE3E,YAAA,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAChB,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC;QACjB,CAAC,CAAC,CACH;IACH;SAAO;AACL,QAAA,OAAO,EAAE,CAAC,IAAI,CAAC;IACjB;AACF;AAEO,MAAM,YAAY,GAAG,MAAK;IAC/B,OAAO,GAAG,KAAK;AACjB;;ACvEA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,0BAA0B,CAAA;AARvC,IAAA,WAAA,GAAA;QAWE,IAAA,CAAA,UAAU,GAAG,KAAK;AACnB,IAAA;+GAJY,0BAA0B,EAAA,IAAA,EAAA,EAAA,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,yOAL3B,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKf,0BAA0B,EAAA,UAAA,EAAA,CAAA;kBARtC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACnC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,yBAAyB;AACzC,iBAAA;8BAIC,UAAU,EAAA,CAAA;sBAFT;;sBACA,WAAW;uBAAC,sBAAsB;;;ACrCrC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,wBAAwB,CAAA;+GAAxB,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oIALzB,CAAA,cAAA,CAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKf,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,uBAAuB;AACjC,oBAAA,QAAQ,EAAE,CAAA,cAAA,CAAgB;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB;AACvC,iBAAA;;;AClCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIH;MASa,yBAAyB,CAAA;+GAAzB,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAzB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,yBAAyB,sIAL1B,gBAAgB,EAAA,QAAA,EAAA,IAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKf,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBARrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,wBAAwB;AAClC,oBAAA,QAAQ,EAAE,gBAAgB;oBAC1B,aAAa,EAAE,iBAAiB,CAAC,IAAI;oBACrC,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAC/C,oBAAA,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB;AACxC,iBAAA;;;MC4BY,iBAAiB,CAAA;AAH9B,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAiR9D,IAAA;AAjPC;;;;;;AAMG;AACH,IAAA,UAAU,CAAC,MAAc,EAAE,OAAA,GAAmC,EAAE,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxD;AAEA;;;;;;AAMG;AACH,IAAA,OAAO,CAAC,MAAc,EAAE,OAAA,GAAe,EAAE,EAAA;AACvC,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,YAAY;SACnF;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAErD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC1D;IAEA,WAAW,CAAC,MAAc,EAAE,OAAa,EAAA;AACvC,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,CAAC,YAAY,EAAE,qBAAqB,EAAE,MAAM,EAAE,YAAY;SACpE;AACD,QAAA,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,IAAI,EAAE,CAAC;QAE3D,OAAO,IAAI,CACT,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,KAAI;AACpC,YAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,IAAI,CAC9C,CAAC,SAAoB,KAAI;AACvB,gBAAA,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;AAC1B,YAAA,CAAC,EACD,CAAC,KAAK,KAAI;gBACR,MAAM,CAAC,KAAK,CAAC;AACf,YAAA,CAAC,CACF;QACH,CAAC,CAAC,CACH;IACH;AAEA;;;;;;AAMG;AACH,IAAA,eAAe,CAAC,MAAc,EAAE,OAAA,GAAe,EAAE,EAAA;AAC/C,QAAA,MAAM,QAAQ,GAAG;AACf,YAAA,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,cAAc;AACzC,YAAA,SAAS,EAAE,CAAC;YACZ,OAAO,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,qBAAqB,EAAE,aAAa;SACjF;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;AAErD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACnE;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3D;IAEA,eAAe,CAAC,UAAe,EAAE,EAAA;AAC/B,QAAA,MAAM,QAAQ,GAAG;YACf,OAAO,EAAE,CAAC,MAAM;SACjB;QACD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC;QAErD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAC9D;AAEA,IAAA,WAAW,CAAC,MAAc,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC1D;AAEA,IAAA,gBAAgB,CAAC,MAAc,EAAA;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACzD;AAEA;;;;;;AAMG;IACH,SAAS,CAAC,QAAgB,EAAE,OAAoC,EAAA;AAC9D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D;AAEA;;;;;;;AAOG;AACH,IAAA,QAAQ,CAAC,MAAc,EAAE,cAAsB,EAAE,IAAa,EAAE,IAA0D,EAAA;AACxH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC7E;AAEA;;;;AAIG;IACH,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,wBAAwB,EAAE,CAAC;IAC3D;IAEA,YAAY,CACV,QAAgB,EAChB,IAKC,EAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9D;AAEA,IAAA,oBAAoB,CAAC,QAAA,GAAmB,MAAM,EAAE,IAAU,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;AACjC,YAAA,GAAG,IAAI;AACP,YAAA,KAAK,EAAE;SACR,CAAC,CAAC,IAAI,CACL,GAAG,CAAC,CAAC,QAAwB,MAAM;AACjC,YAAA,IAAI,EAAE;AACJ,gBAAA,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAO,KAAI;oBACpD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;oBAC7C,OAAO;AACL,wBAAA,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;qBACrB;AACH,gBAAA,CAAC,CAAC;AACF,gBAAA,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;AAC3B;SACF,CAAC,CAAC,CACJ;IACH;AAEA,IAAA,eAAe,CAAC,IAAU,EAAA;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACxD;IAEA,oBAAoB,CAAC,QAAgB,EAAE,UAAoB,EAAA;QACzD,OAAO,IAAI,CAAC,UAAU,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,CAAC;IACtE;AAEA,IAAA,MAAM,CAAC,OAAsB,EAAA;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7C;IAEA,aAAa,CAAC,MAAc,EAAE,UAAoB,EAAA;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC;IAC1D;AAEA,IAAA,oBAAoB,CAAC,MAAc,EAAE,SAAiB,EAAE,UAAoB,EAAA;AAC1E,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;IAC5E;IAEA,UAAU,CAAC,MAAe,EAAE,IAA8B,EAAA;AACxD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACrD;AAEA,IAAA,SAAS,CAAC,MAAe,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjE;IAEA,UAAU,CACR,QAAwB,EACxB,IAIC,EAAA;AAED,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACvD;IAEA,OAAO,CAAC,MAAe,EAAE,IAA4D,EAAA;AACnF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAClD;IAEA,aAAa,CAAC,MAAc,EAAE,QAAwB,EAAA;AACpD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzD;AAEA,IAAA,WAAW,CAAC,KAAuB,EAAA;QACjC,MAAM,OAAO,GAAyB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,KAAI;YACvD,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,KAAY;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACjC,YAAA,MAAM,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM;AAC3D,YAAA,MAAM,IAAI,GAAG,MAAM,IAAI,MAAM,IAAI,EAAE;YAEnC,OAAO;AACL,gBAAA,MAAM,EAAE;oBACN,CAAC,IAAI,GAAG;wBACN;AACD;AACF;aACF;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,OAAc,CAAC,CAAC;IACvE;AAEA,IAAA,cAAc,CAAC,KAAuB,EAAA;AACpC,QAAA,OAAO,IAAI,CACT,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,CAAC,IAAS,KAAI;AACtB,YAAA,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;YAC7C,OAAO,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,MAAM,EAAE,EAAE,CAAC;QACrD,CAAC,CAAC,CACH,CACF;IACH;IAEA,UAAU,CAAC,MAAc,EAAE,IAAU,EAAA;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC;IAC/C;IAEA,eAAe,CAAC,MAAc,EAAE,IAAU,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAChE;AAEA,IAAA,0BAA0B,CAAC,MAAc,EAAA;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC3D;IAEA,6BAA6B,CAAC,MAAc,EAAE,SAAiB,EAAA;AAC7D,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzE;+GAlRW,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAjB,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,iBAAiB,cAFhB,MAAM,EAAA,CAAA,CAAA;;AAOV,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,QAAQ;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,WAAW;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;AAGzB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,cAAc;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,gBAAA,EAAA,KAAA,CAAA,CAAA;AAG/B,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,YAAY;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAG3B,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,YAAY;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,cAAA,EAAA,KAAA,CAAA,CAAA;AAG3B,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,UAAU;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,YAAA,EAAA,KAAA,CAAA,CAAA;AAGvB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,QAAQ;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,KAAA,CAAA,CAAA;AAGnB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,SAAS;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,SAAS;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;AAGrB,UAAA,CAAA;AADP,IAAA,OAAO,CAAC,CAAC,IAAuB,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzD,WAAW;AAAC,CAAA,EAAA,iBAAA,CAAA,SAAA,EAAA,aAAA,EAAA,KAAA,CAAA,CAAA;4FAhCtB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAH7B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;AAMS,SAAA,CAAA,EAAA,cAAA,EAAA,EAAA,QAAQ,MAGR,WAAW,EAAA,EAAA,EAGX,cAAc,EAAA,EAAA,EAGd,YAAY,EAAA,EAAA,EAGZ,YAAY,EAAA,EAAA,EAGZ,UAAU,MAGV,QAAQ,EAAA,EAAA,EAGR,SAAS,EAAA,EAAA,EAGT,SAAS,MAGT,WAAW,EAAA,EAAA,EAAA,EAAA,CAAA;;AC9FrB;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,sBAAsB,CAAA;AAHnC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACrB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAExD,QAAA,IAAA,CAAA,QAAQ,GAAG;AACT,YAAA,MAAM,EAAE,iBAAiB;AACzB,YAAA,IAAI,EAAE,CAAC,UAAU,EAAE,gCAAgC;SACpD;AAkEF,IAAA;IAhEC,kBAAkB,GAAA;QAChB,MAAM,mBAAmB,GAAG,EAAE;QAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC,OAAO,CAAC,CAAC,cAA8B,KAAI;AACrE,YAAA,IAAI,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAC,EAAE;gBAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;gBAC9D,IAAI,WAAW,EAAE;AACf,oBAAA,IAAI,CAAC,4BAA4B,CAAC,cAAc,CAAC;AACjD,oBAAA,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC9C;YACF;iBAAO;AACL,gBAAA,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;YAC1C;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,mBAAmB,CAAC;IACpD;IAEO,oBAAoB,GAAA;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC1C,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YAEnH,OAAO;gBACL,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,gBAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;AACtE,gBAAA,gBAAgB,EAAE,MAAM;AACxB,gBAAA,WAAW,EAAE,MAAM;gBACnB,WAAW,EAAE,KAAK,CAAC,WAAW;AAC9B,gBAAA,QAAQ,EAAE;AACR,oBAAA,IAAI,KAAK,CAAC,UAAU;0BAChB,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;4BAC5D,IAAI;4BACJ,MAAM;4BACN,IAAI;AACJ,4BAAA,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,SAAS;AAC3C,yBAAA,CAAC;0BACF,EAAE,CAAC;AACP,oBAAA;AACE,wBAAA,IAAI,EAAE,EAAE;wBACR,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,SAAS,CAAC;wBACjD,IAAI,EAAE,KAAK,CAAC;AACb;AACF;aACF;AACH,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,gBAAgB,CAAC,EAAU,EAAA;QACjC,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC7C;AAEQ,IAAA,sBAAsB,CAAC,KAAqB,EAAA;AAClD,QAAA,OAAO,KAAK,CAAC,WAAW,KAAK,SAAS;IACxC;AAEQ,IAAA,4BAA4B,CAAC,cAA8B,EAAA;QACjE,OAAO,cAAc,CAAC,WAAW;QACjC,OAAO,cAAc,CAAC,SAAS;IACjC;AAEQ,IAAA,SAAS,CAAC,WAAW,EAAA;QAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC;QAEtF,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;IACvC;+GAxEW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAtB,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,sBAAsB,cAFrB,MAAM,EAAA,CAAA,CAAA;;4FAEP,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAqBU,kBAAkB,CAAA;AAQ7B,IAAA,WAAA,GAAA;AAPA,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAyB,eAAe,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAmC,YAAY,CAAC;QAIzE,IAAA,CAAA,MAAM,GAA+B,MAAM;AAGhD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI;QAEtB,IAAI,IAAI,EAAE;AACR,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;AACnC,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW;QACrC;IACF;IAEA,SAAS,GAAA;QACP,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;IAC9C;IAEA,cAAc,GAAA;QACZ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW;IAC9C;IAEA,aAAa,GAAA;QACX,MAAM,IAAI,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;QACzC,cAAc,CAAC,OAAO,CAAC,gCAAgC,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;IACrB;+GA7BW,kBAAkB,EAAA,IAAA,EAAA,EAAA,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,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC3C/B,khCAsBA,EAAA,MAAA,EAAA,CAAA,gvCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDeY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,EAAE,UAAU,8BAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,cAAA,EAAA,QAAA,EAAA,sCAAA,EAAA,MAAA,EAAA,CAAA,YAAA,EAAA,MAAA,EAAA,kBAAA,EAAA,gBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMvF,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,CAAC,EAAA,QAAA,EACzF,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,khCAAA,EAAA,MAAA,EAAA,CAAA,gvCAAA,CAAA,EAAA;;;AEzCvC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,2BAA2B,CAAA;AAHxC,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAmG5C,IAAA;AAjGC,IAAA,IAAI,WAAW,GAAA;QACb,MAAM,YAAY,GAAG,sEAAsE;QAC3F,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,6BAA6B,EAAE,YAAY,CAAC;IAC7E;AAEA,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,gCAAgC,EAAE,EAAE,CAAC;IACtE;AAEA,IAAA,oBAAoB,CAAC,GAAW,EAAA;AAC9B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,2BAA2B,EAAE,WAAW,CAAC;QAChF,OAAO,MAAM,GAAG,GAAG;IACrB;AAEA,IAAA,qBAAqB,CAAC,GAAW,EAAA;AAC/B,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,iCAAiC,EAAE,YAAY,CAAC;AACvF,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAS,iCAAiC,EAAE,gEAAgE,CAAC;AAC3I,QAAA,OAAO,MAAM,GAAG,GAAG,GAAG,MAAM;IAC9B;IAEA,wBAAwB,GAAA;AACtB,QAAA,MAAM,GAAG,GAAW,IAAI,CAAC,aAAa,EAAE;QACxC,MAAM,WAAW,GAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC7C,IAAI,eAAe,GAAG,EAAE;QACxB,IAAI,UAAU,GAAG,KAAK;QACtB,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,SAAS,EAAE;AACrD,YAAA,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;AACxC,YAAA,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;QACtH;QACA,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,CAAC,4BAA4B,EAAE;QACrC;IACF;IAEA,4BAA4B,GAAA;QAC1B,MAAM,WAAW,GAAW,cAAc,CAAC,OAAO,CAAC,gCAAgC,CAAC;AACpF,QAAA,IAAI,WAAW,KAAK,IAAI,EAAE;YACxB,MAAM,WAAW,GAAW,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE;AAChD,YAAA,MAAM,oBAAoB,GAAW,UAAU,CAAC,WAAW,CAAC;AAC5D,YAAA,MAAM,cAAc,GAAW,CAAC,WAAW,GAAG,oBAAoB,KAAK,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;AAEtF,YAAA,IAAI,cAAc,GAAG,IAAI,CAAC,cAAc,EAAE;gBACxC,IAAI,CAAC,sBAAsB,EAAE;gBAC7B,IAAI,CAAC,gCAAgC,EAAE;YACzC;QACF;aAAO;YACL,IAAI,CAAC,gCAAgC,EAAE;QACzC;IACF;IAEA,gCAAgC,GAAA;QAC9B,MAAM,EAAE,GAAW,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE;QACpD,MAAM,SAAS,GAAY,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AACrD,QAAA,MAAM,cAAc,GAAG,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC;AACxG,QAAA,MAAM,KAAK,GAAY,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,cAAc;AACxH,QAAA,MAAM,UAAU,GAAW,IAAI,CAAC,aAAa,EAAE;AAE/C,QAAA,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC;QAC1D;AAAO,aAAA,IAAI,SAAS,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;QAC3D;AAEA,QAAA,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC/D,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC;QACrD;IACF;IAEA,UAAU,CAAC,WAAmB,EAAE,WAAoB,EAAA;AAClD,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE;AACpD,gBAAA,IAAI,EAAE;oBACJ,WAAW;oBACX;AACD,iBAAA;AACD,gBAAA,WAAW,EAAE,KAAK;AAClB,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG;AACxB,aAAA,CAAC;QACJ;IACF;IAEA,sBAAsB,GAAA;AACpB,QAAA,cAAc,CAAC,UAAU,CAAC,gCAAgC,CAAC;IAC7D;IAEA,aAAa,GAAA;AACX,QAAA,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI;IAC7B;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;QACvB;IACF;+GAtGW,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,cAF1B,MAAM,EAAA,CAAA,CAAA;;4FAEP,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBAHvC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AASI,MAAM,gBAAgB,GAAuB;AAClD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,aAAa,EAAE;AAC/E,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,WAAW,EAAE;AAC3E,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACvF,IAAA,EAAE,KAAK,EAAE,oDAAoD,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,8CAA8C,EAAE,KAAK,EAAE,aAAa,EAAE;AAC/E,IAAA,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,6DAA6D,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5F,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,gCAAgC,EAAE;AACnF,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAC5F,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,6BAA6B,EAAE;AAC9F,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,8BAA8B,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,yBAAyB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC9D,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,oBAAoB,EAAE;AACzD,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,gBAAgB,EAAE;AAC9D,IAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAClE,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,0BAA0B,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC9E,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,cAAc,EAAE;AAC3D,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACxE,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,qBAAqB,EAAE;AACxE,IAAA,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACpE,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACnD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,aAAa,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAC1E,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,cAAc,EAAE;AAC7C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,8BAA8B,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAE,MAAM,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,EAAE;AAC3C,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,qBAAqB,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,cAAc,EAAE;AACrD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,eAAe,EAAE;AAC7D,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE;AACrC,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,sBAAsB,EAAE;AAClE,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,cAAc,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,YAAY,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,YAAY,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,aAAa,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/C,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,UAAU,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/C,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,mEAAmE,EAAE,KAAK,EAAE,sBAAsB,EAAE;AAC7G,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,6BAA6B,EAAE;AACjG,IAAA,EAAE,KAAK,EAAE,uDAAuD,EAAE,KAAK,EAAE,sCAAsC,EAAE;AACjH,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,6CAA6C,EAAE;AACjH,IAAA,EAAE,KAAK,EAAE,mDAAmD,EAAE,KAAK,EAAE,sDAAsD,EAAE;AAC7H,IAAA,EAAE,KAAK,EAAE,sEAAsE,EAAE,KAAK,EAAE,+BAA+B,EAAE;AACzH,IAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,2BAA2B,EAAE;AAC3E,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACzE,IAAA,EAAE,KAAK,EAAE,2EAA2E,EAAE,KAAK,EAAE,2BAA2B,EAAE;AAC1H,IAAA,EAAE,KAAK,EAAE,qDAAqD,EAAE,KAAK,EAAE,kCAAkC,EAAE;AAC3G,IAAA,EAAE,KAAK,EAAE,4DAA4D,EAAE,KAAK,EAAE,sDAAsD,EAAE;AACtI,IAAA,EAAE,KAAK,EAAE,wDAAwD,EAAE,KAAK,EAAE,+DAA+D,EAAE;AAC3I,IAAA,EAAE,KAAK,EAAE,qDAAqD,EAAE,KAAK,EAAE,+CAA+C,EAAE;AACxH,IAAA,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,oDAAoD,EAAE;AACjI,IAAA,EAAE,KAAK,EAAE,oEAAoE,EAAE,KAAK,EAAE,iCAAiC,EAAE;AACzH,IAAA,EAAE,KAAK,EAAE,wEAAwE,EAAE,KAAK,EAAE,sCAAsC,EAAE;AAClI,IAAA,EAAE,KAAK,EAAE,uEAAuE,EAAE,KAAK,EAAE,oCAAoC,EAAE;AAC/H,IAAA,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACnE,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,wDAAwD,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACnH,IAAA,EAAE,KAAK,EAAE,wDAAwD,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACnH,IAAA,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,wCAAwC,EAAE;AACrH,IAAA,EAAE,KAAK,EAAE,2CAA2C,EAAE,KAAK,EAAE,yBAAyB,EAAE;AACxF,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,0BAA0B,EAAE;AAC1F,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,yEAAyE,EAAE,KAAK,EAAE,qBAAqB,EAAE;AAClH,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,4CAA4C,EAAE;AAClH,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,qDAAqD,EAAE;AAC3H,IAAA,EAAE,KAAK,EAAE,yEAAyE,EAAE,KAAK,EAAE,8BAA8B,EAAE;AAC3H,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;AAC5D,IAAA,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAClF,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACxF,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACvF,IAAA,EAAE,KAAK,EAAE,sDAAsD,EAAE,KAAK,EAAE,+BAA+B,EAAE;AACzG,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACtF,IAAA,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAClF,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,8BAA8B,EAAE;AAClG,IAAA,EAAE,KAAK,EAAE,iDAAiD,EAAE,KAAK,EAAE,2BAA2B,EAAE;AAChG,IAAA,EAAE,KAAK,EAAE,0DAA0D,EAAE,KAAK,EAAE,oCAAoC,EAAE;AAClH,IAAA,EAAE,KAAK,EAAE,gDAAgD,EAAE,KAAK,EAAE,0BAA0B,EAAE;AAC9F,IAAA,EAAE,KAAK,EAAE,yDAAyD,EAAE,KAAK,EAAE,mCAAmC,EAAE;AAChH,IAAA,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,oCAAoC,EAAE;AACjG,IAAA,EAAE,KAAK,EAAE,kDAAkD,EAAE,KAAK,EAAE,4BAA4B,EAAE;AAClG,IAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,uCAAuC,EAAE,KAAK,EAAE,gDAAgD,EAAE;AAC3G,IAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,uCAAuC,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,iCAAiC,EAAE,KAAK,EAAE,0CAA0C,EAAE;AAC/F,IAAA,EAAE,KAAK,EAAE,0CAA0C,EAAE,KAAK,EAAE,mDAAmD,EAAE;AACjH,IAAA,EAAE,KAAK,EAAE,gCAAgC,EAAE,KAAK,EAAE,yCAAyC,EAAE;AAC7F,IAAA,EAAE,KAAK,EAAE,yCAAyC,EAAE,KAAK,EAAE,kDAAkD,EAAE;AAC/G,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAAqB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,cAAc,EAAE;AAC3D,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC9D,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,6BAA6B,EAAE,KAAK,EAAE,mBAAmB,EAAE;AACpE,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,oBAAoB,EAAE;AAChE,IAAA,EAAE,KAAK,EAAE,8BAA8B,EAAE,KAAK,EAAE,aAAa,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE;AAC9C,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,kBAAkB,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,WAAW,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,yBAAyB,EAAE;AAC/D,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,gCAAgC,EAAE;AACnE,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,cAAc,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,+BAA+B,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACpE,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,iBAAiB,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACtD,IAAA,EAAE,KAAK,EAAE,oCAAoC,EAAE,KAAK,EAAE,eAAe,EAAE;AACvE,IAAA,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,cAAc,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,cAAc,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,sCAAsC,EAAE,KAAK,EAAE,iBAAiB,EAAE;AAC3E,IAAA,EAAE,KAAK,EAAE,6CAA6C,EAAE,KAAK,EAAE,wBAAwB,EAAE;AACzF,IAAA,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,cAAc,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,qCAAqC,EAAE,KAAK,EAAE,gBAAgB,EAAE;AACzE,IAAA,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,uBAAuB,EAAE;AACvF,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,aAAa,EAAE;AAC3C,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,2BAA2B,EAAE,KAAK,EAAE,sBAAsB,EAAE;AACrE,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,SAAS,EAAE;AAChD,IAAA,EAAE,KAAK,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,UAAU,EAAE;AACrD,IAAA,EAAE,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,WAAW,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,EAAE;AAC5C,IAAA,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,aAAa,EAAE;AAC1D,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,OAAO,EAAE;AAClD,IAAA,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE;AACnC,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;AACpD,IAAA,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,cAAc,EAAE;AACvD,IAAA,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,YAAY,EAAE;AACxD,IAAA,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,EAAE;AAC1C,IAAA,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,gBAAgB;;;AC1NnD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAOU,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AA2ItD,IAAA;AAzIC;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;QACd,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,uBAAuB,EAAE,EAAE,CAAC;IAChE;AAEA;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,SAAS,CAAC;IAC9C;AAEA;;;AAGG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,aAAa,EAAE,iBAAiB,CAAC;IACrE;AAEA;;AAEG;AACH,IAAA,IAAI,SAAS,GAAA;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAqB,WAAW,EAAE,gBAAgB,CAAC;IAC9E;AAEA;;AAEG;AACH,IAAA,IAAI,OAAO,GAAA;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,kBAAkB,EAAE,8BAA8B,CAAC;IACvF;AAEA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,qBAAqB,EAAE,OAAO,CAAC;IACnE;AAEA;;AAEG;AACH,IAAA,IAAI,UAAU,GAAA;QACZ,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,kBAAkB,EAAE,4BAA4B,CAAC;IACrF;AAEA;;AAEG;AACH,IAAA,IAAI,aAAa,GAAA;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,eAAe,EAAE,EAAE,CAAC;IACxD;AAEA;;AAEG;AACH,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,aAAa,EAAE,EAAE,CAAC;IACtD;AAEA;;AAEG;AACH,IAAA,IAAI,YAAY,GAAA;AACd,QAAA,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,cAAc,EAAE,EAAE,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACzB,MAAM,IAAI,GAAG;QACf;AACA,QAAA,OAAO,MAAM;IACf;AAEA;;AAEG;AACH,IAAA,IAAI,yBAAyB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,KAAK,CAAC;IACpF;AAEA;;AAEG;AACH,IAAA,IAAI,gBAAgB,GAAA;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,mBAAmB,EAAE,CAAC,CAAC;IAC3D;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,mCAAmC,EAAE,IAAI,CAAC;IAC/E;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,mCAAmC,EAAE,IAAI,CAAC;IAC/E;AAEA;;AAEG;AACH,IAAA,IAAI,+BAA+B,GAAA;QACjC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,uCAAuC,EAAE,IAAI,CAAC;IACnF;AAEA;;AAEG;AACH,IAAA,IAAI,gCAAgC,GAAA;QAClC,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,wCAAwC,EAAE,IAAI,CAAC;IACpF;AAEA;;AAEG;AACH,IAAA,IAAI,yBAAyB,GAAA;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,iCAAiC,EAAE,IAAI,CAAC;IAC7E;AAEA;;AAEG;AACH,IAAA,IAAI,mBAAmB,GAAA;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,+BAA+B,EAAE,IAAI,CAAC;IAC3E;AAEA;;AAEG;AACH,IAAA,IAAI,qBAAqB,GAAA;QACvB,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAS,0CAA0C,EAAE,EAAE,CAAC;IACnF;+GA3IW,kBAAkB,EAAA,IAAA,EAAA,EAAA,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,cADL,MAAM,EAAA,CAAA,CAAA;;4FACnB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;MCGrB,kBAAkB,CAAA;AAD/B,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;AAKnC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAe,IAAI,CAAC;AACtE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAuC/C,IAAA;AArCC;;AAEG;AACH,IAAA,MAAM,eAAe,GAAA;AACnB,QAAA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,gCAAgC,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;QAEzG,MAAM,MAAM,GAAG,EAAE;QACjB,IAAI,aAAa,EAAE;AACjB,YAAA,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;QACvD;AAEA,QAAA,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;AAE9D,QAAA,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;AAClB,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,EAAE;AACtC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE;AACpC,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,QAAQ,EAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;AACrD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;AAExB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY;AACtC,QAAA,MAAM,OAAO,GAAG,YAAY,GAAG,YAAY,CAAC,OAAO,GAAG,IAAI;AAE1D,QAAA,MAAM,OAAO,GAAiB;YAC5B,SAAS;YACT,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,EAAE;YACF,MAAM;YACN;SACD;AAED,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;AAC9B,QAAA,OAAO,OAAO;IAChB;+GA9CW,kBAAkB,EAAA,IAAA,EAAA,EAAA,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,cADL,MAAM,EAAA,CAAA,CAAA;;AAML,UAAA,CAAA;AADxB,IAAA,OAAO,CAAC,CAAC,IAAwB,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;8BACzC,SAAS;AAAC,CAAA,EAAA,kBAAA,CAAA,SAAA,EAAA,WAAA,EAAA,KAAA,CAAA,CAAA;4FALnC,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;8BAMP,SAAS,EAAA,EAAA,EAAA,EAAA,CAAA;;ACpCpC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAoCH;MACa,UAAU,CAAA;AAmCrB;;;AAGG;AACH,IAAA,IAAI,eAAe,GAAA;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,sBAAsB,EAAE,KAAK,CAAC;IAChE;AAEA,IAAA,WAAA,GAAA;AA1CA,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAClC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrD,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;AACvC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACpC,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvD,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtC,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACrD,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC3C,QAAA,IAAA,CAAA,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;AACjE,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;AAEhC,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;AAK7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAC,EAAE,CAAC;;AAEtD,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAE9C,QAAA,IAAA,CAAA,cAAc,GAAsC,IAAI,eAAe,CAAC,UAAU,CAAC;AACnF,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,OAAO,EAAQ;AAEtC,QAAA,IAAA,CAAA,qBAAqB,GAAG,CAAC,WAAW,CAAC;QACrC,IAAA,CAAA,yBAAyB,GAAG,EAAE;AAW5B,QAAA,MAAM,yBAAyB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACnE,QAAA,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B;AAEpE,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC;QACjG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;QAEvC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,SAAS,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AACrB,YAAA,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,CAAC;AACpF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAK;AACjD,YAAA,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;YAClF,yBAAyB,CAAC,eAAe,EAAE;YAC3C,2BAA2B,CAAC,sBAAsB,EAAE;YACpD,2BAA2B,CAAC,WAAW,EAAE;AAC3C,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC;AACT,aAAA,IAAI,CACH,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,EACzF,GAAG,CAAC,CAAC,KAAoB,KAAK,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;AAEjE,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACnB,YAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;AAC5B,YAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;AAChC,QAAA,CAAC,CAAC;IACN;IAEA,IAAI,GAAA;AACF,QAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAwC,KAAI;YAC7F,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,uBAAuB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;gBACvG,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,EAAE;AAC5C,oBAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;AAEzB,oBAAA,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC;oBACzE,IAAI,CAAC,WAAW,EAAE;AAChB,wBAAA,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG;oBAC/B;oBAEA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE;wBAC/B,WAAW,EAAE,EAAE,WAAW;AAC3B,qBAAA,CAAC;gBACJ;YACF;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE;QACpB,IAAI,CAAC,iBAAiB,EAAE;AAExB,QAAA,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI;AAEvB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,aAAa,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AAChI,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,KAAK,YAAY,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1F,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC;AACjD,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,sBAAsB,CAAC,kBAAkB,EAAE;AAEhD,QAAA,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAExF,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAwB,KAAI;AACtE,YAAA,IAAI,GAAG,EAAE,OAAO,EAAE;gBAChB,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;YACjD;AACF,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;YAChC,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,eAAe,EAAE;gBACtB,UAAU,CAAC,MAAK;oBACd,IAAI,CAAC,mBAAmB,EAAE;AAC5B,gBAAA,CAAC,CAAC;YACJ;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC5E;AAEA,IAAA,gBAAgB,CAAC,IAA8B,EAAA;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,KAAK,UAAU,CAAC;IACrE;IAEQ,oBAAoB,GAAA;QAC1B,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,CAAC,SAAS,CAAC,CAAC,QAAwB,KAAI;AAChF,YAAA,IAAI,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;AAC/B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7E;AACF,QAAA,CAAC,CAAC;IACJ;AAEQ,IAAA,MAAM,eAAe,GAAA;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE;QAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACxD;AAEA,IAAA,mBAAmB,CAAC,KAA2B,EAAA;QAC7C,IAAI,OAAO,GAAG,mCAAmC;QAEjD,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,oCAAoC;QAChD;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;QAEA,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE;YAChC,OAAO,GAAG,+BAA+B;QAC3C;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,OAAO,CAAC;IAC7C;IAEQ,aAAa,GAAA;AACnB,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa;QAC3D,IAAI,aAAa,EAAE;AACjB,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;QAChC;IACF;IAEQ,iBAAiB,GAAA;AACvB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW;QACvD,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAC9B;IACF;AAEQ,IAAA,UAAU,CAAC,GAAW,EAAA;QAC5B,MAAM,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC;AACrD,QAAA,cAAc,CAAC,YAAY,CAAC,KAAK,EAAE,YAAY,CAAC;AAChD,QAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/C,QAAA,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC;AACxC,QAAA,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC;IAC3C;IAEO,mBAAmB,GAAA;AACxB,QAAA,MAAM,qBAAqB,GAAY,IAAI,CAAC,MAAM,CAAC,GAAG,CAAU,yBAAyB,EAAE,KAAK,CAAC;QACjG,IAAI,qBAAqB,EAAE;AACzB,YAAA,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,EAAE;QAC7D;aAAO;AACL,YAAA,IAAI,CAAC,2BAA2B,CAAC,sBAAsB,EAAE;QAC3D;IACF;+GAxMW,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAV,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,UAAU,cAHT,MAAM,EAAA,CAAA,CAAA;;4FAGP,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACzDD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmBU,mBAAmB,CAAA;AAQ9B,IAAA,WAAA,GAAA;AAPiB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAGhD,IAAA,CAAA,QAAQ,GAAG,KAAK;AAKd,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU;AAElC,QAAA,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5E;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE;IACzC;+GAhBW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,iBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzChC,irBAkBA,EAAA,MAAA,EAAA,CAAA,g0CAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDgBY,YAAY,mLAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,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,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAO1D,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAR/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,CAAC,EAAA,QAAA,EAC5D,iBAAiB,EAAA,aAAA,EAGZ,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAA,QAAA,EAAA,irBAAA,EAAA,MAAA,EAAA,CAAA,g0CAAA,CAAA,EAAA;wDAMlC,QAAQ,EAAA,CAAA;sBADP;;;AE5CH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAYU,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAhB,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,gBAAgB,EAAA,OAAA,EAAA,CAHjB,mBAAmB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,CAAA,EAAA,OAAA,EAAA,CACpG,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,mBAAmB,CAAA,EAAA,CAAA,CAAA;AAEnG,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,gBAAgB,YAHjB,mBAAmB,CAAA,EAAA,CAAA,CAAA;;4FAGlB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAJ5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,mBAAmB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,CAAC;oBAC/G,OAAO,EAAE,CAAC,0BAA0B,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,mBAAmB;AAC/G,iBAAA;;;ACjCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAsBU,iBAAiB,CAAA;IAM5B,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,GAAG,cAAc,CAAC,EAAE,WAAW;IACzE;+GARW,iBAAiB,EAAA,IAAA,EAAA,EAAA,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,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,eAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZlB;;;;GAIT,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,uPAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EANS,aAAa,iDAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,EAAA,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,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAc3B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAf7B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAC7B,eAAe,EAAA,QAAA,EACf;;;;AAIT,EAAA,CAAA,EAAA,eAAA,EAEgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE;AACR,qBAAA,EAAA,MAAA,EAAA,CAAA,uPAAA,CAAA,EAAA;8BAID,IAAI,EAAA,CAAA;sBADH;;;AC7CH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,qBAAqB,CAAA;AATlC,IAAA,WAAA,GAAA;QAWE,IAAA,CAAA,IAAI,GAAG,qCAAqC;AAC7C,IAAA;+GAHY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAArB,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,mBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECrClC,gIAIA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDyBY,aAAa,+KAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAQ3B,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBATjC,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA,CAAC,aAAa,EAAE,aAAa,CAAC,EAAA,QAAA,EAC7B,mBAAmB,iBAGd,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAE,KAAK,EAAE,mBAAmB,EAAE,EAAA,QAAA,EAAA,gIAAA,EAAA,MAAA,EAAA,CAAA,4TAAA,CAAA,EAAA;8BAIpC,IAAI,EAAA,CAAA;sBADH;;;AEtCH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAgBU,qBAAqB,CAAA;AAHlC,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,cAAc,GAAsB;YACnD,SAAS,EAAE,qBAAqB,CAAC,iBAAiB;AAClD,YAAA,MAAM,EAAE;SACT;AAsDF,IAAA;aA3DiB,IAAA,CAAA,iBAAiB,GAAG,IAAH,CAAQ;AAOzC,IAAA,KAAK,CAAC,MAA6C,EAAE,WAAqB,EAAE,OAA2B,EAAA;AACrG,QAAA,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,IAAI,EAAE,CAAC;QAElE,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC;AAEtC,YAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;YACjF;AACA,YAAA,OAAO,KAAK;QACd;aAAO;YACL,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC;QAC3D;IACF;AAEQ,IAAA,kBAAkB,CAAC,IAAsB,EAAE,WAAqB,EAAE,OAA0B,EAAA;AAClG,QAAA,MAAM,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC;AAE7E,QAAA,IAAI,mBAAmB,CAAC,MAAM,EAAE;YAC9B,IAAI,OAAO,CAAC,SAAS,KAAK,qBAAqB,CAAC,iBAAiB,EAAE;AACjE,gBAAA,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,UAAU,KAAK,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACnF;iBAAO;AACL,gBAAA,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,UAAU,KAAK,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACpF;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEQ,sBAAsB,CAAC,IAAsB,EAAE,QAAiB,EAAA;AACtE,QAAA,IAAI,KAAwB;AAE5B,QAAA,IAAI,OAAO,IAAI,IAAI,EAAE;AACnB,YAAA,KAAK,GAAG,IAAI,CAAC,KAAK;QACpB;aAAO;YACL,KAAK,GAAG,IAAI;QACd;QAEA,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QAC9B;AAEA,QAAA,IAAI,6BAA6B,IAAI,KAAK,EAAE;AAC1C,YAAA,OAAO,KAAK,CAAC,2BAA2B,IAAI,EAAE;QAChD;aAAO;AACL,YAAA,OAAO,KAAK,CAAC,mBAAmB,IAAI,EAAE;QACxC;IACF;+GA3DW,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAArB,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,cAFpB,MAAM,EAAA,CAAA,CAAA;;4FAEP,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAHjC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;ACrCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;SAsCa,2BAA2B,GAAA;IACzC,OAAO;QACL,qBAAqB,CAAC,MAAK;AACzB,YAAA,MAAM,OAAO,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAC3C,YAAA,OAAO,OAAO,CAAC,IAAI,EAAE;AACvB,QAAA,CAAC;KACF;AACH;MAKa,mBAAmB,CAAA;AAiE9B,IAAA,WAAA,GAAA;AAhES,QAAA,IAAA,CAAA,IAAI,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC1B,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,KAAK,CAAC;AACtC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC/C,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,qBAAqB,CAAC;AAC3C,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAC1B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC;AAChC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;AAE7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,eAAe,CAAiB,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;QAEzC,IAAA,CAAA,MAAM,GAA0B,EAAE;QAClC,IAAA,CAAA,WAAW,GAAyB,EAAE;QAGtC,IAAA,CAAA,WAAW,GAAgB,EAAE;AAEZ,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACjE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACxE,QAAA,IAAA,CAAA,+BAA+B,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClF,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACtE,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACnE,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACjE,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAClE,QAAA,IAAA,CAAA,OAAO,GAAG,IAAI,eAAe,CAAe,EAAE,CAAC;AAC/C,QAAA,IAAA,CAAA,wBAAwB,GAAG,IAAI,eAAe,CAA+B,EAAE,CAAC;AAChF,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AACxE,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,eAAe,CAA0B,EAAE,CAAC;AAC/D,QAAA,IAAA,CAAA,oBAAoB,GAAG,IAAI,eAAe,CAA4B,EAAE,CAAC;AAE1F,QAAA,IAAA,CAAA,mBAAmB,GASf;AACF,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,iBAAiB,EAAE,EAAE;AACrB,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,eAAe,EAAE,EAAE;AACnB,YAAA,aAAa,EAAE;SAChB;AASD,QAAA,IAAA,CAAA,wBAAwB,GAAwC,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE;QAK1G,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;AAElD,QAAA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,KAAI;AACrD,YAAA,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS;AACjC,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AACnC,YAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO;AAC7B,YAAA,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU;AAEnC,YAAA,IAAI,IAAI,CAAC,MAAM,EAAE;AACf,gBAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YACzB;AACF,QAAA,CAAC,CAAC;IACJ;AAEA,IAAA,MAAM,IAAI,GAAA;QACR,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE;AAC1C,QAAA,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACzB;AAEA,IAAA,KAAK,CAAC,MAAuB,EAAA;QAC3B,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,CAAC;YACtD;QACF;AAEA,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAClF,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AACpF,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;AACxG,QAAA,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;AACzH,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;AAC5F,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAC7F,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAmB,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC9F,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAQ,MAAM,EAAE,iBAAiB,CAAC,CAAC;AAC5E,QAAA,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAqB,MAAM,EAAE,8BAA8B,CAAC,CAAC;AACnH,QAAA,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC/E,QAAA,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAmB,MAAM,EAAE,+BAA+B,CAAC,CAAC;AACnH,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAmB,MAAM,EAAE,uBAAuB,CAAC,CAAC;QAElG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACrC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAgB,MAAM,EAAE,uBAAuB,CAAC;QAC1F,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;QACvD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,KAAI;YACjC,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjG,QAAA,CAAC,CAAC;QAEF,IAAI,CAAC,mBAAmB,GAAG;YACzB,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC;YAC1D,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,mBAAmB,CAAC;YAC1E,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;YACpD,MAAM,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC;YACpD,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC;YAC1D,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,CAAC;YACxD,eAAe,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,CAAC;YACvE,aAAa,EAAE,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,gBAAgB;SACnE;AAED,QAAA,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAU,sBAAsB,EAAE,KAAK,CAAC;AAEjF,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC3B,YAAA,IAAI,CAAC,WAAW,GAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAiB,IAAI,EAAE;QAC3E;AAEA,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAE1B,QAAA,MAAM,UAAU,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,KAAK,KAAK,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAqB,CAAC;AAChI,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC;IACnC;AAEU,IAAA,aAAa,CAAC,MAAuB,EAAA;QAC7C,MAAM,KAAK,GAAmB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAU,MAAM,EAAE,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;AAE3H,QAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,YAAA,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;AACnC,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YAExB,IAAI,CAAC,KAAK,EAAE;gBACV,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,wBAAA,EAA2B,IAAI,CAAC,EAAE,CAAA,EAAA,CAAI,CAAC;YAC1D;AAAO,iBAAA,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE;AACrB,gBAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA,yBAAA,CAA2B,CAAC;YAC/C;iBAAO;AACL,gBAAA,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;YAC1G;QACF;IACF;AAEU,IAAA,UAAU,CAAC,MAAuB,EAAA;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAiB,MAAM,EAAE,iBAAiB,CAAC;IAC3E;IAEU,qBAAqB,CAAC,MAAuB,EAAE,GAAW,EAAA;QAClE,OAAO,IAAI,CAAC;AACT,aAAA,WAAW,CAAwB,MAAM,EAAE,CAAA,sBAAA,EAAyB,GAAG,EAAE;AACzE,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;aAC3C,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,aAAA,GAAG,CAAC,CAAC,KAAK,KAAI;YACb,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,IAAI,IAAI;AACzC,YAAA,OAAO,KAAK;AACd,QAAA,CAAC;aACA,IAAI,CAAC,WAAW,CAAC;IACtB;AAEA,IAAA,wBAAwB,CAAC,QAAQ,EAAA;AAC/B,QAAA,OAAO;AACJ,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAC3C,aAAA,GAAG,CAAC,CAAC,KAAK,MAAM;AACf,YAAA,GAAG,KAAK;AACR,YAAA,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;iBACtB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,iBAAA,MAAM,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;iBACzC,IAAI,CAAC,WAAW;AAChB,iBAAA,GAAG,CAAC,CAAC,IAAI,KAAI;AACZ,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAClB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,yBAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;yBAC3C,IAAI,CAAC,WAAW;AAChB,yBAAA,GAAG,CAAC,CAAC,KAAK,KAAI;AACb,wBAAA,IAAI,KAAK,CAAC,SAAS,EAAE;4BACnB,OAAO;AACL,gCAAA,GAAG;6BACJ;wBACH;AAEA,wBAAA,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;AAChB,4BAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC;AAC/D,4BAAA,MAAM,QAAQ,GAAG,CAAA,CAAA,EAAI,aAAa,GAAG,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE;4BACvE,OAAO;AACL,gCAAA,GAAG,KAAK;AACR,gCAAA,GAAG,EAAE;6BACN;wBACH;wBAEA,OAAO;AACL,4BAAA,GAAG,KAAK;4BACR,MAAM,EAAE,KAAK,CAAC;yBACf;AACH,oBAAA,CAAC,CAAC;oBAEJ,OAAO;AACL,wBAAA,GAAG;qBACJ;gBACH;AAEA,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,OAAO,EAAE,GAAG,IAAI,EAAE;gBACpB;AAEA,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACf,oBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;AACzD,oBAAA,MAAM,GAAG,GAAG,CAAA,CAAA,EAAI,QAAQ,GAAG,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;oBACvD,OAAO;AACL,wBAAA,GAAG,IAAI;wBACP;qBACD;gBACH;gBAEA,OAAO;AACL,oBAAA,GAAG,IAAI;oBACP,MAAM,EAAE,IAAI,CAAC;iBACd;AACH,YAAA,CAAC;AACA,iBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC/B,SAAA,CAAC,CAAC;IACP;AAEA,IAAA,mBAAmB,CAAC,MAAuB,EAAA;AACzC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAM,MAAM,EAAE,mCAAmC,CAAC;AAC1F,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;QAEA,IAAI,OAAO,GAAG,EAAE;AAChB,QAAA,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,CAAC;AAEjE,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE;AAChE,QAAA,QAAQ,CAAC,OAAO,GAAG,OAAO;QAE1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,GAAG,QAAQ;QACpD,OAAO,EAAE,OAAO,EAAE;IACpB;AAEA,IAAA,eAAe,CAAC,MAAuB,EAAA;AACrC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAM,MAAM,EAAE,iBAAiB,CAAC;AACxE,QAAA,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;AACpB,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,MAAM,MAAM,GAAG,WAAW,CAAC,EAAE,EAAE,QAAQ;aACpC,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,aAAA,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;aAC3C,IAAI,CAAC,WAAW,CAAC;QAEpB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,MAAM;AACxC,QAAA,OAAO,MAAM;IACf;AAEA,IAAA,cAAc,CAAC,MAA4D,EAAA;AACzE,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzF;AAAO,aAAA,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;AACrC,YAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACnC,oBAAA,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAClD,gBAAA,CAAC,CAAC;AACF,gBAAA,OAAO,MAAM;YACf;QACF;aAAO;AACL,YAAA,OAAO,MAAM;QACf;IACF;IAEA,cAAc,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACxE;AAEQ,IAAA,yBAAyB,CAAC,MAAwB,EAAA;QACxD,IAAI,QAAQ,GAAG,KAAK;AAEpB,QAAA,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;AAC1B,YAAA,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;QACtE;QAEA,OAAO;AACL,YAAA,GAAG,MAAM;YACT;SACD;IACH;IAEA,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;IACnG;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,aAAa,KAChB;AACG,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACvC,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;AACtC,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAC3D,CACF;IACH;AAEA,IAAA,SAAS,CAAC,IAAe,EAAA;AACvB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACnH;IAEA,sBAAsB,GAAA;AACpB,QAAA,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClI;AAEA,IAAA,uBAAuB,CAAC,IAAe,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IACjI;AAEQ,IAAA,SAAS,CAAC,SAA2B,EAAA;QAC3C,IAAI,SAAS,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACpG,YAAA,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE1H,SAAS,CAAC,QAAQ,GAAG;AAClB,iBAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;iBACtD,IAAI,CAAC,WAAW;AAChB,iBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,iBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;QACjC;AAEA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,iBAAiB,CAAC,OAA2B,EAAA;AACnD,QAAA,OAAO,CAAC,OAAO,IAAI,EAAE;AAClB,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,EAAE;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACpC,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAClB,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,QAAQ;AACjC,yBAAA,MAAM,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;yBACvD,IAAI,CAAC,WAAW;AAChB,yBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACjC;AACA,gBAAA,OAAO,IAAI;YACb;AACA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;AACA,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;AACtD,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;IACjC;IAEA,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IACnG;IAEA,wBAAwB,GAAA;QACtB,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,cAAc,KAAK,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;IACnG;IAEA,uBAAuB,GAAA;QACrB,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,oBAAoB,KAAK,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACrH;IAEA,cAAc,GAAA;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC;IAC1F;IAEA,kBAAkB,GAAA;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,eAAe,KAAK,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC,CAAC;IACtG;IAEA,iCAAiC,GAAA;AAC/B,QAAA,OAAO,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAC9C,GAAG,CAAC,CAAC,8BAA8B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,8BAA8B,CAAC,GAAG,EAAE,CAAC,CAAC,CACjI;IACH;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAC7B,GAAG,CAAC,CAAC,aAAa,KAChB;AACG,aAAA,MAAM,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC7C,aAAA,GAAG,CAAC,CAAC,MAAM,KAAI;YACd,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI,EAAE;gBAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;AACpC,gBAAA,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7C,oBAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;AAClB,yBAAA,MAAM,CAAC,CAAC,WAAW,KAAK,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC;yBACvD,IAAI,CAAC,WAAW;AAChB,yBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,yBAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC;gBACjC;AACA,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,OAAO,MAAM;AACf,QAAA,CAAC;AACA,aAAA,GAAG,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC;aACtD,IAAI,CAAC,WAAW;AAChB,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE;AAC3B,aAAA,MAAM,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAChC,CACF;IACH;IAEA,4BAA4B,GAAA;AAC1B,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IAChJ;AAEA,IAAA,UAAU,CAAC,MAAwB,EAAA;QACjC,OAAO;AACL,YAAA,GAAG,MAAM;YACT,QAAQ,EAAE,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SACxE;IACH;AAEA,IAAA,aAAa,CAAC,MAAiF,EAAA;AAC7F,QAAA,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;YAC1B,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBACvC,OAAO,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACvF;AACA,YAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;QACjE;AACA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,yBAAyB,CAAC,SAAc,EAAA;QACtC,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,SAAS,CAAC,QAAQ,EAAE;AACtB,gBAAA,OAAO,IAAI;YACb;AAEA,YAAA,IAAI,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE;AAC7B,gBAAA,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC;YACrE;QACF;AAEA,QAAA,OAAO,KAAK;IACd;IAEA,aAAa,CAAC,EAAU,EAAE,iBAAuB,EAAA;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QAChD,IAAI,MAAM,EAAE;AACV,YAAA,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM;AAChC,YAAA,MAAM,OAAO,GAAG;gBACd,SAAS,EAAE,IAAI,CAAC;aACjB;AACD,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC;AAElE,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAClB,IAAI;AACJ,gBAAA,OAAO,EAAE,UAAU;AACnB,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;QACJ;aAAO;AACL,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAClB,gBAAA,IAAI,EAAE,EAAE;AACR,gBAAA,aAAa,EAAE;AAChB,aAAA,CAAC;QACJ;IACF;;AAGA,IAAA,aAAa,CAAC,MAAc,EAAA;AAC1B,QAAA,OAAO,CAAC,EAAE,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAChD;;AAGA,IAAA,YAAY,CAAC,MAAyB,EAAE,GAAG,IAAW,EAAA;QACpD,IAAI,aAAa,GAAoB,EAAE;AACvC,QAAA,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AACzB,YAAA,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC3G;aAAO;YACL,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3C,IAAI,SAAS,EAAE;AACb,gBAAA,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/B;QACF;AACA,QAAA,IAAI,aAAa,EAAE,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACrE;AAEA,QAAA,OAAO,KAAK;IACd;AAEA,IAAA,YAAY,CAAC,GAAW,EAAA;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC;IAC1C;AAEA,IAAA,cAAc,CAAC,IAAe,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;QAE9B,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;AACxC,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;YAE5D,IAAI,CAAC,UAAU,EAAE;AACf,gBAAA,OAAO,KAAK;YACd;QACF;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,uBAAuB,CAAC,IAAe,EAAA;AACrC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW;QAE9B,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE;AAC5C,YAAA,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC;YACpE,IAAI,CAAC,cAAc,EAAE;AACnB,gBAAA,OAAO,KAAK;YACd;QACF;AAEA,QAAA,OAAO,IAAI;IACb;IAEA,kBAAkB,GAAA;AAChB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;IACjC;AAEA,IAAA,kBAAkB,CAAC,OAAe,EAAA;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;IACpD;+GAnhBW,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,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;;;ACvED;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmBU,wBAAwB,CAAA;AARrC,IAAA,WAAA,GAAA;AASmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AAuC1D,IAAA;IA1BC,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAC3B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAC5B,IAAI,CAAC;AACH,kBAAE;AACE,oBAAA,6BAA6B,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAC5F;kBACD,SAAS,CACd;QACH;IACF;IAEA,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE,QAAQ,EAAE;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ;QAChD;IACF;AAEQ,IAAA,cAAc,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;IACpC;IAEA,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE;IACf;+GAvCW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAxB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,wBAAwB,oOAQxB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAGX,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECpDtC,kgDAsCA,0MDGa,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAPzB,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,eAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,iDAAE,aAAa,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,aAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,QAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,WAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,eAAA,CAAA,EAAA,QAAA,EAAA,CAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,EAAA,QAAA,EAAA,6CAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,mBAAA,EAAA,oBAAA,EAAA,4BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,YAAA,EAAA,YAAA,EAAA,aAAA,CAAA,EAAA,QAAA,EAAA,CAAA,gBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,qGAAE,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAOrG,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBARpC,SAAS;8BACC,CAAC,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,yBAAyB,CAAC,EAAA,QAAA,EACvG,uBAAuB,EAAA,aAAA,EAGlB,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,uBAAuB,EAAE,EAAA,QAAA,EAAA,kgDAAA,EAAA,MAAA,EAAA,CAAA,kJAAA,CAAA,EAAA;8BAMxC,SAAS,EAAA,CAAA;sBADR;gBAGD,MAAM,EAAA,CAAA;sBADL;gBAID,QAAQ,EAAA,CAAA;sBADP,SAAS;uBAAC,WAAW;gBAItB,gBAAgB,EAAA,CAAA;sBADf,SAAS;uBAAC,yBAAyB;;;AEpDtC;;;;;;;;;;;;;;;;;;;;;;AAsBG;IAYS;AAAZ,CAAA,UAAY,iBAAiB,EAAA;AAC3B,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,iBAAA,CAAA,aAAA,CAAA,GAAA,aAA2B;AAC3B,IAAA,iBAAA,CAAA,gBAAA,CAAA,GAAA,gBAAiC;AACjC,IAAA,iBAAA,CAAA,WAAA,CAAA,GAAA,WAAuB;AACzB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,GAAA,EAAA,CAAA,CAAA;MAchB,sBAAsB,CAAA;AAPnC,IAAA,WAAA,GAAA;AAQmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AASzD,QAAA,IAAA,CAAA,IAAI,GAAsB,iBAAiB,CAAC,WAAW;AAmBxD,IAAA;IAXC,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;AACvC,YAAA,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE;gBAC1D,6BAA6B,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;AAClG,aAAA,CAAC;QACJ;IACF;AAEQ,IAAA,cAAc,CAAC,SAA2B,EAAA;AAChD,QAAA,OAAO,CAAC,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK;IACpC;+GA5BW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EChDnC,opDA+CA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDLY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,QAAA,EAAA,QAAA,EAAA,YAAA,EAAA,MAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,YAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMpF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBAPlC,SAAS;8BACC,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,wBAAwB,EAAE,aAAa,CAAC,YACtF,oBAAoB,EAAA,aAAA,EAEf,iBAAiB,CAAC,IAAI,QAC/B,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,opDAAA,EAAA;8BAMrC,IAAI,EAAA,CAAA;sBADH;gBAOD,IAAI,EAAA,CAAA;sBADH;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,SAAS,EAAA,CAAA;sBADR;;;AE/DH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAmBU,oBAAoB,CAAA;AAPjC,IAAA,WAAA,GAAA;QAgCE,IAAA,CAAA,IAAI,GAAG,SAAS;AAgDjB,IAAA;IA7CC,mBAAmB,GAAA;AACjB,QAAA,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE;IAC7B;IAEA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,QAAQ,IAAI,SAAS;IAC9C;IAEA,eAAe,GAAA;QACb,MAAM,mBAAmB,GAAG,IAAI,GAAG,CACjC,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC,SAAS,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAC9E;AAED,QAAA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoC;QAClE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACrC,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,EAAE;gBACtB,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;QAEF,MAAM,SAAS,GAAkB,EAAE;QACnC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,KAAI;YACzC,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM,EAAE;gBAC3C,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE;gBAC/C,MAAM,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC;AACtD,gBAAA,IAAI,SAAS,EAAE,QAAQ,EAAE;AACvB,oBAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;gBACpC;YACF;iBAAO;gBACL,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;AAChD,gBAAA,IAAI,WAAW,EAAE,QAAQ,EAAE;AACzB,oBAAA,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACtC;YACF;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,MAAM,kBAAkB,GAAG,IAAI,SAAS,EAAe;AACvD,QAAA,kBAAkB,CAAC,KAAK,CAAC,SAAS,CAAC;AACnC,QAAA,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,kBAAkB;AACxC,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;IAChC;IAEA,eAAe,CAAC,CAAS,EAAE,GAAqB,EAAA;QAC9C,OAAO,GAAG,CAAC,EAAE;IACf;+GAxEW,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,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,KAAA,EAAA,OAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,yBAAA,EAAA,uBAAA,EAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,YAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,MAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAUpB,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,kBAAA,EAAA,SAAA,EAGJ,wBAAwB,gFAGxB,yBAAyB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECzDzC,mvFA0EA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDvCY,YAAY,ugBAAE,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,eAAe,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,SAAA,EAAA,QAAA,EAAA,6GAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,aAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EAAE,aAAa,8mBAAE,wBAAwB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,aAAa,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAM9H,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAPhC,SAAS;8BACC,CAAC,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAE,wBAAwB,EAAE,aAAa,EAAE,yBAAyB,CAAC,EAAA,QAAA,EAChI,kBAAkB,EAAA,aAAA,EAEb,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B,EAAE,KAAK,EAAE,kBAAkB,EAAE,EAAA,QAAA,EAAA,mvFAAA,EAAA;8BAInC,SAAS,EAAA,CAAA;sBADR;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,UAAU,EAAA,CAAA;sBADT,SAAS;uBAAC,YAAY;gBAIvB,IAAI,EAAA,CAAA;sBADH,SAAS;uBAAC,OAAO;gBAIlB,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,wBAAwB;gBAItC,0BAA0B,EAAA,CAAA;sBADzB,YAAY;uBAAC,yBAAyB;gBAIvC,IAAI,EAAA,CAAA;sBADH;gBASD,mBAAmB,EAAA,CAAA;sBADlB,YAAY;uBAAC,yBAAyB;;;AEpEzC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAkBU,sBAAsB,CAAA;AATnC,IAAA,WAAA,GAAA;AAUmB,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAAC,iBAAiB,CAAC;AAS/C,QAAA,IAAA,CAAA,IAAI,GAAsB,iBAAiB,CAAC,WAAW;AAexD,IAAA;;;IALC,SAAS,GAAA;QACP,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;AAC5C,YAAA,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;QACxB;IACF;+GAxBW,sBAAsB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAtB,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAA,MAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,oBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxCnC,uwBAmBA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDaY,YAAY,2NAAE,sBAAsB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,OAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,oBAAoB,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,OAAA,EAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,yBAAyB,EAAA,QAAA,EAAA,uBAAA,EAAA,MAAA,EAAA,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAQpF,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBATlC,SAAS;8BACC,CAAC,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,yBAAyB,CAAC,EAAA,QAAA,EACtF,oBAAoB,EAAA,aAAA,EAGf,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,QACzC,EAAE,KAAK,EAAE,oBAAoB,EAAE,EAAA,QAAA,EAAA,uwBAAA,EAAA,MAAA,EAAA,CAAA,gKAAA,CAAA,EAAA;8BAMrC,IAAI,EAAA,CAAA;sBADH;gBAOD,IAAI,EAAA,CAAA;sBADH;gBAID,KAAK,EAAA,CAAA;sBADJ;gBAID,SAAS,EAAA,CAAA;sBADR;;;AEvDH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,gBAAgB,CAAA;IAG3B,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE;IAClB;+GALW,gBAAgB,EAAA,IAAA,EAAA,EAAA,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,mGCrC7B,oMAKA,EAAA,MAAA,EAAA,CAAA,sSAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED2BY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,sBAAsB,8GAAE,gBAAgB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,UAAA,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAKrD,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;+BACE,aAAa,EAAA,OAAA,EACd,CAAC,YAAY,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,EAAA,aAAA,EAGlD,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,oMAAA,EAAA,MAAA,EAAA,CAAA,sSAAA,CAAA,EAAA;8BAGV,KAAK,EAAA,CAAA;sBAA/B,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;;AEtC3B;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAiCU,mBAAmB,CAAA;AAfhC,IAAA,WAAA,GAAA;AAgBmB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAa,KAAK,CAAC;AACjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC;AACtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxC,QAAA,IAAA,CAAA,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC;AACtC,QAAA,IAAA,CAAA,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAQxD,IAAA,CAAA,SAAS,GAAG,KAAK;QAEjB,IAAA,CAAA,IAAI,GAAyB,EAAE;QAC/B,IAAA,CAAA,OAAO,GAA4B,EAAE;QAErC,IAAA,CAAA,kBAAkB,GAAG,KAAK;QAC1B,IAAA,CAAA,IAAI,GAAW,IAAI;AAOF,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAiEjD,IAAA;IArEC,qBAAqB,GAAA;QACnB,IAAI,CAAC,KAAK,EAAE;IACd;IAIA,QAAQ,GAAA;QACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE;AAC5C,QAAA,IAAI,CAAC;AACF,aAAA,wBAAwB;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACxB,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,iBAAiB;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,yBAAyB,KAAI;AACvC,YAAA,IAAI,CAAC,kBAAkB,GAAG,yBAAyB;AACrD,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAS,KAAI;AAC9F,YAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI;AACxB,QAAA,CAAC,CAAC;IACJ;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,wBAAwB,CAAC,KAAK,CAAC,CAAC;QAC1D;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,IAAI,EAAE;AACb,YAAA,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAC1B,OAAO,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC;YACvC;AAEA,YAAA,MAAM,KAAK,GAAQ,IAAI,CAAC,IAAI,CAAC,KAAK;YAElC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;AACnC,YAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B;IACF;IAEQ,KAAK,GAAA;QACX,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC;IACnD;AAEQ,IAAA,YAAY,CAAC,MAAc,EAAA;QACjC,IAAI,MAAM,EAAE;AACV,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI;AAErB,YAAA,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAC3C,CAAC,MAAM,KAAI;AACT,gBAAA,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;AAC3B,gBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,MAAM;AACxB,gBAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACxB,YAAA,CAAC,EACD,OAAO,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAC/B;QACH;IACF;AAEQ,IAAA,cAAc,CAAC,IAAS,EAAA;AAC9B,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC;IACnD;+GA1FW,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,kNCvDhC,wrBAYA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,ED8BI,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACZ,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EACb,oBAAoB,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,cAAA,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,EACpBE,qBAAsB,8IACtB,UAAU,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACV,gBAAgB,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,OAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,mBAAmB,oFACnB,sBAAsB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,MAAA,CAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;4FAMb,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAf/B,SAAS;AACC,YAAA,IAAA,EAAA,CAAA,EAAA,OAAA,EAAA;wBACP,YAAY;wBACZ,aAAa;wBACb,oBAAoB;wBACpBA,qBAAsB;wBACtB,UAAU;wBACV,gBAAgB;wBAChB,mBAAmB;wBACnB;AACD,qBAAA,EAAA,QAAA,EACS,iBAAiB,EAAA,aAAA,EAEZ,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,wrBAAA,EAAA;8BAUrC,MAAM,EAAA,CAAA;sBADL;gBAID,IAAI,EAAA,CAAA;sBADH,KAAK;uBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;gBAYzB,qBAAqB,EAAA,CAAA;sBADpB,YAAY;uBAAC,gBAAgB;;;AE5EhC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAImB,uBAAuB,CAAA;AAG5C;;AC7BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAIG,SAAU,QAAQ,CAAC,IAAqB,EAAA;AAC5C,IAAA,IAAI,IAAI,EAAE,KAAK,EAAE;AACf,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;QAEtB,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,gBAAgB,IAAI,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,YAAY;IACvI;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;AAEM,SAAU,SAAS,CAAC,IAA2B,EAAA;AACnD,IAAA,IAAI,IAAI,EAAE,KAAK,EAAE;AACf,QAAA,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI;AAEtB,QAAA,OAAO,CAAC,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;IACtH;SAAO;AACL,QAAA,OAAO,KAAK;IACd;AACF;;AC5CA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAOH,MAAM,4BAA4B,GAAG,OAAO;MAK/B,mBAAmB,CAAA;AAHhC,IAAA,WAAA,GAAA;AAImB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC;AAuB5C,IAAA;IArBS,cAAc,CAAC,IAAe,EAAE,SAAiB,EAAA;QACvD,MAAM,eAAe,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC;AAC9D,QAAA,MAAM,QAAQ,GAAG,eAAe,GAAG,4BAA4B;AAE/D,QAAA,OAAO,QAAQ,IAAI,QAAQ,GAAG,SAAS;IACzC;AAEA;;;;;AAKG;IACH,WAAW,CAAC,IAAe,EAAE,SAAiB,EAAA;QAC5C,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE;AACxC,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC/E,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,OAAO,KAAK;IACd;+GAvBW,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,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;;;ACjCD;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAQU,wBAAwB,CAAA;AADrC,IAAA,WAAA,GAAA;AAEmB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAExC,IAAA,CAAA,OAAO,GAAa,EAAE;AAuBvB,IAAA;IArBC,oBAAoB,GAAA;AAClB,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAC5B,SAAS,CAAC,IAAI,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EACjE,MAAM,CAAC,CAAC,KAAoB,KAAK,KAAK,YAAY,aAAa,CAAC,CACjE;IACH;AAEA,IAAA,yBAAyB,CAAC,GAAW,EAAA;AACnC,QAAA,QACE,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;AACvB,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;AACrD,YAAA,CAAC,GAAG,IAAI,CAAC,OAAO;AACb,iBAAA,OAAO;iBACP,KAAK,CAAC,CAAC;AACP,iBAAA,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAE1F;AAEA,IAAA,UAAU,CAAC,KAAoB,EAAA;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;IAC5C;+GAzBW,wBAAwB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAxB,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,wBAAwB,cADX,MAAM,EAAA,CAAA,CAAA;;4FACnB,wBAAwB,EAAA,UAAA,EAAA,CAAA;kBADpC,UAAU;mBAAC,EAAE,UAAU,EAAE,MAAM,EAAE;;;AC7BlC;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAmCH;MAEsB,aAAa,CAAA;AADnC,IAAA,WAAA,GAAA;QAKE,IAAA,CAAA,KAAK,GAAG,MAAM;QAId,IAAA,CAAA,OAAO,GAA4B,EAAE;QACrC,IAAA,CAAA,oBAAoB,GAA4B,EAAE;QAClD,IAAA,CAAA,WAAW,GAAuB,EAAE;QACpC,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,SAAS,GAAG,KAAK;AAEjB,QAAA,IAAA,CAAA,UAAU,GAAmB,cAAc,CAAC,IAAI;QAChD,IAAA,CAAA,aAAa,GAAG,UAAU;QAC1B,IAAA,CAAA,aAAa,GAAuB,EAAE;QACtC,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,qBAAqB,GAAG,CAAC;AAGf,QAAA,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACjD,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC;AACrC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,uBAAuB,CAAC;AACzC,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,EAAkB,KAAe,EAAC;AAChD,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;AAC/C,QAAA,IAAA,CAAA,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;AACrC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;AACvD,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AAEhC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAEjC,IAAA,CAAA,mBAAmB,GAAG,MAAM,CAAC,mBAAmB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACrE,QAAA,IAAA,CAAA,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QAElE,IAAA,CAAA,aAAa,GAAmB,EAAE;AAEpC,QAAA,IAAA,CAAA,mBAAmB,GAAuB;AAChD,YAAA,MAAM,EAAE;SACT;AAiKF,IAAA;AA/JC,IAAA,IAAI,kBAAkB,GAAA;QACpB,OAAO,IAAI,CAAC,mBAAmB;IACjC;IAEA,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;AACF,aAAA,gBAAgB;AAChB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,aAAa,GAAG,OAAO;AAC9B,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,CAAC;AAE9D,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,eAAe;AACtB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,SAAS,KAAI;AACvB,YAAA,IAAI,CAAC,SAAS,GAAG,SAAS;YAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC;AAChG,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,wBAAwB;AACxB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,OAAO,GAAG,OAAO;AACxB,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,cAAc;AACd,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,WAAW,GAAG,OAAO;AAC5B,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;AACF,aAAA,uBAAuB;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,OAAO,KAAI;AACrB,YAAA,IAAI,CAAC,oBAAoB,GAAG,OAAO;AACrC,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,MAAM,CAAC,gBAAgB;AACvB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,IAAI,KAAI;AAClB,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC;AAC9D,QAAA,CAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,OAAO,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,gBAAgB,CAAC;AACnE,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,MAAM,KAAI;AACpB,YAAA,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,OAAO;AACrC,QAAA,CAAC,CAAC;QAEJ,IAAI,CAAC,eAAe,CAAC;AAClB,aAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AACxC,aAAA,SAAS,CAAC,CAAC,kBAAkB,MAAM,IAAI,CAAC,mBAAmB,GAAG,kBAAkB,CAAC,CAAC;QAErF,IAAI,CAAC,0BAA0B,EAAE;IACnC;AAEA,IAAA,WAAW,CAAC,OAAsB,EAAA;AAChC,QAAA,IAAI,OAAO,CAAC,UAAU,EAAE,YAAY,EAAE;YACpC,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,YAAY;QACnD;IACF;IAEA,WAAW,GAAA;AACT,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;AACxE,QAAA,IAAI,CAAC,aAAa,GAAG,EAAE;QAEvB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,EAAE,CAAC,CAAC;IACrD;IAEA,WAAW,CAAC,IAAe,EAAE,MAAuB,EAAA;AAClD,QAAA,IAAI,IAAI,EAAE,KAAK,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;AAC1H,gBAAA,IAAI,EAAU;gBAEd,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,EAAE;oBAC1C,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBAC9C;qBAAO;AACL,oBAAA,EAAE,GAAI,IAAY,CAAC,KAAK,CAAC,MAAM,IAAK,IAAY,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC9E;AAEA,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;YACrD;QACF;IACF;AAEA,IAAA,2BAA2B,CAAC,KAAa,EAAA;AACvC,QAAA,IAAI,CAAC,qBAAqB,GAAG,KAAK;IACpC;IAEA,eAAe,GAAA;AACb,QAAA,OAAO,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI;IACxC;AAEA,IAAA,aAAa,CAAC,GAAiB,EAAA;QAC7B,IAAI,GAAG,EAAE;AACP,YAAA,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACtB,gBAAA,OAAO,uBAAuB;YAChC;AAEA,YAAA,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;AACvB,gBAAA,OAAO,gCAAgC;YACzC;QACF;AAEA,QAAA,OAAO,IAAI;IACb;AAEA,IAAA,MAAM,CAAC,YAAwB,EAAA;AAC7B,QAAA,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE;YAC7B;QACF;AAEA,QAAA,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE;QACjC,IAAI,YAAY,EAAE;AAChB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QACjE;IACF;IAEA,eAAe,CAAC,CAAS,EAAE,MAAwB,EAAA;QACjD,OAAO,MAAM,CAAC,EAAE;IAClB;IAEA,SAAS,CAAC,CAAS,EAAE,GAAmB,EAAA;QACtC,OAAO,GAAG,CAAC,EAAE;IACf;IAEA,eAAe,CAAC,CAAS,EAAE,GAA0B,EAAA;QACnD,OAAO,GAAG,CAAC,EAAE;IACf;IAEQ,0BAA0B,GAAA;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,yBAAyB,CAAC;QACxE,IAAI,KAAK,IAAI,IAAI,CAAC,wBAAwB,CAAC,yBAAyB,CAAC,sBAAsB,CAAC,EAAE;YAC5F,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7C;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,sBAAsB,CAAC,EAAE;AACnF,YAAA,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC;AAC5C,gBAAA,MAAM,EAAE;AACT,aAAA,CAAC;QACJ;IACF;IAEQ,kBAAkB,GAAA;QACxB,OAAO,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC;IAC9C;AAGA,IAAA,gBAAgB,CAAC,KAAU,EAAA;AACzB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS;IACtE;+GAzMoB,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,aAAa,oKACtB,qBAAqB,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,aAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FADZ,aAAa,EAAA,UAAA,EAAA,CAAA;kBADlC;8BAGC,YAAY,EAAA,CAAA;sBADX,SAAS;uBAAC,qBAAqB;gBAsMhC,gBAAgB,EAAA,CAAA;sBADf,YAAY;uBAAC,iBAAiB,EAAE,CAAC,QAAQ,CAAC;;;ACjQ7C;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAeU,uBAAuB,CAAA;AALpC,IAAA,WAAA,GAAA;AAMmB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAkB,KAAK,CAAC;;QAIvD,IAAA,CAAA,OAAO,GAAG,IAAI;QAGd,IAAA,CAAA,aAAa,GAAuB,EAAE;AAgBrB,QAAA,IAAA,CAAA,QAAQ,GAAiB,IAAI,OAAO,EAAE;AAEtC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AA8CjD,IAAA;AA7DC,IAAA,kBAAkB,CAAC,KAAiB,EAAA;QAClC,IAAI,KAAK,EAAE;YACT,KAAK,CAAC,cAAc,EAAE;AAEtB,YAAA,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBACpC,IAAI,MAAM,EAAE;AACV,oBAAA,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7B;YACF;QACF;IACF;IAMA,QAAQ,GAAA;QACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAiB,KAAI;AACzG,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE,MAAM,EAAE;AAC9B,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvE;iBAAO;gBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;YAC7C;AACF,QAAA,CAAC,CAAC;IACJ;IACA,OAAO,CAAC,KAAiB,EAAE,MAAe,EAAA;QACxC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;YAC5B,MAAM,CAAC,aAAa,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QAC/C;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;AAC7B,YAAA,OAAO,IAAI;QACb;AAEA,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B;AAEQ,IAAA,SAAS,CAAC,KAAiB,EAAA;AACjC,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAiB;QACtC,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACxD;AAEQ,IAAA,UAAU,CAAC,MAAe,EAAA;QAChC,IAAI,CAAC,MAAM,EAAE;AACX,YAAA,OAAO,KAAK;QACd;AAEA,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IAC7F;AAEQ,IAAA,YAAY,CAAC,MAAe,EAAA;AAClC,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC;IACvG;IAEQ,YAAY,CAAC,EAAW,EAAE,SAAiB,EAAA;AACjD,QAAA,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;AAC9C,YAAA,EAAE,GAAG,EAAE,CAAC,aAAa;QACvB;AACA,QAAA,OAAO,EAAE;IACX;+GAvEW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,SAAA,CAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,aAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBALnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAC/B,oBAAA,QAAQ,EAAE;AACX,iBAAA;8BAMC,OAAO,EAAA,CAAA;sBADN,KAAK;uBAAC,kBAAkB;gBAIzB,aAAa,EAAA,CAAA;sBADZ;gBAID,kBAAkB,EAAA,CAAA;sBADjB,YAAY;uBAAC,aAAa,EAAE,CAAC,QAAQ,CAAC;;;AC/CzC;;;;;;;;;;;;;;;;;;;;;;AAsBG;MAUU,mBAAmB,CAAA;AAJhC,IAAA,WAAA,GAAA;AAKmB,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,mBAAmB,CAAC;AACxC,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC;AAC5C,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAEjC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAQjD,IAAA;IANC,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC,UAAU,CAAC,kBAAkB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC;QACrF,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAsB,KAAI;YAC5G,IAAI,CAAC,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ;AAClD,QAAA,CAAC,CAAC;IACJ;+GAZW,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAJ/B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE;AACX,iBAAA;;;AC/BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAQI,MAAM,kBAAkB,GAAkB,MAA0B;IACzE,MAAM,KAAK,GAAG,MAAM,EAAC,KAAe,EAAC;AACrC,IAAA,OAAO,KAAK,CAAC,MAAM,CAAC,mBAAmB,CAAC;AAC1C;;ACjCA;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAMI,MAAM,kBAAkB,GAAkB,CAAC,KAA6B,KAAI;AACjF,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACjD,IAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAE7B,IAAA,MAAM,eAAe,GAAG,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC;IAErE,IAAI,CAAC,eAAe,EAAE;AACpB,QAAA,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC;IACxB;AAEA,IAAA,OAAO,eAAe;AACxB;;ACvCA;;;;;;;;;;;;;;;;;;;;;;AAsBG;MASU,cAAc,CAAA;AAH3B,IAAA,WAAA,GAAA;AAIE;;AAEG;AACH,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,OAAO,EAAQ;AAElC;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAU;AAEtC;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAa;AAEzC;;AAEG;AACH,QAAA,IAAA,CAAA,cAAc,GAAG,IAAI,OAAO,EAAa;AAEzC;;AAEG;AACH,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,OAAO,EAAQ;AAEzC;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AAEnC;;AAEG;AACH,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,OAAO,EAAU;AAEnC;;AAEG;AACH,QAAA,IAAA,CAAA,eAAe,GAAG,IAAI,OAAO,EAAQ;AAErC;;AAEG;AACH,QAAA,IAAA,CAAA,iBAAiB,GAAG,IAAI,OAAO,EAAQ;AAEvC;;AAEG;AACH,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,OAAO,EAAQ;AAEnC;;AAEG;AACH,QAAA,IAAA,CAAA,qBAAqB,GAAG,IAAI,OAAO,EAAQ;AAC5C,IAAA;+GAvDY,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;AAAd,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,cAAc,cAFb,MAAM,EAAA,CAAA,CAAA;;4FAEP,cAAc,EAAA,UAAA,EAAA,CAAA;kBAH1B,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACV,oBAAA,UAAU,EAAE;AACb,iBAAA;;;AC9BD;;;;;;;;;;;;;;;;;;;;;;AAsBG;AAgBI,MAAM,YAAY,GAAG;AAC1B,IAAA,GAAG,EAAE;AACH,QAAA,OAAO,EAAE,8BAA8B;AACvC,QAAA,QAAQ,EAAE,yCAAyC;AACnD,QAAA,SAAS,EAAE,EAAE;AACb,QAAA,IAAI,EAAE;AACJ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,EAAE,EAAE,IAAI;AACR,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,QAAQ,EAAE;AACX,SAAA;AACD,QAAA,SAAS,EAAE;AACT,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,EAAE;AACb,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,KAAK,EAAE;AACR,SAAA;AACD,QAAA,UAAU,EAAE;AACV,YAAA,aAAa,EAAE;AAChB,SAAA;AACD,QAAA,gBAAgB,EAAE,KAAK;AACvB,QAAA,wBAAwB,EAAE,EAAE;AAC5B,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,UAAU,EAAE;AACV,YAAA,MAAM,EAAE;AACN,gBAAA,mBAAmB,EAAE;AACtB;AACK;AACT;;AAGI,MAAM,4BAA4B,GAAG;AAC1C,IAAA,eAAe,EAAE,IAAI,eAAe,CAAwB,IAAI,CAAC;IACjE,iBAAiB,EAAE,MACjB,EAAE,CACA,IAAI,cAAc,CAAC;AACjB,QAAA,OAAO,EAAE;AACP,YAAA,KAAK,EAAE;AACO;AACjB,KAAA,CAAC;;AAKF,MAAO,2BAA4B,SAAQ,uBAAuB,CAAA;IACtE,aAAa,GAAA;AACX,QAAA,OAAO,IAAI;IACb;IAEA,gBAAgB,GAAA;AACd,QAAA,OAAO,IAAI;IACb;+GAPW,2BAA2B,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;mHAA3B,2BAA2B,EAAA,CAAA,CAAA;;4FAA3B,2BAA2B,EAAA,UAAA,EAAA,CAAA;kBADvC;;MA6BY,gBAAgB,CAAA;+GAAhB,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;gHAAhB,gBAAgB,EAAA,OAAA,EAAA,CAjBjB,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;AAiBlG,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,gBAAgB,EAAA,SAAA,EAhBhB;AACT,YAAA,YAAY,CACV,EAAE,GAAG,EAAE,IAAI,EAAE,EACb;gBACE,YAAY;AACZ,gBAAA,aAAa,EAAE;AACb,oBAAA,uBAAuB,EAAE,KAAK;AAC9B,oBAAA,wBAAwB,EAAE;AAC3B;aACF,CACF;YACD,cAAc,CAAC,EAAE,CAAC;AAClB,YAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;YACjE,iBAAiB,CAAC,sBAAsB,EAAE;SAC3C,EAAA,OAAA,EAAA,CAfS,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAA,EAAA,CAAA,CAAA;;4FAiBlG,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAlB5B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,CAAC;AAC9G,oBAAA,SAAS,EAAE;AACT,wBAAA,YAAY,CACV,EAAE,GAAG,EAAE,IAAI,EAAE,EACb;4BACE,YAAY;AACZ,4BAAA,aAAa,EAAE;AACb,gCAAA,uBAAuB,EAAE,KAAK;AAC9B,gCAAA,wBAAwB,EAAE;AAC3B;yBACF,CACF;wBACD,cAAc,CAAC,EAAE,CAAC;AAClB,wBAAA,EAAE,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,sBAAsB,EAAE;wBACjE,iBAAiB,CAAC,sBAAsB,EAAE;AAC3C;AACF,iBAAA;;;AC7GD;;;;;;;;;;;;;;;;;;;;;;AAsBG;;ACtBH;;AAEG;;;;"}