@riligar/auth-react 1.6.0 → 1.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/authSdk.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../src/authStore.js","../node_modules/zustand/esm/vanilla/shallow.mjs","../node_modules/zustand/esm/react/shallow.mjs","../src/AuthProvider.jsx","../src/ProtectedRoute.jsx","../src/components/AuthCard.jsx","../src/assets/logotipo.webp","../src/components/SignInForm.jsx","../src/components/SignUpForm.jsx","../src/components/MagicLinkForm.jsx","../src/components/MagicLinkVerify.jsx","../src/components/ForgotPasswordForm.jsx","../src/components/ResetPasswordForm.jsx","../src/components/VerifyEmailCard.jsx"],"sourcesContent":["// Config - pode ser sobrescrita pelo AuthProvider\n// Tenta detectar ambiente Vite, mas falha graciosamente se não existir\nconst getEnvVar = key => {\n try {\n if (typeof import.meta !== 'undefined' && import.meta.env && import.meta.env[key]) {\n return import.meta.env[key]\n }\n } catch (e) {\n // ignore\n }\n return null\n}\n\nlet API_BASE = (typeof window !== 'undefined' && window?.location ? getEnvVar('VITE_API_BASE') : null) || 'http://localhost:3000'\n\nlet API_KEY = null\n\n// Permite configurar a API base e key externamente (chamado pelo AuthProvider)\nexport function configure({ apiUrl, apiKey }) {\n if (apiUrl) API_BASE = apiUrl.replace(/\\/$/, '') // Remove trailing slash\n if (apiKey) API_KEY = apiKey\n}\n\n// Cache para JWKS\nlet jwksCache = null\nlet jwksCacheExpiry = 0\n\n// helper fetch pré-configurado\nasync function api(route, opts = {}) {\n // Garante que a rota comece com /\n const cleanRoute = route.startsWith('/') ? route : `/${route}`\n\n // Constrói URL completa (API_BASE já teve trailing slash removido no configure)\n const url = `${API_BASE}${cleanRoute}`\n\n const token = getStoredToken()\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...opts.headers,\n }\n\n // Adiciona Authorization header se tiver token\n if (token) {\n headers.Authorization = `Bearer ${token}`\n }\n\n // Adiciona API Key se configurada\n if (API_KEY) {\n headers['X-API-Key'] = API_KEY\n }\n\n const res = await fetch(url, {\n headers,\n ...opts,\n })\n\n // Converte JSON automaticamente e lança erro legível\n const data = res.status !== 204 ? await res.json().catch(() => ({})) : null\n\n if (!res.ok) {\n let errorMessage = data?.message || data?.error || data?.detail || res.statusText\n\n // Se a mensagem for um objeto, tenta extrair string ou stringify\n if (typeof errorMessage === 'object') {\n errorMessage = errorMessage.message || JSON.stringify(errorMessage)\n }\n\n throw Object.assign(new Error(errorMessage), { res, data })\n }\n return data\n}\n\n// Gerenciamento de token no localStorage\nfunction getStoredToken() {\n if (typeof window === 'undefined') return null\n return window.localStorage.getItem('auth:token')\n}\n\nfunction setStoredToken(token) {\n if (typeof window === 'undefined') return\n if (token) {\n window.localStorage.setItem('auth:token', token)\n } else {\n window.localStorage.removeItem('auth:token')\n }\n}\n// Helper para processar resposta de autenticação e salvar token\nfunction handleAuthResponse(result) {\n // Tenta encontrar o token em vários lugares possíveis\n const token = result.token || result.session?.token || result.session?.sessionToken\n\n console.log('[AuthSDK] Handling Auth Response:', {\n hasToken: !!result.token,\n hasSessionToken: !!result.session?.token,\n hasSessionSessionToken: !!result.session?.sessionToken,\n extractedToken: token,\n })\n\n if (token) {\n console.log('[AuthSDK] Saving token to storage')\n setStoredToken(token)\n } else {\n console.warn('[AuthSDK] No token found in response', result)\n }\n\n return result\n}\n// Busca JWKS do servidor\nasync function fetchJWKS() {\n const now = Date.now()\n if (jwksCache && now < jwksCacheExpiry) {\n return jwksCache\n }\n\n try {\n const response = await fetch(`${API_BASE}/.well-known/jwks.json`)\n const jwks = await response.json()\n jwksCache = jwks\n jwksCacheExpiry = now + 5 * 60 * 1000 // Cache por 5 minutos\n return jwks\n } catch (error) {\n console.error('Erro ao buscar JWKS:', error)\n return null\n }\n}\n\n// Decodifica JWT (apenas payload, sem verificação de assinatura)\nexport function decodeJWT(token) {\n try {\n const parts = token.split('.')\n if (parts.length !== 3) return null\n\n // Safe base64 decode\n const base64Url = parts[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n\n // Verifica ambiente para decodificar\n const jsonPayload = typeof window !== 'undefined' ? window.atob(base64) : Buffer.from(base64, 'base64').toString()\n\n return JSON.parse(jsonPayload)\n } catch {\n return null\n }\n}\n\n// Verifica se o token está expirado\nfunction isTokenExpired(token) {\n const payload = decodeJWT(token)\n\n // Se não for um JWT válido (payload null), assumimos que é um token opaco (session token)\n // Nesse caso, deixamos o servidor validar via 401\n if (!payload) return false\n\n if (!payload.exp) return false\n\n const now = Date.now()\n const exp = payload.exp * 1000\n const isExpired = now >= exp\n\n if (isExpired) {\n console.log('[AuthSDK] Token expired:', { now, exp, diff: exp - now })\n }\n\n return isExpired\n}\n\n// Verifica se o usuário está autenticado\nexport function isAuthenticated() {\n const token = getStoredToken()\n const valid = token && !isTokenExpired(token)\n console.log('[AuthSDK] isAuthenticated check:', { hasToken: !!token, valid })\n return valid\n}\n\n// Obtém dados do usuário do token\nexport function getCurrentUser() {\n const token = getStoredToken()\n if (!token || isTokenExpired(token)) return null\n\n const payload = decodeJWT(token)\n return payload\n ? {\n id: payload.sub,\n email: payload.email,\n name: payload.name,\n ...payload,\n }\n : null\n}\n\n/*--- métodos de autenticação -------------------*/\nexport const signUp = async (email, password, name = '') => {\n const result = await api('/auth/sign-up/email', {\n method: 'POST',\n body: JSON.stringify({ email, password, name }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signIn = async (email, password) => {\n const result = await api('/auth/sign-in/email', {\n method: 'POST',\n body: JSON.stringify({ email, password }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signOut = async () => {\n try {\n await api('/auth/sign-out', { method: 'POST' })\n } catch {\n // Ignora erros de logout no servidor\n } finally {\n setStoredToken(null)\n }\n}\n\nexport const refreshToken = async () => {\n try {\n const result = await api('/auth/refresh', { method: 'POST' })\n return handleAuthResponse(result)\n } catch (error) {\n setStoredToken(null)\n throw error\n }\n}\n\n/*--- Magic Link ---------------------------------*/\nexport const sendMagicLink = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/magic-link/verify` : '/auth/magic-link/verify')\n\n return await api('/auth/sign-in/magic-link', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\nexport const verifyMagicLink = async token => {\n const result = await api(`/auth/magic-link/verify?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\n/*--- Password Reset -----------------------------*/\nexport const forgotPassword = async (email, redirectTo) => {\n const redirect = redirectTo || (typeof window !== 'undefined' ? `${window.location.origin}/auth/reset-password` : '/auth/reset-password')\n\n return await api('/auth/forget-password', {\n method: 'POST',\n body: JSON.stringify({ email, redirectTo: redirect }),\n })\n}\n\nexport const resetPassword = async (token, newPassword) => {\n return await api('/auth/reset-password', {\n method: 'POST',\n body: JSON.stringify({ token, newPassword }),\n })\n}\n\n/*--- Email Verification -------------------------*/\nexport const verifyEmail = async token => {\n const result = await api(`/auth/verify-email?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\nexport const resendVerification = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/verify-email` : '/auth/verify-email')\n\n return await api('/auth/send-verification-email', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\n/*--- Session ------------------------------------*/\nexport const getSession = async () => {\n return await api('/auth/session')\n}\n\n/*--- Application Info ----------------------------*/\nexport const getApplicationInfo = async () => {\n try {\n const data = await api('/application/by-api-key')\n return data?.data || null\n } catch (error) {\n console.warn('[AuthSDK] Failed to fetch application info:', error.message)\n return null\n }\n}\n\n/* Social login redirect (ex.: Google) -----------*/\nexport function socialRedirect(provider, redirectTo = typeof window !== 'undefined' ? window.location.href : '/') {\n if (typeof window === 'undefined') return\n window.location = `${API_BASE}/auth/sign-in/${provider}?redirect=${encodeURIComponent(redirectTo)}`\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","import { create } from 'zustand'\nimport * as api from './authSdk.js'\n\n// Estado: { user, loading, error }\nexport const useAuthStore = create((set, get) => ({\n user: null,\n loading: true,\n error: null,\n\n // Loading states granulares\n loadingStates: {\n signIn: false,\n signUp: false,\n signOut: false,\n magicLink: false,\n verifyMagicLink: false,\n resetPassword: false,\n verifyEmail: false,\n resendVerification: false,\n },\n\n // Application info (logo, nome, etc)\n applicationInfo: null,\n\n // Helper para atualizar loading states\n setLoading: (key, value) =>\n set(state => ({\n loadingStates: { ...state.loadingStates, [key]: value },\n })),\n\n // Buscar informações da aplicação\n fetchApplicationInfo: async () => {\n try {\n const appInfo = await api.getApplicationInfo()\n set({ applicationInfo: appInfo })\n } catch (error) {\n console.warn('[AuthStore] Failed to fetch application info:', error)\n set({ applicationInfo: null })\n }\n },\n\n /* Init ao montar o Provider */\n init: async () => {\n const { fetchApplicationInfo } = get()\n\n try {\n // Buscar application info primeiro (não bloqueia o init)\n fetchApplicationInfo()\n\n // Verifica se há um token válido\n if (api.isAuthenticated()) {\n // Tenta extrair usuário do token (JWT)\n let user = api.getCurrentUser()\n\n // Se o token for opaco (não-JWT), getCurrentUser retorna null.\n // Precisamos buscar a sessão no servidor.\n if (!user) {\n try {\n const session = await api.getSession()\n if (session?.user) {\n user = session.user\n }\n } catch (sessionError) {\n console.warn('[AuthStore] Failed to fetch session:', sessionError)\n }\n }\n\n if (user) {\n set({ user, loading: false })\n } else {\n set({ user: null, loading: false })\n }\n } else {\n set({ user: null, loading: false })\n }\n } catch (error) {\n console.error('Erro na inicialização:', error)\n set({ user: null, loading: false })\n }\n },\n\n /* Ações de Autenticação */\n signUp: async (email, password, name) => {\n const { setLoading } = get()\n setLoading('signUp', true)\n set({ error: null })\n\n try {\n const result = await api.signUp(email, password, name)\n const user = api.getCurrentUser()\n set({ user, loading: false })\n setLoading('signUp', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signUp', false)\n throw err\n }\n },\n\n signIn: async (email, password) => {\n const { setLoading } = get()\n setLoading('signIn', true)\n set({ error: null })\n\n try {\n const result = await api.signIn(email, password)\n\n // Tenta obter usuário do token (se JWT)\n let user = api.getCurrentUser()\n\n // Se não encontrou no token (sessão opaca), busca do servidor\n if (!user) {\n const session = await api.getSession()\n if (session?.user) user = session.user\n }\n\n set({ user, loading: false })\n setLoading('signIn', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signIn', false)\n throw err\n }\n },\n\n signOut: async () => {\n const { setLoading } = get()\n setLoading('signOut', true)\n\n try {\n await api.signOut()\n set({ user: null })\n // Sincronizar logout entre abas\n if (typeof window !== 'undefined') {\n window.localStorage.setItem('auth:logout', Date.now())\n }\n } finally {\n setLoading('signOut', false)\n }\n },\n\n /* Magic Link */\n sendMagicLink: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('magicLink', true)\n set({ error: null })\n\n try {\n const result = await api.sendMagicLink(email, callbackURL)\n setLoading('magicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('magicLink', false)\n throw err\n }\n },\n\n verifyMagicLink: async token => {\n const { setLoading } = get()\n setLoading('verifyMagicLink', true)\n set({ error: null })\n\n try {\n const result = await api.verifyMagicLink(token)\n\n let user = result.user\n\n // Se não veio no resultado, tenta pegar do token ou do servidor\n if (!user) {\n user = api.getCurrentUser()\n if (!user) {\n const session = await api.getSession()\n if (session?.user) user = session.user\n }\n }\n\n if (user) {\n set({ user, loading: false })\n }\n\n setLoading('verifyMagicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyMagicLink', false)\n throw err\n }\n },\n\n /* Password Reset */\n forgotPassword: async (email, redirectTo) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.forgotPassword(email, redirectTo)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n resetPassword: async (token, newPassword) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.resetPassword(token, newPassword)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n /* Email Verification */\n verifyEmail: async token => {\n const { setLoading } = get()\n setLoading('verifyEmail', true)\n set({ error: null })\n\n try {\n const result = await api.verifyEmail(token)\n if (result.user) {\n set({ user: result.user, loading: false })\n }\n setLoading('verifyEmail', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyEmail', false)\n throw err\n }\n },\n\n resendVerification: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('resendVerification', true)\n set({ error: null })\n\n try {\n const result = await api.resendVerification(email, callbackURL)\n setLoading('resendVerification', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resendVerification', false)\n throw err\n }\n },\n\n /* Session */\n getSession: async () => {\n try {\n return await api.getSession()\n } catch (err) {\n set({ error: err })\n throw err\n }\n },\n\n /* Refresh do token em background */\n startRefresh: () => {\n if (typeof window === 'undefined') return\n\n const refreshInterval = setInterval(async () => {\n try {\n // Se o usuário está autenticado mas o token está próximo do vencimento\n if (api.isAuthenticated()) {\n const token = window.localStorage.getItem('auth:token')\n if (token) {\n // Decodifica o token para verificar tempo de expiração\n const base64Url = token.split('.')[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n const jsonPayload = window.atob(base64)\n const payload = JSON.parse(jsonPayload)\n const now = Date.now() / 1000\n const timeUntilExpiry = payload.exp - now\n\n // Se o token expira em menos de 5 minutos, faz refresh\n if (timeUntilExpiry < 300) {\n // 5 minutos\n await api.refreshToken()\n const user = api.getCurrentUser()\n set({ user })\n }\n }\n }\n } catch (error) {\n console.error('Erro no refresh automático:', error)\n // Em caso de erro, faz logout\n set({ user: null })\n window.localStorage.removeItem('auth:token')\n }\n }, 4 * 60 * 1000) // Verifica a cada 4 minutos\n\n // Limpa o intervalo quando necessário\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', () => {\n clearInterval(refreshInterval)\n })\n }\n },\n\n /* Verifica se o token ainda é válido */\n checkTokenValidity: () => {\n if (!api.isAuthenticated()) {\n set({ user: null })\n return false\n }\n return true\n },\n\n /* Atualizar usuário manualmente */\n setUser: user => set({ user }),\n}))\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n return false;\n }\n if (isIterable(valueA) && isIterable(valueB)) {\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n }\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n}\n\nexport { shallow };\n","import React from 'react';\nimport { shallow } from 'zustand/vanilla/shallow';\n\nfunction useShallow(selector) {\n const prev = React.useRef(void 0);\n return (state) => {\n const next = selector(state);\n return shallow(prev.current, next) ? prev.current : prev.current = next;\n };\n}\n\nexport { useShallow };\n","import { createContext, useEffect, useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { useAuthStore } from './authStore.js'\nimport { configure } from './authSdk.js'\n\nconst AuthContext = createContext() // só para ter o Provider em JSX\n\nexport function AuthProvider({\n children,\n apiUrl, // URL base da API (OBRIGATÓRIA)\n apiKey, // API Key para header X-API-Key (OBRIGATÓRIA)\n onError, // Callback de erro global\n}) {\n // Validação de props obrigatórias\n if (!apiKey) {\n throw new Error('[@riligar/auth-react] apiKey é obrigatória no AuthProvider. ' + 'Obtenha sua API Key no dashboard em https://dashboard.myauth.click')\n }\n\n if (!apiUrl) {\n throw new Error('[@riligar/auth-react] apiUrl é obrigatória no AuthProvider. ' + 'Use a URL do seu servidor de autenticação.')\n }\n\n const init = useAuthStore(s => s.init)\n const startRefresh = useAuthStore(s => s.startRefresh)\n const checkTokenValidity = useAuthStore(s => s.checkTokenValidity)\n\n // Configura SDK com apiUrl e apiKey\n // Configura SDK com apiUrl e apiKey\n // Usamos useMemo para garantir que a configuração ocorra ANTES dos efeitos dos componentes filhos\n useMemo(() => {\n configure({ apiUrl, apiKey })\n }, [apiUrl, apiKey])\n\n useEffect(() => {\n init()\n startRefresh()\n }, [init, startRefresh])\n\n // Sincronização entre abas - escuta logout e mudanças no token\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const handleStorageChange = event => {\n if (event.key === 'auth:logout') {\n window.location.reload()\n }\n // Se o token mudou em outra aba, recarrega\n if (event.key === 'auth:token') {\n checkTokenValidity()\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n return () => window.removeEventListener('storage', handleStorageChange)\n }, [checkTokenValidity])\n\n // Verifica validade do token periodicamente\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const interval = setInterval(() => {\n checkTokenValidity()\n }, 30 * 1000) // Verifica a cada 30 segundos\n\n return () => clearInterval(interval)\n }, [checkTokenValidity])\n\n // Contexto com onError callback\n const contextValue = useMemo(() => ({ onError }), [onError])\n\n return <AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>\n}\n\n/* Hooks \"facade\" que a app vai usar */\nexport const useAuth = () =>\n useAuthStore(\n useShallow(s => ({\n user: s.user,\n loading: s.loading,\n error: s.error,\n isAuthenticated: s.user !== null,\n }))\n )\n\n// Auth Actions\nexport const useSignIn = () => useAuthStore(s => s.signIn)\nexport const useSignUp = () => useAuthStore(s => s.signUp)\nexport const useSignOut = () => useAuthStore(s => s.signOut)\nexport const useCheckToken = () => useAuthStore(s => s.checkTokenValidity)\n\n// Magic Link Hook\nexport const useMagicLink = () =>\n useAuthStore(\n useShallow(s => ({\n sendMagicLink: s.sendMagicLink,\n verifyMagicLink: s.verifyMagicLink,\n loading: s.loadingStates.magicLink,\n verifying: s.loadingStates.verifyMagicLink,\n error: s.error,\n }))\n )\n\n// Password Reset Hook\nexport const usePasswordReset = () =>\n useAuthStore(\n useShallow(s => ({\n forgotPassword: s.forgotPassword,\n resetPassword: s.resetPassword,\n loading: s.loadingStates.resetPassword,\n error: s.error,\n }))\n )\n\n// Email Verification Hook\nexport const useEmailVerification = () =>\n useAuthStore(\n useShallow(s => ({\n verifyEmail: s.verifyEmail,\n resendVerification: s.resendVerification,\n loading: s.loadingStates.verifyEmail,\n resending: s.loadingStates.resendVerification,\n error: s.error,\n }))\n )\n\n// Session Hook\nexport const useSession = () =>\n useAuthStore(\n useShallow(s => ({\n getSession: s.getSession,\n user: s.user,\n setUser: s.setUser,\n }))\n )\n\n// Loading States Hook\nexport const useAuthLoading = () => useAuthStore(s => s.loadingStates)\n\n// Application Logo Hook\nexport const useApplicationLogo = () => {\n const applicationInfo = useAuthStore(s => s.applicationInfo)\n // Retorna o logo da aplicação ou null (componentes usam fallback padrão)\n return applicationInfo?.image || null\n}\n","import { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"./AuthProvider.jsx\";\n\nexport default function ProtectedRoute({\n fallback = <p>⌛ Carregando...</p>,\n redirectTo = \"/login\"\n}) {\n const { user, loading } = useAuth();\n\n if (loading) return fallback;\n if (!user) return <Navigate to={redirectTo} replace />;\n\n return <Outlet />;\n} ","import { Paper, Stack, Image, Title, Text } from '@mantine/core'\n\n/**\n * Container wrapper para componentes de autenticação\n * Usa Mantine Paper com estilo consistente\n */\nexport default function AuthCard({ children, title, subtitle, logo, logoHeight = 28, width = 350, ...props }) {\n return (\n <Paper\n withBorder\n shadow=\"md\"\n p={24}\n w={width}\n radius=\"md\"\n {...props}\n >\n <Stack gap=\"sm\">\n {(logo || title || subtitle) && (\n <Stack gap=\"xs\">\n {logo && (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n )}\n\n {title && <Title order={3}>{title}</Title>}\n\n {subtitle && (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n )}\n </Stack>\n )}\n\n {children}\n </Stack>\n </Paper>\n )\n}\n","var img = \"data:image/webp;base64,iVBORw0KGgoAAAANSUhEUgAAAjwAAADICAYAAADskzu8AAAQAElEQVR4nOzdCXxcZ3ku8PecM6PF1uZ9kfc4TmKyOMRZHNtYjm1tTlISMC2BQFhCQptAKGEp9Jbc20Jvoe29BUprmqZAAzfgEEJSW4vtxCzGEBKy4uyJsRPvliVZtpbRzLnPK49TR5FG0mjON2d5/r/f8RnPpjNHoznPfN933i8mI3TR+kfjB5wppXGraFLKdVZZIu8Qsc4ScWfh5rFYCoUofxLiuh14T76G9+SzYjsPW5J4OFkUPzipo7zjsZushBARQVVVVRFcZVnWma7rVuCq41j2pVKp+5ubmw9Knvh1u4LOGu4dL1rvxg/L4fNwAKnDL+FqHFQuwKMZbigIehB+Hrcse2PSsTbtHtP8hLznPUkhoshaunRpaXl5+SdxcXz/2xAykggX32lqavq9GObX7QoDezh3mnFn2/wjTuu3Lce5D2HnS9jtlzDsUIAUINtfmnLlr+xe98dz2lbfNeuu1nlCRJFVWlr6XhkgVCgc5xws71uyZEmxGObX7QqDWMZb73DtWTNa3mVL7zewpyeLqy1CrhAFkSWuvt9nI+Zfb7vJ2rn/fuTWV/eMv1fusFJCRFFiaXdRpjvYtl1UVlamX4xMtqYY2S50melnYUlxcXEJnq+gs7Ozu6en50QsFuvctm1bl4TUoIGn8rvtE+KJo5/B/temtSLmHAqNvuBuTUbz8HdmVx5dXLi+/asv3FR2WIjIuLq6ujKsPiAjhL/fToSDDlxsx7I/mUy+3tzcfEiG8a184cKFcW0tGep+A92ntrb2g7i+dLDH9Pb23rd58+a9koXRbFcm1dXVYx3HOQ8Xz8AyG4+feOo27EcpKirqWxRen44Xeh5B6JkTJ048F6YANGDgmfMvR+dIT+/f4bCwTkYwzocoUCyrGG/u2xNOch7e87fv+vi4XUJERqFlIV5YWDjiLmYctN/0f7ROSH19fTsO4M90d3fveOihh14f7LE7d+7smTVr1j4c1KdJBl1dXbsH+LmzsIwb7DEFBQVFkqXRbNdAampqxuO5rsDFxdjmguE8BvfXk4/ergtagBIIpFtLSkq2btiwIfDjHt8yhmfB+vaJVlz+HjvnWmHYofDT9/gfScz9O23VFCIKsjIcuy5HgLoNB/vlme6YSqUezHQ7Woya0brRKoblarsQVC5DePkL3R/DDTv94XHa4lTb0dHxeYTJBRJwbw48d7h2t937WVfca92T4x2IQq/vvY7WzHii9zP6NyBEFGja5QPX4CD9rsHug+6v5xAefoKA0dvvpm50S93b1NTUKHmQi+1C2NFT2t8z0q6vweB5JqDl7GPYn4slwN4UaubObHm3m5Jb9OUJUbToe/6Ts2a0PIa24g1CRGGwFAfp3k2bNv10oBsRHn6xdu3aZ9CtNhGtIS6WtoaGhhbclNfum9FsF1q2/ggBZYXkGJ7TRgh7L8JUDNvyawmgNwKPnqbrukk9G4unu1FUFaF55xsz7mx7/LWPlr8kRBQGK2pra59rbGx8fqAbN27ceBSro+Iz2WxXdXX15WjZynnYOR1anwLbCn4y8PzoR47dlvqS2NYkIYoyy5occ1NfvGi9+zFWZSbyB3SnvNLvKm2R1fE65TJUeZWTrsHyv0+/QmvZlJSUzBjsAbFYrBUtGYfEsGy3C2FnMsLOtTIMWsAQyxEsh7EPtXKz1tXTAc5zZJDZEvQx8P3Nmzc/MdTz62nv2JbyeDxeiseV61ltWMbg8R24XscftXd2drZu27atQ4ZpGPtlN/ZL96n/6/7Az5yG11SCdTta+Z7ue6PMOlG9SCx3BV4Ru7Io2k7WmlrZV1Vc5HdCRHmFA2YKB7JvDnKzjS4cPQOpDge28sGeA7dNRtfWVBz09p+6Tg+eOCB/XAb3Myw/FcOy3S68xndqt1OGx/WFFqweQth4eJDTzW3sp/m439V4rumnXa/jh+5C2HlxsOdOnxGmY3wW6plsA91Hz6Q7ZcyYMTrWSAPXgxpGZAhD7ZdEIvH3WO3F9i/C9i/H8849dRuC1uNYPR3TKSNakq31KZFKph0ihT9026m7aP2jTz9202K28hD5V6qpqekRHGz34CB3m55VNOgdU6m3YbVfQghddmchbJyd6T7YPyew3ImuvV0Z7pZC+HgB639AGLkS+3OlPg6BYT3Czp6BHqCtOcXFxWv0Yqb9P5B0PaAPYft34fJ9CLavSZawnTGEnQ/h4nn9Sxbg/321mexDJW0lCNBrLZ6VRZTm6qmYV+skuUJEvofQsw8HvBeGuNs0CSl8Xl061H0QWu4eIuyczkX4eBAhcWNPT883mpub9wx2R4SdMRqMRhp2TpfuSrsN3VDnSpbQevRhrM4b6DY33XtlO12JydhdFwoR/TfXvSBuFXFMG1FApMeiDAoHvawLAvqcjdeWsXUHweURPd1dRggBaSscyHQfBCMt9viIjJJ2xzmOc72OvZEsIDSVDXkfV+IrpW9yRSJ6gyWFKddZJUQUCO4QY1BxMA18peCBrF69WruzMoa5rq4ur2sKNWPplVHSViL8nq4Uj9iSSq4UInoLfHq+Q4goEHCwrMx0O1o5jkgIoStneqbb8br3eV0xeqBWHvzcNiy/xPU/QrfYv+Gy1jfbjv9nHBeJ3+O5VVVVE8UDMTz9OUJEA7DOEiLyvdra2vOHmmUcWiScxma6EfvFSNBLJBKb4/H4YgSa3yDcPDrYuJ+lS5c2l5WV3ZZpPrLCwkLNJb+QLOlZWXj+V7G0YOnF//sqTiPwuDM4ZRbRQNxZQkR+ZC9btqy8tLR0PC5fhiXjOFQ9HRtdJb+XEBpqbJKeZSUjVFdX9z8HmxFez/RCi87O/tdv2bKl7aqrrvpfDz74YMaft3379mMIqD/F898w2H3QRZex1WowCFp6qv23m5qadg10ewzxr0SIaCBjhYjySgez1tfX/6OMAg7ST6YrF4cO9k/XELcbG6M7VNg55dixY6+Wlw9aNkl/X+WSBbzWBxDGdg12u56KnvWpZEQhVyhEFGg6CSeWZgmv9iFuzyo8ZEOrIaPVbSFa02bKyTIAeuaUfnEcM1RRxH5G3BCDkHR0qDm+WHuHiIhCSas040D7nebm5oMSUghzx9AFlOkusxcuXFiwc+fOHvGOhW6qFdjXq3UKCRmlbGr64DFDTgMS2EnAiIiIMkHg+eFA403CJJlM7sp0u7aszJw5c8jChKNgI+x8EKHr6lyEnWzpvGBD3YeBh4iIQgUHvwPd3d3fbGxs/K2E3NatW3US0IxTZiCMVGl3k3igpqZmBZ7/fMkzhK0hpwFilxYREYWGdmNpZWEEgVckInRQNg74Uwe7XU8BLy8v/3h1dfV6dO8dl9yxEHaWy+DbpfNwbcLFPfj5ezds2PBG8Ue0Cn0VjzWaQRh4iIjItxBeXBywt/S7ehKuWzTQ/bULB8uVq1evfnnLli27JQK0wB9WKzJVXMZtM7D61Nq1a3+wcePGnIRBPFcFQk3FYLfjti0IWL8Sn2DgISIi39KZrhug/9VoIZiAg/jMgR6D661YLHbdunXrvnZ6q4IJaNG4tK6ubkRFSxFYEk1NTVskS9pqg66lzbh4Vab7Yb+MRwi5Bdv3IrbzSVx+Y6Av9lcc23Em7nPuYDV4+kskEhV43KC343naBroeLU0XmW7dUQw8REQUNNrqczcO2LcPdkYPDqiTOzo6NADcLwbh514sI5SupZN14FEITD9DkNGwMneo+2pVagSVt1SmdhxHRgKhqT1T4EGAuvyqq656/vT6PDojOn7OtZIHHLRMRESBg0YfbZ3YlOk+CETLcYAdMgCERAoB5C4xOIXG1q1bj2IfHxvsdgSbM3p7e79YX19/PVrkrkEg+ywC0ocRuDwZQD0UBh4iIgokhJ6foxVh12C3a9cWDrrvx4E2EkVE0wOS78Q+GaoYYa70DRDPdId0uLlQBzdnGlhtAgMPEREFFRoY3Lux7h7sDulJKt8pEbFp06b9CCFfw355UXIIz9eJ59WpG54//fr29vaHcFs2E5S+kOE2VzzAwENERIHV1NTUgm6TBzPdB6Hn0rVr154jEaEtPQgm/4qAsiHLMPKGdNDZhq6oLzc2Nm7DVW8aBL5jx45O7N9/16kdhvuc6Hrbit9ZpoKQnsxozsBDRESBpqc+46D8Uqb74Pb3VlVVFUl0uAgoOxB8voIw8p94/U9h3TGsB7puEssrCCb3dHZ2fgnP80CmiUG1VQn3+1utuZMp+GAbDiYSie8hpG6UPLDm3NniSdMRURjs+uh4T75pEBHlQ319/VQEkwlyclLPsafX7kFY6XEc59Xjx4/v3rZtW69kCT9jNlpwJuK5yvGc+hnajlagFoQvrf+Tt8zBwEOUAQMPEVE4sA4PERERhR4DDxEREYUeAw8RERGFHgMPERERhR4DDxEREYUeA88QbEskbmsVpPCcrNOV5Il5REQULQw8Q5hb7shtFxZJgROOwJNyXfnUtuMIPUJERBQZDDwZaMS5aLIja+cVhKh9R+TuKd2yfW/WNaWIiIgCh1NLZGAh5SyvjIcq7KjVs+JCREQUJQw8GWjQOX9i+BrBNMQVx1hAmIiIooOBJ4OZJbZUloZvF00otmVuGX/1REQUHTzqZXAFun5CMlb5TYrRaLVoModvERFRdDDwZFA3p0DCSM84e/tkB2shIiKKBAaeQZQXWnJBSFtBtNFqfoUjE4r46yciomjgEW8Q505w+goOhtXMUlsmFXPgMhERRQMHcgxiWWW4T90ej9adtyHUPX04Kay7TEQUHHV1dTNc1/2BeMyyrOsaGhpek5Bg4BlAEfbKxVPCv2tWzozLD1/oEZeJh4goMBBExmC1XDyW/jmhwS6tAUwf68jE4vDvmgsmxUJ5FhoREVF/DDwDmFduy7ii8CeByWNOdmsRERGFHQNPPzo7+lnjHCmJR6PpQ+cJIyIiCjsGnn7GIuicj64eOyJdPfVzwllckYiI6HQctNzP2JglCyqikwOnlTgyp9yRl1uTQjRc1dXVY23b3m9ZVol4zHXdmxsbG9cLEdEosIWnn4nFllSWRmdcizbuXDKF43hoZBzHudFE2FH4OX8uRESjxMDTz4oZ8VAXHBxIzZyCyL1mGhULrS6fEHMW1NbW1gsR0SjwMNfPskrve/m+t7NbvvlEl/zkpR7xgxkldt8ZW0TDgfBxDVpd5opZnxIiolHgGJ7TFKFn58JJ3u6Szl5XvvybE5J0ReaW23LN/PyfJTWh2O6bW+v1jpQQDYPx8IGAtbqurm5hQ0PDTiEawpo1axah23WCeMi27T2bNm16QSgwGHhOc/HUmBTGvD1laeeRpPSkc8WeYylJ4HK+u5PKCiw5Z7wjv3g9ISlWXaYMEDouxGqZ5AG60T6D1YeEaAixWOyrWK0RD+H9+E2sbhUKDPZjnGblDO/nz3r0QO8bl7uTIi8czf/ZUXoK/gWTHBkT4/nplFk6dOQFWnneu2rVKk+/tRNReDHwpMWw0/M3pAAAEABJREFUJ66Y5X3g2bEv8ab/P3ogIX5w7oSYlBYw8NDgEDamYLVO8qewoKDgk0JElAUGnrTZpXbfDOJe0vE7Ojv56Z485I/6N9NLbJk2lm8HGhzCxqfQypLvbvBb0K1WKEREI8QjXNq5E2NS4HE5ml3tqTfG75yiXVx+mK1cu7VqZnvfwkXBlA4ZH5P8G4flA0JENEIMPKBTK1w8JSZxj+eTeKU1Kb39GnT2HU9Ja7c/zo4y0aVHweS67kfkZNjwg9uFiGiEGHigvNCSeRWO5/NnPXW4Fy08b27O0f/+od0fgWdeuSNTWY+H3kr/MvwUMhbU1NTUChHRCPDoBlp0T4vveamr1+3r0hrotO9X2vwxjkcD3xp2a1E/CBf1eSg0mJFt2yxESEQjwsADlX2Vhr1t3mnpcmXvAIX9dPzOM0f8M3Fn7Zy48FwtOh3Che/mskIX2xotRChERMMU+cCj43cWTYpJoePtYf5IV0oOd761eUeveak1KQmfVPw7e3xMJrFbi9LSoeIK8Rm0OOl8XpxUlIiGLfJHNq2/c9k078+01bCjoWcg2vpztMsfgacYu+KCiZw9nU5CqPis+BQyz/tZiJCIhivygUdbds6s8PYAr403z7Yk+6aRGEh7j9sXevygAPtj8ZQYDiZCEadhAqHiT8S/CuPx+C1CRDQMkQ88iyY5fWdpeUknCn3iUO+gt2vg0dPT/UB79s6ZgH3CqsuRl65q7Osifwhkf1ZVVcU5AYloSJEPPDVzvJ+tPIkmHh2nM5gOBJ4DJ/wzU/mcMkemsupypKULDQah9WRScXExCxES0ZAi/c1IT8NeYWDC0OMJV147NnigSaZr8fhh5nQ1ZYzVd5r+cy3+OXuMzEqlUtfbtu2XQoND+RyWu4SIfKmmpmY8WmPLkslkha4dx+nB5VYsR7du3XpADIl04JlZavedku61xw8NPn7nlJfbktKD5ON1tefh0HE8l06LycN7En1hjKIHYSdvs6JnYUF1dfWa5ubmzUJEebN06dJSWIlQswj/PT+9nHnq9ljsvyMHQk/fgtZkPTmiBY/5A9a7cNPL+MLV7MXfc6QDzyVTzLz8HXuHnhF9D1qAetCgMtYndf8umRqTGMJXkokncmpra2uwWiABkq4V5KvAg/14AB/ik8VDOEDc0NjY+F3xEL6dT8P+3Ssew2u5AK/lqcFuR6i9HAfI7eIfOpHtqLp929vby7Zv335MAkxPbojH4+/ExXV4v9dIFvC48VhpK9CF+n/8nm/HvtWWn58g/PygqanpF5IDkQ48Kw3NHfXr/b1D3keLEp6cdsIfg4XPGef0ha9u9mpFURCrGOO4XDMfH4wvCRF5bvXq1ecg6HwRQfWPEVS8yBJTsNyMsH0zws9uXL4HXWD/gZaf5yRLkR2ZOr7IkrPGeV9vRgckD2csjJ6pNVAl5nyJo1urzsCAbvIXDQ1YVUvAaCFCfDD6tmYQUVjgM+LtCCAPIuzsxH/f51HY6W8Wls+i5edZtJz+WFsdJQuRDTx6JlKpgVOvX2hNynCLKGc6dT0fOK9W9Gho0PAgwfQBFiIk8saSJUuKEXT+Lz4jHsF/r5Q8wcfTtdiG57Ett8oIu0QiG3jOHu9ImYHA89QIQswTh/zVf7RkWsxIKCR/0DMpsHq/BJcWIvy4EFFOIVysqKio0K4krc3lh1L8pVi+jtaeh9auXTvss0kjGXgK8etaiMDj9fxZ6rf7hx94nm/xVwuPnq110WROMxEV+NakYaFYPIK+/p9gdb94CN/+PsFChBR2iUTCyNkk+nMQdr6Ai9vkZLeSr+DvvSqVSj1RX19/3nDuH8nAo60W2sLjtQ68J19sHf64nF3tKenq9ddZUVfM5DieKEiHhE+KhxB4vo0Pp/XirUlFRUVBbqUiGhJaMo00vTuO83Wsviz+NgufLb9Ea8/5Q90xkoGnrMCWueXev3QdhNwxgiCuZ0S92Oqvbq3FU9mtFQXFxcXXYTVJPIIPpD1NaXpZPIRvfZxFnSgH8LdUK8FQhmUzWnpmZ7pTJAPPgnG2jCvy/qXvPpbqq7I8En6rbqxns80q5TQTEXC7eAgfnNqyo38Mbvqyl87Dt71VQkSRoTWv8GXqIbRWTxzsPpE8kmk3jddtFvrJ/mpbUk6MsIvqdwf9NY5HJxE9d6Ljk+pA5IWampqVWA2rDzwb+BDq7ezsfCPk6GW9TrwVxFpCRDQ689Clfc9gN0Yy8Cye4v34nW4EHZ0uoneEpXWeOjT809hNKIpZcv7EmJEB3pQftm17HQ4e2LZt2+FT/0lffkC8VZ+uKUREEYKWnlVo4b1hoNsiF3gqx6KLpsz7wKNdWa+2jbyQ4JEuV9q6/VOAUJ07wZGyQgaeMEqHgrXirW8P87qcSRci/LQQURT9w0BdW5ELPO+YUSAmGiuOo8H+9SwqJ3cnXdl73F+BZ265IxUMPKGEXHCbePg5oAOUGxsbm/tfr9d5PXgZPlBXV1cmRBQpOjcXura+3v/6yAWe2jlmqgcf7UrJwRMjDy46gegf2v0VePQsrYunsLRJ2GgYwAfDh8Rb/yInh7T156Zv89IYLKOa3JGIggmfbX+Mz7gzTr8uUoFHKysvmmTmwK1VkxNZ5BadQPRln52arlbN4jQTYZNKpW6Wk6HAEzowuaur698Gu11vMzB4+TYWIiSKJM03n+5/RWRoscFCQx99j+7P7nNcBzlrAcIen2WexWjhsdmrFSY2fEI8hG9YPz19sHJ/epveR7w1qbCw8L1CRFF0Q3rKnD6RCjzaLRMzdNR+5kj2X1wPdo68fo/XtFtrMbu1QqO2tvY9WFWKh5LJ5Ppc3Ge0EOw+I0QURcX4+7/u1H8iE3h0/qxFk2NGBiy3drvy2rHsx+EcOO5Ke4+/Ao+6ah6nmQgRT09F1wHJzc3Nm4e6n97HwODl83TyQyGiyMHnyxszu0fmK/vkMbbMKDGT7353oFdGMyXWka6UtPVoYPJXHl09Ky5/85uTU2BQcKF1Zwm6ki4Rb31rhPf9W/GW9uX/TCjI2nHw+sVw7oj3txbSrBAPYVv2YvWyjEIqlfJXpdkQwnth5cKFCwt27tzZE5nAU4mwo6HHhEf2j+49rC1ErV3+a+GpKLLkjHJHdvps+gsaGXwAeFqfJj1Y+c7h3l/vW1RU9NfYLs8+j/RbntYcampqekkokNAa+AxW7xjOfdGip6UQ1oiH8H69r6Gh4VYhvyuYPXt2PQLP/ZHo0tJhO/MM1ZLRmLJjX0JGQysta6jwW+SJWZZcNo3jeIKsurp6JlbXiIdwILg/02Dl/tKDl+8XD1kncboJIm88gy8V92DRltqPYb0Wy/W4/Bms/xNLm+RXvf4TiaNX3D5ZR8bEeGWtkvxK2+jr6Ow8jMDj6ge1+IaDeHwJAs/dz3X77iwyGp70NBKeftFBM/2IByLrY7Bt7xYPIfDcgG/+f4Fv5e1CRKP1Opbv42/3e2g5/f1Qd0ZX+tVY/SX+Di8WwxC4LtV1JFp4ChzpmwDTBJ1OIpGDybBeaPVfC49mr9mljkwZE7l6laGA1p2xWN0oHsIHy0v48NsiI6SP0ceKt8bgZ/ypENFofQVfHGZg+dxwwo5qbGx8AMsl+Bt8F/7bKWb1FSCMxJFrfJElc8vMBJ5n0RWVzEFS0Wkp/DSJ6ClTxlgys5SBJ4gcx7kR365KxEN4/mGP3cnlY0fwM7TyMt/ARFnQrim06FyJoPNFyRJCz314jiW4OOxu79HC3/3Y+vr6qZH4w185I97XHeM1DShPHeqVZA5mhuhIuLKn3X/9RuWFtiyocFiEMHgsfFh5WmhQByt3dnb+u2RJH2ug8nIlurVYiJBohPRvE0GlBi06G2WU8BxPJpNJr6e1eRP8vDOjEXhmmpkWQYsF7j6WyllX1GMH/XfGogadZZVxKXSYeIIE/efX4FvOXPHWfSMZrNxf+rH3ifc+J0Q0Ivj8uKO5ufk3kiN4rv9CiPqumDMt9IFHCw5eOtXM2Gytn3O4M3f9UL/d788SDToeqsBMDyHljokzlL4to5eL5xjKeTU1NcuFiIbrZ+jG+orkmG3bn0foMTV4oyz0gUcnCy2MmWmN2H/c7Qs9ufLU4V7fDVxWOmh5fjkTT1CgC+dCfDtbJh7SAcfom98qo6TPYWDwsn7Q/rkQ0XCcQHeznkGZ88PRpk2b9mP1SzEAf/MloQ88S6ebad3Rd8Le46mcTgnxUqv/5tQ65eozOHt6UCBAmJhLKpctMyZaea5O1yQiogzw+dE0mq7qYWgWM8LdwhOzzY3f0VnOn29J9q1zRc/2Gs2cXF5aNYvzagXBqlWrpmC1TjyUrqz8b5Ij+lwGBi/bnFSUaGj4W7xXPITW50fEALyOcJ9frNNJTCw28xK19s7vj+T+M/rlNn9W+NN9ewa7tXyvoKDgU15O2aDw/D/GN8BWyRF9Ln1O8Rh+xkfQ3VcmRDSo7u7uB8RD6C4zEngk7C0854x3pCRuZvxOInmy6GCuPXnIv3PLLa/kNBN+hoN5IVYfE49lU1k5H885AC1EeJMQ0WAexBeQDvGQfsHB3+ER8V5BaAOPnj79tgmOFBsKPDpY+cCJ3AeeZ48kfVmAUNXMjrMej4/hQ+QjWI0TD6UrKz8sOabPaWLwMlp5PiksREg0IPwNPiZmHBUDQvuHri07Z42LialyMTpDetKDYHKo05WWLn+O45mNLq3K8I97Dyp9598uHkNg8KwlxsvnPk1lbW3te4SI3gJ/gyZaXvTn5KxLPJPQ9kmMK7LkjApzB+NHPKqZo2dptXS5MrFYfOdkqHRkj08HVkdZdXX1WgOFBvUb4FwEhr8WD+C5x1tmZs/VU9TvESJ6E/wNmpr+wUgLT2gDz4QiW6aPNRd4njjoXeDZdzwlC8b5b4DwGAQerXP08J6EJ61blD3HcUwUGtRvZoGfjFNnb0ZAvLy5uflXQm9h27an3aLkX6lUykgLDxwXA0LbH7F4SkyKDBUc1LE7f/ColUPn1NKJRP3ISY+TKi3gQB4/qaurW4jVFULDhoP6pyWAENY8rw+Bg94UoUjCFydjE3yaENoWnqoZ5l6a5qq/vnyMeOW8iY5o8W3Lh7nijApHxqM1rbXbn6fPRxGaoT9r+fHN4mPYX+/UQoRo5dkjAYLftaez3yuEwclCkdTb2+vpGVqmhTLw6DxP50ww99ImFNty3dmFEkVTx1oyo8SSV9qEfGDVqlUTcPD+E6GRsvFtVlt5bpMAMRF4gIEnouLxeKi+OYWyS2vRJEcqCvkN14S4bckVrLrsGwUFBXqadTTT9yjpafxo5RkrAYJwWyoew35h4KFQCGXgWcMDsFGXTWUBQj9IFxq8RSgrCA8laOW5WXLHRNXQGeIx7JeLhCgEQhd4dCDt6tmc2NKkM8fZfTOoU36lUqnrxeNCgxGgZ7fl6s18QjyGMHKBeGjJkiVaEGOVEIVA6I5SWghvZinneDLJtiypnbLgkowAAA/iSURBVMOQmW+cDDMnKmtqat4tuWHiVNuzFy5c6FmTdkVFxbVYscmcQiF0gef8STHh6B3zrprHz8R8qq2trcFqgdCoodUkVwOXTQQee/bs2Z61wLiue60QhUToAs+KSs7vlA+LJsdkQhF3fB4ZKTQYBQg8S+rq6i6UUcLzGCmmBu8TD6xevbocqxohColQBR49M2v+OI4lyQeNOhdM4uDlfEAXzHysqoVyBi0bfyGjhOfwfAxP+uf8UXqsTU7F4/FvIbQF6qw1w/iBFzChSgfTS2yZWMzAkw9a527lzDi7E/PAtm0tNMhdn0PYne/SQoQyCniOvWKAnl1WUVHxeckhvPYrsbpOAgoh8Jh47wyhQAlVOphX7rBbJU90r+s0E+Wsf2SUFhoUj7o0Ig450h5VNyEOus+JIfhZX0BIOVdyQLuyHMe5SwLM0CzfHDMXMKEJPHG8knPGO1Ic4wE3X/TU9BmlbGEzCd0OH8fKu3lNou3G0RQixEHXWODBz4ohpDTW19efJ6NQV1d3RiwW246LkyTAEABNBJ7Z6dpXFBChOTrpRKEXTuLp6Pk0odiSs8Y57NYypKqqKoYD3SeEPKFdRWjl+Zhkqbu7+/diVmUqldpRW1ub1dQiNTU170JQeBKv+20SfC1iAPbXTUKBEZrAoy07C8Yx8ORToWPJokmxvrnMyHvFxcU6xiLQ38QD4FbJ8nPyoYceeh0rE2NJ3qCDjLH8P4SezWidunyo++tgZwSdD+H+v0K4uzcsg5QNdWmpr2D/TRMKhNCMMj+zwu6bxJPyS+cx0/DZnXSFPHe7kKdw4JyLbotrGxoa7pXs/BrLGjEM270aXVyrse3aCvEIrnoU6524/lUsOth2Hv5/NtbLw3gmFlq6jiDAidfSAfPupUuXvnP79u3DDrf4vbx7FO8pylJoEsKa2Sx85wdnVHDgsgn4VrkSq1GN16Bhy7oQIUJFg+QZDsiXYPlTBIBvYr0RV30dy224XBvW084ReHaKOVeUlZU9jVayi4e4n6XdjVieweUNWC8RMio0LTzLprMkgh9o687yyrj8ob1byDujPYOIRmSpFiLEN/LHZYSSyeR/xWKxfxQyavPmzS/id/aaGJhcNW02wuMjCDEbsX4GQfdZLIfxdzpPtwGX5+L6Rbh85mmP0bMrdwgZE4qUMG2sJXPLOXDEL9bMisvdzzLweCVdaHCteK+7s7Nz6rZt21rFh6qqqiqKi4v346KJM2U+h2XEg4H1wIuD4Es42M0XMu3nYriWEH7P+ne5VstinV4aa6AyWbjufevWrfvkhg0bkkJGhKJLa8k0TifhJ0umxaSQ+dMz6bmeTPzt/tCvYUelt+2HYgC+ob9r1apVUyQL+H39QCgftom/VbS1tdUJGROKFp5Vs8zP1P3YgV5JGR6XO6vM7qt143dxx5Kl0+Py0J6EUG6hmb4Mqw+JATjI/6v4nG4jAsUHxGNa5yYej+sg8RHPSN/T0/N1PPYL+hxCJj0kPuc4zvux+i8hIwL/B6gDZE3P4dTW7cotDx+XXsOJ57qzC+VTb8/5lDmeqJnDwOOFVCp1s23bJgoN7mxsbPT9+ALdRoRAHaC6ULx3c3V19R3Nzc0jmhR069atR7CN2hLFitgGNTQ0vIz9fgAXs2qZM0HnQUPXbBFaK7uEPBf4wDMPrR4lcbP9Wa+0JeXgiZTxFp6mXYnABJ5laOEZg3fXiV6h3NHpDkwVGvR9685pdFu/Lh5LFyL8SDY/K5lM/h98m2fgMW89lr8Sn8J7qqi4uPg9uPg9Ic8FfgzP+WjdKTIc23YeSUo+qswcQMg61JmSIBiDEDq/ggN5cqm2tlY/GCvFezpY+T8kINLbamqUvI6fGvE3LLQKPYbV/UJG4b3xNbSiGKm6PArvFzIi0IFHB8aeN9GRAsdcC4+LpPO7g719a9N6kmhdag1I4EEIvWgKhyzkmJFT0XGAuAdN7B0SELqtus1igBYiRPB8p2QB3ZF/iu0MzH4Ng/R74+/E367IdkA8jUygA8+4QrtvhnSTHVrHEq7sas9P6EigD+33R4LRR6QDly/oa33j6XO5oEXKtICcGICfE6TurD6Gtzmr4NnU1LQP2/k/hIzq7u7WLsgD4l9OPB43evp8VAU68EwstqSyxOxLOIRupaPd+Qo8Ik8dTkoyAI08GnPml9syoYiBJxdwoPy0mLGzoaHh1xIw6W02Ul0Xv4vlWohQsoDt/CesNgsZkx4Q/DfiY3hPMfAYEOjAo8UGTc+fte94Slq78zdP1N6OlLR0B6Nba2aZI1PHcn6z0aqurp6J1TViALpdviXB9S9iCLpJRnx6+qmHtre366zkzwkZg6Cp7+t7xb8WpwuKkocCezTSwpVa4M7g8J2+cTt7jqXkWE/+As9+tDAd6QzGxJylBVbfGCu28YxOehoJz/9WcRA+jub/70pAdXZ2fkdfg5ixLttxF+lJJuuwrW0SENjWfQb3rRdSJSUlf4LX0CQ+hVaeDwp5KrCBRzf87ZPNDortSbny3NGk9OaxgaWly0XgCUYLjwadFTPiYjHxZA2tOzq5441iAD5wfxSkwcr96bbraxADtIhgQUHBn0uWGhsbdyHILsfF18X/dmO5HEuQA4/oFA67d+++WvxbkJBlCzwW2MBTUWj+tOfupMjzLfmd9uR4wpUXWs3XAMrWBRNjEmevVtYcx7lR67+IAejOCtxg5f4Mv4Yb04E0K5s2bXoa26szbD8rPoUWkVexWqoBTUJg586dPWgJXIvX9W3xGT0DsK6u7jIhzwT2ULRyZlwcw1vfnXRl97H8t648frBXkgEJPOOKLOMtcSFi4YPZVKHBnU1NTY9IwKVfg5HByzAOgXRU03zomVtYXYbf8y/EZ7BNd3d1db29oaHhNQkRHcSMAHcTwuaVfqvRg+25XsgzgQ08tXMKxLRWdCdpheV8e64FgScoTTxw5Tzzv6swqKmpuVa/9YkB+KD9ZwkJk68FP0u7tUbVaYtA0V5aWroSz/VnWA5K/u1GGFiDUHC9nyePHS2EzY2JRGIh9vnD4hN6tta6detYsdUjgQw8WnBw2XTzrQa/2pvwRcvKq+0p6QpKEw/UzeFs9tlIz4ruOR2Mim/yoSltr6/F1ABbDaQIplfLKOn4EgSMb2Hbz8C2/20+BginWzv+srW19WyEgS0SAVu3bj2A/X5FMpms1gHNWPL5wfooguYN+l4Q8kQgA8854x0pzENBu9/s90fRPx00vWNvcCapGldky1nj+KVlJLTOCw6my8QA/JwfBnmwcn/pwcs/FENyGUx123EA/gKCz1Qc/G4RM91zWpTv8/iZs9Ha9OUdO3Z0SsQ0Nzdvxn6vxe/yXGQe02cq/gy/6zrs+4sRNH8q5JlADq64fFpc8uGZw/4J3r/a1yt1c4PTVbS8MibPtvCLy3BpnRfL0Olt+FmBH6zcn74m7L8PiwH4OVUIqAtxwMpZOEkHUO2a++fa2tpleD21tm2vwv9zMqhVp7jAdt+Hi/diux8U6pP+Hd5QVVV1S0FBQZXjOKvx/1XYX2+zcvgHied7Cqt7ent7v79ly5bdQkZYc+5sCU7fCGjdnbvrSuQyw6FHx+4suafNN2dHzSmz5eF15RIUv96XkA80dvRViw6SXR8dz8448g0ciEsKCwuXIfxchIPm+bjqAhyHzxrGQ1/G8gSWx9Ga8BhaEhqFhq26unoyws8avYj9fjbWk7HfJ2BdOoyHv4jleTzuWTzmuUQisQMhx7dn5oVZ4Fp4po21ZfIY8z1xTx7q9dWp4Dqfl05xofOJBcEU/M6m43f3Bx+c5UYUVOmWn8b08oaamprxaC2oQKuEfgsqQ6jpxAG6FQfZo2i1OCQ0Kujy0sHk308vb7JmzZrp2NcTEWbG6X5PJpPHsG5HMD2mA9KFfCNwgUenk8jHQf4Rn4zfOd2zR5Jy+fRgBJ7xRbbMH+cw8BB5AC02OuDYV6dYR8XmzZv3YrVXyPcCNWhZz/Q5s8Lum7LAJB23/9sD/gs8fgxhg9Hf2cLxjtGpQIiIiE4JVOApwtHy3IkxiRne6iNdKdl33H9DnbbvTQSm4rKG1YumxGRsnImHiIjMC1TgKcHBcuEE86c3a3Xlbh/WvTnc6WIJThfRmejSKilg4CEiIvMCFXjKCy2ZVWp+k587kpSuXv8Fno6E2zd7e1DowOX55azHQ0RE5gUq8CyZHpNiwwUHtctIZ0jv8WEJmeMJkVfaglPbRsfv1M7JTw0lIiKKtkAFnhUzzJ9Upq0or3ekxI9DZbTV6QWEsd4Anfh0OUKrxV4tIiIyLDCnpVt9iyVPHDJ7ZtLhE65vW1E0hD2D7rbfHkgYb/nKlp7xVlFgydHuQNW7JCKigAtMpWU9nE8Za75Bqhd9Wq04OPu1FUUnUi0vtAM1OWdLZ0p6AtIqxUrLREThEJgWHk1l+4+zaF1/3cmT014QERHR4AI5eSgRERHRSDDwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6NlYuoWIBpIQIiIKBQ08x4WI3sp1O4SIiEIBgcfaLUQ0AOs1ISKiUEDgcZ8XIhqA+6wQEVEo2K7Iz4WI3sp2HhYiIgoF27aSW8XlwGWifnosSTDwEBGFhJ1wuw6JZT0pRHQa9/FkUfygEBFRKNhTkgeOua77gIjFU3CJwBWr17LsjZM6ynmWFhFRSNiP3bQ4IalkAz7m9woRiSXyetKxNj12E78EEBGFhdbhkYky8Wl8zD+MT3pXiKJM/wZc92e7xzQ/IUREFBrWqQsz7mybH5PeX+KqKUIUVZZ7MGU5S3Z/uOIVISKi0LBPXXjto+UvpURuxcUuIYoi1+3EN4BbGXaIiMLHPv0/u18b/2Os/kmEXVsUOa4r1jdf3TP+XiEiotB5U+CRO6xUIh77GuLOBkusXiGKAH2vY7mvMBX7qv4NCBERhY7d/4rXP1h2RHqtz+HiT4UtPRR+LtznJuT2F24qOyxERBRK1mA3LFjfPrHb7v2sJe4tYlnFQhQ+Ol7tn7RVsy/oExFRaFkZb73DtefObHk3mnm+gbtO0opsQhR0J089P6iD9PvGrbEbi4go9IYVYGbd1TrPTqa+hJaeFQg/lThexIQocLSQoBbYtB7uFfvLemaiEBFRJAy/xeZHP3Jmnahe5CTdetdNrcVDL8S1BULkdzo5rmU92TeFSirZoIU2WUWZiChaRtxFddF6N36opK3E6UpMdiW+EgeQlXiac3BUmYGDSgnuEhei/OnGchzvyd14Tz6PFsmf21Zyq06Sq/PG9U2lQkREkfP/AQAA//88SKkNAAAABklEQVQDAA6qYV8FYNJoAAAAAElFTkSuQmCC\";\n export default img;","import { useState } from 'react'\nimport { TextInput, PasswordInput, Button, Stack, Anchor, Divider, Group, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign In completo com Mantine\n * Suporta email/password, magic link, social login\n */\nexport default function SignInForm({\n // Configuração\n logo, // Removido default, será calculado abaixo\n title = 'Entrar',\n subtitle = 'Acesse sua conta para continuar',\n\n // Features\n showMagicLink = true,\n showForgotPassword = true,\n showSocialLogin = false,\n showSignUpLink = true,\n\n // Links\n signUpUrl = '/auth/signup',\n\n // Callbacks\n onSuccess,\n onError,\n onMagicLinkSent,\n onForgotPasswordSent,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signIn = useAuthStore(s => s.signIn)\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loadingSignIn = useAuthStore(s => s.loadingStates.signIn)\n const loadingMagicLink = useAuthStore(s => s.loadingStates.magicLink)\n const loadingResetPassword = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n password: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signIn(values.email, values.password)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleMagicLink = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await sendMagicLink(form.values.email)\n onMagicLinkSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleForgotPassword = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await forgotPassword(form.values.email)\n onForgotPasswordSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const isLoading = loadingSignIn || loadingMagicLink || loadingResetPassword\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={isLoading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Sua senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={isLoading}\n />\n\n {showForgotPassword && (\n <Anchor\n size=\"sm\"\n ta=\"right\"\n onClick={handleForgotPassword}\n style={{ cursor: 'pointer' }}\n c={loadingResetPassword ? 'dimmed' : 'blue'}\n >\n {loadingResetPassword ? labels.sendingReset || 'Enviando...' : labels.forgotPassword || 'Esqueceu a senha?'}\n </Anchor>\n )}\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loadingSignIn}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signInButton || 'Entrar'}\n </Button>\n </Stack>\n </form>\n\n {showMagicLink && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Button\n variant=\"light\"\n fullWidth\n loading={loadingMagicLink}\n leftSection={<IconMail size={16} />}\n onClick={handleMagicLink}\n disabled={isLoading || !form.values.email}\n >\n {labels.magicLinkButton || 'Enviar Link Mágico'}\n </Button>\n </>\n )}\n\n {showSocialLogin && (\n <>\n <Divider />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={isLoading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={isLoading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignUpLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.noAccount || 'Não tem uma conta?'} <Anchor href={signUpUrl}>{labels.createAccount || 'Criar conta'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, PasswordInput, Button, Stack, Anchor, Center, Text, Divider, Group } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconUser, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign Up com Mantine\n */\nexport default function SignUpForm({\n // Configuração\n logo,\n title = 'Criar Conta',\n subtitle = 'Preencha os dados para se cadastrar',\n\n // Features\n requireName = true,\n showSignInLink = true,\n showSocialLogin = false,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSuccess,\n onError,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signUp = useAuthStore(s => s.signUp)\n const loading = useAuthStore(s => s.loadingStates.signUp)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n name: '',\n email: '',\n password: '',\n confirmPassword: '',\n },\n validate: {\n name: value => (requireName && !value ? labels.nameRequired || 'Nome obrigatório' : null),\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signUp(values.email, values.password, values.name)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n {requireName && (\n <TextInput\n label={labels.name || 'Nome'}\n placeholder={labels.namePlaceholder || 'Seu nome'}\n leftSection={<IconUser size={16} />}\n {...form.getInputProps('name')}\n disabled={loading}\n />\n )}\n\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Crie uma senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signUpButton || 'Criar Conta'}\n </Button>\n </Stack>\n </form>\n\n {showSocialLogin && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={loading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={loading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.hasAccount || 'Já tem uma conta?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para envio de Magic Link\n */\nexport default function MagicLinkForm({\n // Configuração\n logo,\n title = 'Login sem Senha',\n subtitle = 'Receba um link de acesso no seu email',\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const loading = useAuthStore(s => s.loadingStates.magicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await sendMagicLink(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link Mágico'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.backTo || 'Voltar para'} <Anchor href={signInUrl}>{labels.signIn || 'login com senha'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Title, Text } from '@mantine/core'\nimport { IconCheck, IconX } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Componente de verificação de Magic Link\n * Extrai token da URL e verifica automaticamente\n */\nexport default function MagicLinkVerify({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso/erro\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const verifyMagicLink = useAuthStore(s => s.verifyMagicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const verifyingTokenRef = useRef(null)\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n setStatus('error')\n setErrorMessage(labels.noToken || 'Token não encontrado na URL')\n onError?.(new Error('No token'))\n return\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyMagicLink(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Link Mágico'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto autenticamos você...'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Autenticado com Sucesso!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.authenticated || 'Você está autenticado.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Falha na Autenticação'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidLink || 'O link é inválido ou expirou.'}\n </Text>\n </Stack>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para solicitar reset de senha\n */\nexport default function ForgotPasswordForm({\n // Configuração\n logo,\n title = 'Recuperar Senha',\n subtitle = 'Enviaremos um link para redefinir sua senha',\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await forgotPassword(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link de Recuperação'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.rememberedPassword || 'Lembrou a senha?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { PasswordInput, Button, Stack, Text, Title } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconLock, IconCheck } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para redefinir senha com token\n */\nexport default function ResetPasswordForm({\n // Configuração\n logo,\n title = 'Nova Senha',\n subtitle = 'Crie uma nova senha para sua conta',\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso\n signInUrl = '/auth/signin',\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [token, setToken] = useState(propToken || '')\n const [success, setSuccess] = useState(false)\n const resetPassword = useAuthStore(s => s.resetPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n // Extrai token da URL se não foi passado como prop\n useEffect(() => {\n if (!propToken && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n const urlToken = urlParams.get('token')\n if (urlToken) setToken(urlToken)\n }\n }, [propToken])\n\n const form = useForm({\n initialValues: {\n password: '',\n confirmPassword: '',\n },\n validate: {\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n if (!token) {\n onError?.(new Error('Token não encontrado'))\n return\n }\n\n try {\n await resetPassword(token, values.password)\n setSuccess(true)\n onSuccess?.()\n } catch (error) {\n onError?.(error)\n }\n }\n\n if (success) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.successTitle || 'Senha Redefinida!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.successMessage || 'Sua senha foi alterada com sucesso.'}\n </Text>\n <Button\n component=\"a\"\n href={signInUrl}\n fullWidth\n >\n {labels.goToSignIn || 'Ir para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n if (!token) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Text c=\"red\">{labels.noToken || 'Token não encontrado na URL'}</Text>\n <Button\n component=\"a\"\n href={signInUrl}\n variant=\"light\"\n fullWidth\n >\n {labels.goToSignIn || 'Voltar para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <PasswordInput\n label={labels.newPassword || 'Nova Senha'}\n placeholder={labels.newPasswordPlaceholder || 'Crie uma nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n >\n {labels.resetButton || 'Redefinir Senha'}\n </Button>\n </Stack>\n </form>\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Button, Text, Title } from '@mantine/core'\nimport { IconCheck, IconX, IconRefresh, IconMail } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport { decodeJWT } from '../authSdk.js'\nimport AuthCard from './AuthCard.jsx'\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Card de verificação de email\n * Verifica token automaticamente e permite reenvio\n */\nexport default function VerifyEmailCard({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Email para reenvio (opcional)\n email,\n\n // Callbacks\n onSuccess,\n onError,\n onResent,\n\n // Redirect após sucesso\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const [tokenEmail, setTokenEmail] = useState(null) // Novo estado para email do token\n\n const verifyEmail = useAuthStore(s => s.verifyEmail)\n const resendVerification = useAuthStore(s => s.resendVerification)\n const loadingResend = useAuthStore(s => s.loadingStates.resendVerification)\n const user = useAuthStore(s => s.user)\n\n const verifyingTokenRef = useRef(null)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n // Se já mostramos o erro de token faltando, não precisa fazer nada\n if (status === 'missing_token') return\n\n setStatus('missing_token')\n return\n }\n\n // Tenta extrair email do token (mesmo expirado) para permitir reenvio\n try {\n const payload = decodeJWT(token)\n if (payload?.email) {\n setTokenEmail(payload.email)\n }\n } catch (e) {\n // ignore jwt error\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyEmail(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n // Se der erro, permitimos tentar novamente apenas se o usuário recarregar\n // ou se implementarmos um botão de retry que limpe o ref\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n const handleResend = async () => {\n const targetEmail = email || user?.email || tokenEmail\n if (!targetEmail) return\n\n try {\n await resendVerification(targetEmail)\n onResent?.(targetEmail)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto verificamos seu email...'}\n </Text>\n </Stack>\n )}\n\n {status === 'missing_token' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconMail\n size={48}\n color=\"var(--mantine-color-blue-6)\"\n />\n <Title order={4}>{labels.verification || 'Verificação de Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.missingToken || 'Para verificar seu conta, clique no link enviado para seu email.'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Email Verificado!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.verified || 'Seu email foi verificado com sucesso.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Verificação Falhou'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidToken || 'O link é inválido ou expirou.'}\n </Text>\n\n {/* Só mostra botão de reenvio se o token expirou e temos o email (via prop, user ou token) */}\n {(email || user?.email || tokenEmail) && errorMessage?.toLowerCase().includes('expired') && (\n <Button\n variant=\"light\"\n leftSection={<IconRefresh size={16} />}\n onClick={handleResend}\n loading={loadingResend}\n fullWidth\n >\n {labels.resend || 'Solicitar novo link'}\n </Button>\n )}\n </Stack>\n )}\n </AuthCard>\n )\n}\n"],"names":["getEnvVar","key","import","meta","env","e","API_BASE","window","location","API_KEY","configure","apiUrl","apiKey","replace","api","route","opts","cleanRoute","startsWith","url","token","getStoredToken","headers","Accept","Authorization","res","fetch","data","status","json","catch","ok","errorMessage","message","error","detail","statusText","JSON","stringify","Object","assign","Error","localStorage","getItem","setStoredToken","setItem","removeItem","handleAuthResponse","result","session","sessionToken","console","log","hasToken","hasSessionToken","hasSessionSessionToken","extractedToken","warn","decodeJWT","parts","split","length","base64Url","base64","jsonPayload","atob","Buffer","from","toString","parse","isTokenExpired","payload","exp","now","Date","isExpired","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","getApplicationInfo","socialRedirect","provider","href","React","useAuthStore","create","set","get","user","loading","loadingStates","magicLink","applicationInfo","setLoading","value","state","fetchApplicationInfo","appInfo","init","sessionError","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","s","useMemo","useEffect","handleStorageChange","event","reload","removeEventListener","interval","contextValue","createElement","Provider","useAuth","useShallow","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","useApplicationLogo","image","ProtectedRoute","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","props","Paper","_extends","withBorder","shadow","p","w","radius","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","SignInForm","showMagicLink","showForgotPassword","showSocialLogin","showSignUpLink","signUpUrl","onSuccess","onMagicLinkSent","onForgotPasswordSent","onSocialLogin","labels","cardProps","loadingSignIn","loadingMagicLink","loadingResetPassword","applicationLogo","finalLogo","defaultLogo","form","useForm","initialValues","validate","test","invalidEmail","passwordTooShort","handleSubmit","values","handleMagicLink","setFieldError","emailRequired","handleForgotPassword","isLoading","onSubmit","TextInput","label","placeholder","emailPlaceholder","leftSection","IconMail","getInputProps","disabled","PasswordInput","passwordPlaceholder","IconLock","Anchor","ta","onClick","style","cursor","sendingReset","Button","type","fullWidth","rightSection","IconArrowRight","signInButton","Fragment","Divider","orContinueWith","variant","magicLinkButton","Group","grow","IconBrandGoogle","IconBrandGithub","Center","noAccount","createAccount","SignUpForm","requireName","showSignInLink","signInUrl","confirmPassword","nameRequired","passwordMismatch","namePlaceholder","IconUser","confirmPasswordPlaceholder","signUpButton","hasAccount","MagicLinkForm","onSent","IconSend","sendButton","backTo","MagicLinkVerify","propToken","redirectDelay","setStatus","useState","setErrorMessage","verifyingTokenRef","useRef","verify","urlParams","URLSearchParams","search","noToken","current","setTimeout","verificationFailed","align","Loader","pleaseWait","IconCheck","color","success","redirecting","authenticated","IconX","failed","invalidLink","ForgotPasswordForm","rememberedPassword","ResetPasswordForm","setToken","setSuccess","urlToken","successTitle","successMessage","component","goToSignIn","newPasswordPlaceholder","resetButton","VerifyEmailCard","onResent","tokenEmail","setTokenEmail","loadingResend","handleResend","targetEmail","verification","missingToken","verified","invalidToken","toLowerCase","includes","IconRefresh","resend"],"mappings":";;;;;;AAAA;AACA;AACA,MAAMA,SAAS,GAAGC,GAAG,IAAI;EACrB,IAAI;IACA,IAAI,OAAOC,MAAM,CAACC,IAAI,KAAK,WAAW,IAAID,MAAM,CAACC,IAAI,CAACC,GAAG,IAAIF,MAAM,CAACC,IAAI,CAACC,GAAG,CAACH,GAAG,CAAC,EAAE;AAC/E,MAAA,OAAOC,MAAM,CAACC,IAAI,CAACC,GAAG,CAACH,GAAG,CAAC;AAC/B;GACH,CAAC,OAAOI,CAAC,EAAE;AACR;AAAA;AAEJ,EAAA,OAAO,IAAI;AACf,CAAC;AAED,IAAIC,QAAQ,GAAG,CAAC,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,EAAEC,QAAQ,GAAGR,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,uBAAuB;AAEjI,IAAIS,OAAO,GAAG,IAAI;;AAElB;AACO,SAASC,SAASA,CAAC;EAAEC,MAAM;AAAEC,EAAAA;AAAO,CAAC,EAAE;AAC1C,EAAA,IAAID,MAAM,EAAEL,QAAQ,GAAGK,MAAM,CAACE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAChD,EAAA,IAAID,MAAM,EAAEH,OAAO,GAAGG,MAAM;AAChC;;AAMA;AACA,eAAeE,GAAGA,CAACC,KAAK,EAAEC,IAAI,GAAG,EAAE,EAAE;AACjC;AACA,EAAA,MAAMC,UAAU,GAAGF,KAAK,CAACG,UAAU,CAAC,GAAG,CAAC,GAAGH,KAAK,GAAG,CAAA,CAAA,EAAIA,KAAK,CAAA,CAAE;;AAE9D;AACA,EAAA,MAAMI,GAAG,GAAG,CAAA,EAAGb,QAAQ,CAAA,EAAGW,UAAU,CAAA,CAAE;AAEtC,EAAA,MAAMG,KAAK,GAAGC,cAAc,EAAE;AAC9B,EAAA,MAAMC,OAAO,GAAG;AACZ,IAAA,cAAc,EAAE,kBAAkB;AAClCC,IAAAA,MAAM,EAAE,kBAAkB;AAC1B,IAAA,GAAGP,IAAI,CAACM;GACX;;AAED;AACA,EAAA,IAAIF,KAAK,EAAE;AACPE,IAAAA,OAAO,CAACE,aAAa,GAAG,CAAA,OAAA,EAAUJ,KAAK,CAAA,CAAE;AAC7C;;AAEA;AACA,EAAA,IAAIX,OAAO,EAAE;AACTa,IAAAA,OAAO,CAAC,WAAW,CAAC,GAAGb,OAAO;AAClC;AAEA,EAAA,MAAMgB,GAAG,GAAG,MAAMC,KAAK,CAACP,GAAG,EAAE;IACzBG,OAAO;IACP,GAAGN;AACP,GAAC,CAAC;;AAEF;EACA,MAAMW,IAAI,GAAGF,GAAG,CAACG,MAAM,KAAK,GAAG,GAAG,MAAMH,GAAG,CAACI,IAAI,EAAE,CAACC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI;AAE3E,EAAA,IAAI,CAACL,GAAG,CAACM,EAAE,EAAE;AACT,IAAA,IAAIC,YAAY,GAAGL,IAAI,EAAEM,OAAO,IAAIN,IAAI,EAAEO,KAAK,IAAIP,IAAI,EAAEQ,MAAM,IAAIV,GAAG,CAACW,UAAU;;AAEjF;AACA,IAAA,IAAI,OAAOJ,YAAY,KAAK,QAAQ,EAAE;MAClCA,YAAY,GAAGA,YAAY,CAACC,OAAO,IAAII,IAAI,CAACC,SAAS,CAACN,YAAY,CAAC;AACvE;IAEA,MAAMO,MAAM,CAACC,MAAM,CAAC,IAAIC,KAAK,CAACT,YAAY,CAAC,EAAE;MAAEP,GAAG;AAAEE,MAAAA;AAAK,KAAC,CAAC;AAC/D;AACA,EAAA,OAAOA,IAAI;AACf;;AAEA;AACA,SAASN,cAAcA,GAAG;AACtB,EAAA,IAAI,OAAOd,MAAM,KAAK,WAAW,EAAE,OAAO,IAAI;AAC9C,EAAA,OAAOA,MAAM,CAACmC,YAAY,CAACC,OAAO,CAAC,YAAY,CAAC;AACpD;AAEA,SAASC,cAAcA,CAACxB,KAAK,EAAE;AAC3B,EAAA,IAAI,OAAOb,MAAM,KAAK,WAAW,EAAE;AACnC,EAAA,IAAIa,KAAK,EAAE;IACPb,MAAM,CAACmC,YAAY,CAACG,OAAO,CAAC,YAAY,EAAEzB,KAAK,CAAC;AACpD,GAAC,MAAM;AACHb,IAAAA,MAAM,CAACmC,YAAY,CAACI,UAAU,CAAC,YAAY,CAAC;AAChD;AACJ;AACA;AACA,SAASC,kBAAkBA,CAACC,MAAM,EAAE;AAChC;AACA,EAAA,MAAM5B,KAAK,GAAG4B,MAAM,CAAC5B,KAAK,IAAI4B,MAAM,CAACC,OAAO,EAAE7B,KAAK,IAAI4B,MAAM,CAACC,OAAO,EAAEC,YAAY;AAEnFC,EAAAA,OAAO,CAACC,GAAG,CAAC,mCAAmC,EAAE;AAC7CC,IAAAA,QAAQ,EAAE,CAAC,CAACL,MAAM,CAAC5B,KAAK;AACxBkC,IAAAA,eAAe,EAAE,CAAC,CAACN,MAAM,CAACC,OAAO,EAAE7B,KAAK;AACxCmC,IAAAA,sBAAsB,EAAE,CAAC,CAACP,MAAM,CAACC,OAAO,EAAEC,YAAY;AACtDM,IAAAA,cAAc,EAAEpC;AACpB,GAAC,CAAC;AAEF,EAAA,IAAIA,KAAK,EAAE;AACP+B,IAAAA,OAAO,CAACC,GAAG,CAAC,mCAAmC,CAAC;IAChDR,cAAc,CAACxB,KAAK,CAAC;AACzB,GAAC,MAAM;AACH+B,IAAAA,OAAO,CAACM,IAAI,CAAC,sCAAsC,EAAET,MAAM,CAAC;AAChE;AAEA,EAAA,OAAOA,MAAM;AACjB;;AAoBA;AACO,SAASU,SAASA,CAACtC,KAAK,EAAE;EAC7B,IAAI;AACA,IAAA,MAAMuC,KAAK,GAAGvC,KAAK,CAACwC,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAA,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;;AAEnC;AACA,IAAA,MAAMC,SAAS,GAAGH,KAAK,CAAC,CAAC,CAAC;AAC1B,IAAA,MAAMI,MAAM,GAAGD,SAAS,CAACjD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;AAE9D;IACA,MAAMmD,WAAW,GAAG,OAAOzD,MAAM,KAAK,WAAW,GAAGA,MAAM,CAAC0D,IAAI,CAACF,MAAM,CAAC,GAAGG,MAAM,CAACC,IAAI,CAACJ,MAAM,EAAE,QAAQ,CAAC,CAACK,QAAQ,EAAE;AAElH,IAAA,OAAO/B,IAAI,CAACgC,KAAK,CAACL,WAAW,CAAC;AAClC,GAAC,CAAC,MAAM;AACJ,IAAA,OAAO,IAAI;AACf;AACJ;;AAEA;AACA,SAASM,cAAcA,CAAClD,KAAK,EAAE;AAC3B,EAAA,MAAMmD,OAAO,GAAGb,SAAS,CAACtC,KAAK,CAAC;;AAEhC;AACA;AACA,EAAA,IAAI,CAACmD,OAAO,EAAE,OAAO,KAAK;AAE1B,EAAA,IAAI,CAACA,OAAO,CAACC,GAAG,EAAE,OAAO,KAAK;AAE9B,EAAA,MAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE;AACtB,EAAA,MAAMD,GAAG,GAAGD,OAAO,CAACC,GAAG,GAAG,IAAI;AAC9B,EAAA,MAAMG,SAAS,GAAGF,GAAG,IAAID,GAAG;AAE5B,EAAA,IAAIG,SAAS,EAAE;AACXxB,IAAAA,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAE;MAAEqB,GAAG;MAAED,GAAG;MAAEI,IAAI,EAAEJ,GAAG,GAAGC;AAAI,KAAC,CAAC;AAC1E;AAEA,EAAA,OAAOE,SAAS;AACpB;;AAEA;AACO,SAASE,eAAeA,GAAG;AAC9B,EAAA,MAAMzD,KAAK,GAAGC,cAAc,EAAE;EAC9B,MAAMyD,KAAK,GAAG1D,KAAK,IAAI,CAACkD,cAAc,CAAClD,KAAK,CAAC;AAC7C+B,EAAAA,OAAO,CAACC,GAAG,CAAC,kCAAkC,EAAE;IAAEC,QAAQ,EAAE,CAAC,CAACjC,KAAK;AAAE0D,IAAAA;AAAM,GAAC,CAAC;AAC7E,EAAA,OAAOA,KAAK;AAChB;;AAEA;AACO,SAASC,cAAcA,GAAG;AAC7B,EAAA,MAAM3D,KAAK,GAAGC,cAAc,EAAE;EAC9B,IAAI,CAACD,KAAK,IAAIkD,cAAc,CAAClD,KAAK,CAAC,EAAE,OAAO,IAAI;AAEhD,EAAA,MAAMmD,OAAO,GAAGb,SAAS,CAACtC,KAAK,CAAC;AAChC,EAAA,OAAOmD,OAAO,GACR;IACIS,EAAE,EAAET,OAAO,CAACU,GAAG;IACfC,KAAK,EAAEX,OAAO,CAACW,KAAK;IACpBC,IAAI,EAAEZ,OAAO,CAACY,IAAI;IAClB,GAAGZ;AACP,GAAC,GACD,IAAI;AACd;;AAEA;AACO,MAAMa,MAAM,GAAG,OAAOF,KAAK,EAAEG,QAAQ,EAAEF,IAAI,GAAG,EAAE,KAAK;AACxD,EAAA,MAAMnC,MAAM,GAAG,MAAMlC,GAAG,CAAC,qBAAqB,EAAE;AAC5CwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;MAAEG,QAAQ;AAAEF,MAAAA;KAAM;AAClD,GAAC,CAAC;EAEF,OAAOpC,kBAAkB,CAACC,MAAM,CAAC;AACrC;AAEO,MAAMwC,MAAM,GAAG,OAAON,KAAK,EAAEG,QAAQ,KAAK;AAC7C,EAAA,MAAMrC,MAAM,GAAG,MAAMlC,GAAG,CAAC,qBAAqB,EAAE;AAC5CwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEG,MAAAA;KAAU;AAC5C,GAAC,CAAC;EAEF,OAAOtC,kBAAkB,CAACC,MAAM,CAAC;AACrC;AAEO,MAAMyC,OAAO,GAAG,YAAY;EAC/B,IAAI;IACA,MAAM3E,GAAG,CAAC,gBAAgB,EAAE;AAAEwE,MAAAA,MAAM,EAAE;AAAO,KAAC,CAAC;AACnD,GAAC,CAAC,MAAM;AACJ;AAAA,GACH,SAAS;IACN1C,cAAc,CAAC,IAAI,CAAC;AACxB;AACJ;AAEO,MAAM8C,YAAY,GAAG,YAAY;EACpC,IAAI;AACA,IAAA,MAAM1C,MAAM,GAAG,MAAMlC,GAAG,CAAC,eAAe,EAAE;AAAEwE,MAAAA,MAAM,EAAE;AAAO,KAAC,CAAC;IAC7D,OAAOvC,kBAAkB,CAACC,MAAM,CAAC;GACpC,CAAC,OAAOd,KAAK,EAAE;IACZU,cAAc,CAAC,IAAI,CAAC;AACpB,IAAA,MAAMV,KAAK;AACf;AACJ;;AAEA;AACO,MAAMyD,aAAa,GAAG,OAAOT,KAAK,EAAEU,WAAW,KAAK;AACvD,EAAA,MAAMC,QAAQ,GAAGD,WAAW,KAAK,OAAOrF,MAAM,KAAK,WAAW,GAAG,CAAA,EAAGA,MAAM,CAACC,QAAQ,CAACsF,MAAM,CAAA,uBAAA,CAAyB,GAAG,yBAAyB,CAAC;AAEhJ,EAAA,OAAO,MAAMhF,GAAG,CAAC,0BAA0B,EAAE;AACzCwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEU,MAAAA,WAAW,EAAEC;KAAU;AACzD,GAAC,CAAC;AACN;AAEO,MAAME,eAAe,GAAG,MAAM3E,KAAK,IAAI;EAC1C,MAAM4B,MAAM,GAAG,MAAMlC,GAAG,CAAC,CAAA,8BAAA,EAAiCkF,kBAAkB,CAAC5E,KAAK,CAAC,CAAA,CAAE,CAAC;EAEtF,OAAO2B,kBAAkB,CAACC,MAAM,CAAC;AACrC;;AAEA;AACO,MAAMiD,cAAc,GAAG,OAAOf,KAAK,EAAEgB,UAAU,KAAK;AACvD,EAAA,MAAMC,QAAQ,GAAGD,UAAU,KAAK,OAAO3F,MAAM,KAAK,WAAW,GAAG,CAAA,EAAGA,MAAM,CAACC,QAAQ,CAACsF,MAAM,CAAA,oBAAA,CAAsB,GAAG,sBAAsB,CAAC;AAEzI,EAAA,OAAO,MAAMhF,GAAG,CAAC,uBAAuB,EAAE;AACtCwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEgB,MAAAA,UAAU,EAAEC;KAAU;AACxD,GAAC,CAAC;AACN;AAEO,MAAMC,aAAa,GAAG,OAAOhF,KAAK,EAAEiF,WAAW,KAAK;AACvD,EAAA,OAAO,MAAMvF,GAAG,CAAC,sBAAsB,EAAE;AACrCwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAElB,KAAK;AAAEiF,MAAAA;KAAa;AAC/C,GAAC,CAAC;AACN;;AAEA;AACO,MAAMC,WAAW,GAAG,MAAMlF,KAAK,IAAI;EACtC,MAAM4B,MAAM,GAAG,MAAMlC,GAAG,CAAC,CAAA,yBAAA,EAA4BkF,kBAAkB,CAAC5E,KAAK,CAAC,CAAA,CAAE,CAAC;EAEjF,OAAO2B,kBAAkB,CAACC,MAAM,CAAC;AACrC;AAEO,MAAMuD,kBAAkB,GAAG,OAAOrB,KAAK,EAAEU,WAAW,KAAK;AAC5D,EAAA,MAAMC,QAAQ,GAAGD,WAAW,KAAK,OAAOrF,MAAM,KAAK,WAAW,GAAG,CAAA,EAAGA,MAAM,CAACC,QAAQ,CAACsF,MAAM,CAAA,kBAAA,CAAoB,GAAG,oBAAoB,CAAC;AAEtI,EAAA,OAAO,MAAMhF,GAAG,CAAC,+BAA+B,EAAE;AAC9CwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEU,MAAAA,WAAW,EAAEC;KAAU;AACzD,GAAC,CAAC;AACN;;AAEA;AACO,MAAMW,UAAU,GAAG,YAAY;AAClC,EAAA,OAAO,MAAM1F,GAAG,CAAC,eAAe,CAAC;AACrC;;AAEA;AACO,MAAM2F,kBAAkB,GAAG,YAAY;EAC1C,IAAI;AACA,IAAA,MAAM9E,IAAI,GAAG,MAAMb,GAAG,CAAC,yBAAyB,CAAC;AACjD,IAAA,OAAOa,IAAI,EAAEA,IAAI,IAAI,IAAI;GAC5B,CAAC,OAAOO,KAAK,EAAE;IACZiB,OAAO,CAACM,IAAI,CAAC,6CAA6C,EAAEvB,KAAK,CAACD,OAAO,CAAC;AAC1E,IAAA,OAAO,IAAI;AACf;AACJ;;AAEA;AACO,SAASyE,cAAcA,CAACC,QAAQ,EAAET,UAAU,GAAG,OAAO3F,MAAM,KAAK,WAAW,GAAGA,MAAM,CAACC,QAAQ,CAACoG,IAAI,GAAG,GAAG,EAAE;AAC9G,EAAA,IAAI,OAAOrG,MAAM,KAAK,WAAW,EAAE;AACnCA,EAAAA,MAAM,CAACC,QAAQ,GAAG,CAAA,EAAGF,QAAQ,CAAA,cAAA,EAAiBqG,QAAQ,CAAA,UAAA,EAAaX,kBAAkB,CAACE,UAAU,CAAC,CAAA,CAAE;AACvG;;AC3SA,MAAM,eAAe,GAAG,CAAC,WAAW,KAAK;AACzC,EAAE,IAAI,KAAK;AACX,EAAE,MAAM,SAAS,mBAAmB,IAAI,GAAG,EAAE;AAC7C,EAAE,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AACzC,IAAI,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO;AAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AACtC,MAAM,MAAM,aAAa,GAAG,KAAK;AACjC,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC;AACjJ,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrE;AACA,GAAG;AACH,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK;AAC9B,EAAE,MAAM,eAAe,GAAG,MAAM,YAAY;AAC5C,EAAE,MAAM,SAAS,GAAG,CAAC,QAAQ,KAAK;AAClC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,IAAI,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3C,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE;AAChE,EAAE,MAAM,YAAY,GAAG,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC;AACnE,EAAE,OAAO,GAAG;AACZ,CAAC;AACD,MAAM,WAAW,IAAI,CAAC,WAAW,KAAK,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC;;AClBnG,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG;AAC7B,SAAS,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,EAAE;AAC5C,EAAE,MAAM,KAAK,GAAGW,OAAK,CAAC,oBAAoB;AAC1C,IAAI,GAAG,CAAC,SAAS;AACjB,IAAIA,OAAK,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACtE,IAAIA,OAAK,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC5E,GAAG;AACH,EAAEA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5B,EAAE,OAAO,KAAK;AACd;AACA,MAAM,UAAU,GAAG,CAAC,WAAW,KAAK;AACpC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC;AACtC,EAAE,MAAM,aAAa,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC7D,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC;AACnC,EAAE,OAAO,aAAa;AACtB,CAAC;AACD,MAAM,MAAM,IAAI,CAAC,WAAW,KAAK,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;;AChBpF;AACO,MAAMC,YAAY,GAAGC,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,MAAM;AAC9CC,EAAAA,IAAI,EAAE,IAAI;AACVC,EAAAA,OAAO,EAAE,IAAI;AACbjF,EAAAA,KAAK,EAAE,IAAI;AAEX;AACAkF,EAAAA,aAAa,EAAE;AACX5B,IAAAA,MAAM,EAAE,KAAK;AACbJ,IAAAA,MAAM,EAAE,KAAK;AACbK,IAAAA,OAAO,EAAE,KAAK;AACd4B,IAAAA,SAAS,EAAE,KAAK;AAChBtB,IAAAA,eAAe,EAAE,KAAK;AACtBK,IAAAA,aAAa,EAAE,KAAK;AACpBE,IAAAA,WAAW,EAAE,KAAK;AAClBC,IAAAA,kBAAkB,EAAE;GACvB;AAED;AACAe,EAAAA,eAAe,EAAE,IAAI;AAErB;EACAC,UAAU,EAAEA,CAACtH,GAAG,EAAEuH,KAAK,KACnBR,GAAG,CAACS,KAAK,KAAK;AACVL,IAAAA,aAAa,EAAE;MAAE,GAAGK,KAAK,CAACL,aAAa;AAAE,MAAA,CAACnH,GAAG,GAAGuH;AAAM;AAC1D,GAAC,CAAC,CAAC;AAEP;EACAE,oBAAoB,EAAE,YAAY;IAC9B,IAAI;AACA,MAAA,MAAMC,OAAO,GAAG,MAAM7G,kBAAsB,EAAE;AAC9CkG,MAAAA,GAAG,CAAC;AAAEM,QAAAA,eAAe,EAAEK;AAAQ,OAAC,CAAC;KACpC,CAAC,OAAOzF,KAAK,EAAE;AACZiB,MAAAA,OAAO,CAACM,IAAI,CAAC,+CAA+C,EAAEvB,KAAK,CAAC;AACpE8E,MAAAA,GAAG,CAAC;AAAEM,QAAAA,eAAe,EAAE;AAAK,OAAC,CAAC;AAClC;GACH;AAED;EACAM,IAAI,EAAE,YAAY;IACd,MAAM;AAAEF,MAAAA;KAAsB,GAAGT,GAAG,EAAE;IAEtC,IAAI;AACA;AACAS,MAAAA,oBAAoB,EAAE;;AAEtB;AACA,MAAA,IAAI5G,eAAmB,EAAE,EAAE;AACvB;AACA,QAAA,IAAIoG,IAAI,GAAGpG,cAAkB,EAAE;;AAE/B;AACA;QACA,IAAI,CAACoG,IAAI,EAAE;UACP,IAAI;AACA,YAAA,MAAMjE,OAAO,GAAG,MAAMnC,UAAc,EAAE;YACtC,IAAImC,OAAO,EAAEiE,IAAI,EAAE;cACfA,IAAI,GAAGjE,OAAO,CAACiE,IAAI;AACvB;WACH,CAAC,OAAOW,YAAY,EAAE;AACnB1E,YAAAA,OAAO,CAACM,IAAI,CAAC,sCAAsC,EAAEoE,YAAY,CAAC;AACtE;AACJ;AAEA,QAAA,IAAIX,IAAI,EAAE;AACNF,UAAAA,GAAG,CAAC;YAAEE,IAAI;AAAEC,YAAAA,OAAO,EAAE;AAAM,WAAC,CAAC;AACjC,SAAC,MAAM;AACHH,UAAAA,GAAG,CAAC;AAAEE,YAAAA,IAAI,EAAE,IAAI;AAAEC,YAAAA,OAAO,EAAE;AAAM,WAAC,CAAC;AACvC;AACJ,OAAC,MAAM;AACHH,QAAAA,GAAG,CAAC;AAAEE,UAAAA,IAAI,EAAE,IAAI;AAAEC,UAAAA,OAAO,EAAE;AAAM,SAAC,CAAC;AACvC;KACH,CAAC,OAAOjF,KAAK,EAAE;AACZiB,MAAAA,OAAO,CAACjB,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;AAC9C8E,MAAAA,GAAG,CAAC;AAAEE,QAAAA,IAAI,EAAE,IAAI;AAAEC,QAAAA,OAAO,EAAE;AAAM,OAAC,CAAC;AACvC;GACH;AAED;EACA/B,MAAM,EAAE,OAAOF,KAAK,EAAEG,QAAQ,EAAEF,IAAI,KAAK;IACrC,MAAM;AAAEoC,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC1BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;AACA,MAAA,MAAMc,MAAM,GAAG,MAAMlC,MAAU,CAACoE,KAAK,EAAEG,QAAQ,EAAEF,IAAI,CAAC;AACtD,MAAA,MAAM+B,IAAI,GAAGpG,cAAkB,EAAE;AACjCkG,MAAAA,GAAG,CAAC;QAAEE,IAAI;AAAEC,QAAAA,OAAO,EAAE;AAAM,OAAC,CAAC;AAC7BI,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,MAAMO,GAAG;AACb;GACH;AAEDtC,EAAAA,MAAM,EAAE,OAAON,KAAK,EAAEG,QAAQ,KAAK;IAC/B,MAAM;AAAEkC,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC1BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,MAAU,CAACoE,KAAK,EAAEG,QAAQ,CAAC;;AAEhD;AACA,MAAA,IAAI6B,IAAI,GAAGpG,cAAkB,EAAE;;AAE/B;MACA,IAAI,CAACoG,IAAI,EAAE;AACP,QAAA,MAAMjE,OAAO,GAAG,MAAMnC,UAAc,EAAE;QACtC,IAAImC,OAAO,EAAEiE,IAAI,EAAEA,IAAI,GAAGjE,OAAO,CAACiE,IAAI;AAC1C;AAEAF,MAAAA,GAAG,CAAC;QAAEE,IAAI;AAAEC,QAAAA,OAAO,EAAE;AAAM,OAAC,CAAC;AAC7BI,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,MAAMO,GAAG;AACb;GACH;EAEDrC,OAAO,EAAE,YAAY;IACjB,MAAM;AAAE8B,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC;IAE3B,IAAI;AACA,MAAA,MAAMzG,OAAW,EAAE;AACnBkG,MAAAA,GAAG,CAAC;AAAEE,QAAAA,IAAI,EAAE;AAAK,OAAC,CAAC;AACnB;AACA,MAAA,IAAI,OAAO3G,MAAM,KAAK,WAAW,EAAE;AAC/BA,QAAAA,MAAM,CAACmC,YAAY,CAACG,OAAO,CAAC,aAAa,EAAE6B,IAAI,CAACD,GAAG,EAAE,CAAC;AAC1D;AACJ,KAAC,SAAS;AACN8C,MAAAA,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;AAChC;GACH;AAED;AACA5B,EAAAA,aAAa,EAAE,OAAOT,KAAK,EAAEU,WAAW,KAAK;IACzC,MAAM;AAAE2B,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;AAC7BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,aAAiB,CAACoE,KAAK,EAAEU,WAAW,CAAC;AAC1D2B,MAAAA,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;AAC9B,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;AAC9B,MAAA,MAAMO,GAAG;AACb;GACH;EAED/B,eAAe,EAAE,MAAM3E,KAAK,IAAI;IAC5B,MAAM;AAAEmG,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACnCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,eAAmB,CAACM,KAAK,CAAC;AAE/C,MAAA,IAAI8F,IAAI,GAAGlE,MAAM,CAACkE,IAAI;;AAEtB;MACA,IAAI,CAACA,IAAI,EAAE;AACPA,QAAAA,IAAI,GAAGpG,cAAkB,EAAE;QAC3B,IAAI,CAACoG,IAAI,EAAE;AACP,UAAA,MAAMjE,OAAO,GAAG,MAAMnC,UAAc,EAAE;UACtC,IAAImC,OAAO,EAAEiE,IAAI,EAAEA,IAAI,GAAGjE,OAAO,CAACiE,IAAI;AAC1C;AACJ;AAEA,MAAA,IAAIA,IAAI,EAAE;AACNF,QAAAA,GAAG,CAAC;UAAEE,IAAI;AAAEC,UAAAA,OAAO,EAAE;AAAM,SAAC,CAAC;AACjC;AAEAI,MAAAA,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACpC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACpC,MAAA,MAAMO,GAAG;AACb;GACH;AAED;AACA7B,EAAAA,cAAc,EAAE,OAAOf,KAAK,EAAEgB,UAAU,KAAK;IACzC,MAAM;AAAEqB,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC;AACjCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,cAAkB,CAACoE,KAAK,EAAEgB,UAAU,CAAC;AAC1DqB,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,MAAMO,GAAG;AACb;GACH;AAED1B,EAAAA,aAAa,EAAE,OAAOhF,KAAK,EAAEiF,WAAW,KAAK;IACzC,MAAM;AAAEkB,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC;AACjCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,aAAiB,CAACM,KAAK,EAAEiF,WAAW,CAAC;AAC1DkB,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,MAAMO,GAAG;AACb;GACH;AAED;EACAxB,WAAW,EAAE,MAAMlF,KAAK,IAAI;IACxB,MAAM;AAAEmG,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC;AAC/BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,WAAe,CAACM,KAAK,CAAC;MAC3C,IAAI4B,MAAM,CAACkE,IAAI,EAAE;AACbF,QAAAA,GAAG,CAAC;UAAEE,IAAI,EAAElE,MAAM,CAACkE,IAAI;AAAEC,UAAAA,OAAO,EAAE;AAAM,SAAC,CAAC;AAC9C;AACAI,MAAAA,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;AAChC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;AAChC,MAAA,MAAMO,GAAG;AACb;GACH;AAEDvB,EAAAA,kBAAkB,EAAE,OAAOrB,KAAK,EAAEU,WAAW,KAAK;IAC9C,MAAM;AAAE2B,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC;AACtCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,kBAAsB,CAACoE,KAAK,EAAEU,WAAW,CAAC;AAC/D2B,MAAAA,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACvC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACvC,MAAA,MAAMO,GAAG;AACb;GACH;AAED;EACAtB,UAAU,EAAE,YAAY;IACpB,IAAI;AACA,MAAA,OAAO,MAAM1F,UAAc,EAAE;KAChC,CAAC,OAAOgH,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnB,MAAA,MAAMA,GAAG;AACb;GACH;AAED;EACAC,YAAY,EAAEA,MAAM;AAChB,IAAA,IAAI,OAAOxH,MAAM,KAAK,WAAW,EAAE;AAEnC,IAAA,MAAMyH,eAAe,GAAGC,WAAW,CAAC,YAAY;MAC5C,IAAI;AACA;AACA,QAAA,IAAInH,eAAmB,EAAE,EAAE;UACvB,MAAMM,KAAK,GAAGb,MAAM,CAACmC,YAAY,CAACC,OAAO,CAAC,YAAY,CAAC;AACvD,UAAA,IAAIvB,KAAK,EAAE;AACP;YACA,MAAM0C,SAAS,GAAG1C,KAAK,CAACwC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,MAAMG,MAAM,GAAGD,SAAS,CAACjD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC9D,YAAA,MAAMmD,WAAW,GAAGzD,MAAM,CAAC0D,IAAI,CAACF,MAAM,CAAC;AACvC,YAAA,MAAMQ,OAAO,GAAGlC,IAAI,CAACgC,KAAK,CAACL,WAAW,CAAC;YACvC,MAAMS,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE,GAAG,IAAI;AAC7B,YAAA,MAAMyD,eAAe,GAAG3D,OAAO,CAACC,GAAG,GAAGC,GAAG;;AAEzC;YACA,IAAIyD,eAAe,GAAG,GAAG,EAAE;AACvB;AACA,cAAA,MAAMpH,YAAgB,EAAE;AACxB,cAAA,MAAMoG,IAAI,GAAGpG,cAAkB,EAAE;AACjCkG,cAAAA,GAAG,CAAC;AAAEE,gBAAAA;AAAK,eAAC,CAAC;AACjB;AACJ;AACJ;OACH,CAAC,OAAOhF,KAAK,EAAE;AACZiB,QAAAA,OAAO,CAACjB,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;AACnD;AACA8E,QAAAA,GAAG,CAAC;AAAEE,UAAAA,IAAI,EAAE;AAAK,SAAC,CAAC;AACnB3G,QAAAA,MAAM,CAACmC,YAAY,CAACI,UAAU,CAAC,YAAY,CAAC;AAChD;AACJ,KAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;;AAEjB;AACA,IAAA,IAAI,OAAOvC,MAAM,KAAK,WAAW,EAAE;AAC/BA,MAAAA,MAAM,CAAC4H,gBAAgB,CAAC,cAAc,EAAE,MAAM;QAC1CC,aAAa,CAACJ,eAAe,CAAC;AAClC,OAAC,CAAC;AACN;GACH;AAED;EACAK,kBAAkB,EAAEA,MAAM;AACtB,IAAA,IAAI,CAACvH,eAAmB,EAAE,EAAE;AACxBkG,MAAAA,GAAG,CAAC;AAAEE,QAAAA,IAAI,EAAE;AAAK,OAAC,CAAC;AACnB,MAAA,OAAO,KAAK;AAChB;AACA,IAAA,OAAO,IAAI;GACd;AAED;AACAoB,EAAAA,OAAO,EAAEpB,IAAI,IAAIF,GAAG,CAAC;AAAEE,IAAAA;GAAM;AACjC,CAAC,CAAC;;ACrUF,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,IAAI,GAAG;AAClD,MAAM,kBAAkB,GAAG,CAAC,KAAK;AACjC;AACA,EAAE,SAAS,IAAI;AACf,CAAC;AACD,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AAC3C,EAAE,MAAM,IAAI,GAAG,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACzE,EAAE,MAAM,IAAI,GAAG,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACzE,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAC/B,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;AACnC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5D,MAAM,OAAO,KAAK;AAClB;AACA;AACA,EAAE,OAAO,IAAI;AACb,CAAC;AACD,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AAC7C,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC7C,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC7C,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC9B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC9B,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AAC9C,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC5B,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC5B;AACA,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI;AACrC,CAAC;AACD,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;AACjC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AACjC,IAAI,OAAO,IAAI;AACf;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AACtG,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AACvE,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AAChD,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAClE,MAAM,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3C;AACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3C;AACA,EAAE,OAAO,cAAc;AACvB,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7C,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3C,GAAG;AACH;;ACjDA,SAAS,UAAU,CAAC,QAAQ,EAAE;AAC9B,EAAE,MAAM,IAAI,GAAGL,OAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACnC,EAAE,OAAO,CAAC,KAAK,KAAK;AACpB,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;AAChC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3E,GAAG;AACH;;ACJA,MAAM0B,WAAW,gBAAGC,aAAa,EAAE,CAAA;;AAE5B,SAASC,YAAYA,CAAC;EACzBC,QAAQ;EACR/H,MAAM;AAAE;EACRC,MAAM;AAAE;AACR+H,EAAAA,OAAO;AACX,CAAC,EAAE;AACC;EACA,IAAI,CAAC/H,MAAM,EAAE;AACT,IAAA,MAAM,IAAI6B,KAAK,CAAC,8DAA8D,GAAG,oEAAoE,CAAC;AAC1J;EAEA,IAAI,CAAC9B,MAAM,EAAE;AACT,IAAA,MAAM,IAAI8B,KAAK,CAAC,8DAA8D,GAAG,4CAA4C,CAAC;AAClI;EAEA,MAAMmF,IAAI,GAAGd,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAChB,IAAI,CAAC;EACtC,MAAMG,YAAY,GAAGjB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACb,YAAY,CAAC;EACtD,MAAMM,kBAAkB,GAAGvB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACP,kBAAkB,CAAC;;AAElE;AACA;AACA;AACAQ,EAAAA,OAAO,CAAC,MAAM;AACVnI,IAAAA,SAAS,CAAC;MAAEC,MAAM;AAAEC,MAAAA;AAAO,KAAC,CAAC;AACjC,GAAC,EAAE,CAACD,MAAM,EAAEC,MAAM,CAAC,CAAC;AAEpBkI,EAAAA,SAAS,CAAC,MAAM;AACZlB,IAAAA,IAAI,EAAE;AACNG,IAAAA,YAAY,EAAE;AAClB,GAAC,EAAE,CAACH,IAAI,EAAEG,YAAY,CAAC,CAAC;;AAExB;AACAe,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,IAAI,OAAOvI,MAAM,KAAK,WAAW,EAAE;IAEnC,MAAMwI,mBAAmB,GAAGC,KAAK,IAAI;AACjC,MAAA,IAAIA,KAAK,CAAC/I,GAAG,KAAK,aAAa,EAAE;AAC7BM,QAAAA,MAAM,CAACC,QAAQ,CAACyI,MAAM,EAAE;AAC5B;AACA;AACA,MAAA,IAAID,KAAK,CAAC/I,GAAG,KAAK,YAAY,EAAE;AAC5BoI,QAAAA,kBAAkB,EAAE;AACxB;KACH;AAED9H,IAAAA,MAAM,CAAC4H,gBAAgB,CAAC,SAAS,EAAEY,mBAAmB,CAAC;IACvD,OAAO,MAAMxI,MAAM,CAAC2I,mBAAmB,CAAC,SAAS,EAAEH,mBAAmB,CAAC;AAC3E,GAAC,EAAE,CAACV,kBAAkB,CAAC,CAAC;;AAExB;AACAS,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,IAAI,OAAOvI,MAAM,KAAK,WAAW,EAAE;AAEnC,IAAA,MAAM4I,QAAQ,GAAGlB,WAAW,CAAC,MAAM;AAC/BI,MAAAA,kBAAkB,EAAE;AACxB,KAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;;AAEb,IAAA,OAAO,MAAMD,aAAa,CAACe,QAAQ,CAAC;AACxC,GAAC,EAAE,CAACd,kBAAkB,CAAC,CAAC;;AAExB;AACA,EAAA,MAAMe,YAAY,GAAGP,OAAO,CAAC,OAAO;AAAEF,IAAAA;AAAQ,GAAC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AAE5D,EAAA,oBAAO9B,KAAA,CAAAwC,aAAA,CAACd,WAAW,CAACe,QAAQ,EAAA;AAAC9B,IAAAA,KAAK,EAAE4B;AAAa,GAAA,EAAEV,QAA+B,CAAC;AACvF;;AAEA;AACO,MAAMa,OAAO,GAAGA,MACnBzC,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACb1B,IAAI,EAAE0B,CAAC,CAAC1B,IAAI;EACZC,OAAO,EAAEyB,CAAC,CAACzB,OAAO;EAClBjF,KAAK,EAAE0G,CAAC,CAAC1G,KAAK;AACd2C,EAAAA,eAAe,EAAE+D,CAAC,CAAC1B,IAAI,KAAK;AAChC,CAAC,CAAC,CACN;;AAEJ;AACO,MAAMuC,SAAS,GAAGA,MAAM3C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACpD,MAAM;AAClD,MAAMkE,SAAS,GAAGA,MAAM5C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxD,MAAM;AAClD,MAAMuE,UAAU,GAAGA,MAAM7C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACnD,OAAO;AACpD,MAAMmE,aAAa,GAAGA,MAAM9C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACP,kBAAkB;;AAEzE;AACO,MAAMwB,YAAY,GAAGA,MACxB/C,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACbjD,aAAa,EAAEiD,CAAC,CAACjD,aAAa;EAC9BI,eAAe,EAAE6C,CAAC,CAAC7C,eAAe;AAClCoB,EAAAA,OAAO,EAAEyB,CAAC,CAACxB,aAAa,CAACC,SAAS;AAClCyC,EAAAA,SAAS,EAAElB,CAAC,CAACxB,aAAa,CAACrB,eAAe;EAC1C7D,KAAK,EAAE0G,CAAC,CAAC1G;AACb,CAAC,CAAC,CACN;;AAEJ;AACO,MAAM6H,gBAAgB,GAAGA,MAC5BjD,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACb3C,cAAc,EAAE2C,CAAC,CAAC3C,cAAc;EAChCG,aAAa,EAAEwC,CAAC,CAACxC,aAAa;AAC9Be,EAAAA,OAAO,EAAEyB,CAAC,CAACxB,aAAa,CAAChB,aAAa;EACtClE,KAAK,EAAE0G,CAAC,CAAC1G;AACb,CAAC,CAAC,CACN;;AAEJ;AACO,MAAM8H,oBAAoB,GAAGA,MAChClD,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACbtC,WAAW,EAAEsC,CAAC,CAACtC,WAAW;EAC1BC,kBAAkB,EAAEqC,CAAC,CAACrC,kBAAkB;AACxCY,EAAAA,OAAO,EAAEyB,CAAC,CAACxB,aAAa,CAACd,WAAW;AACpC2D,EAAAA,SAAS,EAAErB,CAAC,CAACxB,aAAa,CAACb,kBAAkB;EAC7CrE,KAAK,EAAE0G,CAAC,CAAC1G;AACb,CAAC,CAAC,CACN;;AAEJ;AACO,MAAMgI,UAAU,GAAGA,MACtBpD,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACbpC,UAAU,EAAEoC,CAAC,CAACpC,UAAU;EACxBU,IAAI,EAAE0B,CAAC,CAAC1B,IAAI;EACZoB,OAAO,EAAEM,CAAC,CAACN;AACf,CAAC,CAAC,CACN;;AAEJ;AACO,MAAM6B,cAAc,GAAGA,MAAMrD,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa;;AAErE;AACO,MAAMgD,kBAAkB,GAAGA,MAAM;EACpC,MAAM9C,eAAe,GAAGR,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACtB,eAAe,CAAC;AAC5D;AACA,EAAA,OAAOA,eAAe,EAAE+C,KAAK,IAAI,IAAI;AACzC,CAAC;;AC5Ic,SAASC,cAAcA,CAAC;AACnCC,EAAAA,QAAQ,gBAAG1D,KAAA,CAAAwC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAG,sBAAkB,CAAC;AACjCnD,EAAAA,UAAU,GAAG;AACjB,CAAC,EAAE;EACC,MAAM;IAAEgB,IAAI;AAAEC,IAAAA;GAAS,GAAGoC,OAAO,EAAE;EAEnC,IAAIpC,OAAO,EAAE,OAAOoD,QAAQ;EAC5B,IAAI,CAACrD,IAAI,EAAE,oBAAOL,KAAA,CAAAwC,aAAA,CAACmB,QAAQ,EAAA;AAACC,IAAAA,EAAE,EAAEvE,UAAW;IAACrF,OAAO,EAAA;AAAA,GAAE,CAAC;AAEtD,EAAA,oBAAOgG,KAAA,CAAAwC,aAAA,CAACqB,MAAM,MAAE,CAAC;AACrB;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACe,SAASC,QAAQA,CAAC;EAAEjC,QAAQ;EAAEkC,KAAK;EAAEC,QAAQ;EAAEC,IAAI;AAAEC,EAAAA,UAAU,GAAG,EAAE;AAAEC,EAAAA,KAAK,GAAG,GAAG;EAAE,GAAGC;AAAM,CAAC,EAAE;AAC1G,EAAA,oBACIpE,KAAA,CAAAwC,aAAA,CAAC6B,KAAK,EAAAC,QAAA,CAAA;IACFC,UAAU,EAAA,IAAA;AACVC,IAAAA,MAAM,EAAC,IAAI;AACXC,IAAAA,CAAC,EAAE,EAAG;AACNC,IAAAA,CAAC,EAAEP,KAAM;AACTQ,IAAAA,MAAM,EAAC;AAAI,GAAA,EACPP,KAAK,CAAA,eAETpE,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;GAAI,EACV,CAACZ,IAAI,IAAIF,KAAK,IAAIC,QAAQ,kBACvBhE,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,EACVZ,IAAI,iBACDjE,KAAA,CAAAwC,aAAA,CAACsC,KAAK,EAAA;AACFC,IAAAA,GAAG,EAAEd,IAAK;AACVe,IAAAA,GAAG,EAAC,MAAM;AACVC,IAAAA,CAAC,EAAEf,UAAW;AACdgB,IAAAA,GAAG,EAAC;GACP,CACJ,EAEAnB,KAAK,iBAAI/D,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAErB,KAAa,CAAC,EAEzCC,QAAQ,iBACLhE,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETvB,QACC,CAEP,CACV,EAEAnC,QACE,CACJ,CAAC;AAEhB;;AC7CA,IAAI,GAAG,GAAG,qngBAAqngB;;ACU/ngB;AACA;AACA;AACA;AACe,SAAS2D,UAAUA,CAAC;AAC/B;EACAvB,IAAI;AAAE;AACNF,EAAAA,KAAK,GAAG,QAAQ;AAChBC,EAAAA,QAAQ,GAAG,iCAAiC;AAE5C;AACAyB,EAAAA,aAAa,GAAG,IAAI;AACpBC,EAAAA,kBAAkB,GAAG,IAAI;AACzBC,EAAAA,eAAe,GAAG,KAAK;AACvBC,EAAAA,cAAc,GAAG,IAAI;AAErB;AACAC,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAC,SAAS;EACThE,OAAO;EACPiE,eAAe;EACfC,oBAAoB;EACpBC,aAAa;AAEb;EACAC,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAMxH,MAAM,GAAGsB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACpD,MAAM,CAAC;EAC1C,MAAMG,aAAa,GAAGmB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACjD,aAAa,CAAC;EACxD,MAAMM,cAAc,GAAGa,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC3C,cAAc,CAAC;EAC1D,MAAMgH,aAAa,GAAGnG,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAC5B,MAAM,CAAC;EAC/D,MAAM0H,gBAAgB,GAAGpG,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAACC,SAAS,CAAC;EACrE,MAAM8F,oBAAoB,GAAGrG,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChB,aAAa,CAAC;;AAE7E;AACA,EAAA,MAAMgH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXvI,MAAAA,KAAK,EAAE,EAAE;AACTG,MAAAA,QAAQ,EAAE;KACb;AACDqI,IAAAA,QAAQ,EAAE;AACNxI,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI,gBAAiB;AAC1FvI,MAAAA,QAAQ,EAAEmC,KAAK,IAAKA,KAAK,CAAC3D,MAAM,GAAG,CAAC,GAAGkJ,MAAM,CAACc,gBAAgB,IAAI,0CAA0C,GAAG;AACnH;AACJ,GAAC,CAAC;AAEF,EAAA,MAAMC,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAM/K,MAAM,GAAG,MAAMwC,MAAM,CAACuI,MAAM,CAAC7I,KAAK,EAAE6I,MAAM,CAAC1I,QAAQ,CAAC;MAC1DsH,SAAS,GAAG3J,MAAM,CAAC;KACtB,CAAC,OAAOd,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,MAAM8L,eAAe,GAAG,YAAY;AAChC,IAAA,IAAI,CAACT,IAAI,CAACQ,MAAM,CAAC7I,KAAK,EAAE;MACpBqI,IAAI,CAACU,aAAa,CAAC,OAAO,EAAElB,MAAM,CAACmB,aAAa,IAAI,mBAAmB,CAAC;AACxE,MAAA;AACJ;IAEA,IAAI;AACA,MAAA,MAAMvI,aAAa,CAAC4H,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;AACtC0H,MAAAA,eAAe,GAAGW,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;KACvC,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,MAAMiM,oBAAoB,GAAG,YAAY;AACrC,IAAA,IAAI,CAACZ,IAAI,CAACQ,MAAM,CAAC7I,KAAK,EAAE;MACpBqI,IAAI,CAACU,aAAa,CAAC,OAAO,EAAElB,MAAM,CAACmB,aAAa,IAAI,mBAAmB,CAAC;AACxE,MAAA;AACJ;IAEA,IAAI;AACA,MAAA,MAAMjI,cAAc,CAACsH,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;AACvC2H,MAAAA,oBAAoB,GAAGU,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;KAC5C,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,MAAMkM,SAAS,GAAGnB,aAAa,IAAIC,gBAAgB,IAAIC,oBAAoB;AAE3E,EAAA,oBACItG,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAET;GAAU,CACvB,CAAC,eAEFvH,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC1H,QAAQ,IAAI,OAAQ;AAClCmJ,IAAAA,WAAW,EAAEzB,MAAM,CAACgC,mBAAmB,IAAI,WAAY;AACvDL,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,UAAU,CAAC,EAAA;AAClCC,IAAAA,QAAQ,EAAET;GAAU,CACvB,CAAC,EAED7B,kBAAkB,iBACf1F,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AACH9C,IAAAA,IAAI,EAAC,IAAI;AACT+C,IAAAA,EAAE,EAAC,OAAO;AACVC,IAAAA,OAAO,EAAEhB,oBAAqB;AAC9BiB,IAAAA,KAAK,EAAE;AAAEC,MAAAA,MAAM,EAAE;KAAY;AAC7BjD,IAAAA,CAAC,EAAEe,oBAAoB,GAAG,QAAQ,GAAG;AAAO,GAAA,EAE3CA,oBAAoB,GAAGJ,MAAM,CAACuC,YAAY,IAAI,aAAa,GAAGvC,MAAM,CAAC9G,cAAc,IAAI,mBACpF,CACX,eAEDY,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAE8F,aAAc;AACvByC,IAAAA,YAAY,eAAE7I,KAAA,CAAAwC,aAAA,CAACsG,cAAc,EAAA;AAACxD,MAAAA,IAAI,EAAE;KAAK;GAAE,EAE1CY,MAAM,CAAC6C,YAAY,IAAI,QACpB,CACL,CACL,CAAC,EAENtD,aAAa,iBACVzF,KAAA,CAAAwC,aAAA,CAAAxC,KAAA,CAAAgJ,QAAA,qBACIhJ,KAAA,CAAAwC,aAAA,CAACyG,OAAO,EAAA;AAACvB,IAAAA,KAAK,EAAExB,MAAM,CAACgD,cAAc,IAAI;AAAkB,GAAE,CAAC,eAC9DlJ,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;IACfP,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAE+F,gBAAiB;AAC1BwB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AACpCgD,IAAAA,OAAO,EAAEnB,eAAgB;AACzBa,IAAAA,QAAQ,EAAET,SAAS,IAAI,CAACb,IAAI,CAACQ,MAAM,CAAC7I;AAAM,GAAA,EAEzC6H,MAAM,CAACkD,eAAe,IAAI,oBACvB,CACV,CACL,EAEAzD,eAAe,iBACZ3F,KAAA,CAAAwC,aAAA,CAAAxC,KAAA,CAAAgJ,QAAA,EAAA,IAAA,eACIhJ,KAAA,CAAAwC,aAAA,CAACyG,OAAO,EAAA,IAAE,CAAC,eACXjJ,KAAA,CAAAwC,aAAA,CAAC6G,KAAK,EAAA;IAACC,IAAI,EAAA;AAAA,GAAA,eACPtJ,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC+G,eAAe,EAAA;AAACjE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAET;AAAU,GAAA,EACvB,QAEO,CAAC,eACTvH,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACgH,eAAe,EAAA;AAAClE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAET;AAAU,GAAA,EACvB,QAEO,CACL,CACT,CACL,EAEA3B,cAAc,iBACX5F,KAAA,CAAAwC,aAAA,CAACiH,MAAM,EAAA,IAAA,eACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAACwD,SAAS,IAAI,oBAAoB,EAAC,GAAC,eAAA1J,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAE8F;GAAU,EAAEK,MAAM,CAACyD,aAAa,IAAI,aAAsB,CACjH,CACF,CAEN,CAAC;AAEnB;;ACjMA;AACA;AACA;AACe,SAASC,UAAUA,CAAC;AAC/B;EACA3F,IAAI;AACJF,EAAAA,KAAK,GAAG,aAAa;AACrBC,EAAAA,QAAQ,GAAG,qCAAqC;AAEhD;AACA6F,EAAAA,WAAW,GAAG,IAAI;AAClBC,EAAAA,cAAc,GAAG,IAAI;AACrBnE,EAAAA,eAAe,GAAG,KAAK;AAEvB;AACAoE,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAjE,SAAS;EACThE,OAAO;EACPmE,aAAa;AAEb;EACAC,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM5H,MAAM,GAAG0B,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxD,MAAM,CAAC;EAC1C,MAAM+B,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChC,MAAM,CAAC;;AAEzD;AACA,EAAA,MAAMgI,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXtI,MAAAA,IAAI,EAAE,EAAE;AACRD,MAAAA,KAAK,EAAE,EAAE;AACTG,MAAAA,QAAQ,EAAE,EAAE;AACZwL,MAAAA,eAAe,EAAE;KACpB;AACDnD,IAAAA,QAAQ,EAAE;AACNvI,MAAAA,IAAI,EAAEqC,KAAK,IAAKkJ,WAAW,IAAI,CAAClJ,KAAK,GAAGuF,MAAM,CAAC+D,YAAY,IAAI,kBAAkB,GAAG,IAAK;AACzF5L,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI,gBAAiB;AAC1FvI,MAAAA,QAAQ,EAAEmC,KAAK,IAAKA,KAAK,CAAC3D,MAAM,GAAG,CAAC,GAAGkJ,MAAM,CAACc,gBAAgB,IAAI,0CAA0C,GAAG,IAAK;AACpHgD,MAAAA,eAAe,EAAEA,CAACrJ,KAAK,EAAEuG,MAAM,KAAMvG,KAAK,KAAKuG,MAAM,CAAC1I,QAAQ,GAAG0H,MAAM,CAACgE,gBAAgB,IAAI,yBAAyB,GAAG;AAC5H;AACJ,GAAC,CAAC;AAEF,EAAA,MAAMjD,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAM/K,MAAM,GAAG,MAAMoC,MAAM,CAAC2I,MAAM,CAAC7I,KAAK,EAAE6I,MAAM,CAAC1I,QAAQ,EAAE0I,MAAM,CAAC5I,IAAI,CAAC;MACvEwH,SAAS,GAAG3J,MAAM,CAAC;KACtB,CAAC,OAAOd,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;GAAI,EACVgF,WAAW,iBACR7J,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC5H,IAAI,IAAI,MAAO;AAC7BqJ,IAAAA,WAAW,EAAEzB,MAAM,CAACiE,eAAe,IAAI,UAAW;AAClDtC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC4H,QAAQ,EAAA;AAAC9E,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,MAAM,CAAC,EAAA;AAC9BC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CACJ,eAEDN,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC1H,QAAQ,IAAI,OAAQ;AAClCmJ,IAAAA,WAAW,EAAEzB,MAAM,CAACgC,mBAAmB,IAAI,gBAAiB;AAC5DL,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,UAAU,CAAC,EAAA;AAClCC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC8D,eAAe,IAAI,iBAAkB;AACnDrC,IAAAA,WAAW,EAAEzB,MAAM,CAACmE,0BAA0B,IAAI,gBAAiB;AACnExC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,iBAAiB,CAAC,EAAA;AACzCC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA,OAAQ;AACjBuI,IAAAA,YAAY,eAAE7I,KAAA,CAAAwC,aAAA,CAACsG,cAAc,EAAA;AAACxD,MAAAA,IAAI,EAAE;KAAK;GAAE,EAE1CY,MAAM,CAACoE,YAAY,IAAI,aACpB,CACL,CACL,CAAC,EAEN3E,eAAe,iBACZ3F,KAAA,CAAAwC,aAAA,CAAAxC,KAAA,CAAAgJ,QAAA,qBACIhJ,KAAA,CAAAwC,aAAA,CAACyG,OAAO,EAAA;AAACvB,IAAAA,KAAK,EAAExB,MAAM,CAACgD,cAAc,IAAI;AAAkB,GAAE,CAAC,eAC9DlJ,KAAA,CAAAwC,aAAA,CAAC6G,KAAK,EAAA;IAACC,IAAI,EAAA;AAAA,GAAA,eACPtJ,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC+G,eAAe,EAAA;AAACjE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,EACrB,QAEO,CAAC,eACTN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACgH,eAAe,EAAA;AAAClE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,EACrB,QAEO,CACL,CACT,CACL,EAEAwJ,cAAc,iBACX9J,KAAA,CAAAwC,aAAA,CAACiH,MAAM,EAAA,IAAA,eACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAACqE,UAAU,IAAI,mBAAmB,EAAC,GAAC,eAAAvK,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAEgK;GAAU,EAAE7D,MAAM,CAACvH,MAAM,IAAI,QAAiB,CACrG,CACF,CAEN,CAAC;AAEnB;;ACpJA;AACA;AACA;AACe,SAAS6L,aAAaA,CAAC;AAClC;EACAvG,IAAI;AACJF,EAAAA,KAAK,GAAG,iBAAiB;AACzBC,EAAAA,QAAQ,GAAG,uCAAuC;AAElD;AACA8F,EAAAA,cAAc,GAAG,IAAI;AAErB;AACAC,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAU,MAAM;EACN3I,OAAO;AAEP;EACAoE,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAMrH,aAAa,GAAGmB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACjD,aAAa,CAAC;EACxD,MAAMwB,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAACC,SAAS,CAAC;;AAE5D;AACA,EAAA,MAAM+F,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXvI,MAAAA,KAAK,EAAE;KACV;AACDwI,IAAAA,QAAQ,EAAE;AACNxI,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI;AAC7E;AACJ,GAAC,CAAC;AAEF,EAAA,MAAME,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAMpI,aAAa,CAACoI,MAAM,CAAC7I,KAAK,CAAC;AACjCoM,MAAAA,MAAM,GAAGvD,MAAM,CAAC7I,KAAK,CAAC;KACzB,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA,OAAQ;AACjBuH,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACkI,QAAQ,EAAA;AAACpF,MAAAA,IAAI,EAAE;KAAK;GAAE,EAEnCY,MAAM,CAACyE,UAAU,IAAI,oBAClB,CACL,CACL,CAAC,EAENb,cAAc,iBACX9J,KAAA,CAAAwC,aAAA,CAACiH,MAAM,qBACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAAC0E,MAAM,IAAI,aAAa,EAAC,GAAC,eAAA5K,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAEgK;GAAU,EAAE7D,MAAM,CAACvH,MAAM,IAAI,iBAA0B,CACpG,CACF,CAEN,CAAC;AAEnB;;ACzFA;AACA;AACA;AACA;AACe,SAASkM,eAAeA,CAAC;AACpC;EACA5G,IAAI;AAEJ;AACA1J,EAAAA,KAAK,EAAEuQ,SAAS;AAEhB;EACAhF,SAAS;EACThE,OAAO;AAEP;EACAzC,UAAU;AACV0L,EAAAA,aAAa,GAAG,IAAI;AAEpB;EACA7E,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM,CAACpL,MAAM,EAAEiQ,SAAS,CAAC,GAAGC,QAAQ,CAAC,WAAW,CAAC,CAAA;EACjD,MAAM,CAAC9P,YAAY,EAAE+P,eAAe,CAAC,GAAGD,QAAQ,CAAC,EAAE,CAAC;EACpD,MAAM/L,eAAe,GAAGe,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC7C,eAAe,CAAC;;AAE5D;AACA,EAAA,MAAMqH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;AAExD,EAAA,MAAM0E,iBAAiB,GAAGC,MAAM,CAAC,IAAI,CAAC;AAEtCnJ,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,MAAMoJ,MAAM,GAAG,YAAY;AACvB;MACA,IAAI9Q,KAAK,GAAGuQ,SAAS;AACrB,MAAA,IAAI,CAACvQ,KAAK,IAAI,OAAOb,MAAM,KAAK,WAAW,EAAE;QACzC,MAAM4R,SAAS,GAAG,IAAIC,eAAe,CAAC7R,MAAM,CAACC,QAAQ,CAAC6R,MAAM,CAAC;AAC7DjR,QAAAA,KAAK,GAAG+Q,SAAS,CAAClL,GAAG,CAAC,OAAO,CAAC;AAClC;MAEA,IAAI,CAAC7F,KAAK,EAAE;QACRyQ,SAAS,CAAC,OAAO,CAAC;AAClBE,QAAAA,eAAe,CAAChF,MAAM,CAACuF,OAAO,IAAI,6BAA6B,CAAC;AAChE3J,QAAAA,OAAO,GAAG,IAAIlG,KAAK,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA;AACJ;;AAEA;AACA,MAAA,IAAIuP,iBAAiB,CAACO,OAAO,KAAKnR,KAAK,EAAE;MACzC4Q,iBAAiB,CAACO,OAAO,GAAGnR,KAAK;MAEjC,IAAI;AACA,QAAA,MAAM4B,MAAM,GAAG,MAAM+C,eAAe,CAAC3E,KAAK,CAAC;QAC3CyQ,SAAS,CAAC,SAAS,CAAC;QACpBlF,SAAS,GAAG3J,MAAM,CAAC;AAEnB,QAAA,IAAIkD,UAAU,EAAE;AACZsM,UAAAA,UAAU,CAAC,MAAM;AACbjS,YAAAA,MAAM,CAACC,QAAQ,CAACoG,IAAI,GAAGV,UAAU;WACpC,EAAE0L,aAAa,CAAC;AACrB;OACH,CAAC,OAAO1P,KAAK,EAAE;QACZ2P,SAAS,CAAC,OAAO,CAAC;QAClBE,eAAe,CAAC7P,KAAK,CAACD,OAAO,IAAI8K,MAAM,CAAC0F,kBAAkB,IAAI,oBAAoB,CAAC;QACnF9J,OAAO,GAAGzG,KAAK,CAAC;AACpB;KACH;AAEDgQ,IAAAA,MAAM,EAAE;AACR;GACH,EAAE,CAACP,SAAS,EAAEzL,UAAU,EAAE0L,aAAa,CAAC,CAAC;AAE1C,EAAA,oBACI/K,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC;GAAU,EACZL,SAAS,CAAA,EAEZpL,MAAM,KAAK,WAAW,iBACnBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACsJ,MAAM,EAAA;AAACxG,IAAAA,IAAI,EAAC;AAAI,GAAE,CAAC,eACpBtF,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACjD,SAAS,IAAI,yBAAiC,CAAC,eACxEjD,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVnC,MAAM,CAAC6F,UAAU,IAAI,uCACpB,CACH,CACV,EAEAhR,MAAM,KAAK,SAAS,iBACjBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACwJ,SAAS,EAAA;AACN1G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA8B,GACvC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACgG,OAAO,IAAI,0BAAkC,CAAC,eACvElM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;GAAQ,EAEVhJ,UAAU,GAAG6G,MAAM,CAACiG,WAAW,IAAI,mBAAmB,GAAGjG,MAAM,CAACkG,aAAa,IAAI,wBAChF,CACH,CACV,EAEArR,MAAM,KAAK,OAAO,iBACfiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAAC6J,KAAK,EAAA;AACF/G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA4B,GACrC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACoG,MAAM,IAAI,uBAA+B,CAAC,eACnEtM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;GAAQ,EAEVlN,YAAY,IAAI+K,MAAM,CAACqG,WAAW,IAAI,+BACrC,CACH,CAEL,CAAC;AAEnB;;AC1IA;AACA;AACA;AACe,SAASC,kBAAkBA,CAAC;AACvC;EACAvI,IAAI;AACJF,EAAAA,KAAK,GAAG,iBAAiB;AACzBC,EAAAA,QAAQ,GAAG,6CAA6C;AAExD;AACA8F,EAAAA,cAAc,GAAG,IAAI;AAErB;AACAC,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAU,MAAM;EACN3I,OAAO;AAEP;EACAoE,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM/G,cAAc,GAAGa,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC3C,cAAc,CAAC;EAC1D,MAAMkB,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChB,aAAa,CAAC;;AAEhE;AACA,EAAA,MAAMgH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXvI,MAAAA,KAAK,EAAE;KACV;AACDwI,IAAAA,QAAQ,EAAE;AACNxI,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI;AAC7E;AACJ,GAAC,CAAC;AAEF,EAAA,MAAME,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAM9H,cAAc,CAAC8H,MAAM,CAAC7I,KAAK,CAAC;AAClCoM,MAAAA,MAAM,GAAGvD,MAAM,CAAC7I,KAAK,CAAC;KACzB,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA,OAAQ;AACjBuH,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACkI,QAAQ,EAAA;AAACpF,MAAAA,IAAI,EAAE;KAAK;GAAE,EAEnCY,MAAM,CAACyE,UAAU,IAAI,4BAClB,CACL,CACL,CAAC,EAENb,cAAc,iBACX9J,KAAA,CAAAwC,aAAA,CAACiH,MAAM,qBACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAACuG,kBAAkB,IAAI,kBAAkB,EAAC,GAAC,eAAAzM,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAEgK;GAAU,EAAE7D,MAAM,CAACvH,MAAM,IAAI,QAAiB,CAC5G,CACF,CAEN,CAAC;AAEnB;;ACxFA;AACA;AACA;AACe,SAAS+N,iBAAiBA,CAAC;AACtC;EACAzI,IAAI;AACJF,EAAAA,KAAK,GAAG,YAAY;AACpBC,EAAAA,QAAQ,GAAG,oCAAoC;AAE/C;AACAzJ,EAAAA,KAAK,EAAEuQ,SAAS;AAEhB;EACAhF,SAAS;EACThE,OAAO;AAEP;AACAiI,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACA7D,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM,CAAC5L,KAAK,EAAEoS,QAAQ,CAAC,GAAG1B,QAAQ,CAACH,SAAS,IAAI,EAAE,CAAC;EACnD,MAAM,CAACoB,OAAO,EAAEU,UAAU,CAAC,GAAG3B,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM1L,aAAa,GAAGU,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxC,aAAa,CAAC;EACxD,MAAMe,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChB,aAAa,CAAC;;AAEhE;AACA,EAAA,MAAMgH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;;AAExD;AACAxE,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,IAAI,CAAC6I,SAAS,IAAI,OAAOpR,MAAM,KAAK,WAAW,EAAE;MAC7C,MAAM4R,SAAS,GAAG,IAAIC,eAAe,CAAC7R,MAAM,CAACC,QAAQ,CAAC6R,MAAM,CAAC;AAC7D,MAAA,MAAMqB,QAAQ,GAAGvB,SAAS,CAAClL,GAAG,CAAC,OAAO,CAAC;AACvC,MAAA,IAAIyM,QAAQ,EAAEF,QAAQ,CAACE,QAAQ,CAAC;AACpC;AACJ,GAAC,EAAE,CAAC/B,SAAS,CAAC,CAAC;EAEf,MAAMpE,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXpI,MAAAA,QAAQ,EAAE,EAAE;AACZwL,MAAAA,eAAe,EAAE;KACpB;AACDnD,IAAAA,QAAQ,EAAE;AACNrI,MAAAA,QAAQ,EAAEmC,KAAK,IAAKA,KAAK,CAAC3D,MAAM,GAAG,CAAC,GAAGkJ,MAAM,CAACc,gBAAgB,IAAI,0CAA0C,GAAG,IAAK;AACpHgD,MAAAA,eAAe,EAAEA,CAACrJ,KAAK,EAAEuG,MAAM,KAAMvG,KAAK,KAAKuG,MAAM,CAAC1I,QAAQ,GAAG0H,MAAM,CAACgE,gBAAgB,IAAI,yBAAyB,GAAG;AAC5H;AACJ,GAAC,CAAC;AAEF,EAAA,MAAMjD,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI,CAAC3M,KAAK,EAAE;AACRuH,MAAAA,OAAO,GAAG,IAAIlG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC5C,MAAA;AACJ;IAEA,IAAI;AACA,MAAA,MAAM2D,aAAa,CAAChF,KAAK,EAAE2M,MAAM,CAAC1I,QAAQ,CAAC;MAC3CoO,UAAU,CAAC,IAAI,CAAC;AAChB9G,MAAAA,SAAS,IAAI;KAChB,CAAC,OAAOzK,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,IAAI6Q,OAAO,EAAE;AACT,IAAA,oBACIlM,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,MAAAA,IAAI,EAAEuC;AAAU,KAAA,EACZL,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,MAAAA,KAAK,EAAC,QAAQ;AACdhH,MAAAA,GAAG,EAAC;AAAI,KAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACwJ,SAAS,EAAA;AACN1G,MAAAA,IAAI,EAAE,EAAG;AACT2G,MAAAA,KAAK,EAAC;AAA8B,KACvC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,MAAAA,KAAK,EAAE;KAAE,EAAEc,MAAM,CAAC4G,YAAY,IAAI,mBAA2B,CAAC,eACrE9M,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,MAAAA,IAAI,EAAC,IAAI;AACTC,MAAAA,CAAC,EAAC,QAAQ;AACV8C,MAAAA,EAAE,EAAC;KAAQ,EAEVnC,MAAM,CAAC6G,cAAc,IAAI,qCACxB,CAAC,eACP/M,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHsE,MAAAA,SAAS,EAAC,GAAG;AACbjN,MAAAA,IAAI,EAAEgK,SAAU;MAChBnB,SAAS,EAAA;AAAA,KAAA,EAER1C,MAAM,CAAC+G,UAAU,IAAI,eAClB,CACL,CACD,CAAC;AAEnB;EAEA,IAAI,CAAC1S,KAAK,EAAE;AACR,IAAA,oBACIyF,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,MAAAA,IAAI,EAAEuC;AAAU,KAAA,EACZL,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,MAAAA,KAAK,EAAC,QAAQ;AACdhH,MAAAA,GAAG,EAAC;AAAI,KAAA,eAER7E,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AAACE,MAAAA,CAAC,EAAC;KAAK,EAAEW,MAAM,CAACuF,OAAO,IAAI,6BAAoC,CAAC,eACtEzL,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHsE,MAAAA,SAAS,EAAC,GAAG;AACbjN,MAAAA,IAAI,EAAEgK,SAAU;AAChBZ,MAAAA,OAAO,EAAC,OAAO;MACfP,SAAS,EAAA;AAAA,KAAA,EAER1C,MAAM,CAAC+G,UAAU,IAAI,mBAClB,CACL,CACD,CAAC;AAEnB;AAEA,EAAA,oBACIjN,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC1G,WAAW,IAAI,YAAa;AAC1CmI,IAAAA,WAAW,EAAEzB,MAAM,CAACgH,sBAAsB,IAAI,qBAAsB;AACpErF,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,UAAU,CAAC,EAAA;AAClCC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC8D,eAAe,IAAI,iBAAkB;AACnDrC,IAAAA,WAAW,EAAEzB,MAAM,CAACmE,0BAA0B,IAAI,qBAAsB;AACxExC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,iBAAiB,CAAC,EAAA;AACzCC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA;GAAQ,EAEhB4F,MAAM,CAACiH,WAAW,IAAI,iBACnB,CACL,CACL,CACA,CAAC;AAEnB;;ACnKA;AACA;AACA;AACA;AACe,SAASC,eAAeA,CAAC;AACpC;EACAnJ,IAAI;AAEJ;AACA1J,EAAAA,KAAK,EAAEuQ,SAAS;AAEhB;EACAzM,KAAK;AAEL;EACAyH,SAAS;EACThE,OAAO;EACPuL,QAAQ;AAER;EACAhO,UAAU;AACV0L,EAAAA,aAAa,GAAG,IAAI;AAEpB;EACA7E,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM,CAACpL,MAAM,EAAEiQ,SAAS,CAAC,GAAGC,QAAQ,CAAC,WAAW,CAAC,CAAA;EACjD,MAAM,CAAC9P,YAAY,EAAE+P,eAAe,CAAC,GAAGD,QAAQ,CAAC,EAAE,CAAC;EACpD,MAAM,CAACqC,UAAU,EAAEC,aAAa,CAAC,GAAGtC,QAAQ,CAAC,IAAI,CAAC,CAAA;;EAElD,MAAMxL,WAAW,GAAGQ,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACtC,WAAW,CAAC;EACpD,MAAMC,kBAAkB,GAAGO,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACrC,kBAAkB,CAAC;EAClE,MAAM8N,aAAa,GAAGvN,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAACb,kBAAkB,CAAC;EAC3E,MAAMW,IAAI,GAAGJ,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC1B,IAAI,CAAC;AAEtC,EAAA,MAAM8K,iBAAiB,GAAGC,MAAM,CAAC,IAAI,CAAC;;AAEtC;AACA,EAAA,MAAM7E,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;AAExDxE,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,MAAMoJ,MAAM,GAAG,YAAY;AACvB;MACA,IAAI9Q,KAAK,GAAGuQ,SAAS;AACrB,MAAA,IAAI,CAACvQ,KAAK,IAAI,OAAOb,MAAM,KAAK,WAAW,EAAE;QACzC,MAAM4R,SAAS,GAAG,IAAIC,eAAe,CAAC7R,MAAM,CAACC,QAAQ,CAAC6R,MAAM,CAAC;AAC7DjR,QAAAA,KAAK,GAAG+Q,SAAS,CAAClL,GAAG,CAAC,OAAO,CAAC;AAClC;MAEA,IAAI,CAAC7F,KAAK,EAAE;AACR;QACA,IAAIQ,MAAM,KAAK,eAAe,EAAE;QAEhCiQ,SAAS,CAAC,eAAe,CAAC;AAC1B,QAAA;AACJ;;AAEA;MACA,IAAI;AACA,QAAA,MAAMtN,OAAO,GAAGb,SAAS,CAACtC,KAAK,CAAC;QAChC,IAAImD,OAAO,EAAEW,KAAK,EAAE;AAChBkP,UAAAA,aAAa,CAAC7P,OAAO,CAACW,KAAK,CAAC;AAChC;OACH,CAAC,OAAO7E,CAAC,EAAE;AACR;AAAA;;AAGJ;AACA,MAAA,IAAI2R,iBAAiB,CAACO,OAAO,KAAKnR,KAAK,EAAE;MACzC4Q,iBAAiB,CAACO,OAAO,GAAGnR,KAAK;MAEjC,IAAI;AACA,QAAA,MAAM4B,MAAM,GAAG,MAAMsD,WAAW,CAAClF,KAAK,CAAC;QACvCyQ,SAAS,CAAC,SAAS,CAAC;QACpBlF,SAAS,GAAG3J,MAAM,CAAC;AAEnB,QAAA,IAAIkD,UAAU,EAAE;AACZsM,UAAAA,UAAU,CAAC,MAAM;AACbjS,YAAAA,MAAM,CAACC,QAAQ,CAACoG,IAAI,GAAGV,UAAU;WACpC,EAAE0L,aAAa,CAAC;AACrB;OACH,CAAC,OAAO1P,KAAK,EAAE;AACZ;AACA;QACA2P,SAAS,CAAC,OAAO,CAAC;QAClBE,eAAe,CAAC7P,KAAK,CAACD,OAAO,IAAI8K,MAAM,CAAC0F,kBAAkB,IAAI,oBAAoB,CAAC;QACnF9J,OAAO,GAAGzG,KAAK,CAAC;AACpB;KACH;AAEDgQ,IAAAA,MAAM,EAAE;AACR;GACH,EAAE,CAACP,SAAS,EAAEzL,UAAU,EAAE0L,aAAa,CAAC,CAAC;AAE1C,EAAA,MAAM0C,YAAY,GAAG,YAAY;IAC7B,MAAMC,WAAW,GAAGrP,KAAK,IAAIgC,IAAI,EAAEhC,KAAK,IAAIiP,UAAU;IACtD,IAAI,CAACI,WAAW,EAAE;IAElB,IAAI;MACA,MAAMhO,kBAAkB,CAACgO,WAAW,CAAC;MACrCL,QAAQ,GAAGK,WAAW,CAAC;KAC1B,CAAC,OAAOrS,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC;GAAU,EACZL,SAAS,CAAA,EAEZpL,MAAM,KAAK,WAAW,iBACnBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACsJ,MAAM,EAAA;AAACxG,IAAAA,IAAI,EAAC;AAAI,GAAE,CAAC,eACpBtF,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACjD,SAAS,IAAI,mBAA2B,CAAC,eAClEjD,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVnC,MAAM,CAAC6F,UAAU,IAAI,2CACpB,CACH,CACV,EAEAhR,MAAM,KAAK,eAAe,iBACvBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AACLxC,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA6B,GACtC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACyH,YAAY,IAAI,sBAA8B,CAAC,eACxE3N,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVnC,MAAM,CAAC0H,YAAY,IAAI,kEACtB,CACH,CACV,EAEA7S,MAAM,KAAK,SAAS,iBACjBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACwJ,SAAS,EAAA;AACN1G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA8B,GACvC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACgG,OAAO,IAAI,mBAA2B,CAAC,eAChElM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;GAAQ,EAEVhJ,UAAU,GAAG6G,MAAM,CAACiG,WAAW,IAAI,mBAAmB,GAAGjG,MAAM,CAAC2H,QAAQ,IAAI,uCAC3E,CACH,CACV,EAEA9S,MAAM,KAAK,OAAO,iBACfiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAAC6J,KAAK,EAAA;AACF/G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA4B,GACrC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACoG,MAAM,IAAI,oBAA4B,CAAC,eAChEtM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVlN,YAAY,IAAI+K,MAAM,CAAC4H,YAAY,IAAI,+BACtC,CAAC,EAGN,CAACzP,KAAK,IAAIgC,IAAI,EAAEhC,KAAK,IAAIiP,UAAU,KAAKnS,YAAY,EAAE4S,WAAW,EAAE,CAACC,QAAQ,CAAC,SAAS,CAAC,iBACpFhO,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACyL,WAAW,EAAA;AAAC3I,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AACvCgD,IAAAA,OAAO,EAAEmF,YAAa;AACtBnN,IAAAA,OAAO,EAAEkN,aAAc;IACvB5E,SAAS,EAAA;AAAA,GAAA,EAER1C,MAAM,CAACgI,MAAM,IAAI,qBACd,CAET,CAEL,CAAC;AAEnB;;;;","x_google_ignoreList":[1,2,4,5]}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/authSdk.js","../node_modules/zustand/esm/vanilla.mjs","../node_modules/zustand/esm/react.mjs","../src/authStore.js","../node_modules/zustand/esm/vanilla/shallow.mjs","../node_modules/zustand/esm/react/shallow.mjs","../src/AuthProvider.jsx","../src/ProtectedRoute.jsx","../src/components/AuthCard.jsx","../src/assets/logotipo.webp","../src/components/SignInForm.jsx","../src/components/SignUpForm.jsx","../src/components/MagicLinkForm.jsx","../src/components/MagicLinkVerify.jsx","../src/components/ForgotPasswordForm.jsx","../src/components/ResetPasswordForm.jsx","../src/components/VerifyEmailCard.jsx"],"sourcesContent":["// Config - pode ser sobrescrita pelo AuthProvider\n// Tenta detectar ambiente Vite, mas falha graciosamente se não existir\nconst getEnvVar = key => {\n try {\n if (typeof import.meta !== 'undefined' && import.meta.env && import.meta.env[key]) {\n return import.meta.env[key]\n }\n } catch (e) {\n // ignore\n }\n return null\n}\n\nlet API_BASE = (typeof window !== 'undefined' && window?.location ? getEnvVar('VITE_API_BASE') : null) || 'http://localhost:3000'\n\nlet API_KEY = null\n\n// Permite configurar a API base e key externamente (chamado pelo AuthProvider)\nexport function configure({ apiUrl, apiKey }) {\n if (apiUrl) API_BASE = apiUrl.replace(/\\/$/, '') // Remove trailing slash\n if (apiKey) API_KEY = apiKey\n}\n\n// Cache para JWKS\nlet jwksCache = null\nlet jwksCacheExpiry = 0\n\n// helper fetch pré-configurado\nasync function api(route, opts = {}) {\n // Garante que a rota comece com /\n const cleanRoute = route.startsWith('/') ? route : `/${route}`\n\n // Constrói URL completa (API_BASE já teve trailing slash removido no configure)\n const url = `${API_BASE}${cleanRoute}`\n\n const token = getStoredToken()\n const headers = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n ...opts.headers,\n }\n\n // Adiciona Authorization header se tiver token\n if (token) {\n headers.Authorization = `Bearer ${token}`\n }\n\n // Adiciona API Key se configurada\n if (API_KEY) {\n headers['X-API-Key'] = API_KEY\n }\n\n const res = await fetch(url, {\n headers,\n ...opts,\n })\n\n // Converte JSON automaticamente e lança erro legível\n const data = res.status !== 204 ? await res.json().catch(() => ({})) : null\n\n if (!res.ok) {\n let errorMessage = data?.message || data?.error || data?.detail || res.statusText\n\n // Se a mensagem for um objeto, tenta extrair string ou stringify\n if (typeof errorMessage === 'object') {\n errorMessage = errorMessage.message || JSON.stringify(errorMessage)\n }\n\n throw Object.assign(new Error(errorMessage), { res, data })\n }\n return data\n}\n\n// Gerenciamento de token no localStorage\nfunction getStoredToken() {\n if (typeof window === 'undefined') return null\n return window.localStorage.getItem('auth:token')\n}\n\nfunction setStoredToken(token) {\n if (typeof window === 'undefined') return\n if (token) {\n window.localStorage.setItem('auth:token', token)\n } else {\n window.localStorage.removeItem('auth:token')\n }\n}\n// Helper para processar resposta de autenticação e salvar token\nfunction handleAuthResponse(result) {\n // Tenta encontrar o token em vários lugares possíveis\n const token = result.token || result.session?.token || result.session?.sessionToken\n\n console.log('[AuthSDK] Handling Auth Response:', {\n hasToken: !!result.token,\n hasSessionToken: !!result.session?.token,\n hasSessionSessionToken: !!result.session?.sessionToken,\n extractedToken: token,\n })\n\n if (token) {\n console.log('[AuthSDK] Saving token to storage')\n setStoredToken(token)\n } else {\n console.warn('[AuthSDK] No token found in response', result)\n }\n\n return result\n}\n// Busca JWKS do servidor\nasync function fetchJWKS() {\n const now = Date.now()\n if (jwksCache && now < jwksCacheExpiry) {\n return jwksCache\n }\n\n try {\n const response = await fetch(`${API_BASE}/.well-known/jwks.json`)\n const jwks = await response.json()\n jwksCache = jwks\n jwksCacheExpiry = now + 5 * 60 * 1000 // Cache por 5 minutos\n return jwks\n } catch (error) {\n console.error('Erro ao buscar JWKS:', error)\n return null\n }\n}\n\n// Decodifica JWT (apenas payload, sem verificação de assinatura)\nexport function decodeJWT(token) {\n try {\n const parts = token.split('.')\n if (parts.length !== 3) return null\n\n // Safe base64 decode\n const base64Url = parts[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n\n // Verifica ambiente para decodificar\n const jsonPayload = typeof window !== 'undefined' ? window.atob(base64) : Buffer.from(base64, 'base64').toString()\n\n return JSON.parse(jsonPayload)\n } catch {\n return null\n }\n}\n\n// Verifica se o token está expirado\nfunction isTokenExpired(token) {\n const payload = decodeJWT(token)\n\n // Se não for um JWT válido (payload null), assumimos que é um token opaco (session token)\n // Nesse caso, deixamos o servidor validar via 401\n if (!payload) return false\n\n if (!payload.exp) return false\n\n const now = Date.now()\n const exp = payload.exp * 1000\n const isExpired = now >= exp\n\n if (isExpired) {\n console.log('[AuthSDK] Token expired:', { now, exp, diff: exp - now })\n }\n\n return isExpired\n}\n\n// Verifica se o usuário está autenticado\nexport function isAuthenticated() {\n const token = getStoredToken()\n const valid = token && !isTokenExpired(token)\n return valid\n}\n\n// Obtém dados do usuário do token\nexport function getCurrentUser() {\n const token = getStoredToken()\n if (!token || isTokenExpired(token)) return null\n\n const payload = decodeJWT(token)\n return payload\n ? {\n id: payload.sub,\n email: payload.email,\n name: payload.name,\n ...payload,\n }\n : null\n}\n\n/*--- métodos de autenticação -------------------*/\nexport const signUp = async (email, password, name = '') => {\n const result = await api('/auth/sign-up/email', {\n method: 'POST',\n body: JSON.stringify({ email, password, name }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signIn = async (email, password) => {\n const result = await api('/auth/sign-in/email', {\n method: 'POST',\n body: JSON.stringify({ email, password }),\n })\n\n return handleAuthResponse(result)\n}\n\nexport const signOut = async () => {\n try {\n await api('/auth/sign-out', { method: 'POST' })\n } catch {\n // Ignora erros de logout no servidor\n } finally {\n setStoredToken(null)\n }\n}\n\nexport const refreshToken = async () => {\n try {\n const result = await api('/auth/refresh', { method: 'POST' })\n return handleAuthResponse(result)\n } catch (error) {\n setStoredToken(null)\n throw error\n }\n}\n\n/*--- Magic Link ---------------------------------*/\nexport const sendMagicLink = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/magic-link/verify` : '/auth/magic-link/verify')\n\n return await api('/auth/sign-in/magic-link', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\nexport const verifyMagicLink = async token => {\n const result = await api(`/auth/magic-link/verify?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\n/*--- Password Reset -----------------------------*/\nexport const forgotPassword = async (email, redirectTo) => {\n const redirect = redirectTo || (typeof window !== 'undefined' ? `${window.location.origin}/auth/reset-password` : '/auth/reset-password')\n\n return await api('/auth/forget-password', {\n method: 'POST',\n body: JSON.stringify({ email, redirectTo: redirect }),\n })\n}\n\nexport const resetPassword = async (token, newPassword) => {\n return await api('/auth/reset-password', {\n method: 'POST',\n body: JSON.stringify({ token, newPassword }),\n })\n}\n\n/*--- Email Verification -------------------------*/\nexport const verifyEmail = async token => {\n const result = await api(`/auth/verify-email?token=${encodeURIComponent(token)}`)\n\n return handleAuthResponse(result)\n}\n\nexport const resendVerification = async (email, callbackURL) => {\n const callback = callbackURL || (typeof window !== 'undefined' ? `${window.location.origin}/auth/verify-email` : '/auth/verify-email')\n\n return await api('/auth/send-verification-email', {\n method: 'POST',\n body: JSON.stringify({ email, callbackURL: callback }),\n })\n}\n\n/*--- Session ------------------------------------*/\nexport const getSession = async () => {\n return await api('/auth/session')\n}\n\n/*--- Application Info ----------------------------*/\nexport const getApplicationInfo = async () => {\n try {\n const data = await api('/application/by-api-key')\n return data?.data || null\n } catch (error) {\n console.warn('[AuthSDK] Failed to fetch application info:', error.message)\n return null\n }\n}\n\n/* Social login redirect (ex.: Google) -----------*/\nexport function socialRedirect(provider, redirectTo = typeof window !== 'undefined' ? window.location.href : '/') {\n if (typeof window === 'undefined') return\n window.location = `${API_BASE}/auth/sign-in/${provider}?redirect=${encodeURIComponent(redirectTo)}`\n}\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","import { create } from 'zustand'\nimport * as api from './authSdk.js'\n\n// Estado: { user, loading, error }\nexport const useAuthStore = create((set, get) => ({\n user: null,\n loading: true,\n error: null,\n\n // Loading states granulares\n loadingStates: {\n signIn: false,\n signUp: false,\n signOut: false,\n magicLink: false,\n verifyMagicLink: false,\n resetPassword: false,\n verifyEmail: false,\n resendVerification: false,\n },\n\n // Application info (logo, nome, etc)\n applicationInfo: null,\n\n // Helper para atualizar loading states\n setLoading: (key, value) =>\n set(state => ({\n loadingStates: { ...state.loadingStates, [key]: value },\n })),\n\n // Buscar informações da aplicação\n fetchApplicationInfo: async () => {\n try {\n const appInfo = await api.getApplicationInfo()\n set({ applicationInfo: appInfo })\n } catch (error) {\n console.warn('[AuthStore] Failed to fetch application info:', error)\n set({ applicationInfo: null })\n }\n },\n\n /* Init ao montar o Provider */\n init: async () => {\n const { fetchApplicationInfo } = get()\n\n try {\n // Buscar application info primeiro (não bloqueia o init)\n fetchApplicationInfo()\n\n // Verifica se há um token válido\n if (api.isAuthenticated()) {\n // Tenta extrair usuário do token (JWT)\n let user = api.getCurrentUser()\n\n // Se o token for opaco (não-JWT), getCurrentUser retorna null.\n // Precisamos buscar a sessão no servidor.\n if (!user) {\n try {\n const session = await api.getSession()\n if (session?.user) {\n user = session.user\n }\n } catch (sessionError) {\n console.warn('[AuthStore] Failed to fetch session:', sessionError)\n }\n }\n\n if (user) {\n set({ user, loading: false })\n } else {\n set({ user: null, loading: false })\n }\n } else {\n set({ user: null, loading: false })\n }\n } catch (error) {\n console.error('Erro na inicialização:', error)\n set({ user: null, loading: false })\n }\n },\n\n /* Ações de Autenticação */\n signUp: async (email, password, name) => {\n const { setLoading } = get()\n setLoading('signUp', true)\n set({ error: null })\n\n try {\n const result = await api.signUp(email, password, name)\n const user = api.getCurrentUser()\n set({ user, loading: false })\n setLoading('signUp', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signUp', false)\n throw err\n }\n },\n\n signIn: async (email, password) => {\n const { setLoading } = get()\n setLoading('signIn', true)\n set({ error: null })\n\n try {\n const result = await api.signIn(email, password)\n\n // Tenta obter usuário do token (se JWT)\n let user = api.getCurrentUser()\n\n // Se não encontrou no token (sessão opaca), busca do servidor\n if (!user) {\n const session = await api.getSession()\n if (session?.user) user = session.user\n }\n\n set({ user, loading: false })\n setLoading('signIn', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('signIn', false)\n throw err\n }\n },\n\n signOut: async () => {\n const { setLoading } = get()\n setLoading('signOut', true)\n\n try {\n await api.signOut()\n set({ user: null })\n // Sincronizar logout entre abas\n if (typeof window !== 'undefined') {\n window.localStorage.setItem('auth:logout', Date.now())\n }\n } finally {\n setLoading('signOut', false)\n }\n },\n\n /* Magic Link */\n sendMagicLink: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('magicLink', true)\n set({ error: null })\n\n try {\n const result = await api.sendMagicLink(email, callbackURL)\n setLoading('magicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('magicLink', false)\n throw err\n }\n },\n\n verifyMagicLink: async token => {\n const { setLoading } = get()\n setLoading('verifyMagicLink', true)\n set({ error: null })\n\n try {\n const result = await api.verifyMagicLink(token)\n\n let user = result.user\n\n // Se não veio no resultado, tenta pegar do token ou do servidor\n if (!user) {\n user = api.getCurrentUser()\n if (!user) {\n const session = await api.getSession()\n if (session?.user) user = session.user\n }\n }\n\n if (user) {\n set({ user, loading: false })\n }\n\n setLoading('verifyMagicLink', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyMagicLink', false)\n throw err\n }\n },\n\n /* Password Reset */\n forgotPassword: async (email, redirectTo) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.forgotPassword(email, redirectTo)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n resetPassword: async (token, newPassword) => {\n const { setLoading } = get()\n setLoading('resetPassword', true)\n set({ error: null })\n\n try {\n const result = await api.resetPassword(token, newPassword)\n setLoading('resetPassword', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resetPassword', false)\n throw err\n }\n },\n\n /* Email Verification */\n verifyEmail: async token => {\n const { setLoading } = get()\n setLoading('verifyEmail', true)\n set({ error: null })\n\n try {\n const result = await api.verifyEmail(token)\n if (result.user) {\n set({ user: result.user, loading: false })\n }\n setLoading('verifyEmail', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('verifyEmail', false)\n throw err\n }\n },\n\n resendVerification: async (email, callbackURL) => {\n const { setLoading } = get()\n setLoading('resendVerification', true)\n set({ error: null })\n\n try {\n const result = await api.resendVerification(email, callbackURL)\n setLoading('resendVerification', false)\n return result\n } catch (err) {\n set({ error: err })\n setLoading('resendVerification', false)\n throw err\n }\n },\n\n /* Session */\n getSession: async () => {\n try {\n return await api.getSession()\n } catch (err) {\n set({ error: err })\n throw err\n }\n },\n\n /* Refresh do token em background */\n startRefresh: () => {\n if (typeof window === 'undefined') return\n\n const refreshInterval = setInterval(async () => {\n try {\n // Se o usuário está autenticado mas o token está próximo do vencimento\n if (api.isAuthenticated()) {\n const token = window.localStorage.getItem('auth:token')\n if (token) {\n // Decodifica o token para verificar tempo de expiração\n const base64Url = token.split('.')[1]\n const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/')\n const jsonPayload = window.atob(base64)\n const payload = JSON.parse(jsonPayload)\n const now = Date.now() / 1000\n const timeUntilExpiry = payload.exp - now\n\n // Se o token expira em menos de 5 minutos, faz refresh\n if (timeUntilExpiry < 300) {\n // 5 minutos\n await api.refreshToken()\n const user = api.getCurrentUser()\n set({ user })\n }\n }\n }\n } catch (error) {\n console.error('Erro no refresh automático:', error)\n // Em caso de erro, faz logout\n set({ user: null })\n window.localStorage.removeItem('auth:token')\n }\n }, 4 * 60 * 1000) // Verifica a cada 4 minutos\n\n // Limpa o intervalo quando necessário\n if (typeof window !== 'undefined') {\n window.addEventListener('beforeunload', () => {\n clearInterval(refreshInterval)\n })\n }\n },\n\n /* Verifica se o token ainda é válido */\n checkTokenValidity: () => {\n if (!api.isAuthenticated()) {\n set({ user: null })\n return false\n }\n return true\n },\n\n /* Atualizar usuário manualmente */\n setUser: user => set({ user }),\n}))\n","const isIterable = (obj) => Symbol.iterator in obj;\nconst hasIterableEntries = (value) => (\n // HACK: avoid checking entries type\n \"entries\" in value\n);\nconst compareEntries = (valueA, valueB) => {\n const mapA = valueA instanceof Map ? valueA : new Map(valueA.entries());\n const mapB = valueB instanceof Map ? valueB : new Map(valueB.entries());\n if (mapA.size !== mapB.size) {\n return false;\n }\n for (const [key, value] of mapA) {\n if (!mapB.has(key) || !Object.is(value, mapB.get(key))) {\n return false;\n }\n }\n return true;\n};\nconst compareIterables = (valueA, valueB) => {\n const iteratorA = valueA[Symbol.iterator]();\n const iteratorB = valueB[Symbol.iterator]();\n let nextA = iteratorA.next();\n let nextB = iteratorB.next();\n while (!nextA.done && !nextB.done) {\n if (!Object.is(nextA.value, nextB.value)) {\n return false;\n }\n nextA = iteratorA.next();\n nextB = iteratorB.next();\n }\n return !!nextA.done && !!nextB.done;\n};\nfunction shallow(valueA, valueB) {\n if (Object.is(valueA, valueB)) {\n return true;\n }\n if (typeof valueA !== \"object\" || valueA === null || typeof valueB !== \"object\" || valueB === null) {\n return false;\n }\n if (Object.getPrototypeOf(valueA) !== Object.getPrototypeOf(valueB)) {\n return false;\n }\n if (isIterable(valueA) && isIterable(valueB)) {\n if (hasIterableEntries(valueA) && hasIterableEntries(valueB)) {\n return compareEntries(valueA, valueB);\n }\n return compareIterables(valueA, valueB);\n }\n return compareEntries(\n { entries: () => Object.entries(valueA) },\n { entries: () => Object.entries(valueB) }\n );\n}\n\nexport { shallow };\n","import React from 'react';\nimport { shallow } from 'zustand/vanilla/shallow';\n\nfunction useShallow(selector) {\n const prev = React.useRef(void 0);\n return (state) => {\n const next = selector(state);\n return shallow(prev.current, next) ? prev.current : prev.current = next;\n };\n}\n\nexport { useShallow };\n","import { createContext, useEffect, useMemo } from 'react'\nimport { useShallow } from 'zustand/react/shallow'\nimport { useAuthStore } from './authStore.js'\nimport { configure } from './authSdk.js'\n\nconst AuthContext = createContext() // só para ter o Provider em JSX\n\nexport function AuthProvider({\n children,\n apiUrl, // URL base da API (OBRIGATÓRIA)\n apiKey, // API Key para header X-API-Key (OBRIGATÓRIA)\n onError, // Callback de erro global\n}) {\n // Validação de props obrigatórias\n if (!apiKey) {\n throw new Error('[@riligar/auth-react] apiKey é obrigatória no AuthProvider. ' + 'Obtenha sua API Key no dashboard em https://dashboard.myauth.click')\n }\n\n if (!apiUrl) {\n throw new Error('[@riligar/auth-react] apiUrl é obrigatória no AuthProvider. ' + 'Use a URL do seu servidor de autenticação.')\n }\n\n const init = useAuthStore(s => s.init)\n const startRefresh = useAuthStore(s => s.startRefresh)\n const checkTokenValidity = useAuthStore(s => s.checkTokenValidity)\n\n // Configura SDK com apiUrl e apiKey\n // Configura SDK com apiUrl e apiKey\n // Usamos useMemo para garantir que a configuração ocorra ANTES dos efeitos dos componentes filhos\n useMemo(() => {\n configure({ apiUrl, apiKey })\n }, [apiUrl, apiKey])\n\n useEffect(() => {\n init()\n startRefresh()\n }, [init, startRefresh])\n\n // Sincronização entre abas - escuta logout e mudanças no token\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const handleStorageChange = event => {\n if (event.key === 'auth:logout') {\n window.location.reload()\n }\n // Se o token mudou em outra aba, recarrega\n if (event.key === 'auth:token') {\n checkTokenValidity()\n }\n }\n\n window.addEventListener('storage', handleStorageChange)\n return () => window.removeEventListener('storage', handleStorageChange)\n }, [checkTokenValidity])\n\n // Verifica validade do token periodicamente\n useEffect(() => {\n if (typeof window === 'undefined') return\n\n const interval = setInterval(() => {\n checkTokenValidity()\n }, 30 * 1000) // Verifica a cada 30 segundos\n\n return () => clearInterval(interval)\n }, [checkTokenValidity])\n\n // Contexto com onError callback\n const contextValue = useMemo(() => ({ onError }), [onError])\n\n return <AuthContext.Provider value={contextValue}>{children}</AuthContext.Provider>\n}\n\n/* Hooks \"facade\" que a app vai usar */\nexport const useAuth = () =>\n useAuthStore(\n useShallow(s => ({\n user: s.user,\n loading: s.loading,\n error: s.error,\n isAuthenticated: s.user !== null,\n }))\n )\n\n// Auth Actions\nexport const useSignIn = () => useAuthStore(s => s.signIn)\nexport const useSignUp = () => useAuthStore(s => s.signUp)\nexport const useSignOut = () => useAuthStore(s => s.signOut)\nexport const useCheckToken = () => useAuthStore(s => s.checkTokenValidity)\n\n// Magic Link Hook\nexport const useMagicLink = () =>\n useAuthStore(\n useShallow(s => ({\n sendMagicLink: s.sendMagicLink,\n verifyMagicLink: s.verifyMagicLink,\n loading: s.loadingStates.magicLink,\n verifying: s.loadingStates.verifyMagicLink,\n error: s.error,\n }))\n )\n\n// Password Reset Hook\nexport const usePasswordReset = () =>\n useAuthStore(\n useShallow(s => ({\n forgotPassword: s.forgotPassword,\n resetPassword: s.resetPassword,\n loading: s.loadingStates.resetPassword,\n error: s.error,\n }))\n )\n\n// Email Verification Hook\nexport const useEmailVerification = () =>\n useAuthStore(\n useShallow(s => ({\n verifyEmail: s.verifyEmail,\n resendVerification: s.resendVerification,\n loading: s.loadingStates.verifyEmail,\n resending: s.loadingStates.resendVerification,\n error: s.error,\n }))\n )\n\n// Session Hook\nexport const useSession = () =>\n useAuthStore(\n useShallow(s => ({\n getSession: s.getSession,\n user: s.user,\n setUser: s.setUser,\n }))\n )\n\n// Loading States Hook\nexport const useAuthLoading = () => useAuthStore(s => s.loadingStates)\n\n// Application Logo Hook\nexport const useApplicationLogo = () => {\n const applicationInfo = useAuthStore(s => s.applicationInfo)\n // Retorna o logo da aplicação ou null (componentes usam fallback padrão)\n return applicationInfo?.image || null\n}\n","import { Navigate, Outlet } from \"react-router-dom\";\nimport { useAuth } from \"./AuthProvider.jsx\";\n\nexport default function ProtectedRoute({\n fallback = <p>⌛ Carregando...</p>,\n redirectTo = \"/login\"\n}) {\n const { user, loading } = useAuth();\n\n if (loading) return fallback;\n if (!user) return <Navigate to={redirectTo} replace />;\n\n return <Outlet />;\n} ","import { Paper, Stack, Image, Title, Text } from '@mantine/core'\n\n/**\n * Container wrapper para componentes de autenticação\n * Usa Mantine Paper com estilo consistente\n */\nexport default function AuthCard({ children, title, subtitle, logo, logoHeight = 28, width = 350, ...props }) {\n return (\n <Paper\n withBorder\n shadow=\"md\"\n p={24}\n w={width}\n radius=\"md\"\n {...props}\n >\n <Stack gap=\"sm\">\n {(logo || title || subtitle) && (\n <Stack gap=\"xs\">\n {logo && (\n <Image\n src={logo}\n alt=\"Auth\"\n h={logoHeight}\n fit=\"contain\"\n />\n )}\n\n {title && <Title order={3}>{title}</Title>}\n\n {subtitle && (\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {subtitle}\n </Text>\n )}\n </Stack>\n )}\n\n {children}\n </Stack>\n </Paper>\n )\n}\n","var img = \"data:image/webp;base64,iVBORw0KGgoAAAANSUhEUgAAAjwAAADICAYAAADskzu8AAAQAElEQVR4nOzdCXxcZ3ku8PecM6PF1uZ9kfc4TmKyOMRZHNtYjm1tTlISMC2BQFhCQptAKGEp9Jbc20Jvoe29BUprmqZAAzfgEEJSW4vtxCzGEBKy4uyJsRPvliVZtpbRzLnPK49TR5FG0mjON2d5/r/f8RnPpjNHoznPfN933i8mI3TR+kfjB5wppXGraFLKdVZZIu8Qsc4ScWfh5rFYCoUofxLiuh14T76G9+SzYjsPW5J4OFkUPzipo7zjsZushBARQVVVVRFcZVnWma7rVuCq41j2pVKp+5ubmw9Knvh1u4LOGu4dL1rvxg/L4fNwAKnDL+FqHFQuwKMZbigIehB+Hrcse2PSsTbtHtP8hLznPUkhoshaunRpaXl5+SdxcXz/2xAykggX32lqavq9GObX7QoDezh3mnFn2/wjTuu3Lce5D2HnS9jtlzDsUIAUINtfmnLlr+xe98dz2lbfNeuu1nlCRJFVWlr6XhkgVCgc5xws71uyZEmxGObX7QqDWMZb73DtWTNa3mVL7zewpyeLqy1CrhAFkSWuvt9nI+Zfb7vJ2rn/fuTWV/eMv1fusFJCRFFiaXdRpjvYtl1UVlamX4xMtqYY2S50melnYUlxcXEJnq+gs7Ozu6en50QsFuvctm1bl4TUoIGn8rvtE+KJo5/B/temtSLmHAqNvuBuTUbz8HdmVx5dXLi+/asv3FR2WIjIuLq6ujKsPiAjhL/fToSDDlxsx7I/mUy+3tzcfEiG8a184cKFcW0tGep+A92ntrb2g7i+dLDH9Pb23rd58+a9koXRbFcm1dXVYx3HOQ8Xz8AyG4+feOo27EcpKirqWxRen44Xeh5B6JkTJ048F6YANGDgmfMvR+dIT+/f4bCwTkYwzocoUCyrGG/u2xNOch7e87fv+vi4XUJERqFlIV5YWDjiLmYctN/0f7ROSH19fTsO4M90d3fveOihh14f7LE7d+7smTVr1j4c1KdJBl1dXbsH+LmzsIwb7DEFBQVFkqXRbNdAampqxuO5rsDFxdjmguE8BvfXk4/ergtagBIIpFtLSkq2btiwIfDjHt8yhmfB+vaJVlz+HjvnWmHYofDT9/gfScz9O23VFCIKsjIcuy5HgLoNB/vlme6YSqUezHQ7Woya0brRKoblarsQVC5DePkL3R/DDTv94XHa4lTb0dHxeYTJBRJwbw48d7h2t937WVfca92T4x2IQq/vvY7WzHii9zP6NyBEFGja5QPX4CD9rsHug+6v5xAefoKA0dvvpm50S93b1NTUKHmQi+1C2NFT2t8z0q6vweB5JqDl7GPYn4slwN4UaubObHm3m5Jb9OUJUbToe/6Ts2a0PIa24g1CRGGwFAfp3k2bNv10oBsRHn6xdu3aZ9CtNhGtIS6WtoaGhhbclNfum9FsF1q2/ggBZYXkGJ7TRgh7L8JUDNvyawmgNwKPnqbrukk9G4unu1FUFaF55xsz7mx7/LWPlr8kRBQGK2pra59rbGx8fqAbN27ceBSro+Iz2WxXdXX15WjZynnYOR1anwLbCn4y8PzoR47dlvqS2NYkIYoyy5occ1NfvGi9+zFWZSbyB3SnvNLvKm2R1fE65TJUeZWTrsHyv0+/QmvZlJSUzBjsAbFYrBUtGYfEsGy3C2FnMsLOtTIMWsAQyxEsh7EPtXKz1tXTAc5zZJDZEvQx8P3Nmzc/MdTz62nv2JbyeDxeiseV61ltWMbg8R24XscftXd2drZu27atQ4ZpGPtlN/ZL96n/6/7Az5yG11SCdTta+Z7ue6PMOlG9SCx3BV4Ru7Io2k7WmlrZV1Vc5HdCRHmFA2YKB7JvDnKzjS4cPQOpDge28sGeA7dNRtfWVBz09p+6Tg+eOCB/XAb3Myw/FcOy3S68xndqt1OGx/WFFqweQth4eJDTzW3sp/m439V4rumnXa/jh+5C2HlxsOdOnxGmY3wW6plsA91Hz6Q7ZcyYMTrWSAPXgxpGZAhD7ZdEIvH3WO3F9i/C9i/H8849dRuC1uNYPR3TKSNakq31KZFKph0ihT9026m7aP2jTz9202K28hD5V6qpqekRHGz34CB3m55VNOgdU6m3YbVfQghddmchbJyd6T7YPyew3ImuvV0Z7pZC+HgB639AGLkS+3OlPg6BYT3Czp6BHqCtOcXFxWv0Yqb9P5B0PaAPYft34fJ9CLavSZawnTGEnQ/h4nn9Sxbg/321mexDJW0lCNBrLZ6VRZTm6qmYV+skuUJEvofQsw8HvBeGuNs0CSl8Xl061H0QWu4eIuyczkX4eBAhcWNPT883mpub9wx2R4SdMRqMRhp2TpfuSrsN3VDnSpbQevRhrM4b6DY33XtlO12JydhdFwoR/TfXvSBuFXFMG1FApMeiDAoHvawLAvqcjdeWsXUHweURPd1dRggBaSscyHQfBCMt9viIjJJ2xzmOc72OvZEsIDSVDXkfV+IrpW9yRSJ6gyWFKddZJUQUCO4QY1BxMA18peCBrF69WruzMoa5rq4ur2sKNWPplVHSViL8nq4Uj9iSSq4UInoLfHq+Q4goEHCwrMx0O1o5jkgIoStneqbb8br3eV0xeqBWHvzcNiy/xPU/QrfYv+Gy1jfbjv9nHBeJ3+O5VVVVE8UDMTz9OUJEA7DOEiLyvdra2vOHmmUcWiScxma6EfvFSNBLJBKb4/H4YgSa3yDcPDrYuJ+lS5c2l5WV3ZZpPrLCwkLNJb+QLOlZWXj+V7G0YOnF//sqTiPwuDM4ZRbRQNxZQkR+ZC9btqy8tLR0PC5fhiXjOFQ9HRtdJb+XEBpqbJKeZSUjVFdX9z8HmxFez/RCi87O/tdv2bKl7aqrrvpfDz74YMaft3379mMIqD/F898w2H3QRZex1WowCFp6qv23m5qadg10ewzxr0SIaCBjhYjySgez1tfX/6OMAg7ST6YrF4cO9k/XELcbG6M7VNg55dixY6+Wlw9aNkl/X+WSBbzWBxDGdg12u56KnvWpZEQhVyhEFGg6CSeWZgmv9iFuzyo8ZEOrIaPVbSFa02bKyTIAeuaUfnEcM1RRxH5G3BCDkHR0qDm+WHuHiIhCSas040D7nebm5oMSUghzx9AFlOkusxcuXFiwc+fOHvGOhW6qFdjXq3UKCRmlbGr64DFDTgMS2EnAiIiIMkHg+eFA403CJJlM7sp0u7aszJw5c8jChKNgI+x8EKHr6lyEnWzpvGBD3YeBh4iIQgUHvwPd3d3fbGxs/K2E3NatW3US0IxTZiCMVGl3k3igpqZmBZ7/fMkzhK0hpwFilxYREYWGdmNpZWEEgVckInRQNg74Uwe7XU8BLy8v/3h1dfV6dO8dl9yxEHaWy+DbpfNwbcLFPfj5ezds2PBG8Ue0Cn0VjzWaQRh4iIjItxBeXBywt/S7ehKuWzTQ/bULB8uVq1evfnnLli27JQK0wB9WKzJVXMZtM7D61Nq1a3+wcePGnIRBPFcFQk3FYLfjti0IWL8Sn2DgISIi39KZrhug/9VoIZiAg/jMgR6D661YLHbdunXrvnZ6q4IJaNG4tK6ubkRFSxFYEk1NTVskS9pqg66lzbh4Vab7Yb+MRwi5Bdv3IrbzSVx+Y6Av9lcc23Em7nPuYDV4+kskEhV43KC343naBroeLU0XmW7dUQw8REQUNNrqczcO2LcPdkYPDqiTOzo6NADcLwbh514sI5SupZN14FEITD9DkNGwMneo+2pVagSVt1SmdhxHRgKhqT1T4EGAuvyqq656/vT6PDojOn7OtZIHHLRMRESBg0YfbZ3YlOk+CETLcYAdMgCERAoB5C4xOIXG1q1bj2IfHxvsdgSbM3p7e79YX19/PVrkrkEg+ywC0ocRuDwZQD0UBh4iIgokhJ6foxVh12C3a9cWDrrvx4E2EkVE0wOS78Q+GaoYYa70DRDPdId0uLlQBzdnGlhtAgMPEREFFRoY3Lux7h7sDulJKt8pEbFp06b9CCFfw355UXIIz9eJ59WpG54//fr29vaHcFs2E5S+kOE2VzzAwENERIHV1NTUgm6TBzPdB6Hn0rVr154jEaEtPQgm/4qAsiHLMPKGdNDZhq6oLzc2Nm7DVW8aBL5jx45O7N9/16kdhvuc6Hrbit9ZpoKQnsxozsBDRESBpqc+46D8Uqb74Pb3VlVVFUl0uAgoOxB8voIw8p94/U9h3TGsB7puEssrCCb3dHZ2fgnP80CmiUG1VQn3+1utuZMp+GAbDiYSie8hpG6UPLDm3NniSdMRURjs+uh4T75pEBHlQ319/VQEkwlyclLPsafX7kFY6XEc59Xjx4/v3rZtW69kCT9jNlpwJuK5yvGc+hnajlagFoQvrf+Tt8zBwEOUAQMPEVE4sA4PERERhR4DDxEREYUeAw8RERGFHgMPERERhR4DDxEREYUeA88QbEskbmsVpPCcrNOV5Il5REQULQw8Q5hb7shtFxZJgROOwJNyXfnUtuMIPUJERBQZDDwZaMS5aLIja+cVhKh9R+TuKd2yfW/WNaWIiIgCh1NLZGAh5SyvjIcq7KjVs+JCREQUJQw8GWjQOX9i+BrBNMQVx1hAmIiIooOBJ4OZJbZUloZvF00otmVuGX/1REQUHTzqZXAFun5CMlb5TYrRaLVoModvERFRdDDwZFA3p0DCSM84e/tkB2shIiKKBAaeQZQXWnJBSFtBtNFqfoUjE4r46yciomjgEW8Q505w+goOhtXMUlsmFXPgMhERRQMHcgxiWWW4T90ej9adtyHUPX04Kay7TEQUHHV1dTNc1/2BeMyyrOsaGhpek5Bg4BlAEfbKxVPCv2tWzozLD1/oEZeJh4goMBBExmC1XDyW/jmhwS6tAUwf68jE4vDvmgsmxUJ5FhoREVF/DDwDmFduy7ii8CeByWNOdmsRERGFHQNPPzo7+lnjHCmJR6PpQ+cJIyIiCjsGnn7GIuicj64eOyJdPfVzwllckYiI6HQctNzP2JglCyqikwOnlTgyp9yRl1uTQjRc1dXVY23b3m9ZVol4zHXdmxsbG9cLEdEosIWnn4nFllSWRmdcizbuXDKF43hoZBzHudFE2FH4OX8uRESjxMDTz4oZ8VAXHBxIzZyCyL1mGhULrS6fEHMW1NbW1gsR0SjwMNfPskrve/m+t7NbvvlEl/zkpR7xgxkldt8ZW0TDgfBxDVpd5opZnxIiolHgGJ7TFKFn58JJ3u6Szl5XvvybE5J0ReaW23LN/PyfJTWh2O6bW+v1jpQQDYPx8IGAtbqurm5hQ0PDTiEawpo1axah23WCeMi27T2bNm16QSgwGHhOc/HUmBTGvD1laeeRpPSkc8WeYylJ4HK+u5PKCiw5Z7wjv3g9ISlWXaYMEDouxGqZ5AG60T6D1YeEaAixWOyrWK0RD+H9+E2sbhUKDPZjnGblDO/nz3r0QO8bl7uTIi8czf/ZUXoK/gWTHBkT4/nplFk6dOQFWnneu2rVKk+/tRNReDHwpMWw0/M3pAAAEABJREFUJ66Y5X3g2bEv8ab/P3ogIX5w7oSYlBYw8NDgEDamYLVO8qewoKDgk0JElAUGnrTZpXbfDOJe0vE7Ojv56Z485I/6N9NLbJk2lm8HGhzCxqfQypLvbvBb0K1WKEREI8QjXNq5E2NS4HE5ml3tqTfG75yiXVx+mK1cu7VqZnvfwkXBlA4ZH5P8G4flA0JENEIMPKBTK1w8JSZxj+eTeKU1Kb39GnT2HU9Ja7c/zo4y0aVHweS67kfkZNjwg9uFiGiEGHigvNCSeRWO5/NnPXW4Fy08b27O0f/+od0fgWdeuSNTWY+H3kr/MvwUMhbU1NTUChHRCPDoBlp0T4vveamr1+3r0hrotO9X2vwxjkcD3xp2a1E/CBf1eSg0mJFt2yxESEQjwsADlX2Vhr1t3mnpcmXvAIX9dPzOM0f8M3Fn7Zy48FwtOh3Che/mskIX2xotRChERMMU+cCj43cWTYpJoePtYf5IV0oOd761eUeveak1KQmfVPw7e3xMJrFbi9LSoeIK8Rm0OOl8XpxUlIiGLfJHNq2/c9k078+01bCjoWcg2vpztMsfgacYu+KCiZw9nU5CqPis+BQyz/tZiJCIhivygUdbds6s8PYAr403z7Yk+6aRGEh7j9sXevygAPtj8ZQYDiZCEadhAqHiT8S/CuPx+C1CRDQMkQ88iyY5fWdpeUknCn3iUO+gt2vg0dPT/UB79s6ZgH3CqsuRl65q7Osifwhkf1ZVVcU5AYloSJEPPDVzvJ+tPIkmHh2nM5gOBJ4DJ/wzU/mcMkemsupypKULDQah9WRScXExCxES0ZAi/c1IT8NeYWDC0OMJV147NnigSaZr8fhh5nQ1ZYzVd5r+cy3+OXuMzEqlUtfbtu2XQoND+RyWu4SIfKmmpmY8WmPLkslkha4dx+nB5VYsR7du3XpADIl04JlZavedku61xw8NPn7nlJfbktKD5ON1tefh0HE8l06LycN7En1hjKIHYSdvs6JnYUF1dfWa5ubmzUJEebN06dJSWIlQswj/PT+9nHnq9ljsvyMHQk/fgtZkPTmiBY/5A9a7cNPL+MLV7MXfc6QDzyVTzLz8HXuHnhF9D1qAetCgMtYndf8umRqTGMJXkokncmpra2uwWiABkq4V5KvAg/14AB/ik8VDOEDc0NjY+F3xEL6dT8P+3Ssew2u5AK/lqcFuR6i9HAfI7eIfOpHtqLp929vby7Zv335MAkxPbojH4+/ExXV4v9dIFvC48VhpK9CF+n/8nm/HvtWWn58g/PygqanpF5IDkQ48Kw3NHfXr/b1D3keLEp6cdsIfg4XPGef0ha9u9mpFURCrGOO4XDMfH4wvCRF5bvXq1ecg6HwRQfWPEVS8yBJTsNyMsH0zws9uXL4HXWD/gZaf5yRLkR2ZOr7IkrPGeV9vRgckD2csjJ6pNVAl5nyJo1urzsCAbvIXDQ1YVUvAaCFCfDD6tmYQUVjgM+LtCCAPIuzsxH/f51HY6W8Wls+i5edZtJz+WFsdJQuRDTx6JlKpgVOvX2hNynCLKGc6dT0fOK9W9Gho0PAgwfQBFiIk8saSJUuKEXT+Lz4jHsF/r5Q8wcfTtdiG57Ett8oIu0QiG3jOHu9ImYHA89QIQswTh/zVf7RkWsxIKCR/0DMpsHq/BJcWIvy4EFFOIVysqKio0K4krc3lh1L8pVi+jtaeh9auXTvss0kjGXgK8etaiMDj9fxZ6rf7hx94nm/xVwuPnq110WROMxEV+NakYaFYPIK+/p9gdb94CN/+PsFChBR2iUTCyNkk+nMQdr6Ai9vkZLeSr+DvvSqVSj1RX19/3nDuH8nAo60W2sLjtQ68J19sHf64nF3tKenq9ddZUVfM5DieKEiHhE+KhxB4vo0Pp/XirUlFRUVBbqUiGhJaMo00vTuO83Wsviz+NgufLb9Ea8/5Q90xkoGnrMCWueXev3QdhNwxgiCuZ0S92Oqvbq3FU9mtFQXFxcXXYTVJPIIPpD1NaXpZPIRvfZxFnSgH8LdUK8FQhmUzWnpmZ7pTJAPPgnG2jCvy/qXvPpbqq7I8En6rbqxns80q5TQTEXC7eAgfnNqyo38Mbvqyl87Dt71VQkSRoTWv8GXqIbRWTxzsPpE8kmk3jddtFvrJ/mpbUk6MsIvqdwf9NY5HJxE9d6Ljk+pA5IWampqVWA2rDzwb+BDq7ezsfCPk6GW9TrwVxFpCRDQ689Clfc9gN0Yy8Cye4v34nW4EHZ0uoneEpXWeOjT809hNKIpZcv7EmJEB3pQftm17HQ4e2LZt2+FT/0lffkC8VZ+uKUREEYKWnlVo4b1hoNsiF3gqx6KLpsz7wKNdWa+2jbyQ4JEuV9q6/VOAUJ07wZGyQgaeMEqHgrXirW8P87qcSRci/LQQURT9w0BdW5ELPO+YUSAmGiuOo8H+9SwqJ3cnXdl73F+BZ265IxUMPKGEXHCbePg5oAOUGxsbm/tfr9d5PXgZPlBXV1cmRBQpOjcXura+3v/6yAWe2jlmqgcf7UrJwRMjDy46gegf2v0VePQsrYunsLRJ2GgYwAfDh8Rb/yInh7T156Zv89IYLKOa3JGIggmfbX+Mz7gzTr8uUoFHKysvmmTmwK1VkxNZ5BadQPRln52arlbN4jQTYZNKpW6Wk6HAEzowuaur698Gu11vMzB4+TYWIiSKJM03n+5/RWRoscFCQx99j+7P7nNcBzlrAcIen2WexWjhsdmrFSY2fEI8hG9YPz19sHJ/epveR7w1qbCw8L1CRFF0Q3rKnD6RCjzaLRMzdNR+5kj2X1wPdo68fo/XtFtrMbu1QqO2tvY9WFWKh5LJ5Ppc3Ge0EOw+I0QURcX4+7/u1H8iE3h0/qxFk2NGBiy3drvy2rHsx+EcOO5Ke4+/Ao+6ah6nmQgRT09F1wHJzc3Nm4e6n97HwODl83TyQyGiyMHnyxszu0fmK/vkMbbMKDGT7353oFdGMyXWka6UtPVoYPJXHl09Ky5/85uTU2BQcKF1Zwm6ki4Rb31rhPf9W/GW9uX/TCjI2nHw+sVw7oj3txbSrBAPYVv2YvWyjEIqlfJXpdkQwnth5cKFCwt27tzZE5nAU4mwo6HHhEf2j+49rC1ErV3+a+GpKLLkjHJHdvps+gsaGXwAeFqfJj1Y+c7h3l/vW1RU9NfYLs8+j/RbntYcampqekkokNAa+AxW7xjOfdGip6UQ1oiH8H69r6Gh4VYhvyuYPXt2PQLP/ZHo0tJhO/MM1ZLRmLJjX0JGQysta6jwW+SJWZZcNo3jeIKsurp6JlbXiIdwILg/02Dl/tKDl+8XD1kncboJIm88gy8V92DRltqPYb0Wy/W4/Bms/xNLm+RXvf4TiaNX3D5ZR8bEeGWtkvxK2+jr6Ow8jMDj6ge1+IaDeHwJAs/dz3X77iwyGp70NBKeftFBM/2IByLrY7Bt7xYPIfDcgG/+f4Fv5e1CRKP1Opbv42/3e2g5/f1Qd0ZX+tVY/SX+Di8WwxC4LtV1JFp4ChzpmwDTBJ1OIpGDybBeaPVfC49mr9mljkwZE7l6laGA1p2xWN0oHsIHy0v48NsiI6SP0ceKt8bgZ/ypENFofQVfHGZg+dxwwo5qbGx8AMsl+Bt8F/7bKWb1FSCMxJFrfJElc8vMBJ5n0RWVzEFS0Wkp/DSJ6ClTxlgys5SBJ4gcx7kR365KxEN4/mGP3cnlY0fwM7TyMt/ARFnQrim06FyJoPNFyRJCz314jiW4OOxu79HC3/3Y+vr6qZH4w185I97XHeM1DShPHeqVZA5mhuhIuLKn3X/9RuWFtiyocFiEMHgsfFh5WmhQByt3dnb+u2RJH2ug8nIlurVYiJBohPRvE0GlBi06G2WU8BxPJpNJr6e1eRP8vDOjEXhmmpkWQYsF7j6WyllX1GMH/XfGogadZZVxKXSYeIIE/efX4FvOXPHWfSMZrNxf+rH3ifc+J0Q0Ivj8uKO5ufk3kiN4rv9CiPqumDMt9IFHCw5eOtXM2Gytn3O4M3f9UL/d788SDToeqsBMDyHljokzlL4to5eL5xjKeTU1NcuFiIbrZ+jG+orkmG3bn0foMTV4oyz0gUcnCy2MmWmN2H/c7Qs9ufLU4V7fDVxWOmh5fjkTT1CgC+dCfDtbJh7SAcfom98qo6TPYWDwsn7Q/rkQ0XCcQHeznkGZ88PRpk2b9mP1SzEAf/MloQ88S6ebad3Rd8Le46mcTgnxUqv/5tQ65eozOHt6UCBAmJhLKpctMyZaea5O1yQiogzw+dE0mq7qYWgWM8LdwhOzzY3f0VnOn29J9q1zRc/2Gs2cXF5aNYvzagXBqlWrpmC1TjyUrqz8b5Ij+lwGBi/bnFSUaGj4W7xXPITW50fEALyOcJ9frNNJTCw28xK19s7vj+T+M/rlNn9W+NN9ewa7tXyvoKDgU15O2aDw/D/GN8BWyRF9Ln1O8Rh+xkfQ3VcmRDSo7u7uB8RD6C4zEngk7C0854x3pCRuZvxOInmy6GCuPXnIv3PLLa/kNBN+hoN5IVYfE49lU1k5H885AC1EeJMQ0WAexBeQDvGQfsHB3+ER8V5BaAOPnj79tgmOFBsKPDpY+cCJ3AeeZ48kfVmAUNXMjrMej4/hQ+QjWI0TD6UrKz8sOabPaWLwMlp5PiksREg0IPwNPiZmHBUDQvuHri07Z42LialyMTpDetKDYHKo05WWLn+O45mNLq3K8I97Dyp9598uHkNg8KwlxsvnPk1lbW3te4SI3gJ/gyZaXvTn5KxLPJPQ9kmMK7LkjApzB+NHPKqZo2dptXS5MrFYfOdkqHRkj08HVkdZdXX1WgOFBvUb4FwEhr8WD+C5x1tmZs/VU9TvESJ6E/wNmpr+wUgLT2gDz4QiW6aPNRd4njjoXeDZdzwlC8b5b4DwGAQerXP08J6EJ61blD3HcUwUGtRvZoGfjFNnb0ZAvLy5uflXQm9h27an3aLkX6lUykgLDxwXA0LbH7F4SkyKDBUc1LE7f/ColUPn1NKJRP3ISY+TKi3gQB4/qaurW4jVFULDhoP6pyWAENY8rw+Bg94UoUjCFydjE3yaENoWnqoZ5l6a5qq/vnyMeOW8iY5o8W3Lh7nijApHxqM1rbXbn6fPRxGaoT9r+fHN4mPYX+/UQoRo5dkjAYLftaez3yuEwclCkdTb2+vpGVqmhTLw6DxP50ww99ImFNty3dmFEkVTx1oyo8SSV9qEfGDVqlUTcPD+E6GRsvFtVlt5bpMAMRF4gIEnouLxeKi+OYWyS2vRJEcqCvkN14S4bckVrLrsGwUFBXqadTTT9yjpafxo5RkrAYJwWyoew35h4KFQCGXgWcMDsFGXTWUBQj9IFxq8RSgrCA8laOW5WXLHRNXQGeIx7JeLhCgEQhd4dCDt6tmc2NKkM8fZfTOoU36lUqnrxeNCgxGgZ7fl6s18QjyGMHKBeGjJkiVaEGOVEIVA6I5SWghvZinneDLJtiypnbLgkowAAA/iSURBVMOQmW+cDDMnKmtqat4tuWHiVNuzFy5c6FmTdkVFxbVYscmcQiF0gef8STHh6B3zrprHz8R8qq2trcFqgdCoodUkVwOXTQQee/bs2Z61wLiue60QhUToAs+KSs7vlA+LJsdkQhF3fB4ZKTQYBQg8S+rq6i6UUcLzGCmmBu8TD6xevbocqxohColQBR49M2v+OI4lyQeNOhdM4uDlfEAXzHysqoVyBi0bfyGjhOfwfAxP+uf8UXqsTU7F4/FvIbQF6qw1w/iBFzChSgfTS2yZWMzAkw9a527lzDi7E/PAtm0tNMhdn0PYne/SQoQyCniOvWKAnl1WUVHxeckhvPYrsbpOAgoh8Jh47wyhQAlVOphX7rBbJU90r+s0E+Wsf2SUFhoUj7o0Ig450h5VNyEOus+JIfhZX0BIOVdyQLuyHMe5SwLM0CzfHDMXMKEJPHG8knPGO1Ic4wE3X/TU9BmlbGEzCd0OH8fKu3lNou3G0RQixEHXWODBz4ohpDTW19efJ6NQV1d3RiwW246LkyTAEABNBJ7Z6dpXFBChOTrpRKEXTuLp6Pk0odiSs8Y57NYypKqqKoYD3SeEPKFdRWjl+Zhkqbu7+/diVmUqldpRW1ub1dQiNTU170JQeBKv+20SfC1iAPbXTUKBEZrAoy07C8Yx8ORToWPJokmxvrnMyHvFxcU6xiLQ38QD4FbJ8nPyoYceeh0rE2NJ3qCDjLH8P4SezWidunyo++tgZwSdD+H+v0K4uzcsg5QNdWmpr2D/TRMKhNCMMj+zwu6bxJPyS+cx0/DZnXSFPHe7kKdw4JyLbotrGxoa7pXs/BrLGjEM270aXVyrse3aCvEIrnoU6524/lUsOth2Hv5/NtbLw3gmFlq6jiDAidfSAfPupUuXvnP79u3DDrf4vbx7FO8pylJoEsKa2Sx85wdnVHDgsgn4VrkSq1GN16Bhy7oQIUJFg+QZDsiXYPlTBIBvYr0RV30dy224XBvW084ReHaKOVeUlZU9jVayi4e4n6XdjVieweUNWC8RMio0LTzLprMkgh9o687yyrj8ob1byDujPYOIRmSpFiLEN/LHZYSSyeR/xWKxfxQyavPmzS/id/aaGJhcNW02wuMjCDEbsX4GQfdZLIfxdzpPtwGX5+L6Rbh85mmP0bMrdwgZE4qUMG2sJXPLOXDEL9bMisvdzzLweCVdaHCteK+7s7Nz6rZt21rFh6qqqiqKi4v346KJM2U+h2XEg4H1wIuD4Es42M0XMu3nYriWEH7P+ne5VstinV4aa6AyWbjufevWrfvkhg0bkkJGhKJLa8k0TifhJ0umxaSQ+dMz6bmeTPzt/tCvYUelt+2HYgC+ob9r1apVUyQL+H39QCgftom/VbS1tdUJGROKFp5Vs8zP1P3YgV5JGR6XO6vM7qt143dxx5Kl0+Py0J6EUG6hmb4Mqw+JATjI/6v4nG4jAsUHxGNa5yYej+sg8RHPSN/T0/N1PPYL+hxCJj0kPuc4zvux+i8hIwL/B6gDZE3P4dTW7cotDx+XXsOJ57qzC+VTb8/5lDmeqJnDwOOFVCp1s23bJgoN7mxsbPT9+ALdRoRAHaC6ULx3c3V19R3Nzc0jmhR069atR7CN2hLFitgGNTQ0vIz9fgAXs2qZM0HnQUPXbBFaK7uEPBf4wDMPrR4lcbP9Wa+0JeXgiZTxFp6mXYnABJ5laOEZg3fXiV6h3NHpDkwVGvR9685pdFu/Lh5LFyL8SDY/K5lM/h98m2fgMW89lr8Sn8J7qqi4uPg9uPg9Ic8FfgzP+WjdKTIc23YeSUo+qswcQMg61JmSIBiDEDq/ggN5cqm2tlY/GCvFezpY+T8kINLbamqUvI6fGvE3LLQKPYbV/UJG4b3xNbSiGKm6PArvFzIi0IFHB8aeN9GRAsdcC4+LpPO7g719a9N6kmhdag1I4EEIvWgKhyzkmJFT0XGAuAdN7B0SELqtus1igBYiRPB8p2QB3ZF/iu0MzH4Ng/R74+/E367IdkA8jUygA8+4QrtvhnSTHVrHEq7sas9P6EigD+33R4LRR6QDly/oa33j6XO5oEXKtICcGICfE6TurD6Gtzmr4NnU1LQP2/k/hIzq7u7WLsgD4l9OPB43evp8VAU68EwstqSyxOxLOIRupaPd+Qo8Ik8dTkoyAI08GnPml9syoYiBJxdwoPy0mLGzoaHh1xIw6W02Ul0Xv4vlWohQsoDt/CesNgsZkx4Q/DfiY3hPMfAYEOjAo8UGTc+fte94Slq78zdP1N6OlLR0B6Nba2aZI1PHcn6z0aqurp6J1TViALpdviXB9S9iCLpJRnx6+qmHtre366zkzwkZg6Cp7+t7xb8WpwuKkocCezTSwpVa4M7g8J2+cTt7jqXkWE/+As9+tDAd6QzGxJylBVbfGCu28YxOehoJz/9WcRA+jub/70pAdXZ2fkdfg5ixLttxF+lJJuuwrW0SENjWfQb3rRdSJSUlf4LX0CQ+hVaeDwp5KrCBRzf87ZPNDortSbny3NGk9OaxgaWly0XgCUYLjwadFTPiYjHxZA2tOzq5441iAD5wfxSkwcr96bbraxADtIhgQUHBn0uWGhsbdyHILsfF18X/dmO5HEuQA4/oFA67d+++WvxbkJBlCzwW2MBTUWj+tOfupMjzLfmd9uR4wpUXWs3XAMrWBRNjEmevVtYcx7lR67+IAejOCtxg5f4Mv4Yb04E0K5s2bXoa26szbD8rPoUWkVexWqoBTUJg586dPWgJXIvX9W3xGT0DsK6u7jIhzwT2ULRyZlwcw1vfnXRl97H8t648frBXkgEJPOOKLOMtcSFi4YPZVKHBnU1NTY9IwKVfg5HByzAOgXRU03zomVtYXYbf8y/EZ7BNd3d1db29oaHhNQkRHcSMAHcTwuaVfqvRg+25XsgzgQ08tXMKxLRWdCdpheV8e64FgScoTTxw5Tzzv6swqKmpuVa/9YkB+KD9ZwkJk68FP0u7tUbVaYtA0V5aWroSz/VnWA5K/u1GGFiDUHC9nyePHS2EzY2JRGIh9vnD4hN6tta6detYsdUjgQw8WnBw2XTzrQa/2pvwRcvKq+0p6QpKEw/UzeFs9tlIz4ruOR2Mim/yoSltr6/F1ABbDaQIplfLKOn4EgSMb2Hbz8C2/20+BginWzv+srW19WyEgS0SAVu3bj2A/X5FMpms1gHNWPL5wfooguYN+l4Q8kQgA8854x0pzENBu9/s90fRPx00vWNvcCapGldky1nj+KVlJLTOCw6my8QA/JwfBnmwcn/pwcs/FENyGUx123EA/gKCz1Qc/G4RM91zWpTv8/iZs9Ha9OUdO3Z0SsQ0Nzdvxn6vxe/yXGQe02cq/gy/6zrs+4sRNH8q5JlADq64fFpc8uGZw/4J3r/a1yt1c4PTVbS8MibPtvCLy3BpnRfL0Olt+FmBH6zcn74m7L8PiwH4OVUIqAtxwMpZOEkHUO2a++fa2tpleD21tm2vwv9zMqhVp7jAdt+Hi/diux8U6pP+Hd5QVVV1S0FBQZXjOKvx/1XYX2+zcvgHied7Cqt7ent7v79ly5bdQkZYc+5sCU7fCGjdnbvrSuQyw6FHx+4suafNN2dHzSmz5eF15RIUv96XkA80dvRViw6SXR8dz8448g0ciEsKCwuXIfxchIPm+bjqAhyHzxrGQ1/G8gSWx9Ga8BhaEhqFhq26unoyws8avYj9fjbWk7HfJ2BdOoyHv4jleTzuWTzmuUQisQMhx7dn5oVZ4Fp4po21ZfIY8z1xTx7q9dWp4Dqfl05xofOJBcEU/M6m43f3Bx+c5UYUVOmWn8b08oaamprxaC2oQKuEfgsqQ6jpxAG6FQfZo2i1OCQ0Kujy0sHk308vb7JmzZrp2NcTEWbG6X5PJpPHsG5HMD2mA9KFfCNwgUenk8jHQf4Rn4zfOd2zR5Jy+fRgBJ7xRbbMH+cw8BB5AC02OuDYV6dYR8XmzZv3YrVXyPcCNWhZz/Q5s8Lum7LAJB23/9sD/gs8fgxhg9Hf2cLxjtGpQIiIiE4JVOApwtHy3IkxiRne6iNdKdl33H9DnbbvTQSm4rKG1YumxGRsnImHiIjMC1TgKcHBcuEE86c3a3Xlbh/WvTnc6WIJThfRmejSKilg4CEiIvMCFXjKCy2ZVWp+k587kpSuXv8Fno6E2zd7e1DowOX55azHQ0RE5gUq8CyZHpNiwwUHtctIZ0jv8WEJmeMJkVfaglPbRsfv1M7JTw0lIiKKtkAFnhUzzJ9Upq0or3ekxI9DZbTV6QWEsd4Anfh0OUKrxV4tIiIyLDCnpVt9iyVPHDJ7ZtLhE65vW1E0hD2D7rbfHkgYb/nKlp7xVlFgydHuQNW7JCKigAtMpWU9nE8Za75Bqhd9Wq04OPu1FUUnUi0vtAM1OWdLZ0p6AtIqxUrLREThEJgWHk1l+4+zaF1/3cmT014QERHR4AI5eSgRERHRSDDwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6DHwEBERUegx8BAREVHoMfAQERFR6NlYuoWIBpIQIiIKBQ08x4WI3sp1O4SIiEIBgcfaLUQ0AOs1ISKiUEDgcZ8XIhqA+6wQEVEo2K7Iz4WI3sp2HhYiIgoF27aSW8XlwGWifnosSTDwEBGFhJ1wuw6JZT0pRHQa9/FkUfygEBFRKNhTkgeOua77gIjFU3CJwBWr17LsjZM6ynmWFhFRSNiP3bQ4IalkAz7m9woRiSXyetKxNj12E78EEBGFhdbhkYky8Wl8zD+MT3pXiKJM/wZc92e7xzQ/IUREFBrWqQsz7mybH5PeX+KqKUIUVZZ7MGU5S3Z/uOIVISKi0LBPXXjto+UvpURuxcUuIYoi1+3EN4BbGXaIiMLHPv0/u18b/2Os/kmEXVsUOa4r1jdf3TP+XiEiotB5U+CRO6xUIh77GuLOBkusXiGKAH2vY7mvMBX7qv4NCBERhY7d/4rXP1h2RHqtz+HiT4UtPRR+LtznJuT2F24qOyxERBRK1mA3LFjfPrHb7v2sJe4tYlnFQhQ+Ol7tn7RVsy/oExFRaFkZb73DtefObHk3mnm+gbtO0opsQhR0J089P6iD9PvGrbEbi4go9IYVYGbd1TrPTqa+hJaeFQg/lThexIQocLSQoBbYtB7uFfvLemaiEBFRJAy/xeZHP3Jmnahe5CTdetdNrcVDL8S1BULkdzo5rmU92TeFSirZoIU2WUWZiChaRtxFddF6N36opK3E6UpMdiW+EgeQlXiac3BUmYGDSgnuEhei/OnGchzvyd14Tz6PFsmf21Zyq06Sq/PG9U2lQkREkfP/AQAA//88SKkNAAAABklEQVQDAA6qYV8FYNJoAAAAAElFTkSuQmCC\";\n export default img;","import { useState } from 'react'\nimport { TextInput, PasswordInput, Button, Stack, Anchor, Divider, Group, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign In completo com Mantine\n * Suporta email/password, magic link, social login\n */\nexport default function SignInForm({\n // Configuração\n logo, // Removido default, será calculado abaixo\n title = 'Entrar',\n subtitle = 'Acesse sua conta para continuar',\n\n // Features\n showMagicLink = true,\n showForgotPassword = true,\n showSocialLogin = false,\n showSignUpLink = true,\n\n // Links\n signUpUrl = '/auth/signup',\n\n // Callbacks\n onSuccess,\n onError,\n onMagicLinkSent,\n onForgotPasswordSent,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signIn = useAuthStore(s => s.signIn)\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loadingSignIn = useAuthStore(s => s.loadingStates.signIn)\n const loadingMagicLink = useAuthStore(s => s.loadingStates.magicLink)\n const loadingResetPassword = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n password: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signIn(values.email, values.password)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleMagicLink = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await sendMagicLink(form.values.email)\n onMagicLinkSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const handleForgotPassword = async () => {\n if (!form.values.email) {\n form.setFieldError('email', labels.emailRequired || 'Email obrigatório')\n return\n }\n\n try {\n await forgotPassword(form.values.email)\n onForgotPasswordSent?.(form.values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n const isLoading = loadingSignIn || loadingMagicLink || loadingResetPassword\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={isLoading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Sua senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={isLoading}\n />\n\n {showForgotPassword && (\n <Anchor\n size=\"sm\"\n ta=\"right\"\n onClick={handleForgotPassword}\n style={{ cursor: 'pointer' }}\n c={loadingResetPassword ? 'dimmed' : 'blue'}\n >\n {loadingResetPassword ? labels.sendingReset || 'Enviando...' : labels.forgotPassword || 'Esqueceu a senha?'}\n </Anchor>\n )}\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loadingSignIn}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signInButton || 'Entrar'}\n </Button>\n </Stack>\n </form>\n\n {showMagicLink && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Button\n variant=\"light\"\n fullWidth\n loading={loadingMagicLink}\n leftSection={<IconMail size={16} />}\n onClick={handleMagicLink}\n disabled={isLoading || !form.values.email}\n >\n {labels.magicLinkButton || 'Enviar Link Mágico'}\n </Button>\n </>\n )}\n\n {showSocialLogin && (\n <>\n <Divider />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={isLoading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={isLoading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignUpLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.noAccount || 'Não tem uma conta?'} <Anchor href={signUpUrl}>{labels.createAccount || 'Criar conta'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, PasswordInput, Button, Stack, Anchor, Center, Text, Divider, Group } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconLock, IconUser, IconArrowRight, IconBrandGoogle, IconBrandGithub } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário de Sign Up com Mantine\n */\nexport default function SignUpForm({\n // Configuração\n logo,\n title = 'Criar Conta',\n subtitle = 'Preencha os dados para se cadastrar',\n\n // Features\n requireName = true,\n showSignInLink = true,\n showSocialLogin = false,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSuccess,\n onError,\n onSocialLogin,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const signUp = useAuthStore(s => s.signUp)\n const loading = useAuthStore(s => s.loadingStates.signUp)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n name: '',\n email: '',\n password: '',\n confirmPassword: '',\n },\n validate: {\n name: value => (requireName && !value ? labels.nameRequired || 'Nome obrigatório' : null),\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n try {\n const result = await signUp(values.email, values.password, values.name)\n onSuccess?.(result)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n {requireName && (\n <TextInput\n label={labels.name || 'Nome'}\n placeholder={labels.namePlaceholder || 'Seu nome'}\n leftSection={<IconUser size={16} />}\n {...form.getInputProps('name')}\n disabled={loading}\n />\n )}\n\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.password || 'Senha'}\n placeholder={labels.passwordPlaceholder || 'Crie uma senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n rightSection={<IconArrowRight size={16} />}\n >\n {labels.signUpButton || 'Criar Conta'}\n </Button>\n </Stack>\n </form>\n\n {showSocialLogin && (\n <>\n <Divider label={labels.orContinueWith || 'Ou continue com'} />\n <Group grow>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGoogle size={16} />}\n onClick={() => onSocialLogin?.('google')}\n disabled={loading}\n >\n Google\n </Button>\n <Button\n variant=\"light\"\n leftSection={<IconBrandGithub size={16} />}\n onClick={() => onSocialLogin?.('github')}\n disabled={loading}\n >\n GitHub\n </Button>\n </Group>\n </>\n )}\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.hasAccount || 'Já tem uma conta?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para envio de Magic Link\n */\nexport default function MagicLinkForm({\n // Configuração\n logo,\n title = 'Login sem Senha',\n subtitle = 'Receba um link de acesso no seu email',\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const sendMagicLink = useAuthStore(s => s.sendMagicLink)\n const loading = useAuthStore(s => s.loadingStates.magicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await sendMagicLink(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link Mágico'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.backTo || 'Voltar para'} <Anchor href={signInUrl}>{labels.signIn || 'login com senha'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Title, Text } from '@mantine/core'\nimport { IconCheck, IconX } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Componente de verificação de Magic Link\n * Extrai token da URL e verifica automaticamente\n */\nexport default function MagicLinkVerify({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso/erro\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const verifyMagicLink = useAuthStore(s => s.verifyMagicLink)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const verifyingTokenRef = useRef(null)\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n setStatus('error')\n setErrorMessage(labels.noToken || 'Token não encontrado na URL')\n onError?.(new Error('No token'))\n return\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyMagicLink(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Link Mágico'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto autenticamos você...'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Autenticado com Sucesso!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.authenticated || 'Você está autenticado.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Falha na Autenticação'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidLink || 'O link é inválido ou expirou.'}\n </Text>\n </Stack>\n )}\n </AuthCard>\n )\n}\n","import { TextInput, Button, Stack, Anchor, Center, Text } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconMail, IconSend } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para solicitar reset de senha\n */\nexport default function ForgotPasswordForm({\n // Configuração\n logo,\n title = 'Recuperar Senha',\n subtitle = 'Enviaremos um link para redefinir sua senha',\n\n // Features\n showSignInLink = true,\n\n // Links\n signInUrl = '/auth/signin',\n\n // Callbacks\n onSent,\n onError,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const forgotPassword = useAuthStore(s => s.forgotPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n const form = useForm({\n initialValues: {\n email: '',\n },\n validate: {\n email: value => (/^\\S+@\\S+$/.test(value) ? null : labels.invalidEmail || 'Email inválido'),\n },\n })\n\n const handleSubmit = async values => {\n try {\n await forgotPassword(values.email)\n onSent?.(values.email)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <TextInput\n label={labels.email || 'Email'}\n placeholder={labels.emailPlaceholder || 'seu@email.com'}\n leftSection={<IconMail size={16} />}\n {...form.getInputProps('email')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n leftSection={<IconSend size={16} />}\n >\n {labels.sendButton || 'Enviar Link de Recuperação'}\n </Button>\n </Stack>\n </form>\n\n {showSignInLink && (\n <Center>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n >\n {labels.rememberedPassword || 'Lembrou a senha?'} <Anchor href={signInUrl}>{labels.signIn || 'Entrar'}</Anchor>\n </Text>\n </Center>\n )}\n </AuthCard>\n )\n}\n","import { useState, useEffect } from 'react'\nimport { PasswordInput, Button, Stack, Text, Title } from '@mantine/core'\nimport { useForm } from '@mantine/form'\nimport { IconLock, IconCheck } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport AuthCard from './AuthCard.jsx'\n\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Formulário para redefinir senha com token\n */\nexport default function ResetPasswordForm({\n // Configuração\n logo,\n title = 'Nova Senha',\n subtitle = 'Crie uma nova senha para sua conta',\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Callbacks\n onSuccess,\n onError,\n\n // Redirect após sucesso\n signInUrl = '/auth/signin',\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [token, setToken] = useState(propToken || '')\n const [success, setSuccess] = useState(false)\n const resetPassword = useAuthStore(s => s.resetPassword)\n const loading = useAuthStore(s => s.loadingStates.resetPassword)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n // Extrai token da URL se não foi passado como prop\n useEffect(() => {\n if (!propToken && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n const urlToken = urlParams.get('token')\n if (urlToken) setToken(urlToken)\n }\n }, [propToken])\n\n const form = useForm({\n initialValues: {\n password: '',\n confirmPassword: '',\n },\n validate: {\n password: value => (value.length < 6 ? labels.passwordTooShort || 'A senha deve ter pelo menos 6 caracteres' : null),\n confirmPassword: (value, values) => (value !== values.password ? labels.passwordMismatch || 'As senhas não coincidem' : null),\n },\n })\n\n const handleSubmit = async values => {\n if (!token) {\n onError?.(new Error('Token não encontrado'))\n return\n }\n\n try {\n await resetPassword(token, values.password)\n setSuccess(true)\n onSuccess?.()\n } catch (error) {\n onError?.(error)\n }\n }\n\n if (success) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.successTitle || 'Senha Redefinida!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.successMessage || 'Sua senha foi alterada com sucesso.'}\n </Text>\n <Button\n component=\"a\"\n href={signInUrl}\n fullWidth\n >\n {labels.goToSignIn || 'Ir para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n if (!token) {\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Text c=\"red\">{labels.noToken || 'Token não encontrado na URL'}</Text>\n <Button\n component=\"a\"\n href={signInUrl}\n variant=\"light\"\n fullWidth\n >\n {labels.goToSignIn || 'Voltar para Login'}\n </Button>\n </Stack>\n </AuthCard>\n )\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n title={title}\n subtitle={subtitle}\n {...cardProps}\n >\n <form onSubmit={form.onSubmit(handleSubmit)}>\n <Stack gap=\"sm\">\n <PasswordInput\n label={labels.newPassword || 'Nova Senha'}\n placeholder={labels.newPasswordPlaceholder || 'Crie uma nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('password')}\n disabled={loading}\n />\n\n <PasswordInput\n label={labels.confirmPassword || 'Confirmar Senha'}\n placeholder={labels.confirmPasswordPlaceholder || 'Repita a nova senha'}\n leftSection={<IconLock size={16} />}\n {...form.getInputProps('confirmPassword')}\n disabled={loading}\n />\n\n <Button\n type=\"submit\"\n fullWidth\n loading={loading}\n >\n {labels.resetButton || 'Redefinir Senha'}\n </Button>\n </Stack>\n </form>\n </AuthCard>\n )\n}\n","import { useEffect, useState, useRef } from 'react'\nimport { Stack, Loader, Button, Text, Title } from '@mantine/core'\nimport { IconCheck, IconX, IconRefresh, IconMail } from '@tabler/icons-react'\nimport { useAuthStore } from '../authStore.js'\nimport { useApplicationLogo } from '../AuthProvider.jsx'\nimport { decodeJWT } from '../authSdk.js'\nimport AuthCard from './AuthCard.jsx'\nimport defaultLogo from '../assets/logotipo.webp'\n\n/**\n * Card de verificação de email\n * Verifica token automaticamente e permite reenvio\n */\nexport default function VerifyEmailCard({\n // Configuração\n logo,\n\n // Token pode ser passado diretamente ou extraído da URL\n token: propToken,\n\n // Email para reenvio (opcional)\n email,\n\n // Callbacks\n onSuccess,\n onError,\n onResent,\n\n // Redirect após sucesso\n redirectTo,\n redirectDelay = 2000,\n\n // Custom labels\n labels = {},\n\n ...cardProps\n}) {\n const [status, setStatus] = useState('verifying') // verifying, success, error\n const [errorMessage, setErrorMessage] = useState('')\n const [tokenEmail, setTokenEmail] = useState(null) // Novo estado para email do token\n\n const verifyEmail = useAuthStore(s => s.verifyEmail)\n const resendVerification = useAuthStore(s => s.resendVerification)\n const loadingResend = useAuthStore(s => s.loadingStates.resendVerification)\n const user = useAuthStore(s => s.user)\n\n const verifyingTokenRef = useRef(null)\n\n // Hook para buscar logo da aplicação\n const applicationLogo = useApplicationLogo()\n const finalLogo = logo || applicationLogo || defaultLogo\n\n useEffect(() => {\n const verify = async () => {\n // Pega token da prop ou da URL\n let token = propToken\n if (!token && typeof window !== 'undefined') {\n const urlParams = new URLSearchParams(window.location.search)\n token = urlParams.get('token')\n }\n\n if (!token) {\n // Se já mostramos o erro de token faltando, não precisa fazer nada\n if (status === 'missing_token') return\n\n setStatus('missing_token')\n return\n }\n\n // Tenta extrair email do token (mesmo expirado) para permitir reenvio\n try {\n const payload = decodeJWT(token)\n if (payload?.email) {\n setTokenEmail(payload.email)\n }\n } catch (e) {\n // ignore jwt error\n }\n\n // Evita verificar o mesmo token duas vezes (React Strict Mode ou re-renders)\n if (verifyingTokenRef.current === token) return\n verifyingTokenRef.current = token\n\n try {\n const result = await verifyEmail(token)\n setStatus('success')\n onSuccess?.(result)\n\n if (redirectTo) {\n setTimeout(() => {\n window.location.href = redirectTo\n }, redirectDelay)\n }\n } catch (error) {\n // Se der erro, permitimos tentar novamente apenas se o usuário recarregar\n // ou se implementarmos um botão de retry que limpe o ref\n setStatus('error')\n setErrorMessage(error.message || labels.verificationFailed || 'Verificação falhou')\n onError?.(error)\n }\n }\n\n verify()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propToken, redirectTo, redirectDelay])\n\n const handleResend = async () => {\n const targetEmail = email || user?.email || tokenEmail\n if (!targetEmail) return\n\n try {\n await resendVerification(targetEmail)\n onResent?.(targetEmail)\n } catch (error) {\n onError?.(error)\n }\n }\n\n return (\n <AuthCard\n logo={finalLogo}\n {...cardProps}\n >\n {status === 'verifying' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <Loader size=\"lg\" />\n <Title order={4}>{labels.verifying || 'Verificando Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.pleaseWait || 'Aguarde enquanto verificamos seu email...'}\n </Text>\n </Stack>\n )}\n\n {status === 'missing_token' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconMail\n size={48}\n color=\"var(--mantine-color-blue-6)\"\n />\n <Title order={4}>{labels.verification || 'Verificação de Email'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {labels.missingToken || 'Para verificar seu conta, clique no link enviado para seu email.'}\n </Text>\n </Stack>\n )}\n\n {status === 'success' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconCheck\n size={48}\n color=\"var(--mantine-color-green-6)\"\n />\n <Title order={4}>{labels.success || 'Email Verificado!'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {redirectTo ? labels.redirecting || 'Redirecionando...' : labels.verified || 'Seu email foi verificado com sucesso.'}\n </Text>\n </Stack>\n )}\n\n {status === 'error' && (\n <Stack\n align=\"center\"\n gap=\"sm\"\n >\n <IconX\n size={48}\n color=\"var(--mantine-color-red-6)\"\n />\n <Title order={4}>{labels.failed || 'Verificação Falhou'}</Title>\n <Text\n size=\"sm\"\n c=\"dimmed\"\n ta=\"center\"\n >\n {errorMessage || labels.invalidToken || 'O link é inválido ou expirou.'}\n </Text>\n\n {/* Só mostra botão de reenvio se o token expirou e temos o email (via prop, user ou token) */}\n {(email || user?.email || tokenEmail) && errorMessage?.toLowerCase().includes('expired') && (\n <Button\n variant=\"light\"\n leftSection={<IconRefresh size={16} />}\n onClick={handleResend}\n loading={loadingResend}\n fullWidth\n >\n {labels.resend || 'Solicitar novo link'}\n </Button>\n )}\n </Stack>\n )}\n </AuthCard>\n )\n}\n"],"names":["getEnvVar","key","import","meta","env","e","API_BASE","window","location","API_KEY","configure","apiUrl","apiKey","replace","api","route","opts","cleanRoute","startsWith","url","token","getStoredToken","headers","Accept","Authorization","res","fetch","data","status","json","catch","ok","errorMessage","message","error","detail","statusText","JSON","stringify","Object","assign","Error","localStorage","getItem","setStoredToken","setItem","removeItem","handleAuthResponse","result","session","sessionToken","console","log","hasToken","hasSessionToken","hasSessionSessionToken","extractedToken","warn","decodeJWT","parts","split","length","base64Url","base64","jsonPayload","atob","Buffer","from","toString","parse","isTokenExpired","payload","exp","now","Date","isExpired","diff","isAuthenticated","valid","getCurrentUser","id","sub","email","name","signUp","password","method","body","signIn","signOut","refreshToken","sendMagicLink","callbackURL","callback","origin","verifyMagicLink","encodeURIComponent","forgotPassword","redirectTo","redirect","resetPassword","newPassword","verifyEmail","resendVerification","getSession","getApplicationInfo","socialRedirect","provider","href","React","useAuthStore","create","set","get","user","loading","loadingStates","magicLink","applicationInfo","setLoading","value","state","fetchApplicationInfo","appInfo","init","sessionError","err","startRefresh","refreshInterval","setInterval","timeUntilExpiry","addEventListener","clearInterval","checkTokenValidity","setUser","AuthContext","createContext","AuthProvider","children","onError","s","useMemo","useEffect","handleStorageChange","event","reload","removeEventListener","interval","contextValue","createElement","Provider","useAuth","useShallow","useSignIn","useSignUp","useSignOut","useCheckToken","useMagicLink","verifying","usePasswordReset","useEmailVerification","resending","useSession","useAuthLoading","useApplicationLogo","image","ProtectedRoute","fallback","Navigate","to","Outlet","AuthCard","title","subtitle","logo","logoHeight","width","props","Paper","_extends","withBorder","shadow","p","w","radius","Stack","gap","Image","src","alt","h","fit","Title","order","Text","size","c","SignInForm","showMagicLink","showForgotPassword","showSocialLogin","showSignUpLink","signUpUrl","onSuccess","onMagicLinkSent","onForgotPasswordSent","onSocialLogin","labels","cardProps","loadingSignIn","loadingMagicLink","loadingResetPassword","applicationLogo","finalLogo","defaultLogo","form","useForm","initialValues","validate","test","invalidEmail","passwordTooShort","handleSubmit","values","handleMagicLink","setFieldError","emailRequired","handleForgotPassword","isLoading","onSubmit","TextInput","label","placeholder","emailPlaceholder","leftSection","IconMail","getInputProps","disabled","PasswordInput","passwordPlaceholder","IconLock","Anchor","ta","onClick","style","cursor","sendingReset","Button","type","fullWidth","rightSection","IconArrowRight","signInButton","Fragment","Divider","orContinueWith","variant","magicLinkButton","Group","grow","IconBrandGoogle","IconBrandGithub","Center","noAccount","createAccount","SignUpForm","requireName","showSignInLink","signInUrl","confirmPassword","nameRequired","passwordMismatch","namePlaceholder","IconUser","confirmPasswordPlaceholder","signUpButton","hasAccount","MagicLinkForm","onSent","IconSend","sendButton","backTo","MagicLinkVerify","propToken","redirectDelay","setStatus","useState","setErrorMessage","verifyingTokenRef","useRef","verify","urlParams","URLSearchParams","search","noToken","current","setTimeout","verificationFailed","align","Loader","pleaseWait","IconCheck","color","success","redirecting","authenticated","IconX","failed","invalidLink","ForgotPasswordForm","rememberedPassword","ResetPasswordForm","setToken","setSuccess","urlToken","successTitle","successMessage","component","goToSignIn","newPasswordPlaceholder","resetButton","VerifyEmailCard","onResent","tokenEmail","setTokenEmail","loadingResend","handleResend","targetEmail","verification","missingToken","verified","invalidToken","toLowerCase","includes","IconRefresh","resend"],"mappings":";;;;;;AAAA;AACA;AACA,MAAMA,SAAS,GAAGC,GAAG,IAAI;EACrB,IAAI;IACA,IAAI,OAAOC,MAAM,CAACC,IAAI,KAAK,WAAW,IAAID,MAAM,CAACC,IAAI,CAACC,GAAG,IAAIF,MAAM,CAACC,IAAI,CAACC,GAAG,CAACH,GAAG,CAAC,EAAE;AAC/E,MAAA,OAAOC,MAAM,CAACC,IAAI,CAACC,GAAG,CAACH,GAAG,CAAC;AAC/B;GACH,CAAC,OAAOI,CAAC,EAAE;AACR;AAAA;AAEJ,EAAA,OAAO,IAAI;AACf,CAAC;AAED,IAAIC,QAAQ,GAAG,CAAC,OAAOC,MAAM,KAAK,WAAW,IAAIA,MAAM,EAAEC,QAAQ,GAAGR,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI,KAAK,uBAAuB;AAEjI,IAAIS,OAAO,GAAG,IAAI;;AAElB;AACO,SAASC,SAASA,CAAC;EAAEC,MAAM;AAAEC,EAAAA;AAAO,CAAC,EAAE;AAC1C,EAAA,IAAID,MAAM,EAAEL,QAAQ,GAAGK,MAAM,CAACE,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAChD,EAAA,IAAID,MAAM,EAAEH,OAAO,GAAGG,MAAM;AAChC;;AAMA;AACA,eAAeE,GAAGA,CAACC,KAAK,EAAEC,IAAI,GAAG,EAAE,EAAE;AACjC;AACA,EAAA,MAAMC,UAAU,GAAGF,KAAK,CAACG,UAAU,CAAC,GAAG,CAAC,GAAGH,KAAK,GAAG,CAAA,CAAA,EAAIA,KAAK,CAAA,CAAE;;AAE9D;AACA,EAAA,MAAMI,GAAG,GAAG,CAAA,EAAGb,QAAQ,CAAA,EAAGW,UAAU,CAAA,CAAE;AAEtC,EAAA,MAAMG,KAAK,GAAGC,cAAc,EAAE;AAC9B,EAAA,MAAMC,OAAO,GAAG;AACZ,IAAA,cAAc,EAAE,kBAAkB;AAClCC,IAAAA,MAAM,EAAE,kBAAkB;AAC1B,IAAA,GAAGP,IAAI,CAACM;GACX;;AAED;AACA,EAAA,IAAIF,KAAK,EAAE;AACPE,IAAAA,OAAO,CAACE,aAAa,GAAG,CAAA,OAAA,EAAUJ,KAAK,CAAA,CAAE;AAC7C;;AAEA;AACA,EAAA,IAAIX,OAAO,EAAE;AACTa,IAAAA,OAAO,CAAC,WAAW,CAAC,GAAGb,OAAO;AAClC;AAEA,EAAA,MAAMgB,GAAG,GAAG,MAAMC,KAAK,CAACP,GAAG,EAAE;IACzBG,OAAO;IACP,GAAGN;AACP,GAAC,CAAC;;AAEF;EACA,MAAMW,IAAI,GAAGF,GAAG,CAACG,MAAM,KAAK,GAAG,GAAG,MAAMH,GAAG,CAACI,IAAI,EAAE,CAACC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,IAAI;AAE3E,EAAA,IAAI,CAACL,GAAG,CAACM,EAAE,EAAE;AACT,IAAA,IAAIC,YAAY,GAAGL,IAAI,EAAEM,OAAO,IAAIN,IAAI,EAAEO,KAAK,IAAIP,IAAI,EAAEQ,MAAM,IAAIV,GAAG,CAACW,UAAU;;AAEjF;AACA,IAAA,IAAI,OAAOJ,YAAY,KAAK,QAAQ,EAAE;MAClCA,YAAY,GAAGA,YAAY,CAACC,OAAO,IAAII,IAAI,CAACC,SAAS,CAACN,YAAY,CAAC;AACvE;IAEA,MAAMO,MAAM,CAACC,MAAM,CAAC,IAAIC,KAAK,CAACT,YAAY,CAAC,EAAE;MAAEP,GAAG;AAAEE,MAAAA;AAAK,KAAC,CAAC;AAC/D;AACA,EAAA,OAAOA,IAAI;AACf;;AAEA;AACA,SAASN,cAAcA,GAAG;AACtB,EAAA,IAAI,OAAOd,MAAM,KAAK,WAAW,EAAE,OAAO,IAAI;AAC9C,EAAA,OAAOA,MAAM,CAACmC,YAAY,CAACC,OAAO,CAAC,YAAY,CAAC;AACpD;AAEA,SAASC,cAAcA,CAACxB,KAAK,EAAE;AAC3B,EAAA,IAAI,OAAOb,MAAM,KAAK,WAAW,EAAE;AACnC,EAAA,IAAIa,KAAK,EAAE;IACPb,MAAM,CAACmC,YAAY,CAACG,OAAO,CAAC,YAAY,EAAEzB,KAAK,CAAC;AACpD,GAAC,MAAM;AACHb,IAAAA,MAAM,CAACmC,YAAY,CAACI,UAAU,CAAC,YAAY,CAAC;AAChD;AACJ;AACA;AACA,SAASC,kBAAkBA,CAACC,MAAM,EAAE;AAChC;AACA,EAAA,MAAM5B,KAAK,GAAG4B,MAAM,CAAC5B,KAAK,IAAI4B,MAAM,CAACC,OAAO,EAAE7B,KAAK,IAAI4B,MAAM,CAACC,OAAO,EAAEC,YAAY;AAEnFC,EAAAA,OAAO,CAACC,GAAG,CAAC,mCAAmC,EAAE;AAC7CC,IAAAA,QAAQ,EAAE,CAAC,CAACL,MAAM,CAAC5B,KAAK;AACxBkC,IAAAA,eAAe,EAAE,CAAC,CAACN,MAAM,CAACC,OAAO,EAAE7B,KAAK;AACxCmC,IAAAA,sBAAsB,EAAE,CAAC,CAACP,MAAM,CAACC,OAAO,EAAEC,YAAY;AACtDM,IAAAA,cAAc,EAAEpC;AACpB,GAAC,CAAC;AAEF,EAAA,IAAIA,KAAK,EAAE;AACP+B,IAAAA,OAAO,CAACC,GAAG,CAAC,mCAAmC,CAAC;IAChDR,cAAc,CAACxB,KAAK,CAAC;AACzB,GAAC,MAAM;AACH+B,IAAAA,OAAO,CAACM,IAAI,CAAC,sCAAsC,EAAET,MAAM,CAAC;AAChE;AAEA,EAAA,OAAOA,MAAM;AACjB;;AAoBA;AACO,SAASU,SAASA,CAACtC,KAAK,EAAE;EAC7B,IAAI;AACA,IAAA,MAAMuC,KAAK,GAAGvC,KAAK,CAACwC,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAA,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;;AAEnC;AACA,IAAA,MAAMC,SAAS,GAAGH,KAAK,CAAC,CAAC,CAAC;AAC1B,IAAA,MAAMI,MAAM,GAAGD,SAAS,CAACjD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;;AAE9D;IACA,MAAMmD,WAAW,GAAG,OAAOzD,MAAM,KAAK,WAAW,GAAGA,MAAM,CAAC0D,IAAI,CAACF,MAAM,CAAC,GAAGG,MAAM,CAACC,IAAI,CAACJ,MAAM,EAAE,QAAQ,CAAC,CAACK,QAAQ,EAAE;AAElH,IAAA,OAAO/B,IAAI,CAACgC,KAAK,CAACL,WAAW,CAAC;AAClC,GAAC,CAAC,MAAM;AACJ,IAAA,OAAO,IAAI;AACf;AACJ;;AAEA;AACA,SAASM,cAAcA,CAAClD,KAAK,EAAE;AAC3B,EAAA,MAAMmD,OAAO,GAAGb,SAAS,CAACtC,KAAK,CAAC;;AAEhC;AACA;AACA,EAAA,IAAI,CAACmD,OAAO,EAAE,OAAO,KAAK;AAE1B,EAAA,IAAI,CAACA,OAAO,CAACC,GAAG,EAAE,OAAO,KAAK;AAE9B,EAAA,MAAMC,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE;AACtB,EAAA,MAAMD,GAAG,GAAGD,OAAO,CAACC,GAAG,GAAG,IAAI;AAC9B,EAAA,MAAMG,SAAS,GAAGF,GAAG,IAAID,GAAG;AAE5B,EAAA,IAAIG,SAAS,EAAE;AACXxB,IAAAA,OAAO,CAACC,GAAG,CAAC,0BAA0B,EAAE;MAAEqB,GAAG;MAAED,GAAG;MAAEI,IAAI,EAAEJ,GAAG,GAAGC;AAAI,KAAC,CAAC;AAC1E;AAEA,EAAA,OAAOE,SAAS;AACpB;;AAEA;AACO,SAASE,eAAeA,GAAG;AAC9B,EAAA,MAAMzD,KAAK,GAAGC,cAAc,EAAE;EAC9B,MAAMyD,KAAK,GAAG1D,KAAK,IAAI,CAACkD,cAAc,CAAClD,KAAK,CAAC;AAC7C,EAAA,OAAO0D,KAAK;AAChB;;AAEA;AACO,SAASC,cAAcA,GAAG;AAC7B,EAAA,MAAM3D,KAAK,GAAGC,cAAc,EAAE;EAC9B,IAAI,CAACD,KAAK,IAAIkD,cAAc,CAAClD,KAAK,CAAC,EAAE,OAAO,IAAI;AAEhD,EAAA,MAAMmD,OAAO,GAAGb,SAAS,CAACtC,KAAK,CAAC;AAChC,EAAA,OAAOmD,OAAO,GACR;IACIS,EAAE,EAAET,OAAO,CAACU,GAAG;IACfC,KAAK,EAAEX,OAAO,CAACW,KAAK;IACpBC,IAAI,EAAEZ,OAAO,CAACY,IAAI;IAClB,GAAGZ;AACP,GAAC,GACD,IAAI;AACd;;AAEA;AACO,MAAMa,MAAM,GAAG,OAAOF,KAAK,EAAEG,QAAQ,EAAEF,IAAI,GAAG,EAAE,KAAK;AACxD,EAAA,MAAMnC,MAAM,GAAG,MAAMlC,GAAG,CAAC,qBAAqB,EAAE;AAC5CwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;MAAEG,QAAQ;AAAEF,MAAAA;KAAM;AAClD,GAAC,CAAC;EAEF,OAAOpC,kBAAkB,CAACC,MAAM,CAAC;AACrC;AAEO,MAAMwC,MAAM,GAAG,OAAON,KAAK,EAAEG,QAAQ,KAAK;AAC7C,EAAA,MAAMrC,MAAM,GAAG,MAAMlC,GAAG,CAAC,qBAAqB,EAAE;AAC5CwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEG,MAAAA;KAAU;AAC5C,GAAC,CAAC;EAEF,OAAOtC,kBAAkB,CAACC,MAAM,CAAC;AACrC;AAEO,MAAMyC,OAAO,GAAG,YAAY;EAC/B,IAAI;IACA,MAAM3E,GAAG,CAAC,gBAAgB,EAAE;AAAEwE,MAAAA,MAAM,EAAE;AAAO,KAAC,CAAC;AACnD,GAAC,CAAC,MAAM;AACJ;AAAA,GACH,SAAS;IACN1C,cAAc,CAAC,IAAI,CAAC;AACxB;AACJ;AAEO,MAAM8C,YAAY,GAAG,YAAY;EACpC,IAAI;AACA,IAAA,MAAM1C,MAAM,GAAG,MAAMlC,GAAG,CAAC,eAAe,EAAE;AAAEwE,MAAAA,MAAM,EAAE;AAAO,KAAC,CAAC;IAC7D,OAAOvC,kBAAkB,CAACC,MAAM,CAAC;GACpC,CAAC,OAAOd,KAAK,EAAE;IACZU,cAAc,CAAC,IAAI,CAAC;AACpB,IAAA,MAAMV,KAAK;AACf;AACJ;;AAEA;AACO,MAAMyD,aAAa,GAAG,OAAOT,KAAK,EAAEU,WAAW,KAAK;AACvD,EAAA,MAAMC,QAAQ,GAAGD,WAAW,KAAK,OAAOrF,MAAM,KAAK,WAAW,GAAG,CAAA,EAAGA,MAAM,CAACC,QAAQ,CAACsF,MAAM,CAAA,uBAAA,CAAyB,GAAG,yBAAyB,CAAC;AAEhJ,EAAA,OAAO,MAAMhF,GAAG,CAAC,0BAA0B,EAAE;AACzCwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEU,MAAAA,WAAW,EAAEC;KAAU;AACzD,GAAC,CAAC;AACN;AAEO,MAAME,eAAe,GAAG,MAAM3E,KAAK,IAAI;EAC1C,MAAM4B,MAAM,GAAG,MAAMlC,GAAG,CAAC,CAAA,8BAAA,EAAiCkF,kBAAkB,CAAC5E,KAAK,CAAC,CAAA,CAAE,CAAC;EAEtF,OAAO2B,kBAAkB,CAACC,MAAM,CAAC;AACrC;;AAEA;AACO,MAAMiD,cAAc,GAAG,OAAOf,KAAK,EAAEgB,UAAU,KAAK;AACvD,EAAA,MAAMC,QAAQ,GAAGD,UAAU,KAAK,OAAO3F,MAAM,KAAK,WAAW,GAAG,CAAA,EAAGA,MAAM,CAACC,QAAQ,CAACsF,MAAM,CAAA,oBAAA,CAAsB,GAAG,sBAAsB,CAAC;AAEzI,EAAA,OAAO,MAAMhF,GAAG,CAAC,uBAAuB,EAAE;AACtCwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEgB,MAAAA,UAAU,EAAEC;KAAU;AACxD,GAAC,CAAC;AACN;AAEO,MAAMC,aAAa,GAAG,OAAOhF,KAAK,EAAEiF,WAAW,KAAK;AACvD,EAAA,OAAO,MAAMvF,GAAG,CAAC,sBAAsB,EAAE;AACrCwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAElB,KAAK;AAAEiF,MAAAA;KAAa;AAC/C,GAAC,CAAC;AACN;;AAEA;AACO,MAAMC,WAAW,GAAG,MAAMlF,KAAK,IAAI;EACtC,MAAM4B,MAAM,GAAG,MAAMlC,GAAG,CAAC,CAAA,yBAAA,EAA4BkF,kBAAkB,CAAC5E,KAAK,CAAC,CAAA,CAAE,CAAC;EAEjF,OAAO2B,kBAAkB,CAACC,MAAM,CAAC;AACrC;AAEO,MAAMuD,kBAAkB,GAAG,OAAOrB,KAAK,EAAEU,WAAW,KAAK;AAC5D,EAAA,MAAMC,QAAQ,GAAGD,WAAW,KAAK,OAAOrF,MAAM,KAAK,WAAW,GAAG,CAAA,EAAGA,MAAM,CAACC,QAAQ,CAACsF,MAAM,CAAA,kBAAA,CAAoB,GAAG,oBAAoB,CAAC;AAEtI,EAAA,OAAO,MAAMhF,GAAG,CAAC,+BAA+B,EAAE;AAC9CwE,IAAAA,MAAM,EAAE,MAAM;AACdC,IAAAA,IAAI,EAAElD,IAAI,CAACC,SAAS,CAAC;MAAE4C,KAAK;AAAEU,MAAAA,WAAW,EAAEC;KAAU;AACzD,GAAC,CAAC;AACN;;AAEA;AACO,MAAMW,UAAU,GAAG,YAAY;AAClC,EAAA,OAAO,MAAM1F,GAAG,CAAC,eAAe,CAAC;AACrC;;AAEA;AACO,MAAM2F,kBAAkB,GAAG,YAAY;EAC1C,IAAI;AACA,IAAA,MAAM9E,IAAI,GAAG,MAAMb,GAAG,CAAC,yBAAyB,CAAC;AACjD,IAAA,OAAOa,IAAI,EAAEA,IAAI,IAAI,IAAI;GAC5B,CAAC,OAAOO,KAAK,EAAE;IACZiB,OAAO,CAACM,IAAI,CAAC,6CAA6C,EAAEvB,KAAK,CAACD,OAAO,CAAC;AAC1E,IAAA,OAAO,IAAI;AACf;AACJ;;AAEA;AACO,SAASyE,cAAcA,CAACC,QAAQ,EAAET,UAAU,GAAG,OAAO3F,MAAM,KAAK,WAAW,GAAGA,MAAM,CAACC,QAAQ,CAACoG,IAAI,GAAG,GAAG,EAAE;AAC9G,EAAA,IAAI,OAAOrG,MAAM,KAAK,WAAW,EAAE;AACnCA,EAAAA,MAAM,CAACC,QAAQ,GAAG,CAAA,EAAGF,QAAQ,CAAA,cAAA,EAAiBqG,QAAQ,CAAA,UAAA,EAAaX,kBAAkB,CAACE,UAAU,CAAC,CAAA,CAAE;AACvG;;AC1SA,MAAM,eAAe,GAAG,CAAC,WAAW,KAAK;AACzC,EAAE,IAAI,KAAK;AACX,EAAE,MAAM,SAAS,mBAAmB,IAAI,GAAG,EAAE;AAC7C,EAAE,MAAM,QAAQ,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK;AACzC,IAAI,MAAM,SAAS,GAAG,OAAO,OAAO,KAAK,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO;AAC9E,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;AACtC,MAAM,MAAM,aAAa,GAAG,KAAK;AACjC,MAAM,KAAK,GAAG,CAAC,OAAO,IAAI,IAAI,GAAG,OAAO,GAAG,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC;AACjJ,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AACrE;AACA,GAAG;AACH,EAAE,MAAM,QAAQ,GAAG,MAAM,KAAK;AAC9B,EAAE,MAAM,eAAe,GAAG,MAAM,YAAY;AAC5C,EAAE,MAAM,SAAS,GAAG,CAAC,QAAQ,KAAK;AAClC,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC;AAC3B,IAAI,OAAO,MAAM,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;AAC3C,GAAG;AACH,EAAE,MAAM,GAAG,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,eAAe,EAAE,SAAS,EAAE;AAChE,EAAE,MAAM,YAAY,GAAG,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC;AACnE,EAAE,OAAO,GAAG;AACZ,CAAC;AACD,MAAM,WAAW,IAAI,CAAC,WAAW,KAAK,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC,GAAG,eAAe,CAAC;;AClBnG,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,GAAG;AAC7B,SAAS,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,QAAQ,EAAE;AAC5C,EAAE,MAAM,KAAK,GAAGW,OAAK,CAAC,oBAAoB;AAC1C,IAAI,GAAG,CAAC,SAAS;AACjB,IAAIA,OAAK,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACtE,IAAIA,OAAK,CAAC,WAAW,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC5E,GAAG;AACH,EAAEA,OAAK,CAAC,aAAa,CAAC,KAAK,CAAC;AAC5B,EAAE,OAAO,KAAK;AACd;AACA,MAAM,UAAU,GAAG,CAAC,WAAW,KAAK;AACpC,EAAE,MAAM,GAAG,GAAG,WAAW,CAAC,WAAW,CAAC;AACtC,EAAE,MAAM,aAAa,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;AAC7D,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC;AACnC,EAAE,OAAO,aAAa;AACtB,CAAC;AACD,MAAM,MAAM,IAAI,CAAC,WAAW,KAAK,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;;AChBpF;AACO,MAAMC,YAAY,GAAGC,MAAM,CAAC,CAACC,GAAG,EAAEC,GAAG,MAAM;AAC9CC,EAAAA,IAAI,EAAE,IAAI;AACVC,EAAAA,OAAO,EAAE,IAAI;AACbjF,EAAAA,KAAK,EAAE,IAAI;AAEX;AACAkF,EAAAA,aAAa,EAAE;AACX5B,IAAAA,MAAM,EAAE,KAAK;AACbJ,IAAAA,MAAM,EAAE,KAAK;AACbK,IAAAA,OAAO,EAAE,KAAK;AACd4B,IAAAA,SAAS,EAAE,KAAK;AAChBtB,IAAAA,eAAe,EAAE,KAAK;AACtBK,IAAAA,aAAa,EAAE,KAAK;AACpBE,IAAAA,WAAW,EAAE,KAAK;AAClBC,IAAAA,kBAAkB,EAAE;GACvB;AAED;AACAe,EAAAA,eAAe,EAAE,IAAI;AAErB;EACAC,UAAU,EAAEA,CAACtH,GAAG,EAAEuH,KAAK,KACnBR,GAAG,CAACS,KAAK,KAAK;AACVL,IAAAA,aAAa,EAAE;MAAE,GAAGK,KAAK,CAACL,aAAa;AAAE,MAAA,CAACnH,GAAG,GAAGuH;AAAM;AAC1D,GAAC,CAAC,CAAC;AAEP;EACAE,oBAAoB,EAAE,YAAY;IAC9B,IAAI;AACA,MAAA,MAAMC,OAAO,GAAG,MAAM7G,kBAAsB,EAAE;AAC9CkG,MAAAA,GAAG,CAAC;AAAEM,QAAAA,eAAe,EAAEK;AAAQ,OAAC,CAAC;KACpC,CAAC,OAAOzF,KAAK,EAAE;AACZiB,MAAAA,OAAO,CAACM,IAAI,CAAC,+CAA+C,EAAEvB,KAAK,CAAC;AACpE8E,MAAAA,GAAG,CAAC;AAAEM,QAAAA,eAAe,EAAE;AAAK,OAAC,CAAC;AAClC;GACH;AAED;EACAM,IAAI,EAAE,YAAY;IACd,MAAM;AAAEF,MAAAA;KAAsB,GAAGT,GAAG,EAAE;IAEtC,IAAI;AACA;AACAS,MAAAA,oBAAoB,EAAE;;AAEtB;AACA,MAAA,IAAI5G,eAAmB,EAAE,EAAE;AACvB;AACA,QAAA,IAAIoG,IAAI,GAAGpG,cAAkB,EAAE;;AAE/B;AACA;QACA,IAAI,CAACoG,IAAI,EAAE;UACP,IAAI;AACA,YAAA,MAAMjE,OAAO,GAAG,MAAMnC,UAAc,EAAE;YACtC,IAAImC,OAAO,EAAEiE,IAAI,EAAE;cACfA,IAAI,GAAGjE,OAAO,CAACiE,IAAI;AACvB;WACH,CAAC,OAAOW,YAAY,EAAE;AACnB1E,YAAAA,OAAO,CAACM,IAAI,CAAC,sCAAsC,EAAEoE,YAAY,CAAC;AACtE;AACJ;AAEA,QAAA,IAAIX,IAAI,EAAE;AACNF,UAAAA,GAAG,CAAC;YAAEE,IAAI;AAAEC,YAAAA,OAAO,EAAE;AAAM,WAAC,CAAC;AACjC,SAAC,MAAM;AACHH,UAAAA,GAAG,CAAC;AAAEE,YAAAA,IAAI,EAAE,IAAI;AAAEC,YAAAA,OAAO,EAAE;AAAM,WAAC,CAAC;AACvC;AACJ,OAAC,MAAM;AACHH,QAAAA,GAAG,CAAC;AAAEE,UAAAA,IAAI,EAAE,IAAI;AAAEC,UAAAA,OAAO,EAAE;AAAM,SAAC,CAAC;AACvC;KACH,CAAC,OAAOjF,KAAK,EAAE;AACZiB,MAAAA,OAAO,CAACjB,KAAK,CAAC,wBAAwB,EAAEA,KAAK,CAAC;AAC9C8E,MAAAA,GAAG,CAAC;AAAEE,QAAAA,IAAI,EAAE,IAAI;AAAEC,QAAAA,OAAO,EAAE;AAAM,OAAC,CAAC;AACvC;GACH;AAED;EACA/B,MAAM,EAAE,OAAOF,KAAK,EAAEG,QAAQ,EAAEF,IAAI,KAAK;IACrC,MAAM;AAAEoC,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC1BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;AACA,MAAA,MAAMc,MAAM,GAAG,MAAMlC,MAAU,CAACoE,KAAK,EAAEG,QAAQ,EAAEF,IAAI,CAAC;AACtD,MAAA,MAAM+B,IAAI,GAAGpG,cAAkB,EAAE;AACjCkG,MAAAA,GAAG,CAAC;QAAEE,IAAI;AAAEC,QAAAA,OAAO,EAAE;AAAM,OAAC,CAAC;AAC7BI,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,MAAMO,GAAG;AACb;GACH;AAEDtC,EAAAA,MAAM,EAAE,OAAON,KAAK,EAAEG,QAAQ,KAAK;IAC/B,MAAM;AAAEkC,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC1BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,MAAU,CAACoE,KAAK,EAAEG,QAAQ,CAAC;;AAEhD;AACA,MAAA,IAAI6B,IAAI,GAAGpG,cAAkB,EAAE;;AAE/B;MACA,IAAI,CAACoG,IAAI,EAAE;AACP,QAAA,MAAMjE,OAAO,GAAG,MAAMnC,UAAc,EAAE;QACtC,IAAImC,OAAO,EAAEiE,IAAI,EAAEA,IAAI,GAAGjE,OAAO,CAACiE,IAAI;AAC1C;AAEAF,MAAAA,GAAG,CAAC;QAAEE,IAAI;AAAEC,QAAAA,OAAO,EAAE;AAAM,OAAC,CAAC;AAC7BI,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,QAAQ,EAAE,KAAK,CAAC;AAC3B,MAAA,MAAMO,GAAG;AACb;GACH;EAEDrC,OAAO,EAAE,YAAY;IACjB,MAAM;AAAE8B,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC;IAE3B,IAAI;AACA,MAAA,MAAMzG,OAAW,EAAE;AACnBkG,MAAAA,GAAG,CAAC;AAAEE,QAAAA,IAAI,EAAE;AAAK,OAAC,CAAC;AACnB;AACA,MAAA,IAAI,OAAO3G,MAAM,KAAK,WAAW,EAAE;AAC/BA,QAAAA,MAAM,CAACmC,YAAY,CAACG,OAAO,CAAC,aAAa,EAAE6B,IAAI,CAACD,GAAG,EAAE,CAAC;AAC1D;AACJ,KAAC,SAAS;AACN8C,MAAAA,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC;AAChC;GACH;AAED;AACA5B,EAAAA,aAAa,EAAE,OAAOT,KAAK,EAAEU,WAAW,KAAK;IACzC,MAAM;AAAE2B,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC;AAC7BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,aAAiB,CAACoE,KAAK,EAAEU,WAAW,CAAC;AAC1D2B,MAAAA,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;AAC9B,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC;AAC9B,MAAA,MAAMO,GAAG;AACb;GACH;EAED/B,eAAe,EAAE,MAAM3E,KAAK,IAAI;IAC5B,MAAM;AAAEmG,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,iBAAiB,EAAE,IAAI,CAAC;AACnCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,eAAmB,CAACM,KAAK,CAAC;AAE/C,MAAA,IAAI8F,IAAI,GAAGlE,MAAM,CAACkE,IAAI;;AAEtB;MACA,IAAI,CAACA,IAAI,EAAE;AACPA,QAAAA,IAAI,GAAGpG,cAAkB,EAAE;QAC3B,IAAI,CAACoG,IAAI,EAAE;AACP,UAAA,MAAMjE,OAAO,GAAG,MAAMnC,UAAc,EAAE;UACtC,IAAImC,OAAO,EAAEiE,IAAI,EAAEA,IAAI,GAAGjE,OAAO,CAACiE,IAAI;AAC1C;AACJ;AAEA,MAAA,IAAIA,IAAI,EAAE;AACNF,QAAAA,GAAG,CAAC;UAAEE,IAAI;AAAEC,UAAAA,OAAO,EAAE;AAAM,SAAC,CAAC;AACjC;AAEAI,MAAAA,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACpC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,iBAAiB,EAAE,KAAK,CAAC;AACpC,MAAA,MAAMO,GAAG;AACb;GACH;AAED;AACA7B,EAAAA,cAAc,EAAE,OAAOf,KAAK,EAAEgB,UAAU,KAAK;IACzC,MAAM;AAAEqB,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC;AACjCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,cAAkB,CAACoE,KAAK,EAAEgB,UAAU,CAAC;AAC1DqB,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,MAAMO,GAAG;AACb;GACH;AAED1B,EAAAA,aAAa,EAAE,OAAOhF,KAAK,EAAEiF,WAAW,KAAK;IACzC,MAAM;AAAEkB,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC;AACjCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,aAAiB,CAACM,KAAK,EAAEiF,WAAW,CAAC;AAC1DkB,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,eAAe,EAAE,KAAK,CAAC;AAClC,MAAA,MAAMO,GAAG;AACb;GACH;AAED;EACAxB,WAAW,EAAE,MAAMlF,KAAK,IAAI;IACxB,MAAM;AAAEmG,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC;AAC/BP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,WAAe,CAACM,KAAK,CAAC;MAC3C,IAAI4B,MAAM,CAACkE,IAAI,EAAE;AACbF,QAAAA,GAAG,CAAC;UAAEE,IAAI,EAAElE,MAAM,CAACkE,IAAI;AAAEC,UAAAA,OAAO,EAAE;AAAM,SAAC,CAAC;AAC9C;AACAI,MAAAA,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;AAChC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC;AAChC,MAAA,MAAMO,GAAG;AACb;GACH;AAEDvB,EAAAA,kBAAkB,EAAE,OAAOrB,KAAK,EAAEU,WAAW,KAAK;IAC9C,MAAM;AAAE2B,MAAAA;KAAY,GAAGN,GAAG,EAAE;AAC5BM,IAAAA,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC;AACtCP,IAAAA,GAAG,CAAC;AAAE9E,MAAAA,KAAK,EAAE;AAAK,KAAC,CAAC;IAEpB,IAAI;MACA,MAAMc,MAAM,GAAG,MAAMlC,kBAAsB,CAACoE,KAAK,EAAEU,WAAW,CAAC;AAC/D2B,MAAAA,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACvC,MAAA,OAAOvE,MAAM;KAChB,CAAC,OAAO8E,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnBP,MAAAA,UAAU,CAAC,oBAAoB,EAAE,KAAK,CAAC;AACvC,MAAA,MAAMO,GAAG;AACb;GACH;AAED;EACAtB,UAAU,EAAE,YAAY;IACpB,IAAI;AACA,MAAA,OAAO,MAAM1F,UAAc,EAAE;KAChC,CAAC,OAAOgH,GAAG,EAAE;AACVd,MAAAA,GAAG,CAAC;AAAE9E,QAAAA,KAAK,EAAE4F;AAAI,OAAC,CAAC;AACnB,MAAA,MAAMA,GAAG;AACb;GACH;AAED;EACAC,YAAY,EAAEA,MAAM;AAChB,IAAA,IAAI,OAAOxH,MAAM,KAAK,WAAW,EAAE;AAEnC,IAAA,MAAMyH,eAAe,GAAGC,WAAW,CAAC,YAAY;MAC5C,IAAI;AACA;AACA,QAAA,IAAInH,eAAmB,EAAE,EAAE;UACvB,MAAMM,KAAK,GAAGb,MAAM,CAACmC,YAAY,CAACC,OAAO,CAAC,YAAY,CAAC;AACvD,UAAA,IAAIvB,KAAK,EAAE;AACP;YACA,MAAM0C,SAAS,GAAG1C,KAAK,CAACwC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACrC,YAAA,MAAMG,MAAM,GAAGD,SAAS,CAACjD,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAACA,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC;AAC9D,YAAA,MAAMmD,WAAW,GAAGzD,MAAM,CAAC0D,IAAI,CAACF,MAAM,CAAC;AACvC,YAAA,MAAMQ,OAAO,GAAGlC,IAAI,CAACgC,KAAK,CAACL,WAAW,CAAC;YACvC,MAAMS,GAAG,GAAGC,IAAI,CAACD,GAAG,EAAE,GAAG,IAAI;AAC7B,YAAA,MAAMyD,eAAe,GAAG3D,OAAO,CAACC,GAAG,GAAGC,GAAG;;AAEzC;YACA,IAAIyD,eAAe,GAAG,GAAG,EAAE;AACvB;AACA,cAAA,MAAMpH,YAAgB,EAAE;AACxB,cAAA,MAAMoG,IAAI,GAAGpG,cAAkB,EAAE;AACjCkG,cAAAA,GAAG,CAAC;AAAEE,gBAAAA;AAAK,eAAC,CAAC;AACjB;AACJ;AACJ;OACH,CAAC,OAAOhF,KAAK,EAAE;AACZiB,QAAAA,OAAO,CAACjB,KAAK,CAAC,6BAA6B,EAAEA,KAAK,CAAC;AACnD;AACA8E,QAAAA,GAAG,CAAC;AAAEE,UAAAA,IAAI,EAAE;AAAK,SAAC,CAAC;AACnB3G,QAAAA,MAAM,CAACmC,YAAY,CAACI,UAAU,CAAC,YAAY,CAAC;AAChD;AACJ,KAAC,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;;AAEjB;AACA,IAAA,IAAI,OAAOvC,MAAM,KAAK,WAAW,EAAE;AAC/BA,MAAAA,MAAM,CAAC4H,gBAAgB,CAAC,cAAc,EAAE,MAAM;QAC1CC,aAAa,CAACJ,eAAe,CAAC;AAClC,OAAC,CAAC;AACN;GACH;AAED;EACAK,kBAAkB,EAAEA,MAAM;AACtB,IAAA,IAAI,CAACvH,eAAmB,EAAE,EAAE;AACxBkG,MAAAA,GAAG,CAAC;AAAEE,QAAAA,IAAI,EAAE;AAAK,OAAC,CAAC;AACnB,MAAA,OAAO,KAAK;AAChB;AACA,IAAA,OAAO,IAAI;GACd;AAED;AACAoB,EAAAA,OAAO,EAAEpB,IAAI,IAAIF,GAAG,CAAC;AAAEE,IAAAA;GAAM;AACjC,CAAC,CAAC;;ACrUF,MAAM,UAAU,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,QAAQ,IAAI,GAAG;AAClD,MAAM,kBAAkB,GAAG,CAAC,KAAK;AACjC;AACA,EAAE,SAAS,IAAI;AACf,CAAC;AACD,MAAM,cAAc,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AAC3C,EAAE,MAAM,IAAI,GAAG,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACzE,EAAE,MAAM,IAAI,GAAG,MAAM,YAAY,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;AACzE,EAAE,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE;AAC/B,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;AACnC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;AAC5D,MAAM,OAAO,KAAK;AAClB;AACA;AACA,EAAE,OAAO,IAAI;AACb,CAAC;AACD,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK;AAC7C,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC7C,EAAE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;AAC7C,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC9B,EAAE,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC9B,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;AACrC,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;AAC9C,MAAM,OAAO,KAAK;AAClB;AACA,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC5B,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE;AAC5B;AACA,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI;AACrC,CAAC;AACD,SAAS,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE;AACjC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;AACjC,IAAI,OAAO,IAAI;AACf;AACA,EAAE,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE;AACtG,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;AACvE,IAAI,OAAO,KAAK;AAChB;AACA,EAAE,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,EAAE;AAChD,IAAI,IAAI,kBAAkB,CAAC,MAAM,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,EAAE;AAClE,MAAM,OAAO,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3C;AACA,IAAI,OAAO,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC3C;AACA,EAAE,OAAO,cAAc;AACvB,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;AAC7C,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;AAC3C,GAAG;AACH;;ACjDA,SAAS,UAAU,CAAC,QAAQ,EAAE;AAC9B,EAAE,MAAM,IAAI,GAAGL,OAAK,CAAC,MAAM,CAAC,MAAM,CAAC;AACnC,EAAE,OAAO,CAAC,KAAK,KAAK;AACpB,IAAI,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;AAChC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI;AAC3E,GAAG;AACH;;ACJA,MAAM0B,WAAW,gBAAGC,aAAa,EAAE,CAAA;;AAE5B,SAASC,YAAYA,CAAC;EACzBC,QAAQ;EACR/H,MAAM;AAAE;EACRC,MAAM;AAAE;AACR+H,EAAAA,OAAO;AACX,CAAC,EAAE;AACC;EACA,IAAI,CAAC/H,MAAM,EAAE;AACT,IAAA,MAAM,IAAI6B,KAAK,CAAC,8DAA8D,GAAG,oEAAoE,CAAC;AAC1J;EAEA,IAAI,CAAC9B,MAAM,EAAE;AACT,IAAA,MAAM,IAAI8B,KAAK,CAAC,8DAA8D,GAAG,4CAA4C,CAAC;AAClI;EAEA,MAAMmF,IAAI,GAAGd,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAChB,IAAI,CAAC;EACtC,MAAMG,YAAY,GAAGjB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACb,YAAY,CAAC;EACtD,MAAMM,kBAAkB,GAAGvB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACP,kBAAkB,CAAC;;AAElE;AACA;AACA;AACAQ,EAAAA,OAAO,CAAC,MAAM;AACVnI,IAAAA,SAAS,CAAC;MAAEC,MAAM;AAAEC,MAAAA;AAAO,KAAC,CAAC;AACjC,GAAC,EAAE,CAACD,MAAM,EAAEC,MAAM,CAAC,CAAC;AAEpBkI,EAAAA,SAAS,CAAC,MAAM;AACZlB,IAAAA,IAAI,EAAE;AACNG,IAAAA,YAAY,EAAE;AAClB,GAAC,EAAE,CAACH,IAAI,EAAEG,YAAY,CAAC,CAAC;;AAExB;AACAe,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,IAAI,OAAOvI,MAAM,KAAK,WAAW,EAAE;IAEnC,MAAMwI,mBAAmB,GAAGC,KAAK,IAAI;AACjC,MAAA,IAAIA,KAAK,CAAC/I,GAAG,KAAK,aAAa,EAAE;AAC7BM,QAAAA,MAAM,CAACC,QAAQ,CAACyI,MAAM,EAAE;AAC5B;AACA;AACA,MAAA,IAAID,KAAK,CAAC/I,GAAG,KAAK,YAAY,EAAE;AAC5BoI,QAAAA,kBAAkB,EAAE;AACxB;KACH;AAED9H,IAAAA,MAAM,CAAC4H,gBAAgB,CAAC,SAAS,EAAEY,mBAAmB,CAAC;IACvD,OAAO,MAAMxI,MAAM,CAAC2I,mBAAmB,CAAC,SAAS,EAAEH,mBAAmB,CAAC;AAC3E,GAAC,EAAE,CAACV,kBAAkB,CAAC,CAAC;;AAExB;AACAS,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,IAAI,OAAOvI,MAAM,KAAK,WAAW,EAAE;AAEnC,IAAA,MAAM4I,QAAQ,GAAGlB,WAAW,CAAC,MAAM;AAC/BI,MAAAA,kBAAkB,EAAE;AACxB,KAAC,EAAE,EAAE,GAAG,IAAI,CAAC,CAAA;;AAEb,IAAA,OAAO,MAAMD,aAAa,CAACe,QAAQ,CAAC;AACxC,GAAC,EAAE,CAACd,kBAAkB,CAAC,CAAC;;AAExB;AACA,EAAA,MAAMe,YAAY,GAAGP,OAAO,CAAC,OAAO;AAAEF,IAAAA;AAAQ,GAAC,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AAE5D,EAAA,oBAAO9B,KAAA,CAAAwC,aAAA,CAACd,WAAW,CAACe,QAAQ,EAAA;AAAC9B,IAAAA,KAAK,EAAE4B;AAAa,GAAA,EAAEV,QAA+B,CAAC;AACvF;;AAEA;AACO,MAAMa,OAAO,GAAGA,MACnBzC,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACb1B,IAAI,EAAE0B,CAAC,CAAC1B,IAAI;EACZC,OAAO,EAAEyB,CAAC,CAACzB,OAAO;EAClBjF,KAAK,EAAE0G,CAAC,CAAC1G,KAAK;AACd2C,EAAAA,eAAe,EAAE+D,CAAC,CAAC1B,IAAI,KAAK;AAChC,CAAC,CAAC,CACN;;AAEJ;AACO,MAAMuC,SAAS,GAAGA,MAAM3C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACpD,MAAM;AAClD,MAAMkE,SAAS,GAAGA,MAAM5C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxD,MAAM;AAClD,MAAMuE,UAAU,GAAGA,MAAM7C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACnD,OAAO;AACpD,MAAMmE,aAAa,GAAGA,MAAM9C,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACP,kBAAkB;;AAEzE;AACO,MAAMwB,YAAY,GAAGA,MACxB/C,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACbjD,aAAa,EAAEiD,CAAC,CAACjD,aAAa;EAC9BI,eAAe,EAAE6C,CAAC,CAAC7C,eAAe;AAClCoB,EAAAA,OAAO,EAAEyB,CAAC,CAACxB,aAAa,CAACC,SAAS;AAClCyC,EAAAA,SAAS,EAAElB,CAAC,CAACxB,aAAa,CAACrB,eAAe;EAC1C7D,KAAK,EAAE0G,CAAC,CAAC1G;AACb,CAAC,CAAC,CACN;;AAEJ;AACO,MAAM6H,gBAAgB,GAAGA,MAC5BjD,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACb3C,cAAc,EAAE2C,CAAC,CAAC3C,cAAc;EAChCG,aAAa,EAAEwC,CAAC,CAACxC,aAAa;AAC9Be,EAAAA,OAAO,EAAEyB,CAAC,CAACxB,aAAa,CAAChB,aAAa;EACtClE,KAAK,EAAE0G,CAAC,CAAC1G;AACb,CAAC,CAAC,CACN;;AAEJ;AACO,MAAM8H,oBAAoB,GAAGA,MAChClD,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACbtC,WAAW,EAAEsC,CAAC,CAACtC,WAAW;EAC1BC,kBAAkB,EAAEqC,CAAC,CAACrC,kBAAkB;AACxCY,EAAAA,OAAO,EAAEyB,CAAC,CAACxB,aAAa,CAACd,WAAW;AACpC2D,EAAAA,SAAS,EAAErB,CAAC,CAACxB,aAAa,CAACb,kBAAkB;EAC7CrE,KAAK,EAAE0G,CAAC,CAAC1G;AACb,CAAC,CAAC,CACN;;AAEJ;AACO,MAAMgI,UAAU,GAAGA,MACtBpD,YAAY,CACR0C,UAAU,CAACZ,CAAC,KAAK;EACbpC,UAAU,EAAEoC,CAAC,CAACpC,UAAU;EACxBU,IAAI,EAAE0B,CAAC,CAAC1B,IAAI;EACZoB,OAAO,EAAEM,CAAC,CAACN;AACf,CAAC,CAAC,CACN;;AAEJ;AACO,MAAM6B,cAAc,GAAGA,MAAMrD,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa;;AAErE;AACO,MAAMgD,kBAAkB,GAAGA,MAAM;EACpC,MAAM9C,eAAe,GAAGR,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACtB,eAAe,CAAC;AAC5D;AACA,EAAA,OAAOA,eAAe,EAAE+C,KAAK,IAAI,IAAI;AACzC,CAAC;;AC5Ic,SAASC,cAAcA,CAAC;AACnCC,EAAAA,QAAQ,gBAAG1D,KAAA,CAAAwC,aAAA,CAAA,GAAA,EAAA,IAAA,EAAG,sBAAkB,CAAC;AACjCnD,EAAAA,UAAU,GAAG;AACjB,CAAC,EAAE;EACC,MAAM;IAAEgB,IAAI;AAAEC,IAAAA;GAAS,GAAGoC,OAAO,EAAE;EAEnC,IAAIpC,OAAO,EAAE,OAAOoD,QAAQ;EAC5B,IAAI,CAACrD,IAAI,EAAE,oBAAOL,KAAA,CAAAwC,aAAA,CAACmB,QAAQ,EAAA;AAACC,IAAAA,EAAE,EAAEvE,UAAW;IAACrF,OAAO,EAAA;AAAA,GAAE,CAAC;AAEtD,EAAA,oBAAOgG,KAAA,CAAAwC,aAAA,CAACqB,MAAM,MAAE,CAAC;AACrB;;;;;;;;;;;;ACXA;AACA;AACA;AACA;AACe,SAASC,QAAQA,CAAC;EAAEjC,QAAQ;EAAEkC,KAAK;EAAEC,QAAQ;EAAEC,IAAI;AAAEC,EAAAA,UAAU,GAAG,EAAE;AAAEC,EAAAA,KAAK,GAAG,GAAG;EAAE,GAAGC;AAAM,CAAC,EAAE;AAC1G,EAAA,oBACIpE,KAAA,CAAAwC,aAAA,CAAC6B,KAAK,EAAAC,QAAA,CAAA;IACFC,UAAU,EAAA,IAAA;AACVC,IAAAA,MAAM,EAAC,IAAI;AACXC,IAAAA,CAAC,EAAE,EAAG;AACNC,IAAAA,CAAC,EAAEP,KAAM;AACTQ,IAAAA,MAAM,EAAC;AAAI,GAAA,EACPP,KAAK,CAAA,eAETpE,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;GAAI,EACV,CAACZ,IAAI,IAAIF,KAAK,IAAIC,QAAQ,kBACvBhE,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,EACVZ,IAAI,iBACDjE,KAAA,CAAAwC,aAAA,CAACsC,KAAK,EAAA;AACFC,IAAAA,GAAG,EAAEd,IAAK;AACVe,IAAAA,GAAG,EAAC,MAAM;AACVC,IAAAA,CAAC,EAAEf,UAAW;AACdgB,IAAAA,GAAG,EAAC;GACP,CACJ,EAEAnB,KAAK,iBAAI/D,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAErB,KAAa,CAAC,EAEzCC,QAAQ,iBACLhE,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETvB,QACC,CAEP,CACV,EAEAnC,QACE,CACJ,CAAC;AAEhB;;AC7CA,IAAI,GAAG,GAAG,qngBAAqngB;;ACU/ngB;AACA;AACA;AACA;AACe,SAAS2D,UAAUA,CAAC;AAC/B;EACAvB,IAAI;AAAE;AACNF,EAAAA,KAAK,GAAG,QAAQ;AAChBC,EAAAA,QAAQ,GAAG,iCAAiC;AAE5C;AACAyB,EAAAA,aAAa,GAAG,IAAI;AACpBC,EAAAA,kBAAkB,GAAG,IAAI;AACzBC,EAAAA,eAAe,GAAG,KAAK;AACvBC,EAAAA,cAAc,GAAG,IAAI;AAErB;AACAC,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAC,SAAS;EACThE,OAAO;EACPiE,eAAe;EACfC,oBAAoB;EACpBC,aAAa;AAEb;EACAC,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAMxH,MAAM,GAAGsB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACpD,MAAM,CAAC;EAC1C,MAAMG,aAAa,GAAGmB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACjD,aAAa,CAAC;EACxD,MAAMM,cAAc,GAAGa,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC3C,cAAc,CAAC;EAC1D,MAAMgH,aAAa,GAAGnG,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAC5B,MAAM,CAAC;EAC/D,MAAM0H,gBAAgB,GAAGpG,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAACC,SAAS,CAAC;EACrE,MAAM8F,oBAAoB,GAAGrG,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChB,aAAa,CAAC;;AAE7E;AACA,EAAA,MAAMgH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXvI,MAAAA,KAAK,EAAE,EAAE;AACTG,MAAAA,QAAQ,EAAE;KACb;AACDqI,IAAAA,QAAQ,EAAE;AACNxI,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI,gBAAiB;AAC1FvI,MAAAA,QAAQ,EAAEmC,KAAK,IAAKA,KAAK,CAAC3D,MAAM,GAAG,CAAC,GAAGkJ,MAAM,CAACc,gBAAgB,IAAI,0CAA0C,GAAG;AACnH;AACJ,GAAC,CAAC;AAEF,EAAA,MAAMC,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAM/K,MAAM,GAAG,MAAMwC,MAAM,CAACuI,MAAM,CAAC7I,KAAK,EAAE6I,MAAM,CAAC1I,QAAQ,CAAC;MAC1DsH,SAAS,GAAG3J,MAAM,CAAC;KACtB,CAAC,OAAOd,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,MAAM8L,eAAe,GAAG,YAAY;AAChC,IAAA,IAAI,CAACT,IAAI,CAACQ,MAAM,CAAC7I,KAAK,EAAE;MACpBqI,IAAI,CAACU,aAAa,CAAC,OAAO,EAAElB,MAAM,CAACmB,aAAa,IAAI,mBAAmB,CAAC;AACxE,MAAA;AACJ;IAEA,IAAI;AACA,MAAA,MAAMvI,aAAa,CAAC4H,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;AACtC0H,MAAAA,eAAe,GAAGW,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;KACvC,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,MAAMiM,oBAAoB,GAAG,YAAY;AACrC,IAAA,IAAI,CAACZ,IAAI,CAACQ,MAAM,CAAC7I,KAAK,EAAE;MACpBqI,IAAI,CAACU,aAAa,CAAC,OAAO,EAAElB,MAAM,CAACmB,aAAa,IAAI,mBAAmB,CAAC;AACxE,MAAA;AACJ;IAEA,IAAI;AACA,MAAA,MAAMjI,cAAc,CAACsH,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;AACvC2H,MAAAA,oBAAoB,GAAGU,IAAI,CAACQ,MAAM,CAAC7I,KAAK,CAAC;KAC5C,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,MAAMkM,SAAS,GAAGnB,aAAa,IAAIC,gBAAgB,IAAIC,oBAAoB;AAE3E,EAAA,oBACItG,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAET;GAAU,CACvB,CAAC,eAEFvH,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC1H,QAAQ,IAAI,OAAQ;AAClCmJ,IAAAA,WAAW,EAAEzB,MAAM,CAACgC,mBAAmB,IAAI,WAAY;AACvDL,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,UAAU,CAAC,EAAA;AAClCC,IAAAA,QAAQ,EAAET;GAAU,CACvB,CAAC,EAED7B,kBAAkB,iBACf1F,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AACH9C,IAAAA,IAAI,EAAC,IAAI;AACT+C,IAAAA,EAAE,EAAC,OAAO;AACVC,IAAAA,OAAO,EAAEhB,oBAAqB;AAC9BiB,IAAAA,KAAK,EAAE;AAAEC,MAAAA,MAAM,EAAE;KAAY;AAC7BjD,IAAAA,CAAC,EAAEe,oBAAoB,GAAG,QAAQ,GAAG;AAAO,GAAA,EAE3CA,oBAAoB,GAAGJ,MAAM,CAACuC,YAAY,IAAI,aAAa,GAAGvC,MAAM,CAAC9G,cAAc,IAAI,mBACpF,CACX,eAEDY,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAE8F,aAAc;AACvByC,IAAAA,YAAY,eAAE7I,KAAA,CAAAwC,aAAA,CAACsG,cAAc,EAAA;AAACxD,MAAAA,IAAI,EAAE;KAAK;GAAE,EAE1CY,MAAM,CAAC6C,YAAY,IAAI,QACpB,CACL,CACL,CAAC,EAENtD,aAAa,iBACVzF,KAAA,CAAAwC,aAAA,CAAAxC,KAAA,CAAAgJ,QAAA,qBACIhJ,KAAA,CAAAwC,aAAA,CAACyG,OAAO,EAAA;AAACvB,IAAAA,KAAK,EAAExB,MAAM,CAACgD,cAAc,IAAI;AAAkB,GAAE,CAAC,eAC9DlJ,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;IACfP,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAE+F,gBAAiB;AAC1BwB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AACpCgD,IAAAA,OAAO,EAAEnB,eAAgB;AACzBa,IAAAA,QAAQ,EAAET,SAAS,IAAI,CAACb,IAAI,CAACQ,MAAM,CAAC7I;AAAM,GAAA,EAEzC6H,MAAM,CAACkD,eAAe,IAAI,oBACvB,CACV,CACL,EAEAzD,eAAe,iBACZ3F,KAAA,CAAAwC,aAAA,CAAAxC,KAAA,CAAAgJ,QAAA,EAAA,IAAA,eACIhJ,KAAA,CAAAwC,aAAA,CAACyG,OAAO,EAAA,IAAE,CAAC,eACXjJ,KAAA,CAAAwC,aAAA,CAAC6G,KAAK,EAAA;IAACC,IAAI,EAAA;AAAA,GAAA,eACPtJ,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC+G,eAAe,EAAA;AAACjE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAET;AAAU,GAAA,EACvB,QAEO,CAAC,eACTvH,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACgH,eAAe,EAAA;AAAClE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAET;AAAU,GAAA,EACvB,QAEO,CACL,CACT,CACL,EAEA3B,cAAc,iBACX5F,KAAA,CAAAwC,aAAA,CAACiH,MAAM,EAAA,IAAA,eACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAACwD,SAAS,IAAI,oBAAoB,EAAC,GAAC,eAAA1J,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAE8F;GAAU,EAAEK,MAAM,CAACyD,aAAa,IAAI,aAAsB,CACjH,CACF,CAEN,CAAC;AAEnB;;ACjMA;AACA;AACA;AACe,SAASC,UAAUA,CAAC;AAC/B;EACA3F,IAAI;AACJF,EAAAA,KAAK,GAAG,aAAa;AACrBC,EAAAA,QAAQ,GAAG,qCAAqC;AAEhD;AACA6F,EAAAA,WAAW,GAAG,IAAI;AAClBC,EAAAA,cAAc,GAAG,IAAI;AACrBnE,EAAAA,eAAe,GAAG,KAAK;AAEvB;AACAoE,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAjE,SAAS;EACThE,OAAO;EACPmE,aAAa;AAEb;EACAC,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM5H,MAAM,GAAG0B,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxD,MAAM,CAAC;EAC1C,MAAM+B,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChC,MAAM,CAAC;;AAEzD;AACA,EAAA,MAAMgI,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXtI,MAAAA,IAAI,EAAE,EAAE;AACRD,MAAAA,KAAK,EAAE,EAAE;AACTG,MAAAA,QAAQ,EAAE,EAAE;AACZwL,MAAAA,eAAe,EAAE;KACpB;AACDnD,IAAAA,QAAQ,EAAE;AACNvI,MAAAA,IAAI,EAAEqC,KAAK,IAAKkJ,WAAW,IAAI,CAAClJ,KAAK,GAAGuF,MAAM,CAAC+D,YAAY,IAAI,kBAAkB,GAAG,IAAK;AACzF5L,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI,gBAAiB;AAC1FvI,MAAAA,QAAQ,EAAEmC,KAAK,IAAKA,KAAK,CAAC3D,MAAM,GAAG,CAAC,GAAGkJ,MAAM,CAACc,gBAAgB,IAAI,0CAA0C,GAAG,IAAK;AACpHgD,MAAAA,eAAe,EAAEA,CAACrJ,KAAK,EAAEuG,MAAM,KAAMvG,KAAK,KAAKuG,MAAM,CAAC1I,QAAQ,GAAG0H,MAAM,CAACgE,gBAAgB,IAAI,yBAAyB,GAAG;AAC5H;AACJ,GAAC,CAAC;AAEF,EAAA,MAAMjD,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAM/K,MAAM,GAAG,MAAMoC,MAAM,CAAC2I,MAAM,CAAC7I,KAAK,EAAE6I,MAAM,CAAC1I,QAAQ,EAAE0I,MAAM,CAAC5I,IAAI,CAAC;MACvEwH,SAAS,GAAG3J,MAAM,CAAC;KACtB,CAAC,OAAOd,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;GAAI,EACVgF,WAAW,iBACR7J,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC5H,IAAI,IAAI,MAAO;AAC7BqJ,IAAAA,WAAW,EAAEzB,MAAM,CAACiE,eAAe,IAAI,UAAW;AAClDtC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC4H,QAAQ,EAAA;AAAC9E,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,MAAM,CAAC,EAAA;AAC9BC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CACJ,eAEDN,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC1H,QAAQ,IAAI,OAAQ;AAClCmJ,IAAAA,WAAW,EAAEzB,MAAM,CAACgC,mBAAmB,IAAI,gBAAiB;AAC5DL,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,UAAU,CAAC,EAAA;AAClCC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC8D,eAAe,IAAI,iBAAkB;AACnDrC,IAAAA,WAAW,EAAEzB,MAAM,CAACmE,0BAA0B,IAAI,gBAAiB;AACnExC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,iBAAiB,CAAC,EAAA;AACzCC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA,OAAQ;AACjBuI,IAAAA,YAAY,eAAE7I,KAAA,CAAAwC,aAAA,CAACsG,cAAc,EAAA;AAACxD,MAAAA,IAAI,EAAE;KAAK;GAAE,EAE1CY,MAAM,CAACoE,YAAY,IAAI,aACpB,CACL,CACL,CAAC,EAEN3E,eAAe,iBACZ3F,KAAA,CAAAwC,aAAA,CAAAxC,KAAA,CAAAgJ,QAAA,qBACIhJ,KAAA,CAAAwC,aAAA,CAACyG,OAAO,EAAA;AAACvB,IAAAA,KAAK,EAAExB,MAAM,CAACgD,cAAc,IAAI;AAAkB,GAAE,CAAC,eAC9DlJ,KAAA,CAAAwC,aAAA,CAAC6G,KAAK,EAAA;IAACC,IAAI,EAAA;AAAA,GAAA,eACPtJ,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC+G,eAAe,EAAA;AAACjE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,EACrB,QAEO,CAAC,eACTN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACgH,eAAe,EAAA;AAAClE,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AAC3CgD,IAAAA,OAAO,EAAEA,MAAMrC,aAAa,GAAG,QAAQ,CAAE;AACzC+B,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,EACrB,QAEO,CACL,CACT,CACL,EAEAwJ,cAAc,iBACX9J,KAAA,CAAAwC,aAAA,CAACiH,MAAM,EAAA,IAAA,eACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAACqE,UAAU,IAAI,mBAAmB,EAAC,GAAC,eAAAvK,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAEgK;GAAU,EAAE7D,MAAM,CAACvH,MAAM,IAAI,QAAiB,CACrG,CACF,CAEN,CAAC;AAEnB;;ACpJA;AACA;AACA;AACe,SAAS6L,aAAaA,CAAC;AAClC;EACAvG,IAAI;AACJF,EAAAA,KAAK,GAAG,iBAAiB;AACzBC,EAAAA,QAAQ,GAAG,uCAAuC;AAElD;AACA8F,EAAAA,cAAc,GAAG,IAAI;AAErB;AACAC,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAU,MAAM;EACN3I,OAAO;AAEP;EACAoE,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAMrH,aAAa,GAAGmB,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACjD,aAAa,CAAC;EACxD,MAAMwB,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAACC,SAAS,CAAC;;AAE5D;AACA,EAAA,MAAM+F,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXvI,MAAAA,KAAK,EAAE;KACV;AACDwI,IAAAA,QAAQ,EAAE;AACNxI,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI;AAC7E;AACJ,GAAC,CAAC;AAEF,EAAA,MAAME,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAMpI,aAAa,CAACoI,MAAM,CAAC7I,KAAK,CAAC;AACjCoM,MAAAA,MAAM,GAAGvD,MAAM,CAAC7I,KAAK,CAAC;KACzB,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA,OAAQ;AACjBuH,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACkI,QAAQ,EAAA;AAACpF,MAAAA,IAAI,EAAE;KAAK;GAAE,EAEnCY,MAAM,CAACyE,UAAU,IAAI,oBAClB,CACL,CACL,CAAC,EAENb,cAAc,iBACX9J,KAAA,CAAAwC,aAAA,CAACiH,MAAM,qBACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAAC0E,MAAM,IAAI,aAAa,EAAC,GAAC,eAAA5K,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAEgK;GAAU,EAAE7D,MAAM,CAACvH,MAAM,IAAI,iBAA0B,CACpG,CACF,CAEN,CAAC;AAEnB;;ACzFA;AACA;AACA;AACA;AACe,SAASkM,eAAeA,CAAC;AACpC;EACA5G,IAAI;AAEJ;AACA1J,EAAAA,KAAK,EAAEuQ,SAAS;AAEhB;EACAhF,SAAS;EACThE,OAAO;AAEP;EACAzC,UAAU;AACV0L,EAAAA,aAAa,GAAG,IAAI;AAEpB;EACA7E,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM,CAACpL,MAAM,EAAEiQ,SAAS,CAAC,GAAGC,QAAQ,CAAC,WAAW,CAAC,CAAA;EACjD,MAAM,CAAC9P,YAAY,EAAE+P,eAAe,CAAC,GAAGD,QAAQ,CAAC,EAAE,CAAC;EACpD,MAAM/L,eAAe,GAAGe,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC7C,eAAe,CAAC;;AAE5D;AACA,EAAA,MAAMqH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;AAExD,EAAA,MAAM0E,iBAAiB,GAAGC,MAAM,CAAC,IAAI,CAAC;AAEtCnJ,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,MAAMoJ,MAAM,GAAG,YAAY;AACvB;MACA,IAAI9Q,KAAK,GAAGuQ,SAAS;AACrB,MAAA,IAAI,CAACvQ,KAAK,IAAI,OAAOb,MAAM,KAAK,WAAW,EAAE;QACzC,MAAM4R,SAAS,GAAG,IAAIC,eAAe,CAAC7R,MAAM,CAACC,QAAQ,CAAC6R,MAAM,CAAC;AAC7DjR,QAAAA,KAAK,GAAG+Q,SAAS,CAAClL,GAAG,CAAC,OAAO,CAAC;AAClC;MAEA,IAAI,CAAC7F,KAAK,EAAE;QACRyQ,SAAS,CAAC,OAAO,CAAC;AAClBE,QAAAA,eAAe,CAAChF,MAAM,CAACuF,OAAO,IAAI,6BAA6B,CAAC;AAChE3J,QAAAA,OAAO,GAAG,IAAIlG,KAAK,CAAC,UAAU,CAAC,CAAC;AAChC,QAAA;AACJ;;AAEA;AACA,MAAA,IAAIuP,iBAAiB,CAACO,OAAO,KAAKnR,KAAK,EAAE;MACzC4Q,iBAAiB,CAACO,OAAO,GAAGnR,KAAK;MAEjC,IAAI;AACA,QAAA,MAAM4B,MAAM,GAAG,MAAM+C,eAAe,CAAC3E,KAAK,CAAC;QAC3CyQ,SAAS,CAAC,SAAS,CAAC;QACpBlF,SAAS,GAAG3J,MAAM,CAAC;AAEnB,QAAA,IAAIkD,UAAU,EAAE;AACZsM,UAAAA,UAAU,CAAC,MAAM;AACbjS,YAAAA,MAAM,CAACC,QAAQ,CAACoG,IAAI,GAAGV,UAAU;WACpC,EAAE0L,aAAa,CAAC;AACrB;OACH,CAAC,OAAO1P,KAAK,EAAE;QACZ2P,SAAS,CAAC,OAAO,CAAC;QAClBE,eAAe,CAAC7P,KAAK,CAACD,OAAO,IAAI8K,MAAM,CAAC0F,kBAAkB,IAAI,oBAAoB,CAAC;QACnF9J,OAAO,GAAGzG,KAAK,CAAC;AACpB;KACH;AAEDgQ,IAAAA,MAAM,EAAE;AACR;GACH,EAAE,CAACP,SAAS,EAAEzL,UAAU,EAAE0L,aAAa,CAAC,CAAC;AAE1C,EAAA,oBACI/K,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC;GAAU,EACZL,SAAS,CAAA,EAEZpL,MAAM,KAAK,WAAW,iBACnBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACsJ,MAAM,EAAA;AAACxG,IAAAA,IAAI,EAAC;AAAI,GAAE,CAAC,eACpBtF,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACjD,SAAS,IAAI,yBAAiC,CAAC,eACxEjD,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVnC,MAAM,CAAC6F,UAAU,IAAI,uCACpB,CACH,CACV,EAEAhR,MAAM,KAAK,SAAS,iBACjBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACwJ,SAAS,EAAA;AACN1G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA8B,GACvC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACgG,OAAO,IAAI,0BAAkC,CAAC,eACvElM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;GAAQ,EAEVhJ,UAAU,GAAG6G,MAAM,CAACiG,WAAW,IAAI,mBAAmB,GAAGjG,MAAM,CAACkG,aAAa,IAAI,wBAChF,CACH,CACV,EAEArR,MAAM,KAAK,OAAO,iBACfiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAAC6J,KAAK,EAAA;AACF/G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA4B,GACrC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACoG,MAAM,IAAI,uBAA+B,CAAC,eACnEtM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;GAAQ,EAEVlN,YAAY,IAAI+K,MAAM,CAACqG,WAAW,IAAI,+BACrC,CACH,CAEL,CAAC;AAEnB;;AC1IA;AACA;AACA;AACe,SAASC,kBAAkBA,CAAC;AACvC;EACAvI,IAAI;AACJF,EAAAA,KAAK,GAAG,iBAAiB;AACzBC,EAAAA,QAAQ,GAAG,6CAA6C;AAExD;AACA8F,EAAAA,cAAc,GAAG,IAAI;AAErB;AACAC,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACAU,MAAM;EACN3I,OAAO;AAEP;EACAoE,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM/G,cAAc,GAAGa,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC3C,cAAc,CAAC;EAC1D,MAAMkB,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChB,aAAa,CAAC;;AAEhE;AACA,EAAA,MAAMgH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;EAExD,MAAMC,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXvI,MAAAA,KAAK,EAAE;KACV;AACDwI,IAAAA,QAAQ,EAAE;AACNxI,MAAAA,KAAK,EAAEsC,KAAK,IAAK,WAAW,CAACmG,IAAI,CAACnG,KAAK,CAAC,GAAG,IAAI,GAAGuF,MAAM,CAACa,YAAY,IAAI;AAC7E;AACJ,GAAC,CAAC;AAEF,EAAA,MAAME,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI;AACA,MAAA,MAAM9H,cAAc,CAAC8H,MAAM,CAAC7I,KAAK,CAAC;AAClCoM,MAAAA,MAAM,GAAGvD,MAAM,CAAC7I,KAAK,CAAC;KACzB,CAAC,OAAOhD,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACiF,SAAS,EAAAnD,QAAA,CAAA;AACNoD,IAAAA,KAAK,EAAExB,MAAM,CAAC7H,KAAK,IAAI,OAAQ;AAC/BsJ,IAAAA,WAAW,EAAEzB,MAAM,CAAC0B,gBAAgB,IAAI,eAAgB;AACxDC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AAACxC,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,OAAO,CAAC,EAAA;AAC/BC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA,OAAQ;AACjBuH,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACkI,QAAQ,EAAA;AAACpF,MAAAA,IAAI,EAAE;KAAK;GAAE,EAEnCY,MAAM,CAACyE,UAAU,IAAI,4BAClB,CACL,CACL,CAAC,EAENb,cAAc,iBACX9J,KAAA,CAAAwC,aAAA,CAACiH,MAAM,qBACHzJ,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC;AAAQ,GAAA,EAETW,MAAM,CAACuG,kBAAkB,IAAI,kBAAkB,EAAC,GAAC,eAAAzM,KAAA,CAAAwC,aAAA,CAAC4F,MAAM,EAAA;AAACrI,IAAAA,IAAI,EAAEgK;GAAU,EAAE7D,MAAM,CAACvH,MAAM,IAAI,QAAiB,CAC5G,CACF,CAEN,CAAC;AAEnB;;ACxFA;AACA;AACA;AACe,SAAS+N,iBAAiBA,CAAC;AACtC;EACAzI,IAAI;AACJF,EAAAA,KAAK,GAAG,YAAY;AACpBC,EAAAA,QAAQ,GAAG,oCAAoC;AAE/C;AACAzJ,EAAAA,KAAK,EAAEuQ,SAAS;AAEhB;EACAhF,SAAS;EACThE,OAAO;AAEP;AACAiI,EAAAA,SAAS,GAAG,cAAc;AAE1B;EACA7D,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM,CAAC5L,KAAK,EAAEoS,QAAQ,CAAC,GAAG1B,QAAQ,CAACH,SAAS,IAAI,EAAE,CAAC;EACnD,MAAM,CAACoB,OAAO,EAAEU,UAAU,CAAC,GAAG3B,QAAQ,CAAC,KAAK,CAAC;EAC7C,MAAM1L,aAAa,GAAGU,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxC,aAAa,CAAC;EACxD,MAAMe,OAAO,GAAGL,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAAChB,aAAa,CAAC;;AAEhE;AACA,EAAA,MAAMgH,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;;AAExD;AACAxE,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,IAAI,CAAC6I,SAAS,IAAI,OAAOpR,MAAM,KAAK,WAAW,EAAE;MAC7C,MAAM4R,SAAS,GAAG,IAAIC,eAAe,CAAC7R,MAAM,CAACC,QAAQ,CAAC6R,MAAM,CAAC;AAC7D,MAAA,MAAMqB,QAAQ,GAAGvB,SAAS,CAAClL,GAAG,CAAC,OAAO,CAAC;AACvC,MAAA,IAAIyM,QAAQ,EAAEF,QAAQ,CAACE,QAAQ,CAAC;AACpC;AACJ,GAAC,EAAE,CAAC/B,SAAS,CAAC,CAAC;EAEf,MAAMpE,IAAI,GAAGC,OAAO,CAAC;AACjBC,IAAAA,aAAa,EAAE;AACXpI,MAAAA,QAAQ,EAAE,EAAE;AACZwL,MAAAA,eAAe,EAAE;KACpB;AACDnD,IAAAA,QAAQ,EAAE;AACNrI,MAAAA,QAAQ,EAAEmC,KAAK,IAAKA,KAAK,CAAC3D,MAAM,GAAG,CAAC,GAAGkJ,MAAM,CAACc,gBAAgB,IAAI,0CAA0C,GAAG,IAAK;AACpHgD,MAAAA,eAAe,EAAEA,CAACrJ,KAAK,EAAEuG,MAAM,KAAMvG,KAAK,KAAKuG,MAAM,CAAC1I,QAAQ,GAAG0H,MAAM,CAACgE,gBAAgB,IAAI,yBAAyB,GAAG;AAC5H;AACJ,GAAC,CAAC;AAEF,EAAA,MAAMjD,YAAY,GAAG,MAAMC,MAAM,IAAI;IACjC,IAAI,CAAC3M,KAAK,EAAE;AACRuH,MAAAA,OAAO,GAAG,IAAIlG,KAAK,CAAC,sBAAsB,CAAC,CAAC;AAC5C,MAAA;AACJ;IAEA,IAAI;AACA,MAAA,MAAM2D,aAAa,CAAChF,KAAK,EAAE2M,MAAM,CAAC1I,QAAQ,CAAC;MAC3CoO,UAAU,CAAC,IAAI,CAAC;AAChB9G,MAAAA,SAAS,IAAI;KAChB,CAAC,OAAOzK,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,IAAI6Q,OAAO,EAAE;AACT,IAAA,oBACIlM,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,MAAAA,IAAI,EAAEuC;AAAU,KAAA,EACZL,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,MAAAA,KAAK,EAAC,QAAQ;AACdhH,MAAAA,GAAG,EAAC;AAAI,KAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACwJ,SAAS,EAAA;AACN1G,MAAAA,IAAI,EAAE,EAAG;AACT2G,MAAAA,KAAK,EAAC;AAA8B,KACvC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,MAAAA,KAAK,EAAE;KAAE,EAAEc,MAAM,CAAC4G,YAAY,IAAI,mBAA2B,CAAC,eACrE9M,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,MAAAA,IAAI,EAAC,IAAI;AACTC,MAAAA,CAAC,EAAC,QAAQ;AACV8C,MAAAA,EAAE,EAAC;KAAQ,EAEVnC,MAAM,CAAC6G,cAAc,IAAI,qCACxB,CAAC,eACP/M,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHsE,MAAAA,SAAS,EAAC,GAAG;AACbjN,MAAAA,IAAI,EAAEgK,SAAU;MAChBnB,SAAS,EAAA;AAAA,KAAA,EAER1C,MAAM,CAAC+G,UAAU,IAAI,eAClB,CACL,CACD,CAAC;AAEnB;EAEA,IAAI,CAAC1S,KAAK,EAAE;AACR,IAAA,oBACIyF,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,MAAAA,IAAI,EAAEuC;AAAU,KAAA,EACZL,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,MAAAA,KAAK,EAAC,QAAQ;AACdhH,MAAAA,GAAG,EAAC;AAAI,KAAA,eAER7E,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AAACE,MAAAA,CAAC,EAAC;KAAK,EAAEW,MAAM,CAACuF,OAAO,IAAI,6BAAoC,CAAC,eACtEzL,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHsE,MAAAA,SAAS,EAAC,GAAG;AACbjN,MAAAA,IAAI,EAAEgK,SAAU;AAChBZ,MAAAA,OAAO,EAAC,OAAO;MACfP,SAAS,EAAA;AAAA,KAAA,EAER1C,MAAM,CAAC+G,UAAU,IAAI,mBAClB,CACL,CACD,CAAC;AAEnB;AAEA,EAAA,oBACIjN,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC,SAAU;AAChBzC,IAAAA,KAAK,EAAEA,KAAM;AACbC,IAAAA,QAAQ,EAAEA;AAAS,GAAA,EACfmC,SAAS,CAAA,eAEbnG,KAAA,CAAAwC,aAAA,CAAA,MAAA,EAAA;AAAMgF,IAAAA,QAAQ,EAAEd,IAAI,CAACc,QAAQ,CAACP,YAAY;AAAE,GAAA,eACxCjH,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AAACC,IAAAA,GAAG,EAAC;AAAI,GAAA,eACX7E,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC1G,WAAW,IAAI,YAAa;AAC1CmI,IAAAA,WAAW,EAAEzB,MAAM,CAACgH,sBAAsB,IAAI,qBAAsB;AACpErF,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,UAAU,CAAC,EAAA;AAClCC,IAAAA,QAAQ,EAAE1H;GAAQ,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACyF,aAAa,EAAA3D,QAAA,CAAA;AACVoD,IAAAA,KAAK,EAAExB,MAAM,CAAC8D,eAAe,IAAI,iBAAkB;AACnDrC,IAAAA,WAAW,EAAEzB,MAAM,CAACmE,0BAA0B,IAAI,qBAAsB;AACxExC,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAAC2F,QAAQ,EAAA;AAAC7C,MAAAA,IAAI,EAAE;KAAK;AAAE,GAAA,EAChCoB,IAAI,CAACqB,aAAa,CAAC,iBAAiB,CAAC,EAAA;AACzCC,IAAAA,QAAQ,EAAE1H;AAAQ,GAAA,CACrB,CAAC,eAEFN,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHC,IAAAA,IAAI,EAAC,QAAQ;IACbC,SAAS,EAAA,IAAA;AACTtI,IAAAA,OAAO,EAAEA;GAAQ,EAEhB4F,MAAM,CAACiH,WAAW,IAAI,iBACnB,CACL,CACL,CACA,CAAC;AAEnB;;ACnKA;AACA;AACA;AACA;AACe,SAASC,eAAeA,CAAC;AACpC;EACAnJ,IAAI;AAEJ;AACA1J,EAAAA,KAAK,EAAEuQ,SAAS;AAEhB;EACAzM,KAAK;AAEL;EACAyH,SAAS;EACThE,OAAO;EACPuL,QAAQ;AAER;EACAhO,UAAU;AACV0L,EAAAA,aAAa,GAAG,IAAI;AAEpB;EACA7E,MAAM,GAAG,EAAE;EAEX,GAAGC;AACP,CAAC,EAAE;EACC,MAAM,CAACpL,MAAM,EAAEiQ,SAAS,CAAC,GAAGC,QAAQ,CAAC,WAAW,CAAC,CAAA;EACjD,MAAM,CAAC9P,YAAY,EAAE+P,eAAe,CAAC,GAAGD,QAAQ,CAAC,EAAE,CAAC;EACpD,MAAM,CAACqC,UAAU,EAAEC,aAAa,CAAC,GAAGtC,QAAQ,CAAC,IAAI,CAAC,CAAA;;EAElD,MAAMxL,WAAW,GAAGQ,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACtC,WAAW,CAAC;EACpD,MAAMC,kBAAkB,GAAGO,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACrC,kBAAkB,CAAC;EAClE,MAAM8N,aAAa,GAAGvN,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAACxB,aAAa,CAACb,kBAAkB,CAAC;EAC3E,MAAMW,IAAI,GAAGJ,YAAY,CAAC8B,CAAC,IAAIA,CAAC,CAAC1B,IAAI,CAAC;AAEtC,EAAA,MAAM8K,iBAAiB,GAAGC,MAAM,CAAC,IAAI,CAAC;;AAEtC;AACA,EAAA,MAAM7E,eAAe,GAAGhD,kBAAkB,EAAE;AAC5C,EAAA,MAAMiD,SAAS,GAAGvC,IAAI,IAAIsC,eAAe,IAAIE,GAAW;AAExDxE,EAAAA,SAAS,CAAC,MAAM;AACZ,IAAA,MAAMoJ,MAAM,GAAG,YAAY;AACvB;MACA,IAAI9Q,KAAK,GAAGuQ,SAAS;AACrB,MAAA,IAAI,CAACvQ,KAAK,IAAI,OAAOb,MAAM,KAAK,WAAW,EAAE;QACzC,MAAM4R,SAAS,GAAG,IAAIC,eAAe,CAAC7R,MAAM,CAACC,QAAQ,CAAC6R,MAAM,CAAC;AAC7DjR,QAAAA,KAAK,GAAG+Q,SAAS,CAAClL,GAAG,CAAC,OAAO,CAAC;AAClC;MAEA,IAAI,CAAC7F,KAAK,EAAE;AACR;QACA,IAAIQ,MAAM,KAAK,eAAe,EAAE;QAEhCiQ,SAAS,CAAC,eAAe,CAAC;AAC1B,QAAA;AACJ;;AAEA;MACA,IAAI;AACA,QAAA,MAAMtN,OAAO,GAAGb,SAAS,CAACtC,KAAK,CAAC;QAChC,IAAImD,OAAO,EAAEW,KAAK,EAAE;AAChBkP,UAAAA,aAAa,CAAC7P,OAAO,CAACW,KAAK,CAAC;AAChC;OACH,CAAC,OAAO7E,CAAC,EAAE;AACR;AAAA;;AAGJ;AACA,MAAA,IAAI2R,iBAAiB,CAACO,OAAO,KAAKnR,KAAK,EAAE;MACzC4Q,iBAAiB,CAACO,OAAO,GAAGnR,KAAK;MAEjC,IAAI;AACA,QAAA,MAAM4B,MAAM,GAAG,MAAMsD,WAAW,CAAClF,KAAK,CAAC;QACvCyQ,SAAS,CAAC,SAAS,CAAC;QACpBlF,SAAS,GAAG3J,MAAM,CAAC;AAEnB,QAAA,IAAIkD,UAAU,EAAE;AACZsM,UAAAA,UAAU,CAAC,MAAM;AACbjS,YAAAA,MAAM,CAACC,QAAQ,CAACoG,IAAI,GAAGV,UAAU;WACpC,EAAE0L,aAAa,CAAC;AACrB;OACH,CAAC,OAAO1P,KAAK,EAAE;AACZ;AACA;QACA2P,SAAS,CAAC,OAAO,CAAC;QAClBE,eAAe,CAAC7P,KAAK,CAACD,OAAO,IAAI8K,MAAM,CAAC0F,kBAAkB,IAAI,oBAAoB,CAAC;QACnF9J,OAAO,GAAGzG,KAAK,CAAC;AACpB;KACH;AAEDgQ,IAAAA,MAAM,EAAE;AACR;GACH,EAAE,CAACP,SAAS,EAAEzL,UAAU,EAAE0L,aAAa,CAAC,CAAC;AAE1C,EAAA,MAAM0C,YAAY,GAAG,YAAY;IAC7B,MAAMC,WAAW,GAAGrP,KAAK,IAAIgC,IAAI,EAAEhC,KAAK,IAAIiP,UAAU;IACtD,IAAI,CAACI,WAAW,EAAE;IAElB,IAAI;MACA,MAAMhO,kBAAkB,CAACgO,WAAW,CAAC;MACrCL,QAAQ,GAAGK,WAAW,CAAC;KAC1B,CAAC,OAAOrS,KAAK,EAAE;MACZyG,OAAO,GAAGzG,KAAK,CAAC;AACpB;GACH;AAED,EAAA,oBACI2E,KAAA,CAAAwC,aAAA,CAACsB,QAAQ,EAAAQ,QAAA,CAAA;AACLL,IAAAA,IAAI,EAAEuC;GAAU,EACZL,SAAS,CAAA,EAEZpL,MAAM,KAAK,WAAW,iBACnBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACsJ,MAAM,EAAA;AAACxG,IAAAA,IAAI,EAAC;AAAI,GAAE,CAAC,eACpBtF,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACjD,SAAS,IAAI,mBAA2B,CAAC,eAClEjD,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVnC,MAAM,CAAC6F,UAAU,IAAI,2CACpB,CACH,CACV,EAEAhR,MAAM,KAAK,eAAe,iBACvBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACsF,QAAQ,EAAA;AACLxC,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA6B,GACtC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACyH,YAAY,IAAI,sBAA8B,CAAC,eACxE3N,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVnC,MAAM,CAAC0H,YAAY,IAAI,kEACtB,CACH,CACV,EAEA7S,MAAM,KAAK,SAAS,iBACjBiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAACwJ,SAAS,EAAA;AACN1G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA8B,GACvC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACgG,OAAO,IAAI,mBAA2B,CAAC,eAChElM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;GAAQ,EAEVhJ,UAAU,GAAG6G,MAAM,CAACiG,WAAW,IAAI,mBAAmB,GAAGjG,MAAM,CAAC2H,QAAQ,IAAI,uCAC3E,CACH,CACV,EAEA9S,MAAM,KAAK,OAAO,iBACfiF,KAAA,CAAAwC,aAAA,CAACoC,KAAK,EAAA;AACFiH,IAAAA,KAAK,EAAC,QAAQ;AACdhH,IAAAA,GAAG,EAAC;AAAI,GAAA,eAER7E,KAAA,CAAAwC,aAAA,CAAC6J,KAAK,EAAA;AACF/G,IAAAA,IAAI,EAAE,EAAG;AACT2G,IAAAA,KAAK,EAAC;AAA4B,GACrC,CAAC,eACFjM,KAAA,CAAAwC,aAAA,CAAC2C,KAAK,EAAA;AAACC,IAAAA,KAAK,EAAE;GAAE,EAAEc,MAAM,CAACoG,MAAM,IAAI,oBAA4B,CAAC,eAChEtM,KAAA,CAAAwC,aAAA,CAAC6C,IAAI,EAAA;AACDC,IAAAA,IAAI,EAAC,IAAI;AACTC,IAAAA,CAAC,EAAC,QAAQ;AACV8C,IAAAA,EAAE,EAAC;AAAQ,GAAA,EAEVlN,YAAY,IAAI+K,MAAM,CAAC4H,YAAY,IAAI,+BACtC,CAAC,EAGN,CAACzP,KAAK,IAAIgC,IAAI,EAAEhC,KAAK,IAAIiP,UAAU,KAAKnS,YAAY,EAAE4S,WAAW,EAAE,CAACC,QAAQ,CAAC,SAAS,CAAC,iBACpFhO,KAAA,CAAAwC,aAAA,CAACkG,MAAM,EAAA;AACHS,IAAAA,OAAO,EAAC,OAAO;AACftB,IAAAA,WAAW,eAAE7H,KAAA,CAAAwC,aAAA,CAACyL,WAAW,EAAA;AAAC3I,MAAAA,IAAI,EAAE;AAAG,KAAE,CAAE;AACvCgD,IAAAA,OAAO,EAAEmF,YAAa;AACtBnN,IAAAA,OAAO,EAAEkN,aAAc;IACvB5E,SAAS,EAAA;AAAA,GAAA,EAER1C,MAAM,CAACgI,MAAM,IAAI,qBACd,CAET,CAEL,CAAC;AAEnB;;;;","x_google_ignoreList":[1,2,4,5]}