{"version":3,"file":"queryClient.mjs","sources":["../../../src/vanilla/queryClient.ts"],"sourcesContent":["import { focusManager } from './focusManager'\nimport {\n  MutationCache,\n  MutationInfoFilters,\n  createMutationCache,\n} from './mutationCache'\nimport { MutationInfoOptions } from './mutationInfo'\nimport {\n  ObservableInfiniteQuery,\n  ObservableInfiniteQueryOptions,\n  createObservableInfiniteQuery,\n} from './observableInfiniteQuery'\nimport {\n  ObservableQuery,\n  ObservableQueryOptions,\n  createObservableQuery,\n} from './observableQuery'\nimport { onlineManager } from './onlineManager'\nimport { PrimitiveQuery, isInfiniteQuery } from './primitiveQuery'\nimport {\n  QueryCache,\n  QueryInfoFilters,\n  QueryInfoTypeFilter,\n  createQueryCache,\n} from './queryCache'\nimport {\n  QueryInfo,\n  QueryInfoOptions,\n  QueryInfoState,\n  SetDataOptions,\n} from './queryInfo'\nimport { DeepPartial, GetVariablesOption, Updater } from './typeUtils'\nimport { InfiniteData } from './types'\nimport {\n  UNDEFINED,\n  functionalUpdate,\n  getFullKey,\n  hashKeyByOptions,\n  isUndefined,\n  noop,\n} from './utils'\n\nexport interface ResultOptions {\n  throwOnError?: boolean\n}\nexport interface RefetchOptions extends ResultOptions {\n  cancelRefetch?: boolean\n}\nexport interface InvalidateOptions extends RefetchOptions {}\nexport interface ResetOptions extends RefetchOptions {}\nexport interface CancelOptions {\n  revert?: boolean\n  silent?: boolean\n}\n\nexport interface InvalidateQueryFilters<\n  TFetcherData = unknown,\n  TVars = unknown,\n  TError = Error,\n  TQueryData = TFetcherData\n> extends QueryInfoFilters<TFetcherData, TVars, TError, TQueryData> {\n  refetchType?: QueryInfoTypeFilter | 'none'\n}\n\nexport type FetchQueryOptions<\n  TFetcherData = unknown,\n  TVars = unknown,\n  TError = Error,\n  TQueryData = TFetcherData\n> = Omit<\n  QueryInfoOptions<TFetcherData, TVars, TError, TQueryData>,\n  'variables' | '_defaulted'\n> &\n  GetVariablesOption<TVars> & {\n    /**\n     * The time in milliseconds after data is considered stale.\n     * If the data is fresh it will be returned from the cache.\n     */\n    staleTime?: number\n  }\n\nexport type TriggerMutationOptions<\n  TData = unknown,\n  TVars = unknown,\n  TError = Error\n> = Omit<MutationInfoOptions<TData, TVars, TError>, '_defaulted'> &\n  GetVariablesOption<TVars>\n\nexport interface DefaultOptions {\n  queries?: Omit<ObservableQueryOptions<any, any, any>, 'query' | '_defaulted'>\n  mutations?: Omit<MutationInfoOptions<any, any>, 'mutation' | '_defaulted'>\n}\n\nexport interface QueryClientConfig {\n  defaultOptions?: DefaultOptions\n  queryCache?: QueryCache\n  mutationCache?: MutationCache\n}\n\nexport interface QueryClient extends ReturnType<typeof createQueryClient> {}\n\nexport const createQueryClient = (config: QueryClientConfig = {}) => {\n  let mountCount = 0\n  let unsubscribeFocus: (() => void) | undefined\n  let unsubscribeOnline: (() => void) | undefined\n  let defaultOptions = config.defaultOptions\n\n  const mount = (): void => {\n    mountCount++\n    if (mountCount !== 1) return\n\n    unsubscribeFocus = focusManager.subscribe(() => {\n      if (focusManager.isFocused()) {\n        queryCache.onFocus()\n      }\n    })\n    unsubscribeOnline = onlineManager.subscribe(() => {\n      if (onlineManager.isOnline()) {\n        queryCache.onOnline()\n      }\n    })\n  }\n\n  const unmount = (): void => {\n    mountCount--\n    if (mountCount !== 0) return\n\n    unsubscribeFocus?.()\n    unsubscribeFocus = UNDEFINED\n\n    unsubscribeOnline?.()\n    unsubscribeOnline = UNDEFINED\n  }\n\n  const queryCache = config.queryCache ?? createQueryCache()\n\n  const mutationCache = config.mutationCache ?? createMutationCache()\n\n  const getQueryCache = () => queryCache\n\n  const getMutationCache = () => mutationCache\n\n  const getDefaultOptions = () => defaultOptions\n\n  const setDefaultOptions = (options: DefaultOptions): void => {\n    defaultOptions = options\n  }\n\n  const fetchQuery = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    options: FetchQueryOptions<TFetcherData, TVars, TError, TQueryData>\n  ): Promise<TQueryData> => {\n    const defaultedOptions = defaultQueryOptions(options)\n\n    if (isUndefined(defaultedOptions.retry)) {\n      defaultedOptions.retry = false\n    }\n\n    const queryInfo = queryCache.build(client, defaultedOptions)\n\n    return queryInfo.isStaleByTime(defaultedOptions.staleTime)\n      ? queryInfo.fetch(defaultedOptions)\n      : Promise.resolve(queryInfo.state.data!)\n  }\n\n  const prefetchQuery = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    options: FetchQueryOptions<TFetcherData, TVars, TError, TQueryData>\n  ) => {\n    return fetchQuery(options).then(noop).catch(noop)\n  }\n\n  const refetchQueries = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters?: QueryInfoFilters<TFetcherData, TVars, TError, TQueryData>,\n    options?: RefetchOptions\n  ): Promise<void> => {\n    const fetchOptions = {\n      ...options,\n      cancelRefetch: options?.cancelRefetch ?? true,\n    }\n    const promises = queryCache\n      .findAll(filters)\n      .filter(queryInfo => !queryInfo.isDisabled())\n      .map(queryInfo => {\n        let promise = queryInfo.fetch(UNDEFINED, fetchOptions)\n        if (!fetchOptions.throwOnError) {\n          promise = promise.catch(noop) as Promise<TQueryData>\n        }\n        return queryInfo.state.fetchStatus === 'paused'\n          ? Promise.resolve()\n          : promise\n      })\n\n    return Promise.all(promises).then(noop)\n  }\n\n  const getQueryState = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters: {\n      query: PrimitiveQuery<TFetcherData, TVars, TError, TQueryData>\n    } & GetVariablesOption<TVars>\n  ): QueryInfoState<TQueryData, TError> | undefined => {\n    return queryCache.find(\n      filters as {\n        query: PrimitiveQuery<TFetcherData, TVars, TError, TQueryData>\n        variables: DeepPartial<TVars>\n      }\n    )?.state\n  }\n\n  const getQueryData = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters: {\n      query: PrimitiveQuery<TFetcherData, TVars, TError, TQueryData>\n    } & GetVariablesOption<TVars>\n  ): TQueryData | undefined => {\n    return getQueryState(filters)?.data\n  }\n\n  const setQueryData = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters: {\n      query: PrimitiveQuery<TFetcherData, TVars, TError, TQueryData>\n    } & GetVariablesOption<TVars>,\n    updater: Updater<TQueryData | undefined, TQueryData | undefined>,\n    setDataOptions?: SetDataOptions\n  ) => {\n    const defaultedOptions = defaultQueryOptions(filters)\n    const queryInfo = queryCache.get<TFetcherData, TVars, TError, TQueryData>(\n      defaultedOptions.queryHash!\n    )\n    const prevData = queryInfo?.state.data\n    const data = functionalUpdate(updater, prevData)\n\n    return isUndefined(data)\n      ? UNDEFINED\n      : queryCache.build(client, defaultedOptions).setData(data, setDataOptions)\n  }\n\n  const getQueriesData = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters?: QueryInfoFilters<TFetcherData, TVars, TError, TQueryData>\n  ): [\n    QueryInfo<TFetcherData, TVars, TError, TQueryData>,\n    TQueryData | undefined\n  ][] => {\n    return queryCache\n      .findAll(filters)\n      .map(queryInfo => [queryInfo, queryInfo.state.data])\n  }\n\n  const setQueriesData = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters: QueryInfoFilters<TFetcherData, TVars, TError, TQueryData>,\n    updater: Updater<TQueryData | undefined, TQueryData | undefined>,\n    options?: SetDataOptions\n  ) => {\n    return queryCache\n      .findAll(filters)\n      .map(queryInfo => [\n        queryInfo,\n        setQueryData(queryInfo as any, updater, options),\n      ])\n  }\n\n  const removeQueries = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters?: QueryInfoFilters<TFetcherData, TVars, TError, TQueryData>\n  ) => {\n    queryCache\n      .findAll(filters)\n      .forEach(queryInfo => queryCache.remove(queryInfo))\n  }\n\n  const resetQueries = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters?: QueryInfoFilters<TFetcherData, TVars, TError, TQueryData>,\n    options?: ResetOptions\n  ): Promise<void> => {\n    const refetchFilters: QueryInfoFilters<\n      TFetcherData,\n      TVars,\n      TError,\n      TQueryData\n    > = {\n      type: 'active',\n      ...filters,\n    }\n\n    queryCache.findAll(filters).forEach(queryInfo => queryInfo.reset())\n    return refetchQueries(refetchFilters, options)\n  }\n\n  const invalidateQueries = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters: InvalidateQueryFilters<\n      TFetcherData,\n      TVars,\n      TError,\n      TQueryData\n    > = {},\n    options: InvalidateOptions = {}\n  ): Promise<void> => {\n    queryCache.findAll(filters).forEach(q => q.invalidate())\n\n    if (filters.refetchType === 'none') {\n      return Promise.resolve()\n    }\n    const refetchFilters: QueryInfoFilters<\n      TFetcherData,\n      TVars,\n      TError,\n      TQueryData\n    > = {\n      ...filters,\n      type: filters.refetchType ?? filters.type ?? 'active',\n    }\n    return refetchQueries(refetchFilters, options)\n  }\n\n  const cancelQueries = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    filters?: QueryInfoFilters<TFetcherData, TVars, TError, TQueryData>,\n    cancelOptions: CancelOptions = {}\n  ): Promise<void> => {\n    const defaultedCancelOptions = { revert: true, ...cancelOptions }\n\n    const promises = queryCache\n      .findAll(filters)\n      .map(queryInfo => queryInfo.cancel(defaultedCancelOptions))\n\n    return Promise.all(promises).then(noop).catch(noop)\n  }\n\n  const defaultQueryOptions = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData,\n    TData = TQueryData\n  >(\n    options?: ObservableQueryOptions<\n      TFetcherData,\n      TVars,\n      TError,\n      TQueryData,\n      TData\n    >\n  ): ObservableQueryOptions<TFetcherData, TVars, TError, TQueryData, TData> => {\n    if (options?._defaulted) {\n      return options as ObservableQueryOptions<\n        TFetcherData,\n        TVars,\n        TError,\n        TQueryData,\n        TData\n      >\n    }\n\n    const defaultedOptions = {\n      ...defaultOptions?.queries,\n      ...options?.query,\n      ...options,\n      _defaulted: true,\n    } as ObservableQueryOptions<TFetcherData, TVars, TError, TQueryData, TData>\n\n    // dependent default values\n    if (isUndefined(defaultedOptions.refetchOnReconnect)) {\n      defaultedOptions.refetchOnReconnect =\n        defaultedOptions.networkMode !== 'always'\n    }\n    if (isUndefined(defaultedOptions.throwOnError)) {\n      defaultedOptions.throwOnError = !!defaultedOptions.suspense\n    }\n\n    if (defaultedOptions.query && !defaultedOptions.queryHash) {\n      defaultedOptions.queryHash = hashKeyByOptions(\n        getFullKey(defaultedOptions.query.key, defaultedOptions.variables),\n        defaultedOptions\n      )\n    }\n\n    return defaultedOptions\n  }\n\n  const defaultMutationOptions = <T extends MutationInfoOptions<any, any, any>>(\n    options?: T\n  ): T => {\n    if (options?._defaulted) {\n      return options\n    }\n\n    return {\n      ...defaultOptions?.mutations,\n      ...options?.mutation,\n      ...options,\n      _defaulted: true,\n    } as T\n  }\n\n  const ensureQueryData = <\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData\n  >(\n    options: FetchQueryOptions<TFetcherData, TVars, TError, TQueryData>\n  ): Promise<TQueryData> => {\n    const cachedData = getQueryData(options)\n    return cachedData ? Promise.resolve(cachedData) : fetchQuery(options)\n  }\n\n  const triggerMutation = <TData = unknown, TVars = unknown, TError = Error>(\n    options: TriggerMutationOptions<TData, TVars, TError>\n  ) => {\n    return mutationCache.build(client, options).trigger(options.variables!)\n  }\n\n  const isMutating = <TData = unknown, TVars = unknown, TError = Error>(\n    filters?: MutationInfoFilters<TData, TVars, TError>\n  ): number => {\n    return mutationCache.findAll({ ...filters, status: 'mutating' }).length\n  }\n\n  const isFetching = (filters?: QueryInfoFilters): number => {\n    return queryCache.findAll({ ...filters, fetchStatus: 'fetching' }).length\n  }\n\n  const clear = (): void => {\n    queryCache.clear()\n    mutationCache.clear()\n  }\n\n  function watchQuery<\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TData = InfiniteData<TFetcherData>\n  >(\n    options: ObservableInfiniteQueryOptions<TFetcherData, TVars, TError, TData>\n  ): ObservableInfiniteQuery<TFetcherData, TVars, TError, TData>\n  function watchQuery<\n    TFetcherData = unknown,\n    TVars = unknown,\n    TError = Error,\n    TQueryData = TFetcherData,\n    TData = TQueryData\n  >(\n    options: ObservableQueryOptions<\n      TFetcherData,\n      TVars,\n      TError,\n      TQueryData,\n      TData\n    >\n  ): ObservableQuery<TFetcherData, TVars, TError, TQueryData, TData>\n  function watchQuery(options: any): any {\n    return isInfiniteQuery(options.query)\n      ? createObservableInfiniteQuery(client, options)\n      : createObservableQuery(client, options)\n  }\n\n  const client = {\n    getMutationCache,\n    defaultQueryOptions,\n    defaultMutationOptions,\n    getDefaultOptions,\n    setDefaultOptions,\n    getQueryCache,\n    fetchQuery,\n    prefetchQuery,\n    refetchQueries,\n    invalidateQueries,\n    resetQueries,\n    cancelQueries,\n    setQueryData,\n    setQueriesData,\n    removeQueries,\n    getQueryState,\n    getQueryData,\n    getQueriesData,\n    ensureQueryData,\n    triggerMutation,\n    isMutating,\n    isFetching,\n    watchQuery,\n    mount,\n    unmount,\n    clear,\n  }\n\n  return client\n}\n"],"names":["createQueryClient","config","_config$queryCache","_config$mutationCache","mountCount","unsubscribeFocus","unsubscribeOnline","defaultOptions","mount","focusManager","subscribe","isFocused","queryCache","onFocus","onlineManager","isOnline","onOnline","unmount","UNDEFINED","createQueryCache","mutationCache","createMutationCache","getQueryCache","getMutationCache","getDefaultOptions","setDefaultOptions","options","fetchQuery","defaultedOptions","defaultQueryOptions","isUndefined","retry","queryInfo","build","client","isStaleByTime","staleTime","fetch","Promise","resolve","state","data","prefetchQuery","then","noop","catch","refetchQueries","filters","_options$cancelRefetc","fetchOptions","cancelRefetch","promises","findAll","filter","isDisabled","map","promise","throwOnError","fetchStatus","all","getQueryState","_queryCache$find","find","getQueryData","_getQueryState","setQueryData","updater","setDataOptions","get","queryHash","prevData","functionalUpdate","setData","getQueriesData","setQueriesData","removeQueries","forEach","remove","resetQueries","refetchFilters","type","reset","invalidateQueries","_ref","_filters$refetchType","q","invalidate","refetchType","cancelQueries","cancelOptions","defaultedCancelOptions","revert","cancel","_defaultOptions","_defaulted","queries","query","refetchOnReconnect","networkMode","suspense","hashKeyByOptions","getFullKey","key","variables","defaultMutationOptions","_defaultOptions2","mutations","mutation","ensureQueryData","cachedData","triggerMutation","trigger","isMutating","status","length","isFetching","clear","watchQuery","isInfiniteQuery","createObservableInfiniteQuery","createObservableQuery"],"mappings":";;;;;;;;;AAqGO,MAAMA,iBAAiB,GAAGA,CAACC,MAAyB,GAAG,EAAE,KAAK;EAAA,IAAAC,kBAAA,EAAAC,qBAAA,CAAA;EACnE,IAAIC,UAAU,GAAG,CAAC,CAAA;AAClB,EAAA,IAAIC,gBAA0C,CAAA;AAC9C,EAAA,IAAIC,iBAA2C,CAAA;AAC/C,EAAA,IAAIC,cAAc,GAAGN,MAAM,CAACM,cAAc,CAAA;EAE1C,MAAMC,KAAK,GAAGA,MAAY;AACxBJ,IAAAA,UAAU,EAAE,CAAA;IACZ,IAAIA,UAAU,KAAK,CAAC,EAAE,OAAA;AAEtBC,IAAAA,gBAAgB,GAAGI,YAAY,CAACC,SAAS,CAAC,MAAM;AAC9C,MAAA,IAAID,YAAY,CAACE,SAAS,EAAE,EAAE;QAC5BC,UAAU,CAACC,OAAO,EAAE,CAAA;AACtB,OAAA;AACF,KAAC,CAAC,CAAA;AACFP,IAAAA,iBAAiB,GAAGQ,aAAa,CAACJ,SAAS,CAAC,MAAM;AAChD,MAAA,IAAII,aAAa,CAACC,QAAQ,EAAE,EAAE;QAC5BH,UAAU,CAACI,QAAQ,EAAE,CAAA;AACvB,OAAA;AACF,KAAC,CAAC,CAAA;GACH,CAAA;EAED,MAAMC,OAAO,GAAGA,MAAY;AAC1Bb,IAAAA,UAAU,EAAE,CAAA;IACZ,IAAIA,UAAU,KAAK,CAAC,EAAE,OAAA;IAEtBC,gBAAgB,IAAA,IAAA,IAAhBA,gBAAgB,EAAI,CAAA;AACpBA,IAAAA,gBAAgB,GAAGa,SAAS,CAAA;IAE5BZ,iBAAiB,IAAA,IAAA,IAAjBA,iBAAiB,EAAI,CAAA;AACrBA,IAAAA,iBAAiB,GAAGY,SAAS,CAAA;GAC9B,CAAA;AAED,EAAA,MAAMN,UAAU,GAAA,CAAAV,kBAAA,GAAGD,MAAM,CAACW,UAAU,KAAA,IAAA,GAAAV,kBAAA,GAAIiB,gBAAgB,EAAE,CAAA;AAE1D,EAAA,MAAMC,aAAa,GAAA,CAAAjB,qBAAA,GAAGF,MAAM,CAACmB,aAAa,KAAA,IAAA,GAAAjB,qBAAA,GAAIkB,mBAAmB,EAAE,CAAA;AAEnE,EAAA,MAAMC,aAAa,GAAGA,MAAMV,UAAU,CAAA;AAEtC,EAAA,MAAMW,gBAAgB,GAAGA,MAAMH,aAAa,CAAA;AAE5C,EAAA,MAAMI,iBAAiB,GAAGA,MAAMjB,cAAc,CAAA;EAE9C,MAAMkB,iBAAiB,GAAIC,OAAuB,IAAW;AAC3DnB,IAAAA,cAAc,GAAGmB,OAAO,CAAA;GACzB,CAAA;EAED,MAAMC,UAAU,GAMdD,OAAmE,IAC3C;AACxB,IAAA,MAAME,gBAAgB,GAAGC,mBAAmB,CAACH,OAAO,CAAC,CAAA;AAErD,IAAA,IAAII,WAAW,CAACF,gBAAgB,CAACG,KAAK,CAAC,EAAE;MACvCH,gBAAgB,CAACG,KAAK,GAAG,KAAK,CAAA;AAChC,KAAA;IAEA,MAAMC,SAAS,GAAGpB,UAAU,CAACqB,KAAK,CAACC,MAAM,EAAEN,gBAAgB,CAAC,CAAA;IAE5D,OAAOI,SAAS,CAACG,aAAa,CAACP,gBAAgB,CAACQ,SAAS,CAAC,GACtDJ,SAAS,CAACK,KAAK,CAACT,gBAAgB,CAAC,GACjCU,OAAO,CAACC,OAAO,CAACP,SAAS,CAACQ,KAAK,CAACC,IAAK,CAAC,CAAA;GAC3C,CAAA;EAED,MAAMC,aAAa,GAMjBhB,OAAmE,IAChE;AACH,IAAA,OAAOC,UAAU,CAACD,OAAO,CAAC,CAACiB,IAAI,CAACC,IAAI,CAAC,CAACC,KAAK,CAACD,IAAI,CAAC,CAAA;GAClD,CAAA;AAED,EAAA,MAAME,cAAc,GAAGA,CAMrBC,OAAmE,EACnErB,OAAwB,KACN;AAAA,IAAA,IAAAsB,qBAAA,CAAA;AAClB,IAAA,MAAMC,YAAY,GAAG;AACnB,MAAA,GAAGvB,OAAO;MACVwB,aAAa,EAAA,CAAAF,qBAAA,GAAEtB,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEwB,aAAa,KAAAF,IAAAA,GAAAA,qBAAA,GAAI,IAAA;KAC1C,CAAA;IACD,MAAMG,QAAQ,GAAGvC,UAAU,CACxBwC,OAAO,CAACL,OAAO,CAAC,CAChBM,MAAM,CAACrB,SAAS,IAAI,CAACA,SAAS,CAACsB,UAAU,EAAE,CAAC,CAC5CC,GAAG,CAACvB,SAAS,IAAI;MAChB,IAAIwB,OAAO,GAAGxB,SAAS,CAACK,KAAK,CAACnB,SAAS,EAAE+B,YAAY,CAAC,CAAA;AACtD,MAAA,IAAI,CAACA,YAAY,CAACQ,YAAY,EAAE;AAC9BD,QAAAA,OAAO,GAAGA,OAAO,CAACX,KAAK,CAACD,IAAI,CAAwB,CAAA;AACtD,OAAA;AACA,MAAA,OAAOZ,SAAS,CAACQ,KAAK,CAACkB,WAAW,KAAK,QAAQ,GAC3CpB,OAAO,CAACC,OAAO,EAAE,GACjBiB,OAAO,CAAA;AACb,KAAC,CAAC,CAAA;IAEJ,OAAOlB,OAAO,CAACqB,GAAG,CAACR,QAAQ,CAAC,CAACR,IAAI,CAACC,IAAI,CAAC,CAAA;GACxC,CAAA;EAED,MAAMgB,aAAa,GAMjBb,OAE6B,IACsB;AAAA,IAAA,IAAAc,gBAAA,CAAA;IACnD,OAAAA,CAAAA,gBAAA,GAAOjD,UAAU,CAACkD,IAAI,CACpBf,OAIF,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GALMc,gBAAA,CAKJrB,KAAK,CAAA;GACT,CAAA;EAED,MAAMuB,YAAY,GAMhBhB,OAE6B,IACF;AAAA,IAAA,IAAAiB,cAAA,CAAA;IAC3B,OAAAA,CAAAA,cAAA,GAAOJ,aAAa,CAACb,OAAO,CAAC,KAAA,IAAA,GAAA,KAAA,CAAA,GAAtBiB,cAAA,CAAwBvB,IAAI,CAAA;GACpC,CAAA;EAED,MAAMwB,YAAY,GAAGA,CAMnBlB,OAE6B,EAC7BmB,OAAgE,EAChEC,cAA+B,KAC5B;AACH,IAAA,MAAMvC,gBAAgB,GAAGC,mBAAmB,CAACkB,OAAO,CAAC,CAAA;IACrD,MAAMf,SAAS,GAAGpB,UAAU,CAACwD,GAAG,CAC9BxC,gBAAgB,CAACyC,SACnB,CAAC,CAAA;IACD,MAAMC,QAAQ,GAAGtC,SAAS,IAAA,IAAA,GAAA,KAAA,CAAA,GAATA,SAAS,CAAEQ,KAAK,CAACC,IAAI,CAAA;AACtC,IAAA,MAAMA,IAAI,GAAG8B,gBAAgB,CAACL,OAAO,EAAEI,QAAQ,CAAC,CAAA;IAEhD,OAAOxC,WAAW,CAACW,IAAI,CAAC,GACpBvB,SAAS,GACTN,UAAU,CAACqB,KAAK,CAACC,MAAM,EAAEN,gBAAgB,CAAC,CAAC4C,OAAO,CAAC/B,IAAI,EAAE0B,cAAc,CAAC,CAAA;GAC7E,CAAA;EAED,MAAMM,cAAc,GAMlB1B,OAAmE,IAI9D;IACL,OAAOnC,UAAU,CACdwC,OAAO,CAACL,OAAO,CAAC,CAChBQ,GAAG,CAACvB,SAAS,IAAI,CAACA,SAAS,EAAEA,SAAS,CAACQ,KAAK,CAACC,IAAI,CAAC,CAAC,CAAA;GACvD,CAAA;EAED,MAAMiC,cAAc,GAAGA,CAMrB3B,OAAkE,EAClEmB,OAAgE,EAChExC,OAAwB,KACrB;IACH,OAAOd,UAAU,CACdwC,OAAO,CAACL,OAAO,CAAC,CAChBQ,GAAG,CAACvB,SAAS,IAAI,CAChBA,SAAS,EACTiC,YAAY,CAACjC,SAAS,EAASkC,OAAO,EAAExC,OAAO,CAAC,CACjD,CAAC,CAAA;GACL,CAAA;EAED,MAAMiD,aAAa,GAMjB5B,OAAmE,IAChE;AACHnC,IAAAA,UAAU,CACPwC,OAAO,CAACL,OAAO,CAAC,CAChB6B,OAAO,CAAC5C,SAAS,IAAIpB,UAAU,CAACiE,MAAM,CAAC7C,SAAS,CAAC,CAAC,CAAA;GACtD,CAAA;AAED,EAAA,MAAM8C,YAAY,GAAGA,CAMnB/B,OAAmE,EACnErB,OAAsB,KACJ;AAClB,IAAA,MAAMqD,cAKL,GAAG;AACFC,MAAAA,IAAI,EAAE,QAAQ;MACd,GAAGjC,OAAAA;KACJ,CAAA;AAEDnC,IAAAA,UAAU,CAACwC,OAAO,CAACL,OAAO,CAAC,CAAC6B,OAAO,CAAC5C,SAAS,IAAIA,SAAS,CAACiD,KAAK,EAAE,CAAC,CAAA;AACnE,IAAA,OAAOnC,cAAc,CAACiC,cAAc,EAAErD,OAAO,CAAC,CAAA;GAC/C,CAAA;AAED,EAAA,MAAMwD,iBAAiB,GAAGA,CAMxBnC,OAKC,GAAG,EAAE,EACNrB,OAA0B,GAAG,EAAE,KACb;IAAA,IAAAyD,IAAA,EAAAC,oBAAA,CAAA;AAClBxE,IAAAA,UAAU,CAACwC,OAAO,CAACL,OAAO,CAAC,CAAC6B,OAAO,CAACS,CAAC,IAAIA,CAAC,CAACC,UAAU,EAAE,CAAC,CAAA;AAExD,IAAA,IAAIvC,OAAO,CAACwC,WAAW,KAAK,MAAM,EAAE;AAClC,MAAA,OAAOjD,OAAO,CAACC,OAAO,EAAE,CAAA;AAC1B,KAAA;AACA,IAAA,MAAMwC,cAKL,GAAG;AACF,MAAA,GAAGhC,OAAO;AACViC,MAAAA,IAAI,GAAAG,IAAA,GAAA,CAAAC,oBAAA,GAAErC,OAAO,CAACwC,WAAW,KAAAH,IAAAA,GAAAA,oBAAA,GAAIrC,OAAO,CAACiC,IAAI,KAAA,IAAA,GAAAG,IAAA,GAAI,QAAA;KAC9C,CAAA;AACD,IAAA,OAAOrC,cAAc,CAACiC,cAAc,EAAErD,OAAO,CAAC,CAAA;GAC/C,CAAA;EAED,MAAM8D,aAAa,GAAGA,CAMpBzC,OAAmE,EACnE0C,aAA4B,GAAG,EAAE,KACf;AAClB,IAAA,MAAMC,sBAAsB,GAAG;AAAEC,MAAAA,MAAM,EAAE,IAAI;MAAE,GAAGF,aAAAA;KAAe,CAAA;AAEjE,IAAA,MAAMtC,QAAQ,GAAGvC,UAAU,CACxBwC,OAAO,CAACL,OAAO,CAAC,CAChBQ,GAAG,CAACvB,SAAS,IAAIA,SAAS,CAAC4D,MAAM,CAACF,sBAAsB,CAAC,CAAC,CAAA;AAE7D,IAAA,OAAOpD,OAAO,CAACqB,GAAG,CAACR,QAAQ,CAAC,CAACR,IAAI,CAACC,IAAI,CAAC,CAACC,KAAK,CAACD,IAAI,CAAC,CAAA;GACpD,CAAA;EAED,MAAMf,mBAAmB,GAOvBH,OAMC,IAC0E;AAAA,IAAA,IAAAmE,eAAA,CAAA;AAC3E,IAAA,IAAInE,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEoE,UAAU,EAAE;AACvB,MAAA,OAAOpE,OAAO,CAAA;AAOhB,KAAA;AAEA,IAAA,MAAME,gBAAgB,GAAG;AACvB,MAAA,IAAA,CAAAiE,eAAA,GAAGtF,cAAc,KAAdsF,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,eAAA,CAAgBE,OAAO,CAAA;AAC1B,MAAA,IAAGrE,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEsE,KAAK,CAAA;AACjB,MAAA,GAAGtE,OAAO;AACVoE,MAAAA,UAAU,EAAE,IAAA;KAC6D,CAAA;;AAE3E;AACA,IAAA,IAAIhE,WAAW,CAACF,gBAAgB,CAACqE,kBAAkB,CAAC,EAAE;AACpDrE,MAAAA,gBAAgB,CAACqE,kBAAkB,GACjCrE,gBAAgB,CAACsE,WAAW,KAAK,QAAQ,CAAA;AAC7C,KAAA;AACA,IAAA,IAAIpE,WAAW,CAACF,gBAAgB,CAAC6B,YAAY,CAAC,EAAE;AAC9C7B,MAAAA,gBAAgB,CAAC6B,YAAY,GAAG,CAAC,CAAC7B,gBAAgB,CAACuE,QAAQ,CAAA;AAC7D,KAAA;IAEA,IAAIvE,gBAAgB,CAACoE,KAAK,IAAI,CAACpE,gBAAgB,CAACyC,SAAS,EAAE;AACzDzC,MAAAA,gBAAgB,CAACyC,SAAS,GAAG+B,gBAAgB,CAC3CC,UAAU,CAACzE,gBAAgB,CAACoE,KAAK,CAACM,GAAG,EAAE1E,gBAAgB,CAAC2E,SAAS,CAAC,EAClE3E,gBACF,CAAC,CAAA;AACH,KAAA;AAEA,IAAA,OAAOA,gBAAgB,CAAA;GACxB,CAAA;EAED,MAAM4E,sBAAsB,GAC1B9E,OAAW,IACL;AAAA,IAAA,IAAA+E,gBAAA,CAAA;AACN,IAAA,IAAI/E,OAAO,IAAA,IAAA,IAAPA,OAAO,CAAEoE,UAAU,EAAE;AACvB,MAAA,OAAOpE,OAAO,CAAA;AAChB,KAAA;IAEA,OAAO;AACL,MAAA,IAAA,CAAA+E,gBAAA,GAAGlG,cAAc,KAAdkG,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAAgBC,SAAS,CAAA;AAC5B,MAAA,IAAGhF,OAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAPA,OAAO,CAAEiF,QAAQ,CAAA;AACpB,MAAA,GAAGjF,OAAO;AACVoE,MAAAA,UAAU,EAAE,IAAA;KACb,CAAA;GACF,CAAA;EAED,MAAMc,eAAe,GAMnBlF,OAAmE,IAC3C;AACxB,IAAA,MAAMmF,UAAU,GAAG9C,YAAY,CAACrC,OAAO,CAAC,CAAA;AACxC,IAAA,OAAOmF,UAAU,GAAGvE,OAAO,CAACC,OAAO,CAACsE,UAAU,CAAC,GAAGlF,UAAU,CAACD,OAAO,CAAC,CAAA;GACtE,CAAA;EAED,MAAMoF,eAAe,GACnBpF,OAAqD,IAClD;AACH,IAAA,OAAON,aAAa,CAACa,KAAK,CAACC,MAAM,EAAER,OAAO,CAAC,CAACqF,OAAO,CAACrF,OAAO,CAAC6E,SAAU,CAAC,CAAA;GACxE,CAAA;EAED,MAAMS,UAAU,GACdjE,OAAmD,IACxC;IACX,OAAO3B,aAAa,CAACgC,OAAO,CAAC;AAAE,MAAA,GAAGL,OAAO;AAAEkE,MAAAA,MAAM,EAAE,UAAA;KAAY,CAAC,CAACC,MAAM,CAAA;GACxE,CAAA;EAED,MAAMC,UAAU,GAAIpE,OAA0B,IAAa;IACzD,OAAOnC,UAAU,CAACwC,OAAO,CAAC;AAAE,MAAA,GAAGL,OAAO;AAAEW,MAAAA,WAAW,EAAE,UAAA;KAAY,CAAC,CAACwD,MAAM,CAAA;GAC1E,CAAA;EAED,MAAME,KAAK,GAAGA,MAAY;IACxBxG,UAAU,CAACwG,KAAK,EAAE,CAAA;IAClBhG,aAAa,CAACgG,KAAK,EAAE,CAAA;GACtB,CAAA;EAyBD,SAASC,UAAUA,CAAC3F,OAAY,EAAO;AACrC,IAAA,OAAO4F,eAAe,CAAC5F,OAAO,CAACsE,KAAK,CAAC,GACjCuB,6BAA6B,CAACrF,MAAM,EAAER,OAAO,CAAC,GAC9C8F,qBAAqB,CAACtF,MAAM,EAAER,OAAO,CAAC,CAAA;AAC5C,GAAA;AAEA,EAAA,MAAMQ,MAAM,GAAG;IACbX,gBAAgB;IAChBM,mBAAmB;IACnB2E,sBAAsB;IACtBhF,iBAAiB;IACjBC,iBAAiB;IACjBH,aAAa;IACbK,UAAU;IACVe,aAAa;IACbI,cAAc;IACdoC,iBAAiB;IACjBJ,YAAY;IACZU,aAAa;IACbvB,YAAY;IACZS,cAAc;IACdC,aAAa;IACbf,aAAa;IACbG,YAAY;IACZU,cAAc;IACdmC,eAAe;IACfE,eAAe;IACfE,UAAU;IACVG,UAAU;IACVE,UAAU;IACV7G,KAAK;IACLS,OAAO;AACPmG,IAAAA,KAAAA;GACD,CAAA;AAED,EAAA,OAAOlF,MAAM,CAAA;AACf;;;;"}