{"version":3,"file":"angular-strapi-client.mjs","sources":["../../src/lib/service/normalize-response.ts","../../src/lib/model/strapi-config.ts","../../src/lib/service/http/http-builder.service.ts","../../src/lib/service/auth/auth.service.ts","../../src/lib/service/strapi/strapi.service.ts","../../src/public-api.ts","../../src/angular-strapi-client.ts"],"sourcesContent":["import { map } from 'rxjs';\nimport { StrapiResponse } from '../model/strapi-response';\n\nexport function normalize(isSingle: boolean) {\n   return map((response: StrapiResponse) => ({\n      ...response,\n      data: isSingle\n         ? Array.isArray(response.data) && response.data.length\n            ? response.data[0]\n            : response.data\n         : Array.isArray(response.data)\n         ? response.data\n         : [response.data],\n   }));\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface StrapiConfig {\n   url: string;\n}\n\nexport const STRAPI_CONFIG = new InjectionToken<StrapiConfig>('strapi.config');\n","import { Injectable } from '@angular/core';\nimport { StrapiParams } from '../../model/strapi-params';\nimport { HttpHeaders, HttpParams } from '@angular/common/http';\n\n@Injectable({\n   providedIn: 'root',\n})\nexport class HttpBuilder {\n   url(url: string, path: string, id?: number | string): string {\n      let buildedUrl = path;\n\n      if (id != null) {\n         const encodedId = encodeURIComponent(id);\n         buildedUrl = path.replace(/:id/, encodedId);\n      }\n\n      buildedUrl =\n         '/' +\n         buildedUrl\n            .split('/')\n            .filter((s) => !!s && s.length && !s.startsWith(':'))\n            .join('/');\n\n      return url + buildedUrl;\n   }\n\n   headers(\n      authToken?: string,\n      customHeaders?: Record<string, string>\n   ): HttpHeaders {\n      let httpHeaders = new HttpHeaders({\n         'Content-Type': 'application/json',\n      });\n\n      if (authToken) {\n         httpHeaders = httpHeaders.set('Authorization', `Bearer ${authToken}`);\n      }\n\n      if (customHeaders) {\n         Object.entries(customHeaders).forEach(([key, value]) => {\n            httpHeaders = httpHeaders.set(key, value);\n         });\n      }\n\n      return httpHeaders;\n   }\n\n   params(queryParams?: StrapiParams): HttpParams {\n      let params = new HttpParams();\n\n      if (!queryParams) {\n         return params;\n      }\n\n      if (queryParams.populate) {\n         if (Array.isArray(queryParams.populate)) {\n            queryParams.populate.forEach((field) => {\n               params = params.append('populate[]', field);\n            });\n         } else if (queryParams.populate === '*') {\n            params = params.set('populate', '*');\n         } else {\n            params = this.buildNestedParams(\n               params,\n               'populate',\n               queryParams.populate\n            );\n         }\n      }\n\n      if (queryParams.fields) {\n         queryParams.fields.forEach((field) => {\n            params = params.append('fields[]', String(field));\n         });\n      }\n\n      if (queryParams.filters) {\n         params = this.buildNestedParams(\n            params,\n            'filters',\n            queryParams.filters\n         );\n      }\n\n      if (queryParams.sort) {\n         if (Array.isArray(queryParams.sort)) {\n            queryParams.sort.forEach((field) => {\n               params = params.append('sort[]', String(field));\n            });\n         } else {\n            params = params.set('sort', String(queryParams.sort));\n         }\n      }\n\n      if (queryParams.pagination) {\n         Object.entries(queryParams.pagination).forEach(([key, value]) => {\n            if (value !== undefined) {\n               params = params.set(`pagination[${key}]`, value.toString());\n            }\n         });\n      }\n\n      if (queryParams.status) {\n         params = params.set('status', queryParams.status);\n      }\n\n      if (queryParams.locale) {\n         if (Array.isArray(queryParams.locale)) {\n            queryParams.locale.forEach((loc) => {\n               params = params.append('locale[]', loc);\n            });\n         } else {\n            params = params.set('locale', queryParams.locale);\n         }\n      }\n\n      return params;\n   }\n\n   private buildNestedParams(params: HttpParams, prefix: string, obj: any) {\n      Object.entries(obj).forEach(([key, value]) => {\n         if (value === null || value === undefined) {\n            return;\n         }\n\n         const paramKey = `${prefix}[${key}]`;\n\n         if (key === '$or' || key === '$and') {\n            if (Array.isArray(value)) {\n               value.forEach((item, index) => {\n                  params = this.buildNestedParams(\n                     params,\n                     `${paramKey}[${index}]`,\n                     item\n                  );\n               });\n            }\n         } else if (key === '$not') {\n            params = this.buildNestedParams(params, paramKey, value);\n         } else if (Array.isArray(value)) {\n            if (value.every((item) => typeof item !== 'object')) {\n               value.forEach((item) => {\n                  params = params.append(`${paramKey}[]`, item.toString());\n               });\n            } else {\n               value.forEach((item, index) => {\n                  if (typeof item === 'object') {\n                     params = this.buildNestedParams(\n                        params,\n                        `${paramKey}[${index}]`,\n                        item\n                     );\n                  } else {\n                     params = params.append(`${paramKey}[]`, item.toString());\n                  }\n               });\n            }\n         } else if (typeof value === 'object') {\n            params = this.buildNestedParams(params, paramKey, value);\n         } else {\n            params = params.set(paramKey, value.toString());\n         }\n      });\n\n      return params;\n   }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n   providedIn: 'root',\n})\nexport class AuthService {\n   private authToken?: string;\n\n   getAuthToken() {\n      return this.authToken;\n   }\n\n   setAuthToken(token: string) {\n      this.authToken = token;\n   }\n\n   clearAuthToken() {\n      this.authToken = undefined;\n   }\n}\n","import { retry, map } from 'rxjs';\nimport { normalize } from '../normalize-response';\nimport { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { AuthService } from '../auth/auth.service';\nimport { StrapiParams } from '../../model/strapi-params';\nimport { HttpBuilder } from '../http/http-builder.service';\nimport { STRAPI_CONFIG, StrapiConfig } from '../../model/strapi-config';\nimport { StrapiRequestOptions } from '../../model/strapi-request-options';\nimport { StrapiObservable, StrapiResponse } from '../../model/strapi-response';\n\n@Injectable({\n   providedIn: 'root',\n})\nexport abstract class StrapiService<T> {\n   protected readonly url!: string;\n   abstract path: string;\n\n   constructor(\n      protected readonly httpClient: HttpClient,\n      private readonly httpBuilder: HttpBuilder,\n      private readonly authService: AuthService,\n      @Inject(STRAPI_CONFIG) private readonly strapiConfig: StrapiConfig\n   ) {\n      this.url = strapiConfig.url;\n   }\n\n   get<U extends string | number | undefined = undefined>(\n      id?: U,\n      params?: StrapiParams<T>,\n      options?: StrapiRequestOptions\n   ) {\n      const url = this.httpBuilder.url(this.url, this.path, id);\n      const httpParams = this.httpBuilder.params(params);\n      const headers = this.httpBuilder.headers(\n         this.authService.getAuthToken(),\n         options?.headers\n      );\n\n      return this.httpClient\n         .get<StrapiResponse>(url, {\n            headers,\n            params: httpParams,\n            withCredentials: options?.withCredentials,\n         })\n         .pipe(\n            normalize(typeof id !== 'undefined'),\n            retry({ count: 2, delay: 1000 })\n         ) as StrapiObservable<T, U>;\n   }\n\n   save(\n      id: string | number | undefined,\n      data: Partial<T>,\n      options?: StrapiRequestOptions,\n      method?: 'POST' | 'PUT' | 'PATCH'\n   ) {\n      const url = this.httpBuilder.url(this.url, this.path, id);\n      const headers = this.httpBuilder.headers(\n         this.authService.getAuthToken(),\n         options?.headers\n      );\n      const httpMethod = method || (id ? 'PUT' : 'POST');\n      return this.httpClient.request<StrapiResponse<T>>(\n         httpMethod.toLowerCase(),\n         url,\n         {\n            headers,\n            body: { data },\n            withCredentials: options?.withCredentials,\n         }\n      );\n   }\n\n   delete(id: number | string, options?: StrapiRequestOptions) {\n      const url = this.httpBuilder.url(this.url, this.path, id);\n      const headers = this.httpBuilder.headers(\n         this.authService.getAuthToken(),\n         options?.headers\n      );\n\n      return this.httpClient.delete<void>(url, {\n         headers,\n         withCredentials: options?.withCredentials,\n      });\n   }\n}\n","// core\nexport * from './lib/service/strapi/strapi.service';\nexport * from './lib/service/auth/auth.service';\nexport * from './lib/model/strapi-config';\n\n// model\nexport * from './lib/model/strapi-entry';\nexport * from './lib/model/strapi-params';\nexport * from './lib/model/strapi-filters';\nexport * from './lib/model/strapi-response';\nexport * from './lib/model/strapi-request-options';\nexport * from './lib/model/strapi-sort';\nexport * from './lib/model/strapi-populate';\nexport * from './lib/model/strapi-pagination';\nexport * from './lib/model/strapi-metadata';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;AAGM,SAAU,SAAS,CAAC,QAAiB,EAAA;AACxC,IAAA,OAAO,GAAG,CAAC,CAAC,QAAwB,MAAM;AACvC,QAAA,GAAG,QAAQ;AACX,QAAA,IAAI,EAAE;AACH,cAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC;AAC7C,kBAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;kBACf,QAAQ,CAAC;cACZ,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI;kBAC3B,QAAQ,CAAC;AACX,kBAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;AACtB,KAAA,CAAC,CAAC;AACN;;MCRa,aAAa,GAAG,IAAI,cAAc,CAAe,eAAe;;MCChE,WAAW,CAAA;AACrB,IAAA,GAAG,CAAC,GAAW,EAAE,IAAY,EAAE,EAAoB,EAAA;QAChD,IAAI,UAAU,GAAG,IAAI;AAErB,QAAA,IAAI,EAAE,IAAI,IAAI,EAAE;AACb,YAAA,MAAM,SAAS,GAAG,kBAAkB,CAAC,EAAE,CAAC;YACxC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC;QAC9C;QAEA,UAAU;YACP,GAAG;gBACH;qBACI,KAAK,CAAC,GAAG;qBACT,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;qBACnD,IAAI,CAAC,GAAG,CAAC;QAEhB,OAAO,GAAG,GAAG,UAAU;IAC1B;IAEA,OAAO,CACJ,SAAkB,EAClB,aAAsC,EAAA;AAEtC,QAAA,IAAI,WAAW,GAAG,IAAI,WAAW,CAAC;AAC/B,YAAA,cAAc,EAAE,kBAAkB;AACpC,SAAA,CAAC;QAEF,IAAI,SAAS,EAAE;YACZ,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,eAAe,EAAE,CAAA,OAAA,EAAU,SAAS,CAAA,CAAE,CAAC;QACxE;QAEA,IAAI,aAAa,EAAE;AAChB,YAAA,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;gBACpD,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;AAC5C,YAAA,CAAC,CAAC;QACL;AAEA,QAAA,OAAO,WAAW;IACrB;AAEA,IAAA,MAAM,CAAC,WAA0B,EAAA;AAC9B,QAAA,IAAI,MAAM,GAAG,IAAI,UAAU,EAAE;QAE7B,IAAI,CAAC,WAAW,EAAE;AACf,YAAA,OAAO,MAAM;QAChB;AAEA,QAAA,IAAI,WAAW,CAAC,QAAQ,EAAE;YACvB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;gBACtC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;oBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC;AAC9C,gBAAA,CAAC,CAAC;YACL;AAAO,iBAAA,IAAI,WAAW,CAAC,QAAQ,KAAK,GAAG,EAAE;gBACtC,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;YACvC;iBAAO;AACJ,gBAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAC5B,MAAM,EACN,UAAU,EACV,WAAW,CAAC,QAAQ,CACtB;YACJ;QACH;AAEA,QAAA,IAAI,WAAW,CAAC,MAAM,EAAE;YACrB,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAClC,gBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AACpD,YAAA,CAAC,CAAC;QACL;AAEA,QAAA,IAAI,WAAW,CAAC,OAAO,EAAE;AACtB,YAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAC5B,MAAM,EACN,SAAS,EACT,WAAW,CAAC,OAAO,CACrB;QACJ;AAEA,QAAA,IAAI,WAAW,CAAC,IAAI,EAAE;YACnB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;gBAClC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,KAAI;AAChC,oBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;AAClD,gBAAA,CAAC,CAAC;YACL;iBAAO;AACJ,gBAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACxD;QACH;AAEA,QAAA,IAAI,WAAW,CAAC,UAAU,EAAE;AACzB,YAAA,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;AAC7D,gBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACtB,oBAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA,WAAA,EAAc,GAAG,CAAA,CAAA,CAAG,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAC9D;AACH,YAAA,CAAC,CAAC;QACL;AAEA,QAAA,IAAI,WAAW,CAAC,MAAM,EAAE;YACrB,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;QACpD;AAEA,QAAA,IAAI,WAAW,CAAC,MAAM,EAAE;YACrB,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gBACpC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,KAAI;oBAChC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC;AAC1C,gBAAA,CAAC,CAAC;YACL;iBAAO;gBACJ,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC;YACpD;QACH;AAEA,QAAA,OAAO,MAAM;IAChB;AAEQ,IAAA,iBAAiB,CAAC,MAAkB,EAAE,MAAc,EAAE,GAAQ,EAAA;AACnE,QAAA,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,KAAI;YAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;gBACxC;YACH;AAEA,YAAA,MAAM,QAAQ,GAAG,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,GAAG,GAAG;YAEpC,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,MAAM,EAAE;AAClC,gBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACvB,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC3B,wBAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAC5B,MAAM,EACN,CAAA,EAAG,QAAQ,IAAI,KAAK,CAAA,CAAA,CAAG,EACvB,IAAI,CACN;AACJ,oBAAA,CAAC,CAAC;gBACL;YACH;AAAO,iBAAA,IAAI,GAAG,KAAK,MAAM,EAAE;gBACxB,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;YAC3D;AAAO,iBAAA,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;AAC9B,gBAAA,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE;AAClD,oBAAA,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,KAAI;AACpB,wBAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;AAC3D,oBAAA,CAAC,CAAC;gBACL;qBAAO;oBACJ,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC3B,wBAAA,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;AAC3B,4BAAA,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAC5B,MAAM,EACN,CAAA,EAAG,QAAQ,IAAI,KAAK,CAAA,CAAA,CAAG,EACvB,IAAI,CACN;wBACJ;6BAAO;AACJ,4BAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA,EAAG,QAAQ,CAAA,EAAA,CAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC;wBAC3D;AACH,oBAAA,CAAC,CAAC;gBACL;YACH;AAAO,iBAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;gBACnC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC;YAC3D;iBAAO;AACJ,gBAAA,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;YAClD;AACH,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,MAAM;IAChB;wGA9JU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFT,MAAM,EAAA,CAAA;;4FAER,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,MAAM;AACpB,iBAAA;;;MCDY,WAAW,CAAA;AACb,IAAA,SAAS;IAEjB,YAAY,GAAA;QACT,OAAO,IAAI,CAAC,SAAS;IACxB;AAEA,IAAA,YAAY,CAAC,KAAa,EAAA;AACvB,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;IACzB;IAEA,cAAc,GAAA;AACX,QAAA,IAAI,CAAC,SAAS,GAAG,SAAS;IAC7B;wGAbU,WAAW,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AAAX,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAW,cAFT,MAAM,EAAA,CAAA;;4FAER,WAAW,EAAA,UAAA,EAAA,CAAA;kBAHvB,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,MAAM;AACpB,iBAAA;;;MCUqB,aAAa,CAAA;AAKV,IAAA,UAAA;AACF,IAAA,WAAA;AACA,IAAA,WAAA;AACuB,IAAA,YAAA;AAPxB,IAAA,GAAG;AAGtB,IAAA,WAAA,CACsB,UAAsB,EACxB,WAAwB,EACxB,WAAwB,EACD,YAA0B,EAAA;QAH/C,IAAA,CAAA,UAAU,GAAV,UAAU;QACZ,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,WAAW,GAAX,WAAW;QACY,IAAA,CAAA,YAAY,GAAZ,YAAY;AAEpD,QAAA,IAAI,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG;IAC9B;AAEA,IAAA,GAAG,CACA,EAAM,EACN,MAAwB,EACxB,OAA8B,EAAA;AAE9B,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;QACzD,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;AAClD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CACrC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAC/B,OAAO,EAAE,OAAO,CAClB;QAED,OAAO,IAAI,CAAC;aACR,GAAG,CAAiB,GAAG,EAAE;YACvB,OAAO;AACP,YAAA,MAAM,EAAE,UAAU;YAClB,eAAe,EAAE,OAAO,EAAE,eAAe;SAC3C;aACA,IAAI,CACF,SAAS,CAAC,OAAO,EAAE,KAAK,WAAW,CAAC,EACpC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CACR;IACjC;AAEA,IAAA,IAAI,CACD,EAA+B,EAC/B,IAAgB,EAChB,OAA8B,EAC9B,MAAiC,EAAA;AAEjC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CACrC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAC/B,OAAO,EAAE,OAAO,CAClB;AACD,QAAA,MAAM,UAAU,GAAG,MAAM,KAAK,EAAE,GAAG,KAAK,GAAG,MAAM,CAAC;AAClD,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAC3B,UAAU,CAAC,WAAW,EAAE,EACxB,GAAG,EACH;YACG,OAAO;YACP,IAAI,EAAE,EAAE,IAAI,EAAE;YACd,eAAe,EAAE,OAAO,EAAE,eAAe;AAC3C,SAAA,CACH;IACJ;IAEA,MAAM,CAAC,EAAmB,EAAE,OAA8B,EAAA;AACvD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;AACzD,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CACrC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,EAC/B,OAAO,EAAE,OAAO,CAClB;AAED,QAAA,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAO,GAAG,EAAE;YACtC,OAAO;YACP,eAAe,EAAE,OAAO,EAAE,eAAe;AAC3C,SAAA,CAAC;IACL;AAvEmB,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,4FAQrB,aAAa,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA;AARL,IAAA,OAAA,KAAA,GAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,cAFpB,MAAM,EAAA,CAAA;;4FAEC,aAAa,EAAA,UAAA,EAAA,CAAA;kBAHlC,UAAU;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,UAAU,EAAE,MAAM;AACpB,iBAAA;;0BASM,MAAM;2BAAC,aAAa;;;ACtB3B;;ACAA;;AAEG;;;;"}