{"version":3,"file":"index.mjs","sources":["../src/utils/plugin-id.js","../src/constants.js","../src/utils/interpolate.js","../src/utils/trim-slashes.js","../src/utils/parse-url.js","../src/utils/get-publish-state-config.js","../src/utils/get-trad.js","../src/utils/plugin-name.js","../src/utils/prefixPluginTranslations.js","../src/utils/stopPropagation.js","../src/components/CopyLinkButton/index.jsx","../src/hooks/use-plugin-config.js","../src/hooks/use-preview-button.js","../src/components/PreviewButton/index.jsx","../src/components/PreviewButtonGroup/index.jsx","../src/components/EditViewRightLinks/index.jsx","../src/components/ListViewColumn/index.jsx","../src/contentManagerHooks/add-preview-column.jsx","../src/reducers/config.js","../src/reducers/index.js","../src/index.js"],"sourcesContent":["import pluginPkg from '../../../package.json';\n\nexport default pluginPkg.strapi.name;\n","import pluginId from './utils/plugin-id';\n\nexport const ACTION_RESOLVE_PREVIEW = `${pluginId}/resolve-data`;\nexport const ACTION_RESOLVE_CONFIG = `${pluginId}/resolve-config`;\n\nexport const HOOK_BEFORE_BUILD_URL = `plugin/${pluginId}/before-build-url`;\n\nexport const PREVIEW_WINDOW_NAME = 'StrapiPreview';\n","const interpolate = (originalStr, data = {}) => {\n  let str = originalStr;\n\n  Object.entries(data).forEach(([key, value]) => {\n    // eslint-disable-next-line prefer-regex-literals\n    str = str.replace(new RegExp(`{${key}}`, 'g'), value);\n  });\n\n  // Replace any remaining values with an empty string.\n  // eslint-disable-next-line prefer-regex-literals\n  str = str.replace(new RegExp(`{(.*)}`, 'g'), '').trim();\n\n  return str;\n};\n\nexport default interpolate;\n","const trimSlashes = (str) => str.replace(/^\\/|\\/$/g, '').trim();\n\nexport default trimSlashes;\n","import qs from 'qs';\n\nimport interpolate from './interpolate';\nimport trimSlashes from './trim-slashes';\n\nconst parseUrl = (config, data) => {\n  if (!config || !data) {\n    return null;\n  }\n\n  const supportedTypes = ['number', 'string'];\n  const replacements = Object.entries(data).reduce((acc, [key, val]) => {\n    if (!supportedTypes.includes(typeof val)) {\n      return acc;\n    }\n\n    return {\n      ...acc,\n      [key]: val,\n    };\n  }, {});\n  const params = Object.entries(config?.query ?? {}).reduce((acc, [key, val]) => {\n    return {\n      ...acc,\n      [key]: encodeURIComponent(interpolate(val, replacements)),\n    };\n  }, {});\n\n  const url = encodeURI(interpolate(trimSlashes(config.url), replacements));\n  const query = qs.stringify(params, {\n    addQueryPrefix: true,\n\n    /**\n     * @NOTE - Disabling the `encoding` option here because we are already\n     * handling it in `replacements` and for some reason, tests are failing\n     * because qs mistakenly double-encodes params, but only during tests.\n     */\n    encode: false,\n  });\n\n  return `${url}${query}`;\n};\n\nexport default parseUrl;\n","import { PREVIEW_WINDOW_NAME } from '../constants';\nimport parseUrl from './parse-url';\n\nexport const defaultRequiredConfig = {\n  copy: true,\n  openTarget: PREVIEW_WINDOW_NAME,\n};\n\nconst getPublishStateConfig = (config, data) => {\n  const url = parseUrl(config, data);\n\n  if (!url) {\n    return null;\n  }\n\n  return {\n    ...defaultRequiredConfig,\n    ...config,\n    url,\n  };\n};\n\nexport default getPublishStateConfig;\n","import pluginId from './plugin-id';\n\nconst getTrad = (id) => `${pluginId}.${id}`;\n\nexport default getTrad;\n","import pluginPkg from '../../../package.json';\n\nexport default pluginPkg.strapi.displayName;\n","const prefixPluginTranslations = (trad, pluginId) => {\n  if (!pluginId) {\n    throw new TypeError(\"pluginId can't be empty\");\n  }\n\n  return Object.keys(trad).reduce((acc, current) => {\n    acc[`${pluginId}.${current}`] = trad[current];\n\n    return acc;\n  }, {});\n};\n\nexport default prefixPluginTranslations;\n","/**\n * @deprecated Use the onClick prop on the element you want to stop propagation on instead\n */\nconst stopPropagation = {\n  onClick: (e) => e.stopPropagation(),\n  role: 'button',\n  'aria-hidden': true,\n};\n\nexport default stopPropagation;\n","import { Button } from '@strapi/design-system';\r\nimport { Link as LinkIcon } from '@strapi/icons';\r\nimport { useNotification } from '@strapi/strapi/admin';\r\nimport PropTypes from 'prop-types';\r\nimport React, { memo, useCallback } from 'react';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport { useIntl } from 'react-intl';\r\n\r\nimport { getTrad } from '../../utils';\r\n\r\nconst CopyLinkButton = ({ isDraft, url }) => {\r\n  const { formatMessage } = useIntl();\r\n  const { toggleNotification } = useNotification();\r\n\r\n  const handleOnCopy = useCallback(() => {\r\n    toggleNotification({\r\n      type: 'success',\r\n      message: formatMessage({\r\n        id: 'notification.success.link-copied',\r\n        defaultMessage: 'Link copied to the clipboard',\r\n      }),\r\n    });\r\n  }, [toggleNotification, formatMessage]);\r\n\r\n  return (\r\n    <CopyToClipboard text={url} onCopy={handleOnCopy}>\r\n      <Button size=\"S\" startIcon={<LinkIcon />} variant=\"secondary\" style={{ width: '100%' }}>\r\n        {formatMessage(\r\n          isDraft\r\n            ? {\r\n                id: getTrad('form.button.copy-link.draft'),\r\n                defaultMessage: 'Copy preview link',\r\n              }\r\n            : {\r\n                id: getTrad('form.button.copy-link'),\r\n                defaultMessage: 'Copy link',\r\n              }\r\n        )}\r\n      </Button>\r\n    </CopyToClipboard>\r\n  );\r\n};\r\n\r\nCopyLinkButton.propTypes = {\r\n  isDraft: PropTypes.bool.isRequired,\r\n  url: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default memo(CopyLinkButton);\r\n","import { useEffect } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { useAPIErrorHandler, useFetchClient, useNotification } from '@strapi/strapi/admin';\n\nimport { ACTION_RESOLVE_CONFIG } from '../constants';\nimport { pluginId } from '../utils';\n\nconst usePluginConfig = () => {\n  const { formatAPIError } = useAPIErrorHandler();\n  const dispatch = useDispatch();\n  const fetchClient = useFetchClient();\n  const { toggleNotification } = useNotification();\n  const { config, isLoading } = useSelector((state) => state[`${pluginId}_config`]);\n\n  useEffect(() => {\n    // Do nothing if we have already loaded the data.\n    if (!isLoading && !!config) {\n      return;\n    }\n\n    fetchClient\n      .get(`/${pluginId}/config`)\n      .then(({ data }) => {\n        dispatch({\n          type: ACTION_RESOLVE_CONFIG,\n          data,\n        });\n      })\n      .catch((err) => {\n        if ('code' in err && err?.code === 'ERR_CANCELED') {\n          return;\n        }\n\n        toggleNotification({\n          type: 'warning',\n          message: formatAPIError(err),\n        });\n      });\n  }, [isLoading, config, dispatch, fetchClient, toggleNotification, formatAPIError]);\n\n  return {\n    data: config,\n    isLoading,\n  };\n};\n\nexport default usePluginConfig;\n","import { useStrapiApp } from '@strapi/admin/strapi-admin';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { HOOK_BEFORE_BUILD_URL } from '../constants';\nimport { getPublishStateConfig } from '../utils';\nimport usePluginConfig from './use-plugin-config';\n\nconst usePreviewButton = (uid, data) => {\n  const runHookWaterfall = useStrapiApp('PreviewButton', (value) => value.runHookWaterfall);\n  const { data: config, isLoading } = usePluginConfig();\n  const [draft, setDraft] = useState(null);\n  const [published, setPublished] = useState(null);\n\n  const uidConfig = config?.contentTypes?.find((type) => type.uid === uid);\n  const isSupported = !!uidConfig;\n\n  const compileWithHooks = useCallback(async () => {\n    // Run async hook then set state.\n    const result = await runHookWaterfall(\n      HOOK_BEFORE_BUILD_URL,\n      {\n        data,\n        draft: uidConfig?.draft,\n        published: uidConfig?.published,\n      },\n      true\n    );\n\n    const draftConfig = getPublishStateConfig(result?.draft, data);\n    const publishedConfig = getPublishStateConfig(result?.published, data);\n\n    setDraft(draftConfig);\n    setPublished(publishedConfig);\n  }, [data, uidConfig, setDraft, setPublished, runHookWaterfall]);\n\n  useEffect(() => {\n    if (!isSupported || isLoading) {\n      return;\n    }\n\n    compileWithHooks();\n  }, [isSupported, isLoading, compileWithHooks]);\n\n  return {\n    isLoading,\n    isSupported,\n    draft,\n    published,\n  };\n};\n\nexport default usePreviewButton;\n","import { LinkButton } from '@strapi/design-system';\r\nimport { ExternalLink } from '@strapi/icons';\r\nimport PropTypes from 'prop-types';\r\nimport React, { memo, useCallback } from 'react';\r\nimport { useIntl } from 'react-intl';\r\n\r\nimport { getTrad } from '../../utils';\r\n\r\nconst PreviewButton = ({ isDraft, target, url }) => {\r\n  const { formatMessage } = useIntl();\r\n\r\n  const handleClick = useCallback(\r\n    (event) => {\r\n      event.preventDefault();\r\n      if (!url) return;\r\n\r\n      window.open(url, target);\r\n    },\r\n    [url, target]\r\n  );\r\n\r\n  return (\r\n    <LinkButton\r\n      href={url}\r\n      onClick={handleClick}\r\n      size=\"S\"\r\n      startIcon={<ExternalLink />}\r\n      variant=\"secondary\"\r\n      style={{ width: '100%' }}\r\n      disabled={!url}\r\n    >\r\n      {formatMessage(\r\n        isDraft\r\n          ? {\r\n              id: getTrad('form.button.draft'),\r\n              defaultMessage: 'Open draft preview',\r\n            }\r\n          : {\r\n              id: getTrad('form.button.published'),\r\n              defaultMessage: 'Open live view',\r\n            }\r\n      )}\r\n    </LinkButton>\r\n  );\r\n};\r\n\r\nPreviewButton.propTypes = {\r\n  isDraft: PropTypes.bool.isRequired,\r\n  target: PropTypes.string.isRequired,\r\n  url: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default memo(PreviewButton);\r\n","import React, { memo } from 'react';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport CopyLinkButton from '../CopyLinkButton';\r\nimport PreviewButton from '../PreviewButton';\r\n\r\nconst PreviewButtonGroup = ({ data, isDraft }) => {\r\n  const { url, copy, openTarget } = data;\r\n\r\n  // In order to disable the copy feature, `copy` must be explicitly defined as `false`.\r\n  const copyAllowed = copy !== false;\r\n\r\n  return (\r\n    <>\r\n      <PreviewButton isDraft={isDraft} url={url} target={openTarget} />\r\n      {copyAllowed && <CopyLinkButton isDraft={isDraft} url={url} />}\r\n    </>\r\n  );\r\n};\r\n\r\nPreviewButtonGroup.propTypes = {\r\n  data: PropTypes.shape({\r\n    copy: PropTypes.bool,\r\n    openTarget: PropTypes.string,\r\n    url: PropTypes.string,\r\n  }).isRequired,\r\n  isDraft: PropTypes.bool.isRequired,\r\n};\r\n\r\nexport default memo(PreviewButtonGroup);\r\n","import { unstable_useDocument } from '@strapi/content-manager/strapi-admin';\r\nimport React from 'react';\r\nimport { useParams } from 'react-router-dom';\r\n\r\nimport { usePreviewButton } from '../../hooks';\r\nimport PreviewButtonGroup from '../PreviewButtonGroup';\r\n\r\nconst EditViewRightLinks = () => {\r\n  // We need to get the document id, model, and collectionType in order to\r\n  // use the useDocument hook.\r\n  // Note: `documentId` is undefined when the document is being created and has\r\n  // not been saved yet.\r\n  const { id: documentId, slug: model, collectionType } = useParams();\r\n\r\n  // Get the document data (as `document`, which is undefined at first)\r\n  // and the uid so the preview button has the data it needs.\r\n  const { document, schema } = unstable_useDocument({ documentId, model, collectionType });\r\n  const uid = schema?.uid;\r\n\r\n  const draftExists = document?.status === 'draft' || document?.status === 'modified';\r\n  const publishedExists = document?.status === 'published' || document?.status === 'modified';\r\n\r\n  const { isLoading, isSupported, draft, published } = usePreviewButton(uid, document);\r\n\r\n  if (!document || !uid || !isSupported || isLoading) {\r\n    return null;\r\n  }\r\n\r\n  const showPublished = !!published && publishedExists;\r\n  const showDraft = !!draft && (draftExists || draft?.alwaysVisible);\r\n\r\n  return (\r\n    <>\r\n      {showPublished && <PreviewButtonGroup data={published} isDraft={false} />}\r\n      {showDraft && <PreviewButtonGroup data={draft} isDraft />}\r\n    </>\r\n  );\r\n};\r\n\r\nexport default EditViewRightLinks;\r\n","import { Flex, IconButton, Loader } from '@strapi/design-system';\r\nimport { ExternalLink, Link as LinkIcon } from '@strapi/icons';\r\nimport { useNotification } from '@strapi/strapi/admin';\r\nimport get from 'lodash/get';\r\nimport PropTypes from 'prop-types';\r\nimport React, { useCallback, useMemo } from 'react';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nimport { useIntl } from 'react-intl';\r\n\r\nimport { PREVIEW_WINDOW_NAME } from '../../constants';\r\nimport { usePreviewButton } from '../../hooks';\r\nimport { getTrad, stopPropagation } from '../../utils';\r\n\r\nconst ListViewColumn = ({ data, layout }) => {\r\n  const { formatMessage } = useIntl();\r\n  const { toggleNotification } = useNotification();\r\n\r\n  const hasDraftAndPublish = layout.contentType.options.draftAndPublish === true;\r\n  const isDraft = hasDraftAndPublish && !data?.publishedAt;\r\n\r\n  const { isLoading, draft, published } = usePreviewButton(layout, data, isDraft, false);\r\n\r\n  const config = useMemo(() => {\r\n    if (isDraft) {\r\n      return draft;\r\n    }\r\n\r\n    return published;\r\n  }, [isDraft, draft, published]);\r\n\r\n  const url = get(config, 'url');\r\n  const copy = get(config, 'copy');\r\n  const openTarget = get(config, 'openTarget', PREVIEW_WINDOW_NAME);\r\n\r\n  const handleClick = useCallback(\r\n    (event) => {\r\n      if (!url) {\r\n        event.preventDefault();\r\n\r\n        return;\r\n      }\r\n\r\n      window.open(url, openTarget);\r\n    },\r\n    [url, openTarget]\r\n  );\r\n\r\n  const handleOnCopy = useCallback(() => {\r\n    toggleNotification({\r\n      type: 'success',\r\n      message: formatMessage({\r\n        id: 'notification.success.link-copied',\r\n        defaultMessage: 'Link copied to the clipboard',\r\n      }),\r\n    });\r\n  }, [toggleNotification, formatMessage]);\r\n\r\n  if (isLoading) {\r\n    return (\r\n      <Flex {...stopPropagation}>\r\n        <Loader small />\r\n      </Flex>\r\n    );\r\n  }\r\n\r\n  return (\r\n    <Flex {...stopPropagation}>\r\n      <IconButton\r\n        onClick={handleClick}\r\n        label={formatMessage(\r\n          isDraft\r\n            ? {\r\n                id: getTrad('form.button.draft'),\r\n                defaultMessage: 'Open draft preview',\r\n              }\r\n            : {\r\n                id: getTrad('form.button.published'),\r\n                defaultMessage: 'Open live view',\r\n              }\r\n        )}\r\n        icon={<ExternalLink />}\r\n        noBorder\r\n      />\r\n      {copy && (\r\n        <CopyToClipboard text={url} onCopy={handleOnCopy}>\r\n          <IconButton\r\n            icon={<LinkIcon />}\r\n            label={formatMessage(\r\n              isDraft\r\n                ? {\r\n                    id: getTrad('form.button.copy-link.draft'),\r\n                    defaultMessage: 'Copy preview link',\r\n                  }\r\n                : {\r\n                    id: getTrad('form.button.copy-link'),\r\n                    defaultMessage: 'Copy link',\r\n                  }\r\n            )}\r\n            noBorder\r\n          />\r\n        </CopyToClipboard>\r\n      )}\r\n    </Flex>\r\n  );\r\n};\r\n\r\nListViewColumn.propTypes = {\r\n  data: PropTypes.object.isRequired,\r\n  layout: PropTypes.shape({\r\n    contentType: PropTypes.shape({\r\n      uid: PropTypes.string.isRequired,\r\n      options: PropTypes.shape({\r\n        draftAndPublish: PropTypes.bool,\r\n      }),\r\n      pluginOptions: PropTypes.shape({\r\n        'preview-button': PropTypes.shape({\r\n          listViewColumn: PropTypes.bool,\r\n        }),\r\n      }),\r\n    }).isRequired,\r\n  }).isRequired,\r\n};\r\n\r\nexport default ListViewColumn;\r\n","import get from 'lodash/get';\r\nimport React from 'react';\r\n\r\nimport { ListViewColumn } from '../components';\r\nimport { pluginId } from '../utils';\r\n\r\nconst addPreviewColumn = ({ displayedHeaders, layout }) => {\r\n  const supportKeys = ['contentType', 'pluginOptions', pluginId, 'listViewColumn'];\r\n  const isSupported = get(layout, supportKeys, false) === true;\r\n\r\n  // Do nothing if the preview button column is not supported or disabled for this UID.\r\n  if (!isSupported) {\r\n    return {\r\n      displayedHeaders,\r\n      layout,\r\n    };\r\n  }\r\n\r\n  return {\r\n    displayedHeaders: [\r\n      ...displayedHeaders,\r\n      {\r\n        key: '__preview_key__',\r\n        fieldSchema: {\r\n          type: 'string',\r\n        },\r\n        metadatas: {\r\n          label: 'Preview',\r\n          searchable: false,\r\n          sortable: false,\r\n        },\r\n        name: 'preview',\r\n        cellFormatter: (data) => <ListViewColumn data={data} layout={layout} />,\r\n      },\r\n    ],\r\n    layout,\r\n  };\r\n};\r\n\r\nexport default addPreviewColumn;\r\n","import produce from 'immer';\n\nimport { ACTION_RESOLVE_CONFIG } from '../constants';\n\nconst initialState = {\n  isLoading: true,\n  config: {\n    contentTypes: [],\n  },\n};\n\nconst configReducer = produce((previousState, action) => {\n  let state = previousState ?? initialState;\n\n  switch (action.type) {\n    case ACTION_RESOLVE_CONFIG:\n      state.isLoading = false;\n      state.config = action.data.config;\n      break;\n\n    default:\n      return state;\n  }\n\n  return state;\n});\n\nexport default configReducer;\n","import { pluginId } from '../utils';\nimport config from './config';\n\nconst reducers = {\n  [`${pluginId}_config`]: config,\n};\n\nexport default reducers;\n","import { EditViewRightLinks } from './components';\nimport { HOOK_BEFORE_BUILD_URL } from './constants';\nimport { addPreviewColumn } from './contentManagerHooks';\nimport reducers from './reducers';\nimport { pluginId, pluginName, prefixPluginTranslations } from './utils';\n\nexport default {\n  register(app) {\n    app.addReducers(reducers);\n\n    app.createHook(HOOK_BEFORE_BUILD_URL);\n\n    app.registerPlugin({\n      id: pluginId,\n      name: pluginName,\n    });\n  },\n\n  bootstrap(app) {\n    app.getPlugin('content-manager').injectComponent('editView', 'right-links', {\n      name: pluginId,\n      Component: EditViewRightLinks,\n    });\n\n    app.registerHook('Admin/CM/pages/ListView/inject-column-in-table', addPreviewColumn);\n  },\n\n  async registerTrads({ locales }) {\n    const importedTrads = await Promise.all(\n      locales.map((locale) => {\n        return import(`./translations/${locale}.json`)\n          .then(({ default: data }) => {\n            return {\n              data: prefixPluginTranslations(data, pluginId),\n              locale,\n            };\n          })\n          .catch(() => {\n            return {\n              data: {},\n              locale,\n            };\n          });\n      })\n    );\n\n    return Promise.resolve(importedTrads);\n  },\n};\n"],"names":["pluginPkg","strapi","name","ACTION_RESOLVE_CONFIG","pluginId","HOOK_BEFORE_BUILD_URL","PREVIEW_WINDOW_NAME","interpolate","originalStr","data","str","Object","entries","forEach","key","value","replace","RegExp","trim","trimSlashes","parseUrl","config","supportedTypes","replacements","reduce","acc","val","includes","params","query","encodeURIComponent","url","encodeURI","qs","stringify","addQueryPrefix","encode","defaultRequiredConfig","copy","openTarget","getPublishStateConfig","getTrad","id","displayName","prefixPluginTranslations","trad","keys","current","stopPropagation","onClick","e","role","CopyLinkButton","isDraft","formatMessage","useIntl","toggleNotification","useNotification","handleOnCopy","useCallback","type","message","defaultMessage","React","createElement","CopyToClipboard","text","onCopy","Button","size","startIcon","LinkIcon","variant","style","width","propTypes","PropTypes","bool","isRequired","string","memo","usePluginConfig","formatAPIError","useAPIErrorHandler","dispatch","useDispatch","fetchClient","useFetchClient","isLoading","useSelector","state","useEffect","get","then","catch","err","code","usePreviewButton","uid","runHookWaterfall","useStrapiApp","draft","setDraft","useState","published","setPublished","uidConfig","contentTypes","find","isSupported","compileWithHooks","result","draftConfig","publishedConfig","PreviewButton","target","handleClick","event","preventDefault","window","open","LinkButton","href","ExternalLink","disabled","PreviewButtonGroup","copyAllowed","Fragment","shape","EditViewRightLinks","documentId","slug","model","collectionType","useParams","document","schema","unstable_useDocument","draftExists","status","publishedExists","showPublished","showDraft","alwaysVisible","ListViewColumn","layout","hasDraftAndPublish","contentType","options","draftAndPublish","publishedAt","useMemo","Flex","Loader","small","IconButton","label","icon","noBorder","object","pluginOptions","listViewColumn","addPreviewColumn","displayedHeaders","supportKeys","fieldSchema","metadatas","searchable","sortable","cellFormatter","initialState","configReducer","produce","previousState","action","reducers","register","app","addReducers","createHook","registerPlugin","pluginName","bootstrap","getPlugin","injectComponent","Component","registerHook","registerTrads","locales","importedTrads","Promise","all","map","locale","default","resolve"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,eAAeA,SAAS,CAACC,MAAM,CAACC,IAAI;;ACC7B,MAAMC,qBAAqB,GAAI,CAAA,EAAEC,QAAS,CAAgB,eAAA,CAAA,CAAA;AAE1D,MAAMC,qBAAqB,GAAI,CAAA,OAAA,EAASD,QAAS,CAAkB,iBAAA,CAAA,CAAA;AAEnE,MAAME,mBAAmB,GAAG,eAAe;;ACPlD,MAAMC,WAAW,GAAGA,CAACC,WAAW,EAAEC,IAAI,GAAG,EAAE,KAAK;EAC9C,IAAIC,GAAG,GAAGF,WAAW,CAAA;AAErBG,EAAAA,MAAM,CAACC,OAAO,CAACH,IAAI,CAAC,CAACI,OAAO,CAAC,CAAC,CAACC,GAAG,EAAEC,KAAK,CAAC,KAAK;AAC7C;AACAL,IAAAA,GAAG,GAAGA,GAAG,CAACM,OAAO,CAAC,IAAIC,MAAM,CAAE,CAAGH,CAAAA,EAAAA,GAAI,GAAE,EAAE,GAAG,CAAC,EAAEC,KAAK,CAAC,CAAA;AACvD,GAAC,CAAC,CAAA;;AAEF;AACA;AACAL,EAAAA,GAAG,GAAGA,GAAG,CAACM,OAAO,CAAC,IAAIC,MAAM,CAAE,CAAA,MAAA,CAAO,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAACC,IAAI,EAAE,CAAA;AAEvD,EAAA,OAAOR,GAAG,CAAA;AACZ,CAAC;;ACbD,MAAMS,WAAW,GAAIT,GAAG,IAAKA,GAAG,CAACM,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAACE,IAAI,EAAE;;ACK/D,MAAME,QAAQ,GAAGA,CAACC,MAAM,EAAEZ,IAAI,KAAK;AACjC,EAAA,IAAI,CAACY,MAAM,IAAI,CAACZ,IAAI,EAAE;AACpB,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,MAAMa,cAAc,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;AAC3C,EAAA,MAAMC,YAAY,GAAGZ,MAAM,CAACC,OAAO,CAACH,IAAI,CAAC,CAACe,MAAM,CAAC,CAACC,GAAG,EAAE,CAACX,GAAG,EAAEY,GAAG,CAAC,KAAK;IACpE,IAAI,CAACJ,cAAc,CAACK,QAAQ,CAAC,OAAOD,GAAG,CAAC,EAAE;AACxC,MAAA,OAAOD,GAAG,CAAA;AACZ,KAAA;IAEA,OAAO;AACL,MAAA,GAAGA,GAAG;AACN,MAAA,CAACX,GAAG,GAAGY,GAAAA;KACR,CAAA;GACF,EAAE,EAAE,CAAC,CAAA;EACN,MAAME,MAAM,GAAGjB,MAAM,CAACC,OAAO,CAACS,MAAM,EAAEQ,KAAK,IAAI,EAAE,CAAC,CAACL,MAAM,CAAC,CAACC,GAAG,EAAE,CAACX,GAAG,EAAEY,GAAG,CAAC,KAAK;IAC7E,OAAO;AACL,MAAA,GAAGD,GAAG;MACN,CAACX,GAAG,GAAGgB,kBAAkB,CAACvB,WAAW,CAACmB,GAAG,EAAEH,YAAY,CAAC,CAAA;KACzD,CAAA;GACF,EAAE,EAAE,CAAC,CAAA;AAEN,EAAA,MAAMQ,GAAG,GAAGC,SAAS,CAACzB,WAAW,CAACY,WAAW,CAACE,MAAM,CAACU,GAAG,CAAC,EAAER,YAAY,CAAC,CAAC,CAAA;AACzE,EAAA,MAAMM,KAAK,GAAGI,EAAE,CAACC,SAAS,CAACN,MAAM,EAAE;AACjCO,IAAAA,cAAc,EAAE,IAAI;AAEpB;AACJ;AACA;AACA;AACA;AACIC,IAAAA,MAAM,EAAE,KAAA;AACV,GAAC,CAAC,CAAA;AAEF,EAAA,OAAQ,CAAEL,EAAAA,GAAI,CAAEF,EAAAA,KAAM,CAAC,CAAA,CAAA;AACzB,CAAC;;ACtCM,MAAMQ,qBAAqB,GAAG;AACnCC,EAAAA,IAAI,EAAE,IAAI;AACVC,EAAAA,UAAU,EAAEjC,mBAAAA;AACd,CAAC,CAAA;AAED,MAAMkC,qBAAqB,GAAGA,CAACnB,MAAM,EAAEZ,IAAI,KAAK;AAC9C,EAAA,MAAMsB,GAAG,GAAGX,QAAQ,CAACC,MAAM,EAAEZ,IAAI,CAAC,CAAA;EAElC,IAAI,CAACsB,GAAG,EAAE;AACR,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;EAEA,OAAO;AACL,IAAA,GAAGM,qBAAqB;AACxB,IAAA,GAAGhB,MAAM;AACTU,IAAAA,GAAAA;GACD,CAAA;AACH,CAAC;;AClBD,MAAMU,OAAO,GAAIC,EAAE,IAAM,GAAEtC,QAAS,CAAA,CAAA,EAAGsC,EAAG,CAAC,CAAA;;ACA3C,iBAAe1C,SAAS,CAACC,MAAM,CAAC0C,WAAW;;ACF3C,MAAMC,wBAAwB,GAAGA,CAACC,IAAI,EAAEzC,QAAQ,KAAK;AAKnD,EAAA,OAAOO,MAAM,CAACmC,IAAI,CAACD,IAAI,CAAC,CAACrB,MAAM,CAAC,CAACC,GAAG,EAAEsB,OAAO,KAAK;IAChDtB,GAAG,CAAE,CAAErB,EAAAA,QAAS,CAAG2C,CAAAA,EAAAA,OAAQ,CAAC,CAAA,CAAC,GAAGF,IAAI,CAACE,OAAO,CAAC,CAAA;AAE7C,IAAA,OAAOtB,GAAG,CAAA;GACX,EAAE,EAAE,CAAC,CAAA;AACR,CAAC;;ACVD;AACA;AACA;AACA,MAAMuB,eAAe,GAAG;AACtBC,EAAAA,OAAO,EAAGC,CAAC,IAAKA,CAAC,CAACF,eAAe,EAAE;AACnCG,EAAAA,IAAI,EAAE,QAAQ;AACd,EAAA,aAAa,EAAE,IAAA;AACjB,CAAC;;ACGD,MAAMC,cAAc,GAAGA,CAAC;EAAEC,OAAO;AAAEtB,EAAAA,GAAAA;AAAI,CAAC,KAAK;EAC3C,MAAM;AAAEuB,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;EACnC,MAAM;AAAEC,IAAAA,kBAAAA;GAAoB,GAAGC,eAAe,EAAE,CAAA;AAEhD,EAAA,MAAMC,YAAY,GAAGC,WAAW,CAAC,MAAM;AACrCH,IAAAA,kBAAkB,CAAC;AACjBI,MAAAA,IAAI,EAAE,SAAS;MACfC,OAAO,EAAEP,aAAa,CAAC;AACrBZ,QAAAA,EAAE,EAAE,kCAAkC;AACtCoB,QAAAA,cAAc,EAAE,8BAAA;OACjB,CAAA;AACH,KAAC,CAAC,CAAA;AACJ,GAAC,EAAE,CAACN,kBAAkB,EAAEF,aAAa,CAAC,CAAC,CAAA;AAEvC,EAAA,oBACES,KAAA,CAAAC,aAAA,CAACC,eAAe,EAAA;AAACC,IAAAA,IAAI,EAAEnC,GAAI;AAACoC,IAAAA,MAAM,EAAET,YAAAA;AAAa,GAAA,eAC/CK,KAAA,CAAAC,aAAA,CAACI,MAAM,EAAA;AAACC,IAAAA,IAAI,EAAC,GAAG;AAACC,IAAAA,SAAS,eAAEP,KAAA,CAAAC,aAAA,CAACO,IAAQ,MAAE,CAAE;AAACC,IAAAA,OAAO,EAAC,WAAW;AAACC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,KAAK,EAAE,MAAA;AAAO,KAAA;GAClFpB,EAAAA,aAAa,CACZD,OAAO,GACH;AACEX,IAAAA,EAAE,EAAED,OAAO,CAAC,6BAA6B,CAAC;AAC1CqB,IAAAA,cAAc,EAAE,mBAAA;AAClB,GAAC,GACD;AACEpB,IAAAA,EAAE,EAAED,OAAO,CAAC,uBAAuB,CAAC;AACpCqB,IAAAA,cAAc,EAAE,WAAA;GAExB,CACM,CACO,CAAC,CAAA;AAEtB,CAAC,CAAA;AAEDV,cAAc,CAACuB,SAAS,GAAG;AACzBtB,EAAAA,OAAO,EAAEuB,SAAS,CAACC,IAAI,CAACC,UAAU;AAClC/C,EAAAA,GAAG,EAAE6C,SAAS,CAACG,MAAM,CAACD,UAAAA;AACxB,CAAC,CAAA;AAED,uBAAeE,aAAAA,IAAI,CAAC5B,cAAc,CAAC;;ACzCnC,MAAM6B,eAAe,GAAGA,MAAM;EAC5B,MAAM;AAAEC,IAAAA,cAAAA;GAAgB,GAAGC,kBAAkB,EAAE,CAAA;AAC/C,EAAA,MAAMC,QAAQ,GAAGC,WAAW,EAAE,CAAA;AAC9B,EAAA,MAAMC,WAAW,GAAGC,cAAc,EAAE,CAAA;EACpC,MAAM;AAAE/B,IAAAA,kBAAAA;GAAoB,GAAGC,eAAe,EAAE,CAAA;EAChD,MAAM;IAAEpC,MAAM;AAAEmE,IAAAA,SAAAA;GAAW,GAAGC,WAAW,CAAEC,KAAK,IAAKA,KAAK,CAAE,CAAEtF,EAAAA,QAAS,CAAQ,OAAA,CAAA,CAAC,CAAC,CAAA;AAEjFuF,EAAAA,SAAS,CAAC,MAAM;AACd;AACA,IAAA,IAAI,CAACH,SAAS,IAAI,CAAC,CAACnE,MAAM,EAAE;AAC1B,MAAA,OAAA;AACF,KAAA;IAEAiE,WAAW,CACRM,GAAG,CAAE,CAAGxF,CAAAA,EAAAA,QAAS,SAAQ,CAAC,CAC1ByF,IAAI,CAAC,CAAC;AAAEpF,MAAAA,IAAAA;AAAK,KAAC,KAAK;AAClB2E,MAAAA,QAAQ,CAAC;AACPxB,QAAAA,IAAI,EAAEzD,qBAAqB;AAC3BM,QAAAA,IAAAA;AACF,OAAC,CAAC,CAAA;AACJ,KAAC,CAAC,CACDqF,KAAK,CAAEC,GAAG,IAAK;MACd,IAAI,MAAM,IAAIA,GAAG,IAAIA,GAAG,EAAEC,IAAI,KAAK,cAAc,EAAE;AACjD,QAAA,OAAA;AACF,OAAA;AAEAxC,MAAAA,kBAAkB,CAAC;AACjBI,QAAAA,IAAI,EAAE,SAAS;QACfC,OAAO,EAAEqB,cAAc,CAACa,GAAG,CAAA;AAC7B,OAAC,CAAC,CAAA;AACJ,KAAC,CAAC,CAAA;AACN,GAAC,EAAE,CAACP,SAAS,EAAEnE,MAAM,EAAE+D,QAAQ,EAAEE,WAAW,EAAE9B,kBAAkB,EAAE0B,cAAc,CAAC,CAAC,CAAA;EAElF,OAAO;AACLzE,IAAAA,IAAI,EAAEY,MAAM;AACZmE,IAAAA,SAAAA;GACD,CAAA;AACH,CAAC;;ACrCD,MAAMS,gBAAgB,GAAGA,CAACC,GAAG,EAAEzF,IAAI,KAAK;EACtC,MAAM0F,gBAAgB,GAAGC,YAAY,CAAC,eAAe,EAAGrF,KAAK,IAAKA,KAAK,CAACoF,gBAAgB,CAAC,CAAA;EACzF,MAAM;AAAE1F,IAAAA,IAAI,EAAEY,MAAM;AAAEmE,IAAAA,SAAAA;GAAW,GAAGP,eAAe,EAAE,CAAA;EACrD,MAAM,CAACoB,KAAK,EAAEC,QAAQ,CAAC,GAAGC,QAAQ,CAAC,IAAI,CAAC,CAAA;EACxC,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGF,QAAQ,CAAC,IAAI,CAAC,CAAA;AAEhD,EAAA,MAAMG,SAAS,GAAGrF,MAAM,EAAEsF,YAAY,EAAEC,IAAI,CAAEhD,IAAI,IAAKA,IAAI,CAACsC,GAAG,KAAKA,GAAG,CAAC,CAAA;AACxE,EAAA,MAAMW,WAAW,GAAG,CAAC,CAACH,SAAS,CAAA;AAE/B,EAAA,MAAMI,gBAAgB,GAAGnD,WAAW,CAAC,YAAY;AAC/C;AACA,IAAA,MAAMoD,MAAM,GAAG,MAAMZ,gBAAgB,CACnC9F,qBAAqB,EACrB;MACEI,IAAI;MACJ4F,KAAK,EAAEK,SAAS,EAAEL,KAAK;MACvBG,SAAS,EAAEE,SAAS,EAAEF,SAAAA;KACvB,EACD,IACF,CAAC,CAAA;IAED,MAAMQ,WAAW,GAAGxE,qBAAqB,CAACuE,MAAM,EAAEV,KAAK,EAAE5F,IAAI,CAAC,CAAA;IAC9D,MAAMwG,eAAe,GAAGzE,qBAAqB,CAACuE,MAAM,EAAEP,SAAS,EAAE/F,IAAI,CAAC,CAAA;IAEtE6F,QAAQ,CAACU,WAAW,CAAC,CAAA;IACrBP,YAAY,CAACQ,eAAe,CAAC,CAAA;AAC/B,GAAC,EAAE,CAACxG,IAAI,EAAEiG,SAAS,EAAEJ,QAAQ,EAAEG,YAAY,EAAEN,gBAAgB,CAAC,CAAC,CAAA;AAE/DR,EAAAA,SAAS,CAAC,MAAM;AACd,IAAA,IAAI,CAACkB,WAAW,IAAIrB,SAAS,EAAE;AAC7B,MAAA,OAAA;AACF,KAAA;AAEAsB,IAAAA,gBAAgB,EAAE,CAAA;GACnB,EAAE,CAACD,WAAW,EAAErB,SAAS,EAAEsB,gBAAgB,CAAC,CAAC,CAAA;EAE9C,OAAO;IACLtB,SAAS;IACTqB,WAAW;IACXR,KAAK;AACLG,IAAAA,SAAAA;GACD,CAAA;AACH,CAAC;;ACzCD,MAAMU,aAAa,GAAGA,CAAC;EAAE7D,OAAO;EAAE8D,MAAM;AAAEpF,EAAAA,GAAAA;AAAI,CAAC,KAAK;EAClD,MAAM;AAAEuB,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;AAEnC,EAAA,MAAM6D,WAAW,GAAGzD,WAAW,CAC5B0D,KAAK,IAAK;IACTA,KAAK,CAACC,cAAc,EAAE,CAAA;IACtB,IAAI,CAACvF,GAAG,EAAE,OAAA;AAEVwF,IAAAA,MAAM,CAACC,IAAI,CAACzF,GAAG,EAAEoF,MAAM,CAAC,CAAA;AAC1B,GAAC,EACD,CAACpF,GAAG,EAAEoF,MAAM,CACd,CAAC,CAAA;AAED,EAAA,oBACEpD,KAAA,CAAAC,aAAA,CAACyD,UAAU,EAAA;AACTC,IAAAA,IAAI,EAAE3F,GAAI;AACVkB,IAAAA,OAAO,EAAEmE,WAAY;AACrB/C,IAAAA,IAAI,EAAC,GAAG;AACRC,IAAAA,SAAS,eAAEP,KAAA,CAAAC,aAAA,CAAC2D,YAAY,MAAE,CAAE;AAC5BnD,IAAAA,OAAO,EAAC,WAAW;AACnBC,IAAAA,KAAK,EAAE;AAAEC,MAAAA,KAAK,EAAE,MAAA;KAAS;AACzBkD,IAAAA,QAAQ,EAAE,CAAC7F,GAAAA;GAEVuB,EAAAA,aAAa,CACZD,OAAO,GACH;AACEX,IAAAA,EAAE,EAAED,OAAO,CAAC,mBAAmB,CAAC;AAChCqB,IAAAA,cAAc,EAAE,oBAAA;AAClB,GAAC,GACD;AACEpB,IAAAA,EAAE,EAAED,OAAO,CAAC,uBAAuB,CAAC;AACpCqB,IAAAA,cAAc,EAAE,gBAAA;AAClB,GACN,CACU,CAAC,CAAA;AAEjB,CAAC,CAAA;AAEDoD,aAAa,CAACvC,SAAS,GAAG;AACxBtB,EAAAA,OAAO,EAAEuB,SAAS,CAACC,IAAI,CAACC,UAAU;AAClCqC,EAAAA,MAAM,EAAEvC,SAAS,CAACG,MAAM,CAACD,UAAU;AACnC/C,EAAAA,GAAG,EAAE6C,SAAS,CAACG,MAAM,CAACD,UAAAA;AACxB,CAAC,CAAA;AAED,sBAAeE,aAAAA,IAAI,CAACkC,aAAa,CAAC;;AC9ClC,MAAMW,kBAAkB,GAAGA,CAAC;EAAEpH,IAAI;AAAE4C,EAAAA,OAAAA;AAAQ,CAAC,KAAK;EAChD,MAAM;IAAEtB,GAAG;IAAEO,IAAI;AAAEC,IAAAA,UAAAA;AAAW,GAAC,GAAG9B,IAAI,CAAA;;AAEtC;AACA,EAAA,MAAMqH,WAAW,GAAGxF,IAAI,KAAK,KAAK,CAAA;AAElC,EAAA,oBACEyB,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAgE,QAAA,EAAA,IAAA,eACEhE,KAAA,CAAAC,aAAA,CAACkD,eAAa,EAAA;AAAC7D,IAAAA,OAAO,EAAEA,OAAQ;AAACtB,IAAAA,GAAG,EAAEA,GAAI;AAACoF,IAAAA,MAAM,EAAE5E,UAAAA;GAAa,CAAC,EAChEuF,WAAW,iBAAI/D,KAAA,CAAAC,aAAA,CAACZ,gBAAc,EAAA;AAACC,IAAAA,OAAO,EAAEA,OAAQ;AAACtB,IAAAA,GAAG,EAAEA,GAAAA;AAAI,GAAE,CAC7D,CAAC,CAAA;AAEP,CAAC,CAAA;AAED8F,kBAAkB,CAAClD,SAAS,GAAG;AAC7BlE,EAAAA,IAAI,EAAEmE,SAAS,CAACoD,KAAK,CAAC;IACpB1F,IAAI,EAAEsC,SAAS,CAACC,IAAI;IACpBtC,UAAU,EAAEqC,SAAS,CAACG,MAAM;IAC5BhD,GAAG,EAAE6C,SAAS,CAACG,MAAAA;GAChB,CAAC,CAACD,UAAU;AACbzB,EAAAA,OAAO,EAAEuB,SAAS,CAACC,IAAI,CAACC,UAAAA;AAC1B,CAAC,CAAA;AAED,2BAAeE,aAAAA,IAAI,CAAC6C,kBAAkB,CAAC;;ACtBvC,MAAMI,kBAAkB,GAAGA,MAAM;AAC/B;AACA;AACA;AACA;EACA,MAAM;AAAEvF,IAAAA,EAAE,EAAEwF,UAAU;AAAEC,IAAAA,IAAI,EAAEC,KAAK;AAAEC,IAAAA,cAAAA;GAAgB,GAAGC,SAAS,EAAE,CAAA;;AAEnE;AACA;EACA,MAAM;IAAEC,QAAQ;AAAEC,IAAAA,MAAAA;GAAQ,GAAGC,oBAAoB,CAAC;IAAEP,UAAU;IAAEE,KAAK;AAAEC,IAAAA,cAAAA;AAAe,GAAC,CAAC,CAAA;AACxF,EAAA,MAAMnC,GAAG,GAAGsC,MAAM,EAAEtC,GAAG,CAAA;AAEvB,EAAA,MAAMwC,WAAW,GAAGH,QAAQ,EAAEI,MAAM,KAAK,OAAO,IAAIJ,QAAQ,EAAEI,MAAM,KAAK,UAAU,CAAA;AACnF,EAAA,MAAMC,eAAe,GAAGL,QAAQ,EAAEI,MAAM,KAAK,WAAW,IAAIJ,QAAQ,EAAEI,MAAM,KAAK,UAAU,CAAA;EAE3F,MAAM;IAAEnD,SAAS;IAAEqB,WAAW;IAAER,KAAK;AAAEG,IAAAA,SAAAA;AAAU,GAAC,GAAGP,gBAAgB,CAACC,GAAG,EAAEqC,QAAQ,CAAC,CAAA;EAEpF,IAAI,CAACA,QAAQ,IAAI,CAACrC,GAAG,IAAI,CAACW,WAAW,IAAIrB,SAAS,EAAE;AAClD,IAAA,OAAO,IAAI,CAAA;AACb,GAAA;AAEA,EAAA,MAAMqD,aAAa,GAAG,CAAC,CAACrC,SAAS,IAAIoC,eAAe,CAAA;EACpD,MAAME,SAAS,GAAG,CAAC,CAACzC,KAAK,KAAKqC,WAAW,IAAIrC,KAAK,EAAE0C,aAAa,CAAC,CAAA;AAElE,EAAA,oBACEhF,KAAA,CAAAC,aAAA,CAAAD,KAAA,CAAAgE,QAAA,EACGc,IAAAA,EAAAA,aAAa,iBAAI9E,KAAA,CAAAC,aAAA,CAAC6D,oBAAkB,EAAA;AAACpH,IAAAA,IAAI,EAAE+F,SAAU;AAACnD,IAAAA,OAAO,EAAE,KAAA;GAAQ,CAAC,EACxEyF,SAAS,iBAAI/E,KAAA,CAAAC,aAAA,CAAC6D,oBAAkB,EAAA;AAACpH,IAAAA,IAAI,EAAE4F,KAAM;IAAChD,OAAO,EAAA,IAAA;AAAA,GAAE,CACxD,CAAC,CAAA;AAEP,CAAC;;ACxBD,MAAM2F,cAAc,GAAGA,CAAC;EAAEvI,IAAI;AAAEwI,EAAAA,MAAAA;AAAO,CAAC,KAAK;EAC3C,MAAM;AAAE3F,IAAAA,aAAAA;GAAe,GAAGC,OAAO,EAAE,CAAA;EACnC,MAAM;AAAEC,IAAAA,kBAAAA;GAAoB,GAAGC,eAAe,EAAE,CAAA;EAEhD,MAAMyF,kBAAkB,GAAGD,MAAM,CAACE,WAAW,CAACC,OAAO,CAACC,eAAe,KAAK,IAAI,CAAA;AAC9E,EAAA,MAAMhG,OAAO,GAAG6F,kBAAkB,IAAI,CAACzI,IAAI,EAAE6I,WAAW,CAAA;EAExD,MAAM;IAAE9D,SAAS;IAAEa,KAAK;AAAEG,IAAAA,SAAAA;GAAW,GAAGP,gBAAgB,CAACgD,MAAM,EAAExI,IAAoB,CAAC,CAAA;AAEtF,EAAA,MAAMY,MAAM,GAAGkI,OAAO,CAAC,MAAM;AAC3B,IAAA,IAAIlG,OAAO,EAAE;AACX,MAAA,OAAOgD,KAAK,CAAA;AACd,KAAA;AAEA,IAAA,OAAOG,SAAS,CAAA;GACjB,EAAE,CAACnD,OAAO,EAAEgD,KAAK,EAAEG,SAAS,CAAC,CAAC,CAAA;AAE/B,EAAA,MAAMzE,GAAG,GAAG6D,GAAG,CAACvE,MAAM,EAAE,KAAK,CAAC,CAAA;AAC9B,EAAA,MAAMiB,IAAI,GAAGsD,GAAG,CAACvE,MAAM,EAAE,MAAM,CAAC,CAAA;EAChC,MAAMkB,UAAU,GAAGqD,GAAG,CAACvE,MAAM,EAAE,YAAY,EAAEf,mBAAmB,CAAC,CAAA;AAEjE,EAAA,MAAM8G,WAAW,GAAGzD,WAAW,CAC5B0D,KAAK,IAAK;IACT,IAAI,CAACtF,GAAG,EAAE;MACRsF,KAAK,CAACC,cAAc,EAAE,CAAA;AAEtB,MAAA,OAAA;AACF,KAAA;AAEAC,IAAAA,MAAM,CAACC,IAAI,CAACzF,GAAG,EAAEQ,UAAU,CAAC,CAAA;AAC9B,GAAC,EACD,CAACR,GAAG,EAAEQ,UAAU,CAClB,CAAC,CAAA;AAED,EAAA,MAAMmB,YAAY,GAAGC,WAAW,CAAC,MAAM;AACrCH,IAAAA,kBAAkB,CAAC;AACjBI,MAAAA,IAAI,EAAE,SAAS;MACfC,OAAO,EAAEP,aAAa,CAAC;AACrBZ,QAAAA,EAAE,EAAE,kCAAkC;AACtCoB,QAAAA,cAAc,EAAE,8BAAA;OACjB,CAAA;AACH,KAAC,CAAC,CAAA;AACJ,GAAC,EAAE,CAACN,kBAAkB,EAAEF,aAAa,CAAC,CAAC,CAAA;AAEvC,EAAA,IAAIkC,SAAS,EAAE;AACb,IAAA,oBACEzB,KAAA,CAAAC,aAAA,CAACwF,IAAI,EAAKxG,eAAe,eACvBe,KAAA,CAAAC,aAAA,CAACyF,MAAM,EAAA;MAACC,KAAK,EAAA,IAAA;AAAA,KAAE,CACX,CAAC,CAAA;AAEX,GAAA;AAEA,EAAA,oBACE3F,KAAA,CAAAC,aAAA,CAACwF,IAAI,EAAKxG,eAAe,eACvBe,KAAA,CAAAC,aAAA,CAAC2F,UAAU,EAAA;AACT1G,IAAAA,OAAO,EAAEmE,WAAY;AACrBwC,IAAAA,KAAK,EAAEtG,aAAa,CAClBD,OAAO,GACH;AACEX,MAAAA,EAAE,EAAED,OAAO,CAAC,mBAAmB,CAAC;AAChCqB,MAAAA,cAAc,EAAE,oBAAA;AAClB,KAAC,GACD;AACEpB,MAAAA,EAAE,EAAED,OAAO,CAAC,uBAAuB,CAAC;AACpCqB,MAAAA,cAAc,EAAE,gBAAA;AAClB,KACN,CAAE;AACF+F,IAAAA,IAAI,eAAE9F,KAAA,CAAAC,aAAA,CAAC2D,YAAY,MAAE,CAAE;IACvBmC,QAAQ,EAAA,IAAA;GACT,CAAC,EACDxH,IAAI,iBACHyB,KAAA,CAAAC,aAAA,CAACC,eAAe,EAAA;AAACC,IAAAA,IAAI,EAAEnC,GAAI;AAACoC,IAAAA,MAAM,EAAET,YAAAA;AAAa,GAAA,eAC/CK,KAAA,CAAAC,aAAA,CAAC2F,UAAU,EAAA;AACTE,IAAAA,IAAI,eAAE9F,KAAA,CAAAC,aAAA,CAACO,IAAQ,MAAE,CAAE;AACnBqF,IAAAA,KAAK,EAAEtG,aAAa,CAClBD,OAAO,GACH;AACEX,MAAAA,EAAE,EAAED,OAAO,CAAC,6BAA6B,CAAC;AAC1CqB,MAAAA,cAAc,EAAE,mBAAA;AAClB,KAAC,GACD;AACEpB,MAAAA,EAAE,EAAED,OAAO,CAAC,uBAAuB,CAAC;AACpCqB,MAAAA,cAAc,EAAE,WAAA;AAClB,KACN,CAAE;IACFgG,QAAQ,EAAA,IAAA;GACT,CACc,CAEf,CAAC,CAAA;AAEX,CAAC,CAAA;AAEDd,cAAc,CAACrE,SAAS,GAAG;AACzBlE,EAAAA,IAAI,EAAEmE,SAAS,CAACmF,MAAM,CAACjF,UAAU;AACjCmE,EAAAA,MAAM,EAAErE,SAAS,CAACoD,KAAK,CAAC;AACtBmB,IAAAA,WAAW,EAAEvE,SAAS,CAACoD,KAAK,CAAC;AAC3B9B,MAAAA,GAAG,EAAEtB,SAAS,CAACG,MAAM,CAACD,UAAU;AAChCsE,MAAAA,OAAO,EAAExE,SAAS,CAACoD,KAAK,CAAC;QACvBqB,eAAe,EAAEzE,SAAS,CAACC,IAAAA;AAC7B,OAAC,CAAC;AACFmF,MAAAA,aAAa,EAAEpF,SAAS,CAACoD,KAAK,CAAC;AAC7B,QAAA,gBAAgB,EAAEpD,SAAS,CAACoD,KAAK,CAAC;UAChCiC,cAAc,EAAErF,SAAS,CAACC,IAAAA;SAC3B,CAAA;OACF,CAAA;AACH,KAAC,CAAC,CAACC,UAAAA;AACL,GAAC,CAAC,CAACA,UAAAA;AACL,CAAC;;ACnHD,MAAMoF,gBAAgB,GAAGA,CAAC;EAAEC,gBAAgB;AAAElB,EAAAA,MAAAA;AAAO,CAAC,KAAK;EACzD,MAAMmB,WAAW,GAAG,CAAC,aAAa,EAAE,eAAe,EAAEhK,QAAQ,EAAE,gBAAgB,CAAC,CAAA;EAChF,MAAMyG,WAAW,GAAGjB,GAAG,CAACqD,MAAM,EAAEmB,WAAW,EAAE,KAAK,CAAC,KAAK,IAAI,CAAA;;AAE5D;EACA,IAAI,CAACvD,WAAW,EAAE;IAChB,OAAO;MACLsD,gBAAgB;AAChBlB,MAAAA,MAAAA;KACD,CAAA;AACH,GAAA;EAEA,OAAO;AACLkB,IAAAA,gBAAgB,EAAE,CAChB,GAAGA,gBAAgB,EACnB;AACErJ,MAAAA,GAAG,EAAE,iBAAiB;AACtBuJ,MAAAA,WAAW,EAAE;AACXzG,QAAAA,IAAI,EAAE,QAAA;OACP;AACD0G,MAAAA,SAAS,EAAE;AACTV,QAAAA,KAAK,EAAE,SAAS;AAChBW,QAAAA,UAAU,EAAE,KAAK;AACjBC,QAAAA,QAAQ,EAAE,KAAA;OACX;AACDtK,MAAAA,IAAI,EAAE,SAAS;AACfuK,MAAAA,aAAa,EAAGhK,IAAI,iBAAKsD,KAAA,CAAAC,aAAA,CAACgF,cAAc,EAAA;AAACvI,QAAAA,IAAI,EAAEA,IAAK;AAACwI,QAAAA,MAAM,EAAEA,MAAAA;OAAS,CAAA;AACxE,KAAC,CACF;AACDA,IAAAA,MAAAA;GACD,CAAA;AACH,CAAC;;ACjCD,MAAMyB,YAAY,GAAG;AACnBlF,EAAAA,SAAS,EAAE,IAAI;AACfnE,EAAAA,MAAM,EAAE;AACNsF,IAAAA,YAAY,EAAE,EAAA;AAChB,GAAA;AACF,CAAC,CAAA;AAED,MAAMgE,aAAa,GAAGC,OAAO,CAAC,CAACC,aAAa,EAAEC,MAAM,KAAK;AACvD,EAAA,IAAIpF,KAAK,GAAGmF,aAAa,IAAIH,YAAY,CAAA;EAEzC,QAAQI,MAAM,CAAClH,IAAI;AACjB,IAAA,KAAKzD,qBAAqB;MACxBuF,KAAK,CAACF,SAAS,GAAG,KAAK,CAAA;AACvBE,MAAAA,KAAK,CAACrE,MAAM,GAAGyJ,MAAM,CAACrK,IAAI,CAACY,MAAM,CAAA;AACjC,MAAA,MAAA;AAEF,IAAA;AACE,MAAA,OAAOqE,KAAK,CAAA;AAChB,GAAA;AAEA,EAAA,OAAOA,KAAK,CAAA;AACd,CAAC,CAAC;;ACtBF,MAAMqF,QAAQ,GAAG;EACf,CAAE,CAAA,EAAE3K,QAAS,CAAA,OAAA,CAAQ,GAAGiB,aAAAA;AAC1B,CAAC;;;;;;;;;;;;;;;;ACCD,YAAe;EACb2J,QAAQA,CAACC,GAAG,EAAE;AACZA,IAAAA,GAAG,CAACC,WAAW,CAACH,QAAQ,CAAC,CAAA;AAEzBE,IAAAA,GAAG,CAACE,UAAU,CAAC9K,qBAAqB,CAAC,CAAA;IAErC4K,GAAG,CAACG,cAAc,CAAC;AACjB1I,MAAAA,EAAE,EAAEtC,QAAQ;AACZF,MAAAA,IAAI,EAAEmL,UAAAA;AACR,KAAC,CAAC,CAAA;GACH;EAEDC,SAASA,CAACL,GAAG,EAAE;IACbA,GAAG,CAACM,SAAS,CAAC,iBAAiB,CAAC,CAACC,eAAe,CAAC,UAAU,EAAE,aAAa,EAAE;AAC1EtL,MAAAA,IAAI,EAAEE,QAAQ;AACdqL,MAAAA,SAAS,EAAExD,kBAAAA;AACb,KAAC,CAAC,CAAA;AAEFgD,IAAAA,GAAG,CAACS,YAAY,CAAC,gDAAgD,EAAExB,gBAAgB,CAAC,CAAA;GACrF;AAED,EAAA,MAAMyB,aAAaA,CAAC;AAAEC,IAAAA,OAAAA;AAAQ,GAAC,EAAE;AAC/B,IAAA,MAAMC,aAAa,GAAG,MAAMC,OAAO,CAACC,GAAG,CACrCH,OAAO,CAACI,GAAG,CAAEC,MAAM,IAAK;MACtB,OAAO,iCAAM,CAAE,CAAiBA,eAAAA,EAAAA,MAAO,OAAM,CAAC,CAC3CpG,IAAI,CAAC,CAAC;AAAEqG,QAAAA,OAAO,EAAEzL,IAAAA;AAAK,OAAC,KAAK;QAC3B,OAAO;AACLA,UAAAA,IAAI,EAAEmC,wBAAwB,CAACnC,IAAI,EAAEL,QAAQ,CAAC;AAC9C6L,UAAAA,MAAAA;SACD,CAAA;AACH,OAAC,CAAC,CACDnG,KAAK,CAAC,MAAM;QACX,OAAO;UACLrF,IAAI,EAAE,EAAE;AACRwL,UAAAA,MAAAA;SACD,CAAA;AACH,OAAC,CAAC,CAAA;AACN,KAAC,CACH,CAAC,CAAA;AAED,IAAA,OAAOH,OAAO,CAACK,OAAO,CAACN,aAAa,CAAC,CAAA;AACvC,GAAA;AACF,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}