{"version":3,"file":"ntk-cms-filemanager.mjs","sources":["../../../projects/ntk-cms-filemanager/src/lib/models/componentOptionModel.ts","../../../projects/ntk-cms-filemanager/src/lib/models/tree.model.ts","../../../projects/ntk-cms-filemanager/src/lib/enums/download-mode.enum.ts","../../../projects/ntk-cms-filemanager/src/lib/services/file-manager-store.service.ts","../../../projects/ntk-cms-filemanager/src/lib/services/node.service.ts","../../../projects/ntk-cms-filemanager/src/lib/services/node-clicked.service.ts","../../../projects/ntk-cms-filemanager/src/lib/services/translateUi.service.ts","../../../projects/ntk-cms-filemanager/src/lib/components/functions/node/node.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/functions/node/node.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/folder-content/folder-content.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/folder-content/folder-content.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/tree/node-lister/node-lister.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/tree/node-lister/node-lister.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/tree/tree.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/tree/tree.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/nav-bar/nav-bar.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/nav-bar/nav-bar.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/navigation/navigation.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/navigation/navigation.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/functions/loading-overlay/loading-overlay.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/functions/loading-overlay/loading-overlay.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/functions/upload/fileUploaderPickerAdapter.ts","../../../projects/ntk-cms-filemanager/src/lib/components/functions/upload/upload.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/functions/upload/upload.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/functions/new-folder/new-folder.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/functions/new-folder/new-folder.component.html","../../../projects/ntk-cms-filemanager/src/lib/components/side-view/side-view.component.ts","../../../projects/ntk-cms-filemanager/src/lib/components/side-view/side-view.component.html","../../../projects/ntk-cms-filemanager/src/lib/cms-filemanager.component.ts","../../../projects/ntk-cms-filemanager/src/lib/cms-filemanager.component.html","../../../projects/ntk-cms-filemanager/src/lib/pipes/file-size.pipe.ts","../../../projects/ntk-cms-filemanager/src/lib/pipes/map-to-iterable.pipe.ts","../../../projects/ntk-cms-filemanager/src/lib/cms-filemanager.module.ts","../../../projects/ntk-cms-filemanager/src/ntk-cms-filemanager.ts"],"sourcesContent":["export class ComponentOptionModel {\r\n  childMethods: any;\r\n  parentMethods: any;\r\n  data: any;\r\n}\r\n","import { ConfigInterface } from '../interfaces/config.interface';\r\nimport { NodeInterface } from '../interfaces/node.interface';\r\n\r\nexport class TreeModel {\r\n  private _currentPath: string;\r\n  private _nodes: NodeInterface;\r\n  private _selectedNodeId: string;\r\n  public config: ConfigInterface;\r\n\r\n  constructor(config: ConfigInterface) {\r\n    // this._currentPath = config.startingFolder; // todo implement (config.interfce.ts)\r\n    this._currentPath = '';\r\n    this.config = config;\r\n\r\n    this.nodes = ({\r\n      id: 0,\r\n      pathToNode: '',\r\n      pathToParent: null,\r\n      isFolder: true,\r\n      isExpanded: true,\r\n      stayOpen: true,\r\n      name: 'root',\r\n      children: {},\r\n      isRoot: true\r\n    } as NodeInterface);\r\n  }\r\n\r\n  get currentPath(): string {\r\n    return this._currentPath;\r\n  }\r\n\r\n  set currentPath(value: string) {\r\n    this._currentPath = value;\r\n  }\r\n\r\n  get nodes(): NodeInterface {\r\n    return this._nodes;\r\n  }\r\n\r\n  set nodes(value: NodeInterface) {\r\n    this._nodes = value;\r\n  }\r\n\r\n  get selectedNodeId(): string {\r\n    return this._selectedNodeId;\r\n  }\r\n\r\n  set selectedNodeId(value: string) {\r\n    this._selectedNodeId = value;\r\n  }\r\n\r\n  // todo implement (config.interfce.ts)\r\n  // get isCache(): boolean {\r\n  //   return this.config.offlineMode;\r\n  // }\r\n  //\r\n  // set isCache(value: boolean) {\r\n  //   this.config.offlineMode = value;\r\n  // }\r\n}\r\n","export enum DownloadModeEnum {\r\n  DOWNLOAD_DISABLED, DOWNLOAD_FILES, DOWNLOAD_ALL\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { distinctUntilChanged, map } from 'rxjs/operators';\r\nimport { NodeInterface } from '../interfaces/node.interface';\r\nimport { StateInterface } from '../interfaces/state.interface';\r\nimport { AppStore } from '../reducers/reducer.factory';\r\n\r\nconst initialState: StateInterface = {\r\n  path: '',\r\n  isLoading: true,\r\n  selectedNode: null,\r\n  inProcessingList: []\r\n};\r\n\r\n@Injectable()\r\nexport class FileManagerStoreService {\r\n  private state: AppStore;\r\n\r\n  private sub: Subject<AppStore> = new Subject<AppStore>();\r\n\r\n  constructor() {\r\n    this.state = {\r\n      fileManagerState: initialState\r\n    };\r\n\r\n    // @ts-ignore\r\n    window.getInfo = () => this.state;\r\n  }\r\n\r\n  dispatch(param: Actions) {\r\n    Object.assign(this.state.fileManagerState, stateReducer(this.state.fileManagerState, param));\r\n    this.sub.next(this.state);\r\n    // if (isDevMode()) console.warn('[FileManagerStoreService] dispatch', param, JSON.parse(JSON.stringify(this.state)));\r\n  }\r\n\r\n  getState<R>(mapFn: (value: AppStore, index: number) => R): Observable<R> {\r\n    if (typeof mapFn !== 'function') {\r\n      throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\r\n    }\r\n\r\n    return this.sub.asObservable()\r\n      .pipe(map(mapFn))\r\n      .pipe(distinctUntilChanged());\r\n  }\r\n  processStart(name: string): void {\r\n    if (this.state?.fileManagerState?.inProcessingList) {\r\n      const index = this.state.fileManagerState.inProcessingList.indexOf(name);\r\n      if (index < 0) {\r\n        // console.log('processStart 1', this.state.fileManagerState.inProcessingList);\r\n        const list = [...this.state.fileManagerState.inProcessingList];\r\n        list.push(name);\r\n        // console.log('processStart 2', this.state.fileManagerState.inProcessingList);\r\n        this.dispatch({ type: SET_IN_PROCESSING_LIST, payload: list });\r\n      }\r\n    }\r\n  }\r\n  processStop(name: string): void {\r\n    if (this.state?.fileManagerState?.inProcessingList) {\r\n      const index = this.state.fileManagerState.inProcessingList.indexOf(name);\r\n      if (index >= 0) {\r\n        // console.log('processStop 1', this.state.fileManagerState.inProcessingList);\r\n        const list = [...this.state.fileManagerState.inProcessingList];\r\n        list.splice(index, 1);\r\n        // console.log('processStop 2', this.state.fileManagerState.inProcessingList);\r\n        this.dispatch({ type: SET_IN_PROCESSING_LIST, payload: list });\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\n\r\n// REDUCERS\r\nexport function stateReducer(state: StateInterface = initialState, action: Actions): StateInterface {\r\n  switch (action.type) {\r\n    case SET_PATH:\r\n      if (action.payload === '/') {\r\n        action.payload = '';\r\n      }\r\n      if (state.path === action.payload) {\r\n        return state;\r\n      }\r\n      return { ...state, path: action.payload, isLoading: true };\r\n    case SET_LOADING_STATE:\r\n      return { ...state, isLoading: action.payload };\r\n    case SET_IN_PROCESSING_LIST:\r\n      return { ...state, inProcessingList: action.payload };\r\n    case SET_SELECTED_NODE:\r\n      return { ...state, selectedNode: action.payload };\r\n    default:\r\n      return initialState;\r\n  }\r\n}\r\n\r\n\r\n// ACTIONS\r\nexport interface ActionInterface {\r\n  readonly type: string;\r\n  payload?: any;\r\n}\r\n\r\nexport const SET_PATH = 'SET_PATH';\r\nexport const SET_LOADING_STATE = 'SET_LOADING_STATE';\r\nexport const SET_IN_PROCESSING_LIST = 'SET_IN_PROCESSING_LIST';\r\nexport const SET_SELECTED_NODE = 'SET_SELECTED_NODE';\r\n\r\nexport class SetPath implements ActionInterface {\r\n  readonly type = SET_PATH;\r\n  payload: string;\r\n}\r\n\r\nexport class SetLoadingState implements ActionInterface {\r\n  readonly type = SET_LOADING_STATE;\r\n  payload: boolean;\r\n}\r\n\r\nexport class SetInProcessingList implements ActionInterface {\r\n  readonly type = SET_IN_PROCESSING_LIST;\r\n  payload: Array<string>;\r\n}\r\n\r\n\r\nexport class SetSelectedNode implements ActionInterface {\r\n  readonly type = SET_SELECTED_NODE;\r\n  payload: NodeInterface;\r\n}\r\n\r\nexport type Actions = SetPath | SetLoadingState | SetSelectedNode | SetInProcessingList;\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { FileCategoryService, FileContentService } from 'ntk-cms-api';\r\nimport { Observable } from 'rxjs';\r\nimport { map } from 'rxjs/operators';\r\nimport { NodeInterface } from '../interfaces/node.interface';\r\nimport { TreeModel } from '../models/tree.model';\r\nimport { FileManagerStoreService, SET_LOADING_STATE, SET_PATH, SET_SELECTED_NODE } from './file-manager-store.service';\r\n\r\n/*\r\n{\r\n  size: string           // e.g. '3 KB'\r\n  url?: string            // download url\r\n  id: string | number;   // id can be path or database id\r\n  dir: bool              // is current node dir?\r\n  path: string           // path to current item (e.g. /folder1/someFile.txt)\r\n  name?: string          // optional (but we are using id as name if name is not present) (e.g. someFile.txt)\r\n}\r\nhttps://github.com/Chiff/ng6-file-man-express/blob/master/index.js\r\n*/\r\n// @Injectable({\r\n//   providedIn: 'root'\r\n// })\r\n@Injectable()\r\nexport class NodeService {\r\n  public serviceTree: TreeModel;\r\n  private privatePath: string;\r\n\r\n  constructor(\r\n    private http: HttpClient,\r\n    private store: FileManagerStoreService,\r\n    private fileContentService: FileContentService,\r\n    private fileCategoryService: FileCategoryService,\r\n  ) {\r\n    /** GUID */\r\n    this.guid = this.newGuid();\r\n    /** GUID */\r\n    // console.log('NodeService Constructor:', this.guid);\r\n  }\r\n  /** GUID */\r\n  private guid = '';\r\n  private S4(): string {\r\n    const ran = (1 + Math.random()) * 0x10000;\r\n    return (ran | 0).toString(16).substring(1);\r\n  }\r\n  newGuid(): string {\r\n    const isString = `${this.S4()}${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}-${this.S4()}${this.S4()}${this.S4()}`;\r\n    return isString;\r\n  }\r\n  /** GUID */\r\n  // todo ask server to get parent structure\r\n  public startManagerAt(path: string): void {\r\n    this.currentPath = path;\r\n    this.refreshCurrentPath();\r\n  }\r\n  public refreshCurrentPath_orginal(): void {\r\n    this.findNodeByPath_orginal(this.currentPath).children = {};\r\n    this.getNodes_orginal(this.currentPath).then(() => {\r\n      this.store.dispatch({ type: SET_SELECTED_NODE, payload: this.serviceTree.nodes });\r\n      this.store.dispatch({ type: SET_PATH, payload: this.currentPath });\r\n    });\r\n  }\r\n  public refreshCurrentPath(): void {\r\n    this.findNodeByPath(this.currentPath).children = {};\r\n    this.getNodes(this.currentPath).then(() => {\r\n      this.store.dispatch({ type: SET_SELECTED_NODE, payload: this.serviceTree.nodes });\r\n      this.store.dispatch({ type: SET_PATH, payload: this.currentPath });\r\n    });\r\n  }\r\n  getNodes_orginal(path: string): Promise<Array<NodeInterface>> {\r\n    return new Promise((resolve => {\r\n      this.parseNodes_orginal(path).subscribe((data: Array<NodeInterface>) => {\r\n        for (let i = 0; i < data.length; i++) {\r\n          const parentPath = this.getParentPath(data[i].pathToNode);\r\n          this.findNodeByPath_orginal(parentPath).children[data[i].name] = data[i];\r\n        }\r\n        resolve(null);\r\n      });\r\n    }));\r\n  }\r\n  getNodes(path: string): Promise<Array<NodeInterface>> {\r\n    //console.log('getNodes Run:', this.guid);\r\n    const prosses = 'getNodes';\r\n    this.store.processStart(prosses);\r\n    return new Promise((resolve => {\r\n      this.parseNodes(path).subscribe((data: Array<NodeInterface>) => {\r\n        for (let i = 0; i < data.length; i++) {\r\n          const parentPath = this.getParentPath(data[i].pathToNode);\r\n          this.findNodeByPath(parentPath).children[data[i].id] = data[i];\r\n        }\r\n        this.store.processStop(prosses);\r\n        resolve(null);\r\n      });\r\n    }));\r\n  }\r\n  private getParentPath_orginal(path: string): string {\r\n    let parentPath = path.split('/');\r\n    parentPath = parentPath.slice(0, parentPath.length - 1);\r\n    return parentPath.join('/');\r\n  }\r\n  private getParentPath(path: string): string {\r\n    let parentPath = path.split('/');\r\n    parentPath = parentPath.slice(0, parentPath.length - 1);\r\n    return parentPath.join('/');\r\n  }\r\n  private parseNodes_orginal(path: string): Observable<NodeInterface[]> {\r\n    return new Observable(observer => {\r\n      this.getNodesFromServer_orginal(path).subscribe((data: Array<any>) => {\r\n        observer.next(data.map(node => this.createNode_orginal(path, node)));\r\n        this.store.dispatch({ type: SET_LOADING_STATE, payload: false });\r\n      });\r\n    });\r\n  }\r\n  private parseNodes(path: string): Observable<NodeInterface[]> {\r\n    return new Observable(observer => {\r\n      this.getNodesFromServer(path).subscribe((data: Array<any>) => {\r\n\r\n        observer.next(data.map(node => this.createNode(path, node)));\r\n        this.store.dispatch({ type: SET_LOADING_STATE, payload: false });\r\n\r\n      });\r\n    });\r\n  }\r\n  private createNode_orginal(path: string, node: any): NodeInterface {\r\n    if (node.path[0] !== '/') {\r\n      console.warn('[Node Service] Server should return initial path with \"/\"');\r\n      node.path = '/' + node.path;\r\n    }\r\n\r\n    const ids = node.path.split('/');\r\n    if (ids.length > 2 && ids[ids.length - 1] === '') {\r\n      ids.splice(-1, 1);\r\n      node.path = ids.join('/');\r\n    }\r\n\r\n    const cachedNode = this.findNodeByPath_orginal(node.path);\r\n    return {\r\n      id: node.id,\r\n      isFolder: node.dir,\r\n      isExpanded: cachedNode ? cachedNode.isExpanded : false,\r\n      pathToNode: node.path,\r\n      pathToParent: this.getParentPath_orginal(node.path),\r\n      name: node.name || node.id,\r\n      children: cachedNode ? cachedNode.children : {}\r\n    } as NodeInterface;\r\n\r\n\r\n\r\n  }\r\n  private createNode(path: string, node: NodeInterface): NodeInterface {\r\n\r\n    // if (node.parentId && node.parentId > 0) {\r\n    //   console.warn('[Node Service] Server should return initial path with \"/\"');\r\n    //   node.pathToNode = '/' + node.pathToNode;\r\n    // }\r\n\r\n    const ids = node.pathToNode.split('/');\r\n    if (ids.length > 2 && ids[ids.length - 1] === '') {\r\n      ids.splice(-1, 1);\r\n      node.pathToNode = ids.join('/');\r\n    }\r\n\r\n    const cachedNode = this.findNodeByPath(node.pathToNode);\r\n    const pathToParentVar = this.getParentPath(node.pathToNode);\r\n    // node.isExpanded = cachedNode ? cachedNode.isExpanded : false;\r\n    // node.pathToParent = pathToParentVar;\r\n    // node.children = cachedNode ? cachedNode.children : {};\r\n    // node.name = node.name ? node.name : node.id + '';\r\n    // return node;\r\n    return {\r\n      id: node.id,\r\n      isFolder: node.isFolder,\r\n      isExpanded: cachedNode ? cachedNode.isExpanded : false,\r\n      pathToNode: node.pathToNode,\r\n      pathToParent: pathToParentVar,\r\n      name: node.name || node.id,\r\n      children: cachedNode ? cachedNode.children : {},\r\n      createdDate: node.createdDate,\r\n      updatedDate: node.updatedDate,\r\n      size: node.size,\r\n      extension: node.extension,\r\n      downloadLinksrc: node.downloadLinksrc,\r\n      downloadThumbnailSrc: node.downloadThumbnailSrc,\r\n    } as NodeInterface;\r\n  }\r\n  private getNodesFromServer_orginal(path: string): Observable<any> {\r\n    let folderId: any = this.findNodeByPath_orginal(path).id;\r\n    folderId = folderId === 0 ? '' : folderId;\r\n\r\n    return this.http.get(\r\n      this.serviceTree.config.baseURL + this.serviceTree.config.api.listFile,\r\n      { params: new HttpParams().set('parentPath', folderId) }\r\n    );\r\n\r\n  }\r\n  private getNodesFromServer(path: string): Observable<Array<NodeInterface>> {\r\n    this.store.dispatch({ type: SET_LOADING_STATE, payload: true });\r\n\r\n    const findN = this.findNodeByPath(path);\r\n    const folderId = findN ? findN.id : 0;\r\n    // folderId = folderId === 0 ? '' : folderId;\r\n    const retOut = new Observable<Array<NodeInterface>>(observer => {\r\n      return this.getCategoryList(folderId, path).subscribe(\r\n        xCat => {\r\n          return this.getFileList(folderId, path).subscribe(\r\n            (\r\n              xfile => {\r\n                xfile = xfile.concat(xCat);\r\n                observer.next(xfile);\r\n              })\r\n          );\r\n        });\r\n    });\r\n\r\n    return retOut;\r\n  }\r\n  public findNodeByPath_orginal(nodePath: string): NodeInterface {\r\n    const ids = nodePath.split('/');\r\n    ids.splice(0, 1);\r\n\r\n    return ids.length === 0 ? this.serviceTree.nodes : ids.reduce((value, index) => value.children[index], this.serviceTree.nodes);\r\n  }\r\n  public findNodeByPath(nodePath: string): NodeInterface {\r\n    const ids = nodePath.split('/');\r\n    ids.splice(0, 1);\r\n    if (ids.length === 0) {\r\n      return this.serviceTree.nodes;\r\n    }\r\n    const retOut = ids.reduce((value, index) => value.children[index], this.serviceTree.nodes);\r\n    return retOut;\r\n  }\r\n\r\n  public findNodeById_orginal(id: number): NodeInterface {\r\n    const result = this.findNodeByIdHelper_orginal(id);\r\n\r\n    if (result === null) {\r\n      console.warn('[Node Service] Cannot find node by id. Id not existing or not fetched. Returning root.');\r\n      return this.serviceTree.nodes;\r\n    }\r\n\r\n    return result;\r\n  }\r\n  public findNodeById(id: number): NodeInterface {\r\n\r\n    const result = this.findNodeByIdHelper(id);\r\n\r\n    if (result === null) {\r\n      console.warn('[Node Service] Cannot find node by id. Id not existing or not fetched. Returning root.');\r\n      return this.serviceTree.nodes;\r\n    }\r\n\r\n    return result;\r\n  }\r\n\r\n  public findNodeByIdHelper_orginal(id: number, node: NodeInterface = this.serviceTree.nodes): any {\r\n    if (node.id === id) {\r\n      return node;\r\n    }\r\n\r\n    const keys = Object.keys(node.children);\r\n\r\n    for (let i = 0; i < keys.length; i++) {\r\n      if (typeof node.children[keys[i]] === 'object') {\r\n        const obj = this.findNodeByIdHelper_orginal(id, node.children[keys[i]]);\r\n        if (obj != null) {\r\n          return obj;\r\n        }\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n  public findNodeByIdHelper(id: number, node: NodeInterface = this.serviceTree.nodes): any {\r\n    if (node.id === id) {\r\n      return node;\r\n    }\r\n\r\n    const keys = Object.keys(node.children);\r\n\r\n    for (let i = 0; i < keys.length; i++) {\r\n      if (typeof node.children[keys[i]] === 'object') {\r\n        const obj = this.findNodeByIdHelper(id, node.children[keys[i]]);\r\n        if (obj != null) {\r\n          return obj;\r\n        }\r\n      }\r\n    }\r\n\r\n    return null;\r\n  }\r\n\r\n  public foldRecursively_orginal(node: NodeInterface): void {\r\n    // console.log('folding ', node);\r\n    const children = node.children;\r\n\r\n    Object.keys(children).map((child: string) => {\r\n      if (!children.hasOwnProperty(child) || !children[child].isExpanded) {\r\n        return null;\r\n      }\r\n\r\n      this.foldRecursively_orginal(children[child]);\r\n      // todo put this getElById into one func (curr inside node.component.ts + fm.component.ts) - this won't be maintainable\r\n      document.getElementById('tree_' + children[child].pathToNode).classList.add('deselected');\r\n      children[child].isExpanded = false;\r\n    });\r\n  }\r\n  public foldRecursively(node: NodeInterface): void {\r\n    // console.log('folding ', node);\r\n    const children = node.children;\r\n\r\n    Object.keys(children).map((child: string) => {\r\n      if (!children.hasOwnProperty(child) || !children[child].isExpanded) {\r\n        return null;\r\n      }\r\n\r\n      this.foldRecursively(children[child]);\r\n      // todo put this getElById into one func (curr inside node.component.ts + fm.component.ts) - this won't be maintainable\r\n      document.getElementById('tree_' + children[child].pathToNode).classList.add('deselected');\r\n      children[child].isExpanded = false;\r\n    });\r\n  }\r\n\r\n  public foldAll_orginal(): void {\r\n    this.foldRecursively_orginal(this.serviceTree.nodes);\r\n  }\r\n  public foldAll(refresh = false): void {\r\n    if (refresh) {\r\n      this.refreshCurrentPath();\r\n      // this.foldRecursively(this.serviceTree.nodes);\r\n    } else {\r\n      this.foldRecursively(this.serviceTree.nodes);\r\n    }\r\n  }\r\n\r\n  get currentPath(): string {\r\n    return this.privatePath;\r\n  }\r\n\r\n  set currentPath(value: string) {\r\n    this.privatePath = value;\r\n  }\r\n  getCategoryList(folderId: number, path: string): Observable<Array<NodeInterface>> {\r\n    return this.fileCategoryService.ServiceGetAllInCategoryById(folderId).pipe(\r\n      map((x) => {\r\n        const retList: NodeInterface[] = [];\r\n\r\n        x.listItems.forEach(element => {\r\n          const item: NodeInterface = {\r\n            name: element.title,\r\n            isRoot: true,\r\n            id: element.id,\r\n            parentId: element.linkParentId ? element.linkParentId : null,\r\n            pathToNode: path + '/' + element.id,\r\n            pathToParent: '',\r\n            isFolder: true,\r\n            isExpanded: false,\r\n            createdDate: element.createdDate,\r\n            updatedDate: element.updatedDate,\r\n            downloadLinksrc: element.linkMainImageIdSrc,\r\n          };\r\n          item.pathToNode = '/' + item.pathToNode;\r\n          item.pathToNode = item.pathToNode.replace('//', '/');\r\n          // if (retList.length < 4) {\r\n          retList.push(item);\r\n          // }\r\n        });\r\n        return retList;\r\n      })\r\n    );\r\n\r\n  }\r\n  getFileList(folderId: number, path: string): Observable<Array<NodeInterface>> {\r\n    return this.fileContentService.ServiceGetAllInCategoryById(folderId).pipe(\r\n      map((x) => {\r\n        const retList: NodeInterface[] = [];\r\n        x.listItems.forEach(element => {\r\n          const item: NodeInterface = {\r\n            name: element.fileName,\r\n            isRoot: false,\r\n            id: element.id,\r\n            parentId: element.linkCategoryId ? element.linkCategoryId : null,\r\n            pathToNode: path + '/' + element.id,\r\n            pathToParent: '',\r\n            isFolder: false,\r\n            isExpanded: false,\r\n            createdDate: element.createdDate,\r\n            updatedDate: element.updatedDate,\r\n            downloadLinksrc: element.downloadLinksrc,\r\n            downloadThumbnailSrc: element.downloadThumbnailSrc,\r\n            size: element.fileSize,\r\n            extension: element.extension\r\n          };\r\n          item.pathToNode = '/' + item.pathToNode;\r\n          item.pathToNode = item.pathToNode.replace('//', '/');\r\n          // if (retList.length < 2) {\r\n          retList.push(item);\r\n          // }\r\n        });\r\n        return retList;\r\n      })\r\n    );\r\n  }\r\n}\r\n\r\n","import { HttpClient, HttpParams } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { NtkSmartModalService } from 'ngx-ntk-smart-module';\r\nimport { FileCategoryModel, FileCategoryService, FileContentModel, FileContentService } from 'ntk-cms-api';\r\nimport { Observable } from 'rxjs';\r\nimport { first } from 'rxjs/operators';\r\nimport { NodeInterface } from '../interfaces/node.interface';\r\nimport { TreeModel } from '../models/tree.model';\r\nimport { FileManagerStoreService } from './file-manager-store.service';\r\nimport { NodeService } from './node.service';\r\n\r\n@Injectable()\r\nexport class NodeClickedService {\r\n  public serviceTree: TreeModel;\r\n\r\n  constructor(\r\n    public ngxSmartModalService: NtkSmartModalService,\r\n    private nodeService: NodeService,\r\n    private store: FileManagerStoreService,\r\n    private http: HttpClient,\r\n    private fileContentService: FileContentService,\r\n    private fileCategoryService: FileCategoryService,\r\n  ) {\r\n  }\r\n\r\n  public startDownload_orginal(node: NodeInterface): void {\r\n    const parameters = new HttpParams().append('path', node.id + '');\r\n    this.reachServer('download', this.serviceTree.config.api.downloadFile, parameters);\r\n  }\r\n  public startDownload(node: NodeInterface): void {\r\n    window.open(node.downloadLinksrc, '_blank');\r\n  }\r\n  public initDelete_orginal(node: NodeInterface): void {\r\n    this.sideEffectHelper(\r\n      'Delete',\r\n      new HttpParams().append('path', node.id + ''),\r\n      'delete',\r\n      this.serviceTree.config.api.deleteFile,\r\n      () => this.successWithSideViewClose()\r\n    );\r\n  }\r\n  public initDelete(node: NodeInterface): void {\r\n    const prosses = 'initDelete';\r\n    this.store.processStart(prosses);\r\n    if (node.isFolder) {\r\n      this.fileCategoryService.ServiceDelete(node.id).subscribe(\r\n        (next) => {\r\n          if (next.isSuccess) {\r\n            this.successWithSideViewClose();\r\n          }\r\n          else {\r\n            this.actionFailed('Delete Folder Error', next.errorMessage);\r\n          }\r\n          this.store.processStop(prosses);\r\n        }\r\n        , (error) => {\r\n          this.actionFailed('Delete Folder Error', error);\r\n          this.store.processStop(prosses);\r\n        }\r\n      );\r\n    } else {\r\n      this.fileContentService.ServiceDelete(node.id).subscribe(\r\n        (next) => {\r\n          if (next.isSuccess) {\r\n            this.successWithSideViewClose();\r\n          }\r\n          else {\r\n            this.actionFailed('Delete File Error', next.errorMessage);\r\n          }\r\n          this.store.processStop(prosses);\r\n        }\r\n        , (error) => {\r\n          this.actionFailed('Delete File Error', error);\r\n          this.store.processStop(prosses);\r\n        }\r\n      );\r\n    }\r\n  }\r\n\r\n  public searchForString_orginal(input: string): void {\r\n    this.sideEffectHelper(\r\n      'Search',\r\n      new HttpParams().append('query', input),\r\n      'get',\r\n      this.serviceTree.config.api.searchFiles,\r\n      (res) => this.searchSuccess(input, res)\r\n    );\r\n  }\r\n  public searchForString(input: string): void {\r\n\r\n\r\n\r\n  }\r\n\r\n\r\n\r\n\r\n\r\n  public createFolder_orginal(currentParent: number, newDirName: string): void {\r\n    this.sideEffectHelper(\r\n      'Create Folder',\r\n      (() => {\r\n        let httpParams = new HttpParams().append('dirName', newDirName);\r\n        if (currentParent !== 0) {\r\n          httpParams = httpParams.append('parentPath', currentParent + '');\r\n        }\r\n\r\n        console.log(currentParent, httpParams.get('dirName'), httpParams.get('parentPath'));\r\n        return httpParams;\r\n      })(),\r\n      'post',\r\n      this.serviceTree.config.api.createFolder\r\n    );\r\n  }\r\n\r\n  public createFolder(currentParent: number, newDirName: string): void {\r\n    const model = new FileCategoryModel();\r\n    model.title = newDirName;\r\n    if (currentParent > 0) {\r\n      model.linkParentId = currentParent;\r\n    }\r\n    const prosses = 'createFolder';\r\n    this.store.processStart(prosses);\r\n    this.fileCategoryService.ServiceAdd(model).subscribe(\r\n      (next) => {\r\n        if (next.isSuccess) {\r\n          this.successWithSideViewClose();\r\n        }\r\n        else {\r\n          this.actionFailed('Create Folder Error', next.errorMessage);\r\n        }\r\n        this.store.processStop(prosses);\r\n      }\r\n      , (error) => {\r\n        this.actionFailed('Create Folder Error', error);\r\n        this.store.processStop(prosses);\r\n      }\r\n    );\r\n  }\r\n  public createFile(\r\n    currentParent: number, fileName: string, uploadFileGUID: string,\r\n    successMethod: any,\r\n    failMethod: any\r\n  ): void {\r\n    const model = new FileContentModel();\r\n    model.fileName = fileName;\r\n    model.uploadFileGUID = uploadFileGUID;\r\n    if (currentParent > 0) {\r\n      model.linkCategoryId = currentParent;\r\n    }\r\n    const prosses = 'createFile';\r\n    this.store.processStart(prosses);\r\n    this.fileContentService.ServiceAdd(model).subscribe(\r\n      (next) => {\r\n        if (next.isSuccess) {\r\n          this.successWithSideViewClose();\r\n          if (successMethod) {\r\n            successMethod(next);\r\n          }\r\n        }\r\n        else {\r\n          this.actionFailed('Create File Error', next.errorMessage);\r\n        }\r\n        this.store.processStop(prosses);\r\n      }\r\n      , (error) => {\r\n        this.actionFailed('Create File Error', error);\r\n        if (failMethod) {\r\n          failMethod(error);\r\n        }\r\n        this.store.processStop(prosses);\r\n      }\r\n    );\r\n  }\r\n  public rename_orginal(node: NodeInterface, newName: string): void {\r\n    this.sideEffectHelper(\r\n      'Rename',\r\n      new HttpParams().append('path', node.id + '').append('newName', newName),\r\n      'post',\r\n      this.serviceTree.config.api.renameFile,\r\n      () => this.successWithSideViewClose()\r\n    );\r\n  }\r\n  public rename(node: NodeInterface, newName: string): void {\r\n    const prosses = 'rename';\r\n    this.store.processStart(prosses);\r\n    if (node.isFolder) {\r\n      this.fileCategoryService.ServiceGetOneById(node.id).subscribe((next) => {\r\n        if (next.isSuccess) {\r\n          next.item.title = newName;\r\n          /** update */\r\n          this.fileCategoryService.ServiceEdit(next.item).subscribe(\r\n            (next2) => {\r\n              if (next2.isSuccess) {\r\n                this.successWithSideViewClose();\r\n              }\r\n              else {\r\n                this.actionFailed('rename Folder Error', next.errorMessage);\r\n              }\r\n              this.store.processStop(prosses);\r\n            }\r\n            , (error) => {\r\n              this.actionFailed('rename Folder Error', error);\r\n              this.store.processStop(prosses);\r\n            }\r\n          );\r\n          /** update */\r\n        } else {\r\n          this.actionFailed('rename Folder Error', next.errorMessage);\r\n          this.store.processStop(prosses);\r\n        }\r\n      }\r\n        , (error) => {\r\n          this.actionFailed('rename Folder Error', error);\r\n          this.store.processStop(prosses);\r\n        });\r\n\r\n    } else {\r\n      this.fileContentService.ServiceGetOneById(node.id).subscribe((next) => {\r\n        if (next.isSuccess) {\r\n          next.item.fileName = newName;\r\n          /** update */\r\n          this.fileContentService.ServiceEdit(next.item).subscribe(\r\n            (next2) => {\r\n              if (next2.isSuccess) {\r\n                this.successWithSideViewClose();\r\n              }\r\n              else {\r\n                this.actionFailed('rename File Error', next.errorMessage);\r\n              }\r\n              this.store.processStop(prosses);\r\n            }\r\n            , (error) => {\r\n              this.actionFailed('rename File Error', error);\r\n              this.store.processStop(prosses);\r\n            }\r\n          );\r\n          /** update */\r\n        } else {\r\n          this.actionFailed('rename File Error', next.errorMessage);\r\n          this.store.processStop(prosses);\r\n        }\r\n      }\r\n        , (error) => {\r\n          this.actionFailed('rename File Error', error);\r\n          this.store.processStop(prosses);\r\n        });\r\n    }\r\n  }\r\n\r\n  private sideEffectHelper(\r\n    name: string, parameters: HttpParams, httpMethod: string, apiURL: string,\r\n    successMethod = (a: any) => this.actionSuccess(a),\r\n    failMethod = (a: any, b: any) => this.actionFailed(a, b)\r\n  ): void {\r\n    this.ngxSmartModalService.getModal('waitModal').open();\r\n\r\n    this.reachServer(httpMethod, apiURL, parameters)\r\n      .subscribe(\r\n        (a) => successMethod(a),\r\n        (err) => failMethod(name, err)\r\n      );\r\n  }\r\n\r\n  private reachServer(method: string, apiUrl: string, parameters: HttpParams, data: any = {}): Observable<any> {\r\n    switch (method.toLowerCase()) {\r\n      case 'get':\r\n        return this.http.get(this.serviceTree.config.baseURL + apiUrl, { params: parameters });\r\n      case 'post':\r\n        return this.http.post(this.serviceTree.config.baseURL + apiUrl, data, { params: parameters });\r\n      case 'delete':\r\n        return this.http.delete(this.serviceTree.config.baseURL + apiUrl, { params: parameters });\r\n      case 'download':\r\n        window.open(this.serviceTree.config.baseURL + apiUrl + '?path=' + parameters.get('path'), '_blank');\r\n        return null;\r\n      default:\r\n        console.warn('[NodeClickedService] Incorrect params for this side-effect');\r\n        return null;\r\n    }\r\n  }\r\n\r\n  private successWithSideViewClose(): void {\r\n    this.actionSuccess();\r\n    document.getElementById('side-view').classList.remove('selected');\r\n  }\r\n\r\n  private searchSuccess(input: string, data: any): void {\r\n    const obj = {\r\n      searchString: input,\r\n      response: data\r\n    };\r\n\r\n    this.actionSuccess();\r\n\r\n    this.ngxSmartModalService.setModalData(obj, 'searchModal', true);\r\n    this.ngxSmartModalService.getModal('searchModal').open();\r\n  }\r\n\r\n  private actionSuccess(response: string = ''): void {\r\n    document.body.classList.remove('dialog-open');\r\n\r\n    this.nodeService.refreshCurrentPath();\r\n\r\n    const modal = this.ngxSmartModalService.getModal('waitModal');\r\n    modal.onOpenFinished.pipe(first()).subscribe(() => modal.close());\r\n    modal.close();\r\n  }\r\n\r\n  private actionFailed(name: string, error: any): void {\r\n    document.body.classList.remove('dialog-open');\r\n\r\n    this.ngxSmartModalService.getModal('waitModal').close();\r\n    this.ngxSmartModalService.getModal('errorModal').open();\r\n    console.warn('[NodeClickedService] Action \"' + name + '\" failed', error);\r\n  }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { forkJoin, Observable, of } from 'rxjs';\r\nimport { catchError } from 'rxjs/operators';\r\n\r\n@Injectable()\r\nexport class TranslateUiService {\r\n  private availableLanguages = ['en', 'fa', 'fr', 'ru'];\r\n  private translationPath = './assets/i18n/ntk-cms-filemanager/';\r\n\r\n  constructor(\r\n    private translateService: TranslateService,\r\n    private http: HttpClient\r\n  ) {}\r\n\r\n  public init(language: string = null): void {\r\n    if (language) {\r\n      // Initialize one specific language\r\n      this.loadTranslation(language).subscribe(\r\n        (translations) => {\r\n          this.translateService.setTranslation(language, translations, true);\r\n          this.translateService.use(language);\r\n        },\r\n        (error) => {\r\n          console.warn(\r\n            `Failed to load translation for ${language}, falling back to English`\r\n          );\r\n          this.loadTranslation('en').subscribe((enTranslations) => {\r\n            this.translateService.setTranslation(\r\n              language,\r\n              enTranslations,\r\n              true\r\n            );\r\n            this.translateService.use(language);\r\n          });\r\n        }\r\n      );\r\n    } else {\r\n      // Initialize all languages\r\n      const loadPromises = this.availableLanguages.map((lang) =>\r\n        this.loadTranslation(lang).pipe(\r\n          catchError((error) => {\r\n            console.warn(`Failed to load translation for ${lang}`);\r\n            return of(null);\r\n          })\r\n        )\r\n      );\r\n\r\n      forkJoin(loadPromises).subscribe((results) => {\r\n        results.forEach((translations, index) => {\r\n          if (translations) {\r\n            const lang = this.availableLanguages[index];\r\n            this.translateService.setTranslation(lang, translations, true);\r\n          }\r\n        });\r\n      });\r\n    }\r\n  }\r\n\r\n  private loadTranslation(language: string): Observable<any> {\r\n    return this.http.get(`${this.translationPath}${language}.json`);\r\n  }\r\n\r\n  public setLanguage(language: string): void {\r\n    this.translateService.use(language);\r\n  }\r\n\r\n  public getCurrentLanguage(): string {\r\n    return this.translateService.currentLang;\r\n  }\r\n\r\n  public getAvailableLanguages(): string[] {\r\n    return this.availableLanguages;\r\n  }\r\n}\r\n","import { ChangeDetectorRef, Component, Input, OnInit } from '@angular/core';\r\n\r\nimport { NodeInterface } from '../../../interfaces/node.interface';\r\n\r\nimport { DownloadModeEnum } from '../../../enums/download-mode.enum';\r\nimport { FileManagerStoreService, SET_PATH, SET_SELECTED_NODE } from '../../../services/file-manager-store.service';\r\nimport { NodeClickedService } from '../../../services/node-clicked.service';\r\nimport { NodeService } from '../../../services/node.service';\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-node',\r\n  templateUrl: './node.component.html',\r\n  styleUrls: ['./node.component.scss'],\r\n  standalone: false\r\n})\r\nexport class NodeComponent implements OnInit {\r\n  @Input() node: NodeInterface;\r\n  isSingleClick = true;\r\n\r\n  constructor(\r\n    private store: FileManagerStoreService,\r\n    private nodeService: NodeService,\r\n    private nodeClickedService: NodeClickedService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.store\r\n      .getState(state => state.fileManagerState.selectedNode)\r\n      .subscribe((value: NodeInterface) => {\r\n        this.selectedNode = value;\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n  selectedNode: NodeInterface;\r\n  public method1CallForClick(event: MouseEvent) {\r\n    event.preventDefault();\r\n\r\n    this.isSingleClick = true;\r\n    setTimeout(() => {\r\n      if (this.isSingleClick) {\r\n        this.showMenu();\r\n      }\r\n    }, 200);\r\n  }\r\n\r\n  // todo event.preventDefault for double click\r\n  public method2CallForDblClick(event: any) {\r\n    event.preventDefault();\r\n\r\n    this.isSingleClick = false;\r\n    this.open();\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  private open() {\r\n    if (!this.node.isFolder) {\r\n      if (this.nodeService?.serviceTree?.config?.options?.allowFolderDownload === DownloadModeEnum.DOWNLOAD_DISABLED) {\r\n        this.isSingleClick = true;\r\n        this.showMenu();\r\n        return;\r\n      }\r\n\r\n      this.nodeClickedService.startDownload(this.node);\r\n      return;\r\n    }\r\n\r\n    if (this.node.stayOpen) {\r\n      if (this.node.name === 'root') {\r\n        if (this.selectedNode && this.selectedNode.id === this.node.id) {\r\n          this.nodeService.foldAll(true);\r\n        }\r\n        else {\r\n          this.nodeService.foldAll();\r\n        }\r\n      }\r\n\r\n      this.store.dispatch({ type: SET_PATH, payload: this.node.pathToNode });\r\n      return;\r\n    }\r\n\r\n    this.toggleNodeExpanded();\r\n\r\n    if (this.node.isExpanded) {\r\n      this.store.dispatch({ type: SET_PATH, payload: this.node.pathToNode });\r\n    }\r\n\r\n    this.setNodeSelectedState();\r\n  }\r\n\r\n  private showMenu() {\r\n    this.store.dispatch({ type: SET_SELECTED_NODE, payload: this.node });\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  private toggleNodeExpanded() {\r\n    this.node.isExpanded = !this.node.isExpanded;\r\n  }\r\n\r\n  private setNodeSelectedState() {\r\n    if (!this.node.isExpanded) {\r\n      document.getElementById('tree_' + this.node.pathToNode).classList.add('deselected');\r\n\r\n      this.nodeService.foldRecursively(this.node);\r\n\r\n      this.store.dispatch({ type: SET_PATH, payload: this.node.pathToParent });\r\n    } else {\r\n      document.getElementById('tree_' + this.node.pathToNode).classList.remove('deselected');\r\n    }\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","<div #customTemplate (dblclick)=\"method2CallForDblClick($event)\" (click)=\"method1CallForClick($event)\">\r\n  <ng-content></ng-content>\r\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TemplateRef } from '@angular/core';\r\n\r\nimport { NodeInterface } from '../../interfaces/node.interface';\r\nimport { FileManagerStoreService } from '../../services/file-manager-store.service';\r\nimport { NodeService } from '../../services/node.service';\r\n\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-folder-content',\r\n  templateUrl: './folder-content.component.html',\r\n  styleUrls: ['./folder-content.component.scss'],\r\n  standalone: false\r\n})\r\nexport class FolderContentComponent implements OnInit {\r\n  @Input() folderContentTemplate: TemplateRef<any>;\r\n  @Input() folderContentBackTemplate: TemplateRef<any>;\r\n  @Input() folderContentNewFolderTemplate: TemplateRef<any>;\r\n  @Input() folderContentNewFileTemplate: TemplateRef<any>;\r\n  @Input() folderContentReloadTemplate: TemplateRef<any>; // karavi\r\n\r\n  @Output() openUploadDialog = new EventEmitter();\r\n  @Output() openNewFolderDialog = new EventEmitter();\r\n\r\n  nodes: NodeInterface;\r\n  obj = Object;\r\n\r\n  constructor(\r\n    private nodeService: NodeService,\r\n    private store: FileManagerStoreService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.store\r\n      .getState(state => state.fileManagerState.inProcessingList)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n    this.store\r\n      .getState(state => state.fileManagerState.selectedNode)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.nodes = this.nodeService.serviceTree.nodes;\r\n\r\n    this.store\r\n      .getState(state => state.fileManagerState.path)\r\n      .subscribe((path: string) => {\r\n        this.nodes = this.nodeService.findNodeByPath(path);\r\n      });\r\n  }\r\n\r\n  newFileClickedAction() {\r\n    this.openUploadDialog.emit(true);\r\n  }\r\n  newFolderClickedAction() {\r\n    this.openNewFolderDialog.emit(true);\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"item-holder\" style=\"direction: ltr;\" *ngIf=\"nodes\">\r\n  <ng-container *ngIf=\"nodes.id !== 0\">\r\n    <lib-filemanager-node [node]=nodes id=\"{{nodes.pathToNode}}\">\r\n      <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes}\" [ngTemplateOutlet]=\"folderContentBackTemplate\">\r\n      </ng-container>\r\n    </lib-filemanager-node>\r\n  </ng-container>\r\n  <ng-container *ngIf=\"nodes.id === 0\">\r\n    <lib-filemanager-node [node]=\"nodes\" id=\"{{ nodes.id }}\" >\r\n      <ng-container [ngTemplateOutletContext]=\"{ $implicit: nodes }\" [ngTemplateOutlet]=\"folderContentReloadTemplate\">\r\n      </ng-container>\r\n    </lib-filemanager-node>\r\n  </ng-container>\r\n\r\n  <ng-container *ngFor=\"let node of obj.keys(nodes.children)\">\r\n    <lib-filemanager-node [node]=\"nodes.children[node]\" id=\"fc_{{nodes.children[node].pathToNode}}\">\r\n      <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes.children[node]}\"\r\n        [ngTemplateOutlet]=\"folderContentTemplate\">\r\n      </ng-container>\r\n    </lib-filemanager-node>\r\n  </ng-container>\r\n\r\n  <div class=\"new\" (click)=\"newFolderClickedAction()\" *ngIf=\"nodes?.children\">\r\n    <ng-container [ngTemplateOutlet]=\"folderContentNewFolderTemplate\"></ng-container>\r\n  </div>\r\n  <div class=\"new\" (click)=\"newFileClickedAction()\" *ngIf=\"nodes?.children && nodes.id !== 0\">\r\n    <ng-container [ngTemplateOutlet]=\"folderContentNewFileTemplate\"></ng-container>\r\n  </div>\r\n</div>\r\n","import { ChangeDetectorRef, Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\nimport { NodeInterface } from '../../../interfaces/node.interface';\r\nimport { FileManagerStoreService } from '../../../services/file-manager-store.service';\r\n\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-node-lister',\r\n  templateUrl: './node-lister.component.html',\r\n  styleUrls: ['./node-lister.component.scss'],\r\n  standalone: false\r\n})\r\nexport class NodeListerComponent implements OnInit {\r\n  @ContentChild(TemplateRef, { static: false }) templateRef: TemplateRef<any>;\r\n  @Input() nodes: NodeInterface;\r\n  @Input() showFiles: boolean;\r\n\r\n  obj = Object;\r\n\r\n  constructor(\r\n    private store: FileManagerStoreService,\r\n    private cdr: ChangeDetectorRef) {\r\n    this.store\r\n      .getState(state => state.fileManagerState.inProcessingList)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n    this.store\r\n      .getState(state => state.fileManagerState.selectedNode)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","<ul class=\"node-lister-flist\" style=\"direction: ltr;text-align: left;\">\r\n  <!--In order to avoid having to create that extra div, we can instead use ng-container directive-->\r\n  <ng-container *ngFor=\"let node of obj.keys(nodes)\">\r\n    <li class=\"node-lister-list-item\" *ngIf=\"nodes[node].isFolder || showFiles\">\r\n\r\n      <lib-filemanager-node class=\"node-lister-app-node\" [node]=\"nodes[node]\" id=\"tree_{{nodes[node].isRoot ? 'root' : nodes[node].pathToNode}}\">\r\n        <ng-container [ngTemplateOutletContext]=\"{$implicit: (nodes[node])}\"\r\n                      [ngTemplateOutlet]=\"templateRef\">\r\n        </ng-container>\r\n      </lib-filemanager-node>\r\n\r\n      <lib-filemanager-node-lister class=\"node-lister\" *ngIf=\"obj.keys(nodes[node].children).length > 0\"\r\n                       [showFiles]=\"showFiles\" [nodes]=\"nodes[node].children\">\r\n        <ng-template let-nodes>\r\n          <ng-container [ngTemplateOutletContext]=\"{$implicit: (nodes)}\"\r\n                        [ngTemplateOutlet]=\"templateRef\">\r\n          </ng-container>\r\n        </ng-template>\r\n      </lib-filemanager-node-lister>\r\n    </li>\r\n  </ng-container>\r\n</ul>\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ContentChild, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\nimport { first } from 'rxjs/operators';\r\nimport { ConfigInterface } from '../../interfaces/config.interface';\r\nimport { NodeInterface } from '../../interfaces/node.interface';\r\nimport { TreeModel } from '../../models/tree.model';\r\nimport { FileManagerStoreService, SET_SELECTED_NODE } from '../../services/file-manager-store.service';\r\nimport { NodeService } from '../../services/node.service';\r\n\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-tree',\r\n  templateUrl: './tree.component.html',\r\n  styleUrls: ['./tree.component.scss'],\r\n  standalone: false\r\n})\r\nexport class TreeComponent implements AfterViewInit, OnInit {\r\n  @ContentChild(TemplateRef, { static: false }) templateRef: TemplateRef<any>;\r\n\r\n  @Input() treeModel: TreeModel;\r\n  @Input() config: ConfigInterface;\r\n\r\n  nodes: NodeInterface;\r\n  currentTreeLevel = '';\r\n\r\n  constructor(\r\n    private nodeService: NodeService,\r\n    private store: FileManagerStoreService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.store\r\n      .getState(state => state.fileManagerState.inProcessingList)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n    this.store\r\n      .getState(state => state.fileManagerState.selectedNode)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.nodes = this.treeModel.nodes;\r\n\r\n    // todo move this store to proper place\r\n    this.store\r\n      .getState(state => state.fileManagerState.path)\r\n      .subscribe((path: string) => {\r\n        this.nodeService.getNodes(path);\r\n        this.currentTreeLevel = this.treeModel.currentPath;\r\n        return this.treeModel.currentPath = path;\r\n      });\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.store\r\n      .getState(state => state.fileManagerState.path)\r\n      .pipe(first())\r\n      .subscribe((path: string) => {\r\n        const nodes = this.nodeService.findNodeByPath(path);\r\n        this.store.dispatch({ type: SET_SELECTED_NODE, payload: nodes });\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","<lib-filemanager-node-lister [showFiles]=\"treeModel.config.options.showFilesInsideTree\"\r\n                 [nodes]=\"{children: nodes}\">\r\n  <ng-template let-nodes>\r\n    <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes}\" [ngTemplateOutlet]=\"templateRef\"></ng-container>\r\n  </ng-template>\r\n</lib-filemanager-node-lister>\r\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\n\r\nimport { FileManagerStoreService, SET_PATH } from '../../services/file-manager-store.service';\r\nimport { NodeService } from '../../services/node.service';\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-nav-bar',\r\n  templateUrl: './nav-bar.component.html',\r\n  styleUrls: ['./nav-bar.component.scss'],\r\n  standalone: false\r\n})\r\nexport class NavBarComponent implements OnInit {\r\n  currentPath: string[];\r\n\r\n  constructor(\r\n    private store: FileManagerStoreService,\r\n    private nodeService: NodeService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.store\r\n      .getState(state => state.fileManagerState.inProcessingList)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n    this.store\r\n      .getState(state => state.fileManagerState.selectedNode)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.store\r\n      .getState(state => state.fileManagerState.path)\r\n      .subscribe((data: string) => {\r\n        this.nodeService.currentPath = data;\r\n        this.currentPath = data.split('/');\r\n      });\r\n  }\r\n\r\n  onClick(path: string[], index: number) {\r\n    const newPath = path.slice(0, index + 1).join('/');\r\n    this.store.dispatch({ type: SET_PATH, payload: newPath });\r\n  }\r\n\r\n}\r\n\r\n\r\n\r\n\r\n","<div>\r\n  >> <span *ngFor=\"let to of currentPath; let i = index\">\r\n  <a class=\"link\" (click)=\"onClick(currentPath, i)\">\r\n    <div *ngIf=\"to === '' || to === 'root'; then icon else name\"></div>\r\n    <ng-template #icon><i class=\"fileicon fas fa-home\"></i></ng-template>\r\n    <ng-template #name>{{to}}</ng-template>\r\n  </a> /\r\n  </span>\r\n</div>\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\nimport { NodeClickedService } from '../../services/node-clicked.service';\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-navigation',\r\n  templateUrl: './navigation.component.html',\r\n  styleUrls: ['./navigation.component.scss'],\r\n  standalone: false,\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class NavigationComponent implements OnInit {\r\n\r\n  constructor(\r\n    private nodeClickedService: NodeClickedService\r\n  ) {\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  onClick(input: string) {\r\n    this.nodeClickedService.searchForString(input);\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"navigation-component\" style=\"direction:ltr\">\r\n  <!-- <input #input class=\"navigation-search\" (keyup.enter)=\"onClick(input.value)\"\r\n         placeholder=\"{{'filemanager.search' | translate}}\">\r\n\r\n  <button  type=\"button\" [disabled]=\"input.value.length === 0\" class=\"navigation-search-icon\" (click)=\"onClick(input.value)\">\r\n    <i class=\"fileicon fas fa-search\"></i>\r\n  </button> -->\r\n\r\n  <div>\r\n    <ng-content></ng-content>\r\n  </div>\r\n</div>\r\n","import { Component, Input, OnInit, TemplateRef } from '@angular/core';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { timer } from 'rxjs';\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-loading-overlay',\r\n  templateUrl: './loading-overlay.component.html',\r\n  styleUrls: ['./loading-overlay.component.scss'],\r\n  standalone: false,\r\n})\r\nexport class LoadingOverlayComponent implements OnInit {\r\n  @Input() loadingOverlayTemplate: TemplateRef<any>;\r\n  timeoutMessage: any;\r\n\r\n  constructor(private translateService: TranslateService) {}\r\n\r\n  // todo unsubscribe from 'list' event - now we are only dismissing this component\r\n  ngOnInit() {\r\n    timer(20000).subscribe(() => {\r\n      this.timeoutMessage = this.translateService.instant(\r\n        'filemanager.loading_troubles'\r\n      );\r\n    });\r\n  }\r\n}\r\n","<ng-container\r\n  [ngTemplateOutletContext]=\"{$implicit: timeoutMessage}\"\r\n  [ngTemplateOutlet]=\"loadingOverlayTemplate\">\r\n</ng-container>\r\n","import { HttpClient, HttpEventType, HttpRequest } from '@angular/common/http';\r\nimport { Inject } from '@angular/core';\r\nimport { FilePickerAdapter, FilePreviewModel, UploadResponse, UploadStatus } from 'ngx-ntk-file-picker';\r\nimport { Observable, of } from 'rxjs';\r\nimport { catchError, map } from 'rxjs/operators';\r\n\r\nexport class FileUploaderPickerAdapter extends FilePickerAdapter {\r\n  constructor(@Inject(HttpClient) private http: HttpClient) {\r\n    super();\r\n  }\r\n  baseUploadURL = 'https://apifile.ir/api/v2/';\r\n  routeUpload = 'upload';\r\n  public uploadFile(fileItem: FilePreviewModel): Observable<UploadResponse> {\r\n    const form = new FormData();\r\n    form.append('file', fileItem.file);\r\n    const req = new HttpRequest('POST', this.baseUploadURL + this.routeUpload, form, { reportProgress: true });\r\n    return this.http.request(req).pipe(\r\n      map((res) => {\r\n        if (res.type === HttpEventType.Response) {\r\n          const responseFromBackend = res.body;\r\n          return {\r\n            body: responseFromBackend,\r\n            status: UploadStatus.UPLOADED\r\n          };\r\n        } else if (res.type === HttpEventType.UploadProgress) {\r\n          /** Compute and show the % done: */\r\n          const uploadProgress = +Math.round((100 * res.loaded) / res.total);\r\n          return {\r\n            status: UploadStatus.IN_PROGRESS,\r\n            progress: uploadProgress\r\n          };\r\n        }\r\n        return {\r\n          status: UploadStatus.IN_PROGRESS,\r\n        };\r\n      }),\r\n      catchError(er => {\r\n        console.log(er);\r\n        return of({ status: UploadStatus.ERROR, body: er });\r\n      })\r\n    );\r\n  }\r\n  public removeFile(fileItem: FilePreviewModel): Observable<any> {\r\n    return new Observable<any>((observer) => {\r\n      return () => {\r\n        // Detach the event handler from the target\r\n      };\r\n    });\r\n  }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport {\r\n  AfterViewInit,\r\n  Component,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { FilePreviewModel, ValidationError } from 'ngx-ntk-file-picker';\r\nimport { ErrorExceptionResult, FileUploadModel } from 'ntk-cms-api';\r\nimport { Observable, of } from 'rxjs';\r\nimport { delay } from 'rxjs/operators';\r\nimport { NodeService } from '../../../services/node.service';\r\nimport { FileUploaderPickerAdapter } from './fileUploaderPickerAdapter';\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-upload',\r\n  templateUrl: './upload.component.html',\r\n  styleUrls: ['./upload.component.scss'],\r\n  standalone: false,\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class UploadComponent implements OnInit, AfterViewInit {\r\n  @Input() set optionSelectFileType(model: string | string[]) {\r\n    this.fileExtensions = [];\r\n    if (typeof model === 'string') {\r\n      this.fileTypeAccept = '.' + model;\r\n      this.fileExtensions.push(model);\r\n      if (this.fileExtensions.length === 0) {\r\n        this.fileExtensions = null;\r\n      }\r\n\r\n      return;\r\n    }\r\n    if (typeof model === typeof []) {\r\n      let retOut = '';\r\n      model.forEach((element) => {\r\n        this.fileExtensions.push(element);\r\n        if (retOut.length > 0) {\r\n          retOut = retOut + ', ';\r\n        }\r\n        retOut = retOut + '.' + element;\r\n      });\r\n      this.fileTypeAccept = retOut;\r\n      if (this.fileExtensions.length === 0) {\r\n        this.fileExtensions = null;\r\n      }\r\n      return;\r\n    }\r\n  }\r\n  constructor(private http: HttpClient, public nodeService: NodeService) {\r\n    this.adapter.baseUploadURL =\r\n      this.nodeService.serviceTree.config.baseUploadURL;\r\n    this.adapter.routeUpload =\r\n      this.nodeService.serviceTree.config.api.uploadFile;\r\n    if (this.nodeService.serviceTree.config.options.fileUplodMaxCount > 0)\r\n      this.fileUplodMaxCount =\r\n        this.nodeService.serviceTree.config.options.fileUplodMaxCount;\r\n    this.fileTypeAccept =\r\n      this.nodeService.serviceTree.config.options.fileUplodTypeAccept;\r\n    this.fileExtensions =\r\n      this.nodeService.serviceTree.config.options.fileUplodExtensions;\r\n  }\r\n\r\n  get getCurrentPath(): any {\r\n    const parentPath = this.nodeService.findNodeByPath(\r\n      this.nodeService.currentPath\r\n    ).id;\r\n    return parentPath === 0 ? '' : parentPath;\r\n  }\r\n  @Output() createFile = new EventEmitter();\r\n  @Input() openDialog = false;\r\n  @Input() openSelectFileDescription = '';\r\n  @Output() closeDialog = new EventEmitter();\r\n  @Input() openDirectUploadSave = false;\r\n  @Input() openDirectUploadView = false;\r\n  adapter = new FileUploaderPickerAdapter(this.http);\r\n  fileUplodMaxCount = 20;\r\n  fileTypeAccept = ''; // '.jpg, .png'\r\n  fileExtensions: string[] = []; // ['pdf', 'jpg', 'jpeg', 'png', 'mp4', 'css']\r\n  counter = 0;\r\n\r\n  // @Output() optionUploadSuccess = new EventEmitter<FilePreviewModel>();\r\n\r\n  // uploadSuccess(event: any): void {\r\n  //   this.optionUploadSuccess.emit(event);\r\n  // }\r\n  public myFiles: FilePreviewModel[] = [];\r\n\r\n  ngOnInit(): void {}\r\n  ngAfterViewInit(): void {}\r\n\r\n  uploadFiles() {}\r\n  allowClose = true;\r\n\r\n  newClickedAction() {\r\n    this.closeDialog.emit();\r\n  }\r\n  onFileAdded(model: FilePreviewModel): void {\r\n    console.log('onFileAdded', model);\r\n    this.myFiles.push(model);\r\n  }\r\n  onUploadSuccess(model: FilePreviewModel): void {\r\n    if (!model.uploadResponse) {\r\n    }\r\n    const ret = model.uploadResponse as ErrorExceptionResult<FileUploadModel>;\r\n    if (!ret.isSuccess) {\r\n    }\r\n    this.createFile.emit({\r\n      fileName: model.fileName,\r\n      uploadFileGUID: ret.item.fileKey,\r\n    });\r\n  }\r\n  public onValidationError(error: ValidationError): void {\r\n    alert(`Validation Error ${error.error} in ${error.file.name}`);\r\n  }\r\n\r\n  public onRemoveSuccess(e: FilePreviewModel) {\r\n    console.log(e);\r\n  }\r\n  public myCustomValidator(file: File): Observable<boolean> {\r\n    if (!file.name.includes('uploader')) {\r\n      return of(true).pipe(delay(200));\r\n    }\r\n    // if (file.size > 50) {\r\n    //   return this.http.get('https://vugar.free.beeceptor.com').pipe(map((res) =>  res === 'OK' ));\r\n    // }\r\n    return of(false).pipe(delay(200));\r\n  }\r\n}\r\n","<div class=\"backdrop\" (click)=\"newClickedAction()\"></div>\r\n<div class=\"upload-background\">\r\n  <div class=\"row\" style=\"flex-direction: column;\">\r\n\r\n    <ngx-ntk-file-picker class=\"ntk-awesome-uploader\"  #uploader [adapter]=\"adapter\" [fileMaxCount]=\"fileUplodMaxCount\" [fileMaxSize]=\"700\" [uploadType]=\"'multi'\"\r\n      (validationError)=\"onValidationError($event)\" [fileExtensions]=\"fileExtensions\"\r\n      [enableCropper]=\"false\" (uploadSuccess)=\"onUploadSuccess($event)\" (removeSuccess)=\"onRemoveSuccess($event)\"\r\n      (fileAdded)=\"onFileAdded($event)\" [customValidator]=\"myCustomValidator\" [captions]=\"nodeService.serviceTree.config.options.captions\"\r\n      [accept]=\"fileTypeAccept\">\r\n    </ngx-ntk-file-picker>\r\n    <h2>{{openSelectFileDescription}}</h2>\r\n  </div>\r\n  <div class=\"row\">\r\n    <ng-template #myItemTemplate let-fileItem=\"fileItem\" let-uploadProgress=\"uploadProgress\" >\r\n      <p>File Size: {{fileItem.file.size}}</p>\r\n      <p>File Name: {{fileItem.fileName}}</p>\r\n      <p > Upload Progress: {{uploadProgress}} % </p>\r\n      <button type=\"button\" (click)=\"uploader.removeFile(fileItem)\">Remove</button>\r\n    </ng-template>\r\n    <hr>\r\n    <div class=\"buttons\">\r\n      <button type=\"button\" class=\"button big\" [disabled]=\"this.counter < 1\" (click)=\"uploadFiles()\">\r\n        {{'filemanager.upload' | translate }}\r\n      </button>\r\n      <button type=\"button\" class=\"button big\" [disabled]=\"!allowClose\" (click)=\"newClickedAction()\">\r\n        {{'filemanager.close' | translate }}\r\n      </button>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-newfolder',\r\n  templateUrl: './new-folder.component.html',\r\n  styleUrls: ['./new-folder.component.scss'],\r\n  standalone: false\r\n})\r\nexport class NewFolderComponent implements OnInit {\r\n  @Input() openDialog = false;\r\n  @ViewChild('uploadFolder') uploadFolder: ElementRef;\r\n  @Output() buttonClicked = new EventEmitter();\r\n  @Output() closeDialog = new EventEmitter();\r\n  @Output() createDir = new EventEmitter();\r\n\r\n  buttonText: string;\r\n  inputValue = '';\r\n\r\n  constructor(private translateService: TranslateService) {\r\n    this.buttonText = this.translateService.instant('filemanager.close');\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  onClick() {\r\n    const el: HTMLElement = (this.uploadFolder.nativeElement as HTMLElement);\r\n    // @ts-ignore\r\n    // this.buttonClicked.emit(el.value);\r\n    const name = el.value;\r\n    if (name && name.length > 0) {\r\n      this.createDir.emit(name);\r\n      this.newClickedAction();\r\n    }\r\n    else {\r\n      this.newClickedAction();\r\n    }\r\n  }\r\n\r\n  onInputChange(event: any) {\r\n    this.inputValue = event.target.value;\r\n    if (this.inputValue.length > 0) {\r\n      this.buttonText = this.translateService.instant('filemanager.confirm').toString();\r\n    } else {\r\n      this.buttonText = this.translateService.instant('filemanager.close').toString();\r\n    }\r\n  }\r\n\r\n  newClickedAction() {\r\n    this.closeDialog.emit();\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"backdrop\" (click)=\"newClickedAction()\"></div>\r\n<div class=\"upload-background\">\r\n       <p class=\"new-folder-description\">{{'filemanager.type_new_folder_name' | translate}}</p>\r\n       <input #uploadFolder placeholder=\"{{'filemanager.folder_name' | translate}}\" (keyup)=\"onInputChange($event)\"\r\n              (keyup.enter)=\"onClick()\" type=\"text\" class=\"new-folder-input\" />\r\n       <button type=\"button\" class=\"button new-folder-send\" (click)=\"onClick()\">{{buttonText | translate}}</button>\r\n</div>","import { ChangeDetectorRef, Component, EventEmitter, Input, OnInit, Output, TemplateRef, ViewEncapsulation } from '@angular/core';\r\n\r\n\r\nimport { DownloadModeEnum } from '../../enums/download-mode.enum';\r\nimport { NodeInterface } from '../../interfaces/node.interface';\r\nimport { FileManagerStoreService } from '../../services/file-manager-store.service';\r\n\r\n@Component({\r\n  selector: 'lib-filemanager-side-view',\r\n  templateUrl: './side-view.component.html',\r\n  styleUrls: ['./side-view.component.scss'],\r\n  standalone: false,\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SideViewComponent implements OnInit {\r\n  @Input() sideViewTemplate: TemplateRef<any>;\r\n\r\n  @Input() node: NodeInterface;\r\n  @Input() allowFolderDownload: DownloadModeEnum = DownloadModeEnum.DOWNLOAD_DISABLED;\r\n\r\n  @Output() clickEvent = new EventEmitter();\r\n\r\n  constructor(\r\n    private store: FileManagerStoreService,\r\n    private cdr: ChangeDetectorRef\r\n  ) {\r\n    this.store\r\n      .getState(state => state.fileManagerState.isLoading)\r\n      .subscribe((isLoading: boolean) => {\r\n        this.cdr.detectChanges();\r\n      });\r\n    this.store\r\n      .getState(state => state.fileManagerState.selectedNode)\r\n      .subscribe(() => {\r\n        this.cdr.detectChanges();\r\n      });\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  onClick(event: any, type: string) {\r\n    this.clickEvent.emit({ type, event, node: this.node });\r\n  }\r\n\r\n  isDisabled() {\r\n    if (this.allowFolderDownload === DownloadModeEnum.DOWNLOAD_DISABLED) {\r\n      return true;\r\n    } else if (this.allowFolderDownload === DownloadModeEnum.DOWNLOAD_FILES && this.node.isFolder) {\r\n      return true;\r\n    }\r\n\r\n    return false;\r\n  }\r\n  AllowPlayMP3(node: NodeInterface): boolean {\r\n    if (\r\n      node.isFolder ||\r\n      !node.extension ||\r\n      node.extension.length === 0 ||\r\n      !node.downloadLinksrc ||\r\n      node.downloadLinksrc.length === 0\r\n    ) {\r\n      return false;\r\n    }\r\n    if (node.extension.toLowerCase() === 'mp3') {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n  AllowViewImage(node: NodeInterface): boolean {\r\n    if (\r\n      node.isFolder ||\r\n      !node.extension ||\r\n      node.extension.length === 0 ||\r\n      !node.downloadLinksrc ||\r\n      node.downloadLinksrc.length === 0\r\n    ) {\r\n      return false;\r\n    }\r\n    if (node.extension.toLowerCase() === 'png' || node.extension.toLowerCase() === 'jpeg'\r\n      || node.extension.toLowerCase() === 'gif'\r\n      || node.extension.toLowerCase() === 'jpg') {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n\r\n\r\n\r\n\r\n","<div class=\"side-view\" style=\"direction: ltr\" *ngIf=\"node\">\r\n  <div class=\"side-view-preview\">\r\n    <i\r\n      (click)=\"onClick($event, 'closeSideView')\"\r\n      class=\"fileicon fas fa-times side-view-close\"\r\n    ></i>\r\n\r\n    <div class=\"side-view-preview-title\">{{ node.name }}</div>\r\n    <div class=\"side-view-buttons\">\r\n      <button\r\n        type=\"button\"\r\n        (click)=\"onClick($event, 'download')\"\r\n        class=\"button\"\r\n        [disabled]=\"isDisabled()\"\r\n      >\r\n        {{ \"filemanager.download\" | translate }}\r\n      </button>\r\n      <button\r\n        type=\"button\"\r\n        (click)=\"onClick($event, 'renameConfirm')\"\r\n        class=\"button\"\r\n      >\r\n        {{ \"filemanager.rename\" | translate }}\r\n      </button>\r\n      <button\r\n        type=\"button\"\r\n        (click)=\"onClick($event, 'removeAsk')\"\r\n        class=\"button\"\r\n      >\r\n        {{ \"filemanager.delete\" | translate }}\r\n      </button>\r\n    </div>\r\n    <div class=\"side-view-preview-content\">\r\n      <div *ngIf=\"AllowViewImage(node)\" class=\"side-view-preview-content\">\r\n        <img\r\n          src=\"{{ node.downloadThumbnailSrc }}\"\r\n          loading=\"lazy\"\r\n          alt=\"...\"\r\n          class=\"mb-3\"\r\n          style=\"max-width: -webkit-fill-available\"\r\n        />\r\n      </div>\r\n      <div *ngIf=\"AllowPlayMP3(node)\" class=\"side-view-preview-content\">\r\n        <audio controls>\r\n          <source src=\"{{ node.downloadLinksrc }}\" type=\"audio/mp3\" />\r\n          Your browser does not support the audio tag.\r\n        </audio>\r\n      </div>\r\n      <ng-container\r\n        [ngTemplateOutletContext]=\"{ $implicit: node }\"\r\n        [ngTemplateOutlet]=\"sideViewTemplate\"\r\n      >\r\n      </ng-container>\r\n    </div>\r\n  </div>\r\n</div>\r\n","import {\r\n  AfterViewInit,\r\n  ChangeDetectorRef,\r\n  Component,\r\n  ElementRef,\r\n  EventEmitter,\r\n  Input,\r\n  OnInit,\r\n  Output,\r\n  TemplateRef,\r\n  ViewChild,\r\n  ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { NtkSmartModalService } from 'ngx-ntk-smart-module';\r\nimport { NodeInterface } from './interfaces/node.interface';\r\nimport { TreeModel } from './models/tree.model';\r\nimport {\r\n  FileManagerStoreService,\r\n  SET_LOADING_STATE,\r\n  SET_SELECTED_NODE,\r\n} from './services/file-manager-store.service';\r\nimport { NodeClickedService } from './services/node-clicked.service';\r\nimport { NodeService } from './services/node.service';\r\nimport { TranslateUiService } from './services/translateUi.service';\r\n\r\n@Component({\r\n  selector: 'cms-file-manager',\r\n  templateUrl: './cms-filemanager.component.html',\r\n  styleUrls: ['./cms-filemanager.component.scss'],\r\n  standalone: false,\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CmsFileManagerComponent implements OnInit, AfterViewInit {\r\n  private _language = 'en';\r\n  @Input() set language(value: string) {\r\n    if (value && value.length > 0) {\r\n      this._language = value;\r\n      this.translateUiService.init(value);\r\n      this.translate.use(this.language);\r\n    }\r\n  }\r\n  get language(): string {\r\n    return this._language;\r\n  }\r\n  @Input() iconTemplate: TemplateRef<any>;\r\n  @Input() folderContentTemplate: TemplateRef<any>;\r\n  @Input() folderContentBackTemplate: TemplateRef<any>;\r\n  @Input() folderContentNewFileTemplate: TemplateRef<any>;\r\n  @Input() folderContentNewFolderTemplate: TemplateRef<any>;\r\n  @Input() folderContentReloadTemplate: TemplateRef<any>;\r\n\r\n  @Input() openFilemanagerButtonView = true;\r\n  @Input() openDirectUploadSave = true;\r\n  @Input() openDirectUploadView = false;\r\n  @Input() loadingOverlayTemplate: TemplateRef<any>;\r\n  @Input() sideViewTemplate: TemplateRef<any>;\r\n  @Input() set selectFileType(model: Array<string>) {\r\n    if (model && model.length > 0) {\r\n      this.configSelectFileType = model;\r\n    }\r\n  }\r\n  configSelectFileType: Array<string> = [];\r\n\r\n  @Input() tree: TreeModel;\r\n  @Input() isPopup = false;\r\n  @Input() openFilemanagerButtonLabelKey = 'filemanager.open_file_manager';\r\n  @Input() openSelectFileDescription = '';\r\n  @Output() itemClicked = new EventEmitter();\r\n  @Output() itemSelected = new EventEmitter();\r\n  openPopupForm = false;\r\n  @Output() openFormChange: EventEmitter<boolean> = new EventEmitter<boolean>();\r\n  @Input() set openForm(model: boolean) {\r\n    if (\r\n      model !== this.openPopupForm &&\r\n      this.mainModal &&\r\n      this.mainModal.nativeElement\r\n    ) {\r\n      if (model) {\r\n        this.mainModal.nativeElement.style.display = 'block';\r\n        document.body.classList.add('jw-modal-open');\r\n        // this.ntkSmartModalService.getModal('mainModal').open();\r\n      } else {\r\n        this.mainModal.nativeElement.style.display = 'none';\r\n        document.body.classList.remove('jw-modal-open');\r\n        // this.ntkSmartModalService.getModal('mainModal').close();\r\n      }\r\n    }\r\n    this.openPopupForm = model;\r\n    this.openFormChange.emit(model);\r\n    if (this.openDirectUploadView) {\r\n      this.newFileDialog = true;\r\n    }\r\n    if (model && this.isPopup && !this.startManagerRuned) {\r\n      this.nodeService.startManagerAt(this.tree.currentPath + '');\r\n      this.startManagerRuned = true;\r\n    }\r\n  }\r\n  get openForm(): boolean {\r\n    return this.openPopupForm;\r\n  }\r\n\r\n  openFilemanagerButtonLabel: string;\r\n\r\n  selectedNode: NodeInterface;\r\n  sideMenuClosed = true;\r\n\r\n  // fmOpen = false;\r\n  loading: boolean;\r\n  newFileDialog = false;\r\n  newFolderDialog = false;\r\n  HighestZIndex = 0;\r\n  startManagerRuned = false;\r\n  @ViewChild('mainModal') mainModal: ElementRef;\r\n  constructor(\r\n    private store: FileManagerStoreService,\r\n    private nodeService: NodeService,\r\n    private nodeClickedService: NodeClickedService,\r\n    public ngxSmartModalService: NtkSmartModalService,\r\n    public translate: TranslateService,\r\n    private cdr: ChangeDetectorRef,\r\n    private el: ElementRef,\r\n    private translateUiService: TranslateUiService\r\n  ) {}\r\n\r\n  ngOnInit(): void {\r\n    this.nodeService.serviceTree = this.tree;\r\n    this.nodeClickedService.serviceTree = this.tree;\r\n    if (!this.isPopup) {\r\n      this.nodeService.startManagerAt(this.tree.currentPath + '');\r\n      this.startManagerRuned = true;\r\n    }\r\n\r\n    this.translate\r\n      .get(this.openFilemanagerButtonLabelKey)\r\n      .subscribe((translation) => {\r\n        this.openFilemanagerButtonLabel = translation;\r\n      });\r\n\r\n    this.store\r\n      .getState((state) => state.fileManagerState.inProcessingList)\r\n      .subscribe((inProcessingList: Array<string>) => {\r\n        this.cdr.detectChanges();\r\n      });\r\n    this.store\r\n      .getState((state) => state.fileManagerState.isLoading)\r\n      .subscribe((isLoading: boolean) => {\r\n        this.loading = isLoading;\r\n        this.cdr.detectChanges();\r\n      });\r\n    this.store\r\n      .getState((state) => state.fileManagerState.selectedNode)\r\n      .subscribe((selectedNode: NodeInterface) => {\r\n        this.cdr.detectChanges();\r\n        if (!selectedNode) {\r\n          return;\r\n        }\r\n        // fixed highlighting error when closing node but not changing path\r\n        if (\r\n          selectedNode.isExpanded &&\r\n          selectedNode.pathToNode !== this.nodeService.currentPath &&\r\n          !selectedNode.stayOpen\r\n        ) {\r\n          return;\r\n        }\r\n\r\n        this.handleFileManagerClickEvent({\r\n          type: 'select',\r\n          node: selectedNode,\r\n        });\r\n      });\r\n  }\r\n  ngAfterViewInit(): void {\r\n    // this.HighestZIndex = this.findHighestZIndex('div');\r\n  }\r\n  onItemClicked(event: any): void {\r\n    this.itemClicked.emit(event);\r\n  }\r\n\r\n  searchClicked(data: any): void {\r\n    // console.log(data);\r\n\r\n    const node = this.nodeService.findNodeById(data.id);\r\n    this.ngxSmartModalService.getModal('searchModal').close();\r\n    this.store.dispatch({ type: SET_SELECTED_NODE, payload: node });\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  handleFileManagerClickEvent(event: any): any {\r\n    switch (event.type) {\r\n      case 'closeSideView':\r\n        return this.nodeClickHandler(event.node, true);\r\n\r\n      case 'select':\r\n        this.onItemClicked(event);\r\n        this.highlightSelected(event.node);\r\n        return this.nodeClickHandler(event.node);\r\n\r\n      case 'download':\r\n        this.nodeClickedService.startDownload(event.node);\r\n        return this.onItemClicked(event);\r\n\r\n      case 'renameConfirm':\r\n        return this.ngxSmartModalService.getModal('renameModal').open();\r\n      case 'rename':\r\n        this.ngxSmartModalService.getModal('renameModal').close();\r\n\r\n        this.nodeClickedService.rename(this.selectedNode, event.value);\r\n        return this.onItemClicked({\r\n          type: event.type,\r\n          node: this.selectedNode,\r\n          newName: event.value,\r\n        });\r\n\r\n      case 'removeAsk':\r\n        return this.ngxSmartModalService.getModal('confirmDeleteModal').open();\r\n      case 'remove':\r\n        this.ngxSmartModalService.getModal('confirmDeleteModal').close();\r\n\r\n        this.nodeClickedService.initDelete(this.selectedNode);\r\n        return this.onItemClicked({\r\n          type: event.type,\r\n          node: this.selectedNode,\r\n        });\r\n\r\n      case 'createFolder':\r\n        const parentid = this.nodeService.findNodeByPath(\r\n          this.nodeService.currentPath\r\n        ).id;\r\n        this.nodeClickedService.createFolder(parentid, event.payload);\r\n        return this.onItemClicked({\r\n          type: event.type,\r\n          parentId: parentid,\r\n          newDirName: event.payload,\r\n        });\r\n      case 'createFile':\r\n        if (this.openDirectUploadView && !this.openDirectUploadSave) {\r\n          // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n          const selectedModel = <NodeInterface>{\r\n            id: event.payload.uploadFileGUID,\r\n            name: event.payload.uploadFileGUID,\r\n            isFolder: false,\r\n          };\r\n          this.selectedNode = selectedModel;\r\n          this.confirmSelection();\r\n          return;\r\n        }\r\n\r\n        const failMethod = (error: any) => {};\r\n        const successMethod = (next: any) => {\r\n          // tslint:disable-next-line: no-angle-bracket-type-assertion\r\n          const selectedModel = <NodeInterface>{\r\n            id: next.item.id,\r\n            name: next.item.fileName,\r\n            downloadLinksrc: next.item.downloadLinksrc,\r\n            downloadThumbnailSrc: next.item.downloadThumbnailSrc,\r\n            size: next.item.size,\r\n            extension: next.item.extension,\r\n            isFolder: false,\r\n          };\r\n          this.selectedNode = selectedModel;\r\n          if (this.openDirectUploadView) {\r\n            this.confirmSelection();\r\n            return;\r\n          }\r\n        };\r\n\r\n        const catid = this.nodeService.findNodeByPath(\r\n          this.nodeService.currentPath\r\n        ).id;\r\n\r\n        this.nodeClickedService.createFile(\r\n          catid,\r\n          event.payload.fileName,\r\n          event.payload.uploadFileGUID,\r\n          successMethod,\r\n          failMethod\r\n        );\r\n\r\n        return this.onItemClicked({\r\n          type: event.type,\r\n          parentId: catid,\r\n          fileName: event.payload.fileName,\r\n          uploadFileGUID: event.payload.uploadFileGUID,\r\n        });\r\n    }\r\n  }\r\n\r\n  nodeClickHandler(node: NodeInterface, closing?: boolean): void {\r\n    if (node.name === 'root') {\r\n      return;\r\n    }\r\n    if (closing) {\r\n      const parentNode = this.nodeService.findNodeByPath(\r\n        this.nodeService.currentPath\r\n      );\r\n      this.store.dispatch({ type: SET_SELECTED_NODE, payload: parentNode });\r\n      this.sideMenuClosed = true;\r\n    } else {\r\n      if (this.selectedNode === node && this.sideMenuClosed) {\r\n        this.sideMenuClosed = false;\r\n      } else if (this.selectedNode === node && !this.sideMenuClosed) {\r\n        this.sideMenuClosed = true;\r\n      } else if (this.selectedNode !== node && this.sideMenuClosed) {\r\n        this.sideMenuClosed = false;\r\n      } else if (this.selectedNode !== node && !this.sideMenuClosed) {\r\n        this.sideMenuClosed = false;\r\n      }\r\n    }\r\n\r\n    this.selectedNode = node;\r\n\r\n    // todo investigate this workaround - warning: [File Manager] failed to find requested node for path: [path]\r\n    if (!document.getElementById('side-view')) {\r\n      this.cdr.detectChanges();\r\n      return;\r\n    }\r\n\r\n    if (this.sideMenuClosed) {\r\n      document.getElementById('side-view').classList.remove('selected');\r\n    } else {\r\n      document.getElementById('side-view').classList.add('selected');\r\n    }\r\n    this.cdr.detectChanges();\r\n  }\r\n\r\n  // todo stay DRY!\r\n  highlightSelected(node: NodeInterface): void {\r\n    let pathToNode = node.pathToNode;\r\n\r\n    if (pathToNode.length === 0) {\r\n      pathToNode = 'root';\r\n    }\r\n\r\n    const treeElement = this.getElementById(pathToNode, 'tree_');\r\n    const fcElement = this.getElementById(pathToNode, 'fc_');\r\n    if (!treeElement && !fcElement) {\r\n      console.warn(\r\n        '[File Manager] failed to find requested node for path:',\r\n        pathToNode\r\n      );\r\n      return;\r\n    }\r\n\r\n    this.removeClass('highlighted');\r\n    this.removeClass('light');\r\n\r\n    if (fcElement) {\r\n      this.highilghtChildElement(fcElement);\r\n    }\r\n    if (treeElement) {\r\n      this.highilghtChildElement(treeElement, true);\r\n    }\r\n\r\n    // parent node highlight\r\n    let pathToParent = node.pathToParent;\r\n    if (\r\n      pathToParent === null ||\r\n      node.pathToNode === this.nodeService.currentPath\r\n    ) {\r\n      return;\r\n    }\r\n\r\n    if (pathToParent.length === 0) {\r\n      pathToParent = 'root';\r\n    }\r\n\r\n    const parentElement = this.getElementById(pathToParent, 'tree_');\r\n    if (!parentElement) {\r\n      console.warn(\r\n        '[File Manager] failed to find requested parent node for path:',\r\n        pathToParent\r\n      );\r\n      return;\r\n    }\r\n\r\n    this.highilghtChildElement(parentElement);\r\n  }\r\n\r\n  private highilghtChildElement(el: HTMLElement, light: boolean = false): void {\r\n    el.children[0].children[0].classList // appnode div wrapper // ng template first item\r\n      .add('highlighted');\r\n\r\n    if (light) {\r\n      el.children[0].children[0].classList.add('light');\r\n    }\r\n  }\r\n\r\n  private getElementById(id: string, prefix: string = ''): HTMLElement {\r\n    const fullId = prefix + id;\r\n    return document.getElementById(fullId);\r\n  }\r\n\r\n  private removeClass(className: string): void {\r\n    Array.from(document.getElementsByClassName(className)).map((el) =>\r\n      el.classList.remove(className)\r\n    );\r\n  }\r\n\r\n  fmShowHide(act: boolean): void {\r\n    this.openForm = act;\r\n  }\r\n  onActionOpen(status: boolean): void {\r\n    this.fmShowHide(status);\r\n  }\r\n\r\n  backdropClicked(): void {\r\n    // todo get rid of this ugly workaround\r\n    // todo fire userCanceledLoading event\r\n    this.store.dispatch({ type: SET_LOADING_STATE, payload: false });\r\n  }\r\n\r\n  handleUploadDialog(event: any): void {\r\n    this.newFileDialog = event;\r\n  }\r\n  handleNewFolderDialog(event: any): void {\r\n    this.newFolderDialog = event;\r\n  }\r\n\r\n  confirmSelection(): void {\r\n    this.fmShowHide(false);\r\n    this.itemSelected.emit(this.selectedNode);\r\n  }\r\n  allowConfirmSelection(selectedNode: NodeInterface): boolean {\r\n    if (\r\n      !selectedNode ||\r\n      (selectedNode.isFolder && !this.tree.config.options.showSelectFolder) ||\r\n      (!selectedNode.isFolder && !this.tree.config.options.showSelectFile)\r\n    ) {\r\n      return false;\r\n    }\r\n    if (!selectedNode.isFolder && !this.AllowFileView(selectedNode)) {\r\n      return false;\r\n    }\r\n\r\n    return true;\r\n  }\r\n\r\n  cancelSelection(): void {\r\n    this.fmShowHide(false);\r\n  }\r\n  AllowFileView(model: NodeInterface): boolean {\r\n    if (\r\n      !model ||\r\n      model.isFolder ||\r\n      !model.extension ||\r\n      model.extension.length === 0 ||\r\n      !this.configSelectFileType ||\r\n      this.configSelectFileType.length === 0 ||\r\n      this.configSelectFileType.find(\r\n        (t) =>\r\n          t &&\r\n          model.extension &&\r\n          t.toLowerCase() === model.extension.toLowerCase()\r\n      )\r\n    ) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n  findHighestZIndex(elem: string): number {\r\n    const elems = document.getElementsByTagName(elem);\r\n    let highest = Number.MIN_SAFE_INTEGER || -(Math.pow(2, 53) - 1);\r\n    for (let i = 0; i < this.el.nativeElement.length; i++) {\r\n      const zindex = Number.parseInt(\r\n        document.defaultView\r\n          .getComputedStyle(elems[i], null)\r\n          .getPropertyValue('z-index'),\r\n        10\r\n      );\r\n      if (zindex > highest) {\r\n        highest = zindex;\r\n      }\r\n    }\r\n    console.log('HighestZIndex', highest);\r\n    return highest;\r\n  }\r\n  AllowViewImage(node: NodeInterface): boolean {\r\n    if (\r\n      node.isFolder ||\r\n      !node.extension ||\r\n      node.extension.length === 0 ||\r\n      !node.downloadLinksrc ||\r\n      node.downloadLinksrc.length === 0\r\n    ) {\r\n      return false;\r\n    }\r\n    if (\r\n      node.extension.toLowerCase() === 'png' ||\r\n      node.extension.toLowerCase() === 'jpeg' ||\r\n      node.extension.toLowerCase() === 'gif' ||\r\n      node.extension.toLowerCase() === 'jpg'\r\n    ) {\r\n      return true;\r\n    }\r\n    return false;\r\n  }\r\n}\r\n","<ng-container *ngIf=\"isPopup; then itIsPopup else showContent\"></ng-container>\r\n\r\n\r\n<ng-template #itIsPopup>\r\n  <div>\r\n    <button type=\"button\" class=\"button big\" (click)=\"fmShowHide(true)\" [disabled]=\"openPopupForm\"\r\n      *ngIf=\"openFilemanagerButtonView\">{{openFilemanagerButtonLabel}}</button>\r\n  </div>\r\n  <div class=\"modal\" #mainModal>\r\n    <div class=\"jw-modal-body\">\r\n      <div class=\"jw-modal\">\r\n        <br>\r\n        <div *ngIf=\"this.openPopupForm; then showContent\"></div>\r\n        <div class=\"buttons-panel\">\r\n          <button type=\"button\" class=\"button big\" (click)=\"confirmSelection()\"\r\n            [disabled]=\"!allowConfirmSelection(selectedNode)\">{{'filemanager.confirm_selection' | translate}}</button>\r\n          <button type=\"button\" class=\"button big\" (click)=\"cancelSelection()\">{{'filemanager.cancel_selection' |\r\n            translate}}</button>\r\n        </div>\r\n      </div>\r\n    </div>\r\n    <div class=\"jw-modal-background\"></div>\r\n  </div>\r\n</ng-template>\r\n\r\n<ng-template #showContent>\r\n  <div class=\"content\" style=\"direction: ltr;\">\r\n    <div class=\"file-manager-navbar\">\r\n      <div class=\"path\">\r\n        <lib-filemanager-nav-bar></lib-filemanager-nav-bar>\r\n      </div>\r\n\r\n      <div class=\"navigation\">\r\n        <lib-filemanager-navigation>\r\n          <div class=\"button close\" (click)=\"fmShowHide(false)\" *ngIf=\"isPopup\">\r\n            <i class=\"fileicon fas fa-2x fa-times\"></i>\r\n          </div>\r\n        </lib-filemanager-navigation>\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"holder\">\r\n      <div class=\"file-manager-left\">\r\n        <lib-filemanager-tree [treeModel]=\"tree\">\r\n          <ng-template let-nodes>\r\n            <ng-container [ngTemplateOutletContext]=\"{$implicit: nodes}\"\r\n              [ngTemplateOutlet]=\"iconTemplate ? iconTemplate : defaultIconTemplate\">\r\n            </ng-container>\r\n          </ng-template>\r\n        </lib-filemanager-tree>\r\n      </div>\r\n\r\n      <div class=\"right\">\r\n        <lib-filemanager-folder-content (openUploadDialog)=\"handleUploadDialog($event)\"\r\n          (openNewFolderDialog)=\"handleNewFolderDialog($event)\"\r\n          [folderContentTemplate]=\"folderContentTemplate ? folderContentTemplate : defaultFolderContentTemplate\"\r\n          [folderContentNewFileTemplate]=\"folderContentNewFileTemplate ? folderContentNewFileTemplate : defaultFileContentNewTemplate\"\r\n          [folderContentNewFolderTemplate]=\"folderContentNewFolderTemplate ? folderContentNewFolderTemplate : defaultFolderContentNewTemplate\"\r\n          [folderContentReloadTemplate]=\"folderContentReloadTemplate ? folderContentReloadTemplate : defaultFolderContentReloadTemplate\"\r\n          [folderContentBackTemplate]=\"folderContentBackTemplate ? folderContentBackTemplate : defaultFolderContentBackTemplate\">\r\n        </lib-filemanager-folder-content>\r\n      </div>\r\n\r\n      <lib-filemanager-side-view id=\"side-view\" [node]=\"selectedNode\"\r\n        [sideViewTemplate]=\"sideViewTemplate ? sideViewTemplate : defaultSideViewTemplate\"\r\n        [allowFolderDownload]=\"tree.config.options.allowFolderDownload\"\r\n        (clickEvent)=\"handleFileManagerClickEvent($event)\">\r\n      </lib-filemanager-side-view>\r\n    </div>\r\n  </div>\r\n\r\n  <lib-filemanager-upload *ngIf=\"newFileDialog\" [openDialog]=\"newFileDialog\" [openSelectFileDescription]=\"openSelectFileDescription\" (closeDialog)=\"handleUploadDialog(false)\"\r\n  [optionSelectFileType]=\"configSelectFileType\"\r\n  (createFile)=\"handleFileManagerClickEvent({type: 'createFile', payload: $event})\">\r\n  </lib-filemanager-upload>\r\n  <lib-filemanager-newfolder *ngIf=\"newFolderDialog\" [openDialog]=\"newFolderDialog\"\r\n    (closeDialog)=\"handleNewFolderDialog(false)\"\r\n    (createDir)=\"handleFileManagerClickEvent({type: 'createFolder', payload: $event})\">\r\n  </lib-filemanager-newfolder>\r\n\r\n\r\n  <lib-filemanager-loading-overlay *ngIf=\"loading\"\r\n    [loadingOverlayTemplate]=\"loadingOverlayTemplate ? loadingOverlayTemplate : defaultLoadingOverlayTemplate\">\r\n  </lib-filemanager-loading-overlay>\r\n\r\n\r\n  <ntk-smart-modal identifier=\"searchModal\" #searchModal [closable]=\"true\">\r\n    <h2 class=\"modal-title\" style=\"margin-bottom: 2px\"\r\n      *ngIf=\"searchModal.hasData() && searchModal.getData().response.length !== 0\">\r\n      {{'filemanager.search_results_for' | translate}}\r\n    </h2>\r\n    <h2 class=\"modal-title\" style=\"margin-bottom: 2px\"\r\n      *ngIf=\"!searchModal.hasData() || searchModal.getData().response.length === 0\">\r\n      {{'filemanager.no_results' | translate}}\r\n    </h2>\r\n    <div style=\"text-align: center\" *ngIf=\"searchModal.hasData()\">{{searchModal.getData().searchString}}</div>\r\n\r\n    <div *ngIf=\"searchModal.hasData() && searchModal.getData().response.length !== 0\">\r\n      <table style=\"margin: 0 auto\">\r\n        <tr>\r\n          <td class=\"table-item table-head\">{{'filemanager.file_name' | translate}}</td>\r\n          <td class=\"table-item-short table-head\">{{'filemanager.size' | translate}}</td>\r\n        </tr>\r\n        <tr *ngFor=\"let item of searchModal.getData().response\" (click)=\"searchClicked(item)\">\r\n          <td style=\"cursor: pointer\">\r\n            <ng-container *ngIf=\"item.fileCategory === 'D'; else file\">\r\n              <i class=\"fileicon fas fa-folder search-output-icon\"></i>\r\n            </ng-container>\r\n            <ng-template #file>\r\n              <i class=\"fileicon fas fa-file search-output-icon\"></i>\r\n            </ng-template>\r\n            <span style=\"text-overflow: ellipsis;direction: ltr;\">{{item.name}}</span>\r\n          </td>\r\n          <td class=\"table-item-short\" style=\"direction: ltr;\">{{item.size}}</td>\r\n        </tr>\r\n      </table>\r\n    </div>\r\n  </ntk-smart-modal>\r\n  <ntk-smart-modal identifier=\"waitModal\" [closable]=\"false\" [dismissable]=\"false\" [escapable]=\"false\">\r\n    <div style=\"overflow-y: hidden\">\r\n      <h2 class=\"modal-title\" style=\"margin-top: 20px\">\r\n        {{'filemanager.processing_request' | translate}}...\r\n      </h2>\r\n\r\n      <div style=\"text-align: center; height: 70px\">\r\n        <i class=\"fileicon fas fa-spinner fa-spin fa-4x\"></i>\r\n      </div>\r\n    </div>\r\n  </ntk-smart-modal>\r\n  <ntk-smart-modal identifier=\"errorModal\" [closable]=\"true\">\r\n    <h2 class=\"modal-title\" style=\"margin-top: 20px\">\r\n      {{'filemanager.something_went_wrong_with_your_request' | translate}}...\r\n    </h2>\r\n  </ntk-smart-modal>\r\n\r\n  <ntk-smart-modal *ngIf=\"selectedNode\" identifier=\"confirmDeleteModal\" #deleteModal [dismissable]=\"false\"\r\n    [closable]=\"false\">\r\n    <h2 class=\"modal-title\">\r\n      <span>{{'filemanager.file_delete_confirm' | translate}}</span>\r\n      <span *ngIf=\"selectedNode.isFolder\">{{'filemanager.folder' | translate}}</span>\r\n      <span *ngIf=\"!selectedNode.isFolder\">{{'filemanager.file' | translate}}</span>\r\n    </h2>\r\n\r\n    <div style=\"width: 100%; margin: 5px auto; text-align: center;direction: ltr;\">{{selectedNode.name}}</div>\r\n\r\n    <div class=\"rename-button\">\r\n      <button type=\"button\" class=\"button big\" (click)=\"handleFileManagerClickEvent({type: 'remove'})\">\r\n        <span> {{'filemanager.yes_delete_this' | translate}} </span>\r\n        <!-- <span *ngIf=\"selectedNode.isFolder\"> {{'filemanager.folder' | translate}} </span>\r\n        <span *ngIf=\"!selectedNode.isFolder\"> {{'filemanager.file' | translate}} </span> -->\r\n      </button>\r\n      <button type=\"button\" class=\"button big\" (click)=\"deleteModal.close()\">\r\n        {{'filemanager.cancel'|translate}}\r\n      </button>\r\n    </div>\r\n  </ntk-smart-modal>\r\n  <ntk-smart-modal identifier=\"renameModal\" [dismissable]=\"false\" [closable]=\"false\" *ngIf=\"selectedNode\" #renameModal>\r\n    <h2 class=\"modal-title\">\r\n      {{'filemanager.rename_file' | translate}}\r\n    </h2>\r\n    <p class=\"rename-name\" >\r\n      {{'filemanager.old_name' | translate}}\r\n    </p>\r\n    <span style=\"margin: 8px;direction: ltr;\">{{selectedNode.name}}</span>\r\n    <p class=\"rename-name\">\r\n      {{'filemanager.new_name' | translate}}\r\n    </p>\r\n    <input type=\"text\" class=\"rename-input\" [value]=\"selectedNode.name\" #renameInput\r\n      (keyup.enter)=\"handleFileManagerClickEvent({type: 'rename', value: renameInput.value})\">\r\n    <br>\r\n\r\n    <div class=\"rename-button\">\r\n      <button type=\"button\" class=\"button big\"\r\n        (click)=\"handleFileManagerClickEvent({type: 'rename', value: renameInput.value})\"\r\n        [disabled]=\"renameInput.value === selectedNode.name || renameInput.value.length === 0\">\r\n        {{'filemanager.rename' | translate}}\r\n      </button>\r\n      <button type=\"button\" class=\"button big\" (click)=\"renameModal.close()\">\r\n        {{'filemanager.cancel' | translate}}\r\n      </button>\r\n    </div>\r\n\r\n  </ntk-smart-modal>\r\n\r\n</ng-template>\r\n\r\n<ng-template let-node #defaultIconTemplate>\r\n  <div class=\"file-manager-node\" style=\"display: inline-block; padding: 3px\">\r\n    <div *ngIf=\"node.isFolder; then itIsFolder else showFile\"></div>\r\n\r\n    <ng-template #itIsFolder>\r\n      <ng-template [ngIf]=\"!node.isRoot\" [ngIfElse]=\"isFolderRoot\">\r\n        <div *ngIf=\"node.isExpanded; then isFolderExpanded else isFolderClosed\"></div>\r\n      </ng-template>\r\n    </ng-template>\r\n\r\n    <ng-template #showFile><i class=\"fileicon fas fa-file child\"></i></ng-template>\r\n    <ng-template #isFolderExpanded><i class=\"fileicon fas fa-folder-open child\"></i></ng-template>\r\n    <ng-template #isFolderClosed><i class=\"fileicon as fa-folder child\"></i></ng-template>\r\n    <ng-template #isFolderRoot><i class=\"fileicon fas fa-home\"></i></ng-template>\r\n\r\n\r\n    <span *ngIf=\"!node.isRoot\">{{node.name}}</span>\r\n  </div>\r\n</ng-template>\r\n<ng-template let-node #defaultFolderContentTemplate>\r\n  <div class=\"file-manager-item\" >\r\n    <div class=\"file-preview\" >\r\n      <div *ngIf=\"node.isFolder; then itIsFolder else showFile\" ></div>\r\n      <ng-template #itIsFolder><i class=\"fileicon fas fa-3x fa-folder child\"></i></ng-template>\r\n      <ng-template #showFile>\r\n        <i *ngIf=\"!node.downloadThumbnailSrc || node.downloadThumbnailSrc?.length==0\" class=\"fileicon fas fa-3x fa-file child\"></i>\r\n        <img *ngIf=\"node.downloadThumbnailSrc?.length>0\"  src=\"{{node.downloadThumbnailSrc}}\" class=\"child thumbnail\" />\r\n      </ng-template>\r\n    </div>\r\n    <div class=\"file-name\" >\r\n      {{node.name}}\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n<ng-template #defaultFolderContentNewTemplate>\r\n  <div class=\"file-manager-item main\">\r\n    <div class=\"file-preview\" style=\"width: 100%; height:100%\">\r\n      <i class=\"fileicon fas fa-2x fa-plus child\" style=\"line-height: 2;color: black;\"></i>\r\n      <br>\r\n      {{'filemanager.create_new_folder' | translate}}\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n<ng-template #defaultFileContentNewTemplate>\r\n  <div class=\"file-manager-item main\">\r\n    <div class=\"file-preview\" style=\"width: 100%; height:100%\">\r\n      <i class=\"fileicon fas fa-2x fa-upload child\" style=\"line-height: 2;color: black;\"></i>\r\n      <br>\r\n      {{'filemanager.create_new_file' | translate}}\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n<ng-template let-node #defaultFolderContentReloadTemplate>\r\n  <div class=\"file-manager-item main\">\r\n    <div class=\"file-preview\" style=\"width: 100%; height:100%\">\r\n      <i class=\"fileicon fas fa-2x fa-sync-alt child\" style=\"line-height: 2;color: black;\"></i>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n<ng-template let-node #defaultFolderContentBackTemplate>\r\n  <div class=\"file-manager-item\">\r\n    <div class=\"file-preview\" style=\"width: 100%; height:100%\">\r\n      <i class=\"fileicon fas fa-2x fa-ellipsis-h\" style=\"line-height: 5\"></i>\r\n    </div>\r\n  </div>\r\n</ng-template>\r\n<ng-template let-timeoutMessage #defaultLoadingOverlayTemplate>\r\n  <div class=\"file-manager-backdrop loading\" (click)=\"backdropClicked()\">\r\n    <div class=\"file-manager-error\" *ngIf=\"timeoutMessage\">{{timeoutMessage | translate}}</div>\r\n  </div>\r\n  <div class=\"spinner\">\r\n    <i class=\"fileicon fas fa-5x fa-spin fa-sync-alt\"></i>\r\n  </div>\r\n</ng-template>\r\n<ng-template let-node #defaultSideViewTemplate>\r\n  <div style=\"position: absolute; bottom: 0; width: 100%; margin: 5px auto\">\r\n    <span *ngIf=\"node.isFolder\">\r\n      <span>\r\n        {{'filemanager.created_date' | translate}}: {{node.createdDate}}\r\n      </span>\r\n    </span>\r\n    <span *ngIf=\"!node.isFolder\">\r\n      <span>\r\n        {{'filemanager.created_date' | translate}}: {{node.createdDate}}\r\n      </span>\r\n      <br />\r\n      <span>\r\n        {{'filemanager.type' | translate}}: {{node.type}}\r\n      </span>\r\n      <br />\r\n      <span>\r\n        {{'filemanager.size' | translate}}: {{node.size}}\r\n      </span>\r\n      <br />\r\n      <span *ngIf=\"!AllowFileView(selectedNode)\" style=\"color:red;\">\r\n        Only Select : {{configSelectFileType.join(' - ')}}\r\n      </span>\r\n    </span>\r\n  </div>\r\n</ng-template>\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n/*\r\n * Convert bytes into largest possible unit.\r\n * Takes an precision argument that defaults to 2.\r\n * Usage:\r\n *   bytes | fileSize:precision\r\n * Example:\r\n *   {{ 1024 |  fileSize}}\r\n *   formats to: 1 KB\r\n*/\r\n@Pipe({\r\n  name: 'fileSize',\r\n  standalone: false\r\n})\r\nexport class FileSizePipe implements PipeTransform {\r\n\r\n  private units = [\r\n    'bytes',\r\n    'KB',\r\n    'MB',\r\n    'GB',\r\n    'TB',\r\n    'PB'\r\n  ];\r\n\r\n  transform(bytes: number = 0, precision: number = 2): string {\r\n    if (isNaN(parseFloat(String(bytes))) || !isFinite(bytes)) return '?';\r\n\r\n    let unit = 0;\r\n\r\n    while (bytes >= 1024) {\r\n      bytes /= 1024;\r\n      unit++;\r\n    }\r\n\r\n    return bytes.toFixed(+ precision) + ' ' + this.units[unit];\r\n  }\r\n}\r\n\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'mapToIterablePipe',\r\n  standalone: false\r\n})\r\nexport class MapToIterablePipe implements PipeTransform {\r\n  transform(dict: any) {\r\n    const a = [];\r\n    for (const keyItem in dict) {\r\n      if (dict.hasOwnProperty(keyItem)) {\r\n        a.push({ key: keyItem, val: dict[keyItem] });\r\n      }\r\n    }\r\n\r\n    return a;\r\n  }\r\n}\r\n\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n  provideHttpClient,\r\n  withInterceptorsFromDi,\r\n} from '@angular/common/http';\r\nimport { ModuleWithProviders, NgModule } from '@angular/core';\r\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\r\nimport { FilePickerModule } from 'ngx-ntk-file-picker';\r\nimport { NtkSmartModalModule } from 'ngx-ntk-smart-module';\r\nimport { FileCategoryService, FileContentService } from 'ntk-cms-api';\r\nimport { CmsFileManagerComponent } from './cms-filemanager.component';\r\nimport { FolderContentComponent } from './components/folder-content/folder-content.component';\r\nimport { LoadingOverlayComponent } from './components/functions/loading-overlay/loading-overlay.component';\r\nimport { NewFolderComponent } from './components/functions/new-folder/new-folder.component';\r\nimport { NodeComponent } from './components/functions/node/node.component';\r\nimport { UploadComponent } from './components/functions/upload/upload.component';\r\nimport { NavBarComponent } from './components/nav-bar/nav-bar.component';\r\nimport { NavigationComponent } from './components/navigation/navigation.component';\r\nimport { SideViewComponent } from './components/side-view/side-view.component';\r\nimport { NodeListerComponent } from './components/tree/node-lister/node-lister.component';\r\nimport { TreeComponent } from './components/tree/tree.component';\r\nimport { FileSizePipe } from './pipes/file-size.pipe';\r\nimport { MapToIterablePipe } from './pipes/map-to-iterable.pipe';\r\nimport { FileManagerStoreService } from './services/file-manager-store.service';\r\nimport { NodeClickedService } from './services/node-clicked.service';\r\nimport { NodeService } from './services/node.service';\r\nimport { TranslateUiService } from './services/translateUi.service';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    CmsFileManagerComponent,\r\n    FolderContentComponent,\r\n    NodeComponent,\r\n    TreeComponent,\r\n    NodeListerComponent,\r\n    NavBarComponent,\r\n    NavigationComponent,\r\n    LoadingOverlayComponent,\r\n    UploadComponent,\r\n    NewFolderComponent,\r\n    SideViewComponent,\r\n    MapToIterablePipe,\r\n    FileSizePipe,\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    TranslateModule,\r\n    NtkSmartModalModule.forRoot(),\r\n    FilePickerModule,\r\n  ],\r\n  exports: [CmsFileManagerComponent],\r\n  providers: [\r\n    provideHttpClient(withInterceptorsFromDi()),\r\n    FileContentService,\r\n    FileCategoryService,\r\n    TranslateUiService,\r\n    NodeClickedService,\r\n    NodeService,\r\n    FileManagerStoreService,\r\n  ],\r\n})\r\nexport class CmsFileManagerModule {\r\n  static forRoot(): ModuleWithProviders<CmsFileManagerModule> {\r\n    return {\r\n      ngModule: CmsFileManagerModule,\r\n      providers: [TranslateService],\r\n    };\r\n  }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.FileManagerStoreService","i1","i2.NodeService","i3.FileManagerStoreService","i4","i5","i2","i1.FileManagerStoreService","i3.NodeClickedService","i1.NodeService","i3","i4.NodeComponent","i4.NodeListerComponent","i1.NodeClickedService","i6.TranslateUiService","i7","i8.FolderContentComponent","i9.TreeComponent","i10.NavBarComponent","i11.NavigationComponent","i12.LoadingOverlayComponent","i13.UploadComponent","i14.NewFolderComponent","i15.SideViewComponent"],"mappings":";;;;;;;;;;;;;;;;;;MAAa,oBAAoB,CAAA;AAIhC;;MCDY,SAAS,CAAA;AAMpB,IAAA,WAAA,CAAY,MAAuB,EAAA;;AAEjC,QAAA,IAAI,CAAC,YAAY,GAAG,EAAE;AACtB,QAAA,IAAI,CAAC,MAAM,GAAG,MAAM;QAEpB,IAAI,CAAC,KAAK,GAAI;AACZ,YAAA,EAAE,EAAE,CAAC;AACL,YAAA,UAAU,EAAE,EAAE;AACd,YAAA,YAAY,EAAE,IAAI;AAClB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,UAAU,EAAE,IAAI;AAChB,YAAA,QAAQ,EAAE,IAAI;AACd,YAAA,IAAI,EAAE,MAAM;AACZ,YAAA,QAAQ,EAAE,EAAE;AACZ,YAAA,MAAM,EAAE;SACS;;AAGrB,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,YAAY;;IAG1B,IAAI,WAAW,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;;AAG3B,IAAA,IAAI,KAAK,GAAA;QACP,OAAO,IAAI,CAAC,MAAM;;IAGpB,IAAI,KAAK,CAAC,KAAoB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;;AAGrB,IAAA,IAAI,cAAc,GAAA;QAChB,OAAO,IAAI,CAAC,eAAe;;IAG7B,IAAI,cAAc,CAAC,KAAa,EAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;AAW/B;;IC3DW;AAAZ,CAAA,UAAY,gBAAgB,EAAA;AAC1B,IAAA,gBAAA,CAAA,gBAAA,CAAA,mBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,mBAAiB;AAAE,IAAA,gBAAA,CAAA,gBAAA,CAAA,gBAAA,CAAA,GAAA,CAAA,CAAA,GAAA,gBAAc;AAAE,IAAA,gBAAA,CAAA,gBAAA,CAAA,cAAA,CAAA,GAAA,CAAA,CAAA,GAAA,cAAY;AACjD,CAAC,EAFW,gBAAgB,KAAhB,gBAAgB,GAAA,EAAA,CAAA,CAAA;;ACO5B,MAAM,YAAY,GAAmB;AACnC,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,SAAS,EAAE,IAAI;AACf,IAAA,YAAY,EAAE,IAAI;AAClB,IAAA,gBAAgB,EAAE;CACnB;MAGY,uBAAuB,CAAA;AAKlC,IAAA,WAAA,GAAA;AAFQ,QAAA,IAAA,CAAA,GAAG,GAAsB,IAAI,OAAO,EAAY;QAGtD,IAAI,CAAC,KAAK,GAAG;AACX,YAAA,gBAAgB,EAAE;SACnB;;QAGD,MAAM,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK;;AAGnC,IAAA,QAAQ,CAAC,KAAc,EAAA;QACrB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAC5F,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;;;AAI3B,IAAA,QAAQ,CAAI,KAA4C,EAAA;AACtD,QAAA,IAAI,OAAO,KAAK,KAAK,UAAU,EAAE;AAC/B,YAAA,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC;;AAGnF,QAAA,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY;AACzB,aAAA,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AACf,aAAA,IAAI,CAAC,oBAAoB,EAAE,CAAC;;AAEjC,IAAA,YAAY,CAAC,IAAY,EAAA;QACvB,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE;AAClD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;AACxE,YAAA,IAAI,KAAK,GAAG,CAAC,EAAE;;AAEb,gBAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAC9D,gBAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEf,gBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;;;AAIpE,IAAA,WAAW,CAAC,IAAY,EAAA;QACtB,IAAI,IAAI,CAAC,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE;AAClD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;AACxE,YAAA,IAAI,KAAK,IAAI,CAAC,EAAE;;AAEd,gBAAA,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,gBAAgB,CAAC;AAC9D,gBAAA,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;;AAErB,gBAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;;;;8GAjDzD,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAvB,uBAAuB,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBADnC;;AAyDD;SACgB,YAAY,CAAC,KAAA,GAAwB,YAAY,EAAE,MAAe,EAAA;AAChF,IAAA,QAAQ,MAAM,CAAC,IAAI;AACjB,QAAA,KAAK,QAAQ;AACX,YAAA,IAAI,MAAM,CAAC,OAAO,KAAK,GAAG,EAAE;AAC1B,gBAAA,MAAM,CAAC,OAAO,GAAG,EAAE;;YAErB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,EAAE;AACjC,gBAAA,OAAO,KAAK;;AAEd,YAAA,OAAO,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE;AAC5D,QAAA,KAAK,iBAAiB;YACpB,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE;AAChD,QAAA,KAAK,sBAAsB;YACzB,OAAO,EAAE,GAAG,KAAK,EAAE,gBAAgB,EAAE,MAAM,CAAC,OAAO,EAAE;AACvD,QAAA,KAAK,iBAAiB;YACpB,OAAO,EAAE,GAAG,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE;AACnD,QAAA;AACE,YAAA,OAAO,YAAY;;AAEzB;AASO,MAAM,QAAQ,GAAG,UAAU;AAC3B,MAAM,iBAAiB,GAAG,mBAAmB;AAC7C,MAAM,sBAAsB,GAAG,wBAAwB;AACvD,MAAM,iBAAiB,GAAG,mBAAmB;MAEvC,OAAO,CAAA;AAApB,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,IAAI,GAAG,QAAQ;;AAEzB;MAEY,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,IAAI,GAAG,iBAAiB;;AAElC;MAEY,mBAAmB,CAAA;AAAhC,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,IAAI,GAAG,sBAAsB;;AAEvC;MAGY,eAAe,CAAA;AAA5B,IAAA,WAAA,GAAA;QACW,IAAA,CAAA,IAAI,GAAG,iBAAiB;;AAElC;;ACnHD;;;;;;;;;;AAUE;AACF;AACA;AACA;MAEa,WAAW,CAAA;AAItB,IAAA,WAAA,CACU,IAAgB,EAChB,KAA8B,EAC9B,kBAAsC,EACtC,mBAAwC,EAAA;QAHxC,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;;QAQrB,IAAA,CAAA,IAAI,GAAG,EAAE;;AALf,QAAA,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE;;;;IAMpB,EAAE,GAAA;AACR,QAAA,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,OAAO;AACzC,QAAA,OAAO,CAAC,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;;IAE5C,OAAO,GAAA;AACL,QAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,EAAE,CAAA,CAAA,EAAI,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,CAAA,EAAG,IAAI,CAAC,EAAE,EAAE,EAAE;AACvH,QAAA,OAAO,QAAQ;;;;AAIV,IAAA,cAAc,CAAC,IAAY,EAAA;AAChC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI;QACvB,IAAI,CAAC,kBAAkB,EAAE;;IAEpB,0BAA0B,GAAA;QAC/B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,EAAE;QAC3D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAK;AAChD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACjF,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpE,SAAC,CAAC;;IAEG,kBAAkB,GAAA;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,GAAG,EAAE;QACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAK;AACxC,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;AACjF,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AACpE,SAAC,CAAC;;AAEJ,IAAA,gBAAgB,CAAC,IAAY,EAAA;AAC3B,QAAA,OAAO,IAAI,OAAO,EAAE,OAAO,IAAG;YAC5B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAA0B,KAAI;AACrE,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;oBACzD,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;;gBAE1E,OAAO,CAAC,IAAI,CAAC;AACf,aAAC,CAAC;SACH,EAAE;;AAEL,IAAA,QAAQ,CAAC,IAAY,EAAA;;QAEnB,MAAM,OAAO,GAAG,UAAU;AAC1B,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;AAChC,QAAA,OAAO,IAAI,OAAO,EAAE,OAAO,IAAG;YAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAA0B,KAAI;AAC7D,gBAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,oBAAA,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;oBACzD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;;AAEhE,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC;AACf,aAAC,CAAC;SACH,EAAE;;AAEG,IAAA,qBAAqB,CAAC,IAAY,EAAA;QACxC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,QAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;AAErB,IAAA,aAAa,CAAC,IAAY,EAAA;QAChC,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,QAAA,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;AACvD,QAAA,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC;;AAErB,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACrC,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAC/B,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAgB,KAAI;gBACnE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AACpE,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAClE,aAAC,CAAC;AACJ,SAAC,CAAC;;AAEI,IAAA,UAAU,CAAC,IAAY,EAAA;AAC7B,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;YAC/B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,IAAgB,KAAI;gBAE3D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5D,gBAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAElE,aAAC,CAAC;AACJ,SAAC,CAAC;;IAEI,kBAAkB,CAAC,IAAY,EAAE,IAAS,EAAA;QAChD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;AACxB,YAAA,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC;YACzE,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI;;QAG7B,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AAChC,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;;QAG3B,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC;QACzD,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,UAAU,GAAG,KAAK;YACtD,UAAU,EAAE,IAAI,CAAC,IAAI;YACrB,YAAY,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;YAC1B,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC,QAAQ,GAAG;SAC7B;;IAKZ,UAAU,CAAC,IAAY,EAAE,IAAmB,EAAA;;;;;QAOlD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC;AACtC,QAAA,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAChD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACjB,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;;QAGjC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC;QACvD,MAAM,eAAe,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC;;;;;;QAM3D,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,UAAU,EAAE,UAAU,GAAG,UAAU,CAAC,UAAU,GAAG,KAAK;YACtD,UAAU,EAAE,IAAI,CAAC,UAAU;AAC3B,YAAA,YAAY,EAAE,eAAe;AAC7B,YAAA,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;YAC1B,QAAQ,EAAE,UAAU,GAAG,UAAU,CAAC,QAAQ,GAAG,EAAE;YAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;SAC/B;;AAEZ,IAAA,0BAA0B,CAAC,IAAY,EAAA;QAC7C,IAAI,QAAQ,GAAQ,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,EAAE;AACxD,QAAA,QAAQ,GAAG,QAAQ,KAAK,CAAC,GAAG,EAAE,GAAG,QAAQ;AAEzC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAClB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,EACtE,EAAE,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CACzD;;AAGK,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAE/D,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AACvC,QAAA,MAAM,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC,EAAE,GAAG,CAAC;;AAErC,QAAA,MAAM,MAAM,GAAG,IAAI,UAAU,CAAuB,QAAQ,IAAG;AAC7D,YAAA,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CACnD,IAAI,IAAG;AACL,gBAAA,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,EAE7C,KAAK,IAAG;AACN,oBAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AAC1B,oBAAA,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;iBACrB,EACJ;AACH,aAAC,CAAC;AACN,SAAC,CAAC;AAEF,QAAA,OAAO,MAAM;;AAER,IAAA,sBAAsB,CAAC,QAAgB,EAAA;QAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,QAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAEhB,QAAA,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;AAEzH,IAAA,cAAc,CAAC,QAAgB,EAAA;QACpC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;AAC/B,QAAA,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAChB,QAAA,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;AACpB,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;;QAE/B,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC1F,QAAA,OAAO,MAAM;;AAGR,IAAA,oBAAoB,CAAC,EAAU,EAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,CAAC;AAElD,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC;AACtG,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;;AAG/B,QAAA,OAAO,MAAM;;AAER,IAAA,YAAY,CAAC,EAAU,EAAA;QAE5B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC;AAE1C,QAAA,IAAI,MAAM,KAAK,IAAI,EAAE;AACnB,YAAA,OAAO,CAAC,IAAI,CAAC,wFAAwF,CAAC;AACtG,YAAA,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK;;AAG/B,QAAA,OAAO,MAAM;;IAGR,0BAA0B,CAAC,EAAU,EAAE,IAAA,GAAsB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAA;AACxF,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAClB,YAAA,OAAO,IAAI;;QAGb,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC9C,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,0BAA0B,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,gBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,oBAAA,OAAO,GAAG;;;;AAKhB,QAAA,OAAO,IAAI;;IAEN,kBAAkB,CAAC,EAAU,EAAE,IAAA,GAAsB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAA;AAChF,QAAA,IAAI,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE;AAClB,YAAA,OAAO,IAAI;;QAGb,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AAEvC,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpC,YAAA,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;AAC9C,gBAAA,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,gBAAA,IAAI,GAAG,IAAI,IAAI,EAAE;AACf,oBAAA,OAAO,GAAG;;;;AAKhB,QAAA,OAAO,IAAI;;AAGN,IAAA,uBAAuB,CAAC,IAAmB,EAAA;;AAEhD,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAE9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAa,KAAI;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;AAClE,gBAAA,OAAO,IAAI;;YAGb,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;AAE7C,YAAA,QAAQ,CAAC,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;AACzF,YAAA,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK;AACpC,SAAC,CAAC;;AAEG,IAAA,eAAe,CAAC,IAAmB,EAAA;;AAExC,QAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;QAE9B,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,KAAa,KAAI;AAC1C,YAAA,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE;AAClE,gBAAA,OAAO,IAAI;;YAGb,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;AAErC,YAAA,QAAQ,CAAC,cAAc,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;AACzF,YAAA,QAAQ,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,KAAK;AACpC,SAAC,CAAC;;IAGG,eAAe,GAAA;QACpB,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;IAE/C,OAAO,CAAC,OAAO,GAAG,KAAK,EAAA;QAC5B,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,kBAAkB,EAAE;;;aAEpB;YACL,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;;;AAIhD,IAAA,IAAI,WAAW,GAAA;QACb,OAAO,IAAI,CAAC,WAAW;;IAGzB,IAAI,WAAW,CAAC,KAAa,EAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;;IAE1B,eAAe,CAAC,QAAgB,EAAE,IAAY,EAAA;AAC5C,QAAA,OAAO,IAAI,CAAC,mBAAmB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,IAAI,CACxE,GAAG,CAAC,CAAC,CAAC,KAAI;YACR,MAAM,OAAO,GAAoB,EAAE;AAEnC,YAAA,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAG;AAC5B,gBAAA,MAAM,IAAI,GAAkB;oBAC1B,IAAI,EAAE,OAAO,CAAC,KAAK;AACnB,oBAAA,MAAM,EAAE,IAAI;oBACZ,EAAE,EAAE,OAAO,CAAC,EAAE;AACd,oBAAA,QAAQ,EAAE,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI;AAC5D,oBAAA,UAAU,EAAE,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;AACnC,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,QAAQ,EAAE,IAAI;AACd,oBAAA,UAAU,EAAE,KAAK;oBACjB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,eAAe,EAAE,OAAO,CAAC,kBAAkB;iBAC5C;gBACD,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU;AACvC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;AAEpD,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEpB,aAAC,CAAC;AACF,YAAA,OAAO,OAAO;SACf,CAAC,CACH;;IAGH,WAAW,CAAC,QAAgB,EAAE,IAAY,EAAA;AACxC,QAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC,IAAI,CACvE,GAAG,CAAC,CAAC,CAAC,KAAI;YACR,MAAM,OAAO,GAAoB,EAAE;AACnC,YAAA,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,IAAG;AAC5B,gBAAA,MAAM,IAAI,GAAkB;oBAC1B,IAAI,EAAE,OAAO,CAAC,QAAQ;AACtB,oBAAA,MAAM,EAAE,KAAK;oBACb,EAAE,EAAE,OAAO,CAAC,EAAE;AACd,oBAAA,QAAQ,EAAE,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI;AAChE,oBAAA,UAAU,EAAE,IAAI,GAAG,GAAG,GAAG,OAAO,CAAC,EAAE;AACnC,oBAAA,YAAY,EAAE,EAAE;AAChB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,UAAU,EAAE,KAAK;oBACjB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,eAAe,EAAE,OAAO,CAAC,eAAe;oBACxC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;oBAClD,IAAI,EAAE,OAAO,CAAC,QAAQ;oBACtB,SAAS,EAAE,OAAO,CAAC;iBACpB;gBACD,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU;AACvC,gBAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;AAEpD,gBAAA,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;;AAEpB,aAAC,CAAC;AACF,YAAA,OAAO,OAAO;SACf,CAAC,CACH;;8GAxXQ,WAAW,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAX,WAAW,EAAA,CAAA,CAAA;;2FAAX,WAAW,EAAA,UAAA,EAAA,CAAA;kBADvB;;;MCXY,kBAAkB,CAAA;IAG7B,WAAA,CACS,oBAA0C,EACzC,WAAwB,EACxB,KAA8B,EAC9B,IAAgB,EAChB,kBAAsC,EACtC,mBAAwC,EAAA;QALzC,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACnB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,IAAI,GAAJ,IAAI;QACJ,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,mBAAmB,GAAnB,mBAAmB;;AAItB,IAAA,qBAAqB,CAAC,IAAmB,EAAA;AAC9C,QAAA,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AAChE,QAAA,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC;;AAE7E,IAAA,aAAa,CAAC,IAAmB,EAAA;QACtC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC;;AAEtC,IAAA,kBAAkB,CAAC,IAAmB,EAAA;AAC3C,QAAA,IAAI,CAAC,gBAAgB,CACnB,QAAQ,EACR,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,EAC7C,QAAQ,EACR,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EACtC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CACtC;;AAEI,IAAA,UAAU,CAAC,IAAmB,EAAA;QACnC,MAAM,OAAO,GAAG,YAAY;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CACvD,CAAC,IAAI,KAAI;AACP,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,wBAAwB,EAAE;;qBAE5B;oBACH,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC;;AAE7D,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,aAAC,EACC,CAAC,KAAK,KAAI;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC/C,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,aAAC,CACF;;aACI;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CACtD,CAAC,IAAI,KAAI;AACP,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;oBAClB,IAAI,CAAC,wBAAwB,EAAE;;qBAE5B;oBACH,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC;;AAE3D,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,aAAC,EACC,CAAC,KAAK,KAAI;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;AAC7C,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,aAAC,CACF;;;AAIE,IAAA,uBAAuB,CAAC,KAAa,EAAA;AAC1C,QAAA,IAAI,CAAC,gBAAgB,CACnB,QAAQ,EACR,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,EACvC,KAAK,EACL,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,EACvC,CAAC,GAAG,KAAK,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,CACxC;;AAEI,IAAA,eAAe,CAAC,KAAa,EAAA;;IAU7B,oBAAoB,CAAC,aAAqB,EAAE,UAAkB,EAAA;AACnE,QAAA,IAAI,CAAC,gBAAgB,CACnB,eAAe,EACf,CAAC,MAAK;AACJ,YAAA,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC;AAC/D,YAAA,IAAI,aAAa,KAAK,CAAC,EAAE;gBACvB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,YAAY,EAAE,aAAa,GAAG,EAAE,CAAC;;AAGlE,YAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AACnF,YAAA,OAAO,UAAU;AACnB,SAAC,GAAG,EACJ,MAAM,EACN,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CACzC;;IAGI,YAAY,CAAC,aAAqB,EAAE,UAAkB,EAAA;AAC3D,QAAA,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAE;AACrC,QAAA,KAAK,CAAC,KAAK,GAAG,UAAU;AACxB,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,KAAK,CAAC,YAAY,GAAG,aAAa;;QAEpC,MAAM,OAAO,GAAG,cAAc;AAC9B,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,CAClD,CAAC,IAAI,KAAI;AACP,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,wBAAwB,EAAE;;iBAE5B;gBACH,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC;;AAE7D,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,SAAC,EACC,CAAC,KAAK,KAAI;AACV,YAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC/C,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,SAAC,CACF;;IAEI,UAAU,CACf,aAAqB,EAAE,QAAgB,EAAE,cAAsB,EAC/D,aAAkB,EAClB,UAAe,EAAA;AAEf,QAAA,MAAM,KAAK,GAAG,IAAI,gBAAgB,EAAE;AACpC,QAAA,KAAK,CAAC,QAAQ,GAAG,QAAQ;AACzB,QAAA,KAAK,CAAC,cAAc,GAAG,cAAc;AACrC,QAAA,IAAI,aAAa,GAAG,CAAC,EAAE;AACrB,YAAA,KAAK,CAAC,cAAc,GAAG,aAAa;;QAEtC,MAAM,OAAO,GAAG,YAAY;AAC5B,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,SAAS,CACjD,CAAC,IAAI,KAAI;AACP,YAAA,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,aAAa,EAAE;oBACjB,aAAa,CAAC,IAAI,CAAC;;;iBAGlB;gBACH,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC;;AAE3D,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,SAAC,EACC,CAAC,KAAK,KAAI;AACV,YAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;YAC7C,IAAI,UAAU,EAAE;gBACd,UAAU,CAAC,KAAK,CAAC;;AAEnB,YAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,SAAC,CACF;;IAEI,cAAc,CAAC,IAAmB,EAAE,OAAe,EAAA;QACxD,IAAI,CAAC,gBAAgB,CACnB,QAAQ,EACR,IAAI,UAAU,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,EACxE,MAAM,EACN,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,EACtC,MAAM,IAAI,CAAC,wBAAwB,EAAE,CACtC;;IAEI,MAAM,CAAC,IAAmB,EAAE,OAAe,EAAA;QAChD,MAAM,OAAO,GAAG,QAAQ;AACxB,QAAA,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC;AAChC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,YAAA,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACrE,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO;;AAEzB,oBAAA,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CACvD,CAAC,KAAK,KAAI;AACR,wBAAA,IAAI,KAAK,CAAC,SAAS,EAAE;4BACnB,IAAI,CAAC,wBAAwB,EAAE;;6BAE5B;4BACH,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC;;AAE7D,wBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,qBAAC,EACC,CAAC,KAAK,KAAI;AACV,wBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC/C,wBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,qBAAC,CACF;;;qBAEI;oBACL,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,IAAI,CAAC,YAAY,CAAC;AAC3D,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;;AAEnC,aAAC,EACG,CAAC,KAAK,KAAI;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,KAAK,CAAC;AAC/C,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,aAAC,CAAC;;aAEC;AACL,YAAA,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,KAAI;AACpE,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE;AAClB,oBAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO;;AAE5B,oBAAA,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CACtD,CAAC,KAAK,KAAI;AACR,wBAAA,IAAI,KAAK,CAAC,SAAS,EAAE;4BACnB,IAAI,CAAC,wBAAwB,EAAE;;6BAE5B;4BACH,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC;;AAE3D,wBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,qBAAC,EACC,CAAC,KAAK,KAAI;AACV,wBAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;AAC7C,wBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,qBAAC,CACF;;;qBAEI;oBACL,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,IAAI,CAAC,YAAY,CAAC;AACzD,oBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;;AAEnC,aAAC,EACG,CAAC,KAAK,KAAI;AACV,gBAAA,IAAI,CAAC,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC;AAC7C,gBAAA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC;AACjC,aAAC,CAAC;;;AAIA,IAAA,gBAAgB,CACtB,IAAY,EAAE,UAAsB,EAAE,UAAkB,EAAE,MAAc,EACxE,aAAA,GAAgB,CAAC,CAAM,KAAK,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EACjD,UAAA,GAAa,CAAC,CAAM,EAAE,CAAM,KAAK,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,EAAA;QAExD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;QAEtD,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU;aAC5C,SAAS,CACR,CAAC,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,EACvB,CAAC,GAAG,KAAK,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAC/B;;IAGG,WAAW,CAAC,MAAc,EAAE,MAAc,EAAE,UAAsB,EAAE,OAAY,EAAE,EAAA;AACxF,QAAA,QAAQ,MAAM,CAAC,WAAW,EAAE;AAC1B,YAAA,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACxF,YAAA,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC/F,YAAA,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAC3F,YAAA,KAAK,UAAU;gBACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC;AACnG,gBAAA,OAAO,IAAI;AACb,YAAA;AACE,gBAAA,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC;AAC1E,gBAAA,OAAO,IAAI;;;IAIT,wBAAwB,GAAA;QAC9B,IAAI,CAAC,aAAa,EAAE;AACpB,QAAA,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;;IAG3D,aAAa,CAAC,KAAa,EAAE,IAAS,EAAA;AAC5C,QAAA,MAAM,GAAG,GAAG;AACV,YAAA,YAAY,EAAE,KAAK;AACnB,YAAA,QAAQ,EAAE;SACX;QAED,IAAI,CAAC,aAAa,EAAE;QAEpB,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,CAAC;QAChE,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;;IAGlD,aAAa,CAAC,WAAmB,EAAE,EAAA;QACzC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;AAE7C,QAAA,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC;AAC7D,QAAA,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;QACjE,KAAK,CAAC,KAAK,EAAE;;IAGP,YAAY,CAAC,IAAY,EAAE,KAAU,EAAA;QAC3C,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,aAAa,CAAC;QAE7C,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;QACvD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE;QACvD,OAAO,CAAC,IAAI,CAAC,+BAA+B,GAAG,IAAI,GAAG,UAAU,EAAE,KAAK,CAAC;;8GA7S/D,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAC,EAAA,CAAA,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCJY,kBAAkB,CAAA;IAI7B,WAAA,CACU,gBAAkC,EAClC,IAAgB,EAAA;QADhB,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAChB,IAAA,CAAA,IAAI,GAAJ,IAAI;QALN,IAAA,CAAA,kBAAkB,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC;QAC7C,IAAA,CAAA,eAAe,GAAG,oCAAoC;;IAOvD,IAAI,CAAC,WAAmB,IAAI,EAAA;QACjC,IAAI,QAAQ,EAAE;;YAEZ,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,SAAS,CACtC,CAAC,YAAY,KAAI;gBACf,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC;AAClE,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,aAAC,EACD,CAAC,KAAK,KAAI;AACR,gBAAA,OAAO,CAAC,IAAI,CACV,kCAAkC,QAAQ,CAAA,yBAAA,CAA2B,CACtE;gBACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,cAAc,KAAI;oBACtD,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAClC,QAAQ,EACR,cAAc,EACd,IAAI,CACL;AACD,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;AACrC,iBAAC,CAAC;AACJ,aAAC,CACF;;aACI;;YAEL,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,KACpD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAC7B,UAAU,CAAC,CAAC,KAAK,KAAI;AACnB,gBAAA,OAAO,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAA,CAAE,CAAC;AACtD,gBAAA,OAAO,EAAE,CAAC,IAAI,CAAC;aAChB,CAAC,CACH,CACF;YAED,QAAQ,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,KAAI;gBAC3C,OAAO,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,KAAK,KAAI;oBACtC,IAAI,YAAY,EAAE;wBAChB,MAAM,IAAI,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;wBAC3C,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC;;AAElE,iBAAC,CAAC;AACJ,aAAC,CAAC;;;AAIE,IAAA,eAAe,CAAC,QAAgB,EAAA;AACtC,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA,EAAG,IAAI,CAAC,eAAe,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAO,CAAC;;AAG1D,IAAA,WAAW,CAAC,QAAgB,EAAA;AACjC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC;;IAG9B,kBAAkB,GAAA;AACvB,QAAA,OAAO,IAAI,CAAC,gBAAgB,CAAC,WAAW;;IAGnC,qBAAqB,GAAA;QAC1B,OAAO,IAAI,CAAC,kBAAkB;;8GAlErB,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAAK,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA;kHAAlB,kBAAkB,EAAA,CAAA,CAAA;;2FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAD9B;;;MCSY,aAAa,CAAA;AAIxB,IAAA,WAAA,CACU,KAA8B,EAC9B,WAAwB,EACxB,kBAAsC,EACtC,GAAsB,EAAA;QAHtB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAClB,IAAA,CAAA,GAAG,GAAH,GAAG;QANb,IAAA,CAAA,aAAa,GAAG,IAAI;AAQlB,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY;AACrD,aAAA,SAAS,CAAC,CAAC,KAAoB,KAAI;AAClC,YAAA,IAAI,CAAC,YAAY,GAAG,KAAK;AACzB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;AAGC,IAAA,mBAAmB,CAAC,KAAiB,EAAA;QAC1C,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,aAAa,GAAG,IAAI;QACzB,UAAU,CAAC,MAAK;AACd,YAAA,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,QAAQ,EAAE;;SAElB,EAAE,GAAG,CAAC;;;AAIF,IAAA,sBAAsB,CAAC,KAAU,EAAA;QACtC,KAAK,CAAC,cAAc,EAAE;AAEtB,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;QAC1B,IAAI,CAAC,IAAI,EAAE;;IAGb,QAAQ,GAAA;;IAGA,IAAI,GAAA;AACV,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AACvB,YAAA,IAAI,IAAI,CAAC,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,KAAK,gBAAgB,CAAC,iBAAiB,EAAE;AAC9G,gBAAA,IAAI,CAAC,aAAa,GAAG,IAAI;gBACzB,IAAI,CAAC,QAAQ,EAAE;gBACf;;YAGF,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAChD;;AAGF,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;AAC7B,gBAAA,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;AAC9D,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;;qBAE3B;AACH,oBAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;;;AAI9B,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtE;;QAGF,IAAI,CAAC,kBAAkB,EAAE;AAEzB,QAAA,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACxB,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;;QAGxE,IAAI,CAAC,oBAAoB,EAAE;;IAGrB,QAAQ,GAAA;AACd,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;AACpE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;IAGlB,kBAAkB,GAAA;QACxB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU;;IAGtC,oBAAoB,GAAA;AAC1B,QAAA,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;AACzB,YAAA,QAAQ,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,CAAC;YAEnF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;AAE3C,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;;aACnE;AACL,YAAA,QAAQ,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC;;;8GA5F/E,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,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,QAAA,EAAA,IAAA,EAAA,aAAa,2GCf1B,sJAEM,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDaO,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,sJAAA,EAAA;;sBAGhB;;;MEHU,sBAAsB,CAAA;AAajC,IAAA,WAAA,CACU,WAAwB,EACxB,KAA8B,EAC9B,GAAsB,EAAA;QAFtB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;AATH,QAAA,IAAA,CAAA,gBAAgB,GAAG,IAAI,YAAY,EAAE;AACrC,QAAA,IAAA,CAAA,mBAAmB,GAAG,IAAI,YAAY,EAAE;QAGlD,IAAA,CAAA,GAAG,GAAG,MAAM;AAOV,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,gBAAgB;aACzD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY;aACrD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;IAGN,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK;AAE/C,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI;AAC7C,aAAA,SAAS,CAAC,CAAC,IAAY,KAAI;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC;AACpD,SAAC,CAAC;;IAGN,oBAAoB,GAAA;AAClB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;;IAElC,sBAAsB,GAAA;AACpB,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC;;8GA5C1B,sBAAsB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAC,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,sBAAsB,0eCbnC,++CA6BA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDhBa,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBANlC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,gCAAgC,cAG9B,KAAK,EAAA,QAAA,EAAA,++CAAA,EAAA,MAAA,EAAA,CAAA,oGAAA,CAAA,EAAA;;sBAGhB;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;;METU,mBAAmB,CAAA;IAO9B,WAAA,CACU,KAA8B,EAC9B,GAAsB,EAAA;QADtB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;QAJb,IAAA,CAAA,GAAG,GAAG,MAAM;AAKV,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,gBAAgB;aACzD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY;aACrD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;IAGN,QAAQ,GAAA;;8GAtBG,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAJ,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAChB,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECb3B,2rCAsBA,2yBDVa,mBAAmB,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAN/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,6BAA6B,cAG3B,KAAK,EAAA,QAAA,EAAA,2rCAAA,EAAA,MAAA,EAAA,CAAA,qQAAA,CAAA,EAAA;;sBAGhB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAC3C;;sBACA;;;MECU,aAAa,CAAA;AASxB,IAAA,WAAA,CACU,WAAwB,EACxB,KAA8B,EAC9B,GAAsB,EAAA;QAFtB,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;QALb,IAAA,CAAA,gBAAgB,GAAG,EAAE;AAOnB,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,gBAAgB;aACzD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY;aACrD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;IAGN,QAAQ,GAAA;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK;;AAGjC,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI;AAC7C,aAAA,SAAS,CAAC,CAAC,IAAY,KAAI;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;AAClD,YAAA,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI;AAC1C,SAAC,CAAC;;IAGN,eAAe,GAAA;AACb,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI;aAC7C,IAAI,CAAC,KAAK,EAAE;AACZ,aAAA,SAAS,CAAC,CAAC,IAAY,KAAI;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC;AACnD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;AAChE,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;8GA/CK,aAAa,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAE,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAT,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAb,aAAa,EAAA,YAAA,EAAA,KAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,MAAA,EAAA,QAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACV,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECjB3B,8VAMA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAU,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAE,mBAAA,EAAA,QAAA,EAAA,6BAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,WAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDUa,aAAa,EAAA,UAAA,EAAA,CAAA;kBANzB,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,sBAAsB,cAGpB,KAAK,EAAA,QAAA,EAAA,8VAAA,EAAA;;sBAGhB,YAAY;AAAC,gBAAA,IAAA,EAAA,CAAA,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;;sBAE3C;;sBACA;;;METU,eAAe,CAAA;AAG1B,IAAA,WAAA,CACU,KAA8B,EAC9B,WAAwB,EACxB,GAAsB,EAAA;QAFtB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,GAAG,GAAH,GAAG;AAEX,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,gBAAgB;aACzD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY;aACrD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;IAGN,QAAQ,GAAA;AACN,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,IAAI;AAC7C,aAAA,SAAS,CAAC,CAAC,IAAY,KAAI;AAC1B,YAAA,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI;YACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;AACpC,SAAC,CAAC;;IAGN,OAAO,CAAC,IAAc,EAAE,KAAa,EAAA;AACnC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AAClD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;;8GA/BhD,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAL,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,WAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,oFCX5B,oXASA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDEa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,yBAAyB,cAGvB,KAAK,EAAA,QAAA,EAAA,oXAAA,EAAA;;;MEGN,mBAAmB,CAAA;AAE9B,IAAA,WAAA,CACU,kBAAsC,EAAA;QAAtC,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;;IAI5B,QAAQ,GAAA;;AAGR,IAAA,OAAO,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,KAAK,CAAC;;8GAXrC,mBAAmB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAG,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAnB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,mBAAmB,uFCZhC,qfAYA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDAa,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBAP/B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,4BAA4B,EAAA,UAAA,EAG1B,KAAK,EAAA,aAAA,EACF,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qfAAA,EAAA,MAAA,EAAA,CAAA,uCAAA,CAAA,EAAA;;;MEC1B,uBAAuB,CAAA;AAIlC,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;;;IAGpC,QAAQ,GAAA;AACN,QAAA,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,MAAK;YAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CACjD,8BAA8B,CAC/B;AACH,SAAC,CAAC;;8GAZO,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAZ,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,0JCXpC,yJAIA,EAAA,MAAA,EAAA,CAAA,EAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAK,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDOa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBANnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,iCAAiC,cAG/B,KAAK,EAAA,QAAA,EAAA,yJAAA,EAAA;;sBAGhB;;;AENI,IAAM,yBAAyB,GAA/B,MAAM,yBAA0B,SAAQ,iBAAiB,CAAA;AAC9D,IAAA,WAAA,CAAgC,IAAwB,EAAA;AACtD,QAAA,KAAK,EAAE;QAD+B,IAAA,CAAA,IAAI,GAAJ,IAAI;QAG5C,IAAA,CAAA,aAAa,GAAG,4BAA4B;QAC5C,IAAA,CAAA,WAAW,GAAG,QAAQ;;AACf,IAAA,UAAU,CAAC,QAA0B,EAAA;AAC1C,QAAA,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;AAC1G,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAChC,GAAG,CAAC,CAAC,GAAG,KAAI;YACV,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,QAAQ,EAAE;AACvC,gBAAA,MAAM,mBAAmB,GAAG,GAAG,CAAC,IAAI;gBACpC,OAAO;AACL,oBAAA,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,YAAY,CAAC;iBACtB;;iBACI,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,cAAc,EAAE;;AAEpD,gBAAA,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC;gBAClE,OAAO;oBACL,MAAM,EAAE,YAAY,CAAC,WAAW;AAChC,oBAAA,QAAQ,EAAE;iBACX;;YAEH,OAAO;gBACL,MAAM,EAAE,YAAY,CAAC,WAAW;aACjC;AACH,SAAC,CAAC,EACF,UAAU,CAAC,EAAE,IAAG;AACd,YAAA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;AACf,YAAA,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;SACpD,CAAC,CACH;;AAEI,IAAA,UAAU,CAAC,QAA0B,EAAA;AAC1C,QAAA,OAAO,IAAI,UAAU,CAAM,CAAC,QAAQ,KAAI;AACtC,YAAA,OAAO,MAAK;;AAEZ,aAAC;AACH,SAAC,CAAC;;CAEL;AA3CY,yBAAyB,GAAA,UAAA,CAAA;AACvB,IAAA,OAAA,CAAA,CAAA,EAAA,MAAM,CAAC,UAAU,CAAC;AADpB,CAAA,EAAA,yBAAyB,CA2CrC;;MCxBY,eAAe,CAAA;IAC1B,IAAa,oBAAoB,CAAC,KAAwB,EAAA;AACxD,QAAA,IAAI,CAAC,cAAc,GAAG,EAAE;AACxB,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK;AACjC,YAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;YAC/B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;YAG5B;;AAEF,QAAA,IAAI,OAAO,KAAK,KAAK,OAAO,EAAE,EAAE;YAC9B,IAAI,MAAM,GAAG,EAAE;AACf,YAAA,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,KAAI;AACxB,gBAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC;AACjC,gBAAA,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;AACrB,oBAAA,MAAM,GAAG,MAAM,GAAG,IAAI;;AAExB,gBAAA,MAAM,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO;AACjC,aAAC,CAAC;AACF,YAAA,IAAI,CAAC,cAAc,GAAG,MAAM;YAC5B,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE;AACpC,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;YAE5B;;;IAGJ,WAAA,CAAoB,IAAgB,EAAS,WAAwB,EAAA;QAAjD,IAAA,CAAA,IAAI,GAAJ,IAAI;QAAqB,IAAA,CAAA,WAAW,GAAX,WAAW;AAoB9C,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;QAChC,IAAA,CAAA,UAAU,GAAG,KAAK;QAClB,IAAA,CAAA,yBAAyB,GAAG,EAAE;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;QACjC,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAC5B,IAAA,CAAA,oBAAoB,GAAG,KAAK;QACrC,IAAA,CAAA,OAAO,GAAG,IAAI,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC;QAClD,IAAA,CAAA,iBAAiB,GAAG,EAAE;AACtB,QAAA,IAAA,CAAA,cAAc,GAAG,EAAE,CAAC;AACpB,QAAA,IAAA,CAAA,cAAc,GAAa,EAAE,CAAC;QAC9B,IAAA,CAAA,OAAO,GAAG,CAAC;;;;;QAOJ,IAAA,CAAA,OAAO,GAAuB,EAAE;QAMvC,IAAA,CAAA,UAAU,GAAG,IAAI;QA1Cf,IAAI,CAAC,OAAO,CAAC,aAAa;YACxB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,aAAa;QACnD,IAAI,CAAC,OAAO,CAAC,WAAW;YACtB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU;AACpD,QAAA,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,GAAG,CAAC;AACnE,YAAA,IAAI,CAAC,iBAAiB;gBACpB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB;AACjE,QAAA,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB;AACjE,QAAA,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB;;AAGnE,IAAA,IAAI,cAAc,GAAA;AAChB,QAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAChD,IAAI,CAAC,WAAW,CAAC,WAAW,CAC7B,CAAC,EAAE;QACJ,OAAO,UAAU,KAAK,CAAC,GAAG,EAAE,GAAG,UAAU;;AAqB3C,IAAA,QAAQ;AACR,IAAA,eAAe;AAEf,IAAA,WAAW;IAGX,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;AAEzB,IAAA,WAAW,CAAC,KAAuB,EAAA;AACjC,QAAA,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;;AAE1B,IAAA,eAAe,CAAC,KAAuB,EAAA;AACrC,QAAA,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE;;AAE3B,QAAA,MAAM,GAAG,GAAG,KAAK,CAAC,cAAuD;AACzE,QAAA,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;;AAEpB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YACnB,QAAQ,EAAE,KAAK,CAAC,QAAQ;AACxB,YAAA,cAAc,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO;AACjC,SAAA,CAAC;;AAEG,IAAA,iBAAiB,CAAC,KAAsB,EAAA;AAC7C,QAAA,KAAK,CAAC,CAAA,iBAAA,EAAoB,KAAK,CAAC,KAAK,CAAA,IAAA,EAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAA,CAAE,CAAC;;AAGzD,IAAA,eAAe,CAAC,CAAmB,EAAA;AACxC,QAAA,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;;AAET,IAAA,iBAAiB,CAAC,IAAU,EAAA;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;AACnC,YAAA,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;;;;AAKlC,QAAA,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;8GAzGxB,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAJ,WAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,8XCzB5B,qoDA8BA,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAQ,IAAA,CAAA,mBAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,eAAA,EAAA,mBAAA,EAAA,sBAAA,EAAA,cAAA,EAAA,YAAA,EAAA,aAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,sBAAA,EAAA,SAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,kBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,YAAA,EAAA,eAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAN,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDLa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,wBAAwB,EAAA,UAAA,EAGtB,KAAK,EAAA,aAAA,EACF,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,qoDAAA,EAAA,MAAA,EAAA,CAAA,yGAAA,CAAA,EAAA;;sBAGpC;;sBA+CA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;;MEpEU,kBAAkB,CAAA;AAU7B,IAAA,WAAA,CAAoB,gBAAkC,EAAA;QAAlC,IAAA,CAAA,gBAAgB,GAAhB,gBAAgB;QAT3B,IAAA,CAAA,UAAU,GAAG,KAAK;AAEjB,QAAA,IAAA,CAAA,aAAa,GAAG,IAAI,YAAY,EAAE;AAClC,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,YAAY,EAAE;QAGxC,IAAA,CAAA,UAAU,GAAG,EAAE;QAGb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC;;IAGtE,QAAQ,GAAA;;IAGR,OAAO,GAAA;AACL,QAAA,MAAM,EAAE,GAAiB,IAAI,CAAC,YAAY,CAAC,aAA6B;;;AAGxE,QAAA,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK;QACrB,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AAC3B,YAAA,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,IAAI,CAAC,gBAAgB,EAAE;;aAEpB;YACH,IAAI,CAAC,gBAAgB,EAAE;;;AAI3B,IAAA,aAAa,CAAC,KAAU,EAAA;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAC9B,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,QAAQ,EAAE;;aAC5E;AACL,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,QAAQ,EAAE;;;IAInF,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;;8GAzCd,kBAAkB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,2UCV/B,oiBAMM,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,CAAA,CAAA;;2FDIO,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAN9B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,cAGzB,KAAK,EAAA,QAAA,EAAA,oiBAAA,EAAA,MAAA,EAAA,CAAA,oDAAA,CAAA,EAAA;;sBAGhB;;sBACA,SAAS;uBAAC,cAAc;;sBACxB;;sBACA;;sBACA;;;MEDU,iBAAiB,CAAA;IAQ5B,WAAA,CACU,KAA8B,EAC9B,GAAsB,EAAA;QADtB,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,GAAG,GAAH,GAAG;AANJ,QAAA,IAAA,CAAA,mBAAmB,GAAqB,gBAAgB,CAAC,iBAAiB;AAEzE,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,YAAY,EAAE;AAMvC,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,SAAS;AAClD,aAAA,SAAS,CAAC,CAAC,SAAkB,KAAI;AAChC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,gBAAgB,CAAC,YAAY;aACrD,SAAS,CAAC,MAAK;AACd,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;;IAGN,QAAQ,GAAA;;IAGR,OAAO,CAAC,KAAU,EAAE,IAAY,EAAA;AAC9B,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;;IAGxD,UAAU,GAAA;QACR,IAAI,IAAI,CAAC,mBAAmB,KAAK,gBAAgB,CAAC,iBAAiB,EAAE;AACnE,YAAA,OAAO,IAAI;;AACN,aAAA,IAAI,IAAI,CAAC,mBAAmB,KAAK,gBAAgB,CAAC,cAAc,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;AAC7F,YAAA,OAAO,IAAI;;AAGb,QAAA,OAAO,KAAK;;AAEd,IAAA,YAAY,CAAC,IAAmB,EAAA;QAC9B,IACE,IAAI,CAAC,QAAQ;YACb,CAAC,IAAI,CAAC,SAAS;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,IAAI,CAAC,eAAe;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACjC;AACA,YAAA,OAAO,KAAK;;QAEd,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;AAC1C,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;AAEd,IAAA,cAAc,CAAC,IAAmB,EAAA;QAChC,IACE,IAAI,CAAC,QAAQ;YACb,CAAC,IAAI,CAAC,SAAS;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,IAAI,CAAC,eAAe;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACjC;AACA,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK;AAC1E,eAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK;eACjC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE;AAC3C,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;8GAtEH,iBAAiB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAM,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,yOCd9B,k2DAwDA,EAAA,MAAA,EAAA,CAAA,2MAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAD,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAI,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD1Ca,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,2BAA2B,EAAA,UAAA,EAGzB,KAAK,EAAA,aAAA,EACF,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,k2DAAA,EAAA,MAAA,EAAA,CAAA,2MAAA,CAAA,EAAA;;sBAGpC;;sBAEA;;sBACA;;sBAEA;;;MEcU,uBAAuB,CAAA;IAElC,IAAa,QAAQ,CAAC,KAAa,EAAA;QACjC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,YAAA,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;;;AAGrC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,SAAS;;IAcvB,IAAa,cAAc,CAAC,KAAoB,EAAA;QAC9C,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,GAAG,KAAK;;;IAarC,IAAa,QAAQ,CAAC,KAAc,EAAA;AAClC,QAAA,IACE,KAAK,KAAK,IAAI,CAAC,aAAa;AAC5B,YAAA,IAAI,CAAC,SAAS;AACd,YAAA,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B;YACA,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO;gBACpD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC;;;iBAEvC;gBACL,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM;gBACnD,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;;;;AAInD,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;AAC1B,QAAA,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,aAAa,GAAG,IAAI;;QAE3B,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACpD,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC3D,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;;AAGjC,IAAA,IAAI,QAAQ,GAAA;QACV,OAAO,IAAI,CAAC,aAAa;;AAe3B,IAAA,WAAA,CACU,KAA8B,EAC9B,WAAwB,EACxB,kBAAsC,EACvC,oBAA0C,EAC1C,SAA2B,EAC1B,GAAsB,EACtB,EAAc,EACd,kBAAsC,EAAA;QAPtC,IAAA,CAAA,KAAK,GAAL,KAAK;QACL,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QACnB,IAAA,CAAA,oBAAoB,GAApB,oBAAoB;QACpB,IAAA,CAAA,SAAS,GAAT,SAAS;QACR,IAAA,CAAA,GAAG,GAAH,GAAG;QACH,IAAA,CAAA,EAAE,GAAF,EAAE;QACF,IAAA,CAAA,kBAAkB,GAAlB,kBAAkB;QAxFpB,IAAA,CAAA,SAAS,GAAG,IAAI;QAkBf,IAAA,CAAA,yBAAyB,GAAG,IAAI;QAChC,IAAA,CAAA,oBAAoB,GAAG,IAAI;QAC3B,IAAA,CAAA,oBAAoB,GAAG,KAAK;QAQrC,IAAA,CAAA,oBAAoB,GAAkB,EAAE;QAG/B,IAAA,CAAA,OAAO,GAAG,KAAK;QACf,IAAA,CAAA,6BAA6B,GAAG,+BAA+B;QAC/D,IAAA,CAAA,yBAAyB,GAAG,EAAE;AAC7B,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAE;AAChC,QAAA,IAAA,CAAA,YAAY,GAAG,IAAI,YAAY,EAAE;QAC3C,IAAA,CAAA,aAAa,GAAG,KAAK;AACX,QAAA,IAAA,CAAA,cAAc,GAA0B,IAAI,YAAY,EAAW;QAkC7E,IAAA,CAAA,cAAc,GAAG,IAAI;QAIrB,IAAA,CAAA,aAAa,GAAG,KAAK;QACrB,IAAA,CAAA,eAAe,GAAG,KAAK;QACvB,IAAA,CAAA,aAAa,GAAG,CAAC;QACjB,IAAA,CAAA,iBAAiB,GAAG,KAAK;;IAazB,QAAQ,GAAA;QACN,IAAI,CAAC,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI;QACxC,IAAI,CAAC,kBAAkB,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI;AAC/C,QAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACjB,YAAA,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;AAC3D,YAAA,IAAI,CAAC,iBAAiB,GAAG,IAAI;;AAG/B,QAAA,IAAI,CAAC;AACF,aAAA,GAAG,CAAC,IAAI,CAAC,6BAA6B;AACtC,aAAA,SAAS,CAAC,CAAC,WAAW,KAAI;AACzB,YAAA,IAAI,CAAC,0BAA0B,GAAG,WAAW;AAC/C,SAAC,CAAC;AAEJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,gBAAgB,CAAC,gBAAgB;AAC3D,aAAA,SAAS,CAAC,CAAC,gBAA+B,KAAI;AAC7C,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,gBAAgB,CAAC,SAAS;AACpD,aAAA,SAAS,CAAC,CAAC,SAAkB,KAAI;AAChC,YAAA,IAAI,CAAC,OAAO,GAAG,SAAS;AACxB,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;AAC1B,SAAC,CAAC;AACJ,QAAA,IAAI,CAAC;aACF,QAAQ,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,gBAAgB,CAAC,YAAY;AACvD,aAAA,SAAS,CAAC,CAAC,YAA2B,KAAI;AACzC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YACxB,IAAI,CAAC,YAAY,EAAE;gBACjB;;;YAGF,IACE,YAAY,CAAC,UAAU;AACvB,gBAAA,YAAY,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW;AACxD,gBAAA,CAAC,YAAY,CAAC,QAAQ,EACtB;gBACA;;YAGF,IAAI,CAAC,2BAA2B,CAAC;AAC/B,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,YAAY;AACnB,aAAA,CAAC;AACJ,SAAC,CAAC;;IAEN,eAAe,GAAA;;;AAGf,IAAA,aAAa,CAAC,KAAU,EAAA;AACtB,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;;AAG9B,IAAA,aAAa,CAAC,IAAS,EAAA;;AAGrB,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QACnD,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;AACzD,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC/D,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;AAG1B,IAAA,2BAA2B,CAAC,KAAU,EAAA;AACpC,QAAA,QAAQ,KAAK,CAAC,IAAI;AAChB,YAAA,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;AAEhD,YAAA,KAAK,QAAQ;AACX,gBAAA,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AACzB,gBAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC;gBAClC,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC;AAE1C,YAAA,KAAK,UAAU;gBACb,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC;AACjD,gBAAA,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;AAElC,YAAA,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE;AACjE,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE;AAEzD,gBAAA,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC;gBAC9D,OAAO,IAAI,CAAC,aAAa,CAAC;oBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,IAAI,CAAC,YAAY;oBACvB,OAAO,EAAE,KAAK,CAAC,KAAK;AACrB,iBAAA,CAAC;AAEJ,YAAA,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,IAAI,EAAE;AACxE,YAAA,KAAK,QAAQ;gBACX,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,KAAK,EAAE;gBAEhE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC;gBACrD,OAAO,IAAI,CAAC,aAAa,CAAC;oBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,IAAI,CAAC,YAAY;AACxB,iBAAA,CAAC;AAEJ,YAAA,KAAK,cAAc;AACjB,gBAAA,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAC9C,IAAI,CAAC,WAAW,CAAC,WAAW,CAC7B,CAAC,EAAE;gBACJ,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC;gBAC7D,OAAO,IAAI,CAAC,aAAa,CAAC;oBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,oBAAA,QAAQ,EAAE,QAAQ;oBAClB,UAAU,EAAE,KAAK,CAAC,OAAO;AAC1B,iBAAA,CAAC;AACJ,YAAA,KAAK,YAAY;gBACf,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;;AAE3D,oBAAA,MAAM,aAAa,GAAkB;AACnC,wBAAA,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;AAChC,wBAAA,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;AAClC,wBAAA,QAAQ,EAAE,KAAK;qBAChB;AACD,oBAAA,IAAI,CAAC,YAAY,GAAG,aAAa;oBACjC,IAAI,CAAC,gBAAgB,EAAE;oBACvB;;gBAGF,MAAM,UAAU,GAAG,CAAC,KAAU,KAAI,GAAG;AACrC,gBAAA,MAAM,aAAa,GAAG,CAAC,IAAS,KAAI;;AAElC,oBAAA,MAAM,aAAa,GAAkB;AACnC,wBAAA,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE;AAChB,wBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ;AACxB,wBAAA,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe;AAC1C,wBAAA,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,oBAAoB;AACpD,wBAAA,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;AACpB,wBAAA,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS;AAC9B,wBAAA,QAAQ,EAAE,KAAK;qBAChB;AACD,oBAAA,IAAI,CAAC,YAAY,GAAG,aAAa;AACjC,oBAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;wBAC7B,IAAI,CAAC,gBAAgB,EAAE;wBACvB;;AAEJ,iBAAC;AAED,gBAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAC3C,IAAI,CAAC,WAAW,CAAC,WAAW,CAC7B,CAAC,EAAE;gBAEJ,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAChC,KAAK,EACL,KAAK,CAAC,OAAO,CAAC,QAAQ,EACtB,KAAK,CAAC,OAAO,CAAC,cAAc,EAC5B,aAAa,EACb,UAAU,CACX;gBAED,OAAO,IAAI,CAAC,aAAa,CAAC;oBACxB,IAAI,EAAE,KAAK,CAAC,IAAI;AAChB,oBAAA,QAAQ,EAAE,KAAK;AACf,oBAAA,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ;AAChC,oBAAA,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc;AAC7C,iBAAA,CAAC;;;IAIR,gBAAgB,CAAC,IAAmB,EAAE,OAAiB,EAAA;AACrD,QAAA,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxB;;QAEF,IAAI,OAAO,EAAE;AACX,YAAA,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,cAAc,CAChD,IAAI,CAAC,WAAW,CAAC,WAAW,CAC7B;AACD,YAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AACrE,YAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;aACrB;YACL,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AACrD,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;iBACtB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7D,gBAAA,IAAI,CAAC,cAAc,GAAG,IAAI;;iBACrB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,EAAE;AAC5D,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;iBACtB,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;AAC7D,gBAAA,IAAI,CAAC,cAAc,GAAG,KAAK;;;AAI/B,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;;QAGxB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE;AACzC,YAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;YACxB;;AAGF,QAAA,IAAI,IAAI,CAAC,cAAc,EAAE;AACvB,YAAA,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;;aAC5D;AACL,YAAA,QAAQ,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;AAEhE,QAAA,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE;;;AAI1B,IAAA,iBAAiB,CAAC,IAAmB,EAAA;AACnC,QAAA,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU;AAEhC,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,UAAU,GAAG,MAAM;;QAGrB,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,CAAC;QAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,KAAK,CAAC;AACxD,QAAA,IAAI,CAAC,WAAW,IAAI,CAAC,SAAS,EAAE;AAC9B,YAAA,OAAO,CAAC,IAAI,CACV,wDAAwD,EACxD,UAAU,CACX;YACD;;AAGF,QAAA,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;AAC/B,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;QAEzB,IAAI,SAAS,EAAE;AACb,YAAA,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;;QAEvC,IAAI,WAAW,EAAE;AACf,YAAA,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,IAAI,CAAC;;;AAI/C,QAAA,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY;QACpC,IACE,YAAY,KAAK,IAAI;YACrB,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,WAAW,CAAC,WAAW,EAChD;YACA;;AAGF,QAAA,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;YAC7B,YAAY,GAAG,MAAM;;QAGvB,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,OAAO,CAAC;QAChE,IAAI,CAAC,aAAa,EAAE;AAClB,YAAA,OAAO,CAAC,IAAI,CACV,+DAA+D,EAC/D,YAAY,CACb;YACD;;AAGF,QAAA,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC;;AAGnC,IAAA,qBAAqB,CAAC,EAAe,EAAE,KAAA,GAAiB,KAAK,EAAA;AACnE,QAAA,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;aACjC,GAAG,CAAC,aAAa,CAAC;QAErB,IAAI,KAAK,EAAE;AACT,YAAA,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC;;;AAI7C,IAAA,cAAc,CAAC,EAAU,EAAE,MAAA,GAAiB,EAAE,EAAA;AACpD,QAAA,MAAM,MAAM,GAAG,MAAM,GAAG,EAAE;AAC1B,QAAA,OAAO,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC;;AAGhC,IAAA,WAAW,CAAC,SAAiB,EAAA;QACnC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,KAC5D,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAC/B;;AAGH,IAAA,UAAU,CAAC,GAAY,EAAA;AACrB,QAAA,IAAI,CAAC,QAAQ,GAAG,GAAG;;AAErB,IAAA,YAAY,CAAC,MAAe,EAAA;AAC1B,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;;IAGzB,eAAe,GAAA;;;AAGb,QAAA,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;AAGlE,IAAA,kBAAkB,CAAC,KAAU,EAAA;AAC3B,QAAA,IAAI,CAAC,aAAa,GAAG,KAAK;;AAE5B,IAAA,qBAAqB,CAAC,KAAU,EAAA;AAC9B,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK;;IAG9B,gBAAgB,GAAA;AACd,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QACtB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;;AAE3C,IAAA,qBAAqB,CAAC,YAA2B,EAAA;AAC/C,QAAA,IACE,CAAC,YAAY;AACb,aAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;AACrE,aAAC,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,EACpE;AACA,YAAA,OAAO,KAAK;;AAEd,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;AAC/D,YAAA,OAAO,KAAK;;AAGd,QAAA,OAAO,IAAI;;IAGb,eAAe,GAAA;AACb,QAAA,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;;AAExB,IAAA,aAAa,CAAC,KAAoB,EAAA;AAChC,QAAA,IACE,CAAC,KAAK;AACN,YAAA,KAAK,CAAC,QAAQ;YACd,CAAC,KAAK,CAAC,SAAS;AAChB,YAAA,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC5B,CAAC,IAAI,CAAC,oBAAoB;AAC1B,YAAA,IAAI,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC;YACtC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAC5B,CAAC,CAAC,KACA,CAAC;AACD,gBAAA,KAAK,CAAC,SAAS;AACf,gBAAA,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CACpD,EACD;AACA,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;AAEd,IAAA,iBAAiB,CAAC,IAAY,EAAA;QAC5B,MAAM,KAAK,GAAG,QAAQ,CAAC,oBAAoB,CAAC,IAAI,CAAC;AACjD,QAAA,IAAI,OAAO,GAAG,MAAM,CAAC,gBAAgB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;AAC/D,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAC5B,QAAQ,CAAC;AACN,iBAAA,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI;AAC/B,iBAAA,gBAAgB,CAAC,SAAS,CAAC,EAC9B,EAAE,CACH;AACD,YAAA,IAAI,MAAM,GAAG,OAAO,EAAE;gBACpB,OAAO,GAAG,MAAM;;;AAGpB,QAAA,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC;AACrC,QAAA,OAAO,OAAO;;AAEhB,IAAA,cAAc,CAAC,IAAmB,EAAA;QAChC,IACE,IAAI,CAAC,QAAQ;YACb,CAAC,IAAI,CAAC,SAAS;AACf,YAAA,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YAC3B,CAAC,IAAI,CAAC,eAAe;AACrB,YAAA,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC,EACjC;AACA,YAAA,OAAO,KAAK;;AAEd,QAAA,IACE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK;AACtC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM;AACvC,YAAA,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK;YACtC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,KAAK,EACtC;AACA,YAAA,OAAO,IAAI;;AAEb,QAAA,OAAO,KAAK;;8GA9cH,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAH,uBAAA,EAAA,EAAA,EAAA,KAAA,EAAAL,WAAA,EAAA,EAAA,EAAA,KAAA,EAAAM,kBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,oBAAA,EAAA,EAAA,EAAA,KAAA,EAAAH,IAAA,CAAA,gBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,iBAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAAS,kBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAvB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,uBAAuB,gkCClCpC,yvaA+RA,EAAA,MAAA,EAAA,CAAA,ypCAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,IAAA,CAAA,OAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAA,IAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,aAAA,EAAA,YAAA,EAAA,aAAA,EAAA,SAAA,EAAA,UAAA,EAAA,OAAA,EAAA,WAAA,EAAA,WAAA,EAAA,QAAA,EAAA,WAAA,EAAA,gBAAA,EAAA,iBAAA,EAAA,SAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,SAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,iBAAA,EAAA,yBAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,aAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,sBAAA,EAAA,QAAA,EAAA,gCAAA,EAAA,MAAA,EAAA,CAAA,uBAAA,EAAA,2BAAA,EAAA,gCAAA,EAAA,8BAAA,EAAA,6BAAA,CAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,EAAA,qBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,aAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,mBAAA,EAAA,QAAA,EAAA,4BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,uBAAA,EAAA,QAAA,EAAA,iCAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,eAAA,EAAA,QAAA,EAAA,wBAAA,EAAA,MAAA,EAAA,CAAA,sBAAA,EAAA,YAAA,EAAA,2BAAA,EAAA,sBAAA,EAAA,sBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,kBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,YAAA,CAAA,EAAA,OAAA,EAAA,CAAA,eAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAAC,iBAAA,EAAA,QAAA,EAAA,2BAAA,EAAA,MAAA,EAAA,CAAA,kBAAA,EAAA,MAAA,EAAA,qBAAA,CAAA,EAAA,OAAA,EAAA,CAAA,YAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EAAAlB,IAAA,CAAA,aAAA,EAAA,IAAA,EAAA,WAAA,EAAA,CAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FD7Pa,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAPnC,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,kBAAkB,EAAA,UAAA,EAGhB,KAAK,EAAA,aAAA,EACF,iBAAiB,CAAC,IAAI,EAAA,QAAA,EAAA,yvaAAA,EAAA,MAAA,EAAA,CAAA,ypCAAA,CAAA,EAAA;;sBAIpC;;sBAUA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAOA;;sBACA;;sBACA;;sBACA;;sBACA;;sBACA;;sBAEA;;sBACA;;sBAyCA,SAAS;uBAAC,WAAW;;;AEhHxB;;;;;;;;AAQE;MAKW,YAAY,CAAA;AAJzB,IAAA,WAAA,GAAA;AAMU,QAAA,IAAA,CAAA,KAAK,GAAG;YACd,OAAO;YACP,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ,IAAI;YACJ;SACD;AAcF;AAZC,IAAA,SAAS,CAAC,KAAA,GAAgB,CAAC,EAAE,YAAoB,CAAC,EAAA;AAChD,QAAA,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAAE,YAAA,OAAO,GAAG;QAEpE,IAAI,IAAI,GAAG,CAAC;AAEZ,QAAA,OAAO,KAAK,IAAI,IAAI,EAAE;YACpB,KAAK,IAAI,IAAI;AACb,YAAA,IAAI,EAAE;;AAGR,QAAA,OAAO,KAAK,CAAC,OAAO,CAAC,CAAE,SAAS,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;8GArBjD,YAAY,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAZ,YAAY,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,UAAA,EAAA,CAAA,CAAA;;2FAAZ,YAAY,EAAA,UAAA,EAAA,CAAA;kBAJxB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCRY,iBAAiB,CAAA;AAC5B,IAAA,SAAS,CAAC,IAAS,EAAA;QACjB,MAAM,CAAC,GAAG,EAAE;AACZ,QAAA,KAAK,MAAM,OAAO,IAAI,IAAI,EAAE;AAC1B,YAAA,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;AAChC,gBAAA,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;;;AAIhD,QAAA,OAAO,CAAC;;8GATC,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;4GAAjB,iBAAiB,EAAA,YAAA,EAAA,KAAA,EAAA,IAAA,EAAA,mBAAA,EAAA,CAAA,CAAA;;2FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,mBAAmB;AACzB,oBAAA,UAAU,EAAE;AACb,iBAAA;;;MCwDY,oBAAoB,CAAA;AAC/B,IAAA,OAAO,OAAO,GAAA;QACZ,OAAO;AACL,YAAA,QAAQ,EAAE,oBAAoB;YAC9B,SAAS,EAAE,CAAC,gBAAgB,CAAC;SAC9B;;8GALQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAApB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,iBA/B7B,uBAAuB;YACvB,sBAAsB;YACtB,aAAa;YACb,aAAa;YACb,mBAAmB;YACnB,eAAe;YACf,mBAAmB;YACnB,uBAAuB;YACvB,eAAe;YACf,kBAAkB;YAClB,iBAAiB;YACjB,iBAAiB;AACjB,YAAA,YAAY,aAGZ,YAAY;YACZ,eAAe,EAAAJ,EAAA,CAAA,mBAAA,EAEf,gBAAgB,CAAA,EAAA,OAAA,EAAA,CAER,uBAAuB,CAAA,EAAA,CAAA,CAAA;AAWtB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,oBAAoB,EAAA,SAAA,EAVpB;YACT,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;YAC3C,kBAAkB;YAClB,mBAAmB;YACnB,kBAAkB;YAClB,kBAAkB;YAClB,WAAW;YACX,uBAAuB;AACxB,SAAA,EAAA,OAAA,EAAA,CAdC,YAAY;YACZ,eAAe;YACf,mBAAmB,CAAC,OAAO,EAAE;YAC7B,gBAAgB,CAAA,EAAA,CAAA,CAAA;;2FAaP,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjChC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,YAAY,EAAE;wBACZ,uBAAuB;wBACvB,sBAAsB;wBACtB,aAAa;wBACb,aAAa;wBACb,mBAAmB;wBACnB,eAAe;wBACf,mBAAmB;wBACnB,uBAAuB;wBACvB,eAAe;wBACf,kBAAkB;wBAClB,iBAAiB;wBACjB,iBAAiB;wBACjB,YAAY;AACb,qBAAA;AACD,oBAAA,OAAO,EAAE;wBACP,YAAY;wBACZ,eAAe;wBACf,mBAAmB,CAAC,OAAO,EAAE;wBAC7B,gBAAgB;AACjB,qBAAA;oBACD,OAAO,EAAE,CAAC,uBAAuB,CAAC;AAClC,oBAAA,SAAS,EAAE;wBACT,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;wBAC3C,kBAAkB;wBAClB,mBAAmB;wBACnB,kBAAkB;wBAClB,kBAAkB;wBAClB,WAAW;wBACX,uBAAuB;AACxB,qBAAA;AACF,iBAAA;;;AC5DD;;AAEG;;;;"}