From 04e1bb66f71e18d79fe82a8d1dcbe77777db127c Mon Sep 17 00:00:00 2001 From: Xiaodong Date: Mon, 29 Sep 2025 21:45:08 +0800 Subject: [PATCH 1/7] feat(frontend): model logos --- .../assets/models/OpenAI-black-monoblossom.svg | 15 +++++++++++++++ src/frontend/src/assets/models/Qwen3.png | Bin 0 -> 79507 bytes src/frontend/src/assets/models/qwen.png | Bin 8339 -> 0 bytes src/frontend/src/services/cluster.tsx | 17 +++++++++++++++-- 4 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 src/frontend/src/assets/models/OpenAI-black-monoblossom.svg create mode 100644 src/frontend/src/assets/models/Qwen3.png delete mode 100644 src/frontend/src/assets/models/qwen.png diff --git a/src/frontend/src/assets/models/OpenAI-black-monoblossom.svg b/src/frontend/src/assets/models/OpenAI-black-monoblossom.svg new file mode 100644 index 00000000..832fa6a5 --- /dev/null +++ b/src/frontend/src/assets/models/OpenAI-black-monoblossom.svg @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/src/frontend/src/assets/models/Qwen3.png b/src/frontend/src/assets/models/Qwen3.png new file mode 100644 index 0000000000000000000000000000000000000000..53d01bfa7ae5c1853f962519e7b54f5986810b63 GIT binary patch literal 79507 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 G6#ReG35g&8 literal 0 HcmV?d00001 diff --git a/src/frontend/src/assets/models/qwen.png b/src/frontend/src/assets/models/qwen.png deleted file mode 100644 index fef2ab7734d636fe21901bd6801a9ef1953db9c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8339 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 dH3lZG`# { + name = name.toLowerCase(); + const parts = name.split(/[-/]/); + if (parts[0] === 'qwen') { + return logoUrlQwen; + } + if (parts[0] === 'openai') { + return logoUrlGpt; + } + return ''; +}; const debugLog = (...args: any[]) => { console.log('%c cluster.tsx ', 'color: white; background: darkcyan;', ...args); @@ -76,7 +89,7 @@ export const ClusterProvider: FC = ({ children }) => { modelList.map((name) => ({ name, displayName: name, - logoUrl: logoUrlQwen, + logoUrl: getLogoUrl(name), })), ); }); From 6c70f04848f26e286e3e75e6ed71766dac3ca4a0 Mon Sep 17 00:00:00 2001 From: Xiaodong Date: Tue, 30 Sep 2025 09:28:57 +0800 Subject: [PATCH 2/7] fix(frontend): model logo qwen path incorrect --- src/frontend/src/services/cluster.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/src/services/cluster.tsx b/src/frontend/src/services/cluster.tsx index 41939489..be2cb456 100644 --- a/src/frontend/src/services/cluster.tsx +++ b/src/frontend/src/services/cluster.tsx @@ -4,7 +4,7 @@ import { createContext, useContext, useEffect, useMemo, useState } from 'react'; import { useRefCallback } from '../hooks'; import { createStreamClusterStatus, getModelList, initScheduler } from './api'; -import logoUrlQwen from '../assets/models/Qwen.png'; +import logoUrlQwen from '../assets/models/Qwen3.png'; import logoUrlGpt from '../assets/models/OpenAI-black-monoblossom.svg'; const getLogoUrl = (name: string) => { From 7704878a46f8399a7b79c96999c782767b893089 Mon Sep 17 00:00:00 2001 From: Xiaodong Date: Tue, 30 Sep 2025 09:29:52 +0800 Subject: [PATCH 3/7] fix(frontend): input style incorrect --- src/frontend/src/components/common/main-layout.tsx | 7 ++++--- src/frontend/src/pages/setup.tsx | 9 +-------- src/frontend/src/themes/components/form/outline-input.ts | 2 +- src/frontend/src/themes/components/form/toggle-button.ts | 2 +- src/frontend/src/themes/shadows.ts | 6 ++++-- 5 files changed, 11 insertions(+), 15 deletions(-) diff --git a/src/frontend/src/components/common/main-layout.tsx b/src/frontend/src/components/common/main-layout.tsx index 89ddd03f..08e3a301 100644 --- a/src/frontend/src/components/common/main-layout.tsx +++ b/src/frontend/src/components/common/main-layout.tsx @@ -51,10 +51,11 @@ const MainLayoutContainer = styled(Box)(({ theme }) => { const MainLayoutContent = styled(Stack)(({ theme }) => { const { spacing } = theme; return { - width: '30rem', + width: '31rem', height: '100%', gap: spacing(7), - overflow: 'hidden', + paddingInline: spacing(1), + overflowY: 'auto', }; }); @@ -97,7 +98,7 @@ export const MainLayout: FC> = ({ - {children} + {children} {(contentStart && {contentStart}) || undefined} {(contentEnd && {contentEnd}) || undefined} diff --git a/src/frontend/src/pages/setup.tsx b/src/frontend/src/pages/setup.tsx index 09c2dab7..913f88a2 100644 --- a/src/frontend/src/pages/setup.tsx +++ b/src/frontend/src/pages/setup.tsx @@ -8,7 +8,7 @@ import { FormLabel, MenuItem, Select, - Stack as MuiStack, + Stack, styled, TextField, ToggleButton, @@ -20,13 +20,6 @@ import { ModelSelect, NumberInput } from '../components/inputs'; import { useCluster } from '../services'; import { useRefCallback } from '../hooks'; -const Stack = styled(MuiStack)(({ theme }) => { - const { spacing } = theme; - return { - overflowY: 'auto', - }; -}); - export default function PageSetup() { const [ { networkType, initNodesNumber, modelName, modelInfoList }, diff --git a/src/frontend/src/themes/components/form/outline-input.ts b/src/frontend/src/themes/components/form/outline-input.ts index a1f4acbf..351a2500 100644 --- a/src/frontend/src/themes/components/form/outline-input.ts +++ b/src/frontend/src/themes/components/form/outline-input.ts @@ -34,7 +34,7 @@ export const MuiOutlinedInput = (theme: Theme): Components['MuiOutlinedIn '&, &:hover': { [`.${outlinedInputClasses.notchedOutline}`]: { borderWidth: 1, - borderColor: 'transparent', + borderColor: divider, }, }, }, diff --git a/src/frontend/src/themes/components/form/toggle-button.ts b/src/frontend/src/themes/components/form/toggle-button.ts index f4adb57c..d0d39371 100644 --- a/src/frontend/src/themes/components/form/toggle-button.ts +++ b/src/frontend/src/themes/components/form/toggle-button.ts @@ -13,7 +13,7 @@ export const MuiToggleButton = (theme: Theme): Components['MuiToggleButto flex: 1, height: `${INPUT_SIZE_REM_MAP.small}rem`, - borderColor: 'transparent', + borderColor: palette.divider, color: palette.grey[400], backgroundColor: palette.grey[200], diff --git a/src/frontend/src/themes/shadows.ts b/src/frontend/src/themes/shadows.ts index 28039332..c730cfae 100644 --- a/src/frontend/src/themes/shadows.ts +++ b/src/frontend/src/themes/shadows.ts @@ -34,8 +34,10 @@ export const overlays: Overlays = { // shadowInput: '0px 1px 2px 0px rgba(49, 49, 48, 0.05)', shadowInput: 'none', - shadowInputActive: 'none', - shadowInputError: 'none', + shadowInputActive: + '0px 0px 0px 4px rgba(49, 49, 48, 0.05), 0px 1px 2px 0px rgba(49, 49, 48, 0.05)', + shadowInputError: + '0px 0px 0px 4px rgba(221, 82, 76, 0.12), 0px 1px 2px 0px rgba(221, 82, 76, 0.05)', buttonShadeDefault: '0px 1px 2px 0px rgba(49, 49, 48, 0.05)', buttonShadeActiveLight: From c7aa141272374ae4ae399f1232856f2268a79a6e Mon Sep 17 00:00:00 2001 From: Xiaodong Date: Tue, 30 Sep 2025 10:13:28 +0800 Subject: [PATCH 4/7] feat(frontend): stream auto reconnect and navigate for scheduler offline --- src/frontend/src/router/index.tsx | 39 +++++++++--------- src/frontend/src/services/api.ts | 17 +++++--- src/frontend/src/services/cluster.tsx | 52 +++++++++++------------- src/frontend/src/services/http-stream.ts | 26 +++++++++++- 4 files changed, 79 insertions(+), 55 deletions(-) diff --git a/src/frontend/src/router/index.tsx b/src/frontend/src/router/index.tsx index 1d0efc9a..f8d03ce0 100644 --- a/src/frontend/src/router/index.tsx +++ b/src/frontend/src/router/index.tsx @@ -1,8 +1,12 @@ // src/router/index.tsx import { lazy, Suspense, useEffect } from 'react'; -import { useRoutes, Navigate, useNavigate } from 'react-router-dom'; +import { useLocation, useRoutes, Navigate, useNavigate } from 'react-router-dom'; import { useCluster } from '../services'; +const PATH_SETUP = '/setup'; +const PATH_JOIN = '/join'; +const PATH_CHAT = '/chat'; + const PageSetup = lazy(() => import('../pages/setup')); const PageJoin = lazy(() => import('../pages/join')); const PageChat = lazy(() => import('../pages/chat')); @@ -13,6 +17,7 @@ const debugLog = (...args: any[]) => { export const Router = () => { const navigate = useNavigate(); + const { pathname } = useLocation(); const [ { @@ -21,26 +26,22 @@ export const Router = () => { ] = useCluster(); useEffect(() => { - debugLog('cluster status', status); - switch (status) { - case 'idle': - case 'waiting': - debugLog('no need to navigate'); - break; - default: - debugLog('navigate to /chat'); - navigate('/chat'); - break; + debugLog('pathname', pathname, 'cluster status', status); + if (status === 'idle' && !pathname.startsWith(PATH_SETUP)) { + debugLog('navigate to /setup'); + navigate(PATH_SETUP); + return; + } + if (status === 'available' && !pathname.startsWith(PATH_CHAT)) { + debugLog('navigate to /chat'); + navigate(PATH_CHAT); + return; } - }, [navigate, status]); + }, [navigate, pathname, status]); const routes = useRoutes([ { - path: '/', - element: , // redirect to the page setup - }, - { - path: '/setup', + path: PATH_SETUP, element: ( Loading...}> @@ -48,7 +49,7 @@ export const Router = () => { ), }, { - path: '/join', + path: PATH_JOIN, element: ( Loading...}> @@ -56,7 +57,7 @@ export const Router = () => { ), }, { - path: '/chat', + path: PATH_CHAT, element: ( Loading...}> diff --git a/src/frontend/src/services/api.ts b/src/frontend/src/services/api.ts index a9638ba6..73f293d7 100644 --- a/src/frontend/src/services/api.ts +++ b/src/frontend/src/services/api.ts @@ -3,12 +3,19 @@ import { createHttpStreamFactory } from './http-stream'; export const API_BASE_URL = import.meta.env.DEV ? 'http://0.0.0.0:3001' : ''; export const getModelList = async (): Promise => { - const response = await fetch(`${API_BASE_URL}/model/list`, { method: 'GET' }); - const message = await response.json(); - if (message.type !== 'model_list') { - throw new Error(`Invalid message type: ${message.type}.`); + while (true) { + try { + const response = await fetch(`${API_BASE_URL}/model/list`, { method: 'GET' }); + const message = await response.json(); + if (message.type !== 'model_list') { + throw new Error(`Invalid message type: ${message.type}.`); + } + return message.data; + } catch (error) { + console.error('getModelList error', error); + await new Promise((resolve) => setTimeout(resolve, 2000)); + } } - return message.data; }; export const initScheduler = async (params: { diff --git a/src/frontend/src/services/cluster.tsx b/src/frontend/src/services/cluster.tsx index be2cb456..17a37f5d 100644 --- a/src/frontend/src/services/cluster.tsx +++ b/src/frontend/src/services/cluster.tsx @@ -38,6 +38,13 @@ export interface ClusterInfo { readonly initNodesNumber: number; } +const INITIAL_CLUSTER_INFO: ClusterInfo = { + id: '', + status: 'idle', + nodeJoinCommand: {}, + initNodesNumber: 4, +}; + export type NodeStatus = 'waiting' | 'available' | 'failed'; export interface NodeInfo { @@ -101,33 +108,14 @@ export const ClusterProvider: FC = ({ children }) => { }, [modelInfoList]); // Cluster and Nodes - const [clusterInfo, setClusterInfo] = useState(() => ({ - id: '', - status: 'idle', - nodeJoinCommand: {}, - initNodesNumber: 4, - })); - const [nodeInfoList, setNodeInfoList] = useState(() => [ - // MOCK - // { - // id: 'sfasge235rytdfgq35q346234wedfss', - // status: 'available', - // gpuName: 'NVIDIA A100', - // gpuMemory: 24, - // }, - // { - // id: 'dfgshjldkrewi25246esfdgsh345sdf', - // status: 'waiting', - // gpuName: 'NVIDIA A100', - // gpuMemory: 24, - // }, - // { - // id: 'dfgberiuiwuyhy25346tea2342sdf12', - // status: 'failed', - // gpuName: 'NVIDIA A100', - // gpuMemory: 24, - // }, - ]); + const [clusterInfo, setClusterInfo] = useState(INITIAL_CLUSTER_INFO); + const [nodeInfoList, setNodeInfoList] = useState([]); + + const reset = useRefCallback(() => { + debugLog('reset'); + setClusterInfo(INITIAL_CLUSTER_INFO); + setNodeInfoList([]); + }); const streamClusterStatus = useMemo(() => { const onMessage = (message: any) => { @@ -138,7 +126,7 @@ export const ClusterProvider: FC = ({ children }) => { setClusterInfo((prev) => { const next = { ...prev, - status, + status: (model_name && status) || 'idle', initNodesNumber: init_nodes_num || 0, modelName: model_name || '', nodeJoinCommand: node_join_command || {}, @@ -183,12 +171,18 @@ export const ClusterProvider: FC = ({ children }) => { } }; const stream = createStreamClusterStatus({ + debugName: 'ClusterStatus', + autoReconnect: true, onMessage, + onError: reset, }); - stream.send(); return stream; }, []); + useEffect(() => { + streamClusterStatus.send(); + }, []); + const init = useRefCallback(async () => { if (initNodesNumber < 1) { throw new Error('initNodesNumber must be greater than 0'); diff --git a/src/frontend/src/services/http-stream.ts b/src/frontend/src/services/http-stream.ts index 3099eeb7..c2db81bb 100644 --- a/src/frontend/src/services/http-stream.ts +++ b/src/frontend/src/services/http-stream.ts @@ -5,6 +5,18 @@ export type HttpStreamClientStatus = 'connecting' | 'connected' | 'disconnected' export interface HttpStreamClientOptions { debugName?: string; + /** + * Whether the client can re-connect automatically when close or error. + * @default false + */ + autoReconnect?: boolean; + + /** + * The interval time (ms) of auto-reconnect. + * @default 2000 + */ + autoReconnectInterval?: number; + /** * The callback function to handle the connection status change. * @param status The status of the client. @@ -48,6 +60,8 @@ export const createHttpStreamFactory = const { url: _url, method = 'GET', afterFetch = (data) => data } = commonOptions; const { debugName, + autoReconnect = false, + autoReconnectInterval = 2000, onStatusChange: onStatusChangeCallback, onMessage: onMessageCallback, onError: onErrorCallback, @@ -67,6 +81,12 @@ export const createHttpStreamFactory = const onStatusChange = (status: HttpStreamClientStatus): void => { debugLog('onStatusChange', status); + if (autoReconnect && (status === 'disconnected' || status === 'error')) { + setTimeout(() => { + debugLog('auto-reconnect'); + send(previousSendOptions); + }, autoReconnectInterval); + } try { onStatusChangeCallback?.(status); } catch (error) { @@ -97,8 +117,10 @@ export const createHttpStreamFactory = } }; - const send = (options: HttpStreamClientSendOptions = {}) => { - const { headers, body, data } = options; + let previousSendOptions: HttpStreamClientSendOptions | undefined; + const send = (options?: HttpStreamClientSendOptions) => { + previousSendOptions = options; + const { headers, body, data } = options || {}; onStatusChange('connecting'); debugLog('send', data); From ec5c667c13e68391a67b7874e863a6ebacd64cff Mon Sep 17 00:00:00 2001 From: Xiaodong Date: Tue, 30 Sep 2025 13:12:04 +0800 Subject: [PATCH 5/7] chore(frontend): dev api proxy configs --- src/frontend/src/services/api.ts | 2 +- src/frontend/vite.config.ts | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/frontend/src/services/api.ts b/src/frontend/src/services/api.ts index 73f293d7..c9ce7dfe 100644 --- a/src/frontend/src/services/api.ts +++ b/src/frontend/src/services/api.ts @@ -1,6 +1,6 @@ import { createHttpStreamFactory } from './http-stream'; -export const API_BASE_URL = import.meta.env.DEV ? 'http://0.0.0.0:3001' : ''; +export const API_BASE_URL = import.meta.env.DEV ? '/proxy-api' : ''; export const getModelList = async (): Promise => { while (true) { diff --git a/src/frontend/vite.config.ts b/src/frontend/vite.config.ts index 6da11b5b..587adb6d 100644 --- a/src/frontend/vite.config.ts +++ b/src/frontend/vite.config.ts @@ -4,4 +4,17 @@ import react from '@vitejs/plugin-react-swc'; // https://vite.dev/config/ export default defineConfig({ plugins: [react()], + server: { + proxy: { + '/proxy-api/v1/chat/completions': { + target: 'http://localhost:3001', + // target: 'https://ztrxxhzxdt3bn6-3000.proxy.runpod.net', + rewrite: (path) => path.replace(/^\/proxy-api/, ''), + }, + '/proxy-api': { + target: 'http://localhost:3001', + rewrite: (path) => path.replace(/^\/proxy-api/, ''), + }, + }, + }, }); From e8bbf8b7d2fdea105835612e6cbfc822114da989 Mon Sep 17 00:00:00 2001 From: Xiaodong Date: Tue, 30 Sep 2025 13:13:31 +0800 Subject: [PATCH 6/7] feat(frontend): extra think and content from model generation --- src/frontend/src/services/chat-helper.tsx | 55 ++++++++++ src/frontend/src/services/chat.tsx | 122 ++++++++++++++++++---- src/frontend/src/services/cluster.tsx | 3 + 3 files changed, 162 insertions(+), 18 deletions(-) create mode 100644 src/frontend/src/services/chat-helper.tsx diff --git a/src/frontend/src/services/chat-helper.tsx b/src/frontend/src/services/chat-helper.tsx new file mode 100644 index 00000000..16e364d4 --- /dev/null +++ b/src/frontend/src/services/chat-helper.tsx @@ -0,0 +1,55 @@ +/** + * Mapping GPT generation massages. + * The key is the channel name, the value is the message. + */ +export interface GptGenerationMap { + analysis: string; + final: string; + [key: string]: string; +} + +export function parseGenerationGpt(buffer: string): GptGenerationMap { + buffer = buffer.trim(); + + const map: GptGenerationMap = { analysis: '', final: '' }; + + const regex = /<\|channel\|>([^<]+)<\|message\|>(.*?)(<\|end\|>|$)/gs; + let match: RegExpExecArray | null; + while ((match = regex.exec(buffer)) !== null) { + map[match[1]] = match[2]?.trim() || ''; + } + + return map; +} + +export interface QwenGenerationMap { + think: string; + content: string; +} + +const THINK_TAG_OPEN = ''; +const THINK_TAG_CLOSE = ''; + +export function parseGenerationQwen(buffer: string): QwenGenerationMap { + buffer = buffer.trim(); + + const map: QwenGenerationMap = { think: '', content: '' }; + + while (buffer.includes(THINK_TAG_OPEN)) { + const thinkStart = buffer.indexOf(THINK_TAG_OPEN); + const thinkEnd = buffer.indexOf(THINK_TAG_CLOSE); + const think = buffer.substring( + thinkStart + THINK_TAG_OPEN.length, + thinkEnd > thinkStart ? thinkEnd : buffer.length, + ); + buffer = buffer.replace( + THINK_TAG_OPEN + think + (thinkEnd > thinkStart ? THINK_TAG_CLOSE : ''), + '', + ); + map.think += '\n\n' + think; + } + map.think = map.think.trim(); + map.content = buffer.trim(); + + return map; +} diff --git a/src/frontend/src/services/chat.tsx b/src/frontend/src/services/chat.tsx index 0d2f630e..da7f6a8a 100644 --- a/src/frontend/src/services/chat.tsx +++ b/src/frontend/src/services/chat.tsx @@ -12,8 +12,9 @@ import { import { API_BASE_URL } from './api'; import { useConst, useRefCallback } from '../hooks'; import { useCluster } from './cluster'; +import { parseGenerationGpt, parseGenerationQwen } from './chat-helper'; -const debugLog = (...args: any[]) => { +const debugLog = async (...args: any[]) => { if (import.meta.env.DEV) { console.log('%c chat.tsx ', 'color: white; background: orange;', ...args); } @@ -21,10 +22,27 @@ const debugLog = (...args: any[]) => { export type ChatMessageRole = 'user' | 'assistant'; +export type ChatMessageStatus = 'waiting' | 'thinking' | 'generating' | 'done' | 'error'; + export interface ChatMessage { readonly id: string; readonly role: ChatMessageRole; + readonly status: ChatMessageStatus; + + /** + * The content from user input or assistant generating. + */ readonly content: string; + + /** + * The raw content from model response. + */ + readonly raw?: string; + + /** + * The thinking content in assistant generating. + */ + readonly thinking?: string; readonly createdAt: number; } @@ -46,8 +64,7 @@ export interface ChatActions { export const ChatProvider: FC = ({ children }) => { const [ { - modelName, - clusterInfo: { status: clusterStatus }, + clusterInfo: { status: clusterStatus, modelName }, }, ] = useCluster(); @@ -58,11 +75,50 @@ export const ChatProvider: FC = ({ children }) => { const sse = useConst(() => createSSE({ - onOpen: () => setStatus('opened'), - onClose: () => setStatus('closed'), - onError: (error) => setStatus('error'), + onOpen: () => { + setStatus('opened'); + }, + onClose: () => { + setMessages((prev) => { + const lastMessage = prev[prev.length - 1]; + const { id, raw, thinking, content } = lastMessage; + debugLog('GENERATING DONE', 'lastMessage:', lastMessage); + debugLog('GENERATING DONE', 'id:', id); + debugLog('GENERATING DONE', 'raw:', raw); + debugLog('GENERATING DONE', 'thinking:', thinking); + debugLog('GENERATING DONE', 'content:', content); + return [ + ...prev.slice(0, -1), + { + ...lastMessage, + status: 'done', + }, + ]; + }); + setStatus('closed'); + }, + onError: (error) => { + setMessages((prev) => { + const lastMessage = prev[prev.length - 1]; + const { id, raw, thinking, content } = lastMessage; + debugLog('GENERATING ERROR', 'lastMessage:', lastMessage); + debugLog('GENERATING ERROR', 'id:', id); + debugLog('GENERATING ERROR', 'raw:', raw); + debugLog('GENERATING ERROR', 'thinking:', thinking); + debugLog('GENERATING ERROR', 'content:', content); + return [ + ...prev.slice(0, -1), + { + ...lastMessage, + status: 'done', + }, + ]; + }); + debugLog('SSE ERROR', error); + setStatus('error'); + }, onMessage: (message) => { - debugLog('onMessage', message); + // debugLog('onMessage', message); // const example = { // id: 'd410014e-3308-450d-bbd2-0ec4e0c0a345', // object: 'chat.completion.chunk', @@ -89,28 +145,57 @@ export const ChatProvider: FC = ({ children }) => { setMessages((prev) => { let next = prev; // eslint-disable-next-line @typescript-eslint/no-explicit-any - choices.forEach(({ delta: { role, content } = {} }: any) => { - if (typeof content !== 'string') { + choices.forEach(({ delta: { role, content: rawDelta } = {} }: any) => { + if (typeof rawDelta !== 'string' || !rawDelta) { return; } role = role || 'assistant'; let lastMessage = next[next.length - 1]; if (lastMessage && lastMessage.role === role) { - const nextContent = lastMessage.content + content; - if (nextContent === lastMessage.content) { - return; - } + const raw = lastMessage.raw + rawDelta; lastMessage = { ...lastMessage, - content: lastMessage.content + content, + raw: raw, + content: raw, }; next = [...next.slice(0, -1), lastMessage]; } else { - lastMessage = { id, role, content, createdAt: created }; + lastMessage = { + id, + role, + status: 'generating', + raw: rawDelta, + content: rawDelta, + createdAt: created, + }; next = [...next, lastMessage]; } - debugLog('onMessage', 'update last message', lastMessage.content); + // debugLog('onMessage', 'update last message', lastMessage.content); }); + + // Parse generation and extract thinking and content + if (next !== prev && typeof model === 'string') { + let lastMessage = next[next.length - 1]; + let thinking = ''; + let content = ''; + const modelLowerCase = model.toLowerCase(); + if (modelLowerCase.includes('gpt')) { + ({ analysis: thinking, final: content } = parseGenerationGpt( + lastMessage.raw || '', + )); + } else if (modelLowerCase.includes('qwen')) { + ({ think: thinking, content } = parseGenerationQwen(lastMessage.raw || '')); + } else { + content = lastMessage.raw || ''; + } + lastMessage = { + ...lastMessage, + thinking, + content, + }; + next = [...next.slice(0, -1), lastMessage]; + } + return next; }); } @@ -150,7 +235,7 @@ export const ChatProvider: FC = ({ children }) => { const now = performance.now(); nextMessages = [ ...nextMessages, - { id: now.toString(), role: 'user', content: finalInput, createdAt: now }, + { id: now.toString(), role: 'user', status: 'done', content: finalInput, createdAt: now }, ]; debugLog('generate', 'new', nextMessages); } @@ -228,7 +313,8 @@ const createSSE = (options: SSEOptions) => { const connect = (model: string, messages: readonly ChatMessage[]) => { abortController = new AbortController(); - fetch(`${API_BASE_URL}/v1/chat/completions`, { + const url = `${API_BASE_URL}/v1/chat/completions`; + fetch(url, { method: 'POST', body: JSON.stringify({ stream: true, diff --git a/src/frontend/src/services/cluster.tsx b/src/frontend/src/services/cluster.tsx index 17a37f5d..695a0050 100644 --- a/src/frontend/src/services/cluster.tsx +++ b/src/frontend/src/services/cluster.tsx @@ -34,6 +34,7 @@ export type ClusterStatus = 'idle' | 'waiting' | 'available' | 'rebalancing'; export interface ClusterInfo { readonly id: string; readonly status: ClusterStatus; + readonly modelName: string; readonly nodeJoinCommand: Readonly>; readonly initNodesNumber: number; } @@ -41,6 +42,7 @@ export interface ClusterInfo { const INITIAL_CLUSTER_INFO: ClusterInfo = { id: '', status: 'idle', + modelName: '', nodeJoinCommand: {}, initNodesNumber: 4, }; @@ -123,6 +125,7 @@ export const ClusterProvider: FC = ({ children }) => { const { data: { status, init_nodes_num, model_name, node_join_command, node_list }, } = message; + setModelName((prev) => model_name || prev); setClusterInfo((prev) => { const next = { ...prev, From 0a751e43547dadbfd3d87e7c02acf6e1d539a596 Mon Sep 17 00:00:00 2001 From: Xiaodong Date: Tue, 30 Sep 2025 15:08:37 +0800 Subject: [PATCH 7/7] feat(frontend): chat message output fit gpt format --- src/frontend/dist/assets/Qwen3-CHUafU1E.png | Bin 0 -> 79507 bytes .../{chat-DTYOBy9Z.js => chat-QK3nMaK5.js} | 2 +- src/frontend/dist/assets/index-2agzu340.js | 320 ++++++++++++++++++ src/frontend/dist/assets/index-CKPnC4Q3.js | 318 ----------------- .../{join-BU_m_8I2.js => join-COUGJOTN.js} | 2 +- ...ut-_30RNP4s.js => main-layout-BwvpTOaC.js} | 112 +++--- src/frontend/dist/assets/qwen-JvO50h5P.png | Bin 8339 -> 0 bytes src/frontend/dist/assets/setup-D6eE3iQP.js | 6 - src/frontend/dist/assets/setup-Ner6L8JU.js | 6 + src/frontend/dist/index.html | 2 +- .../src/components/inputs/chat-markdown.tsx | 15 +- .../src/components/inputs/chat-messages.tsx | 55 +-- src/frontend/src/services/chat.tsx | 17 +- 13 files changed, 442 insertions(+), 413 deletions(-) create mode 100644 src/frontend/dist/assets/Qwen3-CHUafU1E.png rename src/frontend/dist/assets/{chat-DTYOBy9Z.js => chat-QK3nMaK5.js} (99%) create mode 100644 src/frontend/dist/assets/index-2agzu340.js delete mode 100644 src/frontend/dist/assets/index-CKPnC4Q3.js rename src/frontend/dist/assets/{join-BU_m_8I2.js => join-COUGJOTN.js} (94%) rename src/frontend/dist/assets/{main-layout-_30RNP4s.js => main-layout-BwvpTOaC.js} (79%) delete mode 100644 src/frontend/dist/assets/qwen-JvO50h5P.png delete mode 100644 src/frontend/dist/assets/setup-D6eE3iQP.js create mode 100644 src/frontend/dist/assets/setup-Ner6L8JU.js diff --git a/src/frontend/dist/assets/Qwen3-CHUafU1E.png b/src/frontend/dist/assets/Qwen3-CHUafU1E.png new file mode 100644 index 0000000000000000000000000000000000000000..53d01bfa7ae5c1853f962519e7b54f5986810b63 GIT binary patch literal 79507 zcmd3OV{>Rt({60r*|E(X+qP}nwr$(CZQHh!9XoICr|SHN^I?5htGarwnQOYIyQgb~ z%gKnsLSaDx006*>iwP+J0074Q_do#seu3Z4&jbMA0}vPDS8@Zq>Q+s~6-~KCKYvK8 z5I_Y8Kzp=ewoa60?OeBN5NBOCIoV04if)&*6!%!x@K{LX@!NSsZECtnz$2bE%L>_+ zzSV;eoda;92jTa-3vL)KUbPj?a;$&~sRF79PNOpb~vpX(g1<8oz3PMU3&ue^u(~k;?(C^f4=| z&;9E76`}n2)sX-MEa;C^2Ub!(5s>mbmK>1EI=IBIIt&b`BtI5`ILVj_%mC4Xm1o9du?-d-^FnCTB7*#~I_1VqgPh=v3D^Cq1O z+Gcf}wy9Fqb?Hw3lm4X`O}b*)foKrF2`KR~)TSH& z0&Z_YFR`ETO&TraJv5menztATHXAI)t+Q(*!P&s|FGQ*FM3E#%Z``|pJ0(RO3RIHh zK(U-9>K4_3HP!4x6ueEUdVM1E!xkmBOGtUZmqa7Z%)}D{C8mp|al}jj(=~;vpEfo4 zbsDn4E0-*w>}Ww)$R$(RFvxhaJ46fPF{NX-%CGUQ_%&PQP-xmkkYMDY{OfPg*375c zGfGb`o&Y3f#s`)&7C-372oFI;(y`pZ!~qmXn|1B~o1Ge1r#c{?&UMt-h0bMc4H0Fp z?jycP9g#rT>cx8($Tz;CpDqEVMfz*>9a00@*`sQ@fDj(HvP`t*I>fBl{u4IN2D|XM zz$WUXnXYICM3c#1obrru!J7@a6hZ#|w13xdK`LGex&HiI542e8%0p!f-K!iZr>Y$1 zPX6bEQU#kUpQBDR8l=?F(f^ zUM_@G$Ds6>u!3JSr!Nu|l!F$?G;sg7i z7Xq|gq87)6rzIJWl*tf{@q%Na%=OpEQazsi2=xwyw_N zuHs$iX|P%Yd^%FtSIe1`ODs-y9z-B1Je^Eab*5k~MpuWnw9c?wPY_1yxsTSq21Y>I z2*uu6M4s`o<+?bV(`C9C8(9A|@z6(CYE*;9D)44Kjza#oiX_pB1iuYI{hbj10r`@9 z9(gPhjnR4)_F;hAUJ93|Natg*=UkjK24@yqL3l0(!D*d;Se7ZOIC^L09$jmK_>zxL zA`cp|v#V0f8nx4B#U?g1*=#ZJ(&uT)o7ZRT0T`7ex&k~jxIws9CqTcu;$Qq!N7=~m z4)>()9pfl}@h`Wk?Z@vWtPQKBbx!(u6Kcy6;8EM(dCP@Znv2z8{P>F(&1T<>l-*Yca8efLNzE8m-7E0FY8MB|W5@!RfC4hTRA{`doAiMv|Jbvrfv|5vZcw{2GmV*c~Kt;g`US9 zi7&0MnmLqHa>a=bQGtaU0xSp^=&N)cUt#!nWHy5vN+a~CjpuD;EnHSTHHeUXN^4ur z(1atExI$lxkspZHViqIWRqTFal)Z|5Skex4sZpRcjKe(m;GId^x;}Pp8cnu6RQJncte&{lq+JbR?m@6(d8Y z3&#(w(myNsmX6CIpC=X(YS>088>~iR?7_BndM)vUP<>G1X$4M6FHU^Vhvn{Q%o{!A zK4foi)xYen2q6nI@tcZV(8jB6s$4ZMYtrNGQY4^3K#%i`+QLu(B=r0+Zv9xPCSmh2bA>SzS?7ecV3(=?^m@A4Tga!jjNvhexD z_>9MMe2Xl3`7p%MDyj4MLxmKf6qP7=pww{8!iWO;tV7AvwM&=S@VI6^bwr5~Xsjh6 zC(7z2t6>Vp4)p4n3Vz-lTF1Z4aY4-uPB=MJv;a4Gv&A{I@QnG0^dKtD!Jubgu_O1szlF#ed4Q+}=6m+`4HVLen z5LAx@VZc36QYx(9FHI-TwX5xV;P$w~Nmg1Sl!>AeA1xy>J^45g*ULqYll~3B+(>=H zl%uLpbiZyH`Wxm|N3<-ZEelg={~2^iCqe2d#%RSM=cbPWwmW{9T^jmJ7ST`fyp7`| z#9tY&-R^ zVbn(a7Sy%-qP;mT4`OJn1{s>s=uWd$XMOqouhGF!|L~N~5ODG|DMK92WH7#QJoG~G z(%4^~LLt2d5bBX*i$yNEzbaq{*+{dF%J`NBm>(g^j)Ox)Cd+7=S@b7y-cl6T`KIdq zaFTPe2o3DXW$AvKuPdU0T|$=kV_@5LyYxWnYaib7c9S{9*fg;TRL7{SurU^+p05%m zcs=-vkuk#xtPud>L7$>%=`+L5AH`kfD(MiDg#!uFgn+LJS!*(${cYd1@gy`E;*7_m8l zt`(|F)~)5EzAly;QpD#`#=uJ9hih)$|GF#M#*y;=-gaxVnu`lH2<2-7N7t$8Df%K> zG$4{s4e!JS&I*A*V^8m8w?4~A_bG$51S6$jm?w_;X)>3ZPpCO%edaZij$4ZMPA^9>Ud*o@ z3r~e@yDG=~hQD^9Zp(ZnsojF;D8^VltWBa(Rhv}O6_^KGr(8FV#LJI`@hUlHx)|5Bs(?pV_t%yJZ}lz1s-sUzg$y$jN4ve~iJ?kOEd$B} zHqm#GHu(gvCWi@K`MfY!&G!jjQCo7cY~FmndbhY8-5AdMLkdGkB{5wRpDeCLr6}(2 zj?#7o$3Yi+e~2pQM_>*ItN8_Z@oFQj2A8GtMi|ZEEMdLlMJ{b?*B$SYR1}oc2T;l) zUs)>q`T6{gpaDcFEmS3=t~HyJo_&unUwEEWX6n;?a??3N2}rFerAFISI7F_|H@pWF z+h=EQHm7c({rH?aqJj`HEeg!76tpF^Fh;dXQeP@QemQ8VQOzZJS=-YP`W1{Lmnh`^ zjuIDVjHU8K_up|+!q);9}w~psr&|s#iADzK;6+7wB?jY-K#%Glmi1~ic=$+Qh)5it$&U#lUnU1iIjYE{4$NF{ zEbLIG^h&c8=ODjyV=sxdCNpOyi*nYcSx6Rx{_}l%SOqxm9xKeW50EcZW?I%Zw68q%Vg3Qk7vrD{3TJ+Zj$Il3e|4GCc@F)!B83=AutN z(bW$c3!=nem6jYmDxii(@5|i^nT}buDU6f<7pM^*8Xe;LI`>##NUtsvaL5Zlrw2)q zL#c&U`z8GpPD}BC6>qjEh-^{vMIM-o)!&72CE4lsETu zprZK8s2vTOVU2@RfwePQ29y2Fra$E(f%MSItcnF7|fAC(B!M7jtG9 zpX&lk?Ky0ay2<3XGNH!UjdLk-U@jqfTF9Jha?Y6mp5&_ZaT3W+d`0l zBb4r>^L5vDrV3@ZI?nkSuu(qr#W}#;b?_ZP&ygC62#@LH^nZ_=o|7DW*jCO`W?qu5 zXrHKH>`k^RqDG1pV-#$2F9=tcsinwr<1DX&+G5N$A}MrLQfQxOp_Cp}eS>xY z35|fW+n5Cjh$Z%PncOmcoBb|XDI6{eFB7US27rtn>=WZlmqxN~ts_*G)os^IcxTzg zq=SrMidg2++$DdkUfFA$yYFSchOr^Ev~y>O5;i0k<7J=a=hdm}wgWbUqN%lHRr){L z!OkGb#ZZ%#_t#K`Bzo;KT|kf*UKFnPp=_P9U==O43N;0}n>RoXU`E%fW+tv#IcqKU zyy@J!c(dg~7weapLeW?#-DG_Zqke3MK_DDm6z<8)8gr;m0Pn|)l3i3)nddD!(!;Y#)JgFFRX^Jb15Y!i2+*X(-d6t!2Ki_jb<#iOrUb6oG31Z93M&xMu8pL=yFNBTfAjG#|ZI z&c@f-a@f@}zRF~dnT_qvp7+N@NJ!0SnW|7q+xE-C`QJkrK7*Mf!7lmp8&ZnsrE@t@_UD z`NNIs2l9GOu_%G+plr5&xEo*JO)He#56JX#CI7=mmW)SV9ri$=@Wu#L|7_XRG#nnn z0W&;ps}l&an=wd5A8FP@=L*z??AL_^cf++^lr?j~j*#KR#noOklNoPtI!>TgZ$1e^LF$H`Nm2)|A{Us|Tup=A^)$^IVB>sMstI$J z|4q543V&DfAglLChhiD#63=Qabk6s2 zcAZ!m=bn#RSMtOwI*+7EQUi?{-1xM>PODC`w_87c_sV`g7FEL)}S&xyZ_SC;~E zqTsaGz9PXOkbST@pYI|iI^oGJWi4T2q0~~}g9z5*P0b6uPqVJOOtWS!Dy>}lm)`#j zbX(_4^kA^>C2VcWj45h4eet5(mA6vambSqnMcs_}Sa=f};@J5jwRgjb%`-6VCTtmM z3mJ`TApm0ODM5}$!W#q#rjWQR#kxH}ks6V^V6_s&gjPQGYpLf$)Dp^*b(Z*((qAoe zdR+rn)}Ja`T_Hi|-z%Sgvqk7$N}@@!$)N8?w6~T;YtrGlag|RVS27Cyc5%_5a*>~# zrl=swu1B3}i+1FO#VmN^q3K+HRTIY=BzhYC>cyX#A#3bGG9Nq;mgjH7A#IOKcy*2i zye>KnH=vIx{%AFV43Bu4sLTr|HDsvV;|~=CN;W0mFJ0agbkps;LhqVGA%E|oWDzR+ zS?ZaNBD;Vkp*g>115<=)b$0Qte2oI*2)iTxk{Yh0_JWvU^%loqy zD_MeGdjtWp2K6xT$}imt>rCECkV{S6dEDWwn!sM3=l6TCtL136e>!PY2XlGP6jo3& zqW`?9W7LW39}WA9Up|7y1F9(vyh;Z(-we(TV07y^nv{d;eri0InP$I=<~eBURn-lV z#Oe9-e`8CC>LE2OM@wyu>fVS_98E%01F=KFfb9;>H(47E#}7=U@(D=YF7UF@97|>>EckABIiq;BkY{D2yaa;-MR{0Pc zfYcEY@k|z&f2i??FbT9sW+)p5Ah(`Gdu^ib z=^DS}>-jS%Y=hM&3AA3;@<=It4f8SOj#uu<3$F)S+cf6L{UPB)J1g+fLyaepQFxVdDD%OeM0|SF zWqFkkj{3sR%IRU1yZVlc1T_OXJBlFVQoJGcn0AKKAcA@N-qfH zJFr&YHla;_QAhdfnU2zRtB~W|{uv=rtVnyTT?nccQ7D&!t1!5x0N#OFZHhIw4Iqmx z4s9M>u4-<9CFh_p<|eA2C}&`e;!! zkpQCs#hb#|_BYGj=oWiPbOkZtl?NOeh16t`cfqN6U!y-Cfl5HyVV_j9|D2#W`ks!c zr5H;1lbvZ3L32+k8u#v9y%4)HCGUlcG}QL>#%_xji2U6y^HjY#hP zf$XB1Lp~aQ(S&SvJC!dy`QRt@#%(sQ8c<*48-(J=$eek`ToT(Oz3Ge{5lOnlBafk! zSrda5n@pFVj&N$Rcl;J=E(mBG8< zo;z_F&x-jOeU3FHgHIyMc0FDVw(bzXU_}D2qFxsjlky4oW)-W#Q_s=Ps^LqB@wau6 zF625SxWg#F1r)Af;8sSgWwGBl3N)yV~zf6 zcdXXtjH$-$v~`kd)~Fz4fC)AhwpE#esqGGWGx8^dKDoj0r|Nn#t>?{r7Zg-WC`qA$ z7WAiVQd_em2xu*4Q>)?T(CQGGTt21!3c0*Q-wUT5<|X<`nJG^Gdu|ed-A1!wU?Pq3 ziat{6aGq`3>t4e!JrSo%wCZ@+WSGytVQ$-Hc(#5jDwl~AGC&=evLJkFk9Q}jomV8) zr6ct;q*y*CiSaYrdskSfdu!HeqJ##NT2MNR;7}tQUplxPQmz z>vyfA#w2R6_M0dH#4aBurYJa#)JaVSFt*(UCe{NtLIKNfT0h+dUX17N_Pll1CN#|u zBJN141n`B7y{ebX5d{Kq$1zSID*!dHG;2%P)3&XGvjh_+px#~;F^nC1EYH_Vo6fMV zGeZDDMX3|RlvCN@MVTK3c#&fV`_D}NrX`p^cDhv_#zqy~i{`RQl&Gq~KgYhiJfdKQ`F^Ip{CxNRjC*HRI0u|SSx)WuS1*zhVt3~# z{F1x10al`yXXNL~5a}<}iZsud`%1Uh??C0a2D#DQ=y+t;sL;)1QP_1;FKJS#lENmk zLOk2u)}w;11Je`0pM~tS#9#rQs%k>>#Gl_EHm@e{uec`%xOgzl8nJ29?DKEZbI0vk zs&bk5j36^yY%BhbkzUBxAf`BjS11J*%ZMZ_qpB(okd~()Jva$AH(18otSr>{Q$q;R zffg6x`b1GO^z1ife4h{x+`FA33}V_F zpVHl>?rxXi>9|yLBN#P7q}-KXTor-F!AMVA5xj!enXishI;}mC7U~vqrP7@GB`seB zj&cYw=vbFbDXdBUTkYT4usqK99G&BnQwmBG;LJU@NRS*>m{s~zX3jPmNAKJ_o9EC@ z_^;P*&f6~RLeTW4Gb#GvRcucZRQ$CT?QGD{92hG&nsxuw`2rjLY=xt>f~6Q_o_OeR zBh9Z(Ui>un(8fJj`-Fa}Jd2qL)J*jlTjZyh@#ds3h* zOZDdDp)=n0ByTsJdld@R*Ta{uRq50-!MBLH4EJ)*#sraz)U1s2f2R>q81;n9EqD3{ z{<4r@%`t6@41u=okLI&1hEFnw!ev?UELFaIF7jTnKUG_C1*%}=9&p2E&>Uv{+lFnD z@Sy>;T*ofpEmC)SdPnvUtdS*)6i%Uz6h0Xl)Ge2N$!V&}UnlL<6dVmx`MPNo{$JBRL3g`@%P6qI7%Nz0n_Kz48bY1T(Z@97beSzIT)F{d6Dm(Y|Q7< z{@KWlMYIbO+ZzH_mB|WMMqBQUS@`oXTiKj`#_z<|h_xt5|CVwvwgrtv19G9?NI~E9 z);)-P3bhKWpC=c7fHxVgIp2=Yt>*a|?hJrtaehP${dcK3D0?4|38KAWjo1x*OpMXj ziXAzDn*1o68iGkQMgD*;hwjo=4%=3D)*_0$Mx<;=X(pwBizxhRs%7ufzM#_5=Vzx8 z#VkJD>fa4t|2igpZQEmHRD@tE;FXG7e62cn>;4s%Ho7^vG;xbyk<~zvB6m}yDDT_d z8hEFT=LKdBDc(vhr9Hi8Th2nUXWx@h@NvauSA7|HhF9ocgCJxwfh23Qy-fwcfoKp2;eS+JEuQ5f|+C(K^AK7w$i7C{&uDr)RgkLJ&@I zJ9PMz(Un$HlZp~cCP{&5NtqG7TRn1UQWw$#9Iuvg-_e{Em{X% zp2&{tSIa3fMM#+fVH&ZhmV;f(bRxk>OG5`(d*3#;X$M~#j2{mgh7(9ly3BIlFJ|Jo zSH-A;*~##M+9Ay5qbM*gO-z?C>59~M0_!-C!s~Cx#S-UCGsjq>Z-R@`JpIFKemSfK zcC}7kcM%7CGSLY5WZnZ|>vPdFz;Z1e>yZ^X?G40MjG}_3xnqs<=CRNaa_*Z(a#*ZZG+d#KYr*?7fP1G& zomrQrUk<^65E&OhIElbN;u>`=xh(SD*r$W83t~pRZxQk(0T4Ocpm`>NF*GjT{FY6p z#F|Bd%0&{?4}rw?IJqeGp-WcQJ*3I9!0cfB%?5;?eHf8F6;=#KEC@iep02q$;rvjU zMSukC^JjJer2#4>nEoMo&1M``JUN1woBJI6tZ=#2_UrvoT*H)nMt-Za$1UcvvZdr& z_1?+@BM-pV)-M1u7ZFYgwHYg?bSWI!;vpqgNk>$Z6DAZxJG%>(a^2;!RCdSxL)!{~ zV&7c|d%NDMsKP2|UMc`CV_8GvU-Xz*>;tGGLjhF;gcl@zf!J+0)aA@eX$)>U+?Hkn z1eMlKmQE@gl5a4hN>n8!qe@XWU1_r0CDvF6nFoG7|Z${K=F;5?Vx1<=XoB>*PK zEq`W>6Z(nDmuW;bzk~$5w`2a_RWt9Ptb>sO`#`R8=~&a-Zic5--_8+zboI#gwsQ{g z?YC!+@@olIWPTT0jLFJJcEEwDxDj9}F~9KDZ?C*X5ob?`9bv7oy}B5ZRPJkKtXZB` zz`Z_c)Q-RgM{u+8wIM}V4fzIkMqpd5 z8qHp(EP3ix9PHwYd6`gHA$bn?yWoxN3u(|)r68)V_FZAv+I)Y>2f2o(6oqrDuhgj@ z^F1DDj=+|sFhR;0ufU;fLl+m9?T-5M5$67&F!{Id5Af&PRkN15=Zrrg)ZP(y$#`S^ zq5iVJEm&95W~156F!J*%@(X_$8^Jvbx?FG$iasalmUp^MX_|Ys>(>q;1(^x{eS^?u zy>I?}R>EQ{HL6D~QFnzGxRT&XF`-do?6)@EI!+T)=Z}r`25tYDuOBXp59%!sh~|aj zqwe#wa)$?7+iaPRidBtk*{1?res(E6{($H}k}__}HU12E_U!Vf>B+zq9Dlk`)CZ#b z=e61xtTQfgZd^^QVcb1?0%e+%NDTXm2}}Z$V5F+lImVX)sS4Zt;NfiM;eiG`sImk{ z$zQnb@fI6;yXl1f>DE1RAV1i#Rz+%%@kc<;KASF;hLlVFbrEuWVouZ-cPz2ylrP0A z87+hVdQO|T7{+;3SbZsGSZCIfb!laKbkWVtfN>zU6Mtp%y2Tp#xXJ!>d+=q8Y)`2g z1ws*$ivWNqv6MLut@ov0ph3qADHeLWym@t{!*Q@7KLN@&l!b=Z>n(Vr@uRMIr7VDE zawprvCskbs3B5e^?<4HV>M;7T!|jzpijP;{zcbIfB{_&GMyAMgHRL|i;G$uSqktBRGhmNHBOnkQ`O3zb9R}OYJ zIO}uLuPE|=ZcNWxb|xa%TlRe|BM{x_AcA3`Skai1F*L64{-HJ=uZZqYsS`D`2C%Mu zA)%#>@sJqg>e~GLbZ$7~DUT*pGm#Q`&sRzxyqRiD9?-}SeJ^KJe- z>{!lS!(AJf0<24s!;S0j*CIZS24`ADHEOy^Z}#ZA2WFaMv5k5i2f;4Sb$4Z42k@7U zrXXRU5V6gLr3V+Vn>rG9M38lZSS0IolwKj4N=lb6Yp#bO+#)#(WFU27e%3ibb?_RJRtO=QJreCWK z=FnQ}QoV)B4n_#1r__$};~ZUj%Otv(Ugf2Z@F+}QOUW$-MEhHl>$0F2%VYn6>pB6Y zP_EJ)@rhj~`LCLAk>HFV1Lo>7yrg|9K}+31BaA&VW2r<9gK$j+`E<$iHY*FGbznkcE2WdCPLV{*tkV5{ zBr|)|rvvY0v`1ISJaQMS8cZ!%s7nr7%JOgR9Dl+DWA{-nnEM$4E@5%)*Lde>vk zag_|Q25}CTWfQbJHPu%Y78HSwFg?I=^^)JV{ z54r+l(s^r_D`o7e%xqn>IjE2D%k$3H{RpErDpb}g$bixKNZxh5YFMpnKPfgDmsOfu zc1j}Y6Yq~bnKqbB*P;l7KmDW=b_qUDo`*oEE>V~>o_USLgO(;;^L6^TxQn?4?z~K& z_IvKnqjCa5M95Q0Wa6#`taDn?B4+PH&A#XD;zQo+h(RdAa^+mB1-r+o3aLZ~2E>4_ zcb;@$0FZ=o_tU_^7@G50A3JeBAYONOVuT=)d}rz6?GI4m$e=hgBO}*}4I6zwKU_nb z)?}wj6i^5t53i>+uWZu#9|*zugh5&;GGnBqg=!?yo2&AxNN@6g_3~=M9&yKF0{j1j zBk~-PpyzJh9s2w$L8=})N0Pl;Ij@b}oSL>}?$nY*EJmMC{J%`CI%CL_ss-6=RXnj? z+;VuoI(K~lBKOo+LKWWpJEyMmYpjGeYR(7yKMCG651(a#O zElzrBNJE9r?ZnstkZb?CS=VQenS{<+c)88u?gG)&Vs7OfZwe^-BS730uQb33gS%`t zUR&09>~`@SghUkSd5vXr=N_NW@l3on-6}gXfOp~;A)zZ0zhQU%!pDwU>hqJ1t70g- zZ|C#7vKk2xoUV9!vO}h>kkD7zJKKkO`&BGMb-;uJ1(cV4!UMX+k`3B$RI zuEtM4M1krK(uj)DSYgfGY(LOZsR6PAS67Ei)8c-a7Xo)HJ;h!gV9h{f6+3*zT2h_0 z;R?5pmgn?E;pP@RDjaM?R6@na$uA?bqPNUlYd!za#$9&^eoc&gVC4nmqb*x6Mw;fM zXQ1EP7Fhu?s`nQgDxgHl)0uMB@1{zXP6ncP{e+L?IBycY$m~01k(tXnc68?YoVlqc zQjt6Z%Vkm8<5#4Kp@xg6_Ys;~Z}&&+{dM#i&XR{P{R@^j+PoPSxzb8a(6&F}Syeq> zDFDd1Am6Y-tActLo-8Vn%Nlbw*>6wKnXEQLtFUT#dd|%;%%1c6+>H4n_!2nDzvb6lz^7$*zmL! zNJxJHnmBkkFZX<~wH)p?)Bp0zNjA=maISE_J;)>0g&vgh-|o>{N3a)YqP$V_#0zs5 zWD=7Dk1Zy<($tR$;Tdm2sPmlmsgCxjY_j^YaCuEGNkJ zDb>N)DJjP%Yr>fO#N$-T_9h`^mGm(eSRUjYMZR{m-ST!=E}obO$ij_1U^TAM;CYNh zhvhd}>8`+S+vdZ@(rZ|xoi^*b^|@`^zEs=66#ng>+FwQfv{9K`WX=+?xWBJ|GD&Q% z+FiGp-u9vMLKYj*A(+tOH9LWHci^RI+KtmzH+8a%p7PnndAj`v8mMQX)KF_gj@<<; z)~C9~<}bo~tBiE%Q+_;*aA=caHLP@2CLWeZLNX%!p~7$9<?ThrIv-^=OfmZ51!Swv8|4lAj-XPlpyXZl}Zs!%9YdKp+B$42YLt0 zvn~T!YNG~Ff-Btvm+-r-H%vM)Fv&%KI;a(JXw36uVzx%$2YP)WKY|*s34HY?Cw-|tW|K){Dl3YM7Uf7tC5-Sqd^T~8IIb@6(&i>5^N=;4eZdj4_#Y!YaCmP)U?PA6k|$w8%5e@j}o(_i28Kftguh31`RZ{)Fiy)9#x>a6!So1=3?#cT_k z_XUGd#)Z*YnR0F2THtrL6^C_wK-p4(rUt4 z8=Pk{rZu9&n6-@M^4g5WkLv;a$VEpiL0Ro%y{iDGmUa!Z3V}UD@<{`c9WWh~Ifp(W zwvu(7isS&)IR^=Cn~mbeY+&@L&%T5eG*|CuGC#iMowQEK$9r>vZV)~fJ|#)DejFQz z{~1`IOL{-4^Z2Ode!}t>8{`^}!ekqQq)s-R=6Razv~5=(w(b(4#0Paf;5rRoiC&P^ z`3`5xBoVCT;m#dXus@AJMjuT6 z*M+hGQHMhZ(of%C4rcLLwDCFP10*Gv#!P3iJl~exk;9@j%W6fQ<8H#e29_1^U6KQN zNDK|!WcY6U9V6iNB1;M`0g5EK&J1OKR8mtDinW%STLI6@j?3O!VxA2U<`KAXc0UMi<8hDfkDWJ9SbsE= znd9^Uw{|`uIw_&l7E6mFn<{4rDtH$#NDonhmgQ;9=!$=F zo(2aC7!YzayUvw4tWHKZq@CfWR=1QdxNhnh+kg>ez)&~}G}1Ca7;b&JWvlC9w~Ya% zo(_^Xns2rsWaZQ2L~1F4JQYLU6S&c-Pi zsz*2M$UO?dN!K`99W$ze9SVv~Bq;xYi-pz1lc063KQGW>&t#||Ql-PR;O6l+R!ou| z46`F4pNq;+K{R_vN7g2hDw17t2+JKwARbtlkgEa45-qeW))c3l@cSnG@FI{qm$*Ez zFy#+M|0O@pen@Q&`XXz%LZxjSz4%~l*b>4iCXjp^qN=jPoX8={_w3e-Qr z;1pUR#!iyV1jIEJV^XPEZuKGZOy-L8<*7T`XUPhIj04WXWjU?8TdU@(70E2sD*SiQ zP=2cugrd?)x0sL(mi=0-mx-$3>XJ4Im5+R@tA%T-;+6BL7%X0Og)*ZKVH?~cIW-BFZt!%in%egWao`BVo=xF!RDB484pD+f6Jg`h<9aVdUkS zXKh1gisd+`c;8pd0+pkj)^yWWyZ^dagYY;8EnBf!B%4zLzJ* zx;<+I%-6l%YuRs?mk%`=_Qf)(1uj040H7^M00OIX+xrz{%o`-m>SxA&&X)>oLyb1K zRaNg9q}^##d@uw#KWEF7I-fkgcHS2M?AO}p9SC}&l)}naVlGvPiDq6yuqmf*#&jqE zo&G5~@;`S#VY6hxzmjM$m>$bGiQ@1CQ~#JBx7U(GqGu7T#Z^#KnRW(ZhJrOLA#vK{ zWnns6Fy+al`k$XldC*I_NomS3XP@urC(=waVfW7EaOe8?WO_Qxo!evXFh8EWc2)go zUj|bP!E3+~zs<=D|K*(TIygiPtAJe*yDz@N zMVR?wP)k;c*B~b>4PX{8&KeF`3{ATaq$IWTgd_u{*r$(L4-ywTPjr?Ugjt1fnvfIF z1C-})D<*W`a_W0OUtXHqvwxylMJ&lh2mz5$;34Cu%V5^CRRl?x9XlXSn`7wS>`|k^ zmv*YBMJi#Kxy$MNm?@GI+khk$nPTj!C!y#9&8Yh+2(eU5ZUKQ#F=-w)c$S3Pe6s$E z`baffnGW=5u@Q;HxJ#dZ@y(a0F1|l^x^7Z#V8!lJA`P;;dDC7T!yRa@^<|16TZvpp zTSOck7owAf#&Dxc)h{-+Ai6bQp8C^^{K13Sx-3mJh|Ni3HwYPs$iTsWL~R(`vQ!QY zTSdaMru`Zcsf`$hoXtu9Ds#iXz<$1pmplH=bI%$nBKa%$HKD7nw-c2XmVACk3e)srbU zEM1>nod^Rwu7an_b!||qx&_1zCEbP(MCEZY!{x$~qtN6I8jh%UlGG!bP^#9WC$Q%K z_{W~b#*1q~W}uNC7f$mnO&oGZ3rc2Cmb%(>J?ha;*5%?RHxy-21mKqasQaa~Am%j%<@3jF5*HM17z*a2f3S+>n-9>=U6bUOcZ4V&Z zoTtn9GL_fo%oLvYsx`CVD`_YlJ&16A!L0B>>uTICR3kiB1AwisFexqo;1~n)O~>1$ zrA)c1b@#Q1+|Ep}p2MCoTC3$??=fQ75Ud34jd^=x3}l{ivG$be88DJ`#voE_r_}%j zAPuU`Py|9du6{~vephIn-ypy|G@eJKAljtG@gqMJ|6AQz>SY&|YF@&$YXe|X54o9D za7;-z15m$PSS&))NL?PX7nKaI zWqLz0e%nk2esy$1{&Je_+4}vTpbu!d*TqK=SAQ_DJ;iS)xhy~Jdth&$q2|58zCaf;%7tEs2mO>fK2Q@gN|(8#scZjgUE`Ac`D}N&Qe&Eop9bsEpV>n6im*CcKJjAOLvk)%ULtZS80e}0$?VH2)`%7Se~&JLPp zKlgc>m1EsFHT9vIDL>w?vKzvJv!gxsBr3DIL0S2s{{vn?p}(Ozz8}*To64!|)F9|e z5r2A>LkG_7c)$4NGXO7+6DS-H=vCOlYA(852E@4?CQWFD&jC3pkhDv+NgnY+kB0y4{)$0Z+yV+M!VaEb^HqO!^w5atSBdB}$*$J3)nv)N{9<+wzy zH#$?k$K6A(zp>|`pFBP~irXo~@i_Ez#V}E13WirQP{`RpHq}Rr+G}DVhIzHTUCaLU zZ&ab1SdBV(ysCzkqhFtWSkBC3gT3IA-XiT5&=>mt=A z9{jNLyFXZCH;fe42)<%P?K4JYPGF|pQFx#-iYgZ&#-%SwCR#&Gp6!Fk#qQ_F)2Gz` z`oDbSJL}UJpB`?#>bE+x)ymMx6O%9h%ZdN?zq>h4Z6r@TjoTTqN0r2L8ZV@>BIha; zT@Zxq@$ceK0SOxKH|iQJCiPE%w+42^Qan`+fgW}LruFyVx1KC`2XQs$`siHAK`X9n z2NG6ExxF$1<%B3e2_I`Q>4zlx-nxqYCGYO&Buuw4*-Qsdm11a=3o?%SYFX-+C9KB6x5zi(@WP9iaRtC# zyWaW3Uq1Rz|L{q@HZs$|crUMnL$fpO;oau?8V2;an46YNLpao+!zD z53Wjum7*OHN>1(G^=aVYu%Wqj-Pq~VCu|oTz)Cxryz%Brx38_<>VHqk<|y(#H~yeM zQz|Xr5qU666;nuAdLiOw0(tATFJ`A$f@!5q&Tw967{Fnr=$BR+GsTW=Ump6BEyGdq zSuF8E*|5{0M0Cd7d|_Iq`XR+)t*4&)mAd_|pxHdli?|?;WGs*UoXM&5owrU&P*np{ zutn673bODthlEq*KtGn9JZ%@L5lGuFE>juHY*sr3E;1^aPcM4Vb=Vk&kA}lSni~4V z?mc_x;JLiOv_5C;U#okqW)m|qEG}-nwKqAgb_!gwd>0|jCGY)#eppx}J)RBYA=_%M z+Pz)v|7^lhV{D2AA=;NR;6W=&$Jui$zB4vC;k^Fm&$052V$_YmhqfhpbXp5?g=-_vtnb4mA|8mMHmL+Fg$$C;i`um5?kN;br8 z)XH594CPMt;R`GZ(eMN;EZ-gT>>Iz>JN3y2D!@~*gH;M>6%&$~i3p?sEiO#UR7;kw zIjUe-bUpTjdi3#IvTPEqF~_c_F+PbZ826#~`syotB(8~#9=+&E$N^YUOY^6zPcLj^ zmlB#D8m+Y4YMIJfX0s|OAYHw8nC0Pjongb{2m=N}ji9iiUj5V2)2CT^th1d8^3I?V zHkwoLR%4^~Z(g`LU@FvoX;oHyQH5G{fOQ^4HDtkExLM&Nj(P9h*3<-1|At*}ltwl2 zinaEp?9(yAi4c=!NVJC?Ys1U`wy)Ks@$2X`q_~LHexEd7&5h@$MNw-JH(~gK_Cx5Q zi=|%r{q3$d*&+0j0hr2OjYF-dU@D=7jP{wroSO@ zWL?Bwp0U4 zJ)-^*(7Y^-4QWk?S`{IgE+ZFZiTlT`2 z8LmzWXby{Q<^D0hm<17Ws+~@ZAEEc&`Kr|zaothoY~&zxDz1kW=dOF|Kl??Mi4Q4n zZ}OX;#UOoNZM`2EVy{RL7^QU%5mCu%?yWZtoITT-o{1~@-WT_QGY&a~$?ZlEq zb(2UC9G2tGHq=mkciQ{_YBC!G(r&(NZ_%_0#|R#Pjx!?2v6mZ`pQO0FNQNjgk$iV)&!#?;^Z z{e#WUVO7jhDfGqQ{*+a-tkDm5pZex&;q1YrIKwp-r39|gT96?1+I<3rVw#kqn&NSD znXXp~VDc52y5qcvgEa$-3OFgc_t~>*>*oEPrf=JI?Ik&nlQ!n6g!+E;@jHL~Af2&+ zI-(m8V{WcH4I(919bmDN0)09iY@A~c6Jq8AOW}!p^E*e!&*YX}L%ShPn_1o_UI?zU}J+UjkTeJ7IbO4pwr|qwfkH6#>EDDHz)~L7;BB zMLqK9hC)rKq6x={u6bj&RSDN%*!AwaXMiih#IrNNmO_*?m;mW&uwuQ=)PpL%Q}C56 zd+&|q-&INhrfTLfq#t^E_FT01FuI8qeeCVG4@{oJ?y8E3D*_QeK(dwCcH6HuUi|GC zY<t2JhFxMSn3)2i>;u1 zl;I7JoMR>Dh>dZY*2d2iZ@;!5?+)-a+LC#}ipxB{oM$o3qwunw$27=a0PCq=-Rf1Q z9KVg1F3+vmUXD3*7;N}p*O9#+(~ESmse;rv#wZd`-BKjkIOLK!G+3>0+2y5WTBQ`g zb{%7T!5mh6l#$O&=NuWE@aM@$W|vSG-pm`a z9McD@sGRs(G;5kzLqoUh+k0ZquFQ9ddy3S3g_Zj?rfBGqzJ&;$*z|Yb=RN%Bjd?Ly zt9Y0_!mAUvCJ5JLaqYENKkBq_`J!eU#ANjd6M%n0czwYs#Cd&*o^&}m%5;5FfPFwS zb)n6}+y(N`_qoQ#-@pFbm+j_Ik&jszrWQmDV7BWNYUY-k-4|aR!ZR|{pN&!vbGjKQ zgG|9y2Uscgo5X|^Btkp9&dB{}Pv_esElWIw2CNiui_C&cyiwVTIHsET?A9VPVtCVF z9QZ=8@whnKo(ii0O>5<&ul{+@>@=;r6nCSS*RF=523ZQCW3UK~>Lcp;7k*S9O8lVc zM2#$G@5Y;+o`zvOd}wy>hq%GPkE+-Wp_ajGC4{|HM=NLvhXp6O!i(9 zUf7VmOLrRJwE9Xf@gA8#@IK7mhjr+H+WPLNwmpU~EOAI?d4bPDJ&ZcC*~dzKA?=xb zaLj<&u#;u1tpL9)ig5+C=JfI8-M7xl-Q7jx!snLj8!rH4%v?wz*e4VMCyp20a;tjs z7xzz29{D6Ql?4FG6-hTM211k(z6dI)}cKS4sO3*k_ z$w+K%hx7EaH{N(l-46w75pM+{0tg(x44pXE+5GM}0Wa}i?AaBx_Kh))V3hPvS>YlO z(`W^swV)sKbD6FO3TP>T2zEuzfFiZaUX9wh>GT zJ(l5E1)^+)%PHjQt{u28Zbh|)V3%>~=Ah+1?4LN|c1mkq`9U4^(b<{GuJ=#V*xJ^I zM(p3;FAT*XLyq20OCAb5$W|t>B6$K#`Y&8~PVc#4gZlkn+#kiKqR!0d=;-A5xk`v9 zuVQrc_HA1}Kk=>f!b}Co-E#3fsAcX_HF_h>Br-e6woKPF1*F}({gLM8=-M{WZ%MeX zgt6iyJ!>3QhHVFj>bJ(RjY2X!ySQV^qT%6u)BS57dki^g8ag;Tv*RQl9(AWpH7&qa+N+;`Z3Ktw%oHClYS@1d1$i zDvF$ZLCz)6ref4p3e`f>z!Z|(E+ff0P!O+Eb=vjUUOCul;~@)fpKv>l02E7FyQTeticvHSKjC>w*t(1s8I(t)TZ%JX z@w?3+LAD^`1^PEu{aV(}7P<&F(U&RI_HC1=j#t|e0SNs@t69Z4qia^lTW5@A+hNu0Mqp~gka`2z#iyfT~*_AGqNula1N#RlKb?d>zClTL>y zFvHqN7{~g;h|yZ6&~qz6^BmvBVJ3&c8L-UEPTY_)x}P3_J5XY@!LQM- zGtXtv)3~uNCX(0#L3jynEL%6e(HM7nc35okkDb^FZyD!@2)%a z<>W_uL^-3`CVC+yp%xs{VNH#6*5^~rl(;-!GZZj=m+CCo5oVu>=4Wol+`r9kl=|`u zwR6`IrHF__$T*yo1nu^$>qL#_w}1GHCt&9-s|Bpdm@wT?I*#s3C162`MJI+XoC51L z+4hn{Hqp3emhh;9(ISHoe}M|*aE+G!I_3w}ks#|Y`Wjd=xhFZ?e)J-K^lr{aTF zwvJ<(yFQxb1|KMfF3A-wz62kIAezbQ7P`PfqLRb~)8r$Ms{0?h)%F^A5XCUnc0^G& ziM%wbzxnFN(~}}k)#56qSLRc;b$GVNHZGdb<&6VM0X=VV|p7nlP|9Exq2l@%@jJbaO@ z`tEoZ?o^g{4bbzmRfH7`Q_>8 z%m2EgF)OVue%kY>S`)<;;bx>H0G3&HnTctsZ!q^8s?t~B&^N_SoVYhsdV2+AYVvZol{LBz2A14FbGr9Vrq7!RHZb`WJPTdU+)*pIW^X zFmR>&5Yst_nW#nDo}>lwqW0`opY1(6JiGzCVirfPmBta<%eFW5yT82O54EPKI4Qyq z2lkw}lO_i`5{K!WtGD{!U9y!feIKoQ<6m%rBJmZ$6f0_0>SEullgt-fz-(~O&aaXr zL^mD40?r7pAdg7Uyk3UV61_al(~CL7J6r3I9!cJMV*<0Pw)WDG#0s5Zd0NT_K)?g` zmZyu!^E>WgeX46qFCikK*itye2vm38qwatB2Ib5+9twUql1K@C+G%=~;P$uQWacD{ zvrLgP!wN;v-9XnvJV1QMtID6Q0SeIZ^puVop_tT4ln@i<7ERE&MgL)QoR|i$y|TZ^ zZio;hNIzk7P^B^PFJ~YA$xT0b9P`3*LmRvNGjb!6B{>iyN9 z7=(Q94nkT-W(za|V)go~pCxe>pH`ig1;YiyJEzeubH%)ID?#*3){8r%C?8iwhwt9L z<*RRw;Nsn$2jeIH7HB15NEYe>j=_v{hos~e2 z`%sh_SnIv|%GuK=6USLMHN~bqiMY7ZL@ijp; zs~jx>Rn+jg;;<(jhC#cT4^?m5v+MZ2PcYurV%KgVj64GD zlT~y7W#xx!kpiMusE_X0L~cQkB!n>9?Z=L)ZCk!{oUtShY$diIm~+K(V`xqG#Lw@! z^Ij1+kVLWO{JtyQ{2G|=RvfT;U25Kox};y*LTN za9D1@fDp~^exfn2Afe3FY^9F9ZqM#-_J5%Q7ygP^JIIU{VwSu@3bn*naX(!~>rDW| zMm9$#R)&Bb(S9YYh!QD&v10YmL-sAV)qOvoot~%tkVQ5U zg;26_crEm}B@*;{yIlrHU)F(Xm(-t;p%P+pE70nA64z&EVsOe2hZ2bw$Bxa+&~WFO z=Z3%|VhA*5Cs-s(ClsXPlb$stpKBq_!;zJ#j)8SyqDZo&VK5VLm@ilogbZb_@eS3b z)~x#D%coDCXho4ouN$<{X~{d z4i6I}U?xkWC~bxz8nbIY{p9R>?=+fCDNGbKi8KIUP^kL^d-<1tuPq7yEmX)u?FPq{5*FN#VoTU7Oa1ZR z_fAg|mvarS;t+?*+@E9kG5h!vKYHN)3Qj=+6#Lly&P43qvmPNgrpyZl(ZCXIr2$I_ zBR-D11OjZpEWOSa_H`JgbJsx-E;sGkIezS$mZ*1%#|0M)7akOux-94yuojxvlAjh_ zT~r&$%#+}A9X89ZO`TKQw;VislI7MI019T=0M$I0LdjxLxz4*u%4>>jga+a~RH|>Y z?xct5RLFiq&gNgOuAY8o?Z{|c@4S zcHY~{kJlOnWM;#KD7#5AYs&ESy%8Yi<2~w|uV!3(tz)rC6Ic%W%dKj?2rJQ(Pu_~p zHAVw*qa@NfeO%oC>t&3Vx@e~18X?rm0#*;Fgjn-G^DT}N-?v(`a5Um5!4$g zp|#t^DV`CWn*W?(*39`b8-Um~DIAN9)+X_|)}A|?z46KsBv}|EBP-KrBMda#d3-k0 z-BR8JSkb#!Sn8ZOOYwm~kVhCRzGxQ?;>jycTJ$Xp44-~xQ=FU&d;}6{mO&OjPAtz} z`_9|@#K2H{l{A}%7)MIZWx94L0M^6+mdd?AV&3327l9NWkpKM04+s`j6g8rAMo~M< zTlmmzG><>@@CIU?u-xl(rcueEoB1BP4)hXw-NMmr`s9F=sZhNJmy_hWY8FOdWLOdwz!TA~X?p^d>mh|{}NV68g zCe&E0V)&!oC%^hq3(B*w-J-A1+DuncN=x*=mXs)_D2~bcQW!(sb7XCcJ}SOzk&MAy ziDH%SV)^B=W5^=!x#w@Z{myz6kNd7fR}_?F6Wgy%jK{D2=^H>T!n!qNlSun|Us7?( zn+J{pxQW5>e}T||rJV!;W^`(~v^s4TUuiu2#_PvWaS-2Cg^S5M*=SGA z5{zew_y}OJw8PAZh!V)`^%@Y66=hU$kAt&zV%d|w;4Z>{0nKc5t$OB}P0F5;;#(L( z%N`IS)uEwvdp|ki9s95*UH9;_yVVE;b%q+`)QKiMP3IwAV+nuBAb5SGqJyO;JRsVKz*mC%y_X0#|v`iTod zfr((2mg_ScBK)T^!gD?N6LtRsH_M9(A}vaz5R?qi%+uQ2Z+%6)Ys7q7xJHHp-{+*7 zWx50fw6%wHL9;W{XsBJ=r)HBVa7_lXthkd|yeB1Q#<@M5^O>Gkp0At&-GOaJcK0l;%zUFW zr$NmjZOE1WVZMIvSsq(b!W)rRQ^(n!Y(^daD%-l{3*TEG`lFVEW;H%(QO=4hmGp(* zJXEd2j!D2lx|2xi@jznptH>UDFV(e>FLcO$pX~iOfPeb}qm?SVmOo2Fi++jFjXx}{ znFF{`Ir@$IVD|yfxw+G+IYC`~Xvl4b$`D;XAcKeD?Ut`A((0FXX>B0rCxL97G{Ty} zi}NO%lyP3Q?X^d~IkoRIwc$40$%}od4swB;<&J|bsU(BF{r6J%Zl7SSC$;Kz4B^k^ zUJA@I5SwjH0DMq{T#=jP$9`rk64QX!0Y*>!+};1hZQI{Jo#i#2N{h5s3G>*`)8U;v zzJ2V8P3vz8<9sGS)3!?=^UCskB^01dbQdyt&@OCYYcECw;}scD*6U#Wghw_gFN_Sy zbk6TROMlb%FZPsXXte}0v#1$|yyTUC|FYQ}LIj_sXgd=fwU%U)m1=y;?UlzKw{Rn) zQy`c{d8K2yybl*3TIkLdDkc}reZqMScv>1YFRQY&v9xcG!!ip!RE>r@9kpY}!O00$ zNO(r9q&S-ao8~i9-Dji;x(8SK$7Pj9GV1jqv+yLx3<-dNaK(0rCN)bbvG7a z=$go`tQb^rFhLcB4JXt9+_xBKEcPts8%DaZm@|7d7{j;2AVhlg-dpMTSzd)S9cRZ5 z@#{LBCfBp#+_TR;gnlSKuuT8b=RWB2jml694pOhbnF{JlgL~>#W~FK%qgrIo-JuFN z@D(Qw;#zEKLVd8~8;pNptni&5C$lgXePCOe5*a`QV07z>fE>n0O2wAl*N2a9eeW2Y z5C&O9Hq~1#lpC;N@&bT_lhOwt*yuxK&h;)7@fXaRgRMoEo{1bmDef8Y%C_Mq_2Tay zYIja~p5?i9oMFN0V`CU~ifx-xYbt-UB&1XO((vv3%tlful&hsk%v|TbUfww>fEH-vUTU=bQ6DV$|I8a zEWSNZWteFkd*T;&ZhAmEo(&h)O}amKKhJ;Jya8@5_Z}F~zl^<=O-xa`{b^?NBEfz} z9ot@~PN=DIx8md0$BwfmjFwoeu#wxJ6IQTjeZczv*?Z4tDXwhMGczk)x#RF20TKuy z2Ld@jLI$sO0Y`A^a0=6{O_C?8Ds$)FYp=cb+RK7@T*HA|MQ`Mz4~{(k_$mz0 z(+&o$XbD3LZDQVZS+^+C5j1`p6?ALWIqRUhXSOFEBrlUx32kb&ja_@(k3Js${&+oT z;vU4@3q1$JQ9nsbzx|J6|NZ~C4z&bU&pbxC_N+x*Kb>a@0f{AvtuS!ZBg+|ih3PQ1 z!h0e2)*uGf67QNY2vyY_7OYK#BM8l-_%2@dcVHQuLn-BfTnEnWC>FfTCf97m7HDf*;A2i zE-sj(QHp^(X|FIr>h8S<1y{&tm;UGsh9b5w(=doVcceZQ|L)%p{SW`sePE>LS?wSx zkyH%4>@9+(y|w7yv`xHb!Fun$!8Ln3E=BA8a!&2L-46|#U}fqGnco6WHiEzoA5CGlRW=E?)kO0l+$~}HNcw?qK@RbO z!ba4Axs8R$en`hdmZX9)_W5V0KK^L=u4gN(V8vqj3et2fZb)nCkwyr9))#%C1=K2N zHoYQIxRcaG6;NJ(ukpZ^B?mvQq0A&^8x4cRhix+nM*sOAj@gBA!z6K&e(z7`n}Yxz z!j=enFvnBE0d|1OB}{_eA+2ISAzj%V0e2x1BE!OG3^6E6?`+P3XR|M+Yn2+c*!4zh zQ@F&Nr6NHe-J*lU1fHLOOV;G&R;N>h!V)bx!S+RVts37rGsigVk2Ag${JhSuGd^-> zeK}}?#c;u3@lS?Z$d-&Vx(uWt5CDj98HE)2lDZrUU;)_qyto*r^uLHFGTz=8b*9sflM5c zu(w|k$dKq&xQNEk$7C@}>n$2dVTtz_i z{fTp*eiH0?-ouj%r3_9IaDmw9KUbSXxQ6Gmq>Uw{#K_2UqP2+w`3yx(tr@=m>8l@w0NOuDfTBvSB?L>j zl}-vCLY0ItvFC!NG9`xy_D#Z-^OGc$qv!#j&G|>)f9(%x9L3erNGlA+$7_VV!h;PS ziX{#A3}VhiqzCr>KmP8s|7HEdox~Lt%N5ixn_OA*uE2;cwYv7Dchfh8zx%tt8)SQB zJXx?zP(cr^tWp$<*gg0|dESzbKmMv<4td@PKA)cJ3#%op*kB43E6!dKEEOvqUs1Z%KIOdDSE_!!Y%WMMPa{iwZZU)lbuBrqWMGzYqWq zQPCoIFOkeWBu++*uUI>5FdU}I_pBB;y|PJUh}3E-TLl3=68OO!_%^`flXwLYDtYJQ zR;y`Se$g97ksgNO$S`rkYg1FTg$q`$T~9-xq}W){DzfRw#Nh(%wqWBGILJ?W`hl4J z;pglz`PSSyaDv6|4|O}?!vs_UD=5AEb#1E=m}3j9qld?*CJQ7Jg$R(zXz&1)1{fV- zoIqFM{Pn&pVMB`dgWVt(GcL&mW2#Yq_>l#8{zY-ab4Y85Ng>bT93(i)!*Xa$$Ph&1 zgmiMYgU5~8L(ok!+sg{C(x6Elo;P~%v%_|w5|Z8toh1$I5S2|A-p-Rhoo^BXn2-2S z2TZP_xa}7mJRD%LNhz)ZF|rer&6p%MRjd{l;Inup<7GU{GY;>F9fX&|rtSu3z4~EN zBLXyG^a9s&ZKF7GxrX5)j$IZxh0}zTC6_N>UbAkjJcJ}m0`uk6Q?`hT>%W#@O`}>L z_&HlVzIFHA0)mAY0D`3`zRWh6kU*H&PpKJHP|UhxUw(FqfbQI(*NQ;`6pACHK}lF? z2&u+2{jwpcY)$zkCdHOvxt??4hi~t__ui#TaXd~jix&n+_76xmWO$T;yWoc|s(V~= z4?n9r@}I8%S3jWbf3jy4ad%u}$rAVYiHWnPFWL42qK1$KTICr6diq8>!o^SLxkG?K zPhziN`5-8Pa3$GoP%oGG2!`TE)nN@)3y35#RfljeNV_qGnB5t4=UJ)B;=vo9#UeE! zdJI8EJ&)9x^)L*I?uhS}lQ_ZwHj3CMdYBcTKYy`2R9wHohZ%<<$0e4XD@X{n60HC> zGSdYN*G1z^?@#$JchBEJ%dmh%4}fHL0#xuJZ3gv{Uv5UNN4FIZe!Te8k1ku*kWDC9 z;W7qUnBmfl?kHw0WJzO`;kpTrR()G4DVI>yIRsaRAR)p?Q+AI^ zc0eUPy_;*RMX)Q#Mpd$3&S)NF-Zp;mt4EF<`J<5pgmp+#iQp{noz@s+jnA8*8}rk7 z_7Gq#O%bU+kXEd>F>MxdjEeG+$!)U*pY_xa^TUw?7vy|*vCxOWj|oX$`o z>7YlHHC7?28h*MY*sRO7D3bs3mk7Mmnw&u`9)v)GMDked3+B z&MaK8Y!MPS&`@I%vut`b)os%a=&Knw?9^?$Vc-NyFGre4sfnn%idm*ziIO(K3E0=K zSZ(cia@BAC?MtUH1cy79c|ThK=EEkUE8+D7AH`agG+dC2lqe3ZR;yU@+Ce}_^-^)! zyYGCl^^rXzW5U_sW>^p&oKSjbpL<@J<8;qgv$}*nDIElqNKyuf`=QzoLbDL5R4Q% zzKf=&^Yk-I)~;J9`Rirg4zehUU|<<2OcveO92Vh;+4&1!O(AKHu>MKOEi5{JrhVYO zvte5n-U4yaluI-BT+>9F&6n4Hf6a|Ee8IEWf)emgW`iQ`sIgfnQ{KB~wXy4&`~7lT zgcOO5B#oPXI_3oepk=*&d8q2{*na=$sM=d~8s%z?hZs~tA408q4n5!dIICN!igLp< zcO_vOw~YuEPgbxX2y0Hsc;qqj;YT;KzLKodF#QfQ#%Q{}!`AhK_dh;&mR*5FQU-HW z_(_e5oH_o|%HRo>5C}cK-GNt|L(#Umu1%gk49d-AOO2ho?zODTrqC?xj5rjyH6O%T zKK6c@*EtU(BFL{t8dEIVL>^{n$I#H|!~`Md7rgcMq0?s#l5PNF&?1VekbOb3#pFQ=0FyOV^jcP@t<+VDDHF>^Xs!l`ZUID=Z%`w^iDeb$u;Jrh z)uH>Xx~xE?*jS*%(S;I#iV<2aUgF%pY2jnrh1E||jGhwW`!^dCgiF+ixFXvy;3R6} zEUTJ`tG$r^(SmjT8P0+&NH%|M(XAn35(H}MfpNBAKYA+3I#JxCSW zYTV^aQSFfnUWe5cj>uFC(_g^g%CT{bs7_4QCK{KY+_gj)8#t{fpaQYboPgboq$4`JD!Ed2W55fnyI>al}$yfldF z*o)XsvC&9ezsPFbvD&P?68l7~9I+`Rv;$}1%>H@~AP4vuRMlmX46+PxkOUJ|Y)Yh% zLV)ikv?&e~+i8xBp84DVvXw1ANa)zGDR8z3D)E?7F6kn!(sP|^1rG&<`#So%UDSvy zMYJ8NND&<%Y02?h8y+(2wfNg_jr_`!q9eTdLi zZc$u|j^A@?;rJ))ulQiPaLuph+9A^3kzk zJ2?O3u1zFy0K$+o#sYr}ZdQsmSQX8{0#A(|w*Y{=OJ1r)4hlVGVYbXRr0eNjtCuc! ze4ntq&|D~*6UQVBAD*0ae*el*Wbu2et7;*`F^vZw9)9qVRfaXmC}Giu1QD%Coba1aH<6K})YEnknWkpY?N5RqDUYALVtyCyc|uG92_D zdwfZ;5;fZwN<~N6Ep`aCoFs&K;3+k!i1e0XbEpOLdha94b>6nWlD~k0E^B}=Ixww3 z5lbj`O@U|yk!q)yV>)SiY3=&qC!So*{tMetP!6({ZK=4rO+_uCR}C4oNp`HumK(cv zJ`#rGtmv)wxX>XHP#|M3eth8QvBTtZ5%gob+9ARhC?Qvh3@gefKi%vyf17~P^V)tV zSkI$TQZZh?ty@ zLOBLsSh8@>Wl|7)A}xqXrHVKMmU3v^ z(94NL0s)>x7K8MY@*5$8T`1ue){0L5{BIr|9g%>dXk!K5+zQ>A=AAXjuE5&?Ls7PG zdIy&;U0{PWKrHV~W5<)F<*Q0bXB?g@3R}4Ez%>%uAr6OM`Tf`2)JFPBG)k3=V!El~ z6e%Gy1!M2>aw`WzgDQKYPN2prq1oSJNnwm-tXXe7ylq92)}y$IsFEyfP%A`6EDlH{ z6^BI)ASISl5)f$6B}EWxIZ0Uc3aj6E<;%KrTO9byUBq5K~AnYClOAEpjco587 zJ^cm^u-jZeMp9xY#gNFJNDxNGMf_4BkPOS%At}2vI>@hE39$|tzLS0-O^>n zAh<{ph9qt|1@bU!mA_g9Gi2(b)Zl=_2$RV&vaoV3RD+;M0JS$>yCi!D!$Xfe(~E)U zoIxtINe;0K6YC0@K9*!6v~BT@=7o!v8PC1=U=*JxW<#}FhK#WqL(_5QkjBUq735Y8 zyCv|M2?V$MyWWmZ4+lne45sT8(uk?v_Wk(hzuL<5X4`}|&`}#lgoAnr5W3&4UMR0X z2vsf|khwu)kg%()z6Hc4#=~1zh0%pdxzKFZi88_lpxyH9!qV6N_zCGX(Huz3%#7Ie zLgRMzX+Gb3+Xe<2pqK~%ikM1vH_$CPjBsoL0iiYzkD%hIMM;fWn@E=EF16C@29p!^ zCL5Od1W9jQq$U)3EdsYOQ1H$l6$*NmnO+G)m&DwPT!h+Q%e6v$4ybMyKQ1ZE%vwqosN5XEFcmQ2Y;DRkm?6qrGgSScLP&0tE%CK2HPvQr^M zw(qf^+#|kiu7qyjH>LjH~Y3cXJr`~(74#OxJcPO&*sUqS6dI&UbSHH4`-29*0 zhRrNuqO)h+vpUKVo!KdTyYHIq7N(N^@>M9G&k|}8`6yekJk6~f9KTrfF#8bp695W2X5t$zx97B6$$tp;^bddiZz0dGGQ?+2mr{B7MlVBV1E0wOwVreH*(u$5-b=JIBXw z<}uSH_LFjgS9({VnL1d&kk!aDypr*=zuDrK8{`&k2apGuczAIM{>@+*c{9zp{!J4W2G__Nfu2|JQ6!BiTTT8v>cHZVt7UD`fSx* ze7jI9b;yJlY!Qb+7z^STNt)5N?bV*#wRUt7g7(yAn*~3^ZVTQjp9-L5wnE$vD6kMJ zaR4pOxgkLaWLUy>nT4=mhcxx)zgWL?S=ltO#Un6Ikfbn=#Ge_iO%(p=?>{9%DU!U9 z6q|xmFpUWD#1;|<)trRgj=s&uJM&SRkGkfi4zP;I>MRlWZ8RQzY-QRRuaw{;G$CM4 zYAFMwc}wPDhj>XPNCu`AQKuyUzM)E_+3V)N{uTvGi|H zr5A>pU_rBlRiTu8G|uNY+&8>)_fQZSWs<1fK3Ua`0HCRrMtivziW;;3ATXLF&@oVM z?%lgRPR7fqe>$Wo!ETR4iY_^*zB|$U<|`R_1iu6sXt$Inw`H^&4aFJU=*@Tb@3#e; zyI9q|=mII@=Uqp1IxoI>|L{l}B~y~gR(68f_(80?NB7AAT_h=1S1fz@J(IxBaNPz6m4=o7HDC=#dsx@SG+tijx(=Q7o#NsUFmT{cEFE0()iLulZF`w&q(xv8RjETEU)r{>4qhqlSm{ z4;iWKn`GefqT$wi&VRX8e}z%*j=bP`hVyVrN+}MqgAPQlt;faY} zP_JEHxe7)8gZ0KK&utT@SaGu&nRLyJB?FQV@9f{!&z;zgRaSbP(PfZyZ+%X|17=M7$RJiGHMefVMjz|N^}u!P`$vUK=%I74a;K%Yc)Z1uV7ZspNT(uztP4c z+H$e(K^zJ>Q=X@NwM0XPM-+*X`KC!81PBI!?Mx5Bl8VVh=7(X^FB@YEjlDm6C`m7x z1syk)s;C6`U^ps_gUD`#edGJTrXs`|1OqV?5m!_mNXF^Jg2jcGe!d)<3m>0#36K?9Su3Q=j#?oBN{h^W8~X}gWp6|7PcM#dvsjjfNZij#A;(}wj% z_foJ*u00yH%kRB=^z%tH>@W&binj;)C}@!-vjb8~XwEPXst*Lo#b%X+1c(FJMmUH$c{{8YA(I!p`TD2d zejVv{i>eOU+uZ4=!b%>`YG7_4JLj!RC9265cr5)CiiWVi5g6NcIQMQ^bb0)YNCR(lwD!KtV$Kl>eKIY1-okUIqxasu$l~8< zBdIWzJs(2Qenl38>C8>ks;ApcR4}VYL7iC_Om)$Db)2wGs4Sz_Ft%e5A_GNQy`Y3zGP zm^WyeROxT{jI9?O76+`B{#g;Tq~JOPa%;G5%dZ%__iPzm;HMqs{G3s94I-JP(>jX$ zJ%8zc>9wNjf*#O%MZr0n@jdGoJ@$mp7LX_mgzfjdO4KH|hlWSCAmjv2f4mk{{h;x+ zPtWojwFbj#vrgtusBy=PCc*FrDrL(amzddhh@Hl&)yB@9588zYp9ivt6I&9Y3VC5W zarLu5A3yXhvvwD$A;g z3v0F!@2yi~k|tig=bm9vDA4~NK20K0*po~LiyeaD$i|OkP*8%zbQUaFbNJBZqen?( z!Xj284B@m$MBdzONl!DTztnA3t0Xh(ilQfs{z=PXbXAJM6nqtJC1D#t>5car+jp!_ z;t6(t$~Q>zeJDOnvl#jcb zqI=x1X4D_dx5Oo>6^dM$d1QM5Rt)f`9J;hM}+qSZ%jY6oIvivwjs+Ch1r7` zPK(P&HZQQFg64uciEc7+n&8(mYb;m+4zYFSOGFhM2*}8Rs1A`#IWb26rrk-&h=E~I zS{*W;-Z?fl7W(+`kg$O2WsB3qo}0ZRX8L_}_0GJN@#-E~3$Gn(^@AE&SY2`CN|b$- z0J-Mamo`5zyk}2=G!vkc?}1r>raDh4S*yc(5JMmD}_}l;Tbex{G+$1d| zjcD8~nnA}YI4ci)&^Y!j2viKiwo|~YACpFGw6eLvLM!Mh1u{spvk&^Kd_v`)?u@^8 zCPD+ztf1dPsKqqi@x=0SwOOeqK{zEga0KEfkU|b`1zh#Wd`q=7c@xXStY+3^S(eFa z5~dhll^gZqTW?*W#qBVOMCHewdFyqHdW;gYAFf-E#4BQ75NodoAcnTHZ_Y`&p!MaOR4hZ(U{PrIud5k>8h zk t@EtFVnnOd#LND)rb^~+(Gd2j8KwIFiVLfvtS66z2&(r9thf;sm62}`ndcB`# z>~;46ex*ZVO%{Zm4IA8zo0kRAW%6g5nDmno*1;PWVcn8{{)g{TDZ1_go+O}vS~+vV zbS0v8tM0kz?OM;*x9{@$K)G%0(rc<(TA8r|*R|^iuCg)dU`j*cwxC!nH=7NNYg7|u z@Ula2v3vBkpF7pj#}=UHahdu0alJ>ApWuCPE(+S|pFjTkhwn+Nfo%_ga%i~XLdt@E7LV87X4b|{MPO3HgCxZlxS=U>UJPE zW3{t`)$~+{YUo2f$SNYyb7gxVV>9p~ILZ3NZui+|wqoDlc<2hr18X44a9nt_&f!BR z-hOieu~#TUShR+Kf~RO)_YgQJdBVV(d-E?)=zsIo%x4YYg0K>K$v(ocKC@@>lH~+& zm_mF5lZE%MB#)D#akqPMO{btB-9tSv`;*4H47D?cMZUv^hfHN8k!N?-teJ1Ud8AD+ zdNy~mx!?xXB(bZa{jBN;#W_%bY*)Q&a*~xH1 zXqCp9KEXcy5+3Xxx(!*~YET&x#$O1i#<=O{26F`;?GfTJG49=HY=3-xoL(sUZ1l*T z!}}!GNVz(;@3pT_odjnHtc(zYW(rxKKBgPSPj`CBV136llVwS-OjAP>#9V8zOV%G;SopnBv|Y#@_)bcb=@ z=HX^=j(0&u3xZ28D&C_!o0^t9wJ)#ZxlOmx#TbX?nM31 zAIaBILXK#$l~LP6d4baNh^A2^w9wMI0v@-0R!vsTe4>>gexXw=HgiFFi0c%Cgp07XPep z0=KMWa`)b)CI9KVf1y=ZEJzvcqGr_AV(yYZ%@6ZSCG(1}{)?MrCm;h*LA;%x-nnr7 zhG9bJL{SZ_vrNyihuUptV#0d;jj!u9Q46Z1N}OpkjnpuKW9_Y1zT}H5zU%${_Fdm~uy>MEIXYPkR&pGZVP{F} z(y!~*dNV)5yvI?gQ~>3MhvnGw{KK|AH8SjsU%KeJr7%FQSMj{jV@D>B9MUEjV4*g7 zS1`Hy?fOdq)!W&tZ@OKdyU@Q~4Y>Nf40MiD3JC-c5dDxIM)pDkA7$_J_|B2hh3E>$ z;c$^zz)gtx5Qf&SVsp9&z+L1eQ2jGcm+PT-65~C5ajn(`qbV zZ9KGXQKxXxvRl>4a6~XD0D9LKMy)$=dMvQ{me?4=x>Bq(idsb9XHd|F*mmp`$M^nX zL#fO?1TlbcFhBWCsZE6mg4YEsbAi9s2~r#4A>mf^A$ClJ{fR@?D+TXnGt`ONRQ%HE z0YI)qnf^QztU+TQ`_Hn}bkr#rD_84k;u8)UT{#K0;f)D&xXp#TY$6p#V{iv{O z@`-#fSlUEORv6FieK1VU1knVmZVtdcYQGC^C6JFq)KywN(`*#%)bqgx-25%m*Top^6E~6+`MhGeJ3+8khFIyq#pu?XXR@Mz)IVbXYc& z@}WB|b22mcE~-J#tC2Zx*dlX{M1uLozGMIK-`@Z31Z~8OKsH>w2eQQ(UWShluerbZ ziYM852*J`65Z(>WK25}_`{|ua)~p+Dx6WHun>-1`BURx>#x7k-_P;H;>S$+29KTrS zkcZ}i7^Tien85*QzXO%bbDhIiKyAK12+u&FZE*4km2v2miRlsoUQ*zq7_$imbpM0K z)*Z{EWP-Hgipe6IfRcJtyA!%f9Rw{d0+y&`}4*!xjX;!V6zDXuP_fuCV1-~b1B9CMlK9PS3 z*81`z3zo(~d{#+o!SJ=0UiQ<9tW$`f{_h}1%qc8K4^L3nDO5Jqo+?BZ@!6$TSD?fP4u1% zngz9@Pt6P$8Wnd<^^@0I^U639oM%iRTb)*WONnHQp2pnZ~I<3j*!8Z z_rLw=nNwolP%f8KgG8qw2u7terrQi2zm~9ef4$)a1Ui&JtfEbqUb64>oeK6f9v-l^ z@x;^1R^K!9mr1bbF7{_4*aQ_Af`piMkg$gy+4#^yf*TAHi3pYG3eEzBjN+$&JWHU^ zEQ;Dvs;hoZYQ%+9aZC>+bt2qv2c0jzj6Xm4UC~>f#v{#!zweFDE?ko8C8xZ4A#K*X z!hT+Qy?a@q;q9bnvdd$Wkw^>%0gJI@iLq<D{-_|b6j7j)l*)G(965CIgZIxd zE0lV$>o~!S=$9^vGW2#a|KaxjRn5A+O}OUms!dmt7|b>03)%b=#R#&+sEm$OP$KW% zWiMGw1j&Hx?a(U*49rmS0)kg6BaLRATA zg+(-AjBnU3No;U-mE~qKp$J=ksts2fU+0^^sA|;3w*Dx%MHA@sJ zj~REwnoE~BFFZd6^lb;7omi#$eu?}cFgQZlvZ8vehEI)0{&gRJv#RtW$XO|0%pmfb z4f8ku{z0X@;{2t0(s7HWm0x{v;mgm@*9nmzM6{<7atXk@FjpwlM;oSZrD6iHA#|sY zK!XWFC{i#Z3Ijm#$fL%JmA(X(vj~zj1?7^Exn?nrDx`@f>JjR~W+M@51~`<2AvYUT zO8M#c+$mRc9koHVUtr!nfLR7MF;ie|R7!dYu_76Ik!KY>WAP$_t1NNMdddhPNK8@? zlpxm1VG8LIs6ihEA*_@f-b~Sap3kle+$}seT#N+&R5CIu%tFg&7FXOLs>2jMJ?}MbH-VQG#h~wpv92fU5TJw21TAe#&7IBEsZE zLjj*_BWo@c3+zvf|L#{ymM(T&k0@P@II0yrq{3*C0;aUQIxWHpvgxL|mKmW-)BDWX z0p^z61t?R;5|S#V({b2#G1oh0Ou}QfR|GZ}A9w=M7MhPfGO~J=LA*LgtQ?4DCyyYY zk+@M3TtrXbNNy=2#4%q!K*m+ zrk!+Fyz++=jfO!=TsjdX0sOD5EpR~7cJP9n9P(2}m-}fI)4|1}oks*%tXIM{bu8#O zpdcRfumAJC!(+8hdXAW*j^zN4dK;cw?{FQ2{=-y6v}N(qj(nD2O9{< zxT=qReWV@@6Jil!8)tb&i5&n=6cP#AShR>J4(sCN(%48*>;h3tnWQ``l}l^> zwC@{om^a(9Ad6qF9BePegMu_rj%{M-cH>6e+B*~;+}c;p^V>{gWXyPe@4b#!2aU-( zPSi3P6<8j|&uSPZ@*|L*<&~`y%i=)iB%z21li>p84qtW?zy)Tg;QWKoPgRdutkE>;on1QSkhJpV)febMFuC{B!g~K zZ~JC*ttTP;HNyydIEBj|V@UXNxMzZ1k;t|koqKZU#-+;@KR%l(=Y9{g30Brd8OK_P zl@ok5bDoqm2i`q%?o1Q5OH_d=dN<%Lg$>t-?|*&r1oo@KCq{9bn7ZN(3PNHXh8P2E zfVCw`m&Eg!1A)*KS#?QhpDwIn47a3%LmRmLu@%c!j5ONk41-kR5t1y7Uit5R)(?RZznMIOdtp^4yeEqf0C&y(E%a%42Ntaw*<*^}6 z8$hAYmTNr!vwI3|!$<=dP}sT-5?D)_SqQ4XeMTk>-%qYOGlXdJ0|)nthPf6|7a{No=Er zD=Uv3n*8_xQO21{1Ra$5q^!vX-4X>z-exA79xxu;vDWrTT?d^64h01BirGZN$oylq z*P>`{z6BuacZ6whhNXy%Ofz5(GOTXFVP0WBY}t*Mez9$6Oyo60qwTl$e(xtD0(ew! z)m65SwB3rMmht9mM;nvnf-x#4a1>ExIJjL9*P~#TJbTe+AD#W;Qv*v3ryz#Ja9&Dd zbJfd13E)4sB6ua3C9slFXGe;gE!+~DJc#7B9mYeCt~AX_mQn~7k`vN}#er{i#{T7> zK0?3T#y3MeaRn_suOxgTNh=0EUsS96Ic2EO&m(u%y-6Ap)|##P(xnE78%5^|7U^qX zvH-neyfev{`Z)Nug9>dDz>?1p8~0A3)g~|W(l_7u{N(pg3zjlRGE@jYi6~!CYoNu9 zY!@C12g9XHmpM@|#mha%7yX*ZeFZx+axmDP^38Nop{QsE;Xd>=`}(-mYL!cv;9YoR z+nR?S5-E~Zket|gr*7tr*L#-q$&Chz9Sk+icG{^_s_(s*ocylQNh`Kn6*FTIpmG+f z!Sp9y!qgOFzTov&j}k5o6p&CGqNbULvG1)yHgLcv-^5{E4WGo@d@QukSh>cFFFj;A z^)Q$$SH#8w1(j)4ER!e>Q=fd2z<5E3fpb9&qy!);v*ss))#rFz|8|grl|(30QI?UXc5N`tao^Vr47Tx1NaQtI+&*~F z3nv~*)Dr`>H%+s#7_8TVN_E+R4-SuC5?qRfVu9PD+7qlDaAA3^dc>YbRW!5+69+eH zH6|35XRc_`6_W(`C^DLHqXTZ!T&h>BlZ3>;UlOTxS{=5V&C^>RUX1ZDC5c*Cib`~s zfff@Zm2hONLQ>yOr%blW-~Z;&nbYl#>BYoPC$u^-e=xWZn{uH^I298Nv{b6Jn|vC3 z>&hKQ!E#oH*_I zNZyOJT77tQQ5bl~j*P#%|GP`d##MX2(nz)HgB3mW@21;z^A*eobZ)*CbFTq=XFCjH zoOSTSus!3+oz;6cjzF`pc0rs}uqw9Ufyc#?+YUp~91gaKK@+^R+7Z~$Ch;pR&_aUV zRR8T?zaWG|!7Rf8VwYd5H3mwsm?A9Nu32if$fOdCEiiudpYDr|(|$?pEyW5vWvNGp zjo&yEEwOAj5^vW#3nfB!D2S&eB6R9nWyh=}A+hR_!<=8f()z`(SE^qbRGKX-#DLqM zx<|L#QX zz5U~~5b0(kXjQ6&BI({a`}+I36AJBAi$gJrchgwC7Rl@4dgD}q*anbN%NOA*x-0@6 zBpqPI$G&PG{LSLwfWshQgq^|e3QAEfRq-S>3m0E}`2ixMF{FIN$s9`I*jO73xZnm9 zhovIH5slyf=G6E_$MeTQI+7HmYEQ45-UM)Z_{RX&Dt`lOBidS1|SWrR;!S& zX1)CSt4GLSs5FN1nCKD-NiIy_9aQdqf`vII${|?_;BI7$?%Ql^et1C`Pm(q=?KFt+ zC;sSh#~~*FEdo9}Ea+n<@<%+xW&vS0YHt!QP2i7=vPfCwKr;r73z%7es6^bsTy$uG zvFo`t%U1a$R$=jHswXLa<7`)$K`u+PZq=Zh)K~qML$hF=XkI}g%623ZOtUq8~VjN$w-o_;b+<T%?-S0kiusvsgSsp@C||u zBAtw0IB&lG%6USbz!kDXy{QFtb{#>M!W{5jvfdjY=zSZF-Ot`1cP=}Hm_U?bdKom> z4)$owPyKjFqZTx2@Ys4{TZ5Xr8WCB#kC8w82ON z3|a7}eP3N>K`jW)vR%Z58hf)U?}R_9CwD?a=Gq3ObYmP?J!EWPS*B`JtJWI3pWoWz61Qo<&FQ;(#K&ypv0o!? zEvjDE$M*L86Fb*!eh`1-Kp9@)5--t5fi*(A0T(NdfS2*rX93m#t~-LMN~6_6tPVe- z{2X-)IAh2pAh!#CLeL{}MA8ck$K1;03lO`nAbHiYkH!$vU>ZKzx0Dg=O*S7UEhkt~ zlQe@v9IrW)1UF5B;UVLNy`zplUar_vQ&S$+4CoO}r&uJ4!}y0ENc=y|WZe=GN`GC} z@a^xJJL+zRnL$FVj*J5(4gDFe4ndoq+Uc%bYqi^_@t?pkmHiHTauxS`(9KsgOE0!y z4~KY4yX2vOX0=4lKJxGXaztV@i7#$1dJUjq5JaWt2?GMmb;^F381rL`j6E+rU=$`A zEh10Gj$#amYK?@9J=ORtQAUMBpNxXZ{LRkvTr0lst)R1@$ z;v%DWWV5Syu6OyaedMt5;rmC^sM2hN$fqDi@K9{|)gDU0Pqs*?Yzk3jW?{OsLX^-_yBxIB z;p(zKA2|8>CvZKW1sqL|X9H*oRca=V*+Rjg1!E!R#iQHp`yX6l*-f?sB67Fbof5=Z z*nz>cV(zs{>%?6I;}u~83r@J>X~b|SE*NO`ESM9B?Uk67!zm6HmclTj=Ovu%$rClF zFox)g@Z2K37V~#PU(g;V6qB5DHnUhewR{i|m=*#!5>t?I7q|wT zO72p-=vUZW<3d0jYFr$;70m8JH{)8E>!+t1DdQt}WSl%{eEu1#!Nu5u!&^-?rjRrE zUI{A!K&Nx%_P!b-OAcTa_5e-`gSZar!X&9&IG=oV@O+~V1#vCZgY3faHq7y$w+40H zZAtecza<+hO(L(E&Vq`t_TXUl6C6Gn?8~K?7|P&4+PUcaq%SAolP- zC-^tNdelL8(}_si-EL15OY~PQLHv>UGa_bEiy_}D+0*pQVa3M%0!I3p*?Zm2uvVcH zRGJ%2s$jR|JL1lu=Ys#Y3LZv07su28`d`nXD^OBb5yVM~b)i<6^N{RBT)-51@Rvy_ zh(porlD?kRS)x-k4IFjlVWK7xARjI(ELfcfHXEBZl{)EpQm)!YxlvPr#rdi#N z%Y}vyAj+XMjjvhTX4Re??9wB7mqPlieqI606?x|@921gk307{A7d0iwK^R77fBDOY z7A>STjBlGr37C?ZDN)SvDS_UGgh=kfYIf~mN|K-gGbI?|yd&A1gg1|)R3cbmMa6Gy zn8+LUkNMP$IJ0{-Lf+&O_62EG3=4Sa~)U$(Y@#*5g1V);wE~K>zJ$N4-=b9?0T*8FQC0~kn z5C>QUB$20K5-1;O7VI2rJa(kppEQ=Qo{Yki9fFL*T^Wll90`mP>g@mc_m8+U5iMab zG5Lc)H8q-8jOn+^U+l;f+ywMeR4A?=BmJ`*jal3UmfYP%4V82uLo>N#;l&_JFmS;b zk%G6x(F8`3?RF!O^eW0JU2f|wGs0oUFMFT5&b6Ry{29A_v%oAT_5R*s|>2`-tUF`^Any zD?odukj(Mv=VyC0^CR#?Si{IXWH<_iW)q)Kcl^EV48W78;~~8M7lte zu6-w9!VN<&ib91oH*Z+&09%~lciuWq2!~da$qyat4th^D0)-htoqeg?B@j$GJqOs+ zJ;X3rAMzctK7J!iD=f7U`DNpmzk0-WCwxEg9hYo7ox~>21YsT7^S=4UMK`X^&y|YEcuqwJFNPf`99AGi}`-Zt*I{un#hkjY}CmIXONt3*E8j% zEA248jRDDDrs5ZOOu^idyv~Uef7P7Y@9C zi3pJrot$w{l$3C{a4}*ksamNdq=@HkrgY)bt%R3}i6Txd&+OjXYF%&~n3oz$u1q|v zG4zqaB>zUkXBthZO>tW@Pp9s?X1Wl_XC}27-fNmAh9E*9)FG=5HYzrIRnBg+TxmSF zcWt>!yxD>%S7elFfGRR-a~ml@!Je5z16fr9z~D(F?v;c!gG(Jg+9?v>IV%N)9!%^1oGv5{l)16?*-+O({3Z;BxRW_EqY(s z#YFWHZzM$KFvvQI6d&{DhYKE={ehc+i5?IhEkdHZb$ju?&0~pqK?NGZy9gx!Lc>zM zX1w#(H??shP%pslg08`@3HPSDsOY%vC4;3~qR=dxP}2aI_p56_JnwH9Y=s(2IOnJ) zuM;dm$S#+bv3R-h^fUK$%uCfWu|8!t-%}Kn`7DE>CTcbzGb)plo1Q1Gf2p~GtM8$0 zV1fjsNAlflvU^s|r$F=?p^IQL6yWMS7dRCkaX=QbgEP}iWk zopm>>lMT+UXRAY_spSwrc@hDjLjq}ek*3`MK^+<<0yybN))LJsTsuXt?)$Z$_2klR z;7n0(6l#^fQQixo6bP{A@?1=BFYI_~&H8(l3d1H!k0MwyPi3@K4SHO4h4S_6iY9yz z6y2V@cMxO3+R+3&oM{JB+cDnR*SvTEWAPIDN`^9Ltb}IuaKu-=mimd%MjU!IpgPdD z8d-+8=nu6T4!+X_sKLuX`9*1fgNm9U>E7u&yIoTk*--Z0aMi14{746bFswt7WtYmH z4@P_M7O&I@qHzK?&=*7#X{YFUOU|5(KX?~@pPe8|E2Laz7^PUrz+Gu#ea#EHZMx={ z`TL>^h54)U*46}&ayaF4lD}e-=^=x_B?eA?`xDN68;9EM%Ltf3ZoQjO3ztYq6*4JI z%_a%gQZnXUf9UVr1J#_#lJyuKN_G%5kNC4l+=^41rzS*_kC z37ork&FVtLzhV%Cid_y}ddOlnPsPBO1AdqQUU(DMhZh7dyu1Xa%d~Ma#s!DaJ;Dd6 zPU$Am5&`k7nsLod^4{#r49--F5Q|M_oLHDuo;Ysod*d4;USyd?))fpb*xD%b^wrNJnUhJ?zBuaM~gkdC^<=`N1=X56O7@#bM;3^d*Ax zk+$`gn`xK=j?m36UO_29Ir2RjC;@gnZf$&EN!l5A?Ia3_>Y*iy$(5TGN?%P7bi4Vf`)ju+*SlaDhyw!7 z66=ca^JtG@rBLx0d!Apje5D(u=SfRUB3?GDSZ}!Q!gFV%Km6`6ODt;}LUjVxMoE+Y zQfBHeJso(t74H~$C$bmN7tn&`2##95QtJS=Eg{R$X3|7Iw#N4nx(DJ23TkI_lJ!B@ zETuGLRAjWSp%-)L!Bv12c`(BamJ?MS*R3=`X-wd*62UzV95{CB2VTL3k){hOu-#CC z(tOpw8ejWrPhN>E$obr+@8TN(qi;AxldIsTcC{MmR4?lf&qUtlEq`r}4n%B~R}ht<~8wv;2ga%!mh3dtuom zgn*()?JBU}xOo}*6(H&Es2W6A1H%Jl6k|&gOnmz1A6#dV#5fay7kfZjq0IW^nzR&r zIdh>>(HeIv&rG5$Qc=K1I(CJ85cMhVwO21Sn@9$z2idzaOjqn8?NTkwI8)7^3clur zmge{Cr>=Jf$52%ZkY!tkt<#urC;eDU_|CE2&r62YmDGg@d2U z?lDT}2HNaIMIWO90`LrasxcshY-|Qx`X1l`x2ON=1y1S^D#ZXWEumQiX~2n}kkr65 zCAXDdG@g551%Zi7NxJ}(rLnwcW0Ji&=iy~s=M(x+Dbp*x0HqY4)uH!KFvt3EcZ6s0a~Kugj$Akkppr)n0h%{!$r( z6~ZyZo=r|YNI&YmJReVfJD1(0KvMQVa)=R)JL$5*;;GmfVS#0{RwD(OfHHWtim6C`Yx#uYLQ zWbR=7w?CiE@?;mnc$AS}i>TzR&Q2IexGp@)*tR?z11yYW28u9V zq|7jgoJF2O7yB<%)olYHVm%h#6UqpupBPQjL?dVY)vq61whYIear_F^P6q)8nlVwf zB5=)UR<|Bavt%Cj-690NBJ0fx=&qXAVdlVAdGMYHA0@0++CiRXna#~x7Ohz;B&3M# zt63!Y1jbK{ri`*2T6m=TLzjg7^j81`Qs@x5w~$c*lEF{(oD{@(uJ!291Ba0b901isEUN))NUM|Ux^#dL!Qv2lPT z{qonlQghPtVE@@W7HzAF_iNbpjvc+Ue?Nf-vEVB=QD<5bMp?0SC=&pA4t)8msb_yf z(AV8PsNC0cciPQ*;>h@ccC41rAo9S0RkAdR5L81>BA&5MwKi4!)4mDrYBV~o=l4ti8bEhc zRWnr5*H<|iRei##Q1dfMN7zpy;_ur1K*4VMMZ&e!f6-r=#3gJT!UPhje(bH{I@jQX zkab0%Wg&!hLP{k#iM*bwa5)k%m{@g{Q9KJw|5s2d@LW)xk1N<(gV~MPoC`O15uQ`eKu$+4Xw6TpA5R1a+hP-~MW9(rC0< zHijqaQ{ud-hfmJ8wA||V&41@KVNqw<7RY9YGgt-965A051)l>{VvIMb>vlZ8u3SNT z*ep1aMLZG}$&6NsQJ&{P2-!+X+jZYxPiQ--IW zsIe7?l~tl@nscjokR#vZO2cTNm{TIjW|zbk47s}Fb}TzA*!69Xt-EiN5}*V@2O*n) zmZ%0yU24!(O}9#Z?d|#Ou8CftSc@qG{>?lBbw)&`wsi)|PFRxyoF$u1RF0-qnz&qe>#Z-Rri|(kF~F3Z z+l-pQ1Qss&=ZMl)l(c7gkgqdIvAkz<-H?M=gqSK*&=3a^T;nr) z*7+siPc#8IDMVRJ3McOP-+fnm_niw0H<4!GGN}-NPHEHv?iuKB1euxP)yKC3e?cE@ znd7a!cna9SHeuJM^Jl!q?2`IlGg`=@-jumlSsE>g%GX zYfvcoN};RlO_)WJ4Rmx=m@LUuYU8zsC(5|TCd}$I8Vx1qR=v;&dczreopwp5RMB%d zuL^Mxk0I*H~1g2jww zk$~OcfOHackHn(iA456#B}tD&sgHjUS=)YGxPGIzGq@=;M zI~Dx5e?18Mg54$s(n)SX?uk>#2dof63^vXLG(;C5?2#N?7sNSyHU}h$U;!-ESOm&p zvkO7A%3crFi542`)|1I)Q<7Y0wa@yVgqHv!66M5NwEwNI&z`}fQ-ZrjIGnSlGLmwD zN6NH<3x!fQ0>w@JegzWWR86<(VP&wRgelAf;kvP7Vg*k>#;vdI#Ws7WcgwTgziZQR<_LnQ$S*#fm-FfKp(x+gpUdol@Wf8LtV?{dmBzgjpB-gJXegFKkv!vuiiX%b>A(vvdhx4owvT`}MLPx}lrAsKfi=mQ$fUbzE zI?M|=(8r(f9^SU96`m#^lu@YrMdqmlfY*}d>0V?@t0G}@Ym|UOI+ruE+H%4ObG57HG#L+6Jz@jG zQd&=82#W3XXSk&;Ud@!^VZXpIL;ufzjy}lqU|3I_#EY zo63YIq6H-AlP8Y8{ik!!ytu@5pjI4AOOT`cplYNLi~fot zEWH#{agfjn(KI2`=oDPUx~(8`*Q_J+(B^mF{)&)t_=^~3MbfCS8)6bm>AqU;aX4$i zTwm>>5=E_~MO@Psa+c@!`S{{o5b+Ruri@7Ti5|)?h=R*>2(*7 zmR{j|+SW&NV4cX&Cl4ek)C#W6IDgi7Yu{n7u$n|NL!+fuc!@w4D!{p#sC`tfnk3Ly z-OQx#R3aI|=|!Bj=$T3vEi$wuCOyQWuRp)|?U%;d^|Dm)WUFm8u+d@XpmCeC9!Y)9 z5Pnu|Vzq!wTDgQ&S0J?k(?}K(MDLf!jm`I)?=D&8S|g1HU~h?1)FfdFPLz$wDPwqy z_Cuk1i)OESzZul^-A}MIiRr>ej~`|vwi(5Q!@yNmAtMN5qI-crbQ&#V@lpb(nFKO# zHqs!%Rg8U@E=+<91!Rw;CR4ZWJ}(p(4;Eb2!YgZGPrwQfbAf^^iVKy}s^9#_`%mor zby6kJ2WX)%UOghbN#4pU>$uS;O*d(VG-mo{wi>XXB0V8MQyiDdB{l%{z<6ozs&BtI za^YOvDO8C^+Gw^41#uXX18*k*izXG*ZJVz223JUJWV*`pv_}p&S)o--Ut(@H$@pGs z-?M)B{>=ul(u=sk&}-hqW3-$A2^iHSvFAWWf9y@Yt?H6AZtnfQ_gTCGWwqi~5o8%Q zsRKX#Wc=vSX4GC>9U3ALmRGciBy;h?P!29?wL1Uj|MAJ1b&If!bBeGttegqrauAZJTXIHM1l8dz8v{VfH?q69 z;aMOkTWJYpq9Cug9t(?v#h9uxXB5qzzww{DonV0h9KZ>XDdg4@QYLrAM$a;eM9h$d4Rl5DfrdCn zWozvJAeovZqZ~Q8F@b3m!HcvddPL!>2)_wfV7akT46d zcELkWWLhnWRTaDAHFM#ThyMQW5B<;o>wU3F8a_}>!#O)~SXwCS9@#dR9gz=)( zDz}n)fgD3fI-7-RaU>GMC?3nI?7r!G7y9Om52XRRki{qsqqZZKH)VEz^ioU(I&ljz zl06q2x)A^XKmbWZK~#e3?$BXO_DVQlC4nK6fypM~YZbahf2r}+BAVhKe)qQLj>I8B z_#2BCFFtqfOnJy-63PlF=pa2%92QmdgPm9Pd}hqSCe33< zTJOJCfAZ-{Al6cG(Q_upr-ny{_#MsAT#@36_g>XfHJPb6t(I&!&<7tV+_P@M>5~nZ zKG$PAz>XE!zvdQYKf~i{+K5r9e3)fn|BY*l1k%x>9L-@-A%1xnRYyTM_3WO9v1^x! z%svI<0%akUcbP8q^kRB)T=~5;CZksBLJ(r62C9ZbIS8?Bi?-kMBpbk+`z}t^@SG=O zDm!9f19db};Yy~rQ!~|fo$oSC$Qv&op^du898|yarLcIakL-B`0`ps>N9Yz%Y>yPw2hv1L=e8+#yd|`mq7z=Kxv6jK-0Ej4n@=XxPDP~tG# z(-_?*JbYR%7ugnM+PVR@2Ye8T>d=Vs+}?*RXVS9UY+eM66wsG-ReWMJeCC9s0$5$7 zHtM!g85bDIR&Zg(8h6{{7NU18F`JM6((-Gm6)o3Y5VRmit8jQk>@$o*UmG8P_zl@5 z46&cWoIz%|s)74?>MGey-j(_N%fc|&11f`JO8WqD*4(#nxC-IB1H{gem>$aEqtLXh ziKljM0T~e^WZjiUs!M%lvJ8H{C`6oJaNp|M;DK_kL*^2P#wuL2Ff|h365tk*Ex?6Q zIC%osup?u`YsCQun-bTbnyOc;!wM-CwaV6Tps)5UvQ`hQAc2q(ATP9=MC|`k+rf_1 zE0`mvzKcJ6A5#p>3K534RpbEhY2Z9}s}=i>cRVIw3=DQbC^DJ=~WY9$kLkoX{t9N?5xpjWRDn|lrq z{h%Vse3`>dttg@%2X<^WBuqYe6~`ZZWYxouN_daqp|S#jf~|r}e&WtS!)K7t$-6Po zzpTu12vSPXAmdB{*CqdiU@T+6?;WEyX}tEz$#!$N)gmEZ)pd(?(ucb$qrFIic?8r{ zgC|S`2s-c;6?;E~?(i9=3dkFTZLBR|(am`2AAj@B#j{2d6@1UdSPb8JLP4pn4eW$n zv!WKR2kA6kdUs2EhmqiS%VUy2-b%&CXAF5mV9 z!J1_1z<4Sqx8I)Tvo3p%q3j-Nw#xUKx8m*6ev!A!FJcq=@khp&pI>n8MXpm;TqI`4 zFeAdMQx8f!*)b`~omD@mKixLZ_k~)&g%}Cv2%trDr8>xqm??UN&U%HZ30F4kZ&E7{ z2S5Aey@+<zH~ZyI21Ko&%pR*S__NCfq$Ax*gFdi!eZZQ$_8AWrHL#VCEY~ z4jZ5S`IK!gZq{)*E;AR=&9UWCG8+2YC45{9Hmie+0T$Xof$wk~A7=>sPSIHrJl8ZA zoIM@C{>lYU5_j5B+LoLEgD=cmqIX+HD=}(IR~p-QY>2|k5=TsgtQl;xR;Wcn(Vjk< z1#RYTeForcI#6*Ty((A2CwH#Klg=r$(zpp(AQKWZqmQcdW~ou*11O;nCf zsfO7hnBxAozcu2qR=wbmbSo)%l9~NGqr5&<>f|Le)*%y^i}@NK>l{;`9NwPe5HD|RPX5!=o%2K0}NBs z2?dND`6McMy)*E)Qnl1{$ik4h}w~TDt!$X zB;zWh-^YhO3e9qH*@y4{aN@Ym!RO)G*Hs@6v`Os4ppWPvqA+@D*UB~PhVj=i2m}r! zvj`RfF1=d!*Ahfl@HF~BDJ%OCoJU%aA?Pwh9Gi7O|DMin?^zo+YxtA?E zYI@CF0g<6`hpHR<-?{w5iKc5WB)2nWXW-A3yc8|b^jc5&nJb%*Z+X$c4!Web4$@HG zqBuuwWultSS5l`4GsdT%{@^(apbLnu;Hu!fE{~rp7Rkyx zBNpmKW1t|yt^r>#x&UzqPy#SjnA3QH;HGbw#W);(<#(spHW5^U+8~Q*WT%A8hRdZMv$Q9SQ7-Xv-C911}^F9AXl}oJYqd#2_|mHRB)uVSmYA z5rmlV;FZ(HJu5XM$7h+q+puT1C8}H`6?%oI!T}c*mK$22C>IJC+{8ebj$d+`&1M=G z4}Nm;%g@AlruF}`_a01g9NE5KneM7~&;SGoS`dx|Jwdy7@4dQDFP;=HLJEB^ zg(4I(SLVfAt>bbH?UJBd67--434j1$#Wm;K|Mz#>yA6UO*aNfYt)kyPM8`w^hJQJ zK;M74*jnQufP7#b;=+)cN6F}~{&^3vLZF2)QxTad!)zBt2gy(8k~FKx0mRs?Al60f z{mD!laK|l|D}Wju3w%yNVZHLw=`*MOjE}aF*a%WvGps8OtuD`QE;Z@@8*L62>_Ab$ z1rF%Sv;-ZCjx8ca$qF|&xQAo7sRIsQ;g5q zzR;CqC_5wlllW_4(^5xR8s$19&M+_pj2f-zNyDY4b-~1>_#iL*@r$uh{O9GQib7H+ z89Cr|Mx$9mJByFrNU^!)kVhb$i*lIZ zM!iuj6y)^^+?zl|H70J_I(Wxjki?Al8Xm8VH4^7J&{mf(8vSlu)=TS=wau+J8Uv*f zbSdgJCtt|?X?r@s7VX3mmO*>Mkt@3!b`@WWh^X zumUdK1PB%d!gR8^pm6LP=e@VSOD#|#1viIZ01YRLyz7BP9$=&@kGkn z&Khosp?)%+_O79hr=dJMIjOkh8~8P)b(0hLS8<32^7h+bpFGjbW>z8vG@8a305J^c z4nRSVaM-!XPkT%&Y@UBm*1{cWb7&n2^<6rWvkr3y?_6vM*@B?tQEMen@a9 z@G4Wc3}SheVHrmeMX3u7!G{MaoXoQYI@y93DD$h3tpynivK>+eY?^9#r-tL>)QAG( zI)8cbbC^LvILwH&Jd3nu!VwJa9x^IbezS`znOi)vkPVsIdqQK_d6jmGEXXjwaB_uk z!=GRH@Z4#*O9i9~7CoUGWn8Liab%k_e^sOoU`A1_m@a{{$sXI4M<3s^VkOi2+~82i zhFYF5eSDL4sE=6}FC~%~mw4>f@lJN;?t9nYeUCcNlchI|Ub8}UI&;>!_P%I`M9&>f zF%;P&$O8j97iX$ywAX7b>=WNUT>0*s@my}D+*LQ&2Qe4~QZu6LG&Wh;p`t0e#8WSw znC>$eJaQLKpRyT@nm8IonYQc)qfb6{BQ!Mq1mvK<=qDS{%!8gd3cVungX80TEcc-tGj zZ_mbCx5=&x}0wx8Z zgx@2VN%#zbA@k=y9?7_CYt;aL5ED!*C2&=TnO!+1RB)H=wVu!?3{wqmBM9T|1qBf} z(Q58dHbaN9(&E_qL9dsJ!_^ATINOEX%6Hy8_QNrT4GvVXnN0^A&9pdczF>^8GY!X? ziG>r03k^1-gylT=$mUzNuPRsJPOA>kS##LAv5{m$fp>`U$x{zLvh9YOth@ueHX3dk zMZqe2&Z+b9G%}41wO_;5Nn0A9Z6MY-(2uXZ{Oze93A-@_81WJe%wg7;pd?@?hLeN? z-5yDM#|)r3SMFMW$asTL;s9-R2ewuV`UPwSTM=ry-WXlEDs$-Rn=yFsP?%+9*CMZj z5Ebz3Z4jw2U(i< z$HY-@;FIUz!@CBD@ng}1TMlolX*l$K70jA}&t*338#azS_{azn-3$mM#wD;B`j&?5 zE5~Uso1WEF?4T_@HAI92WcmTDL@Bsv5houW`O-~Bve^~*?IXmYgo83e^06y0bR{E- z4_MfGbJM+rOlfVq)t=W2b|45&py(~4>9#{Si@s+bMR9F-MY#XLJ65j62`RyHBFVH6 z_dszX2!#3TG|cD|A5fq*h|FABVyz|FDyzM%} z;}i9479-*i(P0Y8bSK{(hzwynP`JZ7Z@{8Ewoeug{+*nsxL0Y9uEQ7{I718&l0ze zc2B6#^FkI{w*_{aATh~*uE|!1vyfl{Zp{UG>KnIQ_BYkK^Y=Ht93L;#YgwFjLMedA zV6H(k77Doc?A9Uej=5H1F@7h$d1s$%2Ml1=I6{@dZ`W(*H*Xny@Zc&UsueM_Ai?~@ zo)p&=0tQgROg|;?uYU8Ecz;NhEn=GuciMRIEtIPe^_f}|QJV9={%;>Q8!Lm{>XsiR z8N&U+c7@?32SXahI+$DXw5dbBtD$kAFFF>XnqbVdE0{Ag_a_!a5n4^=Mf!qyLiJ#A z;^~`Ngi#Uv^oS?`o<9(`a&33T|M7pm8s`1;lZd-8?84)%K1F2)saM;nK+=okq#X(z zB+_%{DolR^h-7n$+5)RWB#9ghX8m^HwY+?QvAFZxuWlb29vd2JOpcxdp|LU0!3&}j zNi;#!Ym2%EVca67%easCRJWEmNI)8HQp@_4l`9*#=qnXKBn{$2qIL$tGMI{jk&r^~ zG&!3+eiwI4ujpld*;boy&}{4IJ=4Wbi}h-vTt-D3$WAt#&%ShC|NEIFxe?tf>D;y8 zT7^6Ru4mD=~3Sk zzEiK+{Y^{nlrmLfr(e=L=>`@jO_fUix4%1CD!CAgjF<*WuM%om6wKUKE9abSJuHUk zzzGZj;X`n`fVyC5xOua)|AE`el^<5E#3hc6KT3h{FF5$r9w1AYw-A6JRat8$GRJX| zh6g$DU-`Lzxp_qV#myow|GVe+J02Nzo+;e-TOOpp;7bRpDU@PtJmB`*JmWHv) ztl)Jyab9})W5-zqXVdtf;sw*`f;NM}R>ckj^R+$c>9kt*JX<1{U~iK;{>aj5YqY^M z$+`9D^j&w0*A7oFAA+?ZdwB@D((-N+Kh2JkANJXJ@aaS$ZfFmd3s zl%WfPOujnlyz%PS=g%Vc!AT;3h0DnJV+X#}2b_;-?whZFdh!S80g+Ee)flNWgdrO= zyxh{E&{sN{WGC+&dYEBIR(3FU1_`*U?XdP9*tcc%+EUay?`J^=dYbrU4$GxRgAA{g z7z#r6y6ymR*wKrCVDZ|6IDk!BDOBV+B6*J)CQ4*zv)0&0r6yU zc;eARtI=c6g#eK4bBBepXdu)Xi;Jd0{Z)j)PK>N9N{k3J>H~#btzN^LI+;4F|DJEo<*NVW-J6E$d(sMn;;9qPo3DLaohbV52nujaXG38Ha0;1n{pP>8-fzQY z8Ss)-AG~ww!+*#NIJPW^;f1FRTIn*auViCrupR@0nNPOqb^t9^xM{e7M;r@rv}b>~ z^|p~_e9pi}t1+Emu$8VXp#<(ho@o#r4z;pLTyM80_w2jrw%Z-zEXW*9cA%-mQ+|83 z9TQi@WRVefzKgzeYqklQi%H6dOF12&W{R*3W7B!@g&)qJg-{K1;eZvh&Nkm)#CxV| zIN62UK+0@B8qxVpH-?WtwWb!u#LhvaLxSvDY>i&>2n&#+=AF;w2n`%V_Iv)}HzrR1 zh{0V6LmWgxKwL8^kw9&+LBId{5LIOWL+&IQdHHWgYc(HBvrV?rLUjg@i?$L1ZAMN$bUw!e^5O3b;X3F( z%O#j?w!e(`1Qxp<*aZnuup~SRcisN!+2?oTO`kqRh6A^;QLnS!FSd5~H=q|=?Wqq` zy;%)l4+gNMM(ir zL(YIBEY?J4rv{&h3DHg}!>cL}J-TV-YB(cf1TvE996?*4;2d8L6O`<9GBe5+KlihE zG~^63%WMo)uWH44{pFL*>JT2U5Yb?WLtJG&xW1AFHQQ|&x2Mf_8$0h_dGB6tvN9QF zGL0te$VB8P48}#4mUwU3*(7?ujeaE|8{T~V+v7h>5_i(e__6pc_{u;8tH68d+Oo(x zpx^4i2hHaPCdUy%kG%TQQ5-peQV6ZsrSeUN%=vkl_EW=yjc1^+%Q2&wkdK&{;T`ng zL$`YVS;wCgGfMimpsMr}aH?!LU>de@W>Qbu=U1+)KkzV&qLFy=Z{QY4+y5r*7@E1)nu@4nmo^5`gw88NP9q$x9GOuC{mX%tg&`~ZIs z14Rm;%khrr)XH!+KbshZjfq=V96Wh4MuAqm{u2EvThz9Ty?3ov%Z9am4{p7Em&_u0>W}QM!Ok6S_yD z#2ygqLd*Pk=#iEA(pbLGtk*_C6G66sM4YI!u;<6e&W{WYW3q=w&-?doy=iMU$l@EG zIx*_RT1rt=2T|#cCD620p`er4} zMwNm2P;X44fuFSMIBy}qI;Lx-f#~rkHWczQ)iX}_c~3#6Q-r1L(%cP-vfDHWF%*UR z-N@5msaBbA9)`7tQg%3e@}%?HE1!;yw%kmXZ7LQ7sJugHEJCsUbfC}wF9r`(RiT(| zMrHh7;h16Xfz9&DV64w6&qzwpNin@}@i3VG8ugds(neSeb2#g{Fn9VS5#>HA<~GK0 zURso0#p!gR=np81_-&X)*a}DB1-RDv!m#6(zWU<)#~E{^)k;E3h4^YAvLYs4{&1(M(1CCy$i_)j5CC` zxjdSp7;~b^&olRfsiYs$x&|=`)tb$SWo%IvMcZTQ{h6+) zRYuwuEvDziQodF%XG7d?pL*)~ zn~Oupe9>Wqwt}#-V&=tE-RX6?(h)s9w`=e#7i3VbdH3*lh&7O8F-5VquT*Nd?veef zT`k1ioiCLwe*+v)&kY*>NR<-+ot_dchAZG9F*4yZfWz`|ZF?%Y{4 ztzUE%>JKu=t7^_me|cy0Y`b3dGhv{09T^p#7ZlZ&!#1!hZtr&j^jDpQf13$Uuo?M3 zA?TO!f)Hi>VK{ehzwyn9?>of2tmm|=VrX7Lm4Fq8+#RIYUbqH$QU`lhagD0{P`~i| z<4&BzT(*@|;j(31bbR1yH*VjxYTpA+wN^$7l0@=cYLe*%i>*XnaWsvWg-&Isxa}$S z>O7dmUjPGrP53D&&d7QD&Bm9XpUL_PIbm87dM;HV#b_FX)@PC9FX|N<&MqGP>J=*o z9(!t=;%v8x{XvHUYWk&%s|@7R>9dF+Kt&f@vh(DET5*%buzQ#huleJA^R4s6(J?PG z5(L96m_#8ud-l}O(4gpBs0HS$0GV50)u160_E~{`aLv&UA6QOSw9{cv}iSMKFaVQ8s3k!>ZM-W4~vNg4u zb^cQ$R)biGPlyEwrhkArO*SqoO+&Mx^YTmQj(v9?RdP1qAc)~$@`Jn?inR1lI8+c#-hsxUV|DE78})1EJAOwUcJeyOUUKZJzilg^8O zdf#`~mdim4)jUKMICjRdSJVJwWf5A;F^t#+6`0|tu~@QpOQ{gV4#;U|!``0urUA~+ z-!aew6YEeVE*y0hGTpOYf#}TVyh`P#2OhZnwr#lRiwj|3JQvcz7SsR`?xAd?OzHY+ z@gyT%UOd&&@HL>v37;L(nkUqcp2jgNt`3>74C1g-j*5k_T6O;Y-`{LIo9c0%fsUX2 zMx$052qPpQ4pK8%Imoc3h+|v=h^^6QTjlIY1cjV5(xL1qAQQj>5OTP+E5IdzplJIw z=p7?;!o1oml?Ep#$079CoI-(9G}Xos@1mkRfz~6Nk3maHHgvY||m5Jg?qP8p!F) z#IVKCm3G@oek#F(;7x*{iNPSNCi(%y-&>(`L0Njk$&3`E^(eh zSSdYgbNcx+Fu|*_AlODrA*Fm1vXWo4Chm-*W|MI!2mCPZ7_{tzS=7V&+I5XR`|xSW zq>AwMk@W+RUI(O908mp$$aAtb{W86k*YMXI=FCFZ7D#c}(b+AF2+r(%5QMcN&3q44 zB=`~Uy>otS+^^QdR+4GE_$@FJAp9y|BkLY`FP!x_m>(*+M2=QQuUwHP3Oo{a`Y?WD^`5cGB89zeGLy5REhLkZE z1g)wKme&5}zkDEel4f@X|He}B?#%w#H{5`pfsu|4%Z8N{vW;Di0=|+J@}6LIBR+zYHE==7%d$z7%h6ZW>5U@zHtt}anx}J+fJcYXJ{~Zls~i4(j&GU z>liyNaGw8|=1j}e+!4a}^%T;;4*eEO-ZATu^?@g%8Fu;8F z73@dk?~U;rIUj#`6az70G(g&Oi$z9aAQ&i~AHi%aqkv+4x-Re}Kda_%RYslx|GlEz<2 zj^Lyd6PVbpEa!>~4G{A|@r$F*TW@|AM@1$_78@HDcNTG{nmFTk-Lvbq?JAY2f`4j| zyQt&2Y{`|0TA3b(BBN1C7G_2=pk`{!)NwXow21%u;zwsr6TqX0m(*s2BWAX-WCG{k z4lq8j7bd6KpL%BYY(5f|N`y>CFaK0Yvx4%M>#1|^Q{L~sY2Uy684zeZtH(O6GJmyT zBdf)lN&%(X!~vr5GDX6;_Uui!4()$1moI7iEM&#@nHXrU_7H}kvpJC`-FWXqlxcShAR-s#?c=kGgqK7=MzYIV{D z;q1ytsZgPXt{N0OYc|C&(OC`HQ8kG}3tGU%+lznrc>J6jn-IDw@S%*E8wv9Vpv|rpJ#S6bztb0Hs(0Ri>=K=8MhboHBOYY?{^jR{cRQX7 zHZ|RX6j^gciZ=*LI;#fLbuw7kztou>tJ*LfL#foCy#tP8tj=&I6L605($>NtZjEpO z2=t^K0005>_$>i#>*Yq`oO%AA59NxQKCaiyum#XQ0MJ>m+Dy2n&J1;7(nXaP8^Y=W z2ao}~?)U~FaLrPs?ofyTIbF5*vfsp* zixXlUlEiFg_6lLa(ncaFv)-iXD?ne7SO&~hFZN5M61C@IlLvkMPB?f6gdogmdI==kt%oeP^xTE_rSl937zBL#&5l{qd&`tXc0& zlxz7gk9$Qjg1m|&V0eYYzq`A)^`_xE$X_|bBz6ck6qd)GKmGobBwkUAvhWkfCQc6x zq9sYu7#dm%i+1s0cXZj@W_jkrZt4N7!AhM6Q}@l4sbJ?>ieaaIUh;}k_-cl;s=`{O zg%Hjj;AK}~%mMK@WU-{1ZMEvG<*cV@nY6sod+u3#*FBKEbStqxm^FB1z>6Fl6*I!q zLIr1wXRox!F4?#%xVhL67X51$%x;sqBODwd)nr2231Ja94~tf0v_fAbIGZr7fU)F2 z>PJJ)aA8)AbikPV-JJWnuqxN&BYuHdtP&XQaMPJ5BDoWy8RJj3J$mET@bM=$uUX@u z6_wAk(3M1ZcNegW3+*=W;zyUfV;jM+q-}g_nr0Tl0Z=*&EDD91VE-FncrU(>Ch8?~ zy7WylOsgd5nHAQY$OQv(VFzS@*~*0T+y4&%+#0uCY++jN=i_Fr=}csU@|GKmciyeM z*##4*hKp*YQY_{bI=J7;OsgWT=xGa=W}>Q#l>jl*Oyb73-u~qY-67S{i5kR;@8Px30B21KA0tfJw6v*Gf2u$`;CHY>Cf)^Ys`J{ct}WA#Q8q zP9A}5b=}5r-vhUz$`G|Gh->+T3?+yVOK~o=9@EIcyHlOCR`w4M)h~JndQ-a_=lf&Q zB6iyYa*vuVR?1C0i<%f62Ek3yv&QgYT5hxdVFyF!ed=eb*!j)hsnKGtK#HA1JAlg^ z-FI}set+h(MkWCbQey-&PihvgQ z(?7U{Lrx?&OrSKDT#IWgyIr;Jv%MOK(?8L`)Ake0$tH*ijNzX2dA#P(aOLdC_(WgV&~!7?H=d!~h4_kU(B^gOiw?16Q06K6&U1bl*thi;C5G*JFg zJx=0$Sgc`km_neR{sL@3on|W05kP>0r2+#EWNk#8b{}1_m}(CIx4BC2Y75 zHkC^8t=ot9>_eF&1}Hf{Q>#}{zhY;~VncRTTgc=*hm-Bl?uS&wF>gVWftF9237Bi+|f;P;Ly6#bC{cA zVwiVyw%0S9Q@)kha=jJPPQyehLkxlskGh+g^gR5LB?lfV@m`?>OF^4`IkZr0u1vF` zpBA3e&*t`GI$erRzLxc~C`L7yBA84c!#c_5nJsj)beTE8X7}tKxc9xS|9I~ldvb)f zr6L?wW@!T%Jds-ru7T9ypZdcps`Rfr$|9yEi#cr8QABdm#)QYr@`WB2>}DvefdO}X z^2`7DpMFiL%F?|5mZvoZpSAV>n^DJKpR3$kgg z_Nw`;+z*q8pk*)mI+Ksdl!}ssoH*R_{M1sx090N)zel` z2MaN+3d~79A+c|oTb20A4nmVn&j}}Gm>+<)f>1$xInWw}Pf@9ihln0>5H)e7QU#OZ zFpL12#(gX85MUvQ1TVDI+?JL%UC-(adO{&D#k}k^RUfzxfIX>}M^~&Uu(K>zei~U7 z?>n&d-rXAz{6Hw1_f7LDTVI%Sda}8hr-Bt1(;oM}dQGkuAHuRg1Q?eFRCl)b;4bYYG9I(yCJ$dH`rtcnBlPL#s>cVe|(p; zZ*hntjr^WorZ5hRu=qgRc`-M;{5cD{PFA!3OLa_*Y?I72LynCw);?fTI1&+xd2x-? z&~Tw%uY$`$6p3*XhPT)_%4DdW@x;}d6A3=Wwc19L&RveO@Yr6FgP`^*UAiM`n+MQ0D6 z1$?tR4;QeEE6Cb{tUC?6&0ksi!x8_`$Ksv9ra(N=(n2%{oq4=R5qnQ_U+-$4aDPQjkbCQ*suQdT@PV5Kaoz>B| z@SJ7?r&k}K!rE@*I))dhyalh`)%PR;-`2#QJNNC=*`7OX>A_ZfDy1hEB|(u_O$6Ac z)xK9BANzjIx&f40ayep$Wa=;;B{Ko>(zq^UOylf2cfo-9*;*OSd^Ld(VAqcHJ$WmWH5NCwsECE$I|$se=@4b*4=p zW7L>fUI3hQ=BUiHunS)3sm+X+Xov7lTiUiJ7oBLApY<}RGQ9Z5x4rgo)bMh-;$(F) z6w%OXL=$)2zvhm6P}l{~xK4(ZX4q#mIz{xRr3SgqSb@vDU;)V4c88*%!U%%IrGjzO zdGGDyqYq9Li#LmUq9as)b&<}Z^5`&2TiH>>4cnDG?R1S^on4v&IPFS15#?YMYe}q^ z@Pkm)bUh+V*EVcv{*V9Dotrm9-ALmENs(OIP^^LOwDN34F1|nQrRhH;HSV;);2<8W zVPs`OU2_JNv#O)9>n2(FdeFvt)=7evHi^cVU(*CcFXBr(OC>T(0p9uI8vnI3`5IT^ zGR0e9@zB6mqr?Kyz7Fb9r-vp?-rl`KM?Tp2#iz$}xlQohS;~xlig`a>SILd3$kCh0 zWlHY7Jq>3uI`quwuCPe9ybRuEqeq|E!Tn;+Bcu%y!%h*D*iGg$eQ8U#XKum_=G>h{ z-S;nZVK~m080+?R<<~nJFO$j7-L^2NdWL7GTAOJEs&{eYbLQMng#0MM%pyRR>tXnf z04{?r#WT-uMU??(SXd)v+=BLS=DW^z%(Pdl1sTq|u@}~px{(k0+6%NF3EqQpuJgl5 z=jE6Gk&C#4KxVW^n?s@Vvm&RJQY8**JWbq}^Qt7%d zKI=8~1W{c;$yfHO%2+CkfF;e3TWU(mlkLn4Zly2ilSP;oAHqrjWoJ$oVsvn44y5;( zQLGx6y*Px585jzmdiw5T-@J)>RJkJmWM*CE6S8B`V3IIfy4;zIhD*1cOI}P3Zd(V6 zhTV;M%4BKK-MfDqx-E^Ug_k-*(2)g|zaTLROv9M8DbC^rJ2d*N3|5kzQO)`~y%^d^ zZWokpKsWup8Got8tl0b!ubONB>o4K8e^$t?s@1i>K)4a+@=+7fZE4Q~H*C7msmEv0 zWPrCtpFrYtuqqQEYp_GNLxDqIP40e3v%ApaCOsfJy54Z!dH48_C&r4o?d7V5gwu`@ z+frvyiymPwV8D}Pr65T$0K)6W6qNd^jLGRz^_M+^hp{pIA1@pDcntx0ZQQv2-~RdL zVeDXHXE3jau-mdugc6R;$ebBey>+nd2+%S*J{bi= z4cMe&w{Cc@;+&<}T>WcTaUw_x6{Phr$j=Vgo_a2d%U(z=iV9t-5>)a6Y}I{>6^ocn zTETYibnd$Q#&YH4&;Sby@e9}w(s?9?34@jXutTBy?QAbBUQtG-BcZIw9BE4wjSmgE zk36~&EP)X`k#ez(zf7hETk&k#(Cm5FmNA>NK9ZS<$PYSJC>7EqTg z_VPEi{@ENX%&C$^H~4*xA%DSHGMa3}t*E|sP3Dn@Zyp&jxk33bH28?1${AR1#$*6C z761l^>EOZ~y2E{QXEtXThPE!|JHF*Fn7STef)0wJ9Z8=VLAKaSYgh0(Kk2R`t?`mewGs#!Zf zIpG#dBlsO<*~7q1TM@b^>o=NJcrjC7&*n-_=_o^1fr!J3g#hC#*3Vqdub0m}{LsNQ zt1uF3urbNy$eG^mT|6m3<66LwJ7H8uQ?1CaL%x!v+JhkJJi%SEs=X;pz z@L96FSZ~C{mB5(NAHDI)G2gq%YvUH(XY|AD#sx#YaqPK&-cOq#AEH(X4>EA~ z6r)ruCUQ+HV*ZHsFa^z6ho0(?1&+`fQ4q2j$Fu<7Pf%I77?XJ?eult||Ke8N;S;K9f_E!^IEkmPWav_E^%>+IsANI%STcKDB zlgP{Bs;qTp{rdLZ_u*tw&&4O8^)x~jLMRe;icTS9SPis_pV~KcKxLo)+}R)*eWh>B zix$pa9?yzt;(=)_kM*W`D?L$p3gf9Q+f>6=O)uD)(y3}EyKDP*an)uzEU243rr)0a z3!5C)Cr2Zdgfo+`eEqrCJ1^M zibSk|O;aindhhJ+JvZ&x=`t`-XJ<8&v$P8p0?EJIikaIob8Ym-1sTrxlTW$`YvvLN z;$E!^Be1!qta`((*PXw=_5}gG8r5vEG&DXw$tvz;qH6ueJ^Qw9+g2PJ)I{*wU@Ij0 z$jeaayktRhf&hFM*^P^Iq8}oBYq8^FCxg*R);V&-`QiJTldKFfBNOA8e^an21w1E0 zjCPQ?V=APZ=16avhjTkgix{X^rb_{U+=WCeg-X3_+-)P3pMv2nt@y_^3qp)npXo+rH?0B5UEi2B9@>pIBKN zVX=Du{>|$*DL>=UkuHa~DY|0ur9PU>ScPN-m^fl4qI(#+@4hqn=_jX%_LvE>wfaP{ zqyS=&7WrKC*kfDaD3jP88#%ppB%t{Dg8)Pov=X}2KIB}ng_b!(X~k;i$*1p+<5AaBXku6f%?Jy`dJtk=r8uK0 zNj&S)+ileRm@h4?E|`pkFpuqfy>@2jU2AXNCi=ZvCx6zYOjfgH=_X5saaLqt;Dql5 zu)x@u^T$8F=Q_jaH^JqYtd3*S9E1c7KEH48tv78IdN2!vHfuCqdIs}}uy6qlaFYgZ zRMmI<^YFtg&b8yb{_>AseSWr>UxRfNJa1H;tRC%E=>scx166^rt#BWF~?|(Sf%mi!OULJiBywq1~W4>2gvC@6=$&IWCv>GIZm7FBA{F3V> z0ty@1;ykpC+6tufu|SQDqC$!E6liN6%KX_ZtgnU6vIm-u z@ImG}jUW@$s?B^pSE>E<@DsOfxB+8EgJkEC-2B;!T_+Fwp1_L?E?U^7{glZ>&3X{v z@?5U6a9JG$c+NZLv|)lG(3L}LYHlZ0Urk^d$WK3ht?~u-o|W>sQn7X4?yWb9xX@tD z!R2I6)I_YK>DpK3i{@qU0!g?GWm|N2AQpy)GWhMpY%rJK*o;H`gW~{N@h6f-rFQ(# z(|2vyDEWCRi3P79i$eHim|uX)WH=8ev4$XIvvNV#jHx2E%i>M&rN16Oceb4kM#jhL z*zV@w8)5G*4>ngb84;my790b7Miazn{DzwbcJJK)7cb1qU}!nbF9haoV9jr}`pT_m zdNAd%P;c+p;oNo4<}inb*0`tuMD>b52fc1*W`Efm3dNESgfgyg+EO_1;A&=W%fU^% z$SaaXg+}k%-dN0MA*Sg^x3;uEErnD;T=?e~zN$xj|s5BP`g%3QP|Hg)FJoKufTVktyrj6HjhhyN{rCRF4T=0Y3|lgJ#sM z6C4?QlIO6yLHgsg$46Esn{UW%xq;b>SOuX}(8Rl^h!VCf+PTa+=f(M=+~66vrMV*? zOdS36jGK%kaTcu+Z~^KZ?5~^g=#$UhjcgQTP4qI0sqIb>^Ay`Ei?-&Yg&unJAiy@R zsPP5NUsv9^UVZs<{MS2fDQ>v~1JVnt)hfhTSnw@jI(RH5VysCSRrnc61(0c+*|^!i z>s}-RESspLvA16EE$Vy#c`4+i&YOTpHf(n8-n}_a#xq$I zsqo?iaRj530o32Rhjo1hl!bN=syF`F$m;lC|07=Hwcg_=z-t!*zXX=D8imH^{8H(D zBCw{@2~;bjfLm|0o0w+=y%}>}`rAi1K_NVCy^gm+FN$%T0>5zL?t5?8y_<0GguP=w z$R1DxPPff=Q#_AbW1_-9z-2Q@)S3jytO#Fz<{bS5p~^4{4^#|)jd10;K-0h&%603q zAQyxSzyN@11Yrreal4fnDy*)QYi+k27AKy1eg}eLs7yRt@Q#U~wIJ2FZZlo-2y1%J zfs)iB`+xubm4t7>KWq}$2TMgFYNG4qor7{_UAKi}+qS;g)*IWlZM$RJ?x17ad1Ko) zJ4wgZ$$uSZU%;weYgNrzbJQHqm}43cc^X2<&&6TDR0hlS`kTeaBG+ILX?9R053uZP z{CJY=m9KkW{v1w67G;}&5YR3`aT1WD_3|%I`}}NKqy|PL@rQ1j-=Ov@Mjb5MWPBQZ z%&}cKf6|{i)pTN@VY5dS9o$q+%Z$v*DX39X)D3O~@gOdx;w)W_G1h(TdQ&KZpE zh5w?L=22E*9NJc^U5WfnEL#GijTkkwM*xrYv!OfA7#xFstjatAyF2**x;0hkX1PHU zEp=3j#*+&>QYFg%cx!;_=$vnO02lxmfxuoNq=C0u9U`Sn0+Fn7awwCPa*cQApFJ_I z9r_IL$8hJGiYF$!($U_7Jf!00ealnaoGLX9~|HwcCma7htU|0WTcH(U2)7#k<7 z5)P4A4q{A9Civ=nm;00Zc<*Y-Y^|ejTYwNH%|(m<=wWNOIC5E7wtDa@dc^W0HwHgz zGD~8{&{nvh8c?e$lf1>fRi!C7aje-ER-^XI)eVkK49l(-QeLUpPUx0CIz|}*>b75r z)&%)xu@~Aw%r3f`%z=Y`JdTkeP+#F5KFAPkAe+qY@?|bjTvqLZvAORaxRb^dN4=x{ zFMG`AlLME~Gok!?etZ;Z`@f$iTt($1Gx3NZh0#NkX_Y;ErXm#M3Q%Va zc+7JIx(mLYg`UPYqxpT2J<1LQ+A9sZ&I&wU3RJD`=d4w%Dwi@yMF7Z#zxLLN`EPI& zfS?00!(Xu8-mHT@{MNQ=csasQ0bkxfz+{Ve&Y`r16fy3gkL0=fTe0H^ z-PSn%hczrWS|c|!PAupDM9hjmg*NRnc5^5puw0s_8{sr>vXxY`Gk={JWpU6k6p4BR zta&`QuC}^7O>15cg&VYLgh3yd&0+^~T^^^hTeAG2B{K1p_5M48i<1)EXXl%m-`5L* zP;r~9ST1_wt8tLy7bc}CR0zLDg*;4dYTNz%LVpm|h1*$X#Ddb9hS@PJW{GAU?d{Q4 z!l61ECLlGn<_-Gu26m!XfC|Bw2cy9I21`WVJ7J;8^>+c4gR^^NI8jfJ!HdIgIgBh$ zn=Bu`K_yroa$r#VzOwhm%8$0qI<+U*GHQ`x-nCGtMG>+Z$L6TGoJ`_>}gPRpi@MBED zWYNn2F;!l-G7XA=dDz8Z?T=syG4*I3@aufBoh5Oo5lilnA#!YhW}`i|gZ2p1z6ENB zq@;Dx$T70y?Gr8C{`imm#R9M)Id*=H>csT%@StyKr>QT)VCJh=I zlv*C47!g0$-?uewQV0Qob&`22%|uaABqch_5+zQ%oiHpknLjDqhxEN1A zrekp;Lu{P<5vFD|1PAnn%Jt9 zUZ$Q0Z_>7o<%t$6pOHE>YBtaS)~ZcM;`J^d$hANQXt`IJEEMb)qq@rC79>wa>w`*3 zywuF=0o`dz!mlw4$vF&h`W)6KzGMJ?r@THj^@^(PSoPmw%eMuQaS$2Lf^9V=Pw!%? zZHE){+j^HF;lXaV%k|T?psfmupHwtuk3(bh8b6n-CdQ`9o5#>UUnYH;!Gb z{-9vq_^lh(_*Ho;#Xo`Eo^1K611{;AcDeSl#XU7tT|TCzN6v{Tnh^U6%Qv$vrWOIMopdBO<7NTPpvbRv~BX zMHm%Uu>qP-O?L*$3QB)4ua=ZtTH!K^hBBkB%}Vxb{p-!(W}97la>S{csGl|a+6H-Y0{9u3{jBOwQa z>QCX4Ro827>^kZuVta=(By}M!GfF^v-xqUu>;|vE$!g8g9r6#ZGvq&C!DxX?xacr| z9Q>4t(b#6H9R>0xyuX^*A522ULzNY39=C$QX~qbJKe?>Xqyt%%tG9iah)5Q}TSxs7 z8aJRSpdrGy$VKIotxyBb=jO!fIsuQTq(;=sv%sdz-%oPld<&P_>LWOmBD?|D z$S2jirmPzfVpV>fRm)p zK8SuUQGCjrdZN#lF;hO07iqK#>!KeMM^HB-<2?Vd+36%1k80e%!ioFeQ4tXYe}3J} ztV>}gkMTU!h$KRhl5*bCQ+;U=s5^(q2`7loZb1SWWBLTQ9YT)ApaYOHDW~W4^v+@F z0~4&VaME$LLR)NNrg@*1f4$#FSs5T7PK)*%n|pl zR!?^{w>EPK{^R6njtoP?jbMl5Od3ZV6GZc6{TO~!VJYi{2u|VxY2t058n$W2!&LSf z+ILL7ZU%PUxt!8L^HK3GTGMI{AFxh@*^mh4 zOu13U8kkS}SYCs-9lub6Rsh>=z@5wJj~W!P8BZ|db*#CLAjwZ8 z9Xqz9$nM`^q#a=x;{?Z&GILJIP!W4G?1aT1TGOW_wU!9s0?4c2QAoU>=Jx&j;|rOT zWZMbX!NemS)!-8Ci-!>!n-+L?=yuQPC548le2WzYTHz{jjACT5L%#h6qA@ezsrR_K zrBF1hwDOF16jwtfRC(K zTiJI?(PonNX3*X^kv(9+A;E>oIMoKSSG{lc-SN4OV}}3iWG)rBIW;c??vWYkaf0B- zb!FX_2!#uDQc*ovqV1KWv_xhHdHKf>*{TGX$xL?OT) z5$O)Kn|DLNyP;61Gb_y7_@7#+pHC! zH#R-Sj3a_xOnzAks4@Ip5yPb~!zHah>bEI}Is+MVIY(wyTg%5yLAAhDO(itm5$!&P z80NRbQ(Lwb9dz1l>-;(=iEK!*_)S_00)3b&;iE-vG=#Ar)e32vyk}C z0noGUYP2iGaJO?X3N4o3_U+SR-XM^*%wtQoXY7%qW*t1?{jpOGo({9z3ycAzpIaXd z|JIV$P7YyMa__r#10D~@X+dqY#bV7kMZ#ft2Kz?{Nb6AKWpL;D5KKukzN#R=t6X6w zm9W{!g%!n$Akqp)_RvMOeJoD^_E%7z*S%<^!DkbDD2Q!{cUEHlP8n3@rX$hGP=!vF z0JEo+J8wafx%GxwNrP1yWQHb-IoF_&xqmn;AzJQ@7xguHLjtiSgr4nf_QZaNY3L;; zj8l6<#`Su*qn`$xDU+dtriV4iJFa*fI8XKa&MJ7eXNBzLO`n#~#nrdC$(Pu?iX3m# z_}kA{nyV*vn^Qv)xGEIoZeZ-!YlHEMsk8ZUqY|I|LA)RQ|88{codC&`khRw)+}b~Q zvU52#Dv9Vp9t^ptWUA2NQD&deaUbElbha*`4HsMtQ4J_qm{3>%!IAkSa#H)}jeyV9 zD6|Yd71edse%5V2yJeaYp$H-e)YkW z<9lTOcGG3Np#CCy3_Rv~u2$|nrECiUt<2l<&+g!+Qm&X6fR7|Z|U z;|6C6j47H-qIZ|vT=&rx9R=RbdCE(raZov?E=2uk2LIKlZ6)jqJ)cLE(V-8SkG4>~ z=6Ku8&N;IhH+dTQ=?7-g4i<*OO?1l?}wO^Aa_7qT!A(H)Knnz@%Bd`WvJ6 zJgEg6qKrGM^S~QPEq`wYPf6)rB;3U$>~gW z5MZ)I##w+_lBV%^&Ch1Nuo?e*O)IFsLH?4g+W1|^EBm9rw;l(sfe)W)XtHVb1m&V6Rt4ah~ObE({4&XlnEuO7$S=g{&M zUIezjJ`QYnjbZ_I9tvN}=4~GJbj(-ihr=0v6h;D%KdWja!&m`ypg)&l^Ei^%+4E#N^;IW`M*#Ifn`Rl}i#$_I$mG^`H$gINJH~BS2*?pSiZ_ zKtk9$Y1?vy+9raSSY$3S#0RZ)iJtRoo_7ys6?VeRED;fUaym;Z$0JIiMROQ!paQh> z`Tgq*>L#cbhOGrSgHaHY-+~?G|DtKA(lGfioLVH-ozZWWJ=t|m zVf-;Nx$|Z^e&^1zYEj(w-+jyTv@+a?pIn!VY86F(vO>YX+3=7jmCvy+^O^irhx5~f z0v8~BK@jFb1#m16`VGC9lPR_=RR`x85&0Aan+B)9)GCOG>CI!rwRm6xjz(a%X{(uS z#Ns44tui??csC`ho3;lpmCU=wVhu1XIelxf17iu8PKA;B9Qs=qCWVdqOZ!XFz7Xaq zt>`x_oI|TTwyaeim+QJe)<=o|x_iySpkKx}vi0=))Z3k;Bg_7~htg5WBsleq;Ho}cu60~+L3K*4LoNE_G{aBFJXaAbTxu|SeK9y-WMB>+% zqwY29PduZCnLJb(I$FNE=v!}1USWoTLfvbx-#ByK=|NRKD^y$t$K?Re|8({rF z91-taX!w%OLI-j8(#->{DYTPdlS9SEF1qrYuNg(rCa3B! zuXTYPOtAlAW@dGVzQmM?>@lG4l+qwu7(?D)o6JGENR$hg2jjP9Jnk9-EvYT{;K3;; ztTp64!z&I^n#G)gthsD!y1X&8YbfON9&Zmud6epP#i>2*_%P5yo$Z_brU4SF!{a^R z{ds+T>S9YxRX&LFb#ueCW~?x8OIWT@Sn06e3ePAG<7wFO5XOFia4T`bnUXpgz7mY_ zzDc*^ ziYGYmW8KByP|^B}?sGBdri3=uH5N zA&OJy6^=N&2tNcab_QlikYA0&Qq+E3eE#P_ll`Ux*95`922By0e7{ct)Crl4edng4 z$?SiN<{^~y*s@Nxe8y}pKS}PB#EL7oY?NRq8hA%C;V(#em;I^(kl56lklXR?FJZrd z;7UJm75_>;zOKiC|VvtKyUeR znI^*jIz{J2?JzdlmYgj1hgeA|<$O~lJdyNN27K=Kjbo0-)t1}QCliqSO`jmIzXNWQ za!$j78NH3}+{0L>75m$$;5ijC*z|!Zyvc&Z1nMfcPG+8c1O!v&z=#DHNXm0woUnudQnXd^O!mZ{H~Cx`uH><2D3-o}*Sb-~ z?@$C!n1P?gSH1GGJ*h!zr*q2avtdKkgkQbSWjkGGaJ13s*B2+w<04GnP4DA(!&{^`@S<95V8KZcz-B&AasSBgz||X<8l|y1 z#^@z#8t@eD1+iji0n^f$H^{EBO{~o(YitOxEx~#=Xx`5d@)-eNs2yIvE$h0`X{rF3 z2I*+LbqfZs!xlx)>zy7Kj+&*XSQ<_#?fHjiemd-nx<{-^rwaK?+z*Ms{9NRnI3Yn7 zG6y6~XqUM1Wd}$`H!S>RjYG2J4&Z^sEvM+fgn%hLZIhvR4yjcOT}RM-NWv8@?FLCH zSbcLk%RD_vXJVb6BTNh-R8>=4ABY}6E4!7XG?*a8Mx;|PASg=%uLsqGEX%I*lF^Kd zUTbHGa3Bc6dhW{B7ri>x2US{*cd7d8+|bkSb~&o4Y<@f$lYNT5URuzQ*Y|C+Z8!I2 z`4^j3#mXIz&{!(T1ejh`Vng1+6aOS94jyG9ixI0f@${)i?pKu24DsOr8*yzxGHU-I`DmEiWb~nLXFSE=4PqNV z&a7p%7)ReRnG@g#m$1qHFR-_Ts@2HYLnLJ0&9?2E5p54^bxu?HB3sG;f~3K{s=9#s z!qa2u6ooU{Y;|ujZ(LFNG&dHjr)Kuk*5m#*Z0P)4y5|C;?$(zULpNEDls5gg&(DZv zv@{`c5=d^BTd9C(6A=mm$F`E(GZg0|R7*Xem>KhYVIr5mw#r4>iyoLhaFU#MMb9NE z{_}eAtHXW}ON3Xk=u07%sc2r~Vw#x%kI??}_W2s5+ykEzt2Kj05ie8QjN2C`=yR^F z?@&Z7NIDZf9Qd~2eU&!rZ%G*do@61i2#JGy;M_28gxlbu+%(&J%~j@Qj0Zw+3C&Ug z*e|}y_y3ri!5s2%jS^co{`BHJj>nyJCR1rrdE@EH%Tpy2R{O=tj2=hmB zkKQ*etft_#8>gytuyuS8^kHr>Gsq{lD5;;3Ko%)Au*H=93W9dz{`Ido%C*A|>bJ2N zsU296U;SHC!Y`lade>_QFhMxx1r`wY%d+>-_$?(<9-7@-fccj9Rh>}oM`0533Oo;B zo%^i5NF^{Qi)zB~jF-W$(Og)I^goWX9G&*KO%J4hd{TZAWYnNJFzWN|>l1r)K0NxW zFl!w?@>NbP@Lcg$D%yqZ+Tn%6TSh;brkE6%!}EcCEVvK#cE^{$OS~+gRP22pKy*3_ ztf*)TZy~D6_5MRfdTq&W`UZF&p2VIWk|2~lbIaaLF6$&8@mp^HAnKE}PNd*$-I05{ z*JYp0cynZXqbK5i&gY z1SCd;cHgM2DC8a{-{86tl1>95%jS!6XfOT}s1MO_x?e9cq)t7g^lodUaE!TwMWRz` z7_UZFP>d>elx?&_EJM|H|K$U;$|2_>)YJFFB z+PLZ_3VxlClQ)NiU`;KJ9iPG@1YIB+YddW?uZntRf>u~!>ATN%4%^D|He6sIukm

~>+&K6_1+EP79b4W=qvZ1mY0w}fC=QkU&ke@waRB{MH)z4y3iNj^ z*yMI5tXsa>x*NGzMi*MrafYQvb=nA1aSoJ>ML2I!*{^DTB?B?9P&0zw7^yN|keC*n zQWSi-fqK!ZMJG*SUQh=Y1+}g~4p+ElS_iHYB2PZ3VGGH}0g;Z)eO+uQIV6A{t@o_x z*4BCUu4|WiHlc9;;dIZ1L3<6@zZ#z;NlNZ`m#GLECKQ8#iD?HHKP0tND-JOM-A;ht z#2Q?>27w4^?2lI^(d{?+a=wjUb6F`f`>VZqxex0;T@0y^ky~MmOsOO@PEI&Mm@G(l z?L5l>>=SlHASEdkf%IJM@+kc4zRTn2D3Zfkhphgz5REiy65&}xNPd|~MpG6!L@gKG zWI?`ly@|})pw@UvsmB>j!&1|QGQA1Uyoye=4 z&?)pm{ay}X)Qx&3{@uzln@l>i52ywsLF5x&u0~exxAhkGm=ah!1@~seX6W{g!MDqC zqu0Aikv$(#Ev$Add-vHM6lm{t9`NUgka1HS;ZB2S$q4GvsgQu6|H!G5#HY8i0_Ifc z)oyZ*(KG7bUJfsQ7Lhl1+O4_M-I5ADf^9fnt{lHmaofVJgdPSQPA(us82F#!Twmhq zav^?Qf$j^fQo;MJPv>{Lt;+r_8}>s42dlkVYSOLe=N(iNRMG{-qHc}B*Gc$M8}rzh zK`M_Z<;BT^dR(z6A`L4i4I@1nlHsw5^!oYgW0#KmV(QlG0r19Vy+mYu zxT-Su0o}c4^M_?>zti_eNW=br^Z+Kr;sZ;H~oMkNnqj?GW%ytfUHQEp0v0+Q&)`uKV?LV5!Tw z+w0L2v~p?bjNb$}O(C~zZ11uu=t`s>6WyvD7!#>7fRWu~v=Z)c_ekkpx*d+aW;gkI z2cUZ2U=d=#?M;i$ZY$#fDq4a}aUZ+O`PU)NHcaT4pD*$GzFYKXln0-E%3ZCK~0G! z?%?L4PIA}l{!e$C4VY;4BUQ-RINdOt2OR^(P)uF#hkg?a3Kv_bCrK@y4&<>*7W}<` zo5lv(lWecMjqo{P5A8Oq5L0K!U1bGHC`SIFYs=fZ?{$y$C}CikJc$g>7nBC!%UA|@ zMC6>pe?Jp0A_T9#i@gl+tz=3zP z$Wf+@*+g)M;14~O9jj?BQhA$VXywkc40}4fE4k~h>VWRQ^PgF;N=ttL^Vn&4He!fI z^^mCZTJWE^3R1xL8)aSJe;!q`o*UcXo=4e)`gA6dq?E$gQ@0f=ab)w434fLMM(H$` zo-g%7v_m#Wvbz8LULdBT?t)KkPV|*XlE-o4(Px91t6SA=%slt8b#Lp@AKL0+yAsi} z(CoxVA?eOW%yYN>B;01ZNgcltu$o!G7GT9YM1wM$d zNZN$7Cd!q@n-tOD(S)TOjuLZwZKl^0(HJ)!u7sadIFVL3G-7B!pWY3(1cCT>`XN3SShA0NkfUgOb-+ZARF8y>7+Prm(QYED{4?uy3*eN(>~) z2MU8tbWgkO5u@v`{(e#?c3-`U4N(f6998C~Ez~GqBXJgws&=DggBdR>7<%&REE2b# zpST>NGPcaiu~pip7WO?m;C6>U^=q74RD#;d-A#6Ui zw1dI}RrVZb+B9CMDQ=UmH`&u0T}gDMoM8xfXmwaD=}U+fagJ`OqlBT$1q~LM{$U0h zK%`W8pB)y3@5#93KU{6fIHPvWn${`TSVZzTE;;aHlgoW)c4zJ0GH>hG<{K0(2`zZ! z!xFV%JD|9{5w#W06zbxZD^x_DJv-*uQS7x4i)-tP@8?;r4H?6r>D*%Q=`@=J|53-d7*(NfQ-kw_J+dlq zm77A%WYJemO50wx=8<}{2kx%1#_gybvCG$bnk0UBW7+*=|h+e!$;QKQv{=l z!uT%%lZXRv5|cJT$eWK$W@{>xJIr_)giBGf%wrKpCokux0B}O2qpmE6 zzmPF0qGOcMoKr_7kYCZ=Iur0?68k-byW`&jkT{hlqdxrtKz?iFb9sG;UB#_ZQBeuI z)py5sc3V?yF%H=N7P$DhnjKB?@~2{3sx$H1tuHDftMG~Bu8P?kcyqKVjsTCOc-U;O zsym5U{$aJPw-Sapwl+Mm2|{EP&X}A+Hm9kZOHqbwATs^jSCDzAyL>-T3*OQcW}?W$ ziqmWhCt{r2*bvz7eRP`_?;7y%p=i7EGo6j94x2a^=@H{?+&pUn`JXuWq}#9eINO&{ zxf9Aor=ABR6p7!{r&mz|Ku8U+x`)Xs`n2_9Lmq^QNRmDN=okJ*{zy($DZcy5@ozAp zRvaU9GUNp9K|Dkb)juLO;z_hETNTq_L_@zoZ!qTPrx1gHI58H_(4}zTYMaNT@Yr-H zTID#+Xhl=Jp4%zw?L3+UPP4h6&chRcsqhwS7uPby7D2yng86U^C1`)m^nUe)JLae^-t@(mus+s-&ej`4zY^PE6*}j}q5fnS zkmlr6`E|;4nf8g!?R%>5@W$f_9-0j1Q$>aJ`&W*L-Iu#DXn71l*w}1Dk%58(f^Vi@ zZ8kc!bVmbcNks{NIc~hdb}#k|`#q|X#>Keo^&1?&efA4> ze3ZK2>8xC2cUk#{cAhip>UbeaA6M0x{5$%Fp+WIeMengzI`WDT(AKnZMFg;+a<_fE za~uin-cMNp#mlw9OJbqiLrF;APY22eHJn9u;DFp~g3m4Q!$;HUHM5;4j`H^49ltrZ=CnQH zog_`f?yZ9U_U2wq{jWr@4W9A(f>#bDC$`IJWuWG5Gulh#bFmnV=B?FEIF6-Hn>M?efg%5 z)W_D>q7`JQvB>%Uois~>Z2zDM9Ng%YqCl?<7-h6P-KNu-$vizQ#Mq!5F|+h5+V8md zdOMhB6Dlk@?tZRyeQ0Xxa7tNZ?7wiJo`xuaBJBxNNay}rgo(oFqXpXACT7!N=~^;> z`fZ+(@UJIzxH`Q8$54h0lffjICM1(J3Lh&7UftcHbT<84&;Ebqy$bPG+#uiB7y!R+ z?bys%!O~t8Hmc4fktcxf9dv)R*mgR=jS#sv7n&8vw;~~M+q17)cDVcL@bTh&n!x0j zIO%A|dAmAuO43CVr3;@>Q(jfm;Z!Xg*VpH@QK^AHtfFL}+x`Q>&+{yt%rAh2)14+E zH|AQFABjzm{i~#crG7pow~y?&p}VE6unGb;33Gu5;_r-Y9T9pfLkmZjS9SnTs<_x% zyY4c|<={-j-OiUWD1pp79D{ee*C#U+45)vr;R5>ZBiESjF0*D~B4Xe&b32&(CA?H; zw$d|)fh9LaYpUXNJvH6IM;1Zh*gU>n_K!LkCE#P#vjoFCwv{WTmi8>nNG^;AjYh^h zgaDMz5*hy)bQ##R{k&C1{y$*eIR@qgs~dJXbd~T6{~l3Mt>C>LBg|w+w;`h@MtN}i z6GKrP+PwcDex1MeSRFB8l`+i~>Yl#DFz27vksRhg7T>IAHeB>^vZNe5ewjcM_1v|; z4&XvODJi2KyT2w!5Ea-4_A3zVZ+Hgb^M+bJ$2F}y3*;)7LdyFbHV8d;48MF4NsRc8 z@i4mejt)XW7L}*0#;B;uz6R{B31|#DdALXw+yZE>H7BmVKYm}^uZ+r+qy9%Onj}fPoW{0_+ zdZrc#qvz{&PPwl-0LV2W2&CIH%} zP~{QV)K}AizwagJ1Lpjdh5%Z`Pk`Hg>QBe8VM$^&3V7PWHROvWNX=mS_1)68VLOc4t_vQSAz~@Iy0`pPCBJpE# z$5bdyjry;k{h#iNyM2?$*6sJJd-Xa_HB7+kmb&S&#OqxAm!`p+w)a2}IZ2*o001-} zUIo9{X~FXp`5nmrD)?=ho1fZLq>oW-;IopZy`A(30`BViK=4|M<)R$L8~Wm0JQ;yt zfju_P6$oTEl-pZo&@o*dS9rhRy59ZV8)P)O<(mI%`wc@1{FZ1Nn4ove#9SY2qEnW( zBKMf{WOQA7pMHt+{r7R$G-~+m#q+@-f1R$(IupK7pDbNC?;FMq6}5@sS=u7}yPaF3 zo(u`gXE1g3%vN?|-ls(eBa^4$@|j$%QP0%R>Gj+ac}O=oB3EA!{~3)xGmi0TPn~e5 zhj)#x$cXT=X1Ry?^_ZLuKKw1w6emv`t(Ebdpt0ipX#dlI|K;R%cHJrJzb>pFTVIqc zM55;WAuGYDuKHahGKCB+mI>0ss`)iU5?1j~K3N4_v@z%B{Wf%+|LgMW#SfF<-$HSs zsu~fhOL2OU`Qz{UjU6%iIFO==_tZ=s*BQZElqfNr{SXa&KRqR>?D`_nTu zP~R-0W*Mz1h3alN*<#Nn?x-Y(J4B{yYV626;9|un+cKlL?0HAf_u=f*b0-F>j#~~q zr?iTbwUDvY+Ap{oVY{3fJl#NOx>9s-0)j?sLKt~dZ;oD%+)TE%xn<}B?b{;7f&YvY zRQ{ZiX=`{cj#?9EsAfaQuB&==Z1A)ceN}#|%5&>n*oAAbf=|$8-OS4;Rt~|uA+zlE zzhEss`&ig;sJ|MYT6UbEa2ie5il#OZ{AYqi`bW^c>L~Q*BrdM)dTYuUUSE{3i!~yD zm?c-@)s_RgSDD;;4$H@NSP5huVEGYY9FbnT_qL|7iYekpUST>^_AhHRokNfG;3GoE za~eWN0xiUADTVtxv5=9!h=WjYK&%t@RDdJ+!JJ9wpt@gmpNoDpuMBR!#z8h=D_T7x z9{K@KXHC8+q>o#(Br_%lB`%NX|XbKUd=Gl!B)(?nVC? zYzPd^j3A<89|`^=jK|yx9+ZSiB>iI9ZnUE@m3+1tL?#W$cM?nu5eXBakrklP3illB zV~3ms`5VXjU%$FB0KfXlT%u7fM=}{^QTuNmamd@Ak+;3jfb?c<@Q=kr7A^M z0e8LfLgVUGHwBitx^UdnlK8L2tLmouBbpNjx>zDRlQ9`_dJMO73-oD8_cFC7XX|(Nu?3nDu?E}qW;jBqsI~fEP>w zXfFWsTKgbh67@C=}L zwb5uz_X_!HbQK_#Kg6gNdxsyIT1g|&nGReAXY14 G6#ReG35g&8 literal 0 HcmV?d00001 diff --git a/src/frontend/dist/assets/chat-DTYOBy9Z.js b/src/frontend/dist/assets/chat-QK3nMaK5.js similarity index 99% rename from src/frontend/dist/assets/chat-DTYOBy9Z.js rename to src/frontend/dist/assets/chat-QK3nMaK5.js index 1021d97b..9118f7aa 100644 --- a/src/frontend/dist/assets/chat-DTYOBy9Z.js +++ b/src/frontend/dist/assets/chat-QK3nMaK5.js @@ -1,4 +1,4 @@ -import{a as A,g as N,r as x,u as H,j as a,s as T,c as W,b as z,d as U,m as V,h as Te,q as ze,v as Le,w as I,i as ee,n as Me,x as Re,l as je,S as ne,p as le}from"./index-CKPnC4Q3.js";import{i as Z,b as qe,c as ie,F as $e,u as re,f as te,O as Ae,d as Ne,e as He,S as We,D as Ue,g as Ee,C as De}from"./main-layout-_30RNP4s.js";function Oe(e){return A("MuiFormControl",e)}N("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const Be=e=>{const{classes:r,margin:t,fullWidth:o}=e,s={root:["root",t!=="none"&&`margin${z(t)}`,o&&"fullWidth"]};return U(s,Oe,r)},_e=T("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[`margin${z(t.margin)}`],t.fullWidth&&r.fullWidth]}})({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top",variants:[{props:{margin:"normal"},style:{marginTop:16,marginBottom:8}},{props:{margin:"dense"},style:{marginTop:8,marginBottom:4}},{props:{fullWidth:!0},style:{width:"100%"}}]}),Ke=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiFormControl"}),{children:s,className:l,color:i="primary",component:p="div",disabled:n=!1,error:d=!1,focused:m,fullWidth:b=!1,hiddenLabel:h=!1,margin:g="none",required:f=!1,size:u="medium",variant:c="outlined",...y}=o,P={...o,color:i,component:p,disabled:n,error:d,fullWidth:b,hiddenLabel:h,margin:g,required:f,size:u,variant:c},G=Be(P),[F,J]=x.useState(()=>{let C=!1;return s&&x.Children.forEach(s,v=>{if(!Z(v,["Input","Select"]))return;const j=Z(v,["Select"])?v.props.input:v;j&&qe(j.props)&&(C=!0)}),C}),[E,L]=x.useState(()=>{let C=!1;return s&&x.Children.forEach(s,v=>{Z(v,["Input","Select"])&&(ie(v.props,!0)||ie(v.props.inputProps,!0))&&(C=!0)}),C}),[D,M]=x.useState(!1);n&&D&&M(!1);const O=m!==void 0&&!n?m:D;let B;x.useRef(!1);const _=x.useCallback(()=>{L(!0)},[]),R=x.useCallback(()=>{L(!1)},[]),Q=x.useMemo(()=>({adornedStart:F,setAdornedStart:J,color:i,disabled:n,error:d,filled:E,focused:O,fullWidth:b,hiddenLabel:h,size:u,onBlur:()=>{M(!1)},onFocus:()=>{M(!0)},onEmpty:R,onFilled:_,registerEffect:B,required:f,variant:c}),[F,i,n,d,E,O,b,h,B,R,_,f,u,c]);return a.jsx($e.Provider,{value:Q,children:a.jsx(_e,{as:p,ownerState:P,className:W(G.root,l),ref:t,...y,children:s})})});function Ve(e){return A("MuiFormHelperText",e)}const de=N("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);var ce;const Ge=e=>{const{classes:r,contained:t,size:o,disabled:s,error:l,filled:i,focused:p,required:n}=e,d={root:["root",s&&"disabled",l&&"error",o&&`size${z(o)}`,t&&"contained",p&&"focused",i&&"filled",n&&"required"]};return U(d,Ve,r)},Je=T("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,t.size&&r[`size${z(t.size)}`],t.contained&&r.contained,t.filled&&r.filled]}})(V(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.caption,textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${de.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${de.error}`]:{color:(e.vars||e).palette.error.main},variants:[{props:{size:"small"},style:{marginTop:4}},{props:({ownerState:r})=>r.contained,style:{marginLeft:14,marginRight:14}}]}))),Qe=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiFormHelperText"}),{children:s,className:l,component:i="p",disabled:p,error:n,filled:d,focused:m,margin:b,required:h,variant:g,...f}=o,u=re(),c=te({props:o,muiFormControl:u,states:["variant","size","disabled","error","filled","focused","required"]}),y={...o,component:i,contained:c.variant==="filled"||c.variant==="outlined",variant:c.variant,size:c.size,disabled:c.disabled,error:c.error,filled:c.filled,focused:c.focused,required:c.required};delete y.ownerState;const P=Ge(y);return a.jsx(Je,{as:i,className:W(P.root,l),ref:t,...f,ownerState:y,children:s===" "?ce||(ce=a.jsx("span",{className:"notranslate","aria-hidden":!0,children:"​"})):s})});function Xe(e){return A("MuiFormLabel",e)}const $=N("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),Ye=e=>{const{classes:r,color:t,focused:o,disabled:s,error:l,filled:i,required:p}=e,n={root:["root",`color${z(t)}`,s&&"disabled",l&&"error",i&&"filled",o&&"focused",p&&"required"],asterisk:["asterisk",l&&"error"]};return U(n,Xe,r)},Ze=T("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,t.color==="secondary"&&r.colorSecondary,t.filled&&r.filled]}})(V(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.body1,lineHeight:"1.4375em",padding:0,position:"relative",variants:[...Object.entries(e.palette).filter(Te()).map(([r])=>({props:{color:r},style:{[`&.${$.focused}`]:{color:(e.vars||e).palette[r].main}}})),{props:{},style:{[`&.${$.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${$.error}`]:{color:(e.vars||e).palette.error.main}}}]}))),er=T("span",{name:"MuiFormLabel",slot:"Asterisk"})(V(({theme:e})=>({[`&.${$.error}`]:{color:(e.vars||e).palette.error.main}}))),rr=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiFormLabel"}),{children:s,className:l,color:i,component:p="label",disabled:n,error:d,filled:m,focused:b,required:h,...g}=o,f=re(),u=te({props:o,muiFormControl:f,states:["color","required","focused","disabled","error","filled"]}),c={...o,color:u.color||"primary",component:p,disabled:u.disabled,error:u.error,filled:u.filled,focused:u.focused,required:u.required},y=Ye(c);return a.jsxs(Ze,{as:p,ownerState:c,className:W(y.root,l),ref:t,...g,children:[s,u.required&&a.jsxs(er,{ownerState:c,"aria-hidden":!0,className:y.asterisk,children:[" ","*"]})]})});function tr(e){return A("MuiInputLabel",e)}N("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const or=e=>{const{classes:r,formControl:t,size:o,shrink:s,disableAnimation:l,variant:i,required:p}=e,n={root:["root",t&&"formControl",!l&&"animated",s&&"shrink",o&&o!=="medium"&&`size${z(o)}`,i],asterisk:[p&&"asterisk"]},d=U(n,tr,r);return{...r,...d}},sr=T(rr,{shouldForwardProp:e=>ze(e)||e==="classes",name:"MuiInputLabel",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[{[`& .${$.asterisk}`]:r.asterisk},r.root,t.formControl&&r.formControl,t.size==="small"&&r.sizeSmall,t.shrink&&r.shrink,!t.disableAnimation&&r.animated,t.focused&&r.focused,r[t.variant]]}})(V(({theme:e})=>({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",variants:[{props:({ownerState:r})=>r.formControl,style:{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"}},{props:{size:"small"},style:{transform:"translate(0, 17px) scale(1)"}},{props:({ownerState:r})=>r.shrink,style:{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"}},{props:({ownerState:r})=>!r.disableAnimation,style:{transition:e.transitions.create(["color","transform","max-width"],{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut})}},{props:{variant:"filled"},style:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"filled",size:"small"},style:{transform:"translate(12px, 13px) scale(1)"}},{props:({variant:r,ownerState:t})=>r==="filled"&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"}},{props:({variant:r,ownerState:t,size:o})=>r==="filled"&&t.shrink&&o==="small",style:{transform:"translate(12px, 4px) scale(0.75)"}},{props:{variant:"outlined"},style:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"outlined",size:"small"},style:{transform:"translate(14px, 9px) scale(1)"}},{props:({variant:r,ownerState:t})=>r==="outlined"&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}}]}))),ar=x.forwardRef(function(r,t){const o=H({name:"MuiInputLabel",props:r}),{disableAnimation:s=!1,margin:l,shrink:i,variant:p,className:n,...d}=o,m=re();let b=i;typeof b>"u"&&m&&(b=m.filled||m.focused||m.adornedStart);const h=te({props:o,muiFormControl:m,states:["size","variant","required","focused"]}),g={...o,disableAnimation:s,formControl:m,shrink:b,size:h.size,variant:h.variant,required:h.required,focused:h.focused},f=or(g);return a.jsx(sr,{"data-shrink":b,ref:t,className:W(f.root,n),...d,ownerState:g,classes:f})});function nr(e){return A("MuiTextField",e)}N("MuiTextField",["root"]);const lr={standard:He,filled:Ne,outlined:Ae},ir=e=>{const{classes:r}=e;return U({root:["root"]},nr,r)},dr=T(Ke,{name:"MuiTextField",slot:"Root"})({}),cr=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiTextField"}),{autoComplete:s,autoFocus:l=!1,children:i,className:p,color:n="primary",defaultValue:d,disabled:m=!1,error:b=!1,FormHelperTextProps:h,fullWidth:g=!1,helperText:f,id:u,InputLabelProps:c,inputProps:y,InputProps:P,inputRef:G,label:F,maxRows:J,minRows:E,multiline:L=!1,name:D,onBlur:M,onChange:O,onFocus:B,placeholder:_,required:R=!1,rows:Q,select:C=!1,SelectProps:v,slots:j={},slotProps:pe={},type:ue,value:oe,variant:K="outlined",...me}=o,S={...o,autoFocus:l,color:n,disabled:m,error:b,fullWidth:g,multiline:L,required:R,select:C,variant:K},fe=ir(S),k=Le(u),X=f&&k?`${k}-helper-text`:void 0,se=F&&k?`${k}-label`:void 0,xe=lr[K],w={slots:j,slotProps:{input:P,inputLabel:c,htmlInput:y,formHelperText:h,select:v,...pe}},q={},Y=w.slotProps.inputLabel;K==="outlined"&&(Y&&typeof Y.shrink<"u"&&(q.notched=Y.shrink),q.label=F),C&&((!v||!v.native)&&(q.id=void 0),q["aria-describedby"]=void 0);const[be,he]=I("root",{elementType:dr,shouldForwardComponentProp:!0,externalForwardedProps:{...w,...me},ownerState:S,className:W(fe.root,p),ref:t,additionalProps:{disabled:m,error:b,fullWidth:g,required:R,color:n,variant:K}}),[ve,ge]=I("input",{elementType:xe,externalForwardedProps:w,additionalProps:q,ownerState:S}),[ye,Ce]=I("inputLabel",{elementType:ar,externalForwardedProps:w,ownerState:S}),[Fe,Se]=I("htmlInput",{elementType:"input",externalForwardedProps:w,ownerState:S}),[ke,we]=I("formHelperText",{elementType:Qe,externalForwardedProps:w,ownerState:S}),[Pe,Ie]=I("select",{elementType:We,externalForwardedProps:w,ownerState:S}),ae=a.jsx(ve,{"aria-describedby":X,autoComplete:s,autoFocus:l,defaultValue:d,fullWidth:g,multiline:L,name:D,rows:Q,maxRows:J,minRows:E,type:ue,value:oe,id:k,inputRef:G,onBlur:M,onChange:O,onFocus:B,placeholder:_,inputProps:Se,slots:{input:j.htmlInput?Fe:void 0},...ge});return a.jsxs(be,{...he,children:[F!=null&&F!==""&&a.jsx(ye,{htmlFor:k,id:se,...Ce,children:F}),C?a.jsx(Pe,{"aria-describedby":X,id:k,labelId:se,value:oe,input:ae,...Ie,children:i}):ae,f&&a.jsx(ke,{id:X,...we,children:f})]})});/** +import{a as A,g as N,r as x,u as H,j as a,s as T,c as W,b as z,d as U,m as V,h as Te,q as ze,v as Le,w as I,i as ee,n as Me,x as Re,l as je,S as ne,p as le}from"./index-2agzu340.js";import{i as Z,b as qe,c as ie,F as $e,u as re,f as te,O as Ae,d as Ne,e as He,S as We,D as Ue,g as Ee,C as De}from"./main-layout-BwvpTOaC.js";function Oe(e){return A("MuiFormControl",e)}N("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const Be=e=>{const{classes:r,margin:t,fullWidth:o}=e,s={root:["root",t!=="none"&&`margin${z(t)}`,o&&"fullWidth"]};return U(s,Oe,r)},_e=T("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,r[`margin${z(t.margin)}`],t.fullWidth&&r.fullWidth]}})({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top",variants:[{props:{margin:"normal"},style:{marginTop:16,marginBottom:8}},{props:{margin:"dense"},style:{marginTop:8,marginBottom:4}},{props:{fullWidth:!0},style:{width:"100%"}}]}),Ke=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiFormControl"}),{children:s,className:l,color:i="primary",component:p="div",disabled:n=!1,error:d=!1,focused:m,fullWidth:b=!1,hiddenLabel:h=!1,margin:g="none",required:f=!1,size:u="medium",variant:c="outlined",...y}=o,P={...o,color:i,component:p,disabled:n,error:d,fullWidth:b,hiddenLabel:h,margin:g,required:f,size:u,variant:c},G=Be(P),[F,J]=x.useState(()=>{let C=!1;return s&&x.Children.forEach(s,v=>{if(!Z(v,["Input","Select"]))return;const j=Z(v,["Select"])?v.props.input:v;j&&qe(j.props)&&(C=!0)}),C}),[E,L]=x.useState(()=>{let C=!1;return s&&x.Children.forEach(s,v=>{Z(v,["Input","Select"])&&(ie(v.props,!0)||ie(v.props.inputProps,!0))&&(C=!0)}),C}),[D,M]=x.useState(!1);n&&D&&M(!1);const O=m!==void 0&&!n?m:D;let B;x.useRef(!1);const _=x.useCallback(()=>{L(!0)},[]),R=x.useCallback(()=>{L(!1)},[]),Q=x.useMemo(()=>({adornedStart:F,setAdornedStart:J,color:i,disabled:n,error:d,filled:E,focused:O,fullWidth:b,hiddenLabel:h,size:u,onBlur:()=>{M(!1)},onFocus:()=>{M(!0)},onEmpty:R,onFilled:_,registerEffect:B,required:f,variant:c}),[F,i,n,d,E,O,b,h,B,R,_,f,u,c]);return a.jsx($e.Provider,{value:Q,children:a.jsx(_e,{as:p,ownerState:P,className:W(G.root,l),ref:t,...y,children:s})})});function Ve(e){return A("MuiFormHelperText",e)}const de=N("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);var ce;const Ge=e=>{const{classes:r,contained:t,size:o,disabled:s,error:l,filled:i,focused:p,required:n}=e,d={root:["root",s&&"disabled",l&&"error",o&&`size${z(o)}`,t&&"contained",p&&"focused",i&&"filled",n&&"required"]};return U(d,Ve,r)},Je=T("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,t.size&&r[`size${z(t.size)}`],t.contained&&r.contained,t.filled&&r.filled]}})(V(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.caption,textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,[`&.${de.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${de.error}`]:{color:(e.vars||e).palette.error.main},variants:[{props:{size:"small"},style:{marginTop:4}},{props:({ownerState:r})=>r.contained,style:{marginLeft:14,marginRight:14}}]}))),Qe=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiFormHelperText"}),{children:s,className:l,component:i="p",disabled:p,error:n,filled:d,focused:m,margin:b,required:h,variant:g,...f}=o,u=re(),c=te({props:o,muiFormControl:u,states:["variant","size","disabled","error","filled","focused","required"]}),y={...o,component:i,contained:c.variant==="filled"||c.variant==="outlined",variant:c.variant,size:c.size,disabled:c.disabled,error:c.error,filled:c.filled,focused:c.focused,required:c.required};delete y.ownerState;const P=Ge(y);return a.jsx(Je,{as:i,className:W(P.root,l),ref:t,...f,ownerState:y,children:s===" "?ce||(ce=a.jsx("span",{className:"notranslate","aria-hidden":!0,children:"​"})):s})});function Xe(e){return A("MuiFormLabel",e)}const $=N("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),Ye=e=>{const{classes:r,color:t,focused:o,disabled:s,error:l,filled:i,required:p}=e,n={root:["root",`color${z(t)}`,s&&"disabled",l&&"error",i&&"filled",o&&"focused",p&&"required"],asterisk:["asterisk",l&&"error"]};return U(n,Xe,r)},Ze=T("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[r.root,t.color==="secondary"&&r.colorSecondary,t.filled&&r.filled]}})(V(({theme:e})=>({color:(e.vars||e).palette.text.secondary,...e.typography.body1,lineHeight:"1.4375em",padding:0,position:"relative",variants:[...Object.entries(e.palette).filter(Te()).map(([r])=>({props:{color:r},style:{[`&.${$.focused}`]:{color:(e.vars||e).palette[r].main}}})),{props:{},style:{[`&.${$.disabled}`]:{color:(e.vars||e).palette.text.disabled},[`&.${$.error}`]:{color:(e.vars||e).palette.error.main}}}]}))),er=T("span",{name:"MuiFormLabel",slot:"Asterisk"})(V(({theme:e})=>({[`&.${$.error}`]:{color:(e.vars||e).palette.error.main}}))),rr=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiFormLabel"}),{children:s,className:l,color:i,component:p="label",disabled:n,error:d,filled:m,focused:b,required:h,...g}=o,f=re(),u=te({props:o,muiFormControl:f,states:["color","required","focused","disabled","error","filled"]}),c={...o,color:u.color||"primary",component:p,disabled:u.disabled,error:u.error,filled:u.filled,focused:u.focused,required:u.required},y=Ye(c);return a.jsxs(Ze,{as:p,ownerState:c,className:W(y.root,l),ref:t,...g,children:[s,u.required&&a.jsxs(er,{ownerState:c,"aria-hidden":!0,className:y.asterisk,children:[" ","*"]})]})});function tr(e){return A("MuiInputLabel",e)}N("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const or=e=>{const{classes:r,formControl:t,size:o,shrink:s,disableAnimation:l,variant:i,required:p}=e,n={root:["root",t&&"formControl",!l&&"animated",s&&"shrink",o&&o!=="medium"&&`size${z(o)}`,i],asterisk:[p&&"asterisk"]},d=U(n,tr,r);return{...r,...d}},sr=T(rr,{shouldForwardProp:e=>ze(e)||e==="classes",name:"MuiInputLabel",slot:"Root",overridesResolver:(e,r)=>{const{ownerState:t}=e;return[{[`& .${$.asterisk}`]:r.asterisk},r.root,t.formControl&&r.formControl,t.size==="small"&&r.sizeSmall,t.shrink&&r.shrink,!t.disableAnimation&&r.animated,t.focused&&r.focused,r[t.variant]]}})(V(({theme:e})=>({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%",variants:[{props:({ownerState:r})=>r.formControl,style:{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"}},{props:{size:"small"},style:{transform:"translate(0, 17px) scale(1)"}},{props:({ownerState:r})=>r.shrink,style:{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"}},{props:({ownerState:r})=>!r.disableAnimation,style:{transition:e.transitions.create(["color","transform","max-width"],{duration:e.transitions.duration.shorter,easing:e.transitions.easing.easeOut})}},{props:{variant:"filled"},style:{zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"filled",size:"small"},style:{transform:"translate(12px, 13px) scale(1)"}},{props:({variant:r,ownerState:t})=>r==="filled"&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"}},{props:({variant:r,ownerState:t,size:o})=>r==="filled"&&t.shrink&&o==="small",style:{transform:"translate(12px, 4px) scale(0.75)"}},{props:{variant:"outlined"},style:{zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"}},{props:{variant:"outlined",size:"small"},style:{transform:"translate(14px, 9px) scale(1)"}},{props:({variant:r,ownerState:t})=>r==="outlined"&&t.shrink,style:{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}}]}))),ar=x.forwardRef(function(r,t){const o=H({name:"MuiInputLabel",props:r}),{disableAnimation:s=!1,margin:l,shrink:i,variant:p,className:n,...d}=o,m=re();let b=i;typeof b>"u"&&m&&(b=m.filled||m.focused||m.adornedStart);const h=te({props:o,muiFormControl:m,states:["size","variant","required","focused"]}),g={...o,disableAnimation:s,formControl:m,shrink:b,size:h.size,variant:h.variant,required:h.required,focused:h.focused},f=or(g);return a.jsx(sr,{"data-shrink":b,ref:t,className:W(f.root,n),...d,ownerState:g,classes:f})});function nr(e){return A("MuiTextField",e)}N("MuiTextField",["root"]);const lr={standard:He,filled:Ne,outlined:Ae},ir=e=>{const{classes:r}=e;return U({root:["root"]},nr,r)},dr=T(Ke,{name:"MuiTextField",slot:"Root"})({}),cr=x.forwardRef(function(r,t){const o=H({props:r,name:"MuiTextField"}),{autoComplete:s,autoFocus:l=!1,children:i,className:p,color:n="primary",defaultValue:d,disabled:m=!1,error:b=!1,FormHelperTextProps:h,fullWidth:g=!1,helperText:f,id:u,InputLabelProps:c,inputProps:y,InputProps:P,inputRef:G,label:F,maxRows:J,minRows:E,multiline:L=!1,name:D,onBlur:M,onChange:O,onFocus:B,placeholder:_,required:R=!1,rows:Q,select:C=!1,SelectProps:v,slots:j={},slotProps:pe={},type:ue,value:oe,variant:K="outlined",...me}=o,S={...o,autoFocus:l,color:n,disabled:m,error:b,fullWidth:g,multiline:L,required:R,select:C,variant:K},fe=ir(S),k=Le(u),X=f&&k?`${k}-helper-text`:void 0,se=F&&k?`${k}-label`:void 0,xe=lr[K],w={slots:j,slotProps:{input:P,inputLabel:c,htmlInput:y,formHelperText:h,select:v,...pe}},q={},Y=w.slotProps.inputLabel;K==="outlined"&&(Y&&typeof Y.shrink<"u"&&(q.notched=Y.shrink),q.label=F),C&&((!v||!v.native)&&(q.id=void 0),q["aria-describedby"]=void 0);const[be,he]=I("root",{elementType:dr,shouldForwardComponentProp:!0,externalForwardedProps:{...w,...me},ownerState:S,className:W(fe.root,p),ref:t,additionalProps:{disabled:m,error:b,fullWidth:g,required:R,color:n,variant:K}}),[ve,ge]=I("input",{elementType:xe,externalForwardedProps:w,additionalProps:q,ownerState:S}),[ye,Ce]=I("inputLabel",{elementType:ar,externalForwardedProps:w,ownerState:S}),[Fe,Se]=I("htmlInput",{elementType:"input",externalForwardedProps:w,ownerState:S}),[ke,we]=I("formHelperText",{elementType:Qe,externalForwardedProps:w,ownerState:S}),[Pe,Ie]=I("select",{elementType:We,externalForwardedProps:w,ownerState:S}),ae=a.jsx(ve,{"aria-describedby":X,autoComplete:s,autoFocus:l,defaultValue:d,fullWidth:g,multiline:L,name:D,rows:Q,maxRows:J,minRows:E,type:ue,value:oe,id:k,inputRef:G,onBlur:M,onChange:O,onFocus:B,placeholder:_,inputProps:Se,slots:{input:j.htmlInput?Fe:void 0},...ge});return a.jsxs(be,{...he,children:[F!=null&&F!==""&&a.jsx(ye,{htmlFor:k,id:se,...Ce,children:F}),C?a.jsx(Pe,{"aria-describedby":X,id:k,labelId:se,value:oe,input:ae,...Ie,children:i}):ae,f&&a.jsx(ke,{id:X,...we,children:f})]})});/** * @license @tabler/icons-react v3.35.0 - MIT * * This source code is licensed under the MIT license. diff --git a/src/frontend/dist/assets/index-2agzu340.js b/src/frontend/dist/assets/index-2agzu340.js new file mode 100644 index 00000000..791efad1 --- /dev/null +++ b/src/frontend/dist/assets/index-2agzu340.js @@ -0,0 +1,320 @@ +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/setup-Ner6L8JU.js","assets/main-layout-BwvpTOaC.js","assets/main-layout-DVneG3Rq.css","assets/join-COUGJOTN.js","assets/chat-QK3nMaK5.js"])))=>i.map(i=>d[i]); +function _2(n,r){for(var l=0;lo[s]})}}}return Object.freeze(Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}))}(function(){const r=document.createElement("link").relList;if(r&&r.supports&&r.supports("modulepreload"))return;for(const s of document.querySelectorAll('link[rel="modulepreload"]'))o(s);new MutationObserver(s=>{for(const c of s)if(c.type==="childList")for(const d of c.addedNodes)d.tagName==="LINK"&&d.rel==="modulepreload"&&o(d)}).observe(document,{childList:!0,subtree:!0});function l(s){const c={};return s.integrity&&(c.integrity=s.integrity),s.referrerPolicy&&(c.referrerPolicy=s.referrerPolicy),s.crossOrigin==="use-credentials"?c.credentials="include":s.crossOrigin==="anonymous"?c.credentials="omit":c.credentials="same-origin",c}function o(s){if(s.ep)return;s.ep=!0;const c=l(s);fetch(s.href,c)}})();function La(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Mf={exports:{}},yl={};/** + * @license React + * react-jsx-runtime.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var eg;function k2(){if(eg)return yl;eg=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.fragment");function l(o,s,c){var d=null;if(c!==void 0&&(d=""+c),s.key!==void 0&&(d=""+s.key),"key"in s){c={};for(var h in s)h!=="key"&&(c[h]=s[h])}else c=s;return s=c.ref,{$$typeof:n,type:o,key:d,ref:s!==void 0?s:null,props:c}}return yl.Fragment=r,yl.jsx=l,yl.jsxs=l,yl}var tg;function z2(){return tg||(tg=1,Mf.exports=k2()),Mf.exports}var ee=z2(),wf={exports:{}},ye={};/** + * @license React + * react.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ng;function $2(){if(ng)return ye;ng=1;var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),s=Symbol.for("react.profiler"),c=Symbol.for("react.consumer"),d=Symbol.for("react.context"),h=Symbol.for("react.forward_ref"),p=Symbol.for("react.suspense"),m=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),b=Symbol.iterator;function E(w){return w===null||typeof w!="object"?null:(w=b&&w[b]||w["@@iterator"],typeof w=="function"?w:null)}var A={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},T=Object.assign,C={};function M(w,V,re){this.props=w,this.context=V,this.refs=C,this.updater=re||A}M.prototype.isReactComponent={},M.prototype.setState=function(w,V){if(typeof w!="object"&&typeof w!="function"&&w!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,w,V,"setState")},M.prototype.forceUpdate=function(w){this.updater.enqueueForceUpdate(this,w,"forceUpdate")};function D(){}D.prototype=M.prototype;function _(w,V,re){this.props=w,this.context=V,this.refs=C,this.updater=re||A}var $=_.prototype=new D;$.constructor=_,T($,M.prototype),$.isPureReactComponent=!0;var B=Array.isArray,k={H:null,A:null,T:null,S:null,V:null},L=Object.prototype.hasOwnProperty;function q(w,V,re,ie,oe,fe){return re=fe.ref,{$$typeof:n,type:w,key:V,ref:re!==void 0?re:null,props:fe}}function F(w,V){return q(w.type,V,void 0,void 0,void 0,w.props)}function K(w){return typeof w=="object"&&w!==null&&w.$$typeof===n}function G(w){var V={"=":"=0",":":"=2"};return"$"+w.replace(/[=:]/g,function(re){return V[re]})}var I=/\/+/g;function S(w,V){return typeof w=="object"&&w!==null&&w.key!=null?G(""+w.key):V.toString(36)}function ne(){}function H(w){switch(w.status){case"fulfilled":return w.value;case"rejected":throw w.reason;default:switch(typeof w.status=="string"?w.then(ne,ne):(w.status="pending",w.then(function(V){w.status==="pending"&&(w.status="fulfilled",w.value=V)},function(V){w.status==="pending"&&(w.status="rejected",w.reason=V)})),w.status){case"fulfilled":return w.value;case"rejected":throw w.reason}}throw w}function X(w,V,re,ie,oe){var fe=typeof w;(fe==="undefined"||fe==="boolean")&&(w=null);var se=!1;if(w===null)se=!0;else switch(fe){case"bigint":case"string":case"number":se=!0;break;case"object":switch(w.$$typeof){case n:case r:se=!0;break;case y:return se=w._init,X(se(w._payload),V,re,ie,oe)}}if(se)return oe=oe(w),se=ie===""?"."+S(w,0):ie,B(oe)?(re="",se!=null&&(re=se.replace(I,"$&/")+"/"),X(oe,V,re,"",function(Qe){return Qe})):oe!=null&&(K(oe)&&(oe=F(oe,re+(oe.key==null||w&&w.key===oe.key?"":(""+oe.key).replace(I,"$&/")+"/")+se)),V.push(oe)),1;se=0;var Oe=ie===""?".":ie+":";if(B(w))for(var Se=0;Se>>1,w=O[le];if(0>>1;les(ie,Q))oes(fe,ie)?(O[le]=fe,O[oe]=Q,le=oe):(O[le]=ie,O[re]=Q,le=re);else if(oes(fe,Q))O[le]=fe,O[oe]=Q,le=oe;else break e}}return Y}function s(O,Y){var Q=O.sortIndex-Y.sortIndex;return Q!==0?Q:O.id-Y.id}if(n.unstable_now=void 0,typeof performance=="object"&&typeof performance.now=="function"){var c=performance;n.unstable_now=function(){return c.now()}}else{var d=Date,h=d.now();n.unstable_now=function(){return d.now()-h}}var p=[],m=[],y=1,b=null,E=3,A=!1,T=!1,C=!1,M=!1,D=typeof setTimeout=="function"?setTimeout:null,_=typeof clearTimeout=="function"?clearTimeout:null,$=typeof setImmediate<"u"?setImmediate:null;function B(O){for(var Y=l(m);Y!==null;){if(Y.callback===null)o(m);else if(Y.startTime<=O)o(m),Y.sortIndex=Y.expirationTime,r(p,Y);else break;Y=l(m)}}function k(O){if(C=!1,B(O),!T)if(l(p)!==null)T=!0,L||(L=!0,S());else{var Y=l(m);Y!==null&&X(k,Y.startTime-O)}}var L=!1,q=-1,F=5,K=-1;function G(){return M?!0:!(n.unstable_now()-KO&&G());){var le=b.callback;if(typeof le=="function"){b.callback=null,E=b.priorityLevel;var w=le(b.expirationTime<=O);if(O=n.unstable_now(),typeof w=="function"){b.callback=w,B(O),Y=!0;break t}b===l(p)&&o(p),B(O)}else o(p);b=l(p)}if(b!==null)Y=!0;else{var V=l(m);V!==null&&X(k,V.startTime-O),Y=!1}}break e}finally{b=null,E=Q,A=!1}Y=void 0}}finally{Y?S():L=!1}}}var S;if(typeof $=="function")S=function(){$(I)};else if(typeof MessageChannel<"u"){var ne=new MessageChannel,H=ne.port2;ne.port1.onmessage=I,S=function(){H.postMessage(null)}}else S=function(){D(I,0)};function X(O,Y){q=D(function(){O(n.unstable_now())},Y)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(O){O.callback=null},n.unstable_forceFrameRate=function(O){0>O||125le?(O.sortIndex=Q,r(m,O),l(p)===null&&O===l(m)&&(C?(_(q),q=-1):C=!0,X(k,Q-le))):(O.sortIndex=w,r(p,O),T||A||(T=!0,L||(L=!0,S()))),O},n.unstable_shouldYield=G,n.unstable_wrapCallback=function(O){var Y=E;return function(){var Q=E;E=Y;try{return O.apply(this,arguments)}finally{E=Q}}}})(Rf)),Rf}var ig;function L2(){return ig||(ig=1,Of.exports=N2()),Of.exports}var Df={exports:{}},kt={};/** + * @license React + * react-dom.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var lg;function B2(){if(lg)return kt;lg=1;var n=Rd();function r(p){var m="https://react.dev/errors/"+p;if(1"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(r){console.error(r)}}return n(),Df.exports=B2(),Df.exports}/** + * @license React + * react-dom-client.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */var ug;function j2(){if(ug)return vl;ug=1;var n=L2(),r=Rd(),l=jy();function o(e){var t="https://react.dev/errors/"+e;if(1w||(e.current=le[w],le[w]=null,w--)}function ie(e,t){w++,le[w]=e.current,e.current=t}var oe=V(null),fe=V(null),se=V(null),Oe=V(null);function Se(e,t){switch(ie(se,t),ie(fe,e),ie(oe,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?O0(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=O0(t),e=R0(t,e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}re(oe),ie(oe,e)}function Qe(){re(oe),re(fe),re(se)}function Xe(e){e.memoizedState!==null&&ie(Oe,e);var t=oe.current,a=R0(t,e.type);t!==a&&(ie(fe,e),ie(oe,a))}function lt(e){fe.current===e&&(re(oe),re(fe)),Oe.current===e&&(re(Oe),dl._currentValue=Q)}var vt=Object.prototype.hasOwnProperty,Mt=n.unstable_scheduleCallback,$t=n.unstable_cancelCallback,yn=n.unstable_shouldYield,Un=n.unstable_requestPaint,Je=n.unstable_now,Nt=n.unstable_getCurrentPriorityLevel,ft=n.unstable_ImmediatePriority,vn=n.unstable_UserBlockingPriority,wn=n.unstable_NormalPriority,pe=n.unstable_LowPriority,Kl=n.unstable_IdlePriority,Wl=n.log,Fl=n.unstable_setDisableYieldValue,bt=null,Ee=null;function ot(e){if(typeof Wl=="function"&&Fl(e),Ee&&typeof Ee.setStrictMode=="function")try{Ee.setStrictMode(bt,e)}catch{}}var Ie=Math.clz32?Math.clz32:y1,Si=Math.log,ds=Math.LN2;function y1(e){return e>>>=0,e===0?32:31-(Si(e)/ds|0)|0}var Jl=256,eo=4194304;function Ua(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194048;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function to(e,t,a){var i=e.pendingLanes;if(i===0)return 0;var u=0,f=e.suspendedLanes,g=e.pingedLanes;e=e.warmLanes;var v=i&134217727;return v!==0?(i=v&~f,i!==0?u=Ua(i):(g&=v,g!==0?u=Ua(g):a||(a=v&~e,a!==0&&(u=Ua(a))))):(v=i&~f,v!==0?u=Ua(v):g!==0?u=Ua(g):a||(a=i&~e,a!==0&&(u=Ua(a)))),u===0?0:t!==0&&t!==u&&(t&f)===0&&(f=u&-u,a=t&-t,f>=a||f===32&&(a&4194048)!==0)?t:u}function xi(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function v1(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function fh(){var e=Jl;return Jl<<=1,(Jl&4194048)===0&&(Jl=256),e}function dh(){var e=eo;return eo<<=1,(eo&62914560)===0&&(eo=4194304),e}function hs(e){for(var t=[],a=0;31>a;a++)t.push(e);return t}function Ci(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function b1(e,t,a,i,u,f){var g=e.pendingLanes;e.pendingLanes=a,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=a,e.entangledLanes&=a,e.errorRecoveryDisabledLanes&=a,e.shellSuspendCounter=0;var v=e.entanglements,R=e.expirationTimes,U=e.hiddenUpdates;for(a=g&~a;0)":-1u||R[i]!==U[u]){var J=` +`+R[i].replace(" at new "," at ");return e.displayName&&J.includes("")&&(J=J.replace("",e.displayName)),J}while(1<=i&&0<=u);break}}}finally{bs=!1,Error.prepareStackTrace=a}return(a=e?e.displayName||e.name:"")?xr(a):""}function M1(e){switch(e.tag){case 26:case 27:case 5:return xr(e.type);case 16:return xr("Lazy");case 13:return xr("Suspense");case 19:return xr("SuspenseList");case 0:case 15:return Ss(e.type,!1);case 11:return Ss(e.type.render,!1);case 1:return Ss(e.type,!0);case 31:return xr("Activity");default:return""}}function Ch(e){try{var t="";do t+=M1(e),e=e.return;while(e);return t}catch(a){return` +Error generating stack: `+a.message+` +`+a.stack}}function an(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function Eh(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function w1(e){var t=Eh(e)?"checked":"value",a=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),i=""+e[t];if(!e.hasOwnProperty(t)&&typeof a<"u"&&typeof a.get=="function"&&typeof a.set=="function"){var u=a.get,f=a.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return u.call(this)},set:function(g){i=""+g,f.call(this,g)}}),Object.defineProperty(e,t,{enumerable:a.enumerable}),{getValue:function(){return i},setValue:function(g){i=""+g},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ro(e){e._valueTracker||(e._valueTracker=w1(e))}function Th(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var a=t.getValue(),i="";return e&&(i=Eh(e)?e.checked?"true":"false":e.value),e=i,e!==a?(t.setValue(e),!0):!1}function io(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}var A1=/[\n"\\]/g;function rn(e){return e.replace(A1,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function xs(e,t,a,i,u,f,g,v){e.name="",g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"?e.type=g:e.removeAttribute("type"),t!=null?g==="number"?(t===0&&e.value===""||e.value!=t)&&(e.value=""+an(t)):e.value!==""+an(t)&&(e.value=""+an(t)):g!=="submit"&&g!=="reset"||e.removeAttribute("value"),t!=null?Cs(e,g,an(t)):a!=null?Cs(e,g,an(a)):i!=null&&e.removeAttribute("value"),u==null&&f!=null&&(e.defaultChecked=!!f),u!=null&&(e.checked=u&&typeof u!="function"&&typeof u!="symbol"),v!=null&&typeof v!="function"&&typeof v!="symbol"&&typeof v!="boolean"?e.name=""+an(v):e.removeAttribute("name")}function Mh(e,t,a,i,u,f,g,v){if(f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"&&(e.type=f),t!=null||a!=null){if(!(f!=="submit"&&f!=="reset"||t!=null))return;a=a!=null?""+an(a):"",t=t!=null?""+an(t):a,v||t===e.value||(e.value=t),e.defaultValue=t}i=i??u,i=typeof i!="function"&&typeof i!="symbol"&&!!i,e.checked=v?e.checked:!!i,e.defaultChecked=!!i,g!=null&&typeof g!="function"&&typeof g!="symbol"&&typeof g!="boolean"&&(e.name=g)}function Cs(e,t,a){t==="number"&&io(e.ownerDocument)===e||e.defaultValue===""+a||(e.defaultValue=""+a)}function Cr(e,t,a,i){if(e=e.options,t){t={};for(var u=0;u"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),As=!1;if(Yn)try{var wi={};Object.defineProperty(wi,"passive",{get:function(){As=!0}}),window.addEventListener("test",wi,wi),window.removeEventListener("test",wi,wi)}catch{As=!1}var ca=null,Os=null,oo=null;function kh(){if(oo)return oo;var e,t=Os,a=t.length,i,u="value"in ca?ca.value:ca.textContent,f=u.length;for(e=0;e=Ri),jh=" ",Uh=!1;function Hh(e,t){switch(e){case"keyup":return tb.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Yh(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var wr=!1;function ab(e,t){switch(e){case"compositionend":return Yh(t);case"keypress":return t.which!==32?null:(Uh=!0,jh);case"textInput":return e=t.data,e===jh&&Uh?null:e;default:return null}}function rb(e,t){if(wr)return e==="compositionend"||!zs&&Hh(e,t)?(e=kh(),oo=Os=ca=null,wr=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:a,offset:t-e};e=i}e:{for(;a;){if(a.nextSibling){a=a.nextSibling;break e}a=a.parentNode}a=void 0}a=Ih(a)}}function Wh(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?Wh(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function Fh(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=io(e.document);t instanceof e.HTMLIFrameElement;){try{var a=typeof t.contentWindow.location.href=="string"}catch{a=!1}if(a)e=t.contentWindow;else break;t=io(e.document)}return t}function Ls(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}var db=Yn&&"documentMode"in document&&11>=document.documentMode,Ar=null,Bs=null,zi=null,js=!1;function Jh(e,t,a){var i=a.window===a?a.document:a.nodeType===9?a:a.ownerDocument;js||Ar==null||Ar!==io(i)||(i=Ar,"selectionStart"in i&&Ls(i)?i={start:i.selectionStart,end:i.selectionEnd}:(i=(i.ownerDocument&&i.ownerDocument.defaultView||window).getSelection(),i={anchorNode:i.anchorNode,anchorOffset:i.anchorOffset,focusNode:i.focusNode,focusOffset:i.focusOffset}),zi&&ki(zi,i)||(zi=i,i=Fo(Bs,"onSelect"),0>=g,u-=g,Gn=1<<32-Ie(t)+u|a<f?f:8;var g=O.T,v={};O.T=v,Ec(e,!1,t,a);try{var R=u(),U=O.S;if(U!==null&&U(v,R),R!==null&&typeof R=="object"&&typeof R.then=="function"){var J=xb(R,i);Qi(e,t,J,Wt(e))}else Qi(e,t,i,Wt(e))}catch(ae){Qi(e,t,{then:function(){},status:"rejected",reason:ae},Wt())}finally{Y.p=f,O.T=g}}function wb(){}function xc(e,t,a,i){if(e.tag!==5)throw Error(o(476));var u=ep(e).queue;Jm(e,u,t,Q,a===null?wb:function(){return tp(e),a(i)})}function ep(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:Q,baseState:Q,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zn,lastRenderedState:Q},next:null};var a={};return t.next={memoizedState:a,baseState:a,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Zn,lastRenderedState:a},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function tp(e){var t=ep(e).next.queue;Qi(e,t,{},Wt())}function Cc(){return _t(dl)}function np(){return ht().memoizedState}function ap(){return ht().memoizedState}function Ab(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var a=Wt();e=ha(a);var i=ma(t,e,a);i!==null&&(Ft(i,t,a),qi(i,t,a)),t={cache:Fs()},e.payload=t;return}t=t.return}}function Ob(e,t,a){var i=Wt();a={lane:i,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null},ko(e)?ip(t,a):(a=qs(e,t,a,i),a!==null&&(Ft(a,e,i),lp(a,t,i)))}function rp(e,t,a){var i=Wt();Qi(e,t,a,i)}function Qi(e,t,a,i){var u={lane:i,revertLane:0,action:a,hasEagerState:!1,eagerState:null,next:null};if(ko(e))ip(t,u);else{var f=e.alternate;if(e.lanes===0&&(f===null||f.lanes===0)&&(f=t.lastRenderedReducer,f!==null))try{var g=t.lastRenderedState,v=f(g,a);if(u.hasEagerState=!0,u.eagerState=v,Xt(v,g))return po(e,t,u,0),Pe===null&&mo(),!1}catch{}finally{}if(a=qs(e,t,u,i),a!==null)return Ft(a,e,i),lp(a,t,i),!0}return!1}function Ec(e,t,a,i){if(i={lane:2,revertLane:tf(),action:i,hasEagerState:!1,eagerState:null,next:null},ko(e)){if(t)throw Error(o(479))}else t=qs(e,a,i,2),t!==null&&Ft(t,e,2)}function ko(e){var t=e.alternate;return e===ve||t!==null&&t===ve}function ip(e,t){Br=wo=!0;var a=e.pending;a===null?t.next=t:(t.next=a.next,a.next=t),e.pending=t}function lp(e,t,a){if((a&4194048)!==0){var i=t.lanes;i&=e.pendingLanes,a|=i,t.lanes=a,mh(e,a)}}var zo={readContext:_t,use:Oo,useCallback:ut,useContext:ut,useEffect:ut,useImperativeHandle:ut,useLayoutEffect:ut,useInsertionEffect:ut,useMemo:ut,useReducer:ut,useRef:ut,useState:ut,useDebugValue:ut,useDeferredValue:ut,useTransition:ut,useSyncExternalStore:ut,useId:ut,useHostTransitionStatus:ut,useFormState:ut,useActionState:ut,useOptimistic:ut,useMemoCache:ut,useCacheRefresh:ut},op={readContext:_t,use:Oo,useCallback:function(e,t){return Yt().memoizedState=[e,t===void 0?null:t],e},useContext:_t,useEffect:Vm,useImperativeHandle:function(e,t,a){a=a!=null?a.concat([e]):null,_o(4194308,4,Qm.bind(null,t,e),a)},useLayoutEffect:function(e,t){return _o(4194308,4,e,t)},useInsertionEffect:function(e,t){_o(4,2,e,t)},useMemo:function(e,t){var a=Yt();t=t===void 0?null:t;var i=e();if(Fa){ot(!0);try{e()}finally{ot(!1)}}return a.memoizedState=[i,t],i},useReducer:function(e,t,a){var i=Yt();if(a!==void 0){var u=a(t);if(Fa){ot(!0);try{a(t)}finally{ot(!1)}}}else u=t;return i.memoizedState=i.baseState=u,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:u},i.queue=e,e=e.dispatch=Ob.bind(null,ve,e),[i.memoizedState,e]},useRef:function(e){var t=Yt();return e={current:e},t.memoizedState=e},useState:function(e){e=yc(e);var t=e.queue,a=rp.bind(null,ve,t);return t.dispatch=a,[e.memoizedState,a]},useDebugValue:bc,useDeferredValue:function(e,t){var a=Yt();return Sc(a,e,t)},useTransition:function(){var e=yc(!1);return e=Jm.bind(null,ve,e.queue,!0,!1),Yt().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,a){var i=ve,u=Yt();if(De){if(a===void 0)throw Error(o(407));a=a()}else{if(a=t(),Pe===null)throw Error(o(349));(Te&124)!==0||Om(i,t,a)}u.memoizedState=a;var f={value:a,getSnapshot:t};return u.queue=f,Vm(Dm.bind(null,i,f,e),[e]),i.flags|=2048,Ur(9,Do(),Rm.bind(null,i,f,a,t),null),a},useId:function(){var e=Yt(),t=Pe.identifierPrefix;if(De){var a=Vn,i=Gn;a=(i&~(1<<32-Ie(i)-1)).toString(32)+a,t="«"+t+"R"+a,a=Ao++,0he?(Et=ce,ce=null):Et=ce.sibling;var Re=P(N,ce,j[he],te);if(Re===null){ce===null&&(ce=Et);break}e&&ce&&Re.alternate===null&&t(N,ce),z=f(Re,z,he),be===null?ue=Re:be.sibling=Re,be=Re,ce=Et}if(he===j.length)return a(N,ce),De&&Xa(N,he),ue;if(ce===null){for(;hehe?(Et=ce,ce=null):Et=ce.sibling;var _a=P(N,ce,Re.value,te);if(_a===null){ce===null&&(ce=Et);break}e&&ce&&_a.alternate===null&&t(N,ce),z=f(_a,z,he),be===null?ue=_a:be.sibling=_a,be=_a,ce=Et}if(Re.done)return a(N,ce),De&&Xa(N,he),ue;if(ce===null){for(;!Re.done;he++,Re=j.next())Re=ae(N,Re.value,te),Re!==null&&(z=f(Re,z,he),be===null?ue=Re:be.sibling=Re,be=Re);return De&&Xa(N,he),ue}for(ce=i(ce);!Re.done;he++,Re=j.next())Re=Z(ce,N,he,Re.value,te),Re!==null&&(e&&Re.alternate!==null&&ce.delete(Re.key===null?he:Re.key),z=f(Re,z,he),be===null?ue=Re:be.sibling=Re,be=Re);return e&&ce.forEach(function(D2){return t(N,D2)}),De&&Xa(N,he),ue}function Ye(N,z,j,te){if(typeof j=="object"&&j!==null&&j.type===T&&j.key===null&&(j=j.props.children),typeof j=="object"&&j!==null){switch(j.$$typeof){case E:e:{for(var ue=j.key;z!==null;){if(z.key===ue){if(ue=j.type,ue===T){if(z.tag===7){a(N,z.sibling),te=u(z,j.props.children),te.return=N,N=te;break e}}else if(z.elementType===ue||typeof ue=="object"&&ue!==null&&ue.$$typeof===F&&sp(ue)===z.type){a(N,z.sibling),te=u(z,j.props),Ki(te,j),te.return=N,N=te;break e}a(N,z);break}else t(N,z);z=z.sibling}j.type===T?(te=Va(j.props.children,N.mode,te,j.key),te.return=N,N=te):(te=yo(j.type,j.key,j.props,null,N.mode,te),Ki(te,j),te.return=N,N=te)}return g(N);case A:e:{for(ue=j.key;z!==null;){if(z.key===ue)if(z.tag===4&&z.stateNode.containerInfo===j.containerInfo&&z.stateNode.implementation===j.implementation){a(N,z.sibling),te=u(z,j.children||[]),te.return=N,N=te;break e}else{a(N,z);break}else t(N,z);z=z.sibling}te=Ps(j,N.mode,te),te.return=N,N=te}return g(N);case F:return ue=j._init,j=ue(j._payload),Ye(N,z,j,te)}if(X(j))return me(N,z,j,te);if(S(j)){if(ue=S(j),typeof ue!="function")throw Error(o(150));return j=ue.call(j),de(N,z,j,te)}if(typeof j.then=="function")return Ye(N,z,$o(j),te);if(j.$$typeof===$)return Ye(N,z,xo(N,j),te);No(N,j)}return typeof j=="string"&&j!==""||typeof j=="number"||typeof j=="bigint"?(j=""+j,z!==null&&z.tag===6?(a(N,z.sibling),te=u(z,j),te.return=N,N=te):(a(N,z),te=Vs(j,N.mode,te),te.return=N,N=te),g(N)):a(N,z)}return function(N,z,j,te){try{Ii=0;var ue=Ye(N,z,j,te);return Hr=null,ue}catch(ce){if(ce===Hi||ce===Eo)throw ce;var be=Zt(29,ce,null,N.mode);return be.lanes=te,be.return=N,be}finally{}}}var Yr=cp(!0),fp=cp(!1),cn=V(null),On=null;function ga(e){var t=e.alternate;ie(gt,gt.current&1),ie(cn,e),On===null&&(t===null||Lr.current!==null||t.memoizedState!==null)&&(On=e)}function dp(e){if(e.tag===22){if(ie(gt,gt.current),ie(cn,e),On===null){var t=e.alternate;t!==null&&t.memoizedState!==null&&(On=e)}}else ya()}function ya(){ie(gt,gt.current),ie(cn,cn.current)}function Qn(e){re(cn),On===e&&(On=null),re(gt)}var gt=V(0);function Lo(e){for(var t=e;t!==null;){if(t.tag===13){var a=t.memoizedState;if(a!==null&&(a=a.dehydrated,a===null||a.data==="$?"||mf(a)))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if((t.flags&128)!==0)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function Tc(e,t,a,i){t=e.memoizedState,a=a(i,t),a=a==null?t:y({},t,a),e.memoizedState=a,e.lanes===0&&(e.updateQueue.baseState=a)}var Mc={enqueueSetState:function(e,t,a){e=e._reactInternals;var i=Wt(),u=ha(i);u.payload=t,a!=null&&(u.callback=a),t=ma(e,u,i),t!==null&&(Ft(t,e,i),qi(t,e,i))},enqueueReplaceState:function(e,t,a){e=e._reactInternals;var i=Wt(),u=ha(i);u.tag=1,u.payload=t,a!=null&&(u.callback=a),t=ma(e,u,i),t!==null&&(Ft(t,e,i),qi(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var a=Wt(),i=ha(a);i.tag=2,t!=null&&(i.callback=t),t=ma(e,i,a),t!==null&&(Ft(t,e,a),qi(t,e,a))}};function hp(e,t,a,i,u,f,g){return e=e.stateNode,typeof e.shouldComponentUpdate=="function"?e.shouldComponentUpdate(i,f,g):t.prototype&&t.prototype.isPureReactComponent?!ki(a,i)||!ki(u,f):!0}function mp(e,t,a,i){e=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(a,i),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(a,i),t.state!==e&&Mc.enqueueReplaceState(t,t.state,null)}function Ja(e,t){var a=t;if("ref"in t){a={};for(var i in t)i!=="ref"&&(a[i]=t[i])}if(e=e.defaultProps){a===t&&(a=y({},a));for(var u in e)a[u]===void 0&&(a[u]=e[u])}return a}var Bo=typeof reportError=="function"?reportError:function(e){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof e=="object"&&e!==null&&typeof e.message=="string"?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",e);return}console.error(e)};function pp(e){Bo(e)}function gp(e){console.error(e)}function yp(e){Bo(e)}function jo(e,t){try{var a=e.onUncaughtError;a(t.value,{componentStack:t.stack})}catch(i){setTimeout(function(){throw i})}}function vp(e,t,a){try{var i=e.onCaughtError;i(a.value,{componentStack:a.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(u){setTimeout(function(){throw u})}}function wc(e,t,a){return a=ha(a),a.tag=3,a.payload={element:null},a.callback=function(){jo(e,t)},a}function bp(e){return e=ha(e),e.tag=3,e}function Sp(e,t,a,i){var u=a.type.getDerivedStateFromError;if(typeof u=="function"){var f=i.value;e.payload=function(){return u(f)},e.callback=function(){vp(t,a,i)}}var g=a.stateNode;g!==null&&typeof g.componentDidCatch=="function"&&(e.callback=function(){vp(t,a,i),typeof u!="function"&&(Ea===null?Ea=new Set([this]):Ea.add(this));var v=i.stack;this.componentDidCatch(i.value,{componentStack:v!==null?v:""})})}function Db(e,t,a,i,u){if(a.flags|=32768,i!==null&&typeof i=="object"&&typeof i.then=="function"){if(t=a.alternate,t!==null&&Bi(t,a,u,!0),a=cn.current,a!==null){switch(a.tag){case 13:return On===null?Kc():a.alternate===null&&tt===0&&(tt=3),a.flags&=-257,a.flags|=65536,a.lanes=u,i===tc?a.flags|=16384:(t=a.updateQueue,t===null?a.updateQueue=new Set([i]):t.add(i),Fc(e,i,u)),!1;case 22:return a.flags|=65536,i===tc?a.flags|=16384:(t=a.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([i])},a.updateQueue=t):(a=t.retryQueue,a===null?t.retryQueue=new Set([i]):a.add(i)),Fc(e,i,u)),!1}throw Error(o(435,a.tag))}return Fc(e,i,u),Kc(),!1}if(De)return t=cn.current,t!==null?((t.flags&65536)===0&&(t.flags|=256),t.flags|=65536,t.lanes=u,i!==Qs&&(e=Error(o(422),{cause:i}),Li(ln(e,a)))):(i!==Qs&&(t=Error(o(423),{cause:i}),Li(ln(t,a))),e=e.current.alternate,e.flags|=65536,u&=-u,e.lanes|=u,i=ln(i,a),u=wc(e.stateNode,i,u),rc(e,u),tt!==4&&(tt=2)),!1;var f=Error(o(520),{cause:i});if(f=ln(f,a),al===null?al=[f]:al.push(f),tt!==4&&(tt=2),t===null)return!0;i=ln(i,a),a=t;do{switch(a.tag){case 3:return a.flags|=65536,e=u&-u,a.lanes|=e,e=wc(a.stateNode,i,e),rc(a,e),!1;case 1:if(t=a.type,f=a.stateNode,(a.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||f!==null&&typeof f.componentDidCatch=="function"&&(Ea===null||!Ea.has(f))))return a.flags|=65536,u&=-u,a.lanes|=u,u=bp(u),Sp(u,e,a,i),rc(a,u),!1}a=a.return}while(a!==null);return!1}var xp=Error(o(461)),xt=!1;function wt(e,t,a,i){t.child=e===null?fp(t,null,a,i):Yr(t,e.child,a,i)}function Cp(e,t,a,i,u){a=a.render;var f=t.ref;if("ref"in i){var g={};for(var v in i)v!=="ref"&&(g[v]=i[v])}else g=i;return Ka(t),i=sc(e,t,a,g,f,u),v=cc(),e!==null&&!xt?(fc(e,t,u),In(e,t,u)):(De&&v&&Xs(t),t.flags|=1,wt(e,t,i,u),t.child)}function Ep(e,t,a,i,u){if(e===null){var f=a.type;return typeof f=="function"&&!Gs(f)&&f.defaultProps===void 0&&a.compare===null?(t.tag=15,t.type=f,Tp(e,t,f,i,u)):(e=yo(a.type,null,i,t,t.mode,u),e.ref=t.ref,e.return=t,t.child=e)}if(f=e.child,!$c(e,u)){var g=f.memoizedProps;if(a=a.compare,a=a!==null?a:ki,a(g,i)&&e.ref===t.ref)return In(e,t,u)}return t.flags|=1,e=qn(f,i),e.ref=t.ref,e.return=t,t.child=e}function Tp(e,t,a,i,u){if(e!==null){var f=e.memoizedProps;if(ki(f,i)&&e.ref===t.ref)if(xt=!1,t.pendingProps=i=f,$c(e,u))(e.flags&131072)!==0&&(xt=!0);else return t.lanes=e.lanes,In(e,t,u)}return Ac(e,t,a,i,u)}function Mp(e,t,a){var i=t.pendingProps,u=i.children,f=e!==null?e.memoizedState:null;if(i.mode==="hidden"){if((t.flags&128)!==0){if(i=f!==null?f.baseLanes|a:a,e!==null){for(u=t.child=e.child,f=0;u!==null;)f=f|u.lanes|u.childLanes,u=u.sibling;t.childLanes=f&~i}else t.childLanes=0,t.child=null;return wp(e,t,i,a)}if((a&536870912)!==0)t.memoizedState={baseLanes:0,cachePool:null},e!==null&&Co(t,f!==null?f.cachePool:null),f!==null?Tm(t,f):lc(),dp(t);else return t.lanes=t.childLanes=536870912,wp(e,t,f!==null?f.baseLanes|a:a,a)}else f!==null?(Co(t,f.cachePool),Tm(t,f),ya(),t.memoizedState=null):(e!==null&&Co(t,null),lc(),ya());return wt(e,t,u,a),t.child}function wp(e,t,a,i){var u=ec();return u=u===null?null:{parent:pt._currentValue,pool:u},t.memoizedState={baseLanes:a,cachePool:u},e!==null&&Co(t,null),lc(),dp(t),e!==null&&Bi(e,t,i,!0),null}function Uo(e,t){var a=t.ref;if(a===null)e!==null&&e.ref!==null&&(t.flags|=4194816);else{if(typeof a!="function"&&typeof a!="object")throw Error(o(284));(e===null||e.ref!==a)&&(t.flags|=4194816)}}function Ac(e,t,a,i,u){return Ka(t),a=sc(e,t,a,i,void 0,u),i=cc(),e!==null&&!xt?(fc(e,t,u),In(e,t,u)):(De&&i&&Xs(t),t.flags|=1,wt(e,t,a,u),t.child)}function Ap(e,t,a,i,u,f){return Ka(t),t.updateQueue=null,a=wm(t,i,a,u),Mm(e),i=cc(),e!==null&&!xt?(fc(e,t,f),In(e,t,f)):(De&&i&&Xs(t),t.flags|=1,wt(e,t,a,f),t.child)}function Op(e,t,a,i,u){if(Ka(t),t.stateNode===null){var f=_r,g=a.contextType;typeof g=="object"&&g!==null&&(f=_t(g)),f=new a(i,f),t.memoizedState=f.state!==null&&f.state!==void 0?f.state:null,f.updater=Mc,t.stateNode=f,f._reactInternals=t,f=t.stateNode,f.props=i,f.state=t.memoizedState,f.refs={},nc(t),g=a.contextType,f.context=typeof g=="object"&&g!==null?_t(g):_r,f.state=t.memoizedState,g=a.getDerivedStateFromProps,typeof g=="function"&&(Tc(t,a,g,i),f.state=t.memoizedState),typeof a.getDerivedStateFromProps=="function"||typeof f.getSnapshotBeforeUpdate=="function"||typeof f.UNSAFE_componentWillMount!="function"&&typeof f.componentWillMount!="function"||(g=f.state,typeof f.componentWillMount=="function"&&f.componentWillMount(),typeof f.UNSAFE_componentWillMount=="function"&&f.UNSAFE_componentWillMount(),g!==f.state&&Mc.enqueueReplaceState(f,f.state,null),Vi(t,i,f,u),Gi(),f.state=t.memoizedState),typeof f.componentDidMount=="function"&&(t.flags|=4194308),i=!0}else if(e===null){f=t.stateNode;var v=t.memoizedProps,R=Ja(a,v);f.props=R;var U=f.context,J=a.contextType;g=_r,typeof J=="object"&&J!==null&&(g=_t(J));var ae=a.getDerivedStateFromProps;J=typeof ae=="function"||typeof f.getSnapshotBeforeUpdate=="function",v=t.pendingProps!==v,J||typeof f.UNSAFE_componentWillReceiveProps!="function"&&typeof f.componentWillReceiveProps!="function"||(v||U!==g)&&mp(t,f,i,g),da=!1;var P=t.memoizedState;f.state=P,Vi(t,i,f,u),Gi(),U=t.memoizedState,v||P!==U||da?(typeof ae=="function"&&(Tc(t,a,ae,i),U=t.memoizedState),(R=da||hp(t,a,R,i,P,U,g))?(J||typeof f.UNSAFE_componentWillMount!="function"&&typeof f.componentWillMount!="function"||(typeof f.componentWillMount=="function"&&f.componentWillMount(),typeof f.UNSAFE_componentWillMount=="function"&&f.UNSAFE_componentWillMount()),typeof f.componentDidMount=="function"&&(t.flags|=4194308)):(typeof f.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=i,t.memoizedState=U),f.props=i,f.state=U,f.context=g,i=R):(typeof f.componentDidMount=="function"&&(t.flags|=4194308),i=!1)}else{f=t.stateNode,ac(e,t),g=t.memoizedProps,J=Ja(a,g),f.props=J,ae=t.pendingProps,P=f.context,U=a.contextType,R=_r,typeof U=="object"&&U!==null&&(R=_t(U)),v=a.getDerivedStateFromProps,(U=typeof v=="function"||typeof f.getSnapshotBeforeUpdate=="function")||typeof f.UNSAFE_componentWillReceiveProps!="function"&&typeof f.componentWillReceiveProps!="function"||(g!==ae||P!==R)&&mp(t,f,i,R),da=!1,P=t.memoizedState,f.state=P,Vi(t,i,f,u),Gi();var Z=t.memoizedState;g!==ae||P!==Z||da||e!==null&&e.dependencies!==null&&So(e.dependencies)?(typeof v=="function"&&(Tc(t,a,v,i),Z=t.memoizedState),(J=da||hp(t,a,J,i,P,Z,R)||e!==null&&e.dependencies!==null&&So(e.dependencies))?(U||typeof f.UNSAFE_componentWillUpdate!="function"&&typeof f.componentWillUpdate!="function"||(typeof f.componentWillUpdate=="function"&&f.componentWillUpdate(i,Z,R),typeof f.UNSAFE_componentWillUpdate=="function"&&f.UNSAFE_componentWillUpdate(i,Z,R)),typeof f.componentDidUpdate=="function"&&(t.flags|=4),typeof f.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof f.componentDidUpdate!="function"||g===e.memoizedProps&&P===e.memoizedState||(t.flags|=4),typeof f.getSnapshotBeforeUpdate!="function"||g===e.memoizedProps&&P===e.memoizedState||(t.flags|=1024),t.memoizedProps=i,t.memoizedState=Z),f.props=i,f.state=Z,f.context=R,i=J):(typeof f.componentDidUpdate!="function"||g===e.memoizedProps&&P===e.memoizedState||(t.flags|=4),typeof f.getSnapshotBeforeUpdate!="function"||g===e.memoizedProps&&P===e.memoizedState||(t.flags|=1024),i=!1)}return f=i,Uo(e,t),i=(t.flags&128)!==0,f||i?(f=t.stateNode,a=i&&typeof a.getDerivedStateFromError!="function"?null:f.render(),t.flags|=1,e!==null&&i?(t.child=Yr(t,e.child,null,u),t.child=Yr(t,null,a,u)):wt(e,t,a,u),t.memoizedState=f.state,e=t.child):e=In(e,t,u),e}function Rp(e,t,a,i){return Ni(),t.flags|=256,wt(e,t,a,i),t.child}var Oc={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function Rc(e){return{baseLanes:e,cachePool:gm()}}function Dc(e,t,a){return e=e!==null?e.childLanes&~a:0,t&&(e|=fn),e}function Dp(e,t,a){var i=t.pendingProps,u=!1,f=(t.flags&128)!==0,g;if((g=f)||(g=e!==null&&e.memoizedState===null?!1:(gt.current&2)!==0),g&&(u=!0,t.flags&=-129),g=(t.flags&32)!==0,t.flags&=-33,e===null){if(De){if(u?ga(t):ya(),De){var v=et,R;if(R=v){e:{for(R=v,v=An;R.nodeType!==8;){if(!v){v=null;break e}if(R=xn(R.nextSibling),R===null){v=null;break e}}v=R}v!==null?(t.memoizedState={dehydrated:v,treeContext:Pa!==null?{id:Gn,overflow:Vn}:null,retryLane:536870912,hydrationErrors:null},R=Zt(18,null,null,0),R.stateNode=v,R.return=t,t.child=R,Lt=t,et=null,R=!0):R=!1}R||Qa(t)}if(v=t.memoizedState,v!==null&&(v=v.dehydrated,v!==null))return mf(v)?t.lanes=32:t.lanes=536870912,null;Qn(t)}return v=i.children,i=i.fallback,u?(ya(),u=t.mode,v=Ho({mode:"hidden",children:v},u),i=Va(i,u,a,null),v.return=t,i.return=t,v.sibling=i,t.child=v,u=t.child,u.memoizedState=Rc(a),u.childLanes=Dc(e,g,a),t.memoizedState=Oc,i):(ga(t),_c(t,v))}if(R=e.memoizedState,R!==null&&(v=R.dehydrated,v!==null)){if(f)t.flags&256?(ga(t),t.flags&=-257,t=kc(e,t,a)):t.memoizedState!==null?(ya(),t.child=e.child,t.flags|=128,t=null):(ya(),u=i.fallback,v=t.mode,i=Ho({mode:"visible",children:i.children},v),u=Va(u,v,a,null),u.flags|=2,i.return=t,u.return=t,i.sibling=u,t.child=i,Yr(t,e.child,null,a),i=t.child,i.memoizedState=Rc(a),i.childLanes=Dc(e,g,a),t.memoizedState=Oc,t=u);else if(ga(t),mf(v)){if(g=v.nextSibling&&v.nextSibling.dataset,g)var U=g.dgst;g=U,i=Error(o(419)),i.stack="",i.digest=g,Li({value:i,source:null,stack:null}),t=kc(e,t,a)}else if(xt||Bi(e,t,a,!1),g=(a&e.childLanes)!==0,xt||g){if(g=Pe,g!==null&&(i=a&-a,i=(i&42)!==0?1:ms(i),i=(i&(g.suspendedLanes|a))!==0?0:i,i!==0&&i!==R.retryLane))throw R.retryLane=i,Dr(e,i),Ft(g,e,i),xp;v.data==="$?"||Kc(),t=kc(e,t,a)}else v.data==="$?"?(t.flags|=192,t.child=e.child,t=null):(e=R.treeContext,et=xn(v.nextSibling),Lt=t,De=!0,Za=null,An=!1,e!==null&&(un[sn++]=Gn,un[sn++]=Vn,un[sn++]=Pa,Gn=e.id,Vn=e.overflow,Pa=t),t=_c(t,i.children),t.flags|=4096);return t}return u?(ya(),u=i.fallback,v=t.mode,R=e.child,U=R.sibling,i=qn(R,{mode:"hidden",children:i.children}),i.subtreeFlags=R.subtreeFlags&65011712,U!==null?u=qn(U,u):(u=Va(u,v,a,null),u.flags|=2),u.return=t,i.return=t,i.sibling=u,t.child=i,i=u,u=t.child,v=e.child.memoizedState,v===null?v=Rc(a):(R=v.cachePool,R!==null?(U=pt._currentValue,R=R.parent!==U?{parent:U,pool:U}:R):R=gm(),v={baseLanes:v.baseLanes|a,cachePool:R}),u.memoizedState=v,u.childLanes=Dc(e,g,a),t.memoizedState=Oc,i):(ga(t),a=e.child,e=a.sibling,a=qn(a,{mode:"visible",children:i.children}),a.return=t,a.sibling=null,e!==null&&(g=t.deletions,g===null?(t.deletions=[e],t.flags|=16):g.push(e)),t.child=a,t.memoizedState=null,a)}function _c(e,t){return t=Ho({mode:"visible",children:t},e.mode),t.return=e,e.child=t}function Ho(e,t){return e=Zt(22,e,null,t),e.lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function kc(e,t,a){return Yr(t,e.child,null,a),e=_c(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function _p(e,t,a){e.lanes|=t;var i=e.alternate;i!==null&&(i.lanes|=t),Ks(e.return,t,a)}function zc(e,t,a,i,u){var f=e.memoizedState;f===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:i,tail:a,tailMode:u}:(f.isBackwards=t,f.rendering=null,f.renderingStartTime=0,f.last=i,f.tail=a,f.tailMode=u)}function kp(e,t,a){var i=t.pendingProps,u=i.revealOrder,f=i.tail;if(wt(e,t,i.children,a),i=gt.current,(i&2)!==0)i=i&1|2,t.flags|=128;else{if(e!==null&&(e.flags&128)!==0)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&_p(e,a,t);else if(e.tag===19)_p(e,a,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}i&=1}switch(ie(gt,i),u){case"forwards":for(a=t.child,u=null;a!==null;)e=a.alternate,e!==null&&Lo(e)===null&&(u=a),a=a.sibling;a=u,a===null?(u=t.child,t.child=null):(u=a.sibling,a.sibling=null),zc(t,!1,u,a,f);break;case"backwards":for(a=null,u=t.child,t.child=null;u!==null;){if(e=u.alternate,e!==null&&Lo(e)===null){t.child=u;break}e=u.sibling,u.sibling=a,a=u,u=e}zc(t,!0,a,null,f);break;case"together":zc(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function In(e,t,a){if(e!==null&&(t.dependencies=e.dependencies),Ca|=t.lanes,(a&t.childLanes)===0)if(e!==null){if(Bi(e,t,a,!1),(a&t.childLanes)===0)return null}else return null;if(e!==null&&t.child!==e.child)throw Error(o(153));if(t.child!==null){for(e=t.child,a=qn(e,e.pendingProps),t.child=a,a.return=t;e.sibling!==null;)e=e.sibling,a=a.sibling=qn(e,e.pendingProps),a.return=t;a.sibling=null}return t.child}function $c(e,t){return(e.lanes&t)!==0?!0:(e=e.dependencies,!!(e!==null&&So(e)))}function _b(e,t,a){switch(t.tag){case 3:Se(t,t.stateNode.containerInfo),fa(t,pt,e.memoizedState.cache),Ni();break;case 27:case 5:Xe(t);break;case 4:Se(t,t.stateNode.containerInfo);break;case 10:fa(t,t.type,t.memoizedProps.value);break;case 13:var i=t.memoizedState;if(i!==null)return i.dehydrated!==null?(ga(t),t.flags|=128,null):(a&t.child.childLanes)!==0?Dp(e,t,a):(ga(t),e=In(e,t,a),e!==null?e.sibling:null);ga(t);break;case 19:var u=(e.flags&128)!==0;if(i=(a&t.childLanes)!==0,i||(Bi(e,t,a,!1),i=(a&t.childLanes)!==0),u){if(i)return kp(e,t,a);t.flags|=128}if(u=t.memoizedState,u!==null&&(u.rendering=null,u.tail=null,u.lastEffect=null),ie(gt,gt.current),i)break;return null;case 22:case 23:return t.lanes=0,Mp(e,t,a);case 24:fa(t,pt,e.memoizedState.cache)}return In(e,t,a)}function zp(e,t,a){if(e!==null)if(e.memoizedProps!==t.pendingProps)xt=!0;else{if(!$c(e,a)&&(t.flags&128)===0)return xt=!1,_b(e,t,a);xt=(e.flags&131072)!==0}else xt=!1,De&&(t.flags&1048576)!==0&&sm(t,bo,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var i=t.elementType,u=i._init;if(i=u(i._payload),t.type=i,typeof i=="function")Gs(i)?(e=Ja(i,e),t.tag=1,t=Op(null,t,i,e,a)):(t.tag=0,t=Ac(null,t,i,e,a));else{if(i!=null){if(u=i.$$typeof,u===B){t.tag=11,t=Cp(null,t,i,e,a);break e}else if(u===q){t.tag=14,t=Ep(null,t,i,e,a);break e}}throw t=H(i)||i,Error(o(306,t,""))}}return t;case 0:return Ac(e,t,t.type,t.pendingProps,a);case 1:return i=t.type,u=Ja(i,t.pendingProps),Op(e,t,i,u,a);case 3:e:{if(Se(t,t.stateNode.containerInfo),e===null)throw Error(o(387));i=t.pendingProps;var f=t.memoizedState;u=f.element,ac(e,t),Vi(t,i,null,a);var g=t.memoizedState;if(i=g.cache,fa(t,pt,i),i!==f.cache&&Ws(t,[pt],a,!0),Gi(),i=g.element,f.isDehydrated)if(f={element:i,isDehydrated:!1,cache:g.cache},t.updateQueue.baseState=f,t.memoizedState=f,t.flags&256){t=Rp(e,t,i,a);break e}else if(i!==u){u=ln(Error(o(424)),t),Li(u),t=Rp(e,t,i,a);break e}else{switch(e=t.stateNode.containerInfo,e.nodeType){case 9:e=e.body;break;default:e=e.nodeName==="HTML"?e.ownerDocument.body:e}for(et=xn(e.firstChild),Lt=t,De=!0,Za=null,An=!0,a=fp(t,null,i,a),t.child=a;a;)a.flags=a.flags&-3|4096,a=a.sibling}else{if(Ni(),i===u){t=In(e,t,a);break e}wt(e,t,i,a)}t=t.child}return t;case 26:return Uo(e,t),e===null?(a=B0(t.type,null,t.pendingProps,null))?t.memoizedState=a:De||(a=t.type,e=t.pendingProps,i=eu(se.current).createElement(a),i[Dt]=t,i[Ut]=e,Ot(i,a,e),St(i),t.stateNode=i):t.memoizedState=B0(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return Xe(t),e===null&&De&&(i=t.stateNode=$0(t.type,t.pendingProps,se.current),Lt=t,An=!0,u=et,wa(t.type)?(pf=u,et=xn(i.firstChild)):et=u),wt(e,t,t.pendingProps.children,a),Uo(e,t),e===null&&(t.flags|=4194304),t.child;case 5:return e===null&&De&&((u=i=et)&&(i=i2(i,t.type,t.pendingProps,An),i!==null?(t.stateNode=i,Lt=t,et=xn(i.firstChild),An=!1,u=!0):u=!1),u||Qa(t)),Xe(t),u=t.type,f=t.pendingProps,g=e!==null?e.memoizedProps:null,i=f.children,ff(u,f)?i=null:g!==null&&ff(u,g)&&(t.flags|=32),t.memoizedState!==null&&(u=sc(e,t,Eb,null,null,a),dl._currentValue=u),Uo(e,t),wt(e,t,i,a),t.child;case 6:return e===null&&De&&((e=a=et)&&(a=l2(a,t.pendingProps,An),a!==null?(t.stateNode=a,Lt=t,et=null,e=!0):e=!1),e||Qa(t)),null;case 13:return Dp(e,t,a);case 4:return Se(t,t.stateNode.containerInfo),i=t.pendingProps,e===null?t.child=Yr(t,null,i,a):wt(e,t,i,a),t.child;case 11:return Cp(e,t,t.type,t.pendingProps,a);case 7:return wt(e,t,t.pendingProps,a),t.child;case 8:return wt(e,t,t.pendingProps.children,a),t.child;case 12:return wt(e,t,t.pendingProps.children,a),t.child;case 10:return i=t.pendingProps,fa(t,t.type,i.value),wt(e,t,i.children,a),t.child;case 9:return u=t.type._context,i=t.pendingProps.children,Ka(t),u=_t(u),i=i(u),t.flags|=1,wt(e,t,i,a),t.child;case 14:return Ep(e,t,t.type,t.pendingProps,a);case 15:return Tp(e,t,t.type,t.pendingProps,a);case 19:return kp(e,t,a);case 31:return i=t.pendingProps,a=t.mode,i={mode:i.mode,children:i.children},e===null?(a=Ho(i,a),a.ref=t.ref,t.child=a,a.return=t,t=a):(a=qn(e.child,i),a.ref=t.ref,t.child=a,a.return=t,t=a),t;case 22:return Mp(e,t,a);case 24:return Ka(t),i=_t(pt),e===null?(u=ec(),u===null&&(u=Pe,f=Fs(),u.pooledCache=f,f.refCount++,f!==null&&(u.pooledCacheLanes|=a),u=f),t.memoizedState={parent:i,cache:u},nc(t),fa(t,pt,u)):((e.lanes&a)!==0&&(ac(e,t),Vi(t,null,null,a),Gi()),u=e.memoizedState,f=t.memoizedState,u.parent!==i?(u={parent:i,cache:i},t.memoizedState=u,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=u),fa(t,pt,i)):(i=f.cache,fa(t,pt,i),i!==u.cache&&Ws(t,[pt],a,!0))),wt(e,t,t.pendingProps.children,a),t.child;case 29:throw t.pendingProps}throw Error(o(156,t.tag))}function Kn(e){e.flags|=4}function $p(e,t){if(t.type!=="stylesheet"||(t.state.loading&4)!==0)e.flags&=-16777217;else if(e.flags|=16777216,!q0(t)){if(t=cn.current,t!==null&&((Te&4194048)===Te?On!==null:(Te&62914560)!==Te&&(Te&536870912)===0||t!==On))throw Yi=tc,ym;e.flags|=8192}}function Yo(e,t){t!==null&&(e.flags|=4),e.flags&16384&&(t=e.tag!==22?dh():536870912,e.lanes|=t,Pr|=t)}function Wi(e,t){if(!De)switch(e.tailMode){case"hidden":t=e.tail;for(var a=null;t!==null;)t.alternate!==null&&(a=t),t=t.sibling;a===null?e.tail=null:a.sibling=null;break;case"collapsed":a=e.tail;for(var i=null;a!==null;)a.alternate!==null&&(i=a),a=a.sibling;i===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:i.sibling=null}}function Fe(e){var t=e.alternate!==null&&e.alternate.child===e.child,a=0,i=0;if(t)for(var u=e.child;u!==null;)a|=u.lanes|u.childLanes,i|=u.subtreeFlags&65011712,i|=u.flags&65011712,u.return=e,u=u.sibling;else for(u=e.child;u!==null;)a|=u.lanes|u.childLanes,i|=u.subtreeFlags,i|=u.flags,u.return=e,u=u.sibling;return e.subtreeFlags|=i,e.childLanes=a,t}function kb(e,t,a){var i=t.pendingProps;switch(Zs(t),t.tag){case 31:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return Fe(t),null;case 1:return Fe(t),null;case 3:return a=t.stateNode,i=null,e!==null&&(i=e.memoizedState.cache),t.memoizedState.cache!==i&&(t.flags|=2048),Xn(pt),Qe(),a.pendingContext&&(a.context=a.pendingContext,a.pendingContext=null),(e===null||e.child===null)&&($i(t)?Kn(t):e===null||e.memoizedState.isDehydrated&&(t.flags&256)===0||(t.flags|=1024,dm())),Fe(t),null;case 26:return a=t.memoizedState,e===null?(Kn(t),a!==null?(Fe(t),$p(t,a)):(Fe(t),t.flags&=-16777217)):a?a!==e.memoizedState?(Kn(t),Fe(t),$p(t,a)):(Fe(t),t.flags&=-16777217):(e.memoizedProps!==i&&Kn(t),Fe(t),t.flags&=-16777217),null;case 27:lt(t),a=se.current;var u=t.type;if(e!==null&&t.stateNode!=null)e.memoizedProps!==i&&Kn(t);else{if(!i){if(t.stateNode===null)throw Error(o(166));return Fe(t),null}e=oe.current,$i(t)?cm(t):(e=$0(u,i,a),t.stateNode=e,Kn(t))}return Fe(t),null;case 5:if(lt(t),a=t.type,e!==null&&t.stateNode!=null)e.memoizedProps!==i&&Kn(t);else{if(!i){if(t.stateNode===null)throw Error(o(166));return Fe(t),null}if(e=oe.current,$i(t))cm(t);else{switch(u=eu(se.current),e){case 1:e=u.createElementNS("http://www.w3.org/2000/svg",a);break;case 2:e=u.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;default:switch(a){case"svg":e=u.createElementNS("http://www.w3.org/2000/svg",a);break;case"math":e=u.createElementNS("http://www.w3.org/1998/Math/MathML",a);break;case"script":e=u.createElement("div"),e.innerHTML=" + diff --git a/src/frontend/src/components/inputs/chat-markdown.tsx b/src/frontend/src/components/inputs/chat-markdown.tsx index 96f964d0..51ca9666 100644 --- a/src/frontend/src/components/inputs/chat-markdown.tsx +++ b/src/frontend/src/components/inputs/chat-markdown.tsx @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -import {} from 'react'; +import { memo } from 'react'; import { styled } from '@mui/material/styles'; import ReactMarkdown, { type Components } from 'react-markdown'; import remarkGfm from 'remark-gfm'; @@ -9,6 +9,7 @@ import rehypeRaw from 'rehype-raw'; import rehypeSanitize, { defaultSchema } from 'rehype-sanitize'; import 'katex/dist/katex.min.css'; import { + Divider, Table, TableBody, TableCell, @@ -21,7 +22,7 @@ import { const ChatMarkdownRoot = styled('article', { name: 'MuiMarkdownRenderer', slot: 'Root', -})(({ theme }) => { +})<{ isThinking?: boolean }>(({ theme, isThinking }) => { const { palette, spacing, typography } = theme; const preStyles = { '& pre': { @@ -41,6 +42,8 @@ const ChatMarkdownRoot = styled('article', { alignItems: 'stretch', gap: spacing(1), + color: (isThinking && palette.text.disabled) || palette.text.primary, + ...preStyles, '& think': { @@ -53,6 +56,7 @@ const ChatMarkdownRoot = styled('article', { }); interface Props { + isThinking?: boolean; content: string; } @@ -80,6 +84,7 @@ const components: Components = { h6: (props) => , p: (props) => , caption: (props) => , + hr: (props) => , table: (props) => ( @@ -98,12 +103,12 @@ const schema = { tagNames: (defaultSchema.tagNames || []).filter((tag) => !blockList.includes(tag)), }; -const ChatMarkdown = ({ content }: Props) => { +const ChatMarkdown = memo(({ isThinking, content }) => { content = preprocessThink(content); content = preprocessMath(content); return ( - + { ); -}; +}); export default ChatMarkdown; diff --git a/src/frontend/src/components/inputs/chat-messages.tsx b/src/frontend/src/components/inputs/chat-messages.tsx index a6c99b36..db7f4c8f 100644 --- a/src/frontend/src/components/inputs/chat-messages.tsx +++ b/src/frontend/src/components/inputs/chat-messages.tsx @@ -1,12 +1,7 @@ import { memo, useEffect, useRef, useState, type FC, type UIEventHandler } from 'react'; import { useChat, type ChatMessage } from '../../services'; import { Box, Button, IconButton, Paper, Stack, Tooltip, Typography } from '@mui/material'; -import { - IconArrowDown, - IconCopy, - IconCopyCheck, - IconRefresh, -} from '@tabler/icons-react'; +import { IconArrowDown, IconCopy, IconCopyCheck, IconRefresh } from '@tabler/icons-react'; import { useRefCallback } from '../../hooks'; import ChatMarkdown from './chat-markdown'; import { DotPulse } from './dot-pulse'; @@ -26,7 +21,9 @@ export const ChatMessages: FC = () => { if (userScrolledUpRef.current) return; autoScrollingRef.current = true; refBottom.current?.scrollIntoView({ behavior: 'smooth' }); - const t = setTimeout(() => { autoScrollingRef.current = false; }, 200); + const t = setTimeout(() => { + autoScrollingRef.current = false; + }, 200); return () => clearTimeout(t); }, [messages]); @@ -55,7 +52,9 @@ export const ChatMessages: FC = () => { userScrolledUpRef.current = false; autoScrollingRef.current = true; refBottom.current?.scrollIntoView({ behavior: 'smooth' }); - setTimeout(() => { autoScrollingRef.current = false; }, 200); + setTimeout(() => { + autoScrollingRef.current = false; + }, 200); }; return ( @@ -74,20 +73,22 @@ export const ChatMessages: FC = () => { onWheel={(e) => { if (e.deltaY < 0) userScrolledUpRef.current = true; }} - onTouchMove={() => { userScrolledUpRef.current = true; }} + onTouchMove={() => { + userScrolledUpRef.current = true; + }} > {messages.map((message, idx) => ( ))} - {status === 'opened' && } + {status === 'opened' && } {!isBottom && ( { borderColor: 'grey.300', '&:hover': { bgcolor: 'grey.100' }, }} - aria-label="Scroll to bottom" + aria-label='Scroll to bottom' > @@ -110,9 +111,9 @@ export const ChatMessages: FC = () => { }; const ChatMessage: FC<{ message: ChatMessage; isLast?: boolean }> = memo(({ message, isLast }) => { - const { role, content } = message; + const { role, status: messageStatus, thinking, content } = message; - const [{ status }, { generate }] = useChat(); + const [, { generate }] = useChat(); const [copied, setCopied] = useState(false); useEffect(() => { @@ -134,19 +135,27 @@ const ChatMessage: FC<{ message: ChatMessage; isLast?: boolean }> = memo(({ mess const nodeContent = role === 'user' ? {content} - : ; - - - const assistantDone = !isLast || status === 'closed'; + : <> + {thinking && } + {content && } + ; + const assistantDone = messageStatus === 'done'; const showCopy = role === 'user' || (role === 'assistant' && assistantDone); - const showRegen = role === 'assistant' && assistantDone; + const showRegenerate = role === 'assistant' && assistantDone; const userHoverRevealSx = role === 'user' ? @@ -163,7 +172,7 @@ const ChatMessage: FC<{ message: ChatMessage; isLast?: boolean }> = memo(({ mess {nodeContent} - {(showCopy || showRegen) && ( + {(showCopy || showRegenerate) && ( = memo(({ mess > {showCopy && ( = memo(({ mess )} - {showRegen && ( + {showRegenerate && ( = ({ children }) => { setStatus('closed'); }, onError: (error) => { + // Set last message to done setMessages((prev) => { const lastMessage = prev[prev.length - 1]; const { id, raw, thinking, content } = lastMessage; @@ -163,7 +164,7 @@ export const ChatProvider: FC = ({ children }) => { lastMessage = { id, role, - status: 'generating', + status: 'thinking', raw: rawDelta, content: rawDelta, createdAt: created, @@ -190,6 +191,7 @@ export const ChatProvider: FC = ({ children }) => { } lastMessage = { ...lastMessage, + status: (content && 'generating') || 'thinking', thinking, content, }; @@ -241,7 +243,10 @@ export const ChatProvider: FC = ({ children }) => { } setMessages(nextMessages); - sse.connect(modelName, nextMessages); + sse.connect( + modelName, + nextMessages.map(({ id, role, content }) => ({ id, role, content })), + ); }); const stop = useRefCallback(() => { @@ -304,6 +309,12 @@ interface SSEOptions { onMessage?: (message: { event: string; id?: string; data: any }) => void; } +interface RequestMessage { + readonly id: string; + readonly role: ChatMessageRole; + readonly content: string; +} + const createSSE = (options: SSEOptions) => { const { onOpen, onClose, onError, onMessage } = options; @@ -311,7 +322,7 @@ const createSSE = (options: SSEOptions) => { let reader: ReadableStreamDefaultReader | undefined; let abortController: AbortController | undefined; - const connect = (model: string, messages: readonly ChatMessage[]) => { + const connect = (model: string, messages: readonly RequestMessage[]) => { abortController = new AbortController(); const url = `${API_BASE_URL}/v1/chat/completions`; fetch(url, {