From 465b8835fe18e3e3968fd07d4592fa1820414350 Mon Sep 17 00:00:00 2001 From: Ualerson Date: Wed, 15 Oct 2025 11:07:44 -0300 Subject: [PATCH 1/2] None --- .github/workflows/deploy.yml | 96 +- .gitignore | 54 +- Back-End/.dockerignore | 4 - Back-End/LICENSE | 661 -- Docs/git context layer.md | 94 + mvp.md => Docs/mvp.md | 0 Front-End/git-genius-commit/.env | 1 - Front-End/git-genius-commit/README.md | 73 - Front-End/git-genius-commit/src/App.tsx | 50 - Front-End/webpr/.dockerignore | 1 - Front-End/webpr/.env | 2 - Front-End/webpr/bun.lockb | Bin 198351 -> 0 bytes Front-End/webpr/components.json | 20 - Front-End/webpr/eslint.config.js | 29 - Front-End/webpr/public/favicon.ico | Bin 7645 -> 0 bytes Front-End/webpr/public/icone.png | Bin 70056 -> 0 bytes Front-End/webpr/public/placeholder.svg | 1 - Front-End/webpr/public/robots.txt | 14 - Front-End/webpr/src/App.css | 42 - Front-End/webpr/src/main.tsx | 5 - Front-End/webpr/tsconfig.app.json | 30 - Front-End/webpr/tsconfig.json | 19 - Front-End/webpr/tsconfig.node.json | 22 - Front-End/webpr/vite.config.ts | 34 - ProductionFiles/docker-compose.yml | 2 +- .../Stack1/.github/workflows/deploy.yml | 74 + .../Architectures/Stack1/Back-End}/Dockerfile | 0 .../Stack1/Back-End/Models/mongoDB/audit.py | 34 + .../Stack1/Back-End/Models/mongoDB/logs.py | 39 + .../Stack1/Back-End/Models/postgreSQL/user.py | 39 + .../Stack1/Back-End/Modules/Config/setup.py | 42 + .../Stack1/Back-End/Modules/Geters/logs.py | 91 + .../Modules/Geters/user_by_access_token.py | 8 + .../Back-End/Modules/Geters/user_by_email.py | 8 + .../Modules/Resolvers/generate_invoice_pdf.py | 0 .../Back-End}/Modules/Resolvers/send_email.py | 0 .../Modules/Resolvers/user_identifier.py | 112 + .../Stack1/Back-End/Modules/Routes/auth.py | 74 + .../Back-End}/Modules/Savers/log_action.py | 0 .../Back-End/Modules/Savers/log_audit.py | 21 + .../Modules/Savers/log_system_health.py | 23 + .../Architectures/Stack1/Back-End/api.py | 64 + .../Stack1/Back-End/requirements.txt | 0 .../Architectures/Stack1/Readme.md | 8 + .../Architectures/Stack1/build.py | 0 .../Architectures/Stack1/docker-compose.yml | 124 + .../CodeKnowledge/Docs/folder_convetions.md | 83 + .../CodeKnowledge/_Test_embedings.py | 101 + .../CodeKnowledge/_Test_index_skeleton.py | 98 + .../data_level0.bin | Bin 0 -> 628400 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | 1 + .../link_lists.bin | 0 .../CodeKnowledge/chroma_store/chroma.sqlite3 | Bin 0 -> 1835008 bytes .../AppAI/CodeBackend/Sessions/session_1.db | Bin 0 -> 61440 bytes backend/Agents/AppAI/CodeBackend/ai.py | 238 + .../Docs/Padr\303\265es de Arquitetura.md" | 62 + ...303\265es de Comunica\303\247\303\243o.md" | 20 + .../Padr\303\265es de Cont\303\252ineres.md" | 20 + .../Docs/Padr\303\265es de C\303\263digo.md" | 39 + .../Docs/Padr\303\265es de Design System.md" | 56 + ...tegra\303\247\303\243o Cont\303\255nua.md" | 14 + .../Docs/Padr\303\265es de Mocking.md" | 49 + .../Docs/Padr\303\265es de Requisitos.md" | 39 + ...r\303\265es de Testes Unit\303\241rios.md" | 21 + .../Docs/Padr\303\265es de UI e UX.md" | 65 + .../Docs/Stack Tecnol\303\263gica.md" | 21 + .../Knowledge/_Test_create_embedings.py | 148 + .../CodeFrontend/Knowledge/_Test_embedings.py | 57 + .../data_level0.bin | Bin 0 -> 628400 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 .../Knowledge/chroma_store/chroma.sqlite3 | Bin 0 -> 712704 bytes .../AppAI/CodeFrontend/Sessions/session_1.db | Bin 0 -> 126976 bytes backend/Agents/AppAI/CodeFrontend/ai.py | 211 + backend/Agents/AppAI/PredictedTypeApp/ai.py | 89 + .../backend/Padr\303\265es de Arquitetura.md" | 186 + ...303\265es de Comunica\303\247\303\243o.md" | 35 + .../Padr\303\265es de Cont\303\252ineres.md" | 31 + .../Padr\303\265es de C\303\263digo.md" | 113 + ...tegra\303\247\303\243o Cont\303\255nua.md" | 17 + .../backend/Padr\303\265es de Requisitos.md" | 37 + ...r\303\265es de Testes Unit\303\241rios.md" | 30 + .../Docs/backend/Stack Tecnol\303\263gica.md" | 21 + .../Padr\303\265es de Arquitetura.md" | 62 + ...303\265es de Comunica\303\247\303\243o.md" | 20 + .../Padr\303\265es de Cont\303\252ineres.md" | 20 + .../Padr\303\265es de C\303\263digo.md" | 39 + .../Padr\303\265es de Design System.md" | 56 + ...tegra\303\247\303\243o Cont\303\255nua.md" | 14 + .../frontend/Padr\303\265es de Mocking.md" | 49 + .../frontend/Padr\303\265es de Requisitos.md" | 39 + ...r\303\265es de Testes Unit\303\241rios.md" | 21 + .../frontend/Padr\303\265es de UI e UX.md" | 65 + .../frontend/Stack Tecnol\303\263gica.md" | 21 + .../Knowledge/_Test_create_embedings.py | 148 + .../Knowledge/_Test_embedings.py | 57 + .../data_level0.bin | Bin 0 -> 628400 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 .../Knowledge/chroma_store/chroma.sqlite3 | Bin 0 -> 921600 bytes .../data_level0.bin | Bin 0 -> 628400 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | 1 + .../link_lists.bin | 0 .../chroma_store_frontend/chroma.sqlite3 | Bin 0 -> 720896 bytes .../Sessions/session_frontend_1.db | Bin 0 -> 90112 bytes .../Agents/AppAI/RequirementsPlanner/ai.py | 733 +++ .../Docs/Padr\303\265es de Arquitetura.md" | 186 + ...303\265es de Comunica\303\247\303\243o.md" | 35 + .../Padr\303\265es de Cont\303\252ineres.md" | 31 + .../Docs/Padr\303\265es de C\303\263digo.md" | 113 + ...tegra\303\247\303\243o Cont\303\255nua.md" | 17 + .../Docs/Padr\303\265es de Requisitos.md" | 37 + ...r\303\265es de Testes Unit\303\241rios.md" | 30 + .../Docs/Stack Tecnol\303\263gica.md" | 21 + .../Knowledge/_Test_create_embedings.py | 148 + .../Knowledge/_Test_embedings.py | 57 + .../data_level0.bin | Bin 0 -> 628400 bytes .../header.bin | Bin 0 -> 100 bytes .../length.bin | Bin 0 -> 400 bytes .../link_lists.bin | 0 .../Knowledge/chroma_store/chroma.sqlite3 | Bin 0 -> 540672 bytes .../SprintsPlanner/Sessions/session_1.db | Bin 0 -> 61440 bytes backend/Agents/AppAI/SprintsPlanner/ai.py | 297 + backend/Agents/AppAI/SprintsSheduler/ai.py | 207 + .../Agents/GitContextLayer/ai.py | 0 backend/Agents/JobSearch/AIJobAutomation.py | 529 ++ {Back-End => backend}/Agents/PrSumary/ai.py | 0 backend/Agents/TecnicalDoc/ai.py | 291 + backend/Agents/TecnicalDoc/example.py | 16 + backend/Agents/gpt_engineer/__init__.py | 4 + .../gpt_engineer/applications/__init__.py | 0 .../gpt_engineer/applications/cli/__init__.py | 0 .../applications/cli/cli_agent.py | 226 + .../gpt_engineer/applications/cli/collect.py | 177 + .../applications/cli/file_selector.py | 551 ++ .../gpt_engineer/applications/cli/learning.py | 301 + .../gpt_engineer/applications/cli/main.py | 574 ++ .../Agents/gpt_engineer/benchmark/__init__.py | 0 .../Agents/gpt_engineer/benchmark/__main__.py | 154 + .../gpt_engineer/benchmark/bench_config.py | 69 + .../benchmark/benchmarks/apps/load.py | 118 + .../benchmark/benchmarks/apps/problem.py | 25 + .../benchmark/benchmarks/apps/problems.py | 3 + .../benchmark/benchmarks/gptme/load.py | 104 + .../gpt_engineer/benchmark/benchmarks/load.py | 48 + .../benchmark/benchmarks/mbpp/load.py | 114 + .../benchmark/benchmarks/mbpp/problem.py | 25 + .../benchmark/benchmarks/mbpp/problems.py | 3 + .../benchmark/default_bench_config.toml | 16 + backend/Agents/gpt_engineer/benchmark/run.py | 150 + .../Agents/gpt_engineer/benchmark/types.py | 94 + .../core/WebSocketStreamingCallbackHandler.py | 97 + backend/Agents/gpt_engineer/core/__init__.py | 0 backend/Agents/gpt_engineer/core/ai.py | 472 ++ .../Agents/gpt_engineer/core/base_agent.py | 31 + .../gpt_engineer/core/base_execution_env.py | 42 + .../Agents/gpt_engineer/core/base_memory.py | 15 + .../Agents/gpt_engineer/core/chat_to_files.py | 312 + .../gpt_engineer/core/default/__init__.py | 0 .../gpt_engineer/core/default/constants.py | 12 + .../core/default/disk_execution_env.py | 111 + .../gpt_engineer/core/default/disk_memory.py | 326 + .../gpt_engineer/core/default/file_store.py | 62 + .../Agents/gpt_engineer/core/default/paths.py | 86 + .../gpt_engineer/core/default/simple_agent.py | 100 + .../Agents/gpt_engineer/core/default/steps.py | 468 ++ backend/Agents/gpt_engineer/core/diff.py | 421 ++ .../Agents/gpt_engineer/core/diffprocessor.py | 111 + .../Agents/gpt_engineer/core/files_dict.py | 115 + backend/Agents/gpt_engineer/core/git.py | 85 + backend/Agents/gpt_engineer/core/linting.py | 64 + .../gpt_engineer/core/preprompts_holder.py | 29 + .../gpt_engineer/core/project_config.py | 158 + backend/Agents/gpt_engineer/core/prompt.py | 44 + .../Agents/gpt_engineer/core/token_usage.py | 301 + .../gpt_engineer/core/version_manager.py | 30 + .../Agents/gpt_engineer/preprompts/clarify | 3 + .../Agents/gpt_engineer/preprompts/entrypoint | 9 + .../gpt_engineer/preprompts/file_format | 67 + .../gpt_engineer/preprompts/file_format_diff | 41 + .../gpt_engineer/preprompts/file_format_fix | 22 + .../Agents/gpt_engineer/preprompts/generate | 99 + .../Agents/gpt_engineer/preprompts/improve | 17 + .../Agents/gpt_engineer/preprompts/philosophy | 12 + .../Agents/gpt_engineer/preprompts/roadmap | 2 + .../gpt_engineer/teste_ai_strutured_output.py | 79 + backend/Agents/gpt_engineer/teste_ai_tools.py | 58 + backend/Agents/gpt_engineer/tools/__init__.py | 0 .../Agents/gpt_engineer/tools/custom_steps.py | 233 + .../gpt_engineer/tools/supported_languages.py | 58 + backend/Dockerfile | 25 + .../EmailTemplates/FalhaDeProjeto.html | 0 .../EmailTemplates/SucessoDeProjeto.html | 0 .../EmailTemplates/email_account_success.html | 0 .../EmailTemplates/email_plan_upgraded.html | 0 .../EmailTemplates/email_tiktok_fail.html | 0 .../EmailTemplates/email_youtube_fail.html | 0 .../EmailTemplates/server_limit.html | 0 .../EmailTemplates/teste.html | 0 .../autogetcurrenttime/autogetcurrenttime.py | 66 + .../autolistlocalproject.py | 47 + backend/Functions/autosave/autosave.py | 60 + .../retrieve_backend_context.py | 36 + .../Functions/task_sheduler/task_sheduler.py | 64 + {Back-End => backend}/Models/mongoDB.py | 4 - {Back-End => backend}/Models/postgreSQL.py | 30 +- backend/Modules/ChatKit/FactAgentContext.py | 13 + backend/Modules/ChatKit/__init__.py | 0 backend/Modules/ChatKit/chat.py | 298 + backend/Modules/ChatKit/constants.py | 93 + backend/Modules/ChatKit/facts.py | 93 + backend/Modules/ChatKit/memory_store.py | 165 + backend/Modules/ChatKit/postgres_store.py | 340 + backend/Modules/ChatKit/sample_widget.py | 742 +++ backend/Modules/ChatKit/tools.py | 317 + backend/Modules/ChatKit/utils.py | 88 + backend/Modules/ChatKit/weather.py | 498 ++ {Back-End => backend}/Modules/Geters/logs.py | 0 backend/Modules/Geters/next_task.py | 17 + .../Modules/Geters/plans_data.py | 10 +- .../Modules/Geters/pr_diff.py | 0 .../Modules/Geters/systemsettings.py | 4 +- .../Modules/Geters/user_by_access_token.py | 0 .../Modules/Geters/user_by_email.py | 0 backend/Modules/Helpers/EgetTools.py | 87 + .../Modules/Helpers/estimate_tokens.py | 0 .../Modules/Resolvers/generate_invoice_pdf.py | 34 + .../Resolvers/git_contex_layer_process.py | 0 .../Modules/Resolvers/github_app_auth.py | 0 .../Modules/Resolvers/pr_process.py | 0 backend/Modules/Resolvers/send_email.py | 171 + .../Modules/Resolvers/user_identifier.py | 110 +- .../Modules/Resolvers/verify_signature.py | 0 backend/Modules/Savers/create_task.py | 29 + backend/Modules/Savers/log_action.py | 68 + .../Modules/Savers/log_audit.py | 0 .../Modules/Savers/log_system_health.py | 0 .../Modules/Updaters/pr_body.py | 0 .../Modules/Updaters/pr_merge.py | 0 .../Modules/Updaters/user_tokens.py | 0 backend/TestDiscovery/_task_sheduler.py | 74 + .../TestDiscovery/add_mock_pr.py | 0 .../TestDiscovery/create_new_user.py | 3 + backend/TestDiscovery/errorr.txt | 9 + .../TestDiscovery/gen-prai.py | 0 .../TestDiscovery}/git_context_layer.py | 0 .../TestDiscovery/local_pipeline_test.py | 0 .../TestDiscovery/log_action.py | 0 backend/TestDiscovery/lovable.py | 158 + .../TestDiscovery/normalize_user.py | 0 .../TestDiscovery}/observer.py | 0 .../TestDiscovery/openai_status.py | 0 .../TestDiscovery/rate_limiting.py | 0 .../seed_invoices_for_freitas.md | 0 .../TestDiscovery/test_usage_tokens.py | 0 backend/TestDiscovery/teste_ai_type.py | 138 + backend/TestDiscovery/teste_diff.py | 34 + backend/TestDiscovery/teste_main.diff | 21 + backend/TestDiscovery/teste_mcp.py | 33 + .../TestDiscovery/testerun_gpt_engineer.py | 48 + backend/TestDiscovery/testes.py | 6 + .../PullRequest => backend/Workflows}/pr.yml | 0 {Back-End => backend}/api.py | 183 +- backend/apichatkit.py | 93 + backend/celery_app.py | 131 + backend/celerybeat-schedule | Bin 0 -> 3072 bytes {Back-End => backend}/requirements.txt | 10 +- backend/test_notion.py | 518 ++ build_in_windows.py | 14 + docker-compose.yml | 67 +- .../electron}/.gitignore | 0 .../electron}/bun.lockb | Bin .../electron}/components.json | 0 .../electron}/electron/main.cjs | 0 .../electron}/electron/preload.cjs | 0 .../electron}/eslint.config.js | 0 .../electron}/index.html | 0 .../electron}/package-lock.json | 0 .../electron}/package.json | 0 .../electron}/postcss.config.js | 0 .../electron}/public/favicon.ico | Bin .../electron}/public/placeholder.svg | 0 .../electron}/public/robots.txt | 0 .../electron}/src/App.css | 0 frontend/electron/src/App.tsx | 96 + .../src/components/CommitPreview.tsx | 0 .../electron}/src/components/ConfigPanel.tsx | 40 +- .../electron}/src/components/DiffViewer.tsx | 0 .../src/components/ProtectedRoute.tsx | 0 .../src/components/RepositorySelector.tsx | 0 .../src/components/StatusMonitor.tsx | 0 .../electron/src/components/app-sidebar.tsx | 131 + .../electron}/src/components/layout.tsx | 4 +- .../electron}/src/components/ui/accordion.tsx | 0 .../src/components/ui/alert-dialog.tsx | 0 .../electron}/src/components/ui/alert.tsx | 0 .../src/components/ui/aspect-ratio.tsx | 0 .../electron}/src/components/ui/avatar.tsx | 0 .../electron}/src/components/ui/badge.tsx | 0 .../src/components/ui/breadcrumb.tsx | 0 .../electron}/src/components/ui/button.tsx | 0 .../electron}/src/components/ui/calendar.tsx | 0 .../electron}/src/components/ui/card.tsx | 0 .../electron}/src/components/ui/carousel.tsx | 0 .../electron}/src/components/ui/chart.tsx | 0 .../electron}/src/components/ui/checkbox.tsx | 0 .../src/components/ui/collapsible.tsx | 0 .../electron}/src/components/ui/command.tsx | 0 .../src/components/ui/context-menu.tsx | 0 .../electron}/src/components/ui/dialog.tsx | 0 .../electron}/src/components/ui/drawer.tsx | 0 .../src/components/ui/dropdown-menu.tsx | 0 .../electron}/src/components/ui/form.tsx | 0 .../src/components/ui/hover-card.tsx | 0 .../electron}/src/components/ui/input-otp.tsx | 0 .../electron}/src/components/ui/input.tsx | 0 .../electron}/src/components/ui/label.tsx | 0 .../electron}/src/components/ui/menubar.tsx | 0 .../src/components/ui/navigation-menu.tsx | 0 .../src/components/ui/pagination.tsx | 0 .../electron}/src/components/ui/popover.tsx | 0 .../electron}/src/components/ui/progress.tsx | 0 .../src/components/ui/radio-group.tsx | 0 .../electron}/src/components/ui/resizable.tsx | 0 .../src/components/ui/scroll-area.tsx | 0 .../electron}/src/components/ui/select.tsx | 0 .../electron}/src/components/ui/separator.tsx | 0 .../electron}/src/components/ui/sheet.tsx | 0 .../electron}/src/components/ui/sidebar.tsx | 0 .../electron}/src/components/ui/skeleton.tsx | 0 .../electron}/src/components/ui/slider.tsx | 0 .../electron}/src/components/ui/sonner.tsx | 0 .../electron}/src/components/ui/switch.tsx | 0 .../electron}/src/components/ui/table.tsx | 0 .../electron}/src/components/ui/tabs.tsx | 0 .../electron}/src/components/ui/textarea.tsx | 0 .../electron}/src/components/ui/toast.tsx | 0 .../electron}/src/components/ui/toaster.tsx | 0 .../src/components/ui/toggle-group.tsx | 0 .../electron}/src/components/ui/toggle.tsx | 0 .../electron}/src/components/ui/tooltip.tsx | 0 .../electron}/src/components/ui/use-toast.ts | 0 .../electron}/src/contexts/AuthContext.tsx | 0 .../electron}/src/hooks/use-mobile.tsx | 0 .../electron}/src/hooks/use-toast.ts | 0 .../electron}/src/hooks/useGitOperations.ts | 0 .../electron}/src/index.css | 0 .../electron}/src/lib/utils.ts | 0 .../electron}/src/main.tsx | 0 .../electron/src/pages/GCL.tsx | 10 +- .../electron}/src/pages/Login.tsx | 2 +- .../electron}/src/pages/NotFound.tsx | 0 .../electron}/src/types/electron.d.ts | 0 .../electron}/src/types/git.ts | 1 + .../electron}/src/vite-env.d.ts | 0 .../electron}/tailwind.config.ts | 0 .../electron}/tsconfig.app.json | 0 .../electron}/tsconfig.json | 0 .../electron}/tsconfig.node.json | 0 .../electron}/vite.config.ts | 0 frontend/web/.gitignore | 10 + {Front-End/webpr => frontend/web}/Dockerfile | 0 frontend/web/README.md | 30 + frontend/web/eslint.config.js | 36 + {Front-End/webpr => frontend/web}/index.html | 12 +- .../webpr => frontend/web}/package-lock.json | 5706 ++++++++--------- .../webpr => frontend/web}/package.json | 47 +- .../web/postcss.config.cjs | 4 +- {Front-End/webpr => frontend/web}/src/App.tsx | 31 +- .../web}/src/assets/hero-image.jpg | Bin .../web}/src/assets/logo.png | Bin frontend/web/src/components/ChatKitPanel.tsx | 191 + frontend/web/src/components/FactCard.tsx | 12 + .../web}/src/components/ProtectedRoute.tsx | 0 frontend/web/src/components/ThemeToggle.tsx | 46 + .../web}/src/components/app-sidebar.tsx | 21 +- .../web}/src/components/cta-section.tsx | 2 +- .../web}/src/components/features-section.tsx | 0 .../web}/src/components/footer.tsx | 2 +- .../web}/src/components/header.tsx | 2 +- .../web}/src/components/hero-section.tsx | 2 +- frontend/web/src/components/layout.tsx | 36 + .../web}/src/components/pricing-section.tsx | 1 - .../web}/src/components/ui/accordion.tsx | 0 .../web}/src/components/ui/alert-dialog.tsx | 0 .../web}/src/components/ui/alert.tsx | 0 .../web}/src/components/ui/aspect-ratio.tsx | 0 .../web}/src/components/ui/avatar.tsx | 0 .../web}/src/components/ui/badge.tsx | 0 .../web}/src/components/ui/breadcrumb.tsx | 0 .../web}/src/components/ui/button.tsx | 0 .../web}/src/components/ui/calendar.tsx | 0 .../web}/src/components/ui/card.tsx | 0 .../web}/src/components/ui/carousel.tsx | 0 .../web}/src/components/ui/chart.tsx | 0 .../web}/src/components/ui/checkbox.tsx | 0 .../web}/src/components/ui/collapsible.tsx | 0 .../web}/src/components/ui/command.tsx | 0 .../web}/src/components/ui/context-menu.tsx | 0 .../web}/src/components/ui/dialog.tsx | 0 .../web}/src/components/ui/drawer.tsx | 0 .../web}/src/components/ui/dropdown-menu.tsx | 0 .../web}/src/components/ui/form.tsx | 0 .../web}/src/components/ui/hover-card.tsx | 0 .../web}/src/components/ui/input-otp.tsx | 0 .../web}/src/components/ui/input.tsx | 0 .../web}/src/components/ui/label.tsx | 0 .../web}/src/components/ui/menubar.tsx | 0 .../src/components/ui/navigation-menu.tsx | 0 .../web}/src/components/ui/pagination.tsx | 0 .../web}/src/components/ui/popover.tsx | 0 .../web}/src/components/ui/progress.tsx | 0 .../web}/src/components/ui/radio-group.tsx | 0 .../web}/src/components/ui/resizable.tsx | 0 .../web}/src/components/ui/scroll-area.tsx | 0 .../web}/src/components/ui/select.tsx | 0 .../web}/src/components/ui/separator.tsx | 0 .../web}/src/components/ui/sheet.tsx | 0 .../web}/src/components/ui/sidebar.tsx | 0 .../web}/src/components/ui/skeleton.tsx | 0 .../web}/src/components/ui/slider.tsx | 0 .../web}/src/components/ui/sonner.tsx | 0 .../web}/src/components/ui/switch.tsx | 0 .../web}/src/components/ui/table.tsx | 0 .../web}/src/components/ui/tabs.tsx | 0 .../web}/src/components/ui/textarea.tsx | 0 .../web}/src/components/ui/toast.tsx | 0 .../web}/src/components/ui/toaster.tsx | 0 .../web}/src/components/ui/toggle-group.tsx | 0 .../web}/src/components/ui/toggle.tsx | 0 .../web}/src/components/ui/tooltip.tsx | 0 .../web}/src/components/ui/use-toast.ts | 0 .../web}/src/constants/landingpage.ts | 0 .../web}/src/contexts/AuthContext.tsx | 0 .../web}/src/hooks/use-mobile.tsx | 0 .../web}/src/hooks/use-toast.ts | 0 frontend/web/src/hooks/useActions.ts | 45 + frontend/web/src/hooks/useColorScheme.ts | 39 + .../webpr => frontend/web}/src/index.css | 19 +- frontend/web/src/lib/config.ts | 44 + frontend/web/src/lib/facts.ts | 6 + .../webpr => frontend/web}/src/lib/utils.ts | 0 frontend/web/src/main.tsx | 15 + frontend/web/src/pages/AgentTasks.tsx | 299 + .../web}/src/pages/Billing.tsx | 23 +- frontend/web/src/pages/Chat.tsx | 48 + .../web}/src/pages/CheckoutError.tsx | 0 .../web}/src/pages/CheckoutSuccess.tsx | 0 .../web}/src/pages/CommitMessages.tsx | 0 .../web}/src/pages/Controls.tsx | 0 .../web}/src/pages/Dashboard.tsx | 0 .../web}/src/pages/Invoices.tsx | 0 .../web}/src/pages/Landingpage.tsx | 0 .../web}/src/pages/Login.tsx | 8 +- .../webpr => frontend/web}/src/pages/Logs.tsx | 0 .../web}/src/pages/MyAccount.tsx | 0 .../web}/src/pages/NotFound.tsx | 0 .../web}/src/pages/PullRequests.tsx | 0 .../web}/src/pages/Settings.tsx | 90 +- .../web}/src/pages/SignupCheckout.tsx | 0 .../web}/src/pages/Workflows.tsx | 0 frontend/web/src/types/chatkit-tools.d.ts | 8 + .../webpr => frontend/web}/src/vite-env.d.ts | 0 .../webpr => frontend/web}/tailwind.config.ts | 0 frontend/web/tsconfig.json | 20 + frontend/web/tsconfig.node.json | 11 + frontend/web/vite.config.ts | 39 + 471 files changed, 22199 insertions(+), 4264 deletions(-) delete mode 100644 Back-End/.dockerignore delete mode 100644 Back-End/LICENSE create mode 100644 Docs/git context layer.md rename mvp.md => Docs/mvp.md (100%) delete mode 100644 Front-End/git-genius-commit/.env delete mode 100644 Front-End/git-genius-commit/README.md delete mode 100644 Front-End/git-genius-commit/src/App.tsx delete mode 100644 Front-End/webpr/.dockerignore delete mode 100644 Front-End/webpr/.env delete mode 100644 Front-End/webpr/bun.lockb delete mode 100644 Front-End/webpr/components.json delete mode 100644 Front-End/webpr/eslint.config.js delete mode 100644 Front-End/webpr/public/favicon.ico delete mode 100644 Front-End/webpr/public/icone.png delete mode 100644 Front-End/webpr/public/placeholder.svg delete mode 100644 Front-End/webpr/public/robots.txt delete mode 100644 Front-End/webpr/src/App.css delete mode 100644 Front-End/webpr/src/main.tsx delete mode 100644 Front-End/webpr/tsconfig.app.json delete mode 100644 Front-End/webpr/tsconfig.json delete mode 100644 Front-End/webpr/tsconfig.node.json delete mode 100644 Front-End/webpr/vite.config.ts create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/.github/workflows/deploy.yml rename {Back-End => backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End}/Dockerfile (100%) create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/audit.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/logs.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/postgreSQL/user.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Config/setup.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/logs.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_access_token.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_email.py rename {Back-End => backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End}/Modules/Resolvers/generate_invoice_pdf.py (100%) rename {Back-End => backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End}/Modules/Resolvers/send_email.py (100%) create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/user_identifier.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Routes/auth.py rename {Back-End => backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End}/Modules/Savers/log_action.py (100%) create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_audit.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_system_health.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/api.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/requirements.txt create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Readme.md rename build.py => backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/build.py (100%) create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/docker-compose.yml create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/Docs/folder_convetions.md create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_embedings.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_index_skeleton.py create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/data_level0.bin create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/header.bin create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/length.bin create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/link_lists.bin create mode 100644 backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/chroma.sqlite3 create mode 100644 backend/Agents/AppAI/CodeBackend/Sessions/session_1.db create mode 100644 backend/Agents/AppAI/CodeBackend/ai.py create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Arquitetura.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Design System.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Mocking.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Requisitos.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de UI e UX.md" create mode 100644 "backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Stack Tecnol\303\263gica.md" create mode 100644 backend/Agents/AppAI/CodeFrontend/Knowledge/_Test_create_embedings.py create mode 100644 backend/Agents/AppAI/CodeFrontend/Knowledge/_Test_embedings.py create mode 100644 backend/Agents/AppAI/CodeFrontend/Knowledge/chroma_store/6f072005-459e-4424-a957-462069c15305/data_level0.bin create mode 100644 backend/Agents/AppAI/CodeFrontend/Knowledge/chroma_store/6f072005-459e-4424-a957-462069c15305/header.bin create mode 100644 backend/Agents/AppAI/CodeFrontend/Knowledge/chroma_store/6f072005-459e-4424-a957-462069c15305/length.bin create mode 100644 backend/Agents/AppAI/CodeFrontend/Knowledge/chroma_store/6f072005-459e-4424-a957-462069c15305/link_lists.bin create mode 100644 backend/Agents/AppAI/CodeFrontend/Knowledge/chroma_store/chroma.sqlite3 create mode 100644 backend/Agents/AppAI/CodeFrontend/Sessions/session_1.db create mode 100644 backend/Agents/AppAI/CodeFrontend/ai.py create mode 100644 backend/Agents/AppAI/PredictedTypeApp/ai.py create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Arquitetura.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Comunica\303\247\303\243o.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Cont\303\252ineres.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de C\303\263digo.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Requisitos.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Testes Unit\303\241rios.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Stack Tecnol\303\263gica.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Arquitetura.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Comunica\303\247\303\243o.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Cont\303\252ineres.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de C\303\263digo.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Design System.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Mocking.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Requisitos.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Testes Unit\303\241rios.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de UI e UX.md" create mode 100644 "backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Stack Tecnol\303\263gica.md" create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/_Test_create_embedings.py create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/_Test_embedings.py create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/data_level0.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/header.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/length.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/link_lists.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store/chroma.sqlite3 create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store_frontend/c91afe57-ed1b-4259-bb4d-eb7c0e01ab57/data_level0.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store_frontend/c91afe57-ed1b-4259-bb4d-eb7c0e01ab57/header.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store_frontend/c91afe57-ed1b-4259-bb4d-eb7c0e01ab57/length.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store_frontend/c91afe57-ed1b-4259-bb4d-eb7c0e01ab57/link_lists.bin create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store_frontend/chroma.sqlite3 create mode 100644 backend/Agents/AppAI/RequirementsPlanner/Sessions/session_frontend_1.db create mode 100644 backend/Agents/AppAI/RequirementsPlanner/ai.py create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Arquitetura.md" create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Requisitos.md" create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" create mode 100644 "backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Stack Tecnol\303\263gica.md" create mode 100644 backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_create_embedings.py create mode 100644 backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_embedings.py create mode 100644 backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/data_level0.bin create mode 100644 backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/header.bin create mode 100644 backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/length.bin create mode 100644 backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/link_lists.bin create mode 100644 backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/chroma.sqlite3 create mode 100644 backend/Agents/AppAI/SprintsPlanner/Sessions/session_1.db create mode 100644 backend/Agents/AppAI/SprintsPlanner/ai.py create mode 100644 backend/Agents/AppAI/SprintsSheduler/ai.py rename {Back-End => backend}/Agents/GitContextLayer/ai.py (100%) create mode 100644 backend/Agents/JobSearch/AIJobAutomation.py rename {Back-End => backend}/Agents/PrSumary/ai.py (100%) create mode 100644 backend/Agents/TecnicalDoc/ai.py create mode 100644 backend/Agents/TecnicalDoc/example.py create mode 100644 backend/Agents/gpt_engineer/__init__.py create mode 100644 backend/Agents/gpt_engineer/applications/__init__.py create mode 100644 backend/Agents/gpt_engineer/applications/cli/__init__.py create mode 100644 backend/Agents/gpt_engineer/applications/cli/cli_agent.py create mode 100644 backend/Agents/gpt_engineer/applications/cli/collect.py create mode 100644 backend/Agents/gpt_engineer/applications/cli/file_selector.py create mode 100644 backend/Agents/gpt_engineer/applications/cli/learning.py create mode 100644 backend/Agents/gpt_engineer/applications/cli/main.py create mode 100644 backend/Agents/gpt_engineer/benchmark/__init__.py create mode 100644 backend/Agents/gpt_engineer/benchmark/__main__.py create mode 100644 backend/Agents/gpt_engineer/benchmark/bench_config.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/apps/load.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problem.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problems.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/gptme/load.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/load.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/load.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problem.py create mode 100644 backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problems.py create mode 100644 backend/Agents/gpt_engineer/benchmark/default_bench_config.toml create mode 100644 backend/Agents/gpt_engineer/benchmark/run.py create mode 100644 backend/Agents/gpt_engineer/benchmark/types.py create mode 100644 backend/Agents/gpt_engineer/core/WebSocketStreamingCallbackHandler.py create mode 100644 backend/Agents/gpt_engineer/core/__init__.py create mode 100644 backend/Agents/gpt_engineer/core/ai.py create mode 100644 backend/Agents/gpt_engineer/core/base_agent.py create mode 100644 backend/Agents/gpt_engineer/core/base_execution_env.py create mode 100644 backend/Agents/gpt_engineer/core/base_memory.py create mode 100644 backend/Agents/gpt_engineer/core/chat_to_files.py create mode 100644 backend/Agents/gpt_engineer/core/default/__init__.py create mode 100644 backend/Agents/gpt_engineer/core/default/constants.py create mode 100644 backend/Agents/gpt_engineer/core/default/disk_execution_env.py create mode 100644 backend/Agents/gpt_engineer/core/default/disk_memory.py create mode 100644 backend/Agents/gpt_engineer/core/default/file_store.py create mode 100644 backend/Agents/gpt_engineer/core/default/paths.py create mode 100644 backend/Agents/gpt_engineer/core/default/simple_agent.py create mode 100644 backend/Agents/gpt_engineer/core/default/steps.py create mode 100644 backend/Agents/gpt_engineer/core/diff.py create mode 100644 backend/Agents/gpt_engineer/core/diffprocessor.py create mode 100644 backend/Agents/gpt_engineer/core/files_dict.py create mode 100644 backend/Agents/gpt_engineer/core/git.py create mode 100644 backend/Agents/gpt_engineer/core/linting.py create mode 100644 backend/Agents/gpt_engineer/core/preprompts_holder.py create mode 100644 backend/Agents/gpt_engineer/core/project_config.py create mode 100644 backend/Agents/gpt_engineer/core/prompt.py create mode 100644 backend/Agents/gpt_engineer/core/token_usage.py create mode 100644 backend/Agents/gpt_engineer/core/version_manager.py create mode 100644 backend/Agents/gpt_engineer/preprompts/clarify create mode 100644 backend/Agents/gpt_engineer/preprompts/entrypoint create mode 100644 backend/Agents/gpt_engineer/preprompts/file_format create mode 100644 backend/Agents/gpt_engineer/preprompts/file_format_diff create mode 100644 backend/Agents/gpt_engineer/preprompts/file_format_fix create mode 100644 backend/Agents/gpt_engineer/preprompts/generate create mode 100644 backend/Agents/gpt_engineer/preprompts/improve create mode 100644 backend/Agents/gpt_engineer/preprompts/philosophy create mode 100644 backend/Agents/gpt_engineer/preprompts/roadmap create mode 100644 backend/Agents/gpt_engineer/teste_ai_strutured_output.py create mode 100644 backend/Agents/gpt_engineer/teste_ai_tools.py create mode 100644 backend/Agents/gpt_engineer/tools/__init__.py create mode 100644 backend/Agents/gpt_engineer/tools/custom_steps.py create mode 100644 backend/Agents/gpt_engineer/tools/supported_languages.py create mode 100644 backend/Dockerfile rename {Back-End => backend}/EmailTemplates/FalhaDeProjeto.html (100%) rename {Back-End => backend}/EmailTemplates/SucessoDeProjeto.html (100%) rename {Back-End => backend}/EmailTemplates/email_account_success.html (100%) rename {Back-End => backend}/EmailTemplates/email_plan_upgraded.html (100%) rename {Back-End => backend}/EmailTemplates/email_tiktok_fail.html (100%) rename {Back-End => backend}/EmailTemplates/email_youtube_fail.html (100%) rename {Back-End => backend}/EmailTemplates/server_limit.html (100%) rename {Back-End => backend}/EmailTemplates/teste.html (100%) create mode 100644 backend/Functions/autogetcurrenttime/autogetcurrenttime.py create mode 100644 backend/Functions/autolistlocalproject/autolistlocalproject.py create mode 100644 backend/Functions/autosave/autosave.py create mode 100644 backend/Functions/retrieve_backend_context/retrieve_backend_context.py create mode 100644 backend/Functions/task_sheduler/task_sheduler.py rename {Back-End => backend}/Models/mongoDB.py (89%) rename {Back-End => backend}/Models/postgreSQL.py (87%) create mode 100644 backend/Modules/ChatKit/FactAgentContext.py create mode 100644 backend/Modules/ChatKit/__init__.py create mode 100644 backend/Modules/ChatKit/chat.py create mode 100644 backend/Modules/ChatKit/constants.py create mode 100644 backend/Modules/ChatKit/facts.py create mode 100644 backend/Modules/ChatKit/memory_store.py create mode 100644 backend/Modules/ChatKit/postgres_store.py create mode 100644 backend/Modules/ChatKit/sample_widget.py create mode 100644 backend/Modules/ChatKit/tools.py create mode 100644 backend/Modules/ChatKit/utils.py create mode 100644 backend/Modules/ChatKit/weather.py rename {Back-End => backend}/Modules/Geters/logs.py (100%) create mode 100644 backend/Modules/Geters/next_task.py rename {Back-End => backend}/Modules/Geters/plans_data.py (80%) rename {Back-End => backend}/Modules/Geters/pr_diff.py (100%) rename {Back-End => backend}/Modules/Geters/systemsettings.py (80%) rename {Back-End => backend}/Modules/Geters/user_by_access_token.py (100%) rename {Back-End => backend}/Modules/Geters/user_by_email.py (100%) create mode 100644 backend/Modules/Helpers/EgetTools.py rename {Back-End => backend}/Modules/Helpers/estimate_tokens.py (100%) create mode 100644 backend/Modules/Resolvers/generate_invoice_pdf.py rename {Back-End => backend}/Modules/Resolvers/git_contex_layer_process.py (100%) rename {Back-End => backend}/Modules/Resolvers/github_app_auth.py (100%) rename {Back-End => backend}/Modules/Resolvers/pr_process.py (100%) create mode 100644 backend/Modules/Resolvers/send_email.py rename {Back-End => backend}/Modules/Resolvers/user_identifier.py (59%) rename {Back-End => backend}/Modules/Resolvers/verify_signature.py (100%) create mode 100644 backend/Modules/Savers/create_task.py create mode 100644 backend/Modules/Savers/log_action.py rename {Back-End => backend}/Modules/Savers/log_audit.py (100%) rename {Back-End => backend}/Modules/Savers/log_system_health.py (100%) rename {Back-End => backend}/Modules/Updaters/pr_body.py (100%) rename {Back-End => backend}/Modules/Updaters/pr_merge.py (100%) rename {Back-End => backend}/Modules/Updaters/user_tokens.py (100%) create mode 100644 backend/TestDiscovery/_task_sheduler.py rename {Back-End => backend}/TestDiscovery/add_mock_pr.py (100%) rename {Back-End => backend}/TestDiscovery/create_new_user.py (93%) create mode 100644 backend/TestDiscovery/errorr.txt rename {Back-End => backend}/TestDiscovery/gen-prai.py (100%) rename {Back-End => backend/TestDiscovery}/git_context_layer.py (100%) rename {Back-End => backend}/TestDiscovery/local_pipeline_test.py (100%) rename {Back-End => backend}/TestDiscovery/log_action.py (100%) create mode 100644 backend/TestDiscovery/lovable.py rename {Back-End => backend}/TestDiscovery/normalize_user.py (100%) rename {Back-End => backend/TestDiscovery}/observer.py (100%) rename {Back-End => backend}/TestDiscovery/openai_status.py (100%) rename {Back-End => backend}/TestDiscovery/rate_limiting.py (100%) rename {Back-End => backend}/TestDiscovery/seed_invoices_for_freitas.md (100%) rename {Back-End => backend}/TestDiscovery/test_usage_tokens.py (100%) create mode 100644 backend/TestDiscovery/teste_ai_type.py create mode 100644 backend/TestDiscovery/teste_diff.py create mode 100644 backend/TestDiscovery/teste_main.diff create mode 100644 backend/TestDiscovery/teste_mcp.py create mode 100644 backend/TestDiscovery/testerun_gpt_engineer.py create mode 100644 backend/TestDiscovery/testes.py rename {Back-End/Workflows/PullRequest => backend/Workflows}/pr.yml (100%) rename {Back-End => backend}/api.py (92%) create mode 100644 backend/apichatkit.py create mode 100644 backend/celery_app.py create mode 100644 backend/celerybeat-schedule rename {Back-End => backend}/requirements.txt (84%) create mode 100644 backend/test_notion.py create mode 100644 build_in_windows.py rename {Front-End/git-genius-commit => frontend/electron}/.gitignore (100%) rename {Front-End/git-genius-commit => frontend/electron}/bun.lockb (100%) rename {Front-End/git-genius-commit => frontend/electron}/components.json (100%) rename {Front-End/git-genius-commit => frontend/electron}/electron/main.cjs (100%) rename {Front-End/git-genius-commit => frontend/electron}/electron/preload.cjs (100%) rename {Front-End/git-genius-commit => frontend/electron}/eslint.config.js (100%) rename {Front-End/git-genius-commit => frontend/electron}/index.html (100%) rename {Front-End/git-genius-commit => frontend/electron}/package-lock.json (100%) rename {Front-End/git-genius-commit => frontend/electron}/package.json (100%) rename {Front-End/git-genius-commit => frontend/electron}/postcss.config.js (100%) rename {Front-End/git-genius-commit => frontend/electron}/public/favicon.ico (100%) rename {Front-End/git-genius-commit => frontend/electron}/public/placeholder.svg (100%) rename {Front-End/git-genius-commit => frontend/electron}/public/robots.txt (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/App.css (100%) create mode 100644 frontend/electron/src/App.tsx rename {Front-End/git-genius-commit => frontend/electron}/src/components/CommitPreview.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ConfigPanel.tsx (85%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/DiffViewer.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ProtectedRoute.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/RepositorySelector.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/StatusMonitor.tsx (100%) create mode 100644 frontend/electron/src/components/app-sidebar.tsx rename {Front-End/webpr => frontend/electron}/src/components/layout.tsx (93%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/accordion.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/alert-dialog.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/alert.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/aspect-ratio.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/avatar.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/badge.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/breadcrumb.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/button.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/calendar.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/card.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/carousel.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/chart.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/checkbox.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/collapsible.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/command.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/context-menu.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/dialog.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/drawer.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/dropdown-menu.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/form.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/hover-card.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/input-otp.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/input.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/label.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/menubar.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/navigation-menu.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/pagination.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/popover.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/progress.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/radio-group.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/resizable.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/scroll-area.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/select.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/separator.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/sheet.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/sidebar.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/skeleton.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/slider.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/sonner.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/switch.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/table.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/tabs.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/textarea.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/toast.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/toaster.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/toggle-group.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/toggle.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/tooltip.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/components/ui/use-toast.ts (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/contexts/AuthContext.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/hooks/use-mobile.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/hooks/use-toast.ts (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/hooks/useGitOperations.ts (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/index.css (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/lib/utils.ts (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/main.tsx (100%) rename Front-End/git-genius-commit/src/pages/Index.tsx => frontend/electron/src/pages/GCL.tsx (96%) rename {Front-End/git-genius-commit => frontend/electron}/src/pages/Login.tsx (99%) rename {Front-End/git-genius-commit => frontend/electron}/src/pages/NotFound.tsx (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/types/electron.d.ts (100%) rename {Front-End/git-genius-commit => frontend/electron}/src/types/git.ts (97%) rename {Front-End/git-genius-commit => frontend/electron}/src/vite-env.d.ts (100%) rename {Front-End/git-genius-commit => frontend/electron}/tailwind.config.ts (100%) rename {Front-End/git-genius-commit => frontend/electron}/tsconfig.app.json (100%) rename {Front-End/git-genius-commit => frontend/electron}/tsconfig.json (100%) rename {Front-End/git-genius-commit => frontend/electron}/tsconfig.node.json (100%) rename {Front-End/git-genius-commit => frontend/electron}/vite.config.ts (100%) create mode 100644 frontend/web/.gitignore rename {Front-End/webpr => frontend/web}/Dockerfile (100%) create mode 100644 frontend/web/README.md create mode 100644 frontend/web/eslint.config.js rename {Front-End/webpr => frontend/web}/index.html (55%) rename {Front-End/webpr => frontend/web}/package-lock.json (79%) rename {Front-End/webpr => frontend/web}/package.json (73%) rename Front-End/webpr/postcss.config.js => frontend/web/postcss.config.cjs (73%) rename {Front-End/webpr => frontend/web}/src/App.tsx (77%) rename {Front-End/webpr => frontend/web}/src/assets/hero-image.jpg (100%) rename {Front-End/webpr => frontend/web}/src/assets/logo.png (100%) create mode 100644 frontend/web/src/components/ChatKitPanel.tsx create mode 100644 frontend/web/src/components/FactCard.tsx rename {Front-End/webpr => frontend/web}/src/components/ProtectedRoute.tsx (100%) create mode 100644 frontend/web/src/components/ThemeToggle.tsx rename {Front-End/webpr => frontend/web}/src/components/app-sidebar.tsx (92%) rename {Front-End/webpr => frontend/web}/src/components/cta-section.tsx (98%) rename {Front-End/webpr => frontend/web}/src/components/features-section.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/footer.tsx (98%) rename {Front-End/webpr => frontend/web}/src/components/header.tsx (98%) rename {Front-End/webpr => frontend/web}/src/components/hero-section.tsx (98%) create mode 100644 frontend/web/src/components/layout.tsx rename {Front-End/webpr => frontend/web}/src/components/pricing-section.tsx (99%) rename {Front-End/webpr => frontend/web}/src/components/ui/accordion.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/alert-dialog.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/alert.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/aspect-ratio.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/avatar.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/badge.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/breadcrumb.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/button.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/calendar.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/card.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/carousel.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/chart.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/checkbox.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/collapsible.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/command.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/context-menu.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/dialog.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/drawer.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/dropdown-menu.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/form.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/hover-card.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/input-otp.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/input.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/label.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/menubar.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/navigation-menu.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/pagination.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/popover.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/progress.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/radio-group.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/resizable.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/scroll-area.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/select.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/separator.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/sheet.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/sidebar.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/skeleton.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/slider.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/sonner.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/switch.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/table.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/tabs.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/textarea.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/toast.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/toaster.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/toggle-group.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/toggle.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/tooltip.tsx (100%) rename {Front-End/webpr => frontend/web}/src/components/ui/use-toast.ts (100%) rename {Front-End/webpr => frontend/web}/src/constants/landingpage.ts (100%) rename {Front-End/webpr => frontend/web}/src/contexts/AuthContext.tsx (100%) rename {Front-End/webpr => frontend/web}/src/hooks/use-mobile.tsx (100%) rename {Front-End/webpr => frontend/web}/src/hooks/use-toast.ts (100%) create mode 100644 frontend/web/src/hooks/useActions.ts create mode 100644 frontend/web/src/hooks/useColorScheme.ts rename {Front-End/webpr => frontend/web}/src/index.css (91%) create mode 100644 frontend/web/src/lib/config.ts create mode 100644 frontend/web/src/lib/facts.ts rename {Front-End/webpr => frontend/web}/src/lib/utils.ts (100%) create mode 100644 frontend/web/src/main.tsx create mode 100644 frontend/web/src/pages/AgentTasks.tsx rename {Front-End/webpr => frontend/web}/src/pages/Billing.tsx (94%) create mode 100644 frontend/web/src/pages/Chat.tsx rename {Front-End/webpr => frontend/web}/src/pages/CheckoutError.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/CheckoutSuccess.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/CommitMessages.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/Controls.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/Dashboard.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/Invoices.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/Landingpage.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/Login.tsx (95%) rename {Front-End/webpr => frontend/web}/src/pages/Logs.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/MyAccount.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/NotFound.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/PullRequests.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/Settings.tsx (74%) rename {Front-End/webpr => frontend/web}/src/pages/SignupCheckout.tsx (100%) rename {Front-End/webpr => frontend/web}/src/pages/Workflows.tsx (100%) create mode 100644 frontend/web/src/types/chatkit-tools.d.ts rename {Front-End/webpr => frontend/web}/src/vite-env.d.ts (100%) rename {Front-End/webpr => frontend/web}/tailwind.config.ts (100%) create mode 100644 frontend/web/tsconfig.json create mode 100644 frontend/web/tsconfig.node.json create mode 100644 frontend/web/vite.config.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1b6e390a3..0ec1c32cf 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -1,4 +1,4 @@ -name: Deploy Employers AI +name: Deploy Software AI on: @@ -7,6 +7,8 @@ on: branches: - main +env: + NODE_VERSION: '22.x' jobs: build-and-deploy: @@ -36,25 +38,26 @@ jobs: rsync -avz --delete ./ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/home/administrator/deploys/softwareai \ --exclude node_modules \ --exclude .git \ - --exclude front-end/node_modules + --exclude frontend/web/node_modules + --exclude electron/web/node_modules - name: Make dir on VPS run: | ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " - mkdir -p /home/administrator/deploys/softwareai/Back-End/Keys && \ - mkdir -p /home/administrator/deploys/softwareai/Front-End + mkdir -p /home/administrator/deploys/softwareai/backend/Keys && \ + mkdir -p /home/administrator/deploys/softwareai/frontend/web " - name: Create keys.env on VPS run: | ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " - printf '%s' '${{ secrets.BACK_END_ENV_KEYS }}' > /home/administrator/deploys/softwareai/Back-End/Keys/keys.env + printf '%s' '${{ secrets.BACK_END_ENV_KEYS }}' > /home/administrator/deploys/softwareai/backend/Keys/keys.env " - name: Create .env on VPS run: | ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " - printf '%s' '${{ secrets.FRONT_END_ENV_KEYS }}' > /home/administrator/deploys/softwareai/Front-End/.env + printf '%s' '${{ secrets.FRONT_END_ENV_KEYS }}' > /home/administrator/deploys/softwareai/frontend/web/.env " - name: Create COMPOSE on VPS @@ -72,3 +75,84 @@ jobs: docker container prune && \ docker compose up --build -d --no-deps softwareai_frontend softwareai_api " + + build-electron: + name: "⚡ Build Electron App" + runs-on: windows-latest + needs: build-frontend + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + - name: Install Modules + run: npm install + - name: Install Electron + run: npm install --save-dev electron@latest + - name: Download frontend/electron build + uses: actions/download-artifact@v4 + with: + name: vite-dist + path: dist + - name: Copy frontend/electron to Electron + shell: bash # ⬅️ use Bash em vez de pwsh + run: | + mkdir -p public + cp -r dist/* public/ + - name: Build Electron App + run: npx electron-builder --win --publish never + - uses: actions/upload-artifact@v4 + with: + name: electron-app + path: dist/*.exe # ◀️ captura o instalador Windows + + release: + name: "🚀 Create GitHub Release" + runs-on: ubuntu-latest + needs: build-electron + if: github.event.pull_request.merged == true + permissions: + contents: write + steps: + - name: "Checkout code (to read package.json)" + uses: actions/checkout@v4 + with: + fetch-depth: 1 + + - name: "Setup Node.js" + uses: actions/setup-node@v3 + with: + node-version: ${{ env.NODE_VERSION }} + + - name: "Get version from package.json" + id: get_version + run: | + version=$(node -p "require('./package.json').version") + echo "version=$version" >> $GITHUB_OUTPUT + + - name: "Download Electron artifact" + uses: actions/download-artifact@v4 + with: + name: electron-app + path: ./release-assets + + - name: Delete existing release (if any) + run: | + version=v${{ steps.get_version.outputs.version }} + gh release delete "$version" --yes || true + git push --delete origin "$version" || true + + env: + GH_TOKEN: ${{ secrets.GH_TOKEN }} + + - name: Create GitHub Release and Upload Assets + id: create_release + uses: softprops/action-gh-release@v1 + with: + tag_name: v${{ steps.get_version.outputs.version }} + name: "Release v${{ steps.get_version.outputs.version }}" + draft: false + prerelease: false + token: ${{ secrets.GH_TOKEN }} + files: | + ./release-assets/** \ No newline at end of file diff --git a/.gitignore b/.gitignore index 1fc2621b9..f337fc35c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,58 @@ -Back-End/Save/ +# Local databases +smart_call_triage.db +# OS +.DS_Store +Thumbs.db + +# Python +__pycache__/ +*.py[cod] +*.egg-info/ +.venv/ +.env +ENV/ + +# Node +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +*.tsbuildinfo + +# Build artifacts +build/ +dist/ +.vite/ +.coverage/ +coverage/ +__pycache__/ +*.py[cod] +*.egg-info/ +.venv/ +*.env +.ruff_cache/ +.pytest_cache/ +.coverage/ +*.log +backend/Save/ mongo-init.js Legacy/AgentsWorkFlow/ +backend/Agents/gpt_engineer/keys.env +backend/WorkEnv/ +backend/Modules/ChatKit/data_tools/data.py +backend/Agents/AppAI/RequirementsPlanner/Knowledge/keys.env +backend/Agents/AppAI/SprintsSheduler/Sessions/ +backend/Agents/AppAI/RequirementsPlanner/save/ +backend/Modules/ChatKit/Thread_Sessions/ ProductionFiles/Certifi/ ProductionFiles/keys.env ProductionFiles/.env +backend/Agents/JobSearch/Curriculo/ +backend/Agents/JobSearch/Reports/ Legacy/Keys/InternalDocs/ -Back-End/Keys/ -Back-End/Invoices/ +backend/Keys/ +backend/Invoices/ Legacy/LocalProject/ node_modules/ Tests/ @@ -16,7 +62,7 @@ __pycache__/ *.pyc *.cpython-39.pyc **/__pycache__/ -Back-End/Keys/keys.env +backend/Keys/keys.env # Logs logs diff --git a/Back-End/.dockerignore b/Back-End/.dockerignore deleted file mode 100644 index 9d150e95f..000000000 --- a/Back-End/.dockerignore +++ /dev/null @@ -1,4 +0,0 @@ -Back-End/Production/ -Back-End/Keys/ -Back-End/Dev/ -Back-End/keys.env diff --git a/Back-End/LICENSE b/Back-End/LICENSE deleted file mode 100644 index 0ad25db4b..000000000 --- a/Back-End/LICENSE +++ /dev/null @@ -1,661 +0,0 @@ - GNU AFFERO GENERAL PUBLIC LICENSE - Version 3, 19 November 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU Affero General Public License is a free, copyleft license for -software and other kinds of works, specifically designed to ensure -cooperation with the community in the case of network server software. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -our General Public Licenses are intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -them if you wish), that you receive source code or can get it if you -want it, that you can change the software or use pieces of it in new -free programs, and that you know you can do these things. - - Developers that use our General Public Licenses protect your rights -with two steps: (1) assert copyright on the software, and (2) offer -you this License which gives you legal permission to copy, distribute -and/or modify the software. - - A secondary benefit of defending all users' freedom is that -improvements made in alternate versions of the program, if they -receive widespread use, become available for other developers to -incorporate. Many developers of free software are heartened and -encouraged by the resulting cooperation. However, in the case of -software used on network servers, this result may fail to come about. -The GNU General Public License permits making a modified version and -letting the public access it on a server without ever releasing its -source code to the public. - - The GNU Affero General Public License is designed specifically to -ensure that, in such cases, the modified source code becomes available -to the community. It requires the operator of a network server to -provide the source code of the modified version running there to the -users of that server. Therefore, public use of a modified version, on -a publicly accessible server, gives the public access to the source -code of the modified version. - - An older license, called the Affero General Public License and -published by Affero, was designed to accomplish similar goals. This is -a different license, not a version of the Affero GPL, but Affero has -released a new version of the Affero GPL which permits relicensing under -this license. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU Affero General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey verbatim copies of the Program's source code as you -receive it, in any medium, provided that you conspicuously and -appropriately publish on each copy an appropriate copyright notice; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Remote Network Interaction; Use with the GNU General Public License. - - Notwithstanding any other provision of this License, if you modify the -Program, your modified version must prominently offer all users -interacting with it remotely through a computer network (if your version -supports such interaction) an opportunity to receive the Corresponding -Source of your version by providing access to the Corresponding Source -from a network server at no charge, through some standard or customary -means of facilitating copying of software. This Corresponding Source -shall include the Corresponding Source for any work covered by version 3 -of the GNU General Public License that is incorporated pursuant to the -following paragraph. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the work with which it is combined will remain governed by version -3 of the GNU General Public License. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU Affero General Public License from time to time. Such new versions -will be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - - Each version is given a distinguishing version number. If the -Program specifies that a certain numbered version of the GNU Affero General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU Affero General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU Affero General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY -APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT -HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY -OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, -THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM -IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY -GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE -USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF -DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD -PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), -EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF -SUCH DAMAGES. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published - by the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see . - -Also add information on how to contact you by electronic and paper mail. - - If your software can interact with users remotely through a computer -network, you should also make sure that it provides a way for users to -get its source. For example, if your program is a web application, its -interface could display a "Source" link that leads users to an archive -of the code. There are many ways you could offer source, and different -solutions will be better for different programs; see section 13 for the -specific requirements. - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU AGPL, see -. diff --git a/Docs/git context layer.md b/Docs/git context layer.md new file mode 100644 index 000000000..c24b69a09 --- /dev/null +++ b/Docs/git context layer.md @@ -0,0 +1,94 @@ +# Documentação: PR AI - Git Context Layer + +O **Git Context Layer** é um recurso central dentro do aplicativo **PR AI** (Inteligência Artificial para Pull Requests) projetado para analisar diff na camada de pre staging de commit permitindo automatizar e aprimorar o processo de criação de mensagens de commit e o fluxo de trabalho Git/GitHub local do desenvolvedor. Ele utiliza modelos de Inteligência Artificial para gerar mensagens de commit contextuais, facilitando a manutenção de um histórico de commits limpo e descritivo. + +## Funcionalidades Principais + +| Componente | Função | Arquivo de Exemplo | +| :--- | :--- | :--- | +| **Geração de Commit AI** | Gera automaticamente mensagens de commit com base nas alterações do código-fonte (diffs) usando um modelo de IA configurável. | `CommitPreview.tsx` | +| **Configuração** | Permite que o usuário ajuste parâmetros do sistema, como o modelo de IA, limites de alteração (thresholds) e automações. | `ConfigPanel.tsx` | +| **Automação** | Oferece opções para **Auto Push** e **Auto Create PR** (Criação Automática de Pull Request) após um commit bem-sucedido. | `ConfigPanel.tsx` | +| **Interface de Usuário** | Interface de navegação lateral coesa e responsiva, com controle de estado de colapso. | `app-sidebar.tsx` | + +--- + +## 1. Navegação da Aplicação (AppSidebar) + +O componente `AppSidebar` define a estrutura de navegação principal da aplicação, sendo o ponto de entrada para todas as funcionalidades. + +### Componente `AppSidebar` (`app-sidebar.tsx`) + +| Recurso | Descrição | +| :--- | :--- | +| **Identidade Visual** | Exibe o nome **PR AI - Git Context Layer** e um ícone de `Bot` no cabeçalho. O título é ocultado quando a barra lateral está no estado **"collapsed"** (colapsada). | +| **Itens de Navegação** | Os links são definidos no array `navigationItems`. O contexto atual mostra: | +| | - **Git Context Layer** (`/gitcontextlayer`): Principal recurso de IA de Commits. | +| | - **Pull Requests** (`/prs`): Para monitoramento de PRs. | +| **Estilização Ativa** | O `getNavClassName` aplica estilos distintos (`bg-gradient-primary`, `shadow-glow`) ao item de menu que corresponde ao caminho atual, usando a função `isActive`. | +| **Funcionalidade de Logout** | O botão de `Logout` chama a função `handleLogout`, que utiliza o `useAuth().logout()` e, em seguida, recarrega a página (`window.location.reload()`) para efetuar a desconexão completa do usuário. | + +--- + +## 2. Pré-visualização e Ação de Commit (CommitPreview) + +O componente `CommitPreview` é a interface onde a mensagem de commit gerada pela IA é exibida e onde o usuário pode interagir para copiar ou realizar o commit de fato. + +### Componente `CommitPreview` (`CommitPreview.tsx`) + +| Propriedade (Props) | Tipo | Descrição | +| :--- | :--- | :--- | +| `message` | `string` | A mensagem de commit gerada pela IA. | +| `status` | `'SUCCESS' \| 'NO_CHANGES' \| 'ERROR'` | O status da operação de geração de commit. Controla a cor do indicador de status. | +| `onCommit` | `() => void` | Função de callback para ser executada quando o botão "Commit & Push" é clicado. | +| `isLoading` | `boolean` | Indica se o processo de commit está em andamento. | + +### Elementos de Interface + +* **Status do AI-Generated Commit**: Exibido com cores baseadas no `status`: **SUCCESS** (Verde), **NO\_CHANGES** (Laranja/Amarelo) ou **ERROR** (Vermelho). +* **Ação de Copiar**: Um botão com ícone de `Copy` que, ao ser clicado, copia a `message` para a área de transferência do sistema e exibe uma notificação (`toast.success`). +* **Área de Mensagem**: Usa `ScrollArea` para exibir a mensagem de commit (`message`) em uma fonte mono espaçada e com quebras de linha (`whitespace-pre-wrap`), garantindo que o formato do commit seja preservado. +* **Botão de Commit**: "Commit & Push". Está desabilitado se não houver `message`, se estiver `isLoading` ou se o `status` não for **SUCCESS**. O texto muda para "Committing..." durante o carregamento. + +--- + +## 3. Painel de Configuração (ConfigPanel) + +O `ConfigPanel` permite que o usuário gerencie as configurações que afetam tanto o comportamento da IA quanto as automações do Git. + +### Componente `ConfigPanel` (`ConfigPanel.tsx`) + +### Carregamento e Estado + +1. **Obtenção de Configurações**: No `useEffect`, o componente faz uma requisição `GET` para o endpoint de configurações (`/api/settings`) utilizando os dados de autenticação (`access_token`, `user_email`, `user_senha`) armazenados no `localStorage`. +2. **Mapeamento de Dados**: Os dados recebidos da API são mapeados para o estado local (`localConfig`). São fornecidos valores *default* caso algum campo esteja ausente, por exemplo, `ai_model: 'gpt-5-nano'`, `lines_threshold: 50`. + +### Campos de Configuração + +O painel é dividido em seções para gerenciar diferentes aspectos da aplicação: + +#### 3.1. Credenciais e Modelos +* **GitHub API Key**: Campo de `Input` tipo `password` para o `GITHUB_TOKEN`, essencial para interagir com a API do GitHub (ex: para criação de PRs ou push). +* **Language (`commitLanguage`)**: `Select` para definir o idioma das mensagens de commit geradas pela IA (`Português` ou `English`). O valor padrão é `'en'`. +* **AI Model (`ai_model`)**: `Select` para escolher o modelo de Inteligência Artificial que será usado para a geração dos commits. Opções de exemplo incluem: `gpt-5-nano` (padrão), `gpt-5-mini`, `gpt-5`, e `gpt-4`. + +#### 3.2. Limites (Thresholds) + +Esses limites definem as condições sob as quais o sistema de IA deve ser acionado ou as operações devem ocorrer. + +| Configuração | Descrição | Tipo | Padrão | +| :--- | :--- | :--- | :--- | +| **Lines Threshold** (`lines_threshold`) | Número máximo de linhas alteradas (incluindo inserções/deleções) a partir do qual a IA pode ser acionada. | `number` | `50` | +| **Files Threshold** (`files_threshold`) | Número máximo de arquivos alterados. | `number` | `5` | +| **Time Threshold (s)** (`time_threshold`) | Limite de tempo em segundos para alguma métrica interna. | `number` | `60` | +| **Throttle (ms)** (`throttle_ms`) | Intervalo mínimo de tempo em milissegundos entre operações. | `number` | `60000` | + +#### 3.3. Automações (Switches) + +* **Auto Push (`auto_push`)**: `Switch` booleano. Se ativado, o repositório local fará um `git push` automaticamente após um commit bem-sucedido. +* **Auto Create Pr (`auto_create_pr`)**: `Switch` booleano. Se ativado, uma Pull Request será criada automaticamente no GitHub após o `commit` e `push`. + +### Ação de Salvar + +* A função `handleSave` realiza uma requisição `PUT` para o endpoint `/api/settings`, enviando o `localConfig` atualizado. +* O botão **Save Configuration** é desabilitado e tem o texto alterado para "Saving..." enquanto a requisição de salvamento está em andamento. \ No newline at end of file diff --git a/mvp.md b/Docs/mvp.md similarity index 100% rename from mvp.md rename to Docs/mvp.md diff --git a/Front-End/git-genius-commit/.env b/Front-End/git-genius-commit/.env deleted file mode 100644 index dcb08b627..000000000 --- a/Front-End/git-genius-commit/.env +++ /dev/null @@ -1 +0,0 @@ -VITE_BACK_END=http://localhost:5910 \ No newline at end of file diff --git a/Front-End/git-genius-commit/README.md b/Front-End/git-genius-commit/README.md deleted file mode 100644 index 8c7c7c29c..000000000 --- a/Front-End/git-genius-commit/README.md +++ /dev/null @@ -1,73 +0,0 @@ -# Welcome to your Lovable project - -## Project info - -**URL**: https://lovable.dev/projects/1d94e90c-85d7-4aed-8fa2-ede2b4be6989 - -## How can I edit this code? - -There are several ways of editing your application. - -**Use Lovable** - -Simply visit the [Lovable Project](https://lovable.dev/projects/1d94e90c-85d7-4aed-8fa2-ede2b4be6989) and start prompting. - -Changes made via Lovable will be committed automatically to this repo. - -**Use your preferred IDE** - -If you want to work locally using your own IDE, you can clone this repo and push changes. Pushed changes will also be reflected in Lovable. - -The only requirement is having Node.js & npm installed - [install with nvm](https://github.com/nvm-sh/nvm#installing-and-updating) - -Follow these steps: - -```sh -# Step 1: Clone the repository using the project's Git URL. -git clone - -# Step 2: Navigate to the project directory. -cd - -# Step 3: Install the necessary dependencies. -npm i - -# Step 4: Start the development server with auto-reloading and an instant preview. -npm run dev -``` - -**Edit a file directly in GitHub** - -- Navigate to the desired file(s). -- Click the "Edit" button (pencil icon) at the top right of the file view. -- Make your changes and commit the changes. - -**Use GitHub Codespaces** - -- Navigate to the main page of your repository. -- Click on the "Code" button (green button) near the top right. -- Select the "Codespaces" tab. -- Click on "New codespace" to launch a new Codespace environment. -- Edit files directly within the Codespace and commit and push your changes once you're done. - -## What technologies are used for this project? - -This project is built with: - -- Vite -- TypeScript -- React -- shadcn-ui -- Tailwind CSS - -## How can I deploy this project? - -Simply open [Lovable](https://lovable.dev/projects/1d94e90c-85d7-4aed-8fa2-ede2b4be6989) and click on Share -> Publish. - -## Can I connect a custom domain to my Lovable project? - -Yes, you can! - -To connect a domain, navigate to Project > Settings > Domains and click Connect Domain. - -Read more here: [Setting up a custom domain](https://docs.lovable.dev/features/custom-domain#custom-domain) diff --git a/Front-End/git-genius-commit/src/App.tsx b/Front-End/git-genius-commit/src/App.tsx deleted file mode 100644 index d8edb38a7..000000000 --- a/Front-End/git-genius-commit/src/App.tsx +++ /dev/null @@ -1,50 +0,0 @@ - -import { Toaster } from "@/components/ui/toaster"; -import { Toaster as Sonner } from "@/components/ui/sonner"; -import { TooltipProvider } from "@/components/ui/tooltip"; -import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; -import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; -import Login from "./pages/Login"; -import Index from "./pages/Index"; - -import { AuthProvider, useAuth } from "./contexts/AuthContext"; -import ProtectedRoute from "./components/ProtectedRoute"; - -const queryClient = new QueryClient(); - -const AppRoutes = () => { - const { isAuthenticated } = useAuth(); - - return ( - - {isAuthenticated ? ( - - } /> - } /> - {/* } /> */} - - ) : ( - - } /> - } /> - - } /> - - )} - - ); -}; - -const App = () => ( - - - - - - - - - -); - -export default App; diff --git a/Front-End/webpr/.dockerignore b/Front-End/webpr/.dockerignore deleted file mode 100644 index 40b878db5..000000000 --- a/Front-End/webpr/.dockerignore +++ /dev/null @@ -1 +0,0 @@ -node_modules/ \ No newline at end of file diff --git a/Front-End/webpr/.env b/Front-End/webpr/.env deleted file mode 100644 index 466e9f8d9..000000000 --- a/Front-End/webpr/.env +++ /dev/null @@ -1,2 +0,0 @@ -VITE_BACK_END=http://localhost:5910 -VITE_STRIPE_PUBLISHABLE_KEY=pk_test_51QpX90Cvm2cRLHtdoF7n2Ea4sRRjYBx8Csiii0e6M6ECTJJ8fKaQ1DKpJApfJZH5hIkWRojaMmaxY9sEcS50tspB00DF2IA12h \ No newline at end of file diff --git a/Front-End/webpr/bun.lockb b/Front-End/webpr/bun.lockb deleted file mode 100644 index 160304d398161f97165233dfe6636caa631bfdfb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198351 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 diff --git a/Front-End/webpr/components.json b/Front-End/webpr/components.json deleted file mode 100644 index f29e3f161..000000000 --- a/Front-End/webpr/components.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "default", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "tailwind.config.ts", - "css": "src/index.css", - "baseColor": "slate", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils", - "ui": "@/components/ui", - "lib": "@/lib", - "hooks": "@/hooks" - } -} \ No newline at end of file diff --git a/Front-End/webpr/eslint.config.js b/Front-End/webpr/eslint.config.js deleted file mode 100644 index e67846f70..000000000 --- a/Front-End/webpr/eslint.config.js +++ /dev/null @@ -1,29 +0,0 @@ -import js from "@eslint/js"; -import globals from "globals"; -import reactHooks from "eslint-plugin-react-hooks"; -import reactRefresh from "eslint-plugin-react-refresh"; -import tseslint from "typescript-eslint"; - -export default tseslint.config( - { ignores: ["dist"] }, - { - extends: [js.configs.recommended, ...tseslint.configs.recommended], - files: ["**/*.{ts,tsx}"], - languageOptions: { - ecmaVersion: 2020, - globals: globals.browser, - }, - plugins: { - "react-hooks": reactHooks, - "react-refresh": reactRefresh, - }, - rules: { - ...reactHooks.configs.recommended.rules, - "react-refresh/only-export-components": [ - "warn", - { allowConstantExport: true }, - ], - "@typescript-eslint/no-unused-vars": "off", - }, - } -); diff --git a/Front-End/webpr/public/favicon.ico b/Front-End/webpr/public/favicon.ico deleted file mode 100644 index dd5a12627d36db7eb9c19fa2f931ff1509f0323e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7645 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 LNkvXXu0mjf>#GbK diff --git a/Front-End/webpr/public/icone.png b/Front-End/webpr/public/icone.png deleted file mode 100644 index 42fee2469ac4ad5121ae4983ca0748d27acc6ff6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 70056 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%0ArB zTNiv|!w=*>b(xi8c^N%;fq3Bm{TM29^>0GRz)Vfnkr+kTxr$X}IKW^0kD2pccUZYG8E>BQyZM#au zO89(Gj}K#8W={R_D|XU0pVCmIL_tC(R!lDkFX;mGIT;KFjNCD;daoos-dKF@PU^Vw zIBP!DLbF>@;^!II40t>IZjJP&!AGD#s$9;+B+;CLI>AcDRH=rSOanGdwFO_7BhG`jirp-FFPUGk;!=!5E{sE5d*h9dc+XCM?q}^>L%WNj8tHjbJFf=}Vz155XC1qQ zg0AO6L1sT&QC{#yQ)TQBFS8ZZa)^hEG`NH@I_uO@BzzXEP8b(38$#{ zccX~EYX6dt;lw+=x<-2yd;h*(bTG)cjE@+Ir1z|9&5vyF0&u)6R+2p~3)jw{r#&_g zy>qwqR_yG2jz`wZ8_g2rbajL3?8Mm3DA1yayUvL>TalS}+Xc={Y;95a;dLE$#>fcQ3?FOEHGcLZ@%x?^w{hG|uI<3jViX79)g%&9NMqZuli z)1tk1HlQ9|VXHRT90d_#GduvV&lr7}(^w;)bSA7fsixn~Ach=O{hamY$cLq>J(>7v zooiP-z=fcIFy#&h{`)bq`Va|-9FlWlGdMNP*wz`Cixoet)B7nSIXeLk^B(hD^+zUx zJM@AElkZ5AZA2FK`yjT*)@z5%{;_-iv3ub2u&9|gJzQo*7qOmb$V;FvwQ}*qI9q-L z7K(56EOF>q;zJF*tF7x<`Wn##cwo_=f?$Ht%uK-?gb$u^x%5KN`DMbj*2nx8TIXfo zkt9vBuHa&>rJEZ7{1WjeO356Jc#n|XdCXHP`-{pq{8L-$C>&+B*Wne&S3jja`SuPs zuXfZ_$r|dpajK+u4Q6s8Y=Tt>i9BqfC~K(?VW270$9yI^R^d_4e(rlVxXl` zU2&@~uWF1oD z(mi4)jYwqbOInIKDlDvxShkH6+hpj$koOL4uFbR&m@@9LV?M!6J8g{wXJ+miD}r9u z-}e`Oa6L$4zO^{U?P5_mI>;v0x2Gy8|KYjiWNH#6E=`j>%WH0NG&){qITy~3Bvj)A zC#mFQA1-~~9LVyzg5Yt`u<}!$?@xeIiAQ`EUI|O2x^84E_`?y3jfl0Z#E2_z(vQ*m|0q^pigHq{jr<>pANM@^uK-#2C@ z=&+FMGx9qoiS{N@Y*B|ENuY|aDCUJ>Os!+QBWwmPOhr5iw*OQ*iq>$O!Pn*Pi3+|3 zJb>he_a}y@42J8xT;)G9qt4Rnc=|nceXX(8NPBWY zt!eM13v_5Hs@ZRnJs#fX2(9P}>+C&UPf%v2Y$m4Ko6pD_h3U4w=Z8FQE!cO(e{C@G zY$(_Sa*S{KLx}Tq%h@W*hUdrhJszf{leOlvbeOaKzrG%14AtY)EGw=AED%I&OF@J1 z-K@RgUj>A0#L5n3>M17VU*eOb=JKy(saC4feJp|vITS}|IxRK&eYf&0cXdXzsY48^A3veS zr?nEt*I^I8Pd1UEkhLNhwgVE!OQ%s0I_va82R~m}NnIO!ADrR1-Zs#EF4E5+j=cQ^e#(@*ls! zjEVQ&c~5+G*?dRMi|mg?-s;BRzaKLE&l)I_+8O_vWQW_t^Pg~U3)6#)n`xkiLpBkO zEL|)FhLzPp6&&z{BOJKbbU!f@zRJKG2+yplQEU)5(-NUGG+hGzM?;lYGkR}g$7;tf)#pvU~${^Gfhtq?8G_YvC=qHo6%8ntBHSd;pn z1768QQyFFj{u1PPv^CRzn7oqKA90GOe@1BBP!@EHQKKrX704^?0odD;?9QWDFyosH zP()Wb554!K+_{!xF?#K{vt4UW2)m@?r#D!%?G?Hg>Ws||EuPyeS}5hr!D(m5zfi%E!2dYihplYXHMqN9dyo=w*mChDFRR$aIrip8{mAHNrGtg;+X;rLGA{hg6lys& z{%|U2J_UWvfu^O=*4~e$ZzhWa|086jG^JLvhBNU|)(qu+%%iD;6g>btF&xj#k00Vi z>#A)zIJoAql78cYJ`*m4rZ7Iu=qgr>kjf;cOJJHzP%x;#k*3$3lZ;c;;q+#xqe+Vy-6E+m5Bii=4b? zpF_P6M8%He8>!l^yJqh%TBV4^sPdQij;EtaQo=|PJ2|27#uz;~N)j8lOsgO_nxF1+ zSu*W)Px~T#MU5ZgXS1e=Gwt83A#&CO%~u@N2g({Tgz1F1lmp zA((H=T+GjcN0ei$AlfH9{a#px4dp^Cy8nigYC>C!G+Q&3D!v-g^v4N_bsao|q9e7% zevwB=*b+gb@0ktC!&-0bKz6k*LApV5Uj*$pUaZ<9&I8SjckG4UZsND%Er^FlnVO%h??Yk#Kbx3* zlWz5xk8G0w+70KwA1>miys@Nf{>>tgEyTj6xfspa6D zyMO*xont4~%{t2~m>xfAT|Zc(fJ60df+i`s5faOejL(<-#FX%K8NOBrYMLzf(0Z91 zaUUWy8feC4%5R0yGl;o|dG~#pD#BxT;+d7u&>2;C14iK$GoT#<6QBMHreHOgENkxP zg|l5ak|~Gg*~4^F)AhVQ6yzq{XCeFtsU$xBfk3_q`$L2E&YabIQTl#1ENPlw+k|dT z*V^Yh{w>5<41t-h4iB4@0b=)0TsPnJ211eyhxitZMm7tsMW}zCksS~gP}e%#>Fzhy z5(oG8FcE(Mdo4Lg4fLj6vpFm zR^mPuH9%P=z^)<|WgE(($Yyzcq~rN=KmlLiOE}E1w}cahjj4z=1Wi_CLgtIxv@!o7 zy|a2H&4Kx6Ck}Ps*>eB1T<6Xikwz}8pF2jRdBjk)?2(g8|3CrV;rJhga;1VUGj;|k zCtHNmDLTlMTB_#W-d>TG&8#(7%2+|K*K$V0z6TyaL*QGbUG~e?Q!D;kBXE2UQ2M}S z@P`bR8}>yK%J)AJ%%)3+aI9Yy6Qw1jv+QQF)~#7vQJDRfcFWpN-j}cw6r;$f9dyGI zVM54I9l&$R<}~KCn^WraY+U?MU=gwT)#h8Vre76~VWdH7$*Kw#S-#1RY<<^GakLcR zTRb1jwA|?NsWj$lmle(%76da8{DkfV`pZ@H(5LhXhIMzgq}HvuIw)_9VwOX};uUd3 zD@|$&`x0|`f$18x7{PU{x(^z|-&Koskk~^~li|%s8?^t8~ z`d#p)42bQ5a_gn@>w=~13>5zrJ6}fRLrX&+^nL&%5 zQLhFlDW5dCvLY?Jlt3E}R=qRxb__TKfMYZY`tbr|hXxf2t|?Nuk;S64X}@-3_Q{cq z%@)>teOt&7U*+!dGY&V!rs9zj6dnTZr_2wKZW1spOPQ|68*h5T?CwJ@g1qGh%;=u= zHTvy~LyXBx?OjvA#Yj+?iE{#dUODv$=lV4>Z&K8{y@|J4^@goGf`x24q|dWSrP zUO120-VNa8GK5qVPw_9@))+U|Lu^|W?q(FjkRIK-kOWRd!etG|5wpR@~{V3MfFIi$sfeWe{AGu*i_c0Wf3AzzR&Uk*SuB5DxUu^QS zE8U+OfqhSN6J@#$4S}f~zQL&wkRLK|t)(jSB4uSDz z>@aVihsah^acazP42r~iLT>xKkNa{*oOIYW1f^oT{gsv)A+SH+Gv#~;0sWx8wG=nY zFv3p#a_ck**ea4soJ|M=t7;^Gi)WS=dYY2bl#4sW6d4Z>vL{<&&brL7`Eft&5(Vx0 zT9^McaSIE!(PB;N-_q@O27RU6Ia+`^hexeUF@kIQbIy+5mbFx&{4F(-3EwqYA*K9S5j8LX8VwxyI-`eGo1h7L|nVChUDGJ0+N^4VDq zp>TQx0C~LqIJ^MzHJ=v^`jE~MR)TK_rHk$$WGc1W*}PyQPUu63@r$!M7zlbR_dd30 zl;f@F2TSH3vX{=j`D$I3t@ToY*15xRA4m8AGt|t#PUy#*4%oTV{D`3?l>~-2;o6St z`AM~wedPQI%`%)Jy7)rjZw`FDEPL^y!ac)3WAt3UB*#4Bw5Uq`)vbTNY~+S;gt zs{oN}|D|*~io}%4V^vjU>zXZJ47L#ms&L~%@XTLe169ta}X-~$)zE2ozfb*YO;uZ@vgHyVQWkt6e*Bj0dUmLQ{56RhYq@&^ydChd;QQ$5KsM}Qb${gi zMv3C-niGUD)%#G-Xg@?!_9_RviXBZVhuhk(vO5Wvu3@EK7k;CWDO-|e$UUoN(}BQv zOiZrARQzqr>7&0yz4B_f6{j`kl@!yk;ovi#qLj6LRpT8#SRTfq^Crh@GF9|1sx2(pQk4?I-`CeH^@0M{ly`Ub;q zTzQRVxlyh?OVvVbY{c72Qi(|2LA~N}MNMHEL_tUVI1Tk1P}pJ2;ejeV9DbY%etecn zukXFYho5>#Ob#Vnggfohd;5!J>Iyk*3$kXMdNtPNb-_mTKl+#F=BSueu8@mp!l`n( z2;M=jvT@S*2~o`WDQMP_C|*P=k=Up>RlvHZ3Kqa+kmY=$=Z_6#7e{ntPa-NHkJPwDtwcPLQ^WIT$B??!Q#(+^f0HWovj$s#;a=Q~XZA-_K09_l9?}7|>U12N477`( z9srESg~vQF)UWa)KD7mMp-TzCfsvsNPaEZf@?_~RKCt+!dNYJ?ex*I%vzP zl@!za6y-97Xd2E$GkSHH;>Dc_H5Yi$qoGR_7dOY3Mjrluq7+p<<5oAOc= z)NiNIk}(Fmgt~FhKmiBad)5Tivw30cMWQ;dr8>RVJspYu&2ngueX?3{-6R3}Ok%oV zJJfg_FoAdNzQnP_%D0Fv!{BbWD3lBTg0gHRl7w_{bXcHP{NrpL;-Ike_;9D>r_(iK z@JAxj6tg`;A!LV(5(zJ%2-W6ufEevtCQ%mgO}g9!PH)AfX4a0V`#bF1_^|U6!3$~X8war`hemtHc0al zG*+b3s9IjV-8EqPd58Xn9#`yQc-E{Y+z^+@kjKE7r_E5r#b}tqs3maTzXw)Tg8n*g z5R^5g7e6^QCEBDD=Rb7OEe1&$bgF-?7@W$Lu9mNz!wlDeXCbxUo82S0-iX9_Cn)~G zU1E5d@|GYr`O~^v5E^Q+Oeil%1|VKoL(Ij+)37g+`g);~`6QNo9Z5rh9U&oC;$Sw6 zXC}w6>q_cQZ}A!B^>-iM%-MEJdU7cX;Q$l~GI33N=YsNy#mVNsTL=`&Sj>M}nATYO z?}Yp5Uu7}_PDGp5C_W(L@?j6P&znOlesA47_3q_?Z6yh{Wdlv~{)EZJ3_-*lE$aFOuDHQy+fn>vl4bmSHN<^#(5Pv?}T8EmRu%KzKwsTUBHO;qijyl zm+lR7ma@Y^yU>)vP^*RNe)1$MvYR3AT!kRh`q)k$KB_Qp8|J*_OMZIJ1UoQsYF6#) z(8ZP6s1&Lev*B=@zbNMwaeYc3#lX+_o$Zrt>$|I3yXY_d^K{=5C-{)PPwQ;Ey^PzOr)Em2{3?U z(3ujJ9YL06jnH$ z6dlxuR(AggKnIT|(U>P@4`DjUe@xuCR3X|EFFl8t0X?Rh?ksxyv5-&OQN0Yp;l6cY zMK}HZ;y~X7N$4}+wc@e(`~BfV^ggB?=pW}aR$(Nd2!1R_=!o_KWH1tU)FT}}y2j>} zo~7;Mg*hk}bTuBro8do&AQU?%vN?#UeN&6K8RX}`9A0yFMwJP|t#)gPJU3QUR2TaN z7NxkA%>}NHD-q0D{X8lmY=HBShc8&NHIeiJ^-@{|eY`BLp$a3PY4e13DF6W(}tI00m;;O&tYkojROGJe6F@<{)r z`PR4n?l;T#fkI-y&2P}bhhztt`u5id{m0%7zaU75C&I@_hSWL#`A@#f8X-Nog)M<< zY%vaTi@1av?oiy=*oCF|E`Gdpbj*ONm(qL|BC;83Z+z--4t0@1O)?rdIqr)D?KMcV zRN;)TJKgA4YO%qlaw%8eo&XvYUFG%F5oKaRM{rs?zleCw_iHCllT1E4QIk>?ivTfz zCj-0R+iNMF-aDGehCXV*t;D=Co9SNR$7RHe>&kzautN5?5Ls{fiH)&;3vF^3D8+5i zU9W7BgZ*zY4j5hEeEU#gU_KQ+J=H62fbUd6;xmhyPrzQ}zDhxiYqb z%&Oc0K0%gS7b&!a0LtkPVq|1b5)q4qie8Pm(G`v~#!cO6ZK;*p9>oz&5+rTL!3hyK zY#tA9j^Jg@>+yg8Zd^ER7ZjIY!WIT)EhKA%ks{U&BPNJmL@xYMlE85v_N9ciE;{&F zRKV6W+E<1$6(!_lHH=+u;6z|p{AL%%BGZT4_#l4AMNf`sX9@_E{-|!Jy1_mS$ZW}E zfi}}W++_L$E5CHGTvZE0V4=VjS2MwW5K-7qD9GrN(*Y2-8v&31>4Y4SBazYYXGlJ) zUG0ty^o}gPK`{xk;o#sTna65u%cO%Tg?67xgfS z(Xj3)Oad7}zx?gy3r26dzV<#d67JbS#=| zAR<{_SecQ7G#3a4_9Z`Z10VOE!p87(eG@J(Pja#w@~19*XUc9Q&Y;&DMQtatC; zjVdY|ljK{|9Z$76Bh~6gT|#4DpE@S}>73OfQ6sB*gU*K0D-Fb(EM=q;lvK2GbwJ?Q zAXuQRAesn#Q(m+nF>@nl$bt z%{%9u|L=M~&V1a@-fORYuN(IKr3_YN%xNhM%nQ_-snVFEwP+arK{ zO(2ZsUCi%>%%JvdNf5(E zp7?*gBs6tM&%z~k>OHOxE#FBKCQ9p31gf5voi&+r(?oHU8p`Vl?MPHs4bP|(kXtyP z8hh^ti^1RcH8{y)+?QOi5uRInduvt5I>jnfVPL^=5t5hy_(VqErU|GG1pD7>`cKC} zoCLzf79hXO$;ZS0B8K|Vq1eA^CWT1$xmq7v|C2Gqt_!t#5qn3YdkvFJ3vqSQjHP{W zs%kq)gq`QrAaiXo=DeA#jJ_W~Ig>IX_zpb`VDK=zURZ<%O?-_-G%vYf<1!iQY!VOO z;NV;=Dz(9^2*8N;*K4r*1e8M?*kI^2B3;_!qD_?DR%>lZvXTtkmm|ut##yu_MvYkH zDDls~QIzqy<2BzO7X6xm6ibftU5?YZcpw**m_V-;OOuhC`_uU0upB~wFrjXneCad+ z3DMC-7MSSjkU2@iGm%$1Wlchpy{#nLm;Z399p1Q01K+;9)1Pno1~GcVVk9wU>N7E6 z8g-Kt8buBLtR3xe-2>D27H{E&jfCNEZ&pV{|XocZvP)2Q8PVMG*NXir`xXZA1%>m z6{xZ7r;+5m@Ta-^7wb_6VIbvCk_uRDRD8V+~#@HZRlr->ahkcIJaubI})IUEpM);SNe8N(hfI{qRbHw zB>IwUBB=qH)m^xmB9q+72oVk`)f~5e{J8h8lirWNW|?*<$XRUEYr7wEKF(PkE=|t6 zge>}P=|#=T4EOGHf~T(UO7+J(D$Kk|k$Xohy@xFMdo<-&3`W-BVH){X?~u%LLb{w< zW@Ysg;@}}w9hOagYo<&>j2+L#K>&+k2gdw8F4-754w?6)rL_Jm9kvCKr?t)MH)Kl* zV1^*48l^`qC)w~+l42s_;(lgz*imFEkj(u{T9N(Bk(zG2T(1?933{!hcp(_dEZMq8)#!s}`Ok>zQ^UR95<-EE!K{QklNYRjD*n=rOp-g~>fbx+Udfg1$XI zw(;;=$9)j}ou1A2FeF-cC=<`$3j^hcH<*yCLwrd?FghqH+K;ro|Luypl3`wJdD zi%}2E{`2I79c?2(j>)Jl*^w||81%#?>YsvJSvzKp@YOnDV7U`(r*TeUTE^Ny<)-ha zw>F!>vdA`3q6 zM1Av^TL^R{vAm8)!$bE+@g|bh3Rx7#zf?7uy&ZtyC9K`NAd#Rf>y{%#7o%axynDj{ zP6rY|hdaQyT3aV+>7iMm^qtxX4^Bh#Xl=)dP~?0xO03*_eIoLj<8_)d#T#g$Y4P5Kmw>zI{Ws=iP5B;-)-Bp|~1pcW(2 zJ4z665@=-6*ZIlh_wIh8pz*q`B^~I7cNg=&mI@WzQgN#AD}jIc7Gq3o^Z!5{%RY5d zT$(AGiQuf*t-LYDE+ZS26%Q#c%&5%&d}705A~LaZ<8-y(mVYRt^fGeVKhnSJ5C7p0 z$`8~o`LJzFy9~KPMe%(2-5T;i03bCx7blmgI?{L2cCxv46wg!;A8+I$D)(+ViltGi zTD8YoWSr1)41O`A8>c_JIxjD+CI;DRemxnnx7xIGcPi5S`^E0u>vdYQ<{N#w4^bMK*5%k4&*hyKxCg8{ig=(_s~Qab$dF<&S(}cx z+O08ZPEjG&_Lz%a-t-(3iZ3?vw{CjhZUV4lQ%e+n1*?-%kaJxU;YH!lRq2Kaq@3!u z$f`Nv_RF%r*Oe-46UgVMjoKzbl9r?8PTgqP&?{u%Ua$l_JbN#!;vVI|t!}03e$i`i zjnpRM=H*wh7kSgj$pqwCrT(zFT{#HMHVhytUFRds8T-C?!lac*-v{6%uqe=d0JJ%I z&sh>3bK8&RUm*nYL)GnI3iu&xr~=b$TAa(k2gX$qTequ)R;6zHPl@SFGd+qIH5sw} zlL9+4L7`UY^|C3=j|d#0C9KC%FFZDrF~2Osflcr!H4`jrvth5@BszV6NnQ?_&A?$3 zNNyE-1@@es?n`bhPO6Z<5u8gIoS`S6D3pz3ZP@K-w3W*As?%zn0B;Y6r{ZT0Vf#>| za0;8Aq!47687d2;$w?wiA}U|D(SAyIkAo24#^uxTZ{Uj?v>E z+qZsJ0xBKBjc{jM=5o|xpKx}fND-BDQHmPn_r4gXYHNDrUUJQxBhE`R8JfKXJ7dR`ck*YWDv_p`OfkVF$G- zGI5Np-8YEIDP*>49sieG@@)yG2mj(~x91;5Zj_wqcALzSt6mL1qMQkK%h2cQ(_1Uh zpS6?PiOiA;@z6Mruli%JHYTCCJJWcqW!$QpKF_2g-j^yY7Yy!q6|J5ajX!S;UWWSL zpn>gsk_$D>_LB%>Bg&HyF!oAF8TMY8l8y2|u4GCVO}+iWflA+}^8^L2OnWy`8jga*{e^2gT5)9yI+az`G3YwvwzVM zGT80%0-k02HSHzr0pUR zrQR9<52A@(PrMZr3@wQo>K+SqCpNb#6oiZ-D$+IYNL1rukn7C6lvnBbu}#?)bMmfxR4Dzj2`NW_w*Cr&DU~*UOuZk)uW=?G#Z?Ku*1l z)@bxfnRK=H!(@(s4vafZw<$uUrYuuJ$L)nqgXyYWjp2^!`W59@gZ_z3pLa_B_qlr4 z{g1z>Xn%pihhcdLO?uia7Z!&l#%N@F;9OIhiBOXA_R0k5AA$;+@~dtBU}=ZOdd|%g zyQ$@-B3@x1B+Ut}1Ern&!62yPv~HX86D%H!k$CV6Mk|P%GM$o8(IVU*wO+k)DSqSQ z%=+nigRYcoD86}3Z8hSH~r zfX=c`t9B|=qf2zD7Ttb_kDaTtL?My0CopbJo|8Br1X{_a4^a@2(-sg=SC9Gn#c8Kk zqoRWZv}-(a!__ZtC^9=4;Y4Bg9X@1h7L3tbd5vl{zNa%rA7BG3MM;C{VQGhvgxW&~ z8HBZFL?j7O<`X7+V@Ku{0CLf!%`+)?oMX4O(|3jB7AMK1`yogEe@Wh1TKGkJw;L*` zSD)UPmn%Mv6HtrR{t2x5KV#e#T2nDb)!ohRoPWNeg3Q4T_xub{z!^pYqTn?w(dZBH zB_3e%EYipwaYM=jiJ_&kYVDomi9 z4mq5vraS^t@yS8zw7A}3{-osC1$3jph(^nM+Z}4^ktX)es7>TtuNtP0i(=oqe9S zt*19_io@#2uGHw3XYZeTr%!J7)j|-;Qv_JNH8zt~$t9tXIrsex{?^?{2BhFx?U|`-2RCW?kYy;snuH6+Q$5}6PM7N#RymGP#NnU8 zl&ZCE>UoQ}qI0Lo>Gn8cDwr}nJYj+;dE)~1k*y@TE;O;Fr%C{#UHL)D&a|ws5BYt7 zvU;%Bcd^GK)KDLq6>Y_)+x{?s|KvLh5tX8)K*cFS0_~Ed_};!uhixdKSb6Ta^waba zm?kcopP#?M9$-U8!$n^e9ShK^ahpk0{W>9TnX5zx#4SfXGHivKpxH_57&Q%H|LLA% zXifc8ytFSx^k*bjQ^$n;@w)HdOC9f#dsthRPwZ zp`_{p9~C~Hx(MyK-4z9P0E#!0Z`LmS!0NmiG4L=;jH0U)ewCrxWo$q4zdIV;_+6qb zU%hC#U(oyGtJ|YeJv=y8m1TLYYwGi{y$cBXxyfOiFB+ef20iHHYpgsjfU`&_j0*x6 z#kg0-3oQB}4~$)ehS%%#hs`qa;U#AKRETR+V}1U6lm_b=9-X|1ja%*N{A=7@PO5sm zWm{&wSbk!b(FPx^2NzWFi6#SFnOjLGE`pW#!q@6;pxMX9;qeU5taX~3oMpCRu8TxYLW5z+%C-t~=x0KJ-mKfhnLxx5SG9L0tAT9DF901OGMt;^Q<{rJ^hF9zzF<5m%A2SQSykU z-yi22F>$Cm2e|_f6~^deki4{1#l6R<2Z-xr66!v#7gwqL$>_;ko1(`0p>65~8*w-) zSYMNs=rKF934gV0^zhv6i5Z)7F;|_AYE(1ROrJ158X%1ksWnCF+oe=!tpGy%q<=As zH%yIues)vxT`1?~7(_>pB0}bWM#)9#dsl6okb1B_=^FUmZm!s(+V1wko;nWKCwqT2u@Dn=DiCx0G+%q@n2+M8*lB!<(b+Rbj zRQN-F#Z2tY1-)A|sfp&;Nc_!!@AdddI8NZB2`8jXAfU~Iv%w21vA6uvIs~X~v{}NF z_!EUoWOjOlvuY~PXuE8+tiC$!Dv;o+XbcGW@>A@s$)nLswZ(zh8>B$FoO-VBFUsYzxYND= zF2}7ZbmRSR0TO^k^sPMjwwwMB>5+y`&0)o7^B0}d9B$3WK5P~Dki|UI43Z}bE%bwN~Dl>SEWFNwNV`Dp`(LOcN>>+ zcxy%F$Y*M99)9yzG#W3-^qJd=sb=|%K}Wt6?@7I;`&UO=IQi|e*gYMRJ#?9SZ;E8O zrXxyPfcM=7HTq#*w#>9_x`f@rk}mV;)Z6~DJQkg-oPy2C*=JPcS@m6?(37xXuo<(t z=f1Q4lqd>1+IRB)_w9NtAZLpw<5M@5!A(#K*gBNiqZF9_j$ujR2$H}658VkZ3IqM6UsnUW#0_vUGG+{Bb82zPUC;qgwH_LO2TC_VcSvlR?Q^!^)n4mX??n z+}t(B9z-_v`l=k&4k@oM_RG1w;uRyo?W3~Wv1cON?Wo6dK-XZWaIMMZ(A4p9+41+Az2}Fe&Fuso zgvBb$g25Lu6++~^pSr!?ta4x4O<_A=dN^feixdP|7BrcbsyjaFx;Hu<_{H9UVuQEm zmqkl5E3p*(1c`S3`=4)m9;=nfHs^2E#3U$9?XB_V+1q3Si%V--n~*NJg?Oeuk^iOf zd7F-5xE7Qw9C=%r+x6wbq*lVmPMmkOoR_c<+tS`I??iCfhbhm&Gye3IGTv@uJpOm& zk2SYJYAOd4TJ-!h%g8b61Z;CF4=yXInqnmEi1mrMY87`Y^CN2%sHN4#O+G61-odK} zl;S_%a`MVcwZ_uy7`(jQ2mSE5vT@G9(-uo^PCr@Mx{zpbx-mHY6%xLd&EU=ZZQ_04 zESPnE_vuGamK0HuY^sAuqW0r}Pt|ceDWoe3*k?I5)CXyHRb>^t@Wv1@7akryR(exC zciH%@VzG95`^)MK*yl-sRT}Da#R}>rTlF%Y(qy0Xq6$Ha{C9O?e;xil|9U4}H~EmN z+4d!4o)bt5`!ap5*OuK-4UG*q($=^@{fL^VTQPVq0Q#n4iS-uT$wG~#sgXIvbh_|t z#X|H_Ale7a9=PA^wm}!R!l(BWAjCn?AJz4R_e$H)hEi)Br^+LNkr9I;c(Dl$u*FGqkisf+sw`TMz>;E3(1I=0ASK=_Wwz=#=M;h_;MZxtymSKK!Gr# zbqczew-#~dA%`Z?4=~&c3Uq2ObUx0V#s+p5Rwj8Z#5&N`)mnSRc>iZg9;R6k>JyIT zI{Y70E{yd8^m!kn+$E-8C4HpV<`^>t45n>-A_KQhg!lRDfrSa2V^cPOo4KrBs<_BD z{0pGgR40{%TFvN#EM*2`GG=t=K}&+)vg!wa@Z;G2Y5(87Uw304cf^Ll!_~Ur_c53p z=;>p#?YWW`+iAOpA)m+HV;QF$H^$bSLWo`}X>#da9LvKRB^mdW4-)t}aMLT|x&K~c z(4Lgl|Fr7+-dhBa)2NqXp{!|4a^9cZZQqyuQeok`*Z`1=(1N3#vbfMgR*C-xXdI5Q z!gIHFXilL^ujX7FbW0);npqlELO3z^-s#UVSEYZ{5Z^P3PNITOA~Ey#hEoM1TB#`# zxk$Wwf9Fk)VoXpO&8j;ELW+%#LY8TaapZpIN2S^es~z;rH|m}@fu4?_(^&D6Z3k2 zFo5rY3(U0Pmy+4Pvzp<*1oJ253?D^5nm~JR6?^w0GNK9waRT$7YW_d-@OD;pQj;v| zU+SSMo$Jw!jC!-PS0U$#+n{e?i&L@P=*e;{@Khwt%XvWd#Hx&Lxed3JEEsR$+$&Yt z21Y%q>?YNUw(WXnyssBtug_Aj-glH)xA`xR^^fKmzLV^_*_0Fe%GIN@5rG69HhN|p z4lXi2pn8g0d&!P9@|96g_fwg(5*JnZz$w^w^QQaRnJXuXzvmEDtIJ9h$_gjEqzNeu z?gu9gXWp;=tRRpNcav|nB(15oHGOLpB)g5X{a3a}LLG;q8fl|3nVuXX@=`(m@#914 z2T#wo{z}d&6uE`vFcYT5-E}1e2arK~iM3LR$?iE3OqiTfG|T!HGYlAD_74b{^sK3< zkyg6Qk&W22PSbstnQGc#(fCU9z@{I2&eX25ITVFFx}sKC&1F>Y{%6Z;gFQV9yEO+c zGKW$grH_lgfGsTbeDQ}9Kfo}$VvP)2|LU=+c-98|K?1ku_wV2mg=Q>s0q|*>X?e+6 z-L3zkyWmk^5KY0G zDBVAsTPIZ3^m{8-(?+Fb{EHjpa%kgq%*#RHU(#QFch`YW)P*Je{e=$o0i48hqF_`B zvwE$@%ybZnFyb9Wx6z1Al4AJ)MVon$6p6 zbrN=Yi7PDW4vAc0{)!c!OdzAefe307nVB=%X7JRJS0bxIH{4GcU>BL@Nt-+2mOR_I^P`a>dB|AORR58%b*-LDKa z+1f*zbt?SYEvLHR;J_95o*}_W?idmd6q`lAjL8H=D73Rv;aV2PeB?0j+(l$;=J zLGus{AvL>d^Fwt(D_SZqx&JEP)1ZJLIh+f^D1*z5d;H9~hyE^PGb)RFVNve-45dBr z(IN1_WPi9)?3EFXd}F=@c1oOqTa76i>wc=>rC??pAxaUxuZhU4Q_@BUKL~4&j~ZMN zpJ^*Ic)=NkN@1$%)@6LWqjjv?9j9{v8DIQ(KXE~S9W+%zIoKRup*fHv_e+oH_EuQY z$*!8!xP?}e9U+j)9oqs-evvkTw=wd<%$NGK0+vJ+joqiG>JChShbwov8PfLa)|US1 zuME=+x)CYWGk@u-wV(p+t#dyGJh{4lK-xEZ9NYI-H%q#>@F(E2o6g!X>vjebCPc@a zBOsIPv=>UnpiQV*dV2eC>bPLYAdZ^nH1p>VgA>GYR_wk{Sn;^`wB5Q8qa^MVMDWJ& z@t~A_aBki5;I(9cpY+=ETg>ZT4V?R?a9k8e*?;>(I^2-{@unM4P#Qpe+oV4D6rj?X z`ER%C8;k%BU)VWPcsWtU@}F1TPkyGN%~R6d3Nj($*23|E?_-F-obcPA&sre;Lo+!+ zbHbc~^>hQe{Y}fF+Xl$|GT4eYGs78hMiF2Mb<+v-ChPr0HkM4{6jEts?jJ2Pof&~5 zQFn_Biy-L_54w|7)exq3=A|j}7~=T$vD)e;DW_IazcP9ZZoNoJevStpp+*ivr_i0z z{AQq&#|lS56Ya^7682syZo|$=m917VMv3eBrt1axb?B3+*Wir%D$lOIS(^UScdF@u z-9&nSD+8roEKzn)ZPtQ{lo@XdSVGAcvk0vd{S@Hua%`vA|TP5i1s3$xB%Pjk(ym$9&?!# z%q{9V!7)iyNM4gBU#$|4juWCP0d|@QLl6T z&ms7;AJiVB>Hy@6C}PJlNfz||?^zQc&OfWyE1N6-ibg>=nv~x^$ zkE!eAk^uJB{g$n!mnxkT-eH`DKdIY!h{AxU-X*D?V)%FmRgOn<@=0t&zK7U?AOljb z!51;dX_4EW-J(rMP7_LGj<){Y@OspD>&b~(j{=hnto*9xivwoY3b*}UphjO>U9I}9 z3$$;SRgfLi6!U(IA>Wpj2%^zbEWzYY$K;$6BCv=xKzxj|^LE)ydf%pc>?pU4k=p{q zTGCk4S8nZhtJzD+(puCRm+m>*+KVDbN1uV`MwWe7--I$6&(+|*R|&;DU0Z-oVm9tK zq?DO1xw?XgL2XW{i0ZPI_TkF+0J_R^E>Rw;K=uLlEWK81R;hgGvSw7MxF8dcR?5Oi zUeeSbm0VF(!J;i#xD9#?#Inupk1hV6O`dGjb>K=N0g2?DK*8%7-v81U6{H7*JXN zfJv5i3%)6#Vhus~M$kbsG%9|vB%oNWykhB)wvcbb?PAhS^I#5>jFdG~X4O{6=`hLL zpZBYtSK}dj=}{Oho;k@*X*DK}7T3s(%KG9ETa4}Jhbx|#@uZ~*EQ|r=&D;_$mQnqT zhY3vmG$4;Py+WQ>CMueS9gXKW+yyICVz-ZP_Ls{1r2QF&Nwe>WS6G&&?xie=a?8&P zlySikfrM>IK_qkFhd{1ONv+LauCcbK>uWH1@7*A{GzKl?@3un+)_-F;6{tDiZ@KHc zvs;(~Rfs*H-Cs$Uvy;#{lgYEx7JHFp`lm=+W&qsKPU#}l?rXd4=v}_?x%a=?(J0K0 z$@>!Xv;a+XuE$O1MO)>vE!FR96?bayG~?0@wukQ8b^6t%qQO-|c9n&Lzkf0l5*mtE zJCo;6A^3M~_S>LmNHRdH(>+n7xiK(knj1U~iF?c}55B#%N_Pf=|1elVw_J{ zSjo#jJlFg)VUl%FQj&XEK@w6}7NgX%gv4pg6qBF5@K^O8ECgk8C)9;b=KWeX20mGY zO)L&_Y$e$!7AOU$ah-N9#DR`Q?tnH_-!TzpxDkSgMRW;a0Hg@4B@ukZ=;FB)e=G9N zHgaZYUN*R=5eb62FHBMG@2mdLE)h|})X{!^HW*YF^7$(-Lpq?$RY;64PMuK<@u0;h zQz>Pud%g;%KJj%pC-U?eU)z(|0+g1|QLrWWq<%qIbHjr*-N!}J*#spdUxy-2RZK2d z@xEQFjaGZo#cZtbam1^93RzK|yjL9cpw-0)$Awc&sX#PCwo&;9F=ARayEFqAz}jlG+g)9y#-3PmSJQMZH1>WBslfOeY_i zvV2BS?QeBOxiOt}jeYjp8D}6+)tw4EVH^-Eyo>a#gT%U+cd7drArnph|)8AF%ASDMP$trXkg7xXEog7AQ|i{QGS)A;&+tU^Pnjy&ul; zHi8{>p(94P!5UiDPUb-&PcW6TA9hFqVV$+$u{7BG_7xv=Yr^snAV#TQKbw z60S<0()t_nv0M8I8{PxbT{1AW`A44x;V1UPb-BG>#*dfHlEt9h*Z__n_W zn&EEt=|i9|jG7hI-`ZaI)K6SXdM)1~8DUZTs$!{+l-=!1Db#hcP>guEpx*>NkR*uF z2e=!=RC{qXi1eJBwbrsz-?2loIq%xES(|;MXH?AT7ltb~M@mLetZM0ug;M4Id$-ge zvY(2T%1=oF6FHy`_2*1^FDeuR1F8})3<2msJj;}By;Z|wgboXf96v4J&Ph1})Eu%T zytvCKH}e1EQ;w4^q#xX{)(FJ5Zs1g6!U-<=y2y`*?IjC)&*3fGIng-M3UOjk zS=V>0*z+7jKIE|fSDU65Hl5HXH!_d&1=Dwu1k`>#(j=3hUcIVTkyd1cFSNF>B}ol5 z&kZlmd{Gk;AB#WuPM6)}@k!bd(wPmumISBCN&HF!r32xRvXR^LCTXK+5s_Mz?n{^(i;65 zlnk4IHyB9Tu*8Q{>ojqUZ0qDSegvD)X#1DSve^#?N2||op}>5mCH4Ad=<8}VM}IkT z*VXXRE1(F2IsYk$YA;c z%;%lTCuH2l2WptePz;K&zSuZlC{B<3ggoavoJsY4-2rl|z}r$QwPJ1V#@AQF6kT4j0r6t-s6> zc@jHrOB64JE7QerD5|-@-EP*Aj}_fX3=S4Ap2v2~k2opf$RH5LPT#?*K(cnzO|A_+AuP@)$mT66 z_$TV`>zpBbB6RPlmW*mF@p0jr5EZ!-aD2bL(c+KjR`5ts;J2O*n9yM>Gmgf>k#H>_ zdTNx`sUokXm6M=1axIE{8#Q1dDa`Mr1Ttmx!hx}EO0zjFe&`Y_pI z&B4ksnr}8|p=X&;TsX8{Bt;u7W{VYZ8Ric3C*>>8+Zq?3>G>7^uOzi*sq2fhDa=K+ zFh3Qme!HxPII@FxFL+%M!srps=rb)P5D@-ZS4`h%Us*X&KV~E^T>w%M5VB&LZt{yz zxRuze>AkwmR9d^6-e_RJpDepe_-Cf_q^IWy;er;j>Qd(Mx~DvE76znHf+?D1<@5ZF z@O*)Z4!xFEFN*Q%k6C@}+EF~597|1wFhahIQmKuW;7{6%v}b3w5vrU^D~L#>*JrlZ z(kroQ1+`FZ7&8$;Pa?15$v4|E}%N@&U*Vf%0_JfC7E?TH$e zZSAr*fPiz`X1nH@Y{n$L1QBb!ksV7hO!E^m66TZEum=5X_5i9Z6!&P%gm#bCTSPvpr{Mle;IKYn;r4(adB#o{R8yITk;y z1KtcJO_$yfF+BE8*Oes;Q{Pt2l7X(anfr^f>dXM}DLh}su}?i-fuFg_Vr7+gw zHrNi1z4wI3GG4HV7hddFk;fg?#;eE_4i;}4dF5OZEU6s>8}T{?0Qv>tyh6H4?RIM$ za<)vg39|_;`(Yd)rQR@d#YWMUT~hQJREoue;R<+NgVGl=I5gn29wM^$w3ynliHva* z0aUv=3YNLXG02-Er7$3wGIDSxGbrX(A#k>9(C%0V$L(;LoL0~Ng^~5Ot;HmUl!_T2 zsq-Lfx@NV#yb7-fb%!c*#v~}KQW6)tQ(}a>hpuIK9NrEtnsTddgdAs$59g=6WN6fmE0AcKz!zgLuz{(GGvD-FCA$hGplCkh}IvvT--QB&kxRM9Qr zAt=`pQr$0*r6~gy9H}s7v_0c=7i^^4lhiFn9)RxZAGT{qh|k;E?Aojhln0>4GAYug zOHyeVyuGOk*{PnWVIJY$?6F@-Mq$&uwXGvKORDVNrcFL@6@k>gk6!iRbAsQq;itIq zx=!b%;IZ%BTce8`?^ZC~+}VCgLR^nDkdBIcD!VNzvArBQQmTvAcVkPrmaY-e{hWEH z+rTJ}F@htLOTsEd4cX2(wmR~%fbsNeD{5&(0FUi#>^E(~IRK_Ag#$e!&rMc6y>482 zC>hryAak>>xG3FROhJFVq&sz1Q{+{YWIXKW#RFecmr0D$;+LXnGnjZA=SF)MDH{i2 zNAg<+Q5;xpNj^NB&2KR51v=bg2#8DDH|fb7&TAh}K=RIKn%K{h;HrA?K;gOtkSye* zP7V9#^vhxixE?gBZhnR;ryB8u$H5I%2vj-B7eN3!sKt;px6aJD` znJ+^q_l2q4_lsCquwfXVJH)_?!Vg5y^VJaX{u3RGpo1L~8cUL3)@)I4FYeYdLH%db z63(RPFH+n&RwleO>ey3mke05C+rhZ(9})d9b-}o5XW}aWv%xSVTrJ1p!YYbiz6+k} zo~4LcM-ZL{f7*UU>bMM5t#SG_z!N$@cZ%uQhPjMDQ0CZ(r)wNA4m2{BP;j!vMwb+s zk?**)$>0d$VZD$9i0i-+H8`QdA@{3CH1Px?Rj>JZETpnhF|M1XMq!c=u1jIX$O}A0 zDi_ur5Ym;eXs&TwfBKn3zA@n{KqqUtrHg07=(;67Szk=(^d1)i;`qKUd&;2V^(%Gk+g9 z;86Hsjvp_1G>Q1!xTfq*)R@=8!Jb&4HM73LmrIF8Dip3j_xw{9y8G!S>h&5~I4$hN zjSe$8C%d{K?&KDs?{SnJSYY5h$g5)dkAWSu`4@j#jGziFqac*Eoz1AV~vq)>8)7wSu0KD1afvJ1+|AJTaMyi z!aK>aobv|3coh*4(9lu{=QtzE1@APW=<)C)u14tU9~^5zCkZd}{UG`m?a%}hFW#+8 zwgKDP@QL4Qj+Igig6R5w+2y7j^QN|PQp=>adHnck&vm0dqIZS1cG53VK7G*YNeW`5 zn8!^J*#7rdvS)hVX;m1=Y(~Q64i6T?8j24aMsVb(l1(Kjbr^-$`0&RsbBpzyp5RAS<19zyin)rC>=a}KsrqSRX0K7`0h41l}@Zx4K#Am5N2Phs~ zjC)pvk{0y0fwJ^)4Y_IbD}Q6{R&9}Ig{?|GaOw@y>UnDaACO5FIa;7`tWqhsEBJN+ z^H3!U5ohvmS5OwRKi*185lgWKn?KzHN?x_hnHpK#e1ckL{$VaJy~2EMCSg=*YO$e zXAa@WtPq=iBTV(0Aq2@zgs|u{;nhYP;e@|9CAzCv_6q+JGgvO@x>VLB`#h`&K}u_@ z<>1PQk{bWfV845N^oh zIn+`7#Hs4jBkp2dQ^AZaCrMf6`@1#Ct*rmKf5w|p@&J~G!U!=;Gdfh%iYi0=-&dKc z)PalGUtxH9I`{x5`smIsvM3}sPaeq67@T3&(etlvF=EJf#VgNg`sIE7j$c1(nvaSy zSYqLc7~|j~dZ_7gnvO)hrtprkFn6JiCvi;n;4|oEK;W~Ap|f}Xrk${kZ|EVxV=)dJ zoz|w@UK-j+d*EZRjq{KR4{b1)vw7Pl{P|;=i4mo*!E&nDsq~u7`|}5-&vyw}5oqk5S^MD~4!ftkvi0 ze2773W$36&@b68^$>HJxEZgi34odIut$i~3k^}>@4ND=cL9nKnn zb4LvB&Zv_Q7UjrCEs{S)zXv><&)1DNfbPJ&2QfZwh0z^BEt~W*|7>CknBeTtzlSQ7lX!&D z;7-j3C#)Al{u(sOJU8<>havzW97BFo2Ic;0eDN6Ln=(|0x#%A(KAC(-%?%E%a9}(p z#dsSy#ELbq6O*pOl7T`E-AyzKOgk=2xEn-NMga`g!|HZEII@U3&~oMHn^w%ztVb0} zBMf0ANikx`F$l2H{rPhnrTPKy?X(-NV+g`B3|u5qgd8-?TAutNXdQH6wzr^=Hn4nPX2vj zU@IO(IbJ1;J`LudHO|X~bEvieW!`w2+{_gqHcayh25c2-MU!tEokWkl)b!rrh2sJMu-I%h0MiQS6 zHr$PXe+C}x?PhQ9MOU+R;eE0u&4PE zt2#z;Oskp$oU{4D__8P)j{Vu}ri}lBps6=Fa5f%3noMFO{6&jy#ag)x8+z!#pI9kA7#oO++}w6YA+NCb zX0x5ALmEWTa(_7ZM4;B)I6@AgEVuNRTxy#bVLZp6Sx{9@sf(#o)dwDI#hkm(FJESC z{wCH9a~R*}>ipv$k5EGJ7>&LFtATfB&cm^?p1c@F$&$^FZ^LSWXt0ei3?WN1YKBsd zLxuK3fuF{dg%aH}p?1Q@yL9XcZ>BIgfn9+7#G6{|!7p2qEl)K$uOL@qzSvl#%L0C_ z-XvN0R}Z$&t{47V?YncAb6c%ZHy+r^X6Wf!xFKX85&!^{>{tReQNZYs?KDoYgD8n} z69N1uJc8(}P)gW0+pd|Da=vemq{9 z^50Ewhj80Jm_~<(DE&{#xy8nO+1L+0n9~n(=Q+v<7;h}fsp%3LW`4!PA<+#~o%yAy zMruoUfY+W~vQf<_D=*HuxMBxObJB^?g@}h8povp|n}@}i7z@upcdCtZhoQNQ!@;R7 z@>!xW2^BVBHY}}*JXgA4(q37@QgPE|;D%-3*W6KqSlr%u@Iqf`n*|IdEY7L+ShSdd zte+#+iC=tOopX_d+rc;kjy?u4XA0xM5}G94M{bEy6z>c0{pDuXWPDxhncP*dLZ|QH zr|sq0kYg?623eFG%sq4n8m!7Z257bmfpPegzTOcZ%hx0=2p6< z9FZmx6Ax>=Ob5#2@5Q*b0*y2X0FNOois;vTG$%$H*#Q{QUEBc?&$<@tC9>f*qtN%) z;~WQvh}ZX|QRb|$Cg>>ZNT}yc#AJ0#M+3Df#Y=2vtSBH7!EmFy<9_2Kd2Sxu(vYlc zO&ReE9`_!C8`hBd)d|1sKOmii12Ur0$enG{r$!=Q%hN8gFy()XPbCcnaWdw@IG!cj zzaNPdL8QxO`eP0c$3D>xjoyrklsim|1JUg(jk3EFT~h8g*7wLS40JC^o|rpxxSGk_ zNci``fo5oLFL0={G%GE|=}W72Aj(zFQl;J5vc+eQn}e`}2a zrK%EIc&yqh)rJ&ynitx_4pV>*_3?{+AM{wYbnqP*-EhTlJ>+Git2{UOpz8pe78xEc z)vP;{j7`^ef>-bm-@m5p{JJO~R^*#OZe6&9pmNw3=`mWiPEwg8&s?4qkNi}oY?c@A zBx`8bppj22Et#5D7U#(aam5ja>i{DWNrfGlc08{hh2pQ{G{>r04io$=rPeE$v>s#=cqQ-wP9}}jp@AjYl=~gxIGlUa< zycTQ8>FPh$g7Lni`8sv1bSdM>=P$`pC+!?ZhjCxy(Z~i#SFmu<;+csIt+r;Qv#aTX ztO}+cBWbPo5wY#nghC(nuv~Y+f#ijfk(@cz@7&n5094e{+H%qaJa*aQa$M02SxL-c zYTu&hHdgNvOtrukjT%?m?>fXC$4$%&ovx7P>k`GfJd8pc0@ zW8nS}`f|NkcgA8im-j4}8()7@t!7(c(e3<;j@e{<^MaU2cwbmB*$H*ty=eh;+?$X! zy(|as4*ZvTimG+B8Eex%#A?0TrqAIG>M@;~ti`&MY8x}kSrE4I*&_CUc5RoT3W%^K zh(4%zTmysS@CQPib~SPQaZOvhFnhWN=v&(x9VA8{t`U!K8jxnvBk1YmyMWh#g>ylk zN0z_6wzXy?`PrwkcQC$M#uh+m;=hO3{deE1sQ=e>@<85C{wZ~sF#e}88eo(?_;`Pe z=@;R1^Brh9=jAX!4X5bss>7)_=6=;ul;BQPl?jK!euNQHG*!3CE;;ucQTCCl#nhEk z8nFOOHJoW}q(+lMBc{Y-&n@XpR3Bh&Cn%rHva$(JL~}MdZW~seQaUChwxPaM7>(ib z2evH13WR{MqL{w`+Z z3V{Jap-pP&4I8AL!cDFakuSnkei0hp7Y%gFBIc4YpQb& zvo8xcICO*+Y~s?d13OsOTne=cp_-VIU(6ag`XkL@N3GHV$*OHMw4I|FPa=3~9lXPF zTf@yI9SR~`JLV8l=%(6aZRrh9g88!VNH%tUEs^@pDj7%nks4K%a!yO{&{%56%@WZhr_dA1aPRZu4g4G8L*S3+ABJ9Zb4c^j&!)8Mop|ieALwy)g z^2pd9te0zM!x88eLB{Trv=jKq1SK!oRoWZ|^-C(9IM?~4;7GZFiCc`{g#VAMw~mWy z3m1lIhOVKzLBc_h?i2(BL?oq4y1Tmu5TqLkC8WDkr9--h6e;QcHh9jx=f2-x{D!sH z-s_3=tfv<$6n?gtt~gQklapZv_DEHni!Kjoat(yOvRCe@X06& zU|``bxB5{|Ew&T6Eqf93ik^rF|2ZT&!NKaXWu@UOB5>Lol(Wf0*x+_Y$L^j1%i!gG z2)_A{*jw%MI&x1~$&{doRjftl=wNeuDxWh<0OoJXHUkZXv7DSzw(L=h9?h@0iZea# zgKGMmY`t3Iwxko5heP>79&|ISf4?Lmhl2h41^BBnw^sB=**xpuh(J6l-}P>W19&my zSVDT~VpIbsS{ULi6UJ6nb_W^(iG)$GLIOJD3yksaX3sK+DzXrIrIB9tD_+t2pGMDs z^k{10n1{rHy8lHyY2b5?4}NC;XregnBE>k4ku?d$fZFs9;#pCX zH)>NVnJuM{L=b1Dpf^_+=H_Ok5O#+v(Z~u}zT1{NT-Cp(5k0&+Uvu-@qIX}uUP`d_ zI`CSKdE2rns5th<5>h@@ZoAGcqZtrrl@|5fyUsMLohz?9?*fi_Es#~$TjOZ~7^c?$ z^R{gzym2ux*y%Mtj4kJzLJi6*rh8jS2K8jY4XRw-^uDQns!RP+rl$|2@yB&fLb`~! zVz*Lwu;qq%5Q=Wx-S!sG1~z{2<3oaw^>8+m;AMiAT8TE09$4274AF!AK6pU$e4cc!%g5!2z~&qMEI>(JZ~0+ZoO# zAub{g?eM874U(-qpi@SIwI9$zPqWS)FRfOvPc{^ylcsP^uDZ^ze1-KURhKt2OmU{< z=M$NJiBeq$B2NAT-I*j&L0hO>op4OYS7T4_=vy!TgYoAng*y1$o0rE#Qa>eg$l{ur zm@$9~G?FTX28trs8d;X5n!=IFsp8Kp*LIKMg@tjmqYRRGBiq`@1h|jCz_NWPcgOno zr#L8CX9ly6Mg%T`n6&u)DADXAE%=o{H$!5#OZ#`7xB6pX6ugPk@N$`#TsTf_3Ed^z zLyA1L%AqNrbsr3NF_&=n{-%x*QgjQKWZno`+ZYO>TKOA0w&H>9-9&~Eh)x8hOg z%H*p`F}>_9q6=1~Od?lWZri_$P4OA=i>Cti3=sOm31IeH%M#815dY|IqGBEuJ391I z;LgWlp?1K}(*PQNn&O7i@_jy(gX zikoB#^&PqWZpxl(u7*j4i!+j!`PCTrVyuYN^{9{o$W%QZOyHhLn%ISpj-icL`y|mB zOTHu~7-4RHOdEfi1vEKHpk8JD&8yu0R`3&eRE2Tq{4<=gZJaKmMVii5}?>qJ^D{G2Kd#~ zRRN7}BC!W%a;dE6t4PBBv?2A&peThJenMPIM-v80fwZ1bh`G=Ec>;dkaw+*lo5g>TtiJP4bf zLmM3*W2DX$3=3wacM<#$JWoKt$~Zmd(dDy{()OX}_bcL89Xf-&RCcd=Z-mgs?M}Z; znHdV9t$hmEYv#Q_!s7Fe9@TvF?!lvdhh!4W9PKY^$RRKFXcr~`@fT6xCeUkRoZGaz z?PtaQYXNAGW0$g6-y2n(4k-L|I8L7(RjfsmcxLZ8IL(i%~;GENY46Ha*SuGuH)=X^sY~TS^iOOk-&!L(SKk zgQqGZS2I<9h)46IGCam_ce8 zT1UwZy^mZ)(0>2uDBR}IZeQAS=QlMmM-i-wY9Ot;py$ro!`dFa!y*UX?D~!P$3&bx zGFF_jbp^;16Wk=^)L|a{LJ8k#vPZg&ZXz=icd-(?K`TvSdQ!`G-50>E=uRysgkNQ? ze$(kdb4b<1b?9sGgI^f*&=TV@%Rdq42UDc`QXJ(z#v3YK+r)~#h0~)8l4G@F$3nxX zHB_I(+T4oyov~%#`HE=$lZapr#DwP~)n0*a;NZ0g5sEMa#O?;py({eumQnZ!xJIzX zOz2X9U}W!tXhEW&AQAVLYc+?_RQfiOrDQr1WW;IGCERkcM>^i)GEjK(hAt4(-rWFB zhe|uPLABsTu|#e_0R6SYZhc#1*wj+U9*&5=j_n0{+ttUBwQBt~s`|xq%HP|w(5y}= z&Fc=IndSqoix~6--I%sc(dbvoITH2Vt~?Y2f%zQhh`p`>l1x!8$x_m}c-#*4RRTG> z-7oGTL|L^6E+1*qN5+1#Lf%Y6M!b+z73<;bw@=nFI3NiQVuLf$aNLX$EC@49I5{bX zSam@VaTU(h7j`(jHgmzBKcfLXZv-?Q&J;*o3)IkBTU#w#HZ^LjX=A-BpWg;_bjzWr zeEylsPOKmlZWLn{N3;2?VaVY)!_;tApg|e_+I3GZo)h&8o;rO%QM6UQfg+_0<)=i1 zaaA}4Ru$$oX=R1fv)DR|hLpTSNnBn-)o8}gCr6c+Ugx)KW7>Zn-6OaNBOm>J%TZtW z0Ed5Y$LALY^K*9Xo`ugSX5V2>*QV+-gHlvNTcW9E(Z(e!@k&S(tqjXc=YdPK65ge= zwq#!vH{pG85*}pd$N^m1#TpXJp&Z+-=kSC33sLsgVB78P0T%0}COnZ?+rHsbt4i}* zH!d#&>beCN)Tt%l&hh5efr~ZsI|4p$*Z>eP?wb4tdcw_}B4$SwU9D0C`BTM-AV^Rs z9sR9RglQGK>RqT)rl>lV46PD63JDW`gV)nd_6!^#u9gV`7;Vp8@ghF5D0sZrQP&;J zSe_t7VHuf@>zhF%59B4D)G%?0^C3HXl=8ro4Rn($H2PedsCB4k1CNeWOSNkwD~F{j zHG>^gnEHywzphb|lK1ya@=Q1*o4#fs6eI}>f>h#F_WY2cM_RCEvu1l)#Vgr&npg5J z@~leI3wd--b}<7Ldx&2(^~G3xWM>@SuYAKf6G!Kr>jPPKZ@;}+_Rlc3%2ySi^nEbT zl7lxXd65mk&nw%_&-L%SPyObcZX~Lh9`rGQBuO1G>eZ3Drbz;X2U(VeBee*}Fyjkje*Fuw20^;TrTNIl6x1Q?nAGN;3?&L|<wf& zLzL>CsdXSIbfp%Djl#VY!xpVUek}*3DNbHh^-kGRV1L{B^p&w^P4?SAY=_KYmG4g- zZ@QkgBex$;)zg$u9exX14%(0_PDlNQft>QS;yD8C+J-NIPMowHf$hugD!m>|9!%qR z5%su_CVbnHl>e5&epRnx5}__%_ZmD?eVsJ}9Dy%2g?rQDag}1R2!q0FTz{wiyit2r z1d9H^GD2&nRRgPV#51ePY`B6Q2MWOO+@1c~J$b^=)Vygxi~P#UitSk=0(*auS+r{2 z*h&i75N@p*oXv(ovrNyEpr)_5I#e0DZ0I(6?gQyd(6{Z|ge(`l3)%?NhM5rm-jxVy z-Vx+eTApcvXzI&nYu$;|T00GykydFN7s+a7LMtBYlwm-A+45<6`+1$1Xj>BCM~6cI zTqgnMN-JSvHrc1SYN`*875n#i7uD^TwNHNwRU9Wl{uo+?p_M5l%%=!2IeDb4Pu(a7 zlS_~G+2pvVydNV;J20}gq?&M|j2;^!S#*O#B&Y5>gf0Tj^>PLIgU3Wr9o#2)DRM5h zXDcbKIE8UMZQ1g2FiQ-o+mQ_Oqw5;=+$X-aQ5NI`%29cOFtq35%(s9DS-vn=X5Zxa zc%Z;BagNizaE*(b)P`d?3%Vpzcco1?>NX3*Xd3mZArc`|aWphP)}gd%1tAiI0flu8 znZ#}W62{JWk425QJ7?XU+i~~@jQ$QK!W0pVzNr;W1H!FhaOi2oNk-@~RMq7}KmrTy z?UjY^z){ZB6XTS(Q`3VDfi4c3H5Papnbl-goNbtIb?@kO9d|zRZ?#0(FCixz?L_|6 ztZ`->7Q7bL1=<|gUp{}@3q;NrFAnXz!C%{M7(snM>@6(8Ey6!07@fg7mZJ92>WZ?M zWV9ACs-94OFjPNvb|PtuNfgSP51c1xU?HB~y61s85$|j9?R?!Q$YZBIxIG9fz>IW2 zJM=4~J|Cs_$oLI@+$xDkq8DS+t&RJypiE8J#kk^_X6X=U*rkL7_j#(jMkeTIpk!mW zq>~|4=K^LZ8TU-97vB}tV$9VloNhuoE?=bv zs!S~=e}OT$zyx>RQ{6KLVpEGALUlIoaK4sgY(yNgI-+v@`GNhe`?3YP#xID7*tOkH zTnm$gYfQP6Rn#qHOXE~Z{qwpDa18pnRI(%v0F9x_fHPLffN9#r!(VI7muXTJ>_00U zZ4luR{farz41r=^hAAOPuBcOutj@ICNyOI8fO}JRq6mZ*H$-T-b^N&luBbxvC8b*L zY8ySIeU?3VflZs|Dde3eq{KFWRT>Fu+nd%&nvvhxxtzn-05*;=~rY&jM= z=+*JtNv^o6db#3KYt*Ehivb(oIaJ|H9-EsBRVWBVdg5YC2Yqg)n})91i`F6V3XlI& z4J47dm4C{4Z$?;8U_T}-o#`9Ikn2=YK)d(EI0>KdweIsyf`OyGn^wP@`sKU=ld~6i z4`cxaP$&D}Ip8G10IKoNqP_5bCAX4=YU}=TO_@%`MU#}A_UopcqV=wPpy0H*j`d)T z5QvBn*To!no$iD}z(05CogxL9IFD+t^8qfla1|lpag6$pFsbHGT4j=`c#!#?EUfvl ztaXRQ+ONF}1toDTe!eef?2aoi()DeIg{hw@ z^%HZ>dzwgGK}!RZ2As{@6KI`sL()J4$BeVGB0f%?xfV7%kp+1n2`4l;#F4vr+6Vln zOw+)(KYwiHE}T)?+RI|^ci+Vzgh`=0#WZ>#IWwe$vxVg65tsLByI91C&%XZQvi=Q2 z`F$7jL%Rnw93X_8M$oM{6Oc0@)B6&#$Pxsfix&o}-Mp;C)#L^4xyW_gmga}6O(;~h zS1eUU=$4}mRYSx765pdRZVJ=lqss=^T@h&8*$v2+55Y!SplixS|Ers^K2++K-B)0OquEr} zhAdgeVp?k#E}a)DJN9@Z`2(txB*t{N+o7mj6~?H4P6f5ydwmk2y{p}*hC1lHVlqnO zI-dvWvPTN{WmPPnt!8yj9f&9r=Z8jdY6tbQz2!=OlaiLwGa5j3kubs1#QUSb0TT-| zXVyBWxtV-mJ8s=kKruSjIQ%x{N|vPo8nQ2tX>UWGOPy0zwz$5+&ZQU_!+@lDzxmXU z)Qj2&{2U!|-U+@y6K?a!U>nqp`_mJPySf@u@4Qik4DB>B8Wt?Ik`7ZNvIy^R6=rZ& zuNexa7H`w+(K64B>1>l=_$g?hn-Y!M|2;>=y7TuW&yR`q?<8X9%l9$McYCpG-1oPZ zClm`Im8=SDp^ph_-HOy^o_?2GlYHO_F z>M!JP90xtptr?gTuoe3n->Y-`0AgQg8Yp%QVlQJwvK)FDM8>DEQ9ci)6EyX|El{ zB7}y(^aDb$=>PtnW{%aM%0^~TuK^S?tn4ojn1^h~5hH5H>CTL1s=06h$mo#>=o~WW z5S+QHES5f>N>;i-P2rK3?FxM9rxihT(O-~OIxoG+`_~MWuXRo6P=8ixS!-UymA9VB zkd!4?Wab$+2?zX{Wa;{h=Kk?Xq+|Fr6Z^ zDG!XPD@VbXDEb?>@e5rUiM*X)O^X@yHXGVjk;osC%w%<{bh^r#(K;};-X<<&1x%Ij zZHCas=R*o`Z<|?0raamNSxg$zT?BM{is==e%v7D;Wj6vB0nmM8c!&xpi3f^#fVLBu z!4ZE$$6fdrKV#cAYpYi$b3cJ*^r%|)*%6p~mV%m(4hvBsHEw)`XVl^c=e&7KUL@Fh zG4CSdMdtZndB+;7!2Rno^hRs1ymA!6ItNTs>3=w~y zhZ}?KZFx`cTipmFEAp%BD;2i4Y7VQOyadZ2zyPWBL^f+JDDZD|+M-Dx_|!ift``J zLGPAsqrc02c(ua8-k~=a>G?8Rfk}K3Ezab*Bzl;CkVT*9Acvz$Bu51cjiJDkwFYr` z$;HkzwBo0lJcA@dzJzj+yzWR3OdK_Zp!D%uZA8@tgIlsXTc1Op`{m{PGpYx2J!s_2 z(QsmBuQYYWM_FaW0|^l%J8&;HLv@xl)AJz#mevamM6nBQe4+I=-7`}*{1+>-C&D#o z`Pb*U!dyKiFyrtqjEO1gVi#rP<6F-;n{E_%QaU^vg~0^pC<&f0e83;@fkoO}PH3=9 z)h8@ANBDIoaA~8xK&+OuT>h+e7e6U2B|&m|$d)FEOiA&TV&RB;3T%Eynm=osI4)X@&!x=qNh z`0j>Xr|cjxh`8aiz_i!hCT&my7mW8Wt4U73q`0KLSO9Ih@<#davih>KSoHmH>&Xby z?o13G@DDA7tJM6h*_}&}C&0IxrXV$887Q#iIG$nzeI8B5Nc@$U|*-xR%OWU+Tn+6GXj^`N{3;pOqoSQ(T}|1y_ifb1UIdj>4<{_J zhaa>_o(`oD_+Z<7^~lKr^_iE}Sv?h_SD!GJ&21Gh0C&7iR!gD(F2D<6N2)(A)dq4nRM@PkCC|@mIHkzsH z3KPg%X8{^_b1%jxx8H1RYgZt=pg^jWCvQr2 zy2F*IKu?lQ88ESz=dwZ3;4G2mVbCHF(}5LlHPopFSBnM4B=8>+Q|%~wq6!H~3!Hy$ zm5ShR6nwxMrd=lK)*muX%P!Otkd=9UdzXFl;~@Q3?QzRUuJquKGS>-MDn05Czwj>3 zmhW~l6XvNePkqRz^4;c%a)5?C{j#B)!Sa6)1&L*OkT%HH6e!c=%kaRm)+eeN6r>a# z9>ir5yxBqhNXre#OcAfP(SuvMaHtMuiT)^_aZm|~=ylD^Xr}c%)o;r{piLLVesf%= zNoK#}tr;oL?f>4C2u&t@XuUoVU<>2W=Ne)8iDGsz!Vgld5KzWDLFY* zB2HZp?1#FUxxv1Y8U?{GQ3VP)tKr_s3%DSTZYMB%wr%eTPv|+dG^b;wW9RHQkG+ag zcDfmV<(c4E|2$hyZ(+jsvMs;eO)w}3rngzN%?7>=sthJFLG-AlzL#`qk3~j!BXW~c zZ+t?R3;8zMYG2GgSWQj@RkqHeXpjxSd+iJtV1qoRfWIR??{Z-h`I{xCfxzdtxh$5MXfB#96-`I*r$R$! z;gCy26yE7{S%X(Sg~qs%Wj%6-L#;eLz+>flG?#v7VZd}^iz_E_rse#W={J zghsHg%ZXZ`KDP<9b{Ujff2->ta}}e}XGmgBXDh9o@V&XQ;D>M!yfUp`EDNS#1{y5u z;#6=>XOKf(v5+;iV_h&HZ(=nt`OLv!M09W`ZD7m-996~wj$#Dq3BqY%EDMTte{NjlxDk|3ckq}k5~>y>iMTGh7{_;CPLyL+V`orxs+ohv}T_?oFe?kpq}`<#b_%^MH#u;fL|w=rNOh# z#beg8_P>R5gn7uhg!xbtqRE+8ns&>BrpTTYLOgUWQe491>*UL8>sI-x634;VT)NEN zpF}Z~xVVL7r}OeD-|G4hYLsfC6oB;a24qY&npT1ZV+bm z2MEgR=!S}&z>65BL2kA;g5Vfg%CsMSlQBG_hw0labqQ|>LDnpeXdj~-t0QEqBRlCu zSgNRFNT3dm>>tmN%Wx~Q1^e-@@CNyme(oR*#r5YkIzhNaBX8%a0B7K?>fWAAn|9~~ zJM2T$TjRa%^W0@N!(SN)C`pYZ?4!t)K0QzT31yrm!A8SMH+?=oRHOw=vXN**(BP|< zQ;KTw6638Zx%hn#JA_2-hXl-i{}0mXJMMY2+WQJj0XKm!0)pc%d zCIc(TEbUXDqK4jp%u0XC=FbcC{Pz&85f`^r#;1O0!&e1V^8 zM-c`pb2%`kV7=jZ1u5VOSIFC|m~<6(A}(R!jL4YhR-BzO#Ck|DLG>quDW8@p5I2AP zCQ|3H)KTEFn!AF~(*f00h^tjZiF5v3^#PUxVRl@; zsLn;tiib1|;yvPhLgR5<{b}Ck6wpVBTvP4bFLf`srojJr`5@?Nkh07Xt~_k@(}*9> zWHqFzWvBUo=q=qeRudEga+M^+_Eq}ir(LN+sKXx`HShkER9FEf4$IXU7`eld zGEKyIV%3drTUfoaYaG{>vPw7d?{zS2Ce?HnWgiGsiyRIa0qf9@NQ+1n^(<)ooSF*7 z;B0`CLB~&syY>ZXbdAY(JBS4L-5ThirhLNTu7ix(e+(+!=v0L}_RuVk3GxXW8()lI zx*jJ@j&LQX0}c%~S^BdvkoP3p8|YW;9gZm?lSvel6XVY+JD$bx;<+|6Gy;EJcF+E{V%y2jL*tK1V%DunW z!hOxMgArb=(#wsqkBFz*C90uQ5p1%Yj9K$iyW!$9wWFh*&(;mC&j-ox$9#hzE7ouf z7&&nTLP9qL!K_5lhz^&gZ}XbHsA_CF73YrNYzpL?M#RP=a=XW2NVB_-7Bt$A40 zc;;(z4Vlqyez7b3e1@*KSIo$z9ciNyc^d-e&cY~jAuG8gVuN|7m8}B z=8U4@NpoG-zBbHFq{~M7X@-dPEIQucy{DjvtPGm7qOWh9V+=Xg#RfVGU{hgRTbW?~ zlnTScip}8?fI52Mo9YEEf7eV}U(H$!c^@Xr(=Rh?OEVY@Dn+Rw&z)H{vcFjAxJ|cf zyCBHE*NhnY4zPVdLbAWKD;eHs(U_(Q%U=q}t}J=krC3(pz8%qPTq%S`C9Qs#ZpU0a z7OcF_4O8_hCEhDwnoH#$v9ps1ouesz1u`QhuZfSzz$Kh7ExmJQ&x%d0fFG!e<3k9&wyrZ@8}uYK z+0L8X_KuE)=32MmmAo^j)0Yi`c7ydk9(_lfBzFNv$}oWSRJi^$Vm3L-l%~|c2{Am6R>Dg;cBHs@_evnQ!mG=dmUW(5j=(1^&x&B$W6?~Thfd+!6%8t}+8tf&B@kmg5&e?gclRf%u7HzRqP=__z8@{d=R{ozq z3M6U}L#FTydN?HrS)jkkJh5$;efpceX1d*;`tc#A{-bmv)92_{WPQpfcqy(8L{C;c zm@8}-n<{E~ucK_rF1v%|JiEKS&O6pVy7jI%4ArfU!50rHc0(oCw>2(mwLMEdI$%Y= zG^mDd%)G!z@J)cE8`TMc;W(T*qB|hFAyY)``jz-jTf?vXF6>N9cnH}yU71;!_FJxS zm|!0jVz{xUzvp@lOPaK3h?~PPNA*k{vYOB}kR9c>lPge_U{+A0^TF)HDV)0bEH&*_S4vKo%UacBjtt?vVAfNG)BC%ERhMvf`h|_ zlb4oI@3Z-gq|`?!gSVi_*;+8@N+GWGIp@pIU!WKrsp(J6tpxcZVHKDAUKO|dwH=52 zbLm`9fE0h{Z8)qH^!Hz&o}ALI@_0)(>_(giA~imXU%j_`xBSkk{q#d0^R9vX_dxv7 zrxteOsSnoJ3Yh)@?}u4_x91zH`GV7A{eBjVq6-?tSS4r!!$*2!DQcPGWwjvKPiDKw}GTjGk)UxCG~;HkqeJHQ2)*nEyt5^)25xxgPotkm{&3Kk{DIOSY#U&np62Jz zppSBVZzg4Nx=u23@BDIEM0gbV7&Si^sJ-kMe!lK?*1^^dPk`&6j{T(oH+saS&v5Il(zK?nd0L zH1C$xG@jUg^3&iHn~s!3mdk?f(0r`o%Z!8jwVT*Q=X7gecT)0SOZNs0+Rm2D9xr%A zbs~L*%kF7sXtV8QbDi$yy*P43iksED+-X&W&0hP)PM1_gtK-TaUD8@QMC?Sprraw? zcxymy4|C!ZFeA~h*nuvm?9880rr-1RPhBXz#iad~X;4tZMvM7!5|O_UidzzW9M0Rp z$6odnLa}WoXiR0IU<)fY=FAIuiR|xgQ$pa2vPy{x~{Hfs0BeZ_Z;aNQEP!jc`RcS1f-ylO5 zl-?v^CRr3NZmvM6BudujNo%^o84D!QE`G)Nmn?INmX4*>uM=3tWE8&DwU!W|T{3DL z7HR}k@eCew7ar{I@2f-bFu}bVANwi2t(jd#8>r}o+&VMUB-<3@UG1qAg2E~c7c;4^ zTlGC}*_2Avl-UrTkpOy&GA+UtIP#4o;N1}i-Atk_c+JP$$GysPGg-5kEDSRIU_g&) z#KNG^`Q3D7a~lLP zKKXifetvHJ{!7m(s4g?4*AF|BVC2-G8Ye2EE{ZJUiY79pFhN!JxfJngtz8eH-`$Aj zZRaw|W;xt%%#Kf@DHK5jd@ASo(qP20Os57Bd95TiZUCQLpZWA1$jPG^$Lw3!6E|pb zx4)bH35Nx*^#y2P%Y^oGt;bhmIBQw2XV6*mgYog`_UIkxkX$JX=2#%}v7L5)XnZ$U z*A=jIeT17Q*X4-ip&K5>a`1G>lj&H&@&q4$u-|PZrC098%R!22vDlJ1dxiVvlb+Ja zlSuW2?rGa^^SC%W8!l)0kWf-7WD9)vARGDt_B^-ltvhuyc0Z?2*_mCuJ}l$A8)Wv~ z3-ZJMS3-Nx9R5z99BKP9`53YT!AlwJiMaWet!S~8GBmzB_H1@Q0V>{io177NjGD-N zNjlDb7{U$CSU;*b_iS6(bl!L@elrs()vqT)J=>GW*ABn~ZH!~0prEL%3G*yFnhIE0 z?RI!<>G?k=E|qvIhdQ{YtH2x{ME1KFLFhA_27$fJAaF;=+m@5(4JT=DgV+pAS#;{&2-!(L-#RycS? zlwPY=X(T}Qqmm^~Qd1CzZ2~&_1BfS$zN7l6O^6&>T5K-%UZ`F|6^_=TqtZs&1U7MN zFM=bR5d)1?b5=K)!NS2QY>#rBzF!FaJm$czQv)*3uEn?Ekn0WmoX@dh`qYD!v;D?V z-E3f{%7dP%PtHJxtILx#<_`mvw%2rF*ulH&$os42_GXM{k4AlP$E!^LyU%ho@SuQ+ zM1RcP6DIrJvihn0*7GU-YLV;Sa;t-iRDb4hyd(5BHFVMuL;S(UfgV8+Ugco=M2yGr zW~XqAP1XhpHMQKwynG(+kZw6oF8-O3k}EvjNc{Qg_#&Z7_gSOCR6bO*yYaUzU@J~N zsj&|sz3YolOt{FOtH_gytH|ud+wh;1=|Ij_g2W?~U#wS)pl3lk zEGqh}l$Mf}(i6W#wcxU~r|GpU0;xCBb6gG4tTjRwK0Dz11*YKM{`I@V<*N@CXWNAl z#r{rj+alO81|>91&Q|`WkIk-O^`(y)`@iO8(JS%$6R9}Rqry?d8PI&cr9<8qHve=Q zbT7r-sByxt_`w<}TzUu_!g}`E`tc@j5kDat)1`i!w?KLGzMyW!CLPliSg=pk0X_=*8+g7ImVJkI z?zei}(SbJ_Z5XjCNXldWg@l|!W^AAk$DaJW!^xcnuHV5xH`vjGSLvn^jZ}~tgP5}i z2*!*_6!nJVRO?w`S@gb}EiYM3)yZZjR_d*r+g$15YoUC5`=dEtuMU4h7C}t?8$T%z z*>mxJ@hJ&$iNsYdVtsG4VX=Gf!BnBxwS0@TFpr$22GM>bl~%RBGr798LUOwf=-zyV z^AUosOK*YZ=%NhQ+HnfWkTxM(^3(40SeSSL=cl$#dxBHPHySCFQomtkBZ~s`0 z%IF9;)a#$Zr2_x@a;uQ)Y+FSeU_#4R`g0oX7Fyq(Gms9`vDT|d2h-#_5@=?|^Ljtzmdbt6|-6f`~5!u1y^qe7%ll}?n#shQEPP*EUU0$BY+Im2w1`NqZ& z+kSzqjG*cEyVHj4mg7|>yvaeHg&gc69(0if)Ml-q?mePjD6Fv}F(yFodgTow(=QkI zM)pCzx1`&fC4Mo-hDa|eH9Ka(@&id6@|lG6&Kh6eVI7mxOOU8(z$Y0?^`fnLQr?|l zE@tq%s8yK2mtU+19sLr!0SW565?WYw)cc#6Kw%&kBx$+pwm)gahGT05pf1o}rXIi7 zX(LNbU9}GuHx{!IbFLTdG=-#v$y%FB5N zclX7osw<59^WEKd&3YWdAt#2mC26Ut5~J3Vv#xVGU7wa3Fqy{mt4z>zM}iuWKbMrG z@4uh~^3=ergh2nDvMEE`iT6|FJ5JaKp3}|tLqFf<#n=W;l+tytxAn?;S`n1wlcH4U zq1KMGzu!Qo47GK39qMFE)(zZnRw?Z_R#E8WCqql{f!QZ26x2}DD{7Q!e-xx&F_Dgx z;fgzUwEh~(f(<7JKVdv`wc=KJlqCeIu)!GjD*b>2Mujkdo9{xUAB<20nFZ>cdQ*%dJOP-aHfXCEy$W}MvRdhHi{KMToj85 zP$?9N*fg>-leF_Ad{Dh0JkKJ{aOnzl>~pqgn4XyG-c?y04WGA@e{I+&+|F7Kfmn77 zG>5B8S5Al<1c#TX99gl{xX~=ng&J95B&oX3)M51YhyjU~v>2PDvF~ettc&H&uma6( z5y~jbEOxE)*%D|#2=755z%56LBL0moKWx6<+i!FXCd_iQQPf`$(@TK+ zwo|Hc+YkHdVKUS2Vk*axGIX))l0)`9S@_6MKy!0KKndKlv+2~xr~NL5(%P?H;h4Q- z1iKFop789qU2_UwtRT|Bu3yIdAzZ%sl`M+(?_vLmiKYwoNmK+s15i~*=mWOOc3gI+ zLbC6_-n$>i(}&$FTMnjd316XJrHt~W46-3P(QeJ-#=UG`fj{&-@0B3 z$@UsZ9~CXaNV0-Yl2zQI1zIGh6|1TvfrVWJnVdFMTQ( zf$G_mGAH3I#AG_U1U3WDx=7kSeQQg`D4FdnA?laOoFVB$1u$$D?Lls8Ms%FxjHrm- zsi``>X1CiPVmG(??Khz#e!e|DEdNxIDce3ovi6VZ#~%DQ=mdav9^{wea`Im1bNX6G z*kvY^0XtRkHHIe9+;}CWWm{Ipm_3)rx0Z zt834bpUq~6wMm6JSoqcqK!TH5%_v8IkF zfCb?OcTACBXou{F;sv+j{@YR2hTt zzpv9{mhD|g9aNb=Yv4n`p1Y>cuz<6CQw}A$Dt^B9*Ie~1kz&f->AHg%&z(NhX}{-K zDoe_S2>49^PnqMx<58K9&n8s@O?M6h31(_6CoKH@4(5loeC`CCHk}vu_>~#chw}2v zC;@pbrK3Y0w>@cNPeI&g3E2g#_X2iXRAl)SbX@z$E+ma7+H($<8*e|=i=0yM2e-9J zPyq3=ss)T=w&0rkc zyH(a=MF^6~{bCulG<5sTXNc)A_v!_zH0#GRyMSX7@N29|@;AZG>d%mqo0uenpwK9=nz&_MAfiav;nH~vb;+<6ko{_Bd#~^TDb<_P zr_XpP@RI-fcQp)JULF%g%yHSPUEqASv?%m7>>s1t-U!sU%-yS zV@$3Of2I<)>H~ure{H?_^RjumwDHh%Aep0Gb%y~x9qU3ONT5lUE8Cp4p|8>1+;1_D+LUp;Q#mIOm!dY3~*P`_GF&Q9*d$i>} z6N(z21P|(}g88H6kNskS(1Lb;AZa`H@_2Db^vrNhZ2|eBQ}P<0=%4G0biWIvBzCMAyP|WWlt{6zw18>AIst#YGks0*% zcF@IrgWQh@2ZySQBUU)r%S|j)ekQyXfr&*rx`QN}llFvN*M5WWqT}nm;N8jnE$O@a zP``yx7yyfOV_I9jP}+}*J_A}1jgH>JKfMluTe4n zNVcy{NeJsBT6dUY$J}Dq!7u})7-i=t)+Ewbjugz9>0f6ksi-@LGlc?Zy8bYluiDt% z6W$Ch`%xUYAE4U1TY#JE4>~7D`O(4LeLr`|e|2}qibfCYjOu#z67tvBQ7c3% z&AWr8V>wU5>A<9ZvLetaXF%2CBwwYPGS9yN!$AJgG2>fhO^`Yz*0j zc&PXa^?o}%gm||HSWih&AiFyQ3ZM0XvHOJ1vVZm4vJPuYd`urRZ|94t&y}n7e*3TQ zoll3BFBXap8emYZ$Bd=#QsQ)Y2+VQ*pjZOX>$JxTjvEFf-X(h}AHaBDvcI33Up`y( zYO4;GggrC6_bcS6U26_u`y;rad||LD9F z2VQrcl~LAKN-C>yom#Jz-`Up6=ARuLbf(c9fxx&tdfxoPKb14F1TO#w=IH+bLv$KE3ou` zA-WiuQJz@FuU~5_Ov4s1rfD>YBnJXM4miw8a3hhq2vRQql_l@NqO$G`c-z6j7V74> z&&^Q#P;u<|4`<3>{a&uT-Fl`9+wi*!Yj3@2zuP-lx{Y~y*KcD!m6|a2x6fV&7XS-1 zKCbc68w#eiKVNivYu9?YnQnJ^_4a;RN&j+fgMd4KEBY1mZfdgUTe2B5v)fya-oiG%dXsYMI;|>td0oFn?_Kjk zxw>9<9vE8o-OIi^qGrEaZ@+=nPWxTy`(2mlU)}80FL_$+fhE`sMc*Q*JvL!GqyU8< zx?@*-`tk^r34?wA5Z}4?R;b<0e2o6>cr*62Lh>tYtarlCCeNFeTAP=h4VDA4g`8J9 z(!H=Lyw6vcmc+=(w(ngny+5_9rAgv_AFT65{jO zs?Kh`+fRs(?|ICTM=HlF3r(D z#8Lu9y>?U!w=<}&qD`li^SpMR12M}NbLl{Ic|>QwarcbxYx}`|_F{`AYyfy2hYWQYAYj+ty0t&w zcKT7s?zZpVXC-Ui_k0QXy;Z+(@zJmSbo1-|`5vF&v6b6`Cv50^;WG1J;m4(3{j%r4 zqT8}V|6H@3zTZJ>{lP-h>D7u{Eywj=<69ggObDo{uViHE{`J!-i)%kRIvxT89}_bN+7Nn0Z8109qSkDfB#MM_b`@R;bF87MUS00vHnrN;7=g1D@8N9C1a6#sVEV`N_Hi}*0%#d&U9fc%R@J}g zdw}Ne_#qFlaA7QxS$1GWu}m~x|5@ar?!zA9toc;_&*K3JVgAx|5Ag9907Lu*%E?G< z{{`3n4{qFxEDQimBOytXk3#=1Rv$mO(oY8%v;AF6s3HXLvrqp!5y*N_1kj#f`K{{V zTPr8DH1vNf9{`m>?Ex&cOl&mSzX=i#-}eE1djb4)fA+u@g|vTLdi@87!cUQWpLD@I zNF#V2lZXC=_W|+pFCQrE^_~Gjd)R^>*Y{tL0|D$F1+FCxKO!E$5d}Ss)5Ci^Qe}Wy zsV;4%HUGgZE%COoV_R_IIhm%n#d& zfb%oJ8vn~M_EorX{K_1_kaF2E<3A_Jzrz8qKLG1{{ijCc^=Q?j9DW4$5&0Rq4`AtT zN#y~AU2&$Rf&DK{p!C23`6;R%dF$`foJb}Vz~cYUtpDX`Ky}0jfc4S-KePVX!p9N- zsg5Py%z+U`q{Yu3RqnqatYAKT2~%kGneGEo0Xis%|LyZHxf1e#rH~Dd*8f9A3Pzd( zbCQRRKZBOM`tQd7yYzr;6ktFM>(|I+(eKA}o&Tjs5h*ZKG>i6e^#RRBpcicaLzj+- zhcET~Nu2s0yao_RiEBULh38>?JVLq8DE_YRUmO8%$e7Up5U80op7wuP38-6mfcLd{ zyprU~|4)=`$pT|eFvi-yT)whSL!P-z>AgA9Q1m%Z>1(!f0 zd+@XYHo(do1OVIX=LE`khbAj2Vw9i-s|0`iXJlab|Np;}=r5q-*g%eB ZX3)QLHK*t`OEpl0!PC{xWt~$(698v}z{LOn diff --git a/Front-End/webpr/public/placeholder.svg b/Front-End/webpr/public/placeholder.svg deleted file mode 100644 index e763910b2..000000000 --- a/Front-End/webpr/public/placeholder.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/Front-End/webpr/public/robots.txt b/Front-End/webpr/public/robots.txt deleted file mode 100644 index 6018e701f..000000000 --- a/Front-End/webpr/public/robots.txt +++ /dev/null @@ -1,14 +0,0 @@ -User-agent: Googlebot -Allow: / - -User-agent: Bingbot -Allow: / - -User-agent: Twitterbot -Allow: / - -User-agent: facebookexternalhit -Allow: / - -User-agent: * -Allow: / diff --git a/Front-End/webpr/src/App.css b/Front-End/webpr/src/App.css deleted file mode 100644 index b9d355df2..000000000 --- a/Front-End/webpr/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/Front-End/webpr/src/main.tsx b/Front-End/webpr/src/main.tsx deleted file mode 100644 index 719464e3d..000000000 --- a/Front-End/webpr/src/main.tsx +++ /dev/null @@ -1,5 +0,0 @@ -import { createRoot } from 'react-dom/client' -import App from './App.tsx' -import './index.css' - -createRoot(document.getElementById("root")!).render(); diff --git a/Front-End/webpr/tsconfig.app.json b/Front-End/webpr/tsconfig.app.json deleted file mode 100644 index 0b0e43e6b..000000000 --- a/Front-End/webpr/tsconfig.app.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2020", - "useDefineForClassFields": true, - "lib": ["ES2020", "DOM", "DOM.Iterable"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - "jsx": "react-jsx", - - /* Linting */ - "strict": false, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noImplicitAny": false, - "noFallthroughCasesInSwitch": false, - - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - }, - "include": ["src"] -} diff --git a/Front-End/webpr/tsconfig.json b/Front-End/webpr/tsconfig.json deleted file mode 100644 index 129b1a30f..000000000 --- a/Front-End/webpr/tsconfig.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "files": [], - "references": [ - { "path": "./tsconfig.app.json" }, - { "path": "./tsconfig.node.json" } - ], - "compilerOptions": { - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - }, - "noImplicitAny": false, - "noUnusedParameters": false, - "skipLibCheck": true, - "allowJs": true, - "noUnusedLocals": false, - "strictNullChecks": false - } -} diff --git a/Front-End/webpr/tsconfig.node.json b/Front-End/webpr/tsconfig.node.json deleted file mode 100644 index 3133162c2..000000000 --- a/Front-End/webpr/tsconfig.node.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "compilerOptions": { - "target": "ES2022", - "lib": ["ES2023"], - "module": "ESNext", - "skipLibCheck": true, - - /* Bundler mode */ - "moduleResolution": "bundler", - "allowImportingTsExtensions": true, - "isolatedModules": true, - "moduleDetection": "force", - "noEmit": true, - - /* Linting */ - "strict": true, - "noUnusedLocals": false, - "noUnusedParameters": false, - "noFallthroughCasesInSwitch": true - }, - "include": ["vite.config.ts"] -} diff --git a/Front-End/webpr/vite.config.ts b/Front-End/webpr/vite.config.ts deleted file mode 100644 index 1343bcde0..000000000 --- a/Front-End/webpr/vite.config.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { defineConfig } from "vite"; -import react from "@vitejs/plugin-react-swc"; -import path from "path"; -import { componentTagger } from "lovable-tagger"; - -// https://vitejs.dev/config/ -export default defineConfig(({ mode }) => ({ - server: { - host: "0.0.0.0", - port: 4343, - allowedHosts: ["5f063a99e43d.ngrok-free.app"], - hmr: { - protocol: 'wss', - host: '5f063a99e43d.ngrok-free.app', - }, - watch: { - ignored: ['**/node_modules/**'], - usePolling: true, - interval: 100, - }, - }, - - - plugins: [ - react(), - mode === 'development' && - componentTagger(), - ].filter(Boolean), - resolve: { - alias: { - "@": path.resolve(__dirname, "./src"), - }, - }, -})); diff --git a/ProductionFiles/docker-compose.yml b/ProductionFiles/docker-compose.yml index a4e067cc0..f580b70ad 100644 --- a/ProductionFiles/docker-compose.yml +++ b/ProductionFiles/docker-compose.yml @@ -62,7 +62,7 @@ services: softwareai_frontend: image: softwareai-frontend-server:latest build: - context: ./Front-End + context: ./Front-End/webpr dockerfile: Dockerfile container_name: softwareai_frontend working_dir: /app diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/.github/workflows/deploy.yml b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/.github/workflows/deploy.yml new file mode 100644 index 000000000..61b790b72 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/.github/workflows/deploy.yml @@ -0,0 +1,74 @@ +name: Deploy Software AI + + +on: + pull_request: + types: [closed] + branches: + - main + + +jobs: + build-and-deploy: + if: github.event.pull_request.merged == true + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup SSH + uses: webfactory/ssh-agent@v0.9.1 + with: + ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} + + - name: Add remote host to known_hosts + run: | + mkdir -p ~/.ssh + chmod 700 ~/.ssh + ssh-keyscan -H ${{ secrets.DEPLOY_HOST }} >> ~/.ssh/known_hosts + chmod 644 ~/.ssh/known_hosts + echo "known_hosts:" + cat ~/.ssh/known_hosts + + - name: Copy entire project to VPS + run: | + rsync -avz --delete ./ ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }}:/home/administrator/deploys/softwareai \ + --exclude node_modules \ + --exclude .git \ + --exclude front-end/node_modules + + - name: Make dir on VPS + run: | + ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " + mkdir -p /home/administrator/deploys/softwareai/Back-End/Keys && \ + mkdir -p /home/administrator/deploys/softwareai/Front-End + " + + - name: Create keys.env on VPS + run: | + ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " + printf '%s' '${{ secrets.BACK_END_ENV_KEYS }}' > /home/administrator/deploys/softwareai/Back-End/Keys/keys.env + " + + - name: Create .env on VPS + run: | + ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " + printf '%s' '${{ secrets.FRONT_END_ENV_KEYS }}' > /home/administrator/deploys/softwareai/Front-End/.env + " + + - name: Create COMPOSE on VPS + run: | + ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " + echo '${{ secrets.COMPOSE }}' | base64 --decode > /home/administrator/deploys/softwareai/docker-compose.yml + " + + - name: Deploy Docker Compose + run: | + ssh ${{ secrets.DEPLOY_USER }}@${{ secrets.DEPLOY_HOST }} " + cd /home/administrator/deploys/softwareai && \ + + docker rm -f softwareai_frontend softwareai_api || true && \ + docker container prune && \ + docker compose up --build -d --no-deps softwareai_frontend softwareai_api + " diff --git a/Back-End/Dockerfile b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Dockerfile similarity index 100% rename from Back-End/Dockerfile rename to backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Dockerfile diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/audit.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/audit.py new file mode 100644 index 000000000..ff11d4d2b --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/audit.py @@ -0,0 +1,34 @@ +from datetime import datetime, timedelta +from pymongo import MongoClient +from dotenv import load_dotenv +import os + +MONGO_URI = os.getenv('MONGO_URI', 'None') +MONGO_DB_NAME = os.getenv('MONGO_DB_NAME', 'controls_logs') +if MONGO_URI == 'None': + load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), '../', '../', 'Keys', 'keys.env')) + MONGO_URI = os.getenv('MONGO_URI', 'mongodb://localhost:27017/') + + +mongo_client = MongoClient(MONGO_URI) +mongo_db = mongo_client[MONGO_DB_NAME] +logs_collection = mongo_db.logs + +class AuditTrail: + collection = mongo_db['audit_trail'] + + @classmethod + def create(cls, entity, action, user, metadata=None): + entry = { + "entity": entity, + "action": action, + "user": user, + "metadata": metadata or {}, + "timestamp": datetime.utcnow() + } + result = cls.collection.insert_one(entry) + return str(result.inserted_id) + + @classmethod + def find_by_entity(cls, entity): + return list(cls.collection.find({"entity": entity}).sort("timestamp", -1)) \ No newline at end of file diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/logs.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/logs.py new file mode 100644 index 000000000..e8f28e763 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/mongoDB/logs.py @@ -0,0 +1,39 @@ +from datetime import datetime, timedelta +from pymongo import MongoClient +from dotenv import load_dotenv +import os + +MONGO_URI = os.getenv('MONGO_URI', 'None') +MONGO_DB_NAME = os.getenv('MONGO_DB_NAME', 'controls_logs') +if MONGO_URI == 'None': + load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), '../', '../', 'Keys', 'keys.env')) + MONGO_URI = os.getenv('MONGO_URI', 'mongodb://localhost:27017/') + + +mongo_client = MongoClient(MONGO_URI) +mongo_db = mongo_client[MONGO_DB_NAME] +logs_collection = mongo_db.logs + +class Log: + collection = mongo_db['logs'] + + @classmethod + def create(cls, action, details, user, level="INFO"): + log_entry = { + "timestamp": datetime.utcnow(), + "action": action, + "details": details, + "user": user, + "level": level + } + result = cls.collection.insert_one(log_entry) + return str(result.inserted_id) + + @classmethod + def find_all(cls, limit=50): + return list(cls.collection.find().sort("timestamp", -1).limit(limit)) + + @classmethod + def find_by_user(cls, user): + return list(cls.collection.find({"user": user}).sort("timestamp", -1)) + diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/postgreSQL/user.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/postgreSQL/user.py new file mode 100644 index 000000000..db1cb2ee0 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Models/postgreSQL/user.py @@ -0,0 +1,39 @@ +# user.py +from flask_sqlalchemy import SQLAlchemy +import bcrypt +from datetime import datetime, timedelta +import secrets +import json +from sqlalchemy import Numeric + +TOKEN_DEFAULT_EXPIRES_DAYS = 30 + +db = SQLAlchemy() + +class User(db.Model): + __tablename__ = 'users' + + id = db.Column(db.Integer, primary_key=True) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True) + email = db.Column(db.String(120), unique=True, nullable=False) + username = db.Column(db.String(80), unique=True, nullable=True) + password_hash = db.Column(db.String(128), nullable=False) + acess_token = db.Column(db.String(255), nullable=True) + created_at = db.Column(db.DateTime, default=datetime.utcnow) + expires_at = db.Column(db.DateTime, nullable=True) + revoked_at = db.Column(db.DateTime, nullable=True) + + def set_password(self, password): + self.password_hash = bcrypt.hashpw(password.encode('utf-8'), bcrypt.gensalt()).decode('utf-8') + + def check_password(self, password): + return bcrypt.checkpw(password.encode('utf-8'), self.password_hash.encode('utf-8')) + + def create_access_token_for_user(self, expires_days: int = TOKEN_DEFAULT_EXPIRES_DAYS): + token = secrets.token_urlsafe(32) + self.acess_token = token + if expires_days: + self.expires_at = datetime.utcnow() + timedelta(days=int(expires_days)) + self.revoked_at = None + return token + \ No newline at end of file diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Config/setup.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Config/setup.py new file mode 100644 index 000000000..3b221006c --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Config/setup.py @@ -0,0 +1,42 @@ +import logging +import os +from dotenv import load_dotenv + +class Settings: + def __init__(self): + self.ENV = __import__('os').environ.get('FLASK_ENV', 'development') + self.SQLALCHEMY_DATABASE_URI = __import__('os').environ.get('DATABASE_URL', 'postgresql://postgres:postgres@meu_postgres2:5432/meubanco') + self.MONGO_URI = __import__('os').environ.get('MONGO_URI', 'mongodb://root:rootpassword@mongodb:27017/controls_logs?authSource=admin') + self.CELERY_BROKER_URL = __import__('os').environ.get('CELERY_BROKER_URL', 'redis://localhost:6379/0') + self.CELERY_RESULT_BACKEND = __import__('os').environ.get('CELERY_RESULT_BACKEND', 'redis://localhost:6379/0') + self.JWT_SECRET = __import__('os').environ.get('JWT_SECRET', 'supersecret') + self.SECRET_KEY = __import__('os').environ.get('SECRET_KEY', 'your-secret-key-here') + + diretorio_script = os.path.dirname(os.path.abspath(__file__)) + logger = logging.getLogger(__name__) + logger.setLevel(logging.INFO) + formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') + os.makedirs(os.path.join(diretorio_script, '../', '../', 'Logs'), exist_ok=True) + file_handler = logging.FileHandler(os.path.join(diretorio_script, '../', '../', 'Logs', 'api.log')) + file_handler.setFormatter(formatter) + console_handler = logging.StreamHandler() + console_handler.setFormatter(formatter) + logger.addHandler(file_handler) + logger.addHandler(console_handler) + self.logger = logger + + load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), '../', '../', "Keys", 'keys.env')) + + + self.INVOICES_DIR = os.path.join(os.path.dirname(__file__), '../', '../', 'Invoices') + os.makedirs(self.INVOICES_DIR, exist_ok=True) + + + self.SMTP_HOST = os.getenv('SMTP_HOST') + self.SMTP_PORT = int(os.getenv('SMTP_PORT', 587)) + self.SMTP_USER = os.getenv('SMTP_USER') + self.SMTP_PASSWORD = os.getenv('SMTP_PASSWORD') + self.use_tls = os.getenv('SMTP_USE_TLS', 'true').lower() == 'true' + + self.STRIPE_SECRET_KEY = os.getenv("STRIPE_SECRET_KEY") + \ No newline at end of file diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/logs.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/logs.py new file mode 100644 index 000000000..cb8536fe3 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/logs.py @@ -0,0 +1,91 @@ +# Back-End\Modules\Geters\logs.py + +from Models.mongoDB.logs import logs_collection, mongo_db +from datetime import datetime, timedelta + +def get_recent_logs(user_id=None, limit=10): + """ + Retorna os logs mais recentes. Se user_id fornecido, filtra por user_id ou user. + Cada log terá 'timestamp' como ISO string. + """ + query = {} + if user_id is not None: + query = {"$or": [{"user_id": user_id}, {"user": user_id}]} + + raw = list(logs_collection.find(query).sort("timestamp", -1).limit(limit)) + adapted = [] + for log in raw: + ts = log.get("timestamp") + try: + ts_iso = ts.isoformat() if hasattr(ts, "isoformat") else str(ts) + except Exception: + ts_iso = str(ts) + adapted.append({ + "_id": str(log.get("_id")), + "timestamp": ts_iso, + "level": log.get("level"), + "action": log.get("action"), + "details": log.get("details", {}), + "prNumber": log.get("prNumber") or (log.get("details") or {}).get("pr_number") or (log.get("details") or {}).get("prNumber"), + "user": log.get("user"), + "user_id": log.get("user_id") + }) + return adapted + +def get_logs_by_user(user, limit=50): + """ + Recupera logs por usuário. + """ + return list( + logs_collection.find({"user": user}) + .sort("timestamp", -1) + .limit(limit) + ) + +def get_audit_trail(entity=None, limit=50): + """ + Recupera auditorias do MongoDB. + """ + audit_collection = mongo_db['audit_trail'] + query = {} + if entity: + query["entity"] = entity + + return list( + audit_collection.find(query) + .sort("timestamp", -1) + .limit(limit) + ) + +def get_system_health_recent(limit=50): + """ + Recupera registros recentes de health_check. + """ + system_health_collection = mongo_db['system_health'] + return list( + system_health_collection.find({}) + .sort("timestamp", -1) + .limit(limit) + ) + +def get_system_health_by_user(user_id, limit=50): + """ + Recupera registros de health_check filtrados por usuário. + """ + system_health_collection = mongo_db['system_health'] + return list( + system_health_collection.find({"user_id": user_id}) + .sort("timestamp", -1) + .limit(limit) + ) + +def get_system_health_by_status(status, limit=50): + """ + Recupera registros de health_check filtrados por status (ok, warning, error). + """ + system_health_collection = mongo_db['system_health'] + return list( + system_health_collection.find({"status": status}) + .sort("timestamp", -1) + .limit(limit) + ) \ No newline at end of file diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_access_token.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_access_token.py new file mode 100644 index 000000000..f5afead12 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_access_token.py @@ -0,0 +1,8 @@ + +from Models.postgreSQL.user import db, User +from datetime import datetime, timedelta + +def get_user_by_access_token(token_str): + if not token_str: + return None + return User.query.filter_by(acess_token=token_str).first() diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_email.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_email.py new file mode 100644 index 000000000..eae68e25e --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Geters/user_by_email.py @@ -0,0 +1,8 @@ + +from Models.postgreSQL.user import db, User +from datetime import datetime, timedelta + +def get_user_by_email(email): + if not email: + return None + return User.query.filter_by(email=email).first() diff --git a/Back-End/Modules/Resolvers/generate_invoice_pdf.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/generate_invoice_pdf.py similarity index 100% rename from Back-End/Modules/Resolvers/generate_invoice_pdf.py rename to backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/generate_invoice_pdf.py diff --git a/Back-End/Modules/Resolvers/send_email.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/send_email.py similarity index 100% rename from Back-End/Modules/Resolvers/send_email.py rename to backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/send_email.py diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/user_identifier.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/user_identifier.py new file mode 100644 index 000000000..e32ebb558 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Resolvers/user_identifier.py @@ -0,0 +1,112 @@ +# Back-End\Modules\Resolvers\user_identifier.py +from datetime import datetime, timedelta +from functools import wraps +from flask import g, Flask, Response, request, jsonify +import logging +from Modules.Savers.log_action import log_action +from Modules.Geters.user_by_access_token import get_user_by_access_token +from Models.mongoDB.logs import ( + Log, + logs_collection, + mongo_client, + mongo_db, + ) +from Models.postgreSQL.user import db, User + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(message)s", + handlers=[ + logging.StreamHandler() + ] +) +logger = logging.getLogger(__name__) + +def auth_user(logs_collection, app, email='', password=''): + with app.app_context(): + header_token = request.headers.get('X-API-TOKEN') + + user = None + if header_token: + try: + user = get_user_by_access_token(header_token) + if user: + logger.info(f"auth_user login sucess") + return user, user.id, "success" + else: + logger.info(f"auth_user invalid token") + + user = resolve_user_identifier(email) + # evita usar user.id quando user é None (corrige crash no log) + if not user or not user.check_password(password): + log_action(logs_collection, 'login_failed', {'message': 'login_failed in if not user or not user.check_password(password):'}, level='warning', user=(user.id if user else None)) + return None, None, "invalid" + else: + logger.info(f"auth_user login sucess") + return user, user.id, "success" + + except Exception as e: + logger.info(f"auth_user_error {e}") + log_action( + logs_collection, + 'auth_user_error', + {'message': str(e)}, + level='warning' + ) + return None, None, "invalid" + + if not user: + return None, None, "invalid" + + return user, user.id, "success" + +def resolve_user_identifier(identifier): + """ + Aceita: + - None -> retorna None + - número (string ou int) -> busca por id + - string com @ -> busca por email + - string sem @ -> tenta converter para int, senão retorna None + Retorna User instance ou None. + """ + if not identifier: + return None + + try: + uid = int(identifier) + return User.query.get(uid) + except (ValueError, TypeError): + pass + + if isinstance(identifier, str) and "@" in identifier: + return User.query.filter_by(email=identifier).first() + + return User.query.filter_by(email=str(identifier).strip()).first() + +def is_token_revoked_or_expired(user: User): + if not user: + log_action(logs_collection, 'is_token_revoked_or_expired', {'message': "Usuário não encontrado"}, user=None) + + return True, "Usuário não encontrado" + if user.revoked_at is not None: + log_action(logs_collection, 'is_token_revoked_or_expired', {'username': user.email, 'message': "Token revogado"}, user=user.id) + + return True, "Token revogado" + if user.expires_at is not None: + try: + if datetime.utcnow() > user.expires_at: + log_action(logs_collection, 'is_token_revoked_or_expired', {'username': user.email, 'message': "Token expirado"}, user=user.id) + + return True, "Token expirado" + except Exception as err_unkwnow: + log_action(logs_collection, 'is_token_revoked_or_expired', {'username': user.email, 'message': f"err_unkwnow {err_unkwnow}"}, user=user.id) + + if not user.acess_token: + log_action(logs_collection, 'is_token_revoked_or_expired', {'username': user.email, 'message': "Usuário sem access token"}, user=user.id) + + return True, "Usuário sem access token" + return False, None + +def check_user_quota(user: User, required_tokens: int): + remaining = (user.limit_monthly_tokens or 0) - (user.tokens_used or 0) + return remaining >= required_tokens, remaining \ No newline at end of file diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Routes/auth.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Routes/auth.py new file mode 100644 index 000000000..435098431 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Routes/auth.py @@ -0,0 +1,74 @@ +from flask import Blueprint, request, jsonify +from Models.postgreSQL.user import User, TOKEN_DEFAULT_EXPIRES_DAYS +from Modules.Savers.log_action import log_action +from Models.mongoDB.logs import ( + Log, + logs_collection, + mongo_client, + mongo_db, + ) +from Modules.Resolvers.user_identifier import auth_user + + +from api import db, app + +auth_bp = Blueprint('auth', __name__) + +@auth_bp.route('/register', methods=['POST']) +def register(): + """ + Registro simples: cria usuário, seta senha e cria acess_token, persiste. + """ + data = request.get_json() or {} + email = data.get("email") + password = data.get("password") + expires_days = data.get("expires_days", None) # opcional + + if not email or not password: + return jsonify({"error": "Email e senha são obrigatórios"}), 400 + if User.query.filter_by(email=email).first(): + return jsonify({"error": "Usuário já existe"}), 400 + try: + new_user = User(email=email) + new_user.set_password(password) + acess_token = new_user.create_access_token_for_user(expires_days if expires_days is not None else TOKEN_DEFAULT_EXPIRES_DAYS) + db.session.add(new_user) + db.session.commit() + log_action(logs_collection, 'user_registered', {'message': "Usuário criado com sucesso", 'username': email}) + + return jsonify({ + "message": "Usuário criado com sucesso", + "acess_token": acess_token, + "user_id": new_user.id, + "expires_at": new_user.expires_at.isoformat() if new_user.expires_at else None + }), 201 + except Exception as e: + db.session.rollback() + log_action(logs_collection, 'register_error', {'username': email, 'message': str(e)}, level='error') + return jsonify({'error': 'Failed to register user', 'detail': str(e)}), 500 + +@auth_bp.route('/login', methods=['GET']) +def login(): + try: + email = request.args.get('email') + password = request.args.get('password') + user, access_token_to_return, status = auth_user(logs_collection, app, email, password) + + if status == "invalid" or not user: + return jsonify({"error": "Credenciais inválidas"}), 401 + + log_action(logs_collection, 'login_success', {'message': f"Bem-vindo, {user.email}!"}, user=user.id) + return jsonify({ + "message": f"Bem-vindo, {user.email}!", + "acess_token": user.acess_token, + "user_id": user.id, + "plan_name": user.plan_name, + "limit_monthly_tokens": user.limit_monthly_tokens, + "tokens_used": user.tokens_used, + "expires_at": user.expires_at.isoformat() if user.expires_at else None + }), 200 + + except Exception as error_login: + db.session.rollback() + log_action(logs_collection, f'login_error {error_login}', {'message': 'Erro no login'}, level='error') + return jsonify({"error": "Erro no login"}), 500 diff --git a/Back-End/Modules/Savers/log_action.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_action.py similarity index 100% rename from Back-End/Modules/Savers/log_action.py rename to backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_action.py diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_audit.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_audit.py new file mode 100644 index 000000000..52c6246ec --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_audit.py @@ -0,0 +1,21 @@ +# Back-End\Modules\Savers\log_audit.py + +from datetime import datetime, timedelta +from Models.mongoDB.audit import mongo_db + +audit_collection = mongo_db['audit_trail'] + +def log_audit(entity, action, user=None, metadata=None): + """ + Registra uma auditoria no MongoDB (coleção audit_trail). + """ + entry = { + "entity": entity, + "action": action, + "user": user, + "metadata": metadata or {}, + "timestamp": datetime.utcnow() + } + result = audit_collection.insert_one(entry) + return str(result.inserted_id) + diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_system_health.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_system_health.py new file mode 100644 index 000000000..bb835e174 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/Modules/Savers/log_system_health.py @@ -0,0 +1,23 @@ +# Back-End\Modules\Savers\log_system_health.py +from datetime import datetime, timedelta +from Models.mongoDB.logs import mongo_db + +system_health_collection = mongo_db['system_health'] + +def log_system_health(user_id, health_status: dict): + """ + Registra status de saúde do sistema no MongoDB (coleção system_health). + """ + entry = { + "user_id": user_id, + "timestamp": datetime.utcnow(), + "postgres_status": health_status.get("postgres_connected", False), + "mongodb_status": health_status.get("mongodb_connected", False), + "github_status": health_status.get("github_api_reachable", False), + "openai_status": health_status.get("openai_api_reachable", False), + "status": health_status.get("status", "unknown"), + "message": health_status.get("message", ""), + "details": health_status + } + result = system_health_collection.insert_one(entry) + return str(result.inserted_id) diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/api.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/api.py new file mode 100644 index 000000000..f19da81c6 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/api.py @@ -0,0 +1,64 @@ +# app.py +import os +import threading +import requests +import json +import stripe +import asyncio +from decimal import Decimal +from bson.json_util import dumps +from datetime import datetime, timedelta, timezone +import hmac +import hashlib +from flask import g, Flask, Response, request, jsonify, send_file, abort, redirect +from flask_cors import CORS +from asgiref.wsgi import WsgiToAsgi +from flask_limiter import Limiter +from flask_limiter.util import get_remote_address + + +from Models.postgreSQL.user import db +from Modules.Config.setup import Settings +from Modules.Routes.auth import auth_bp + +app = Flask(__name__) +asgi_app = WsgiToAsgi(app) +settings = Settings() + +app.config['SQLALCHEMY_DATABASE_URI'] = settings.SQLALCHEMY_DATABASE_URI +app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False +app.config['JWT_SECRET'] = settings.JWT_SECRET +app.config['MONGO_URI'] = settings.MONGO_URI +app.config['SECRET_KEY'] = settings.SECRET_KEY + +INVOICES_DIR = settings.INVOICES_DIR +SMTP_HOST = settings.SMTP_HOST +SMTP_PORT = settings.SMTP_PORT +SMTP_USER = settings.SMTP_USER +SMTP_PASSWORD = settings.SMTP_PASSWORD +use_tls = settings.use_tls +stripe.api_key = settings.STRIPE_SECRET_KEY + +if os.getenv("FLASK_ENV") == "development": + CORS(app, origins=os.getenv("FRONTEND_ORIGINS", "*").split(","), supports_credentials=True) + +limiter = Limiter( + get_remote_address, + app=app, + default_limits=[] +) + +db.init_app(app) + +@app.route('/') +def index(): + return jsonify({ + "message": "Backend Flask - API Principal", + "version": "1.0", + "database": "PostgreSQL + MongoDB", + "status": "running" + }) + + +app.register_blueprint(auth_bp, url_prefix='/auth') + diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/requirements.txt b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Back-End/requirements.txt new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Readme.md b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Readme.md new file mode 100644 index 000000000..6385bac87 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/Readme.md @@ -0,0 +1,8 @@ +### 🧠 Diretrizes de tecnologia: +**Banco de dados:** PostgreSQL para dados, MongoDB Para logs +**Back End:** Flask + blueprint para api +**Front End:** Vite + React +**Filas e Agendamentos:** Celery + Redis +**Autenticação/Autorização:** Funcao propria do sistema que verifica se o usuario esta registrado no sistema, nao há necessidade de jwt +**Pagamentos:** Stripe (planos, subscriptions, webhooks) +**Observabilidade:** logs MongoDB centralizados, deploy com CI/CD via Git Actions diff --git a/build.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/build.py similarity index 100% rename from build.py rename to backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/build.py diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/docker-compose.yml b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/docker-compose.yml new file mode 100644 index 000000000..efcb512a3 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Architectures/Stack1/docker-compose.yml @@ -0,0 +1,124 @@ + +version: '3.8' +services: + + meu_postgres2: + image: postgres:15 + container_name: meu_postgres2 + restart: always + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: postgres + POSTGRES_DB: meubanco + ports: + - "5932:5432" + networks: + - rede_externa + volumes: + - postgres_data:/var/lib/postgresql/data + mem_limit: 1g + cpus: "0.8" + + mongodb: + image: mongo:7 + environment: + MONGO_INITDB_ROOT_USERNAME: root + MONGO_INITDB_ROOT_PASSWORD: rootpassword + MONGO_INITDB_DATABASE: controls_logs + ports: + - "21017:21017" + restart: always + volumes: + - mongodb_data:/data/db + - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro + healthcheck: + test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] + interval: 30s + timeout: 10s + retries: 3 + networks: + - rede_externa + mem_limit: 1g + cpus: "0.8" + + redis: + image: redis:7-alpine + ports: + - "6189:6379" + command: redis-server --appendonly yes + restart: always + volumes: + - redis_data:/data + healthcheck: + test: ["CMD", "redis-cli", "ping"] + interval: 30s + timeout: 10s + retries: 3 + networks: + - rede_externa + mem_limit: 100MB + cpus: "0.3" + + nomedoapp_frontend: + image: nomedoapp-frontend-server:latest + build: + context: ./Front-End + dockerfile: Dockerfile + container_name: nomedoapp_frontend + working_dir: /app + environment: + - CHOKIDAR_USEPOLLING=true + - CHOKIDAR_INTERVAL=100 + ports: + - "4494:4494" + restart: always + command: > + sh -c "npm ci && npm run build && npx serve -s dist -l 4494" + + healthcheck: + test: ["CMD", "curl", "-f", "http://127.0.0.1:4494"] + interval: 129s + timeout: 2s + retries: 5 + mem_limit: 850MB + cpus: "0.8" + + nomedoapp_api: + image: nomedoapp-api-server:latest + build: + context: ./Back-End + dockerfile: Dockerfile + container_name: nomedoapp_api + working_dir: /app + privileged: true + volumes: + - /var/run/docker.sock:/var/run/docker.sock + restart: always + ports: + - "4941:4941" + command: > + sh -c "uvicorn api:asgi_app --host 0.0.0.0 --port 4941" + environment: + - FLASK_ENV=development + - DATABASE_URL=postgresql://postgres:postgres@meu_postgres2:5432/meubanco + - MONGO_URI=mongodb://root:rootpassword@mongodb:27017/controls_logs?authSource=admin + - REDIS_URL=redis://redis:6189/0 + depends_on: + - meu_postgres2 + - mongodb + - redis + mem_limit: 850MB + cpus: "0.80" + networks: + - rede_externa + +networks: + rede_externa: + external: true + +volumes: + postgres_data: + mongodb_data: + logger_data: + redis_data: + npm-modules: \ No newline at end of file diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Docs/folder_convetions.md b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Docs/folder_convetions.md new file mode 100644 index 000000000..246f49c28 --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/Docs/folder_convetions.md @@ -0,0 +1,83 @@ +``` +nomedoprojeto\ +├── Readme.md +├── docker-compose.yml +└── .github\ + └── workflows\ + ├── deploy.yml +└── Front-End\ + └── vite.config.ts + └── tsconfig.node.json + └── tsconfig.json + └── tsconfig.app.json + └── tailwind.config.ts + └── postcss.config.js + └── package.json + └── Dockerfile + └── package-lock.json + └── index.html + └── eslint.config.js + └── components.json + └── .env + └── public\ + └── src\ + └── components\ + ├── ... + └── constants\ + ├── ... + └── contexts\ + ├── ... + └── hooks\ + ├── ... + └── lib\ + ├── ... + └── pages\ + ├── Login.tsx + ├── ... + └── App.css + └── App.tsx + └── index.css + └── main.tsx + └── vite-env.d.ts + +└── Back-End\ + ├── requirements.txt + ├── Dockerfile + ├── api.py + └── Keys\ + ├── keys.env + └── Models\ + └── mongoDB\ + ├── audit.py + ├── logs.py + └── postgreSQL\ + ├── user.py + ├── ... + └── Modules\ + └── Config\ + ├── setup.py + ├── ... + └── Geters\ + ├── logs.py + ├── user_by_access_token.py + ├── user_by_email.py + ├── ... + └── Helpers\ + ├── ... + └── Resolvers\ + ├── generate_invoice_pdf.py + ├── send_email.py + ├── user_identifier.py + ├── ... + └── Routes\ + ├── auth.py + ├── ... + └── Savers\ + ├── log_action.py + ├── log_audit.py + ├── log_system_health.py + ├── ... + └── Updaters\ + ├── ... + +``` diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_embedings.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_embedings.py new file mode 100644 index 000000000..c4ff8932c --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_embedings.py @@ -0,0 +1,101 @@ +# requirements: openai, openai-agents, chromadb, tiktoken (opcional) +# pip install openai openai-agents chromadb + +import os +from agents import Agent, Runner, function_tool, SQLiteSession +import openai +import chromadb +from chromadb.config import Settings +from dotenv import load_dotenv +from openai import OpenAI + + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), '../', '../', '../', '../', 'Keys', 'keys.env')) + +OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") +openai.api_key = OPENAI_API_KEY +client = OpenAI(api_key=OPENAI_API_KEY) + +# ---------- 1) Indexador simples: chunk + embeddings -> Chroma ---------- +def chunk_text(text, max_chars=1000): + # simples: quebrar por parágrafos ou janelas deslizantes + paragraphs = [p.strip() for p in text.split("\n\n") if p.strip()] + chunks = [] + cur = "" + for p in paragraphs: + if len(cur) + len(p) + 1 > max_chars: + if cur: + chunks.append(cur) + cur = p + else: + cur = (cur + "\n\n" + p).strip() if cur else p + if cur: chunks.append(cur) + return chunks + + + +def embed_texts(texts): + response = client.embeddings.create( + model="text-embedding-3-small", + input=texts + ) + return [item.embedding for item in response.data] + +def build_or_update_index(doc_id, full_text, chroma_dir="./chroma_store"): + # novo cliente persistente (substitui chromadb.Client(Settings(...))) + client = chromadb.PersistentClient(path=chroma_dir) + + collection = client.get_or_create_collection(name="backend_skeleton") + + # divide e embeda + chunks = chunk_text(full_text, max_chars=800) + embeddings = embed_texts(chunks) + ids = [f"{doc_id}__{i}" for i in range(len(chunks))] + metadatas = [{"doc_id": doc_id, "chunk_index": i} for i in range(len(chunks))] + + collection.add( + documents=chunks, + embeddings=embeddings, + ids=ids, + metadatas=metadatas + ) + print(f"Indexed {len(chunks)} chunks from {doc_id}") +# ---------- 2) Tool retriever: função registrada no SDK ---------- +@function_tool +def retrieve_backend_context(query: str, k: int = 4) -> str: + client_chroma = chromadb.PersistentClient(path="./chroma_store") + collection = client_chroma.get_collection("backend_skeleton") + + q_emb = client.embeddings.create( + model="text-embedding-3-small", + input=[query] + ).data[0].embedding + + results = collection.query( + query_embeddings=[q_emb], + n_results=k, + include=["documents", "metadatas"] + ) + + docs = results["documents"][0] + joined = "\n\n---\n\n".join(docs) + return f"Contexto recuperado (top {k}):\n\n{joined}" + +# # ---------- 3) Agente + sessão + runner ---------- +# agent = Agent( +# name="BackendExpert", +# instructions="Você é um especialista backend. Use as ferramentas quando precisar recuperar regras/estrutura do projeto.", +# tools=[retrieve_backend_context] +# ) + +# # usar SQLiteSession (memória persistente entre turns) +# session = SQLiteSession("agent_session_backend_01", db_path="embeddings.db") + +# # entrada do usuário +# user_input = "Como eu crio o endpoint de login seguindo a stack padrão do projeto?" + +# # rodar (Runner vai permitir tool calls automaticamente) +# result = Runner.run_sync(agent, user_input, session=session, max_turns=6) + +# print("Resposta final do agente:\n", result.final_output) diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_index_skeleton.py b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_index_skeleton.py new file mode 100644 index 000000000..c3a90506c --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/_Test_index_skeleton.py @@ -0,0 +1,98 @@ +""" +Script: index_skeleton.py +Função: Indexar automaticamente todos os arquivos do esqueleto backend (core/, services/, routes/, etc) +para o vetor store Chroma (./chroma_store). + +Requisitos: + pip install openai openai-agents chromadb +Execução: + python index_skeleton.py +""" + +import os +import sys +import openai +import chromadb +from chromadb.config import Settings +from pathlib import Path + +# Importa a função que você já tem +from _Test_embedings import build_or_update_index # ajuste o caminho se necessário +from dotenv import load_dotenv + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), '../', '../', '../', '../', 'Keys', 'keys.env')) + +# ---------- CONFIGURAÇÕES ---------- +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") +if not OPENAI_API_KEY: + print("❌ ERRO: variável OPENAI_API_KEY não definida.") + sys.exit(1) + +openai.api_key = OPENAI_API_KEY + +# diretórios padrão do seu backend +TARGET_DIRS = ["Architectures/Stack1", 'Docs'] + +# extensões de código relevantes +ALLOWED_EXTS = [".py", ".json", ".yml", ".yaml", ".toml", ".md"] + +# tamanho máximo por arquivo em bytes (para evitar binários ou logs enormes) +MAX_FILE_SIZE = 200_000 # ~200 KB + +# diretório base +BASE_DIR = Path(__file__).resolve().parent + + +# ---------- FUNÇÃO PRINCIPAL ---------- +def collect_files(base_dir: Path): + """Percorre os diretórios alvo e retorna lista de arquivos válidos""" + all_files = [] + for folder in TARGET_DIRS: + path = base_dir / folder + if not path.exists(): + print(f"⚠️ Diretório {folder}/ não encontrado, ignorando...") + continue + + for root, _, files in os.walk(path): + for f in files: + full_path = Path(root) / f + if full_path.suffix.lower() not in ALLOWED_EXTS: + continue + if full_path.stat().st_size > MAX_FILE_SIZE: + print(f"⚠️ Ignorando arquivo muito grande: {full_path.name}") + continue + if "__pycache__" in full_path.parts or f.startswith("."): + continue + all_files.append(full_path) + return all_files + + +def index_repository(): + """Percorre todos os arquivos e adiciona ao índice""" + files = collect_files(BASE_DIR) + if not files: + print("❌ Nenhum arquivo encontrado para indexar.") + return + + total_chunks = 0 + print(f"📂 Encontrados {len(files)} arquivos para indexar...") + + for file_path in files: + try: + with open(file_path, "r", encoding="utf-8") as f: + content = f.read().strip() + if not content: + continue + doc_id = str(file_path.relative_to(BASE_DIR)) + build_or_update_index(doc_id, content) + print(f"✅ Indexado: {doc_id}") + except Exception as e: + print(f"⚠️ Falha ao processar {file_path}: {e}") + + print("✅ Indexação concluída com sucesso!") + print(f"🧠 Dados salvos no diretório: ./chroma_store") + + +if __name__ == "__main__": + index_repository() diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/data_level0.bin b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..127a6da401a7d7d50612f1d45edb849f27c34f5f GIT binary patch literal 628400 zcmeIuF%bYD3;?l$0@R?RF0fQp_+jI4!H{2mPqtdKN8~=^T?7aaAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 a2oNAZfB*pk1PBlyK!5-N0t5*BD{uj~SOe$) literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/header.bin b/backend/Agents/AppAI/CodeBackend/CodeKnowledge/chroma_store/2ed8a0d6-aedd-45cd-9366-a8c73d87e45d/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..2349a18e8065afa48df1f405833655a3f39098a1 GIT binary patch literal 100 rcmZQ%K!6kk6U^$7fC#j}XsG;uC=h`16`(YX|F20q)m`+uJ#`-~cJ6GP!**iXI&ImO2#)O}1}6?a5+DJwl2*22N$Y4OCnf|c zJKRtxP-wZ27TN-(-^d+T8h4s9;9BSc4>}k9#x9h*XZ$McFAf(b!#h?-JWJcagIxbxJV?H91cb^@pzg$ zm=4Aw2g_5JclLL840bbv9h-Z*ncDJ9wRHkF9E&tCX)cv$V8(`%d;_zyzh`?#|2fQ= z-RCHS>+6}_J%ii&h6b7bzTG`t*$T!`-QG@RSI?$fgiW($(naKD$JGvT)z-x#OwW$N z?ycSZO0^o8P@E5sGMjt*HrJB*430ImW*%*h5d0TU_myM=J9hd!5$0>+dB6PIXakO2egGDU96Ty`{Uq zdq-#Y0F!4I0R8#~oV`(QLd>|FH<7Hg3=S8`F+d7iOD;nqIU46#IRNTNuSivtdIp;t z(yBMtyO$oz&IKJ6kO`HO^Os;lPwg*;N+|G~%R?iSLZVPi%B`vp6l0N3B40>~!^L7* zTtY;-;S|TFxkwP&$ibfN-2;Oi+jr&*5!2PZrDLdfkm(%i2LlZT^DJWIp&dPE4Rtf9 z!H`O5L&1We3P9PkSYO?_VzyE!MHGTg*|#X$T5YIav4WcH#xTls`PWbcVU0|#DL`1h zj-)5XxU!`v%$E-c^YJ(rPRID97)?<~3qh!m=Fu|O2Nvn8&)PU!W)m!wO)kkM!(1@V z52Hq+h@j6dTxh7?xRJ_2ZG?tj6|8!!C;~zih|v&hn7X-0#}b^7W)owme&lsW_5>hO zY$3yP2{PAv7wD^d*36cz0vbZlrFdBAoqwXyoQh}*CSCIk)oa#JM>b*<6hR8_{G!~~ zC_;`^5*WLk$s}X@GaNG<=R<5fK7m`9B%4qd4h1W~!k`8+#0nf{j{t;80hJ7?n-Xh- z%u`Ya8AaKVnQ;5Y^zDEu*4qs|c4x;xXGd3e0~6+x(b#ZspTH-B(8MWPHo3MTZ5#3$ ziPg+GS6|(|YBm$)6AilZ-g(YBClR5`5Z(dphgP^WQDt0G@Op0UDBhXH=FmQreoMuK?f#H+! z32?Z)J(vTr^a$__$HuuN7GSQoTlLi)%Vx8Vq*~A^d2D+vhU#U@sH_d6EK#K&YZ1Z{ z@fi3PwKhHAH)IznNT%fu@~G8SQ7hCzZ`5h5e5Xrl_D?@r7M`azX%U_{un>$QgJ z+FEL|663{&_h(`$E_fgXgY=>YT@gk_K@vJ>&@KNdhN%j>izP|sLBD8f0_`=M&Iod^ zkndb^9h8~t-Sn{rmxN(O4Xs!;%iPDAOqOFkdP+0F!Y+ztEtL9FIp~1*Q%%(!fZn*5^}%S@gFeA(I3CTJ2K1WiJ$0dy-Gv zlQ4^K6eo}92RfI*k(j_F*ilZ9=Xye8Arh11lQ^hpnC4(WCr%gT3atQ2 zH19uU2;6Qq_v{$x?jJ<8pf8^vQNaNi>vRq>8<;KqecSV4?dGojzMayHT+UIuxubUw z768PR44Ep5fvHHxc39*nh;KJLydJmL%W~0HuG!tUKJvti##jYh@#mXtSra*%@wjx>~~7R_KFDZWI{SKuw(lrANNzVf!!2O^ zP>6MVnpuyFb^1chY^Wvb47d7PVG(VL)1zv7**Z~oJ<`2dsk>Zb<-w0C7vhRygoms^ zMP`J|*chLJ@gQEEW5OdGtWJreKUk(qiDqtKV35dyafM7g4G$tOD{`Y^5=)Nr@o`Qn zBgtW4PI3pNGQuV!kk_#ZSb~D0BMved9vZwxrYDU{5crwVSUfHzjKw3dEFQjaY?8s% z9&pSgl8w;Ra11*(7LSF+nI7&QQRzd{#d4YCI4JZ$f;o;j<`vTwl}&TQ(4$VwW~Kc2 zMQN?lfmGSreZp})9LKhJntiQqZz$^WMm)_959^3>5tqBU+39S~hAP0$TPFjeohy)? zz4jEB0Oagxek>L)Hf%o*5g|aKsGtH`Of zq_IU`KTHsJ_I7l3i^GikJQ%IV?ds?qf~DlTT1gNL8qjpTw!R%YXvT{&;&~!x1pO_|EoGIvoswn!imvL|aIJFH0MP$KBT0SrN zah6)0k|L#03bk&qbR@4|saBED5L_Cf9Vc2QCD4;4f3T2l8&@#8VUfq&OIu^R^@~^Aj1xq;?D#d)L z+_Fu(+12WFhhfC%b+{ccm1y-M8+trGhr5OIwK`o>8(|J^>b`V9v?Ma5Q&Fa7wPgX~ z<94vK&7%ueQ%%H`jcOSa6_Qq4Nf9DX7|WXepS=Q9YN{el<<*{cv)kwPx*{zuFB@@& zoz0FGPm~RNT#k^-1(W(3lNsDOwt9{2bX&dcD%)Y(m@RDEW&4Bem$p}J|7rWY?WpbJ zwtHPU}yJu!x4KcT+wW2ec={&#Mi=kypb{~kHdGD_*BzKQaAv& zvWMBY9d1?^Vgh`pY8Tue-`9U4I*|SU|BgkP|y|ERdR!mj(AZjbg2 z?UdF`e}G;_-AOfQj{b9S8e6Z|4DF}fC$ev2AkBtHoqIQfYwu1*_HO4RnK&ox?dJsa zRq>RtSKyM7AO~NKk2j7@1cT1?E{Dr&cfv<#n;ECO&D+xE^o^}Mg(*7Ll}Yi?T7zaN zTXC{7Im{(F_?A2uL|;>ng}LBZBr0ZiZE51(Lu>vyi96PmNqns4onyU~gYU}=dou!; z3Wg>W)^*gBN%6pHNb!<)2DK_hHXP;zA(-Yzxg^HfvAQ&2PlADjM^8$^V{tYq1kneP z#pIYW$qlc9DeYSXDRFPxPF!5rJH`v?;S@J;RxfT5v87y#O4D-eTX;&+axN^F)`C-#mSaJg zw1($HT5rGMLl`Fb{g!%{|YqzVL| z^Om4!9FC<&GNHW(_|#}L&L0r=M!2y!KhZdmhzEo2s&c7Rp5#EJ!bE@hKA53Db_O_)uBXAJZ9vs%UbJ0f^HyG7={A4ge66{~^aIn?rWWIm zjMo|44L>)$->_N#KlSVVx zoI2Uf8&92V?}k$++f#q)WV`E5oorX_sgvzof9hmA)LSN4yJ1-L2!Py=2>;pMY>m>bdjzV zCtaj-`AHY)ST>-8x#v4EPnm_IlP}Y?)V{l&8Wn$~zX}w7z2z4oja7 zRzcoEMvk`#a&qOlDo?IFr}^Z{bC~=(Sgm*q_!TWybn9SU;w?ljzbtVwqldVPpg4p5!r3}RdnXMGe)lX5tnzJ@dnJhdJP#w=>J!4dBNZNrrQr^MObXs) zAO8(EehnInaLIHm8sk#pLa9K`|BF^7E3fFM8+ zAP5iy2m%BFf&f8)AV3fx2oMDREfAPP(e)87%4Xu}V46#^$uxTZPv-ys7RDu+AP5iy z2m%BFf&f8)AV3fx2oMAa0t5kqfP}zYZM~^@{x81&e^O(6l7K`IAP5iy2m%BFf&f8) zAV3fx2oMAa0t5kqz`G5BEtGD^Uhk0p?C4kJ$YJt)AAJ=p#0s4JtbG6fvc~rEyDf)A zAA$fufFM8+AP5iy2m%BFf&f8)AV3fx2oMC0hd`}%$Rw`-s1^qBqZ}sg|9?eed*yf% zNjO1(AV3fx2oMAa0t5kq06~BtKoB4Z5CjMU?@9z}boF-Cet-Gxzq}g&@Bg>HsDb~; zA3=a1KoB4Z5CjMU1Ob8oL4Y7Y5FiK;1pY-3m~5g9Lw0&-s-EMbPOrDwXLoxXtli^^ zcpELv;5l^_)>0`q* zdjId@B0km;X|}U)NWkv#h9mY?cQZWt!Y%HIuZ8n?BNYH-we2Essq1WS+WugB-S%tS z&ul-m{kQE~wy)b>uzk+x~) zEMZUZkxU$fEm(k5rm${#l`CrJ8>l6lkj9{DFcuj|!(kWaUU(SgQuZ*P00p?liA211 zp2Vm>4&!C+xq!koogh=MMuAUo5uP0z3$kM|G3&7eJIu8)Njbz0A$EaFjdQ8CIGg5# zG)5?tiNzyg42FSoDQSSLjcIJ!4BFbelM&3sFrwPgSR6!l;Vd9O4n&dISQ4N@=Ufyi zB3&>CG7vf<6N#nTm?qGYVK99x6&nXB!(2qP53-mTqOcR9*_ozsHr15MB%4G<8U@gy ztsD^x2D7Hw6y$@AA7Cd0F)==s#)cOK)_7Vy&Nk%K;9xLFf=z-Vr{PD25k?q$n5oH( z$HIIn$sk-=VK@ev8e{DC5hy*3qY?ju$1xDj6ohff@mPvaqVg$2YiG9fb_|>u?B1~} z5aGtTI6sDhrNrz^SI1z-=8l2x;81^WKrWm6<84h%@OT@s8KCff@W=sr^WrQ}S#?k0=)X0TJ*#wBj1tIx{V8I-zc0!%W*G}D$ zJvOLISE3fBV%EA81slRgTBPbxQlaGFw@|CLAc^m^TFL2RKuYQsrj{*$o!k1(?CI+0 z4-O4<@9gXC?b)$4fSW}G8meS@hMpaR-Tk{ddINA|4$DL3yQuO&S#R@zBUYYr^=-Ba z1uZ8Njxp=kGsp*3n!!zwNI1yg7K*V843wxeV~;b1RInx^92-xMghx22|Cqoqs4Z(_ z_SAH4@2Y8FYQmXR9R1p($Q?LX}5apC>jm3=;zbr^Z?6Ae^pNv7rEg zu>{9wK&DHkq_}h{22DNV#c3X=Xx1#SN@WhpR=&(>Yb{bkUvZp$$f8&pg^9FHM;g6_jL=i!)2>$x4Wsq)5i=1F<$xpBN> zw-=a2VPL2N>bA#Sv%oAF7+}vEn4WJ!RFg)dRZwe_hbr;+Jo*g}dU7LgbeSL$d*7xt|*xud7pe_K%W0+F5ogD)MyZidP zL^ipnD90{$S#5aSkncD!tGZ;loY29vVR!Z>qolw{`BoH}rbtLq#SViM9Bz*#W9i0y zLYp);utT?+ni%7uYU7|ts4=4AOo{#E@rxc#Kp4TziJgOX0{K87?hrf0Awyj)DwDPK z|J+hJjA1Brhc)x{sPMtSnN}3Osbv*VrY=L>9FU936pRA}I2PT;)VdpewPw`r#=>Z5 zY%c1k#YR>tbMm00%_+8n>Y-mzOsrtJcA-pZ-Pt!VxV66+ zqib^;Q#2M*7esHXTO2Zp#W3F%$Q^>cXcmDLC@Ge5;!?RpL(_OHlpm<=j~7}uWkXV8 zvRa+gG|FPP1|&=?+pVR{{S#@O^o<36ZH`3DFsE zb6UaatOIBBA{t!E_6y{iY`=h6{;jrWZAWaJ?SL&{8?ZU7Z`$VC)>vP%{=)is>-($^ zSf8@Ste05#T0Pb?thLs;mVa2@uzbxjWBG~Y3d@6*J1qm2nB|aVqou>Lvg*yMUs&c= zJzn)f)qhuAQ+03EB~`nt5>;nZd8!sx)mHwa^0mtES3X$z*~*tH-(NXZIbL}|<&MgZ z%9WK>l^*jS%s)2&m-(~id(DrVFEn3oPMCL_edaUFTJsX~M$>Di7fs(cJ!!h%^g&a^ zbfM`Qli$>DYBDV`8H|51{+IE2<7>t{jE@YnB+i*(dRL@H`hHD9*qs3mllSR*wr;HOUM z=}TBjr&7unu@oQ`OZfsOZ&s5(j|BiZKj6?jk5kwzrSLiY)FC}Rhoy9=r96wJ0J$LL zvpC-AQoLtyywlb3K7-={xe)JZOxmO*&EUvDD$Y?3r?5#%VH(FfO&RYfjt8XTcu(PY zr%Cai#PI^kc%Q}$0g2&LSPC!{OL+n_`6Z^uu@t{j%40Ylkc#6yiplM2@+Yylc1heP zusC2U;PMEL*QSp5am)$i0_Ve66k5xI1tQHun4wk4@E~Srl^8yT1p`B|o*%{We9Cwq z!JI%U=6nE)^GV|F$4@QN(}%H?7NwLAVJSc=mU15^H>=6_VsXuqxO=cTU@GMHZp`47 z81BMSylN?T;&?zV#JdBNJWA5-Sd>Q+bsH8148?lhipg#@`GYvFTZ;PuEF72$>D_`E zToS|0Sc*$6<^4DwkPGo{!ttC^yc=;mr#jvZI3AD-@!p3?4khV&EXpB?x(5@^(@jBeQDPTimU@xp5N4@Yv0RAd0yUq~1ddcEMmmUt>lDEUuo$2er8JHs z)ryfaI8v=5QW{4BN>L;MM_MmNO5sTB6_NJiNI)ryG={0`R8$^|S|^H1Vo|`7&r<>i zuN8yiSi)MBgi#y`sQF0yFlCK`62mcpQl!xc7QRLlK8zn~#D^%BP@|B*VF^Gfk`Td> zR*R9sm}Rw!C4@x*HLo6v`4|=71(*-0dA=YPj@G)Nnw*axR*4ViVct~=-o02RP>R&s zgZWk}_|C;*R*GWI!I2=iDAL)Ox!YK16j2nR1$1P|iio4}PQ$_%ioyfND&!+i4~x&yjU(!^SXL)q`6`wH;yz{70HDo0W}}ViTUQJ_#BuIsCm97 zEPReAyb%Z66v1{Z1}H_@Xuy$dVx*1u!74s%!2DJfe?689)O@man9ri(tHpdk&GW6t z!Y!ikbvRO$D$-iaQYEsi!4iNaFQEogDixH~SPW2#^2A^es9bF&|L# zd<(E}>E-5p{2;x+oQEZ-Us2A*5|l4t=3qYc>lYj5Q!boav2bb8+=3sZh4CsZL8r=7 zC6)lxyslM89IeImyMG?V21|9>5`5={vL1Ob8oL4Y7Y5FiK;1PB5I0fGQQfFPho0H6Oqfr|nx z5Rt<7|7li(7yZw`|L6n(`6CDr1PB5I0fGQQfFM8+AP5iy2m%BFf&f9_e+Pj+N~g)L zIaC9;W5LY==~$SJ$0vegnba^>(}r$SYN!dOC&u8RraKXWYyaSG5aFy0m*G13WHdIM zNkJq&*@NyKO2U02htd20N&S~Jw*RrcYD?R~wiR&F{|nX+TlZTxT3)g|Yx$(*Zp+1R zcHdR`&B{9~uc;iV+-3f$`5We|%md~obEWAUrmIYL(=wCE_!FbnaHFAF{}26Z`Y+kO zYU{UESzoq(%6gOa0_#%Cb(Tcc^;JyebCnlXcA1|wA2fHESD5~6de(H%_($VQa4tV< zSgZf8ZQ6Fa^)J>*>kg~YvZv~Bm8J3%l}_^`X3q3e(<3I%_>AFIL((wU_EB4-)o=NO zrKf6NMz-oT<6$D|}xf&f8)AV3g!M+nT-tuZQ3%TbpB z#Z*Memhiw~eO0W(^K@${Wh|P4llLk?<0a7qbu=Btt4Ufap(fE(tVH-oiEvIGt%73J zBpr30nxv)ns!22j=ekvyfur0i3Wrlo9Z5=~W=NHUd3f`gyxLai%_MyaD|{-);9yjjBYrxKq3SHknVlH@i2 zQxfghCDDGNj;7W8OiiLSKP-{-y%I^Ulu*8_7F3~mSxwSuzM&>*HUFU|(VDN8Xz-Pi z^uAa^dA=mpXG?gVE}_hnCV#X<(5FkHJ*JMP(>$UkX*Cb4Nwns{65$^y5&j`{vng9cl`FhFZ!twUn-sI34OZr>Wz#t2tWL93C}?Q_ay-lCE7H zr%oLQbpS;LK?_$f6jSKcYAGw!QkJL*i_}6Y7N{w@Ickd5s;1CpbOLJ87s4|24 z8a;l@E?I4;Zf&Kq+tX|)&T;ZqgkUrikE3tA!40J0WHTWjZM8R|+HdcW>$L@7~ebJ;3DI1wg;P z0cUTNn-DWD=S?IlErY{FGJKv$w3b|kL~=CFvvL5`!(Nf9DD@0BH>6c>u6HjzmYoYa zDj*XoC+9E0hMwAA3>ADKMc%JuE)R`R3W-87DYvRZP>e-BiF_d`4i}4MaS0LShEp7T zv@#N8)68Jc_U?hfj_o`1g^20u-qJDDJIHhn^@D*1gLxJ)^3aZ+vxd4E)L=*@w4q=@ zPz9iDTCA_`TrpcIlp+d2r|eslZLKy`uUJ7%c4HW2y8LS>g0My=*AyTuUq{g1v9hHo z%$E-c^YJ(rMtjP{Xo^Bw2ttK4kCwSUut;Bh*2dW~n}Dx*!er2I%ZcwlSEDUNOLo9r72|nlupHPI-jz02L+{DN{C3TQd zlpUD~w{J|}4ya=@|m=<04j-+Y7ZjKO^ZpA141ht(>sZAjaOyhdU*bI#RQ zcdwewMEOL6uDo}ibIyrHapt4Uo%Gra)vH!fM_RFI@&S3zoFcR2$;YUi3Y_1fNpMvX zzqcoPkBPg;G8^jHta59Xm)5`_sOyo6-AN&n;+XUZw393hoS+t`nGsfC@YfpoB$u}b zb0C%;0iNO5IG4l%%=LDwzPe-CY}S!f3pyo_ZLh^py=)nkwPBPcs`O(mLRcam1K*;Y z;TCyQmA-nwKASR9gBq0k_k7Eor&uPJR~oAAc4}%A>!*&Pey%FgSRE>|+FJFo1dmu^OG|0D%ede7xLHLeV!DcYWgEq1&jhKF2*9zJ-=54`@)){N;(J zNxQ*N?RHZ~D2#HMcx6b&BCN|WNN_7cWW*J1R3Y@;iFrXksPYYr2zz$D)=*trOHEc{ zyx8#mOf1C(52Rp_Ui6?V!l)=nLI<_+@}FXus<69Ql4KtAi>4;fUbE?pAomLS&K1`| znYrFgA8T-#h`~4e(5M5(Ld5hU6josBAR`U3s`W)F)>{mFHPzJX8rzp_H^9F8 zY51Psi&alnP3ik9w;30kZ!;XKc%nk5i)x?Kt~I?5yXmi_Ua$PQc5PuEPJI7T2uwN} zakq42KCUA9DUlF_@m{8|R3kmFE~+kS?tHg|XV&FbBXDVZN3*BGcw3fVJZVewW3h0# z>L54S#q8rSTj5i9jwe=94!&EDj>%vVB1!JmG09w?UB1Cky?r~C6^Gh+5DLph0>`Gp zBk)B~G$=h@cwG^sc!f)~zEdQwwr;d&a>9(O7n_)RLv>#tm2E1vXo-68B^DueVZp?+ zG1Q)@f|9`5m!gCV#dWCcvN}=4b;nT=ebN^eagGTgVpxBoDoO%pS266U&oX zvU`rBUHL^z$yyM&?nJc$-gmUTxOBatx~Jy^EDrOr*|9_ukF_VNGGd+`Ma7!qBz#U4 zuZ4-TpF;9-ttzGbi>!s6*ig4H)-r!xv#NU2CMvt4s9forq($kK%!vnY62T`dcE zErjyDZz{|viOv}XvP4n|>%%#DM1V+z}uI{rH%WGw$qZNfRBI;m_ ztXj)vc5j14*P``pre`2OX3aJ=KurX#_s^!aVnwwy#TCa>S`qu0IxF~~cfcwuNJSdg zZZuSPgT~x!8s}$zrTWS*XJ!RCANQEr=DB2D^8}@)Z|gNe<+YlF|FW+UU?92YULeyz*{f>mzvZ5`zpKV(%y=VS52rt`pCs&Q5e9mu{gf% zfe8ednt@E169lGHd{fDEgu{F$nXYLoTJJ$?R$)Fh#xnsXT2oU~68PJ@-g_mpnM>Hm zVR*pTvGokgGuydHjAc4AX@MC?XCg6vbxFLw_;dF#hcW_}3W|F1Fp`WV55sUO!=kq} zX_krdF(#af!E1CNBp?7O%r}KNuzEHloBpZgfI55$h~5sqOIGn-;~W(?j3a&d-3 zLb&H102;^xu_;F2U|Df2#qZ7j~^SDyo?-ikhB8cU3Utr%V~M}ZC>!G>A>I3rPEQ$i#tlFSlGNTkQ& zv5?4(HE&G7`^LsZCZ3Lsu^>ufMBr|hi6!i4FOrgT5T4~E!1iGLVfhhMGs8kE6s=T@ z4+>zEu`~cHLkdAC>v@RTkbrQl3kK23Z!lP2Z$<*)C20Uw!Lj7VVJ_W^X~2ad1DC|q zC_oT5&c*9w-ku#>`s&S5J_Xmlz>Xw^lr1u?u6A7=E5OTmcpE1`5m{FkM z3+ymF)z+Iq@dP^xWj-b3mB!^lok=Jfjg3uU(OUSag&)uv1VE8E7!%S#el#!$7terh zD4!#2G7>LV56Ig@>haPM6OdEG$v|=fmyC#wN+W<#3qUGULP!-5$m3IQhBimw%W5=` zhN7F0bt>VURU$G4muh4q5jn0>k-X^?;VK>Kd8h!NzO)vabf>xkAS<;oT~L|$31)zg zrVp_2Cbgr-Z03`w4IhJ@bHNk`i?l*oY}3(R4WW(M6OQu&7da0%HK7#jn-~GI)bQ9D zwB^BU-p7Y9EtHAHBX+QcJ%Upb`C`#FcoCZ($%GoAz$DX+%ETHI9NaDxL46FmU2P!yu^sfi{*7_mc9PNq*EcQm#(Iwd~zT3OCK z!yu-yRBRm7v%}oJjahr>5cCqT9-S5%L3j{elk9@shC$fR#~eOfNWLQyVNzTIS|MhH z7t*jo!i*;Q1IZwI5~Q>Mg*N6Q>49Mqqfm1g`xtX^QzImtr-w%pe1vInIMe}1JJ3o9 zvq{Fjtw^`7?w!4T=LEO)4Ge-_%xR}dahpoDfDRoe(CqOXi-`-5@Jx*&dRw8x2*c}o zQE8?8rBGNqu5eXsynd^?utvBj1C3V@T7Gx~hn5EG>P6H6*-R?Q9LnduW=o2L>!=hI zGzO^!tAx4QHpWr>rmQv|OT^N_1oV3&aIqC$m=b`^?LdDj-YD$Jg6#$*oCG9Uyh*{RoZ7R4MVS0s~(5pz6v@(=(^%; zs1Z6O=wF99w8}2X-Aac?>~#ukW05EnTsa)9Kh6q@UPkJ;(AE~{aWK+JwB?8k#**Va zz!n4nb&|h{8EHt6>v)2kP{sfs2|#8?2KFSTpzO*xB{AVJq=CxL>c^60s=i);1G-wnVv3%Ogzd0^BrHMW-MVR)L2DyRDto(0|Zd@ zP|!a^Dm)r@h)qXrQLA!ZaqCe##!levobgz46q=yg0{7tpXU$INMq-)7>@A?vTj0hm z(lMLBx7-Fw>6dE-!Q9tYfb$;9CE!v+wl{5mu)S{kwe4rNAKG5Ay=;5Q_9E;H_?+!C zwxhNuY@e__XuIEbkL`BbEw&qM*V?YIP1!ECO~9>zyltP2vt3}@W7}mr%hqe#YTIlJ z*nBp(t1~wtuhu_W->|-B{kio=)>p0HwtmCdAZ~3ex zXZf_{QOm=Yk67-r+-dosHm``oZP?@Akgj zdiC%B(Y|W)&cKW9ceE!z{b~OdU+A3K`on|Mk6w3o?gO{q*Z$n}!?{II{5|)=U-W^# zH!U-lZG0)Wxp~iY!=caQzB8|FCiBBj`Ct3v=lyl2)BW?D3ukl-pJ@BxO+WR2)A3uc^OZ<>k!pe}c_=CQ!4U@-UlpFeQabot}c zM@KH4{%Pjcw)I!Nnp^W9uja13{-aXrLT~+&XRp&kDzjpcKxz(TjWX|*4 zSN$LT;wN%n_?s7gcc!mt-*NqAGjz=@xgTh6n~Bxc2ky=s&Vl@ymBvSNug_bO zd+LrkGxy%%3_SJwfdA5Otec^49+=tG8JO|AulHZ~#_>U& z@Ba4mMZdj2x2ba`_q{Wg&HVYmr`kKuzb<#?a}P}e2L6VQd;ItQ{?&lz{?l^5I&JIB zP1*nOU-21ZIg`y0dl>z-Vj zdxC44sr$8K=J9Pz?xhzt`fqvP-~A8GyC^qj&t?A1Kb}AO#xuX027Ll+PQTG#(f3j= z+kMOQ{AVxlqkR8~F$HeB?3&!VMfds_d%o{Swy9a8%RTdxmAOZrdY}K`8$ZhZ^+Rv? zzc6QIuFmv~f5`X8+~&XL{LB7yWcr@){M>WX_L(;wpUVAwYwxe5Bc{zu`D;w`ToEIJ$;au<+%@pDsuOK^MD#k|ZZwq8^|6DtS&v2jmD8k(T%bzU?GYM&7WTocx}NhRJPi8fBNP2z4b5quNb>I zch#140p9u(sDle~_kHr}nFqJt;CFS!1J7o!LuEPl-OI*vE53g?cf*651O1ilxw!9J z({&fTmiwO@Kka|%;oEaBU4QNL;8nN#Gap&(H^2IW94ZT^w;2P;!yohmF6}${7jhdu z{0To`ANb%IfA^!h{G;5h{`c))JH7Ci3v$)3xY{3msA)!c&yW3@>QrEA+4@{7|119+ zmkqV|*PW63@xDv|Y@NI8^~ZB{o#*>6T)H>_I3IoB?u!EHI|RSs#m93;&m8qXZJRT5 z?XLgye>e6s|4Y|fX71SN%6)u?IqZf09U(wEO{eS*H zpZh@j|CXs+YU~f9GCldeCmwW!3Q?BTRyWeaOV9h{Lk;cGk4dIo&Ke- zeb4{j>1zO|m>vbj9?2pRDwEJbPz5sy9zQa-si)z<1id z_w?=ns=IG=PJ&Gr%^-|WnaDg}n_IuNGH_T&`BB|^8xC8}?8=!9-+OU-|5!`lw}#(C8@Xu)Y=88XFSpLDIq%*a zw6Uno&8@lR^g#7}3uZby-gESCH(U{@{>x|m^Z$CWfB*1guKza=`n&$~%ek*Q{*(iI zaA!;!^-N1mFS%RM}kGZ+2#$=&s_`E8)b^djH2{&W6%+syKX zH{~K1RR*Ap%-oqf>_>eUs-x9^>BvDJn_Hax`}7}%uk=57=V#hqo2i?DY1i&7j5Me# zVG2fl=3;OjItNbES$5Z_C~-tHw;d92plI1 z&dv+K*%1V%_k3{9I1ij{d%@Yf2b|N-1?RML!113APRnj^yt}}04}oJJ1ZU#_;~ukUEti( z3C;_f!TCc6IB%Q|&KEa<^PAJa`E>xCU;4rMK|46#YXj$%R&c)S1LxZ<;5^a{&L_R# zJm~@Fs2iNmy1;qP3C_a~a2{*|=cA3_JYWas!wulvw-KCsHh^;%S}M7t4xHO+!TI2N za7NdGa{#?bzjO^am)C%E)oO6AVZfPM1x|J)IG3yd=kRiH4lM&mK+CNAmw>}B1}9Ms zj(-t20dybz&IRD?oexfU9yk}w1?T)Z;Ow@6Gh_v4zyeNh6*y;9g0syG&K46mn~dNz z8^H1C!EvFfzC#C2qZXV78k~(3ifq!vHP-&BD=Po4|9-`ry7}7Ov<*ln{cnmf8LBDn z(q-F)2_X_Pp(Wi`yL4{JUO28|Px5Jd65e+-iigM1kKN7;j>H6boiPeatMXYVct@K* zewyTyI1)M&+E{#qSY{8RSDuA^O8<*TVB5{+o*e_-{e$S_NMAlbqJjf(*0FPt*}!b+ z@7taaYd3fG_wAHUX-61-`d&(id=K9b607 z>UKJvti##jYlWA7(PmF;voqZ6bhU)Dt#B-jIxEYHI2sU+Ey^MeZwBG0Krxa7@L~%J zx1vmoT+&B7;6N>YW5%XpoX}Wg_(Bwc>FDZWI{SKuw(kH*rH5qO&CYNO7(WzZ-JWLF z<6@n@P%|59i8{lrzE(JcKgH=$HN9+|sJkBN-mKJJDrR8hXfrs}3QW*g` zER*C8NM!`xXF^`bCXoE}h49 z0mn=t*$7PyY&aQ%4F>RL3>{#`$Kz1xL(;`^ndCSq^gx0$&f=L@FLzBh zQvUp+(pselDa+RG6OQZQIJU*p>}z#d_Y4dUNC%n~_fVAYLF5zC_#82`^v95xSKt`E z(*KFG-^YeYQCNcMV|L+hA1v7v_?^$JhssXnr3N@L$#2tRHy$vt^ z$*1g5h0A9_8e8=B!vXP~y&aw1;xI!h_UI0mdS+Kg?+{!iQ&%eqf3ow%$VR3CIiM$Dg>Cc2!Vpbx5|=+9op!2#f) zZAh}-vS1}GpO^eNORY{xky0pyS~tKRh9&s^3Y8hqOFC(YcC0wHvaZL>hd9PlC{r}d zE27WRdg2OE80!^9ad><_XdXFVGz@5Q9*4^vZgDytoX6vKdt04ZgH~Tn?Vb>O04>tk zt?cRZ5GdNmS=3PWWcg_Fx#)H?YKvVFhquKOaYM`OYz@265Gva2@`hX8EIYN8hIV?> zWj0Y28mZ!v=LWMj&+>rx7_FyRo!{!UHih~xzML(fDxNegdkp}pR_1zjOD5@9=(fvW zSM@Hq$^k=FbZ}hOy>Osf}<3-_(8S zfM`i%NT;Gq&1%a6#K-Mm@kSQh_sVA{L@O1nmOr2+1}GcVGA1e{t+tXP1e!mbWLeYy zvu}VXHC2(O@@)_8X1CAnbwyfSUN+(kJDVLX9@s$VaXCURSIE=scBA>fL35?XGF17P zSuoy7f0#NG9{>4&*-di{cIv$BncLOpi=?)oK(^zP>QJUsQ>dbGR)JkS*e;!LDzp^x zX>vt@m+N}ztO-?X7+^vZ8jXhBoEK(G5nl*KnO>jQ>0o^>&gY%nZ8O+Sokyxmav;`$ zf<}tg^q4wJ%1YOg&91Px<^SznPWHclyuRHWakqHAktj?|Tp`ZK`P>d?)Dvlmh5>8V z<7>Wp+-g`toq2O`JDzfeq^Sy=MTH(>zdaVQ!vR7CsLC#?a9~y0L!kqQ#jr|aD?SNR z#Wdq%LK85Fg{^8F6N(MnVGD8$CW#P@LtD6EvI-}jLumS!gc%~tOPf8w2Xjr4L0s90 zuw!s%oH##{4;jGSC$QNS(tzWc2k;RCwh7i@VBw(E*JvKv*@f=DROmd=J&1(L$_8+e zkVYS3M*^b}*bE5U%Ia#JF1N?q466|xn>*o7Iv5ZMnGgyY;SR#>bLf%=*tTtVGO!m8 zuB`O?8O9-QWn(USt3q4~A=1Xaw=Tr35aN5gns^FAS?TiQDL)-iFywnM3~x!*RhPG??-=WPS)bQOfWZD5`5f{?cj ztkaVh;(hzTdJ96{KCsPsARfQTAH09cZ)mBHTztxE-x1ehuyB`seTJI{C$_rml}R)`9@xNgk~SsL}4+s z@SZ^GPsIc3#j7{@{x?6!gALX4Wv9ow5FpQW%;W0q@;c86rmZ}mf2`CMd~*5?Q*x)cw?0rm9|Qde9i zOq|&lyxHkuy)BMti_-;-7V8UhEnWxfVq3!Q z<_PO@L@%u~8$hS5|F2>1|I4uN|8ubC{}Zs^|905xe+BHf-v)c_ zJ+RN7fj#zBu)qFKu($rlu&@5>me0ff{pVrt{wHDI{vEJq|4P`epMkyltYwF#%hG0X zSk_yXTjp7eRe!Jgebp~v|NWz|_x?`UcYl@TJ(h7x+!6x!1poc>7bZxG1Ob8oLEv4C zz)ee!ya)a$o#rF3$IbXhodXVzQo8JET8g7|ljmzGo}yRKG{aE(?D^-?^cseuchYnO zLbID_nmY(wL7I*wD0)6k^8%$?xrfri$`WPH2DRsCwNwpovRVp4CR=H`20ezfR6V7e zveI;26vz;9V*toznuc4ibyE-tbeO87X*LApi_jz8Pt#$RqR&Gb8TqUhWFaLcS6~8H zkv&b+CfiBV(HKNqM$<_i7%D(5P1+ehSD1+Jv5z0 zLP3*E0&<+F)>31jiiXnGn9aZ+&{7P9dm$t6IO##z(`UmFA4!YQbbAhxQre9HlzJtlg*gX=Kr(iF2(qE0=@5vW z0!Sbo-Q+>g4>+f)C~YG$%%lqfMksnU&|?(s2ep$FeIZTngHq5WD!&0TmqNOAQ(8E< z4e6Xm(|ZA=>^w@_9&Q8A97-EtQsAiqIN^8lY)ZSQ2C>kTc5et72U!p0bhQbjB338^ zDFk5?r9F??2p$uqg_|!Zx)-2ol%l(_;>K)mb|tnly@k@U3_@@@E~)1tJL)MMbZG-`POj)!Pst`~dIjAVv z(?v$mE*7TfK`jNDTnptK%C|9^o#)h2br8QlyAs#0ETGWyus+5*9gDJO79n=^oPP)mxVktZWK+b@iEo(0VkP%=V0AL&#h9m%?L?qMjyh=-rQ}iJ~ z1S(hpCpy`LRh}HzQhUL^>rGlJ0h~}01oXUWDYBC;3#tl~ehxzOAO~r6p*+LIL=dzY zatDcR-3@RcSQb)RxL6VbswwSA&3WK4K#2!j+qKj_if$BbyapgbDh`UZJxpn1VK6Uf z97k=55m(S{ATt5wkcN7d1bnj~qK=|nS_9fACX z0D^IN)JwIP(bCU-44ya8^f+W248}8IO20STiyCNS1e#zmcL%f-$~t7Z4iuP#Org9% zEv!ea!ycM$K!8Fo66Pqq6*Z!xlzE?6D~3_MU4(Nf;G>Vo%k^z)))bbf9?HGfq77gg6 zDVW1Nox>d=_-3v^KGnv=PhubJx~4vjeX#YK z`V{uT{%h(9?1N3%)Z^F(JF%(9un)FlQ;%XF?8&A+hJ9A+UXA&SvM!%|NcPozMD`7S zNcLTEx9q$6cG>sd56Hex+$8&+zFzjtTqFAmd27PyA`EnRFo3p|bJ&M+uEjo-a~k_l z&ME9eIoDtx+Hd|3>_eN*|BiiV=lS2T4{bmHEB2v1=x<^l+KB!a>_fZJ|BQWTOZw~B zXR*GjsrVd-|0q@s-ZWG9V;|b9{w3@~8`h)P2fNm(+prI|u2Z*SAM9VJZoxj-#7?~* z`(P(Kbrbf%c6RDU?1Me+)aBTx1>afNhjzEOpsny9!zBXkeZL#~&<6OMu@9Iv*I*xF zp8O)h6z!IGVISHuUx$4t?n>-KaTj18iYwX|;!>aZ3W|$j_^}VgaA6;cQHOmf#!Bo% zsV%@hu$CkRZPouRMh$`UbL>OlJdb@SA3wo9w6Fii*oR{L5c`nM|Al=>gKuFU(%?U_ z4{7ip*oQRuI`$zAp1?lJY>8+#RXwb+{zNhNf8Lg}J!<<1oU!kO^YspEt#yTUzSV5i zSpH!7wdIGFmn|<^K4&=!r}tm7e$hH(eN>wHUtu{1=KP(OR!fs*t!0VDYSC8xx#~An zKd$xujWt;rujfFM8+AP5iy z2m%BFf&f8)An<<$0ke);04p_zxP(XYW|DO-$qQGHIwY?kG&D-y6kJ7Y(oypuTB>b> zMC9SVN{Ps`>m?%G?YUO+#?x$#2*{URY~I?v-o2Ye~jXfLHyCvMjbVWs&I^pQ7S~TPW;i*CY@;k z<$&!n9?=JvR=XshebgcP;LL2J=u7dVfCGvFo2NI3K7K3#Fd$lTJh0xVGtHwMiHWr$ zDIVi$L?2xD&4_^`jVnbDcL4H_BErqfOGRHKCM*_xVJ^AI`YVl-n&)6ryzW;TYer+B z=81aGryglwxYNAfkcS|v2=;;|~p3->viB`+LHGRoc> zK`(om8WA{}uF#pPC^YGvp%yrzX|t_fvmShKZrKRlW#Dbh=)pG^d`wCQJ_EIY#&T>9 zxL_0PfMQ=l&3C{J>u7}|4PHJOLzDFwcw=cE&C$;XFI=dMrsf0S4Te%^M!pTawFxv2 zKMf#B$Iz;Y2Ye|zlC%MQ2_6Yzzz2(`NYFy?hEiCN8NALmy$CHk%r6jq=b7v0iMDV> z=ZGHrX;v|;uAZq9eKqDaX3+<`kd2bBhLxl-fDl?JSYW#iTx#G1@Bc&0lqGi z-GvYG;@Iq13>deh;HF)fa~C?dy^-mM4}qppSPWvqHTxZKS#1PPBPQWeeI&4xgA2YV zFe6lYVC=}iaXWNl>vIo0cOTybk8nl$h2j&|Ad?KkR|Mc(r=rnHZH6=M8Mvbz1&)c<7H?NZ1h^A{=B+XmQ5A$ACX6BXz~ z1Z~ol-srF+zAH|QfxaFAo9GUv+nC0t&2W^#4y6nqMuP8s!?#`GTmxM94)>Vn{WuUs zLSJo2;k#xPDI#4k2LcIgMulsP+n6TMl3_3%O3XM&gbT<;jF3KJhyp7_volTOY^n+F zmVnR_-5yYGbqN0Fe z7PFYMqR4c$Ip-|qoO8~))r0!S_ujs<@9dtl$3ILnckbNjTe+*g+vV2H(J5{aHI|@F zuN7Up#P;k(H$`O$H~q%p9@X^!(p&u|2!C9R+8gvD>1 z?c7fenm+#VV{VT0Y)C!7dMyINTZJ~^KjmXU6m10f^NsfBA9edi#D)KShZ^V7gck{~=p+rI`Nx2Wr(zbeGszVoLYAKR@%TMH^kXD^AArkBU{B zYQ)x|t+gXt^pA__7Qwr8@B6D$h8sQ1=pWQVKTo|}stYUm)YkO$@pbpm&wvz&>`H8S z{`U6yEd0x?f6ep941T@WUrPV3Z$#g4{dT!pN1qxVP5tx-yG6&*?($9^)qFghehSN< z)iD33=pw(AF)2`EVlct_mmY-EmIfr{#A^Ko|Dh&7KmKp%ir&!vpDN4G-__6R9~z@S z`mbVDzhQ9WApd%y;jLN(gakKf64We^|Juu6N&2r7)H7zG^kg`vov`)S`-e)91Z%6) zOTJ3{n-={?YC<;2v0E=k7Z*qM7b$AKVaY!*gv>wL9Y;6n+d?+q(JjjHk6+QxBr>8) z)WAsnh9Ex`Ml~Ivz2BYcH}$7*(5YKoOq3ekdZ<_R#1+XM?Z%>4K~iKj>yG)x!%_dF z7MXi8y`EmaKX>$3d%@5)=UPXvpGWi#T6HVP@9pwm2%J+wR}&M1u|fI5uAlY~;mJQz z%dJaPG}*y_C9Tp8E$zzV`!{Q&|LPA>BRfLIg(OqIC(h7_{AvCh7ye-$^_R(a7w+nj z`TtF#=Kp%Ps9uVuH20oP`JE>IOhIptpXB;QK+j)?eo@d{|BL^*ChAZ56Ol;_|E|^E zPDz!FO$^4j`e~T--}ymi{V{DV{h@zRg?x(_)GVl_zh8K0aBxed5us|EBrPpf`u{Yw z|2!?EUW*oOfPpxOZ>i<24`O7!;zx!`$_%A{jLQOpaLj%Y? zlI&@J1$sX?`0LX@MDFKI{(gqPpVsj&PW|ulRm0ai-}mQB*DuxkX#?FT!v4bx>M#Ef zY5V!(Kg3PNSk&g?SHv+O>JMY`XTAL=CyEn1G1={B`=+?Av>Z_3`=1(LsFpZs&uR^G85Jpo3n?LupZZe1t@p)M!1T*!|`7vse0Yr{ff`m2_=jXFCS0KOvBm3=p|zyy^M{fm!ZAsr9pRk@u6K94UV>= zzlt`azm7Gem-}_;<(!sY{HxOodeFkk%?G=vJqDX8$VSsb>iPc!^H>9` zk5;d&9$Vd^egDr}ov=D+wTtloo2}MZEw!3Y`~6S0nqZY+HJtYP?`zeAcKUB;6>8Pk z%Aa=muW99ORmrLx?eK4HWp1Uh{6@R`zp#90dCT%L?d*Tda=+yc%WZ@ZSZ$d_PY2Af zOt&0w8BhE9$67{NMp$;Dz5GKggDm|l89iO#X6a(-U};Nx_?uZ8TYRy2OV1eGx42<( z(c(1i-M`mDT5PpgPtOi4vdE;T2U0DPEk;`mu^3>{+oGFAm_;kX9t2v{CG>%pMHRvy zl(8sjVP#Rs!qEH^J$LZb{GR!B^E~rY=7$N1faY7w*O@OjUuZttJi~mVd7}AnBEs)~ zepBE#1%6ZDHwAuE;5P++Q{XoRepBE#1^%Zgpoup!HYk$HH1UQsQafOJ48WjBe09xe z8j>n%M$wQ^S2I$5SXVQGhGav{aP_W(W|;b{vt}p_<0Cag)H~1&rXk5pGl+(GZ%rHx z6WlceX&4)-iKSs&6-^8ciJde9Xh<$%5^Zc?IarmuQeLldQjDw;m( zprxj_8jLi()DW(TRD+|YCk-hDH9crZsIG~iVQhCzcN!9_Xu7F)jWu0qh;O3lqJ{`f zXBrZkYr<(rYNP3-hC-T-G>jdh38Nv=Thl=eZ8hy_NH){7Q-iBXTbgDKO&fZX)LGM7 z4P7;@XozpAX{p|I(6ms4k0z9c#7IqZ^{#;?goXq|O)w2(BQ?#`V4-PBLws#b6B?36 zX&TdzY@unSJ}aULq9L(^rXdaShMGY2St(5e8j|X10%%AG)A*}*PMZ2OBpPb`)L@~h zM+331E)DV3HFanp?$xG&xX0CJbu~Z(agV8Y9W+|?S!aze4a7Yk^$s+(Xdv#@q=C3s zg9hSWbsC6!-ZT*Ryl5cqdD1}K^U!n8U7Zo6p}p)C_uSOG8k(wVsG_N&4q9p|tHDU) zs)le)B{eu|D$+pQbD@E_=S%}}uL2Fkz4Gc^V~rCH#JzHAh|oCFFut_Lfd*n?SsI9m zWz2M5TO*7G|W~hE{J3=)d3p{HDNf3jC(PZwmaTz;6otroe9s z{HDNf3jC(PZwmaTz;6ote?)=8#-$B^AY#;02?lnyNWD-6-+Ng^-CO}1dp==7qaL!y zw#IUG{08dpnTxx-k3k+^h-+sqK+BMuf_gBE&}UU}74$`;Ixa|kH(_$sF4ADhmR#!h zj5v86(7F0P$4jbx#kIE+aP~2C*{#+=^bRhH)EgQH#~6zYDS@xtD@p3d%THt+ zh6_fiU=+56QO{8J=0QdLy55FYtyhj0d|V%>*Du^F&;uV&AIKd>Jkwvl>~U*ZV)zX> z_O2b)+g(=mUlppqvBi$*Kz*InF;0D)sRybVpE4ke^^F+_S*<-`SG&tlWXN>Y9~8a( zpJ=Cv{`!8x)pjP}>cC>KR=YtI+_)4}zh~+r4N2*@@b*PlY4EA5JQdlFda~}u+%bl* z@WVv3zW!Y2+rJM|uTpHk>K)F|o&wc-n);_|X~!k_M!YzHWea(MX>Vsv{gK&%I~$qt$pMmjaKl=I3@!CD#+G}vIPt;@ z?dF}PTIxHC)IS*fN;N^x%?pL`=38ujok`TIH3RO&+2PTMG}Y@CsV_Ae*u27N9W3}~ z>xyh7?J;9F!%O6_?a+H}1YC2Q1ga;u|E#sX=P%_!&G6dXx{o(LJ7vUEee3(KNXx)V zE+?49;$+NWwS}UqCh8WWzNc+M!QyISX+@C^;)XKO!Tsvq?CNE>F8JQlsZjQI7-J;X|f zYe2nHMQC9G`yV`{{>Qt)=IW;0&(_Ovko`G)v0?wV=a2%_9~r3sG;h)M0s2LM#N%bt zbgH*3^)BWM4min($~_>btUI3<5yHzpUMx(!9J}O-K&QfvMs=e`Y0>8XVhaG-zCk$y4vwL zVrwCJy-_CkTA9Ms7aFKLvV-d7EwA@n1&2Q+Q;+I->}GsQ&pJHM6$J*5!~QQ@DH(t^F9-4dRR;1hH@=EfjSquM;6yyMCJnoOb%ko59H|d> z1v$IO4WvG{x>JoC!OS+DxxH6;960YaQa@{{F*o3EztBcF(Ixr3vnG7$;itHC?KNR{ zGDPk)TBmydg2@MGx#vVdh%|@;>if*8uPx?nxDT`DmPhK*E1f?UgA9k!>{+unsN^l{ zyRoFtB=zBi#YLa72K}fduXcl)FFR)a5G_A$#=NO*Wpt?&ZKDa6s>d|aNIkD@NVYe@ z9qWczH)klTW4ZuWS2kv?>(A8)V6s=iOyn55|`t71V=Tu)<-Gaqtva zrHmFtBiNINSo(vBEYhKX>Sqn}ESIR>(46d$j`WSG9>Hfjyl3v!cc8PkCsIFjpb`AH zpzi2`s?4WGQ)!j*9b?T`AoYsZ_wLRyT!`+?kJDW2;oFTdvO#k<-hH+muj#xHNCtD= zZ9K5k_a4y9Vu;dj)r(!pH+*io52?4g=v=WhPV4R`Z#u3bp1q^q<(WvmgR#S`NhA~F z@jltdtn}(M`)$iES`!u-CI1$1>@z_vz*zpL?HU0*R8YJPp zjFq@=3hMb`YjaBYe6EH>PwKtgK*kRmgLExy(KV7asnrXg52~d4KMN(x-|BY5Sl3$W zbDfA?fCc?tvQk5ri0GQL*}bC&M0S-as2w&L>gIgZHP5z?3sOzko+clG`~m5nt)O1$ z!t0JH$;fvxS{i`Ol4(kQCD~n)lVnEzhLav*y`@&5etSx-0o#o`s|vFA(Pqx`CUOaLiL&EJy!RS%x7&`KGM?UNMNxX*b3ooPHDs$DZoCVvK0fU|Xuz&nGEEQH93O_8sZyIL` z>eY=4{`BJf`=02scLck>{epm!nc=<S)?_}{^mtmyATUOBd7AU>XZs>^1 z6Q7E#?}=D$*GAQk9y8N-iBXem$ewLvbxw?dz!jHtx$`DN+`i@LFnc6RuF?XBwcHBi zKly`5AGtkfop0pryP{omo{BHv&>Blleg{83j)5yvGQoQH4Y=dc1}Kh$l3PZ>rkE+p zHt5>qp}hEuQDe$R?w4i!n&H zj7`+tWHq<;!LWNtDi*?iIXS+jO-o9W72r1?v8J{0`H8~iq`)tnje7ap2Ty3EvT_gMN z#>rQ}+o7@S*2Xw&)47UN{2rg`tn>wXgE6T1aAt7}3@SU0O-b7f^ttLkkER|4Imszk zzCXpaq|CCnmToa-`u_108}N+9se_7hHG#S@FL&A_o}AG`^@ zqa0;??iuCB1Rc*MJ%>Yw=7HyCM^1h1@!rGM@Zwl2n0GcwZ>LneldE&UDqlJRJH^5C zX>IboGazK;10dcZ@lC7j55@9uzkD2TbG9eD+^Z)io6nQhyu{SlE}}v8`6?EXGY9t1 z?X!0_d${;K+iZLlj5LMhu67;RjSq47tw4Z`IBYCwtpKe`KLE$xCVY-hah`ea8EkmH z9*az`K=RRB#o73+<130W3kb54Kz>G?xv%9{kK_XJR4(t)i4D4F$lH~w0t2FR&}L_O zJ}v$f9NU}>Yl@A)WXrv{BCVJt`4$_KJ_E%UPUD7CK@U*t8#=B{ zah;)Pr($Cs)@=}~H5d6Sp4iHtZ923a^Fqez$Zl%O)p!O(_^RqjZlL;-vMcO7CL`>aL{+N$BC! zegmDfPX9phhxPk$sDEr&zc6~#_P+__59{~8hve5^`X`h>OpoOc`vK+;)1&$S2Iv0? z@OT zjh>AA`Ah*lupAi?6~$Y|#6`HOss3Y{VNS#rdhC|E;prcBaEw!rp6Z|2b#&`a({^>L zs!pMHJH)pZs{5E{SeX9vYSBZTMymDy&GP49+0nhwc~6w?`N`RsomYfE8;}8KoQhyW z>&0S_e}?vXlN`~ku?1gj?aQ48TnFENi&^y+O?9)K{A9NPOFUFO5zlMOW6On>a+qB< zW>inbvtp0VWXVY0FnbO=@jZ^89eP?A-+ji?-HCssBWBS8C#39C*wt|xG;d&rJLcXO)|(~@mj^@fQSm19d%4h?72$B6J zUg6p=kI$m*veX# z9QznzgQknXjd|?wWJkDn-AP_QnxUJ}xhk8_XTrLL&RAbt8?3BbVvo-kaDt&THt*&r z9!OL6rp|LQqgPEny~jZGd6fhsOL*dh&TDY_-tVH=(Qs(lX&x+|nF(dLwSZukO)x8P zo_NsWGh1cYPjpR^Kr|F>ZC1jpE(65*5ydgE|9$+htB9=ln8A!*TXiKG?|@RZ-?N7A zCSpgkF1}x~8|FUrU5>3}1!-LIhN2JOaV-y;FP)+r((X3KmKy?Y3-)UL2R;&sg;(SB zCXW2%5)UM~!K!-~0MQ+M4&N7*oF9laySEFHKd?DGAErOGm0x4p@Lk_LxcBt!B)?8D z`p7U`y|j{auG|MUW-f*jrp;h!$a1Y5H$(9a9EWDHy>pf^l1Jjf9y|?qi1u$;=lIXM z5!y*maAiDX+IHpFV2>(%yo&+1yX7hC>?yD2qhx?vlrF`O znAgVho4;XBuhDq1#zNeAa}InOe2L9nR8A^hOfXyu-R>oe85Q?IkI!vjc;0Tb+m{Lc zULW!Fp7Egc_sP^Md{Jm*Zl#_Vf%Hz>(d;IAwmqq6A?Y*dQfMJ=aL~ZE;3~WgBteUL zM=|qu2HaW@162zYm7OfgWA+ROC|Q3P-gvk|*tjkeDXclt{p$wZHRB{#*z1Y`9!$L^ zO0CfF)FE{Q$s@be|0vQNG3)FEl9e;?&R{3n^_WI7Wg^UN+rag#x5BQ%5)3}DiYb22 zs2BjmYrbbkJe;f5MJoM>9G1f#HygrA90-F~6P9An1sUjFsvIQt-UOw_JP;;PQ(4sd z8{%k#N4h#rtHEO08yr`+CFlPBXq2`F+Ya*J(Vht~^X?g-YoXJCaJhLyEWRnELB+Ga zRldQ@CAY9il^Xawtr9G6cncm6nw}e3dIPqbx?jzo4O%iAcJ4J{o3{BdqAR-*u^%2! zehA-6X27;}UQp<^n{X>%5&gC=gkmAPvBT#1zDoDiZ`$;+;Vl=YVbkTIa>nZAShb;% z?(4HRNV>&7j9wr{TSUPIhq2K62!K1u9l4%lOG97Mfr4(hsA z)@O0$*pu+tXEhWlIYaCjIT=Y;NQX<~s`}w@V|flJ{`HBgj+0}7+uYB_#vw)cx11C> za`>o{cU1O-_^E67t}t%AYRx+obHRC+oAUL;4~spmVnK#~#PK*llrLc?AG8>brN0NF z?e2?EtJz`t-74sFxF^|RE%}0ec;(deT=VmHk?bz^i{6M4j^6mBxt2}cP+8d%;%8?F z7+e*;wl#+6$)+;*!8I7*D#3nu1gvr`?0b80HcX29D%O2p!_I4$;4o1Yn%_6##7iVz zDccR-a?GR=C2L97uyyOUWc%mh$z(g;%yce$bhj&9$R^0o z!|dgI?Gq$_hvhbh0ND^R@A5H5_D&Ej`PXLy#YulxLB5#nE**#i_ichhji0hTS8QNt z9V^~BemM60HXG)*>4TjoC9r5uBW1TCwA^~kOqvKaw#*Qu_e%eH!TmP$|4f+fZYB!O z|D**oTdw4u{I?)m$*hY`C3`mOxfz=iFsK5=@%q@7s_@_-r@!&&5Q7>y$^{e=jLMVoi|yVPsKQW zk1eo8QJ8O1x`!J_O@i)SE8xY!Q{epURakq}3tg##7P8|DbL{o5C6aB{k)K3e_b+H> zT!77*kf!Df7q;$%fc7P|9S=SiljhA)atd`c)8Tv>3sAmy%FlFrn==^wsmf{gUITmr>*-*NlqS9@FKPTM~ ztMAW-)SAttvdfuvBZXMGUhEHf0pu@q%TiiUyyMSlj@)*4JKfvcE0N+csjf+L#Jh9) z!>hpRytAegkGs`Scn_(BBxjQ31C)=e9hgk=UrG|sVQiH|B;99WX?t{J8?dx&t^5Q8 zJ=@QQ&p0KHnhYg-SPLz13J#4QqoX)X+$nn+ilo0}b@nWQ9oO38s430xS+R-OYPh!? zYkUvLrm~jbOK_Lt&b&`aH%W1Z@GN;fhhzl2GQKbsi`0qt0%hNbu43ib5V-WZn#^=I z!Nuqr+cqj`Bb`n(~82cCcj_EUt{7c(gb3*l#zanVpeqRU7A&Lj%08BJYj8xLXvzgJa;e0je9l6pl1#E-Ezgn_l)&u z-u|GNa3_r!v@}4nH*9-XA=LE>Euvf-#cff2pEH^_5N}kz6CiactxV zJFfgG$uh+iwP9cdEiSdJ$xj(=V|BltP&|X!6?5^_sB@$bU&XW)cL91Wz%83=z`m0H zko>Ty3~LgK>O6`qQ5zIUde#*S+<1%&=FSI_F;0F#$v$^oGYKoa*p9}%PJv%|DM2w9 z_N}SW+r7PQx3KG3aiHQhWp}Qu971-jE;j1jo#CS1kX_4Gl8?Z;UxP*e$R|)E^&^{q z%?cN1d&-BcB_p4sbWNxHS^Hx#m~n0_UbIaSyDzrl{fe$4xq9wfa_xAn;ee8yY`fe$ z$Ax!VmkGJcp2CJLgV^1+-x&E>lCcd)G=U-Qx{0u~`bcrNbPThUI}@z=Xp1M{dV3I0 zI^?V3Xo>*?V5#L+tTD?#F8J&W6eoxp@5kv3i&^oP7UR)moe4BvKa;H)bBuJAih+UI zDz@^a_(L3+US1yGcZg(h05o~H2OC>DK;Xu<;Cjf3Z+PER6rStL>-ib;HklLQmZ_nn z`5|3j=H(h8*)*j;pkgV5mSgn1Q}&tc98mnpBKRR(+^RBH@h{n8{OWN}kc|=K!+F}9 zFivX?bYEP6ldm9|??HZTD1OX6qP0$WMv1YrY~0?hEbqk=EYSTpJdhKBd=_r+%4E(<*o=3R?X9}QfWupGU7{7yEuQtt?gsBi zbX4&u{5KK-f8AIitlzJl71Uz&FFPb?^VhjQ_UZV!s{n1TkbnF?-CZI7l)r7Skbm&c z`zz!hadiB(g~DGqSop`s|J-5WAE*3zi-r6T^Y>Wzd7>Mwuz&5cKiK^| zO_~Ay_xqpU6!=Yn-xT;wf&XU|$nI%qZs1)g-pccadFgSzyr_4!o2Q4HM@>ghZ*7fQ zS`V*iwUbe-+HaHgHlxIKm$;~bzs87&9-cL7)bw%luI|yrt-4qD8g4!{YI(Z()}TEy zyLI*LTFbNBj}-9F3~+e3$BCm4sJ=f<)m5NOH*@BEB@ya8NyqVqT{&ToxHfwo9$fSg za&-%kZ~|1e4>em_()tqa9GOGv8IXsPxNXKP0? zs!8*G>y9AR2$^VIgcJ6R>LJCY=Sg=Nb+Z!AFxafG@4tDlTt}D=p^F?Q?#0c~QvDJY z1}k;)3--BpOL=`!L-aSN6iLTDkZPZ;udfmg2UZ^3fP@p{s!o1MOk&L@Clg*}CQ|KL z5^jtyj2nrBACQD!!I#BKp~8bv{gdau;V|~BvoxB~Le{CzCE=_To(E!|+e)4yp=anE zc{IY3tGXA>P43A986RN7SKi&B$E}qbS{}=Vj^t|%iphz(F7lFl5adnGQPx)dsIK$5ndbAyvKk%;739bILb;9gXl35chqbj%wtB z=EKX^oeG-ZGZ-H*Q&{ir4C=l=IGXazg%^d5 zNyDL_b62J?1|gx0@H6e9^QeYAe(qjIpG$=eAes}FuN2je>*z5=i{Es@)-D!|YL==V zD(){c7JE*N6NCqlBP?oi!eGIS{l)py;;ofzF{-t*FxNc7D$c-^2F|>{4xGn#bwR54 zD~yHiTu`dcdUPtD>oHehilk}N8FUX*;ap-BX}7r^?kU!RU)^oOdQS3zo;4=QT~mib z?i&dgkG;d?J+9?Y-J2{Q20|Sf!T5;6LI@0qDx?5KGMVxlx|V|SGIQ>%L#{t_7g(*_r~L)-StU~?3FLo zens`Kec*1}!m{%9<6=N`E&ih58?upg2y5!6yL!Zza1V=-Y^<`mSbk<*ZnLDgtY2@8 z?rX+)Zu4muSbrG>19~PXJPr7tK7z+QKIm)Ty`H7Onzv6_wX0J&>4OM!ZOciY6b6u& z7~UD9YnFmr)ssm7n!@_IMhd&Y$Omx3ufoTE@q{TY#+5D*=7JH9lYc9)4_0?y1PZ5c zll#Kgqb^cc?F!k<(wyw9nwRhxn!rgH`MN0`C1H7CMCE<(;?W&U>6Q(IEmZg~G)P{i zRd~2^*Xl}=BcbF&)yB(x4(6o8pzu(Hxg+e2Emzn+!X0A4LT42ILi)9Mgn5Gwk!}J9Yw|^+;J~`FxfiNs==jt&Em!+k7h>||3 z(C$m7v@bCYyN@W$Nk-&+90|&IDIK->R1e9=60YEzAWSQ)p1*@Vm6hc2vX+AQO>)0X z;e+U$;`~4(fcUxoq+_v?u#VjMV+Ob^e@ZrcJ<{KdY$78*_?Dd2pX9JCVITaF>=kT1 z5Ratugs*#uubR{X!sd{_nW^pr2vZA_gQ69VSmC+2!KYg|zm7SO50~}Ek5Skr?Xk@T z6t+toz1RrJZ-`Fc?-AA@Sn*72vb`W1e_)TWkE*A1Tk#F!M{m(4ydEIQw+n?=BfJ9= zzX^A2sW4E`^@g4Fp0FN14z8*2rYy5nc^Mcn4o?-WieD-k@*%p zqwa)vE`t8gFENF~Bs{O0lO*h?&U)!7!aAE1wrrXte1*dADV!zS1x+MjU$F7Ad3sFE zn{^X_@SLdZg0h1p>g^_6jtOCC&T9!<1%#;s!mM(_G?C3HtMKbwVIS9s$o$G0dFIt6lvya+^ zi9R)ON5}ChKG56KnA4_&={?R!7tw$Cd_nltTwKfL0k^f{;f@F$*%?WgC&GBWBK(L( z-g&o;Y$4a4>tW9$UIgMwqhLJ${yu(g8bBDq{fzL)K)VVWxaP0_Qw=n!|IdQn-#`4D z0>3Hnn*zTnkR551zx)qS%l|h2T>g9iPc8rdnF^*v0M!==gVh<9S4*RM#ZK&rm1OXp zx~%5us+@2JoG>>y^hQCL_UJqecF1AN3k-nHlZ<4?gZ=e&Q&nG9-+!6hO<@@LyxCz2 zOCUR(%%*yafTvc6z{b^uQ;iSJx?1pwInUT@%^qnQ-WVo(Hl`%NLE%30J1BgMszIl1 zdaTPkgFv43w%~)q%_}VHc_jZ@UD{#UK zAmK28a9lDg&Ikzu#pXL2id3Bk5-;%fouzpBaW8H*`#rAJeS{UM(^b7u;SDf$g*{=U zYU7)p=8P~`T9^K1xvFu0ndv2{c8}VE=c&GU0;t9e8Rs;Z=XDJZoh}Mg3zvj3!>enw zlD^OFecuq~YZ_2(5(qm1g!Pe2P6dL(L6K|$B-g+~NiLjtEENU>lDD9`KZPM8x~SSH zsJi~`JI<9W$6Z+&{xck`<|jB3YJA7)b3 zmuCf*A?%HrT;Hj>Pl87>>;17L-yagq2^%6653a8xzo&vjP-hqD6o=CM__IcP`q*}4oD6J~! zx{sh*;8jJ}ZG_Qd359w=a)C-x(W~9m28`;bY+F=4NqVm8=6cK#)$oz(?|ggK8lW1j zq*^b}yj=_kuO?bv_yD`=E(XHO&;y)t7+~uxo0gB}o%cKes!j40rrum(sh&S|7gVQb zI~*JF`xiPYY#)r=>WZ%>ICCfWXFzy3+#Kp% z*>Z2|$!3w|dGuNbRo7LRD{M>;_Eqb61~0Jed+@XPhRB&W(yHYyp2~P*@knXA>%edcJXd%Tblh6S%%n()%{JoFg+78Rbv@zr-AoGfqfI!M_M+2rV2bS*qh za{s+dVJFUt`k?Hy(r?lqK{bC=wwmy_XnOg9D8IFsOh~ujB*O|f2!vCC1~mlcRu0kQ zb0>QqQ8+lric27zYa<}co%T`jqlEEuAuMe<@GiAT;Sl8LX+`7%`=SbmsT*KyQ$xDB$0nv(5r zNVVv6q5Ooxdnh|b_J?7X;#-2u zOe)Mt?l5JCH?QEeLC_rKkj$3Sf9^P}wgR9ziNc5u#(5FptBg@JDKDMP0)9E9H$ zNdawgi7tY0y@G1&ieCIpo&KD#d}z?`ERrwNEje{S#FqP@$Ec(Z*#RVLjPTJwcr`}8 zKy3W9l66e}2FgYgjv5vX8>{Vbvbw_0ak`!$d4jv$G+cMw3<;kLC+git@`rdMqJbog z3hNV>O&I8sNEmHp`y}xm{k?{gExto|vf?B=Zu0TA0;sTN3QtG22MF^}>*Hrcn?5rI zU7I<4Er5+*7E=C+5iS^ZCQKC*$CvWtU8xJeVf`v@E!nKlL!4-|OxWZKswpJ+o4Pjha z`<62a3z8!Glw1pBmnC6trNZ?ozEYgP$-c-3os2l)p1`k6B~Ew?S)+A2TBr2m^**}@eseAU8p5&haj7Y3Qzqlu9PG!Gg!AsLJGK5V*mpf`(_b@wOr3tq!$3FsAY`7XdlO0+z zN}4!cLlehN;NH5N?6|8rOI&;c7p)RFcR@^Uzv_OHXd=>>TaIS zgF8J=X`gMMz>NA!9KE+akh}}}4cPT%iH`0AYPH-b92%X2vWrrnYKJ6NXY_Pysi1QH@8{Z&QHEHN37WQHtXE#FyvmG4#giCsfF&mNjT64gDTM zow<@eF99L1#`0C?9B^mNH_Ye8ncQ2Ks=?%zvG_>LfWRxSMew8b>{~M@2zZ$Qp*xS` zqR8p2-H2^4^mSPna8QT$J{`h|6D`0eek_z4uqXHB=O%pP8F#FF#~YW_&Sr<74g=pK zhJ2OHen=j(SJ>QLC_YE8g{!OXt2yG@&Bb})kNqL$t)(PA$KywyV|YvqU((?Umf3oR z=5EDfhhByXG5cZA8G359y`g-)rY}1P?UnwsYOYPW%fph`fdbC7UPipPd2`Txn+nyp zb!Gm0tD&ED8r1J-1}^3AeSp3-gJD!Om2^bH&Wq%RP1Y#bErb5)S6 z;Qkt<-#G7t|;O^3OqU1Yd*1u-vTF_PWkk2OmE6Y+}+(8GSSx(Gg}S95UXl@=Id-c z|7;|G?v@0Z?<&f2pW}qOuMcsPLD`&7W54U|g#S?!te-%^v&&c*T{n#leLWu@IWcr8 z-xG7X?xQDPZz!3TLD5lo@M>X6ax9(~N*1F^7m>r~K7vzALKe%DO(>4MUGFWEn^H&~+w4vregOZr!YHL<>ls_XIZgtR!f@ z(6smzu-aV=`)Bq*_1V#{F8IvA1F{<#NSYTM8DIjFtlH!8s6}}2(`N0F&8x)n?_-4V z;HkL*FO7J7+cVhV@g{8Rg|NO(j=Cr8wYw#2H~R*XZG+*XcZrJ)mjTgAYVM^9#~Q}c zVSgd^W@e_CR$?dF*Ks)Oa|#lFadgBa9COqIat`&vbGCD$IBTC| zi7##Ab zsjn3TML*G!y#eQoy+zBXPH3{r3M_}rz?x6Vc;=*N2dvIuy-$w;BR3nev-7~=aRElW z!0CR)`8}H$=o1?!dY?An!@HJ()uSFk@U3=G_fS!;tE+|OmyBRxeH+l#)v;~qv$Z9v z8^FK`1$p>0XJwCJRL7cfLCHO2Cu-yFF)xJXo(0kT9uDt18_BOg`qSf3Y|BL~vEdz% z-$UX9(Y6JU4k@1|PliY0sE*{bM`dWO<$C@ksusS*Qb@W%KAqv!zSdoZE1D;rdzvb=VIVG)yD7J2=PP}i*K?#+6vvVvUed(cStKpRwZ zE{f%y(7XB!cC342zKjw=O7E9WE`a{alf|x5P4MOCqd1Fu;)4NpZ0{C3NxFl9JC5Mf zGaZ2V24%NJA*(-IPbk z0l4TuHxX3RUfdXeMdVud041MCPM$`Z2Mj8)O4q8EgQPe@YhqlJJ3LOtq$fw%H`fX( zZUNJV!9v+{rPJ<{U$WOt9VFQly>0zI`5>$R?VBK*rlS}}7)`pHySmG6>{%)Wh(4U` zEN`ue#AzR9qKWZVoJFXIX2ZAWedxd&-*x22eZNm`2o2&+5Pj@1IB_B*nhq3Ws*DEm z^J3CDQ)ud$3uIq$llCn5FE1dAHroP4Oz7c5&+|93GyZ4YP5|^99xlj z7W5O>uNNi%?1f}cpttK#_VJFHZdLVu7+JdzSAO4S=VD=1t_yDcyimA}F_L#TG=+Pg zg2?`Hio=4Ce4FwM7~t)y_pcP2fr^0+e)7i4hV$^itBxx6BYJ+qYWH1;?+Y+D+lFG9 z7j&OBfo!eL>(Ojb@kQE_P-!=`6c%e;n5#Hw+nRbjr*~=0c+f}LczD(IC5x;41yzi8 zyTWSH-!Y=H=_aA>uTh6N5G7xtvURt7zmg1{0Pl9i@yqlodTaAIN6vRFA@<;eux_q`;a zvHu1{j#&qEjv#)^87qB&;$XPa`Ef3NS7u^eF^yiL~}j5zrvEY-3!zdLm)Y`U!BDV=h2>DsWO zhco-scs-Ks;>y3&4&8<1PXxsQK)jb#JD6~az3|DvRP~#XvX2rt;UE+18*;KSJnqG6 z@SE8l6u&Cvgi~zjLB1`3hghw{CeMq(eIrN369}N)Ea-eJQGE5@JJuA~z(F)qHG*__*pHgQL>DCVD z*wvU*T%=+xE$KcCvn?ZH?JTf;Qkrn4zVakSzp?dvU{r%|JRVDb~>2c!x%< z`1`(E?mE&+syLDS4u8>ql`q*WB%j69y^}xHohT87$DEw$SY5bqaW#?+XX~A;{`_?P z-=C)c(a`a)2zmWMZLNH0_rIas|I&5xUwT>QfAeqMDfQ?5fqVaRGs}NH|3BzvnSbs- zq40ldX!#Qi|F5Y1e`4Q%(BQ94Eq_kw|E#NJ{#E|m*7E0dfAo(HQw?OpsEK8m(~s7c z`ET6x%`Nl){twz)(&hs{FGig;RsV2mC`;{7e;)jEKh&Sc{%DArf8^KW0zXgqYg@+r zqyIyAf3=yzpEh^!%*X$m+%lm5e*g2E0>3Hnn*#rzQDCdJ@gGI?6u1A&MRiXV7t)$l zOK~oroplc0#LPp=ZGzLaV=5Mcw4KB79qoEJ^~`K=k3Gc37ndrRhGDM@;l?SZ{OOs? zIJ&MS|J2wWN7UNi8qJ~M#|ao?PFW;8{@;|^PXp+ z?ThK?_T>Y`%gdkvq34!dNC&fwBVZaa7-+2y!7J$cvnQgX+ge(Kl;As};~A~3;LW>U zlGgY#bjdP`_m-l{jZi*GP=1M}^-9oEOvFFAcyfv%v4Y1!m2>1H-%Zi4M`+D0Xx?(d z`)NqO$;-^nX0*0~6$|5J{6`aM7UC=^Pp0C0P`M4tnMlWJ&1I)b??m?TCP+DGL2C?r z5t`uJ)YDhO_J)%3mQW$RAJ7^J!d{Qpuc2rSAXN^kc#lswd~Pq+et&hTrzge!YHieg z&TUqG+by)3H;u=CO!Db^)J`6ROM=#J*rlVR+&a21QXDF37b(pt2Y{5H;q?>7Q_kSH zIBFLR-Co-Is(3TvKrK{x?(?TwasP(Hk@6=nwq`?FWzz^*5Ua|J?hBCCrf@7imfgOU zB#9<$7VT`So$>}sSQ*I?_ag9Z-5x4$z%TfG!oVxBNclb7?3@6rsz1{WE;9xwPS>d% zjdoxYwMNCW*V3>+t3v#g-_BfGgJXeHqwr$iELm=DMSY%*^52~D2$YkU2_Bc8Qm({I zPn)C@OR%xYU95Z0mlKTztvhI~SRDq3yQp=7P`T%<24=i?P^ea|-L}{UsWp+@S#uz* zMcV`2kG5h66C`t@=2LS{xmTp`@@ZveP`+cD$`A1tW{uT-(VA)(c6&Js=JXybCk^@r zC8i$7k7X~zAqOf99k`7u$G@e<08V*CLAgVIHMI_>xLHy@O2ym|)v3HRt+HHfbzDG* z#~W}>HH#aY0jMTH@TGK5R`MJb*m|@ z%_kt;uU6>*<;;|h0p+QAUI7FCIz50>&X2zcHIk%Tl-qOzx__>6LZpY<7aLECrQgnbaR*`kSb+HQ63Ki` zxKe))qkJ9K?%xX|4&)%^$Mm0n(YcC%jKPxVhcymba*_{FHihJ#ZC^Z`eTXZPLmG}?Te=x&43rjKj8J+ozWsS5>>wA zqoKEwKd$n4<}Q1IWLK@@gxmEHTKjgyjc3-QtKk(@(?Pf0D=3e*(f8EKJ3zT^pj^06 zHh|W}>{wuV?y!G6sP!!@a^xx(wk|INDaQbpO7=&C?e?5<6FOS!!Kp?iX%{#rRCOE5 zb3>i>Hj?s?Ks6rmVD%#mu&g5c+t^{xqS>hC+hxIipnMc_8{)U{_AM%~gGf@?LzZS0v@aF6$PYohwu>Hf-8Ru5t`CA5^kVxgtVW z-^lHCxH9E__UNKV)ds3Fak7h`@|XkTJtfscs5Zht)q8p!UIot^RpnXbCdo7BePku? zsc?&S$5ymZ`3|H0oGG1DHcic!cqNIxu;*|TZhX;(D_fv^fXUpVIC%R&PWFzgJPhUV zIpr$k%=6}wYCDp0%UtQjWV`Y__Z^pkI~wcjY;)3$rP5)Q(@E|&m+E>Nsn+3?dsq6c z?7O7(vOZ@`H74=pOE6IGO7U6cub|lQ2~>-#AXRQa)%R5XFa4y8NK39PFO_`G9#06T zd{2_PHr0|01Yzt|?TT&v?8s@IFDJjPKr($%)z0*_fwJ2-VK?tOlGgETPI@Bc1}js3 z_7$!3=K=X0q&fjoPJ_+pS&UPTgwwfXvzqaP+bpEfqzIm#rqAC{o$HlQxqd$%b3u7$ z(&LpnMGvwAT;<$-D~D{O+=S@h)(%NVC~xWutW6dim}(_eexa#vy2^8i=q@FJa>uaR z!CpKVFh}LkR34B~E(>DAyvgP}i5}HxlYyi!sA{Xa@)?ZkY>M{~R%1ODEInLz`Qv^` zx{fN}PPULyEeb#GFc+nr?qKK=7e@9THnsVpa%$M-$V@D9e=_+^Bf^7J6Q3e4AmzT0 z@@0Z_9w^_>LxR5HhGiX8O%;~=o>F-&@=tfg+nY9UJgOX5HMZHizCvbpyt1c2^+4D< z`l+^U@Exj)&CMl0ih~9Y5g*Q8V|xxi5$&|a~-XfuNBatB7W1(;wzRiAUB+Nh}A{~^`lJgKf(8{?_) zPq|N4A^jO_b#y=#4{TU=8OPm^lmV8j1?8SO*#{tAA=N^K^0N=pcB>i%Bm1JS8I%1) z^?k}8qhpOkRnwJ}SEpRn2uZ$C`YxlI*XKCtyuc1-2NXn$YIE3;&6V}Fm|oqIh5z1l zq>B<%-AvWiDOb+xJ+sort<&%$1Cq#=4$)OM^hF1T;&jTRLfH`hf05Go}&36+FhFL3gyn#d0_qh zoT^*%=ItsY<#TnE)5AgqTq)3ZQ^CG;2x~4qBW^>7ibt{d`~(b|WhjSLa-dvhA{sv` zj5n$pvo4*BfZgpJC}m?WtRlzq>+1)y1@B$Z?>xsvP5k(wItO7(g&f#0@D=E8JOMMW zLQtg)fl^}9amA%Y@Y=sA4BuFm>E@lpGL25-_Px`^#`>*rai?7{uadtgu~sXLD&NG@ z4qtSQy~hX;H?r_khZ3$@YB#34(}$ zd-vWd;QH38n(_CqRRtT@NzJ+=*9-f9YQ!tFjuV@IuF+1~dWG(d^t6?WaqhY_?L0Rt zq5izC`~(qvCP*f&SPJXS=6SC-GnD7!D@g0Qm*7RAm-xAJu_&2T2eX#uLX|cSSZjL} z1lVc#{5d;e$_!mzVNO5(%IrKEyB&a=mK?XYDuL!Z_KQ(-zlvdd53|Xd)tIu%8R>rL z87tw(9vwk1#1t+ElxKr?JizM)zJl%wPG*4{FSP`Vv!?U!k36? zB{niXWe2nB`PS#cN)w)S;SZQn)I-K}yMYA;HF)!pwYh&I2gHw_>e_5Y^&|MSYlaB0 z)1qeoEjU{9Bt+O(#PRL*+09E1Smkst95XB%XkO&ihzW4J0q{Bfqj^|GGo1e55^L7C zf*iL`vdaPU;n@1hobI`x^jNBQSKy*;O~OOqOW`h#vl zx9?9Dvere;Xjp(z-Q(f8Yc$w+U&K#!-09aTbsh%Zhuf#{*BQ%GS{zeY_u- zK-Cot3JlW40cUs2&_5~+=9=(;kjv0zLKE3<_)v_k7N@;nKSld$z9nxGU@H4&Rh6dK z#%udraF^ZhrLg;#3t?;eYJ9uJLN>in0j60MLQwb~YW{9#$tG~BMJzg*rif}z0tdiS*u7~allsqLl-_(^d}E-X zF~MPD>hq-T+dwo(Wy|mc>#*l7ChQ%Ce*MNVtKtGI(Yd8<{RFk@Gn*_3fo|th(RR@* zQQGu6xW`wLEf4RbYnwBA9#MI`War~rmyLzXivZ2X-c@DJs1|t4^#sF@JA_W>MOgZN zA5{MFQ4HDb%-e_B$~8sbw6%|VVoRgz;8|xe+37Bzdw|eyX3RMDCabrHPI?F%0!=S0 zgg#cu=pGyjZ!%J}BWl&8_}xIj7^<@A(;8yED=rTIXhp zRoNBriwsA*q$WT%kHM8+qG6YHEWE~a7`!7CptwH^EPahLb~fV^R`!w==G;IvhBUTF z@qq_ix0Q=^l5uC+D4?+skB?r&CZ~Tug_cF)^VUYnW_Z?G{3T%6B7@v%>bYLx{_>?xomWm&+MAYSEqKugp0G`$NT$ae*wzw*o>Wf;qJ`U z(01v2ARA|7BjWs-^_qc;!`bPlKgB3N>K*I7MVePh^UTTi@#drahUirsZ^nNp$ zRfwz2*G#<)n>Nk?hk;gV?pUqp^JuoA6pE`ZggvyNaTx}1_sYk8$oGK0u3{NR(B^#I z&RasY)q3*M)&=5dh%3B0)tLPDB=q!(#F&L~K>kuT*Ovb8*tqy>6x*%vO}M8}b28Q9 zordxcTwT2uR1S&h)(^H09t|rlZeSwQl53_M6qUWQ*yeA&;77ws{13w_Ld_4wV4$yI za9b=9XAs@zre))ideC0oUGLHV6Oe^yNEEH1FA9c_8HsfKEP1l z&5&_mBdQquaIg;O7;ggi9?n=rM`CL2P)vAL4X!%%1F9ROUgb5Y zVy?f=`cwXSq&XA52%7{X z2>&tVVCxMn=#BV+hi5Ovw0CX9vZl15E|_!u=~K{eS(b2GdX{al^@WGIHb`T@)p)Bs zPdc1 zfO00r&3pkL;`8xFyHfJg_S(vm^!cm~BXPTq52vwEHHNB>fpW0Wd@|;bThxTQAs(v6 zWGzi-!|82fN%@8DAq{#>wcy()>Bt8*w$R-%3O4(W_33T6obuj9c*uZjXTSAh=hpL~*#6Xxgha(mjbxQN57rb)cHOtOl~`phNMkx60XN_f4@(tK!`9v+W?IPa-6x zox*jq_EWA)g|XfSG{1owi+Zz!WxGO6lLdD*k)6M5Y0gAJyWQaI(1^Ee|GBW=2sbhO z$9gU0K}i3&NY$|{tm0za-)VW7|26vAPCYa4uqQ^VdIYMifu0kat*)o$1?7Q2)V*rT zDegk#i9?`kH5gUSs9Ng-ZZ1H!A$2bO3S9MBr4v7^`V7Y}$^@#zRoQFmutDJex|V_Vxf?e6zpiBX{iSBEAyK1f-}~Qk_CGHj zXzJnZqiNc>na^Jf2WUh45h2l`8i%sK@2Ykd42z|`?L$V53X2XM867pzVPe>yLi>Mn zkwMv&{$Yv1?|b?0tqk~m7ek_k{az11j}r0!i}>&E-pTLxegA#GzsCL4et-W(+4uYx zyZ-<4OP_!3|F>1gVC%n`?DwC?`OgUaX9WH;0{>Pcu&b^9-`6t4S^N*LW$>iF3st}N zuE}!6@KEv4L$rB2^#GiB4%D8Vf^TZ4NaveX;Bku;V$hPjvKpTFB$Ovj+^$nPEDW;l$ z1;uo!M}t>gUckT(C$+>Du*FPA?l3S7@;!P;)0FGP8u}1NISLU^?uwk9H-xI~h$V}T zeg#y!dwLH%QU$1YMC#}G!zbRnt8Nojt0s`I}9^&K3Rl!rQY7P#JeJlD(F zfSJbYV0Cmo2<)~O*L+?lH?HHVU%>Mx2jS$;y7FWCP-z%A5UGZjidmRBI%0H$G1ZWZ zu<`i8#2DT|&Zr_Saa!zra}Q+K%*DMJEtlp|U+3(Fsuy44WG;!t!@><7^1#E6oLB)} zD^0U#d@@hHzZe>Ct%%Ehg(R}juy~iSVHv0wlAw4$ryc_sF}V%DBjreurGX$ zG{=I4U0}1AjdTqe9@G#<)S`{B`y_JWBgErw(vdf2l5B!adOKPY-^XvOk878oJr3J$ z&%~hcrjocQ(&sQ@3&e4*Qva7oY-S<`ZM>lReBvDC<@Brq^p63!oRA}8&erCNldGPk z&TM!k|^8I0!6hqxXqoj9IrR|T=H>2^r>ht9SU!cDg_WL_LEbrU#@|5JNwUeJnbmVjRQ=h{u117tKdVVo<~* z&E?9KKZx!6V}ApnjfP*X@RnK97>rKlA<7pTUgBE4X*P_0+p1LjCXC zfY^wfYnzUfHFk1yOT;Rb#+Gpvqd~VAF+cgusxlM}Octe|45VL;QusQx3bE~Op!(*M zewDbv_joa@d@$cW?=9JtE}uK7iQ>Je;+XOo>We78nDYfEQ;7LxfZ{VlH<d}D7{GC3$Yy}cFPs>QyPu39g52u(hI~bT4&|R8%tZGra&B?Tjb9K{-6_+XY_DXqP$TO5GO?&%GMO*TYQdO8zkjN~3%=Kb3TVPuhc;C&X*VasTJDd8FwecogG} zq$z?LS7LZ_$ASVa@d-{G6Wj2sLg_R`my@-_f7C0>L8QBoHg}!IhvPW?T3X^lqC_50 zehlrp+Hu8O225|nDZUG0eJbW*G_6-qoOQdjL1ILZ(RMHrH&D#7OzTrR4dopTXu@T+DVa&Q=H(6S$^!j3|DRa?rrHGOLMUZj*SWvq;Dzqfr@KT426VO$%^Tc7E}qV zl+)*mgADA@Ui*1-1ZjP3c+HP{D2`1A(zS&5gLp~$CnF6-OWaJw15x>{zG9p3^HW1X zIka&3LKiviz#K;LQS;?P6?w{Rv*J>aa;L4FaC;0RT@XiyUsrLFUwdFE6(2d(&5WQ(K~OTwqduWjQo&d z=3@=jEja$nSZP(QyNW52;y4m>l%@HOlJYv$ICDAidpS;@P7KMrt#Y`AbZJ4cm8JBl z#4elPWYME1Db5eAuIYnf(G9zq<2QO&?o^j!#5a9Fx8_Dhc@vcmNNf^sH$b46$+dmF zXiZ`OD4s`tL#)R_sLwI@Zla~U$4R@?h;5yj(h*1-Q=FL*&k-$r=SkA5W$oG3HE%rw zfnpJmUaPcTtkI{SEHOEnx0&9PmH41^5Dt0%iaj}0 z0d0L6@o@jw+AceC;r`xwa%qtrp!0J4R&o@_C3J)C4^z==zM~i!{6=FrH&1i*gTNXb!I9PQ#El{xN-KoeURZvN8+rGA{Yf6FF3ymM2SHr|FyeIwXf zB_CVGctZN{Uh@6V1k@2W+O&rsM27iTxpmhr{Py)2g(*p1Nk190P81xVv}ucc*wqJ8DDal znQvMR{x#0Q6cGb0->k)PMsH!x%2<|u+*M{y*$VdkA~5^?NA2v{I#@KoNM8Nyhk@Bq z81}6mhRvuTJDfSEsh#d1=LKHYy#H_nm+rZOX7Abo-}ww^+}N`8$~^rwlNp$U?Bi=B`Asw$dwc^VwUxmag@6|kD(128!J$nYf@pT|w zZ@8vPk0e~P7TFHXbp{p|qP|0|!rYz`X)K^>KRp@WN9&`XF#}kV2QIJN3w>)Ef#3eK z?Bvax>`hJrE?%^Sxu5SS18Tm&PZt~DaH9l~scX(7FYm#uMoVE-(+0|JV2RZ%7n5b}VeYz)yl412IA8rBZTDIVWLp^b=^Z{wXpPxMbHr2246LysT+(ym zFsF++X5b~wfcI9sQprq+ePW6e->iV|Q}4s3TT--p^&FP&=?RZ!{lIpwBKaCRB=bq( zVQ6wA-{syIeI&CWEtCCFyr=CoG0eWd~K^hakl zs_90yu(1pOF=!>&x<$ajnMIIcgV1GWkW_w_+SVS&RVhG+=9v_`zNz_y#tqNF%I0IC zPtm%)J;Up=*%N)(fY4}o^&~_LH!|fNy6%KtO^PwM(Dhc#FL;1F_ec*g}C{(?&8Yq@y^q7~nxC0IAR;81; z>H&?BsI&YOb~W@8!#3{0;KsYqy3a{1{pvle`vxt|3C(#7_VJGg@?WSzTk5FcIeuhC-s(jlxa($Pp7%Zt`HY~P05lfbIr%dnzK;e^6{XP6CgH*FH#7?iDxu0d zA6DMOTUp;Vs~j6i-;~;z=Vzczh|{v2_r}AygFBJtTQl)dH&ijpZeJDHG^CcSeltm2 zzg$<&^o!Lr)fmF3UKK%GvmagW02o#|Ubw`HPJyet4CEipkwI1D2RE+;`CfS4Dlqt_xG4 z=o%dleZ>sB_ZWd}-ZP-w1oV5p%wLc7O;5wCy755vUzpeEGiI27WF?Mu(RgenI<;~g z8u=bCJl8grQ7)0nKIW_|#5vBZVB51=cx&?^diF(N{3w+2M^{0g!O6zC)BVSglY0$T z&nU-DTZCbcMZ1vfM?*FW9j>Hc#Svj-7hc-gT{lDXXWPr-Qj3bufu2jnbaB_25aI=deB^0a+)U^mv*@KR5qi0DPCLLW0VJxd`wfR zL{}bnrbXP*bwG~o$G*BYlp(FULaR>}U~p^(9Lkx8KQ(i{;EPOO; zs`vM)L*T=@26FvkTD*KyM^L<$;U_NuLA(DBA~o4{ga>jWa=&z)+LX?=#VpL zdJo4xg6=bIowbyUwnKxj=8*C}39Ho#S2YxEbkiH|#@CZ)qjRyv%H>FTSKBaa8>{YN z4>YIXa&{YDoV0)$_^lG7^F~RkW1t`>nLg7`vIB-_qZa`u2OmK4QCt}Sn76YJs=PMs zoi|pp58(ai==!Wi<~$RCxf_za>%oX1E9JTd_ z4~6p%##GA~;eri4kZK`{sSfhHUfVL?IM>z^SA5Jvo%g^6C3GXx(q14Ak}KX>E)u8!R1)? zglo+9p*^PNs2>X==y80-RN_m(_#i>b4?OgDKkP|X0UCb55BMQipwQJ8;t2r3^@ zZ4FdogP-QPa9N*)5%ud!pJYQE^I$K$PMU_Qc74A1F6&`#1q*iAO1d6S4_XYg^+DO+ z@n5||)xEf^nk!OV5hj5%v8Y=S(%5S09_hfrk(&FShs6O`PkbRlG`S)Avh}$*pt`(} z>MpQLEyujqV z;GRa+@WSz2s!cjWjb=-L;-?r?y(>^n!j74j=QNMx^K(VKp$qS&^^%l>wW{V+_bkrr z*Ub9Rol||nqNWAosCya82RJ=DJG8Y3YZlnEGe^s-JT4aAUM1+6pvi?{aOY|(v7q*Q z?fv>c*s5^=qx$bHt2?NVP@gXi{A_V>-3t8tid<-X#{lX1LB9C{<`V-%>8vzXdFpD4 z=k2sAp3j(SRu+qBeu4T6+EAmaRQaKHdM3R@wG630fJzx*s>W0CMB}H41e$M+`G+vB z>`&ElXLkIdJ$w5PMn5k$tRKg|=xh>HZ~gt{{(m}Y{a&QlC(WA zJa#0#NKU%Lf|ED0Xi3(9~vH$+zvO|6T{EH3_>PWq?31c)4jojL( zi@N$phyMOK2Z!Ic6+SE~OykhH>;QT7`#*JM`q>b5LjAz#kP-C#zkT-K?(O%_jUO2s zNh7~|j?PhdUNGPq z{`=RVW5$fqxVd?FHf!Wg|9JfQ6#X6ky2ZcmBjDlb^UoUzc>e86f7?gk&m$E7VT%Co zCjVlU!0%H5|H~?Y#(%#5zh6gx|G$+`_MeCO&j|cy1pfU;U{6znzYF5=qyL8m@y55Z zreN-c-blO@8uxX?T2@Pe`WCz~W(th4sK}^}5p_DuVRGyZQ2dLyf(*49DXFdj>iyv0 z_kPqHbR`bdlGw~tp4p){FZhy;`Ie5vhZad3tDa9HqIEZ(OpsXyZ{nog6+1ID1|tbF1H4*cxXmPqVM zz8^VQ5?5rZE~1_Ri7{!ZrUc?J+T%@H^4-bTk$O_9A@5@Lgx;KLT;fx8xY_tEoN9Vm z4xIU~yPLRrChFJ9YO;+&UpDG(AgOo5EA_3os&`MB+(Ny*ZKZK!JJ5g7R-S!&fGPe$ z{cTyFJZQ-)#oTz}^O5ZM4yj)Bl*9)lu?a`{@Xw?HKPwR7>z%Fli|gm5Xwvm3VcYvkNNmLA4ad=|9lIC5_p*Y@rK6Luy9E5aAXH)}o z;$+O+Z5IDv`3rYOTo?5YcHqbE?$CTUHA7WvkIs8TJxnjD&1^30pD)4hU#6>GfnGTB zN28Ie(9xenQdf;)*GRR!Fbi5OfAwn%G>5eCBf88FE_berZ4Nw#7cKlb*&C+vUYPvS zj#!yPp?mjyNxThS#8^w>WT1HZqD`ZjefU;E{k|ZMB3rbJ!#@mdIQbVAwf{=~WiEra zo>z>76W<}0V$G+tC;_+n`HFWI5)WYeY$w9U={4oXrnOWLDyjE_8((j0HMh=aspk{a zH=*hSudNwKz5OO64#;&{=|Zi%)_`Xo3($Ony%)TbHC-xYJff8GOtua zwg(qF8B6PhYw$9?h_t)Lem1+SGxc$6(9Guw(=T!U+n*AE4_zWbN+6jtjicLv3yJ0>L zO7Fm7)9NU?)|NDH#6=3RnXw0kcisah%y!b4K15G$2CN3t*AX6{E~OWMo+w}o!} zF;tw6bQ)1(!z0Ej1WJ02vKUG8sNH+uIx4^L@~XyZ{CUXn-RwS8ki>vFu_jJ-4x|Bb zV&IsvMvsq4Y9JL4BmIGqP2kno+bAY_h^ea^a$-^P%#KN%cmQ90X-OHQqURT+JC@~y z;H^R2<*XYgmdlBC;mh_3Sk2j0k~W8}BA%1YtmaR=Lcn^VJtv-~`RQZELxU@D;wrRp zMsFm}jPrWgN@D7yNv=>VpT=mARQe)uZqaUP3f`(aND>bapSRTHfHPC z;FebvjS52r@fmMLej?|B{~m@H=)uezSh1ETzc^5#y?q@V^dJMOW7IKEn>W{ zH@J6rs)_Tc1k3zqabjv>z|$^DQ=$_@>Oj$eIH6)1u{+WX+X$r*QOv+N9SyPXhl1(` z*!5x`v8!f~uw*7&4F84{Q!(^xJ)H4n6BvEaft_jjIHSP~PTC|)I#E#)Qv-^_U^bpk z6iTTocYQLT7cAWwjj`gjcw?ItzjW4;6T_#PKvyb8rTl?(k-{T`a`0MrD^8!MA-w@6 zr+E`Eo(08YEamz+oV3*4pmLz9BNU%CJy(hEI^xdBCPZ+9my{E~G0J`D-rZe>1~0^A z=}CB!?W7l0o1v@ATpIr-lJsSyF%wF6Inv{%(%MwrL^&r&Pz+H#AL_q8CDMmq#knV9 zQTgyvCV<#7EDY5}8Y3otR#SW&Xgsy41s^n|HL}!$40A)~;Pg|Q&}rx?4aFHK7~LFa zZCZ?`M~<_H!zz%L)SFX|V8nZY>NoP|TRx<dWH|w`fROB7n|GOW8KQmR$P0wP<}X9-m_ae13U7%gtKHI&>|-cCa2;?i0Lmb^x7lo5N<9 zJ%Z~ty>ZD1Q8=iI3&cN5fCW`dWT&Agz&7UqKG9tYvh!993_Jy6x~AZd$9l4T<_@vM zXFnb}a+5tdvs|njw3+49ww1$YM}z;E%FvJA+X}SqET5QFk=|pkvGuoh!KLXg{Mw5X z+V>Uu34HDdZ?B(*Vb32yz_D%Esv(`^tM97)(rg;KcB#VbMja8IW*rlKYRr?ZH<-%f z>tp%B`^RBf@lkQ?V-!BWzfREe;hlEh@b!}Bc(>71WDAFbiQ9GN-Xa$-o9qVdq%?4@ zRt`4y+XvSS+u``3>mep!4oDp{_!Wp2k;ty}>%J%cT zxW!3B?%HJu?9J8VO((XIk2{;9?}+Kp>}D}Le7i5)cydE*@ePKq$A9w@?;d z`#f83?txww0_nPJ?|vPb{~{9C_Dt8l?tci+`KKeV^9_r__JhkE zLviWMI#J^5!EZe2C)-CgWs~o{O!GpqT7_9W z&GIqm4z`zB_2SVtYcl9ZZU?{CGr=h0u$b*MUMwqaqbc5$!iH3A&P)dmXWofDr5cy* z!#|>$_a(ucJ=$a-Kh=6E+L&5#ueoE0vnhTw6;Rl_pnWa-vPDu_BLn`hUiLbX~g=6?7n0q{Q zmfne1u>HJUY=O5CoQpGL2RsfT-4A~3{uF7B3kwCk1^sG^R_97}d7(3N;ZN^p)pV27L9#6>G7zYQ<)m~ zM|r3`!v?)o~a&SP_9s%8?*r5zwHl? zl8j_f+Ev!dR-ap}HHIy|7twV?;#ZNvtadXx*Xkbs|nXe3g+s;r?_6`ycPd1q1bAhu#k;KAcQ1Bsyb~*sU=c(i4oQ zmSEfMcKqS<8BDmWF0N4(#nomoIxG#VeY_OQKTWAKG`ldth?sAV@iL4d2)4!>>2(2{tX7YV{|$)A$Rf z?kh7e4%hiKf~%U=kWjBC|M5XrE*Zhth9nJMyKoBV_j03O3(dy*e)4C+0(|&fhsL@Z zX6Y7k5yipv)M$MMNu}aU8d_UR3_7^21pD zm2l(iElt{qDB*Hv9@(KT9AEzqwwPRj?uY+S*I;$0O%Ykv6=e5KQ<&bJ4Vc=2_L?Do zyQo`RGjN$Blt0xO2X*cV!BZ`q8)VE)2R;+ZhbZ<#wV!&t+!|MIGUSS;_?9^? ziSvQNk}6pD^f+`j(g)482dL(rViNwGZUP0NMo{7IAXITbW|XcR^f?c1S-oI#7#(b8 zhoC;kX=o(iruEQqPb*I21~1!s!t-sL#Ip|eflUV<7izA4e3%Kh^WTg1nVvFp)@+Iwmo#L0lhJ& zx}6+SPqJ|<*D|As*0`WbyoRm?W4zOtiXrO$$3#`bsckyT>HY37NADY&kVD&XYxF&+ zcEteprp?y2-jD#xb$d_@f56CB%W8xsd4Ak=f*DXO;DhWoLygvJRgRN2nmK8w4C;h2 zJ<7r2Y4x;}f0Vz7vCnMTRF`7$C@BuC)~tkmx?ZADYjf#&Di3Jv@JVSkh?%ORO$`e{ ze4dRTuG|Ll7tD>@pdp*lHnOGnq=$bLY~eEzGj#^Oh~9=&TR`cYVr|>0j+9qi#Le(< ztlqs69-4ffy&K)FEGH`eo>>%$=O)Ez2Waj2?UQf8Y1S~xJGNzZXLe{T(0yoyi=F(L zJ|DMc55V~oXEB`z%TbtTLVt^NG@jZWv~iY5u^bX~>{vJRk0j3*VA}oR;&HzUoazSL zR1~0Har+0-+>`AF@e_5vGs+tjKdva7)aazF5UOU=SxcCw?p*w2G!iJr!MItuf@(#0 z=9CSuZu{`%kFNmvB$#a+4^CdMQO&RQ!7b2qU^`Uz7}Wk2x~{2!9=|p+6Sux%*{b%E zav7r-h7Q^bsQymBQA;6ntiFojg?`PbRoA~GYOj1OHr77~t#>aJ{h>P6Xqd|~6K836 z*i444^X~}qZHi3`;ZWO4$X}0zACG6D@L9zumf$`=H?GaH;0KqVWzKAds&`c$ME^eK z>R+yE#p8>{XsouZU>{@%P<t=OKz=jhp328e)v?zM zk28u(g6dB(koNVYyu)e?$O5W$e0=KNMwQo-N*W90-+HxjfS$?c>AEzW{QUsp;oL&1 z9W_)7;GHSsMRD;mIQjM$Ym#?RjJ}khY1Oct_t~xGc%M$QVEEqQjQpP2mp=oK#u>}? zx4h_Z&($JxRym}cp?nlCt!n@ot`ne!ZC&zXCMH#H!R80a6^gNKHV3yT^#YD8G{pX(SL99$j#I(cAV_pTlJDEfp5dY+gllFtA7 zgXXW_v=|XKcHm!s@YFQ%YV7GoUm6?|J!ItXp->n6eO^NMt^xe7^A_CP)cFURe>?=C z#b4j^Z07FK%uOw!h#eU==(zjZ)x*`5C0 z?0~LZwhw~Z)WGe}MGT=~YTts<14l;xZH0!b!+*K+zhCdqyZHMT$}ac&kN-!R-@TvX z-;C)0aJImo@Bf#3rbGY#&;R~20{_5}X)4Oru#KH9V z-WWr$cRVF((z{n{V^Tr&_zPDq#hlj;{Fz5B?tLg&)uMvxfBAHJP0hucSwQtH)##3j zTj6kFNR26$Va+YCFJeub2s*D-zhD1J6;4p((|=N)ty z^N<|s0d`^6YF8TA{eBfM?LHuN&os#4}|@{S#x5d;%S&ISG5+gQBE}({PL~D`!t@z zsa}&*_Yw1I%83sN;&J$}SWgm@(H8Wa54Gm?kXuZ8a_Tz)_#0KXiKLR9Vu778)!H}V z>GTzrXZ|L=f zzQ5v#*9}&E0rVSERaW$mBF1_g-8R?)u@-3;e+X5dKRt=glR6m##8s#dze7EbPFW8c z7ITv7_Z0Bn*j+C0p9ii>6WF5nc07Ig8!*j#0CjgvV7lEMh@t7q?nysIc5YQv3`@V+ zZfxq`9z5PPl&{CPRJ{yd@LNrFbUPrf%hvK0Xq!W0)n$q#4y5`Up_o~L`$AY?w}1_K zUj)PfW!rtL_`aH+g19Fm_R7m$+=vG}TFLQ&8=+bq9Uyif^H;xRZco$jaT7D3npzvy zvm?A7e*jGQJ3E=JJ^8;4D2As*K>ij)2hp-J5yOVm(i@rvexWf^Inp;iQKzTpSO9K zfe~5PR39qG?WqMndoAL(AG}7Y(RtqGQaS_m47!i0C5angteYYCs8L^D)f|R(ZSwHP z&Uru_8q}PpZ+pd5Kd!kJiXNsL6{jXa(YrA)M0 zS=Mtjp4ymRaq;HVGbsiM_7EWZrB*8AA@7=BMdHlVH=fYsCfDOLONT*qRt3n8&_c#B z(jhSRZUsR+1ytYlGt3n8-t>~egI;6l>dv^apD*?K%{h&`=JK1SlK3tR^&vm+>P`J` z5PmnCA*Z@@;RjE&=S_|k!ScsFdExP;Fd#2ev`uxOpAUd{y)Q$zFQ3FOkIGU#!#bC3 zg8UuJ6>i3*_6Lx9Fs$%x02rJ@)u*EBA)nu`i)4c`X4FhRZBrjmHWGicqGJ3qvgSDU z%p*(Smnn9+HVBDs8gc0J3 zm>*S6UhQ^JL-#M;4z2*YcT`N1_=Orn6$8*}t{oCvDX|?1B!R zUy9Uci(v*2#iQBfIdMvC^vRN2{;^z=T_SF(Cy8y-zSzz@L1(oLe|@p6Z}$3z)bp=G z;?jIkZjMl_@=b%beEPUsIL6@QPBo&T6R#8(&hxS0d_zql- z&c{P-yCL<^G&YmrX80o?x)u`aXCin75WnWvZLSH`b0$`IlhhkCnma!B*(w}+(~gs$ z!VSIaf_iItcI#~I!lBiX^axm9vm5u!ahJCrj8vL|hL{%aon|1GdPJ>J;O zr_d_WK@$H4iof9BcsbDg!1g)s88Ky~dzO}WEaiYa2V(oQc>}BI2 zO;G7KZs#(zFP3j1j?_;s>}v@gH8v>b$>~~1+)+k7roHir4Jl?q8i90QyaqOG^5%-i z{hS_O7I(*1smW_~ErmO@ueY$b7sOD@bfQ4(b1dBW0#K|gi>Vuuv?Bk)OL(+tuB3jO zlMVBBZW~B57%n5?`cnTLDk*nqDJFB$emM2+JpaN74cT!)B6pF*2c;UVj4@^UZKdTQ@g%s_aVYF~G7X3mVmr6` zK;tcPjO{sTUr-d*Tprxk5s8gSJ_j)=M2TGEH!wmHh)r7osmC^nqxe9LG1+mt~(Qxvi52zW)!}dpGQ2r zi6lKu@j zl;;?6QAV7Gll^Kb7Ql~joKo)CsJ{mOKq6-Rzi9<|fboB(Ms7;tGTEBtOI zDd&?9Stz|#OKe@~tBNg4rSC3%ei)86c*;yC4uv)~Qq^22KV?2G`-{;1hZ*@dTeRO% z^f5J(#E>w-dL^6-jwd_VkEB!Kj1P}B#I;pUqPnICANy70C*Mw2`V48Rkw`h8D_bBf zw~SjQcv&N{d44X~q>Mu=t${QqUZY_hIP7{^>3O)(uLx9(blbg>MP&76R$FSy*zya& zDext@trX#NLweAb)~xVsWaC_gIBFYZ>Gj@28{nJ7-|VQ0)iLe>l;7 zCyGVa9EdU6g3=txe%Lc#2Ur~1fY&}x`!-Ol9`vjcwK|PeyMrQjuQ1ZW`UC-548J+FWtLii>^ypqZhO%cjQqF=s8mKJg}2pmGj^x(wRvuc7tW{ zF_CfpI9|l=D!pM?%{7}hVdg>p?RZmjk#g_rHZcig_ky0BzH|ovrQB3RqWiuws z`h^d&C9ExHf!BhLW9`~p_&B~tPuPdnZ{FaNx=pdTdn`Pi+Zs33D#H4{8s5_Ogr>Jg zCY!tRBtGo&2b3J}#5KL<_!N8Ea;!Cm@BOtBZbkZw)c#ws87qQ!ZdX`|%{2VBhxS*m zrvr(Dud4gR>LJ%5xchs&9{fprGqWO$4$agoqWwpj*rdX{H-{q{j|ZP; z-?8SP{+ynXPnb6zn_I7dVXK#7k1of2WY;7t)aw9E`aXuzoI=RzyMxg^N!#)*M6a(6 za8merY#+27Eq1JiD|3_JP22}|PsD3y7cUhwm+Zu^^Wxr`MCj(Z8tw<4hH8`Q^V`?A zi@5rp{N~l!Y}&^#Sj#HNB?GqL5ih+Ezk`7b`A3$u43&r?7*Yn9mNK_rI2R#otgy=( zW~Z+douiCotGnxc8 z4ANIIr#;hf_U=^FEWHhL>dfJ3^}~6dZVlEwJD!#~--GfiPicy~zY}H^v>0`550u#a zL>}u6b;?!OkUueHJC)C+VxDa>oVIj;SeH%Y=W$S4<{ zropYw?XhF4gDhn08n(DGmR=<;ZwmTzz61HQG;N`WU*9#A4VG?( zQ+9s{`n$|&n-e&_`he~1Cu)*?4dfWNUcgS42=B!0?2yhmNPRPs_L;v8*>#8W$Jzus zj{-1$MMof;5|y-{(6<)7a{v7b(&q#DDKoCW6V?4++&2e?g|B4OE+pX`ms?124L6<% z*$t#^CU;H=+8oWS}|6)eei9?>#4>uGuFm0kcop$y~!$Y~_T_IH++D zKlLp~tU1>nuaPb@b(%f@QCAl_6wM@!=?y*)$S(5<-90JFKlraXe*ldUcs+2C3x@R2 zPHI$&6Xtz}-95D;D6XQk+xs1!(b_E&@c~}CmtfB5nIfXpiyb(!2^v1Kk&h09^S~Z4 z;zG7D*zoea{H2z{{QqI^J;S10wlzSyo2;N9CKLr!l7a{#(zVKfV$L}rh$K;xfH{&B zv!ZUySuy7TU8~G-n=|H|bI$Hr)wuUL_uexz&&-c`=EvonZKwLGR;}=^P~TTIzdd0Y z-NHSu1LhVEHQM#U-6I)GvX)9d9ro%7lm8-IiiLvQThOK5JiPh62vf%`;Qlje!_<+h zu=MuIeAoJ#JR`zQg!wK<RqTl7<*mh(y z2DsXx1^B1cmElWmWn;~0@Y2r35w9o0!DBsebib9TUDT4-IoVMt{oX$7hJMlOw{T1wp4A%ob8-P}uWu)nkK6X3Dky9^&@orMU09Z`KZoDPEN0I-jAFbS z$Be9zWNZDvEW%w925|CKa3jkePIi04rjD#3$WI8%f@VA_c0TkiG6nb3r&u}9XuQ35 z7uKamW;-VC3o_{Uqc*xTKI`xU-Ji91h(vi=Z4QuBV ziLD#fipp~@h;6+eLF(S;*xtV~5+4*E;bNF5dQN#RTIG~Lo82uK**ol-?h9mZa+K|M z;q>AV?5;GI5kCd_@F2o3{fmA5A-VraB)ClSK{WtVrN_4`PK$OHV)J0w+lM*V>u(A z%$9FnLBE&f$N%cUUw@!m^GB|RnPIi?d9)L@SmVc%vyL*Cv~fuB2=f{2r?6l7d2zJD zVnKF>6bE71)AIzyGQ#rWezJp1ID5cX9-gub{GWfr?h_^Ze8Gk{tK1q*#w;Z~_27yx zYqaGtZ);Uv?wJF|W#l2nR}h|6hI_vJ#CG3z!Le=`tYYK3K)M88HC_tk3sw9=aRDls z=5BMsQxm3$lm3;k-{*}?#RVm5Mu;~P(iB$ed)(XvcKxmjrDOfBZ)2o?obVFKRz$@< zo0-y+beo-6$t+jJdth5aZwSYUA~gO`{YJ;HApHjeF6Xeosv$5q_B2vlg8IJ}iN$#r zabDjWFs`r(baomoe7jBt^IGBL_ZH&WZ>wQJqX6j}R2pi8-9@q&yfS3~@uwoUS#Zh_ z|{d)v4!dD=D4{E(~JcU&zIKW`T=kW;!&>ujO2Y&J*)b1PJm%~khvZYl%;2r)?a~-#c|HKb8mZzg>I=p# zI);bnk@>~pVfxRnE%89YRQ9_4FL-G0h2%4NQQcFJ;O)U1{#qgi6&2`HThzc?0}sQ* z7t^7A`#c~#QJAK$WM(hp_Q!&$XC3aDTN51$zbIeFDHg%D2RB34J=qYBR(xBvWPL-& zN;2tfHapj@f;0`;03NP;Ve0luGG=)L=s9Je=+WgP`ad5bo0*(t6a#UJ7r|__tE89* zHVw)ad2e3hy>HjV?1)~nV!<~gzYPKP?PVRRVG}mvvyWSVaE8ruDGAkj`%}zUTI9bR zjK^{&i6zfN7{we|`rQj4KZYS4XNivWTFIT=^`K&l4b@-ill!+}Zhu^1FE35R*84Pa zmS+@J98R|u7wMo%qh0XsVhM%ASZ8Xw!Z|fhpt<9lT5AnK_gz87&2%liiCQ8)ja_Ky zbHf+3)|QemMf@r}pxQxJtuS!h>Wm+oyYZHHJm{A93?z&PiZk?CQC+ygugEfMk?atT zc7Fwn^SUVe=7e#AVj?zacXRTmtw`phG5^s5R52&{KA?CG*10qSv2G)n+Uybovk#-^ zCO58)z5tiYR+kEARlg(L$H9~)wQTyS~x!?pSrpa;E5OG|7VZtmDk{wk`p}RIYhd z5(_7r63!Q~RnLx!_pzs7%>4PJmuoO!Rv)Hx(|%Vg6+0lsHBhqp1WtL8%1s#IB9Pv* z*QGb1icKl5mgKLY-igkT;pt1Xri(q3%t^nNqZ=!UV%j#S@z@cGM!kx2RUG@e{TTc> z{*%bB@dD7%k&$2LThjbt#`!~Jdy5Hs29kU(V$icuYAmA+C?CMnzs@8120kTxop_#; zB37P0i393%fe-KNDnD&d_Tw8G4NcZ=0m4*N{)gq8h{+{_B-xB0{>$z4>HNTMlD4rp zhs~3LatKGZXp4)SWj-BM&JsLzClpC@UbL(P_V;n)?Y^%DaWypJv1{T<1sFzsSVBlcKj{=)XtV!_$Dlq9ebop05WltVJ|C$QxC zVWkh`f4~1d%r`hxB{h^1{9q9W3YyENVf@UM@wb%A$6Qq>Rmgh(cLR` zLPLvh6Y-||IcThCpWzAd|NWGJfa2%>&F7oY|Nr;ze>w2K9Qa=j{4WRomjnMl;J~)t z7XP|mC6oVue7{Nn#qQG9Jpe>XAP?02DJYj`SEf8;uZwoWkvsW}YF}7o_b8;=BD)aK z8nzx=sd6Q>xj<*BReuHj_U;yYj(6jaCer!!AGSltj7Y9x|MTOgLF>Od;!|lridR() z6o&0d;C=ni(z@y)99n9ts(Z>_ha!Zk%Tlb%sMZ8wlV7UZo+zN_F{pOV6YRW^ayWVE z=0@<@xQ6nRQrxYooyz@jl-DLfaT@gQaGdJkw^UBZJ~m$sPwI5$sxBI_0`bQyYsxP; zr+5z*FRm8aX_u(3|OhTA|?HP{!0w){z4OG&vosya{NzNdm}hB6`NJ?>Y9PoTQ9{In+?J53UhH>bLaL$OEM8hlu!tEBjo?KyrK2Nl&v%0pS3 z&Q0L!yIpYB=?AkOwGt~>?O~n2xpRs~8P&y!PJ21KLAEj1qMDU4k8HLoOHw|~hVL#z zJD9)LTfM;`RbSm0`hfEE9hg_}Rps>jz>I!W+jo|<<^T`&6d2o6{LLsIhT7F%r22|Cs$B4Loh3qZ-j2~)2H)@e2}6$cq+0ns70>g*nJsat#eM_n z5mL=bwCqmzw)EMoC%coB*Q;7+;mFH~w2pyeK0d@_E6wDvv5SD#8CbTJ)mjDB zrsav-o>W(Ek7p7aa&x*D{<}<6bq&4dV~jML=OifyX0%ozE4&OARM!_R>Di^EFX3=( zWwz0#cTCAJ)|)=otO--1DF zB@8%cpqeNy>+L70?#)%Lh4==vwm@~dcuwmm2Ffq>=MRT*${iWyI8-m+Mfh?MRBju4 zZ3i0b?#|P3W%u!t>{6J2=nvIrtwpugqiQZx!^5sWFR8T|Rb!#reg#2m2%=lZ=EBr- zYkgYZFl3Bgrt)^Cb<0$BcO?En$;j@KYO45nu^rV7;;EiJPEwv^oOgbWcvW-8AxjQX zF87cTzOmbT>(y5nMENg|myA=bLuy`4LCOL7{1*q2>MUaTg=xEYOwn>$*PuH6M^%3k zDvw*_-k)8KKM0gRicN#eX#LSjlKtRwZ+Drv$U&Z&WKgwf+3;6Y-eu}j?BZ8Nu03^{ z>hQMG%EO=MzD>a9UG`&>!|PG49jH3z#fg9_XC_@ms{irQ+ZVFSUp-`v$MdP)pMj32 zDsfsXG1lQ!tswX9OX2x)2+t9z#yVW>>gG9i1I{6bwgwAS9U5b zyG)G>vhM3CraiZ#dh|3^qmpVpP34cd+vwhu*miQa>pN8I7;fDsaLTR0L?*+=pi-RH z5ePG5m-#9+g>EQVmDax+dxa9rz=k z8ZzYARo3sbH&Fdv-uu=I|4gFC)Q7J{TDOv7owr(>f{){euoj2B$zOoH(Z9STyTJ1E zI?AQh5Sus;rP|gTqt1q|)T^~Lpmi#-eO9O}`}UPu_Q87o&9^Y;eRA+m(0WR1=exd+NCI+vKNcjWb*SXTCqx<^6$b z7WCg3PHV?5iHnr> ze=*__42xWjWJ?s}1=y52X`(GPO;_qbscEI^>Q??g3H;{9FC9mJ8dH<4p(Z9Jbf&)6 zUS5`^T^iP`QZwC}X>`sW$%|X>_}xZ2nwZ$Eqc-#~hC}VDfgKa-)+|#lLX*{O-|rR^ zOPiQzO{qmSXJ2zScR%XD+1b}uSN!MlUtVg_Cyl4CX}XC{6TK*T_U|r46b*99I7mQU zpE5%&eBIKmEj-*x)l0W846pPN>GiZ)XKVT#`1fa> z#yKFvvbN6NIB1H_-1u5kSHt+4Zua|&YQMj*Hh!)C@&4zXdP5EW{wwa`?@!f?Z`}U= zs7tpqzBSiXF}|jk`aJ-3r-=?Q%^s}N#08YDlg`q6vdktrO?-fTv-EZuuIVZ1pwpxT z*rzul()}{sd~}+$0MpDkt=2Uypkzi0PmgV@(+mzMnQj|AKDoJ8>mC^M#x=lnf>x)Yh7;Yj+PIj2(tiICn;KwkmOe7Qr&b%E6ky-{@4>a&#H4_7 z0qO0`)4Q5yMyC(bX%DWT0m=t!wYfDH{+8&ZuJa(8@G$yixKR&TdW%@2Y|8y3w13I^UxKXo&#$ik zysQ7uyMMK7WBjhR@!v|uf8&c=X`rk94qc4nTCMbaNlR3(vw zBbaGAeI3m#GhH$~jmtY&qJ99*>8k?zdg zC##*Bi)q#XBel)LwA#_0)OE5(=i*w6$oEw<*LKn9Tx(g=$2wZA-kCY1JLrwQWK>d$ zOW!xrYWq<)K-WhT$Fds{FO(cgud|geXKq%i@+Lvl`Q!t(kVTj^u5c-9V%Bw035e(V1OH>zs+o%vQ$XEHhKm z<21Tj^rLOMpHVaEcXy_(tkd{Wt5lsPfUfUFN=}22uG56F%PanAiTshw+PhL%W>1aI zdkFQ}C`_aCF|w#LQBGRYmV`KrnP=7|3B*M)^M2{nEvZ0e!{4mx^qWOhNN~iWEV8v! zB_ZO4Vp*o8Mn~pDZ-#2MzUp;|M(5|Nlxna>7ogr`hiY_sqTV#CA`!0UO0YtTlWk@s zIfy72OjB!X6ro1PjrvK$k$PzRXmsI3uDMxOW2MHHnO+V=Xe4pkPVtX;Z<-Zlq}((; zrI@i?K+k$55^Nnq)X%jz@(sXKo) zkh!_)K9T0z~@yy&_5tA0j ztS#)b>ey>^RN-fq>1pYPwv<6sMAF2|sj;F+N*QC7@|$Mb6I(e+>$hHn6BE3dX#MnCMxrP)U=Fqx)%UZ>zuG4U)B|QzN%aRqa zl+Lp4X;sCs8gVf-oMi0bKzK*k;8`Lpuxv(WavEuanR&8;j3K0Y*<@?ONGCE!5WkYC zeKiLcjV{KS;4QN)&95IbWki-ci7cxRF@kg?lP(?Z!OTZyHPPr|!$~Jhjq0N)w^zz& zUQh8ME|J-~WDadx*14&X6!TJ9jWxRd@xw{hjjL#Mw6sDOkimH}ZDjF;M-vt*2Di~^ zsMQD~_7OIBRJsyJm({OQ%%JS9#X4U`r_mE#WS^u!u36+r3EzW>nRHPW!A}yAU}c|~ zT*I08PDp8)>83P3Rhb&0TAETjJ&`hizA+!7rZdok5Hc%(bcilZZ%L|Mo^(2%D+?oh zk4U5|N|B=WBXMOBU`7+`$|`djLJi0w;}WPrAdwkQjLRZ`C1Y?<+)0XM<+L^qnL}&a zlr826F+Y=xYq%mJn64P@!c04njwN_gUkz!>5d<;qX)@$+GMmv*#I6i7D^jBjH=}OX zDYhn3jEo@afM#o+!D%}5KrszY@*Kd-(-ad)OHI>T8`+ZGjf6?;$#&3cJ;)kLDB_Ip zPa_cuS5lvS6cW@TSXM||L8}c{7)3Ht1K1JM2}{T*BGg>V5Hq5PpG}D1XoXlY#Do}T zK3t8PL>*?^G*uUxW|Cp0swuQAoxavLivnGs`krRS01dsgEp6 zg(l|K>e5=w+)=$M8z+!a@*tu}&xWa(KykGJ(UhXD>R;?uh#;j1)r_QP+4VJs2ANGY zy5zVNQmz_Gx#AT@+7efc7&b<3$2zD^iq%zPTf+3M{Ufr>`9HH3F|W5m8}!uNs9Ri z)Ndw@L(?`-{YM(sGzVqN6xXJ(l3AsDTGb;_k~1ouRjL>_G`du0C2w-)iqs5pobKee zYyL(yk}sLOWu~VZi?qMAVj+#09zwcF$dWOVBpMOREbAJzGg{emgfdL?j4{+Ag;i)} zZ_%=rOG#s-qJ(Ce8VR1uv@zS+yj@ARg0IgRX3{T6f8gWOsq z)7H@F(uiX7%s#|TMRF#ouCn9I7Q|iRQ)UCASt%q<~bkJ^(QD^Y)>LUE%3)kCDuLl4Gwl!X9Zf#}tPa7*sYC^q~w6ZAv+RDnJgq5|0 zr8WJay0@Tz)my6)B`mDzouxIsCn}8pv$iU2Zee3>Q``&vN-b=xtgXxy0jgX2zYXNx5`w);@JVe;vwy>1ykAD-%MF|9thoE~Tqg^LqQWe87!t z{OGv@!edhI)Cs@Wlea zX1Phwpz0Bv{YMF2>F!u&KX*C%Bhph2JX#e-XiC7(KL*PUEpsq)oGFg4b{T364#!`T zc7Hrj5z5yZg3JG$1`Bj;!TZ%4@w$I6yftcxcw|aD?WS^=%HzKG_u#_Yu9E0ti!Yzo zPha>Lvl^c_`0gJfH(yCb24(&O># zy71%6XW-I;Zo+l>RiJr@;iav3uk;7{O^*i2z(tF3uQmdz@0eL|uGD#a`cA9n2Ni5b zK*+geFm}o@6g~6lh+12@D#wTaJUNq{hLhq$=W&w8;|ZHf@Q)1~dBxgW7|j_EyxD;_ zmS*DX!~^*K+0>vl$&P&Fv3+pICkfsSoXyh8MdOo4ethN3rWiV_GCp`WgnzMfE=+B| z89M)kv_0WsI(qXHPI`PZsO6ls_-n#Y)V3L`J{vk!qsORMn9Hs|rr}T@GjYLX5}tPX zCDyqPz^i!?5b}u1dn3+?f&~*;(>qH@$sjAGNN1QC$Oor}7>k9vx zbu?(@s9T2BVg2Au&rpC)YhY~~y6rqD7N4D740pRurQOAgL`Tcc*m901Z@T373m99pb&m-UAma8*KI7T#Bn0jujuZ~qeDKYJ8BFRZV0 zUUaN)K}Y&tfdx-~iDA|*e8+)#xO>i$poF#6WLwXlf_M&z$vqXFGKRKu^fkBRNi(Oz zr`na}j2P|y^WXt?b+B(SUR$tI{ICIkymK1T_s894gjW?53`MLz#chj-m zBRZ<xpIR&s=oKx)&Uw*G%+LQERcn0rL}gUiVp+~(aMgddlI z^c0kSaF0-|_45^2Ti0Z>cqdQb=wzKR^PYvSM!Q+DNSO=!<{l0Uht#vwaC%|@N}kg?T8@U3f)FzN4^2=~?;)Rhw~-xCO9m zZ4us1ScX2g-{D33k}|c%eMbBsY{)=e4xO_A%LwPpWbLx0lwC=M`Gf(CY*p9~eZjER zS~2DLT_F1=9vBR>R#_<@0HaQ?fvka5IQ0*Qc0Uum;w^Z5rxnae$%iS&BhY{L4@NdE z$d^mf9sLm3o!EWTEnv-h;H``a!ab!9ZyEiOwVpByBZ37TX7$5{7=9;($xw(c&Q^zaz+g z;o0`HNP4F~*U((XT8)GB%x!|O12*cdk#JY9OLY=qlg1;(B0#YLhOWuLxxUSD=+kF< z@-aq?ywg&`h!@p?^o!N`oQsEEjwg(-iWaVWDNbr-Aiu=hh0jC63`6H<-M}MqyRuDC zwlX+y0rA*^{Lu}}Zf+1g&NwLD=VNy{K>gV{U~|)#6aI)X3z~_xosYw%CwqlM+8*{x z&SFZpr#{PrwGj)&0`Ga^fz4s2?6}&&QgWiRhwQQA2#&fx4STKMV$@F+Hyxey2FtND zrp?pv)A1%Uf9zZ!J|gK9R$?Z4?sEtq{yKumu?J!1K{EqkAd-KglO#{5*o{++f_V)O zgK1P%(WlD*Mz#(VyD`PbX1TAiGi@bsbYDqMz7P~HlMG;ekMXE%tjqNtaBS-|<}iH< zwCTTDPuQvELwzkl+wD`_VWFVi4 z#5=(Zvza z^^+U)N{@o^)w;>XHuDuG!j@x$<*56%N>)Y;y*VTh3l>=L%nlv+(hDoeFOD;8`DMrB z#2Kufbra5)HNfXLPesw{+iLFY_(Bhs6JX2iH|7XMSF3SNu=~NL{6xE9c)#*NLH)_I z?Mzji#nfCr+Qt|v|7eSsZ+nWHlb!ggMGkQJLn%q|5;WQSRK;if$noU`4?M~M;Vr)0 zHHnc8AoUMxdhZZ_&1x=llU~A~vvRTIxxO&Lp-7avmH~!-63a}iE?15UQ?a<1v1Yf5 z#bNPVXTJDyC(?~(ENHANQ?Z2Ivig!}fs!wLkg!S|{8U-$ldChYkljXXOiyfs6t9WV z7fXxHHZy?yqaYtGUeeYwHCD}Hnjt6Hv?KmFyW?ABkG%EJjcf?l0mV>+gD#3@P~$7x zjT7y8W$iBUq5d`~+V71NLm1_wd@R|ET(LA5PQ)D%Gp5ENy%)Jj3F7PdmxhTY4k#KZ zemMa1-Rsc&E%_$RKK--PRfI#&WP0>nC)Ib9FBq2Z^pGspmd8EMR56mik9)0?$v-?)pv-^l-YSNuO)JBGF`zIQ$}v{Q6yQv8tUl+@7B!F2Q=-9=AZ5yr*D zMW^^A4>#U3|KHDRjEatNj_e;DIWXLK!JxrOX%Qakt=_pS{aed9C3?`{IJ#dyJS}Np zbYiOBnU3}I{QX=&N^}C9uSiEHI&){^MLzLy32|xRbpL-E)ti4`;+&M??CVJz7Zx`u z?nez5Rs2iwZh&+M;9%O3@n2mw;QxJWMa=I3|L6VxD*qq)q&?OgX(u{p{N`k}8JWsg25p!Hh~AGL0ha9A1x z6$cFfgF}>DRw*CyU#x@tnz6zoT%dk;EDUlg54nAgca{R-mxUAQG zoZ5VkFq>9@twK79?NQdeag!)qOt(+uP;NcW%t_w-HUdZOtwM2B27Di-k+XmH<9|d= zMk_i!A^6t~yy7_&4%XQ!Mp3PxUT9a?Q8klyEh^1V3|ozJ*4oSC+5q06(Jwgf(^{Ob zxEo@9>BQz0M-WF&!6t>5pk15U*tjAZMi*Xy^QP7C*3MKIwT^DZGdU4-WXeIPkULv^ znz5Lz_w&SKbW7ghd{@5SsjM6mUVs&*9LEb6H;b>&x4`V5_t4R4KKg5#K8~N16|QpE*a6T;%p?ewZqK<*DE&V*LJ+*r%>z;k><0=zMje zUhWu;y{=mD`KM`Xp-P@Oe*Y9~INX(QnkulZIEXjOUMr+F?CpqI(4$HzJoI8MGo78u zf`5f#!xgRInQlEsjF`(DmOj#7Ydx2rUGz=l(U!suqozUhj1}16R0OSYNvFRH464D0Sj?+Q=h|ihI!O(gt*hSOc zyul$*E35d|kVgka>6e$iA32f`4#Nm>hSrK*061@ooHWqnX*|~uk92lSFVR4`*~fgH-0o!t6Q1xs9Rp1?9*Hj zUx+u2v1xQRUUBph2`@Ha^n>@1JK-&m-HLttCt;vvHk&!jgSHpxfTm9_h)B=x;{J&- zf@l!ud!%B{(tC755Y-r>CgE4FmvFpj3f#-Jk@LzV!k45E;PuxOJ4Uq&1@ zIRAXa>KEB@*Mi%?{HrsQ-Es2IS!TR_Wf#NG-dB+H3rOe0rSJft{?MUKIoY$qA>3KF z&cu@wUK{PX^5fokVwfA288s0dn+HpULwn3~@v7k{TSVJAgqKOi@ekwpixr1(UYS?0 z;@c>8=t^0Uv$S9RB(4K-kXoQyapXN4N3o{u~Hw{0Tw}`tZZw-+{sJ?7saOCk+{`<2vjPv zNBf5_4NCtOObn+ju?!f#u7t>|nuS}hX5q@6AC;cLl{aR1t#t)Sc7b80`9M6tX_gsy zrr;`c)dm@!y(%a7FYOE2UW4GFQyCf4dLf&9?j+P4ITPtOm_OYMeahZ}^!4fZx=9#q z$vy`!JUz$^Z_JhdWN)XtV~+``A|kwyaL*Kv zRp0&OHzb>3R`yBTSnOiBfA!vJH{f>!Ef%Lh?5TJ$iDB0+&(R( zvu>NANnux6waQHB8T^7ZnZA+iY!JR`xmJJvwJm&~S(fKjHD%{gJAvXw)!;<^h`JR) z`PseC{kV^L9&Yw`mW0m`pZrGbtXKeYQddEC%E`B}O1172PCsSjPxa)#pzrA?ddpw8 zpiW@AKHKCtCg#_`Cij1eU3)9zmhM0CbL;Xje?&PcF6Fbmm#fGLt2Y9Fat_N~sU+i@ zwSX_3No<_coIe*5Z-}Z}q!=6|tJD zg2c!s_r$6;cCz|46QGzyPz-@Zf1QSwt(_os%|e*e=m#SkL(5-bif{FmP7~(AEvj+N zdR38=Z^W@ZU*d{yKLq(dXjN$)kgl*-b>{&2Z=4l80ORY_1*HSx5^ae$GfzBdYc9yA zv*&xN={sDR2jmy!G^ao4WIQ^W=1rEeSs-7dC!7{P+Sm%+RcraxD*^UiUQF?a0}#F= zo(bi%uV!P}I)SLO{{c~#ykO_+Qaq)o6va@FgH}y$Yj|7O9!dmXhRevBQgvcp##>Tv~5Dkl&S!DNnF}ULdsIz2VK?`9Qpd zkxlv;5+6n2_oZQIXVO;1cVcpWbz>}8wZf4gmU0Kk$4H7F1kngDr}+Z;bZ$uc3x$|V4#=>^;7qfjeUY8Gh9%o+m0_zy$}a2tR&ePOn-m{ z9i1HERaFf*o&3SZq_vSW7NnFv3A?9z$_r&)u)QYD;Z;jd7}0X0p~acL${*u#yD_jP zznY}DlM&`Xqq>z?OuZbcz0Cq#wFCZG^g~>l*hicS?vHW%ZRGKnOVPq~9i0BzSIk^~ zR>h$Dn0l6Qt?vdue?YTX^Q(8QNRe7~|=))3!3# z;nie`R%=+$k5`bOX$(X&_J2E05-#K8^NsM{qdt;sORBiH&3;?(qpfy`KCarHzM2VI zx}E+0iC?IE3DK$FJ)$fh=U4|Q*2J-`R>DTP32R@jhNBBR3-WDz#;gf&VV#Anv3Hqh z6xM|If4&o{zn-n=krovjFp`BJ-+~)|3}9A;-67Cv9%`%PieE3>;nB+_Y}}h1sQc(X zVZ|_GoDq;ai&4J9(l61LuMu8ASS^=7-!ABT?lL=rzW0RpwHx#5J%)4g-$?N!_Z?*^ zkJY*ae%;kpif5OFR6IxrTgD3r~N(!`C>&=D0jeuFI_S~yjz?swsapYUaTzzq>FGMVkPwY8HGe2VQ-iq zyGOD&91~ujQ>*|V%;u@sMG!w2;Tfj9T%lr8q};4Np=SK zL*xB@gn_50dfHwk>78lM{SeB2<2{P|HKyw-9gYuAN{Ne&OXPIT-^27zONbATNTbK+ z`-jKGN5t|jbR@%X5{j=$8=f3ZS2UyRDG%?Ek~APXGR=5>XkzEKT{?s}Zrb+Wdo+I6 zp>gNV-P?C+`agbX(Y|w+|M6vq_MQIAmqc-RT6}78yZ`i<|NnJCBb68sZY2KiTE@Q} zs8MIM%KtrEvq#NJ?Yel)aW#z7q)>y6g9DUUl;n@49CtQBB2d=cefp_ajw4UBU z)|fq2bR7`~t%3&Ps>!Rc+d?ba!NNuErjY3K@~5J0%6(DEdOR!}(g~+65HS2MrE{Gw zVf0)L?@^_Mys@_puO0F$sAi|uIJTP};vP``qVhDzti;|>*{n8^=m4#O&PtJ z>&nG&Yk|A8xjGl7Z72by!*0RiJBZyno5*^zj*AXh6GEQOhZ|=r^O*-DvFzS4aE5k8 zys`IW(C`Vh&?RvI+RT{FsEw%E=>%ktT?Y2rang3>il9pw=kUksc-DlTw%PQi1-Q(x zmSsM?hZ9zgQag9PuA0 z;peRK{MMu^P<6*<5w|c4Ryx&}xnIiz(IM)GUDOMk<&5MhX-!~@Or&Jf5nd& z?%Px-+<&9CUd^@RkVl0qd=`$+cnI+WI*V4V7`#XkXw%#r-QIffMVVEN{7iT{!|--U z1Np9TOB@^WOb{>d;nDNhdBc2mbiIU8`>M-Qn#LG5tD!9Q=8dS}mWV*fDx-#@nVuis5&&A?Rdd;d_WN;tlQ2)j-bZIz%d6nLVH- zT%lctd@q&Y?|g^DkTp~BZS*Usk&+NB8C(h^uZeGT*<>dfEo8;{qKw?xAQ?Q!wjDI(U&AO5@$4L=-u;Y9rcvA>=bSNJx} ztCalqq7LpGn+qLqJrcIDC&y+2*#|reYC?Q^iQ6$3D?W4)%RiRly$9yOkFlA|cl&cV z;PJC?+xS~}C2Ru=Df$zh|IrtVPR@ga`Feh(z)TKGybOy{&cKX)RAQjgp7vuP?wsI+ zaX#f`#?lO^*6J`m&-ay)<;KD4EmpjJxUE>R_!}d-HSRlBiLPCPg%{W2vIZ5=Z)rIt1Gp2j z4O4>dqRZ7;@S}#8!b$WS^GUqxR1rKYb{2njS^*(Pzp;y}KjFv8Gs*59<>-f&*gfO} z`%v;ChQA4gHl{;J51rA}u`*oNl#*{RTo>76T_9ZJ%{$(mE)J(0hH?!M27FzHgyU?> z$!ZEmnZ4EoXD!(SGcWqX=!ZFi@Dj#$GboIK^wJ-dZL*@w(x{7EMK+`5E$j|r3zPRo z`LS}=eB2>-xaqA|x_I8#LI)?DM*@q3!D8z}Ql_dtX`p<5)>qt-#OlbXH{s zUW*~KWrDtKrazu_sRJ&F&p=^t$GfGJPO!WkGg+bYXMqFu;!2+!@ZCO8;R5cZWzT?m z8?b#jGud=NA0*6!c`vQNFzo?8Ni1OB)K1b{vfv2s5VW0gTA+IZUit==pV>!{;D>BQa4mM?M6(MR~+YKCx{G6Bd3!q1H6 zE9vd;(2NBl&E;qAkx3BqW+adsi;VM{!FXckyC(aG0lHqgOxIALge zTv{7|2tCB4Dpw4gM_XAg&s5Njxlax~& z=LGZ|@&*%*z7ftQKOwhHM|c~Zi0s2tSnD?#;|E;8yTMag+RY3cxMeQv@EXTDH-4+| zqp+`=9U~nD!Vn-#Qa;Pz)qVoR9ZV2U`t(=rSm@O(2t8Jp+v^K)hnER_9n%yD@9<0M z?zq%48c0{kzaGL+S6jYe_gM&h^9bz3NE}r%1t@-^GU6riN3)eYLcdDs5PSZ9G&_7} z8_;LmQ~ev3>OG%)$yH!x1~zVccUYt^M`z`J5fmq}81Ei3V1^kl@l)dYpC#D!`)?^t zBaB+#n^9bV`td)&A$2Q8pEbblFYS#j z5L5acWSu^)z>G2X*tK>G6c$5{n+4x-){S}7?po^yW-`(_XnV6Hw$3j?({s7t*L^A@ ze*~@bdjR{2NpSx9-h9z}bm8aF=_Lru7=Y&O&@pB1Vl+qql{I{{5t=u9y zqup$Kp3AXwLO1zQIzO{f4~UK}d0xn45T#k*~lk*DT`uFkTP?WG9x8?eImY zcuK`c%O<$W;X^{DMXU#>Hso7wDon;>mc6MgS%SAr?90!VjtE-mRDj~gIo8#Oc2oUn zE^BS>4|lrulPa$2{h}vfww1zWJ=ryXzxWZJOBe&8yC1-_RZOyUxChQnuL6sCFFtz2ZPvS2bDZDG9hJS*PpZxr6gc4KwlR3@tcxI? zGKxij;#M3u?F;FZ9+PrMLf<4ui2ZWUK>iRnYvw^+*SX@-tYv~|kh`s_!q&GIatW5_ zgx~d}=ccnV}Rb|5eoP9?t&Xjq_MjMlJ_kX^2ujTCCE-5kE zo$}`5FPjF3w`<%s``_sMe^VH6cBhg6 zjr#YiyQ%^xD*n#?-BsGJ4p97OUjK=FIss5!^n0^CI!`b@DKa8nonfdiKJ-t`BQ(+Y zdw8Ug+tkg!@!sQ~?x|sMv#5U5W-evgk3MF4LeZexwu05F_zcZ5zavuxGleokB3>^GpHsnk^1mpT% z#gOrn4cA|5YHJBebjx-w@4@$Kgz#Tl5^vU7D!xukU{>3`a9H3g zxamyyKhCQz<|LQk2RC(RF_)|H>~-C6NF&Kqf6oR~Wc4Sc!?lqopwRIq@naQSF!7;d zUEOhimnuMXvI%8ln44({IXeBhm~MIx_KY8o>%#0H_rod?cI^{1lk{Hol$ zu)L(t*e0qDw==5^eBT;8a&!k|CqFiv-nB(+POOT(?5xi}H{fqI^K#8oD30S?X$Xm7UB8N2MJU^r^AF`to zWIqU@H7_5AO-swOkIzE;Gy8Dd!>RaT`)REI%!+>)9uAeZ#^c+IeTDhNp_tiW5%`Vi zD`SE-7;^8ohfDG`+)6Ej~j(hbh(Y(F=ivWnNCL1 z2eG7E0rfjkjyy#74)EUW-mMxuaq<=*U4p-QRF!;u5O?Wr2DO*GgX<>auzr~pc+Da~ z?C~0i3w19HKem(k++Qv7yiegA8yz&dn$5SCsRHBHFUB7}FIeVF2c8;nMsLxglC)UA z0=s3km6gH`hQcLwFyZpLgP=I;XMy zoQ^26<5|u{E6ls@2*Uysp=1wFzUS#Q__$y)`j+WP_nFc*wDFUq?_4vfr~6h*U7QBj z8iz8adlFPLn??0Um+SG8JdEZj`Trsb}^BQEdK^5C=e0P`zIebliRr)=ECK(@KAFP1rw zEJ(hhVt*_7I_{hZ*}M|6KQ2JBcj)A5Lq}(M(LD_J7}3OEOo|k=Op7mDT2Pxx{C3A@ zkTWP9Ki1ErXNg1L|6uPu0HQj+{c&~|qzR}fSaAgrkdC6T_Y8`Hy~W-T7gzUz26`-aB{7nbYPo zGiNSM_mzIOz0c*2czzSiAFYO?gLZ2|W{(h#PMBrnvRQ4h5?*gv1Xsp&LQ2mbZgpeY z{bgY6(^If4paZg3?m|jydx`4>;u+BAM~Qc*g@Lt4GFJP&Cf=>wmR%n>AND8FnhlTf zU_G^gwAYYqq&l&(Cx@W*)cw%<&V0N(Z8M&4;*Xk_gJGNS5Zrn`G@d_unDo;wAYR9= z^;T&%)Z9qAZVC(k^&u?0UVv@CxdP{RjlrMn*TB>cLD>73P$7G223tO>2OOW_0p)BI znB3_Pyp?|&ZnPdQ>mfNmT`RoxO8_gmWH~mcH6i;IRi)>3#|l$}%0Twv%Q&^tchnb4 zVaxF==v(y+-a6A>tl-_0aX#skC_=p<*3!GF6N#>)aLMk5?8!81cA)-Tc-Qa%+<9k@ zdo}$b>F7LiT3aL6lcP_M*)h9}1MHqS0beIy&6f3O z{~slV)=jIiTY1Z%L#l)DEZZzqn;aia&TAi$>$jlai%DZ`R%4y|0|n>J*M%*|%3u`N!GLk-pmdjVb+DV(Ri<$}Ve`#0_$Su8GG*^5nz zI)R-A4grrSUnCoci<_sAoKPLawa{a0UtFd9Bf|UZ_RuiwxzN7EL-g8H8Yq9xS2+0D z0fEa-hhtOm%D4j3FDH=t1&<$d!Y5dXR8S22QyJ2kA#=XYW=eF!& z@O5L!DXqY(MJ){JHWP`rq!qDS;bqIW(COht;-4MnF+ zq^H@2*pVW&fd#d9!B@kqqzj3567>hQ;W)T0?j~-HiGrWPVqm`aY~*~~vVLW5kC6DE zWORXW`@t6K-%HSN;#BBrXGC>)0W=$AARFi*5#LK2RyyP8y*0$EC7e0^V8w|uqV<40 z%xv@o!(+$cs+`l}_cLB;Zk;)cDP`xvEyL$ zsE_STbgk7=u1~Q(HBoi5AM6)gBNtxp1RMUpk7@`Uvx6GYOXxIFH;Kt6yFGvS4x zwX!k3sx5L`NoBVck8TT*xP9q*MU4a9E^5f{VDm>WqHs+W+5GrXI55A2MD~QWzEcS= zWxW=sc33amnWtb>U(JR6lZC~uuOjV}b+GGv1d#s*!)(r@?_C|(yVZauO;1DSFfFdG z>d8i3_(Nc&x=5tkh&LNkA1xE!i9WcqV5soQ*%L1P(pg;WIskShbw+NFB69qh=H(mg zFk`83tMfQ)__#due*0ADI;gBPbeIjBkvR^+V;!OP#B@gf7%1~+!13Fy$giU{%~fV` zc{bWFInDhzJg$Et-d$$L-k$0OV{NKK;L6>?LhF$-ualhN^*`=l@2pc$Y;O;w`{D$r zP*!&6VUg-7Y@L*c+{SX-NBTp$;{K=XzwH09rbN6BZ%^G7tq*@|On>JL%V+&!tT*#V zI8~BBo9SIZlXg*D7H|&9{sQ%vM7D-S-{}u`=H*K1U+orsXKw-j(&Yq_3xRwEiTpm| zxyx9CSp)f?815Ah4TNR)G6~dGhVNStuecVulDx=;zKcT zWi&1fT!3kOjJ1}^Rc(jc#Zmq!mpb#u+ zvjN&SxeUGy6l}tr))AzikbG8Y?X^Ty|M@HFODn0vE`(~6*9t8MJJUp#E7uLe{5>v6 zw!t{pXeW`sf~2Pz`3tZ~*9tgaroWpgrbKT6u5-v2ml~J61?!vXv4*OQL_VzGa@tv{ zu<4%o(=HvRd|Q&GC%ChpkGui$$Kc_!Cq|+ZTdSHZt-8AzW4-7|y9x6mOXp4pub(?G z{rybM@pab(+gqi${zGmv=N)(riFqB!mad08Kg`t}tv*S(@ojNNc_WKkB{k@>15m~21kU$P0Qdb~?!CzMGo0Nv z3=geeg=gw56S<%KlET-MUj~ymZ-72WmWzSut)ae9` zL54_tDRSO9KYT8bpNRW~X|Q(DD7pUR=h2a#Wq{jT@~7e9(z=}9c-M9c*j83zhZp`* zj{7q5zn!>kL(*4_d|NIvjBKt%eNS!j!}Z^vAl@%6tk_wK{KXMK`W?7l_MKgW#SgCx znSay~$u2R+hNp~Vzo5dY*<@?pia$qRTX7k_NZxTrsfy<$FF>fG0 zhWl1xSU`}(eOwyn;j$hLVCs!yIFDU0W;V(aj?_CT>k5)fVOfv;KzdiiYqqRU2+4%^ zQ{etK*)Ak~Et1bc{2we(JNP)|J(%)IboV=MLpuX#{2XKs(ck8)W>UNqRm-Pbjv509;z6O4>Te01I208Q3+^^$ znCsaptoe_Zpq=+V@yP6wbo|e#ZMG%SD0a$mbO~&M)u#WTF|I;Py5-HRE;vcoPOlb? z->eYwZ+2s`H#)F>?QNLL!r>T~w^~Sg)*nus>xjl0ebA-KBpm+RXnr3H);LIa^lorZ zR}OX^w~>ag&I6Y-#4aP=a8>CUKkcwqAp+9Mq=8owPVRbE>i@^W8e+^Fv$ z|NKIH@vV}@?c0Fs57|TWVS7beyZWrU=nS zW3SW$cl*_BbNv9#!u?KC>;fh|npaEO-AocTm--W8SHH%a@9d!8tg%uQ?16%(k(?G% z*hOpRKB+Ow`#nsv@SrCf*W8*-8`%$PwJODon|=|f9pWAROgz$Iys+f!Z#Ap0ZAABy zZP^dCW(xVI9W)0273e-{p-}nPxj1deQ7HKCchM#M1qRjF1bGoh@KJ|~lFNpUl4~m^ zbDwsZ;uh3m#^8%s{q;1=&)=}qn0gqlwQ!WKR{B}kb-Fy-4)a3SDWkC6)m0cvdmNIU zz0|Z@8Yyia--X3BIfilHmlvq6lD5xm;wWi24(8k7^S@ z7yU{ZslDR3sUG5qvfbFI_?h6+YnL%7b1^RW9blaM@m7$g`IIigCyco0sf2idq-KkZL_8(srSlx5*sOKXXH0K%&?D|-& zb+V!qBn7}cHU1;mFE@w{gDlyfj> zN^SP2ODJr6R2prkKF9n@M$Gq4l2!+0OF@QO=>F3(w7Rh!H#`3VjYqplq-P*0s2!*# ztHJeTaj9}|Z}Cop0g}ho(_mONkM?)h!WV)k?8(hzQGWtU%IJ)b%C7}ua&25%s~GUM zki3i2zH1}pg?It!L2y@CiCoTucE5tngGQ0w-2-w>!dZ)zLaNeM z=ErItuXb)eauo`4_5r6a@h|ZM;hMYhfXiFZ&Q=2DD{MY+2-t|naP9C=yfl9TZl0Ve zZY~Dc?$KbZHUBJLs$7=c*_VM)HD?R8I)c&m)F7ZfWCtEHtmVGl7#B4ex22C22e|~Y z*yTOZ_S9=(ee=>RXlORn>fVFvN{EUGWSi@_GxzqSFUCC;DzBU&yt}JqwXSDkto8_e zl{yb92ZiG(TIey2HQt_7%^xaPUxdUnxGm6zedVLXN0$VN*EMdS73TeUQD|QL1sv$p zND6x5kM8GR2(D9XF~9R_nGTyv4P?akSgY*{jP-q@(Qd9JZGKx4_w1jKdAWmle@K<@ zZ@?ErK{BihWrN!O2t%XP?9ue%(!%`{Siy#cIPJ$bJFhOhN%FT>Z2rPoc=YQl95=TS zrXHya?xQM8qz?MF zDj7EIhjur2;ni+e1mZWYU)k!}xf1X1t4m*!-5nvikE8NErE2AM!tRq@@kPUH8mp=j)oY*ePTw^cTX72xaz6*Dqn8UL z`*=o}N;;;JRGpQB<-g6wNpBU9x;s}hXvSed=aCC8PoJQ16^O*wV&)cWiEIRn@+e8M z#m1pFO-1(pia0#LS$grqSz(Z4St)2!HK}=Q8{q9uKIMu*wHuKA3*|ZlsB9ozBUXRy zDsdfIaL+{utFjQt#&TIgt{YZ&nIaHP(e}_u?stf!0|b&&k!%6(Dx;RRZJ5N!?n#g0 z_Y0kl&Vp&|0HjXWNw4pbZO-c@+J5KCxLjYIWfVryV%*f0O}QS&cfTAKxP6Xux&pP_ zYfGdXSd?))9@v%un(xQLz2zQK;j4FJ@NI55%8k6lSF+D+|E%t;lOXcEOzEJAYNtMRt_CFSsWL4-WYed zlSH-#xxQIHu^icqKO)JW!%N-gLw-VAB>6;_dq0WE?L44g`w@)GMnO91&F`jhe~sks z0P#qausXh)MD|4fE_l&m=b%=bA#d|Kob^jZ&WG@H z*0Vc@f54dw?qk%cGx&5W;N6@T(6P;MF|z9)Fk>7O<7lgQzg=_Lb)Re4B;Jm7n(z}F z5HtqwEgK96n>Uphw2?|Q50<9&a}xIk>=bsE$cCHke!*X_WE*!(Z^%xn!73N6PM2vB7RySI$OF$K1RUQ5TqBt?+a?UF0> z>Df(eHFU1fy#CklYvNCEC80oE2WyE-dTumu4Ji(ub}gye$vxF zBc)}3_7LB^Ua7H;EWw^Mz8+Dqz((@Ed>5@&bYZ%4Q=rsyt>iPg9#p1%Jg2tT#)o!+ zQlEVlrS|K76P@!rz>l|bq2BlfJHwV~vC^bA(moq+$a#EUBX(*jEwt+l-U$*ct`#pC z_Z;T;p~v0b5T264e21$f_}-h!>Lo4f=#5?*Z)vJJEyL7F%i)pHTKcJS1BvJ!Zy^rN36{DIJtGE& zufXR(F8qVl6bAP@aa=}!p!#7z`ID&LGzU{QG=|5u!l2-MW9i*`E0%fu0xF`qLDvlv zal?UO7-eq-FPhq5lR3?#;;jdR%cQbW>AFZ$Zl%RU2OS2^{95R7H(J`eaU8Q7@BPSuC+1Rrx(LZHBZCl zhu7hZ)l|;Q!o~R~Ammi}olo6dklw}QY#ZEmw=`?W>Vebf6>xq3Xii_LzHuo$x>i<7 z&?jK3;RGZcUnJ?DRKdGt)aY~HO4{C|9`W@A9HveX$K4(;s76I#LAae1JVYTyg_M>Y z&mI%@?G=Pg9lJ9_Lt0YMcpQ{Swg&&kj#9(Z`>2nq3kObA5^|lwq@2fTQpuY%J^XUG zanQgw;>cOixTA9(I@W0pE&X$0)@gT%&6$ELB9uFKmUw22ewNRkcZgvp4&@8aw<=M( zSqe6U4TS??f3WR6_CRv>2q-nMChL0ijpk5vadBJI`#|z0eY0*C_RQS}x2GzkDZyJH z;Hne6bLj;2Ul$kr3g+RQ#B9tsKNOUX8t;CukjJM2TRni0~Cf(WVY zTmgl#G-Yj7hw>jU_i-E5PRRYG5^MKu3BhZlPF%Ws2^bPeuz@#U0nt|EyqdQ?2`joT z7hbP$VQ8p|jei<}4pm>^;%SxGz~ttUL5Ka2_)hcUK?C?ULIUT?)p6y7eBrUn0_+f9 zU%GtgEatTz&yNx1)UT{ibsUsku`MlK)X#@GL}zl%j5pDzv1{QUkSe_ZO11g)Lg1Ta( z-VL$q(ZNW%4$nt71pAVWAl~4{RH=z#>AD~^3e6MrH610_RXZ`)*OqNqA4q!ODO5hc z4#_5=u|Z|%a@G@nvhD+7r(?YTpml03>EZC7(aL%*I*s;0E~~rW))0!Poy7YUr(lNx zv*}ZoHTlDVk)B1eQ-Xud7?2!S;GvsGVBMaQ=n?HNguDupeCy2>{`lseP zgA>=nhV|>jDZw>_u=@5=l|~hXKErCr{of(x0j&7`ff2qrj%185`5woJqE%ZjJ9rhfh%?dTieKy}nWGghw z{qBL=lWAiAZO_C@Emwid2?hIY?GmZsTq~Be_%^1VaDgFXU2*c@E=a*aVVN7CZ@uzt z;rIXvs=Vbq!FWG&8k9fS6b0v_@ZItC5Nt3pZ+W_6-P$9--*yRhZGBwxW7-2F<$+rl8zYD2Y~VZrR(nFkuV3XN=_39S zG9n8!r0a$8^WTc6CVNR8E6RpXKR(O9Bd1&Q>X=H}B0BInmf*Ji_?wHFKOu{P52C&8@Zi&pGi>MS7sm74wd z6^>rrhuU4A>k^506MHo{3@@*bf79uYTg%NA4LWuTPYDAl5U*f6- z$v%h60JiAwhxM9-BgwOHc;In}b&-&CFFxLUMb=?0f1QP7$GL3750^^_#Lt?O2_E2B z=Lq<BCD*Lm;$kA`fo&6ke&U}W4u5L$oJXKh7dZcmb+eYlwICtq-Ob{zk zGC-WZ(u+Ae^u=Mfny`>=fw=nB4w%*Z2HZH6CzPw*O**Hq#P;pXW&OvOqX^LoV_N)X zVTtWXVSx86Y1V=SP>i-^7n3`}xf2OH$M@fg%OVwMtS8}1Zu&T0r_zj+H? z<`syQlFxv`bBs8|%Y}^@2$DzsX_#0l3>{1F0FTUxtf}K5oR-#Gn!x%&X!YvYqSPki zv5cqK-X=*(I+Y8?jnWAba$~Vg_F>cWudzyx=0c)oI0gi6gT?~|Sh^?=J1)3}lP<4^ zu679a8pZ@S?)iT)J;RTKvNGlcX z4Vv(0ODIC+L|9}umR&gZv*6T!GYog%FD^M<3?}vq5gzVaFRIGYO4PFkTr;hfu>OZl zFo#z0*to|)#bf6*yae=8hD>Vz|wr06sH-p1#YZ`~|9127iJe`^hrxx{QooZi!a9YnP>vv`8tQsJ~k5R`Zm2QgdJIc6I`DI@g!i3lBClLT6Q1u}ront2nPCcGTy? zjnD(4ddV2La%LQyFQ@=*Pu-De5bPf$?suyXoaSdEbkd=yH^Ra5Z=p|Ib!=O&DhufT zEw;$aAs+uplSzkd{`q(Yto|_)n)Mlgk)7sX>&5qRl~%w6TbsyHjiaT5>vq72#Sd{% z)oJ+ByPQDu72kMGfeCACNaYI3vP#MAL{3xJ)4##dH6fDjO?@`3Z87%p$s9O&aRnTU zSr2`x`(vw;fzV=UHdIhu5Y8>HC`Nfrl&H;Yg2PK;f&E0G*3$*JCNKhh6Br(LcqLA) z??GKN;Lob!_~(mq7ere~ho6c8qLwC*lcO;a-B zSz+qwG$0ujr)g59PQ5O}>0-U$tkXhauIdt;NY7-`T&iL7{x#szSr>ALyd}~#0)518 ziqk^O$f2C3D0G~G#FxD9v0dsfn)Uu67;oW+g@tU-AY}VH}x7J1DgBPK2qJ%&EJg*D>a-bfU12(=vIO}-gDpK9Vj?2pn z9j&hlD`!N(pbk@o`#)?J%PpS+GYx9#Qsxw~^YM#9Y?B!Lv%_@goaGLIFT+SDDKPEj z7EOCYWq3zBD$1;^!sSPN{b&lzJ?|#DM_dQkpMgPBL!eBt+nNr&uLIQ!iQdND11vXu`4Gq3tA{$!* z<{v#Hj2OI6^k9?lQf5i9spD&`c&r0BHK+l+?nEDf>ysRxg}kq@yVY^cyk*m1+|^oA zzuzm6ZXSojM%hSiskekSX?Jl>)@<-Re2Dt&2&@RMi}qyz>b4t$B)?ETYbKS~4x~qu zIp5>h(nh%dLm2K=4;SnkiAekz;ePUlSmFG1oO=4c$nDl26Dl*RBUDR_#_lza2}BFc ztOeJ(U15RyYrquYk;r-KdKw+NZ2t@7;BboikMs&i`n!D(Hg`&F7jF!sRnME{O%Iyc|VK{y! zOPp-?So7>@6>;&q!<>gn-_Jphqiu{=GMtd>ndWOZV;fCx)^%Aa;bq6!k@HzeNYq#} zHg>W|G#8d9?uAw{Yhm8GQW)Q}HLQ!@A~ajppVtSfh3vtb2OHp!F;2MkSydqUgCkdJ z;N2fJFr`FwSO^m$$M+eCU)g1Xc209_w(O;b$`+_hk>o_w+Sv>5JSXsWibwlx0+-kg zP`_y-X|Pm+ZJAV!O}G*!>1M@3y9|_B`G}Zany!7ylB&wnM{dOm+tkToZwO5okJKJB+!e;j)T{ zTx$z;AC4s%*#pGKIN7d`=s!IID=N=n=|y)0jklY$Z=@3T7)J=ihj?7*!+i_*ZCY*C zWW5m1 zvd5dXx%drqaGEcCwYoaHcG^}vP+AbwbRad^Xp#C6OI@O!DTfaW+}4rplWiUO8AkE} zb|x$?Ce>;0gegBEoH10vz7yt??RQ|Fr-uXCUQLh0dLrlh!wqV&O3S9m`pv~&FLYD1 zg%{)VWq)P*sbA6O0G--Vas%_Z9PTP50XTK34c<29WQ-^@c?L29l3J5%z1rtP|JBpIVIv*F}hV zLmC0eA5d8^yLNZ%->E#?)3k~4>xbjeW9bAj&o~@g#BPLBr+SIS2JgW*Rsw?JHzD`E zI;`;E{S2h%WPYq3q(S0WiSlE8Ci^k&8~g*g>5wv{+a`g1BLQx{iDfeu_8_0p zo{@f*ocg>3(qWpbhmQj3R)qTQlD^BMP!D5~cv92h=So7~ z@8=nLA9BB@QutXAAD8Aj8fO>GC42u2ybtab2S1u5>>YAInETBvbi1G?T5FNZd6`qU zVQgs))ZDWaANYqdzn=s~G7DLIeMPc$ENkyd9DO|s%J$a6_1TAz)1UZL+P(QOUO#kD zbAM_Lad%r=sb95x$Q4K9cMprRXSPU!>m4M&zfhkfo1p-I+TV_bean5&8dE@Lmg zE6*xMxgxh~q)!<6)ll`+P>su3{SNHlD*ZH&LGyDjG~Ig~#h$_6kt{t1?nm)wO|I=E z8M9&I``3j0KBd_a_7W=F7bl-DlFeRTfsvnyKUB5?>!v@VyUh)tx?%mYbc%(|FSw&q z1>${csq)-bz-_+1Yc+WO`+Ow2;Usv9>!xl7k{RaAazyHLX^Cb8Q2#^D?nQ9WaftBC z>uA(>T@J;s)@1cZS&I&J-r}Mftu(}ctZdy1>}bDGw)D^e7&vYQ`4hQf?gLxKbr3pAoQJ3iTHFC^nCrDKy<|25A1~C7eQp3)@j-m zyCV|c;LXTkSaIHY@!WzNG+w$a*fy?%K>?eMTxVo-3zDdR1^1JQ_*0`Ow*B{cv{P%H zY*&&f3|EX=DIKL@XM-EjV$4V@Ml{v5C>6@aUEL=14%{w=?e$?~Ki)^YPfRWn;VmTK z(+K!kI&D&#E+{SOv!U(1yu8$p7Oq&Nj-mMVhOCqUI=wncr#9#k(=%urd5V^nqF1k8 zPn({Y!SBHprr&_?D#YQw%yv*;=QipnLpb3cah=siS*R zkUNSZm~JptrM@neR>8|DlTzdYqqF&1(Ue5(-W7Y7W(3nEMgJRMx{@oAot~)8P-kXk zP!*`|8EScXX_{6|3+mN$Gyt6jkf>Gbb?OXtwmw^%m6D;>=?z+1jNg;ip=J>gXuZDW zr2ut0WtO~mu{vGH*WafQk%&?{b+5j1y<2H}7O8C;B66lq?VFjZP0!E=sP)+i`b4_L z;{?!UUtL0SMn-Qv1skYdy=4L|^3TyGq@>Du@~U&17E(EpTA8IyrKVA@1W=KgsTuv% zi4=9Be&gW!G3p#@T*DNDI$DlGpf|7ow`pcY|9|=Sg#uqF@Pz_jDDZDm;9EaC)4GKk zv~6K@?@!h(gw*`6+O|+=!QO*j+nDG}y|gtLeoMm#4Aq{UN zHIjYdX&0-BJRibL2sa(Z$70gciAym*Y6jk)x&?X%*5>{X`E$ob!l@WxhGG@F(E|D3 zvfoC2JokABS3D&9^S@3P7-2Co9&lhiYNoF8kvi%ti19~`Blmqdu0~^D<`!L9L*sw$ zue0Nq)<^~4%!VJYe@Fg&wAebwM3!V%hcBl5DF}qcN*kuEmk5)RI%my7 z!aktaj}g-8mCJ;S4z5y;Pi1yG^^T^Y+isw73~-G1$dxTv`r`O5QfLn0%|bwsg3g$ zXN+%gB4J^BD5{DIeP8b){#u0|ic`=MeiwP!O&dlK9@GV&`g)7SqXq!Sx3B4%NrYcW zoodJPzL1(X*ed?Gp)M+`j37*)hv*v|#fWdvhQjgESdtNbEydeUU>z4|2_JWs2#1z^ zZkk)5lS1kAx`j7k`OJFQI{g7uo_ieI(Uc+|uPw1H#s)o}27Jzda0^B_sKoi3aAlFO z9VsbkKixki#88w78ruV1BViaC!uQ1^tUu=^d=wWTU8>oR__!CleyE9f`hpi9LqWmu z%c!694HBjxwO*Wt5fduP*cD+cNb?55q&2}p$t9UMyY^MMHM2gWIRqL_Hk|Vuy%Cit@4o2s^|p856*v;A=5IstnLv2=XyBAI~%#R0kIIXbIU}mdO2lD(xQ3 z)>mXCqavTHxc2S{5M~08|5!!iLlIu>a%1;ihJ%5^KoagMmAD)rt)6bA@tYMR426&R zkT5YkU;CO!bu{YU>?N6K1@o6q5-u$*AvSMN6YT~?NnRQiBl8$z9#zxYqf$A9wscHB_UNq8?a%cMliyTjWs7N1H$BqhHE(<%y_*C zPbO?jA?XgrXeNOHX+8w@w#gHke)9$iPsD18yJ>#oDefP%o5s-&5{)s9KVGlHb<|Fp zAJHh<*)cvAEY~ZJu$7g<{>FQR4nNOF!hxiD$>)%llbjGmW6YtE<%`djrY?SvxQuYVQ*CZcSl&h! z{6jDX`>#imK|ZFEIOY=kVm-DimW+h2!1R?%arj7uJfB5#9nf;kdd`;u*T3P0e&urSSKImg-{vf5lcX`3z`>N5y$&!{6+ zO&cZ>1}V!t@gWedC2r}u0y{WWl1L9TJ}*K#la&(E@ru<+4dKFkj)`!v$70UYg>1ju z-biXQ(D+jbXJeE4)l^S1xYE&Mca#;aY7v=JH0#q#}&ChQyE?uOO z$c9LyGv#OXsuYv9boG&S?fMrR@yR3~lF7G5!oVc1+s{NVfwL>rwA4q1$qBm%n+k?? zQ^RonQWr)zG@Syo5y%cn>LV?s%zXjk- zKOAnZ`$_>B6< zF{KvEm`V|jYE4`O!no4Naq zlj@)&%(m7d$ChbMM<88`cY+urT_QHx5Cy;QsV0rhddF$aHgwy7L@P#kpJaREd*XL1 zKHmm)aGc07F47Hb%B9s<_QVyD+YdgU*dp@}jM=nb7~O~g;n5QHF`q9a`ANq~Yc?S9 z65+4C1U~oHHrop?Db6CtcL=XTl0g|~CA%k(4Hx$hie}-yON3cY9=y)*a9@x}{so^i z!Q*G1Xh_GgpHsRr!uF8n@Prx8OOWF-gy~WLR)Cp5FTi1KM;f<(Ux_80wqa!JkT7|g zFWC$<7b+1BDG)vaCs(b+XFgSs=73;N(}P&t@lUZ-`h9Uy#_x>s5S7gi!NvRz63Hl^ zcSD*}MZ$5V!~MVIzeTRMiVvtoyMyKk+BrwW4F6z0*Qn_=eJ2tI2kthBn3$GFIR6Ob z`Y=zOht&T@!r6i5QbdkDPh6TKxH+pOH|Is@GqWzoEJeZ`=@b}mj>(dJ^W=I$LvtJ) zvo)%h*y9fyW5};?7rm2W$*#A^ z4!K>VIc6l^2CJMIO}bOX$o`8bZ6636DLqEC79z&5?Dc?2?seG3L{QBI8cnq#N?!u;n6n!qZ5@Mz3HVc zy6ZMORj2RTMk}AbNKi(+HajWBK>KbT9R6vrOjAO0$Od!7!yq{uOGE}skVXdw`S$1I zFm~}VJtX`jCDkX+!GRwiQCK5i4j&o%2dD{pB3vebP#|3v<1rWl)M+|{mV!WNFFtdw>INL>TJT2;9lM!COhYGYQkB@Jx6GOPDO!%u+W3$2`h3NByicNMkzlCuQ62n54j(^r z7IJh}#!v3#$CX%urkalQphG$+ifDL5Z9hwD`F^`Lv8_LoEx-LfTMF~pHzO98y?EkK&O=W_)#3uzPc=5KRN8Ge9PPn-rJ@VK+N=|+&p_^ z=~4_@y*5?XPn({UrHcp+soRquixNa&p{M!HqMgNG;@2iDn6}8#! z?J1sG9wdiE1crpG!$LJR!!#i^Jsr%&zdyUhe1mh#C#_+h+$qX3pFh&2NPb1mb@6PI z%@vutJ`Jx8bi7M+Vq!*iy210k7!-L=?rwhCOJTnkE!M;&mUCY+%{~4}3i$vS&WfKr zkxzl)3|RDunHzYEIadTInvV3f@gE=hDT{xiVc#EdE0gPk6K?-SP1}R8azjQ2aiv+~ z_s!B~>P?x@sW}AZoA37wFoF94gxKpd3Ct#4$7F=X#0KmOj3rrahsNEn)Bk^Aa{br*O6mSQ9leEEZ?ROR%TtJrb_W>R@_}O zxkp?Y3X^+Q&EQ^1mw}$<^kx@@T0b~IZMs|JR@`8PYhF{{n~J~pEWh;T|M=c)^~Fz< zjf2emMUSTA{?Qjd&1^XTU-r|i#{Ul;BUw#!u+FoxwVG*F{F)-kVS)8+`{PzKZL3?Y zEi(T9yPw1Q+xU-Y^RZ>EtIakf$0uY4Wo6LX3tt~PW`T?|4OeK0nVgYC2HvM(Y+Ii= zKg&3q4uv!uH$zq~8S7#H#8?*r4)pzLP?8p(tkb5_A(I3k{HO2(Zh|c)yU?IJd{9Oa zqfe4*Nz}#XgG4@YilHMbk&|BGV*>pR3?lox|57vF`^K^-{r|YfRs?^MN#V;}>CF6J1mRlxQ zDmWvd7dO+6Z@<4XL9LxbkQ}ik6RKxT{ov-;hl|k8> z>A{sNAxrO_GJc~-MxJK>oZK&}rX>qMlY__8>iQ+>GHHR9{6)anKgr3HC~YpobFjid z`Xy4qfuL$Hq~N`VoaB&X9>jVL7d&=vkfVQNs_YD zEO?A%v}t+Ua$RKfY5F;Us9}+r$+L`oq0*A9` zbV_GF6BJw|OH%7uh1Rxy%hqj7&$RlUl(I)qU;4H*pacDGn-NWai@q<9j^77pZkCcp zD@C(DlY$`Y_jEFixYOtit$1w`VW2dJVS2?p+W$*Tq%f6?QklSzAid6zooT6N8=b*G z8p@1{QGRmD*4!1+)7*q1*^Sn9( zva++XvMaKSCbvQvJB9x+S8BHHM~HK}&OlSSz4d(9LynCuUe}Ktk94hR7-YUkrGX+% z(K89~&Q6TSd7#yvC-3GujxmiM>O+(nW7wRv^LnQ~_O3|Fl$}Qs#uk{wCqb8YPJe zDDk-L>lgrvurypV26G`p%d$a4e<*(s?> zrZ?0y=A~JSeg=&?DA+Q8DJP;4sa$RDMrzbCg}>#8{3UHlI+2P`^%N6>R|3nnWo%mr%w*$*i)Be>K{IwH9aZPPyAk>Iygt06`Ylw9&D;eke=$G`P@yp zK=LFF+AL~^Hnp#|zh1t_r*h?vH)ZHqGqNU4cheu!G7;*KG@97bsH5c6YPCLD9hj*0 z%+5(6-#A^(>00Ou1_sKj7ea#M|I~qjJahH?%yj8FDFjsT{ZJOt2C5r0i*D02KDI@B zmc(I^j7WJ`==Jn*8iJ94i`gn!}MTB@-n5C!+Fm*0vQm6<@moQ5w$xNYiS`Y8yLb5c5 zYZRNmlqJG1NgjwP5oZxJ|}N~ zB~YX})rl$UYSq;I7m2i5Rzap4{b;yK8cH2VJ059QpE@vA{k{~rWhQi)mLQS*n~BJE z8BJb#)^8r;8KCw|%+5;X-+?{&-(-U!lQ=XqthOwyB=Wr0ah5rMLIe4BJ~9xYVUZ?9 z!Iwg%>1d#+QHNRX$onwKZm7fMGXI7(Jxe>Ad5(CikmpoBPG&`KL)}i0#$Q{6;^u_b zf0J-njw5mLh{nXl)*o@PNhIakniI>eVRQH~qaq^pLj^&zr zuSSTas|q_WwD4A8@70js`;Ya7oTNwxlL&mQdun)=b})A^k-e~km9F;uuDz9&s>od* zJ9B5M{-!gBgDrLD=yueZ^gf+auGP>RtbKU9RjYli|HN^mHx8nU5T2!to1P zGOvOS@zh9e=01k^`FdYIU7+@<5ftG=U{)4+I@~pO_`pzqVEZgihbGjd2S0ZGK6q2E z;OF$hXSlT$t@>=(I+nZ&Vp2_^Z*K1D!l& zU0YFUYhTWvI`)HiWm`&4+LmYm%Q{gn#SqGNVEis&&s8wC)3D1!#qe(lZ+6xbbLL!x!b#Vwu)}sh%B%_ zQ)hV!^)+2vWo7it(x#~!P^S8>G4klb@To zIcM)(%||tUL6+53?@1O!Zi}TU7A_!{ImE-L`9O``b3KUSmDO`fKZEsy?cws#;d#Dbau3KUZI~ zt#U5HQzLwQNL`HOT;=o;+j!9k=)Z0@@XIudLH%W#R+>7nhgzS}!_ZetGu$IC;$xStW=q6JQs!(5ts_M>$xhe(Whz-iexw%y1Jg4CX%ww5TI63;qp)PpP%k1t z8{V)F2oTgW#gLqx(3OuBd(b8YeOFUh5{^EV_T+>l@QP?rNJv%bD(1V6MeZs`lvQ)} zz$r)fKk!fkDc}kRe@rX))m+)DGt$-VTeUIQjwql}4=Svxp5T?L0|$~?P9*PK9~2YY zs#(iUviVmJ9$fb`kN8S`dZaelZBAyw@OZSE9%>(Ny^q?b=sOKsw`|dtu$CB(x5PJ% z?bL=|^-)KugOdpl3zpqCIcf||!PBXQJVuK?_?@A!{7Kh(qgio-vC#kG>zXgU-Ti;+GRNh-#3qe-_vFBKV? z{pDR^Svnr!i0{LqgN6TEI5mvQX8|eR!29c&95@*oSB`PO8YtF-A<-atf7A<$MCu&rqYlk z$pj)LWD#thY?>0{+AL5_J2=uE9C~FW$g>5qryfW{2yTtZOqj>RJv3^QQ4Jz2Kb^MA z7AY(!O_xP;8hjgIA-qZ|QXj}i+t~@Up)EVmJOkrED`qpzvl4}tg=3opKhn@8$pq8M zd+w;>rY%_dU>W_S6m@fIyq6_ffqua)En@T42eeuyrNi=fi zOL^4t+z6?+-n2C}J)U1#u(^*6MWGlC2@axy3mGLbnKX{Nc1Vc&qX)cpoUIbI>FU5n zAJon4Kv=wls3`Nh!JpQG=DFkoYSpayA0?6vu4j?gHSb-IM6Ka7uez2qJEg>`g}#(W zSz`J?;$OQDn4YholtTdK4R$9EAJu`U_{eDi~q$D0J%49ZJlma{I;W&ZBzPTWwn7m5%k$apKbKnL7$!U zG15n(&u;qcq0e50-LSI5Y!!C7DY;oHh1SV>cw?n?ZYz}{v4r(-XO$vJVVxW0WIdv@ zN}*F&59_8<^l-Ayqvt8kcEcQU4Jt)1dnMgXb+#U1uTrEbmF1m_>4ycY6d4L-B|Bw# zl|pZCog1rC*k_v z=-R-ojB5$^(h9X*MJKmFHo{_-7nML?M#r%ILm%DQ@~o!s0?#@f0@xtDfzSJW!u z=TxzB)$$cxYPwOLbzRl1IA#hIhsA>dpx+ z>F!;MP=tmz#u_)j6N{8WoIptjx#Xa0> zRSfb_IOOVkhQmNGSBg)4s zl|8bY+`4&qwQA>4t!lV$fXceMr&5{H!`V7-F!dR|lBQ6)7BA&c+_jW*iCl%VN|~Zk zq&r&=b5tsOW!Nhzi_{d#+<`i$gmqrJQkkYxDl70S2Sea6YhR@@Bi)|g&?~Gxx+s-; zdR)TMdiX%f+Sy@PNR=v8R0;!iX9FASyp~F3ww}tasZ{1<*eZh+Dgr>2*27AwishAW zNhAuZI6Rm-+=0@TqsvgbR4LT-D_+$}rD*G~Dy#BRl~I*asZ^EdQ-wYiRK@A9tEvS3 zEv<5}R801J-JY6;Uj!IQsPFIHB=4trbG4k{J^vjh#JZ%Y;3;iw4-|uQ)m~(*n zow9No-_N9XQz>$-+*E;b5#=dCMU}70T~4m1t4ii7mXRx2PgP8QBFIIlR3+)Vgo%6Ka=8gklwZkW@=t|zMU^tQ zLnZ=`l~PeHYkJd{Dd|A@ zmP+Me{x-d&Qq?I;5iLI%(YdCz)woFW-UPl2;=S$X?vHs5wrMAa>91!>I!%0}B+=m4 z{FJ|D+CmYOl0*|C`s_r$ZQo=bWr&u;wy8O~c%G7GI?3sv@U656?)}gAV6ANSqZ4^F z1an;i<$V?Ez$jiFd3P;_RnyK{LIM1E@`P-14diXLDdrjW zK=VFXjsvUfewaqy&}PZioEe9SNT2yR<-dF6 z&-T#ofA^KVKfQ>KRiZC~s{Z}*EQdco!s53kqgL8rr{5eu^z(u0|9`NAe|hG=cH`eo z_`E?Lx;kNPm9Y2EcK)k#VBL zr1cM?0SFp9a`2d9=TOWATz~m-@!3L-4&CcC?$EMMm-eljwxjcZ42zA37aQn5`$%T~ z+dKV!mVf82)kD=k|G10#s!Q<{{NYp-$KT%WUq|jA%j);f`Q^qm5&!=U{~t4=TJ#?> z`oCU*f7OV8ENJ4KG~#wnq2}(oI!oOD2CiW^GpI;sPf9kupgc?WN{CzOa zPt*A0|J(e1FwXz22jfs7pHzA~T56VJ=_jRNRC{_k@=h2IBiEwITG7J9c-Rh`qM-;*r%);Uc{U zIJbTlGkH3OJ3b!(&h5NK-jR-YbWAKeInht#+UUsY4ePNu*KEOYJ+2Zw{ zAB=s-gj;oWv9sA>?Ami4G%|b!!|s%q>w}E&vgd9%uxPsZmIpcS0C38 z3B|_sR%7O)F0682UD-3dg=#nSzpuew=M7-XfE-MJ(Ew_WnI?5oYI47aC3(Y1i9U%H zDxhhe5l^a=4t1N-o2v%-!u^vIu-U<{u+zCJrtI*L4gs++^mYTHn5O1vcS8J(1S z$qjb-Y=Kah8|a@FBHnyD2-L^SA91l5H1rryzeHy}Z+w5TC9jy)495+y#%2C~7@Ri@ z&F7E8F%>$qItis>&CktchNp88-|HthuGL= z;c)qco)j+Tc)K;d>25-O5SveGKc9LeX#U`QK@04C_$71AvXFJG_KUvTSBRmx^R#=G z4$y3DT#?uNG6WVM?~bi|Ovjq07GHA|>hps@eZ*-cj_`43vZ3&5X*|^P23We3lKVF%h*KW>>1DB|(6Hz- z7!P#kVS`LKn;i-PQQHA;=|D2iW0^CYd8yhF(&bfU{?NGvS95gOvIC6awEosZK3JtAw>()T?(Mh@lMHJ?zed*ujXC6>EP+EzBEa*`1vN+5 zanC5B>?OR$ROk@Xo!u>Zf;Yxh>t|lz z)p)Bo*ExiR*Z9a*#_bjRR#4j(4#kOg^`twLkR!FLv`>d^!R=q0%lH$gS?d+MVP3}z z8Pz7FgRXZKIQe{%OqzWgTFe>Gh8MG`AV-K06vFlpZG=yk3D@ZhT{Q zmJ&SD_X@fO;!m^@iPQE&$p>vYJ`0D2bjs^8ISF7~A?sP{D=u26!3#F8z+~w;@p()( zjH!^vT%8WVu84@W@mvJ;%^D`%ovN+mt3h?oYr8Fx`o++C7AL>O#zfQU_PaL1x&DipvWut3nquus zy5!&Vk@^EOx>jJ8F7xorh&zzcu{?L5^$iDKzXBC24pHsq9bD@2HS}`tYQYB>t!K<# z?1bbKP;(|0-nCtV&h0XU$ZKiZc^g_dv}K2)R*2)qqv6nk zh48jvN#49nmgrHcELZkY?xd%*I+VkxZDR5F2<@V6M@7)lK^Wk*M0?V_25)a<#Zuoq zV6{E$dBM_Z(lp;v4tYOP(tT+ioe=k~ESBWYAt&Op^7YWI?Nd$6RL;&iT@=Gw?T6&M zdti_0PSj2GLxaGJP`ODy$zLs?i+eXZWj`J%c8CVO5r(DrgYi##%CwJb8Tm%hu=Qlt zvWEdIStd@sB%ip8g*S`^{kmSb_33nB2~*>cL2*n4^9fKB%*$Bwq@(w$K|HU)Uo(2h^N* zTVM+TjwR*Q-sdo=C{m;Ro>RmTJYR5vsq1MC!b$xq{MOb6_^xd^PJW%YnDdG`4&KbZ zwLA~Lfff1J>S-{!vKwa3*p4)Zkn0*w<9!6^Gko3RBGIVUGT^NjsC$Zr^L8kk6MlX6 z0p$&{$*6X{zZhQGSQz z_MeGrUXL3WlI_;QfGB6!b+Zhwz5R-&@s3llVsJTrsAo^?m%W88+U74THRT~}LRCI5 z^%ce4%F?K7k{Wv?pN&bC>ci>m*{EXS*0mFWVwQ|tJ)6hZd=9kE#O7vR5Z}Iv#<%VO z%+^M6{>MlaVX+(0@?Ec@Tn~X&84Ju!yG5p z#Z~R9C~0E44k)jHv@$jM<;DzX-h_RphgeXiBR{FX2Cb||2>*o_ z!86E-E4!)SY{1VXtU`*f;PPs9vHx;CZ7Y0-R>2f{;UoDmjT)!1%?!cj-b&_h{w$6# zNTGEIVC`NT(#D?^jVjLM zYoPH!hX5-T6NPTo_iDbe^STN$z^feP8e7CFkC~8Tze9X~z6)qhVZ)Fqut{eU9*Q!N zr`xp#np>nXktu!#TyJe(^m?Gr`!(u;wBC`{F3`PTanGH&GNQIT^P@hDNGV7DvmCEy z5DW)03^>I_TypO@<$0G-TXHz=Tqrcz%#u<35=T1e0p&!T><)aQ2SK~Hp_wZ`=V{e* zn=cJlxh)^**@~B$eG1s@GC+PA$@T^L6l&KCZB}q6PB|l1={pGxifZ%c4pwSRu>2@` z`)sMjNcjPbSYHy&Q>$Qln=6>>YRG9^K&^qvJ3=wnCYaY>-<;99<9Z)v1KA$0eQ7?8 zEwY@-TeiqJfM z3QYOrH_I&W*vy)uQ@6G%Hp*e$8{_kDg>2fw2-ZNSnxxsZbEa>qA(n56VHKPgv5f{-i}QM|(OhiSrhVfso*pyo{vdYSY3%-LM@O$Q zy~fbqiC$x9$KP-ESrq?(zOD89T^;Hw8=HS_>-gobKlgR0I~DKjP(S{ctsTEyJN!Sf zx8s*j{Q2e%^{ijEcl>hIpYHGY6lg{JgMulgH1${HJ$$ z{I(7MexJwBNBpwU+$Q2{@rGeU#}|O?a}LZ+dX>O z{rc-a-|#`NZ~SFb2N~}_zRlO`=VsgA?6&>QcH80?KK^rWh@Hl5meT)A==Rm2fB*jH z?-BTW1pXd@|H={AZ*K6*EAay9m3T|4|LZI9y#A|RiTBg-{n@t+=q-8Kd)sP=Cy5yc z8?Xlz>#2NK)oRjyrU@j??!&20mLBQ#pcV@gt>-()UM;zNy=RUbXf?1npW1Py1LcMv zfOsV3G-q&7gAdR=cBNt%TytZy&!bHWZKuW4?N2 zF21<>UR$EKk@V8`LK9(f#z;lQU(dtmgmvQTx9Gp8C?w%qT?DTijnWfWrt z>rWGi?`Ghx=5BC%Ut?AG${Jp|a4_RD_KW+3W$8`L#L|%RG-+L9Bgb38EGUqPqy3B} zaU!3RVW~LV^eql`O+?~*vd`xvN$eAer^xHkAE;jHi=$s>LE9$lU{MV{sQ2ZOpuAW^ zwI-Z6pHJ=clso!V+#8%SbeRO6LKs)cbts1?8eW&<4h&Zy6$;dHxGK&)3@ z{Gu<3Wh*``>xA~h(P3tMRQo9rsJOmAGif@+1 zAk_^}ew3*k#SL9os|hvGb8C7q*N^ksbFu$0e4VBrz8>&0i~~r|n>{))Guit8(J< zoNO8AkA6hFxRK&=oY=1%{n{74g!e?B=m$V`J@sv&pgIV3t4;>uNZJF(qY%68^;y+! z16FvGODv)>^}7_lw9e4HAHET(re_~s_EvT&D(CDF0giJacX6@^sj>||I!0?sG#-t1 zmR#H!ngUz*MFZKimb3$)dIE+QTFAs{4Y(YXMQp=P5Hk=)&ErTHFy%Tao6-1V7_p-M z(zMM{LF@ym{*+YrX{ZlAA*ni`#=&4-34UfJaRh%qXm|BK=pQWyUKU?4ulrVfHhCA$ z%`xQ<53U#A2M@y9jZ$Sqzstne#?ZXo6@$m7f~ukOPlkYbSszJtDzW#OsvXea@>p<9 z2*Nc@5ngw@3-|o$6ZfdV?;4ipIyJ9}q4b7DV&Ot@S0m@?#kDon@i0FoimAG6P8(<0 zV@y3zV?%Whubwef5;sLvtDoIvL+pDvG`m@yW4C%pH4(jOE(>hq7h&dTTcCQ1@2WTr z3&lp6_;&Oe+AXGcNBBglHMbTb71q2 zd$5t=NHu5deA5D`aVm+C_5x#~s}nP;?lbjGhE~!Cb^nmI$ zF<|9ps4`=9<}A}voVXkW=M|9d(KGY1r#mP65COx#Be8QJzm028e-eG|kFySkN*6!V z<^CML%qs)F)$u7T1N=<~4bT4g!Cxvr!&$Q2KMX_Tt; z92_@ptB-2ajDf3F%}ng7swBTEmP%boJRbY^Dgx4exMxr@X#_op5B1>|SOeFb))%B> zaJT+XP;q{r1I8Hh!vGuaXicp1t{|=lid*bTyC&ZCG?!OjZP zZjj=0c=Xy)H5SDjCCkhSiNAAN!&2#IYCSFUKMd!`nn_Q1&2~DkQ!G>x8(_pu(K5z` z^pc)(fu6z|#19c$Ob1V2KeY9)-j^#D>BqG>5*jS@V{>^5_cEc)UPjcT%w`Vij^j;So^d zq}J&Apyi6~OX4Ryu#*k>Mhi~yn3G1x2mCmzjcydJd^97Cj#Jyk#UUO*Hl~;l7H&KX z#4|$E39-xZ*0rgn$^UptV5EKN)8G+H%rC(W-@oNDONX`{plG+!>E`nhK;5 z3G(;&U{oGnOI*&3oIe-y=qs0vC5?-kFIuNolI9Y7JbsL3-%`_*o zqj)6cK`I{7yq4t@Gd0ANq4MZu#q4p)hC+(1(Ma>47$WJuR@|d|w1_q@$RsY$Nt?j^ zWly8>*9A-Cps#&1u6zb@dP%&gnDvYsuwE#}PQIJ{&_Cv*_}1EjbwEA{>|`9$Sa9M> zWTW%NE}vQ|2Y{3gm1sTr;ib99afF2zkdBbKzib;p+KW_L0r@tmw{I@1t^WbeWo;w7 zHo{fCk_Fjs#`q^UQ0Ym;LSb%wUp~dJ9g=1OWOulxL7LJxRQw^XYlk~m9m7h;LhyCZJLa}7R6dT=>o*%t}6zoVuz$SgQS@j=ZcD{)eNty z(XYD?vRiIaJXuS6Bk8{(Z^1KFlc5Z>p00jV@Ml z^0ZrMSU(?kUn|IH&MrdIv8~wphq-*S`5n9{jDwL~=VRM@HF)3>5BWNAJ#%zBi+u|$ z(decd+x&VjIJ&jNNiG}E*kQHUoOA{TJqyfe9xB+^*C`O#ekmL~{G3H*wZuUiCxH8h zbK=w{Luu2hB$TfAiH-I)W=4@GMcL)~OwVj5oLy9eeImwVPVOr9^!6LE)y4@k&GlqL ziAU_?4|+3c=`!5K-3wZ|)WErqj>CjQ3owqgkqdDewyRSX^TNB~@$O9M*K7fElWn2r zSbDeSshye8bC*cZxCW3|(GgC&Sm2T-G2;A#BDk}(0ylFE_6c2=4N(r|M1#)W+;5Ur z%z5`gj48VSv*ItX9@oYd-@ifU3{3d344>Sr3MFSx#We@3z_Q8%AhiD{I2D+PbCct> z(;rNRMSA_Q{cD7kK{-gz&|Y%Of-&C?qhas~JQY|27Z2#q{SL;9YwlY_F0af(w=Kfk z9}eL215TJcayb;9JIvx<4#LfK=7ERaaPbjb8f-NgDn8^p^MK^da0g#$t}Ms z|N32aynGi<&%r^@uHlWw2iW-sW7z!mi=g+MtKz|#*Km3`;GLX3SSMRo(AePeiT6|+ z<@h~EU~BJoYEEEhrWZe4?m5!@Vm;4L^hxy=E4r-4i52|u@U4Y-Z$~4ZUr>QRH#COV ziPqu~)f4f1lQ5`iD3-D_5UY3T@CqSrd_dFJ?8wmPSgpco@Q)rPZfy$zHKxwC)#MM8 zJB(~Wv(o9luzpbjs~#DI{!wNb&*$oLhmq?bc=2%vxA@GeyUxZnng^IV(^&3Ej)Uv( z1JJ{4J0m-Q)!s{G^H9cLwy@S5E;kD8HkXtwS9QUV%k;MG)`Ov}xrLk=-Uq1t)Tezo z=eViNXi|yi*1e1x10Osw>>?HoHs%$)PKswihtadsd8RYw4r6CWK-s3B@kj6DAiJ2# zkTnbO%e^RJ6xk9}-D_t)&~J?U>*vDkhkf{|yh5-zxLKCF(E@yfEH9N6~ z@x3|w#S>!bIyF9G(aN{l#XDNCt9?8)A6zQ&R|}4S`Oulzx8^~yRKF#(22eJN-?Kl6 z{>w_j?rX#3>$^ultwG_Hi7i)MgwHW4kUO38R$B`3#iZKeu%)Y-M_K=41AgqA7H+OP zfC*u->b^kZ!Xi(Xl{Amymd7%7Dt{+xZ)C8@c{9*z@)o?%@C9o)f22I{JQMORNi<7n zB~!<=hccx}m+9;XVIJn3?3NAwWX0?kR^+8jo5S$W^Kjskx!gCX6a76~^lxH?WLNYS z+)xP9CP2;bA((G50oN6khs||LN$RgqzNGEFL}8IOkWKz!f{z^E;JU4?BLxFA0b3tO_-as^WT`?>I5n z+ULQU2~c3*1ovei)NDA1?7IxV(YPVrdb|aj-p%uAWU0|ya`Of9HSns{JJ9&+@fmz0 zY(H+qKe$9e(;)`T^-7$`$u$S3c1}pXN^>+V4@+k2!>w&4|+DEMbRun9|2pI6uLv4?{|`Kh><57>SYiiPL= zcw&!=>YmDHLh{!7tWU%%kyNrB4BNR5hwpx)(cbXJ%Z;vxgI_!0)Qh*oin9aY&Eyq8 z<0hIGMWflR%KWicefTWRWz^VzqO$HAzJJ)S($ zg)MiS!Ovan$|)wmMVp#THoHJ`7X#gFt8lA5t@*{ZF9fY?^jK;wj~xbYxYQCT`W6=k8 zi@Ti~K`vj7;#scdbDLu-?ud$CKEu0~WpKYJBRfzI6m@$B9{hR%4+rF7fO{I2Tc1d4 zvJ0z8Z+E_L*Vtv>V6kQYBk(=o1G(vog}Yw^veOpw-p3@|UdjuWt&f3A zZz@aj2cS6}<@0`(Ki=$XDSFT8u40dt);&{e;B3WBqD56hPCk>7-+%vao63S4^@V<(C2`-l>PR+%)Gx8UT{Y&k z_$-j$?RgJSV>@uY73-c&Y(-}_?%r0KUyTjGx9lj8%_7ApxF5V1UmlEvz>@)T zz$phFb888W%@8&!!H<(a02Pl6>-T5zTL#0y-Om`UDLmskMq74SIM5j4$_AS;ey@Yv zbtO{vz1|&O-)*9yyn^;&HG-2zE~4(WsqD-TLwM>ipHmza+cM4~#dxF`4Nb}#kiVzS%Y`5d=}5A5)Hr!$#ymeRcU z(zRH3U3)lwJ{5b-3K1%9Q(RJGBd$Hl!peugGMgWkGGX6$p!fu>UUh+vCSy^pf!OE= z7?J9R3-J?Y=s`2>qk)Go(qK1K zxvj&Oo=QX&8=aGr1^F}4e*YLr`G=PBKFz63;V{n1nk8>d2ep2t)zK@?VI~dtmjlcr zR4&PEragqA-6jgMJ5i_cIrOgllsPpTif4}^kY9(Ui8LPdUWpxj_KEDGMOe$GJ}bPX zD@X0p#nEX!Vcd`f*mGNXu5u^xsZzyw^|@D3rR9PvW|E!-CZ87zT952TnepKAb~$|7 z_ns|1RRc`BmXovwB*j`@G&mCUa+<3g1e_nW1N{O!=JM7Ezov&l=Qo?!7G9O>U0p;q zR%xymF^z8sbl_xz!fMYcq;(ABk5qn}G4!S*jJ&lR7murfU5$ewBiLIzt@<&X@V&N= zik-@aB5K*=+m|=Nut_4LJOno8dxC7%31{8cqxlKvG%uKPIT;?9&jaNztL1$|{p!7lWl{+iLkKWCId@E2aX5IQ^sXU$e&NW49AFH+Y z2Wxt_Gg98fc9}K+b-$yNT;WrR+ekSR6y3QYcFrzfUiuwn=JH&z{8J2=misD(L^c+5 zEGN`?|Co&@me54=9M?vb*E&3WB>G$pQDcBzD_!|jhyUMHFx_4LM9KfDSU360gHL`+ ztAA9A|3{8K>GiWUYU{vX9e(l`7yWYl$zS~P&ksQPt)BjeBT#-e>{OUPIR@o-J^iPy{~x^FKMz9r*-slA)xKZ1IQ;oxC_k_M?;4fA zJV)xk3g<_&=t@yN7*f&Q^8R z!JG=fRSrpcD|{KTQ7Cptbr|u0Gr~jfi5TqFnA6XJ>Rr-{_sPpMYRW!l4wyD}KQ?c< zicLJyOAdQ}2q_l=`Wz1SIt1tL#Ry_UiX957131;Fu%b#U=+kc*)dbBzai2%2Td_&m zML_wJaM#x69Zg=afaIF8`^+l1DW)E$IvOHFHX-GEQ2FpoL3yv}uDeCm|8m6F>%@;T ziOcx#+G~s;@xojfaykO-?j=#~n81v>&0zJ#3UOskFsK@dYHgvDyn_!Ll#VlvO!KPm~`YgSW@-f&2m2(C?tFtX8!GCvJzOJra<(p<;C^ z-xQghT_AK_bCp8@s@m=?^QT;sN#Z?7ePhH@ctDMDT;-d)O!vdc zfS%Gg{vMvMF0~b#-NVe~9f>I(1#|i?3vm;k<)AO)U$s#+5h#{Pb*`YCofuMouK43* z*U5PDyB$|7%wbh>fINlkIB109MVvuPJpU zo|PYO!KrQ&H#>HRJ@tkQ#h9O*y$*e^U&WY}Uq$bnhE#7}g>l`RsCrQLeC#1NcET!kq|{ekRWeofcoKA);94g!jg zP8*SeC1-yWITcXUE3k&id!4y?p*yCm(Uq=Cyf`r)p!+bohlu-L3liI$L8^y9aVWY5 z$zCOK1E|uywTvASA_tAHD8KFR!$%E{16m{ajhm9KSxI7zRA+qxVi<~pqQ$qIO!Zvr z7a@xA6tlpBc@ug6;DcD}enmmN35WqO;`msx*#J3yvNf^S21?6ds|#z&&&D6vQ>PnH z;ZqH+>@)SPE;o4k35kgytuqbrUVdU&7pC8D6@G5hlvC}CLvL=yrw+QDYHOxA@KW=# z{D(n)0(^&~Q#IMf7r zHY`REJ3{g~viWycc|9|Yw2;?$V5ccRc6d~Ajd|EIRkOo3QbTnt_dl=UhYZc|bB{1+ zeCHVi<-H@8-(9L2pT-YN8n{#azYA$Sqie?kCO%a{>OT;Fmkw_np>0g@`o&HoS1aDa zbEivGI*4LQ#Nx5^*la=Vlr&yI^MD_=^p@mTHB`fE7wP3IJ%?KstwF`kh`TFo1J*h3 z5zEd@hv)Nq0@)-#uyZBR-@UYN#Sq(6bd$8!HDm`G`ZI5M?t)Of`|GF=sx8oYhP!-H z#ShZWsw3G9C{{jc_)+Y-W=S#ISKMFe4yul}Ul>75yCGy38F24`9Z_-At|!JK`B!j` zeGKJmxj{d%Op*qI?fE8eo1<;iJaUV9IV4e z7yCUO59Ocb18E*|w0ESmyEvGUe@EizA}DVX`I-yGwxPzZ-i{8ESf}!xNII1yt|UVr zyK?hg<>dIHNJ$)1tuaR9CW!lB)=e8u%#6?1O#tdQ@v?kXqch^{Nct5JgW})Y){!Y| z=A*TXgVO7mVhGB=Qyd{3OGoCl-7TmeGGNRVvdGL^yMpuu((GDt zvL_YK8jv1BTxT#RUL(|cBYuq0hE;&{Lk;LSKXUaK@aQMe)wX#Sbv>a!o-M&cr}!?9h&uJokRYKSijrQs=7ViqtE zld^xny>YSlQgf4OH$D~QCt%jv55)YhLFW2OT=Da~@XP4%0CImloLaR@_~wrU!PeX$gYLDw_;z!^LWcm=Dex10Ah2{t&cAdgXCm8yo%Kp z(ptRn zh>N|UHkD(M038Tk`Ij7uE*ra`4umRnDIf1DXm-?>w}WW1vn zsPt?|?^gyt$GFJYR^QnCC8>(Z3Khp_{+QBsPwWv&o1$@af~-M1ihUOGS*CO&rRNY^ z)hMlDLC1bz7~BFZhYgbW`J z1t4FES38W8)E}j9sk8i=t8!;bL7JxDgcZ=fsjIAUUKdx^i^G7)3p8;z7sIiEW#obU z>%w^6cvw_#q||E@ifvLKV@1b7_y<$J<*Lh*9n-b_125pH6|N>bZUYP$Ca1aCLR!W?H1tsccN6|*TOkv0C%|Hwyhy1TtRKDUQlveQA{e76hF#w3YtUgL1P zCK^BPJ_3RCc14-hA7bB*lQXY}YDZ7Kirc(i;*7aR#LYU#G>so`0#i$G9I)GrKUp{* ztixBp*Sa~{FTv|s%~%auz6_y0`$*qW1-K*H4)umD7kd(eq4h)qnK5-NE~@v8y-9pn z+?UhcH?gHX7eS?w<>1(Udw#vy0xW5_9(x97X`bigs&SKg8||^x4*~u~Q84|5ErtZe zfVyVwt6F$)DdOts5m0T!eOC8{p{)3_J)?fH20ahLtGAih&fp!~7<^4Lbf_EBe8Ahq zI=q_4Inm)#X>Pc!w=D7K0Uq1GNqkGR0N;9D;FL~2zUaT2r8b@~*7iRqWL7>_y8T@o z^jQyl(@dEXI9wC5+!pqDe1joZy7TN-&E%JiG!cFO1ZrwqVP*UAxOdDx4gDMsK>_nz zWW~>(6VN(42|BnG!L$3uqTptN=2+}nY}PU!#$PeyYx*pJCrMYa{F%#8{n$8M)2B2a z6*!+)+A>0(J;(U=2~J>BqPDoQ(-$4G_F$zgPX*ZpuebFD)aw{VeIJO~S(W7L8`C7s z4bC!q2r<6hFeJs9H5|7TMpkPr+c!;x(T)6J;ix%cfUPg~u~>kkCRNbPt#Jf)UEIvd zT+LuZ=4tTF$c}PJ_49agbVGh2zMq^Ha~rk(I|UbQwqQ8xmXnw{ z;7Kwjdu}1S^%rWM;94`RP*|E3^`3|~>ogS;KbPVwzv^@PEc9v}B;!ms!s{EKMD?XN zvF?Cb&?x&IZ0MXQM(wcUyN5QH8?7qJp_NRa7y0Ul*>hpnx=1J=eHaZE8{nM!E1~S8 zRp?aZkRTiI`8u=@ST-LaE8U)r<|ps76Sp1<->(ON`ozfQxo&@3tkI~BW>xjMniiuh zu|(>5TI&&T+QvvWi0Zi{)qYyLx+5aI6%v}K~k+YafL9BSN<}=nUYsT+x zKLyMDPG)xLTuwS9B%@7c45xKuTcmCIQIM;*>!dnbFIdo2jZRooyhEjh-zJ=y`h?MmFzqOr!m zs1hgt#An|+59E7z@|Q@qd&3Qp_bCzbOGSY4%kFbsfch=^ZQH`ixLjdrbv-4`3+mjr zl&!3qK~Vk?)^CCd<_?*QYx}pCOCAgKujL48J>T8lTD!W8A08@U$j9bAWX?fng+Wpj zGoJSf)$bkNH^<<1)a5$XdQ&Yu4Ncnj5H=Fon6T_tJO;>EN+BMmXS!6W=kdGPFHw zj%1fmzIQ5nJ>M9HZ1Bg|^CLB1Ty*&LwTU7qzlrj}(D;<4oIj%scploB8LX3o6hqLa z>j~V@U=1UiXQc;?gidaiuy#&b!1X%Fh z7?8RKD31Aqjd2)!J|N|rH|Gh6M1e%osChnGBY z%=uWL*ad*tain z+4Ni3uuCZHi1x|62Ikqc{6#tR8HC1t$QT_sx z##_mfPYrl{s+;KR6(}fna220+Wmv(0-O-sJr|tB%4mT02%N)iJw$BBva~QMNn0)aB z^4Ga|V{o8UYvakC=h!SHy*So{8o$ObF2QKDZa1{c?Z@lB2p8A))sf=OcJU+p3LMLG z#gxcz(5++!Zk#X$o4fUgs`H3dk*^`U=L^Xdq{KW-fR$?lW z4amOV{iVSj2RvWlfDl(~Wx>Z3=H9BZIJa*GHjQh@_eIu)YkvKxeI4bfKwVJ&K>0Jx zfV!M=1BfqqPJ8R%BSx`OsGNrK6Ipd=75L$mDJa*&?$Ln|Fu62Ro&uU?n?dGSIQ86XQK8>dcKCEdr1qlD_A;_{L?yWO@iXoonhh#vjBJ?!lOb0V8>cU;AA3pd zI-pU%H@K4oMuXxQ`AJZ*gAZSi%D=3e-+~|Qn~xNKG?eEF%KzX)PAR0A3@bj~XM4jN z0p%8aY1%8G7>$KJlC^amHfUY@dKSmXgVk25=do?yZ{U|;Ysm4Qq>X&H23mYu z1Bz>z7mr>eKX|x!%vH>#Z?@EtV_D0ay$S65@G|N2>K&lT^kxuysVb-V!p%y2gz%$& zyv$oae&;Uj**d-kU%mA~dOp5AVygT(48FJw$IZ(iu^q|(X{R}OVY}SB zkZqENImhP0?GC;)HdDaJ#eiQ9n1QjGCX&`B{}`RA;vJ~CLVe~jsk2e#kOc=T5A>qg1ZCx46r>Jt=2azGpx@k-xZY4!NsG2xG6Uo zCi&>G+__6I+6W;ES zr5##nMX^mc+-fVcK2xsv*JlI#b4LLkoUh)7^6LwRe#)u;$Hn3Q+LsLd?8aXx;y+*Z z^UIr3eqQ|F)#v|%FB|&Vl|T0TPhU9n^Wy)me*foQI@Ifr-{$xD&z}eIkMIA_(9xao z|EBQycdz~)fxk!K|H={AH@)nydlD88{U6(t;4yGo2;7wG@Yca0Jo|kZ(D6BcK7H?cVlbIaY=5s541?=>1 zCy8GXvoK+=jE>^;*ixL>AwKB;2q;fwle$LABaO;)l^auChVdoa!;5q;SRC*GT6S2@ zlD`;BRYzVL$2ir3usSVK@e8haT{}f;)jWK`><&;jPlp%! zR>uR$$KjsuXjKEr$MgGYMp%Xb)p}Gn_J-O^m+^M1N=n6j6kl6j{)dmMX_`zwj;7yt z6xU;P>Z2eoiImG1=Szx*s=W1JS4Y|0Eg$FYv4qGvsl*aWN~(3~y6Ix}qBOi_*amty zei3b-+Q`h+qRjDYdqD`b!FKJEzz|}GS%b_ zRoUqiM5#4NO`pIv(F3Ur6HK7;=h}s4FTig1+XfCVqCU8LfQsrV2*p1F|?R!tdX&fQk+eq;XRbTK06&&Tea$|Y+Ac}8$p_5hv>vG5U7@%=wf`ubtnaKXSNa)j7+Xg=r`)5lv!puL z32ra!#EIwfuXS6&Q>!h^W5Hxj{X)ZguLQB<4C2g8Z z{?&UUsp{?)2fYRP)MA@btm=sUJf+nzRU_ZMe~0Q_V`7nXj& zX{;C&|2}da`Qi=Q!@3tm%X(#a`DxyC)@qS(DX>!P3I@Nd%)^G)FJ=KWjzF9W6<6&# zp`T2`WrFyc=8c7?B<8_XjXh&-lVa^;Q+jpfFNx7NmYXw%OXBz%(xjAaKvJbCGT6IM zv7Hge2jz29dspDZCtyw$L*gtiQQ38y)Sl4O?DN`jV%f!hg#51@vGfg&b50h-&86z2 zX24F^cDy;3UN=WRN$Re6mQcKw*cTGnQ!HF*9Hej5f+I1Lh{3l7vP04p*KuO%g7`6U zCKI4O(Hhexh_laDFhEbc_f_YzD*| zXX4g&pyJ@8kZ2&Sl5{&ANxG1hbV8^ZtIagLH(msFe2!$_f_RuT3U*MOMoU_z(iI`% z!bVgaj{LpGdrv9y8OPvb@6BXeWBBHmvy|?scs(agPU!;d<~ujptI}OTI+IANyNAVn zj7H+y@LrR`l>L+c#CyKQbC0C!Ao<>6R$n{cMd_Ka;B_1$-m9hiYU+=>fl7loacig~ z?$3z{vX8xMYDpszSEA~%KJBaU5~&?vgn-zDFjw7O#2B%_%bd6~)n}yWZR;am_ za)BP8{JGL1XwD`1ZKQS<+cjyI_@I_PKU1Rzs93fya;KoYNQ5s*WlEc>T9>}_{n1QP zY#?2)dokOZ9y<>oI(1UHn56gxZ6@bYewF~qjgWraXtI8&QZk(SeiCot=UYn zJMtULk?cd}vl?8D??U%@xD{{0NMm7?(+Tp$O!?V!O$_*=ua~h|oft+jM5;BXbYZ1I zlBPpiR!dZx!3ndkNO=WU{-Da<7MwIvM5})eFIWXDtZR{5>sBQ zp`1@_T4N@aKXY0%9Eih-$ZHYAnWF@;bUtF~M0rZ5KeiaP7O5&|sVW1W3qxPKLrtwY zD|Kcq-ioiwCsGOSwUk_&7BYL;fvS1Ef(vW4d9oD8_J`1 z62ZB{9oBSWIWhb8b*%EH62@o63kSOz*gwu*Hm+QsZPNsc56$whr}IvH_(V?_O{q^y z$e+uCOjdhzbAC10QJS=^EGu_xAb0Dw$4m&qe4Fb~uwX433>=7Y19NZ$@21Tf?aDL1 zc*FEv)_mH`$|7Y&pj>pgsmKWI1u^ZXLR5rF=DS0EaMIlcxR7_`8w#>AvS;iAb4?Yw z|A8f(TCf2vr|RQ5-5kiho+28DE`}+O$7y`#6yf*;bM!s4oL5{)=5EsipARSyd3|ls z{X!V_juMcPP>u!lH0Iq5x8le<9yqpI0d05HjJFHG)9c%ZJA~#m_nVcsog;+C}CbgNhsgrPd@j= z=03oeTXe>&!CTq*gjFmgNgwVHiUL2aG0%II1NS$#6V+@xK+AsRWh8AoqIP3?`#1RZ ziz|Mr>cvaVOo4pvr!75sfE?;MTKhTj1GaDpL$^B!$12rEm)$zNNt~1D{pvQQgE83d z@HtJ1EhnLKf)&1tD=RNeZixFQ`@@S-9a(P9G(5tav)o0#(kI107V0(y&E1OfsbK^g ze4~=!qh4Udr1#i!W;Hy&r54u~l|s7`Rrv;|&tjVMHg;!<2^QtN1vU0tY#yNL=2zJN z_8k~7@FMi-q{9PzUBUB7O*LN{jcsdOQu~6&`tcmRRCyg8Ieih=MA0#3qaL#DI&K)W z?ljQ2K))}|;h<+9ZrE%F9`3Od*9PWe?_D*-h_7p*O%;7?{V)WU(9!?8C2aYe+|5`k z__)YP(Bo`^4_KSV;_wru6e{Q8k*|wUI!(eh+jpb!2p!(B_Du+#Vhf*6HJ6V&u53VK zCk~mvhe$(fsGP7FmaXW66D+#JrW4_sIl=qk#mxE4Ah zTNmS341^>)R{BPGq{yD(1yQyLVcU~f-mVB-Gx?-ipXgiRG(O3+!K?H&cC#n7<*tbG z@{4B|@nGR2MstMMHqF5BK?zVgDo6Xo;wXBQsh}NcGX_q+oI-OS42MsY#%p_BCD|D` zNN$AGRv@6-}-nZ&WKO4JtU&;2D8@>jCkRZMRJi_Re5qui1zOG)ofPf z?U@&&l32=$Yw&&`!^`kOOl@I;w1(BZHmKzpb_G~BgSoSAb;)V%!!pUpY1$zSFs zlNXMo-_H=qwa+l~(|%wxGf7M9M~wxx>2XAmz3?Ay`qH_d2|tw43G6zB!_u9{;rWDE zsHQuNxewZnrsHY(ij~R8Cj&eRwic{b4S;Rar?s3Ma%H{3g zTcHh-uae3ZXiaF>#jVwpEeH^Wy2o&l%@bJA#0rjW&O`r(WzhA6HA`Hni^ob$LGn9V zHI^@&S7Dr8gw|)>Wg!125^JT3H4mz5?qr;STb_YF)Nfc{+CiFb9*?d)PT)%2E-=7u z4UE&#VCe@LU?2Dn#lWUmt7x4FNTGXEiMOvrDPDb1FR1OZgfBhqD!cVug>!-%p#Pz- ztbMvARJ*%U`5j!pH-qNifxqm#j$Ixej#0LN&BM1L^$Th3@M{APLh|Yw(y?1I#-|o# zw&~FXe%z@7ADy1D)>E8;`VIddd+z}jMbhmLgMuh3m~$9004fTBg zqa+zXF(=Fc#hi0o6Go;_nR8sTYtC8MwC3=g>H$PockkYN-}`^Q=ULx(f$pxfg_H29T`}{Zc;!+=^rU%Pn>REr8<^@DO zgLPHzS@<2=r3YZlsJ_z60}e9T0C;BOjF;EmhH*7p!QE#sB%(1y(6K=z|CrH+L+RMc zK;yunKJHlCv@!`~Hq`Q-2$&FMU=ZcxfcQ z-(F1WV9^yWI>xif^_IYmk0Wqm>Pm2YYY9{Klws*%y@f3U?XKQPJj^eRDN66$n7@LD z>K40$f$X2q-$udPp*x1*7V}|1vJ7iHw?M(RYvmx@%FJoX3=sP9!TU>c3)f|Mr|=~# zP`?N}G`ThJsd_3AA4o6D(0cL46|iK@?m+qmHy-{BH+R>;6-zI`=helLY@Yn(+Ds(9 z1?QXDNu;;1|A-;z(mY+>_@=D9s_-2n8{JN79J5<4x>^E~6L4=7#M{m}NqpUy$FFM& zA3V-L;+$q!osR1AESv(4W7griIlF0YZ{gfsPmpvDY`o~k`^+?h9Sc3Boqk1Sk{zsK z(~^9LP#=0fxk0N`SX`=~9Fxz2Io-*}iyW+~v`M;wksd>@*jeOH9KcTnwkq~%`4CG! zZ&O`L`^O5qFOhCRvH^Tw-Zz<8an%ILtirSc)#5 z3FY1ol!Z1sRB9qEQNE}yA@(ICaLn_QYsp1XJ^nTi$qADCG@k%XVwI(4Ja1IDvk->a9qP6zToj5aSC zu<5~Xg?}fL9j3W3htG^-t92ogxBXN?F)o0RN3tVGGS9CcG~?-EZzOBW27>2Up)s3) zbO5iv-T`}g?u3Ztg^~O?p`)VU*_`sSnMI87cZiS7jNbMo$u_3plQtVA!}~Z`8wH$nAsku<68U7D%8PLs zK{p&m)Yyn-B~U=bj%DV{f`G<~`OfFXz1OOOm@iSTeZnT#-)KG5s6STd zC*0ULKO7HxLh`doe!b+iyeayU&`CI3UjoU;l`6UoBVS!3mEKWUv1#MfsigPJ1Rvs! zYx8{M@O{{<>?m4}F7Y_EH9uY@!$@r+WRisFcddOF@9x-Gm&RjdXiK&i2 zK0PPhB@DaPH4Fp!@^suOXf?LNuKej^%Ni< z8LB+LkJmfa6n?wlLB1uuHZC}Fj{KepX!W5jyYpbA{PfL4WTVdm%^&nLACLLU?7(A# z+F-%A))K`f&?eJIIp{Z1!Ou^6yt6@jZ~wD*H8)g?@)F=EYd6b-x0| z8OHR4Rj}^Kdbqy241Vgk6e#v#`#0xfX@?F7 zZZ}#D%dV{e(*N@H**fz1`U-yq`;2bR$Ie&*&omYA>eFMbMwIaZVAscth@Pe=?Np zMGRuaL)QNPd`-;g|Ns8`mjeG%;9m;-OM!nW@ZX@o##)8GF6S5?^#5!*hsU-KmkDRH zma%ObBb*bfbx0!o*^CpmCKGASpDpyL>Lqj_6M^%X!&eN;pCIkwv{#Ls(P#70U}mPI5$UK^1&*o zQptkbrSBvBKb;YlB`vf~!>S|F*o&=6j4&8pe$FMCViDHpQW@NMaRZDm{18|zPk}#j z!ugCz^&C0*seAwog=ydipl>cSI zwuQDuc(O$YiTq>*Zy?-XYP#*NL@_O{vo32ay<!BhyKEqXJ( zCg9P`>Xa`~!N(f&;fw1i1>+`voDs&1go%ng1zxco!Dj2HNIPHHv6VHObHah7*Wt1( zeE+1d{xV@zK-e%R{1-p?S#iSIWQx~h^0n!cm#*@`is_<%PVoQ;jGgcW!ccF@ggM}% zg_)GUn8`L&@veKPpBoUSMER6yFmiSxVLT17iC=Zr#y*W=g_n@8Ltnz3$1{qj+2XVH z`LTNCIN@_RXx9sga0LZh_vthn%6gul{7*Sfc)LtkD#aRaq$)NiX9)<`AiM(KjTuLL6~%~G8RaGj zGwn}UTPoi7{6+AFM3@X=h0Q^-2uGS{@8;|h$xuZQ@q6A%qfua39y7dw#z3+7Fv8|& zi$WU@HtPW4O)qw0^N;gIZbtCFO!7|K$o8ozrepzzarp7g2D~ot)lJz`n^FGl?_%)yO{vqU_yHVa$YXJ}riJw=eON5C_-l^L}u7=k) zFD((y&PDt~xI9GfZo;mF_;L|vi#R@b^DLzK!I2#^q56lD(q5H@4clIWWVi$2(9WE& zVGOXW15cJ!QHz+2Fj$!BWy2nv8|Bk@?I%q2xG%6KUePTtkF9y0=CpwlgNfXawP70g z)Z2)J|MMeJTS4Eu1}&v2$FG)pPJOk6x_yT6Hs`AFGwJs9iRpc6kw@y-xHR{#KSJQN zOyFdsuYlrOdC;x|XyICe5zYbE3IO5nd6|9qRl@TpGs{-CSUBdW4EOp9tbh|HMPs-u z3(U3U0~HfkJ<=2Ew~M?+RPD4pQWh8-W)i;h}_C z&Xhz>h_G6LN8{rvP71Cp#zvR|J8E5ma)Slsm- znS?ob2&^0>i(4S@x*HSdv#_I*@TTi{%5SAhly^hI_ObN3i$FAI6U@Af-lfBM)#NTn zu{o)Z zGcr9B`9elE5Uxz>&-2Wj!n&ME##F!A66Hb|*+E8Fiog^&;X0I4+aTBNlULXp9x}t7 zlU^2f(m3B|4dJjy;r!Jj*yL;r9uW9kB7Ws0AFP&bHAcL`rj9;Hy7ht&;lI+|inLYh z-WSpZ?}741*nN8~6gEfXrw)5=Fg^>`!~5-%k#bN%hGZAk4M@+!C7;De`BNBdHw7u5 ziNwQXv&`ALE1!_^S1kWr50OJ*uBtu|Zn;68F!?GF_DDIe1@hEo>m^Z_ct{Fqv=_rp z))ajM<{IDr4IL! zq~wHkK(-TvZV`DF!YK)pH%OG{!<~MUka!uiPbcHk(LRi@R$Tfq4G1q|gkw`4cDziO z793tQ62+KAezX4bTi|(=WfJyCw!wzmY_Jsek^Gf?nDeApC;G!Ea`Kvr@BigDk1?~+ z7rJJ>sX(xmW!_tPJJ5}P|NZY%V3pi4~9_thCx5js_( zE<83aIxbSLRa@7r*-#rB9w%-`Xd~hb>Y6oGA#sMp$OK(z%Vw&0ZGzVHpth=cTx?{V ze?wJ>xJT6uO6BmLs({!CQ7tf9Yv`$}r3#Bq(kUlRnrag$MFo`;F|$jy)zj9dTB=q$ zZFr)1rl*=Joys?o@GNbNE;i9L4nJMAE+IuJ7@-%v`6eaOLw&e*&+bt;GWXl-nq zp|;A96lMsgTZ#I(Sh}Qdmqx|K^)xtA#o#c5E+JVPrjJ%y6ayF3%%N{My<>tlnqG|N zqc(LIA03yX3Xh9X`31T7`KyxY)f(v&Rlea$<3p^hEX;-$kJTlLFVY#*)+&0P2%SdP zCsCIWOH(Wkd(FCtRx9A3wRLh_bW)5?DNHDzm~De5LYt_RjuG=55tegJgNxK9!Qh^ywHB|J%v57QnwaPi?bXKL1isn^7qTTh;)TDpT-^#-rbW>yc$Zk%L zVk}AtK_q=_q$Wb2pjNriC{-%uK5H)ghYk-rUvaieLUUN;)k8`nC3c0OG2fpr(Dv9 zY@<|8;VQeNWPNyCLaa*ARcnaU(@P0-Hi~9Yan;wxXa}J_Aud*kRW@mz zRDsQWLz`*>TC`;mx@28+T)cRk)tQsZ-?z1IL*LK18Vh1syhSY~#Kk45#gBNc!9bG|(IESoySJ;G zw~Ls`gt%yfM#x5eZBk-XXk1c4xQ=NfV)U^&O}7g04+>Srsqm#}Sn#L1j$2(H7gwbi z2@vTOgN8n>oKx+aQGdN_;{2Rzr77hqMi--r*2m~+8tZzwHgBlh43AGTs8x2Z&UIbw zvY92f7@8)R8p#pH;f*XU%tjag%9YvB`A@_o`|&@J6-CiHkxI^bi~p9eWcRDI@h6E< z?*5Ri{2B*04f6MGrJ)0xLxP(%3u@7biEKpHSe#Tj1%g_%4rtZZw;6MDHO-RX+HXXH zI9TmTKTIO=BPsfsn2=6Vh3iEIMEpg9YWf7W=|&$?|D<rv&ab(@U2TN`0dnP{ESLWj3>TxbN5z6kOWzbx{FD9 zs8o7VW2Ej$^}4zHn8cqx=B#U)Xj?%8(~15HX)<)!rbHw`IL+ z9c#Md?WB#4r!0^1vm+bC7DSdH`uDHoEPxY+0vI&aN1%pc9dpVXt$ zjLBTM2%Dme;qQrR>ODMKFK9|*kF@Ke)XYsm57%sRWY&A< zno5_5u&kjtky%!rJLzNfiOxL?>MU#MB)pfD_&8#FV@2!3ay*V+ z(O;EGZn^#QOq4LEnQ+om`kMS8^1~?{5bnEm)}1(mwRN1qIXsFyKnMCGUYi)@+=KWv z=Yk#x@6kb{5k96yFih`!NEdNtQ%t+(ciH5T#qLW>S zZ|lZn25K=?f}P~2?i`X37nz`qQBk;~GjujNuGzn6MiuYI&^b&WYiDg8q3cdQyDmJ5 zTt^MrIr0YM9I}2pnz+Z#&Mv@ILX|}J&QyksTZ~E@mY`1%H)G?H<0#ropwVihRSw-L zJW}2uLdd8xe8FpbR*B^Rj?UDeGBaOE=1jITyH^TnqIA*GtTmZ)M{Dap4bINwXgJY8 z1SP&(H(=)|;(sf%1hc}C)-A0LTjjNgG4D^8|G|Glt!ypKh8J%@cFZ|}jIGYW-o@Tg zA+0_(Lf6M3i;!eDlE|scTaKXmn9!6l^sP$1`1s4$jNJ{rI>?OTbP1eCzWqV zkSZiWPXvt@YUyj8EDa#)xH-G#ej;pPnAV^)7xFd4u9Y45IaG(uAlD~zGi z!vLbZ@;XYqN?yeSZRXcFpm_&PwjmJ?x_uWFBOXdjq%IB4KPjXP;Rg-1ZsqIORMR}zKPWKB&$o3@ zaEnl-y+Ca=iAL_;o3v}K2@UXT70~+I4!_?2rg%>L@NMaw+usy6wX10w(Ba$CU+-I6 z2eoJ$9OOru(LbnF?ibE|-#WB;>kv(2(xJIa9O+NlH3FpO^TaY zwX=->O2$kxl&?1lpOji(hc7PzRc_+A4xrBK5Hbmb-eZU~=DE_-le& z1vLt45h~1bO*=Gij!(&@`m>BcViYZ+iXbM>ew3gih{%wbV{O}|#jOc#u9Y)8Km7#T zkEiJW$p_eS$o%uqul=xy>EmlZe562i6m&U_^F=yk9=w^hi-PMr3#R8 zb~9x^vLrY(Yt^{QH;6)C1qF{!ijF2TVCX<`yL@u}bn=cho6GL2Z3o2MCXwzE=3Pd*6r%@~nhot5R|`iE*l)v2nd) zHR388(fm%O=J5YO7ia1?XNJS0NW@j%uCA)@9*EJ=s0`uSSd~-bZ^q^y5YjBTgDI97 zFhEtWURGU~KaYa)Zb}DrJU#!akYbwba#dG7=7s3e2bvk-URQHR;DE{z|&7h*`&&V1@vE;aAk8c!~< zVjj|MDd=7zTYkw82fyfy-Wh(p%#i0$b^RUbQ@zQ?twW|uLkhb?g}1+|!&i=z3Z4sQ zJ0Io64lCxu5#K^=dgg9y*LMc?eOwt^JsX9y6UKtmv@g(3j{$?W@hJ}mS11#Leo znd%zDt?$6trHi5F$v1c^Y#u$^g-tgt+_KJnFcv9THBdL0aYZ5;%Oj@KF)XDf(!6ZJ zk&uSm4iI&iR z+9`Rs9Ca5ImuMaWvOJbm5n)ERkt`xEO=WwGQZDzt7nD_$PVpjzMft zr;bqc_6B*wWq1BEVk@?uC1cW_DBKyj0UX;L_L*wcldkW}0k#Z!1U5tQo(pJ?e&6PO zu-k15R?l?`^#5`~DravE*UX2&sW~?R&-RD?&v#;>Rs)QZ&2i{$Uxv>rc??{WJLB*t zHdycJD!lyO7Msj$2A;ian0=vmS+$`oyZnBlG;ZKT=tL`VF4RcCsH;O^W}dl{jkY*z zQ|bYJ)YZVHYwEG7V;L^jOq1t&7nf+RabX<|tMcfIG&<9YFR1FmM(qpamYW&U+{580 z74}#>Msj`cjBhSY!)Dcr@cWL#;pCE$aC3itR;0NLxK45d+bzG~L3MeSKEDe4FykFu zqtCy|9ZtvzpS!UXbz}IbTSo1V#PZq}^5^u`%)3r0uup5qPL6hm1@$a=rD0PfnqO?Q zISpp4$!o0fZiigETq{WLQ(J#tRk z@#|WAFt8$PpYRf^uGc}o+wW1eVJ6;qG6!2l*I}K?6asozDY5oldBdBLP}bv+wB*BG zYIi90+go~ZY!gD2&vN*LtP738EHa~T3CF- zZHaUW(BIn}x6}IGM_r(QXB#MTs52WlCLM*mKF_#jB%Z^!O;cI1ew$#5Z5rH2yJ|dp z2Z7(7Ear~cKQZHWbG@X>ygjI2zJ*#rV`Y+Y*iozuvm4qC9~J%}z50+T$9^e6bSc7D zb{`4xk6dwa-a>rZyeE*}@D`Fx^WVJkv-CdWrDD@YqusVKxM%%XIm6(^*QH;;4ZE(W zcTcT@ADf(%=M=DE8!l(y`jKVX8NDr1Klmaj40>v-uS>jPZjSX@!4+<7o=?cR`8@?EWN)lzG8URsh9 z9pon!iel-oJS?-wA5vZCUP?ba`U~8hw-Z9|hx4S4J#qiJM_^OACU2+NBeR*4)MBol zT(n1_*Yh5#Li<(A;evX@VQcr@vd{I#>N0Zz`L>i7(y4bUX^4XrWY#(iBu{de2d4!8 zO9g7rl}RUH>p|Ut4i<-EZ*E9rPw=WkN%}7?4b> zXHR-Bml@KF=Q(>Fs#M7j9SS6K(gD($!;ui0H&eFyT$=A)aTniIG~)*=2g)>u7%;X+ zW*3VU_q6ka}*I$GtL;4Um3$P@NBJ zTZpyukCnDfX@t*i%)mCy($V*i^3u)yqh!*LiVmkXWYQz7N8nL;;@u0F*hm7_&H?2s z3xzF!<9k;bmri~l=q*=B94ON`u99W*jQMmAIKAyR54$wHIK9ye@$KD%9c47p3vg4Gn zt8(dwvCM9pb!Ov`7jVpJ1#Yj@P9Ae18Aun&k5ebe4Z4=CJq$Jh!cc;S;<; z=ozwQ@UUG0-o|Y^7HPf?swP*#O1`yVu6H`rPjzBsQ?Pq%2_zYYH|_SyeYTh5rDA=V zu#d`r2Q69t*Ds(z(Sz8n;7kzumt+9j7cI|;cX0UX>hg;5v!%)xoPc~2a4W3ASEX#F zHx&nChGDZrIulf5Ecv93mTdc?m9kygTN3GY_~pS;ne;c9?OqSXih0YeqPIZF^VJx)$1V^3DEtES>6|QV3zTSp!Y<0c@mKPa zSrbs*yD4l!TXxOdTq-kXzZ_C;1JE48#_Hqc=k%GI4@Jh~&XwilfqUCAl69o#xOa~X zJA8g2z4l1mamZ+?TfwqO{6hXi4-mR|!Tig0%dJb6W1fAM$p?dc2V>yCC_ij_aHll( zULko&DNw)JG!zDGSPpZ$+T$dbjj(Iz2q0ar?sjOMaa$SsJjuY`?382;w8nAY+??X^mN$*M{;mvZ?l z{eb*2S?G=fi)WCIZo#gM0IaQ9VDg8Z=h45JZcW zXt8H)fwRVF6H-KK$&|G*)evoH{-PQ+5g3=C(?`YTiqNK7-jbtyh(L_;7 z*b5oJnf33u--3h4U8Q!2*rmo5B=`U$#Z8u4HE{B1o-?NRoE7{E?#7n(@$om=P5 z*(hG;&In(5qGFbrkjviJX2HOp7^KbZ3Wx9NW=@Gk}arNF-w`2QmXHnu8Z z+SsqVUZ{L(!9Q*6cXN#w%PT1@KwBAHT(XQ}&TpNryPKC+ow`mQo~~LaPxlBfr@CI= zZcaX4v~edq%qPs-Ej-I;<=Ct&la$1(|d6<@vpB3v70sSM|v);Rx z857ekK&F9Q)P`x8(ft@knD4~vkIebmca`ydNya~~=>xhV8*ta%SJ)#Xj9uw>37=0G z0dL=2H0~{a5Vmc|!`k$(D0^+b4=wC^vow`IyBz%xE=T^3$Lm?~8eY4kgAHcm*8GDY zWYls9uU|%blva*oP(8Nd*XnR)c_&unnKf^nV9%ROal=`8z1Wr+<=HfcWtg#cHaLGd zEZ2V2l^F-9;C)y==4=s&ZuX1OwTwGocyJHvi5DQaPIzX8c1=MZIvXplwB=FrUPHIT zujToxw9-e9`D$@Jc35Gyp>sQ)c&{`cpg#?Z&wJ9g!7ykyb+}Y{&|>+YfrdkT_xtPc zXl!M6c0)@(Xyj(BxYnATp3wtq9{UJkUW?fJSuSk;y3WkC_*S`gT?hWQMLFJb`V6_r zc?%xcC5q=OU4*^vGeTZDxjA?Qq{?jceVklx8K1wjJ2V+1@n^%+U|Z>UjGFlYuT5#l z{ePQ*$6QMB3nx5a*Q4Lz!HyyFABKXQ`a$!mvk?0BmI@Wj$EiJxxv1tdA|z zoXxa&l_3u_1aYDtyC1b17Z#ZeVjSo9aXIFq5v{7^WBcqf@l)M$$lJTX-RUdUsdX>F zx(imks>TWTv|NDmKUQb!8$ZHMP7T}QH}oaO5$rV5SgHI?T%OnyVy<~1 z(Fn-eYMWA_fAUH({JYS{`1jdJ5%d~5Um znk#U^a+O5a@cQaYXx!@z1Rb+s(=T$#v%%eMCe7U&dF|rpbjFNz`r@D`aE?q6I!7*L8)|3Z#oTj9Pq{?lDJ`^!1$&65bIKlhA$ut9l_{(DgU+McDR zRza7xW7z)MF7mwD&x|c_w9m3HWpOA+P`q;6*(!?`WZ*q00g zgR-faD~{B}cLfii^ZQ_aKl}g$^*fB^eDuUiOX&-aBaOv&EtcthC6Z-6WcEU3Zp=@f zl?$5Fkpx?vP_yrY6!zq_^w{h(EIQ=_J&TuNG4>XW_!|dLs)gmJR%Ihw?tr#qZJ@`O z)yOKD!J^7}kqt_KeLY6tq+)vKl-gkn8zgKu6- zo^okCly7_yiEpG1wpSsdMFB46x>bh;jLOMP#>ldZ4X`yk7El}Bq;Do-#f_=*R@y>- z_LsIo=A{iws^hXANm3rCG^keLBGSCe_gbHmg$~{QtOqYK-j`QgJ4RYHy|I*`J%v{e zR)ZE5`vb|Q(7|wJ&q@ppuLCqcoalwqueZbHaq+ystu>JJxEOD5eT(QDjYL-|#;ySN zw5f<=66eTP13rP#wH?qqBgrM}+A$qJIxm6a&pFl+pL$N}kNbL9LGgjVO1ICNbJEX1 zdJcw_?8k4rrO+G}g<~$$Fvfm3PCIu)(iPkSXE&UbY2M_PO@fUJ5BkZrcT2Dm*DSg9 z#}Y_7381VcJ6WQ})a4zDI_D49<>n{bz{`&Gh3CG#vB9f!IW%emer`5`w^~+!cTBS3^Jd5M zBApCuVpK64lQJEAw@7@@iD4kd{4QTJXt1FHk1kW3jqb4w7oEzKBJxR4QR@pX-3DV~ zT6=Ca^ey~xh7MRcJc^(Aun~Tbuf|A!0O=}z{m~G1C*Tgr27MhdwWUOJMdLXO>l^ok zTf0iKUNQY({M$$BBJa(Fjo_po;o6O{@>z0_(E8cYOK01wBE?4)rV5DPNYA7_}cg7Jh`veI59i zxP`K?0VOA+ENq^zx5Rs*4Jf!N5Ds_9gG4v!xZhCt?bdu;R4zXcN^KzTv-80cqXO~h z=}y?aoIU%}(%dNQ>WL2?d_%j-Qj>{WYLS{+ZvAfjFYQXIV&xFUz8267R@GkuE$F8?npG|?WS5tJ9lneHdAJyeRd z9g&XC7W;9}mrJxeBs1KBtJ#nVwVN;zeQgV85PJ6 z8xt{g%p6$ur4XzCup+;5a0&J*G+Iu%R2U}vEkw^IgW1{7v*Z;6wRn2ME4lZ!^-yoZ zExfm^9J@ZRuF<7{FJ52lf#es#z1D5Huu(MM^6X+Y6dCNfD-rqqRPWi zHJqH$j$-|PG4l~-wzf9!ZFbp=vN05VRiJkPZ2^b;7xM4PKQ4b8OIwTg=BLd$75ewz ze~1EJO|8t!cB011nsA&S_`_n^Y-iK5+0L|#HAyU>F44rwysDWwRSS>GIpQ+Uh-yLk z&1;RTE}9FEqUF$9HML6n%3~A7Dq^uYKTc!X1y9gc_Ewwh-8I?Q+AxFIf|F~vP4=!K zmDm?gXe3n@e-J1r7O*!{?&VsBYg(I>U05vjZ6=npJ7m`hY7rRhn6rMSdt5?{Hj&nx z=W3N8OVd3E`|1u_1Fa;A(K#Aur+0OSXwj5_7qhOjwuCquXeUW_$MhyKS_0Da35J|K zM9PMu@2OB*W$*0lV*m9Qy$dx|o3{E;RHKROX~ITx8dkO+MbY{yItL;5aA^ZkW7FOL zPJh%rZ5nVU^4QbHrtFu<-It)@SDNHd>}z4#{9%Zrtx#rQ8OR%<%j?+eHB4}wA?Taw|(g=1G+a3N3 zJHx(CrDsZF?-5;(N=!q5GtZY!=ZD!6F??R9U}>~Dwlry62-%8q9mTy$KxHd-tNR5oS1xc;O&+R53bS!<10 zKuUXW{;OSnTkD^6`*kzc-}d#jsOW&U{t!;1tjquYRlaV*`r9_Y78Px#(Dq2$nl9G* zi&c(JQMv@3y`xuPmN_f)kIb1@KvuQV|EOAVe<8^E&CE*Y666+sR_3+DH;w7$H)5Q% z*+eLuT>Fe@_o=c!#iVMoH=5*9Lf#E&Y#M5>)KAAo+h20$Sh5hS624hBx>T;wq@P^9EPIV zvPY@B!}mk|YAL=BM#;@-wBcX#dm1u_8bR_ba%CsqBIs-vwK(j77`rv;g%%qBfIwd% zumSBug2XOtf8P$FxrmybEzI7)qFife_ohMHUFYE8{&hIY(7#PFDur`wH*N0wW*9jS za?C^aV^fkbYoA$G7SX|xj#v^dkFw*;LA(f~_i)IrBW~n!6qM0?lR9i6wx?zL5n1!1 z3~+e=`hxk|5c8G%j`@C=xKvf3 zwbI5ntV}%jO&UKZh5mz#wNm?AZu(K(A0@1ns{fOGwbDQ~U;S0W``fg$Qtca-`)0&n z^W@)FD_$?l@gnBSiCVl_mVPby5A~}zWK}Hj4=Wazvdl(_T*DX=t0vJH=0l=Ex4$tQ zRq1RpC24N56sAp>BUbcq6+3e2kFP^?aHJPCi&%Ugw=PTJwJ)cuDCwbI0l^4!;M80@H8jJ0^BlHT5pL#O5);Y&wfd3R|i81Hfb z?0+xJzg*ZS_egsxIbPc!-SM=Bhh>7G^9f7V=E^!e)4mzs6krRrI_yAseuUgHWCeb> z)sjWJ4EOoewZzO#SbO?O9Uj<5!?*b2(59KZH-INUl(qvcm89rXS zC>`zbMCuw)0ep)dhfN2p`H&9oP)cRPh}J~Ai#Vi>>{I*t7#8&Uj$Co%LU{Sd3+eTc z32-r>mE8W=X;>dJ8&+PX?_sxH$f!@L?1U}GCQsi;&42$Dnx?4P6|ZD&ezhc2m}raU zC)+{6owodFj~M*;cm^w_nt%;vdo#=ZN8n_1W!O8-8XA2Lg$Jswkau4K)bSq-#it}- zTA;g2P(c-uc8AfjB3xQFv-DP>i5u<)xK_xOJl3x-dX0@;%#Z1{V4{{pI-@PcZXri?hRPF zQyw{OZ8adigyTH}@llmDoMnCo^X+bpvhzI2?)^;ZXzyC=X3ZWDV4aC8BMb3+s}_Lk z!JSxe=R~kLo(Taqu58y#2V?Q2%Yo>E6SfqC?knnwdE^_93^DF2F%c?R*1%tm#=!j7 z7o_+BuORqVPnMEcj=8ddcq+mTDh%w%7ys^ug_lR;7S1sa;wQ#ai5Ae$5@}$xOFn+>H7O`nAZs0wzM#K?y?UpCyKVCNl z>%csCxyd4Q%48*X?W14-YG1>~z>mI-Gn8uHr5T`1D@3e>4rsPF^El z@K3>KmcgjmvjBopD}#;uI%)pv_B_49F?q%H21vj0+P?h!P=UOx&C$NH+08<5B;gXx zgAe|Z*BTQBHs=>wdb1K~AEect>@jTJF?^G<0NWqBEZ6bgZM+zCNSZMxFP53M1WS*< zf}_=^@n+43vXJuzWdS#C-y_}0uu*uZis3k3-MI~f%#$puLoZyDK3?l+Jn?!IJe^pV zWbYXkUC>Utd~g~1TRt%Ep1J|X)UV1$*Xb;H9%{8YD9_DP5By41V%=xImn{!Blrpzj zvGVEp*wi9Xg74KsTkeIIgEvd0Mn1rZ5J&;`6h z>&i%aR(kR70o=0tD3P8=(kl|qej*dUN>}S~qjSJxnQQ|R?Sb?R`Y|ZF zp%A(snkiS)e2|Iva6@A!wr<}AXk=S}uR7C7Dm&yYOexb=K7G?ms;22DzfaD?NC!v` z_bNl_S>;)YxtZAER8>wo2_LAu*}Y|s^6XDfB%}LOAl)wK4{${92BYa6BA8ofUcsBV z;LChT)jNRaxi}BXjJ`|n*jlZxT3OH-oq}%3qzCZ9JXyM3Ymb;eM)C|JST8APhy&R5 zye{N1b4ju-YZYh3tSHOaW&5w{HxKVht#2&DD}k%wLd&f%_m4qn-fa>JJ-qn$J&OWpBHZnKHfMB|gAMX_NGD zaY1-@^R2XnRe|N*J#c!-ZQx$79X>8}8=n?tNOOjy$LYg*_hh@C-SFhY#h93^0n77d zjPxBeet#Kh4kfaK^2MMaJQ90bt~6|wMEa7YL|&HEYd1j4+x~KajJMLg@{y44SdjGQ zP)4={c8_`~ZD_nkUfbD>>zr51r2E;c{@djbw@xCx3vXDiBwzUOB~o3Xk7&_-L#ElW z5(RBPpZ-G@{hFOUEq0JGSpJ6KW z&5*4wF8|VQJ$}3t&Mx_Ok}4%fBk5TgSFDEldFh~jvTJv1S71A;P6pD23eVej?gC^d z(PsTdc>QHEx(4o(1kEf$yyTCUZei0DBi49197qRAfyK?(UDx79l7BY5Z3zyllQ3;| zO?ET0s=T6SULLW&25V+E!nkJdAn<5Z3G2^ai#MeC@cz*bdDbOWyFIZU=@GQDptqwt@iRYRn=z1*=+&(q{X9mdyBuV6PhLk^8B zYa}`0%|A|n2NiY#>2qml*F0!(+(#xKOCmkzW2{q%-!J|Smn2W5@fBt@FR4NBKJg-^ z9<8aS@gnh<@J(=H#%#D=zm(d(+Zobn?|f*^WKgw~KHXl03scrWlNV3bTh`u_>Q||$ zc4&VW+qW-;7XwZ~gF>HS%5qycVBx{Z&dD=N6;;<;yc8CEsVrm-GB)=&Ht$;;uGV8X z9xRD&10)AsHE3*Ao|F8lg^eMef~h4mc&P6onQRx59w%McSSCBqpQNt?;vwUQXSP5( zTBbQBouoz5!7#F+FC!kHIruDXUuhxV^4NevZ_FLskdr?FeR_t1u<0Ik9>_#<_26qu z)Nh?vVF-iw4 zHiCW3WEj*s4C0DZ=R_Czp2Jd-zxwi^TeHd6T1GasE5uGK&B?!%g`OeVR!^uE!r#7h z;xuQ*ex2S(HM`V-!Oaq-iS`{JX;2ON$lP^!Ze1D3CnJAT4cFb<%i~=d@%6j3(ERrh zDR$a)uxdUXJJaeA*|`!UKUjX%zaEmW3Y)gHfod;SL)Qb-VJu&+`1@fy^Kku?J4Ukc zKUv)G`lH4D*~b@kj?Kan;|w`}<{V&@b0_-*qnsNekjuF+one%7nRSR!=U5XM`NLC; zvL61$F-FYLUe{`^3ruf_iMM5FJD{`^QI(K(%sMKSt!hZ@msI=)FcSo%+=8g-5( zxL8R_iP%2tPY1`p-V`8GjXCT8Ery%X|Ns5>F9rUkz`qpuKc~Q!UWH8y%%eYVtx@Mv47<<@W}{lt5r#`-fbWL+@0SHt#9Uo=)5*eeSvqFZjQc z9B(-Y?22dXcjM$k;;-@3kYY3*KOm8j?}&Z{y0On;F6_|21~7I0Lh|oA;F$W0;cb#5 z^D8wEM%8P=2bucqP_&^QIbh2};LCwxgxI=a$2=$JJTMWrL0L z^G-JsCdWl=v3=!mnc{O?@bsZ{s+|E(Bo<~{*g`lJwE`$sW#m^8ws{4o73!7Q>PbO? z$H+1rHqhiLeZbB94p6KJ#$=}9y z-G-yUFQjFAkm4FiV6haN0{Oa3yHx^;gRx4UQCzb}1%%N^Hj9&>pXMpF>Ey|aE;-JF zuO))5Gp#i5xgQDZ#rB;G6W-HN#PC4at`ch#4giVC*D%%hzI=6OU7S&L7vYWGyl=RU zZ)jFc?dkqP#O4AI1gjtw;cyp`{9EW=)02~5$Rd~QLW+fW)XGUfm<`q|6Al!oqN?{k zs90bwp6@_7U8&&$C&eobJ>_fa{YaRrM0ki2_olfnK=)%sc1 z+{u$w{vy`l`zKW36gL6I>rk?MJzA_9ClhXp>v!ES*61}F7x&G_DfZ#EHGLWR;Jl8% z8Ebv!K0HgCgnzs~A_?F7K>nHx+(ux%5|0(%bi$U&BA(5(I#Qlf86)|j(k};J&yvL<*Pd_7jvLK+xo1$@QoW`DMJOX;>R9yS>=R3uwvhEAgoB> z-$-#HFJCeb7uYUg!@S+eCNiI%41`w@uAVCVawgt~;tnQo-5R|LfWX^|t*peWM(Xho zt09=V`Vhv94`B@}je|zx$CEF82yS_}QM*I2u(~3DSlxUVpB!9>Nbei zTV6q?*qkuO_el5=t_q)u6bqxk_h>%Rcfm*`T!;FaNBHheJdhGk*v>G>za>t@hwAC+ zz(}?PZl>U@WmA7QiuVzC_`UM?D7Gqz1AZTjgo&bC!{adQf-Ml1Dh0=`1;R!cVd}6n zp$zlhJ|4AR4LD(b?A*1|%)@WFaaOTeKrtT>PQ%Z1Cj7GMStR@s+h3f7BttUchQ?V_ zrW!>|<95=DVoPUMri_XW)K9=AZ^vN$B1sa(Y?7d{h>_}7^kAO#T?M9vuiiK0`C8g= z(gDzD(r`MIV3HIw>42JK9Vkv@9roQZJ}h$xCarRUMM-tor|!$(W{sDGsrJA|pHBl} zu4ouLmXV&pht)@7)XJjl)A?wm+=(&WaV+L*Ie|C%Qd>=PCll5Wnv6$sSUoG8QoRJ} zpI7SPXUZ^hTD_j?8^r=X^`-pE8Z<6HB`^<)f!hh$M8b6CMR#eFdg%euiO692o@^WK#$X`x;mh$aBgM@2SF2|asxvJzHOUDbW8y?Lsfk(_s!i;jGnBIPx zk#JL_yb6?<>%&^y3xgApCqVG*iNx_}C{P3`2f*v>w%~b=U5C?Gw@VZYqWz;%>P2_^ z%M=r$z;p!$c(mUlqb8##7xF@LYNT8X6k2yt$rY8FbVk9r69yi`q)#<@&}*GU7>`6a zp0r@V5-xO2=z|jc*Z5M9wsr~Vr|9_0=lzi4RQdX@Nf^1r7YQ3=A|A}xt!8$8=CR73 zyp1AvL)fB3?}sU`r$U)B3na_KyQNxTBarYT1($v~{1@8M@f?W8^6D#gIB8iO%AHJ= z34aBB)%mi(IM?j`0!w2TqH%F2ndn9G-V_%o=aqQ^dkn9Ru z`m6#I7~Z-=!Qg%@O@5L;M(8x~o3e=Tr)jV`<0|$x_%fkCR$o~JG^bMi`ObXnR%ax8 z$6OCKfDWe?>DFUCFoPKH0tA zd5Q9vK)EZKYy>?I!G?3vL{3p6dyCy`aK&C$8C=M?b=5O))H)%xjg$vb?CCgjWQ%RUZJojXppR&XeZia%y820%Jpvs?6ZjI&3a;(Vd zOjJ1T@U{{0?~D(dydUG3E2n&sj%!Muv07Lyc%XP1Wp@+{%mm^>DG%aJ`PN8`w;#yK zJ}7q(i|Qa%`!-KiV_#Rhz1&PieJ zxe8juNGd#W5?jtRrySK4fQ{3MkL`eM-q(|gAC7L_4Sf&p1h1XuNW7M^d1*V>4L)B% zF!V7*(l0IXV{%rFQxta$gO&zIRUT61HXu8rH7EXDmp`|xW5P$gt)p_ex|~Sr3k|oa zFdr%zm`LKERUF6ZJ{pBVPm8s{@j>$`2YL`p_PI$F-?(>n!9|JI#F3s+c?YIq50zUP z6L1HJD+S8ElMmdDNw(BJk@)7rdWgh(1Lgh*Yjy$!`khsUs?W)ar-@%n-?kvRXP1?v=eRsl!sJ9L z7tO#aSp(To(@bC!n~JXR5S%JZl~&r)xVmK-?bXL8!FBl#u+$Ef3H?T6`Q1CQ3)?SZ zvSvZGR%^YNFRYDSD2KPqW}av;Ig9mKc!6b(;@M|ecX-w5yhtg__y?aYn7lie)t~TA zWJFBn8kg2ke$Q<*GG4F!Y|w$NOR36tPFluBubGNw{(ZI2Pt1io&(1*do{=(k%Oy75 zY%E@s^BKuVK6x_^p0qLI8%NrZ|Mg<`Uo?T!cY1<>QJ^e0aDaAN&(b{J+?*fZRt0~Z zJ54-{&|=S|y=;HYBGPZZ8LrK#gES9tFy<*s88ln;DwD{p`xWEW>`vp0llA$%C5J_s zxvn^4Yub*~-;MBK%wPyUoP}dDMnT=kAY8O_3Isjxhc}yA$+@$l#oZRp+7?%)^Xott){Lv;Nx^&Z@$2sV(aSg_od)l75jfM#4!P?N za2>&bt+!j9hO;As9QFf|L|wbH22NOe7wp!xSy^Z9_ zTTgKG_>H*1u_?M8zpV6<)k>X&(@lLK|7jo)j)BRwrR->3V?lC&<1>x}o<9X=G#(H{ z#in}BzpwSIwgr6d&eamG;Ejb3$rfJ-=ZIs_!K)Y!elrtiY|EkIl~a&(Upw-nmy+4` zvZdQ_!VRwUG-Z$lrZkxggA40u3O^Niw}~5yH=Fw@%mnrGvVHxa;y`m;P^u(TxP5R_ z3N)@2F7$fj2$O4eaBTV{5&pgv5YA%i0Uy3(U<$r`e;Ex7cWR4Fu^=o?W@A3Dl1|TJ zG>5J>1uLP2;HSLr zXAf<^K@{KS39r|@RyMCaxXFPJ_+0VaO)EGZxxLfAO&BIb)&}1CNOD3CXHdfmh2fSl*xvnqiX=o zF_KR~r$d`G+0OAwf3WBL5a==QEh8)uq#JDIK|48OHCN|*E4;4RZoRl3x*SZl91oiNTVVkD>nQ$yjM{E5hK1jC>cC3S5+Zac(&vf5WErOoRg-FJYp16{9PG{GIHJZ@Z z`$f{6g$loc?vDeP7a-vs5XO;>Zo)YhdF*EM>!RtUWGE;+NZ2zGrRy(vr<@^IeqP}h zVK~rppmDF&EOq}z(XUlL&^+Ow5lKL@g?_F4ajNld)OOtrN^b%ehr;MJM(87~fv{Pe zg>hK^p*2^rPWO;n;>Oyt@>$Lf4^;b~3={G+P$ams};3ZJr+6pMP zf#IDWK&(luHrAvV-YK7fwW}<{?CRU##k;NE4KEmpg2EP<5n%upfg@SH51!1R=mMB- zdJYdvO~b46$0A`eYZq6V;^(duOID|t^aCTD(Z!RbLrNdT2cNod7%0q|&^;dMcWwVyW0B@pcvh<` zXKbwu*uR}cth)_7GK{# z|M~py@6r8q`nQjNKKqAvwSGGN`{yd*{9|`5${_!dOm_eA^PXYfI&A%T%C`@{9{=0E zTVId=ZR4#!uK!n^w|a)rCj7r?y+wKOf1~%7dh(yTZ}t4%eyit~{#!kNY{1pi@oNFc ze`>)+_xMu}uAcPPX-`KNy5rY2T=W6`@=uMp)X4tW&hWhz*O!8b^up+$dvSd^KuWD^ z#`Wd5uQiyycjM|AMnwsGhSB>OKQ-j~TK})8gC70=pa1?Nf&WP0KN9#!0^5B`e9z6# z^!mSbt`-Gv5lm4HrLxwk=BPpp!~ym8d~>JHL;`O0zZgm)2)!=IB$w8;9+=a zTsPtbQcQ`v4dz4Gv3SLK@aHRpptTo2H}?(fbbAKHxA%l;y|fg&dCEE7nZ!wq*2Rbm zOJ5cAvz&h~0agxeqxdvfH1H#>Uo|)`qdd@BgLfhB|5Ah5RFv5e4Qg7;?c*9tioH2; z3Q#F5RjtRFr}HI@tuvK>T-O!DS4GrU@$Re6kyxzQV&YPdfLaG!de}$tc{q>uCC}bo z3h7y(X60_6I6{knThpsGPY8_W>>l0ZfxF)=J z*$y*{H^baxCi-sr9W8RDM{M!Py|HSQnwePx{rl>qvii`QBHOoW;e2M$&G6Ek0>OExtCw4@iET zI5fr8!s%OR1xCx(X(vOu2+Kt3-%0@-fRjkhFyQMf= zl(@HYa^hrjw40xa*XP^Gk|k0wAzNSRs33k>$roB=)#0>mRGcVRa-;83>s%bRvb~DO zv1)P&+2;B(oL4GL68`~P-=_&)gWi#&<||4En)me9U9Y%QTAwSfozuEnsJW(fDyv+c z6PLZ1t2JlgxC%VBSWUipw2@r1#8Q6Ji>m)9m&EWRp&pLjX<`(uFuEWC4_R!Yr zF7fUML|mT^Nc^iLy{0uzS$Ih?x>}2m{4fVIM+Zn*qbh$jW||rYS|#j7#Kk~k0C^XnWWz2&Rz?m+(UJAt?+9#PdnlFc*X?$mcm;-w^U0cxFvzuY(g z8`~~|mRB=z?yRD`N(I`Nyfh4zZ3QGB1ho#;OsGg}?D3-hgfZZBxH~6)Tq@q1_#be# zFVqm1k8=WydGfd7>W5*drYyVQ5IB<{`UPJb$9lH68i=D_r z-#k>D0Pdag8z;_EXB$u7q<9m@fNO>&FvT0q37Ezk_gF#slLOenjJyvmR{xXi{HiGz?)MsHw$t?E*7EjODc0Ik)KI3^^XfKlFoQT_%g z2Ln;RtrUuf*m6=&Rt(*Y4_ZqN*@=cYVVr9@L18DH35-#ko}?U!;x}Z1Xos}sm&6T_ z4)4|y9*WPdt5i+|)ciH*zExy6bS3_i_&=jSonAa>WrO=Kca{6Eyu+h6E+Wkb-&pwp zYujf&(i$Db#Ph;3`xmTy@IJ=Gc=7(>`do2DiZi2JisDd!a!DM|rNhHE0Wj|T0&T17 zkx;UP1CtjF|V6%T&8#4OmF+ZGfTMwritrs~ErRfqcqSj&E-n#U$F7u=i;@+}cmwhIl+!N>nW>4yaYiu0 zDJ1OV+gC4;qq|;&toE^Rw3B_Dqx7F6MH)eiG%+gyKnnd^juGvp1*vu(0J;_%UMxWS{lNF`xAK z?Sl1?;c!+sJu{KLZM5vzbbU#@C?h{lJfsJZkHrl84Y;EDYNT8bdUoFAeKX8bl1@-Q zBMWV0bv%759xf*A))FsDoLP#(A1r;>OKhul2r@_C63TA|A1bcq0ra9AkoYOe*?W1QkR+2zDo%1t;z;+-m-a#rl>qqXdE!>#BurvZ>n zBk`=(Br;7s(izQ?v`?B znt`M^ihRv(9KZe^apg`xJd}#1aNkA`PPquNcBv;{(YzXHU3voXvruFBJY2LZgU0X) zx(Ayg$%rX=Iput0#c!CC%nzx#)~GxolPe52|wz5~1+e5+_Z{qEEz4!4*aih|CK5@M%kY8sbKlM^MBAp%24Rpgv zdFwItsVi6hJgu2Nr#uwpu+qI}Y=25I#%R2KpcZdBb&&2JX$Qxm!UwO_hLUWC-EG+( zl}$Z6w&zU&mDUy7KICSj+oDkZ?fRa zZ#h8s!H1c{p{j5@y|lb}Y!6#p+5(21TLK|%?y`OpE@JyLt8n0PYtcW^9xqn(MXxeh zFvPtfcOMhae$Af5GGEk!mLi5OuzD+IkYHble(1AMlTzM9s@gYFO9z@$gvKN80Zb} z_O4^kCb=VwybKQU9`e({T0HdRe9W451R6AXfJa+2=02XM0S_OB*$c|@d&ymdOgOLo z^l=5=yl%wTQqMW!5SWHcYC$1L!!W@HL!FwJ-X*HZOD~zFwU?CKG|Z&gLCHKt@$0m zBhL%cik*hU;?rQkzzuk?%S2r7v>Y>t#&-1Gg*EpVFw3o0a-(x)dFSOz(430I4c6CK z_ra~?4(e-FuGn~bPG4xz=9w7Vdkk&ey^5jjA9`DEO~4+SZt~i1=U{HDX*+$bhP+VrC_cgEEZocOdJ6~uGzH)781G3dOhD=1b zk#H2UT&wZ0SBGV%+U>Ee$wEJw8SF=3N*RSW%!+16$j3rkc zjaJz*+tj;!UgZmfptl?6ih*Q7LoSx^Wy-sy7Q`eV2-?S6LdiuAP#V zP~SUR{~SyxmjYH-Tfmmizv74e?y_*iGw)uzjM*~7_OkpQd)aqvSJ>pTQoMLpRKTgPk5YOC7A<++uu-?8l#7$z?6t4Al;9Xnpv{{(Jt`%1D$wm03Lhg|unAv&@hi!HdDkuc_P;v;=6}(k=KXF7NvS z;$KNI%fAY%hWAD7tub=Ovus#x-VN6bcrT8n-4$N4^2A}m^>~QWc3c=)X*w@ei#;sLkU(1S`_kiNmr($QFWy9YdZR0^kUX~?^k zsto08#z0#Pwum`?D}0X}Nf9dyIJ=D-=V{B;(U3 zrMY!|cHZ_XMa{-n# zj=3~nF9hL^*3hLVdS(~rW!GKAiZj*&VTttjsfQ3qhV=3=X&)-t{1Z(0Y();b@v(Qm$*Pkj5vPLdr! zz${x-&p>+4LVDF;ORp~m!X8=VS&$$+#neu*IAv^WuzPS?+$#pG;S5I^W>P|)Zr_?M zEi(seHMiqs4Bs)52Vf}!rtCP*X&u&^T$b=TLfH?-9W_xHC2tO0iZp(#ka-1Hk8Qv< z`q{{9pEn`l4UkRqwOh6*{bJV9D>1*I03JIS^7v^!(D=g)B-{dn#N9x60NqPh6-g;6 z3`50vFa{o0Emrt!G=mm)|up;i9w&CWI8o4*AcnZLpH zJ9Y@ak*ARGLrhGL(B_QYOn8;dE~l8v+xao#$;IPHz7#i|oTPj;Te@ZqhWc+50X}w|lhh-H)&)Ee3J(5?fitck{ruTw@@=#t&t#RJsd?`aM<{<+b=~ITl%_ z0uOTBtYm~_Yid65k;hZm7I#9U{Lk29eObxv)|}!8&4+FWf#k@tGTv(D&+f&@M}fkj z^KaHdtr9NsXp22Kz0GAHJj7lx36Na%Ep%);M-X<&L-!U^eAAOH3*W|)N)!X-uOB~% zN0KwyVlnLt?Fwf9VZOpM9#b+1$;YAH*Z~w?SxMzzJwEn>_qD89oz|(4miz$Ri#ubb zPqy%2^eT}yQVUZaY+{%CCqd2HdD;DsCcwE@t8tuR9xmxU7*=#K1`czDnx3zSY>^K=47y~S)qsvFqkA7O-5IH_1KjaR!>aHnrCOiz2p-oJI= zZC`cKQY?adsy|1g2x}z!XX3XTWUGmIe?wVd>y9%h_5xQsB*R?yx@60vAgRAARaEy7 zPpcGT&MvvI{hYC=;qHSJt6+}#FRa#PBU$Hg1jR|MsArlxQmmn&_zdQlM8O`zecq2e z28++MEUp|DE$qfVMDM8;G&7=d$&XHAm<*vO zZ9v)4u;8t*znrNgECw%4K9CJ7{Py0lf4?A1RzC}q^>KJ@#VpOcy{@2qa*p{?(W{fa zr18o2jV;9Pq17?zLTPmJ+lNJuZ(|p0IdF>k(8Xj0w({G-N<=QfPn!qo;;WTST1moI zwt7|(Ub|%q+qN`;wcDM~D1KxfAMfg7uku~Cqisxeie(QVVKl2ZxC`M_Q5hK>4Y5zQ zie0^L1BD&6M15pr zzZCC%CL3zcx8DzE6pP?9Co>VftdJ$^)3&%OE__t$;;8hGY)0qn^MVuM<*-3Wcn;(b z1>ucM?Nm(J57@l4z-xmR!2rMY=yTa!*)Cl9xDlGxDRn~{+P1AIIdQq5xx|nC%>>CD zFSswoxLyv*K6SD7gR`w^|GEb^NNhwpyIB01tcwBegS9NTuSj5C!7!zpQAR< z3|7yIVrh3A#Tl1HK=Xu$eI`S2PDy!%UIWT?UO+MCMLcX*0@{w4B(p0Gz=gjJWJBC{ z;np*Td{|Q>UEEPCaxTSM5jgBzMXv5cct?0{z(cV!J}ub{2&2h2Erj78Pr+fkSwL|q z@3cQi#R>F%21xNUSRVeYFqUk7sO}G8F%F2j0wFu7xd-V1VQ)6svT!<{p>f@40HpWu zI^z})zQev#r$EKY*Q*BLrEa;b;l3no#07ip(~|q4>7jCx;xskSxTy6c zP^xFUyDo`Qi~~(tJb~$Ld}$8XF|{VCz14(X)meb{1N205uPN-q{tbejk^S{{kJ|s( z?~xuV5UJGsEp zj8ABAQXGF`Puy5bG*3B(bKSSF_M@VJI4Rbe72_iYX6s^E#rMz}3n`XC#p%sHIYUcv zBnxbD6P7n<#wi|@&MuwArTy8U=i5fmx=O7FK=D0ljYF}Nq}UHbcAU@zeTo9Ja}DUV zrpJuUm|_Vx*^?min^vsg|sB~+g_Lh6Oh1{H(*cy{I#-y_9* z^eTKCIKO+VP`tBy(+Zr{JhTon;CI)Rk*9C;0WUEN!=~K;;_WaoE)PsiH_#jHi zzNGh4Hs|&`w0SujUQMaZT}Bj_9 zdghBvIDO*=s2oR~QtmVlo^tsqUrFmn;$cHDG1x^;nN>nkT#Ku_TS$s|nZuSFNNX5D z95kmjM|O)HJ$T)TNw~>>ArJ@6XC{^5#BDO`=jNdJ)`ywp?m+8LoO&@#TDSASr)j>d>8BDP z6S`^EZmBCPGSOKzUh7HnjBS-H&zt;&zkcZp8j#^Jk)9ofjk zz1f);D>d)p>dPDYb@^}e-;2V|O^Cy($}VqyolVcFp?r<}JaDEMHBpbh4~|8}9T*s_ z#m5gUxpno)^lWFf`-ZRA^f~(qh>OHgrOKk>9dpLkK_zq3##K3=o`Pg6xVwxIr|$yA zD=Pk0@wtg_8;ejp4IP7b3w1r&H9PKW!pE-J3^z6DNZgmC+zflO(^*&zzD8@nIBaOA zQEMbdd<&#in9t6Sh}4*ju;FfRZwflbDaV1dPLql!>9uYz()yLt`Ug!KR#x1f;^g?y zxZCiq;wg16JP{TF-4jOg(Fu>)Y@*`mX&@WcIH zpg36b+JRskaGG)^Log`5Jdd(lq2rT=&%RG<$BqymunMDQ%uu{8x))!A#M$ZQo$Lc? zj&!^+@r*hSjBrg-zD|%0s5LE{;@||7k3(hKiXZoiUIfG5ww1)E0DC=^asq=Ttt%zT z4N1R{_+h@t6JbK9L}}=91y7d_T8k5pRYqoWRYbms%0$*FUGec)TJx9_Z>uF^+sn)ge=v>zPg1uJc=PIJA;-qpcNhjrZIh zd6O>z#WPMj6s_at{q1Us+lKX#?3j4XSK>k8D0U;^7s_#Umc)57;z%{kCIrZg344iE zPe$TKx&Dr)YM!;_YnpJy%@bdRvriT$9qmoL^EXzi9RB zB>B&!!gaC4PqPuXz1;@GnoiADV^i@=L`nvBwXDSV4R<4(FDYC3)z2m!U~MS0?WV%p z=tnW=)3+|zuc5@kgG-Qm;Uetmcp5@G{32Y&6ax#705ZxcSeP>q?M4QIO)(cd7dann zI_KeI|Dw3c)ea*s-Gy}DIV|0-63@yxidm7TN+|k$E02 z7&ZDd^lG8S8}l{P@$fC$-7bQb2+ zC0QJ)Ewv$D5H-k3Dw!0v%!i)s1En2~XNA(0H}`J`d*+2=q}c-YILMawib{v57g=mi zTMm5E74?VeAThlE%nTwz=3|lg6tvsY6`aa+WDVX_L(i_OF|@=%_*~;2D+n&Y99MT9 z5n>}eJI-aE=RIWe{v(;^HDA#@JrYM*>oJR}D@4TeqnP7ti+PPdA(e>1=9k@gq=g%j zTxDqdDeA#s!kgqzqD*t28=n|9TVJK4PhoA&!rd(#G* zI2vK|(y=V7Wn-CJ_L}!ZoCn&K)ud0QjnLfxI7=9R0xha%i@*n3u(>!2CpK^ppI07& zg5V)+&yg%Fl{oi76^HdE#!t-3q_iz5o%Yi#(e8qn7-~I>BlXcxI>TgBKM#{ zeK&00BaIdKdhpL{uZVQVZ6wQIAoTcdk#4tKxCogyCJ&Up zMpT;%?sYtvRmaJg@S!Owm89eH<)K8;yh0sRb4=sM ztd@IdE}sc)A9J1>)dr?5HiFPDH_)cr?{NFGi6mQ=xt+3cPpliKKho!R10EPY7;~47 z!w<9(B97``d7j?{_up+}+VOg^%$VpEF zk|oX2MA2?vD$;n0ea z%!K-mc89KN={Yg3$3E}$fpwF%fefIrDV)S3+-*i7Z&KJX^bUEIKV7EK|p( zpr_4t_*^p*B2Obr&#wim(yip@^+WM^8Dmak!yN5MH2x5!Z5>kv_nbHcdyC8hPkVp1 zx0w~s^F9k?Z+yc^I~m%g4{tYqgGl}8!u75@W?MWy%+gmh63RXrya(>twVG_6dRjv^ zgRNW6VT4=gzaa(-R@~6obPE&hw#V}1+r4!*NOR)d+O!hCKj9oIeIQ(c)CRS%c5kZR z5!Y1|dnSmGYD`ZBl2Ep#7Ji7<4u$UkK*v#1Mg?%bVN=rxnwo@B*IXL;eCJs8@3IP@~V zuI!k_QLSyVWgwdpKDJY|AF5mOXxCX-I1$0|az%Mx{|25LWx$P3-Xpns!SMxiAkeW4 z*ZzJU@;=;x|_^E6KQfEJ0*jPUxd6nU5JK}-xPERsZU%VsRE&J^ zK4dInJFOiA`8AEgYx_Hf^7BJ~gfb?$K;;VSD@XlI^4gO6?4z-NcMUJ z687C^fEGk+NvCi~p&ci?#vW~F zqJ6NX_Qr2*1o;n$SicGEpEctJWo*a~G)CiDH-*oQ>d;`Q2_7$30nV{fJbhr0hQ`Qm zblb|B1g8knd2Qs0YO;w_GShClixIzXgIn>jrL%%^>#&LARM9ixla^$`rumg&#+`oWqIm^dNT6FYH{Pr zS#Q!UZd}wIhP;f0$gYPVZ6w7Iza-Jdtt%=Obn2uS|9+GUCdX&WQyqDRKS6xpK z=HieMi8>$I&bu@cM$vOuk)<8A^8xMwVtqf2efPV z5$OIrqE0Tw8FwMyd@52L0a4@b3G!_~zL*&|w&U)bIxX0#=*id{n z_OPhPRV=IgXU?|1VE3wrPNxg*P`omvvGQX&?6iriE6-6c0UO&-pyFhU`*ps=??auH zufoCu^sXAkmIZc=A*xmy5@rHDv*`74x`^{1gbAAyG2PFJ=e!9c|c>)T(w_-1zn7#dZzND zQ-R`qrd?i2=JqPoL`{l>yz#%o{A!Mnx?2kg+bJ%4X$w(A`s_Sqh)Rd;gX1a2s)4na zl?L)RXg^pZw}qL?UJc^4-xAaRPN0kiz zW%tkTDdzv$I+I?_|8Hym`Q>}Q{QW=C0QCE?{tt8j{eJTw#`E9b1N8gX{L3bw-%tI! zE}-Af_;VZ3??=>T0p0aK_g?&8=>z)xrhnZC^!xE2JAr=5|CiJ+t5^Je@pHvDn$0mA zYu3!HrpYmr?M7KfV~zS1Em`EUet^Cko$~+He^%aKn^ao;V6%1WQ?JP$BnPX1>@}(D zZ%z9*sK+pMD<2&_+)K4vZK~BK-TS4-}TTI)ny|2nywnt=qTg;P^xDTKYo2pshAZ)b`(d|NS1bx z3>re)QT}K;`K{5c>(A$Y`BFOZ>$m@W^y^U6eZCIr=i_RGbWk_YpO5H9O^0;i`+!PoPH0;#!d zbyL&7lyN`W0OaQ%8u~@bx@sG|UacQQ`Sq@$w3|kq^W$*Twa!$|WALyD=O5(i>fq*4 z-CcJpXWie_ocABTyzl5Q?TU5Ntc3M%eEC?%AA~&aZ-!F6uIE>6E%k3{Yv+1OTlGm> zOZ`b(zci)!*Ii}4v^pI!T4x7;bUM{-YHAwVpY-!zwA%io<00b}2OQ`%$#IV7k;eN_Q=~{y5Z?|;d z{Odh6I?eo{3Apo@_Tbb8J0gVBaMZu<0|xgGbN=I(!2ZKj2VrMFzkdBggZ%uc&`ULU z_nP#bfBakRm!Q$%Y7EpaJ)C-7kEr&wiSrKw_}fR-Ni?wUPtECTd)4yrqK$2)rn;kk z0Xi9z0Dh3T^S7H<|9Y0L5$ul_`2HlnUZzSie&3Cd?)T+vDj}l|nVNoS72S4l@E0-t z<*B~abOP>WRrhPJT~euUEr09PA^r3vJuCS?rJw%81N%oPI5ntE3OdbSUHB&j{Yz8- z(ir)Rp_B6Uj~M+OR&^ldK=|vgw&QW7Nk5q3-$3b?n-GqDz1uhZQef-&&*1rk-Tn!5 z{}=?__m3YP1`l%>JMK^C{UeZn8_K^0s=DX=?*LT7v@bIGQQAKU^k0GMSjRuf_HVJx z%HykhCKdRmP|g0vv*UNP`C|jKx`wtd|9Iq&z02y*U+rA}@!T)lmerYG zH!VBrMm3K7)&IhV_o@lR(>HKZjcygh}ZpTF2v^E8|#?nrMawCN4^QH9q*m}+7H*skB%23k0@nctW@l}{5 z-`A}?YdxhA2E56^kvlTs+LTUscYbyG+mHmTUw5J=P`{C!9kt;yZp#)tJ?wp;Y*R`1K>Asn zd|!vryz_*1^JV(&lH7FVIo1y;Pm}a|K2tzaUl(SCq%=<8MV;=T3`CT zG9Gg&FBiVthhy#(fuV!OqFX^8l78a6Lj^E!&lx=TX%RjcwgU`{R1v={UCqcQAk&QMr zVz&-bC-9vW!D_S*F0QZ`kLCpNm_C`>JyQ&T<_My;#9-x8x0%yqQ#D8Yt$r@MkyZ!v z_6D+$g=1+xhC_|hZ_ugMLGXU&ikYn*!RFyRfouUYGPWR}@SLq4Tp&7l-U8BJT=jVd zJlLfVh0UtS&{O-hv&)>&ym@||g;ty;hOcM_By+seJV;PGG@xs|9b#?exc+BoeCIU! zxjy1qtQmTpIig+I!X$g#w#B$TwWNINd>*RzO~k!TYVx_>H6X~$Q}{X`@Gif|4uY#J z(Ox)GAC}fD0<#C1^LoYCfNOpTR_R}vlm4L6rQj+RrOAvih^|i6!nYh07td~hBRvdg z*UBi^*C~a!ul5{hoPzL7?9P9SAL`gkk_%WJTnf(`OI-P?jHXz!A1eJYt~6B?ee1?& zmpsF&RPq7Re=R*5OiXeDu&|)-o6HAVmBqvz6R`X1*Ba72jP$#zbWilBEq`SH-0{;$ z9I-)5^R)rzyH%3YsQT2^eQR;~zE*I6Izo4UKUCNcUk`;JeB?&&cUY^U8(ceX&*?bf zr#%k3UQcc~F-P>Rmx{&BjAWO9Z8)uMGahKf&}s5?xF50?mnIir2#?0TnkAz3SSnv~ zd7UQpbT&AegkebiSXB1B$RrcT?WS#(+wGafBMZz}m5relOQ6AxgU~Xxhvw>7UnG2F zSsThrx+mE6Ls<4E9bR910q53rgH3B4gk!26R{zzGTOGC4T<-N2<3|<|%U0gSsZH90 z=5;lmxu~Z1uZAI-wEXn!sfly(Y30k}#52w-uC+hGPJqI#>-lj& zdX8}q#_+_RCQzrjq0$doClcty}N!ds(baIC5WybGR`{pS7y%-K2`o1R^wFqqZ9=ZVUH?0Ga8i+CByiAk%l z|C+~mb?jxd$hTG43PVdqi$ML|P}#gcyO>uU9>v+qy!(sTs?Wt~oO_|joju@Me+}9C zv+R1>0K{hdgj>sng8VX&e#t;1f%`uDlD;j&qHotjjBh<&t8A8*bQ!MSHPX`avf7@d z`S|c0SXDHJc|Z1$5%bPK-ONF7efA+#GU;J^7An2{fHPhU5gi-#0Fn(VTqNB_J?d)L zX7)Bgm;&a9saj;=BP1+FnhWx0dx8A22t9ZLYYa8y%76W8cpnMl<uB7LfamR5F~`o>mvYJOI9oV!FAIM2h&zkb5fQAd&F4LvM+W8F3rF}u=TSbn%E znm)Hvx`i7~l$6R&6IxXue}7B7FSkRG?rTcVY|J|~?+W_oPl;ATyTXMdJCqN{X-i{p z^WJGtD&jZpS!O9@Hlj^Av{$^VGq%W{|+*PDjbWqj3LY^ZSwPV6xu)7tf>%Dy^6op}v?g7~W z`TxqG;sSaOc=O~oK8$o%cEBA?eit-0Z<^=q0qgGx@_pLPdyT2AKtB=FO{@JM?7anC zm08y}42p$fA%cV+M5RG2;Ow<+OcVoiRHQ`-CF~Y3P*DsJQN->p&R*N@?hfqk?r-g5 z&fGKiJTrCUHH>={XkvdV(yd+;I zi{Y)bl}yDTc{3zFGLF}_S(d0(e&*aMH~4K}5&5L|d?@)UNn3BDfca0Yp#7vGYHaLy zxw7O7TY6IrE1oy5W%`(p-W#?joT z!wjM?X?WfO+V=3^JAD_Z*oaZw$LcQk!5Pg*X@fuR63W(5%+1u=U0b{oLRuC<$F4JA z!K>-`xjuC@YLJGgN2Z+LZTeJ#lV9xUq)l+Vz<97LNg zjUfKIHCMKALcZ&2t-L1|I|r0s0r_2QHO3x>h;&iSg`WN}+5FP7?gOBigC$7m}<2j(l2%qDlSxdq2eeN+t40qqb_J!=kiCP z!|T2C!3hcYe+w!b9q0RYSk2LZtbS*Efl%Cm~xx* zP_OWCM)$(KwHA=gxF{%oW;+@?VT-j>*bSG@a8R=VHHqbA`mGb%3y;ix?F#Wbl#Cvt zu+vu`saDV>S`Yk&MFz(83W)0y85kMdBQ$Ej_nH*FZeQ=~C)5idsy7w%zCAzj?Y!@W z((lKA|J_BSQ23D0$oRk?C&qr*$L|V+`*xXsy>ZKgsL# zVE(HH`L7n^d|Ms6GvjWcJObq`3s<~=ZX-unWps#OhRP9R> z6Rm0As;wTb&}axC)M^HQ`-Ps2i0h%LG-wcEPWqK~Yv|L;*RNB69w{0!r0$=5)x@u@ zzh=k~%~y!=YwcT4f)J*$uN-HuvH$fPeW!*1pOy{jZ~K7eKD6LNhS+OrYutOpM1{Hs zhD1@T1cHtN<6~moLqdB;#tevakBbS5?-xiDh;VNdOGQLipXd;GHIpBsu4ruhhlw`u zYthQDtlz$GN)i|9 zHXthU&*s}uzet*f`hztMz8?I)b8mw~{^n+Bs#MW*(TprtfPnRUe-O+6(Wv@}UIm;- zdH+!pf7r*bmH7W`9>165zdl{|t$zPE9t8MiRKIEP_p2z=`1KlpX&H@;|ASprNai1` zqIT4v0?wm5{BeKn?Cdm8vlq?LG>jkv9UCz)G>)EJ(Zq)aN5@cgIwDYO?BrBGFgiF! zeH;=P5)-F&a?<=#*XSJ>8~F7Lm+#yxnpWyFeIZ<(9NbGohCrRxNVyu~aQVT%qS2pC zbqTtQ-ei0~vVBB+C>_`)lq$yRy9hc{6RN2fP6RV#C!^!Pj-x?nWGFq*qYey-h@%7R z5t9v-v4aD5F4{RS#+`nRp-FxHO+SK!=-|K@P4CzkGJQ1e7)_j_goz5&^hpTS5GzeY z7@bU3RTD#QG9fTFB1WSg4bsHwxnp8!0W{G+PI4im9i!>7Ge;908XOuI7eNa|s}!o~ z*-wqSRbcopV{NPNzoT*J9T^xMLk}y(B?QF<$42y4&oI%i{X&C!#KiQ9bEFgfg6NT# zzJWmzk@_pDfveU0vA)4H$JoF~ni%bedj3h-Ukw=`O@pTH4H|0t($pG9#B1v59}$W( zI6rEj+Wdc!^nW)0fBxp1kBC%O?q3xDdldLT%E}phNv>4DdA#!hZs zP-O#p(ld0L_?W+rvSQ-~L1;>UW{~AFL$?c_x(P8ybxP@#(8VNC7VUl={ODcQ&GxnN_Kpll zTkwKGu~OR1gSp_mAPMsg=GcFa13vB3hF3C+0E@Re*xB$Q^xG7SZ3lJ4>7DFhliv%5 zM+B5=ku8lj>_N*DWq5U~S~wr4!eGOCyhNcq9PsoZo8fQ)-fnHdOXns+w+oA?3K@mD z)2hk+ox1S~4HseIeM_)f|MvK$X9N~=egg}fis;zsvV4y3WKpnrZ@l#;KffD38WQab z@#HZ+@@VuiJeYO|-?e)qicV|6j~TsZ4M*04^G}$K>;7RJcG*$pt*9c^dhXje6qCp7mM=zD!QMAZ^P|zNgm~Q>ZryLePmik4 z%dQ>7ZF;uQ*3JJ8clb?#4jt<8S1SjgFU*BUQR{J%wSlZ(=CE#jLOwa{*b8mrDQ5V| zqdR*x++5zPmW7X^YRKs8qr|WR0eH00OkGrACv-O}BD+LZmva$M9|et%ksPS` zqwg^kmJ@Gcqo*67SpFSs>(cqU*_n|r?wF|zxgN|t-DV)^igd~F1E+iobsJI($oZ?T z0Gk{p=hnNAH`X}>Z|w;2iCBW4mI;hABzX*(%TYU z3+{sOgZbo&{zh==T`cVHbOl$>KZ_geG-!Nav(Dtm8B}YS=m!umWHhe5KON{C-K!fR zY^G;6q(32o>(ahZV@&{%-k^KD7am{KiFeLU6($R9q5a!ZJb&qMJXkb8uc(>C+mBz) z+uU-KYJPp@_CX6xZ-`zt7S5!NCS9B=U*^ui`Wt33&o|}yykcLV#_eV}e%2<;Td@$A zg;$j&mu>~0$;nu}Pc7)VqbI}9nTu{nzTi(tBM9~fDd8aa5aph|f~X?kOy&Y;#%7IO}?$I`SbemW+}V0A$dFq= zHieA~S&0*R90GpeiPiyc!>E3J@KoM))@RisZ9zN6d&Lgd-P}e`c-S~`nzNkbIgBaW z>5_3Yx6wWW%#1Xq4t}Va! z3FtJbnJC_8qi)P=Z#mnvFi)Rk%O`n$0gslY`P3^Pb+lG6%V?+4U%A0<4%gf%$eU|T zk=C8L`{w8EUgzU2YkR=cJ|~#bucKznjD)Ezt(o;04QOO{o6ZR#ib;7c7jCa41c?Q?B>Qrb>-^=tylZhk&hhp%b8 z3C4xE>8{<>DE;KGpF869(FV%?1FZv)-6VUt9o|eE3*@g*_OXJ>oo1kS$FA6Fd1Zd6 z>qqRBxgpoK)IqTST!@p-!_%RK`8fBTxOLWJ*lfQA_qkhg>$=oOuFp(j0y%)&h%l7= z8j@Xxs>VTbO!*ky^G&71gBr_#Y(FO0>X7EkN$z#M3R>|M#j>?ZzABs}u7JtOo869| zgJAQcWWOu&qEQyIQx7w4IWv>3I==%C?xiMNl_v>!otL|@YT3ri=DEMvct|Q z+~i1mczY;6y2U!8)yH$-dkh2~VG?JwVv{0!%0ac31IaxP=-nDVh8@)H_i*IBCJbW{ z{;%O}_t`-67uI{Dfc!H57-xvJ=jzbtzK7C%41MOH^aD30UQz1={#y&P0>gh3<(2ZF_jy)J86}X)BZt?P*t+)8~BYu2xv0 z%yd{;>xORfg>Kr#!KL-~?oP-0K(-iYEl|ygY^$u^-~l|p+6Z=UosNrKGJt#vt|(Rk z`|g^7N)LQ2dcni9#z?kQek!sIG=p-8Ahj^>Zn_3r*FTD6H?_rQ^g?HE4ba|dNfty3c=~xrla%ou^ckw;kn{CJnPj;6Br}#>e8Sie5OnBXk4Rp$X z`Xx9+;mNDmW3Q&f!!V0%jL4G1O8csCJMMnd3>Q7sr_b%21w-nlqv^J<> zCjOaNYY*cQipM2HD0MxbjKDftrjmd({7tvth zT7}cv5_}U4 z&v%8~1G8}E^ds2j)=D@xIuGsB=0fM+u8M=F3S(H;iTe18?x|fpcrH$Tuoh@dVEO4v zWDkAd-MH&w(YlX#r{fMrb|0S{iG|9W_lYKkovSX@7<+sC3bY(H1zJi|Rs&t-r|r{3ua`cUWxG+l44n*55=!vLqPUbxcA?Xk zma^S~={O+Y2-rTO5oYe|jDyV_Ff!#K>gXxRoqcWPvU`BlcDcaq4k?&CH5nFlHj@j7 zXyvkE=3Lw03_f|*nSXH7!pdu0beNUS{P!`aR4o?EJkA#TG%>n$4{u@0;8WVuPhSe( z{M}%2nQQp=csCf=s4!$4E6!hQy>No*2Ml)af%#H7>i`_KBv;_e#suMM(?q!IHy)cs zdTKq}j@8Ea%*C+K@~oEGSPV+YQe%Sdp5e03plGmP_(FHd`vjD|{QxhXdjnxc4P|P) zF&~76@=@m+u-xbddIYz@vA0|~|CEABubf5E;&<>`L3iQZd>qhxMHAD>Z0PbMVAk^i z-aA-~pI+<8=d8Yr)B1hJz>Inz50#hnxzsjjuMJ*j&4-#e!nUDvXfF!k@Uf13pXLcW zo0-=i+Y%Z|Y3; zS<69QE#&es=JMF05qMI!82Su)j8p2Z%?(<22k3tM%8No=?R}&4-(cYoowi|MDm_70 z5SBb+khSeMaVgUUXx_RO`Aua+|J^VkXCd3La3bMT;qP0N;Z|)PedR z;nUH9xME`8JcjCZUAcXWk?fL87EI&8y~94}N(3~3-6l=&TEq9^nR`h&WU_-SFgHZ1 zV_LlkfJ^@U`RUX7xoK<#AUQy1Zp7W5w33}mm1FcX?z=t@9t|nZ1H|pzMenqtSGzf& z_Fj#zT<1qn=T$M@=h8mWKY2Kk&S1^w@1Ra~6MiRl4Y;0KDh`kDgLWIA;qzv-r2WH1 zBIDRZFpA8;Zb_MJKu#6@YKtd0^l%Ull1x~8YE-sw#C|vz@)~M-tz`8Vb%H+J4zHxG zU`bPtqjecO+S3qR^YSKc&Dl+|eg$uqYtLWo*{G{hA|H;_wBlzE8_ChmZ$;vOWw52P z58GRyDeY5xPP!)_pQ!=k632)mEvw)I!}Hp=)x3fBg)NwK75f<*$oN(VkYog=d9Q;# z6o*dFG~v&pO3IA1i2$sFR64DlzZ&a}uZ|C|ROh2My@t!wkWtCrv~%a+?t~6dd%$>@ zQ=>HB(j*(=h_kGx`5Y$JG++%4Hqbis!IT|^DSj@@M~^?@-RDvhQN8X8T-RdTrYjyN zwY{dy0s0qrJZ6sSIMe?eCF!Xsop1xrnc3!;&@*Mqn*PWq)WD3S# zcEj-D4Ka3*oqV-r6C@6BmesEol5-!YLAN@$q5rPt5VS5_kS)NE3w7-E`OEOOTCUP} zzIk>QHhNo=r>-5R%~@R<2AzEl^u1XB(2{@24Md~SwR!(t2eD-rZ}i=rhV8e3%p(r3 zeoHEIrOVEjmWax|7h(1HZw0L_&Z~4)n1t`Zxf3?ywDKloj}fQjoyFOkFQM0RcS-Uu zj}(56T`O(FN>hB1Y!V-9_YO~7Zb96r#jtAf8!)V8j-FNB*|Q@Xz^;E45%sVUt-mu& zdTK1a!v^7-jhk`%j6EWFQhnC^?j}6bIuW`LvEsk^l|zzSnCmhH6V_A`H)frNym4-v zqqa$pYPyN!N0XUu@H*g>-;N8DF#;Zr&Efif2J; z>#E{>z1AY4zYo5=b_xAHn8MYV!gAe8ORoINV=)nw4WD>=m56&Yk95!iGaYN9;o9rs z`p8wHUz3BdGzx^0_w^4mp+!AYpzAW)M^Jm?G>US@j|)W04_Cnbkh8LF=0Zv8jIM7I@wnYc*k-c_d(7;K7wQ$n8@A(eE6!{#dwkrbd>1SaG|`!*iiJm@YA zY6WSB?R}}ca_p`0p^R*&4q6OKz z@wl$Hr9Akm8LIn`-ofzu`8n+|+$(Ypx*VJ#Tx%vF$pDTmTv$5n&&SDDvk3DCx}nYE zX@7R(e$9MnZ)+|C3}-@qw+!v%yY0pEW*c=Ubq+A$Z4th3&QvJzxd-pV=b@(lQ=#Og zmA_V;z55DG##u`{b6;`r)d9SpbPiX33{6=L*VY^o()N?*h^IJnC;1hK_*XO{eQPW_@`iFR|(IVE^^pcirrLe7VP*--b z2HN-v@D16lmz&d1p2Bz z{A5cGV!cNuqS4z8c>DEgZKZ0@1<4N3{vyR8Y<%spWY;Xjmt5kW`{V@WuGn(2D@ga& zR_&GSP4mN;LUUo`O)K)tPhj-;HbDN0drmHb#{*m7O3I&a28@F_bMUdc zh=uaXaTWhiT*Hq>7&4MEcpCK^HhsELgw4CBz2ou;qI)zJhNc|J_fb3&jq@v&!9HIq zicZrkWca+8jXC-u}Y&gZG;=xW6ey`_RC>pa}7ixcxo!?ym>r|gWZ(Ug9RJj&1 zJl0cudcm7~1RvZsF89bI1E{?6xlsOhYmN^e$zJ1#tqGFG$|;sYWsmDO`l5U|_B@{r zd&V~5WLKE?-gcN`Pz1>TBE?puw~|?UHj%YY3<2f)+r*g3?KlVWJvHYQyBbJ5bPq@` zAY@q&z3f@LHK0~Q!+ zbxm7O7UOFdVZ$AaIQcqMaf{hOYN#DG35xWq3#9+L(0ew*Jm?{e2s6US61GTjkfeRX zb`23JhTs%eXdfg^z-@IkJam~2SN9@$V zK^Wq0gF}wSfmpK>Pt|hd6~6z7X{@--knco2$$)v z#2L4x%3ndzV^;D9FW@gc4i&Xk|JFm=->VN@zSG<2Spxs~Ks!C$67_?&>)$?&u0Qgx zsh7S#*dC*Jl)hi+7lxxBkFUqjlk8ohfA9v-qn1BkivKhErSHf7xA>Rnu76Iz^p&;l zm+}3tFfjc)8k4U#`a9FrZ`fZ@FsUW`%98XSNSMAK_McdoxOH-+LSU1jFD zRCL;&pW^ZjIJ4j+IC1$f(0WM96QshB%Za@@(;5|MoS`Zg<%B;;!ZX46MO{G{uT*g) z;Wd!Gc`~Q`3+6301;SU6&J*{FbkvQ0M^qcSD&$A4o9^#PPhSs z_~i{J80Awy_ySJrVxn>yAiPo@e$-qWn6Vv7ex9YRsC_1`q`C4^uOsl#iOO=Y*(42!&3&<_7U7cvvZo+8Jl5%!k*`6BS>EsQxt-k=wE7|fE z^`-#jC-{118a7TZDG6WTL1lJ;%k%`8e|w6OB~JIF&rcKn?1CdlI7z~URSp3&d@tad z{xhJq#ahal_YnZ@-OILn5t>iTQx!DGPGA46xI)K&Zp_+V$$KNlJZ2#Q)_X;22s@sl#X8C_8wJU ztj4P_Wx~&)bxa;8*_{$Ho~bpW+*H0VF%`Qk-U>8!X4CA6$Z@%%Qy5m3Z7onWkR4`w zfv^%)qhYj{OyRLzciw`!2R;Mg>zwYP$5HA2R9DFn3OB3b^a3Nyd+9Ny%yA{Ow`zPO zOm!x!{##qF@Nk76{N_?eSUuxS<}f15Bv<=0B5Wyx)`a7mf6NO-uU{7&WmF!lgFyEMR=QSAfv z+@Gr(=HN$om=rDYPthry$*gBDnbba6OW2LVC3)z*SwOiR)ORkq*{Doo-2WA$opgUU_{TA~GdXs`?G#R(gAPy0xFQY7@-~ zO9f?{l&@Idpb}5pnWS>0=M zc;I23;^N&DQ#okHB6w&x5g!Dt6O>Qm^^xv0#w?`zoWeZN{-Hg;a;!h?<7UE8%(%hZ zvdXVW(g~y*1K|k=p!~9?Y)0`^y&O`l22Pzmg6o~Ea6sKd>Mv7R@xY-YR6PQXmRiWP zkh41SbLu{@!YBhgmLzk?@{m+ZVS~=b>amQ?m#pQYj67j8X&z=z+a!vdvy=+I&OLQk zj{^)JyF}?ev>4V+66VUO{-xFf!t7_`^cO=p;mGfBCQc@F*bcl5FAv=(4yDE^n4D zlBTwng)(n}*Zuc8zkUI-NZH%q*Y7IZQh7I$EmZYFSz_d@+z&q8(LQCQR{0cFk5ss5 zKjYy*7$zf34^pfKB4n+B?$*S_^5!UEjc*j5o@+aN0pyOaR>P8*V)b75?-P*j zUmVCzZzfC?Ypq`?sh%LI&Y;^iR3ntEpWmGX?QTrR7I~Y+mgH5lq#S13j(zhm@)48h1>P&Wp{nt!3}-`*4&dNm6~mYmxOdd9eKgRTp67 zlaSVmCuS9Z+SNPqqG>ak+FQR5Q%Ih+3aVvlsourX%NFMf*Za%^1=Shw=z%JnK9{N{ z{b1*WjpGLwQGS@}IbD(F0**I{-Rg}W;ZHA6;a$s(g1M?AtC)oBla};RVWyJmOx(0a zw!%iCuj>M)u(dCi$Yw(+PV%ej$53osIMs(XsydF6ZKU`>7jtv3szE_=$u>ZK1{G#S z@etJ*%~k9H4-7l0`hQmy><5T-T|Dsq6mJYLS%fxCPwT>X9u67o$1V2ufNAf(u;Xjv z#rE{ZY{8RbxMr}W%o>`52F<*{b3|Rpt=SMP_TI&-*Gy%=%kA3urFCJd^=x)=V+-%? zt6j8Z%UR2h<)6c#EH5Y#GaFtGU4i|^orT!K4}|U7E_7^pUi{Kawvx?<`!6%V*2R`D z?IZD)ZXvwca36!5hhd|wDR8x5Zzw^XNCHKi_S*KP;P7D}(E0LEQ5UG&mYy!kv(Vm4 zoPcW|ESnE2p(*W!#oY0tV#T|nf>B9r>UC#4CtI^(Zj0g8$rOw}z5@CgS@Vb1PBQ%1SS(q0 ztafdS0^E+Z0F%Zh(l=u^##br;qoNzrnr_1uYx2tiu0~j-=5nmva2_PinT$iHt%tsr zheXkjT_Ino`%tAuQ>@x`s9JB#ojy-kWR| z_`&norequ3VEh>^@>-z3X(6_vXRhahC#}Hh{C-k7bbYM6ORDt~$9`+cOBZ6Ydb3e1&r8c?;{|Z= z{58A~ut@Z+?g4Z>+RyigV>T1u!mPWPQ8bX>8F3DB3?|BcMp-aS;@d}(pPn-0&G31+~OY^xU zbeLO{B1&F?X4o+Wt*k^wfQ z+7Y(j*-X~kc|nXGz8G??1GsNq1{`1e5T<3@bf5(gw* zMsK^aoMfDl3}J%d9Wkc$6l_xL9n61M1VrMI1|R$*Ph%4lkFL}B*!s-p-u`PB;iz`k zX-|&|pT`<`;?q2F(*FRIt=(Uqsd0_upan;0ZCmjfvyEj;i5M}@A)7_IpMyHup5lG)%6fgPnu|FJBu?;xbT786$oV#HfZsdVck3l+<*?L*Q7Sd-J2z4i&v8n-OP!^fmz z?2Y0wWm71tcyl3=Zb*OA(cm}PQW_UD$6{^{ID4zP9ACFR%xm!h=sawly9^&aD#NBM zPZLqepP_d>Z|SveoLY0wkW^FNGT%>l|r!{#eCKx>HO z>yp>rco<%tJ_)_fdBFP2SYCV00JZ)&A$>3^TdVHh<-=~6TSBX|e!h~OlgC+^Ny~7^ zYg2i`XEr8XIRQKNPiC|a^14N9v^-z~p|`z7p($s;ZIuVV(7zb}u=gOy#YWQh;C9S? zGZH`KRRyng#$bLwnHlPK;^=Fmb;sh@3H$k{@bUPXp!Bc*wINK6smS!A_<3ZqczU~} z*qc9*WN^CLZ#K$22U0fO5|>O~vckLP;IeB?*bCoaabP6FW}8Qg!0F~#DeVQ>tD&@a z75K^v4Rze}nLHtCHgl3wy_6~{r^%kfxd$t2v_CLcJu`oO?ZCvjL7A)Qy<9n(dEE z70QRx-onyxbIIPG65}r9CqKPeREjdkvK_j@(FgUVp@{_le@Dmz$M%^ZWz+groC+LQ&_w$g2}D2b_>N7_e^rn0+-Mnh0|KJnV;svsLG z8h2Zc4d?a2FXoSRd95q(YpHn{vi^y#z@ho*k=g`|*42?)$5`>0`=z1Y(pUIlZ*!^i ztNx`rvT*(&0U^btY+MD}K``JM8FKLjKo(ymL zIpVSS>RkD_xc;w|eG$s#;@WG$p67#IPE6JT?qJO&o%CBWnQp zGiV$BRyV7bJr4YouIwF9JOo|ZL;|fb+U%Tx5AI(D4NgO{8L(r7xonzUk&~XmPK_5M zxo0*z%W0LK9t|DM#++@b_D63|O82k?6|2#{sp}%yD3)CFoleDayz@!5KT!KXH{mqv zn3mR7kUtUrzZoJs9was`KMBnpOtGz_CpI~3deS?+sm**M*SADDC{$qD;CCjkBU4 zD*FbDpL~(I4!I+~oL?^T&!2)pEoVXf_D0YU+ryXVrTF{|CnXoKsDC|tIHU+DdqaP< zC;gkT4r#TK_Kp0I10S(ynxK8g&`KY`DX|ycdV2@R&a1g#Oo=BD*Vd9R4CsPI7i?nL zlk!2E6D8rqCp)&F@J68hV-)X^Ur1+t*6hN)W9wkrMSBci@j$#^d7I+p&E5wh+T-Tk zUQqtTZd|-Hg{^HtZyhC1g)Oh1fr^hQ{zS`>cFbyKVNU)&cU)5QrV)5~v8Fr3sCsK|zV?L%sAm)CWR{0OoOvnvEfiNXjPT*_RIoK+^h|x zgK}Y`eqb3#ugKAsr##30ejcW#hseX&}*wN*}mh@ZR2nj`ein=nKK9$ zHhKf?N0pX`B8y7WZS7WjV2!)Ez}daVsN$UY!+f}d^v2(0qKb$3I|EBh-d7QwU%sZb z&SZ<17FF`Bmv^$8tZ(%-@Wnh@l5NAyRWdlmtI#pu0T@=GE^ko%HrzAb4}qu7A;maI zv81H2qmSQkvTq}y{M1CqIGhdaeq+j4Iw0*MY}r(meDFJL^X8$7`|;+OOW0sfs*)2< zz8P%et;F;N6F1XdON)2a@b0>~NO8K*ZvLd3y>KnHd2g)z0AA~9#5d<3sP}`5CRfqt zJcc#KC^^KUH~RlOZo6N5+VxPswmPF(T=`h*w2sD$6dblV(CJy z8@^rfj|Y5hb)ydW`jg8a4^Z81)YtkpJAeH0dzTw^!1tfOb-elGp+9=wsAIpA@crms z_Vef=KY#oiy~Okrcl`B~_=MPK&0jPUQcfaZK zv&&c)Y9K&u#{MP);GaKSk`Uc1fLfS^_OGb*7@~jwzks0u{rAtGe^%h175HZb{{OWC z8{$j-e4=1%+yARi6nN~*3+0rPf%#Z_Q6tAuOZg(ac6kr`<4Wl9Op3Xs%Kfh`-mRlJ zQmPn8VKZLm!c=?+8*bT(bqx;Tiq`%V|5xD@S3!i|c2Id@`|j~7SHShI*23c5TFl>I zJw)voAqhhSinDp*XcryjDhfZ~ojUbacrO1?uOxaKuYqZ$Ly@ovR2UlMUx9?>avB3J z)DD;X#8^z+9i{RKpu9riL1Kc=l2Ja0x|WV$lz9P`o0>v@%#nmCh+=0)$O{4XvTo#h z%E{bdVuPYc-?1h~Jh|KSLqOOws}z-v<#Y33R(ucm?Rs}Ut@JIiY+o>pb$f+NR}Eza z?V9sjx+-$ek$hrh)+nIdOcq_>DG5)Jgr~AellrSXj|aT0CkZRm$Has$BVj6NA7&~k zo&(PhMtpR51G%kk4&_;EIpLe!P}hJ{-m7pPEaw>yJG;GO3jZBdwII9u>;|g*<$R<1 z7&v6D%7<9aW>a2!ybYQ}MxctdDZZ!J_l-Ewjh;XzJWyc)Zqt2XSozA5VtBS|QUmPW zxx84(DoNwGC~aifINUvO3Yhn!@_IcZ0q}W%S zckL=_UhOHibxNk#vZ6dwB1vJe;_x6(;bPK-=1@s~7&{IWeoR;z#s9N&RjgZWfCUCb zC#&m8!sNvEQpLE!lBX;$&9|rT6`6w`dM|x20)iWcaLNHB<-55bJnQ(U3X}s8rk4qXVbHpBTpUzNc5mK8<$SD>%XN5}o+e1{^g5An$rvi<`+|g(aD`v> z*mF$fUMlb7bUZIHCcg|Yv4?0CC_;~C+83d_P`W+an21`1#13Ns?Cp4Ys3Ut950 zQK@hs!kDGPfc%GF#)7j_;q+y#!atP0u)Bu}>6`*m<+e@*WwK*F=y>m@wo{F%gd2_I zgbj+3x7y>>x#tybteZb#6||W+;2^FQD`dcRY@gu?LobniJuBSTCs@ zdS+HemD>{51Y~O@VG4|N3TI6?EPPHgNw^i+tfxRY6;Ch>*AXto=^9Mg9iP(zsYW3` zt(nQG<{>GElT})*#8T<*Qha=cgcImE z9R&w|DsZk?^}-R;M?Te+t^F3sX5c##1(l~xIpDkaRm7goyKx5)xskT{Xf{xeudhjvomaIbX=dQbsiub2Zb!>5AAF#26$9MU zA%W9*`t`~09eQf#r6>!_B8YdY-mpKLSeeVSdOVldAm)X9gBpKn|X3Z2gt&)`= z0;=Ch*?k-40o9Ea`X-yVFy0gac#kHSeHG3pegieug9rf|IOpRj+ukdlVn` z@B(XE`3l@_V9v?*aLb4-gyXeEl5w;;-&E;`G#K-aQ9V$%wm?yR4a8K=%wmLV$={?AD!)o= zCDdHqR;>Z5H%Wzq5atXd*Eq`D7Q5b>rfRhG)CFUetwOwOm8uEDJ;&+o?E95r*m2oB zB+LY=#{__9<^ovsJc*aBMo(8Q-c5Sm9~C8C~bwpd9GfY0z;?OAeny!BX6C-R?#1Ys_CiPvx;k;jjAF{3E6j`P!8mE%bWSmmmg-bcqWD(jZ*(qIwqvKk6JfW3pO$b!r4y>QBNnVl z#fkI;T-6yP2xr@Zst#YSRVSwE_+%gOiCGnqZf2>lSJLChKsc{h{@#_7Oe2kp^&F9+ z&9$aLKS1UGg$>;dOx6_LR%BQqtAe%jpET@AAN=#@PgX!{p5I{5H&SzYGb21AI{Z7S zIdv=l`j*aLy;_qPR@TU1Y-@$qQ5Q|>As!dkFD5p`AucpB%!OFOzyA75w`BDNwHW{U zc|eaqYKOqT^`~%CzxD3t@cmorK%fZy9qbe0!(6@Wsj1{wrgmzW9vv4L8Smie==PQK z|HmPE;!FMi^!Q2squXFh0P=EHF{y7+ZgNT5@U`03{ z5FgVkG&&$GCN@C9h~Jhgw1016bB_xM2^}ZpCN?x8Ji2-401`oUKevbwC8*H}k&$XNzg&&D z>LVimI0D5jA06)CQLQSSln@<3WcK<~ez`)Uz{t2?2BhZq7gzE6>x=xH)OY3ju6n;) zkRQYG`gIP!jNtc@^JnK)t6B5cbAR5L+MQ5ug>T#ZyE7Zo=l;}sMiJuco4fKqNY&Tv z_%1_V% z4*Yia-(Tt5P}Ft44eIybs}a(d`houb8~v#1EB(Jez8do5r@v8G`7y(vw)C5M`is(v zvGJd-vA(Vn7#ZmhtQJ+@37OZd`pZ&&yXs$-R2<#nsHKy`FYBr=p1A2R<)HsRS=fJb zb1LenCHgu5_0xah=7TE!vdG^nIe#3AV`A;nBx8nu_x;|lA;w?7-uoXykY8dIHSv1{cbM4*{JVzSFU#D7vcU31NHSHWF5X;?T1zP8z$)&ZTN#J`#uP|?)M+R z)q#J1{U23eI`9u}&*7)3`7fC&{XBo3``}v5YQnYAS@!1B3%l$zFP`6H+M1=n*U)I z;};45z2NV9zfin#J%bUF*QCh;v$4))qEuJ$HE)O`DigC1(#;c z^d_!k==-oG5H~4w^q5H;zO#rQP%DYoR&k}uJ=-fIafs#$=S!IAhl=+Sy5+l!Q75-x zR^SbMV4ncQy{T=m$ps4K-UQ;AWeWzzq2ekHijQIAi_BugwN3oQwUEBYAu%^>`UrYd+}omH>Kq_GUB#g)ougBL zcvN-$Qdj0~OzeiEa?|k0JSIyg&d}AR_f?6H8tHn%ve0n2)}R&K4KIXk&h?jh<%-GW zvzK~1IbCEc8n;$JBJZ;UA31Tbe!%&wy5$mICAuB&C?Ds)BIq0>zDgF>>KqI& zQ%TbAVtvP=eEFwN!~I2CK^H z`Kk|mlp@D`A;#KdDc)kZ%MBTofH6(FjB5`vH$I*i%ac_d+ zmd()J0>!UMe5X3%c*S|dt<%sh4V+)a0P%6_`Phk59f;>wXE^^kJ94fHCw^U>gsM<; z>{4vh#R`VUokZFjr1fNqZ`8l-JXl)TP@1mn3Lkbp0OB^sy>GLTc(8%^pcQ8@@uQ9t z#NA7>Z6#~D7<1z0lr(3g{p72tGDp1P_-f@lP~uXyVjq9 z;>D(Qfxu?VnB!Crd|A05ap3NO)$==me|ayyxcwz~^U{kGzd924FD@-Sf*130l{L1Q zVPL@ziW{AM`WUb0g^ep2CKQkFlZ70V91_PXI7b(i#7WB9S}(!3-OJ;g!q-H@k=uc| zL*=lhsi63wiJx5Yu*)Wnb-=fe2`61cB^RU<#H(Ea^n9l_6XgT@SFBmkKAqxjB|SvT zuvMURkGQi%+d=2B#mwW-=XMS(J2}lOSKh(=DfxIl|H3lqxfLIhejjP=@Je_%*kpV0 z(@z#5YI9KW*Q$B#)trWD8yjPMn}U zcz~Cej8WXbd`wU_@!*Hkx_av6kv@Z=L0{1Geh+3)ys38KD;pSjZ7=bpcSfZju8Yd> z)Es)>ndG;2aShM-Y(_l5b;KpND>%N04Syw8fyIoX#B&?S9iFuoimNxKUUgh{(oEQv zYK~#8ItscLz2nwir+Bc5KO4^lEW>PmNbC(sB7U%Q#Bbi7_{eMG?zMS3k{xzAs|~F0 zn8Ke99Rr=K!~=0COJy6w9Ofze%xn4AVI3d!)N|ewufI4qI!||XnYpBYF@J?wSYypq zL(!XRm(zUH?NN#F6@TYfysBuNaD_i`B+BJ7w!A@84yP{ z68A50npa^;Clp`r>_ruU?xmx>-h8Q`BkMs=>fhdBq4pKL?PAFmWfG_TZpAYz$ajF^ z2e&>&RfCO_fc6pkzDp!ukw*5l9#RhjR6Od`Yk_RkVkF*tt?~nJUT#+Y2-7F!=w7$( zL>%0M+1T;HLf5@9_GAU6(kJ5JW;FO?Loq*FVJHT?|l5*y}M6v5mb8OX5$B0`OiK|>U$gwYEMvh~RZVVIGt!Bde0w(DB zW;PH9wbtEt6n?pph^6b^qbFIN1le##G9gb@ngYgi^ULN1928eFE_PeQ@=jkwvTeBa z#CdgnV5g^x4(`S9e7>TBxb5-m)UtYgDOI+zAm6HbK+h(Wof@HVD&){>mKW_4i(-PM=`klIfdtOiSjvH$T#PN)miEpp9 zUja$IBbaZW30{k~RYS4~NPNaHcE$`*sbV%8-Sz^TSadlkn;I3LimQl+jkxXgwzuzu z3iyop#9R9%iDv25agJ{(src<}8*OCEPtR9;=)^631x}hB(W?Ff9}8uv{t>k9)}%Yc zDP6+`vSU4EM|v-o=C1Y5nxG>)uT$LGu|BOO^$1{!>-_eF6-@PP7~0qX?HybY4=<)d;-L*=|r`f1ZyNbwC^ z$fyA~&JTc#Y^su3Wm{SJ3r{Rm&482t^`hPvc&kD#=FRC1)K|otdVFAk;TLmDwWt6W zypxz(Z{gg9#`Q|@vz6g8@y05-EA-e8uJsrCo+RYI7{xKHb$vg4(5o_2_M2=0*~0rk zwg!k#Un(B<(iZDc#c}@+d+!0=#I>#sTchzvmgU}!d$(}~W3XnA4F&@?9fD~FgK&_=p`YpxjJuvHwV`Gk<<6X@TrdK|!9;8Kw_9)8|f!kqXA5Hl2# z`#VkaTB2w$*D1K0=tNGDBXu*OpYcji*$}e2<0|srv=7KZU8bsa{Xt>t5cF;ODINUl zMUlm+A6~gq%$3dJ0OH_Ck0N-CvmNIp)GyuJn(u4v|^*u?ptWKQLW4OKcl`h!*Y-REFn- z6U^mr!Wsq=WI=arc&>DHC?X8U?E4p3S7vkS^GFZ%`zx;$re~~$g0&P}RPaU0dH>sI!7kQOpOg zAhuu)fo&A))DU2u*wx`SNxJxgz^_cd`jv^vcRwe7Uxli`HDKU95tsyyYE!?C3*%|9 zABl0l)h!;F2Ia>}@EtO9V0*-%-B`cFEHW%#e|RSWUnB(&rztIl4JDY1UXA=?GA-L| zCt(d7G0$Z+Nn34_m|ofZ{XZOwRKsTR#KmlAc2#t@s^8g2SR;YjY+p*4%>!FhU=@Wg zi0=jLCoG>xKDdyu`SrJtaZ?|!QyG@C^$#R)9p!b}BF1%9tUX`_rqKm%_Y`mtE91ae zyMn+*DO-~VafM6?cr2bDzfi=S`I6n+HTCnmmnL2p|7l*of1Qx;pX)8}uJQg~RfTiw z%fh*+3;%tA_&>^~IA<~T@2^>D<^Q+<{J$uE{M&{1?~20zFIVROSr)Fpp8n4Y@xLCD z6>Qk=?ET*kP+uNqzrOpUjP;T|{&!d4|6|DiUtNX&UsQ|#9@c+XgZZ;u{C^1hzbF|0 z_csDCiT!iU_z z{6_-+f0Dr76xY9(4V>2N->=^Pzqf2);%oPB$mZUSX`9_2nYxS^K;3MQk=Nld(y7DF zQu4k>B~Dw=Q4Aor;{CNQln^P{{W)&c@r(+olH3$C#Cy3&<(5K&}zPvTw9LmnA!;H=Bz^L z^`}N!nVlrv4SOQa+F~#5K9obgS-h4O6?CAzXA|7qxk!3CBF%cv!C(22KTF447_F{* zcGPr8|diCTj=xY zbIFhUZOE`wRqT7x-TyR6fBBP`ojOGQIQkQke8o{6=bu6591bK`yIdzlUEV0tO?P$8 zVP6_?qc{CMs}p(eaJ+QOtgP>8>D|5SH6vSTty$mvL0HyNmAXDhUGRfyPVm8TedWj+l}9ZrMi7$k4s z#bmz27Uj*iLCW{X9L4Fj>zYmfrMr6Vxs5tFqoL`K>$fStz0x}9=uk0z`8lFEtfn`o zFH+OD1d>nnSCzSUEYc38n{sM$kkVe||7i#4ZVC= zL?4trX$!=d=W$Zs@UEiw6kh$<`>FEbh_0mfgrBTQjW*KnfBcnP@h%}PzB)-u9rn_t z5AD>JE4!*G=Fw8YhIzElki|;FuI=cy`3H>vCMP|4{@h1xl0DeNd#yy$+L%qTc2zR%xEJ(fRQ)Rja@ zK{n&9;xG5fyo})b<9_n(cA9zlbJ|IIL^lty&~96N$@4+OhuNvxC@dE~h?s;F~RmQS_Y*dpMsYWd1?tbRR*O z4KaC1OYF&rr;F5toU`?Q=(b^<($rNam5vRi{)2y@ArB)Z@0Ty=>wT0OLqe3`vIjIQ zVik#$UXtjTHDrBGB7Jh+OX6;q(DZ2&Y4*2gNc_G2u&++^=>BQqp!mg9{ACca^p>QJ z&OhR~A`M(~T^v8=dMf&0{rov56LOsaUAK`^)-ENd)&8fU(wqS&DDx@LxKjGX>=g=Z zm|ob;NkX>;1o{_`pDQ510dgSeq^VbY%V-}w0p92*7^-RV*l5Qu_VW*zavew%O zY=*+N$-b9o73S~oFFN!5j(T0i#jpF*FFffRa~lbEPkY^8C_diYm@>Tkvh_mRuTLFr z@VBR|KP#kfNJhpU0$Z-ffv-D!tH2K=rpsXyBUBrjE?s}wO8mX|N@9KGK$h=!XPBzE znhwzKCeNoMHq2Dq3vMdGZ8TCZ=ZU1z>=P7NM}ghaB&5sT3g^<7!RwW}`Az8c!_$>V ziv!ggBRR>v>SM|Nk%LX}Ibgc-egvmtY-A)2 zR)Jr1%f8OU*t-vfylGlmBXa5bBYJ4w4`j^kEQZnI%(#w-p_`;_GZ&Lg*G z^;V}-KPuWaAVDIU=*P!iw+bWdU8e zxs6ym5f^1|-bF8D^`f6&xP$2^HHZN|82eQP@}s~nm0>viRY5#4A)c#8%VqJ}w6AIE z=})Y%3BtzT*(XcQxpxUVO^5znq=RpqDPj@@rmNiZeRSR{uLC`DjuFTC-3WXJ`}9}f zpVIz#3vE8&8`Hto%jkf#4PcNzCRiE1!`U_qLJNJ@iudcs~kk zRgy!zC9f?TMfe+*nyXgZ?T=C`Q*RQ)WbykSN2)Wb+{9mx+0n|i)2xSVx>K9YkLjkL zjw`Ow_bFt~u$sV!75IYn>4mEz`)5=J_^a?&l7d82c#UIjP zfrYv(a3%TQO;*3&Z!38%?FV2uDErN{_%uzoQ^gO{meTW$WO3V*whC~YGP#Ya z@}`%bq)F(vim_17PBRqnMB-c?uc8f1!@8AjY&2c$<^0yfc-6Ah9%RgOABk}?lW99R z!y;n-sT1vgdY=`xKqvQWt{i{LN#KOy=Uqd^`6ab<^%j9l1<^M#vcH?y=HpEI_p3>> zu9Kuqw|3Iu=7u!hO-K3sYVpJ;t4IgmOm)i(9r?LLsx~)At85Wsq1R4k?|u( zktRNzYTZZRGTNzpgZ}}2+mA9JYP<+4ZZttH~rv&3(d<*Rhy4rD_);*fYhD* znU4SRCGB+ESA97U@Fd#MFUm7W$3v}1X`_$H-Z`?E&{t4rS(aPxw%tQ#q&}vpsO;qo zPNyl~Z=!43^(TWz+bP{jmMHJfE+YFTUJ#ph?Iu;uf2$<>bXTXi1S&HvW%O-UxVp`d zDBasOr*E=GQRn2J=nwOfr3T)2lx^D+)SJIM zO6Y@hwTMWYx9HXN8+R+K*WI9t;ytC`f}?1U2OjFjM|o0!vvihLAyUcm>1ycc{$%IQ z9IL{8L9T3GK-adLNgRJ4D(P+yBVXq)Bp9RkbzPdWW3;Wf`HLj#SLG`GequejajBWL z(V`j=$EJySZfA<8t*T?u&GHeISP1aipJ)`ILmuY=Xs7*3#ae&R2G~z9<^vvBKd&nQood zOWC?yCpFb;qz`j%5{H~Jto~_B=LtS^#$!KqkyK^u8O}z zJ)p#veWS!oys88>FObfMx3roPzo4H6eo9K3Pp9~eemm7w>e=g{awz63U1BUT>7EC| zX6DjQe9kD$K5ox;!2N%pDICsxuCK8d?TyBHP8t^;zgn4&FFR57~x8E^Ww!kspagv3tebee=ZHkY`HdxZPxFiTi=cCs&G) zhdL*}ROz&>CApSi63b2`kc^bm)*psWS0;QJPR^wqBh2^9f_ErUKjxAE-CSiZU8)Y~ zViY$@yU5B3bHtCXUn9ZOZj!jqCQFkBtQBh;f2f?8o~1fvJ~Z{!xDtjL%nw-K5})>< z)y=jj**9C$wj0`7fg4KNEa1l-LH+1@KZYG5bU`;3d`pM+m`uOEd64e;@hkD55-#0H zN+ml7){u{$%%DxDY{K}9$f*9&lGE?Yl=Q~oq{r@qN_p!#*sKTbxU2!4p6w4jJV2c? zhmx=B4wAilHqjZ^9+9x4c@(}uU{BYOfq%I$1 zklfsP3ha%(_(~&L?pIqMd)JAo*oio<8cIEK?^_veb^qN{vhM$az`sP-&>_mg^u=^t zbUzB2Q}{XSw>sNvC_UaHTVdE^bL|D~J=D#VczPS@emotN;I#rf$M%?AeCw%H?U@kC z=|QPtvfn_Wf1FAud@_=DOkb{?YV6POSh|@rTUq6Li~R9uB#r}rgKgMN4Iqibwh{P( zDS;E{qqBA7(X;L1={Luf=hMteYKt!!u9GJ!R(4FDOQKHfA`L(LM)|eTYi0GmS>lQb z--`#_zNB`yS5W4AZLY1PO$%k(ZN?|$;+aL(Q@dKz?#B;_KbfYGXso8d{Ph>Z78=i8 zAv_J1n*EBj_#vgh8u-v3in{0=>Gxy~NxL7eM(&(WG-rk@9{Uzi$U%M3ZYm*xok@?` z3&l%|(+RVMhGBh7>r6AO+wRmUunF>D-BhI#bAsBJ;LH*8iE1;wb$lO562B%Zt~jd^ zUni@;aQeC9N!U{?-P`0V)0PoQlAl^c(`J1{6Bm6=I(KVH*=NW@YP@NS*ei5___0F| z5;AR;IR48~%r_{*d2!5n`rf7H(z(6Ma7Dm*60oI^AYMrYOZJh`zx;OKag{*fchtw^ zPBPuIF-Ch+&8%SMyO*Zaq#KyS5%W;OwoNf}?4*>f-AL5yY0BNu8FcB#cd_#7`}B6N zy-L_<2l8yWh05JWC^5YoNjNU)J&!8lj!3Ef`QyN`>GakrM>WZF8%ghZR+%f5(nX{0 z5r!Smv6xN$>+N7hYPq=4dm5eECxE2r-y@KbI%C26MCcquD(2KuE&WBoXF7b?8>Q;I zKMve5I;+-ZpkoVy2;v6GC=FGXuew9d;p({f{X%Nci`nG26Jt_`9Mwxtx75(stR!*w zYcs<}3GqRlv||K`nS=Y$&)%WmEOV14j0`8EY{yw!FIc5im1&9LfQ%y(x38@ z#09tSTgPIkB0{ zUpAQR`mnpod#zT^mM#~=j$S7ZDjKo4Enxv!dNFD-NxG3EF3q`XwTmA{VAFKdtw!pZ zpIQ-{1!2;&?SF`dQ5E1f-3YLaZu_byRxv-WxZ_@4a1UkR_QpzJ7uekEzRIP=hv+4* zMZ`JN_kgrALJC?wyPlh+_v}dS{LzFK-r7rUt(v8V2Ha47?!rqa6SKg5UW!-kh!i^d zhB$iD2Fh%~(rUE`J_Y@jn&{JW1l)@-u7dCB%&14q2CPBLout=qM@jELxJ{4fPb=?T zI;?1EHGQ!nMwxsvQ2pk)8+~tVbJ7g=zxRz0$#)lAROa6g*4a^)2}8)C{vT1;sfuxn zp9Z#-zz@}CzkVq)|If!Xnk*i_c3w}IzCSs5+BD530DP;4BCgO=yG~H>M8(_mgB5)j z&A+Xt-G5)i^h2C}_mwXGd`JY35N#|Yq~jw$q@Vs40IZutvM|?$vi`gXd?26vvW9%6 z{Y3d{Lvsq;qNm?vs^4cis?1(CfAKM0_WK>OuXl_(^I8M)iBAU_P~bv349_IsKBkvP zZHW6&FA{!lkGNWsPj>gvN}sI^klNL?mVB-cpm#%!z`PX%JXfrI^p-r_xP!cMu#wEa zVHR)C@%6FN`^f?VykYo7;~woGo$OlCkF0x?M`s1;c>>4cxANPN-zZ|GGVE=f@^=16 zI=ru00dAA+(*(-+GHimH?4wAhZAY!(=wwXVZ=~0R1v+VNE;hRruF?I)XccBEaZU)}sGRul`b8&a#@Y3R{+}y6kRpq54aCcyCE;|v5 z?b)pc0|pgW{&n{9U(dvc2K{fF`D+b4+)Kx9Dfnv@yuWTKi2eJn%s;mrFubg=y1cx! z>aR^lR_0e=eZ2Z>@CTIUR}J~=hmzQ!*6ed^5C&3FURH%W^(u>Tt727kY|!AUa;$SV z`X5W|;hZeHf%wmM{uDucw|qAIcy?<1-C6v<+Wz~Sf7zo=aW&hcUS7Bl;h%4t{cGP6 z+;IF~{r-1L#idp8e@++2j{T3JMg{$S_WIo^{(paMUtaPr7YO|OHbFtG)qh&aF7|)W z@IT*n^FKJkyUmLV{=255ap-#8)!!70^Wx=I)g_h1-MX}|7vf(+V-0m@7eQd=KXjhy zD!w4UYEWUz^0EPgN}}Egrv3s5>960}-F|=e6n88S&99bnL&Br-s|uN=MOOv&36HAZ zf!&x8UDY=zJZdQJan3Kn2TbkvuEl}*WksdXsMP0g(f`#xZaXc`AKLca7Eym*Hqke? z41cjriYsyP$Y0w+>Fw*k!yORpc(?=NU(f$1zMKEgCenue|1Tdad+eSxY0}CrHF%xm z!`mE+u(5G`$tPA1FN)-Ay)?Ypmp6`)^W$Y(jee|L9Iw?>*zsmJp09D#YAT($a8591 z=W=>;+ny7(dO5@5EAX`y8lkVbjYcoWm>X$$IY(m*C^vhU(=~z|?1~pxSB|%YX!*&J z_Pn`DW3+_H&gNo`vwx7e&?GygYFy=3a=y8dB_bZX+iQ(6<1O7SaoCd#*9gOET52^_ zPP}Y#HU`*rm3{0R2y$j~jvJY8$GK`8kPTYR@CLlup5sCcXt0{&;!5p!S>iZTPz*13fc)BUTwVpo2M}Iwsg#?! z@^UH11ENJh66O_xV%#ey_b1lHgE8f6U<2(!AnlY zak^l;04;CEv1*(Jp{DInjw>oQ=;h|&{t%k8P~#QtV3d1{;eo{lzSbMNG~kV6|Fq_D zux5@cHrVp=Fpi7GD5JERAc2=#!%zgCYuZ4V9OSIwApb~T!Q$ZIA;>u}glII=$APaE zbdCc$%XVYOr1HF(K#~S~-qHewg6&G$xbQNu<7>2nv)t~TDZ_T+xdt#D{9e!o154&D z;~*0~H&VyT`B8$WB_G0XAecKPX}D00-dr5khDS4KI?mN#$%A9qau8dU9UoK93yE?u z>@-NjRoikQ*rp-JcTeEBK}E@eB{>D6hX!=K(8ipg;Uq1F!OJ{U9LY~E!vI~ehY3$; zqcVk$Ku43gy(F$_=Y^_jZ6YI!18@VQ&!JK9me4reyhR^fR=$+-JjRj$x zIoy_W#G)wYujlBvrjr;!mTBamxx{!L4pG~p~k>JV2&Fa1Sc=^3WOwKBctJ$LA)74jSS-J>|u+9x9GK+0zX5Ir)N^4 zPOucXL6R6x0@}uiWj*xRUBfkY;N<{}*2A@JvyN@srID7bQ~1)0gA=d0HF%kYg~4N*!%o4QM(9@$_6_U7z6U%VIt*br z@5XRG)DdE5pNCG z25&_?tgVU0P$Z9IN@ww+5?vmoF_^2p;ytuN<0^!dWI4>v9ByoEhlrsu=p$PuF$

zgIVj-(NE(p`)36?bZ=yIw9^=B{awA_9SsJ0H(j9i; z1jp4|2FQiB2HDdx&Pf9e)Yv*feFHV#c|M|FtlZgM76uwP$3VF_#2nF+okFw)KPa7Yg54>ud+pqCBi7*GZrvah#MPBeR2 zB8&*l7zjMP0=?Iv_f?=sz)`a&ZyYWc#4(CALLLwY86igY=Z)U=F_Pm(!1>I%i0>a( z`g3j3IU@w;`c81g5L`M0r_qiu1R3}`0dnZaf)_WC;|98M(Hs{fd2>K7eAS)fy4!N$ zjvS*i2EL|=hI40uKY|;ExCB(dr^slyMGyEv4;^0z42bmxwsKJ+jzW!H3-FuP08?j! zY?mab!L`|&-Y7?OTnRc1 z5`xW2(WypyZ~|LBk((K8xxv67t^4p}(GQs+KK&l#Hu-sN743Rs6Gz?1up7p9R z3j7o!$JaK{7$zjiBIH>H1BU!6IriwO;hJi=xccF7!(8~SiOFSJ!586{H^;*NwdN>W4nwRC70kUlBWmYE zRGkC)$^ErL1?$`}5I()RHR}P?=MIX|7vqf9%gy9`4L1_*5XJSZAF?c>ud!T#hAVXB zTflZIHQaa&q6!xVM`GsY=IYwHKo(@5;bl2EB#hdtA(xI=gdk)_I0f&L3!olIvZRS% z9w))r90jwZuTijT8)4^N<>()3FL&(V);y<$#?Z@M?g$(h;=$LXz{#2idb;Gx`nKi} zxl$(R5o8pL#z19dTXdkShD!|MrwE97RR%+FeRLIkCo243hjf zP?WJv_{mN%SrBit4O$SifDYgQjHJR-=pfs1T(rT1w~PSCHTZGmK75@AOtC7Giw8|< zT2E706zB=EHayi`9vsN|M9BI`zfia=2!rc546VEpNM!1!(N{W~hoB|s0mR5C2U)!2P8!Y@yvD164(vqZ z?C9bf)WxM?Fr-?@3FfB$MqWl|YSQ7gI)6)Ndo7oYJ(Ca|>}^3jy)=4XvtX|gMg_ud zD)Qke#h?lKNgPOSRf&VaJit+AY%kPku5Opzt(8WvlLLS?)dm1N*ngg*AUpUPgj)MJ zUgKV1@NQZq_%@IGYE%#+xg> z!#TYr%pLr)+7QkXN=*>>WP4j~EU+Y=Z(GK5@9_=n$GQi2>W#YkN1RS?ud~BHowH7_ zH@X__1fAZ=DbP``)7g0>7$TfJ9fEuXz0N5#z|PZ6r)%P(OLD=kPQH#hy-x4pDCn_s zfX>a^UT2TZ>?8atb?)|p;3eqIX+daAr*~=K9-d_9rT1~t2RImYP6ixJa0qhMvm@%m zbw)eA9$o0D>!t#aweaMYD5}` zyh-kC2X6tdobU0fhoi zs7(vyxNb1nG~iSTmxXAIjG;V>HRiS5kx!S{k*U@+dklS(yvk5IBB!seJ z;Cx<&Ue1;S@F^cake?-Fc*X|slgF@t0&7ROke!eqXyEjq+Qr$NJ5Va>FO+Kc4yD|I zQoj7;0>Cq*=Znk;>10`dZXz&C1ZL$i%&Kk)5%F>_4L2MLO2yM7fbZ;ubjuF0VRR0c z3mh;Ma@lZ#EMAWGKudOdi;rbEWY`6RcC+Pc5&i4*JU7dbz&T=y#IR-Y2ugODjX#*AqgRpg$hq-2Egvm(nY7pzY+H!6@*Vmh$ z;3{xHkE)iu+*HGtJ0nCi(hC;%1`r}L4_os2*o**5`FBv71SpMXP>Qd8>sbgZJO}`c(H%KZhw7kgzGk9PZ)w#s6?QnHYk*!J zC->s{It11b2qo8#uLBo~O5^3QKwfSReKzvo>kv`nNAqAZJl>jxAs8YRf0%S3LDYElpi`#|bhYo>|8zKkUiU6*dLASu`3Us3u$^ z1S7BIYa%%wr6s<`22`aJl$#;MI(2l?n~er15G=gv+HX&)qa zbQNkmS+%Jbt2QC7b>eHmY?h`mWl6jlT4PIXpu$~r*obf&J!WM8kLN8XdS84n08zXls<#{av;X0zFZl+ zqR?ordKcS;`q)0YswG#A@dCHT;}9+I^mk-MLZi7$SV=3lAP$u|vokEvT~iY;i%=TMJ>1<8f}5Wkj|mLCu;y3t#~BM&@yZ*8DTsl9En&*y*$wD?8x=C<51EI zic06rAUdeBNL|2!F>*ZRw&0psNF0F3SzI@$Ew(c+$DsHYl+Q(IxCkeqM#vHbb9Fh# z#T)wZW@PL6>0B|e1kh5LmGP2Sd)FWyd0~|ZS zw_WOK3<|S(`7L-0+_$g=I2}lRD^x#Ac~*HX>tc{2{mqd`%-9?FWh=gUG&SY*4rP&i&R~(`ku7Ywwst~Ia5F8(dvLs-pN!Fzp{IFpMsTw*q-8c}0=Vo4 zTy6_l@><@Xfr=Aw*)_qNujvQMR@t2sIiW=iI9D-ZoLtDWVr9q>h)b)<9m31LK>r~q z2tjbA2&Wuix-v~~?;r0SXsGcZg6o4KczRUs6U>JU9;*e(8`j7XCGFEY#~@uI(WDS$#2cgdsnsQ(g<-LGO_@T;_%^?oMn$06& zei#}Iv>X8qqOR!8#Ur#pMZ>Y9Mc{?jtOiT8+&~}@ytE9~3Zt#67UZ50I0X@vU!SMR zslbpCsi;T8t@FC_7DQpocmoHtM9rH+$qJ;S*hw(!Sh;tIMq6kwbm!$z^bZFH9tDN8 zMrgyk|cZk3N5pe86RPs8*>H8y3H|1h{F0d#N0<%*?LGA;; z3n}C+4bcu-V3}twsy>h)oY@(@Lbcs8d^F&3FuWSQ9h$*`Twq+5@jm+2^*KA#E|-Dg zG~kS~mrs`L3&R@#$qr(mP>nD;!4_D>9bJ#@a#+gHgEz++xIy+XM_a*c9|D&tmr=;8 z$wJ)M2vgdj7;b(KQZCWUV0*Sg1S_i|?9?DFuPNZTB6J^xBEANaFAhTY`@xw@-i-uy z8Cg`H;YLZo*cg85V3^5R1QKUNFkHoqm&|a~i$LFM-E|0>u!zF?vBeiU%5BUs^|^2E zyWCfTyZ1wh6?7}FkRJgmHK>}G-60`ePiEiLNZMD2FVt<7MdTSRX z$fN9B1Pjknqbimfp$t+xnx#gg8KucEILXm6P9=E)TUr4PU3^gh;AK=(9EYNZqk+RM1WV%%u!IaQq@L!n zQ$8}vY?cUK-(GeOvlZMT5h4BDi&`S4c{f83^@5OVM!L{X$0Z>(H@!>ECu;aU9;kst z${t!yfbnDtmRtZ~d23i+C{U{qtQbk_pdgqtLTLiT2ob{sWt3%xcH{>zU&|13|#0FWsEt!U-Pi=<#_B z$xMhQ01I|n$r6os@PWK`d~Gt%v9eBy@h^?GYmsSJGmYDh%+t~jv9Tj<3ul8 z!IGY!5%{bqEtd^A4u$&5vjw?t82Z)Sc}-vyZua*TRz>a5Xg88_uvWQYA^g18wC zt;_?Q!?|~F0mx)v0hz2JfQP24t0BOwEf3=y1LW~TBl4hy;qCNt8cUvsvS`R6JmY90 z$`0kAhODXpdT416P4v}sAQ|#_{HcZiqN-6N1n@P$hH?X9MFFIau|aN-RAevS43sJY zN2!|H;UnzzPI{re-kI&?Bw$N#!Obg1uk-g8-0YkiV*j{N_4&Ur z-Uk2w^Z1Vh{v(0^NZ>yb_>Tns??_)-}eRpTO1 zQ$oU@YaaaLy|{QlQj;br&Egs-C+5c`H!5lp*Q`m?q`1^3MfpXA1*rv1lL}i@77iR# zU0jHzeQ|y1pI4sZO4K36m2rjTLviU}as23^rFnTxj9qo=i#v_TH=j0@s(e3In$Dx* zljq-y?{C{r?k$-uUYWR)cKd!jm7))eOOFZ0?FWpIQ9x0T*FWOD!ZJ$qk-t?l{zK7`ew>wFPkB*aPlgp%USDYo~y^hf)Hakh` zz;0^V+Z@G1A1Ueisp19PhRGlPf!q;n=|_q4Nc5L6m?|QQK7W6!y4Spo?D%mLv3=_# zy*jTauNPgRJ-?r)jF`8Cgcy&LGcT{x3x31JLjjvvyOQ|CMjhAk5dGc9Q5~^Gl-~ce z5Ahs=`yU?iQsBc4v~O@bY2?7|lJ0naa^uTr>AGi%+R4hR%ZeMT&oHxGZP!io%*#B{ zt&y{OdDkd)PhcI1%pOng-&|l#n=z35zAjK{S1PFGy;`Z8O*PWAIR!NK>rizmXRi)@ zv7C-xJXc-aa4B6|beR@5l%$Nl%ayq~pVD2Jfy;Q^TQc+*LU;6AN_;+Zlji2MRWl!d zL{kS|ATvWA*0-y4cu9+@kBCcCz92bgyV3H~jig(%{H@)uEhWP*g{dP_JJ79FN6COS zVNzoFYMOg6MA~Q{qVCzUSe&!$D?0ghG98h6M(jPiIT`)&ZsP6rMm!$%0fp?v?7C=a zM7Jj<*3SudoYbjxwRCTEA<2mhBq>jRB#(crQ%9V*CXQb0B2|8|*|e%W+%#wRNU9vZ zE5eb1;Y|4I&HEy{;< zE$KgTHeKFs4sG1(Ac@|ulO7gc5$DI|sT=KATZOg@iL%#@zAt_*M)Yne#-03*bjm-V z$iEa*bB82#?bG`T#x9*4JCW*nJNo&6i%PExSTobpjV$S0-HiP9ofY;=uKc`;cs$Z# zhQ~h1R)(Nm3PD`WfKB1H{GN*BH6QqPw+l+1BW>8rUnl<=BZ`l9ED zbkmfFN=jB!y6edry6kc=Z4poy_n2#I4XYf`DOZTO+&hV zP#0n_c4XvvOYP3Sb8UQ-7vOFI8TuS{%Y zO1;`b&Dp&}JYuIY4Rt<5AFY;YVy}C&L9I@0xo#CPe{)3Co{y8ZuMVeaZ!ggf(?e8y zJG02IYei=tlcY5BbaH;$VEWTt2l4Y~1Jpqq{MGAI*NSOAW7OE9Cd#6N_m%9rjr8F0 zJaUMiQt!K;+#X9)vi6bw#$Ym!d?cRMN2p;9^QFi&SOs;}1_B#XM_u)&Du<m8X6E>PHyh6qcioNlbH*zisJZrBJj+*PS{B1 z445Sio{%ifA2L~8^TP}}_Cb}j!}ctlap;)!%r%-?AZn#uoNv{HGsvsL2pUb1!GoMQcxxB^Nf(s+oZj>{}ErMyLmVTS$hLS!lwy ze$w`YeRRo%DCvG#gw&zY*RZ2%siv-i-u-qt1zt#9udJfSm)lE2V{Xw=cgD~aKm1A; zCG`{ssBK8+ISt5_VkZ@HJ5Y07R6>fK)z$%1XyJ;6>dhu!l5e_yMj566OVw%qztD<= zJ{VV>Km_;3Oi`46{=UE3o4XO9PKwW!j+0VydW7p}LAB@tszb>Vn zkKLpbKh!F{Rtks(c2dqV2iVw6`cd{C)5C~2~Cwh z_6&#JT&ADhpDKlJ^HB3r4C?2Ta9=a>_%B`%KjYcC9S>Gm?K4W=m(uu=Qh@Qi~uH+l}jB-q-Rs=aPCWT zXzo(w(t=zyf9g*p{8wKII48ausgfCucBMk6ET*Vex4BD4LUA9{zqQ? z3Up%%A8aQj-hCyuaXg}|n{Oq3?oB5@RRyZuyXe)}r>&)aHP56epSwtJHhW7ISrf>$ z?APRE{7AqCzpX-9!tD)VqDQwRAeNi&;PijJ$ zzUr25x6b=4rQYuLw|z^l?td!oZ#$9M34t#&yA|V1?U_9&!sE~A_9>irEqk1DVDfr8 zrAMfAE%6H7lNt>SEg-OITH7^-VWjk6UqkiM1zu|0?`FMBPaO&}IsK8WW;}=`!>NX0 zy|fThqOe$fe@YfbY?dlkXVE|QJQtY^+m+TSE~{##+czhYyus%crNb!F*?%jAe<=aM zk45khQZ;iW-8%Cw!!YHx=@dQxnJXFhK1kj`M)ansLR(Dz(=guzxl57RZ-5DdXupRw z;*P*!)F6FIAuA=f-EOgL&@|HcgQ>u<-Q?H!{Yql`aSA&JKKG}MKd^(ImMB>}Tq$C) zdfw|bjoWG!Q=Z_S)3XT@v#Z|@XNZyN5b=_(9eH@E4Q&&3M`2@ZW`1D>-#U;mXd7)Y znO9kid(cWEZT5_yF&kQ_nFa1@;^|9t`K<}GYkMaX?2-HtFqt~+NlzO#eI)%^nArh>anny(z(ks7Jn&=Ydez@Y0rn{1elNM zu@2L|3sR+SdacL}trcy0o}kC>|3cP(o6g2}pwDoBsdJYq30O|{f9$Lr*|CT5LE<*x zlE`qTbgQQttJ;vg?|(r{gKFs?QMbv#u21Oz&-vC{8Y96tO&|XB1U|W#1YWR}+AP07 zuBi_c;4S>}6=G_C>3X>=As*9i3m1@8x8_rDEfY8(RUfw{9S+?i53}|%{wMA`)mRc#p67VhZa8GoB<)!;V5}mmec-jDV`kA$7MVQ*SRT@Q{A@EHp{MTjVt>Y(j z@RF}7_=5=UgZ>6WUXvIfV)7s>&%7sHf9*=g&uAqH1^X3n7s_Jok1@WK@l#+Tg&or1 zh=F9sC@L~+JJjqfy_l5DcpZxeBJ4_Re{LJO7ycnFKI5P+=+i<<+}W5g-B&+3DY~`a zMJIcYB`kiH@0^XcmysKpOUMXYow^lMm~@`AT!cN74%1h|-VG}7Kx+KOIR$bR9Wq*w z`L2X!j@w6}3-;NB82z*>b?4x-{m($6Ad`$$!!tx0Twkx*ZGriuPvg59q z4k!Gw~Mo8kpQ1zr=mqv;b6!{vN7{8G8IuK1;Z(b^bk0^%EuPDIQdViR+>^%`OVsTe`cH@BZdQmUN zUqr}OY7y{Egf2yvQxv)^qnh}>^|s4$9*6tSN%5JPWX4Cqs@*q%O(zswrR=+^^+y!s zit6i&8VP)rjhBo&f1V;9D-CA_h(}8|62^U*o&9jSyMnmNatCRqK3jq9lbcPtg8OCD ztNVvh@K`J2kvOPSZTsZUaI`Cvyt@Ri?b%r+MkKrvmeN3bJ9q}E=LLR zk^o^`J@Lp=@-EFsp6I5*`o24NH=**tmploS|e4& zUg^Mx*@VT+qFHwsFIQ?x&nS$a^cnsE+2rw7{P4>&EY4Eom-I;JT6*fxs#N5GG;BpD z)C}GLpF7cOyJnKSlxeIl$hiWntgRQ7#|ZL2#@Wf8`HO%TQxG42B+T}~B?z4nM7)-L zth8C)jbuI!r;ifcz$1Dw8IbpbBUQu`1vXAvE&4_&8LcS5Rt32!VR;bvDs_JJi0&$M zrPxMk75bCXIzZ3jomf-afgm0;yj5erUZXHR&T#&xs+G!=9%~LDk2GnNGUn%q(Zytn zG)YCQH&w0AP=0HiBwpRNpq?A(j^AKdOrNFNs^A^8XT@4Ez4AD%N`8-x!Fqg8JONLk zKYlPp0p<|!C^e*b4ly5I$znV4ySJSp{u~&7X)Q$#$o#!2ayAvU3=O90ElqM?c zl&v-w$?(Fx2RePVUSznvKW#PYGH%k|_q#|DXFev#T?xiTXZzc+v4|C`KNGJ8Tj*3w z30UFLOabqwpI%n}VA_u9jd;DksV)5Hoa-KiNHs&3dMF)<9%C1)M#i1giSZuH@4$83C~{6Z zX{4`2Zdk2|{UpH46>(r9J(gRDIJlpL?f;pkc1#qJ=Mcod)OjIhihPq!KWC7T$6KFV zJxuQoij(F<-X*UK=9Bgr{%Y&ZKFrq;t4=bXs;_rRPX6`vwsCv6Do;9YrzgM4CVQj5 zC&)L{m`*R~z%T1q?#yy%3R#&@<3Wx$T?E%6ms8>>avTY@A;RhopIX-|=&uRbLcM90Y8#_a>6OQBPA47b)^saGB)}s4^ZgJ#5ncmlU|CNut^mDqOdyl$bkvsfuX1k zk1>(l%g4zF-z}re?%DXnCzHsTYlHxEz)iLF@tWnQ{||fb0aewqtc`*QA}T6^1Qihj zpdbbetgbeT0Wg3W6iI@T6fh@1L`6}+te6GGoR!tp3X0in7IQ>V%-gihzG`%*bM`&w z-gnR@Y73Boxo2@{sz?yrFz}eNeF``4k}C0u^gfJc&(u zl}6%Cv`0I+N<-^SLgi-7o#(0iMWcLwj}5JW^o7+}TU%1Dfnh;uCHW4;=6utXvN)w| zT@K#acp%M^_i5V>i2IX=?Q4M2qd~vi#Yc-OGKxhxaS2T2c&i&&BJuj5czcy!skQAK zQb7{uEGYJr(H)j3e21F@4iX1#sp38OtzSi8=s)(FhzyRUE!)FlN_K6C4h{BBb*|>x607`za{Xu1pYTm zV4r=b-|MNf+5c!g)#b*n!5Yg->)7~v?V-jih7WGVBNrc9)>xYdYwxXs>h<^2P_8K+6(LnCptk3B!%tfnk?_YQ376$CLyQ+S!CojDs3j_##fGPm0bPaEg$MRlk-^ja=f7^#2PV<-UEj4K5d>x&}7{k}ahFo)C2%45F#rKXdfSR@^ zMYRDgxMsvcxZeCS&df;1wJ&V=ZvHdQ~Dn-@OKQ z-%$Xa1J}ZS-CgK4FHDB(z88K;wfSV5L({f;N>CM=nOroSeu5Y74a3J-%8eG~*6bIMf<3G2> z_bn#zaaG&Ew^kMTfToH3VwQuvGhsBV-ljQ!%fiI_uyOd{Tq!9WmuvU+oes5<`p8X2 zefdD!MF9LI^%ZL?QZMZkGpx(X*FWEc;>kuoj>N!C^-zd@DYo8dXeP|Cp1}fN=fX257ujk5 zGQPiB6Y;LrGv;{5fa_hz#=OSu<>+qNU|LrPzD_oh+m`>#oQoIX!)C_NZ1X{Fa9Bzio~yyKex_8q6m4dRUiX5ro6b2QyElaPH4;H@#b$1H!hn9> zRCs0_#=#9XU>C!U(%l+Fw{Grow4EcYnN(F4?_9`wImWPNb33qCt^3K1(cR_VnWeeg zgC!WU>MD-tqbEo0sRdvArSRMLU!Y};dVF)iHK=L$6E=#iC8Iyhz-VU!-q_M!UeV-3 zmfL3hvNH)>%mk=4U%d4>8#QMwYOV%hTNbR#CYj6XS^Ls7L8_%UKViAicgXv{` z`Q@6PoV4K@6K)w$s@7U)IY{@#tpg0 zHJS75c>J}YP?c2%(jzpJ(^#kES{Qw|oOrTz100-xntcr}kDFiiliq`0;5Fh;vVB`& znrmxLa@Q2RY%Z@pJr1F+WanNj@zD4l_}Ms4PITa>>c%THe!0sJoG=*7|VSc1o~$XMkQoo?Tm-w zNnt%C9h4)6$MZ=W27uC$%7soZ) z54rAbF~7Q8Lh?27*NVmJMW#UOfa5>siB1z&!xc>j z$SFG;gEHOV31-uJQXS@fC4MdO9IUdMiDAuR@sX~HOqdnLCJgpu9jVD04ta3_4t2VSE}xLis;~^hcTVIf znQH~f0AD(E;*&?+!q|@He8Em1?mwrQ9CE2QbPP!Yr$MPXF-I$C>gvS6y9=+t@yK*M z)TtM~k^Ur`@o;lUkt3UeXcWFJ3jL9G8}o+ znv+-fDvuhxq65aVKVPoHGr?X<-)g} zkI;}F@0-INrEce1QpvTmZ8lf_Cg;T*9+PCk+`d`xqt~A+ngpJe|H7Ne^VJRpXV< zMT7W*@Z@D(+%o+RnBFffi}Lk&uUqetdt}a1m$RW}=ojhvRiWGygfeT{jr# zW794zxcLPO&C9o46)v&bXA2c>0bvLRUTudPv)qxeLF~;;z#+AJ@FrIrd9Cm(Kv*S6 zek4PX z2Tj&))81`35v#@Sz>sOzQ7$8W@_2+k`^(F-HI1e5FC&orgfNJ22eT^FkV_ALBR^`b zr8R-^#|~qci(6REXJbh|pKQnspA=?kHCOM0ioHezmXf{`(;)pxJ{)lukGlSvN_pxK(T829F(W?x@J<&!9` z$;F55D)19OPezK}fZ{16pU;&p6d3Jh?AfK&??MQrTg=I`r;Vw8ATcB>|RSJvH$m}K( zrZSnDjT8$*Y`7_#J%XOOGqcou`%*=cT~O>hP(I3C;JR{TX*u*xDn zQqGIJrjxO1!*u0C$Up>VAMI+v?T(jWG? zl?}`ea^SVk2CA{);KvO?=Y+W=e=F0UbPyd5QmV7ai2f?0>!oA7ph5#9tzl<_{<>az zZU6s}1SJmFZ!n{6sefQ$)Ha){n`O*cdMY%+FErRcJT}xXIyiAO9o<5T}-Q4vxPb7ZMy9;~zf5Q@=s__`e!AQ8}?uVZo6!+)?yzkY7|Z5lF*_ z63b(+x^rqu+D-l#)X*U|kx{WFyKnwJO5%t7zIO$+r~m%Bou=KtxV)XC&3L;XohI!x zHnzQEMpCPxp;0!Ght@>dsQE<3M*9av*-msUxg+lu6&dVMBAnkO^ke(XUc_uU{);P= z98ZH+6KeSDMEzrJhQ^f4M_u^;qxq;isJ@mop^}>gNB9p7ceMHAJbNi|QwP>jQ6Ybv zUCH4?gZ||N|KZd>P3!xj#rWyy=q^gCs^4H%g}+*EwOD^r(~?D|mbQ*IKh!oR)<1S+ z3~lH-G%)tZvfJ9)mfXrKIE0>ij`p|tevC~}uuY8rAuatA6lGKLNOXih3Dm|jDl#Oh zLpvM$z^L$G^;S0h^pB?D(6Hokzh0Ieq>dh|Hkd8>Rw;kUhNC5Yc}t|IhWGo=RM%1( zK*Vs`>GjwCxD7|f21Z7Wws-i$alcWU-$zSF|7nH|$zttoe>;e@Es~zd4i2)VcDerH zF~NVl)UTZAzq-<|$Nb9+g$#`i9U0*Fudegs5dYyr$t3*)L;VB7ga2wwQNx2H{fGX` zOZ_>@NXEjvH8CS z26Zm{*SvKgDUyBo(1@Y2yji1vLcYL}^xB6%!FCA*M#a$o)Cs{c3I%@vOJHblVA!9r z?LSgr((Mw!@Cyp?vHR0Ob_0Ky0KFX&X%kL>YyTVe{pr9zn!}KxkwNz3Cw{jAg`f>% zqM`}je#gp^O{0IiP{WdWexL34lN^kU{yL1I?%m2Y{q86J^CJ2O$=D1T8eZbjV{C>; zMH8}r_xJyU0{dq_^WPGoZjHn!6(9ap#P?V6;olnfmx1%&8ux2}^KXr|U&2uR22-2< zRiyXN3P*DN?#=DL|KmvL@}EV!e{IU&uV-T)MVkza_K%LFuJn#J!O_uC(f<(Y{YL=y ze*_L~f5a}DAMxsc&$g`-LY1ihbGH4rsDF1g|7B0)Q}X`5-X|UU{r9iGCGfWd{_l~% z-f?xmKP@ogPWfsn-T(NsKvPY#7MjK_|J!e0dw<{Qr`@j`{ruSE<`3Ka!~{nM`IRs? zw84*`U!#eQP5FsB_n=M@Z5e&~1-;o|%^O)z1+TCJ%(-18A|AgND<;>2=0;<%_mU@Y zA>_HHxzT$Zbn_Qx{_-tkRQ@dXPo2p>wCF5XAN7X(COdil*<0*$tRcj%Jj*OvIpL13 zN5Ep2HH`k*iJ$h==e?sF%Pz0(W7tD4-0H(IvcQM?Jby0SuGiwLBe$a0!j8=1!F2er zI0N^mzGnsPu3?6IRUYU21_FrLotthUi_fjbEg$G9#x--eThF;z)ZGV?uUbKkMmL~% zB|Y&v{2*N3=gvN~IL0=GyJ+p)x1ht*Z?JDUZFIa~iHP%!m9NT87V9&E;T+6{*lZm+ zqC--S#jfQzx4Ip#X1SQ%sW=j@HV)*5XD&;_8Wm;YCqp^f)&go3R$#snm2m4UJNa59 z%OsOikUX!7bURua#u<)~ZI%k0o3&fkvY)RdSwK<0ax%T&S8UU6A$nD4f%^MQ`Hqme zFt@{97_n>vCeNEIdq1+pE};d?=ZK3Mw+wZQmu7LZNxl>0PgR~kx&3#5&Xp05$1u7k zlDx3pa(_&mYA#%Q&w%=2wYXi2%9t@Bj=No71$*hek_Eq*$o#-%Sa>iClC4+6vrWd( zrQ!~jxJMTZg;sXiQ$cR3l8U=4o55mp1Kz&I6ilhGk$=u;Co|hT(bg(Vf&CM%%(LGCkbASP4l{STb{u)W=i_!WgMT>7nl5|Bxw%mp< zPsKy;q|@LNG??aEAHxQAkcETK!)WhPu<5j+n3kC=NY=EWyBWV}^HdZTw9mQLZJX$F z>nNB$>n=an>q+|KCVyJ?fkn1#B*cq)aAM1F>^Jf z-QtAjdNhE2Pj!%VSe+y5m|M&DmtMm@`+nTxZUmcHcmwj?&ccUYX0ZO?4y==S8%mAu z#a@rngIDpxA@cT2+Dw+q4Rm^0Yj!6a=e3#u_l z7Pq=jI=W6|by>(a{=KTogAi^A8# zrWx@__uzL*8)D&LFZ`TwkVOn0CTTl9nGtgqYQ^WUEgwRGzDK$aoPFMho3S$7q@cV^ zT~kqJ?(xN=URliA&=$!4foxdJ8ut`VwEPCy^agCBm&QE6pc;@}DZ3W^(%15G31!9T zkeZ|?N$6ESQS37ntpB0eWTP!z8(AC|u2HYF#+!#?zbBoc7Bm6(u+Nz4WG!cmc7xWg zAyPl4g2Etn;pS~k*vkaGyzeCXKo*uum;t^KsoJBpK>CcCh=s8)U`pO|(48|v+c9Mr z>A*%7;JzB@Tu90o0AvS1oxeEY7jAraP}!i2bI}lHUBJjXbD{EAH+gL?y)9KROI$3f z$m18x7TvA40F9lQdvyi%hrX9L6LN*=%<;Tm^_~3OFG)(LfOL!HIaiQ0Zo;>za?(0| zxa^+H-skm^i+wA|mzB%PBD+<%vR;CiYnZI*vL}T_)~O=4JaC7XOBX^u=4o%PNReyI zW+GjirAF69aeW3TI||5~E66s$e_tVFd>JHbboc->bbEu>2TRy!{RPS1(9OmHoOX8O zghyQA_=;`_DIZdBQ0r6JeLZN&hQYAoar9{4j*njRj-Jlg1NqMy$jg^3c)+Db^0L7c zY~F7xSncfqZbuVgLAh=0rbBhE&d=+6l+pOPwd*W}JFL{AT0po)_R|B*hlEIy6Rxk; z7c-_sK=-%=Sn)IjPSgodpShjiN%7*1z`VP?#jKYDc|Z$&Iahn0?YNnU$tyax5C^Y2TFP=84q@cMRx)&^ zA$+La0PcM1E6MlCYJ*nd(>ZP7rzhL6ett*tF>`RsgOhm2A`{|*>mXqhiygB7+MKEj zi+69w&`5?a-Y~v+(S4!Grd|Kmx+#Am$QR1kSv!G#=6ZAI1{_y;6_O8<<0johWuMj7 ztW$O`$v?=-kF#0m0BcEeC%c^tBqtpIMURtxbCR39*m_qE$)9bqa{{t;%yc}B?d)H& z#ESL6>NY(^FzH?nVFni0?}Vv?rb{*7N$aKx{b}`C^Lt$C_i4j|=AJ>1zPB0aHDs=C z4U2tKq|ddUXxxHg2=WE(lk?$h&@o1OiuzCG`W{tYiFU6a)=R+gj3Bm2;6K9V0H{W4&2 z`#WnXPSAusJP**kEfxj7XS8i8gdJFfekoIc@E&$~K83=e351VxuxR^MmOa!Mo1eCk zy+5~>qys>{P3)eQg!QikXsjpA75P_rQ0UPN-{%zo`Ct?& z=TZ5s*Q2H=oCCsisL^4p>-sX+J}7J}I2Fn$R^x;n*w3)4q*xOh&DJXH zk`(8G(~9jv%_DWMqgLqUlTY|rgk5OHgYO#9PP?W&FLoZ5>-+*LXWH_`#sx?*oU#}6 zIkF2CE*S5zl%emBixZca4CFwYRa?KQ=RA-b*cg`D1i@Pqeb^cw^X>J%= ze5`{WR>`is57OVsQ>&PwjZW1 zeYP&g>J?u>U$z-DDQu6|Da}19mjj*Yi{VygHz?4v!N8Vp#GQmy>_XfW*b&eKo7cF3 zlg6ZqME(>FHYJFDAG_m|!x_xJZwKg5?mfiWPsio%1saQE*WvQ~5b*o?rshcSEU@i# zlO8&8k)F6Qr=rGLCePl6XUZ_S_4a&hU^5@iEx#(}Y(B^aSq3oIUE?^(k*Q;9*X$1~ zdzThbac*LT(Fge0^)gn}Y~?x`OR=D!gWR6noc9f#&VIQLYFxNxTLu6t%c0;d|Byud#`rf%j%H7P2zydtD)dU4LN>6 z5!y{Y##|zTq|b&<%zk(cJkaAbhIy4`{VjB4GKJK!M}48rt?~O_UDAUw#xeND`?%1V zauAYgRz-_rKJdt4od~b&2tn;^d0*R$V#B!Z;`}^))LI0>WAPjvZ?|A`-&|q0GEc+M z)s;oYPpRU?>;AZLay@>b*%%;sLA~5eeCEqU8Lv~=(zr37R?bxEbdFh@P}CQjHLEXl z!5*5QaoXYATAk^ZXmZdNvc)E-*5VyTUdn{Krp3%9NxG{0mR}qIEa(+B>K6w`4JIS> z?j+g=H^fa|?l|XK4Nh{CWftjZvph^-W!r?D_=g+t?2(&-reERp(o5_#?o7& z?wKB(^heTs;ZZvszS-GY9N#kvOtO#TOwS8!=45>cZn%;=cRSB^YPK+cZ9_J^b+K4G zER?yI--S_eN5FFprO~(NL-_5ncsS|~p2Hc`1nVu3Ug7yU4T07i$1fP7$+hpQ^qX~{ z2bb>-sDZmaoCS67suuT|8h3;8b6HE{?P97~sKOyNA5e3-=xxtJURlbMlRGKf*mrsU zLo9dg0L;GRCMzWG#ogyT*ea(uhap-ZLG1 zJueHMY-*3stKDJ_zSZQK^rvF*@&0JFL0=k`>cEH2rY37^EAVPP&L~|}c!s3sXclcH zcg#s)QHxiwF%fZ~{-l&zEvDVtM-SWWpmCO#30a3}^PO!bp$o zB;gHzROc*4l!`~=fSr)m;jZh&)>*jUk6v7uIT}fKn38=ZlLok2I~={Qb6%8{3~a$# zcA7ZI%Tx$?wV0WtzGT%}jKZrO{b0s2AEj6F^T*TFi0SNJ(j`Xn!54MQ zOR^hA>+EV4y#(r)p$CWSc1MS*A+QoQV!%c{9KZDdtf+k+i_J38C+#_o{nm+p+i(O{ znXVIL2Xdq9D?xbVdb+a(VZdv&xVsBhUpNl6rfb2d__0VEH5ZBtqh}bV@Z3-yKXZl=&cnB~2#kGD9$cSHL60xf!Q3{T`J_cM2&hi;-ll^cBs^y0U5u^!U-1jd@Y}boA0|2b~k!K(z#2DE&E^{Xz|X z*0rp}Vk%UYd6qS~X;O74f6^58Zz#>9%^%=`f>QiKoF4Yt>B`CH;lc?XIU92Iq*?zw z*ALM?aK^@z)4GX$NlS6u<@RFR4h>EQBY0G&2c`|w3g4lR(SP~`q%mWg(-mc-dZ%&! znDdz4Z4Pwc_2E&U1e`OkxFwtD&hGEtjUGF`p!Jn@XrEY<6Ha1nUN$E)b^#pU^A6Wn zDo=CsN3uV$*fHOA_t$k8@x_6ED*F*)UJS+$Gk38W%dTq{$ZX_JheXYV53rT>A`Qh1 z5aiHBqwYDYuP)yau!A|BEf4RP_`%x_*4n}Mn!w$@H7>2k8mXq&o$?ft_4ne zo01Pc&MJl&;o>S`FxIg)c23M?{uj#dm-icTiZ!5HUVE79YOyXmek?{6VIe-H80GL{OhP+@b12Wk0;u zbPdvHjHs$d@vOgyC|(EOHn>sT&_&FdH;oV6%~98Z z^y)XUuI?1(rFSrgn?6Q5o~u~ae)uv}@oR-OsY;*e-%9Le(MHX^CW~_(_z4sRc)%;xDk!mk zlAD^Nc69S!gh%C>B659KQ1Q~$j<+GO=TEK|z1Op)Hy9*6D`cee%Ez$0hvD*#X1Ex4 z`4G0WOU|ievJq%)82Lh`bdh3Sg`1j|RSY$RzqoOeE<77K4+wiD-reb{ux60^Jn_8R zAcd*8EasYuBcXI*W2rmX3=Un%gFb`zhKy9XHr9ekLSNS&8IBRc^q)r9D$I zGm>xSVXlp&iqWq(-vzg3z12|MBb#o?L&8~&X4WXRW!C=*tf4;*knw6eB9iZS`7zP3!oraNo(78LJ-EJ`lXJ3phn zKzNJFKQ*fG7VkP8#49W2lkXjZgahLIoGs9^!4b%9TN^j{zk_Bo=|TQ8XHc))9!Tud zQFhwYLE0Q&2s6Y?pm-RPnl8d;?eCSu*c8ulnlEp9bO~;$RvjpZL5f)wMu=<8;k3Y5uDBi#p-Dji!g=rW$=V#n)uFF%Go1@C_@)zD0 zO3#GxoE(;5%PGg>1$`M^o?Rn@G`W-?A6|4N01F?JM7l8+)BfW}|DD8Il-Z{U}Mg-o8GE-znSiVDZb4%uYuYwG{B z<{VSQgR$40d2F|NyxcfB3urA>{0GV}A4rHp=a2?Cf9H4+ay3^=e#4b=R?4F$i6u{l z;JP}-nn^*k#qu;G=oT;%DIP_&RuroXm9x~j^-27pp#VMC=|_)`1&^`SG;*~4hlkZ| zHMT>kA#rr9jcNlx&vp1l{`edf;~P1Ini0^mztjqOl+AC4`3L!Z|BAW+{Py<$kD{CJ zZ&f$nU(0U3?V}=x3=Q%1rDx(t4yS_KkN5u#PV3O`zkmHLfxjj2w*>x{z~2)1Un+qe zcILk~z({cY=SNza{2zOy<%eti)w9y0EI&CP0L_Lhh^df<*K1ry%8$7y+mdsq_7va5 z)d$M|%tmJrX^y}DkKf9npO&lh*BAQvttY7bNAZ)2M>n2h zj4J>0t6fR+qV6o>IP|#UsEId_#GO#g-h@YYStv$j8%TpqrBvLk_yffwfZ|4o!xTnk zmdbO>`x6Ius3bO4v9p?k;<6`BW7uWJLVoskb4lD2aS<9u`LSGIX_g$_{j69PGl0_^ zkj4rlS6rcU!b);~yUCs5?E8v*_r4gW;&RGArQ(|?PNp0pRZ_lfqHVZN}|eJrT54Jm$q6?BWZOcy6KcSjAUR zO@;XRX?%>G2gRYL#Dm-s#8tzQPQDb^C$pR9vsGS2oL3hlE>2hxOTq&#AU_RAk|x7+sP`t@Lf7O-Z$ob zy7oijzKKuS2;r^DaN@}@d0kn4a+57|UbYxtt?9`Xe{{6vcGzk78LfY=Ci9Okphog1 zaZ9Q8T-zAoN<^Uas=kzT^S$C6IOR7;d_S9e{aXodbtMV3io-9EVf@zRxRUxsP@lEL zsnTOqzDsfb<3uspdI0O-U|+(;8ufXaU9;Y6x#mGUDer*#dHE)Iqf!LAofFY?}>ol~uN^ zB>umvu-0D=R7b;3oAL>JbUE=_NVz{#oN@QfaYEY|IO#D{@~+`zi^Nl*uFrnWFnvwZ;P!j=4_o=QW`}Q)RI@JzT9I;xX4i4)Tju6*34yfh@i`WYoYf+1G z^F@McM5<;-T(%x3E}K&wMG)t})O8H|t`Q64YeTn7i87~62$XGKOS`%9bL{G}Pw|Xe z#goo-`N#<0MBzIVNt_K3*MwAW5VWS)vw@o=nW>s2o_#+@TW0b)E#V$k^q!7Gtd>K^ z!WeASAX8Fp4b}Q9zJqFbD)$rW9t)%cSM@;Rk#S1!OYNyv!=%TKiDG(TMNaktR4<~n z^Wpb*HzTg3t%mqvVLZM(f8aA&Dvspa)*6hs2SL0Kb8v1WNY}W_&P90a)<>jzAn4B+ zk4;`!tNI2f+r(a{(&6#Nqf{$36U5JIi33tPr8sv{6nlkHZ3h(hcdG9pBn}td%e!z@ zYkJeq1|K#ZFL!jg3dCy?H<+UEo)Nc9wU`f}ZC-`N7;4$;xV4IJfdvH#R43@o_oTik z!B6}+3l(-#jYfXQsBS#(;Zvac10$KqeW78}Gx-A;&zTLxm8<$G(_Geth_l^<;(1BW zw(b&lc?h%;-U zYKlnwI`5wot@MlPYD2mH#Uxc{g^Tq(Dc7FOXl=CBdUWSh7eK0wNU8&)MNv6LHL&{3Z#by7TSGdwX8;>~{U~a{qk#q;ueP~>uaJ+ikI;`HhQ|dli;wW;cjwAf1 ze+H^S393Ix;%NBx5jVvR<3^I|W}tXTWjCci8%f3Q)0!~lH%6s8mGH1523lg+$#AHm=`3Nv(yPImA&Yem~QPnt}W6g@yC$ zB5~EKMvN~j8-d-B7eF>4sO|=JDm8@ncjhv(O^_7ig{wdho@}27WsUctE+nuqZ*}oe z=?T2BhpsFv_Jm0dN1)}@@8Kn^dP1cOSA;_K5GoOV28R zLj|^cr%@G@wp&ELkGVWOu^L2uS_dL53-4IJ(MDgp3cL4i$LFbTvW`_5S?SI*WpjA+{czZwXT@nO%v&kWBQ;~;C!jC{ONu#d=@IMf2mjlfS276w`!rS*TVfuRT_E-Zm+zfDQg)C$> z<9NBNm7yb6gi1Y=UBe9P;HtF8nEPxRrmnN(2L^3`;H$OSpjnUD*hMXH=$&t(XqTPT zue%Jwrfh}POD~Az$VRBUc`c+Jz6LZO9{YZteDrb+SkT@HTbTtTx86i}s>*vJm3>%!gi+nsdG4m7ueR z!II<4Abn6RNqUH>%NkKz4-}Oi7vSlozVLb#Z3}QDS>`?~BgIQAcCy7D=s&f*Ah}@p zLS25PK8xgVlpr+!f`LO?Rp;*!(TT|bAl*UnK4lE5AhQ7Ct!_UEG`Fp1V zadA%~GiZNHc;;Tgnq`mSiDYwmv_lgf_u?)N?t2ghyXvCt=*uX@N8J44G0A%#oTb)2 zG)CMJQi$(yC&oN)Aoi8fVfPbE;jm$I{?l`bhfcX-qcLUV8n5fDOi=}#SZNzxSlxsx zosBrKkv=z)!yZ4`U7`4X%W*3|sS2E|s}%lf_u2+eCb_-4r|9>|wOl znzJrzm`{_9jK&B_Q_Zy72Y$pOyDySl`>++)0%*&jSuFcjU7qo28$R@m71#RM@zbR$ zajUd5aG}a2wAnO~?K!E3&a^GYu*ab}t0tPrVLnsgSieNvf5wB+dGKICcuv71b2%^7 zMP9min5AFcgdf~1ORI@rAnivI6cHRhOh++8Vyu7~M7nd@tRhwnwdm=W25~oT|jbllA$> z=Wal2CoGPTI;uOVYDwRvAK;a7U0|PV0N|LB{AVvbQH>r>jbbZMpcZ>|1n=4q@INwPl?;?^uJ7V@NWGsUg>3k)adzh(C_~Le9ZGw?(W^ z)?hJi^-Ad3@DcMU+Y?ee@8yg?aY8$DWqYVuwlkW2nvZv;+ClT}@1TaSgRH#pE%X2Q z3oN~mg!l5+z>_nVaB|CQ_`GHv-lf$qu;=!5yilb#RyH(&PHFw<#RG5gq&Yp*>spHblebs9oAn2Q1${n=Q20i zex>8J9!&j=a9o`ycSAkQ|9T3Z*IY|aMD4++gLWd>CR^Gq9UiQ_1eZ?u;?u%)LOPoB zZQ2gJTvr!()2$A_k-i29*C0)dz_YE&^L4AUT}eNAr)g25;pWYPutqzuxCyj9UJhO_ z%wP&DTnncN(p_jU&=0$GzQY`{E|a}l;g>@*;C&z zSL;OfS#qr|od+Y?zZiOFGUhF*2gXZEaq>q%G82TYNNa+IA0H?`3GF^D*KBK@1BPLx z_}dGMG%g>XWABX7f;GJYUvgF=;i}g6b{BCh{08>zQb|7Cp9+NcEF`r7gz^(={lKs8 zR(31DIb5jGN<)4_7%xdcmm8a5Qk?|oerqoKl=c}L&+s2+5|o z)-z11^OL5|ho-xxh-LaqaBJ2pAX&00+s?Cfo6>yD$gq zotuqAqF=(IuZNI)FZLby2p^4HgoQog>B;UggiQl+t#1c~*>EH4lOVi=XtY50Zy_a^ zvempIUa@Mx)jYhf>xjGd1IcCv;QcWhfv|!d+1(2#1XkvyE}h0DyHAQS-(Hfx9jJL5 z@EIzP-39(1M}v$1YR$qs3DEFlBv9;tdtYy6W2>}BvUwo;z};?hG_*c+ybBz3NYr}P zs4dA4^KZlL`I^qJa!4mdS=(fV)g^0@V4ehJ=Q=Wl;r++2LH(8MVSdxcKz=~^K-{;W zP(*#QQ+`+bX<7wn2<1T8<*h5zvB?H2dP%{XDL<_-TZm*AVry2kieKdY*Ugc>V-$Bl z=95*dmEls&?n}|IrqvWApH6=B3+!*MBYD9zG(BF5#irfW{!(#14q9*ypG|lp+~0l` z-A=THULV?uk@f9yOxbJj%ETUQ?DRnROFS0vTI*z=gXEiq^8Xcdfs?G+hx-Fv6~=z? zieQILYC<#PJZN)ZHP$xR%_v?0(}3>6ajKq->^BCx-mM3hXL>4pWJfmA))QY(X~)*s zL^{7;;WDQ8+6P95TO;`#YW;Uu96FUlvBhIS_63vMwdV%y2WctJ;&YQuD*ujEc5fqH z>4(d46{Fa(1cPa;5b)BFS`^0drk*`umwhi>yz!p4zm5ebAI6l=@Z1xn?yaGiP&;l@ zSxI;Y$GR<*tfr3A1*UY$!1E|PdzMP^XkA|B##-$Et|2yA*;vM=`QymUozOXR16)~A zllQDcTh0V+5;ro+D|rZtgZRhy&OkP*2{7(TYgZdoY+1G9b5#2C^~p}5u9skL08Z9t z1>u)C+xZjdB}9OZbtgf-km9s5NOQm@u9I-NQ@+w?@v`UM9EFK$4Lz!8_^GxlkbD}W zI1V>jt;Q}}=d!o`QsCHyikxH*)AK5;?}6e4_%tmAvjeR-VMNZ-3kE#gqyk=hP?|q% zuTM5Q1$@AiKRMGIrdiXrDvxI4nw;5iXX-jF;W|*<#nv@0Bg*w!1{XIi6>xC3wzWwj zHtp+**Y%EQH}|ndEFHrJY~DljYcJOK-!AHFvqjs0D>%R?p8VqjrgWa}A^V#S7ws#K zCOyaklN19^F}zf`P$8AJ`)N4^1*9)p{@4$!pCmCA z(^K52X}v0hg>USy@JJYjCCCYnrlK0hZ&lF$S9Qw2DwYO@Q&%q=@8H;2s+E3kv2H^h zLWbD*QH^zIte;;=w=ahuz1dZ#j*=!{9lQ0RSK#TGl3FVrWfv7==Ri%pMh%UQiY#eW zWasA5*4y2Wj-)p|>w^x^cdxJk5?4j=QYj30x;k3`~uOBqO{-;eu@JPR3KQz%ab7|VdnZ63}r^a3X zG$haN-8yyuPYvR?Bh?6g^i-nTM@L1)YSdr9Hau(d>(83BXwy{rucQ?|jV?SY z&_6shDkfIbylD$p=SKh0{k%GQ_x9-J*RE}Q_m15<{Acg^=d=Dx_wCxZm!EgX_Ff%( z{o9-UeyF-bjB0li6C6k#mHufm-!JIr-jOy5`8PWI`=RQhV`)j8zF*WSEO@L_XmE6} zox?wF8qoMh|No0RdKdqfmVEvm_TLitTLOQQz`j}*zgIzLJN=JVK^u>)atJN2b&}Aj zK7U!T5s&NF=4snY!Pg2_Lh-Ue1YN~zYaMd8bvM#;w+Hj zK29;b%CGp(cTBk`Y7E3xNID+2rY}L_QIO&rc6#Xz*uT9T`kWk%#AERjwSzD_VhWCV z8&5g;X55~?87cPUQjCK-^G$dY=Q$L!o0o8dl+(hb6%{ldi?#^jjnHq`ENt37gts_+ z3@HACYkk%U%AqLFU5K~3Yy`zsP)@0#I8`K>jumlz%p`G#Lh(?P>nUys8@)E+dy4a6 z`{@NOTZT?5$!E-+9Pnd|fEyXJSnmq+Frc)*ywWmU-n%p&h({3h^V3D%k}RJ6$XHTN zBh#ZlQ2v(yrzbAew&`Hbz5A3W-r=E`7=K<~w6oLjH=QBH)kxZBJjdg4Tj2JH-ng;O zOn%GTlv7*^qjIM5yqZhp=ge;My;Gl(dndNuhOB8nnSCo0+Gw`m`EiDlcnDeiu{`m+ zCUWtr56t^|oZJx-NU>vM-d=w?o^m%-IRJjiv61s@nn#bV=NP0xm* zu;hS?RI;z{{SGOglFmW9af+5niW?i*GszLAj-*7#xYm z1Cv#^zUdRXLF&bk@K2N!%pj?1IIUEiX`rAv&L7_}h3fbNPoSv74#DAcXD1d_a`>t<} z(-uwJyd-f-CF^At-jY+!fyCpf^)7Cj>z63Z`QA z%QQy!#gEUA0P(c6Jy&blQQruCeA}iXp zPE+t`A$B{Fhy8UH3DPmBmD?S9&R>e2o8qMB>V;@n`V8VnJznmNJ;~=MBwS#ca$6Lp zK<&M$EB)OP!0%NE7ZdgE!N669hfBU6BkWs38m<5I?5d>AO0eGPp>J7 zyHo2%xhXYTD1BEDZ=v`p-sp9@ShCw4h-(JLD-jl(`SWk|Ue((c6>wAoW6s8%CY&7e=#9iW;PaZ1*5LjU#hrH>8Crj9&5s-yB* z#HsFQwzrZ={w-)6A##`fMI??#66cHQg=R>c0&X5$hQ~b^BNOxMaN^nE1rO%ot6n0l zDeN6%%Y#H{3I3BmVb?$0pqi7PR5(^HbR@g7Vg;7n{!HZGnF(`B57Q8btZt07)iS{xb4h@(OB z@j&yJFSf)>WfS@vDr22W){=OglDdrIw20p?sRt2HpfC{jEePC4xPiJ&EYbJUU{G8> z-6!YxrySD%AV&C3+@$2;$hWL+#`2 z#Jo5pELNDs6*oe42gnXwf^PR+6}B?smrJ-VRYy?qf#T~3v#4fRh^>7kf>^%6K68Dj!1Pc;=FU&qp+&{tuF_y)KVR-23F9;9Hob;wsl#)&qDb2HUnO)T}0a;w1%JFXO(cM z#21o(h!I7u8Q^Fd0-q+<0o&1iRs4fVI@DHWgOwmIlqHSdq%eYiIIFM5i>gLNd=%9l zcWHtLS#XM@a#Ssn>;`*%$P={gjQk7^98(FhYBWQ|>CyO5@v#>422+yh2hvXyPI40M zEeC@`vu3cM6M)&zj(l12Y?4PLSfBxPiZO>ZE>@D_Bp@!FwG92L9ros&pcqNTn^Y&v z(=K=FKy{-1Kz<%(7p(`X3&5wP50E%PEOOpiQj^|%-2|w1L--v=dg0Bxb>D;CF4pI} zsUb{N%ga;`jAz6*N{h3D!1~)DLH<;zF*KjstR%L3k4-`G+p5N(7imU#I+Ib%g;r_Z zHO(zH0M#woMk`yYi<$y|bBtn!b3nW;`Z-%5&5gU=&jDILc{azKDSnZ#j43=@(!qh> z%HKnA*eE1Bpto|XbLCUp{oG8WY?ZK1OWYnM4UsBwK-a^`p!ey%_I0^L)@|DgSnfBR z{=5|3xBLuEPrSvEGq#}Z&1B5*@5Wyny+yO)Bdp1(a>C^4M&_FTN%YU`3QtY+xoq=7 zlQ=FDPCK{ZTf4QDGe#}}*Tbt>OmZ+g?s5`!zFOu?9orm}W5VgFjV_|hFYiTP!l47L zZ6JQ4hUa%OLKSNr$xBP$Ddke5Cm#=Lc5EQ`zyEiD( zC?@P#V|St0iXtVTl(4Y_MX?1%vAeq!_N=kHy91Bi-SuCyK}3(|{ndN@-|ze0<8_Y0 z-t){evu4e`*1Ffki2gnFnj3M9o{@uwMWEfKGU&A~j(;(#D6iU1g|g{%t>miu`t7w7 z;ZCu2Smj75J}$ZioOiJ27Ow}Q-Nn9GN0z{~t!nUjzP0&h5vru5>&fMhOp0L8(y&2;6=O3V#EMD{xp9p_-tH8%;|mu>d4`8p05L5 ztT0Ua&$_LR9n+B8Unsyw_Unt6%P*q-pMq9v9r_&Rq@$#*57^O^EuO)D>mOf0}%PmjdFnXcUFY(ZGs zAq0CRPf=rn34JeOWMUGUd~O4etdGIqVKw=){N}vf^1fL0h^ZVOT@5!i<+4or39!AQ zL-%8owRekN6#9B$FjkkWH~rXvAF2EVL#Hm(4j8cr_j%l7gX2y>vrR`?o|oa^J1>=f zE`>7#uEM&Oz3G~29o0Efu4#2bEb5YnO%0tW+OEvYgJ$I8x!+nz>Kp3o7lb1BFQDI? zm4b9IE#LEL>_GKSY-Zpr922_{MZG*MF~X0=KL+|GxZ|^Yek|9!Vsc}%`gqBoKAbuD*6^@G8BzNv z1gNhc$#!vTIidGjxL{9tq@!)1+x%sa&~F;Edh!P}+U6m{C(VT^JqwFlC6?eh$09QK zo1O;!q<*5so3Ti3kwG&mu-e;O!zq^-x~{vKEbz27(8V!K>3i`z)@b@^1Qfq(EIsx; z)E}sR3A|Uwi~4#qT90Fe-m7T`VBI-T^j-+bW)&W+ZUqG&orSfnwn5ayQ(|i9cG%dw zB0JWo%Z8|s7UC%xQjMs9Aa97;oSV~B`ke&B5L;@VU4z#%h`U%VP@ba92jrP)9PO# zd6nndz0J7hdL3G8QMnFArmSj*;U+Cc- z!my3det9FD655`w`Y9t8_|#MHV8aI6a{3wW74f8bG#br5EX9dYwbZy8^ksfGPkf)# zN+w0PBjJI3o_9A!O|&uS{zuasG9+aZ8h@z^HFre8^L)byixzn9;*){o&o9`U6SfxN zt=6ufah{4;=Q_*#q9uE5;gt@w})*FL(%E% zD%jFwD|>A*mBu52bg2gEMh?QXDcW%{<4LbwB*}tTIu>j02eCM=LSYQqc9(b=EMo1I-UJeyaqh>lUq%bV)nU zH;FwgRFEz0aG$Z=;fyexr8StTwY&I^WKkM*V@s1=N+G-*B|eyb!fP5Yl23a~iYU%5 zRA?gpC`H$(xBAACA~qQG@|sNrR^vcp!k(c}>XxaT5u|5#i#q6M1x%qnjVB#Tpn6A& z=y7dHS7%|&*gK-n=tMnXmmoZX9X0)++?7JgrfFYU#A5fkGYF@v^IplT^<#8bpym2e zG>2L<%U3Qk-;12w_UbKG?NCjiIf$ko*XY-`v?AGj!b{~D)HqO#pK%HTp9S4;ME|?2 z^%`$#%W`(s@h#g=2Szs9`hhTGE)=`F0TcQaC0v@r2>Y@BNNeG8x>_395g_d4JNZjk z+A$GbPPgE@_)3z&32~^}SWZ~YKIU-Y!PAU@>@ZC0aS6{jFJ^;=Pi17wSn#xiO3xI| zDP3TnOv1^&jiPrQz~E`qMUyQn_4_??k)BV2_yOnWy_2!es1S5IX96<$Jm;`OU+MTwEc|e! zxUMM+gd2u-=lD!MaKSB&=>W0tXhwDj&N!FnDZ!1A?WXmK=_iE4`84WxJC@L|B9e{LC-<5SS8WT+ zM%z+J-+L*Hgvv+H!1c0~;C_)Y&~wTxed{%+$qu%IE(^Z^*(tDkItGHK2ZQOySh=a` zIaHWJHptWMWG!vJ=f2o;N;63A8B3U$%8t4Z!PwCq80ns#d?mfI;iNAzp>Id!b3p8v z{ortZj3{+$1Q3?sIe=V|Welas^Bku7kRc9-tL_FAoAdJjj^ zf+ZBP@pH?TZ_5fX1BqmV(DB`H~+~N9nZO4U1THx(bfu#k$XV zDVDWwLb4tQ_X{6pE88w&V|A<82UE)5ziTWzFLs8s1{=|Tb{n+0rj-NZk0N0^D0%Gj z2CDhz`LrXT7Y-(GwRUBx% zk>;Ux_&^=`pp$UKfV|TBaWW&k!~)L>5Rsa!Z+Hs)ow{TH1{^ay3_pe|6E8+Klbiq-8^|Y{hy+Mu+?9==S$)^)~$enS;HZgI`R5 zx)Q`OM&qina|ly)sdr`mo_S%9BP~7n@oMT#xF1~%78)Is)w7JHUJ7XkF6OH6ztdvSG5SGJlBQVH>k2n_qV!6dB48K3?;FQoU=g-32AA$!Na zc$t#p53ytkEn8_?P7p(PSJ9nozqYQ8j&5ZN|K7g8e&ip&LyaL_N9Gq8_`SC50?AhM zp9}udyliC+3qUd+$kc(LXrBn5h_J}4ZTSuvyYuP(Ib8_r_bCzb5i4|3~}(b38Vp|Nj2-w*>x{!2iP%NX=dR$GU(C zga1d@1yoj?QR_9f&~a&QPQHx1WH*`o=k9Q`w1v2)8LHwS(RuL|Mm&q+AJd4JNgFz} zl1%PZRRpJWf@+7(3)`!+__l@*6c<9iP<8ILZoRO6GF%X+B#3vw`-Ll0?B}i}e+sT? zz7h9hEYCXbM~cmei{r}o3+)Ekmc&@3;^U{vHAFIoW zS73>eqb2chAcovo1#BOsL&krQaNDN&YZj+_|*8UHq>8 zqMZ}PqBhLt+G$wpl};R6D?ZCVoc!i0@{Rd6#pmKY-{nAYzN8pLQk=%S&vlpNYjaVr zJjtu9RK6kctyH&@bU8f-iEAZ4au}R+%gw7Cjuqp3cjF~)eP$b*$1~!KDE2;2Jemiz zU2&IUfhFVPB$PPfe#**k9_xf6yuojJH;AdxA}=s;`Sr7zmP=oKS^;;s9e*! zg0y&jgw@w*95 za+2CjW!6&6--%x?ZwdLHuOpt@R#2=!u~1#bLu;FFTm!_jB8@q5S=*8LKKU+J92a#5 z#tpHOr(8=&iaXhUk5P(4CZ2HzaUc!3^6?jU9!cZh2iq?{z*MZ{KU-kXjHRGr zjkR9g`5tWpI8tQ_!fr0xtlCQ{?5pskfIS}{y+v_Su-CIa>GNjLjWr|AXfMs*g-~n9 zPNdjU@jE;z!dS&0`X>cy@g`d)6Ni?n<^|;iwDP@KPg(NTX2sJIFVT!|Ym}s7cJQAS zNU`yBAdFCYjBQu+0Gj`TPKPE=q#=J~-Gbs$JJQ$P#0_kvxV|Luu2bPa4Z7eVZ(Y)< z2tG#F1r>L9+NB`eD6@jvw48DXg+$SN_eIC0o9(XeT@HvJMEw48QENv5KDtkCNo^(W z`I4S=hgUvY4k{gY=ik20r#5c#B)&p%qijjX3&fwfOUez%6BQj~Vx)&0JZvKI{_|ls z+sqoI?PnCH6UHrt{Wabb7d)S-+`x)JDi8Z0| zdSl>~NVoBk^n=zMF!$CGNRTPdr>sSl_~%DPEe!nIEjChc1i86VJH_Td!FtMBNrh?IM0HK+sqa z<`3X1URK;Qara8!c&8c5T88_Hlmbl%EIHPc( z8@mO|qpp}DE?MEHs&#=glr>jMK39iHss5m(TTSz zKBsb=@-zHh&J~7nOzu_6fPWDmc|DtCy|Rd1qLTwD@(;!5U;D|lC*l7TdQ=h_xKnwBXA&{cw!>E&VOd$n(NT{ zx5^$6Mo})Sfu49LuJk)}s;wFez48$#r-PA+4xI97^v((*xtA%@{FhrBufwoOUy(Rz zM)@S{H}bOLZCTrucEo+TaN-*YQyc{4LFu4KI!)l&a;^XDMbLPwJG?QUN1R#}sqCBb zEAAGXM)>X_N!FbBGnG3)r3=YD_tBg%r}5c?WWxltm2B<@;;Ks;xSgRxdh5%i&r|$2 z^IA8Z_&X~}_{Dq{Zefa_{9?2Y%UzkGCvJ}NF|Ebw)-{Qv^CSD*Lgiw_nAj4;<>a9E zyn$C1u8KQil=~8t@57UBHe?fA$+n-MXJ%-Zx8J}h7el$URa&!;g@O2PmJ(8fcta0f zPoSuNpdaCMNj|D?63hK&AtQSXgeQ{liE@TR6&FdlCmUrO)Z8E*Yc+A54GiTh-dKS1 znemM5ipuj4PdS(LQ@~@Z>rB}VvPtYko-=T#cp2ieqEO{>$X8&*vk{j)2Pt=lWY3T= zn3uh=9yHfiuyN5}v~{r{^yHYZ*?ZI$;m@h+z$R=C&*?iMR*$aRg5 zJ**{}QLarxw%(qvZXLlW*F-pepKSXBw!FQ&o;XF^?@^X=iYGzkqbM(ywnw{z0ub6QBJS?eIW`YE`d;~{)L zJR1IJn^RikTEKR1-ipb?cZfOfUO?qFAMtJnx;Cf(J`DWm!CN*plf9?WO5QGxkUDBH zq|8YWpF&ch+QD7ovZF0;)AAhFZq$}Tc*5qo~7`$X2$GF;l7JtT6rD2Vgc-`58B zO2juEOhxNXmN@eEdFI?EKL!^zqLF=vt*7=(+qd<$xK_i8B{`Wujwz*N**q}F$3 znUhmKD&x*qPN@ecpC8xP4Js)1SnS8G;jgu~Ru<+D4=xZer-+=SJBf92?14O+YRQ}_ zhefYq`&jo!8(C1-`K(B_!(d+b0nC`U8OP2Wh@Qi};Pi4g88*;``#zinxfa>-bs@u; z#{a5tZF~n|(m9ybtPQ?vei^=9$|qNo)pJi{`g6t2WQgx^HZEUzY+`c)9$P<$p1Z3_ zDv!4N_UKPOZ^DkzqYfK6qXx~E?)aoEw6%T`FiKDRVgAx4rjO94`+Z?bPH(5LSTWNSYd>wObyOcGb zyo7zQnvAvQcj3BE=8)tx97}!KPv=6}uwyq5!ulnBWz`-pv?rHMqxN=%h9MWxVxt2; z^HqY$Re;UA&Ow0zc4Rf)X+w6E!TjZm;F||8;r+q~Fv)p_z9!ef>v`p6TbY|zGWNlT zJzA5lTk$*XHv@Y)QP{`bhqTcQ>NXz$*wR8K#dvD_TUOBK-Q1q^Ck~<>50^FD=jGRL ztpo4(t=Sl(Eo|((PplW6nlRAlGn&-QD=U{AFLFGX0$+Rf;EQZ_VB{Z>VJu3aDw3JBm`M{Ne{ z3iU$Vp5Rro~)0m{grkyn*-|+-+dTtL7 z3e@GRTWGOK{5-sEv;=ccf6rE%#^bsTsd(7In^$wP<}L1TR`XAgyfNZ>G9JD$6Ii2B zFuS8O+vB^P5e7iFDS24o$JU^9h~%lA)$9zOm~c;YJepsoRd|HqqfNQPgq`^Kd=i}c zQbCRjm@O*zE(voxU&197-LUFe6WPAddVR5v#?pVJau|~O+zVTa=20_v3 z?)YXtL*^EN)nX0-pX(}j*6#})de$NxXegqe6qg$|o)BrZXw}J!wMu_P{-WE3n(Kr2 zZ4#u5vU;42IPZ@l*W*jjJG~B{Wl~Dkx2g>HOT}Z6YE3aQdZCydltb)k^M!4@T1q}o zDkDp@c3=v}oD-jVP6~d{c7Cdbm5i@4%9ryH-bsHYr-~zikehl`qD-A8@ z7lOcg&+(b-HuPI$E&FvZ!}+~HwA>Mg#^t+WFF!gvH)kDwes3PS=Bf}pEL}pox9D7O zUOq};j;arHrZj~vZ&(BAjy)H^NvZ8-s!h$n!yIpCJA0`3e9&f*WK1@D*L*#1dgvDD; z5;L136q!~64^}7-N9&p(%_+jN{jjU`33a8Pq0Pl^-X~0I01Gt^ps%t=obsNh{b;>H zR4w37IMW&ZKP=FecW~w>CIsW&qGfp5JjcYk5M#Nwdpps+>O(PPe^W@luuWUHKuJ*Z zq0#WsK)T1)bhhSe*W0Ag7~!HFPg&YETH#T=Fm^gtK{l{HB+3mgCkc;XZ&(VNRtb;+ zPr6IO2ApyK5pM0j1@(hIGSx3N9(D4Y!rgpRQg>~dr&stkdd@K*j1dZRXsofcMOjgd zq9no!!X+;-PH@GVuR(k0bX~~XYo5M}{xtSZ-^EBraKIij9Mz~M&I{gvgG#u-)tD%_ z7}yi~`sRWHdwig7CvTYZt~Yin(ha{Jt(QR8^t}rp_ zTy8mb6=JLAn;@?GSpDsGgl`9WQ$MHjBV!i|!fBd^WpQ0jcN(v$jBFo1b{@ly*XRg7 z33J58o)z&(wUxpq^^s^-a0b*`JsU`#_}uL{UdVTabfr3%)9SE<7jAsW;DV6jS{rtu z#B9JtCOpt*3~PEfCvS8i4sJExhv_fo!o*U^u-|Ti7#zj;iPodVw7YbZo_R5d_ej-$ zz~bydrw{rY!{0Jl_Ye}+K(fnvq&C2?p}SDY!StcCBpqZOH}!#jUt8dVXlq<_aTHSf zfW}u}{akVBH?}`EJr<7nyT?Mzj8wKR=LYb-ei^F`9ShT&*m1IB@cd2@snu4L!=1Y` zkBJ48kDy;kXM;T*UXhnvwhbCzEUI5QWe<|AK*DAk+d_PJ4I3~?Hp3gwN3jakOQ7yq zBiZn<1Gm059zN$9s*Q833?;pH&>7TsFqC!!+@587!7W;B7Xbyi)>%9E$DLR3zqVoM!t-NNEDsmxm!!6 z8=SBo-<#@bF4Tj|LuP7U+;s)g6;b7Y6JIi7DO2O5e3-fgX2F_8O(1B-H%5L4_VKPL z$R@IGqnimDH#uQ{Ja*i9oP3XmSmnSKKwkZ(`RCqU!IXnKxOkmf=Qn#)JP z$9)OVJQd2Xy0@k?4m;QnlFHPP))n@mdCsw{(e``7xlJM_Ya(G&ul-P=`b2mK z(xCjA%J6Qjla}lYlFx^P4>;v^emZB!T07#_4zekoq-uLtyFgrd?ISEtUJY|i4?{$i zJQz}B8Y65Z{Vzi+;f6xXH{+4~GIq(q5+0XrO!N3U#~SHo)H9O9a^!RCfPL>6@5(@(R%Sa?&?c z^6%faD<~UKV&)CDxbP6z+P@lqK~^ZOLN7hF2gpCd1npfBK6(V!4N3+Nm)d004wLVh zAVTS6Dr!3?ADj{P>Eo(f;HMA|;rpxAq3-x68S>%nCgp0ZPt#1=>_5y#VY|H0d-_pnj<27F+6kj@@n1-P^N!JQ? z)~8c#zJ$Xwn?B61&Tc)`%g81H*-L$_$2UkxS__A7l;G4qNp_M2Exmx|A2xupg~w}L zgg0+C0bvvP)u~H9)?PSJytx76$S)Iac@oGjxXTJom&7Nz-Y{-mADGgeR;fUK5loFg zkK_-E_rioXzgHUhD?9no>=fFRKx*$$pm#B^x8+oQ%)W-Zq;XT2&jv-7M<-8Trf`$6 zPi`q!0aTwmk4&I3-AOCg-?NtUr@*aApGD7b&ec3G?C?@gzw1xWeqzA6RSRaNE)2ba zY~s|P|O zbZU{qPYZ4t4^CX9lX5NfdhYfSLRoLdN4L7 z$X6E@^P5NLJ-%(5w^0i{bhMy@j;RQX>>CvA;Hcp|^CPw5Afvr)y_>XZka+|_=7|A6 zn&4yG=GX6iY#lSt|2MNWqW}K>^S1>4mcZW<_*()$NnlHx5s~af!*Y<9frCx1_pZ^#Gi8Oe*?4B^i%Zf8+v9uV(YNPbwi3%%c;LdOOgaq!eCpm;z!)Xy#J z^&mg3Y-7(h>o-6?i@TuWQsPTtRNEBgM{&iU-3`ct#Lr@@1*^Da*GgP*3dicrfc4vx zgwgR9T=7%HCqs$P>xARX>BOtPVr{#45)UMVilaYmh$LPvpCHafE;w9_Q+&f!n~8sw zMA217!{`*7IBuixZMM#US6#&NWEaI7!ii@! zFn`gS+JhAq!`n3l;pXh6f;es(I~#b@VFX^31dg2(7cu_PN5GIK`;40?Wa@-Y& zA4J9d&NXc+i9eLYFJtnB8aVviNdrHx;&;+fig!OT;^K&hwnOsoS?6+Fnc`!Jci{(4 z7NR(1InB2QsQV)lMmAiAw^z9s;-;ZzZ1LQ-s!03>&WB*{w~Y7~Tw;4(PaJ_5F|iR` zELjC;9QbhObOS$p)yWgZ4L@%B4H(No)uHdHVrTs^Ji4L6shV~T&^H9UsN;`Li0#dTb9xfO2ONbhws ziQ{aC#0!WCy~ly#lL8j6F!18U8DhYbbg}&YVl}6Dg#8gvxsGL%r-EBMZjkX8O);_T z-UROCc>@j(+9W9VgTXsTVaaZBa=^Cw^5xvToG=KjE01KE{77>X?!3N5JX!ryD>yB!Sg>vzM12t2_&yu}o2UL$R}K0cqKF zJrGBOs$YtG8S%WRBu-Xty)qJK=cpn{PICVMGu$@dXd2}}qH`u4dl0@*I9 zIK86NH(>OW8Dfg-0TDT-q*U*qcOo<{BWZqf(oamD7zZ>S((b?uBVU*qI1|2 zJ+AbkQAyVst7 zg^@i|oGn(&TN>jWHyW^<@|r5A$O(VBvXd&$^gL-U5|_v4mz|_lTtKjQA5?h;;;}&G zzf|tVxnT{Q@p?6zYeg$+D2q(It)w;!#`Y^b=IaZN!F(1yV4M3?{hlJD_`S4}sy;)% zmHq0_HCPN-8HR1GhqF&z(&1I5&!W1sBQ`!#ixGY+o|;px29?~-bk8SA_CPqIr+gnH z+iu{*6t~y7P+x;>_qb&)9nSYv{Fzj|)1m9}*ulme2uFCc%lm|~^OPgd#t)0sM&5A3 z_hLAI`}VLP-is*=CObl0`#VPMfEs1*Bjqfy?cyl$x~U70-vLyopz#9Yh$Q82DerL@ zD377fL#ybBuL0kwq*W}Ste@~A>_{)B;S^X4z0cqzh1 zM!6(Gehd(|CkVqNpSuQ^_6q{#lXa^#MN2s^t}tBX4k#}RR(7rm11Z<~lAZjVUs4u< za^DRY*)hsjrby%R*Ff<+lqXX;GRm1J(0xIEVrjoSlyeK_G;g4AN<1UZOYy>z`bD{{ z*-*N>8w?%d#HnriSNHZJ@rHb0-m^gb8}X}8k+Ft)s>Ab(X1bp2B_~@4ia%GmW6DFL zCAqoL7CELEFOlcaPfqafe;MA<%z31h$uB#1LVIXz zqoP~JhWiIa+Y;+SXL9QNLW$p?4Ib(n--yhwA|iF!zSde~oU5tM@HCX~lC5l4B1a4# zkMtil$jmvui}5cnHC&HK_Z$X=(GDRx9WppNh|cD8BWfl3`*n$d{w|t!^t(mIRf>MP zAhkay>)XuVT{P-bsz>K%VWCbFCE~|dRpaa5-`6jIXsj4tU1YDI2nWO8zA?IJ$Bd>^ zzg3U2KK{`m+Qt+c9ieF%84+aYWajUxF>bwMgQEMp(RLKtN<^=4@cZ!wo>i426^M?} zIXL{uw&{U(W}nel8>I&74P9 z{PkTyVWiB4LGjh~j|x(3qiv_iSY51tkfv3ve^_Wth^8SagYAz&|2}yGBBP^dnVqJG zt*vd=jQ;+mSJ<8fnwEZ%njVp%8k(jtp|mSbqmJJ7i`GPHVnXQl(-_S_U8s&Wgwf7F z+ITlu6Xh4}M_9Xf}*1%HGb-Z+Ms}-SS@V={8QPdSANw$C8mrQZ}Sq34x@GxKh$iV*e zye2Y=fP`3D!=^?9t*#3Sj|w9!GVB?1(b#5;LT2ZEdyvrGR1LOjvmYJ*8%SFdxqYmz zhpPv%!?a&6&_Vq}RRjb%*bdAP<>0}zeJs0Be=4Hn5$$V`S%l6|lrYU9yObOqjcbjy zF>{_$?oW!6O_to&*2N&s>~G5YFe0cgZQ~3H3XBa43iMSNoAnhnHbQNUav~Wz`(u)3`_PRB zJc9K2H#Ha;84t4PYZNu6^l$A;HE3GTKc3q~jRlU(w_@j@jS#>AUUB{P#O5X8-ta z`(!k1gqNA~7~@|7H zqV?e-~UmZ~pV_}hTV?^`F;0!VSwrCf7Ro1?1wPArO()uk# z{nvi=e?y#UaC!cJh_sB$=OrZ0X>4JX=Xh?B>vGQ0IZDwl|11BD$Y0vjXmq*nA-_SH zDCAe6zk~YAMH8mHMqaJbFaD`_P=LC@!A~785<^ip{AihKm1ffi7vJoAKR)(E8|BCi{A?I*Y{^g z(NIY?>HN#W8#$zusnK}jXurPH0K>5TcC<3y^ZT)J%RVF-ZSf2Ai&Aj|*L2Ac2OWx{ z)Id>T^r|01ph(zoWR2lUnrwsqqf5Hz{y&N<1<}R$hQ_GqTNmR-KV%%YLaT*H#36n$ zbX-legD!?bn5^$?9W}(51!+{or;GVfb5Os4AUbfTf#Dy*(!Y4kua9N+&CM^0;#$(< zEHzh+v-J%PB%M~zPN!8>aQ)y zgo!LU7=Hg zwDK-G#)m2-?xMfNPjr*PL=!})FTclr>gQ~x*(KAC2m1dTWNb81I}tj=?L!7&rjGms zW$u3lXgWnIf;gm@42Y)4I))fCRZCEe8{Hsfz*(w>XsKw5i9-V;T{Mc3B}~tNbE0PH z+sIf$!3^xHM=~-@TM`73TJ~9>Y_AE343E?_Y2&3-U7Z|d5b}2`@MrK-gQlvdMk)SS zq4JOEmQ~!ge5A4nT{3I~m8V}apBzj|n%!d1mxH?wj_+2&)M!*4!`i_A?sc45YD1hx z)`?Yrdeg7VI4vxGEUf%57jb4)|D*grxrXyMPyUxnIDb>V)jzX>^XKPi9RB?UoZqGL z>+(!O@gK`K|GawB)-j<#aWYSKzcNV~&;7Hfq-Ax4X6QdWB<+{N>fEj0oROAQD(keb z3_E5xMXlk#bwpZLmD%;}U*gm3n-c>4`GmBrinE^wmc6X!06rW`U%>PMPntA4(;aoKGfU`%X z2^EXclnD6cW z?;qCrqo}HrQb@nK5m1HtA7+#S6SDwZS0x8{JDJMQI&(1~y*fVL_K8iE@3p-P&W6Mr zcbTr{Aoi`yScvn{!GOu%aB!cJXx6?q+OHW7cP~A_1FM?ydPZCE&FK~_J^vdlH0~2S zRONmqRbp`TEPr+rVqz7);+`#C&~bFun5- zY43XkKeR23Gkhj+D;*u-b7BWLy{X7oS)_}F^NNFJ#VZ_@X3xzZm)9p)ABCiCtI=j- zIXoLRSD&(R9K@H~BMz^PqCQ=KB@1hbCf6H5?NMdqtycx4xRRR(y(!1zP6v_f=~z`- z)El@gjOpYYR&VTHW}Mg?uXRqqjx9=aos+K&iD1I!os&E;Z4F%8 z5AO!_1Mkh&SgF_{X!p4mPYiv7&+IDjwo(0lPzU1%+F(co3vAW|lOfAIZ;e_fkrOHEnQoD<+ z+o8)M!lM#jx+4!KUB!h#-#pUq>9vPvwn0&Kt*~#l7L=ZxU0}|W_Y4R69#$1$O{Z6d4?qb^VTzdFyy&1Q7o`APi7vjciBT)7E!TeNMv34ptRVX34 z?B6VoUr1K%6~{}>(o=axa-(a^3h~;r7%$Yf8}41c7{!$_Og+cj&^1XpOR`>F_cGE? z?0c<%Ts7q>);?+{clElBgN3b!&&Hy{dXkw;eH@26lO@<|z$87*E7q=CA((vp8Mr#` z#6p)gs=6>?eP6uWaU9+XHIZ+(SK@ECodm zGFCfg7&EI|j`iNqNFJVf24|0YBHo{S1-0xBD~!+%zU70LOYavC#?Ru-kF~-ogZBuf zn>6RK$)_n0KVviY-gldHc{!eM|Bf|J+XU`C;uPlaz~mEXGxa=pA6y5ikBxYVc2T73 zrKB3;hME=lHYg8v>GuVCHL-_Nmpx&?>oZ!K`y&6nc(J{$4W>-3$>{y!{Lv7k`NPMX z4uoT|J7_!$a+0Yq8F-eho>NAO%;+8Ax!N#52 zFsYk4Hm|q@7j?GAv1JzGUaZ5`b>VW$y4q~R*|r$hxP$E5#zcDIC9yqZyV50nvtENR zZhK=$42>o1I)<}z=9jZ`CNkb;qF6d$Buf=Vc)m~bnMs=x()>gR=rYVz%)59PEmJCh zZhRFy6Z{k=99)ENe0=a(skiLx7CVt|%>(Q*Yz-dSHXj@0@L_kox@bw)8O;+EIqJiO zW@F)TVjV2K^ceG$EAXU=PRR)pM$5EyjWkf=#t>{?(j3g(67ZFvj zxPd#<2Ac8aB}Zd}2|fAVh9~h^&ovmFC)mSjZv$y%9SG$Y5Wc-z=}F@StN*YQkIgoz zxesPNuL;687?8ddUf$X(4tOtxC#&V&yy_UD0k& z>IbFk_lH}%m!iUab9WcdF~;qHbez|yKbh6@w*aNz4>q3@mQ}se_FkGOyec1I$6J`m zEu#|9$-g%Px`s{3w$`3lY<}#dSh%UWRC=K6R|K5a(={E}*WvOdK~SbtEi^m20aF{; z$>+1Ci7Gdyv14;Sp#Pve?9+N*ZG|sy3CoU>3`XjEd%a36<2fFct^8&z)f`~8)^${R z2Q<#SmR(cm^7LuifSwI-+~?!w3j@UVoIQoNOKPI_cO!?dPv4;CpwONZ%31U5#^U)tp#(Tf=SU z=453iSK_0VkWH_u7vCz|aY$I)0=v(lBWLcSXPAiYVV2x(}nY>rSkM|Kr` zC*+V`Ud3?y^J{p%?q&T$X(k9$1<4-FMmeGHX$urV)6+J$2!ll@FJxGz7uH(oQlXY-Fetkb-|P#J?d1_OM+lM`yw#XN>fA&6VJZ2r zqo1BNpd%Z}KQZXLceNK7S5+%V=`^yh*%3OtV;&@|e}_T2cj1QnFW}$@V}5qa5>UQH zl~8{ zmBlr_z$_0Gz(P;FK-tIx2aC$O4pH#7zoV@ECBM|oZ$yGLV1C$TuWha_8P3W{`g#Prh3UlrgvELAmRorDh9!8+Qbi|5js6ael3HPDpt- znOUFDgJgfjm~jEHaMM;)e$4h64wBl#?uI!?lBpoS5lU>U4`dIKbQwY-gxIAkgsFWJ zLHS#km$el~wrLbbi7j>;wU&IiAU_{_+o!?Cru(&I?O_6;tJJx6{OJx31FdtF+JeyO+g_BrkG z*7-exY!R0CS@IVf+$;TVr+QZI-6tX=-Jfk)(N9@=pNPz&nJcI=%NvrdZsC+va|@3R z(}mJ{Lt2*{PRy@PqgGb5`2OLa%j<&r{ZzCq{hsv}#eWd}oArBSjM}UHAJKK{aQS~s z(|s@X7yKM`<2wmQA!KGN-Tpmd&L`quVB~yk=}3FSN%sHX)`I^oGVaFbT+7g6uE*E3V9kR$Bg(G~Azx{&k%hWBHfFTh=gUySCt$W~h4r0wV(q*#O%% zI?B?x`}kxfYqGL6KHfpZA=2vA7$2W(5{T;megD6Wk(tf^%B26_o&H+_e@ozR3H-GL zwzQ=+QdP`{fJ!`;=hTA*KGfWN1I4flXd$eP-v7^E=dmk^Ay;@6)^V^#@Mj z59|)&vO@dxmurv0C!@;o8E@&{wf?re=_n^2SGyzjZX3u4$LtZFsb<{eekz;NZyey6 zi=xz}huS`;d&n8jF4HdXE83uYC1B%)HoP?5-B%)HDX+FGK(5_l!}_(J#3I_|k=sgj z=T|27mL`iviNsgu#FxbF*m~a0jYX`H@(E zU?J&Qt`;`RzX@M+9lo)2m+$9!v4l1YOS64tLUGv2BA?b{CK;9cT0n3&x zE8kfG4jki)?|XD&clJESD^nNC51-1)$XoLu>R1l$dxh@Kyn9U4sGX0`iWn(p4vxT6 zNB)3Xq? zr#ta7+<7P*Y&jYZIIqPfA5zfh(`x&C+nMt9m_PhDQqU(7+Fxe zc;f>W>}w4v&xiAi2lMk>osFbv>Oi=bw-itES_=24ZKkm-AU76hDz!PE!;ysZV(R`_ z2w5{of4)^QL;sFmc?FfM%6R5@zZgAys&V5uS9u_?JfnAUAacdZ>on{x7NpI;q^R80 zF`o>1vIH6pn+MMOuESFILVQNW5#njjvpC~fXI$L>m71IK>7u40xWa6nHp_x-mjH`v z55{w^8%h7mSE1*t^>FCwEV#Ql9z7o(gq;yi(5G1fJT(6RG-n~-lRo_Mhx~kC(qtKR zEFQ+(t0mO)yKg*&@HxGp3kB*YE%WfrrOoBB8uj_2N4_}hcrVyiuAt0g(NJzRN<*5< z;JLw@Kdkc%E=M;7&B;7?@MR4gaw1u53JMmTs=NUiGLL=BRUP+E%P(6!OY*EX`U!Tt zW5LIrDknDu-GhO<&p|_%;o_U;2N*YL0KPP<05s?HG>(7`8o$yePU zk5yWgg`*`)ORujVNay!M_0pTQb)X=#8)e3iAGN^7fvuo=`<2?m?w;~V%QcX)Z9L4Y z8VuTo#ewu%-=WMf_PV}3C_Qf+coGMMduUzjj}c`iS#lSfb>j2Es*)Z1pxq!=)1@b2 z@<>8^AbsV<3+Cp#CYfU8PsY%sa$c_R@A}y#VCCfv*3qlM=w)%<#?4yZ@^*mezT1H? zROa;!z^7MtLht=2F)m+WNpc~*dnHD3Gf;E-;eb18O!$gQVUTv#NG_whA)36rg*n_y z%As+?kaUpK&z`m3UROA!KOLV#CfwZ2MsDxS9rh;x;jWf27$#nDJ6W#=BD<*z4hlcvXyj^%Qc8n>*Z!c@W!_ME-A1MC`3L4c$In!T; z&v_)24JeZHh$xjl2amKZDAoM9;^QW3$@`*Z-x=6tV_7-%*m8VPbGBBE9pSRDpZx*i z3u)w)spZK&)D%;{^-_2t6G}L9-n=|CNqZvlzIK!}&X}n8<*ScKT(PgR)Xkg@Gbv(#O$^u|wr#*R-Oq`6N!#GTUb}MgapeR_whSxpw&dvzdcxG4W#vhJLQMB-B-V5~g>T))F=bE4 z_TY(iOzt^JcN{#@vl&|hd7oxEWzKzR=y7}j&AY~;W=Jzm_6cUv-8y&6a=eyzwm50p zNp>RAYLsbyX&2`WG>@g;aW2@q*Tx|!rTGD8H_YJ_qUz!g^b;X*^lW9H_@wAK4%?IP z$d04zINi(raZDA_P(KwvyngIiuvdR1yo0_oqF9Gkdx7v$*p_(*Vb`XBlHr3*S77ea zGZ5Fv5^9flDQFJSNzMgi4@d=*e0AjWwyF4dXK_B+XbPR)V#?jRSJJkPuP8QNPY~;S zB(gDU4`F&99Za3@jpp_}akS7ww#Yd*E^btbo8K=eCr`AOYR(dtiZ$I$`KOp^7!`;A zDfb|D@F6JbxI{eLU!Id~V`N`IVK~_;EzKS6h=o<;tOzr{TUSjUnJ|Wtz1MD8RT3V} zsU>Ni@ndv1>GOnv;J=^;tX=yQojWfyKd7bg z!kg8NxlK|4D7>lBe*{iGP+H-KT=eKhT78`#Jo`2i@(t%&niDu)(0#dt1>}EVw}($~ z)kFFD8*9wumHn56YjzMucA%b+7jT}EMZU2d`P&I5nM0s%GKF=MMO{RA!3;;Fu zq{n=5{}>3JTaX`Z(H%%m*zx)WZOcErwfoN}A;|=XO^rqJ3CZd0uh#z;GB!2JXPNhG z-tBo;SYEVTXgxx^Wgi^{+Rw0e1!Xk1o?&OLewz@v^hW*8{?4i&p%$_ z9~~4-;Y&0vj|~jcWY$7Ebpv{3E`klDZ`3;2jQTVVk-c0ref^>%h}@(lo@)27&ZesbIE6#NYQyWHgJG!)E;OAMKYY)H!nu%48dZ9927Ij%S&F zWjsejcchUU^Z&8;9$-~2%eE*{38oH zqlJzb7NnuChYh1X@jo89A5)TlJiqZ@JZAE1xc->K{P%JDzc?EIudM&;X_eo{{I8GU zP$>TI^XUKhL7m@E{(stie@^25%XIEv^CCCAwFuPIK-`P8aJ;PG|q0 zIGutUg%aw-|2*0B|H~(vN_Y7QbL1m`t{-hsxARY!v;TKs&Z?6-Rxv$2yT2T(uK&+N z+5J0*nqk?IoHw3QpgP!Zi22V$SpPhP_2codAOHVrg{l9qKZI4c!_QE%{dYnsx@~(3 zr5O__lx+VNO8-30^*`}(E~|D5W~oV`;rtV_OSk=r3iGBK)NrNjM(zPbk_{&|S(FArq>*mK~=J^+8#V}E&E?SINc zWHi`%%zVXs#qD6*`p$6GnfB+6h=c)0TFdZcOSt73DHJbBx&_)<1`!9A!A#=!!q|fQ znvQ8l^KZQLlf)bG>E8^2v>n!<;|4r@)s~aiB8VqJyH&1u+I2IyHx7bhrH2r2n1RG& ziq+Y(#J9Uw;B5g-P&+(DjP#aZ;@^gN{_>*N_8cFdO$E^SS%gpc;i6J;Si}QCeC6G^ zzHuIm>+?x*AneXfCi{+XX6~&@V^8P1N(0kzDmn3(PdqJ>o&ibKk1?mGbr|v8qGMWX zX7Oo@P6r{b8aIjRibv*3TOrOC-Wq)a(y5@Tt&1%8ay=-WX?9j)(hX+7isgFz_((1B zc6RdI9wSDY4K96Z!mk9bN2{S9;Z=P*Il`_Czpx^Y^q?A8+|^oMUsOv*27cEl&ZqVs zT7h$@A#NzX6FcR-hNcE#q($||ffXMy;`14Ciax~CK!cl&6hEoso`^GLWEbL%hQsMT zRoR#-)mgkS;a^>hxnrdq{GxHh%RZfS+?e9ox_n*<#2bsXN4X^ai;WvtLq614?{fFv=8Uv0tla#n;$Y?50uAvM%zC_v9w6tH8!yE;iMg6%>p|fzNfP!t{3P&A-w%yp`Y)Jm-TwVnz2iXw=-oW z2h5|fpFrBBq0#_YowC_*>8__F&J&2A?v9W3BS}wi}Z)b*|TzF4gkTVGP2k)RNlR zZq<36_8CYT31k>#;iR%}z%pxumi(9*&DhRl&{JlUxfmv_q&>WeuN!S@EK)b=6Q^H< z@9xk8(`p&v;3cFLT+7$cIoZhX%~;e7Q=K-G&~g!kAC6^ZokFpet5)ebm|`a&Nqd9% z!eZjx+tQ?WJP=A78Eg@O&zB!Tlk#1em&pRGY@LQP{2k@_mchK;w+T=yy0|Qnw_5$H z(_in!jm2ly+gQmOOWEP&D-;F*X|XI|Z7STfS_L8JgMj!^wms*Krmxi*ZBlhVX%gR9 zLs|lBoimM7Y-;-6GMDEqMsU(R@w~+g+#PpX)QXNH{cb1>Fl;2>me_=3H}I`>j`@Ah zgtIkv0ND~t_P)c2qZjW>A*l1uO_&M}#iG&jZaH56@-`filZ}ptFR?cdyFig|8@yJS zX}HnOnow$Yee%tr#KDdi&Pd?X)N4ull5v=pOdC62vb05a3%7pkVZI}bhWS0O;ZIUn$OY>ZKtos zQ~8#*o_n;h7wrqar-WR6TOYUB z$FeJlui&KPYSNCX%c)N^gmDdl?4h(wX!B^g($%@rsg;gQdW|HVg$>neByr)G9=Db> z>IQJ~A=#3+e8OlTJ2Qm=^LhZk*k!p!VS41;w@@nf5R$ILZe?nKcz8iLib~6Tk+2>J zlf{djuLNl!g0uwmJFo_nPE0Nm zYo*eyCFy|T$@zMmJ_lnjr6K7;!eF@xEk}V!nlJg0J`M`^QE{m_b|ftYQtmWS96pey z1T+^xan?Y`G*yPG6TChhz! zjZGUlwu!&Oe7Klo!)2ARH0R(9QvT44OM3|)GEQn=jkCl9<}pB;3mhM*VT5x)W2i6` zNbB+;9R%LJO~rG2rh&o^+gW;iR_|@786OCahr2<0+Bco@2lGsNS@`arf} zFFp+9VK3^@T#aWyx;|ZNJHk#+q3Ey60s%#R(@p5Xgo~qvR@1NlRjno~pPm z4x}rpT!u6UK&aTDIO9rRzQ4tgw97>l%MP%(o;jrEv;}p1!ak*Sz=jNCMtKqm=UIv8 zOOURebn!f(IRsqk!k+EMaiu9M?Xhz6K;G=lEJ2zWX_KwV45taqy(H<-@H!g*)na`Vs4N^Iblyj1tLZ+&Sr^Kw}~lHj}Q;X}$|IX#E9f z9tdeb?HR=$>pD{-n>4C`WzNR1+xt?nY!BM8IN*lT7!_^{s(}Q}PXO|H2(^7KNZSL2 zL!>)1n#TfXT9wr0h{n(KDDT}B8G9ybU#Iwh(a!av)1)tOuzwc1dhCMnaWR6lBrWNr z(jp{Nl%6|77dL92f|_%o@-o>`LmDg$0B@a6O}T*;UHw>B3w15qmU~Swl8>}zoa`nV zLJD2$Ah4YkAxKZheqXnOn(J|MN*|R&U~H2!NV+nbiOoPdJJP%iq;vCeeI`PS^C0c( z2_(EhvNvW$tOV2I2f%$&S3x+SYK8oOwWX^xNOLYwX}8vomjl^uyBZ6cQ-PG{IbkpiPmF?ZcY7e|lJId)HY)#6b6}>N zv_hIA#8mEeT|5EFmXhWt$UqaRd`qagC-*B#_SR^M&Q|0LuzIAmBtPXhsx}6ie<6Hp zb*3@?qUL!BvOmpF_#|SFE)XXE$3;kswuA**Mzy4*v14iu5n(QAyO%)C18H~6Q&25~ zYML9sG*ivF(gbOa1(1HM zB|RP|7cH)#+ELvL>zjEW=p0Czr@TuK^IbWy5Uz9%$91lWOx2WR4nmPq+l zqvkG*u$u?d+?&JKE-jc*n?2g4Ph&`1@2qkmP%WsdW9xmo1gDxrG0MlN<_r1mTSV6% zhcvHAB%4o$4wGGAYJ|R;H==3_<(n`xa-S%eJ&07;x2XVAAU^L%{ zldZ&H3q7vpLL{4iWt8K!s=iiZM0p9Rb_V4ytCwBWQr!qN|4r3TaNIbODZfy$VLR=( z!Y!cu!zk8q^QU$6kaBr;YV3Z9gKN6EOfg1DV867GnVvq0S06Wojs*=FjXleDe@ZrL zs(JuUd4cBJps13NtZ+<@N=-o0+)-03J<#Qv@_v>se%?p5RuMAN&+ekaLE4{9do1#2v<@z41eU%u6m!R#NN;>au zLG!}kV9!xVV~4G*>kBn!?k_t6{?@uXX`K4i>`(Nmziu&_D)ro}lg2lA;Gi)MH5_WY z({F)JElEBct)czk0*5PhO|4A)>m#+@f4mwpczCc{kxH#FO>6rE^&eg3=VU~ZA?PjL zDpS9`@?&YK9zB12pB_4(MYM*~g6qR||I!I{XH#eV?Fv2VnkLW!Jb_N(>hnEZ`v;Hi z7dm*PTGP+9=VXWR4nJQXHD-ePy@rF!&lhMh?0&(nJvB9J519Pt-Tb(t8k}xcJ%91r zsgyA$=d-T+;-ZY`+YFQ*pxDC zhrvK@-j@UY&Nn+e!9#bwATF^sE^^!kl`7wa&J{~)zMb&q`KGnx`kZv_iMhK(#6S~% z4kEy1Wks1A`~th5nu}S6v2e^<50?m>RBu^(~vL`Qj~VoR9SGMYB6z6g=k z-^19Z^Texn-SKX>JEFm&dfJk!8s^(gJt7YEKMup3Ka2Gv`a-Ruo51Obvz(b|f|dal zA@YG89Ht6IK_WN=Y zHU``H9G`0~?7rU+zP3w6%SNqvmBnkdWCP8r`c&e74uHgIJHht*OsEj1FQ zx-40v&kx=;`!X#XvImNJWT0nZMOJp^95{UUHoIT?h8lla=EQDnVR8?19U7odj;UPa z=!H#Y@4*@+t;NOnE75CAJ*KYDr&ge7?Hz?`?7Ccz6%KDhu*>D5y#0C?KHhj7%RD}v z?By#|%vt$c$OY9pOY%FW?6`M*9Gmkg2+B9{K~^aRUyLm;XDnEOD|bY*-5**&Z~d8Y zs{KGb)?Ih+@UHJnxHxV$j=25~_78so`<}ar+IuhHjVdoihGlUGJsZI9blZ-f(qE$I znBu(G42r#t54B^bd%`&5V~oZSG73ub{L`bMphQ1(>slp0a8@ZkCa%18?FM~l(a3>E z-A>TtY)MAZyn(t_o|@Mazoe{UUbSYZm_~{>v1-S9cI+}e*PVSD>?T@pm;0r;Mf!3a z-=MY(+aCcU{ssBvHE?ua&AXk;Li!hI%!Rt<)3cli2h8}5)tBK$ziRSqvqB8tS`{n4 z-HjB(7*M_wtQ+CQA2(fvqs@0}W+uj93j;k#c!4{ERula{OVtm#mma zMOZMvg4bX1jj-4Ar!_2f;MQqNw}vE`L#MWw=P$~l@A1`#;p+EnGgEY{x< zl^?zwyI+)ex?kJy{315=;UirCVjLUrdK2@1)CZcGn8V9=8(69IwvhU=9Clr3rSJqt zrY2|y52`8&pRjUfGB#M0$E;JXC>yDtv0G;iZeDs0=S)1N^<7k)tNdp(Et>7}w!+)p zO7iDoiJ)=8l!@bTOwxCtvDRI8dRH^t^CnSH{^3V5>d03fWn{0`ukoqga_HQ99WF2V zg}ohE4q_L4#;I$!>ipYwXDV7qz97tDC)*>Q$GO@z+Z%zYYb0u8 zieudgX_Sj1*>ko9^5&UB-H*}GcKb6%c(4A2xg*!>Vw>&-$LY;Mm8-H^Y-48|nj>L> zW@0$){9P$UT?^%{i(=H-bx=|Bik(QFfrOWg?%9X%0<2Pup~?52IL_fb1zK_y9;CJ1-5&pxM!Ui2I_jhmRarZn=UHb`-d7U|BsHEp~`-_zvH zi$~X>X39@scb#dV{QhC_c}RJOQ+`nSRdgKOTKYVWM2aI3zBLqL{SP$n`WC~aX+waHAye{dr16nTyVLqkDfGL5B=d0)wTBopoOxGSuwdm5@+ooH9RyWx6@AxF)it;% z^OzW(wis-8mX-x2?uhBvvbB^i!9+~Prn8?x`{!xG+Nv3JSl>>RT(uhsCkeNgY1?ie zCaB(E-8ySw{I11Nb@2sgH~JACzS~!vYHc9*Z63idy`InRRG7@h8arZtudQP1yloKf zS(-vh8{x8&r(ycFPK0|_3Zt>#qPG{VNnkb!r_cqO$m>;jA|{>A={d2roFhdqZ>S9#W>{- ze9*3`B>%;ORR_}jz3@3rQ0bn!!}gEW)@fwyCbl zud1$;tLyK>UPa1rb+5y&J3yD-7xAP0M!cP707IQuK!vwuU{mluROeIpdZ@n>w%n74 zBW!9*RnMI{u$gJ&n@EekgTQ-(Ei~$KRWtYHUU=G|92~m44Ud*j!gs6g5bh;_@~MkB z6q_CMr`j?YDd&TweSh5bAze$?PqlImG_XC&PM)gFDSmkUJ|{KxS4_c4p1$O}Ug-BB z9;{P(po+gLc8x$`9L2V(nWVxJiglp(G`=_c`!qdPMXnpMjZs~UMK=}W9kScgNF11ys^JjL# z`nPXGQxN7VL>rFmYn;)}|fce$j1l8_3EGqhLJG+|uL6ASl*B-m! z?pZ5A_k)B>s>Wx=%o0mHZHk>-nk$?U=OVi^syCTOZZ}Mx+gdeg$b^iYU`6J;! z=Pm!Sgs-l}{5x^*mzg5Jo+ba=7gbNKTXx~+qWJ&T>c2m~`p1S0f2_Lj$M1jHQAVBS zk6E+-odtk@a0`J>y8r2ThK|AidshMeafW|m8Q_1tq(2w;o&4iHTBiHwY|!5p1OD-* z;xYdGLZDg>I8e79aG-AKUz!%He*O7%wIcA3*Z=xr&&hu$65J=N`TzRH-g@-+pFjUt z;2#V8V}XAx@ZYdN9=A2sEep_FtqL&kUsnaF^M7nrfZx~N@7>$oSgeA4(+#YCpLXm` zbrW=tZ3Y*x0R-ok!Xlyoc8xEp<1C&wSb(LiY~?%G6GHJyH~XE}F3ikivpJ09_quXHrDYs!Q0-!n~+tydX8!h?&n>D_)tBrzki`r{O7&YmY6iv7z10|an)-b zsd!jWkFI(o@XWsp#IaIOctDi0&lid}yRG{tG=i@w1wLU%f~l@urhW#+rKHqLr~Yoe_i!5% z*{GBOa))WStwT{HE}JR-uwfSu*|YV*e8pkx8GoIr{=V_)c>F$dCQy$e{ri`a)IWm> zdnh`)g!0INxj6fir|h%aN)pe)?xz;Q$h1%_zpt(0X=$@#55-L4qdQ(e z`Lk?5C~X>?z<_uj9~u+Yw`zwj*GQ|B>5_U9RD6-D`)*ZOC5U^1kLmlVKN}{=j#@eg zUE^yQZWF`ij;zTa#hoV}!Wm4)E=S^Hv0i?@mVOr@70U3&rPc}JRjBVei_|Bx_B35X zaRaIbpZBB~m~1Tvg%1oMVBsT1JUiBC69>BJoHO~tcIGuE5AK#OCKqNp zvLZ}^Wk3dQKiz^?zO_-1-%xF9Ctr?j%JO=AQ9K_ImniwoMBTW#UEng#%%0n6jXCi? za#W|i>K>4|Z#mxhJrd8P?f9skSXJMK2cZ%1w+%V<2S{A2EWW9?(mE8+A*l8jq(unQ zGw`@|HQuhKIqy*O9uQ|plJj#N7ZWteTy9)prutc^-S`<&%?`@{u=x{4d=&ZVJ2vFu z4nf?y=0?9YXnkT{KJ`e%g)GC#qbkXz1-^=hgj;up(j(2o$!}7L+lzqUP&=(&yN~$J zwJp@HAB*O<3vj`JWUlyM>NONEFQ`Y8M=KVx^sb4#{hM#3x3mZ9=`~l@r66&(V6WW> zmue@-Crt~KKN5GolKRX>{O!O6n0ee7Qu1isE%rimY@3NRU^zPKp z?$_*;+rU__E9S?i;rwbju%}KfzR0mJQZK_i_Ex7A5?2wo-Ha0-%!c*yfYMxBY5A#R4%UKm9O^s(ce$+xf7m6^h4XJ73GA_2I67yGDv&|ACojy&~cOo z!c+|0s^BX1jg#3-|6|IRVTEBGPQA1A^InG)!>WVo*9V5aR@@QREII?8i$P z_oeGgp1B(o7;Flb&Tr0 zGy`7;!hq0&qI2&WOmQ{C)9jR9fGVcej)(_}Lm{>os=9O8ddF#4d zLq3d=)oBgW)kdUKoxvJ&`b(vQ);!({UWh`W^2LjH)6jiyq@er)U#++_VS{+u{q`)h z-ApVI;;!&OsPR+&OnyZ9A`pm|A&w0AiT0(4yITr@7Pqk8lqt~NqJ&&{|1&6FCwqdM zD42CzynI)SlQtmwe#w$$+jiwiz7}|=o44HH){7ILgqwn!@V>AR6;9o*&`}Z}f{I%t zUQEO+Xs`G@(o|ev+q}L|M0DigpD!v73H9S{;O;s`c=`PoGqhdfhC5_`z zByPutG$0^5NaBJuAOUUexJH_mYnUuf!FycMs+Paf;JelH9${sdhiZ`9S zbt-9meJMY_!4)lT3(~ky*|P5!7wvktqENykOjMhb2+d72q_?Iiy-=Ljf2rf)NpFVE zH_8g)_kg%2@+l{zI*XB3LY!7rsWf5Ix8cIJ8QPO`pO6M+gBI5o;MRFw!cIG#FnNa{ zTqf@DEb*^?oOrGLiJxmo;+;^lVU(o&D?bP97IYngcvjfbqcSReF=1M1==a_lCwo4I zYF*DD@kOv^i(upnTJkUUz3mCiyE1^d;PrwyOswbA4vC+W2F1gGv<0bnLxuIT%nl)y zxf4~XD^B&W<$E5Q%OdkpOaxk!X8sKfdfs%GIT#*OCAjggfdkOMSO>$m}tHXDwuYHEAC%4AL_P)qjB@KQ%m|t|5YDx z@T08|dUyuS>sf+M$9%ASw^=Z7;sAV|X$4xF>)IK$3ZRnTYPMsW36Pqjb+>rRYVvt< zQ<1vhwEi1R_`-31shZFy;5aziE(Pc3VKfhRlJvTfj>EIRg;0HXL-07^1f2^@!WqBnyiCqs z`1IOX+PKx`&d=Y9L&dXMsX^(?CwDZYy>h_53z}#)jyum@XQse0<{>Q?jYH>Wd5Li&|$AJAG0_RvO3>nZW$q(A)h*VtIy0X)q%Zmti%?NGUspho@8gu z?y~2%)@eVic*V#kS?%QR=vX`oz1lb6WqcfA?yhoR7(0>|9Z(8a6qzXK{M_I|7d-Lw zh^Tg>A2hg?jTcNU$@krXj;AGCv%*_(vXNsZ>=XCI+Ikx?azqHD*FhE^f#-Hk<{md1 zNM-Z2+g{=Un{qzJ&0Jx@p60w=;YO%=st^q4mgMm};<5isdR`%Zk2YXnZ!Gq41fRGg z40nE>%G4Mxvwj4nAC{1BYcGX{7SXI9tv5n3#{8#CpS01pa9-3YSk(VD?*AOf#;sYc z#zbS>Y?WMX-3&)ueTSd!J;b)26CrhTxHfS^I#lcF%y+j))uztgiSL6avhp8iuqlBV znv{r4Mq?wbV@)8vPIL4-djQFnV0`F-NUw7c>z+ETd`BdjJMk{YYjM`n4$`&a6zt@A z0hQlU{G*D;Qjf2J#UV#t{$mkIb`X`HF2_n&ri+@rJMv0bj3tX~Aw~@Cq^%k<2aUTn z#e?0Fz_cieXM116W8Y}lkherkSey@pCCY|K@j>Ig3(`gh!Nh9wF>L52MzIM;Kj&i& zGbzZA;bcxESh<~J%d-wJ^|SIN@<(yaz9hU4Eei=Z4}tl(c%3agZtP+Q*;#y5_z6a> zX^j`xmgH)@UN#QG6?40?2K|PJHiizMY&m@KcdZ?t%0}5e$H=P**xoq~Oy{TJ_HAy` zCf{5VPD%5!u~5=$E+f1I=gDW#;p<%uVSpr?qU8huz22oUi*3}cCYHIHg0&lAp~nK)acM6^C9J}y(c$=QMO&ELr!-SO zOIQms?U=~j)`ssmv;y{gtRYK!SwjUkbN=Z2EU@F>(KS8;*Y%%?laDt9Yuf?va`#eA z=;0!G=1MWluA`4tC%Z%Irh_qLa3!5zizDxu!<8zs-uE1lyRsHOywx5kABonvaY%T{ z-$&PjGbcizBCEj(8^xjU*7AFoK^W7k8rmHT#PvqTm|HJ_(Y?@kx0g#BrJ&gb3-WVA zY#ExuGORQ(bj@(VUOz?~niH$A;B<%&4)RV{F$Y#HEWkQ823Pr;i3jdpOy9a9YqQ)| zh7LAR{==&F4uh|STgXSdBH10ECNDs7WE`%UTbD6I`)gCIE>ci6~b{KtON21 zAY1ZA%Y!t8vq(6i@;CXaji&4+JE(bWHXT0=2zT-N#-XxHYB3t`saR1C6Z!8m*@*62 z@lD4XK=?{AxnHy_n6Jy(gpHu^!PnhF775eSD%+MbeGj(r_po{CTN~ z_Iy@_*+BjSU0ff+lc1ff$JjNn+-ZhbGi{#O(dxdiIZ^|@_nVHf4tK!swLVy_PK6h9 z4hp(QS)^!hNx7Caz7xPQ{WpoR3B&m6H^pGUVLxbPnMAqdDkO}kEEVR>sMQgu24GZ+ zAmJ6}Zaa<(Zbq@*tLkw2S!?#NCSTOZQ*M60kEwi}G9nu9CkruuQ&lW7V+kWHgeW^> z-b6nY#|Q3VDhFLjufR*Xjn@*!^D)}_ps=%^MN60nc}&yW6we1^EJ#F`U^iPb5_n%Ek8FsoKAQ7`fdkiW9rDldVq0ftw*22>{qx0*+MD#TfF zdQZ?jV$6t^sIURYSx6JF?Ydefu1|N0_17Zw$sTbsM;{4WMDQvLARN`6vyG(MB7t(% z0-*D8@vl|T0Uaas*O!y+j;hZdH82gfJwGwG@J^7`vt%kiGg14V1vpbGMQPn~D zm+q6@n`>cXCTn@8o-W=OZoa7V@AGZ1sN94#lE1PVW}Fj#;G>KfJTzn-3kiq;!eS&G zVQr@O!GL$bvzt`p!pjDxep$$FoTw}V%dCO}HVY`{2gs$H^KjV2#y~X;DjT?%df?bk ziMs1+SLhC<2HDFqS7u_T{ae_Rmv*v!>RMeb*rN7g6|dr$o0Y72Y7FiPAI>QMYDcX( z%C@DwU;~To!=)|(=)?no@*mmIkaEy_dQQd;ymsH#VF;r< z1KYRdC_6*iY&#LS;DL{SXCm(pe_2o;5*>Cye%H#Z;h9mHQB4d``?kVFO&?mg zpD-9+ZZzOj8)4nv8$@ivGz@fYim49ic(WoR;iYV}+YWYYi{W(t8t-H;3?G`PuoC<_ z7U9R%`s->js+oAz=LPU4cN3euW;#&KflX3h!;}}3^E+)R!&PhtjirfJn`Vd&UN?~Z z5AGz!aSN?muEC>GDW|=0V|F+NaujBp8 zM$5n6`t4L|*JRqD`PaLD-)i~SJL-FZYO`gf{i^TLf7RQf|NikmUnD7;c3}Sd75}l{^6y{z z_3H2YDhE3KdAQ#;Vy0R6p}mKP4eJ|BV)}poD?fH)rf>YqWhwpr_e=Wm%76UHpJVjP zpg-mN-=1BV{BzKM-;`uoqHe=P8i1^%a7V7rUmFJU^d z-v3Qu+9S$tI;fi5$9*%5siu){9Swl$6VYefV$P!4sCmyqZ2lhR*sJH~GcVOa< zw;Ic$XlKXg3 zt(G9t40b}&>29catBbx*A$7VBWbpk-JpHBF$!`zb1)k+0y6zQWOvUkV6<|L;u6u)W*d5Dtb|=Q z3_=6%QJ)hjs3v3gr`q#2({F<6-KbvIZ0+^|9l~8W)vogM9DP*_YDbs+4s`7}r^6xQ zP%@#%gX3WS@tB7CNkLq!cJsMdxvGD4sp_a{FD@%ymU=%e>v^%43_Ds6EPR^aI871A zJU2>GPbpk#4il=59lNkNZ)N-%s@=FFjOrERjYB>8(a%2e@>eI}*Kr1Xx;IEFZsPb6 zGgSQT;76X^pmP}{eo+#~DX7=Mk)JlPGRKG`sQ8UI))XyW6H;#n)FVpbYBiV5cEchq3#Z*f27 zQu7(C+-xaTUEea)3VN68f?ZN)5-E$`~XTs9POU`@q8rw%FVnx5!ihC4_XWD$OD6evCp19O=6`Hvz=+J?lCOCm5UX3}bE%<(rCZVag|;HLNXfx3y+{%NVhc!7F?S^SPU;8UL2LQ4kl% z=^CWsg<3a#MEskHBpwo~N!s|$@d;9lNyV$xS#QlR`i2OT{P7Ayknk85-QI-OAFIl5 zb=QJbey-v+p!l}Rd~H2<%+7L_#5Y0W?Au6j3=umzO5)G>a;GAa?2Kh6l;cW&lEq(O zw{jCmXDA|jnQVv4Q|~D5f>AEg<%3an!{vJGI;<@km6tAtW>;j)7%;3-vg4Qx(qLK<-*ZvW_od>kh)c>RZil##T1fW;+SQC# z4%e5Y+o0mUt3TC~gi$ykAO{z}Ifx7Lc&)KLD{)Se1V z#rBP!MmiqN{&OBEO+)Do*JUhWY`QRyb;HL6LHPZwt0e9U$d-b5D{cOuCQ|8!9?}TP z56OlKaVaWi0qI~mEE@LY9`ZY%wRSm6DYk|J@lLR)(N=|HxOITFR9Hn^u&R|1Hac?B zHyP;!Sns*1AZ}UCY2c=`JH`L-J^^i@Yu)LRcp?nmzFzih8o`wPl~0fk2gGADrLihL zyeq8>Lz*UQ<-AVSWPEzbdGLL2G17I<3i1J|^f2NC@lg0tLHDY-CMnbWl+FOXW`01$ zohcrQ^cbp-rsC1Zi->!_g6W%zFd7@Ax=rTaHw0hj(IWf64OYpoiqf4K)pue|kqa!L zS1fzicn2u`YN5+#&C7xvKryE6y=t>~eyfI--dFX4sL9Kardkgu<{{=;EYiP7+^sm@ zwg-|HAZ*-nLGjtdB`R%=cUj>or&p+pE{n`S{jAQ>c8d?Ad&BMlBZ0VhMztWL9M6I^ zFKDf=#c1|$JyM(q;>%#;!w-<2^$0^Ry9lN4s@zUCfwnZ!fpDFvnycouQoQ54-bk7N z?hl#D=-i|&EhGK-4UlevJ`GRn@_PbpHoZH4E37(q0u*mIX;O7G7_bE=*{xsh8WgoUlT^F&;*4nSI|GLIU5|N}tyly- z{$9;B5thU|;F`)+uv(st+_C=_YoDIVyxN|_uy@;7LGVESEa;GCXyXN7w*4t?j*5mb zKWpq`?=9{-wTBCB7QyoS{h-zSGU(g6BA&%$95lg-hZY)f|BJiPy;>ofG?<7t?p)BE zDYXph+jf&5YtI*@r6KCADTYU%6=I~OugugWYQn$dL6$=fGLd=fEZr2uBaWA zj`b7TK*5qA9F&`Y`@4Hd_wcccHM{{A>S_8h{kwa{Qn{0_!5*{z%qOH|0 zMziy~E2IDT#FYU!$Rq>0g|vpZt!v54GgI-t@i3U!J{-PuSO-z8CZl8F&QW%}Y06RU zGK0_BHCr}|K~G}j@*{rQ{(PbEsNMi_!tt6S7;#9K=V!WBy3<{U-625ob zc(9`(MpbCd)aRTken6L_wdJSwLHM-K7c4e^ITl{hY8Ttw6z=BNFy#3R3|earep{=< z(c%~3Sf6?j(qt;WtyNAQnP|gfoWH`8%C_h?xi-I-GG4Q>T6aL7SWJM-Ja9^$uMx!Za7jYmY10UaI^C<>`g1nohjv{2^jjFH9I~V?ME($ zXIn2pepWe6^0_>5 zu}tYhxH>li+bo<5+dlM^x9%<%XKNY@|5jT;9gFY_a^{~B4Gz*Qo#zc?n-`V2Um7Wc z?LVX4>JH$Wn1)SLT5B%tZUpL_qiYV(SX5hwH*$KSf3!R9-*AW(JC!c3$EUC{m(Kc} zj{L^xUh(wn67-pCpvE@8Oi742K26iHFaR&NFVB*;cT~7b=i8MZHfXI-c*wn8;>BI> zm>P#{TG_E|Of2+1*d3w+O5uf_NznCbJPdU9WM@PZAin|Iy^%f>S6+mq#RA5@kA^i1 z>=0&^mq#{R$=4T5AX7gTzJD*z=-TogN3VPuk+yR*RvR?R1p4#zV75tC28SLwL_>w{%wV$n&qw5feW@68j#E#bHfb z<3_Xh__p;1K`{vfeUD?ujDtuyM^vpemW^rM67-WVkv*nrnmwYN)VLCMA68ZuSKF<3 zV+V_ocwk2OgOTm$8{5 z*5$C4avQJpdID5RF+znaYqr#Z=ToY2?=q_xVGVX#nu1HR4H@M_oOH7S-ZLt~Z`oH6 zl=md5#W)d#hUtZ-yP@j?h&j<%fG5zFjx*STrhF(LSV#fh(xWVid-n;Bd zXepQAvb9l+Vp@*fF_V$+@d*3xaJJ@jETx@>U%o8TRx4gjs{BIvobMd97Atj;x)_L%yj7g1ykJpUly*Z`0N3e$Ptr!O#&YR`?(~g5dhbr@p5ku)S#ih#8E5@3j zK|nR6JjfQWdcs_|E88}t0Pb(R0_OSKh02?h`z2u;B)?t&Q3iG8rPvlUMLQE)KfkQK zI5ZefQ`hu-+Y0oqT_4P*hN9Q5!*Gx5v1Ox+Dj$`7y42?6r%2d}j$KP|v#GCv{2ni5 z^@dL&A8^~wJM3uVj!|#NJ4n8>(&x$fOYmdXEZyf4OZJy!FX3M^gX#HL^V#S13Fo~yjWKMPI*qBig=|Xs zDjUdOMbmLx*fJJ|6FwPmstFj`Q4`n8T+a6>MLz9@2@8wzOYKg;PH!h&twi}%go@(Q zbMSN>KF_T+LB$upkuVXd_7eIACs_EGdct6KB|ga}O+0IIPf*Q(%f^gAHNGp1tl(np zp`C`Mt1)tI7pRt(CaLCx-ktAj z?xlPX0a+il)%z3$g-e_|S6O~E)N)Ip_;Z8fTP=Bo>~xm6=!Iz3!yexbn!{);(Qd>A zQ1u7ZD+K@0oS|wr=TG)fG zRS<4qnBQFSd|@LU#!_tv8(;UveRG20bGbUg`(tC#!F;AVH{3t=no-P%;#-Q~b$=V_ zc&`kcjV=R*VP+C$Eo223dcd$MgV3eh4n|mnly8Oq+boz@x+Yxu1Q1=ZEQCBSLfE}k z6xKW@%6hC}$>-{!jDG+Jdqh*+<|cykX)U%(mkgOn8xolPKw zWeSU$%=s>cojI>+RG&%1b5PaK6i;XfrGauGI6pWHv(HE7d+z*7^;AvxJZvA~S0V;! z7BPwgd8u7n&>Q`ZFzAaome&l(7BX&rF`3^k28K=9&%)yx!kGbeRQ{lS(YLg!L3zNnH?ZGPG8MN9x2OhH z_fFX1EiZhS2{#UmQMHX`;><7>GxwEvFn%5G^j?O9Z8H6qhoE{HYHeRYdH=NV&>mH} zmj`KVG0I>I%p2^>_Z_`~)B|C#W3=iY_=Ga$!EM1->~J9r2;;%8U@!EzF^jc2Wx@Wk zI^Um*_d987|M%8$`@3kXR)hQdqxye58~i^i} z>(4Eb{`JFu-JR>lyK1U|?u@@SN&2}f*Y8iC|Dj>4&;Qud=(pJxy15*`j`-WGjvp_R z2L9{$|Ddq`gU9q96B;x)qzY}OHF(Sf-gd`^)SR-Di3PI{kPf(5WXK^yklXfB&(4 z|9%}m46HlSU#5fnKeOsj{om+}9{v62&p#IU#{&OY;D5RWwmRAWngJ2#@qcp$MD3u_ z*8I(Yi9r08rd!BS*3@_xcD-tfA+Gw8Y6MQ4CHwrj9X_A3hWhSnxai9l;)0eDXPN=o z6NiESTNin}$r8NjQ%}yExDt}{D{xhJKYX02eVXpb=U&52trEvXmgReQbEC=MecX*9Z@zm2UMKgBQg=50@XH--8U8{KEf zR@w(Wj-cu(iPPZJTd)~DlDX>ZsekwBWorxvQaq@>t}M6BcqFJVK&m-K(Vjg)ani(P z$)YZIh?81`&3dGB>%o`s`O6H&U*gk(moT7+KL&3w%cuTIGjY!dbcQSH`}q0uNikw- zDM__F5>Eug!7;mi4^`i!_#I5F8qU}BcH&if7K4d(`$OTtW|I0N9WP;#?g%S3L;}_J zKHaYSa^fhsI!>FWMpALzGf#R+?=r69{-bl6c~|Q2MJtW)=z@N#@70!;(UNLiY0)AX zsD@@#uS4vF?&8*=co~uO2G#Z7);E#Fn}`OX1~PSN5z*%^7sLyrPl%D?jIqp4PgU!x z`x3b=XR5vwqSq}${EL{S=2QXuLsZ^SD)b=~_40I4n}5I1lP+WN!79ilaqC z!}7AAWqU?_f*_8U(>MX~xiTneEpe6=)OjV<%m0hL_kgNuS=vR(A}At?q8JbZAcCNv zu)12s957-+QACm`Nx*;+6)*rQs2BjVV$O-x)#jWdX3RO~EU$XG_t|IfbN=)0c>f*a zzweIiaBpOVIeS)Def8B>b9NKAKZ@jka!+wSdu~2NcAFRiGv1tpBlc6N*1aG|Z{<|u zvW^$Z$WyOM@uJ2ClCGDNt>OKLu86lYk!m!hslbb%wvx_WK$-<4O)n**76jm~8;3=O z&zsO>WNFwG(w$S?3U_IFSf`SKs;*Hr1XsF$V(0Q$^^k|wex@-Gil4(R3v-ahs`1}< zgZTX(Y-3UisWye8pC#nZWhd1&@Yz?BfOI4HQXxrD4F{gPE8y6JlX>kLmRxD|eph_( z;)iK!J_YIcy#MN%GO@w}?aQ6D8Tk;a`qPz@eu{4wW~g&3pCG-Ibdt$q02-B)Q+?KX zlOMz35euZMBO)DWCno!+g6d1n_5BuHe_br6`V2|CRW%$APbtGsnDyplC#q%KcuOA5 zUzXYlW{{W2}pfNVxC z6YiH?HA;siomN&&*9fHvl4i=2XemmHOKr*8^|?jeJF0hs)W^VgWuJhW?<;$UOVzii zc%zb}8XukoT1$#$P32oQl4>Z8Q~y|1hfC7pwB?hh3et6DO~W8GU~Q%HeX3`{zi1D( z9R8T}mPV-bFXwY^oHPMJ8XoCJDa!VuvGsL`YnLtaVkGvzJ5AH~mN_r0HR9BR(pI_C zK}KI(inX%5;FS4tP#BkcuoEgxRO#@fK?;Q-q+N0P2{wBTRIM%jzxHIOgC@wNBPN_| zFPzQR3i^&va};*!3T7|$R=Sb&ZRw?@m}IIRrdknp4(>)8(iUy#<0*`^UtW}6PJWQf zXi10^pt=`IB)-?~n(V3cD%{<;5W=3kVuUrC#C=on!lLy^{=&~Wo8X+3Leje?BWVr1 zeMxhm^P|#uRy8YyJD2$~!Y|>6bv4tSzBMM@onLFX6X*B_0QJVO#8Z7qx~NX0R606o z8Ir!om2O<(*<&F5;4$MfF?{3^Bn=2j|IlHS@cQd(h`{Bhezk`{rF`nH$dM1QIJ2{}>Iu;Q}nN-LF(+{`ihqCNND z7ofCYq@1Vg4~(`sg}Db$i_<~+oV04vR(o^Od5~~Vk{-yq({hta*K9hp5oTPN2nkl5 zm5wZ_cc~$bS%;_BR;-0S-gdhy%jK64@iAX4e9$>;rc0{JgOxeQGFRnJx`psEJbN8g8B!To7TO+zIPmwc0@-S?pYrT9I*(bT(+7zIX!X~<#$L;;VBHvFRQf6PO5{1`RGO;{yxh?i>diNh zQ=cz@6LnsJ()m?P*MF0R#9J8Yx!h~{7S(q{@^hZO`>fIuhhSmYwN56(snU^ z(g@Po7f8!8*_hNL3#b$2gwzVW)fD__xs5u1c3F3i-9C$Xb4A>ukh*P)PaqoTBx?b?B(uO=b#}UZh ztbReU>J2FE6*GdSD|=v-M*U>isos=N^d$8*@#Gj^)!Pw-i(1v^sqr9N3>jmkq1-6e zzE}^YroJ*KdMGE~P;;j+6jjfz&o_Ido{wfy?@XY)!LO}wrhK0Yc|VTAwW8Wui#K7| zz|x6gxjmAtDX)dG7ew^ODYDNdcUU6c)-{3B(+s%HeW{%^V;ii^(cmCAFImrM7wq_% zLU$De7F1ol2FtDxV&ct8e5AfPHy^ST4ICO{U`7(tvp+3vKd1Y_#?Jt;c_3e4b4siY z_hn|sqj~Lq{`lDWHP)DE%+?sr#hgvCaJKM}_|iEOOx#P#lOAV*K9A0e4Zx@0RGc+n zGCud*FSa<^%eYc)FyFTvepsIacl@`C-8D0{mOdu3YPVJxcG3V|YMkL>c@zF(>14?7 z_Z56b=*iI=f8y9};cQ)T3?^N1)1GZ&&&__`pnb@0!Hn2?kmchb>9fMDK?iV;+XLS^ zJY{89FnmDIE3P`;lv@>LA&nc`jCGb)2W@4q#2a90kc=YLh!56p2t}`F!-_U_`NU6_ zcqiY62l{7;hxKW%kqtL#q2HU(ZifLko_Pt4K5u4F`8H#nPP6z~hIn=TGxpTYALsiD zJgIjVM~v!3*VK@8YkEN3$)Cp#yVjO^8tQZ{a(|z^ImXty$BlXPulZks(N?PTw_&COUOu#8SCWvh7EYL zof(cYhVdzP!FIcs+<(YK)@>-USraE2pO}vCztR0ZL3GE7l|DEO+)wA3$J%VJgiWf` zeVG9j`PEL<@z6kec7K8`JPPa&*Zrno%IrM6KJKBm>%MHQ>6dt1Xu3)}da#o?wPcRS zTx}@RfBq0PgY@u~f11!#E5R4qFJk!A8_q>Xh|N(Wpy#*x@@$~rwQ9ZO?pI4SOFz@9EMgWsJ^CGejqA$1 zj$`3!;#k-kcN?~@>;(1Bw!@W&dg78aDUM|IQ9caGN7KN~Vj2z!9mJ~-t<6ivra_xv z5837X4~-flJRAxMH+`_%<%iI~ESPW1{SLRfw+Gt^?Gav0fUK+SVe-u3njT{(q0fjU z_%^<`AUi>uv1^&bz~;PV`3z{+X(iine>&9ecU9yk>GSE0dvKFu^`O`K_WaAJ7?`m; zllzUVjO$bDVN2I!*to|K4SZZV*_~I~bOx23%U^ru74mH|xO$AoxKc+z`CV*@A{^3P zAKxFbQZXnWpR9?p(<>FL(15DM%VTTtkUKL$#pcaPXJB2!A|`iq;OJGIzyFp5dnUJr z^cuzxcHpgMV=o7m-)|HQ{J0Prw$Q@ns87tNMHbYUnZi{3t}(1gW1j%}!*XGe+b&q7 z-4C%BUWvNJoltD1g|@xgz*)0xICV}SzKOXG3tw)+)(=YXu}O&-B&pMTy)<9fu)ns) zSVJCQ+YMWvuw+laKNXi+p2F-O<#6z+gDP$q#jNzp%7l%%V??blHTmgt0qo*oJ3g&Z zIl_$Q(s^ziPB(nSHk^Hm)2dXFyKX;%?l;ch(c(p-amRFTnk!J(ug>vdRxMd#&Tgc0 z5{9JWjp~*0)xrU?RykXk)c3F^sK*d!GuNJXh)Tt!pC`id_tzQ492Rt351RvKVtS1f zjn(I=EN9be(d}{=uGpB03e!q8_TZn!Wn;GcM5I_#exc$ROpdKXS9mNT&al9p__V|%zab(Hw}Xq)g`HWEICRL9K4@vysOWn6c$ zES3)cCdPM7U=a~zzQ@Iw$r z@>5ayNb`$^d-`BjX>TmKt(v$rQlQ?;TR`)O&vwpHafikMkJyp^&moqbRCWcnV-1_o zvmYkh+=uU0Z9$rEwqCnHEK0oyK~t}ah}lv2X4x@sieselp%uRc6l-4k+BbN;{b!u^ zcs==BtT-3_1S2}z;F4Zv;Iy~5!V(Og-W)Ru9A$8y?!0FFAZFPS&tnTF1( z@)0;3L zc9Q0gwOY4{jqmy%T4i~|prhAW)zpS~HSq@+ygRDxZ^wA{k69}Ap~8<29ocbyO4@%D8SJpQySkngaYJ0+ahQIk7t%GWC2dtEz^9X@=N z@?m*NSf#L;>}R1pulc6@miDalVe}qY&&dYzb8tL70x6!wmks^kSza|pae~cWx4=1T zT5;>qlq<6JLB(#{`iI%JCT~Tj*Et%`>?vsKa+jrSn2jsH9E9pSMv1L$47gp*X7cjb zG|*UOxtZ$=e!fXXAH1ZkQi<-KYF!a5OWS}eFC!K^Oc6IH zb%wid3K?IL>;1Wc28Rs`1;TtS#ihLeaS!gyc0%$`Q28N|?mUTFxQDI!>4GDz;>74( z7W_^IDQg$!VWZoJ!F{ERTpNCp6OC(hKEH+oiMG&$WksnSYA>dgNDf zNM}8QOYw-#^BQ-JcZYVlY3SztSon1R0%{Hi+tvlowl#rbkKdDnG@S~U!$ouIE)%b! z94>q7Rg&~Q{-V3RjET{LVe7dv{Y3@vTQ>z8k9;buSN_mY%wU_%^I_+h21vY!?d!dd z=5hiYSX+h@uSD`Iu(-IF@ajF=BesckFQ)+IJ>hmO2PviszE>P0DCQ}TEfV8X2ExVL zv}wRPeN^x7D&Lb6Pr;@uQ?!JWNLZky_|q;MUSFvBCtL9bP0qob;k}sSnaN1U!qE%o zqREd1jPg7q9OU$Qjl!^r2bQuji@OmF8xi2cNM!tnt?)b|AZ#@l<-95x?R7?R%lJL)-eTf$*4pH?ih5_ny?W+c6Pd zEG@waGvw9vLnz)efp`KCC)WA1!cEaFTioz2E9aHFPkbN_$bOn@9*+FdNLD~TgJeq` zFZlV!1boj4Al@d@!ma`N4Mv*eisz?7(Qv@@f{$xWqQZR zh^UAJ?&;?ATkH4VcHHAa!z1YF{Fr#VU*Dq5^+G~v-#y)df(L~L4{`n1ru3gr_g^%p z|Ma2X+tdHPx%{V(2L5rp-@5q!d;9i(KH0#;K=ru0<8RNr|1Wm$|FGI$jAa)V5lOcM zgpfUBX{W*ea2vy)hw;ZX|EaVL9p-;io`cCUY~D7hdX+UxCujlJ^4glQ+Jj;SD@ zejm*5P5nyR)MP4QbK?@;bIfmBODaG#5~*TPUv=y?+>CYego?%1s zl!~%%-U{?6bCNf>Mb8bcTu&NMCslXCrb`#F=3ZZJ+c5yg)mRVX3(m3?8%>1s+_$WF zYF)1MKJ;3o`FytnEedQSRjoxe9#UPVwXs6;%zOI3nqX!ni{cJ2YmRPET(BVIAvJA%eSk50ZuhEUV)qs^89*yF~w4n7OPDvRUH;}3qz`PfExWIIlp9eR$*gmo`XCC!oCxyeqp{`gW$8kEw{uup|2%FeXD zWEoC63Zq&|$EOeNy9K0m!k1C6H2&=`(EPHbw+_kbHEwzGo#+=KMhj*_$*T5t0m z^*54{YI%9yX}0R=AYm0Kef?p5dQR1NqD))R7D+!x(zKE4GnumI8zb#jM87Fb^;D9e znv{JCSp-Ty%^8vdq*bdi!{}r?+B9Gd=@m@AOK2&Zt~BPP&53hMFT>{M^I0tOl^+sa zQ0e9sM|{?jKkrBfZEHoEi$?Q>B-pk$P?IG{VCem)I-v3sMfr}cij$` zaaXP&y{>(KB#T+Tv*UC@_9ya zE&D$|siEsYH{(&N4}hkR(?Mb1k&Y=qI*-`n*PBzG;8_lv1oem*X)(|>!x5{mC?`ob z0@kUMiZj*cfa69b;g<%iFDTymo%p)4_roPXdN8U!3fX}4)*qysG?Sg0Ou#MI5LNGx zdKb{=?kG`sq9nI4-N+}FHI>^(w8PeQZ!*%Jpw7=yl46rnT$7e=Ajy6}{R~DmJ?n1S z1S93=bDI)+7sc}lmXUR_hJaxLjNIPca6mX`6e)8)M+F?lXN~%eFUYeQ+zPe z{CKT$IkYKm4SuxYbPdIcvLR5%KaY}>gBayZm2W6Mx03c&37ocDN~fIp5F@Lr z{vc@@1GI%VVnJyf3r!v6&b9|xPS;wXdWH+30+MDXW(|Ew8gXCT`#w!ey-(^}PSlci z2WoCxmM<;p*ckEo+bZ((3)LlQC|Kp?3{coi{YsTn7~v$vhc{Oo>BFq$xcAy@p?Vmq zXGXn8?fW|=QE51&yLu6}Ye=&e=QX3*^fM#z)4U9}_t|KmUagjNdmbLL60TUc<DlM6yCU^UNUKamqk{+7q}9%Z z$357mEwuh`n75$oQ9T=NOIIUl@3JH?;)L1P|uAiZg?in zvOx8H4mtt1^cs$p&(!BhZ}T;EoSrelKS}e%i)`bC!r8YU=Ys32)jZjuH+C{BM>-=y z+i#b(70R_xc&xNx`1$xFDt}knH}O#FgM46a*K8%*QI~p}<#hh|sr@RLU9^=o-5H65 zf4ud_Xc*fghxpYT;&ojhsHG8CoMX7pCq{i5BKk>+?5|pnIVN}TWur6V=Ft|Iq*Sso$|0(@)n4PG2;3N7rn9{pUJ3IEi-N|h)8*~(H+Ze$JvJdJ9c9uTnBsX;jO=7Z-`j>MFE_y0 zd#mvH-TM5)yXT^^(*r1SoQXGPm*P<)zoH$hjUQqRxxXfy`+v954r|pw8`SEBc1sx( z>E6H$^q;I1=S$s$mNQ!7;`1r^;_*Y>@q+eEf{{_)-T?z&(pLBOV0reVXj2#m9*MhH zc~cvxveJT24Os}AMjP;!btkgqJujeCVV-Edy|!j)$|kn3jE|_XYMV$hcjN8iTJWOI z$$0*Q0gowvf_WOhLWBOKV%If*7i(;|YqmGGy17o&3|`01YRvhX_BrUUc_c!j-V6Ip z6GYGTd79oEHsQ6av-#-}hgn*``}o7pnum?0=g>Ah!~B&$SU`&-cygQ`_W#)gdNiBP zcI6F}+bk>bOsA62`&2K@&qwpH{jF}^`z|}t{l1fh-k2%^l6T`IX2ic3Ex>9?>!D$( z)%dvwT+kXDpFf7(Lk zuN(`H5;uz*=dZ!+xofp}X%ZZYq*b2ayynH@Fu0nw4r)%k0M@fRf$&KZ<+SxVjZJha zag9~VbJZMi*u}ig>Y>~H8vNsc?_zb(2SL{(GuOvKuW!cEc0@-QP_To&X}S?dwYh?k z?=2zUzC6DY@Jys1e}}7Yn)6;hH8gj+ROB%qYRYddMnlKZHD$TaKg6dQ97kxUH>`Nq zH&$Rec`3Y4y@?N<+u@Hh->iq$pqg=N+%%niuK zyh+nw@8AXS%%Uw$PkDxMm&=HteTJgh*Y)h=!5knzXY&@D!>eUQqSf~c5Lb1rcr$h^ zl0OI<2e`#v5vGS;u>3 zcBA%v4O^*fZg`@ita8XxSZ^K1r@g+2J&#GhKO1&@n)b`E5o;ZdD=$LVGTNbGzTO=c6w}5p`QMk6(xq-dbq# zWdX#tD5Y`l>dwFI$z($}+49g%r^Ll07d6(y@?rRveb9HOCD~>lJn>kK4sE>3m%x(=>#_&HhwB;B0p<+Q-!g2BvDZzg|nE*&1t zyF&3~3*Az(*|S%6K>ouA^;*vi`kV4=p9M5@KFeMl+at&q;BZ1|-pIp^UyU@Dk*BI4 zVH)Hd&4N#{*@B;634y-(u=8y)Y}jkY`?Q|`U+3lFV0T~Ma>hXwLpUZcgW}{glnH($ z=5=@ivv-^qzMiHsuJ0FUY?+tDcc`6tC&a5I%_pUBY)*C{*xC5G1mzrq1-1!Ww z#}7gCNB0JFf}LgSiMQ*TV1q^Tg+-<{I)-+GRXgV529uR|u-X-I#55D1PAsb>|HjkV zFA5Hvjp1~i?37t!m{W5gs(G0jQVl*17z5*ar=aPfSPZDO7)q~t<=w*P#!ecy9PB+G z2V2#KxkXnY^8HL)G2IduANPV68JFW0yGpWYWxk7}^^M_9m${sj@40cAUnr3(n;)VAIm9&D!8_2;jZTI-l6g%$JT4%(}w$aVPFr zh_hWE(DN4eU{94TxNdL{oiC8z;PzqHy}v}<5Fcpw4a&_JP-NuY%7ZRVdXBJ1Ht|-AfEJ=o}Z`Zs>R6mCu7ql0I6<9&PKVI9iSQBw_Dx@`$*r&Zd zBYe`HThtMA<70vBh1%YIfZ|*l3>%0vAA<5Z3%(=8H{HHlA$xY<-*2~4BCI*Z!pVRSlar3gGBT!za9I^!H zx`A>e&KmSoP@H0$dCLXGg3O;>2ty|8^L2wSi9>0RL|XN1+O=kq80oN(O`?0L4VTyC zTU=dOx0DJnLT?Q;zvwFoU*Jl>5I9?|qFldAV%p~#{NmJ9Bup1HcDX*zUfk5LA{Nn( zD0D7Zv3@5Q9%#>8!bgg;4R*8B<7WXKS9@k<3F?+l1DZSHDgAI+*>E^HE(uM{zOd`b zZ{gyZB`~s67M`*)Le{8IQ{{eu=IN4MO#iqMddv&t0~1^|HCr0v)ir+b?(0gl_ZWhk zik}HOAKCXBRBg}-yBuGrc$(sH(AL;PR=nFtzD`dTqwZSs(4Li{9#&?Q@8wo)Fy)b} zG;emYO}COzx9JST(9BGGc%2BukJMKOegWXTEX4g|G z|2o2J%V<37^PMk85Mfci>(2ch#ymx_ow< zpq$3Ow5Jv9*L?wsHKe=>J;DuOd(UmKC^-*9>#xM)(GNjk3UMR2Ke8H-uQ0Qu$2#6h ze!(eLH2Z&6m0ItHvhnItynoe)Vs5vZf-p>W*?&$$c|lO_5c79^R{0wrCAvfQ%%SL0 z!yZ}~T1dT|1Nc4jo~A+j5lFtpojaRj%*H8<_>5@(^9u|s&em4dSkYMOfNgdHUAHSb zwswZD^@B90%ywdM&QegEtzpBeylF-?oWEtY(x10iB~C%6raDJ#En@2SlKC*-S1i#nl#;k+ny}PuRB}9gWcZDs-qoW z`K>yrJWF-~iV2w1t%z0a8p+596)%v^8U9!y*A~*(o&<#x_hP#eZ@mw}dZAb+GF_b$ zu7{ows{SBeBlfo}5FPfeg_7?#W1swwP^yYIP_5wIx;vK{pSW=C4pV@?T%?dBL;zKI0>?zC!@^yxn47u`w zD)(=&pgOHV)f(+bSxP!L%-hp|k8<2hW9uL(U$fQ`!O+BR2GvSVibD|(b|&nMIG>+ccD-YW7r@Oh^I*McSd-qA?|>L2l(SB zJ*Sto3TCxy0fg&RVf^Yl z%&1Zl#bhtYpWKtRHmdQ*oe?21!L*9Ky~f@zAt-o=dq6;Q`r*zdiqNyiAY&{{81~3;bZAYnd9)JlUg&fzjZG?VDRbjrtJ)UbZ-#T?PJ-%0Mm4oi{HpqCYbaY#MX0famuv-R zHEDwM52f8{eZo0X9jJ-16dv`Nh9^2VD@_@C4LC}gagx})uc}aEzuopY zKCw1{rOSI^DK-H67B=R+2DGI*#E0uUd_~fdAesofOD-*n_^Zith^ShK3KP2pQH zUEhFFoxxF$>G}R5cdWGxdOK9!YwDBuzJi=-wml7{K&4dFU}A1ytQb^$k3on8~S5m(f$oGtwW?&Afu#=I{=EEy{!E!y}Ap zI?P+TS)MuM3Z$n)j}>QiwWGenC{Egg-UrF z(Cbw`yF0>Mklp}!OWm2OWn9{Jm84A}`MR2KvWYSF+td?=)iFoIyKfljP%u5LCGOj0 zAn(PV!$223xp%4$r+P)II+=8wg5435k!m@xupZAR=IhDnDMP@h>{g&!hO64Vk;f)f z8r?^qOVGKIEvIY7sY{;&^&5DPgP(xniP3kF`Z@gb%@w?@@ix+uMxl2=V>BMOpDE4t zlE;0ZS_P>#f{^_c_~g|q1?ibOdr-~HNFx$dA8NYX87c1Hysi8|5yT7SDNP-$(xN$GA-1j6SCamKq=$2Z z#97?P$es16hM)(6G?u4^=;{R72@^mSoC^Py3C)BfNA(&Dn4 zq&l7S;tCktqXhG+P(}G9Qm+h2ujEvB!s_OyRo%%t_h>H3ACNRxNihi;>fRfbZ73#n z>(A8Z#|*Ee)1k{2fwnV2SQ2&DRN?92@ zp$|W>`Kao#3eqUxu-1_`tJDMI`X-WQ_7Zwt%#_w!KVZVAV@hivZQ+>euc*E(s`FBw z1kxu2X*XQ;Axizo6km59MCv<86~FXv6)%LF4Rv~WhD`vz58r`L_XhI8Rx7}!*DUNa zsX*q=!oyx8Qe&WRXQyQH@y|FP&xFD zQ{U17sSnMbRj}6SSk#wRx-`$&S_!D%3e|Rx2Fh)+Q;9yHv_kR`*6DErH0a5whw@QN zxmXUG^G%TUgrvJ@3ZAuBJt|50RjQs1X*FEwb0sfL1J#E!a_a+aYh6duid4UoQICxK zop1+rywu<{E%`W7j6z}X3M5SqNI!)p{ci&4%w8%Uh&M3uIjsI+Dv)-?o7k1X)V@u4 zef!sNrCL=^y%xHaV3-aI4t1;~l`d0bm51DwYKjGBZ%IGh%RU;GkWRD9Nz&6HILBV9 z{7bQ{xwy&&mw!zM<*$mD(Oj{ML~|#a(f>^KuIZK8T55-JRddUdgG_A=&(I71zyFgG zZ|t1b#^5hYWzuSufxmX5RNG?4|I;Hc_3Rwzm5AuT_+i1pq4Dt!wDF`v6#XM8Jk&vB z7iQl)G|FXoM07|Dy`dgjaSe^46)4Bnupe8G9ybY%WHpw~v;n?;5{GA{*vcQCxA)(RqJ>3ca>7~DXSiP+i=YD-KBIGac z$3_N42Sx`)h5ml1f4uOQ59*$03Z&I969z>l{yKa7@89`%@BQWLy5YvFr+r8${56(; zdg(784jmaA5f>UC7?kk)Xa9J`H6lKSHgk;%N^o?tiwOI5s6XERwZ*Dh3iKaFqn$(T z8o0Tcnf-O2RlA`0U&>yfZqhaX_(sS;*LbpVL`<}6Tufx-K$0^Z|CrJLUDa@$2Yg|Kdvytw>X}i;huir$$6OkpJj*QsoZ1?>PK%y1zP*z3u~K82djR!Cqaa zr<&dG`Y>hwV&fgv#oq0z$~fBguI4N4fqW8z)aPuIaQ5z&sn{}K`rr+mUO zFp!?83JnZ&`ZYoJuCDd%|Mj08LKEX@FJ7Jb?1#`Vu5=Q6-LFngW@c(xTEEcfkX9;G z9Ca`2yiylBfwT%MT|c+~?YM&yq9SSDNk|?P7#0~6&b!AA3;lJC(w7z{5p2;66n*i<3En1d!dVupI@)e-CF+n)wZ4ey8ro=E}gsm@d}MD zFd;HteL}xM${2zW|G!!@B8na`OR$THHw&Xxc(jamagB*b%uZcJ!oLOa)Uo++{sKGFf@+7^V^Zt{=vSw*XUEq zJ;*P9`w)dof^X>X&`1TSY80;RI<@ZXWcDji6aI9R*1F)O*Bl*cI|juEt9^%^;_Y1Q zYCGy8KppwF-+x0#r+5kn8fa9|kWjj$_zQ^}t_KOvZ4a2>9nS zDNFrffq&S?$t*Y~IzHy#j>s<|E;K0W_c8s;C;!VMs;Qt16%-Qk`*;6&Ape-Ue|rBf zV{p>1Ke21w{hsW3v zB+zJsBJCW*hDHCnf)H95o3bPgpIkHHz?z8YP-?@`0d-mA50kmZ4U7K$to7{T2ZcsP z{ubqw^#3wAdumsbC0uAA$`W?NV(na91`dme46$WDR?{!Ugz-zAgBi$u?YXofof> z)=_5FHHBx_qKr3_$tSWBwmdw+4tfXT>P6cyV(%l1+b}qwm$-7~9pM6;JT2r~^)eC%W zJO@AYnaxH{Fqb|2cjK|7ozS>tB&JST0EtaYfX(Y!==VNXo6~y+uJ`>ZoR7{IMk&p> zG>C|=*+-?L9ahVR)$D7Cuy~Y?(`6X0sRgShTE@FL)P4GZ-3pr!Q z68O>hJg&W9B(r)n!d?Ay*;svV88dDR_BvHdJUKZ|I_?XFz1`ekOm0QK>eD!RWxOXk zyvl^FM{M}{4Nb7?_w`WWb1mM%nYOv#XD+8}>dM<~ZI#`$hf8(kn+BWmDQg?^3&kb) zi!eR>e%_7d@HP7GPKLplgwLN&!7Ao<*eGrup3z+Kwn{(4svNV$ehY0S-($iTzoI4S zXbcbgR^Y2m4r1nhTC_T&D~5Srg7(Q}`Qx(sGO_7oeDo|-)b`F7vZ$TxJmm;p-#nM^ zH?@U2Cmm9A-=h1g=iaMLT0&Nj9nfLk6SzP95-$8ylYel(Dwk$ZghsFM?FEOM@g_KJ_iRa z94_x!_2)KMIZV8^7apb_#HEiW;I>WsF|3O-k`1MY*9x3dJ&|1*za6I}O@)=?Qb2Fc zT}{tRp4j-Zw{$mYA+O#q#7|*;!F~QrSiIgsl(^f4&A8K<$AkxH`xd9-BR^x&xnCvj z;v(4SfwiPf>(^MhNuX@Mu_>qd5MdS$bX^fZG2>0&#d9Sp;iRT_fvptnate(7(eQ3f#MVzKDzEj^T4aQN+`Yc2wp2#rKMxR z=;32z^B?tP_;z3M@o6yB%F>6R`HPE> zQ}T`8;8Gz}5(daIDL%?q*jnqUT-iaz$NaR@TD_(wlHyRFXtb1kpUSa8a} zDc5)0#5#TW0-tx*k_VEl7~zYIu9S&$XWhb#S;>qr49M5Ps(Kzwwiyf?j(&iV^bpJ5 zZkw1$T*bP)7=+d9)Z^dtCvtft9_V=5TEz{q&!idH^y4?YWZoH8SFJ3yKQ>{>jb-Ic zpK$!S^%(j$IE)mh@a4^1Zd^E(5B12yw#*-HUi9DxHa3F=37_Fhn*^Dk)sHvo+nm44 zxPY7ChM3Uiok(=tEHBh;1aop?VR5S%x%8|vVM!CZZUdp|UMgkZ=mIqB*;tnIx76X%*Den?N=BghAJ=X%~O6nbfTfx_W86Vid~#_w4b;rif< z`1QaL9Uh0<7bD@DJms2+H6tH_y5{2#u0Z0Pd$954Oc>F|2Dj|;lZWy*V#Pb1F#P0F zvT;02ai}i`|1^^Nj&8cKroDNC<@Fk&&xBpzU&01euIjlv5XJe4!enfHPC1en=f3l% zJi8L(8e}Ek?)wl~Di@1X-7g0=W2(vU7>h92;gZvuF<`}SY9UW&QUankT zzQ6#~4h|;lb%7t99JNJV)*<;ezw5LO*ZyoEzl%N;Hx}qV-;%dwSHY?KRxm7iOpwp9 z`>Lk)bgYb7c?Qk>`jhD61cyBN&KbmxYBXKcT9#r7K)BQ6Uy~ox)qD_I0e*yBXg2Ks%8RZo%p!Ub>yvZ9hVHAzCYm9 z;Wt8Yvol>cFxwfcpw6-3NV$|BzOxi+RI|kiZ?ZLYwl72#dxT;5>|hkC9MZnwQ8+N~ zsknJ@n>e@V3+3tgKz!KyeNnFF%JWA;#ape5DZ05K&MC^hd5sklasgVDkrOv&Vce$j zI{zITJp_-wc!E^wq^feqBiIiw%1N5Cmc5Bz(1UJohO(Y(CJW*ippH>yZ6osO!>H&HEd0<(y~(B5|X$KEvHjU zjw*W{qf!rGO5?7Yd#KN!KQ+bDQ|2?`aahf81}9(errHH;`n48wT9rq#KYr=o9-a)h zN8*&M_AA7S1<{=H-!8xQiP)Hy6Co~&6_1bfu0E?sEbJ|!wQxy33!HlTBk zWd-wQP~PZ*HvJA0r}f5%eY3GyTs&*PagRpv>{`WJRon>5wVY}qp|~0GWsJO4RVw_r zKVm!%!@gkCV4m3IXe9g04cA_I9?mHqHEN#kWYI$Lc|{?Gt0 zeEUg8`~Zt&f3o`nSTm7Hs)>&@}CTMKM3B!o1GtBi7}7?V3!$0dmeu{JJVrJWjgG!&<&v8~h|fbb zSe_3)J*QDk6QS4cQ3i3bbP9hB`D;Tw;==O;-Ez**W}q=P&{!gs2%?y=e-m$bw~ z*iXCf!Z`XV8V>(PHQE8B*U2_#(4zGmP&M(KWAyMMaTbSwgD^{b*{epvC%R#BKGQ7u zt{FGmggCZVGjd&lAiu!Tc8gVggj9z^vCT6)n^ps~?D7(?$xv{_k}J{~`($I~m8<^?Z@ zaGD2H`HXVE@+ItaXNgefp>rxd1&Et##lt?F;sp{eY{uH3ma@`zUlq>s8@)OI_9PWg zHGcwfYmSazUK_ETUHw)MNGs7y-k*W}?3Xj*}d8f4W7b27N%(xpP}3WJMS(Rd85}Uoe8g68N%=rc8bTL;(YZMM1kT|ieDDe zb`JD?;>Ejgtu<{dH>?^ia<9l;#~Deg%c09vOHSMhUFgPR6{AWIQ#p)kVkB(|E)-7& z`y1KxFh?TvPFqZzeF9P*QhEbx@z9^m9bbaAURx3=Pm><7M<`y}b4>}^P3wfjyCl_= zoO~ZYjol0{YmB4#tHCXD-(Y^$O|d?>JJpeXLa*un!`^qmRhcvWf}$u^z+Mj^0tyIL zIGNbNh8;VKND-7KMMYNy6~%%D#ol}Gx^gnH*R}WFdtZCkJ2`*?>h8Ypckfs32S0a} zbMoX#CNq=Ce;G3p(SvyzH?UNVjTF7*7YUCHCTONi)*53x%?+ zRi7}ux0tt@($S%T!fWKk6k8zMLaH_GTfkbKk2tN3AU&XDHs!Xj4Xbu4r_zy<4y}5A zp)(~Cc1YMtOI@oARA%ACDn{p2+)O1$YIfNLW3EhB`b(YR^f-a%zHmXdHa}LV5~^ph z$4NzVq;snz-X?qhAkdi$lkN{A8|4p-z1bRWP6=?OJ%nspt-=G)ZGQyeaht@(veANQ zPUm_fB>q!-0wW$ow<>02BbPxs;|sF8@T<`zK5F3-a7?UzZY<3^ui<#W zs4mjJ24q`;vMWcp7XwF##U@SXkR5bbZ(q!NX2xn)uth`D&g{e5NjlPpI5YSjn{&On z4DL6W_JklL8<;Sp!kjRyT7+jo{`?D+?1MTR5WWhdJ{d^bTeR!iR#i4B7PfH&bygs| z6cp}A7?tQZ`<234=`6aI)_x&4jcz96H3J!8W1Msm$@@FCU+HLn1JWO;>l)+=Dows;^K>Tv|HPeH=;xW_glMp&6HXWk}~ zWKm0dhLUkqI#}sG;!mcqD0TKR>YU_CIItjn&GS7lBFteM5JmxKy`~XXITfGB<=2r6 zpy@(un0TQ!VVLVc;h}_8;*^|)`OvjylJ-x0sj-mFt(LH|GsEzH&#u~!?OlOz9YHuJ zC2)B`xRobYXVF{_eL&&Z3U?wrhSsMz9B%qS|1Oe4h4rcV%4Oc=l-}18zQuRW`>4)W zWLw6nJxOmjpQySYrWHEJj_m8Bux6p`06ORCy3U!2G0DDy@J*~bREG_leH29uwrJ@* z2I{=Ods;8HYhN+aQBUc7GDu-|dfb+<7D>;#{#h~vbGM1(%5M1W>P%GQXtezXC_Bh? zYa4cQ?_^MR^3JAn*+LIW6tU?Lto*V;f6nfC*i!MDAbUrD-l8?q+rE}F%s9=F&75H_ zXd5xjeXMf}Go;?na8=ytXII7bF3t#l6_gk3(}Rk~_n@f8p8kRzE)+L6nF+z{yve0@Uu`b2t#ev2Xa_D>bP`@Q=7kA4f=G#`e&CM-HCJUYso zB6GNxiVUMaO;Y_EkzSVRwE*a~`oKyRyhHJI0bZ8rK9GTF|8NZQ8{|mMyew1m|Enid zd|rkKzSMxtZ?Ci0WbBo4%X@|TQtQ+?IX2Kw%{ILoYMe$LUaxvu9{PSkeo=w;RD2+) zXP}A{ROF&QQp3waqinq_8~c;zCMw9+$Dw{$u%8!&d^*=md)U{}FT$rEMXHhK*|vt$ zw{9FLB-LKyW!a=f`<6`_xDg3{*{Qz2s(;&`vlDelbV;MCrbTo}5B~_Q<{RZg^&bq< zze>ee|9WUt7Fyp`L-Imp=)jMDb)>2c0V*<)f)qPBScf=R``Ot2qdu#r_Suf&t~E^> zX6RNQ^GeJ5PX<;qwUbs9oSmVEZ=u<$56gd+{QtYZ?N<)BwEO?LtqkZ-_D?nivMG>F zfouw7Qy?P+Hny=$%|FnGB1VP}`Ol0PNy{9h-##h#PikbnK2D?!#WM`|9e}wWg>uij zX56&GS2(~=V!jhg*sH~Pxn+Y!u-DFl4Ysd>UyiL47Ed~}a>4I#z`$|zyAw`~{fy^o9V&l(1#OF#fkm&Kd3jj|*Wv*fw`L@7JF=)8Ir{=QKFA}x*$$Q$M^2Ex zjo*&Gx9T96Qi4Bt!#L6cfLSlF4v z(9zdkYOi0x5fQ%fwE0PVa_OolGRhP3T>S%GKRpDZA#1ed3gct9p!J^RkmUC#cCKv3 z#f4^Up8s8J;TkXIH=#Iy2P@#*EkuFq*rUF|}2=n8}HtYj7?TFb{P=b<<~ zOcvZT6n#o}#;P;y&^{y-C%$+C{FE#D&O%+TnAdRKqX+BgyNc%P54F4p;=2W}*&qGZ zgLl=rcz$~&zIydF^!(CZHmOyY2ihly0R^wXTF3g}_}e+w%kk}I3;4Pmg6-N<1uFHOtHVyHK4V@qHBlZ znfOBxJo5?U-No6JLqqWK3oG$nOQnq8=S7q1wcyqWN*4X(BFZW*V#d58XoeNRe%ftC zZ<%6xSMXCQIK!-|EYq#aib0v=t1tU#nyeX$JT8I!yntKW7FlX zGCZXYEKZt_EngTyXqn^eWAX_#2ht^*LG*0H^HZ5DRZL_ytsMP=g~ZINV0 zZoF6ucdRQVEBcg#eg0nj{=r-@w%YUU<6m876v|@Tmct`TQ_r(m$oRXYT~~UBt+UxW!5~ zS@*8VxT^4B@iVvP{Z>{vMHvZ#$tmiUbH>dq)Aic;*&x+a4tVgbo~JL7MTO>2e2W~0!T)1a_B@b?l}sN zUd}COt#S2gZ(N*YK|0u3?rr+Ub-$Sx|NMw^tIa!@>6MRc>iIR`*kvdv8cg~$70n#y zK~mWerUNhBl*?3Bpco*MU1;(ra3kYSNO}`!47l2-2;}o#jdKpX5qBR=f%UvHeA>}S zbV`}V0?y6^SId&{sp?L4cHK@K*K@cGzg>e9KXZCc-nMeaKJBaUHp?DD?qfbcI!Wi_ z-iod4@De`wPXe_!sI{i~2-B9)uyB}*H13%f*L8B?q@(1q76!D=&hWYG@0e8fi8gPm zJ#a$v21i_*4Ey&LMv{4UKo%+0kv@Vi# zo*>yn(%W*uTsJMXWzU=s!AVLW`+mfItoJ;hG_MwjRl5HHVU66;EP5eZdcS}?Q~Lmx zEICgQ&u>+F+WhftbU)b(-9KN~QeRNFKuP#qY!eR1n=Gm=H>3DUM^>W7YUW_lP3u#8~VHV1M|f< z1knpOKgh|qnOA0^-SWxBJy+uAM-ocgj!IE9+CTgZLd~YI(PJ{x47>qT18T@|uSYZM znpXVOEpwhH_yqo0bQ^Rz5Qmndo6>$h9AVjRZ20so>ENy@?(a%q zBej;P_swGn_e%o+9W+&|I_a<31=Fp&Ncuv7ppNQpb7VT)NjNKgrN4%sj$5WS_7A3u zbzQpZAE!I68uh6rC{+J<iV4}AKj|3V`p z;55K89d^|WO#fHh19Fpf`2$1DKuRE@>L7tyVGh z+UCy!@YCm>3CPZZV-t+6UsyG0b)z^P#r`FToqAg{eU8LQ>GxOv8p0;(Qrmw5VC#qT zBYv%49(CQC79k6Gor+!SpZkG5z6pThm2~7fZLxpoO?6Z?Rd{~gQ7UHrw~%!j^ZrFY zsa*Sy@#??tP>)ty{u-?Q`yTXAwdF67YD>GgHkL*P!|e1tO}9WuH8|3}+o+xq{%u=( zII3fPy8p$mhrLD(B`v1{!SD)!|MqR#@Aew?DfJWOlg`Ic`YOUIGq4^Vu+{%RjY}y- zNN8A;M*q=w&66f~-|~c{{jT2b*eBXQB8G||2h)XQ>NB-Bp4umU91%&GN8);0(4@Nj z=S<2+pNl3n=ZdX9YYJsRj>tT}Zy*1AbIg!HhJWkIE`7EM78)ai361vKnjSupLB1NF=qS349;J4V%pItvHZ^DqaCXwPY7o!apP^I^@>`ajx;bwSItq zNs)hj`O{@H(xlbC zKbDz(VZWwbRo8z;JJQ1XpDeBanxEY0u3Ah~Ah|U)dSOqa|_Q<2a0ugKRZD2fs= zgzB@nc=*KlNBpdtdc?R64Z=dGe7vR!wG9pqqMe#7oXq3ab4l9}l{&^Vki;R7T(X*m z{!x?;=NCMm_GX8Al-Ar|(>yh+RpfVq|GVp?mybb1JCrvvh_9BeBmQ~LcKze&DIMBS zvIe?)=%e|kHQxU!U3;dUGY{yWReaZXkfz&$={jU;@*+j2U-d>BGt|#^U|O1X;@R{p z?fS0Nla7%TqhM>P_AvS`B%BNg2j}nEp2(!8g}2rJKlM|);oZs^8H}p;bIL~e`;z)e zZO>~srRn3pAZO|WWYGKhld10$92My88|d%b+ws4ST7xo7|6iugcN-w{nvgM|YztfU zKT3d>u}VOunf}Wh7abYBdp_k<`Y$AyW!j{OztaBoA0nYT<`SNQ@n>F&F;TWygy&`3 z<14WKUteNy%LTCS-W}HtE;U*1KT0z4H9*n{3qJbXR^_YU3UfN+Y9OySnt_BP@~Zh4 z5(aw+jq7zuA>0Z^PMZiNmR7{m_q*r_SH;j3XHy6h6t^!s2!-)jlsF+eM-=6v$7pRyCTov@!Q^b?Tkhcjtv_v zD5mP|9_{U3)%m3g2D*b6cVew2gW;)RqA0qlDd9cSh5P63;$w1axH|kdMpzeoSla!V7$zKkMUU;g?H6)xD9jb=8b;cILs1=sU=TTg)$&+e&{I-AaV&&J^8tQur^0sQoJo=R9 z2i7)2!WprAt4H`-*?lY`&Kh=HDh!^#pAzru_zS|4(ehIR^k!eVE06JY&wu@MzZ5SDDEBa9A3X=7-XXpd_hcLDi2B zrl-O#f!3W9-o^;KX5^C*V{%mCwfR zbjmw1dHP5`cJ3Tpy=Sng(SZPRyo;#6Q;-rH`L>KAw#ZXbQIlnBLCEfcRrYF?m|vDIM{wkfbvsA zMeQ$Dq$ia(Z9L;Rnhew`+QGp|+ZZp!f&7+2H_RJND-6MeLZ{$Xoo$Tdfal*_QW7r9 z?Jcady>Eug@Cd+j&7Bo?&CXg1(hXGLbEB2a=j{NG;v?Xx{VnoC*K;(iF*m9XAH&U4jy1KP$$S= z0@^m`bi@auQP@Rc{GkIUxo7o>xy*9(AA-A8lc(o* zM4BHQ9#KkR@2=W59dtuFSSx%SiBFWjL3h@YaWvWmgvYYCPQQWi#?ylICEGJGMy%&6 z)tq_w?alD+!8<7W@d%v!s*&VhfrPljxcXE99(B$Xh!%|2g?q;=K=S#)Og`M@sFev~ zQe*N()zxCNy>Rlv3*9NBAdFpYD%JYDdYqr1Y!=Lvyod{jlwTW5g^fkhkKA__@P;)8 zg6{Qs@T{AJiNj3M+-wpX+SHKzBGz2_>kf~Y0puf4@&{9f?t+F-`;ktqLq!^$;DE0I zVdV3m$f(n3ye2=7uWt>?C#ZZtJ_%!>&dj;cy~hd`u6pj%OL(<$xjolCWAV zI~*&?*8`+i$zL%U6s}IbC~1}_Lit31d`v8)T2Zd}gmj~J`n}?^P0i<&#Qp>6vpvw0 ziU*JniH|hNC&SKoP;pvUlFb!B`WKbn3@&hw{AtJGl=KJXFF4g_hA7rrhvYvO7mH2> z@}EJG;+J4AhAB*3=}kd?EY`Sfb4ETRB)=e--qDQ)MY`Mol_F75Mh<%3tBlYd>|_kw&a?AgMGl>B`QteJRHY@Ja7$7>8Z z=~j@ED&{2}fVor%^uof~#D|O$3U3#Y<&trPK`++2%@-VUa1M}9QBd4~iV;vgAXK}4_5mi*R;ouZECED_ddpV+m17#=QSA+ASEz-P|Qv?SkB`D#e-i_@Lk z@wTP>U|z|Ydb-eD^nR2!HT$6QWs=WI76>gSpZBiBlTOSB2tb0lAj+& zY$_+omXPG@k;-pB*=C%c*T{EDe(1_l*&MWYgV3}@t<4P}p9TyVSWxL3=974e5$|&H z!=ZbfS>Wh2R>g5hiUH8RxU!IRvK=G8jW%>ed$bulUQoOQ&i`CM#S<{v^TpEpiNbq_ zHIQ!Soy1c zAYu1Nia)rZ#)HaFTl7slsQs7xLoD>T5h@=U#jJ4hv+I5Aq!*BUN_nAEolU^>=@(eAL>C&*tLo^|koTLa}hPR{^Cua5@B%TIHk5$c`FKT3X6{oX^dGN@uUl2*RNz2S?LzYnUH9!vV7F48{5_X^)i zyVabrSj9cCzmqqT4%Sh;3|De|^-VM*Up~S!cT}+n#Q&0XFi?Dgh%28@j<{AtZ=d@6 zEdYwY(Ou8wt$X%xKl5=v4vkyH!|)ZK8R`_*~%uujwupgXntP-T3bqoJsSiQ%1`tCZ6h`2?*$L>Hfq$Qn;7Kd|j#pgtC zq`eu!#vRnhFKH(y>HXytKc#HolyVzCih-`D1j!>7IZg#&$(~pC)%xL%vPNPqB`11a zTJ%jWq5SFNHF2DDKA&WGT{tetg=&vo(rk`2{4FoV0TtlgX1o>iw~S`(_o4EMvI>;z zW#ybVqH&8{Nc*86{t;?#Rq9gPpY`!zsk4dfstw=qD8q(pf|hEn(xN z;!?#!oa%d1>m0U`sdGs4f`u5pm)l?K3Eq!NQ~b(uWcf}b>0h`TGaJdqQt=Zi=7Fm? zF^cV~wdedNARVitm<&eoFxX*83ZprxI4-H;SgM@djq}RgVxe?DI(OImjCe-7!hR4Q zSwDdh59>M^lu&_sa{b_1h05wZ(TqV4bT zaNVFd+2OrmzsqPz@(pzM0H=mr#PkUPipx@Vw60XcVr08KC4cR3Ui>#FFw65oOEwRu zwZO@d7ihg20<97D*l4I?CUj4?pI{x!EQhEG1%Y%tqcw(JUj|{5!Mo9Hz$4bBeF75w zwdU3Cvxl93<7eWV0mXYr(qk^l#`PZDi{fUM3W_D-BPw4f{k2-1l~jBfjcK(oUNcs- zo9V9Ncxcc3L;LQ46~(>$j#f50P%&I|?xX$lh_dr^v|n?Il|dup-+=V7tCGR;SDz!D zBamWI^nPtxMpzUpAG;zt#~2lZSEf%Z~SsbrY=gpqDS z6$?T>a-O?uV8(kQl#H1Q^M?6GD^Qjy68;MSecI&^75)D=ZU=RRAsvm;pTDy@9#ZdY zWb!kUsxku1^N^C;KOx0@)PE zra(3Y{+Cc-V~j;=VE+&b?2oVWV_<*v|7WQnvjp~M^m3=>fqXcrsyrjZuxi8SaB(2z z+3^)n-|~S@yYvtYs^ZFRmygmWmEDeSR(wU%%SG|dnfB1h&I3yxGL=RhJK%0FYw2_K zJXoi=$pG8-uy6k+IG$XNUmSP{wmd-en4><^SXHF?ka7{+==o?{gb%JzJsh5 zFdGMs)?xiA`@zF-IXvvtKzMf~I3YIVIrkbr6kGta69~77o6LO1R)m5x z%EO|Ii^PhZCFO#hjo=p9iVw?sV&2OQ@XFnb*u?Y>p6M-FeUpmZEqXH*+?s-0qOW4g zIDsuo<>nJAj+4V;wqSh63N%g$H{aaXPHy4N*EcV~3-*shO;}^BVdV`wpC{v!Gs|$c z^)!)^qZG~`c^>NKn2RgAnc{>|Q(#7HN$JwuOx7Q4#G4+^BcFV!2c_3P78|F8!_l_3 z^8Q!CWiBp)wN&J7?XrTL#)A_cmy^p!R>D(bTf(gpMWw@sm+a8F`n*rQc)X%%DhpPu zC!eeukMXZd!y&uZ=ykLyZ>?=5U)ijNGjFe==e46Ebc_@G(0C$tNL~oVdWMM($IK}A zf~kDm>XleNa)n$vWFf|O@1$Mowh8w6*~`+_&G?d+jm^Swh}eI$C8+=h*o zw8Psz{UIr=kMO={BSkf>T61~u`b7QMSB-a;uV;>thniVPhh;nQ@t%|7ZQaqLzSntN zd%{Kr6gHPd8ZCym9h(cI!!@u?vx?l)FDEyh*a~T!px!?>^rM(@@(`A*Z7c3Qt;Wa1 zNI9yPpqFnH?Chwy8OuRPLe@@~qMIhDfvp z+vR!X`LiBye6^3X^3E@5EPPRbyEI<85U5WaaQQKK_72A@&hsFDmBNzv6I&juiwA*hi6zQ^6%-JESqnx$UZ#*$=FMA}>z>nRUkqa|l_iPlkqWCfPybHi#mlV!1<&v3!c z{aW)+*GNumrQ3r^@?yQqto6P=!a84n?mO(92&z{Nh{wgzN`+*AtGy(i7M~V01$vig zxc?q32ulX-4IR=t>&pGnL|(}=68kJFAWPS@kPnSb<<3FBvpaX~Wzwx<_|SNwUbhUb zvmejYU!-JL*SGj0H83M5=jV{M#)Wdy#e86^W-|J4HzdB~ugN#qbV^A~xgH{{iZlY#1xujDRLMxr zh1-aH;NiEPY2Sawrc_AL$8HX)Jt2sSY+44y$W^7=QjWP7*tD4^3!LPS6(_8M`b*35 zgAHb|OTKyd>|KQmRQvNk8%PT@3MT$$V(q!AFvA7A+f;Cq4a=9glp$Xukuc+s+f)CMUFj zo#P6inwQeIoi;y#_}gxHG;u2SF)qgQ2Ht^zE(y$Kq#;(dcf>2b$HS*qC3uo!GUONQ zwc>qK(tA4~p_ZAP`^OZFopAsPR@{jNYfS|j3nxC2bq4hUT4xwIT8jaNCqZPPvN-zH zDY3NuXm+Pb4Potek7&;&$q`q3py9@j&@_Ix_Tdo=*=_GYC1-L>o$1aze8tY`Shjs{Bz?;|MNQPsTAzZ0 zbI)Tp7i|&M4lV}TSAxN=P{Zn)F1h9`LA;8q zZrsvUZjnb0dff#27O#Mn#`~e|$pv`G_cn97;G^gU)p8b9d!wYjxYfmTu*%*JE9cxT zJ~=*iS%1MXh2#Uq8{NbgZ^jBM>)FikNh8v;H}LqeL^zPQGFQCqJ$x?Sx3%JAYrx1$ zZ$RxGpI&`JtBW15w`RUJe#Kerw)dk}?a`(&iSVLRQ5jUC6fP|@6X#B_(c4d73UmgS z=1C~FcY&nk*L7s(GG*%SZ)Yl7xcB0JhIxuT8-3a5G0nx@q0!KB))=VU$c1YB@*a`oK01AK-|$H*4m6V6=P~?5uCEJDykvy%U=8 z_oa#nTmK}uWm?;1hf5b|J!%Q4zl+|Ol;Ym%0z$tsINfj$`t*Lwl1B)r{jojYw&IvJ zXV;=UU)zd&X^}DDT>XpiI2?x_l)!L@PQyf4hb?+pAgd?n2Dh{hXncM;r%=jkF79=m_G`F{|5`vG&me9jF~2eKTBap=j~$ladxsx z-(0-Sq1|Fl*}3AS=};)zzcmbUE6$E|v*r`?RpT3~_%o*$-SOgpIqY`>2XM}vQ&L+< zq&qexUs7S|8!I3BJW1{h6M8Mef@4iZqg8`i?7`-) zyvuqHzKmba3Gt!=>Bb&;fmL1u0Z<1X44X{x6{p2ZV`r#0dpN7ZU+HKpl)uspYgo<@ z7sH#gtFM>9>$!=pBQ9@AAsX<(cNatMqlckOf!(m6`DC!^QV*t%KzwYL#KW;Szk@R>JW2qe1Ss zlE*82W@kLNK=qIZklSIK@Z4o8mmB8c=jJWK5#>B(q1*$pP4G#a)zAQT4R1pETuTuz z8X&z(6!L$Jl_uL`!^7pEeL(|B@`3fw9B0)F_UG!I^ST$8>OBcj=DKw&SHQ$ANm}|2 zLs~AP@lt->SA{Tt&6D`)`V$tnqdXsRcO-@v{S6n!cZc@ykr5x@tlvD)J!Pi0>%`A6 zti?*^H0c@C?tB1`CvKxt? z3Sp~>1YBQ#3t z%O@E2(90^x_148@B`cD=82cRz!$l{KLgV|Jp;n=(xL{R0jJrII(V9z|yNl6{mcr#l zeLVZMs4Nu5@$~Zcc>GNq4#>X>y7Y|)ua?)bBcFjvUh_TlWtNo3-TGW^PHTwe`d5Rd zhi+({x-7)Wm%8v>*5@Iv!xbpM#{zd>OaS-JmE`NW1^B`G1-XO$D7p(>874MAj?3TH z)GaqmVE1q4l8MeK?Ap8$lE%(RmL<^{mK-QUJX=H-iW!%3!6i0Zi|?re4o9X6S`!f)J z*FmAehei9fWJZ2?Q? z_rtZ`AdYx?f>F&svGx7p{NRN{+9oe@Bk3Z!zu6Avw`L>SJvfYo3VWb|=n1_$wr7fe zd~%^t%6{R~QzwI)+=y8nV6nbMfQDLb1-QJL32oLpFTE0VuH^mHe_}%`ADd0z=?a zlXWnCl@&iZ0Oa%a&voVfon(cFd3o2FEp*!=hT+PAeHh6F#_ZtWkn$Sa7OyImF1D(( z0u94Upv8lS!qiJEiA>q+?1K`Or;FmAeL-v25Z_qB3Tb%>YXXKI=Ye!f*Nn0 z_3zMmsi_Q}@e+#ZLPk>xU$lI7?dv5}jQ+$vNrqc$}DTBj)^K#TQ+g z3-KrK;HLdMQ;5IB`0ac2dReV){o3YS(P`%NdAQEQRq+Dphfqdq4YViYjHh)m_mo&X zkk}ROpRbOe<30iD0qi&{AJASPPMb|fmrv&Wbu!{9^6$hucYuxYi@>h-6YP1f9AA06 z8jRoG5RGG23BN@*F%0I5V>hpXdSB^>OW}Rk7PkJ$en`mIT9W=oq6aoBejK-L(lDDY zJK_4Us=_p24Ee;(Fq~>D5bbpjM0XtO<0$gaErLW}9CZ0KwAS1fJ+B-=wQn7Nybc>! z)DddDw6Dr@=c&fT;aJl7u{6JXY+}*jFf@l$HU@8Jw3eN#w-KJ6drNlI5xo6HD@ayw zZ{TFC@Nkq2Ueu5eSolDyLfON;Vr7!a?r z-aDs3=*%QM+{ae>x2%sS+lYDX_rb%x&b-^=@_g)w3rYvWkcqich(}>_UT>VVun^zU z>^Hs6C)s7H@8cB)!TwD{@nHRN=zsSsBi>|W2cgm24LIbKB@*4CSjp?m`*{JNwrs_M zDO$28U|_@kST?i=Iu@#dm%p3`($jFQRztEy&H>qtocK%khqac6MLp5WK%H6s!a4Ua zB>gLfRGrM!x*h6yj^0Cp*uC-pVrUl zFR9~{we{bV=V#YyGQU#)+N}3#e$qrwq3;)Ke$pbt&6>>L{w)o^->v!nU{+#={S_hU zg3b3Q|B8^`ZrEgL{x_8T>n5DMt(Xi`0wy~%T#-9DG0E)kkNvJD=pkN!lYY{Fy7iRk{$q z@M;aNwVh>*T`XZg`Ss@=!X+flg>ZzEIPlpyEEH1^I~Ak+&UF`}jc$WF!^_|T#_VvP zWza9GCA)Z`5HyH&;$$c4`uRJ=E3DyTEdfZk>Kjl^Mm zu1QC6yQ@9fs2%D27A+eky`ebPhCHwFR^f0z(nkDL#~aSgs{pH+4Xu|m>iekE_NLUJ#^qPfa?_=MIR#IVQFPGKf zcVFjG7#8!tI|K=Dkc2k@;U9{p6mRgL)1?KSi6qSddcVId2n$BGt2dAg$bP-PXh|+P z@i8Af=oS(WbA!EGAuK8cVx!h$ibrWA%ohlM!Fii&v6bV^;lP{nYOV3^qgs;ALSpLX zc5pMiiaH;&TN@4ootIg;p+@q_+{z+H+dYtcpd(dI%PmQNaCH_{-x1x}`~{nU&b-j_ zV<~k8mxL1&mRbN_n&u#U={@srxeHupFVH#9-k~rf9buW!h@VBmn-mtywtL6&4oNzw zcDOTaF<+-}VOFb9afM;>Jmj<9Ie_Y8k>!Cvs2hf)@tO7gpWyuZJKPD3J0b-N+lD7B|yJZJK)v^4}3l55uNkS zflsk>NVt-;9Q~dZ51Y$6R%^oPJPCWsR8*LR!hqD=_)>!)b-qP)zEtO7!o;M)-9LV= zhv#bDBs?q@75=C&cu$L*lH^F8>yXZMEI8*D9FXG@6s;St-P^5!IOrldVXl&NC@PH7 zrS&F^qxx4>N{$eRj!##Z6r*v9c(#maIuzdd`%8uW(U}qyhI^3m1X4j2Hn2q#dG~b! z7C%~;zYz6h$J6JaP4(P_!PjQyucj!vfI)>7FxzGoh9`^{Lk_kU=VQJynma0dC~v@W zJx1I6y&of;qx3M)T1h(Ra&?X`T&gT5j8_uY#|R%|Go88t;mrz<6uN17x#DY*6C}(O z94uX+PA*&ds_k63H6WHNoS(39xx=84Y*VQQoTfS`gy}J_;zjhni{=IA;L4|zw<>oO zd%nI85C#kT@-Bpj$8yMhE1cQ+W=2BMNZ~XF+%c^sBl-(E$|px%!eJI)+x1O5f8v@KWj3IIKlwB)Mg) z&08p0B-~;a(Wo(3`kk<6+9$88?@14~=7d$ru_HRM7M;hk4GoNWLa$wPVJ^US-{G zMtcsg-cKhYf474<2efk9+X(0s9e@=Jog!aRFrFNM7`14LAb%Ygnl8m#0}OcShc=vS z7PR#@;}Z@RQ7pon<2z%uwvHgui@?GiYN%JNjO9?H}LAIOuSk03? z+OS4pBJ75v8TndFc>7jmG1u6&!u(Y+zHVhDa4S(jcCWS)bG|wWb?>(Y!d`In4nt|) zq?T0s_<=Wb32*hmgkJTrq$t3Z4MKXFIfgDlKey-b>fvS7xlZHCF3O+08x9`(fP}%q z%y$zNHijgZNNXa=wu1JHrS_l;mx0w1QSmzM+fw-e$o3F~{n6fA2bvXcB?t@Dn$78; z$2tkqBt5lQklxpI^&Kk6Hc)H9$!Cb~9Hx`+%7~L3ldmg)>h9!(IVbZm<(s&0tTqzP zECcO8t+T?c74{6u&qC|Wtatk%JxjhZrsk|uyx*_aU~Ktuh9Fr~*tFU|72d438?QcU z$JG3+{UU|-+IG^q=s!L^4sC`V2$NN7{ z89d0B6W<~EH1zh4vH@=fT!q;qX6tnu?Xi5ktubG+?GVH>TUN19ThY1FRN-?vMfn>Q z?;(9JXg}nH?GZ*Fp?p_r{K^-h#;*8SlK$XiLr8_A?;P+>?I~)n(9PTYJJ5bAqg#$( zYVX_KXCG8QyAoHMA7x~>!Q)rW^nNqKt@(uRr*z~;V-{^z>j?MN`{oS8rvd41oY8y( zl5dLmue$QVAn6*c7`jJc*=Sbht{{9BrspdvX`bXmy@=$4q3;{g-eZC%OCMsiHz4`9 z^?2#%9OY&8xO_-D1qmC3@bX81_D4b3C_JsJOCj5kwc;+&W@m)L3)Q~JN-ZcN3wa9{2{n#J_Se5C^>@+Y$Lz|xfRGFxx=xpFfoux=x1@lHNj-yH z1_KNX2IRPqr)+`Cxm-=^-@8S<=59Z0p7xb`#Fvu2MuY`NdIwWFVS1KQLVW8| z!+BbtsVSQ?jLbH5fclD`Jae*iN}f$+Kpm;Rs7kwT>#fhg?(JYb^7X>6ML z$3&{%d(+>JG#eYc)HItJ2A~qL|8%N)iu(1?R;dyk=Iaw2Ncp<8Rckpp*Q!F3FwuYO z?W?CT5g-G_ZNGJHm)6R!2erufK$p}eX+-L3qA272({!v7x^1A`caYK{~&uAJdf{@ ztMV9|pQ^9#Wf`)oH$?t*`C&b9m|eX=B^}CCZTRnNFZ?G|ZwMT2nX7Vw^-pzZ0BPpl z=^JbP;Anq+y%T%Na6}~(BBSi}6=Q+|Vp8|vzpnkzj?y&SYdl*vb8F$<(9OMGI}cB9 zw~novv~g?e-LPJ#w%_`Q4)%|9Y)ds(A|jOpd;93~ou`lD`zPNXPz5LS8&JdgdXZ0W zYOBcvc`ML8>yJlR&mWVnXKkd^NQMo}{_nfZxE=m||EaB2ZH&Jhubt-GjP)dH;~yDD z<+_PVX(^(~APNcy`d)2=3M2&TQ)HW@KIju3lujD;GN15p6BB)#9^s@lzb&sV?XgjT zWLS86D+`274}*mU203SrvH2;FWb47~DmGav!l#y9xBQ<~#m3N%&O%$pm}X^ivgj=- zlYb;tfU?vVnxQIJe*RHpe`ct2mG(iGZ!No$M5TSG3~*b^kjS2vb{eXbMTK2#Q&k!n z+G&#O-It0~am}}4HTsXUd`9C?A8Udl^`lU2^@eh``p&Aav;6+QUVR(-s{DV24MGg^ z9mu!QWW7o6yhHPbx%9nFj&eb_Xsloq^pZLLHc?>I$=|p{5XE~Uq zRVWLKOx=)D55ehsQik(O`oTRiBr2S&>(tiz`b>@?WJEcJL*Oz0-(9+Yte^mM_h&y^x?U(dlX=o;N^!ASmqXH1#srBhdGSiRf>8JAa-+g*S zs?+-SQ@Wix?)D@x<#Zm?_pHRHfiDB($0hm>QP}M zDo&N57x(nf$bz)>i6omS#NRHG>d{!+2CFVq&uPD>X)8O0N6`!@0sWM61C?DV6&R+HD{|;`UeqLlJ zD+A8!n*ryQVe;WI<{`$0Rt91a|rcW;h*;Tv*LerIcS($Z<5XtJylm( zr1RHh>9Pw+{rfKmn5id(_(6}Kz6uG*ne*R0ym2o`(B^5c%ebTsy=KoE< zC)DUpWSP*2$fC(YmY?Pw(BnyI*~h;Z>dY?PsmWY=GP`tV#v}6&6;HpX7x;!xW~N_u z>CXS=r90L6KYxyu2Ki6sPt4!XWS~h+lk#~l<}RGGT#gGlcF`BvKiL%c??Hhgab?xU zXJ}whBg4jLR3xrU+Q-#1e4Mj>Txl{lqG{;W|JvO6e%4NdT+^K;WU$4D#+6bhBv;i< zmTi?#S5;hGJ(L=jkgh2+6#1~%1GfaA1cef28{}tcVv_c)ddyz`u%jwaY8e@=FZ6Ax z*P|wC%Z^BO;-r>05AsVNmF@R`W-0hu&(}XF$|r3s4*EB19BQkYBViOU@*P4ZWGHmE zF2p|~Ok+!svnp>K7Oe>ijj~hCdqhY2`e?!ljt=rmRq753m{zTP!$LH5Gq=$rZ&{i} z`lmIcIGQLQdMcD$Q3|pmSk6bi$6iCI#_ok-KMt);+F0A^;p|Wg8#L;1xbk&!h&=`1kkq50BE= zw)Y`-r&~lsm~vXigs1*9Z7mcJgj39li3;}#iVRAdLWbAT8G5F;|8eWPOZYo?$R{j%sPcZSB7GG15J*Bys$>AmaFHSvX$t zERpY5jH%~^@8x{c#XtcK|tcRMm6MK$|oSRTX^C_?>y)u0~^nE5i_-P}(H#}88>)-VgQ&07mk!6(l`P*f%k<(wO{?5V)KfLot zIrysuuOC+;Z3C?K?{9!b;)2O)hwz; zZGhhx?nkMl00nYCgpg2j8&WzY$hSdQXh2X;TfOQ|Rp)8z=cxR*sR3W9K1yzx(OKIildrZbxo*F?YAsWrN^`76 z@-E-@h4il5X7Oh#h0xU`-5;63Q%pK__D?nivMG>Ff&XR{*wWTL zHP@pL<$4@rnlaa74Q;hr+Nw4G!&U0)Mfe5=Mfv+iMbp{VD=jF4ERf#*5e@`;&=%nD z7!wlg?Okng#ozE^-p*KZVIs7nwAqiRPK1Ry^5C4q10iQ}ezy7Sb`e-Lo)wI}3_h!a z@oVP>a$2h}S)foum=J#!ieB`Rb(XflJ)`Tw?s0?op?014#bOI_=Oqh1b!?)HnSMhA zoUI}z#J6W{-uLF6Znoub4R#~_8$0!3ShD|XQT2oyzs)D&>@L1gX7?WPVaGjDZjGVb z8(5v6s6SYm?1{pck?UaTJPp6Pw;smSFq7k#_K;@fUbBjMa`4)oqY#~T=xi?7!@_`b zx?`sG_`5!rQ2iJC@&+ET?ZjIge#DHcS@SY&R`Kf=RK~)gGXIDxxSEqm+sm-kq7Yn~ zY$U_R=8_j}?C?#M65O)R3A7bgu*0NAvPY@L;QgeLJllIG>tJ*p+cjjcabz_d5%v@} zlzBB8 zm{*whSiTluWNA5iODt>ZVacm3a^t;TEXNBjRC;{)8pzjjE?iqkX?0H3=g$|!!_g{* zaq;F`=-ur)I+@N#@7{KiQUb=6a9yw>^kQ*RNsmGe+RV z!f|Zcwf55Dv9YlJxRu=~JP~fhEk~EmrMY`~OBw8)i;pQb32r_eF3TKGRBf=z`hvW} z`eJ-!^Bydrb7j`bbw74-zAhG+kAtnopIxu+-O2oN<&yB|p)Q#l$|>bHpcAFAJ6NHN zobIs!#?|}-r$h{dL8mCK*5rQD$*LCMew+-&#_fCk!gQ2kbRvw(N&>9;>JOZ1hZk+fHH#h2tBl4BU zaW$K!Jab%f^?IRV5Mu`PV1L$Ffwt~>xS_iNzcA|yHkzH2cQERXd5l_7 z#>QMy_4~Pm0S>MvwVy|o;M&UjTsu80Bllf63CW!A`YMd4zH&8P?S+QFPs4ig?qY0TYZkEeI=%?FrzL)1 zFmk5ibH2IJc{np;3akS^8ChwLH0Uq_V-5Zfd+!~U#j>RjlN3b}1rzsS;5nuZ4uCVtLc2#$0Ym*IT;GADwc|pr%tXzN%ue7yD*Kg|!ki4w4*t7;$t(lBT zt@4?HWkXCzT!YI}m*Op-b#U#PwU_TxLK;EsJ`q75=Kg&=viLWZfavy?Ax=Bv`REa z$NG6V<$()++_?`n>g|SO9UkKNkXkY^yn_^he&W~D21qfA=ciehR zAp3S;uyhaDz#^g-V*5yE9$Vzg2{Yxv9)^&)H(X9@S(@g*vDXFfUm&+-cx^C>#_Wy; zJm{mdT(YMj-{(_<4~t0<{d{XeV$4eB+xfOG*8d(B2X7Ly=v6!Wa-(tG)z>9)Tkb$k z?&9v&Zv@qZQV{p}Z=5-N)vqxns}EffZ+n3EaTL{axg>`vuQDrO|%ti0;~PWzsA69bd2rE34z5w-ZU z2K(6E-zIX2j|Cr65BRV#C*Vz%H=i37iQ6X_aKc^L^w&}Nl)i%%JuX1H2ErG2@f{mb z?)b`i`SdE*^fG+p%>+EO#ZUg6ze1ciGGA`Gcb{1-?97Q1Y3wWU+it1&#dHxmyE{qT z?@)p@(LYo9$QJ#8+RiUrc&Mw}paOr|qa2@d>@Fy-uHyfZf;S~BnKK9pBOs|$YzZHkIxR)(!>z^WnpeOx{~6BLIHU6m|1t}J z@*c|_Xa*~X#lSLpMU=wM+(ZY38-&q%YJLenXYdvqF2d?OQ(3ie4P4U-AS1aEUzTbi zX>2jXt}#=*;yw5?PEW7KUth80iWk?v)t97g;Kf95d3d8)UQ~tkIH7Gd{$PJ&-R>`^ zLABq}V9?Ln`M( z(&GuYcN2d%!$&pdz~i4DQq9E{vj>7W4Q%@rtA2xHj;(}AfkMq~gXARGl6G1gIC~B6 zT^@xhhkJ|^Kza&hhU($`hJ|d$waQqqexTBK+K0XGb#oR=*7r2StAl5&alu*JPwMh3 zG=ZI)T3~MNC8)4~;!_qD_247Vo}jTE2*m5SVd+&bb-NGC9fx4l%hM^IG#~H zGtvXXXtbU%x*CAv#Rx`ufw{(0S@HdNTv)aPKe>BWvzw(-G19yr(z)4(JLRx-D`!qW zYw_zc;lK+AN&EsH*2#*uu(w$-Jm0t+<+j>_`lze&C0n;CXbN~fHQ;*-Tfm_$XXq7+ zfwIcb)-q)0GFGbn5Sq_MeADYj_^kaLidhf-Dx@hW%}{lqF$^l)j_WVELEf0|(&Y6b zB)-*1H;D>w$H+Qc8p$$Cn{nbcf0(|*uxazNhwm{7V~>8FMtvtZl&dE!mhA((e;Td5{ zb4EIb_fBIam`k1k2n+b-#RZIVkGxbUG@kp3^p+>6_##imcUfHn$~E+UR~v^WE(fF0 z^w?^nzNGv5={mQKC(M#cyR(+-s)$-Hwt1A3*u2mIocbF`@=RWH=g)v|1unSlWeCn3 zQCjtlSvM(Wr4K1?*~*Sx_mfJujh)y4$9-NXKG!nmUvKThUlS66{0?6c*&OWX^<0%h3%tjb_E(I z4Eq)j6HUIM>Jxb&_|W<$oLD&$$lD@e0lvTb8wZq{1K7z7zK%%4gDu{Y?z71wJ;5hg zl*T1KOR@RMK8$z-$Wtm!2!0Kg;k%D#(SJdGNuCgtpQN0Ego^r{VhKrCz~Ymy1kIt? zdAx$>>W#6SGzutffB*bmR65zIYhI4o%N&+?`5vBIVh8%017PlaJ?Zv3iSqTXj`S(z z^h*`n#4-M8*5^E~GnglgKBmFt#r{mq8+KYkxN#fFBeQzd%K&*mAWl)^Esi}(W`y~I zv?rL{^Fi{moN|{PZ@ZDLVvTr5mIC@UhQN^p2SE8$(jkP|*O{@M4O&>`V(s4PNE`?i zBdSAzdjaLlSlHs^oslTCSt1Rutq)|e7 z!+HyBMbBGRHHuOAwDd9gf_SCtDNggD%-A8IcOp&Ay^3u$_iU))4j|tFjqMzu&Hg3i z1=TCcnh4U>c!=#G4}V;v81@XY+pf*LaE0c4BzEyw0CRp_fzE9!@*Ss7V^W>h+Q^%g zc*F5+7+p(L>S-Z8(snb#LsXvWVnKbaYnRz*>G)JAyrMA?y$&2#o?GF%tTN7&KVRJm zS{%*5?@otxV~Zz>7ELv(X|&eL7tBzYggtL91By@5yEm0?LB%^N9!LkV!wsC}z34i4 z`=F85HeO>2x3s&vku2cmJbrw^&yJm9~c|(r=uRh~YLl;a8KLy0? zc<0kEjXb|RZ4j@U(m#<=yP3lO4YdrAv^@Gm8)8P?%98W~s=5kkcGfv(Bb+Q<02U50 z(8ZEr<+5&ArQ^pEJd3JOm+L&uaES2;R2Z4?=@mrx8^QNoG+@)ySKzr?3&?M!fLtVKp;9Dm><;?Tb)h z>aKldB-K-3P;ezlxCq6;j>I)}IQaxwzCe#Kr7HH$o~<=O10Y_ax<>~&ZD%c@`jzt5 z;Ct{hTO~W_@(d5qs|M_la!*GX$0%R8s*&_M&<@FeGMY201>9rx+s?xdert796O$87 zCNXoZ9<{eOdqJv%qLjGbFyparCx2pxW#bI*F$M@uh&Nsgz^PT?=}S20mE>~hI{N@ z^g1ZjbtjN_0*X_mCCTS{$s^yp18HkH&o>iWu1m&oL)L4(0=6@=DK@~$YEU$AJCa9Y zO1&U_C&>NbZ#Wi#i>82cx^@J*Pv=N zY93UbanH~JG@cJttmvNH+$2cP3-b8Fq;EZq^b9onRt8sZG{%(jAxK&Xwtcfzb)b^m zDEd$psh&eMjis>5p>|3ArujfKPW;Viu0+|HJM&sri$EF^Y+@TI)R>XR(V|~ivhWp~ zC{C@VO@$;-=MhbQ!iB#6LdE>0?blh-ej84{fEA6~%M|yMc88bGZYX^yXdVRVb1`ja z8q)X(()6h6Ct)v-QyuXHUiBZvx@4_Y7zgB=B*mzg!}TqKbQPyulPY#pZR2aeIiUUm zVY{H34Z3^xK~)E$_`rp+4ONXx)!~%B6jVDE_gkH14QI!J?es06Jhi!}u@*c!UXWiZ z!F!4mP~6$g{)JFD=WSSD{%|afmhE!kO4Kyvjirjk$)l^mv%H#;G!K#%2l8c#Glfn3 zE+C(eZhf7wS3x}0d1D9z58$guHMM#R(t&CNI+J^c1!+i}xU!$_>R=;TulhXbZFV`2 zbQhdAHDc0yB=OosK{Yw@P`UVaZ7IIW`Mx$A&4Ku}gu4hEMCrXgVv@yNM)-l2N2_!4 z_DEh6Njn4SWuW;N#E(=1{h+v%TRILEq-jO9dX2cM-BCPflzXuL(k|lD!#Y(%BF)eG zL2!xhCjZJ6rXJ5ZfVbUhGVhqOsx~X0<)sSh6WA9I1=2c#&actjGpZv{p5*||In8ku z*jmm(()Vz%PdTo%IrT%u9E6?w0;$hBi1N)>vbPp#3J)}e=c-nwuxRj}I-u%L3V(OU z(rapS(joOTdE6$&3ODeLM+2&TM(aqg0_hmtwT6RupK_M?WLN^Y@BXB%TJxQ4oR%bf z4~}P~)kOM{82p#lJpOa{f}PI2(SN;z$4+M#88u?yfGD*Og_iJXBTD1|-JdtP4IM!b z4$#rYwZDGv^pD>=(MAN?GN~I*8xKa0`Ezjpu|tRd(?qO)~w+*X~mX*4x?Lvb+(PE z?SDR|Cy5QE%Z;Ed5`Xo_K1^)RpZ8RM-`d>~KYS*NRR}-E3PpI9WLugHA4BgPJv+Xy0e7}jK|9nWx zG9zgFpw71WKQ2St1)aieL+v7?N7#lBwY9gmRX>dy8%bMQY3%-dFoCw7(%9NMjkX;? zH!s^d4Y&Q*OZ_<)?ZFv7W=P3C!hg0*&4kXjSE!wjf9p`X7dq4~eC(*XZ>SAEA-!2 zwCtvqtpArv(4&9<{^#!z_-;yu&qodUN7MSRA_F8snxGQS@%zjpNtUZ?L7IIt6MPbUKsd=euY_`ddd%@ zHo(i)HRQcCAK9n!R0v&@2;ooMfuDR1F?d9yYvRqWc6@V<6_8=vO~%4aI5C|A{nm@$z2eD-6gI)}RbPt9unjDK zet`+MKSP&}ZTP2BWx&9$3Rb8+p7-6j5p6$ZLPGWWkX0!M>pjSlKZZ6}-$TRQVR-$U zzWlysh-^|f4DA!G<@U1GvBmb<`1@{IXgzZ=W^d^)KTmoG%U9-WH@mLI^{e(lm%*7h z<6WeDcP9Z|^_t-Bn|aW)zPZe7bOyR7yUH62{rI5PHZu3&D&30kB;Gzc4%$aoKsjI# zXe}A`TWlfQNBPJfL*9$omIHA`!(eqCUhl*)JeD*M?S}V)gPDkDzLu3+TllcseR6Ts zl=6H@#4h@C5safHO9EEIJ{2(IL1YaNrk#M04I@xtQ;;_l@UxO`=E zIP%CG-?(;xD*I<)gXw{CuxSHOW9i>#3I7<92#uTGg0^2xJCh1;cV#a%`j<+A#Cd6jUlId;RBcJ&^Rz3B`qt` zc;k^riR@rjtQM(z?lo*^6}clklG{{_1{DXFyc_Z*bKA+_Xa*l`Q=!F#EwbA2PV!7; z8;LoLC*IoyQ+GQ<-1QXEdq_?Bv(qN*++h-S@vBJv-i)Ez27LH!8&-+94}DgXC(swhT z8RPlPIRWg)oLV^hP87bnGEi8*G{X(CFEn5M9x^UJ7GL3}r@-=6WwF}vvlv~_5hHaGkoB>f+}QaujITOE+O4kv z4RXvSeGm85XoKbN>r36ibU1F(oPT@A(Z#wl9_wuZ4s`~D$?zCDPbXYTb~|s}L-^Xd zJx*r#!MCQDRAYU&eua{}i|8~%(tHcwnt2d##f+=?&376p=WcGpSIMUkVwl1YF4&;r z1fD(F4s1a~NjQT2yVa6)e+wK|Wh~w;?<|gvFJ>m4Gvw?h6~Q@ksmMK5N(;%Mj^cGs2*5|q+4>Tz4feOb|&h)VV0iVyB^K!qI;j@BO zaB)X6Zn#;V_ubH2)_*Y)?rH1Lx=bd|(c6KIDhsCfkZuHdA z7~qao;rwFq48o(^w4_p%%iPlP^UlX`{!t5g?Mnm@CbPE1TfyzreCQDtD}%mKDgV-H zp<MNe*iFr+%)8)*fPM>dA{o2;t=bOol(%jn*%hh?Icoe9P9Y6xYARiiVe=Mhh!BV&olcn>j*G8g&g;-AEGQ zXM%V^@h0~BsG}TJ{{_}PKAH9C12U<3EqJ~x69y#rk(&Y+!wfSk>2-4$%(<)KiP!bj z+$oF!`aTBaZO7}kYRjUU{lRX2X$Uu}EUjN0VcmO=WN)h?>@si6wHV zzi7>^dNu~T;Wue~I9{t_sa3pSAS&1$LSd2sln0!!omU<1%q!S=i|hw>eC3B*n7geW z-!y+F9z1BR_ytWA$%7{cB_4H^#MaB5&5+%k5AZuHx6sE((;XtCWHC!FAwra9r) zHcPSB74%dwug0Q|#~^X$OFpD0*kWPoX>426AKaHFF~SGRO*7p7%8*mv(W0V{_Ic-E zito0ZI1;*gPKG&~z6s(2IodIYT`8|G*00tF!Vf{ZL3VL*0W)JKk=No)o@sm|IV)lg z^GRK+qa2c67TG|!4@VxhqwPpzn8JF(a#r^@!RQR8+a3(~En`l6VmHxsOIVf_3#ehNqpM>M~l8cDXcG zUYyVsSI-?IU)EdYjE2?9`g3CxTg&zCHlyJ@7F0XNy^Ah&5d@orh;|`Sj*-@j|kPG{Dkvmr1 zr@x;@pFEPeNlNO@#F4x8<*y&LqQ>ZB{;q^CLVZ<534Sr*vf$06a69Vc1_mJ-~#dgMKrKW7OB;{ zqDhm3C9&W>zKI~MhFY2Ln!fFH@zrs+h>R;Ip4!x-m^#eP2Hl32^@WZwJx}FUAOCq` z&w=$?#XVQqi^;USl@o`(hoov-603v)JV97l80Svs^#go9bep0?(tW%{^s^4IrE zK$tIxPejbMx;Xb(rpiM!?LHi8)X{OeE>Qouea}!%yjjvd!iEx!x;l2hFgN?6aGCY* zmWEyy4M{uPL>2#L&;1~}RC%BnV^1GHK+*xi)BFx*G(XLf>y(AX70vn0=p52PiCXo9 z^r=F{T)NgjF zPdVB5uwVmqtPozl6jGXf)*+6dXLsRE{oLy8#szrro>kMb}dr6?T7KDG0-evyKY= z9wvO`vO*{|)kA4zrBSudlSXMRds}i7kMi<6TF49ArfcGriyV1&8B==L^V^Z zs7%7d~I`|xCHn)vDFi%K^VHkIHL%^T)C2%s_V2xiaEpwb*P=iK|UB{sS-3fG)S z7QxX18{{Oa_A}CU6sNKLY*3h3x@8_NjjzvlnQsU0%gfnMx09^?i?=wi&rmGhKAsV_ z;HiPPG~!#W?}lQy+PEK##pOs`EtKEbn`tIpPv)aTOLG<@CW^z>k`Z>}vKJP_-R*Q= z+gQl-u`N-JQ-jsJ#Q0&0k&XuyPo!yheCL{S@S9&6@g=@2e-kF&T?`(t_P}C%3p9W1 zTVXL9EBr`9g~Pg+3&F)Y2}$pRam8htsAtbL;oT6$`|jSgYMbcr)9cG~!Vt{ilINN;&0`ka8V< z49zF5dx_LmM*0ArJ{|x^$M`}3w?yJSH+*>Lm8ONRM#VKdXH*xry}QFct8a|(LFS&+3DTOdV2{02JW2XU z8h`MRG}dsha262OqskfO>%4PwR9=DWiTAJ}b~tfMB~ku(hVEF)Axvo}g#o0Ian@Wb zNx8_AOW&gH)}KUNzA;ytTWKccuM`(fpE?^V->3$ppBeEX=5Dhafc(&lOk z2Zfpw$_d@+&!eHrx^QrazYHC78?ruS zVDrRJSX65(s@!v4-yRAFb)zv|0cB&Csa!+iTXYXy1H`XLJ{Byk>f)8lEn#h4eNH*W z+TU?>L&eQMSou)j^qk+*KFA$03b!UU?4;tGX1Y^}UX63BO?Y#w)Dio)F0vWP?xMOjH_~ zG!OIZeS}r@$U{}vX*T1O(k?(_$VpdfjUQ&J zv^pNq-$*(nOPq@~kykDsK!~a;{U)x5&G)ZjEBm#0Y(jkz;bzNKERr8!s=vQ1_fT!2 zqfnozywh5h<^eHLnBFrRR!rN3y=S@Mh@*O-&o@Kqh7B>kiA1X&1Mru7WgssCwWilA z@lrMFXh`)O;_(#Xz+uW?1LYtOyPXQ{HqhIkr+7j8U}rpUV9Ud91>%7sSK${rQIHm; zyf_J+9ISY=7~1BYytSlmMc$h!qoXG7nSD6747yg(m_h& z(RB=g+Qlhe6z*fat*&TLy8}>uv9_5nnc|O;%WG@i{3zbUxNEn+n~N28m50?D+jPah&QkW6t8`>38ea< zgCyQ&6!Jq;_qSPqs=XAAqp6d=#5QSC+P zH;U)3I?@A39H^t39V#E}o$~_ER9=JRk?Bp{RjDpG9*VbrhC@NSkoXaG#d@+u(jqu# z{fucXh0dZ<9FT9)+1_ZQ@X)2+3CsFaTb_S7Mn2wHS1x`(2)3793Fo}3@KV$CB;}*xAF3UCd!6%2 zMukgtenpGoCkCok1Yee?BIyUE8-a9zsvAkF!7w$J!;g4?d3!_Y5;PylpHk9K(wi_-nkkJelrB>^{?gQ*>Hv;FK0#Zv#e;Zs66;f?JqAa; zVN|~rHkAaZ8rj6Vri3%~<>vb#C2>g}Sk+7*CE&N%exW2`#XBmsCzPhQ)p%NT^Gc-XXA6{}U!UeWu?s2RW zn4oHg?7!dc;P&5bcNj%a6#vJ9{$D#B{(RKTso(Hu+I#S4?fT!>{hPXadg+?FH}m?( zy8l0y_)EV3*QN+tCnwsDK$|F{B8N}3ok+K9mTY_YZ}$j{iyA(bZlnL_8om=f=Ytv- zMz5Far)#YK`{&F5v-SQzt)Mrb{aNg%t_%*f>;2~p^dyjfF73O!{Bs%qpDX*W|MA&B zm-gNNd^K|57`5BtzqE2-7;WzuNRRFMbI`x6|I^Nie_#K1|NplBZ*)|T{{8!(zenKj z5%_xq{_l;zK9|=2v1Y!Ygk&VSHt7Dq;>qU&P1U3_N&6s&m- z@xGH0jjPH&msdhWw^OXm6NEzzf1r0^SsavDmWTM?#Oomyc<6@4Fsir=e@JUq^J7}) z9Sbdj3R@oQ&ib@uqX*e>E8hTY^91;c9zpzAXsC=id>LxKO-9f2U$8*Sg0_40u}=09 zuv~f?7A+kQhM7yD)TXlBc=kdxa^8xLP=!~%G=mKue-RwN45hUaBk8<83-|bDVZi3K z*!*lwVdZ;{o%NWdJL_S{XEt}`r`Tm&)-GMNtKz_|SR%BH8v+;42MB7nbcAHw{ZxX4>^)#teL!C#&80*Q3Yi;F*GLaaws;?OS&5E~f{Q_^? zap0GZ&BLdI&I6=~d&Hj4 z5~mxQ@N(__bgk!E(m46zsizULB5BBm7Ai=)$)90w!kXx_8g6u zp>@?HNE}k1TQ2PgRks-kw=##Y%eEEJA!3dUx%dlc+%SB_4G3(u3*uMb$8t8;@O{&f z{KB-yVt5@hPVM7c`g_aYua@BW$T%2MqmHDw6b_ziF#q@+$Pi2U_{a(}_qU@Q`}2$L zy2X85*LtfOR}8nvp)q`jHwJdZ{ndT>{KiFj&W;_#e!5+Xaspp8n~!fUUeR?Q7l7eW zgH(<|wPx0w=9-J}HoVW}>O3XLK+dcpMb9%%(4a#g-}l`er-~su!`cgFcj+Vz=|K{Vch&3+L&AuNqNE-{78qe_*XhZ&oNrBo#Xhf$hvr^+c^Ga#t2-| zaT)At@D)#)_bqAbg+|lCWWSq=KTfzHsUM(qEdvi@yNOnJI!lk?y>aE`?MQP5aBTqk zzS)Q}e!CatXGxpd*LfgL4QMY1CC+E1-Rf{^3m617OszIfBtcrIn-F)Oa$$sJpz($MGG4UcP|9W zE_(X>*0OB$O6A0)q9B5C5&|?ioLR6ooGVG@*CoF+_y=!usD>kTQ2Cj*7 zr1+b`o7>K%$89v{hW&=%b-1eaUyv$>8Qo*q$y0fL6Fr#{G!s>W40P}h+iPj7~c9UJl9c8et8p(Koh-I-nC zZXE#>zntQQ*(aSvg=y^vFHzVmGuzjJ@27`j@bVC@ut0G@|J{{P+dqaoy{pD4r?Bqj zS$xQda&q^9@-nrkhRR1?^F#*HcRBS#QVz;fw5~Nr8mjZj?;rZ&qu|w|-u60md^@z!)e{xc z8pxnFuh|NhF#K&f8xs>!pnuI@nt4`Lr1)n3=WMxZ!|T;`DSocQmEK`;_t}#ev2hoM zHEAI~zZk>j$XP0%d3OHW5-cFz!Sw~l@IX=~3mHO>JIGB}cm#y=y!Lrh8L18AS2OkG z_SB(lUh#XyUl?a(Dux!gNRua7n(^#%a`m-(oUl#|sj+Tf$Jps&l5-Ej+JPt*c|qmw z>!D7z8O=j3ZtA=QQp`dG#V1hg!lU3CB53|9B(6uVj#pT=K`P9y?heNtYYV~+4s(AH z=X3&^Kc?_C`OINhv~3&quQ^StRsXn(KN<%kSa4|zqxi#dOUsLLpY9`ZE+f2G`HhYi z8Q6N>ax7mZ0SSlr;CIdj}uqH?Mh`J>Gw2vyT*zutRswKbc{yW!P3i?=DVNH5Xa`6 zheeL%_`W++2vb7Y0lF=m#ttdB36~}c;#PRz;HvPbgg?9s=di;8Ukusxc&UzsZ!9NosfQYDxa(4#;I zbIw}%QO=gvQNHjGXJ&)B*LZEjtR~FMuAc~tkHn@GokgU>9H!=N$5K0~JGK+er`pNA zt1Hm_R^s=@){zZ5T!bSjm1Nb|li*3|P1?b>?(l^7M6WTvSg-m!p)}m}88h+s<^j_ex@={kJGoIwt6*fi&+Q0dr5cgo&jF zih8|M6;813ZyVxLp9Wfb${m|rsBov>Rlk6$*G^xZf`f)dc++}KI6j!mPF7a zjZ(y%h}AfKXKiu!MOh$xMT^n^g$>rDgQpF)39k-q_MgDUHnWhhQ79hi)hI}3m}$W` zUUB1k0ecx~QHA%o#3_ayb05N{HEqML231r1Egwx?f^GJFEYPO(W`kWV=_6`wS&$tk9ED}Szo{NsIv;^D$; z0w`zU&G(Z!rAdk&q{65@NpSMOcujHC_kMaZh8_t*+LL9rUx&WOn{X8ybKBOG&7rf?ZFLxDoVd|D=_~^Dv|Scq3;wyV+|t>+Fs|x|}QQxBD8CM_j4f zkQM_4<0b=XS}mw+hMoP^|QW!SA*yo)O>s%|Oxy+#|mY@6~PrY@Brp z$wyJ{dqdX&)^fzGJ#1@nElGM<#h*53;x!=L(Ot<{z|_22+4h2^KAVNQ&eXy+8sP?v zf4@^G%%o$0@|u;Jkqi&7=i~8hN8p*e1t-jAEeC$^YIk8W<--F;UJtytCIewRn&_6O z_UM$R&gs=dDh#9R!1NncK>z(5rTMVqj`xgoc^+XqkS;@|{YmqQfS7G8V6&adcL+at z7F%9i%KWG1Le!30Kx2oB8xK4(1=HqpfN(jFJQgq1cfnty-7&XtFH;zzJY|E?$6$WU z5kXucTJ_orhW(zfhdWMT#nY9!NkJ66J5fQ7?7sySjuoemB9B>wQy&yj+s%|m1>#pA z-o-OL^`+<6;mmbk4@UZ*O$zbnN~`UBxPaPdz`qRc0$QUaAdSp+40A?Zt2p@D+XO=D zK1Sji^zeC_r?6LfUX?FN`K499%5fPdRUC2BG_0|Wq1-sD1GhP|90sQ!gEt`)(eL_W zyfAIB+_GmgX*-?#zIFmAZ8sn%7DlZs7Kduz9pxabyxdqE8C{b{Y;;4)QSIc- zZFz^!`H}vwfa@H`DI8ZAqH>+5InRcPpB*G=X+gi|iCR3Y3mhgo#{P!=-V(d+Gr}Ij z%W%Sd>USJF+G!1hPGgwVWiX2Hqewnh>wC>i=BEwE);r5d6~k5o=BoIUFHSuL!g4|S z9f-r&yxKODQ+=p^$H_z31NkkMluX|8(LH7_4}t%=bawIUVa!~$P~kNr-=0f81xR~> zWrg~JbO%KKiU-1Xtmi!lYt?TDb$U49>3uGs@Q2z3{q&7W_~y>44CT#qDitqQ~ojPkX_Yd9=0=DOGQkhrnLJA^+wRH9W51-}sw z)|!%keMH=}64T4hh4fcv;lsS^c%|HDAl}1Gzw9}Al9Cz=)ovv57Dn~ir)nHJ@>pEe zDwO9T9Zwukl~eyq=5zm>U?kq+h3_cid|@r5w2c(hRZm9R+EvN9>@ z*Y$&waB+ppKsY83*WL@tFC24!()8@x5G33bCnnFwml1S+xoDd+kiKTr zZU||SCY0woU^dgsd|?=FDDz5C?8*(U{Z;M}uE#OTYjhkqU&X78=+*&G9{4O2Zqhu< zJ+`}$^fU7qUJRt;fUuIE%TE#MmWM^=NK565*x@fN#gp!pRD030@_MDi8O5?jc!Z?s zImIa>ttrL@^h2sG2sX?>c>>ZozOd&r2de2{=ew7HxC_m>o-Bl zI~=vLcZm;D^}gBO4w|YP#q702${XruQ=qxgR_m{VzSowJuMd|ssZ^qDUaW!*>pt=?Ls&J?px{7K}Z&6_##RnAEI0rp^D&wtX z4N>{cbc^@ zLtC!qg0O_@1$UIsgB32fMb%I%<>BE_a5Pk{_BxNgD{kD`fK<1WkdOlPzX6cTpRKJxkfT>%v^K2$<*T~yaO>hL>h}+Mu1gu57Tc_9(CwfH@NUXoN$k9@qJWE~`_biw> zxE}LqN{`trWlvtMH%yvw5Gh}Ts(n%oLDh@7U&GEgto>qjO`v12vpYzq*82QoqXxXj zk!(=&3fteX&beWv4PA)a+VHRUwo;A9Le*Qy}0~CAO(M~oZd__-g?)91Y|0@!PGr|Oxa3n;H737yIkHbdlbLEXw`|Ss% zzs)-5qU(itopIs`pm`A+#+qW;u*Ks2q!ipfW-Je88x`*Y{fw3mcf-2EdpB1XS9%1q`tLuM?f-{M@qdlMzbwW#9?<_EO>&|K8jn z>F)eLKhv4}4Hz*r(&x{E2I@Pg1%C&}|CJ^G!GC)6|HJ+MYRAUEJg~y`ulxU_^-4wm z-&^+kyTyNxz~3YA_Xzx78iBo~eEwsrLhRW8)vXFHb@Y#7-SA#8G&7E?pZic5Wb>Oo z?7`+nyi2=UJo3qNjCpMeX;-d-E^IIJ-4hMQ2?p}X!qK>r-XxH0y%oFe>J202b`=p* z8}Z*igW>ygvJ~%kLy!%ErR7O@(1f0LSAIT*bT;Mv3Ldb6Lx<&@DqWzlwVz}MPmAzp zzo7Z|>F831Zh?7pO&eBNolndt(rk}cTrIw-kTG5s{ zd`?e)`DuO@SZtXOTDeB}vtAAyyw(nz&-sGIK`Z31J39GxMh@;9aEU#jTR`80*OW&J zeq-8{XBcDy(kpi@M336cToNzg`BBs5y$nPC{%nz`Flvdo@V>HqH~biDeM(Q(H)$fO z4~)cNhc<%g4`Ugo^TAyAINc|UHT-t;E}&~@saC=2Pubt+1)HnimnZ!;mmjkxA)N!= z{cD2D;akG=?N{t)eisT7az)kXebCqbqAs@9H#qaG9$#H48xGby0&1>?S3HYutAD`h zF|}m#D+ZVmpTTYfUDP6mGTdt*(d=?2mM;~d#uV3V{RsPeEXTc@&LK<*z~Tzl+^$Mf ztjE6UIzKdKG^YH0>IE?Q(Mp7WERP9eFRNqW21fFCtUtA}wLH_;3EEb($0?!qyv+M*^6c+CS5lzbS&mb%E4(XBAMw;?w+ULe!rdqJJ?XK>q~Mr`+<s$6Sy}l7(*w~(8@tY_xZpk96e`XVAd&?(1=}Dq}pR4#}b9xrw;##G7 zm2cbN!Nl6qbgmvRwljt7z>lIR<1;wT-wf9-XMp{uDVUs9Pi7a5;PsButqD%fs_*=K z&Uf~dR~8hvjIe-mC=@HKvw~wE9dPTLx?HdD9c-Oc6IGsVXjz9fa;Pkwf4hoy`*Ydp zU&{o|El@vj_-$_){lkuzr8itqY(Z~VD^&4yqe3ATMGwcUmGP*sX-~U6JlFN1Hrw$K z+qgE5@}stVu$jtHZw_N`Ju@B*g_^NnX})o!v)rGyROH_`lhyKj@rPYn$mpCbUFy>l zkn?#Aw3w32%U=%TCOK{Jv14z%>a>Jcn-~Ur-P`LPeYpTZ13Y<$hu?LSi#m!C=IZrG zeTNn1#A4ao4m>E?M=Z54k_sEE>~%xJKDqx~8ru?A0lVEO#YeQd4r`jdQuzQM`~8Bv zO;vc`9UbJmPtE20@mnz~I7yn!)u@DHqA&#}pELs1p9iluiir2_SS|l1%(Pvp=2FCL zt|YT=mFHLcSiyUX>(KvK6g=#*AJeXcu%bt!dEbb$c^*iAJuiDOn-`-sy-lDmrIF>obo@z(>(~|8T zOISK>Doohx&yS>x!E#RivSVO6Ho9ji`~P|k<0}X%E1OXNeR1;1+2Zym3}*UD)&%s4$v1p#<;h%@_-oi#vmAOUh3#nQJgh_HI*-o+M|e;+RMO zSSyY$tt8)f?<(E07L?>qyhT3htn#3H{cI#&^Q^pL1zhd33O9T7f>j^l<<3BTX)@|0 zOs){a`h^tZCVC49wVw|=RG+7nzK^cMM#9rCbo)#B!%+A7J*+d{kDdsg3yq(*l!~J+ zcvj*xzv4lDO-~i~tYd4D;=NCHscOL|wU1KY!#Xc7p>e`Yjj&FbHvNRNAGG1Bug`YZ zV2Y=zKbpmeU&MhnS*+OdH@JQn$`z*PZA#WXT*lx`rX$x+F%lE@(vxD}mf}O7nV_@g z0g+BmFg9{Fw##lO?LYlsic<)?kj5QT*ZaxWZsr(UYZB-^yAP**EaY1g7ukP$DT*r_ z`EZ#aESU=_xze-14~c71MQr#d9dS24Enk+$ch{Ju;Wda_wMfJ|mZ3Im5<#2xfajgr zK-`0Et7S3$l-ZK5$J-itNWw@NIAIgcJ8y;DY@~dXv{9U?u@ffekHd27f@$mFRy=P! zmvCpi?nZG3m~gT=s&Q81+2`68Xc_FzAI&_4tMAyr)WtiYf8*~eR!ioF#aVTxGL;r@=g8mA zeX+MNN8jc{MQCL`nZ5iiamp6la>+#69*@sGa?Mo69j%6&;!d!44jow4(4%PA_8^|C z_!P$-NY+st3nz;@=sW8n*z#(UG#7F4Y=x!p&fyeHo;^?7x_>3<=FdtyFTm&Mh|dc* zu*{4s)-f;_+rtK6nNP6jY#(;%@p?9+!Xvn8-2)Rwh`hd)8o`2Ri(q~w6X`$XB-C7g z5TEELf(+P(ojRR{F@ekQ=VJreA$^xf@Y;_@j~25h1<4|-Z#G+Br=}b>D-zm_sR*G{ z6QGk-fP7M+lJp#Voo%?a2QE+lf9$8uW>gfB zpeO>8OsI$`Dn^W8L<|@)BfG0HVi?7U5i>?GVa9l>apsws=bh_1=X=ke_k7o*Gr|t5 zS9f*QT~&AW>bB)KU!2jttL!bXr~wq`pM#*HC*W}^1Kpd>z~Q=f+Rv@0qFwK*%sebd z^oTnp2G^M-JER-P(_6y%v4YdEO(LV6>JtsMIG>dm#_GGaa(*~KLuGLZS~ze zpEQ4td_jyZ+hIW_hQK0RF=1z*hxO^Wq@tQPJ`BWF0m8$hQRG-x5bV& zeWB0NBIbX%gWT26p9MC&$hK5-#FjM$QoAhku#VjQVhpAYOxC_0dK@ph8ptgtTFLoO z*5U58<1je)D;^0r47T_6L|*P@ah2BL-hSpSy9T#nlWE)X3XgN4R*j`#`*NoC{_-g3 zbk>vrXaqCZ>5nxk$MKc5o%J{{Ac&anDmyJN2Q?flE& zpfWc)I(fY zaW_ny>H_c6{KPm9T}YlB&OgnZfWy|;mzGpNBmEIegL;zQ4V680F5&5;Z-iNPTP&>A zkT*K_k(stTh6(1y0Et_ zZPR>WDadGgZdM%7RPq}L6{lRq&U?)HH#aP8`i*cAbKwwQ^wCt9nYu*{5|M znRZfbKF0aIAp8-7809@M36PD-R z#CO(%d44Mj$=bEj>P~PV`3t7{wZ3NpZg#bY8=4L<&!!&#{=SS{JeINaMH;+$`7F@y za;sZA&DO?l^2fY6__#=iWL*POb>_1^r$>s@5g$Q2ye>}j9*%0>2nW%=^%6K`T!ds( z5WMd@I1ElhCyz{2_Nx3tl?EQ3H(XF7=-ma8ssPS3S04kjAg+6_@F#5^1hxbCyskcPSuYiQL+KBaw zSmKZs`1AV`ymX=lZ)RTx3Tvf__woVhZC@O3vjeFgn!7DVWBKP=xG=mTH}EMG%7zI0 zp~jE0yxclFUdive=F;72xH!QTvaVLeM(3ijnZ7P)ZazXa_k>CKV_GFRmu>vs+8?^O!G;YzUQas5f{&j1GDOM zLuP0KMfAdr6gyPoy&Y(eqEipSd%)7H?VG#F?VIVyrD?QZR&)xyzwQIk3$29my&JD? zz~3rQWgkLEiYe8upo%XjmXMV^2H{2%bLnRzS@h~Ora!U+&Z#48MH}$_^?N|}f}0Z3HKa3Id$XFHe6L`Mg<{;4 zSbPzZffQT7t@umY&QltYU$GT;0t3;czcC)4e38A4=vV3!m3>b?G6pY9O3)6|TJU?n z6@yh=5cwUmQoS=e9tG47t*|whKaywTt_{O*_QW`*^Jp20YU^QW&19@Nr9WsBY9V1c zJ!@jl`c?aYDjr-}Fj_qIrhRofOsAuJJhZFseMg#m(p^t}#`+s0zd`tMUFoDoXZb3j zVm6($x^i%%nfOsZ6bR!WI&PDoSP=@XHo&WUu6)_k>p(UMMq9^&Rm<0?=C| ni|B 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

72|cuden$tSDR6Mmwd^{Pm^(!Efw!OZZ3q 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

~5tlw5ca=3mMA8u3e;+C*0+2{fp`0s^#ng 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%0D%%2)n99ic)dOXFFlOT+=XUawJPeYDmzdZ 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 ?0%2ONb?6`FCXu{6oocd}Lc0wnpO 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�b}&*tmOYK{rC7Ef4O-B~c}@O>cu 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:o_|bmAXx!_)xC2j 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༄@TKKfclPdi7B|jrXg0Dz7xhR_Z34Q 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΁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 literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/CodeBackend/Sessions/session_1.db b/backend/Agents/AppAI/CodeBackend/Sessions/session_1.db new file mode 100644 index 0000000000000000000000000000000000000000..b1229db1e36d71e9017017bc2c2b83db113701b6 GIT binary patch literal 61440 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 B*E#?I literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/CodeBackend/ai.py b/backend/Agents/AppAI/CodeBackend/ai.py new file mode 100644 index 000000000..b3568862d --- /dev/null +++ b/backend/Agents/AppAI/CodeBackend/ai.py @@ -0,0 +1,238 @@ +# Back-End\Agents\GitContextLayer\ai.py +from agents import Agent, Runner, ModelSettings +import logging +import os +from pydantic import BaseModel +from typing import List + +import os +from agents import Agent, Runner, function_tool, SQLiteSession +import openai +import chromadb +from chromadb.config import Settings +from dotenv import load_dotenv +from openai import OpenAI + + +from Functions.autosave.autosave import autosave +from Functions.autolistlocalproject.autolistlocalproject import autolistlocalproject +from Functions.retrieve_backend_context.retrieve_backend_context import retrieve_backend_context + + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger("SprintsPlanner_logger") + +class CodeBackEndAgentOutput(BaseModel): + saved_files: List[str] + + +async def CodeBackEndAgent( + OPENAI_API_KEY, + user_id, + tipo_app, + descricao, + user_content, + commit_language = 'pt', + model = "gpt-5-nano", + local_to_save = "./", + + ): + os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY + os.makedirs(os.path.join(os.path.dirname(__file__), 'Sessions'), exist_ok=True) + logger.info(f"CodeBackEndAgent Agent") + name_chroma_store = "backend_skeleton" + chroma_store = os.path.join(os.path.dirname(__file__), 'CodeKnowledge', 'chroma_store') + + total_usage = { + "input": 0, "cached": 0, "reasoning": 0, "output": 0, "total": 0 + } + logger.info(f"language {commit_language}") + + if commit_language == 'en': + prompt_system_direct = f""" + + """ + + elif commit_language == 'pt': + prompt_system_direct = f""" +# IDENTIDADE E CONTEXTO +Você é um desenvolvedor backend sênior especializado em Python/Flask, responsável por implementar tarefas de backend de forma autônoma e eficiente. + +## INFORMAÇÕES DO PROJETO +- **Tipo**: {tipo_app} +- **Descrição**: {descricao} +- **Diretório Base**: {local_to_save} +- **Stack Tecnológica**: Flask (blueprints), SQLAlchemy (PostgreSQL), MongoDB (logs), Celery+Redis, Pydantic Settings + +--- + +# FLUXO DE TRABALHO OBRIGATÓRIO + +## 1️⃣ ANÁLISE INICIAL (SEMPRE EXECUTAR PRIMEIRO) +Antes de qualquer implementação, você DEVE: + +### A) Listar Estado Atual do Projeto + +{{ + "autolistlocalproject": {{ + "path_project": "{local_to_save}" + }} +}} +Objetivo: Mapear arquivos existentes, estrutura de diretórios e evitar conflitos. +B) Consultar Base de Conhecimento +json{{ + "retrieve_backend_context": {{ + "query": "[descreva claramente o que precisa: ex: 'padrões de autenticação JWT', 'estrutura de models SQLAlchemy']", + "k": 8, + "path": "{chroma_store}", + "name": "{name_chroma_store}" + }} +}} +Quando usar: + +Antes de criar novos endpoints +Ao definir schemas de banco de dados +Para decisões arquiteturais (autenticação, validação, etc.) + + +2️⃣ DESENVOLVIMENTO E SALVAMENTO +Regras de Implementação +✅ SEMPRE: + +Use nomenclatura clara e descritiva (snake_case para arquivos/funções) +Implemente tratamento de erros com logging adequado +Adicione docstrings em todas as funções/classes +Siga padrões RESTful para APIs +Use type hints (Python 3.10+) +Valide inputs com Pydantic models + +❌ NUNCA: + +Hardcode credenciais ou secrets +Crie arquivos fora de {local_to_save} +Sobrescreva arquivos sem verificar o conteúdo atual via autolistlocalproject + +Estrutura de Diretórios Padrão +{local_to_save}/ +├── app/ +│ ├── __init__.py +│ ├── models/ # SQLAlchemy models +│ ├── routes/ # Flask blueprints +│ ├── schemas/ # Pydantic schemas +│ ├── services/ # Business logic +│ └── utils/ # Helpers +├── tasks/ # Celery tasks +├── config/ # Settings (BaseSettings) +├── tests/ # Testes unitários +└── manifest.json # Metadata do projeto +Salvamento de Arquivos +Para cada arquivo implementado: +json{{ + "autosave": {{ + "code": "# Conteúdo completo do arquivo aqui\n# Inclua imports, docstrings, type hints\n\nfrom flask import Blueprint\n\nauth_bp = Blueprint('auth', __name__)\n\n@auth_bp.route('/login', methods=['POST'])\ndef login():\n \"\"\"Endpoint de autenticação.\"\"\"\n pass", + "path": "{local_to_save}/app/routes/auth.py" + }} +}} + +3️⃣ ATUALIZAÇÃO DO MANIFEST +Após salvar arquivos, atualize {local_to_save}/manifest.json: +json{{ + "autosave": {{ + "code": "{{\n \"project_name\": \"{tipo_app}\",\n \"last_update\": \"2025-10-07T10:30:00Z\",\n \"files\": [\n {{\n \"path\": \"app/routes/auth.py\",\n \"size_bytes\": 1024,\n \"created_at\": \"2025-10-07T10:30:00Z\"\n }}\n ]\n}}", + "path": "{local_to_save}/manifest.json" + }} +}} + +FORMATO DE RESPOSTA FINAL +Após concluir todas as etapas, retorne SOMENTE este JSON (sem texto adicional): +json{{ + "analysis_summary": {{ + "existing_files": ["lista de arquivos encontrados no autolistlocalproject"], + "knowledge_retrieved": "resumo breve do que foi consultado no retrieve_backend_context" + }}, + "implementation_details": {{ + "approach": "breve descrição da estratégia de implementação", + "stack_decisions": ["Flask blueprints", "SQLAlchemy models", "Pydantic validation"] + }}, + "saved_files": [ + "{local_to_save}/app/routes/auth.py", + "{local_to_save}/app/models/user.py", + "{local_to_save}/manifest.json" + ], + "next_steps": [ + "Configurar variáveis de ambiente no .env", + "Executar migrações do banco de dados" + ] +}} + +EXEMPLOS DE USO DAS FERRAMENTAS +Exemplo 1: Criar Endpoint de Autenticação +Sequência: + +autolistlocalproject → Verificar se já existe app/routes/auth.py +retrieve_backend_context → query: "melhores práticas JWT Flask" +autosave → Criar app/routes/auth.py com blueprint +autosave → Criar app/schemas/auth.py com Pydantic models +autosave → Atualizar manifest.json + +Exemplo 2: Implementar Model de Usuário +Sequência: + +autolistlocalproject → Mapear models existentes +retrieve_backend_context → query: "schema usuário autenticação PostgreSQL" +autosave → Criar app/models/user.py com SQLAlchemy +autosave → Atualizar manifest.json + + +CHECKLIST PRÉ-RESPOSTA +Antes de enviar o JSON final, confirme: + + Executei autolistlocalproject? + Consultei retrieve_backend_context para decisões importantes? + Todos os arquivos foram salvos via autosave? + O manifest.json foi atualizado? + O JSON de resposta está válido e completo? + +COMECE AGORA: Execute autolistlocalproject e retrieve_backend_context antes de qualquer implementação. + + """ + + imported_tools = [autosave, retrieve_backend_context, autolistlocalproject] + + session = SQLiteSession("agent_session_backend_01", db_path=os.path.join(os.path.dirname(__file__), 'Sessions', f"session_{user_id}.db")) + + agent = Agent( + name="Agent Code BackEnd", + instructions=prompt_system_direct, + model=model, + output_type=CodeBackEndAgentOutput, + model_settings=ModelSettings(include_usage=True), + tools=imported_tools + ) + result = await Runner.run( + agent, + user_content, + max_turns=300, + session=session + ) + final_output = result.final_output + saved_files = final_output.saved_files + + usage = result.context_wrapper.usage + total_usage["input"] = usage.input_tokens + total_usage["cached"] = usage.input_tokens_details.cached_tokens + total_usage["reasoning"] = usage.output_tokens_details.reasoning_tokens + total_usage["output"] = usage.output_tokens + total_usage["total"] = usage.total_tokens + + logger.info(f"Agent Final Usage: {total_usage['total']} total tokens.") + + + return total_usage["total"], saved_files + + + + + + + diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Arquitetura.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Arquitetura.md" new file mode 100644 index 000000000..b72b0119e --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Arquitetura.md" @@ -0,0 +1,62 @@ +Padrões de Arquitetura Simplificada (Front-End) +0. Padrões de Arquitetura Simplificada +Arquitetura Padrão: SPA Simples (Vite/React) +ID: ARQ-SPA-SIMPLES +Palavras-Chave: arquitetura spa simples react componentes +Padrão: Adotar o padrão de Componentes (Pages -> Components -> Hooks/Lib) para organizar a interface. +Fluxo: A Page (View) coordena a aplicação (ex: carrega dados), chamando Hooks (Service) para a lógica de dados, que, por sua vez, usa a camada de Lib (Communication/API) para interagir com o Back-End. +Vantagem: É altamente modular, fácil de testar isoladamente e é a arquitetura inicial mais recomendada para aprender a base de React. + +2. Convenções de Nomenclatura e Arquivos +2.1. Nomenclatura de Arquivos +ID: CONV-FILE-NAMING-FE +Regra: Usar PascalCase para componentes React e camelCase para hooks e arquivos utilitários/lib. Extensão .tsx para componentes e .ts para lógica pura. +Bom: UserProfileCard.tsx, useFetchData.ts, apiClient.ts +Ruim: user_profile_card.tsx, usefetchdata.ts + +2.2. Nomenclatura de Funções/Hooks +ID: CONV-FUNC-NAMING-FE +Regra: Hooks customizados devem começar com use (ex: useUser()). Funções em Libs devem usar verbos no infinitivo para indicar a ação que realizam (ex: formatDate, getAuthToken). + +2.3. Uso de try...catch (Comunicação API) +ID: CONV-TRY-CATCH-FE +Regra: O bloco try...catch para chamadas de API (e tratamento de erro HTTP) DEVE ser usado na camada de Hooks (Service). A camada de Pages deve apenas receber a exceção tratada (ex: um erro amigável já formatado) para exibição. + +3. Arquitetura Desejável (Front-End) + +nomedoprojeto/ +├── Front-End/ +│ ├── ... (arquivos de config do Front-End como package.json, vite.config.ts) +│ └── src/ +│ ├── components/ +│ │ ├── Common/ +│ │ │ ├── Button.tsx +│ │ │ ├── ... +│ │ ├── Forms/ +│ │ │ ├── LoginForm.tsx +│ │ │ ├── ... +│ ├── constants/ +│ │ ├── apiUrls.ts +│ │ ├── ... +│ ├── contexts/ +│ │ ├── AuthContext.tsx +│ │ ├── ... +│ ├── hooks/ +│ │ ├── useAuth.ts +│ │ ├── useProductList.ts +│ │ ├── ... +│ ├── lib/ +│ │ ├── apiClient.ts // Cliente HTTP configurado +│ │ ├── typeguards.ts +│ │ ├── formatDate.ts +│ │ ├── ... +│ ├── pages/ +│ │ ├── Login.tsx +│ │ ├── Dashboard.tsx +│ │ ├── ... +│ ├── types/ +│ │ ├── api.ts +│ │ ├── models.ts +│ │ ├── ... +│ ├── App.tsx +│ └── main.tsx diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" new file mode 100644 index 000000000..f3b1de4aa --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" @@ -0,0 +1,20 @@ +Padrões de Comunicação (Front-End) + +1.1. Configuração de Requisições HTTP +ID: FRONT-API-COMMUNICATION +Palavras-Chave: front-end comunicação api axios fetch base url mock +Regra: O Front-End DEVE usar uma única instância de cliente HTTP configurada. Esta instância DEVE ser adaptável para chamar a API Real (usando BASE_URL) ou o Módulo de Mocking com base na variável de ambiente. + +1.2. Tratamento de Erro na Comunicação (Front-End) +ID: FRONT-API-ERROR-HANDLE +Palavras-Chave: front-end tratamento erro 400 401 +Regra: O Front-End DEVE capturar os status HTTP na camada de Hooks e reagir de acordo, utilizando o formato JSON de erro definido no Back-End (ID: CODE-API-ERROR-HANDLING). + +Status Code Ação Obrigatória do Front-End (Na camada de Hook/Context) +401 Unauthorized Redirecionar o usuário para a página de Login.tsx e limpar o token localmente (no Context/Storage). +400 Bad Request Retornar a mensagem de erro (campo message no JSON de erro) para a Page que irá exibir a mensagem no formulário. +404 Not Found Exibir mensagem genérica de "Recurso não encontrado" ou redirecionar para uma página de erro 404. +1.3. Padrão de Autenticação (Token) +ID: FRONT-API-AUTH-TOKEN +Palavras-Chave: front-end autenticação token jwt bearer +Regra: Após o login, o token de acesso (JWT) DEVE ser armazenado em um local seguro (ex: localStorage ou sessionStorage com as devidas precauções) e enviado em TODAS as requisições subsequentes no cabeçalho Authorization: Bearer . \ No newline at end of file diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" new file mode 100644 index 000000000..80621fcb9 --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" @@ -0,0 +1,20 @@ +Padrões de Contêineres (Front-End) +1. Padrões de Contêineres (Docker) + +1.1. Dockerfile do Front-End (Vite/React) +ID: DEVOPS-DOCKER-FRONT +Palavras-Chave: dockerfile frontend react vite otimizacao +Regra: O Dockerfile do Front-End DEVE ser otimizado para a build estática do Vite, utilizando multi-stage build: + +Stage 1 (Build): Usar uma imagem Node.js (ex: node:20-slim) para instalar dependências (npm install) e realizar a build (npm run build). + +Stage 2 (Servidor): Usar uma imagem leve de servidor HTTP (ex: Nginx ou Caddy) para servir os arquivos estáticos gerados na etapa de build. + +1.2. Docker Compose para Ambiente Local +ID: DEVOPS-COMPOSE-LOCAL +Palavras-Chave: docker-compose ambiente local frontend +Regra: O docker-compose.yml é o padrão para o desenvolvimento local. Ele DEVE orquestrar o serviço: + +front: O contêiner Vite (Front-End). + +Regra de Conexão: O Front-End DEVE usar o nome do serviço do Back-End definido no docker-compose (ex: http://web:8080/api) para a BASE_URL de desenvolvimento, e NUNCA localhost. \ No newline at end of file diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" new file mode 100644 index 000000000..51eab2388 --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" @@ -0,0 +1,39 @@ +Padrões de Convenção e Estrutura de Código (Front-End) +Este documento mapeia a estrutura de pastas do Front-End para as responsabilidades do código, garantindo que o time júnior saiba onde colocar cada tipo de lógica. + +1. Mapeamento da Estrutura de Módulos (Separation of Concerns) +A estrutura de Front-End/src implementa o padrão de Camadas de Apresentação (Presentation Layer), separando as preocupações: + +Pasta Responsabilidade Descrição Padrões de Uso (ID RAG) +pages View Principal (Controller/Coordinator) Contém os componentes principais (ex: Login.tsx, Dashboard.tsx). Sua única responsabilidade é coordenar o estado global, chamar hooks e renderizar os componentes de UI. NUNCA deve conter lógica de formatação ou acesso direto à API. ARQ-SPA-SIMPLES +components Componentes de UI (View) Blocos de construção reutilizáveis (ex: Button, Card, Header). Devem ser puros (stateless) e receber dados via props. ARQ-SPA-SIMPLES, CODE-REACT-PURE-COMPONENTS +hooks Lógica de Dados/Estado (Service) Lógica reusável para manipular o estado local ou chamar a API. Ex: useAuth(), useUserData(). É o ponto de contato entre a Page e a camada de Lib. CODE-REACT-HOOKS, FRONT-API-COMMUNICATION +lib Funções Utilitárias/API Código sem estado, reutilizável (ex: formatDate(), calculateTax()) e o cliente HTTP configurado. Ex: apiClient.ts. FRONT-API-COMMUNICATION, FRONT-API-ERROR-HANDLE +contexts Estado Global Mecanismo para gerenciar o estado global da aplicação (ex: Tema, Usuário Autenticado) sem prop-drilling. - +constants Constantes Globais Variáveis que não mudam (ex: URLs de API, textos estáticos). - + +Padrões de Código Essenciais (Front-End) +1. Padrão de Componentes React + +1.1. Componentes Puros e Tipagem (TypeScript) +ID: CODE-REACT-PURE-COMPONENTS +Palavras-Chave: react typescript componentes puros props +Regra: A maioria dos componentes em src/components DEVE ser funcional e pura (stateless), aceitando as propriedades (props) e emitindo eventos se necessário. Toda prop DEVE ser explicitamente tipada com interface ou type do TypeScript. + +1.2. Evitar Lógica de Negócio em Componentes (Separação de Preocupações) +ID: CODE-REACT-NO-BUSINESS-LOGIC +Regra: Componentes em src/components NÃO DEVEM conter lógica de negócio complexa, chamadas de API diretas (fetch ou axios dentro do componente), ou manipulação de estado que não seja puramente de UI. Delegar isso aos Hooks e Pages. + +2. Padrões de Hooks e Estado + +2.1. Hooks para Lógica de Dados +ID: CODE-REACT-HOOKS +Palavras-Chave: react hooks usememo usecallback +Regra: Utilizar Hooks customizados em src/hooks para isolar a lógica de acesso a dados, manipulação de estado complexa ou efeitos colaterais (useEffect). Isso torna a lógica reutilizável e mais fácil de testar. + +2.2. Otimização de Performance (Básica) +ID: CODE-REACT-PERFORMANCE-JUNIOR +Regra: Usar useMemo para memorizar cálculos caros e useCallback para memorizar funções que são passadas como props para componentes filhos, evitando re-renderizações desnecessárias. + +3. Padrão de Comunicação com a API (Ver documento de Comunicação) +Regra: A comunicação deve ser centralizada em lib/apiClient.ts e consumida pelos Hooks. \ No newline at end of file diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Design System.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Design System.md" new file mode 100644 index 000000000..eb32ea098 --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Design System.md" @@ -0,0 +1,56 @@ +Padrões de Design System (DS) e Componentização de Alto Nível +Este documento eleva os componentes (já definidos em) a um Design System, fornecendo regras claras para a criação e uso de elementos de interface (UI/UX) consistentes. + +1. Princípios Fundamentais do Design System (DS) +1.1. Fonte Única da Verdade Visual (Single Source of Truth) +ID: DS-VISUAL-SSOT +Palavras-Chave: design system single source of truth atomic design +Regra: Todos os elementos de UI (Cores, Fontes, Espaçamentos, Componentes) DEVEM ser definidos e importados de um local central. O time júnior e o Agente de IA NUNCA devem aplicar estilos diretamente nos componentes de Pages ou Hooks; eles devem sempre usar os componentes de UI de src/components/Common/ ou tokens do Tailwind. + +1.2. Componentes Adaptáveis e Responsivos +ID: DS-RESPONSIVE-FIRST +Palavras-Chave: design system responsivo mobile first +Regra: O desenvolvimento DEVE ser Mobile First. Todos os componentes, por padrão, devem ser projetados e codificados para funcionar e parecerem excelentes em telas pequenas antes de serem adaptados para telas maiores (desktop). O uso de utilitários de responsividade do Tailwind CSS (ex: md:, lg:) é obrigatório. + +1.3. Documentação de Componentes +ID: DS-COMPONENT-DOCS +Regra: Embora estejamos focados na velocidade, cada componente de UI não trivial (ex: Modal, Table, Card) DEVE ter um arquivo de documentação ou story adjacente (ex: usando Storybook ou um README simples no componente) descrevendo suas props e casos de uso. +Requisito para o Agente de IA: A IA deve gerar comentários no código-fonte do componente descrevendo suas funcionalidades. + +2. Padrões de Componentização Específicos +2.1. Nomenclatura e Tipos de Componentes +ID: DS-COMPONENT-ATOMIC +Palavras-Chave: atomic design nomenclatura +Regra: Adotar a lógica do Atomic Design (Átomos, Moléculas, Organismos) para organizar a pasta src/components/ + +Nível Exemplo de Pasta/Nome Descrição Onde Usar +Átomos Button.tsx, Input.tsx Elementos HTML puros e básicos, com pouco ou nenhum estado interno. Em toda parte. +Moléculas LoginForm.tsx, UserCard.tsx Grupos de Átomos que funcionam juntos (ex: Input + Rótulo + Botão). Dentro de Organismos ou Pages. +Organismos Header.tsx, Sidebar.tsx Seções complexas da interface (ex: um Header com navegação e busca). Dentro de Pages. +2.2. Separação de Estilos (Tokens de Design) +ID: DS-STYLE-TOKENS +Regra: Todos os valores de estilo (cores, espaçamento, tamanhos de borda) DEVEM ser referenciados por meio de tokens definidos no arquivo de configuração do Tailwind (ou variáveis CSS se necessário) e NUNCA por valores literais. +Exemplo: Usar className="bg-primary-500" ao invés de style={{ backgroundColor: '#1A73E8' }}. + +3. Padrões de Interação e Feedback (Avançado) +3.1. Feedback Visual de Interação +ID: DS-INTERACTION-FEEDBACK +Palavras-Chave: hover focus active +Regra: Todo elemento interativo (botões, links, ícones clicáveis) DEVE fornecer feedback visual claro para os estados de Hover, Focus (acessibilidade com teclado), e Active (clique). O Tailwind deve ser usado para definir estes estados. + +3.2. Hierarquia Visual de Ações +ID: DS-ACTION-HIERARCHY +Palavras-Chave: botões primário secundário destrutivo +Regra: Botões e Ações devem ter uma hierarquia visual clara, geralmente usando apenas um Botão Primário (destacado, ex: cor principal) por tela/formulário, e os demais como Secundários (contorno/fundo claro) ou Destrutivos (cor de alerta/vermelha). + +3.3. Uso de Cores Semânticas +ID: DS-SEMANTIC-COLOR +Regra: As cores DEVEM ser usadas de forma consistente para transmitir significado, NUNCA apenas por estética: + +Primary (Azul/Verde): Ações Principais, Links. + +Success (Verde): Confirmação, Operação Bem-Sucedida. + +Warning (Amarelo): Atenção, Ações que Requerem Cuidado. + +Danger (Vermelho): Erros, Ações Destrutivas ou Irreversíveis. \ No newline at end of file diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" new file mode 100644 index 000000000..5f30b26f4 --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" @@ -0,0 +1,14 @@ +Padrões de Integração Contínua (Front-End) +2. Padrões de Integração Contínua (CI/CD) + +2.1. Arquivo de Deploy (deploy.yml) +ID: DEVOPS-CI-DEPLOY-FRONT +Palavras-Chave: ci/cd github actions deploy.yml frontend +Regra: O pipeline de CI/CD (localizado em .github/workflows/deploy.yml) DEVE ter, no mínimo, as seguintes etapas antes de qualquer deploy: + +Instalação/Build: Instalar dependências (npm install) e gerar a build de produção (npm run build). + +Testes: Executar os testes unitários (TEST-FE-TOOL) nas camadas de Hooks e Lib. + +Lint/Tipagem: Garantir que o código siga os padrões de formatação e que o TypeScript não gere erros (npm run lint e npm run type-check). + diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Mocking.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Mocking.md" new file mode 100644 index 000000000..95b64633b --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Mocking.md" @@ -0,0 +1,49 @@ +Padrões de Mocking e Desenvolvimento Desacoplado (Front-End) +Este documento estabelece as regras para simular a API do Back-End no Front-End, permitindo que o desenvolvimento da interface e da experiência do usuário (UI/UX) ocorra em paralelo e seja validado rapidamente. + +1. Padrão de Contrato e Tipagem da API +1.1. Definição do Contrato da API (TypeScript Types) +ID: MOCK-CONTRACT-TYPES +Palavras-Chave: contrato api typescript interface mocking +Regra: Toda requisição e resposta de API DEVE ser primeiro definida em TypeScript Interfaces/Types em src/types/api.ts. Esta tipagem serve como o Contrato Oficial da API. O Front-End e o Back-End devem aderir a este contrato. +Exemplo: Antes de fazer a chamada, defina interface User { id: number; name: string; email: string; }. + +1.2. Mapeamento de Tipagem para Dados Mockados +ID: MOCK-DATA-STRUCTURE +Regra: Todos os dados mockados (simulados) DEVEM ser gerados de forma que correspondam exatamente às TypeScript Interfaces. Isso garante que, quando o Back-End real for conectado, não haja erros de tipagem no Front-End. + +2. Padrões de Simulação (Mocking) +2.1. Centralização do Mocking +ID: MOCK-TOOL-CENTRALIZATION +Palavras-Chave: mocking centralizado msw json-server +Regra: O Mocking de todas as rotas da API DEVE ser implementado em um módulo centralizado (ex: usando uma biblioteca como MSW - Mock Service Worker ou um serviço local simples em src/lib/mockApi.ts). + +2.2. Uso Obrigatório do Mocking no Desenvolvimento Local +ID: MOCK-ENV-DEV +Palavras-Chave: ambiente desenvolvimento mocking +Regra: Durante o desenvolvimento local (npm run dev), o Front-End DEVE consumir os dados mockados por padrão (lido de uma variável de ambiente como VITE_USE_MOCKING=true). +Justificativa: Isso permite que a IA gere a interface e o time júnior veja e valide a UI/UX imediatamente. + +2.3. Estrutura de Resposta Mockada (Padrão JSON) +ID: MOCK-RESPONSE-FORMAT +Regra: Os mocks de sucesso DEVEM retornar a resposta no formato JSON de sucesso definido (ID: CODE-API-SUCCESS), e os mocks de erro DEVEM retornar no formato de erro (ID: CODE-API-ERROR-HANDLING). +Exemplo de Mock de Sucesso (para uma lista de usuários): + +TypeScript + +{ + status: 'success', + message: 'Dados mockados com sucesso.', + data: [{ id: 1, name: 'Usuário Mock 1' }, { id: 2, name: 'Usuário Mock 2' }] +} +3. Integração com o Workflow de Aprovação +3.1. Chave de Toggle para Mocking +ID: MOCK-TOGGLE-KEY +Palavras-Chave: chave toggle mock +Regra: Deve haver uma chave de ambiente (ex: VITE_API_BASE_URL ou VITE_USE_MOCKING) que possa ser facilmente alternada para mudar o Front-End de Mock (Desenvolvimento/Aprovação Rápida) para API Real (Testes de Integração). +Requisito para Juniores: O Front-End gerado DEVE funcionar perfeitamente em ambos os modos, sem alterações no código dos componentes ou hooks. + +3.2. Mocks de Erro para UI/UX +ID: MOCK-ERROR-SIMULATION +Palavras-Chave: simulação de erro ui ux +Regra: O time Front-End DEVE criar mocks específicos para simular os erros de API mais comuns (400, 401, 500) para garantir que os estados de erro da UI/UX (ex: Toast de falha, redirecionamento para Login, mensagens de formulário) sejam exibidos corretamente e sejam amigáveis. \ No newline at end of file diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Requisitos.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Requisitos.md" new file mode 100644 index 000000000..e3a3b57ed --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Requisitos.md" @@ -0,0 +1,39 @@ +Padrões de Requisitos Simplificados (Front-End) +3. Padrões de Requisitos Simplificados + +3.1. Template de Requisito Funcional (RF) - Básico +ID: TEMPLATE-RF-BASICO-FE +Palavras-Chave: modelo requisito funcional basico frontend +Foco em clareza, na Interação do Usuário e nos Passos de Teste para verificação manual. + +Exemplo Modelo: +RF-XXX: [Módulo] - Título da Funcionalidade +Descrição (O que deve fazer): O usuário deve ser capaz de realizar o cadastro no sistema através do formulário na página de Login.tsx. +Regras de Negócio Chave (Front-End): + +O campo de e-mail deve ser validado para o formato padrão. + +A confirmação de senha deve ser idêntica à senha (validação local). + +Em caso de sucesso na API (201 Created), o Front-End deve redirecionar o usuário para a página de /dashboard. +Passos de Teste (Para Estagiário): + +[ ] Tentar enviar o formulário com o campo de e-mail vazio. Esperar a mensagem de erro local. + +[ ] Tentar cadastrar com senha diferente da confirmação. Esperar a mensagem de erro local. + +[ ] Tentar cadastrar com dados válidos. Verificar se o usuário é redirecionado para o dashboard. + +3.2. Template de Requisito Não-Funcional (RNF) - Foco em Usabilidade/Performance +ID: TEMPLATE-RNF-SIMPLES-FE +Palavras-Chave: modelo requisito nao-funcional junior usabilidade performance +Os RNFs devem ser simples e diretamente relacionados à experiência do usuário ou à performance básica. + +Exemplo Modelo: +RNF-XXX: [Categoria: Usabilidade] - Estados de Carregamento +Especificação: Todo botão que dispara uma chamada de API (POST/PUT) DEVE exibir um estado de carregamento (loading=true) para evitar cliques duplos e informar ao usuário que a requisição está em andamento. +Justificativa: Melhorar a experiência do usuário e evitar envio de dados duplicados. + +RNF-YYY: [Categoria: Performance] - Carregamento Lento (Lazy Loading) +Especificação: As rotas menos acessadas (ex: /admin-panel) DEVERÃO utilizar o Lazy Loading (carregamento sob demanda) para não atrasar o carregamento inicial da aplicação. +Justificativa: Reduzir o initial load time da aplicação. \ No newline at end of file diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" new file mode 100644 index 000000000..392053157 --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" @@ -0,0 +1,21 @@ +Padrões de Testes Unitários (Front-End React) +Garantir que os juniores saibam como testar a UI e a lógica isoladamente. + +2.1. Ferramenta de Teste +ID: TEST-FE-TOOL +Palavras-Chave: testes frontend unitarios jest rtl +Regra: Utilizar Vitest como runner de testes e React Testing Library (RTL) como biblioteca principal para testes de componentes. Foco em testar o comportamento (o que o usuário vê) e não os detalhes de implementação do React. + +2.2. Testes para a Camada de Componentes (UI) +ID: TEST-FE-UI-COMPONENT +Palavras-Chave: testes componentes react rtl mock +Regra: Ao testar um componente em src/components/, é OBRIGATÓRIO utilizar mocking para simular funções passadas como props ou context (se aplicável). O teste deve verificar se o componente renderiza corretamente com as props fornecidas e se o evento correto é disparado (ex: fireEvent.click). + +2.3. Testes para a Camada de Lógica (Hooks/Lib) +ID: TEST-FE-LOGIC-HOOKS +Palavras-Chave: testes hooks lógica reativa +Regra: Testes de Hooks customizados devem usar a função renderHook do RTL (ou similar) para garantir que a lógica de estado e side effects esteja correta. O acesso à API (apiClient) DEVE ser mockado para que o teste seja unitário, verificando apenas o fluxo de sucesso/erro do hook. + +2.4. Localização dos Testes +ID: TEST-FE-LOCATION +Regra: Todos os arquivos de teste devem residir na mesma pasta que o código que está sendo testado (ex: src/components/Button.test.tsx) ou em uma pasta __tests__ adjacente, e ter o sufixo .test.tsx ou .test.ts. \ No newline at end of file diff --git "a/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de UI e UX.md" "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de UI e UX.md" new file mode 100644 index 000000000..8fae09807 --- /dev/null +++ "b/backend/Agents/AppAI/CodeFrontend/Knowledge/Docs/Padr\303\265es de UI e UX.md" @@ -0,0 +1,65 @@ +Padrões de Interface e Experiência do Usuário (UI/UX) +Este documento estabelece as regras básicas de design e interação para garantir uma aplicação com excelente usabilidade para o time júnior. O foco é na consistência, clareza e na minimização da frustração do usuário. + +1. Padrões de Formulários e Entradas +1.1. Estado de Feedback Imediato +ID: UX-FORM-FEEDBACK +Palavras-Chave: formulário feedback erro validação +Regra: A validação de campos (erros de formato, campos obrigatórios) DEVE ocorrer imediatamente (on-blur ou on-change) ANTES do envio para o Back-End (validação local no Front-End). O campo com erro DEVE ter sua borda destacada (ex: cor vermelha) e a mensagem de erro deve estar próxima ao campo. + +1.2. Rótulos e Placeholder +ID: UI-FORM-LABELS +Palavras-Chave: formulário rótulo placeholder +Regra: Todo campo de entrada DEVE ter um rótulo (

I>!k<{O#s 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

3?P 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�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 Service -> Data/Repository) ou MVC (Model-View-Controller) para organizar o código. +Fluxo: O Flask (Presentation/Controller) chama a camada de Serviço (Service) para executar a lógica de negócio, que, por sua vez, usa a camada de Repositório (Data/Repository) para interagir com o PostgreSQL. +Vantagem: É fácil de navegar, testar e é a arquitetura inicial mais recomendada para aprender a base. + +Padrões de Convenção e Estrutura de Código (Back-End) +Este documento mapeia a estrutura de pastas do Back-End para as responsabilidades do código, garantindo que o time júnior saiba onde colocar cada tipo de lógica. + +1. Mapeamento da Estrutura de Módulos (Separation of Concerns) +A estrutura de Back-End/Modules implementa o padrão de Camadas de Serviço (Service Layer), separando as preocupações: + +Pasta + +Responsabilidade + +Descrição + +Padrões de Uso (ID RAG) + +Routes + +Interface (Controller) + +Contém os arquivos auth.py, user.py, etc., que definem as rotas (URL, métodos HTTP). A única responsabilidade é receber a requisição, validar a entrada (Pydantic), e chamar a camada de Service (Resolvers). NUNCA deve conter lógica de negócio ou acesso direto ao banco. + +STACK-BACK-FLASK, CODE-API-SUCCESS + +Resolvers + +Lógica de Negócio (Service) + +O coração da aplicação. Contém a lógica de negócio principal (ex: user_register.py, generate_invoice_pdf.py). Recebe dados validados da Routes, executa a regra de negócio e coordena chamadas a Geters, Savers e Helpers. + +ARQ-BUSINESS-SERVICE, CODE-API-ERROR-HANDLING + +Geters + +Acesso à Leitura (Repository) + +Funções puras para ler dados de PostgreSQL (via Flask-SQLAlchemy) ou MongoDB (logs/auditoria). Ex: get_user_by_email(). + +STACK-DB-POSTGRES, CODE-DB-READ-GET + +Savers + +Acesso à Escrita (Repository) + +Funções puras para escrever ou atualizar dados no PostgreSQL ou MongoDB. Ex: create_new_user(), log_action(). Contém o db.session.commit(). + +STACK-DB-POSTGRES, STACK-DB-MONGO-LOGS, CODE-DB-CREATE-COMMIT + +Helpers + +Funções Utilitárias + +Código sem estado, reutilizável, que não contém lógica de negócio ou acesso ao banco. Ex: format_date(), validate_cpf(), calculate_discount(). + +- + +Config + +Configuração da Aplicação + +Inicialização de módulos (Flask, SQLAlchemy, MongoDB, etc.) e carregamento de variáveis de ambiente. + +- + +2. Convenções de Nomenclatura e Arquivos +2.1. Nomenclatura de Arquivos +ID: CONV-FILE-NAMING +Regra: Usar snake_case para todos os nomes de arquivos Python e pastas, sendo descritivo. + +Bom: user_registration_resolver.py, get_all_products.py + +Ruim: UserRegistration.py, Getallproducts.py + +2.2. Nomenclatura de Funções +ID: CONV-FUNC-NAMING +Regra: Funções devem usar verbos no infinitivo para indicar a ação que realizam (ex: get, create, update, send, generate). + +Funções em Resolvers: Devem descrever o processo: register_new_user(), process_order(). + +Funções em Geters/Savers: Devem ser diretas ao DB: get_user_by_id(), save_new_log(). + +2.3. Uso de try...except +ID: CONV-TRY-EXCEPT +Regra: O bloco try...except DEVE ser usado primariamente na camada Resolvers (Service) e NÃO nas rotas. As rotas devem apenas capturar a exceção tratada e mapear para a resposta HTTP (ex: 400 Bad Request). + +Anti-Padrão: + +# Módulos/Routes/user.py (ANTI-PADRÃO) +@user_bp.route('/register', methods=['POST']) +def register(): + try: + # Lógica de negócio ou DB aqui + ... + except Exception as e: + return jsonify({"error": str(e)}), 500 + +3. arquitetura desejavel: +``` +nomedoprojeto\ +├── Readme.md +├── docker-compose.yml +└── .github\ + └── workflows\ + ├── deploy.yml +└── Front-End\ + └── vite.config.ts + └── tsconfig.node.json + └── tsconfig.json + └── tsconfig.app.json + └── tailwind.config.ts + └── postcss.config.js + └── package.json + └── Dockerfile + └── package-lock.json + └── index.html + └── eslint.config.js + └── components.json + └── .env + └── public\ + └── src\ + └── components\ + ├── ... + └── constants\ + ├── ... + └── contexts\ + ├── ... + └── hooks\ + ├── ... + └── lib\ + ├── ... + └── pages\ + ├── Login.tsx + ├── ... + └── App.css + └── App.tsx + └── index.css + └── main.tsx + └── vite-env.d.ts + +└── Back-End\ + ├── requirements.txt + ├── Dockerfile + ├── api.py + └── Keys\ + ├── keys.env + └── Models\ + └── mongoDB\ + ├── audit.py + ├── logs.py + └── postgreSQL\ + ├── user.py + ├── ... + └── Modules\ + └── Config\ + ├── setup.py + ├── ... + └── Geters\ + ├── logs.py + ├── user_by_access_token.py + ├── user_by_email.py + ├── ... + └── Helpers\ + ├── ... + └── Resolvers\ + ├── generate_invoice_pdf.py + ├── send_email.py + ├── user_identifier.py + ├── ... + └── Routes\ + ├── auth.py + ├── ... + └── Savers\ + ├── log_action.py + ├── log_audit.py + ├── log_system_health.py + ├── ... + └── Updaters\ + ├── ... + +``` diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Comunica\303\247\303\243o.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Comunica\303\247\303\243o.md" new file mode 100644 index 000000000..de8497e07 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Comunica\303\247\303\243o.md" @@ -0,0 +1,35 @@ +1. Padrão de Comunicação (Front-End) + +1.1. Configuração de Requisições HTTP + +ID: FRONT-API-COMMUNICATION +Palavras-Chave: front-end comunicação api axios fetch base url +Regra: O Front-End DEVE usar uma única instância de cliente HTTP (como Axios ou Fetch API) configurada com uma BASE_URL (lida do .env do Front-End) e com o cabeçalho Content-Type: application/json padrão. + +1.2. Tratamento de Erro na Comunicação (Front-End) + +ID: FRONT-API-ERROR-HANDLE +Palavras-Chave: front-end tratamento erro 400 401 +Regra: O Front-End DEVE capturar os status HTTP e reagir de acordo, utilizando o formato JSON de erro definido no Back-End (CODE-API-ERROR-HANDLING). + +Status Code + +Ação Obrigatória do Front-End + +401 Unauthorized + +Redirecionar o usuário para a página de Login.tsx e limpar o token localmente. + +400 Bad Request + +Exibir a mensagem de erro (campo message no JSON de erro) diretamente no formulário, de forma amigável ao usuário. + +404 Not Found + +Exibir mensagem genérica de "Recurso não encontrado" ou redirecionar para uma página de erro 404. + +1.3. Padrão de Autenticação (Token) + +ID: FRONT-API-AUTH-TOKEN +Palavras-Chave: front-end autenticação token jwt bearer +Regra: Após o login, o token de acesso (JWT) DEVE ser armazenado em um local seguro (ex: localStorage ou sessionStorage com as devidas precauções) e enviado em TODAS as requisições subsequentes no cabeçalho Authorization: Bearer . \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Cont\303\252ineres.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Cont\303\252ineres.md" new file mode 100644 index 000000000..d954e079a --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Cont\303\252ineres.md" @@ -0,0 +1,31 @@ +1. Padrões de Contêineres (Docker) + +1.1. Dockerfile do Back-End (Flask) + +ID: DEVOPS-DOCKER-BACK +Palavras-Chave: dockerfile backend flask python otimizacao +Regra: O Dockerfile do Back-End DEVE ser otimizado para o Python, utilizando multi-stage build (se possível) ou, no mínimo, um .dockerignore para excluir arquivos desnecessários (.git, __pycache__). + +Etapas Cruciais: + +Começar de uma imagem oficial de Python (ex: python:3.11-slim-buster). + +Copiar requirements.txt e instalá-los antes de copiar o código-fonte (para aproveitar o cache do Docker). + +Definir o ENTRYPOINT para executar o api.py ou um script de inicialização. + +1.2. Docker Compose para Ambiente Local + +ID: DEVOPS-COMPOSE-LOCAL +Palavras-Chave: docker-compose ambiente local postgres mongodb +Regra: O docker-compose.yml é o padrão para o desenvolvimento local. Ele DEVE orquestrar no mínimo três serviços: + +web: O contêiner Flask (Back-End). + +db: O contêiner PostgreSQL. + +mongo: O contêiner MongoDB. + +front: O contêiner Front-End (React/Vite) para simular o ambiente de produção. + +Regra de Conexão: O Back-End DEVE usar os nomes dos serviços definidos no docker-compose (ex: postgres://user:pass@db:5432/app) e NUNCA localhost. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de C\303\263digo.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de C\303\263digo.md" new file mode 100644 index 000000000..f7d47f64b --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de C\303\263digo.md" @@ -0,0 +1,113 @@ +Padrões de Código Essenciais (Flask e SQLAlchemy) + +Esta documentação fornece o "como fazer" para o time de desenvolvimento, garantindo que os requisitos gerados pelo agente sejam implementados de forma consistente e com boas práticas básicas na stack Flask/PostgreSQL. + +1. Padrão de Resposta e Erro da API (JSON) + +1.1. Resposta de Sucesso Padrão + +ID: CODE-API-SUCCESS +Palavras-Chave: flask resposta padrao json 200 201 +Regra: Todas as respostas de sucesso DEVERÃO ser em formato JSON, encapsulando o objeto de dados. + +Criação (POST): Usar status 201 Created. + +Leitura/Atualização (GET/PUT): Usar status 200 OK. + +Exemplo de Corpo de Resposta (200 OK): + +{ + "status": "success", + "message": "Operação realizada com sucesso.", + "data": { + "id": 101, + "nome": "Usuário Teste", + "email": "teste@exemplo.com" + } +} + + +1.2. Tratamento de Erro Padrão + +ID: CODE-API-ERROR-HANDLING +Palavras-Chave: flask tratamento erro 400 404 500 +Regra: Em caso de erro, o status HTTP DEVE refletir a natureza do problema, e a resposta DEVE conter a chave "error". + +Status Code + +Causa Comum + +Descrição para o Agente + +400 Bad Request + +Falha de validação de dados (ex: e-mail inválido, campo obrigatório faltando). + +Gerar requisito para validar a entrada antes de chamar o Service. + +401 Unauthorized + +Token de acesso inválido ou ausente. + +Gerar requisito para implementar um decorador de autenticação. + +404 Not Found + +Recurso não encontrado (ex: GET /usuarios/999 que não existe). + +Gerar requisito para tratar o erro "Resource Not Found" no Service layer. + +500 Internal Server Error + +Erro inesperado no servidor. + +Gerar requisito para um bloco try/except robusto na camada de Service. + +2. Padrões CRUD com Flask-SQLAlchemy + +2.1. Padrão de Leitura (Repository/Data Layer) + +ID: CODE-DB-READ-GET +Palavras-Chave: sqlalchemy leitura find_by_id orm get +Regra: Usar session.get(Model, id) para buscar por chave primária. +Anti-Padrão a evitar: Nunca expor o objeto de banco de dados diretamente ao Controller. Sempre mapear para um DTO (Data Transfer Object) simples ou um dicionário. + +2.2. Padrão de Criação e Commit + +ID: CODE-DB-CREATE-COMMIT +Palavras-Chave: sqlalchemy criacao add commit +Regra: A criação de novos registros DEVE seguir o padrão novo_obj = Model(**dados); db.session.add(novo_obj); db.session.commit(). + +2.3. Padrão de Logs Assíncronos (MongoDB) + +ID: CODE-DB-LOGS-MONGO +Palavras-Chave: mongodb logs assincronos +Regra: Logs de eventos não críticos (auditoria de acesso, erros não fatais) DEVERÃO ser enviados para o MongoDB. A chamada ao MongoDB deve ser non-blocking (se possível com thread ou pool), para não atrasar a resposta da API principal (PostgreSQL/Flask). + +Exemplo de Estrutura de Log (MongoDB): + +{ + "timestamp": "2025-10-07T10:00:00Z", + "user_id": 101, + "action": "LOGIN_SUCCESS", + "ip_address": "192.168.1.1", + "details": { + "device": "Mobile", + "browser": "Chrome" + } +} + + +3. Segurança Essencial para Juniores + +3.1. Validação de Entrada de Dados (Input Validation) + +ID: SEC-INPUT-VALIDATION +Palavras-Chave: segurança validacao pydantic +Regra: Toda entrada de dados (corpo da requisição, parâmetros de query) DEVE ser validada imediatamente no Controller/View com uma biblioteca como o Pydantic ou similar antes de chegar na camada de Service. Isso previne injeções e garante a integridade dos tipos de dados. + +3.2. Senhas Seguras (Hashing) + +ID: SEC-PASSWORD-HASH +Palavras-Chave: segurança hash de senha bcrypt +Regra: Senhas DEVERÃO ser armazenadas com hashing forte. O uso de Bcrypt é obrigatório. NUNCA armazenar senhas em texto puro ou com hash MD5/SHA-1. A verificação da senha deve ser feita pelo hash \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" new file mode 100644 index 000000000..afd27cff9 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" @@ -0,0 +1,17 @@ +2. Padrões de Integração Contínua (CI/CD) +2.1. Arquivo de Deploy (deploy.yml) +ID: DEVOPS-CI-DEPLOY +Palavras-Chave: ci/cd github actions deploy.yml +Regra: O pipeline de CI/CD (localizado em .github/workflows/deploy.yml) DEVE ter, no mínimo, as seguintes etapas antes de qualquer deploy: + +Build do Back-End: Instalar dependências e garantir que o Dockerfile possa ser construído. + +Testes: Executar os testes unitários (TEST-PY-TOOL) na camada de Resolvers e Geters/Savers. + +Lint/Formatação: Garantir que o código siga os padrões de formatação (ex: black para Python). + +2.2. Migrações de Banco de Dados +ID: DEVOPS-DB-MIGRATIONS +Palavras-Chave: migracao banco dados flask alembic flyway +Regra: Toda alteração no Models/postgreSQL/ DEVE ser acompanhada de um script de migração (ex: usando Alembic para Flask-SQLAlchemy). +Requisito de CI/CD: O pipeline DEVE rodar as migrações automaticamente ANTES de iniciar a nova versão do Back-End. NUNCA permitir que juniores alterem o banco de dados de produção manualmente. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Requisitos.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Requisitos.md" new file mode 100644 index 000000000..61669b3e6 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Requisitos.md" @@ -0,0 +1,37 @@ +3. Padrões de Requisitos Simplificados +3.1. Template de Requisito Funcional (RF) - Básico +ID: TEMPLATE-RF-BASICO +Palavras-Chave: modelo requisito funcional basico +Foco em clareza e nos Passos de Teste para verificação manual. + +Exemplo Modelo: +RF-XXX: [Módulo] - Título da Funcionalidade +Descrição (O que deve fazer): O usuário deve ser capaz de realizar o cadastro no sistema. +Regras de Negócio Chave: + +O e-mail deve ser único no sistema (verificar no PostgreSQL). + +A senha deve ter no mínimo 8 caracteres. + +Após o cadastro, o usuário deve ser redirecionado para a página de login. +Passos de Teste (Para Estagiário): + +[ ] Tentar cadastrar com um e-mail já existente. Esperar erro 400. + +[ ] Cadastrar com senha de 6 caracteres. Esperar mensagem de erro. + +[ ] Cadastrar com dados válidos. Verificar se o registro aparece na tabela usuarios do PostgreSQL. + +3.2. Template de Requisito Não-Funcional (RNF) - Foco em Usabilidade/Segurança +ID: TEMPLATE-RNF-SIMPLES +Palavras-Chave: modelo requisito nao-funcional junior usabilidade +Os RNFs devem ser simples e diretamente relacionados à experiência do usuário ou à segurança básica. + +Exemplo Modelo: +RNF-XXX: [Categoria: Usabilidade] - Mensagens de Erro +Especificação: Todas as mensagens de erro (validação de formulário ou API) DEVEM ser amigáveis e escritas em Português. +Justificativa: Garantir que o usuário entenda o problema e saiba como corrigi-lo. + +RNF-YYY: [Categoria: Segurança] - Logs de Acesso +Especificação: Toda tentativa de login (sucesso ou falha) DEVE gerar um log (IP, timestamp, status) no MongoDB para fins de auditoria básica. +Justificativa: Rastrear atividades suspeitas. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Testes Unit\303\241rios.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Testes Unit\303\241rios.md" new file mode 100644 index 000000000..0b3725165 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Padr\303\265es de Testes Unit\303\241rios.md" @@ -0,0 +1,30 @@ +2. Padrões de Testes Unitários (Back-End Python) + +Garantir que os juniores saibam como testar as camadas separadas é o maior impulsionador de qualidade em um projeto monolítico. + +2.1. Ferramenta de Teste + +ID: TEST-PY-TOOL +Palavras-Chave: testes python unitarios pytest +Regra: Utilizar o pytest como framework de testes unitários padrão. + +2.2. Testes para a Camada de Serviço (Resolvers) + +ID: TEST-PY-RESOLVER-MOCK +Palavras-Chave: testes resolvers service mocking +Regra: Ao testar um arquivo em Modules/Resolvers/, é OBRIGATÓRIO utilizar mocking para simular as respostas das funções de acesso ao banco de dados (Geters e Savers). O teste deve verificar apenas a lógica de negócio (ex: o cálculo, a validação de regras). + +Exemplo: Para testar Resolvers/process_order.py, o teste deve simular que Savers/save_order.py retornou sucesso, sem tocar no PostgreSQL. + +2.3. Testes para as Camadas de Dados (Geters/Savers) + +ID: TEST-PY-DB-INTEGRATION +Palavras-Chave: testes geters savers banco dados integration +Regra: Testes de Geters e Savers devem ser considerados testes de integração (unitários) e DEVERIAM (se possível no ambiente de CI/CD) rodar contra um banco de dados temporário ou em memória para garantir que as queries SQL/ORM estão corretas. + +Alternativa Simples: Para juniores, o teste mais básico é garantir que, ao chamar a função Savers/save_order(), o objeto correto do ORM é criado e a sessão é chamada para adição. + +2.4. Localização dos Testes + +ID: TEST-PY-LOCATION +Regra: Todos os arquivos de teste devem residir em uma pasta separada (ex: Back-End/tests/) e ter o prefixo test_ no nome (ex: test_user_resolver.py). \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Stack Tecnol\303\263gica.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Stack Tecnol\303\263gica.md" new file mode 100644 index 000000000..61be75d39 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/backend/Stack Tecnol\303\263gica.md" @@ -0,0 +1,21 @@ +1. Stack Tecnológica Padrão e Justificativas +1.1. Backend para Início Rápido e Clareza +ID: STACK-BACK-FLASK +Palavras-Chave: stack backend python flask blueprint api +Decisão: Python com framework Flask. +Justificativa (Simplicidade): Flask é um micro-framework com pouca "magia" (convenções), permitindo que o desenvolvedor júnior entenda o fluxo de requisição e resposta rapidamente. +Estrutura de API: Utilizar Flask Blueprints para organizar a API por módulos (ex: blueprint_usuarios, blueprint_produtos), mantendo o código limpo e o roteamento claro. + +1.2. Banco de Dados Relacional (Transacional) +ID: STACK-DB-POSTGRES +Palavras-Chave: stack db postgresql flask_sqlalchemy dados transacionais +Decisão: PostgreSQL com ORM Flask-SQLAlchemy. +Justificativa (ACID): PostgreSQL é robusto e gratuito, garantindo integridade e atomicidade dos dados transacionais (pedidos, perfis, etc.). +Justificativa (ORM): O Flask-SQLAlchemy abstrai a complexidade do SQL, permitindo que juniores interajam com o banco de dados usando objetos Python (Modelos), o que acelera o desenvolvimento e reduz erros de SQL. + +1.3. Banco de Dados Não Relacional (Logs e Eventos) +ID: STACK-DB-MONGO-LOGS +Palavras-Chave: stack db mongodb logs auditoria eventos +Decisão: MongoDB para armazenamento de Logs, Auditoria e Eventos não estruturados. +Justificativa (Flexibilidade): Documentos JSON (BSON) são ideais para logs, pois o schema de um log pode mudar sem afetar a aplicação principal. Não é necessário definir schemas complexos para dados não críticos. +Regra de Ouro: NUNCA armazenar dados transacionais ou críticos para o negócio no MongoDB. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Arquitetura.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Arquitetura.md" new file mode 100644 index 000000000..b72b0119e --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Arquitetura.md" @@ -0,0 +1,62 @@ +Padrões de Arquitetura Simplificada (Front-End) +0. Padrões de Arquitetura Simplificada +Arquitetura Padrão: SPA Simples (Vite/React) +ID: ARQ-SPA-SIMPLES +Palavras-Chave: arquitetura spa simples react componentes +Padrão: Adotar o padrão de Componentes (Pages -> Components -> Hooks/Lib) para organizar a interface. +Fluxo: A Page (View) coordena a aplicação (ex: carrega dados), chamando Hooks (Service) para a lógica de dados, que, por sua vez, usa a camada de Lib (Communication/API) para interagir com o Back-End. +Vantagem: É altamente modular, fácil de testar isoladamente e é a arquitetura inicial mais recomendada para aprender a base de React. + +2. Convenções de Nomenclatura e Arquivos +2.1. Nomenclatura de Arquivos +ID: CONV-FILE-NAMING-FE +Regra: Usar PascalCase para componentes React e camelCase para hooks e arquivos utilitários/lib. Extensão .tsx para componentes e .ts para lógica pura. +Bom: UserProfileCard.tsx, useFetchData.ts, apiClient.ts +Ruim: user_profile_card.tsx, usefetchdata.ts + +2.2. Nomenclatura de Funções/Hooks +ID: CONV-FUNC-NAMING-FE +Regra: Hooks customizados devem começar com use (ex: useUser()). Funções em Libs devem usar verbos no infinitivo para indicar a ação que realizam (ex: formatDate, getAuthToken). + +2.3. Uso de try...catch (Comunicação API) +ID: CONV-TRY-CATCH-FE +Regra: O bloco try...catch para chamadas de API (e tratamento de erro HTTP) DEVE ser usado na camada de Hooks (Service). A camada de Pages deve apenas receber a exceção tratada (ex: um erro amigável já formatado) para exibição. + +3. Arquitetura Desejável (Front-End) + +nomedoprojeto/ +├── Front-End/ +│ ├── ... (arquivos de config do Front-End como package.json, vite.config.ts) +│ └── src/ +│ ├── components/ +│ │ ├── Common/ +│ │ │ ├── Button.tsx +│ │ │ ├── ... +│ │ ├── Forms/ +│ │ │ ├── LoginForm.tsx +│ │ │ ├── ... +│ ├── constants/ +│ │ ├── apiUrls.ts +│ │ ├── ... +│ ├── contexts/ +│ │ ├── AuthContext.tsx +│ │ ├── ... +│ ├── hooks/ +│ │ ├── useAuth.ts +│ │ ├── useProductList.ts +│ │ ├── ... +│ ├── lib/ +│ │ ├── apiClient.ts // Cliente HTTP configurado +│ │ ├── typeguards.ts +│ │ ├── formatDate.ts +│ │ ├── ... +│ ├── pages/ +│ │ ├── Login.tsx +│ │ ├── Dashboard.tsx +│ │ ├── ... +│ ├── types/ +│ │ ├── api.ts +│ │ ├── models.ts +│ │ ├── ... +│ ├── App.tsx +│ └── main.tsx diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Comunica\303\247\303\243o.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Comunica\303\247\303\243o.md" new file mode 100644 index 000000000..f3b1de4aa --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Comunica\303\247\303\243o.md" @@ -0,0 +1,20 @@ +Padrões de Comunicação (Front-End) + +1.1. Configuração de Requisições HTTP +ID: FRONT-API-COMMUNICATION +Palavras-Chave: front-end comunicação api axios fetch base url mock +Regra: O Front-End DEVE usar uma única instância de cliente HTTP configurada. Esta instância DEVE ser adaptável para chamar a API Real (usando BASE_URL) ou o Módulo de Mocking com base na variável de ambiente. + +1.2. Tratamento de Erro na Comunicação (Front-End) +ID: FRONT-API-ERROR-HANDLE +Palavras-Chave: front-end tratamento erro 400 401 +Regra: O Front-End DEVE capturar os status HTTP na camada de Hooks e reagir de acordo, utilizando o formato JSON de erro definido no Back-End (ID: CODE-API-ERROR-HANDLING). + +Status Code Ação Obrigatória do Front-End (Na camada de Hook/Context) +401 Unauthorized Redirecionar o usuário para a página de Login.tsx e limpar o token localmente (no Context/Storage). +400 Bad Request Retornar a mensagem de erro (campo message no JSON de erro) para a Page que irá exibir a mensagem no formulário. +404 Not Found Exibir mensagem genérica de "Recurso não encontrado" ou redirecionar para uma página de erro 404. +1.3. Padrão de Autenticação (Token) +ID: FRONT-API-AUTH-TOKEN +Palavras-Chave: front-end autenticação token jwt bearer +Regra: Após o login, o token de acesso (JWT) DEVE ser armazenado em um local seguro (ex: localStorage ou sessionStorage com as devidas precauções) e enviado em TODAS as requisições subsequentes no cabeçalho Authorization: Bearer . \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Cont\303\252ineres.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Cont\303\252ineres.md" new file mode 100644 index 000000000..80621fcb9 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Cont\303\252ineres.md" @@ -0,0 +1,20 @@ +Padrões de Contêineres (Front-End) +1. Padrões de Contêineres (Docker) + +1.1. Dockerfile do Front-End (Vite/React) +ID: DEVOPS-DOCKER-FRONT +Palavras-Chave: dockerfile frontend react vite otimizacao +Regra: O Dockerfile do Front-End DEVE ser otimizado para a build estática do Vite, utilizando multi-stage build: + +Stage 1 (Build): Usar uma imagem Node.js (ex: node:20-slim) para instalar dependências (npm install) e realizar a build (npm run build). + +Stage 2 (Servidor): Usar uma imagem leve de servidor HTTP (ex: Nginx ou Caddy) para servir os arquivos estáticos gerados na etapa de build. + +1.2. Docker Compose para Ambiente Local +ID: DEVOPS-COMPOSE-LOCAL +Palavras-Chave: docker-compose ambiente local frontend +Regra: O docker-compose.yml é o padrão para o desenvolvimento local. Ele DEVE orquestrar o serviço: + +front: O contêiner Vite (Front-End). + +Regra de Conexão: O Front-End DEVE usar o nome do serviço do Back-End definido no docker-compose (ex: http://web:8080/api) para a BASE_URL de desenvolvimento, e NUNCA localhost. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de C\303\263digo.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de C\303\263digo.md" new file mode 100644 index 000000000..51eab2388 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de C\303\263digo.md" @@ -0,0 +1,39 @@ +Padrões de Convenção e Estrutura de Código (Front-End) +Este documento mapeia a estrutura de pastas do Front-End para as responsabilidades do código, garantindo que o time júnior saiba onde colocar cada tipo de lógica. + +1. Mapeamento da Estrutura de Módulos (Separation of Concerns) +A estrutura de Front-End/src implementa o padrão de Camadas de Apresentação (Presentation Layer), separando as preocupações: + +Pasta Responsabilidade Descrição Padrões de Uso (ID RAG) +pages View Principal (Controller/Coordinator) Contém os componentes principais (ex: Login.tsx, Dashboard.tsx). Sua única responsabilidade é coordenar o estado global, chamar hooks e renderizar os componentes de UI. NUNCA deve conter lógica de formatação ou acesso direto à API. ARQ-SPA-SIMPLES +components Componentes de UI (View) Blocos de construção reutilizáveis (ex: Button, Card, Header). Devem ser puros (stateless) e receber dados via props. ARQ-SPA-SIMPLES, CODE-REACT-PURE-COMPONENTS +hooks Lógica de Dados/Estado (Service) Lógica reusável para manipular o estado local ou chamar a API. Ex: useAuth(), useUserData(). É o ponto de contato entre a Page e a camada de Lib. CODE-REACT-HOOKS, FRONT-API-COMMUNICATION +lib Funções Utilitárias/API Código sem estado, reutilizável (ex: formatDate(), calculateTax()) e o cliente HTTP configurado. Ex: apiClient.ts. FRONT-API-COMMUNICATION, FRONT-API-ERROR-HANDLE +contexts Estado Global Mecanismo para gerenciar o estado global da aplicação (ex: Tema, Usuário Autenticado) sem prop-drilling. - +constants Constantes Globais Variáveis que não mudam (ex: URLs de API, textos estáticos). - + +Padrões de Código Essenciais (Front-End) +1. Padrão de Componentes React + +1.1. Componentes Puros e Tipagem (TypeScript) +ID: CODE-REACT-PURE-COMPONENTS +Palavras-Chave: react typescript componentes puros props +Regra: A maioria dos componentes em src/components DEVE ser funcional e pura (stateless), aceitando as propriedades (props) e emitindo eventos se necessário. Toda prop DEVE ser explicitamente tipada com interface ou type do TypeScript. + +1.2. Evitar Lógica de Negócio em Componentes (Separação de Preocupações) +ID: CODE-REACT-NO-BUSINESS-LOGIC +Regra: Componentes em src/components NÃO DEVEM conter lógica de negócio complexa, chamadas de API diretas (fetch ou axios dentro do componente), ou manipulação de estado que não seja puramente de UI. Delegar isso aos Hooks e Pages. + +2. Padrões de Hooks e Estado + +2.1. Hooks para Lógica de Dados +ID: CODE-REACT-HOOKS +Palavras-Chave: react hooks usememo usecallback +Regra: Utilizar Hooks customizados em src/hooks para isolar a lógica de acesso a dados, manipulação de estado complexa ou efeitos colaterais (useEffect). Isso torna a lógica reutilizável e mais fácil de testar. + +2.2. Otimização de Performance (Básica) +ID: CODE-REACT-PERFORMANCE-JUNIOR +Regra: Usar useMemo para memorizar cálculos caros e useCallback para memorizar funções que são passadas como props para componentes filhos, evitando re-renderizações desnecessárias. + +3. Padrão de Comunicação com a API (Ver documento de Comunicação) +Regra: A comunicação deve ser centralizada em lib/apiClient.ts e consumida pelos Hooks. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Design System.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Design System.md" new file mode 100644 index 000000000..eb32ea098 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Design System.md" @@ -0,0 +1,56 @@ +Padrões de Design System (DS) e Componentização de Alto Nível +Este documento eleva os componentes (já definidos em) a um Design System, fornecendo regras claras para a criação e uso de elementos de interface (UI/UX) consistentes. + +1. Princípios Fundamentais do Design System (DS) +1.1. Fonte Única da Verdade Visual (Single Source of Truth) +ID: DS-VISUAL-SSOT +Palavras-Chave: design system single source of truth atomic design +Regra: Todos os elementos de UI (Cores, Fontes, Espaçamentos, Componentes) DEVEM ser definidos e importados de um local central. O time júnior e o Agente de IA NUNCA devem aplicar estilos diretamente nos componentes de Pages ou Hooks; eles devem sempre usar os componentes de UI de src/components/Common/ ou tokens do Tailwind. + +1.2. Componentes Adaptáveis e Responsivos +ID: DS-RESPONSIVE-FIRST +Palavras-Chave: design system responsivo mobile first +Regra: O desenvolvimento DEVE ser Mobile First. Todos os componentes, por padrão, devem ser projetados e codificados para funcionar e parecerem excelentes em telas pequenas antes de serem adaptados para telas maiores (desktop). O uso de utilitários de responsividade do Tailwind CSS (ex: md:, lg:) é obrigatório. + +1.3. Documentação de Componentes +ID: DS-COMPONENT-DOCS +Regra: Embora estejamos focados na velocidade, cada componente de UI não trivial (ex: Modal, Table, Card) DEVE ter um arquivo de documentação ou story adjacente (ex: usando Storybook ou um README simples no componente) descrevendo suas props e casos de uso. +Requisito para o Agente de IA: A IA deve gerar comentários no código-fonte do componente descrevendo suas funcionalidades. + +2. Padrões de Componentização Específicos +2.1. Nomenclatura e Tipos de Componentes +ID: DS-COMPONENT-ATOMIC +Palavras-Chave: atomic design nomenclatura +Regra: Adotar a lógica do Atomic Design (Átomos, Moléculas, Organismos) para organizar a pasta src/components/ + +Nível Exemplo de Pasta/Nome Descrição Onde Usar +Átomos Button.tsx, Input.tsx Elementos HTML puros e básicos, com pouco ou nenhum estado interno. Em toda parte. +Moléculas LoginForm.tsx, UserCard.tsx Grupos de Átomos que funcionam juntos (ex: Input + Rótulo + Botão). Dentro de Organismos ou Pages. +Organismos Header.tsx, Sidebar.tsx Seções complexas da interface (ex: um Header com navegação e busca). Dentro de Pages. +2.2. Separação de Estilos (Tokens de Design) +ID: DS-STYLE-TOKENS +Regra: Todos os valores de estilo (cores, espaçamento, tamanhos de borda) DEVEM ser referenciados por meio de tokens definidos no arquivo de configuração do Tailwind (ou variáveis CSS se necessário) e NUNCA por valores literais. +Exemplo: Usar className="bg-primary-500" ao invés de style={{ backgroundColor: '#1A73E8' }}. + +3. Padrões de Interação e Feedback (Avançado) +3.1. Feedback Visual de Interação +ID: DS-INTERACTION-FEEDBACK +Palavras-Chave: hover focus active +Regra: Todo elemento interativo (botões, links, ícones clicáveis) DEVE fornecer feedback visual claro para os estados de Hover, Focus (acessibilidade com teclado), e Active (clique). O Tailwind deve ser usado para definir estes estados. + +3.2. Hierarquia Visual de Ações +ID: DS-ACTION-HIERARCHY +Palavras-Chave: botões primário secundário destrutivo +Regra: Botões e Ações devem ter uma hierarquia visual clara, geralmente usando apenas um Botão Primário (destacado, ex: cor principal) por tela/formulário, e os demais como Secundários (contorno/fundo claro) ou Destrutivos (cor de alerta/vermelha). + +3.3. Uso de Cores Semânticas +ID: DS-SEMANTIC-COLOR +Regra: As cores DEVEM ser usadas de forma consistente para transmitir significado, NUNCA apenas por estética: + +Primary (Azul/Verde): Ações Principais, Links. + +Success (Verde): Confirmação, Operação Bem-Sucedida. + +Warning (Amarelo): Atenção, Ações que Requerem Cuidado. + +Danger (Vermelho): Erros, Ações Destrutivas ou Irreversíveis. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" new file mode 100644 index 000000000..5f30b26f4 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" @@ -0,0 +1,14 @@ +Padrões de Integração Contínua (Front-End) +2. Padrões de Integração Contínua (CI/CD) + +2.1. Arquivo de Deploy (deploy.yml) +ID: DEVOPS-CI-DEPLOY-FRONT +Palavras-Chave: ci/cd github actions deploy.yml frontend +Regra: O pipeline de CI/CD (localizado em .github/workflows/deploy.yml) DEVE ter, no mínimo, as seguintes etapas antes de qualquer deploy: + +Instalação/Build: Instalar dependências (npm install) e gerar a build de produção (npm run build). + +Testes: Executar os testes unitários (TEST-FE-TOOL) nas camadas de Hooks e Lib. + +Lint/Tipagem: Garantir que o código siga os padrões de formatação e que o TypeScript não gere erros (npm run lint e npm run type-check). + diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Mocking.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Mocking.md" new file mode 100644 index 000000000..95b64633b --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Mocking.md" @@ -0,0 +1,49 @@ +Padrões de Mocking e Desenvolvimento Desacoplado (Front-End) +Este documento estabelece as regras para simular a API do Back-End no Front-End, permitindo que o desenvolvimento da interface e da experiência do usuário (UI/UX) ocorra em paralelo e seja validado rapidamente. + +1. Padrão de Contrato e Tipagem da API +1.1. Definição do Contrato da API (TypeScript Types) +ID: MOCK-CONTRACT-TYPES +Palavras-Chave: contrato api typescript interface mocking +Regra: Toda requisição e resposta de API DEVE ser primeiro definida em TypeScript Interfaces/Types em src/types/api.ts. Esta tipagem serve como o Contrato Oficial da API. O Front-End e o Back-End devem aderir a este contrato. +Exemplo: Antes de fazer a chamada, defina interface User { id: number; name: string; email: string; }. + +1.2. Mapeamento de Tipagem para Dados Mockados +ID: MOCK-DATA-STRUCTURE +Regra: Todos os dados mockados (simulados) DEVEM ser gerados de forma que correspondam exatamente às TypeScript Interfaces. Isso garante que, quando o Back-End real for conectado, não haja erros de tipagem no Front-End. + +2. Padrões de Simulação (Mocking) +2.1. Centralização do Mocking +ID: MOCK-TOOL-CENTRALIZATION +Palavras-Chave: mocking centralizado msw json-server +Regra: O Mocking de todas as rotas da API DEVE ser implementado em um módulo centralizado (ex: usando uma biblioteca como MSW - Mock Service Worker ou um serviço local simples em src/lib/mockApi.ts). + +2.2. Uso Obrigatório do Mocking no Desenvolvimento Local +ID: MOCK-ENV-DEV +Palavras-Chave: ambiente desenvolvimento mocking +Regra: Durante o desenvolvimento local (npm run dev), o Front-End DEVE consumir os dados mockados por padrão (lido de uma variável de ambiente como VITE_USE_MOCKING=true). +Justificativa: Isso permite que a IA gere a interface e o time júnior veja e valide a UI/UX imediatamente. + +2.3. Estrutura de Resposta Mockada (Padrão JSON) +ID: MOCK-RESPONSE-FORMAT +Regra: Os mocks de sucesso DEVEM retornar a resposta no formato JSON de sucesso definido (ID: CODE-API-SUCCESS), e os mocks de erro DEVEM retornar no formato de erro (ID: CODE-API-ERROR-HANDLING). +Exemplo de Mock de Sucesso (para uma lista de usuários): + +TypeScript + +{ + status: 'success', + message: 'Dados mockados com sucesso.', + data: [{ id: 1, name: 'Usuário Mock 1' }, { id: 2, name: 'Usuário Mock 2' }] +} +3. Integração com o Workflow de Aprovação +3.1. Chave de Toggle para Mocking +ID: MOCK-TOGGLE-KEY +Palavras-Chave: chave toggle mock +Regra: Deve haver uma chave de ambiente (ex: VITE_API_BASE_URL ou VITE_USE_MOCKING) que possa ser facilmente alternada para mudar o Front-End de Mock (Desenvolvimento/Aprovação Rápida) para API Real (Testes de Integração). +Requisito para Juniores: O Front-End gerado DEVE funcionar perfeitamente em ambos os modos, sem alterações no código dos componentes ou hooks. + +3.2. Mocks de Erro para UI/UX +ID: MOCK-ERROR-SIMULATION +Palavras-Chave: simulação de erro ui ux +Regra: O time Front-End DEVE criar mocks específicos para simular os erros de API mais comuns (400, 401, 500) para garantir que os estados de erro da UI/UX (ex: Toast de falha, redirecionamento para Login, mensagens de formulário) sejam exibidos corretamente e sejam amigáveis. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Requisitos.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Requisitos.md" new file mode 100644 index 000000000..e3a3b57ed --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Requisitos.md" @@ -0,0 +1,39 @@ +Padrões de Requisitos Simplificados (Front-End) +3. Padrões de Requisitos Simplificados + +3.1. Template de Requisito Funcional (RF) - Básico +ID: TEMPLATE-RF-BASICO-FE +Palavras-Chave: modelo requisito funcional basico frontend +Foco em clareza, na Interação do Usuário e nos Passos de Teste para verificação manual. + +Exemplo Modelo: +RF-XXX: [Módulo] - Título da Funcionalidade +Descrição (O que deve fazer): O usuário deve ser capaz de realizar o cadastro no sistema através do formulário na página de Login.tsx. +Regras de Negócio Chave (Front-End): + +O campo de e-mail deve ser validado para o formato padrão. + +A confirmação de senha deve ser idêntica à senha (validação local). + +Em caso de sucesso na API (201 Created), o Front-End deve redirecionar o usuário para a página de /dashboard. +Passos de Teste (Para Estagiário): + +[ ] Tentar enviar o formulário com o campo de e-mail vazio. Esperar a mensagem de erro local. + +[ ] Tentar cadastrar com senha diferente da confirmação. Esperar a mensagem de erro local. + +[ ] Tentar cadastrar com dados válidos. Verificar se o usuário é redirecionado para o dashboard. + +3.2. Template de Requisito Não-Funcional (RNF) - Foco em Usabilidade/Performance +ID: TEMPLATE-RNF-SIMPLES-FE +Palavras-Chave: modelo requisito nao-funcional junior usabilidade performance +Os RNFs devem ser simples e diretamente relacionados à experiência do usuário ou à performance básica. + +Exemplo Modelo: +RNF-XXX: [Categoria: Usabilidade] - Estados de Carregamento +Especificação: Todo botão que dispara uma chamada de API (POST/PUT) DEVE exibir um estado de carregamento (loading=true) para evitar cliques duplos e informar ao usuário que a requisição está em andamento. +Justificativa: Melhorar a experiência do usuário e evitar envio de dados duplicados. + +RNF-YYY: [Categoria: Performance] - Carregamento Lento (Lazy Loading) +Especificação: As rotas menos acessadas (ex: /admin-panel) DEVERÃO utilizar o Lazy Loading (carregamento sob demanda) para não atrasar o carregamento inicial da aplicação. +Justificativa: Reduzir o initial load time da aplicação. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Testes Unit\303\241rios.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Testes Unit\303\241rios.md" new file mode 100644 index 000000000..392053157 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de Testes Unit\303\241rios.md" @@ -0,0 +1,21 @@ +Padrões de Testes Unitários (Front-End React) +Garantir que os juniores saibam como testar a UI e a lógica isoladamente. + +2.1. Ferramenta de Teste +ID: TEST-FE-TOOL +Palavras-Chave: testes frontend unitarios jest rtl +Regra: Utilizar Vitest como runner de testes e React Testing Library (RTL) como biblioteca principal para testes de componentes. Foco em testar o comportamento (o que o usuário vê) e não os detalhes de implementação do React. + +2.2. Testes para a Camada de Componentes (UI) +ID: TEST-FE-UI-COMPONENT +Palavras-Chave: testes componentes react rtl mock +Regra: Ao testar um componente em src/components/, é OBRIGATÓRIO utilizar mocking para simular funções passadas como props ou context (se aplicável). O teste deve verificar se o componente renderiza corretamente com as props fornecidas e se o evento correto é disparado (ex: fireEvent.click). + +2.3. Testes para a Camada de Lógica (Hooks/Lib) +ID: TEST-FE-LOGIC-HOOKS +Palavras-Chave: testes hooks lógica reativa +Regra: Testes de Hooks customizados devem usar a função renderHook do RTL (ou similar) para garantir que a lógica de estado e side effects esteja correta. O acesso à API (apiClient) DEVE ser mockado para que o teste seja unitário, verificando apenas o fluxo de sucesso/erro do hook. + +2.4. Localização dos Testes +ID: TEST-FE-LOCATION +Regra: Todos os arquivos de teste devem residir na mesma pasta que o código que está sendo testado (ex: src/components/Button.test.tsx) ou em uma pasta __tests__ adjacente, e ter o sufixo .test.tsx ou .test.ts. \ No newline at end of file diff --git "a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de UI e UX.md" "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de UI e UX.md" new file mode 100644 index 000000000..8fae09807 --- /dev/null +++ "b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/Docs/frontend/Padr\303\265es de UI e UX.md" @@ -0,0 +1,65 @@ +Padrões de Interface e Experiência do Usuário (UI/UX) +Este documento estabelece as regras básicas de design e interação para garantir uma aplicação com excelente usabilidade para o time júnior. O foco é na consistência, clareza e na minimização da frustração do usuário. + +1. Padrões de Formulários e Entradas +1.1. Estado de Feedback Imediato +ID: UX-FORM-FEEDBACK +Palavras-Chave: formulário feedback erro validação +Regra: A validação de campos (erros de formato, campos obrigatórios) DEVE ocorrer imediatamente (on-blur ou on-change) ANTES do envio para o Back-End (validação local no Front-End). O campo com erro DEVE ter sua borda destacada (ex: cor vermelha) e a mensagem de erro deve estar próxima ao campo. + +1.2. Rótulos e Placeholder +ID: UI-FORM-LABELS +Palavras-Chave: formulário rótulo placeholder +Regra: Todo campo de entrada DEVE ter um rótulo (Ay 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

IfV$yw3|!b4*XKp&v2@EbO! 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

  • pg_tfrzdce&H7_1dRBy?IldhuC?|Q9X7x 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 literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store_frontend/c91afe57-ed1b-4259-bb4d-eb7c0e01ab57/data_level0.bin b/backend/Agents/AppAI/RequirementsPlanner/Knowledge/chroma_store_frontend/c91afe57-ed1b-4259-bb4d-eb7c0e01ab57/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..ecb38c1932d740be409d252cc76871b2d79e478f GIT binary patch literal 628400 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

    SF5@$S)0sT#r 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
    KU_*DRrWGQ_)uLVQG;W^&7w%%^utnf_!C8x
    O?Xot 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∋>;ISy+rGnab)+n}xwU7zgx9k!+#@;$!Opp{1> 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 CuPh}1 literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/RequirementsPlanner/ai.py b/backend/Agents/AppAI/RequirementsPlanner/ai.py new file mode 100644 index 000000000..14a2790af --- /dev/null +++ b/backend/Agents/AppAI/RequirementsPlanner/ai.py @@ -0,0 +1,733 @@ +# Back-End\Agents\AppAI\RequirementsPlanner\ai.py +from agents import Agent, Runner, ModelSettings, SQLiteSession, AgentOutputSchema +import logging +import os +from pydantic import BaseModel, Field +from typing import List, Dict, Optional, Literal +from datetime import datetime +from Modules.Helpers.EgetTools import Egetoolsv2 + +from Functions.autosave.autosave import autosave +from Functions.retrieve_backend_context.retrieve_backend_context import retrieve_backend_context + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger("RequirementsPlanner_logger") + + +# ============================================================================ +# OUTPUT PRINCIPAL +# ============================================================================ +class RequirementsPlanOutput(BaseModel): + """ + Output completo do agente de análise de requisitos técnicos. + """ + documentation_files_created: List[str] = Field(..., description="Documentação gerada", min_items=3) + + +async def RequirementsPlannerAppAgent( + OPENAI_API_KEY, + user_id, + tipo_app, + descricao, + user_content, + commit_language = 'pt', + model = "gpt-5-nano", + local_to_save = "./", + type_requirements='backend' + ): + os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY + logger.info(f"Requirements Planner App Agent") + os.makedirs(os.path.join(os.path.dirname(__file__), 'Sessions'), exist_ok=True) + + total_usage = { + "input": 0, "cached": 0, "reasoning": 0, "output": 0, "total": 0 + } + logger.info(f"language {commit_language}") + + if commit_language == 'en': + prompt_system_direct = f""" + + """ + + elif commit_language == 'pt': + if type_requirements == "frontend": + name_chroma_store = "knowledge_requirementsplanner_frontend" + chroma_store = os.path.join(os.path.dirname(__file__), 'Knowledge', 'chroma_store_frontend') + session = SQLiteSession("agent_session_RequirementsPlanner_frontend_01", db_path=os.path.join(os.path.dirname(__file__), 'Sessions', f"session_frontend_{user_id}.db")) + + prompt_system_direct = f""" +# IDENTIDADE E PAPEL +Você é um Analista de Requisitos Técnicos Sênior especializado em Front-End e UX/UI. Seu papel é transformar descrições de produtos em **especificações técnicas detalhadas, profissionais e implementáveis** para aplicações web ou mobile. + +## OBJETIVO PRINCIPAL +Analisar o produto descrito e gerar documentação técnica completa contendo: +- Requisitos funcionais de interface e interação +- Arquitetura Front-End detalhada +- Stack tecnológica justificada (frameworks, bibliotecas, state management) +- Padrões de comunicação com APIs e integração com Back-End +- Considerações de performance, acessibilidade, responsividade e segurança no navegador +- Estimativas de complexidade por componente/módulo + +--- + +# INFORMAÇÕES DE ENTRADA + +## Dados do Projeto +- **Tipo de Aplicação**: {tipo_app} + - `saas`, `ecommerce`, `projeto`, `site`, `portfólio` +- **Descrição do Produto**: {descricao} +- **Diretório de Conhecimento**: {chroma_store} + +--- + +# FLUXO DE TRABALHO OBRIGATÓRIO + +## ETAPA 1: ANÁLISE DE CONTEXTO E PESQUISA + +### 1.1) Consultar Base de Conhecimento Front-End +```json +{{ +"retrieve_backend_context": {{ + "query": "melhores práticas front-end {tipo_app} UI/UX performance", + "k": 5, + "path": "{chroma_store}", + "name": "{name_chroma_store}" +}} +}} +```` + +### 1.2) Consultar Padrões Tecnológicos + +```json +{{ +"retrieve_backend_context": {{ + "query": "stack front-end {tipo_app} frameworks state management", + "k": 4, + "path": "{chroma_store}", + "name": "{name_chroma_store}" +}} +}} +``` + +### 1.3) Consultar Requisitos de Domínio + +```json +{{ +"retrieve_backend_context": {{ + "query": "[extraia palavras-chave de {descricao}] funcionalidades UI/UX", + "k": 4, + "path": "{chroma_store}", + "name": "{name_chroma_store}" +}} +}} +``` + + +## REGRAS DE QUALIDADE + +✅ Sempre: + +* Base decisões em dados retrieve_backend_context +* Justifique escolhas tecnológicas +* Documente trade-offs +* Exemplo de código real, claro e testável + +❌ Nunca: + +* Criar requisitos genéricos +* Ignorar performance, acessibilidade ou responsividade +* Sugerir frameworks sem justificativa técnica + +Execute TODAS as consultas acima antes de prosseguir para análise. + +--- + +## ETAPA 2: ANÁLISE E DECOMPOSIÇÃO + +2.1) Identificar Componentes e Layouts + +* Componentes principais (botões, formulários, tabelas, cards) +* Layouts e templates (grid, responsivo, breakpoints) +* Padrões de navegação e fluxo do usuário + +2.2) Classificação de Complexidade + +* Baixa: Componente simples sem lógica complexa (1-3 story points) +* Média: Formulários, validações, integração com APIs (5-8 story points) +* Alta: Dashboard, gráficos dinâmicos, animações complexas, SSR/SSG (13-21 story points) + +--- + +## ETAPA 3: ESPECIFICAÇÃO TÉCNICA DETALHADA + +3.1) Estrutura da Documentação + +A) REQUISITOS FUNCIONAIS (RF) + +* RF-001: [Componente] - Título do Requisito +* Descrição: Detalhe do comportamento esperado +* Critérios de Aceitação: + + * [ ] Critério 1 testável + * [ ] Critério 2 testável +* Prioridade: Crítica | Alta | Média | Baixa +* Complexidade: Baixa | Média | Alta +* Dependências: [Lista de RF-XXX] + +B) REQUISITOS NÃO-FUNCIONAIS (RNF) + +* Performance: Tempo de renderização, lazy loading, caching +* Acessibilidade: WCAG 2.2 compliance +* Responsividade: Mobile-first, breakpoints definidos +* Segurança: XSS, CSRF, input sanitization +* Manutenibilidade: Componentização, testes unitários (Jest/React Testing Library) + +C) ARQUITETURA FRONT-END + +* Decisões arquiteturais (ADR-001, ADR-002...) +* Estrutura de pastas modular +* Comunicação com APIs (fetch, axios, SWR, React Query) +* Estado global (Redux, Zustand, Context API) +* SSR/SSG se aplicável (Next.js, Nuxt, Remix) + +D) EXEMPLOS DE CÓDIGO + +* Estrutura de componente React/Vue/Svelte +* Hooks personalizados e exemplos de integração com API +* Styled-components / Tailwind / CSS Modules conforme stack + +E) TESTES E QA + +* Unit tests, Integration tests, E2E +* Ferramentas sugeridas: Jest, Cypress, Playwright +* Cobertura mínima e critérios de aceitação + +--- + +## ETAPA 4: ESTIMATIVAS E PRIORIZAÇÃO + +* Matriz MoSCoW +* Story points por módulo/componente +* Dependências e ordem de implementação (sprints) + +--- +ETAPA 5: SALVAMENTO DA DOCUMENTAÇÃO +5.1) Salvar Especificação Completa +json{{ +"autosave": {{ + "code": "# [Conteúdo completo da especificação técnica em Markdown]\n\n# Technical Requirements Document\n## Project Overview\n...", + "path": "{local_to_save}/docs/technical-requirements.md" +}} +}} +5.2) Salvar ADRs +json{{ +"autosave": {{ + "code": "# ADR-001: [Título]\n## Context\n...", + "path": "{local_to_save}/docs/adr/001-architecture-decision.md" +}} +}} + +5.5) Salvar Resumo Executivo (MARKDOWN Profissional) +json{{ +"autosave": {{ + "code": "conteudo completo Resumo Executivo Profissional ", + "path": "{local_to_save}/docs/requirements-summary.md" +}} +}} + + +CHECKLIST PRÉ-RESPOSTA +Antes de enviar o JSON final, confirme: + +Executei TODAS as consultas retrieve_backend_context (mínimo 3)? +Especifiquei TODOS os Requisitos Funcionais com critérios de aceitação? +Especifiquei Requisitos Não-Funcionais ? +Criei pelo menos 3 ADRs justificando decisões arquiteturais? +Salvei TODOS os documentos via autosave? +O JSON de resposta está válido e completo? + + """ + + + elif type_requirements == "backend": + name_chroma_store = "knowledge_requirementsplanner" + chroma_store = os.path.join(os.path.dirname(__file__), 'Knowledge', 'chroma_store') + session = SQLiteSession("agent_session_RequirementsPlanner_backend_01", db_path=os.path.join(os.path.dirname(__file__), 'Sessions', f"session_backend_{user_id}.db")) + + prompt_system_direct = f""" + # IDENTIDADE E PAPEL + Você é um Analista de Requisitos Técnicos Sênior especializado em arquitetura de software e engenharia de sistemas. Seu papel é transformar descrições de produtos em especificações técnicas detalhadas, profissionais e implementáveis. + + ## OBJETIVO PRINCIPAL + Analisar o produto descrito e gerar uma documentação técnica completa contendo: + - Requisitos funcionais e não-funcionais + - Arquitetura de sistema detalhada + - Stack tecnológica justificada + - Especificações de API e banco de dados + - Considerações de segurança, performance e escalabilidade + - Estimativas de complexidade por módulo + + --- + + # INFORMAÇÕES DE ENTRADA + + ## Dados do Projeto + - **Tipo de Aplicação**: {tipo_app} + - `saas`: Software como Serviço (multi-tenant, subscriptions) + - `ecommerce`: Plataforma de comércio eletrônico + - `projeto`: Sistema corporativo/interno + - `site`: Website institucional/marketing + - `portfólio`: Portfólio profissional/pessoal + + - **Descrição do Produto**: {descricao} + + + --- + + # FLUXO DE TRABALHO OBRIGATÓRIO + + ## ETAPA 1: ANÁLISE DE CONTEXTO E PESQUISA + + ### 1.1) Consultar Base de Conhecimento de Arquitetura + Antes de definir qualquer requisito, você DEVE buscar referências relevantes: + ```json + {{ + "retrieve_backend_context": {{ + "query": "arquitetura {tipo_app} melhores práticas padrões design", + "k": 5, + "path": "{chroma_store}", + "name": "{name_chroma_store}" + }} + }} + 1.2) Consultar Padrões Tecnológicos + json{{ + "retrieve_backend_context": {{ + "query": "stack tecnológica {tipo_app} escalabilidade segurança", + "k": 4, + "path": "{chroma_store}", + "name": "{name_chroma_store}" + }} + }} + 1.3) Consultar Requisitos de Domínio + json{{ + "retrieve_backend_context": {{ + "query": "[extraia palavras-chave de {descricao}] requisitos funcionalidades", + "k": 4, + "path": "{chroma_store}", + "name": "{name_chroma_store}" + }} + }} + Importante: Execute TODAS as consultas acima antes de prosseguir para a análise. + + ETAPA 2: ANÁLISE E DECOMPOSIÇÃO + 2.1) Análise de Domínio + Baseado em {tipo_app} e {descricao}, identifique: + + Entidades Principais (substantivos no domínio) + + Exemplo para ecommerce: Produto, Pedido, Cliente, Pagamento + + + Ações Críticas (verbos de negócio) + + Exemplo para ecommerce: cadastrar produto, processar pagamento, rastrear entrega + + + Regras de Negócio (lógica específica do domínio) + + Exemplo: "Desconto só pode ser aplicado se carrinho > $50" + + + Fluxos Críticos (user journeys principais) + + Exemplo: Navegação → Carrinho → Checkout → Confirmação + + + + 2.2) Classificação de Complexidade + Para cada funcionalidade identificada, classifique: + + Baixa: CRUD simples, sem lógica complexa (1-3 story points) + Média: Integrações externas, validações complexas (5-8 story points) + Alta: Processamento assíncrono, algoritmos complexos (13-21 story points) + + + ETAPA 3: ESPECIFICAÇÃO TÉCNICA DETALHADA + 3.1) Estrutura da Documentação + A) REQUISITOS FUNCIONAIS (RF) + Liste todos os requisitos funcionais no formato: + RF-001: [Módulo] - Título do Requisito + Descrição: Detalhe completo do que o sistema deve fazer + Critérios de Aceitação: + - [ ] Critério 1 testável e mensurável + - [ ] Critério 2 testável e mensurável + Prioridade: Crítica | Alta | Média | Baixa + Complexidade: Baixa | Média | Alta (com justificativa) + Dependências: [Lista de RF-XXX que devem ser implementados antes] + Exemplo: + RF-001: [Autenticação] - Sistema de Login com JWT + Descrição: Usuários devem poder autenticar via email/senha e receber token JWT válido por 24h + Critérios de Aceitação: + - [ ] Endpoint POST /api/auth/login aceita email e senha + - [ ] Token JWT contém user_id, roles e expiration + - [ ] Senha é validada com bcrypt (min 8 caracteres) + - [ ] Rate limiting de 5 tentativas por minuto por IP + Prioridade: Crítica + Complexidade: Média (integração JWT + rate limiting + validações) + Dependências: RF-002 (Cadastro de Usuário) + B) REQUISITOS NÃO-FUNCIONAIS (RNF) + RNF-001: [Categoria] - Título + Especificação: Métrica mensurável + Justificativa: Por que é necessário + Verificação: Como será testado + Categorias Obrigatórias: + + Performance + + Tempo de resposta API (ex: p95 < 200ms) + Throughput (ex: 1000 req/s) + Tempo de carregamento de página + + + Escalabilidade + + Usuários simultâneos suportados + Estratégia de horizontal scaling + Cache e CDN + + + Segurança + + Autenticação e autorização (RBAC, OAuth2) + Proteção contra OWASP Top 10 + Criptografia de dados sensíveis + Rate limiting e DDoS protection + + + Confiabilidade + + Uptime esperado (ex: 99.9%) + Estratégia de backup + Disaster recovery (RPO/RTO) + + + Manutenibilidade + + Cobertura de testes (ex: >80%) + Documentação de API (OpenAPI/Swagger) + Logging e monitoring + + + + C) ARQUITETURA DE SISTEMA + C.1) Decisões Arquiteturais + Para cada decisão, documente: + ADR-001: [Título da Decisão] + Contexto: Problema ou necessidade + Decisão: Escolha técnica feita + Alternativas Consideradas: [Lista de opções descartadas] + Consequências: Trade-offs e implicações + Exemplo: + ADR-001: Utilizar Arquitetura de Microserviços + Contexto: Sistema SaaS multi-tenant com módulos independentes (auth, billing, analytics) + Decisão: Adotar microserviços com comunicação via message broker (RabbitMQ) + Alternativas Consideradas: + - Monolito modular: descartado por dificuldade de escalonamento independente + - Serverless: descartado por vendor lock-in e cold start latency + Consequências: + + Escalabilidade independente por serviço + + Deploy independente (CI/CD por microserviço) + - Complexidade operacional aumentada (service discovery, distributed tracing) + - Necessidade de API Gateway e centralização de logs + C.2) Diagrama de Componentes + [Representação textual da arquitetura] + + Exemplo para SaaS: + ┌─────────────────┐ + │ API Gateway │ (Kong/Traefik) + └────────┬────────┘ + │ + ┌────┴────┬────────────┬────────────┐ + ▼ ▼ ▼ ▼ + ┌─────┐ ┌────────┐ ┌──────────┐ ┌─────────┐ + │Auth │ │Billing │ │Analytics │ │Notif. │ + │Svc │ │Svc │ │Svc │ │Svc │ + └──┬──┘ └───┬────┘ └────┬─────┘ └────┬────┘ + │ │ │ │ + └─────────┴────────────┴─────────────┘ + │ + ┌─────▼─────┐ + │ Message │ (RabbitMQ/Kafka) + │ Broker │ + └───────────┘ + C.3) Stack Tecnológica Justificada + json{{ + "backend": {{ + "linguagem": "Python 3.11", + "justificativa": "Ecossistema maduro para data processing, ML integrations", + "framework": "FastAPI", + "justificativa_framework": "Performance superior, async nativo, validação automática com Pydantic" + }}, + "banco_dados": {{ + "principal": "PostgreSQL 15", + "justificativa": "ACID compliance, JSONB para flexibilidade, extensões (PostGIS, pg_vector)", + "cache": "Redis 7", + "justificativa_cache": "Low latency (<1ms), suporte a pub/sub para real-time features" + }}, + "infraestrutura": {{ + "containers": "Docker + Kubernetes", + "justificativa": "Orquestração, auto-scaling, service mesh com Istio", + "ci_cd": "GitHub Actions", + "monitoring": "Prometheus + Grafana + ELK Stack" + }} + }} + D) ESPECIFICAÇÃO DE BANCO DE DADOS + D.1) Modelo de Dados + Para cada entidade principal: + sql-- Exemplo: Tabela de Usuários para SaaS + CREATE TABLE users ( + id UUID PRIMARY KEY DEFAULT gen_random_uuid(), + email VARCHAR(255) UNIQUE NOT NULL, + password_hash VARCHAR(255) NOT NULL, + full_name VARCHAR(255), + role VARCHAR(50) NOT NULL CHECK (role IN ('admin', 'user', 'viewer')), + tenant_id UUID NOT NULL REFERENCES tenants(id) ON DELETE CASCADE, + is_active BOOLEAN DEFAULT true, + email_verified_at TIMESTAMP, + last_login_at TIMESTAMP, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + ); + + -- Índices para performance + CREATE INDEX idx_users_email ON users(email); + CREATE INDEX idx_users_tenant_id ON users(tenant_id); + CREATE INDEX idx_users_role ON users(role) WHERE is_active = true; + + -- Particionamento (se aplicável) + -- Estratégia: Particionar por tenant_id para isolar dados multi-tenant + D.2) Estratégias de Otimização + + Índices: [Justifique cada índice baseado em queries frequentes] + Particionamento: [Se tabela > 10M registros] + Desnormalização: [Onde necessário para performance, com justificativa] + + E) ESPECIFICAÇÃO DE API + E.1) Endpoints Principais + POST /api/v1/auth/login + Request Body: + {{ + "email": "string (format: email, required)", + "password": "string (minLength: 8, required)" + }} + Response 200: + {{ + "access_token": "string (JWT)", + "refresh_token": "string", + "expires_in": "number (seconds)", + "user": {{ + "id": "uuid", + "email": "string", + "role": "string" + }} + }} + Response 401: + {{ + "error": "invalid_credentials", + "message": "Email ou senha inválidos" + }} + Rate Limit: 5 req/min per IP + Authentication: None (public endpoint) + E.2) Padrões de API + + Versionamento: URL path (/api/v1/) + Paginação: Cursor-based para listas grandes + Filtros: Query params padrão REST + Ordenação: ?sort=field:asc|desc + Erros: RFC 7807 (Problem Details) + + F) SEGURANÇA + F.1) Autenticação e Autorização + Estratégia: JWT com refresh token rotation + - Access token: 15 minutos (stateless) + - Refresh token: 7 dias (stored em DB, revogável) + - RBAC com permissões granulares + - MFA obrigatório para admin roles + F.2) Proteções Implementadas + + Input validation (Pydantic schemas) + SQL Injection (ORM parametrizado) + XSS (Content Security Policy) + CSRF (SameSite cookies + CSRF tokens) + Rate limiting (por IP e por usuário) + Secrets management (HashiCorp Vault / AWS Secrets Manager) + Audit logs (quem/quando/o quê para ações críticas) + + G) OBSERVABILIDADE + G.1) Logging + python# Estrutura de log padrão (JSON structured logging) + {{ + "timestamp": "2025-10-07T10:30:00Z", + "level": "INFO", + "service": "auth-service", + "trace_id": "abc123", + "span_id": "def456", + "user_id": "uuid", + "action": "login_attempt", + "metadata": {{ + "ip": "192.168.1.1", + "user_agent": "Mozilla/5.0..." + }} + }} + G.2) Métricas + + RED metrics: Rate, Errors, Duration (por endpoint) + Infra metrics: CPU, Memory, Disk, Network + Business metrics: User signups, conversions, revenue + + G.3) Tracing + + Distributed tracing com OpenTelemetry + Integração com Jaeger/Zipkin + + + ETAPA 4: ESTIMATIVAS E PRIORIZAÇÃO + 4.1) Matriz de Priorização (MoSCoW) + Classifique cada RF em: + + Must Have: Requisitos críticos para MVP + Should Have: Importantes mas não bloqueantes + Could Have: Desejáveis se houver tempo + Won't Have: Fora do escopo atual + + 4.2) Estimativa de Esforço + Módulo: Autenticação + RF-001: Login JWT - 5 story points (3 dias) + RF-002: Cadastro - 3 story points (2 dias) + RF-003: Reset senha - 5 story points (3 dias) + RF-004: MFA - 8 story points (5 dias) + Total Módulo: 21 story points (13 dias) + 4.3) Dependências e Ordem de Implementação + Sprint 1 (Fundação): + 1. Setup infraestrutura (Docker, DB, Redis) + 2. Configuração base (settings, logging) + 3. RF-002 (Cadastro) → RF-001 (Login) + + Sprint 2 (Core Features): + 4. RF-005 (CRUD Entidade Principal) + 5. RF-010 (Business Logic Crítica) + ... + + ETAPA 5: SALVAMENTO DA DOCUMENTAÇÃO + 5.1) Salvar Especificação Completa + json{{ + "autosave": {{ + "code": "# [Conteúdo completo da especificação técnica em Markdown]\n\n# Technical Requirements Document\n## Project Overview\n...", + "path": "{local_to_save}/docs/technical-requirements.md" + }} + }} + 5.2) Salvar ADRs + json{{ + "autosave": {{ + "code": "# ADR-001: [Título]\n## Context\n...", + "path": "{local_to_save}/docs/adr/001-architecture-decision.md" + }} + }} + + 5.5) Salvar Resumo Executivo (MARKDOWN Profissional) + json{{ + "autosave": {{ + "code": "conteudo completo Resumo Executivo Profissional ", + "path": "{local_to_save}/docs/requirements-summary.md" + }} + }} + + + CHECKLIST PRÉ-RESPOSTA + Antes de enviar o JSON final, confirme: + + Executei TODAS as consultas retrieve_backend_context (mínimo 3)? + Especifiquei TODOS os Requisitos Funcionais com critérios de aceitação? + Especifiquei Requisitos Não-Funcionais para TODAS as 5 categorias? + Criei pelo menos 3 ADRs justificando decisões arquiteturais? + Defini o schema de banco de dados com índices e justificativas? + Documentei endpoints de API com request/response completos? + Estimei story points e duração para TODOS os módulos? + Salvei TODOS os documentos via autosave? + O JSON de resposta está válido e completo? + As instruções para o próximo agente são claras e acionáveis? + + + REGRAS DE QUALIDADE + ✅ SEMPRE: + + Base decisões técnicas em dados da retrieve_backend_context + Justifique TODAS as escolhas tecnológicas (sem "porque sim") + Forneça exemplos concretos (código SQL, schemas JSON, etc.) + Estime complexidade baseado em dependências e integrações + Documente trade-offs (não existe bala de prata) + Use nomenclatura padronizada (kebab-case para arquivos, snake_case para DB) + + ❌ NUNCA: + + Crie requisitos genéricos ("O sistema deve ser rápido") + Recomende tecnologias sem justificativa técnica + Omita requisitos de segurança ou observabilidade + Estime sem considerar dependências e complexidade + Use jargão sem explicar (ou explique acronyms na primeira menção) + + + DIRETRIZES POR TIPO DE APLICAÇÃO + SaaS: + + Foco: Multi-tenancy, billing, subscriptions, analytics + Crítico: Isolamento de dados por tenant, escalabilidade horizontal + + E-commerce: + + Foco: Catálogo, carrinho, checkout, pagamentos, logística + Crítico: Consistência de estoque, PCI DSS compliance, integração com gateways + + Projeto Corporativo: + + Foco: Workflows, aprovações, relatórios, integrações + Crítico: SSO/LDAP, auditoria, compliance (LGPD/GDPR) + + Site/Portfólio: + + Foco: Performance, SEO, conteúdo estático + Crítico: CDN, caching agressivo, Core Web Vitals + + + COMECE AGORA: Execute as 3 consultas retrieve_backend_context obrigatórias antes de qualquer análise. + """ + + imported_tools = [autosave, retrieve_backend_context] + + agent = Agent( + name="Agent Requirements Planner App", + instructions=prompt_system_direct, + model=model, + output_type=AgentOutputSchema(RequirementsPlanOutput, strict_json_schema=True), + model_settings=ModelSettings(include_usage=True), + tools=imported_tools + ) + result = await Runner.run(agent, user_content, max_turns=300, session=session) + plan = result.final_output + documentation_files_created = plan.documentation_files_created + # descricao = plan.descricao + # total_horas = plan.total_horas_estimadas + # sprints = plan.sprints + + usage = result.context_wrapper.usage + total_usage["input"] = usage.input_tokens + total_usage["cached"] = usage.input_tokens_details.cached_tokens + total_usage["reasoning"] = usage.output_tokens_details.reasoning_tokens + total_usage["output"] = usage.output_tokens + total_usage["total"] = usage.total_tokens + + logger.info(f"Agent Final Usage: {total_usage['total']} total tokens.") + return total_usage["total"], documentation_files_created + + + diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Arquitetura.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Arquitetura.md" new file mode 100644 index 000000000..10a747d2f --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Arquitetura.md" @@ -0,0 +1,186 @@ +0. Padrões de Arquitetura Simplificada +Arquitetura Padrão: Monolito Simples (MVC/Camadas) +ID: ARQ-MONOLITO-SIMPLES +Palavras-Chave: arquitetura monolito simples mvc camadas +Padrão: Adotar o padrão de Camadas (Presentation -> Service -> Data/Repository) ou MVC (Model-View-Controller) para organizar o código. +Fluxo: O Flask (Presentation/Controller) chama a camada de Serviço (Service) para executar a lógica de negócio, que, por sua vez, usa a camada de Repositório (Data/Repository) para interagir com o PostgreSQL. +Vantagem: É fácil de navegar, testar e é a arquitetura inicial mais recomendada para aprender a base. + +Padrões de Convenção e Estrutura de Código (Back-End) +Este documento mapeia a estrutura de pastas do Back-End para as responsabilidades do código, garantindo que o time júnior saiba onde colocar cada tipo de lógica. + +1. Mapeamento da Estrutura de Módulos (Separation of Concerns) +A estrutura de Back-End/Modules implementa o padrão de Camadas de Serviço (Service Layer), separando as preocupações: + +Pasta + +Responsabilidade + +Descrição + +Padrões de Uso (ID RAG) + +Routes + +Interface (Controller) + +Contém os arquivos auth.py, user.py, etc., que definem as rotas (URL, métodos HTTP). A única responsabilidade é receber a requisição, validar a entrada (Pydantic), e chamar a camada de Service (Resolvers). NUNCA deve conter lógica de negócio ou acesso direto ao banco. + +STACK-BACK-FLASK, CODE-API-SUCCESS + +Resolvers + +Lógica de Negócio (Service) + +O coração da aplicação. Contém a lógica de negócio principal (ex: user_register.py, generate_invoice_pdf.py). Recebe dados validados da Routes, executa a regra de negócio e coordena chamadas a Geters, Savers e Helpers. + +ARQ-BUSINESS-SERVICE, CODE-API-ERROR-HANDLING + +Geters + +Acesso à Leitura (Repository) + +Funções puras para ler dados de PostgreSQL (via Flask-SQLAlchemy) ou MongoDB (logs/auditoria). Ex: get_user_by_email(). + +STACK-DB-POSTGRES, CODE-DB-READ-GET + +Savers + +Acesso à Escrita (Repository) + +Funções puras para escrever ou atualizar dados no PostgreSQL ou MongoDB. Ex: create_new_user(), log_action(). Contém o db.session.commit(). + +STACK-DB-POSTGRES, STACK-DB-MONGO-LOGS, CODE-DB-CREATE-COMMIT + +Helpers + +Funções Utilitárias + +Código sem estado, reutilizável, que não contém lógica de negócio ou acesso ao banco. Ex: format_date(), validate_cpf(), calculate_discount(). + +- + +Config + +Configuração da Aplicação + +Inicialização de módulos (Flask, SQLAlchemy, MongoDB, etc.) e carregamento de variáveis de ambiente. + +- + +2. Convenções de Nomenclatura e Arquivos +2.1. Nomenclatura de Arquivos +ID: CONV-FILE-NAMING +Regra: Usar snake_case para todos os nomes de arquivos Python e pastas, sendo descritivo. + +Bom: user_registration_resolver.py, get_all_products.py + +Ruim: UserRegistration.py, Getallproducts.py + +2.2. Nomenclatura de Funções +ID: CONV-FUNC-NAMING +Regra: Funções devem usar verbos no infinitivo para indicar a ação que realizam (ex: get, create, update, send, generate). + +Funções em Resolvers: Devem descrever o processo: register_new_user(), process_order(). + +Funções em Geters/Savers: Devem ser diretas ao DB: get_user_by_id(), save_new_log(). + +2.3. Uso de try...except +ID: CONV-TRY-EXCEPT +Regra: O bloco try...except DEVE ser usado primariamente na camada Resolvers (Service) e NÃO nas rotas. As rotas devem apenas capturar a exceção tratada e mapear para a resposta HTTP (ex: 400 Bad Request). + +Anti-Padrão: + +# Módulos/Routes/user.py (ANTI-PADRÃO) +@user_bp.route('/register', methods=['POST']) +def register(): + try: + # Lógica de negócio ou DB aqui + ... + except Exception as e: + return jsonify({"error": str(e)}), 500 + +3. arquitetura desejavel: +``` +nomedoprojeto\ +├── Readme.md +├── docker-compose.yml +└── .github\ + └── workflows\ + ├── deploy.yml +└── Front-End\ + └── vite.config.ts + └── tsconfig.node.json + └── tsconfig.json + └── tsconfig.app.json + └── tailwind.config.ts + └── postcss.config.js + └── package.json + └── Dockerfile + └── package-lock.json + └── index.html + └── eslint.config.js + └── components.json + └── .env + └── public\ + └── src\ + └── components\ + ├── ... + └── constants\ + ├── ... + └── contexts\ + ├── ... + └── hooks\ + ├── ... + └── lib\ + ├── ... + └── pages\ + ├── Login.tsx + ├── ... + └── App.css + └── App.tsx + └── index.css + └── main.tsx + └── vite-env.d.ts + +└── Back-End\ + ├── requirements.txt + ├── Dockerfile + ├── api.py + └── Keys\ + ├── keys.env + └── Models\ + └── mongoDB\ + ├── audit.py + ├── logs.py + └── postgreSQL\ + ├── user.py + ├── ... + └── Modules\ + └── Config\ + ├── setup.py + ├── ... + └── Geters\ + ├── logs.py + ├── user_by_access_token.py + ├── user_by_email.py + ├── ... + └── Helpers\ + ├── ... + └── Resolvers\ + ├── generate_invoice_pdf.py + ├── send_email.py + ├── user_identifier.py + ├── ... + └── Routes\ + ├── auth.py + ├── ... + └── Savers\ + ├── log_action.py + ├── log_audit.py + ├── log_system_health.py + ├── ... + └── Updaters\ + ├── ... + +``` diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" new file mode 100644 index 000000000..de8497e07 --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Comunica\303\247\303\243o.md" @@ -0,0 +1,35 @@ +1. Padrão de Comunicação (Front-End) + +1.1. Configuração de Requisições HTTP + +ID: FRONT-API-COMMUNICATION +Palavras-Chave: front-end comunicação api axios fetch base url +Regra: O Front-End DEVE usar uma única instância de cliente HTTP (como Axios ou Fetch API) configurada com uma BASE_URL (lida do .env do Front-End) e com o cabeçalho Content-Type: application/json padrão. + +1.2. Tratamento de Erro na Comunicação (Front-End) + +ID: FRONT-API-ERROR-HANDLE +Palavras-Chave: front-end tratamento erro 400 401 +Regra: O Front-End DEVE capturar os status HTTP e reagir de acordo, utilizando o formato JSON de erro definido no Back-End (CODE-API-ERROR-HANDLING). + +Status Code + +Ação Obrigatória do Front-End + +401 Unauthorized + +Redirecionar o usuário para a página de Login.tsx e limpar o token localmente. + +400 Bad Request + +Exibir a mensagem de erro (campo message no JSON de erro) diretamente no formulário, de forma amigável ao usuário. + +404 Not Found + +Exibir mensagem genérica de "Recurso não encontrado" ou redirecionar para uma página de erro 404. + +1.3. Padrão de Autenticação (Token) + +ID: FRONT-API-AUTH-TOKEN +Palavras-Chave: front-end autenticação token jwt bearer +Regra: Após o login, o token de acesso (JWT) DEVE ser armazenado em um local seguro (ex: localStorage ou sessionStorage com as devidas precauções) e enviado em TODAS as requisições subsequentes no cabeçalho Authorization: Bearer . \ No newline at end of file diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" new file mode 100644 index 000000000..d954e079a --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Cont\303\252ineres.md" @@ -0,0 +1,31 @@ +1. Padrões de Contêineres (Docker) + +1.1. Dockerfile do Back-End (Flask) + +ID: DEVOPS-DOCKER-BACK +Palavras-Chave: dockerfile backend flask python otimizacao +Regra: O Dockerfile do Back-End DEVE ser otimizado para o Python, utilizando multi-stage build (se possível) ou, no mínimo, um .dockerignore para excluir arquivos desnecessários (.git, __pycache__). + +Etapas Cruciais: + +Começar de uma imagem oficial de Python (ex: python:3.11-slim-buster). + +Copiar requirements.txt e instalá-los antes de copiar o código-fonte (para aproveitar o cache do Docker). + +Definir o ENTRYPOINT para executar o api.py ou um script de inicialização. + +1.2. Docker Compose para Ambiente Local + +ID: DEVOPS-COMPOSE-LOCAL +Palavras-Chave: docker-compose ambiente local postgres mongodb +Regra: O docker-compose.yml é o padrão para o desenvolvimento local. Ele DEVE orquestrar no mínimo três serviços: + +web: O contêiner Flask (Back-End). + +db: O contêiner PostgreSQL. + +mongo: O contêiner MongoDB. + +front: O contêiner Front-End (React/Vite) para simular o ambiente de produção. + +Regra de Conexão: O Back-End DEVE usar os nomes dos serviços definidos no docker-compose (ex: postgres://user:pass@db:5432/app) e NUNCA localhost. \ No newline at end of file diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" new file mode 100644 index 000000000..f7d47f64b --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de C\303\263digo.md" @@ -0,0 +1,113 @@ +Padrões de Código Essenciais (Flask e SQLAlchemy) + +Esta documentação fornece o "como fazer" para o time de desenvolvimento, garantindo que os requisitos gerados pelo agente sejam implementados de forma consistente e com boas práticas básicas na stack Flask/PostgreSQL. + +1. Padrão de Resposta e Erro da API (JSON) + +1.1. Resposta de Sucesso Padrão + +ID: CODE-API-SUCCESS +Palavras-Chave: flask resposta padrao json 200 201 +Regra: Todas as respostas de sucesso DEVERÃO ser em formato JSON, encapsulando o objeto de dados. + +Criação (POST): Usar status 201 Created. + +Leitura/Atualização (GET/PUT): Usar status 200 OK. + +Exemplo de Corpo de Resposta (200 OK): + +{ + "status": "success", + "message": "Operação realizada com sucesso.", + "data": { + "id": 101, + "nome": "Usuário Teste", + "email": "teste@exemplo.com" + } +} + + +1.2. Tratamento de Erro Padrão + +ID: CODE-API-ERROR-HANDLING +Palavras-Chave: flask tratamento erro 400 404 500 +Regra: Em caso de erro, o status HTTP DEVE refletir a natureza do problema, e a resposta DEVE conter a chave "error". + +Status Code + +Causa Comum + +Descrição para o Agente + +400 Bad Request + +Falha de validação de dados (ex: e-mail inválido, campo obrigatório faltando). + +Gerar requisito para validar a entrada antes de chamar o Service. + +401 Unauthorized + +Token de acesso inválido ou ausente. + +Gerar requisito para implementar um decorador de autenticação. + +404 Not Found + +Recurso não encontrado (ex: GET /usuarios/999 que não existe). + +Gerar requisito para tratar o erro "Resource Not Found" no Service layer. + +500 Internal Server Error + +Erro inesperado no servidor. + +Gerar requisito para um bloco try/except robusto na camada de Service. + +2. Padrões CRUD com Flask-SQLAlchemy + +2.1. Padrão de Leitura (Repository/Data Layer) + +ID: CODE-DB-READ-GET +Palavras-Chave: sqlalchemy leitura find_by_id orm get +Regra: Usar session.get(Model, id) para buscar por chave primária. +Anti-Padrão a evitar: Nunca expor o objeto de banco de dados diretamente ao Controller. Sempre mapear para um DTO (Data Transfer Object) simples ou um dicionário. + +2.2. Padrão de Criação e Commit + +ID: CODE-DB-CREATE-COMMIT +Palavras-Chave: sqlalchemy criacao add commit +Regra: A criação de novos registros DEVE seguir o padrão novo_obj = Model(**dados); db.session.add(novo_obj); db.session.commit(). + +2.3. Padrão de Logs Assíncronos (MongoDB) + +ID: CODE-DB-LOGS-MONGO +Palavras-Chave: mongodb logs assincronos +Regra: Logs de eventos não críticos (auditoria de acesso, erros não fatais) DEVERÃO ser enviados para o MongoDB. A chamada ao MongoDB deve ser non-blocking (se possível com thread ou pool), para não atrasar a resposta da API principal (PostgreSQL/Flask). + +Exemplo de Estrutura de Log (MongoDB): + +{ + "timestamp": "2025-10-07T10:00:00Z", + "user_id": 101, + "action": "LOGIN_SUCCESS", + "ip_address": "192.168.1.1", + "details": { + "device": "Mobile", + "browser": "Chrome" + } +} + + +3. Segurança Essencial para Juniores + +3.1. Validação de Entrada de Dados (Input Validation) + +ID: SEC-INPUT-VALIDATION +Palavras-Chave: segurança validacao pydantic +Regra: Toda entrada de dados (corpo da requisição, parâmetros de query) DEVE ser validada imediatamente no Controller/View com uma biblioteca como o Pydantic ou similar antes de chegar na camada de Service. Isso previne injeções e garante a integridade dos tipos de dados. + +3.2. Senhas Seguras (Hashing) + +ID: SEC-PASSWORD-HASH +Palavras-Chave: segurança hash de senha bcrypt +Regra: Senhas DEVERÃO ser armazenadas com hashing forte. O uso de Bcrypt é obrigatório. NUNCA armazenar senhas em texto puro ou com hash MD5/SHA-1. A verificação da senha deve ser feita pelo hash \ No newline at end of file diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" new file mode 100644 index 000000000..afd27cff9 --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Integra\303\247\303\243o Cont\303\255nua.md" @@ -0,0 +1,17 @@ +2. Padrões de Integração Contínua (CI/CD) +2.1. Arquivo de Deploy (deploy.yml) +ID: DEVOPS-CI-DEPLOY +Palavras-Chave: ci/cd github actions deploy.yml +Regra: O pipeline de CI/CD (localizado em .github/workflows/deploy.yml) DEVE ter, no mínimo, as seguintes etapas antes de qualquer deploy: + +Build do Back-End: Instalar dependências e garantir que o Dockerfile possa ser construído. + +Testes: Executar os testes unitários (TEST-PY-TOOL) na camada de Resolvers e Geters/Savers. + +Lint/Formatação: Garantir que o código siga os padrões de formatação (ex: black para Python). + +2.2. Migrações de Banco de Dados +ID: DEVOPS-DB-MIGRATIONS +Palavras-Chave: migracao banco dados flask alembic flyway +Regra: Toda alteração no Models/postgreSQL/ DEVE ser acompanhada de um script de migração (ex: usando Alembic para Flask-SQLAlchemy). +Requisito de CI/CD: O pipeline DEVE rodar as migrações automaticamente ANTES de iniciar a nova versão do Back-End. NUNCA permitir que juniores alterem o banco de dados de produção manualmente. \ No newline at end of file diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Requisitos.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Requisitos.md" new file mode 100644 index 000000000..61669b3e6 --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Requisitos.md" @@ -0,0 +1,37 @@ +3. Padrões de Requisitos Simplificados +3.1. Template de Requisito Funcional (RF) - Básico +ID: TEMPLATE-RF-BASICO +Palavras-Chave: modelo requisito funcional basico +Foco em clareza e nos Passos de Teste para verificação manual. + +Exemplo Modelo: +RF-XXX: [Módulo] - Título da Funcionalidade +Descrição (O que deve fazer): O usuário deve ser capaz de realizar o cadastro no sistema. +Regras de Negócio Chave: + +O e-mail deve ser único no sistema (verificar no PostgreSQL). + +A senha deve ter no mínimo 8 caracteres. + +Após o cadastro, o usuário deve ser redirecionado para a página de login. +Passos de Teste (Para Estagiário): + +[ ] Tentar cadastrar com um e-mail já existente. Esperar erro 400. + +[ ] Cadastrar com senha de 6 caracteres. Esperar mensagem de erro. + +[ ] Cadastrar com dados válidos. Verificar se o registro aparece na tabela usuarios do PostgreSQL. + +3.2. Template de Requisito Não-Funcional (RNF) - Foco em Usabilidade/Segurança +ID: TEMPLATE-RNF-SIMPLES +Palavras-Chave: modelo requisito nao-funcional junior usabilidade +Os RNFs devem ser simples e diretamente relacionados à experiência do usuário ou à segurança básica. + +Exemplo Modelo: +RNF-XXX: [Categoria: Usabilidade] - Mensagens de Erro +Especificação: Todas as mensagens de erro (validação de formulário ou API) DEVEM ser amigáveis e escritas em Português. +Justificativa: Garantir que o usuário entenda o problema e saiba como corrigi-lo. + +RNF-YYY: [Categoria: Segurança] - Logs de Acesso +Especificação: Toda tentativa de login (sucesso ou falha) DEVE gerar um log (IP, timestamp, status) no MongoDB para fins de auditoria básica. +Justificativa: Rastrear atividades suspeitas. \ No newline at end of file diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" new file mode 100644 index 000000000..0b3725165 --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Padr\303\265es de Testes Unit\303\241rios.md" @@ -0,0 +1,30 @@ +2. Padrões de Testes Unitários (Back-End Python) + +Garantir que os juniores saibam como testar as camadas separadas é o maior impulsionador de qualidade em um projeto monolítico. + +2.1. Ferramenta de Teste + +ID: TEST-PY-TOOL +Palavras-Chave: testes python unitarios pytest +Regra: Utilizar o pytest como framework de testes unitários padrão. + +2.2. Testes para a Camada de Serviço (Resolvers) + +ID: TEST-PY-RESOLVER-MOCK +Palavras-Chave: testes resolvers service mocking +Regra: Ao testar um arquivo em Modules/Resolvers/, é OBRIGATÓRIO utilizar mocking para simular as respostas das funções de acesso ao banco de dados (Geters e Savers). O teste deve verificar apenas a lógica de negócio (ex: o cálculo, a validação de regras). + +Exemplo: Para testar Resolvers/process_order.py, o teste deve simular que Savers/save_order.py retornou sucesso, sem tocar no PostgreSQL. + +2.3. Testes para as Camadas de Dados (Geters/Savers) + +ID: TEST-PY-DB-INTEGRATION +Palavras-Chave: testes geters savers banco dados integration +Regra: Testes de Geters e Savers devem ser considerados testes de integração (unitários) e DEVERIAM (se possível no ambiente de CI/CD) rodar contra um banco de dados temporário ou em memória para garantir que as queries SQL/ORM estão corretas. + +Alternativa Simples: Para juniores, o teste mais básico é garantir que, ao chamar a função Savers/save_order(), o objeto correto do ORM é criado e a sessão é chamada para adição. + +2.4. Localização dos Testes + +ID: TEST-PY-LOCATION +Regra: Todos os arquivos de teste devem residir em uma pasta separada (ex: Back-End/tests/) e ter o prefixo test_ no nome (ex: test_user_resolver.py). \ No newline at end of file diff --git "a/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Stack Tecnol\303\263gica.md" "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Stack Tecnol\303\263gica.md" new file mode 100644 index 000000000..61be75d39 --- /dev/null +++ "b/backend/Agents/AppAI/SprintsPlanner/Knowledge/Docs/Stack Tecnol\303\263gica.md" @@ -0,0 +1,21 @@ +1. Stack Tecnológica Padrão e Justificativas +1.1. Backend para Início Rápido e Clareza +ID: STACK-BACK-FLASK +Palavras-Chave: stack backend python flask blueprint api +Decisão: Python com framework Flask. +Justificativa (Simplicidade): Flask é um micro-framework com pouca "magia" (convenções), permitindo que o desenvolvedor júnior entenda o fluxo de requisição e resposta rapidamente. +Estrutura de API: Utilizar Flask Blueprints para organizar a API por módulos (ex: blueprint_usuarios, blueprint_produtos), mantendo o código limpo e o roteamento claro. + +1.2. Banco de Dados Relacional (Transacional) +ID: STACK-DB-POSTGRES +Palavras-Chave: stack db postgresql flask_sqlalchemy dados transacionais +Decisão: PostgreSQL com ORM Flask-SQLAlchemy. +Justificativa (ACID): PostgreSQL é robusto e gratuito, garantindo integridade e atomicidade dos dados transacionais (pedidos, perfis, etc.). +Justificativa (ORM): O Flask-SQLAlchemy abstrai a complexidade do SQL, permitindo que juniores interajam com o banco de dados usando objetos Python (Modelos), o que acelera o desenvolvimento e reduz erros de SQL. + +1.3. Banco de Dados Não Relacional (Logs e Eventos) +ID: STACK-DB-MONGO-LOGS +Palavras-Chave: stack db mongodb logs auditoria eventos +Decisão: MongoDB para armazenamento de Logs, Auditoria e Eventos não estruturados. +Justificativa (Flexibilidade): Documentos JSON (BSON) são ideais para logs, pois o schema de um log pode mudar sem afetar a aplicação principal. Não é necessário definir schemas complexos para dados não críticos. +Regra de Ouro: NUNCA armazenar dados transacionais ou críticos para o negócio no MongoDB. \ No newline at end of file diff --git a/backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_create_embedings.py b/backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_create_embedings.py new file mode 100644 index 000000000..e5d49aebf --- /dev/null +++ b/backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_create_embedings.py @@ -0,0 +1,148 @@ +""" +Script: index_skeleton.py +Função: Indexar automaticamente todos os arquivos do esqueleto backend (core/, services/, routes/, etc) +para o vetor store Chroma (./chroma_store). + +Requisitos: + pip install openai openai-agents chromadb +Execução: + python index_skeleton.py +""" + +import os +import sys +import openai +import chromadb +from chromadb.config import Settings +from pathlib import Path +import os +from agents import Agent, Runner, function_tool, SQLiteSession +import openai +import chromadb +from chromadb.config import Settings +from dotenv import load_dotenv +from openai import OpenAI +from dotenv import load_dotenv + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'keys.env')) + +OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") +openai.api_key = OPENAI_API_KEY +client = OpenAI(api_key=OPENAI_API_KEY) +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") +if not OPENAI_API_KEY: + print("❌ ERRO: variável OPENAI_API_KEY não definida.") + sys.exit(1) + +openai.api_key = OPENAI_API_KEY + +# diretórios padrão do seu backend +TARGET_DIRS = ["Docs"] + +# extensões de código relevantes +ALLOWED_EXTS = [".py", ".json", ".yml", ".yaml", ".toml", ".md"] + +# tamanho máximo por arquivo em bytes (para evitar binários ou logs enormes) +MAX_FILE_SIZE = 200_000 # ~200 KB + +# diretório base +BASE_DIR = Path(__file__).resolve().parent + + +# ---------- 1) Indexador simples: chunk + embeddings -> Chroma ---------- +def chunk_text(text, max_chars=1000): + # simples: quebrar por parágrafos ou janelas deslizantes + paragraphs = [p.strip() for p in text.split("\n\n") if p.strip()] + chunks = [] + cur = "" + for p in paragraphs: + if len(cur) + len(p) + 1 > max_chars: + if cur: + chunks.append(cur) + cur = p + else: + cur = (cur + "\n\n" + p).strip() if cur else p + if cur: chunks.append(cur) + return chunks + + + +def embed_texts(texts): + response = client.embeddings.create( + model="text-embedding-3-small", + input=texts + ) + return [item.embedding for item in response.data] + +def build_or_update_index(doc_id, full_text, chroma_dir="./chroma_store", name="backend_skeleton"): + client = chromadb.PersistentClient(path=chroma_dir) + + collection = client.get_or_create_collection(name=name) + + # divide e embeda + chunks = chunk_text(full_text, max_chars=800) + embeddings = embed_texts(chunks) + ids = [f"{doc_id}__{i}" for i in range(len(chunks))] + metadatas = [{"doc_id": doc_id, "chunk_index": i} for i in range(len(chunks))] + + collection.add( + documents=chunks, + embeddings=embeddings, + ids=ids, + metadatas=metadatas + ) + print(f"Indexed {len(chunks)} chunks from {doc_id}") + +def collect_files(base_dir: Path): + """Percorre os diretórios alvo e retorna lista de arquivos válidos""" + all_files = [] + for folder in TARGET_DIRS: + path = base_dir / folder + if not path.exists(): + print(f"⚠️ Diretório {folder}/ não encontrado, ignorando...") + continue + + for root, _, files in os.walk(path): + for f in files: + full_path = Path(root) / f + if full_path.suffix.lower() not in ALLOWED_EXTS: + continue + if full_path.stat().st_size > MAX_FILE_SIZE: + print(f"⚠️ Ignorando arquivo muito grande: {full_path.name}") + continue + if "__pycache__" in full_path.parts or f.startswith("."): + continue + all_files.append(full_path) + return all_files + + +def index_repository(name): + """Percorre todos os arquivos e adiciona ao índice""" + files = collect_files(BASE_DIR) + if not files: + print("❌ Nenhum arquivo encontrado para indexar.") + return + + total_chunks = 0 + print(f"📂 Encontrados {len(files)} arquivos para indexar...") + + for file_path in files: + try: + with open(file_path, "r", encoding="utf-8") as f: + content = f.read().strip() + if not content: + continue + doc_id = str(file_path.relative_to(BASE_DIR)) + build_or_update_index(doc_id, content, name=name) + print(f"✅ Indexado: {doc_id}") + except Exception as e: + print(f"⚠️ Falha ao processar {file_path}: {e}") + + print("✅ Indexação concluída com sucesso!") + print(f"🧠 Dados salvos no diretório: ./chroma_store") + + +if __name__ == "__main__": + name = "knowledge_requirementsplanner" + index_repository(name) diff --git a/backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_embedings.py b/backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_embedings.py new file mode 100644 index 000000000..237b6eb88 --- /dev/null +++ b/backend/Agents/AppAI/SprintsPlanner/Knowledge/_Test_embedings.py @@ -0,0 +1,57 @@ +# requirements: openai, openai-agents, chromadb, tiktoken (opcional) +# pip install openai openai-agents chromadb + +import os +from agents import Agent, Runner, function_tool, SQLiteSession +import openai +import chromadb +from chromadb.config import Settings +from dotenv import load_dotenv +from openai import OpenAI + + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), '../', '../', '../', '../', 'Keys', 'keys.env')) + +OPENAI_API_KEY = os.environ.get("OPENAI_API_KEY") +openai.api_key = OPENAI_API_KEY +client = OpenAI(api_key=OPENAI_API_KEY) + +# ---------- 2) Tool retriever: função registrada no SDK ---------- +@function_tool +def retrieve_backend_context(query: str, k: int = 4) -> str: + client_chroma = chromadb.PersistentClient(path="./chroma_store") + collection = client_chroma.get_collection("backend_skeleton") + + q_emb = client.embeddings.create( + model="text-embedding-3-small", + input=[query] + ).data[0].embedding + + results = collection.query( + query_embeddings=[q_emb], + n_results=k, + include=["documents", "metadatas"] + ) + + docs = results["documents"][0] + joined = "\n\n---\n\n".join(docs) + return f"Contexto recuperado (top {k}):\n\n{joined}" + +# # ---------- 3) Agente + sessão + runner ---------- +# agent = Agent( +# name="BackendExpert", +# instructions="Você é um especialista backend. Use as ferramentas quando precisar recuperar regras/estrutura do projeto.", +# tools=[retrieve_backend_context] +# ) + +# # usar SQLiteSession (memória persistente entre turns) +# session = SQLiteSession("agent_session_backend_01", db_path="embeddings.db") + +# # entrada do usuário +# user_input = "Como eu crio o endpoint de login seguindo a stack padrão do projeto?" + +# # rodar (Runner vai permitir tool calls automaticamente) +# result = Runner.run_sync(agent, user_input, session=session, max_turns=6) + +# print("Resposta final do agente:\n", result.final_output) diff --git a/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/data_level0.bin b/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/data_level0.bin new file mode 100644 index 0000000000000000000000000000000000000000..4975f180e444b0c05e92c3d7adb092735fc1c844 GIT binary patch literal 628400 zcmeIvyAePD5CqUOqX1%&GGt%lST2h8lfRW1lMiIulWG~&fZBng!5)o5A-g&<6 z`vU1%p>LMh;@S7jF6!ah`OTQiXZNi5erXK|5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U zAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C7 z2oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N z0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+ z009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBly zK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF z5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk z1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs z0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZ zfB*pk1PBlyK!5-N0t5&UAV7cs0RjXF5FkK+009C72oNAZfB*pk1PBlyK!5-N0t5&U NAV7cs0Rle|H~?jZ6T$!h literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/header.bin b/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/header.bin new file mode 100644 index 0000000000000000000000000000000000000000..2349a18e8065afa48df1f405833655a3f39098a1 GIT binary patch literal 100 rcmZQ%K!6kk6U^$7fC#j}XsG;uC=h`16`(YX|F20q)m`+uJ}d92H_(P8O{DbhVCyjL-}Hvg?C8*g{T7p70Zz3q z$Z$G+gfXlx(CT#oCLCZ{zQDtoBGbv_LXp@0>6nDKY*4sE7))mKV)zGp`h*xZx)p$+ zi6}>wFoFhESJ>MC?1h@hYKL?MB^=mXx^o!+xP(DVmi2K2EyXQsB{BI>?VLkg5X&*D YnUeJTsuug30tI1#Jw*+%_E&no06qnc>i_@% literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/link_lists.bin b/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/9c518196-15aa-4b84-9773-595109289dd4/link_lists.bin new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/chroma.sqlite3 b/backend/Agents/AppAI/SprintsPlanner/Knowledge/chroma_store/chroma.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..6eba66af3adfe66e533d3a809c31cce75d867054 GIT binary patch literal 540672 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

    TIvaZ= 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

    ` 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

    f@{cA+o+9RM#u{eMX~dCPwjhmEoPh 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


    @?9>3s^_EIsJ^4 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 KtB`VO_5T4~a3-Dr literal 0 HcmV?d00001 diff --git a/backend/Agents/AppAI/SprintsPlanner/ai.py b/backend/Agents/AppAI/SprintsPlanner/ai.py new file mode 100644 index 000000000..cd0e92510 --- /dev/null +++ b/backend/Agents/AppAI/SprintsPlanner/ai.py @@ -0,0 +1,297 @@ +# Back-End\Agents\GitContextLayer\ai.py +from agents import Agent, Runner, ModelSettings, SQLiteSession +import logging +import os +from pydantic import BaseModel +from typing import List +from Modules.Helpers.EgetTools import Egetoolsv2 + +from Functions.autosave.autosave import autosave +from Functions.retrieve_backend_context.retrieve_backend_context import retrieve_backend_context +from Functions.task_sheduler.task_sheduler import task_sheduler +from Functions.autogetcurrenttime.autogetcurrenttime import autogetcurrenttime + + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger("SprintsPlanner_logger") + + +class SprintTaskBlock(BaseModel): + intervalo_horas: str # ex: "1-2" + titulo: str # ex: "MVP Base" + tarefas: List[str] # lista de tarefas técnicas + +class SprintsPlanOutput(BaseModel): + tipo_app: str # ex: "saas" + descricao: str # breve descrição do app + total_horas_estimadas: int # soma das horas do plano + sprints: List[SprintTaskBlock] # lista de blocos de horas + +class SprintsPlanOutput2(BaseModel): + caminho_do_arquivo: str + +async def SprintsPlannerAppAgent( + OPENAI_API_KEY, + user_id, + tipo_app, + descricao, + saved_files, + commit_language = 'pt', + model = "gpt-5-nano", + local_to_save = "./" + ): + os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY + logger.info(f"Sprints Planner App Agent") + os.makedirs(os.path.join(os.path.dirname(__file__), 'Sessions'), exist_ok=True) + name_chroma_store = "knowledge_requirementsplanner" + chroma_store = os.path.join(os.path.dirname(__file__), 'Knowledge', 'chroma_store') + + total_usage = { + "input": 0, "cached": 0, "reasoning": 0, "output": 0, "total": 0 + } + logger.info(f"language {commit_language}") + + files = [] + contents = [] + os.chdir(local_to_save) + for md in saved_files: + with open(md, "r", encoding='utf-8') as file: + mdcontent = file.read() + files.append(md) + contents.append(mdcontent) + + user_content = f""" + files: + {files} + + contents: + {contents} + + """ + + if commit_language == 'en': + prompt_system_direct = f""" + + """ + + elif commit_language == 'pt': + prompt_system_direct = f""" +# IDENTIDADE E PAPEL +Você é um **Tutor de Sprints Técnicas**, atuando como Analista de Requisitos Técnicos Sênior e Engenheiro de Software Sênior. +Seu papel é **organizar, distribuir e documentar as tarefas técnicas existentes** em um **plano de sprints detalhado, sequencial e executável**, **sem recriar requisitos, arquitetura ou código**. + +--- + +## 🎯 OBJETIVO PRINCIPAL +- Ler todos os documentos técnicos do tutor de requisitos +- Gerar **sprints técnicas otimizadas** em blocos de minutos (cada tarefa será estimada em minutos) +- Manter **ordem lógica, dependências e prioridades** +- Garantir **estimativas e justificativas técnicas claras** +- Salvar o plano completo em formato Markdown, sem criar agendamentos + +--- + +# 🔁 FLUXO DE TRABALHO + +## ETAPA 1: CONSULTAR BASE DE CONHECIMENTO + +Antes de distribuir as tarefas, **sempre consulte a base de conhecimento**: + +```json +{{ + "retrieve_backend_context": {{ + "query": "arquitetura, padrões, modelos e requisitos existentes para {tipo_app}", + "k": 8, + "path": "{chroma_store}", + "name": "{name_chroma_store}" + }} +}} +```` + +Use apenas informações já documentadas (requisitos, ADRs, APIs, entidades, fluxos, etc). +Jamais invente novos requisitos, APIs ou estruturas. + +--- + +## ETAPA 2: ANÁLISE E MAPEAMENTO + +* Liste e relacione todas as entidades, módulos e funcionalidades existentes. +* Detecte dependências técnicas entre módulos. +* Classifique a complexidade (baixa, média, alta). +* Registre **minutos estimados** com base na complexidade e no tamanho técnico. +* Defina a prioridade (1–10) conforme impacto e dependência. + +--- + +## ETAPA 3: DISTRIBUIÇÃO DAS SPRINTS + +* Agrupe as tarefas em **sprints sequenciais** (2–5 tarefas por sprint). +* Cada tarefa pode conter no máximo **2 subtarefas diretas**. +* As tarefas devem seguir **ordem lógica e cronológica**, respeitando dependências. +* Calcule a duração total da sprint com base nos **minutos estimados**. +* Indique, de forma simbólica, a sequência temporal (ex: “após Tarefa 2” ou “Sprint 2 inicia após Sprint 1”). + +Exemplo ilustrativo: + +``` +## Sprint 1 + +* Início da sprint: **2025-10-07 15:25:47** (horário de São Paulo) +* Duração total estimada: **60min** *(soma das tarefas listadas)* +* Objetivo: Implementar autenticação básica, RBAC inicial e estratégias de confiabilidade. + +1. **RF-001: [Autenticação] Registro de usuário multi-tenant** + + * Descrição: Registro de usuário com validação por tenant, hash de senha (bcrypt). + * Complexidade: Média + * Minutos estimados: **30min** + * Dependências: **RF-009, RF-010** + * Início: **2025-10-07 15:25:47** + * Fim estimado: **2025-10-07 15:55:47** + * Subtarefas: + [ + "* Subtarefa 1.1: Criar model User com campo tenant_id e constraints", + "* Subtarefa 1.2: Implementar endpoint POST /register com validação de tenant", + "* Subtarefa 1.3: Integrar hashing de senha (bcrypt) e testes unitários", + "* Subtarefa 1.4: Documentar inputs/outputs e critérios de aceitação" + ] + +2. **RF-002: [Autenticação] Login com JWT** + + * Descrição: Endpoint de login, geração de access_token JWT e refresh_token com rotação. + * Complexidade: Média + * Minutos estimados: **30min** + * Dependências: **RF-001** + * Início: **2025-10-07 15:55:47** *(inicia imediatamente após RF-001 terminar)* + * Fim estimado: **2025-10-07 16:25:47** + * Subtarefas: + [ + "* Subtarefa 2.1: Implementar endpoint POST /login e validação de credenciais", + "* Subtarefa 2.2: Gerar access_token JWT com claims essenciais e definir expiration", + "* Subtarefa 2.3: Implementar refresh_token com rotação segura e endpoint /refresh", + ] + + +--- + +## ETAPA 4: REGISTRO DE HORÁRIO DE REFERÊNCIA + +Obtenha a **data e hora atual de São Paulo** apenas como referência de início (não para agendar tarefas): + +```json +{{ + "autogetcurrenttime": {{ + "timezone": "America/Sao_Paulo", + "format": "%Y-%m-%d %H:%M:%S" + }} +}} +``` + +Use esse horário apenas como ponto de partida simbólico para a linha do tempo da sprint. + +--- + +## ETAPA 5: SALVAMENTO AUTOMÁTICO + +Salve o plano completo em Markdown, pronto para integração: + +```json +{{ + "autosave": {{ + "code": "# Plano de Sprints Técnicas\\n[conteúdo gerado em Markdown]", + "path": "{local_to_save}/sprint_plan.md" + }} +}} +``` + +--- + +## 🧠 REGRAS FUNDAMENTAIS + +✅ Sempre: + +* Baseie-se apenas em documentos técnicos existentes +* Respeite dependências e sequência técnica +* Gere estimativas justificadas e coerentes +* Mantenha JSONs válidos e completos + +❌ Nunca: + +* Recriar requisitos ou código +* Criar novas tarefas fora do escopo +* Agendar ou definir horários exatos de execução +* Atribuir múltiplas subtarefas sem justificativa + +--- + +## 💡 SAÍDA ESPERADA + +* Um **plano de sprints em Markdown detalhado**, com: + + * Nome da sprint + * Objetivo técnico + * Lista de tarefas e subtarefas + * Estimativa em minutos + * Dependências e prioridades +* Um **JSON válido** contendo o registro do plano salvo +* Nenhum agendamento — apenas criação e estruturação técnica + + """ + + + imported_tools = [autosave, retrieve_backend_context, autogetcurrenttime] + + session = SQLiteSession("agent_session_SprintsPlanner_01", db_path=os.path.join(os.path.dirname(__file__), 'Sessions', f"session_{user_id}.db")) + + agent = Agent( + name="Agent Sprints Planner", + instructions=prompt_system_direct, + model=model, + output_type=SprintsPlanOutput2, + model_settings=ModelSettings(include_usage=True), + tools=imported_tools + ) + result = await Runner.run(agent, user_content, max_turns=300, session=session) + plan = result.final_output + caminho_do_arquivo = plan.caminho_do_arquivo + # descricao = plan.descricao + # total_horas = plan.total_horas_estimadas + # sprints = plan.sprints + + usage = result.context_wrapper.usage + total_usage["input"] = usage.input_tokens + total_usage["cached"] = usage.input_tokens_details.cached_tokens + total_usage["reasoning"] = usage.output_tokens_details.reasoning_tokens + total_usage["output"] = usage.output_tokens + total_usage["total"] = usage.total_tokens + + logger.info(f"Agent Final Usage: {total_usage['total']} total tokens.") + return total_usage["total"], caminho_do_arquivo + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/backend/Agents/AppAI/SprintsSheduler/ai.py b/backend/Agents/AppAI/SprintsSheduler/ai.py new file mode 100644 index 000000000..5b4490f59 --- /dev/null +++ b/backend/Agents/AppAI/SprintsSheduler/ai.py @@ -0,0 +1,207 @@ +# Back-End\Agents\AppAI\SprintsSheduler\ai.py +from agents import Agent, Runner, ModelSettings, SQLiteSession +import logging +import os +from pydantic import BaseModel +from typing import List +from Modules.Helpers.EgetTools import Egetoolsv2 + +from Functions.task_sheduler.task_sheduler import task_sheduler +from Functions.autogetcurrenttime.autogetcurrenttime import autogetcurrenttime + + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger("SprintsPlanner_logger") + +class Output(BaseModel): + total_de_tarefas_agendadas: str + +async def SprintsShedulerAppAgent( + OPENAI_API_KEY, + user_id, + ACCESS_TOKEN, + user_content, + BACKEND_URL, + commit_language = 'pt', + model = "gpt-5-nano", + ): + os.environ['OPENAI_API_KEY'] = OPENAI_API_KEY + logger.info(f"Sprints Sheduler App Agent") + os.makedirs(os.path.join(os.path.dirname(__file__), 'Sessions'), exist_ok=True) + total_usage = { + "input": 0, "cached": 0, "reasoning": 0, "output": 0, "total": 0 + } + logger.info(f"language {commit_language}") + + + if commit_language == 'en': + prompt_system_direct = f""" + + """ + + elif commit_language == 'pt': + prompt_system_direct = f""" + +# IDENTIDADE E PAPEL +Você é um **Agente de Agendamento de Sprints Técnicas**, atuando como Engenheiro de Software Sênior. +Seu papel é **receber um documento de sprints técnicas já definidas** e **agendar cada tarefa individualmente no backend**, usando **exatamente o conteúdo da tarefa**, incluindo nome, subtarefas e dependências. + +--- + +## 🎯 OBJETIVO PRINCIPAL +- Ler o Markdown ou JSON contendo as sprints detalhadas +- Para cada tarefa, criar `SPRINT_OBJECTIVE` contendo: + - Nome da tarefa + - Todas as subtarefas listadas + - Todas as dependências explícitas + - O Objetivo listado +- Calcular `eta_str` baseado no horário da tarefa anterior, respeitando dependências +- Criar agendamentos individuais no backend usando `task_sheduler` + +--- + +## 🔁 FLUXO DE TRABALHO + +### ETAPA 1: CONSULTAR DOCUMENTO EXISTENTE +- Leia o plano de sprints fornecido (`Markdown` ou `JSON`) contendo: + - Nome da sprint + - Lista de tarefas e subtarefas + - Dependências entre tarefas + - Estimativa de horas +- **Não crie novas tarefas**, use somente as existentes no documento. + +- **Importante:** cada `SPRINT_OBJECTIVE` deve conter **tudo que está na tarefa**, incluindo subtarefas e dependências, sem modificar ou resumir. + +--- + +### ETAPA 2: OBTENÇÃO DO HORÁRIO INICIAL +- Obtenha o horário atual em **São Paulo** como referência para a primeira tarefa. + +```json +{{ + "autogetcurrenttime": {{ + "timezone": "America/Sao_Paulo", + "format": "%Y-%m-%d %H:%M:%S" + }} +}} +```` + +--- + +### ETAPA 3: CALCULAR HORÁRIOS (`eta_str`) + +* Para cada tarefa: + + * Somar o tempo estimado da tarefa anterior para definir `eta_str` + * Respeitar dependências + * Garantir **nenhuma sobreposição de horários** + +--- + +### ETAPA 4: ENVIAR AGENDAMENTOS PARA O BACKEND + +Para cada tarefa, gerar o JSON de execução usando `task_sheduler`: + +```json +{{ + "task_sheduler": {{ + "BACKEND_URL": "{BACKEND_URL}", + "ACCESS_TOKEN": "{ACCESS_TOKEN}", + "EMPLOYER_CATEGORY": "desenvolvimento", + "SPRINT_NAME": "nome da sprint", + "SPRINT_OBJECTIVE": "conteúdo completo da tarefa + todas subtarefas + dependências conforme documento", + "user_id": {user_id}, + "priority": "nível de prioridade (1-10)", + "hours": "minutos estimados da tarefa", + "lang": "pt", + "eta_str": "data e hora de execução da tarefa (%Y-%m-%d %H:%M:%S)" + }} +}} +``` + +⚠️ **Importante:** + +* `SPRINT_OBJECTIVE` **deve refletir 100% do conteúdo original**, incluindo subtarefas e dependências +* `eta_str` calculado dinamicamente, sem sobreposição de horários + +--- + +## 🧠 REGRAS FUNDAMENTAIS + +✅ Sempre: + +* Use **exatamente** nome + subtarefas + dependências da tarefa do documento +* Respeite dependências, sequência e prioridades +* Gere horários coerentes e progressivos +* Produza JSONs válidos para backend + +❌ Nunca: + +* Alterar objetivos, subtarefas ou dependências +* Criar tarefas extras +* Reutilizar horários + +--- + +## 💡 SAÍDA ESPERADA + +* JSONs individuais para cada tarefa com `SPRINT_OBJECTIVE` completo (título + subtarefas + dependências) +* Horários (`eta_str`) progressivos e coerentes +* Integração pronta com backend para execução automática + + + """ + + + imported_tools = [task_sheduler, autogetcurrenttime] + + session = SQLiteSession("agent_session_SprintsSheduler_01", db_path=os.path.join(os.path.dirname(__file__), 'Sessions', f"session_{user_id}.db")) + + agent = Agent( + name="Agent Sprints Sheduler", + instructions=prompt_system_direct, + model=model, + output_type=Output, + model_settings=ModelSettings(include_usage=True), + tools=imported_tools + ) + result = await Runner.run(agent, user_content, max_turns=300, session=session) + plan = result.final_output + total_de_tarefas_agendadas = plan.total_de_tarefas_agendadas + usage = result.context_wrapper.usage + total_usage["input"] = usage.input_tokens + total_usage["cached"] = usage.input_tokens_details.cached_tokens + total_usage["reasoning"] = usage.output_tokens_details.reasoning_tokens + total_usage["output"] = usage.output_tokens + total_usage["total"] = usage.total_tokens + + logger.info(f"Agent Final Usage: {total_usage['total']} total tokens.") + return total_usage["total"], total_de_tarefas_agendadas + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Back-End/Agents/GitContextLayer/ai.py b/backend/Agents/GitContextLayer/ai.py similarity index 100% rename from Back-End/Agents/GitContextLayer/ai.py rename to backend/Agents/GitContextLayer/ai.py diff --git a/backend/Agents/JobSearch/AIJobAutomation.py b/backend/Agents/JobSearch/AIJobAutomation.py new file mode 100644 index 000000000..fb0efd0d3 --- /dev/null +++ b/backend/Agents/JobSearch/AIJobAutomation.py @@ -0,0 +1,529 @@ +from openai import OpenAI +from dotenv import load_dotenv +import os +import json +import schedule +import time +from datetime import datetime +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +from email.mime.base import MIMEBase +from email import encoders +import logging +import re + +# Configuração de logging +diretorio_script = os.path.dirname(os.path.abspath(__file__)) +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') +os.makedirs(os.path.join(diretorio_script, 'Logs'), exist_ok=True) +file_handler = logging.FileHandler(os.path.join(diretorio_script, 'Logs', 'job_automation.log')) +file_handler.setFormatter(formatter) +console_handler = logging.StreamHandler() +console_handler.setFormatter(formatter) +logger.addHandler(file_handler) +logger.addHandler(console_handler) + +# Carregar variáveis de ambiente +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'Keys', 'keys.env')) + +class AutomatedJobSearcher: + def __init__(self): + self.client = OpenAI(api_key=os.getenv('OPENAI_API_KEY')) + self.model = "gpt-4o" + self.email_config = { + 'smtp_user': os.getenv("SMTP_USER"), + 'smtp_password': os.getenv("SMTP_PASSWORD"), + 'smtp_host': os.getenv("SMTP_HOST"), + 'smtp_port': int(os.getenv("SMTP_PORT", 587)), + 'use_tls': os.getenv("SMTP_USE_TLS", "true").lower() == "true", + 'recipient_email': os.getenv("RECIPIENT_EMAIL") # Email para receber relatórios + } + self.reports_dir = os.path.join(diretorio_script, 'Reports') + os.makedirs(self.reports_dir, exist_ok=True) + + def get_current_resume(self): + """Obtém o currículo atual e extrai tecnologias/frameworks""" + try: + # Busca por arquivo de currículo no diretório + resume_files = [f for f in os.listdir(diretorio_script) + if f.lower().endswith(('.txt', '.md', '.pdf', '.docx')) + and 'curriculo' in f.lower() or 'resume' in f.lower()] + + if resume_files: + resume_path = os.path.join(diretorio_script, resume_files[0]) + if resume_path.endswith('.txt') or resume_path.endswith('.md'): + with open(resume_path, 'r', encoding='utf-8') as f: + resume_content = f.read() + logger.info(f"resume_content {resume_content}") + else: + # Para arquivos PDF/DOCX, usar placeholder ou implementar extração + resume_content = "Currículo com experiência em Python, JavaScript, React, Django, FastAPI" + else: + # Currículo padrão se não encontrar arquivo + resume_content = """ + Desenvolvedor Full Stack com experiência em: + - Python (Django, FastAPI, Flask) + - JavaScript (React, Node.js, Vue.js) + - Bancos de dados (PostgreSQL, MongoDB, MySQL) + - DevOps (Docker, AWS, Git) + - Machine Learning (TensorFlow, scikit-learn) + """ + + return self.extract_technologies_from_resume(resume_content) + + except Exception as e: + logger.error(f"Erro ao obter currículo: {str(e)}") + return { + 'languages': ['Python', 'JavaScript'], + 'frameworks': ['Django', 'React', 'FastAPI'], + 'databases': ['PostgreSQL', 'MongoDB'], + 'tools': ['Docker', 'Git', 'AWS'] + } + + def extract_technologies_from_resume(self, resume_content): + """Extrai tecnologias do currículo usando GPT""" + try: + response = self.client.responses.create( + model=self.model, + input=f""" + Analise este currículo e extraia todas as tecnologias, linguagens de programação, + frameworks e ferramentas mencionadas. Organize em categorias. + + Retorne em formato JSON assim: + {{ + "languages": ["Python", "JavaScript", "Java"], + "frameworks": ["Django", "React", "Angular"], + "databases": ["PostgreSQL", "MongoDB"], + "tools": ["Docker", "AWS", "Git"], + "other": ["outras tecnologias"] + }} + + Currículo: + {resume_content} + """, + + ) + + # Extrair JSON da resposta + json_match = re.search(r'\{.*\}', response.output_text, re.DOTALL) + if json_match: + return json.loads(json_match.group()) + else: + raise Exception("Não foi possível extrair JSON da resposta") + + except Exception as e: + logger.error(f"Erro na extração de tecnologias: {str(e)}") + return self.get_default_technologies() + + def get_default_technologies(self): + """Tecnologias padrão caso falhe a extração""" + return { + 'languages': ['Python', 'JavaScript', 'TypeScript'], + 'frameworks': ['Django', 'React', 'FastAPI', 'Node.js'], + 'databases': ['PostgreSQL', 'MongoDB', 'MySQL'], + 'tools': ['Docker', 'Git', 'AWS'], + 'other': ['REST API', 'GraphQL'] + } + + def search_jobs_by_technologies(self, technologies): + """Busca vagas baseadas nas tecnologias do currículo""" + all_jobs = [] + + # Criar queries de busca baseadas nas tecnologias + tech_combinations = [ + f"{tech} desenvolvedor Brasil remoto" for tech in technologies['languages'][:3] + ] + [ + f"{framework} developer vagas freelance" for framework in technologies['frameworks'][:3] + ] + [ + f"full stack {' '.join(technologies['languages'][:2])} vagas" + ] + + for query in tech_combinations: + try: + logger.info(f"Buscando vagas para: {query}") + + response = self.client.responses.create( + model=self.model, + input=f""" + Você é um especialista em busca de vagas de emprego e freelances. + Busque vagas e projetos freelance para: {query} + + Para CADA vaga/freela encontrada, formate EXATAMENTE assim: + + ## TÍTULO_DA_VAGA + - **URL**: link_da_vaga_ou_N/A + - **Empresa/Cliente**: nome_da_empresa_ou_cliente + - **Ganhos**: valor_salario_ou_projeto + - **Tecnologias**: lista_de_tecnologias_requeridas + - **Tempo**: tempo_dedicacao_ou_duracao_projeto + - **Tipo**: CLT/PJ/Freelance + - **Local**: cidade_ou_remoto + - **Descrição**: resumo_breve_da_vaga + + --- + + Encontre pelo menos 10-20 oportunidades relevantes. Seja específico e detalhado. + """, + tools=[{ + "type": "web_search_preview", + "search_context_size": "low", + }], + ) + + all_jobs.append({ + 'query': query, + 'results': response.output_text + }) + + # Pequena pausa entre buscas + time.sleep(2) + + except Exception as e: + logger.error(f"Erro na busca para {query}: {str(e)}") + continue + + return all_jobs + + def generate_report(self, technologies, jobs_data, report_type): + """Gera relatório consolidado em Markdown""" + try: + # Combinar todos os resultados + combined_results = "\n\n".join([job['results'] for job in jobs_data]) + + if report_type == "vagas": + title = "# 📊 Relatório de Vagas CLT/PJ" + section_title = "## 💼 Vagas CLT/PJ" + prompt_sections = f""" + Crie um relatório profissional em Markdown consolidando estas informações sobre vagas CLT/PJ. + + ESTRUTURA OBRIGATÓRIA: + + # 📊 Relatório de Vagas CLT/PJ + **Data**: {datetime.now().strftime('%d/%m/%Y')} + **Tecnologias do Perfil**: {', '.join(technologies['languages'] + technologies['frameworks'])} + + ## 🎯 Resumo Executivo + [Resumo das oportunidades CLT/PJ, tendências de mercado, faixa salarial] + + ## 💼 Vagas CLT/PJ + [Listar vagas de emprego encontradas com todos os metadados] + + ## 📈 Análise de Mercado para Vagas + [Análise das tecnologias mais demandadas, empresas que mais contratam] + + ## 💡 Recomendações + [Sugestões para o profissional em relação a vagas de emprego] + + --- + + DADOS COLETADOS: + {combined_results} + + IMPORTANTE: Mantenha TODOS os metadados (URL, ganhos, tecnologias, tempo, tipo, etc.) + organizados de forma clara e profissional. + """ + elif report_type == "freelances": + title = "# 🚀 Relatório de Projetos Freelance" + section_title = "## 🚀 Projetos Freelance" + prompt_sections = f""" + Crie um relatório profissional em Markdown consolidando estas informações sobre projetos freelance. + + ESTRUTURA OBRIGATÓRIA: + + # 🚀 Relatório de Projetos Freelance + **Data**: {datetime.now().strftime('%d/%m/%Y')} + **Tecnologias do Perfil**: {', '.join(technologies['languages'] + technologies['frameworks'])} + + ## 🎯 Resumo Executivo + [Resumo das oportunidades freelance, tendências de projetos, faixas de valor] + + ## 🚀 Projetos Freelance + [Listar projetos freelance encontrados com todos os metadados] + + ## 📈 Análise de Mercado para Freelances + [Análise das tecnologias mais demandadas em projetos, tipos de clientes] + + ## 💡 Recomendações + [Sugestões para o profissional em relação a projetos freelance] + + --- + + DADOS COLETADOS: + {combined_results} + + IMPORTANTE: Mantenha TODOS os metadados (URL, ganhos, tecnologias, tempo, tipo, etc.) + organizados de forma clara e profissional. + """ + else: + raise ValueError("Tipo de relatório inválido. Use 'vagas' ou 'freelances'.") + + response = self.client.responses.create( + model=self.model, + input=prompt_sections.format( + datetime=datetime, + technologies=technologies, + combined_results=combined_results + ) + ) + + return response.output_text + + except Exception as e: + logger.error(f"Erro na geração do relatório de {report_type}: {str(e)}") + return self.generate_fallback_report(technologies, jobs_data) + + def generate_fallback_report(self, technologies, jobs_data): + """Gera relatório básico em caso de erro""" + report = f"""# 📊 Relatório de Oportunidades Profissionais +**Data**: {datetime.now().strftime('%d/%m/%Y')} +**Tecnologias do Perfil**: {', '.join(technologies['languages'] + technologies['frameworks'])} + +## 🎯 Dados Coletados + +""" + for job in jobs_data: + report += f"### Busca: {job['query']}\n" + report += f"{job['results']}\n\n---\n\n" + + return report + + def save_report(self, report_content, report_type): + """Salva o relatório em arquivo .md""" + timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') + filename = f"relatorio_{report_type}_{timestamp}.md" + filepath = os.path.join(self.reports_dir, filename) + + try: + with open(filepath, 'w', encoding='utf-8') as f: + f.write(report_content) + + logger.info(f"Relatório de {report_type} salvo em: {filepath}") + return filepath + + except Exception as e: + logger.error(f"Erro ao salvar relatório de {report_type}: {str(e)}") + return None + + def send_email_with_attachment(self, subject, body, attachment_paths): + """Envia email com múltiplos anexos usando a configuração existente""" + try: + msg = MIMEMultipart() + msg['From'] = f"Job Automation <{self.email_config['smtp_user']}>" + msg['To'] = self.email_config['recipient_email'] + msg['Subject'] = subject + + # Corpo do email + msg.attach(MIMEText(body, 'plain', 'utf-8')) + + # Anexar arquivos + for attachment_path in attachment_paths: + if attachment_path and os.path.exists(attachment_path): + with open(attachment_path, "rb") as attachment: + part = MIMEBase('application', 'octet-stream') + part.set_payload(attachment.read()) + + encoders.encode_base64(part) + part.add_header( + 'Content-Disposition', + f'attachment; filename= {os.path.basename(attachment_path)}' + ) + msg.attach(part) + + # Enviar email + server = smtplib.SMTP(self.email_config['smtp_host'], self.email_config['smtp_port']) + + if self.email_config['use_tls']: + server.starttls() + + server.login(self.email_config['smtp_user'], self.email_config['smtp_password']) + server.send_message(msg) + server.quit() + + logger.info("Email enviado com sucesso!") + return True + + except Exception as e: + logger.error(f"Erro ao enviar email: {str(e)}") + return False + + def run_daily_search(self): + """Executa a busca diária completa""" + logger.info("=== INICIANDO BUSCA DIÁRIA DE OPORTUNIDADES ===") + + try: + # 1. Obter currículo e tecnologias + logger.info("1. Obtendo tecnologias do currículo...") + technologies = self.get_current_resume() + logger.info(f" Tecnologias encontradas: {technologies['languages']}") + + # 2. Buscar vagas baseadas nas tecnologias + logger.info("2. Buscando vagas em plataformas específicas...") + jobs_data = self.search_jobs_by_technologies(technologies) + logger.info(f" Realizadas {len(jobs_data)} buscas em diferentes plataformas") + + # Separar os dados em CLT/PJ e Freelance + vagas_data = [j for j in jobs_data if 'CLT/PJ' in j['results'] or 'vagas' in j['query']] + freelances_data = [j for j in jobs_data if 'Freelance' in j['results'] or 'freelance' in j['query']] + + # 3. Gerar relatórios separados + logger.info("3. Gerando relatórios separados...") + report_vagas = self.generate_report(technologies, vagas_data, "vagas") + report_freelances = self.generate_report(technologies, freelances_data, "freelances") + + # 4. Adicionar instruções de busca manual + report_vagas = self.add_manual_search_instructions(report_vagas, technologies) + report_freelances = self.add_manual_search_instructions(report_freelances, technologies) + + # 5. Salvar relatórios + logger.info("4. Salvando relatórios...") + report_vagas_path = self.save_report(report_vagas, "vagas") + report_freelances_path = self.save_report(report_freelances, "freelances") + + # 6. Enviar por email + logger.info("5. Enviando email com anexos...") + attachment_paths = [] + if report_vagas_path: + attachment_paths.append(report_vagas_path) + if report_freelances_path: + attachment_paths.append(report_freelances_path) + + if attachment_paths: + email_subject = f"📊 Relatório de Oportunidades - {datetime.now().strftime('%d/%m/%Y')}" + email_body = f""" +Olá! + +Segue o relatório diário de oportunidades profissionais, agora separado em duas categorias para melhor organização: +- **Relatório de Vagas CLT/PJ** +- **Relatório de Projetos Freelance** + +🎯 Tecnologias pesquisadas: {', '.join(technologies['languages'][:3] + technologies['frameworks'][:2])} +📅 Data: {datetime.now().strftime('%d/%m/%Y às %H:%M')} + +💡 DICA: Configure alertas de vaga diretamente nas plataformas mencionadas! + +Atenciosamente, +Sistema de Busca Automatizada +""" + success = self.send_email_with_attachment(email_subject, email_body, attachment_paths) + if success: + logger.info(" Email enviado com sucesso!") + else: + logger.error(" Falha no envio do email") + else: + logger.error(" Nenhum relatório foi gerado para envio.") + + logger.info("=== BUSCA DIÁRIA CONCLUÍDA COM SUCESSO ===") + + except Exception as e: + logger.error(f"Erro na busca diária: {str(e)}") + # Enviar email de erro + error_subject = "⚠️ Erro na Busca Diária de Vagas" + error_body = f""" +Ocorreu um erro na busca diária de vagas: + +ERRO: {str(e)} +TIMESTAMP: {datetime.now().strftime('%d/%m/%Y às %H:%M')} + +O sistema tentará executar novamente no próximo horário agendado. + +Verifique os logs para mais detalhes. +""" + self.send_email_with_attachment(error_subject, error_body, []) + + def add_manual_search_instructions(self, report, technologies): + """Adiciona instruções detalhadas para busca manual""" + tech_list = ', '.join(technologies['languages'][:3]) + + instructions = f""" + +## 🔍 Guia de Busca Manual nas Plataformas + +### 🎯 Palavras-chave Recomendadas +**Principais**: {tech_list} +**Frameworks**: {', '.join(technologies['frameworks'][:3])} +**Termos complementares**: desenvolvedor, programador, full stack, backend, frontend + +### 🌐 Links Diretos das Plataformas + +#### 💼 Vagas CLT/PJ +- **Programathor**: https://programathor.com.br/jobs +- **InfoJobs**: https://www.infojobs.com.br/ +- **Vagas.com**: https://www.vagas.com.br/ +- **LinkedIn Jobs**: https://www.linkedin.com/jobs/ +- **Indeed**: https://br.indeed.com/ + +#### 🚀 Freelances/Projetos +- **99Freelas**: https://www.99freelas.com.br/ +- **Workana**: https://www.workana.com/pt/ +- **Freelancer**: https://www.freelancer.com/ +- **GetNinjas**: https://www.getninjas.com.br/ + +#### 🏠 Trabalho Remoto +- **Remotar**: https://remotar.com.br/ +- **Remote.co**: https://remote.co/ +- **We Work Remotely**: https://weworkremotely.com/ + +### 📱 Como Configurar Alertas + +#### LinkedIn +1. Acesse LinkedIn Jobs +2. Busque por "{tech_list.split(', ')[0]} desenvolvedor" +3. Clique em "Criar alerta" +4. Configure frequência diária + +#### Google Jobs +1. Google: "vagas {tech_list.split(', ')[0]} desenvolvedor" +2. Clique em "Criar alerta" nos resultados +3. Receba notificações por email + +### 💡 Dicas de Busca Eficaz +- Use aspas para termos exatos: "{tech_list.split(', ')[0]} developer" +- Combine tecnologias: "{tech_list.split(', ')[0]} + {tech_list.split(', ')[1] if len(tech_list.split(', ')) > 1 else 'JavaScript'}" +- Filtre por data: últimas 24h/semana +- Configure filtros de localização e salário + +""" + + return report + instructions + +def setup_scheduler(): + """Configura o agendamento das buscas""" + searcher = AutomatedJobSearcher() + + # Agendar para horários de trabalho (9h, 13h, 17h) + schedule.every().day.at("09:00").do(searcher.run_daily_search) + schedule.every().day.at("13:00").do(searcher.run_daily_search) + schedule.every().day.at("17:00").do(searcher.run_daily_search) + + logger.info("Scheduler configurado para: 09:00, 13:00, 17:00") + + return searcher + +def main(process): + """Função principal - pode ser executada manualmente ou via scheduler""" + import sys + + if process == 'test': + # Execução de teste + logger.info("=== MODO TESTE ===") + searcher = AutomatedJobSearcher() + searcher.run_daily_search() + elif process == 'scheduler': + # Modo scheduler contínuo + logger.info("=== INICIANDO SCHEDULER ===") + setup_scheduler() + + while True: + schedule.run_pending() + time.sleep(60) # Verifica a cada minuto + else: + # Execução única + logger.info("=== EXECUÇÃO ÚNICA ===") + searcher = AutomatedJobSearcher() + searcher.run_daily_search() + +if __name__ == "__main__": + main('test') \ No newline at end of file diff --git a/Back-End/Agents/PrSumary/ai.py b/backend/Agents/PrSumary/ai.py similarity index 100% rename from Back-End/Agents/PrSumary/ai.py rename to backend/Agents/PrSumary/ai.py diff --git a/backend/Agents/TecnicalDoc/ai.py b/backend/Agents/TecnicalDoc/ai.py new file mode 100644 index 000000000..190b0030e --- /dev/null +++ b/backend/Agents/TecnicalDoc/ai.py @@ -0,0 +1,291 @@ +# Back-End\Agents\TecnicalDoc\ai.py +from agents import Agent, handoff, RunContextWrapper, Runner, SQLiteSession +import requests +from dotenv import load_dotenv, find_dotenv +import os +from agents.extensions.handoff_prompt import RECOMMENDED_PROMPT_PREFIX +from pydantic import BaseModel +import logging + +from api import app +from Models.postgressSQL import db, User, Message, Config, AlfredFile, AgentStatus +from Modules.FileServer.download_ import download_ +from Modules.Agents.EgetMetadataAgent import * +from Modules.Functions.autosave import autosave +from Modules.Functions.TicketProblem import * + +from Modules.Services.Resolvers.send_email import SendEmail + +from Modules.Services.Geters.user_file_paths import get_user_file_paths + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger(__name__) + +from pydantic import BaseModel + +class TecnicalDocData(BaseModel): + path_boletim: str + +class TecnicalDoc: + def __init__(self): + self.logger = logging.getLogger(__name__) + if not self.logger.handlers: + logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') + + self.nameAlfred = "TecnicalDoc" + self.model_selectAlfred = "gpt-5-nano" + self.adxitional_instructions_Alfred = "" + self.system_ = "siga com os objetivos da instrucao" + self.Knowledge_Patch = os.path.join(os.path.dirname(__file__), '../', '../', 'Knowledge') + + self.logger.info(self.nameAlfred) + self.logger.info(self.model_selectAlfred) + + load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), '../', '../', 'Keys', 'keys.env')) + + self.UPLOAD_URL_VIDEOMANAGER = os.getenv("UPLOAD_URL") + self.project_name = os.getenv("Employers_AI_Support") + self.USER_ID_FOR_TEST = os.getenv("USER_ID_FOR_TEST") + + async def run(self, mensagem, user_platform_id, conversation_id, ticket_id): + all_paths = get_user_file_paths(app, user_platform_id, + self.UPLOAD_URL_VIDEOMANAGER, + self.project_name, + self.USER_ID_FOR_TEST + + ) + all_content = "" + for path in all_paths: + file_extension = path.rsplit('.', 1)[1].lower() if '.' in path else '' + if file_extension in {'md', 'txt', 'csv', 'json'}: + try: + with open(path, "r", encoding="utf-8") as f: + content = f.read() + all_content += content + "\n\n--- FIM DO ARQUIVO ---\n\n" # Adicionar um separador + except Exception as e: + print(f"Erro ao ler arquivo de texto {path}: {e}") + + self.logger.info(all_content) + self.instruction_db = f""" +## Objetivo +O Agente de Boletim Técnico é responsável por processar problemas técnicos reportados, documentá-los adequadamente e encaminhá-los ao time de desenvolvimento de forma estruturada e eficiente. + +## Fluxo de Trabalho + +### 1. Obtenção do Problema +- **Fonte**: Receber problema via ticket, chat, email ou sistema de monitoramento +- **Coleta Inicial**: + - Identificar o usuário/sistema afetado + - Registrar data e horário do incidente + - Coletar logs iniciais se disponíveis + - Verificar criticidade (Baixa, Média, Alta, Crítica) + +### 2. Análise e Investigação +- **Reprodução**: Tentar reproduzir o problema em ambiente controlado +- **Coleta de Evidências**: + - Screenshots ou videos demonstrativos + - Logs detalhados do sistema + - Configurações relevantes + - Versões de software/hardware envolvidas +- **Categorização**: Classificar o tipo de problema (Bug, Feature Request, Melhoria, etc.) + +### 3. Criação da Descrição Completa do Problema + +#### Estrutura da Descrição: +```markdown +## [ID-TICKET] - [TÍTULO DESCRITIVO] + +### Resumo Executivo +Breve descrição do problema em 2-3 linhas + +### Detalhamento do Problema +- **Ambiente Afetado**: [Produção/Teste/Desenvolvimento] +- **Sistema/Módulo**: [Nome do sistema específico] +- **Versão**: [Versão do software] +- **Usuários Impactados**: [Quantidade/Tipo de usuários] + +### Comportamento Observado +Descrição detalhada do que está acontecendo + +### Comportamento Esperado +Descrição do que deveria acontecer + +### Passos para Reprodução +1. Passo 1 +2. Passo 2 +3. Passo 3 +... + +### Evidências +- Links para logs +- Screenshots +- Vídeos demonstrativos +- Arquivos de configuração + +### Impacto nos Negócios +- Severidade: [1-5] +- Urgência: [1-5] +- Descrição do impacto + +### Análise Técnica Preliminar +- Possíveis causas identificadas +- Componentes envolvidos +- Dependências afetadas + +### Solução Temporária (se aplicável) +Descrição de workarounds disponíveis + +### Informações Adicionais +Qualquer informação relevante adicional +``` + +### 4. Definição do Assunto do Email + +#### Formato do Assunto: +``` +[PRIORIDADE] [SISTEMA] - [DESCRIÇÃO BREVE] - [ID-TICKET] +``` + +#### Exemplos: +- `[CRÍTICO] ERP - Falha no módulo de faturamento - #TKT-2024-001` +- `[ALTO] Portal Cliente - Login intermitente - #TKT-2024-002` +- `[MÉDIO] Relatórios - Performance lenta - #TKT-2024-003` + +### 5. Salvamento em Arquivo .md + +#### Nomenclatura do Arquivo: +``` +YYYY-MM-DD_HH-MM_[SISTEMA]_[ID-TICKET]_boletim-tecnico.md +``` + +#### Exemplo: +``` +2024-03-15_14-30_ERP_TKT-2024-001_boletim-tecnico.md +``` + +#### Localização: +- Pasta: `{self.Knowledge_Patch}` + + +Detalhes:\n + + +# ### **Detalhes do autosave:** +# - **code:** conteudo completo do documento tecnico sem omissoes por breviedade +# - **path:** `{self.Knowledge_Patch}` +\n + +### 6. Envio do Email + + +#### Corpo do Email: +``` +Prezado Time de Desenvolvimento, + +Segue em anexo boletim técnico referente ao problema reportado. + +RESUMO RÁPIDO: +- Sistema: [Nome do Sistema] +- Problema: [Breve descrição] +- Prioridade: [Nível de prioridade] +- Ticket: [ID do Ticket] + +O arquivo em anexo contém todas as informações técnicas detalhadas para análise e resolução. + +Aguardo retorno com estimativa de resolução. + +Atenciosamente, +Agente de Boletim Técnico +``` + +#### Anexos: +- Arquivo .md do boletim técnico +- Screenshots (se aplicável) +- Logs compactados (se necessário) +- Arquivos de configuração relevantes + +## Critérios de Qualidade + +### Checklist Pré-Envio: +- [ ] Problema claramente descrito +- [ ] Passos de reprodução detalhados +- [ ] Evidências coletadas e anexadas +- [ ] Impacto nos negócios avaliado +- [ ] Prioridade corretamente definida +- [ ] Arquivo .md salvo no local correto +- [ ] Assunto do email formatado adequadamente +- [ ] Destinatários corretos incluídos +- [ ] Anexos verificados + +### Métricas de Acompanhamento: +- Tempo de documentação: Máximo 30 minutos por boletim +- Qualidade da documentação: Avaliada pelo time de desenvolvimento +- Taxa de retrabalho: Menor que 10% +- Satisfação do time: Pesquisa trimestral + +## Escalação +Se o problema for classificado como **CRÍTICO**: +1. Notificar imediatamente por telefone/WhatsApp +2. Enviar email com flag de alta prioridade +3. Acompanhar resolução em tempo real +4. Comunicar status a cada 2 horas + +## Ferramentas Necessárias +- Sistema de tickets +- Editor de texto/markdown +- Cliente de email corporativo +- Ferramenta de captura de tela +- Acesso aos logs do sistema +- Sistema de controle de versão de documentos + +## Observações Importantes +- Manter confidencialidade das informações +- Seguir padrões de nomenclatura estabelecidos +- Documentar lições aprendidas +- Manter histórico organizado para consultas futuras +- Revisar e atualizar processos trimestralmente + """ + self.instruction = f""" + +{self.instruction_db} +--- + +**Contexto e informacoes:** +Aqui voce encontra Contexto e informacoes de documentos para conseguir entender melhor o contexto do aplicativo +{all_content} + + """ + Tools_Name_dict = [autosave] + + session = SQLiteSession(f"{conversation_id}", os.path.join(os.path.dirname(__file__), '../', '../', 'Knowledge', 'Db', 'conversations.db')) + + agent = Agent( + name=self.nameAlfred, + instructions =self.instruction, + model=self.model_selectAlfred, + tools=Tools_Name_dict, + output_type=TecnicalDocData + ) + + result = await Runner.run(agent, mensagem, max_turns=300, session=session) + path_boletim = result.final_output.path_boletim + logger.info(f"path_boletim? {path_boletim}") + + with open(path_boletim, "r", encoding="utf-8") as file: + content_boletim = file.read() + + SendEmail( + appname="Employers AI", + Subject=F"Ticket #{ticket_id}", + user_email_origin="freitasalexandre810@gmail.com", + body=content_boletim, + SMTP_ADM=os.getenv("SMTP_USER"), + SMTP_PASSWORD=os.getenv("SMTP_PASSWORD"), + SMTP_HOST=os.getenv("SMTP_HOST"), + SMTP_PORT=int(os.getenv("SMTP_PORT", 587)), + use_tls=os.getenv("SMTP_USE_TLS", "true").lower() == "true", + ) + + + return path_boletim + diff --git a/backend/Agents/TecnicalDoc/example.py b/backend/Agents/TecnicalDoc/example.py new file mode 100644 index 000000000..acc438fb2 --- /dev/null +++ b/backend/Agents/TecnicalDoc/example.py @@ -0,0 +1,16 @@ +from Agents.TecnicalDoc.ai import TecnicalDoc +import asyncio + +from api import app + +TecnicalDoc_instance = TecnicalDoc() +TecnicalDoc_Runner = TecnicalDoc_instance.run + +mensagem = """ +Não consigo acessar mais de 10 vídeos anteriores no modo de seleção de vídeo específico por nome do canal. Ao tentar navegar pelo histórico, parece limitar o acesso aos primeiros 10 vídeos e não carrega os demais. +""" +user_platform_id = "teste@gmail.com" +conversation_id = "chatsession_1235" +ticket_id = 'f99ea' +asyncio.run(TecnicalDoc_Runner(mensagem, user_platform_id, conversation_id, ticket_id)) + \ No newline at end of file diff --git a/backend/Agents/gpt_engineer/__init__.py b/backend/Agents/gpt_engineer/__init__.py new file mode 100644 index 000000000..518f9f8cc --- /dev/null +++ b/backend/Agents/gpt_engineer/__init__.py @@ -0,0 +1,4 @@ +# Adding convenience imports to the package + +# from gpt_engineer.tools import code_vector_repository +# from gpt_engineer.core.default import on_disk_repository diff --git a/backend/Agents/gpt_engineer/applications/__init__.py b/backend/Agents/gpt_engineer/applications/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/gpt_engineer/applications/cli/__init__.py b/backend/Agents/gpt_engineer/applications/cli/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/gpt_engineer/applications/cli/cli_agent.py b/backend/Agents/gpt_engineer/applications/cli/cli_agent.py new file mode 100644 index 000000000..80a98c98a --- /dev/null +++ b/backend/Agents/gpt_engineer/applications/cli/cli_agent.py @@ -0,0 +1,226 @@ +""" +This module provides the CliAgent class which manages the lifecycle of code generation and improvement +using an AI model. It includes functionalities to initialize code generation, improve existing code, +and process the code through various steps defined in the step bundle. +""" + +from typing import Callable, Optional, TypeVar + +# from Agents.gpt_engineer.core.default.git_version_manager import GitVersionManager +from Agents.gpt_engineer.core.ai import AI +from Agents.gpt_engineer.core.base_agent import BaseAgent +from Agents.gpt_engineer.core.base_execution_env import BaseExecutionEnv +from Agents.gpt_engineer.core.base_memory import BaseMemory +from Agents.gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv +from Agents.gpt_engineer.core.default.disk_memory import DiskMemory +from Agents.gpt_engineer.core.default.paths import PREPROMPTS_PATH +from Agents.gpt_engineer.core.default.steps import ( + execute_entrypoint, + gen_code, + gen_entrypoint, + improve_fn, +) +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.preprompts_holder import PrepromptsHolder +from Agents.gpt_engineer.core.prompt import Prompt + +CodeGenType = TypeVar("CodeGenType", bound=Callable[[AI, str, BaseMemory], FilesDict]) +CodeProcessor = TypeVar( + "CodeProcessor", bound=Callable[[AI, BaseExecutionEnv, FilesDict], FilesDict] +) +ImproveType = TypeVar( + "ImproveType", bound=Callable[[AI, str, FilesDict, BaseMemory], FilesDict] +) + + +class CliAgent(BaseAgent): + """ + The `CliAgent` class is responsible for managing the lifecycle of code generation and improvement + using an AI model. It orchestrates the generation of new code and the improvement of existing code + based on given prompts and utilizes a memory system and execution environment for processing. + + Parameters + ---------- + memory : BaseMemory + An instance of a class that adheres to the BaseMemory interface, used for storing and retrieving + information during the code generation process. + execution_env : BaseExecutionEnv + An instance of a class that adheres to the BaseExecutionEnv interface, used for executing code + and managing the execution environment. + ai : AI, optional + An instance of the AI class that manages calls to the language model. If not provided, a default + instance is created. + code_gen_fn : CodeGenType, optional + A callable that takes an AI instance, a prompt, and a memory instance to generate code. Defaults + to the `gen_code` function. + improve_fn : ImproveType, optional + A callable that takes an AI instance, a prompt, a FilesDict instance, and a memory instance to + improve code. Defaults to the `improve` function. + process_code_fn : CodeProcessor, optional + A callable that takes an AI instance, an execution environment, and a FilesDict instance to + process code. Defaults to the `execute_entrypoint` function. + preprompts_holder : PrepromptsHolder, optional + An instance of PrepromptsHolder that manages preprompt templates. If not provided, a default + instance is created using the PREPROMPTS_PATH. + + Attributes + ---------- + memory : BaseMemory + The memory instance where the agent stores and retrieves information. + execution_env : BaseExecutionEnv + The execution environment instance where the agent executes and manages code. + ai : AI + The AI instance used for interacting with the language model. + code_gen_fn : CodeGenType + The function used for generating code. + improve_fn : ImproveType + The function used for improving code. + process_code_fn : CodeProcessor + The function used for processing code. + preprompts_holder : PrepromptsHolder + The holder for preprompt templates. + """ + + def __init__( + self, + memory: BaseMemory, + execution_env: BaseExecutionEnv, + ai: AI = None, + code_gen_fn: CodeGenType = gen_code, + improve_fn: ImproveType = improve_fn, + process_code_fn: CodeProcessor = execute_entrypoint, + preprompts_holder: PrepromptsHolder = None, + repo_path='' + ): + self.memory = memory + self.execution_env = execution_env + self.ai = ai + #or AI() + self.code_gen_fn = code_gen_fn + self.process_code_fn = process_code_fn + self.improve_fn = improve_fn + self.preprompts_holder = preprompts_holder or PrepromptsHolder(PREPROMPTS_PATH) + self.repo_path = repo_path + + @classmethod + def with_default_config( + cls, + memory: DiskMemory, + execution_env: DiskExecutionEnv, + ai: AI = None, + code_gen_fn: CodeGenType = gen_code, + improve_fn: ImproveType = improve_fn, + process_code_fn: CodeProcessor = execute_entrypoint, + preprompts_holder: PrepromptsHolder = None, + repo_path='', + diff_timeout=3, + ): + """ + Creates a new instance of CliAgent with default configurations for memory, execution environment, + AI, and other functional parameters. + + Parameters + ---------- + memory : DiskMemory + An instance of DiskMemory for storing and retrieving information. + execution_env : DiskExecutionEnv + An instance of DiskExecutionEnv for executing code. + ai : AI, optional + An instance of AI for interacting with the language model. Defaults to None, which will create + a new AI instance. + code_gen_fn : CodeGenType, optional + A function for generating code. Defaults to `gen_code`. + improve_fn : ImproveType, optional + A function for improving code. Defaults to `improve`. + process_code_fn : CodeProcessor, optional + A function for processing code. Defaults to `execute_entrypoint`. + preprompts_holder : PrepromptsHolder, optional + An instance of PrepromptsHolder for managing preprompt templates. Defaults to None, which will + create a new PrepromptsHolder instance using PREPROMPTS_PATH. + + Returns + ------- + CliAgent + An instance of CliAgent configured with the provided or default parameters. + """ + return cls( + memory=memory, + execution_env=execution_env, + ai=ai, + code_gen_fn=code_gen_fn, + process_code_fn=process_code_fn, + improve_fn=improve_fn, + preprompts_holder=preprompts_holder or PrepromptsHolder(PREPROMPTS_PATH), + repo_path=repo_path, + ) + + def init(self, prompt: Prompt) -> FilesDict: + """ + Generates a new piece of code using the AI and step bundle based on the provided prompt. + + Parameters + ---------- + prompt : str + A string prompt that guides the code generation process. + + Returns + ------- + FilesDict + An instance of the `FilesDict` class containing the generated code. + """ + + files_dict = self.code_gen_fn( + self.ai, prompt, self.memory, self.preprompts_holder + ) + entrypoint = gen_entrypoint( + self.ai, prompt, files_dict, self.memory, self.preprompts_holder + ) + combined_dict = {**files_dict, **entrypoint} + files_dict = FilesDict(combined_dict) + files_dict = self.process_code_fn( + self.ai, + self.execution_env, + files_dict, + preprompts_holder=self.preprompts_holder, + prompt=prompt, + memory=self.memory, + ) + return files_dict + + def improve( + self, + files_dict: FilesDict, + prompt: Prompt, + execution_command: Optional[str] = None, + diff_timeout=3, + ) -> FilesDict: + """ + Improves an existing piece of code using the AI and step bundle based on the provided prompt. + + Parameters + ---------- + files_dict : FilesDict + An instance of `FilesDict` containing the code to be improved. + prompt : str + A string prompt that guides the code improvement process. + execution_command : str, optional + An optional command to execute the code. If not provided, the default execution command is used. + + Returns + ------- + FilesDict + An instance of the `FilesDict` class containing the improved code. + """ + + files_dict = self.improve_fn( + self.ai, + prompt, + files_dict, + self.memory, + self.preprompts_holder, + self.repo_path, + diff_timeout=diff_timeout, + ) + + + return files_dict diff --git a/backend/Agents/gpt_engineer/applications/cli/collect.py b/backend/Agents/gpt_engineer/applications/cli/collect.py new file mode 100644 index 000000000..4a54471b9 --- /dev/null +++ b/backend/Agents/gpt_engineer/applications/cli/collect.py @@ -0,0 +1,177 @@ +""" +Module `collect` - Data Handling and RudderStack Integration + +This module provides functionalities to handle and send learning data to RudderStack +for the purpose of analysis and to improve the gpt-engineer system. The data is sent +only when the user gives consent to share. + +Functions: + send_learning(learning): Sends learning data to RudderStack. + collect_learnings(prompt, model, temperature, config, memory, review): Processes and sends learning data. + collect_and_send_human_review(prompt, model, temperature, config, memory): Collects human feedback and sends it. + +Dependencies: + hashlib: For generating SHA-256 hash. + typing: For type annotations. + Agents.gpt_engineer.core: Core functionalities of gpt-engineer. + Agents.gpt_engineer.cli.learning: Handles the extraction of learning data. + +Notes: + Data sent to RudderStack is not shared with third parties and is used solely to + improve gpt-engineer and allow it to handle a broader range of use cases. + Consent logic is in gpt_engineer/learning.py. +""" + +from typing import Tuple + +from Agents.gpt_engineer.applications.cli.learning import ( + Learning, + Review, + extract_learning, + human_review_input, +) +from Agents.gpt_engineer.core.default.disk_memory import DiskMemory +from Agents.gpt_engineer.core.prompt import Prompt + + +def send_learning(learning: Learning): + """ + Send the learning data to RudderStack for analysis. + + Parameters + ---------- + learning : Learning + An instance of the Learning class containing the data to be sent. + + Notes + ----- + This function is only called if consent is given to share data. + Data is not shared to a third party. It is used with the sole purpose of + improving gpt-engineer, and letting it handle more use cases. + Consent logic is in gpt_engineer/learning.py. + """ + import rudderstack.analytics as rudder_analytics + + rudder_analytics.write_key = "2Re4kqwL61GDp7S8ewe6K5dbogG" + rudder_analytics.dataPlaneUrl = "https://gptengineerezm.dataplane.rudderstack.com" + + rudder_analytics.track( + user_id=learning.session, + event="learning", + properties=learning.to_dict(), # type: ignore + ) + + +def collect_learnings( + prompt: Prompt, + model: str, + temperature: float, + config: any, + memory: DiskMemory, + review: Review, +): + """ + Collect the learning data and send it to RudderStack for analysis. + + Parameters + ---------- + prompt : str + The initial prompt or question that was provided to the model. + model : str + The name of the model used for generating the response. + temperature : float + The temperature setting used in the model's response generation. + config : any + Configuration parameters used for the learning session. + memory : DiskMemory + An instance of DiskMemory for storing and retrieving data. + review : Review + An instance of Review containing human feedback on the model's response. + + Notes + ----- + This function attempts to send the learning data to RudderStack. If the data size exceeds + the maximum allowed size, it trims the data and retries sending it. + """ + learnings = extract_learning(prompt, model, temperature, config, memory, review) + try: + send_learning(learnings) + except RuntimeError: + # try to remove some parts of learning that might be too big + # rudderstack max event size is 32kb + max_size = 32 << 10 # 32KB in bytes + current_size = len(learnings.to_json().encode("utf-8")) # get size in bytes + + overflow = current_size - max_size + + # Add some extra characters for the "[REMOVED...]" string and for safety margin + remove_length = overflow + len(f"[REMOVED {overflow} CHARACTERS]") + 100 + + learnings.logs = ( + learnings.logs[:-remove_length] + + f"\n\n[REMOVED {remove_length} CHARACTERS]" + ) + + print( + "WARNING: learning too big, removing some parts. " + "Please report if this results in a crash." + ) + try: + send_learning(learnings) + except RuntimeError: + print( + "Sending learnings crashed despite truncation. Progressing without saving learnings." + ) + + +# def steps_file_hash(): +# """ +# Compute the SHA-256 hash of the steps file. +# +# Returns +# ------- +# str +# The SHA-256 hash of the steps file. +# """ +# with open(steps.__file__, "r") as f: +# content = f.read() +# return hashlib.sha256(content.encode("utf-8")).hexdigest() + + +def collect_and_send_human_review( + prompt: Prompt, + model: str, + temperature: float, + config: Tuple[str, ...], + memory: DiskMemory, +): + """ + Collects human feedback on the code and sends it for analysis. + + Parameters + ---------- + prompt : str + The initial prompt or question that was provided to the model. + model : str + The name of the model used for generating the response. + temperature : float + The temperature setting used in the model's response generation. + config : Tuple[str, ...] + Configuration parameters used for the learning session. + memory : DiskMemory + An instance of DiskMemory for storing and retrieving data. + + Returns + ------- + None + + Notes + ----- + This function prompts the user for a review of the generated or improved code using the + `human_review_input` function. If a valid review is provided, it's serialized to JSON format + and stored within the database's memory under the "review" key. + """ + + review = human_review_input() + if review: + collect_learnings(prompt, model, temperature, config, memory, review) diff --git a/backend/Agents/gpt_engineer/applications/cli/file_selector.py b/backend/Agents/gpt_engineer/applications/cli/file_selector.py new file mode 100644 index 000000000..64c80a94d --- /dev/null +++ b/backend/Agents/gpt_engineer/applications/cli/file_selector.py @@ -0,0 +1,551 @@ +""" +file_selector.py + +This module offers interactive file selection for projects. Leveraging a terminal-based, +tree-structured display, users can navigate and select files for editing or processing. +It integrates with system editors for direct file modification and supports saving +selections for later use. Designed for efficient workflow enhancement in file-intensive +environments, it offers customizable file filtering and seamless editor integration. + +Key Components: +- FileSelector: Manages file selection and interaction. +- DisplayablePath: Provides a structured view of file paths. + +Usage: +Typically used in project setup or management phases for selecting specific files. +It operates within the GPT-Engineer environment, relying on core functionalities for +file handling and persistence. +""" + +import fnmatch +import os +import subprocess + +from pathlib import Path +from typing import Any, Dict, Generator, List, Union + +import toml + +from Agents.gpt_engineer.core.default.disk_memory import DiskMemory +from Agents.gpt_engineer.core.default.paths import metadata_path +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.git import filter_by_gitignore, is_git_repo + + +class FileSelector: + """ + Manages file selection and interaction within a project directory. + + This class provides methods to interactively select files from the terminal, + save selections for later use, and integrate with system editors for direct + file modification. + + Attributes + ---------- + IGNORE_FOLDERS : set + A set of directory names to ignore during file selection. + FILE_LIST_NAME : str + The name of the file that stores the selected files list. + COMMENT : str + The comment string to be added to the top of the file selection list. + """ + + IGNORE_FOLDERS = {"site-packages", "node_modules", "venv", "__pycache__"} + FILE_LIST_NAME = "file_selection.toml" + COMMENT = ( + "# Remove '#' to select a file or turn off linting.\n\n" + "# Linting with BLACK (Python) enhances code suggestions from LLMs. " + "To disable linting, uncomment the relevant option in the linting settings.\n\n" + "# gpt-engineer can only read selected files. " + "Including irrelevant files will degrade performance, " + "cost additional tokens and potentially overflow token limit.\n\n" + ) + LINTING_STRING = '[linting]\n# "linting" = "off"\n\n' + is_linting = True + + def __init__(self, project_path: Union[str, Path]): + """ + Initializes the FileSelector with a given project path. + + Parameters + ---------- + project_path : Union[str, Path] + The path to the project directory where file selection is to be performed. + """ + self.project_path = project_path + self.metadata_db = DiskMemory(metadata_path(self.project_path)) + self.toml_path = self.metadata_db.path / self.FILE_LIST_NAME + + def ask_for_files(self, skip_file_selection=False) -> tuple[FilesDict, bool]: + """ + Prompts the user to select files for context improvement. + + This method supports selection from the terminal or using a previously saved list. + In test mode, it retrieves files from a predefined TOML configuration. + + Returns + ------- + FilesDict + A dictionary with file paths as keys and file contents as values. + """ + + # --- Skip toda a parte interativa e de TOML quando solicitado --- + if os.getenv("GPTE_TEST_MODE") or skip_file_selection: + # Carrega todos os arquivos do projeto diretamente, sem seleção + all_files = self.get_current_files(self.project_path) + content_dict = {} + for rel_path in all_files: + full_path = Path(self.project_path) / rel_path + try: + with open(full_path, "r", encoding="utf-8") as f: + content_dict[rel_path] = f.read() + except (FileNotFoundError, UnicodeDecodeError): + # pula arquivos faltantes ou binários + continue + # desabilita linting para não cair no pdb depois + self.is_linting = False + return FilesDict(content_dict), self.is_linting + else: + # Otherwise, use the editor file selector for interactive selection + if self.FILE_LIST_NAME in self.metadata_db: + print( + f"File list detected at {self.toml_path}. Edit or delete it if you want to select new files." + ) + selected_files = self.editor_file_selector(self.project_path, False) + else: + selected_files = self.editor_file_selector(self.project_path, True) + + content_dict = {} + for file_path in selected_files: + # selected files contains paths that are relative to the project path + try: + # to open the file we need the path from the cwd + with open( + Path(self.project_path) / file_path, "r", encoding="utf-8" + ) as content: + content_dict[str(file_path)] = content.read() + except FileNotFoundError: + print(f"Warning: File not found {file_path}") + except UnicodeDecodeError: + print(f"Warning: File not UTF-8 encoded {file_path}, skipping") + + return FilesDict(content_dict), self.is_linting + + def editor_file_selector( + self, input_path: Union[str, Path], init: bool = True + ) -> List[str]: + """ + Provides an interactive file selection interface using a .toml file. + + Parameters + ---------- + input_path : Union[str, Path] + The path where file selection is to be performed. + init : bool, optional + Indicates whether to initialize the .toml file with the file tree. + + Returns + ------- + List[str] + A list of strings representing the paths of selected files. + """ + + root_path = Path(input_path) + tree_dict = {} + toml_file = DiskMemory(metadata_path(input_path)).path / "file_selection.toml" + # Define the toml file path + + # Initialize .toml file with file tree if in initial state + if init: + tree_dict = {x: "selected" for x in self.get_current_files(root_path)} + + s = toml.dumps({"files": tree_dict}) + + # add comments on all lines that match = "selected" + s = "\n".join( + [ + "# " + line if line.endswith(' = "selected"') else line + for line in s.split("\n") + ] + ) + # Write to the toml file + with open(toml_file, "w") as f: + f.write(self.COMMENT) + f.write(self.LINTING_STRING) + f.write(s) + + else: + # Load existing files from the .toml configuration + all_files = self.get_current_files(root_path) + s = toml.dumps({"files": {x: "selected" for x in all_files}}) + + # get linting status from the toml file + with open(toml_file, "r") as file: + linting_status = toml.load(file) + if ( + "linting" in linting_status + and linting_status["linting"].get("linting", "").lower() == "off" + ): + self.is_linting = False + self.LINTING_STRING = '[linting]\n"linting" = "off"\n\n' + print("\nLinting is disabled") + + with open(toml_file, "r") as file: + selected_files = toml.load(file) + + lines = s.split("\n") + s = "\n".join( + lines[:1] + + [ + line + if line.split(" = ")[0].strip('"') in selected_files["files"] + else "# " + line + for line in lines[1:] + ] + ) + + # Write the merged list back to the .toml for user review and modification + with open(toml_file, "w") as file: + file.write(self.COMMENT) # Ensure to write the comment + file.write(self.LINTING_STRING) + file.write(s) + + print( + "Please select and deselect (add # in front) files, save it, and close it to continue..." + ) + self.open_with_default_editor( + toml_file + ) # Open the .toml file in the default editor for user modification + return self.get_files_from_toml( + input_path, toml_file + ) # Return the list of selected files after user edits + + def open_with_default_editor(self, file_path: Union[str, Path]): + """ + Opens a file with the system's default text editor. + + Parameters + ---------- + file_path : Union[str, Path] + The path to the file to be opened in the text editor. + """ + + editors = [ + "gedit", + "notepad", + "nvim", + "write", + "nano", + "vim", + "emacs", + ] # Putting the beginner-friendly text editor forward + chosen_editor = os.environ.get("EDITOR") + + # Try the preferred editor first, then fallback to common editors + if chosen_editor: + try: + subprocess.run([chosen_editor, file_path]) + return + except Exception: + pass + + for editor in editors: + try: + subprocess.run([editor, file_path]) + return + except Exception: + continue + print("No suitable text editor found. Please edit the file manually.") + + def is_utf8(self, file_path: Union[str, Path]) -> bool: + """ + Checks if the file at the given path is UTF-8 encoded. + + Parameters + ---------- + file_path : Union[str, Path] + The path to the file to be checked. + + Returns + ------- + bool + True if the file is UTF-8 encoded, False otherwise. + """ + + try: + with open(file_path, "rb") as file: + file.read().decode("utf-8") + return True + except UnicodeDecodeError: + return False + + def get_files_from_toml( + self, input_path: Union[str, Path], toml_file: Union[str, Path] + ) -> List[str]: + """ + Retrieves a list of selected files from a .toml configuration file. + + Parameters + ---------- + input_path : Union[str, Path] + The path where file selection was performed. + toml_file : Union[str, Path] + The path to the .toml file containing the file selection. + + Returns + ------- + List[str] + A list of strings representing the paths of selected files. + + Raises + ------ + Exception + If no files are selected in the .toml file. + """ + selected_files = [] + edited_tree = toml.load(toml_file) # Load the edited .toml file + + # check if users have disabled linting or not + if ( + "linting" in edited_tree + and edited_tree["linting"].get("linting", "").lower() == "off" + ): + self.is_linting = False + print("\nLinting is disabled") + else: + self.is_linting = True + + # Iterate through the files in the .toml and append selected files to the list + for file, _ in edited_tree["files"].items(): + selected_files.append(file) + + # Ensure that at least one file is selected, or raise an exception + if not selected_files: + raise Exception( + "No files were selected. Please select at least one file to proceed." + ) + + print(f"\nYou have selected the following files:\n{input_path}") + + project_path = Path(input_path).resolve() + selected_paths = set( + project_path.joinpath(file).resolve(strict=False) for file in selected_files + ) + + for displayable_path in DisplayablePath.make_tree(project_path): + if displayable_path.path in selected_paths: + p = displayable_path + while p.parent and p.parent.path not in selected_paths: + selected_paths.add(p.parent.path) + p = p.parent + + try: + for displayable_path in DisplayablePath.make_tree(project_path): + if displayable_path.path in selected_paths: + print(displayable_path.displayable()) + + except FileNotFoundError: + print("Specified path does not exist: ", project_path) + except Exception as e: + print("An error occurred while trying to display the file tree:", e) + + print("\n") + return selected_files + + def merge_file_lists( + self, existing_files: Dict[str, Any], new_files: Dict[str, Any] + ) -> Dict[str, Any]: + """ + Merges two lists of files, preserving the selection status. + + Parameters + ---------- + existing_files : Dict[str, Any] + The dictionary of existing files with their properties. + new_files : Dict[str, Any] + The dictionary of new files with their properties. + + Returns + ------- + Dict[str, Any] + The updated dictionary of files after merging. + """ + # Update the existing files with any new files or changes + for file, properties in new_files.items(): + if file not in existing_files: + existing_files[file] = properties # Add new files as unselected + # If you want to update other properties of existing files, you can do so here + + return existing_files + + def should_filter_file(self, file_path: Path, filters: List[str]) -> bool: + """ + Determines if a file should be ignored based on .gitignore rules. + """ + for f in filters: + if fnmatch.fnmatchcase(str(file_path), f): + return True + return False + + def get_current_files(self, project_path: Union[str, Path]) -> List[str]: + """ + Generates a list of all files in the project directory. Will use .gitignore files if project_path is a git repository. + + Parameters + ---------- + project_path : Union[str, Path] + The path to the project directory. + + Returns + ------- + List[str] + A list of strings representing the relative paths of all files in the project directory. + """ + all_files = [] + project_path = Path( + project_path + ).resolve() # Ensure path is absolute and resolved + + file_list = project_path.glob("**/*") + + for path in file_list: # Recursively list all files + if path.is_file(): + relpath = path.relative_to(project_path) + parts = relpath.parts + if any(part.startswith(".") for part in parts): + continue # Skip hidden files + if any(part in self.IGNORE_FOLDERS for part in parts): + continue + if relpath.name == "prompt": + continue # Skip files named 'prompt' + + all_files.append(str(relpath)) + + if is_git_repo(project_path) and "projects" not in project_path.parts: + all_files = filter_by_gitignore(project_path, all_files) + + return sorted(all_files, key=lambda x: Path(x).as_posix()) + + +class DisplayablePath(object): + """ + Represents and displays a file system path in a tree-like structure. + + This class is used to visually represent the structure of directories and files + in a way that is similar to a file explorer's tree view. + """ + + display_filename_prefix_middle = "├── " + display_filename_prefix_last = "└── " + display_parent_prefix_middle = " " + display_parent_prefix_last = "│ " + + def __init__( + self, path: Union[str, Path], parent_path: "DisplayablePath", is_last: bool + ): + """ + Initializes a DisplayablePath object with a given path and parent. + + Parameters + ---------- + path : Union[str, Path] + The file system path to be displayed. + parent_path : DisplayablePath + The parent path in the tree structure. + is_last : bool + Indicates whether this is the last sibling in the tree structure. + """ + self.depth = 0 + self.path = Path(str(path)) + self.parent = parent_path + self.is_last = is_last + if self.parent: + self.depth = self.parent.depth + 1 # Increment depth if it has a parent + + @property + def display_name(self) -> str: + """ + Get the display name of the file or directory. + """ + if self.path.is_dir(): + return self.path.name + "/" + return self.path.name + + @classmethod + def make_tree( + cls, root: Union[str, Path], parent=None, is_last=False, criteria=None + ) -> Generator["DisplayablePath", None, None]: + """ + Creates a tree of DisplayablePath objects from a root directory. + + Parameters + ---------- + root : Union[str, Path] + The root directory from which to start creating the tree. + parent : DisplayablePath, optional + The parent path in the tree structure. + is_last : bool, optional + Indicates whether this is the last sibling in the tree structure. + criteria : callable, optional + A function to filter the paths included in the tree. + + Yields + ------ + DisplayablePath + The next DisplayablePath object in the tree. + """ + root = Path(str(root)) # Ensure root is a Path object + criteria = criteria or cls._default_criteria + displayable_root = cls(root, parent, is_last) + yield displayable_root + + if root.is_dir(): # Check if root is a directory before iterating + children = sorted( + list(path for path in root.iterdir() if criteria(path)), + key=lambda s: str(s).lower(), + ) + count = 1 + for path in children: + is_last = count == len(children) + yield from cls.make_tree( + path, parent=displayable_root, is_last=is_last, criteria=criteria + ) + count += 1 + + @classmethod + def _default_criteria(cls, path: Path) -> bool: + """ + The default criteria function to filter the paths. + """ + return True + + def displayable(self) -> str: + """ + Returns a string representation of the path for display in a tree-like structure. + + Returns + ------- + str + The displayable string representation of the file or directory. + """ + if self.parent is None: + return self.display_name + + _filename_prefix = ( + self.display_filename_prefix_last + if self.is_last + else self.display_filename_prefix_middle + ) + + parts = ["{!s} {!s}".format(_filename_prefix, self.display_name)] + + parent = self.parent + while parent and parent.parent is not None: + parts.append( + self.display_parent_prefix_middle + if parent.is_last + else self.display_parent_prefix_last + ) + parent = parent.parent + + return "".join(reversed(parts)) # Assemble the parts into the final string diff --git a/backend/Agents/gpt_engineer/applications/cli/learning.py b/backend/Agents/gpt_engineer/applications/cli/learning.py new file mode 100644 index 000000000..7084660d5 --- /dev/null +++ b/backend/Agents/gpt_engineer/applications/cli/learning.py @@ -0,0 +1,301 @@ +""" +The `learning` module is designed to facilitate the collection and storage of user feedback on the outputs generated by the GPT Engineer tool. It provides mechanisms for obtaining user consent, capturing user reviews, and storing this information for future analysis and enhancement of the tool's performance. + +Classes +------- +Review : dataclass + Represents a user's review of the generated code, including whether it ran, was perfect, was useful, and any additional comments. +Learning : dataclass + Encapsulates the metadata and feedback collected during a session of using the GPT Engineer tool, including the prompt, model, temperature, configuration, logs, session identifier, user review, and timestamp. + +Functions +--------- +human_review_input() -> Optional[Review] + Interactively gathers feedback from the user regarding the performance of generated code and returns a Review instance. +check_collection_consent() -> bool + Checks if the user has previously given consent to store their data and, if not, asks for it. +ask_collection_consent() -> bool + Prompts the user for consent to store their data for the purpose of improving GPT Engineer. +extract_learning(prompt: Prompt, model: str, temperature: float, config: Tuple[str, ...], memory: DiskMemory, review: Review) -> Learning + Extracts feedback and session details to create a Learning instance based on the provided parameters. +get_session() -> str + Retrieves a unique identifier for the current user session, creating one if it does not exist. + +Constants +--------- +TERM_CHOICES : tuple + Terminal color choices for user interactive prompts, formatted with termcolor for readability. +""" + +import json +import random +import tempfile + +from dataclasses import dataclass, field +from datetime import datetime +from pathlib import Path +from typing import Optional, Tuple + +from dataclasses_json import dataclass_json +from termcolor import colored + +from Agents.gpt_engineer.core.default.disk_memory import DiskMemory +from Agents.gpt_engineer.core.prompt import Prompt + + +@dataclass_json +@dataclass +class Review: + """ + A dataclass that represents a user's review of the generated code. + + Attributes + ---------- + ran : Optional[bool] + Indicates whether the generated code ran without errors. + perfect : Optional[bool] + Indicates whether the generated code met all the user's requirements. + works : Optional[bool] + Indicates whether the generated code was useful, even if not perfect. + comments : str + Any additional comments provided by the user. + raw : str + A raw string representation of the user's responses. + """ + + ran: Optional[bool] + perfect: Optional[bool] + works: Optional[bool] + comments: str + raw: str + + +@dataclass_json +@dataclass +class Learning: + """ + A dataclass that encapsulates the learning data collected during a GPT Engineer session. + + Attributes + ---------- + prompt : str + A JSON string representing the prompt provided to GPT Engineer. + model : str + The name of the model used during the session. + temperature : float + The temperature setting used for the model's responses. + config : str + A JSON string representing the configuration settings for the session. + logs : str + A JSON string representing the logs of the session. + session : str + A unique identifier for the user session. + review : Optional[Review] + The user's review of the generated code. + timestamp : str + The UTC timestamp when the learning data was created. + version : str + The version of the learning data schema. + """ + + prompt: str + model: str + temperature: float + config: str + logs: str + session: str + review: Optional[Review] + timestamp: str = field(default_factory=lambda: datetime.utcnow().isoformat()) + version: str = "0.3" + + +TERM_CHOICES = ( + colored("y", "green") + + "/" + + colored("n", "red") + + "/" + + colored("u", "yellow") + + "(ncertain): " +) + + +def human_review_input() -> Optional[Review]: + """ + Interactively prompts the user to review the generated code and returns their feedback encapsulated in a Review object. + + This function will first check if the user has given consent to collect their feedback. If consent is given, it will ask the user a series of questions about the generated code's performance and capture their responses. + + Returns + ------- + Optional[Review] + A Review object containing the user's feedback, or None if consent is not given. + """ + print() + if not check_collection_consent(): + return None + print() + print( + colored("To help gpt-engineer learn, please answer 3 questions:", "light_green") + ) + print() + + ran = input("Did the generated code run at all? " + TERM_CHOICES) + ran = ask_for_valid_input(ran) + + if ran == "y": + perfect = input( + "Did the generated code do everything you wanted? " + TERM_CHOICES + ) + perfect = ask_for_valid_input(perfect) + + if perfect != "y": + useful = input("Did the generated code do anything useful? " + TERM_CHOICES) + useful = ask_for_valid_input(useful) + else: + useful = "" + else: + perfect = "" + useful = "" + + if perfect != "y": + comments = input( + "If you have time, please explain what was not working " + + colored("(ok to leave blank)\n", "light_green") + ) + else: + comments = "" + + return Review( + raw=", ".join([ran, perfect, useful]), + ran={"y": True, "n": False, "u": None, "": None}[ran], + works={"y": True, "n": False, "u": None, "": None}[useful], + perfect={"y": True, "n": False, "u": None, "": None}[perfect], + comments=comments, + ) + + +def ask_for_valid_input(ran): + while ran not in ("y", "n", "u"): + ran = input("Invalid input. Please enter y, n, or u: ") + return ran + + +def check_collection_consent() -> bool: + """ + Checks if the user has previously given consent to store their data for feedback collection. + + This function looks for a file that stores the user's consent status. If the file exists and contains 'true', consent is assumed. If the file does not exist or does not contain 'true', the function will prompt the user for consent. + + Returns + ------- + bool + True if the user has given consent, False otherwise. + """ + path = Path(".gpte_consent") + if path.exists() and path.read_text() == "true": + return True + else: + return ask_collection_consent() + + +def ask_collection_consent() -> bool: + """ + Asks the user for their consent to store their data for the purpose of improving the GPT Engineer tool. + + The user's response is recorded in a file for future reference. If the user consents, the function will write 'true' to the file. If the user does not consent, no data will be collected, and the function will not modify the file. + + Returns + ------- + bool + True if the user consents, False otherwise. + """ + answer = input( + "Is it ok if we store your prompts to help improve GPT Engineer? (y/n)" + ) + while answer.lower() not in ("y", "n"): + answer = input("Invalid input. Please enter y or n: ") + + if answer.lower() == "y": + path = Path(".gpte_consent") + path.write_text("true") + print(colored("Thank you️", "light_green")) + print() + print( + "(If you no longer wish to participate in data collection, delete the file .gpte_consent)" + ) + return True + else: + print( + colored( + "No worries! GPT Engineer will not collect your prompts. ❤️", + "light_green", + ) + ) + return False + + +def extract_learning( + prompt: Prompt, + model: str, + temperature: float, + config: Tuple[str, ...], + memory: DiskMemory, + review: Review, +) -> Learning: + """ + Constructs a Learning object containing the session's metadata and user feedback. + + Parameters + ---------- + prompt : str + The initial prompt provided to the GPT Engineer. + model : str + The name of the model used during the session. + temperature : float + The temperature setting used for the model's responses. + config : Tuple[str, ...] + A tuple representing the configuration settings for the session. + memory : DiskMemory + An object representing the disk memory used during the session. + review : Review + The user's review of the generated code. + + Returns + ------- + Learning + An instance of Learning containing all the session details and user feedback. + """ + return Learning( + prompt=prompt.to_json(), + model=model, + temperature=temperature, + config=json.dumps(config), + session=get_session(), + logs=memory.to_json(), + review=review, + ) + + +def get_session() -> str: + """ + Retrieves or generates a unique identifier for the current user session. + + This function attempts to read a unique user ID from a temporary file. If the file does not exist, it generates a new random ID, writes it to the file, and returns it. This ID is used to uniquely identify the user's session. + + Returns + ------- + str + A unique identifier for the user session. + """ + path = Path(tempfile.gettempdir()) / "gpt_engineer_user_id.txt" + + try: + if path.exists(): + user_id = path.read_text() + else: + # random uuid: + user_id = str(random.randint(0, 2**32)) + path.write_text(user_id) + return user_id + except IOError: + return "ephemeral_" + str(random.randint(0, 2**32)) diff --git a/backend/Agents/gpt_engineer/applications/cli/main.py b/backend/Agents/gpt_engineer/applications/cli/main.py new file mode 100644 index 000000000..4cf69ccbb --- /dev/null +++ b/backend/Agents/gpt_engineer/applications/cli/main.py @@ -0,0 +1,574 @@ +""" +Fixed non-interactive CLI implementation +This removes ALL interactive elements and makes it truly returnable. +""" +import time +import difflib +import json +import logging +from datetime import datetime +import os +import platform +import subprocess +import sys +from pathlib import Path +from typing import Optional, Dict, Any, Tuple +from fastapi import WebSocket +import openai +from dotenv import load_dotenv +from langchain.globals import set_llm_cache +from langchain_community.cache import SQLiteCache +from termcolor import colored +from firebase_admin import App, db + +# Import your existing modules +from Agents.gpt_engineer.applications.cli.cli_agent import CliAgent +from Agents.gpt_engineer.applications.cli.file_selector import FileSelector +from Agents.gpt_engineer.core.ai import AI +from Agents.gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv +from Agents.gpt_engineer.core.default.disk_memory import DiskMemory +from Agents.gpt_engineer.core.default.file_store import FileStore +from Agents.gpt_engineer.core.default.paths import PREPROMPTS_PATH, memory_path +from Agents.gpt_engineer.core.default.steps import ( + execute_entrypoint, + gen_code, + handle_improve_mode, + improve_fn as improve_fn, +) +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.git import stage_uncommitted_to_git +from Agents.gpt_engineer.core.preprompts_holder import PrepromptsHolder +from Agents.gpt_engineer.core.prompt import Prompt +from Agents.gpt_engineer.tools.custom_steps import clarified_gen, lite_gen, self_heal +# from modules.Chat.history.save_history_user import save_history_user +# from modules.Chat.history.save_history_system import save_history_system + +logging.basicConfig(level=logging.INFO) +logger = logging.getLogger("main_logger") + +class GPTEngineerResult: + """Class to hold the results of GPT Engineer execution.""" + + def __init__(self, + success: bool = False, + files_dict: Optional[FilesDict] = None, + error_message: Optional[str] = None, + changes_made: bool = False, + token_usage: Optional[Dict[str, Any]] = None, + system_info: Optional[Dict[str, Any]] = None, + diff_output: Optional[str] = None): + self.success = success + self.files_dict = files_dict + self.error_message = error_message + self.changes_made = changes_made + self.token_usage = token_usage + self.system_info = system_info + self.diff_output = diff_output + + def to_dict(self) -> Dict[str, Any]: + """Convert result to dictionary.""" + return { + 'success': self.success, + 'files_dict': self.files_dict.to_dict() if self.files_dict else None, + 'error_message': self.error_message, + 'changes_made': self.changes_made, + 'token_usage': self.token_usage, + 'system_info': self.system_info, + 'diff_output': self.diff_output + } + + +class NonInteractiveFileSelector: + """Non-interactive version of FileSelector that doesn't prompt user.""" + + def __init__(self, project_path: str): + self.project_path = project_path + + def ask_for_files(self, skip_file_selection: bool = True) -> Tuple[FilesDict, bool]: + """Non-interactive file selection - returns all relevant files.""" + files_dict = FilesDict() + project_path = Path(self.project_path) + + # Extensões de arquivos de código, incluindo React/Vite + code_extensions = { + '.py', '.js', '.jsx', '.ts', '.tsx', '.mjs', '.cjs', + '.html', '.css', '.json', '.txt', '.md', + '.yml', '.yaml', '.toml', '.env', '.gitignore' + } + + for file_path in project_path.rglob('*'): + if ( + file_path.is_file() and + file_path.suffix.lower() in code_extensions and + not any(part.startswith('.') for part in file_path.parts) and + 'node_modules' not in file_path.parts and + '__pycache__' not in file_path.parts + ): + try: + relative_path = file_path.relative_to(project_path) + with file_path.open('r', encoding='utf-8', errors='ignore') as f: + content = f.read() + files_dict[str(relative_path)] = content + except Exception as e: + print(f"Warning: Could not read {file_path}: {e}") + + # False indica que não é só linters, mas uso normal + return files_dict, False + +def load_env_if_needed(): + """Load environment variables if the OPENAI_API_KEY is not already set.""" + if os.getenv("OPENAI_API_KEY") is None: + load_dotenv() + if os.getenv("OPENAI_API_KEY") is None: + load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env")) + + openai.api_key = os.getenv("OPENAI_API_KEY") + + if os.getenv("ANTHROPIC_API_KEY") is None: + load_dotenv() + if os.getenv("ANTHROPIC_API_KEY") is None: + load_dotenv(dotenv_path=os.path.join(os.getcwd(), ".env")) + + +def concatenate_paths(base_path, sub_path): + """Compute the relative path from base_path to sub_path.""" + relative_path = os.path.relpath(sub_path, base_path) + if not relative_path.startswith(".."): + return sub_path + return os.path.normpath(os.path.join(base_path, sub_path)) + + +def load_prompt_non_interactive( + input_repo: DiskMemory, + improve_mode: bool, + prompt_file: str, + image_directory: str, + entrypoint_prompt_file: str = "", + default_prompt: str = "", + default_improve_prompt: str = "" +) -> Prompt: + """Load prompt from file or use default prompts (non-interactive version).""" + + if os.path.isdir(prompt_file): + raise ValueError( + f"The path to the prompt, {prompt_file}, already exists as a directory. " + "No prompt can be read from it. Please specify a prompt file using --prompt_file" + ) + + prompt_str = input_repo.get(prompt_file) + if prompt_str: + print(colored("Using prompt from file:", "green"), prompt_file) + print(prompt_str) + else: + if not improve_mode: + if not default_prompt: + raise ValueError( + "No prompt file found and no default_prompt provided. " + "Please provide a prompt file or default_prompt parameter." + ) + prompt_str = default_prompt + print(colored("Using default prompt:", "yellow")) + print(prompt_str) + else: + if not default_improve_prompt: + raise ValueError( + "No prompt file found and no default_improve_prompt provided. " + "Please provide a prompt file or default_improve_prompt parameter." + ) + prompt_str = default_improve_prompt + print(colored("Using default improve prompt:", "yellow")) + print(prompt_str) + + if entrypoint_prompt_file == "": + entrypoint_prompt = "" + else: + full_entrypoint_prompt_file = concatenate_paths( + input_repo.path, entrypoint_prompt_file + ) + if os.path.isfile(full_entrypoint_prompt_file): + entrypoint_prompt = input_repo.get(full_entrypoint_prompt_file) + else: + raise ValueError("The provided file at --entrypoint-prompt does not exist") + + if image_directory == "": + return Prompt(prompt_str, entrypoint_prompt=entrypoint_prompt) + + full_image_directory = concatenate_paths(input_repo.path, image_directory) + if os.path.isdir(full_image_directory): + if len(os.listdir(full_image_directory)) == 0: + raise ValueError("The provided --image_directory is empty.") + image_repo = DiskMemory(full_image_directory) + return Prompt( + prompt_str, + image_repo.get(".").to_dict(), + entrypoint_prompt=entrypoint_prompt, + ) + else: + raise ValueError("The provided --image_directory is not a directory.") + + +def get_preprompts_path(use_custom_preprompts: bool, input_path: Path) -> Path: + """Get the path to the preprompts, using custom ones if specified.""" + original_preprompts_path = PREPROMPTS_PATH + if not use_custom_preprompts: + return original_preprompts_path + + custom_preprompts_path = input_path / "preprompts" + if not custom_preprompts_path.exists(): + custom_preprompts_path.mkdir() + + for file in original_preprompts_path.glob("*"): + if not (custom_preprompts_path / file.name).exists(): + (custom_preprompts_path / file.name).write_text(file.read_text()) + return custom_preprompts_path + + +def compare_files(f1: FilesDict, f2: FilesDict) -> str: + """Compare two FilesDict objects and return diff as string.""" + def colored_diff(s1, s2): + lines1 = s1.splitlines() + lines2 = s2.splitlines() + diff = difflib.unified_diff(lines1, lines2, lineterm="") + + RED = "\033[38;5;202m" + GREEN = "\033[92m" + RESET = "\033[0m" + + colored_lines = [] + for line in diff: + if line.startswith("+"): + colored_lines.append(GREEN + line + RESET) + elif line.startswith("-"): + colored_lines.append(RED + line + RESET) + else: + colored_lines.append(line) + + return "\n".join(colored_lines) + + diff_output = [] + for file in sorted(set(f1) | set(f2)): + diff = colored_diff(f1.get(file, ""), f2.get(file, "")) + if diff: + diff_output.append(f"Changes to {file}:") + diff_output.append(diff) + + return "\n".join(diff_output) + + +def get_system_info() -> Dict[str, Any]: + """Get system information for debugging.""" + system_info = { + "os": platform.system(), + "os_version": platform.version(), + "architecture": platform.machine(), + "python_version": sys.version, + "packages": format_installed_packages(get_installed_packages()), + } + return system_info + + +def get_installed_packages(): + """Get installed Python packages.""" + try: + result = subprocess.run( + [sys.executable, "-m", "pip", "list", "--format=json"], + capture_output=True, + text=True, + ) + packages = json.loads(result.stdout) + return {pkg["name"]: pkg["version"] for pkg in packages} + except Exception as e: + return str(e) + + +def format_installed_packages(packages): + """Format installed packages for display.""" + if isinstance(packages, str): + return packages + return "\n".join([f"{name}: {version}" for name, version in packages.items()]) + + +# Non-interactive execution function that doesn't prompt +def non_interactive_execute_entrypoint(ai, execution_env, files_dict, **kwargs): + """Non-interactive version that doesn't ask for user input.""" + print("Skipping execution confirmation in non-interactive mode") + return files_dict + + +def run_gpt_engineer( + project_path: str = ".", + model: str = None, + temperature: float = 0.1, + improve_mode: bool = False, + lite_mode: bool = False, + clarify_mode: bool = False, + self_heal_mode: bool = False, + azure_endpoint: str = "", + use_custom_preprompts: bool = False, + llm_via_clipboard: bool = False, + verbose: bool = False, + debug: bool = False, + prompt_file: str = "prompt", + entrypoint_prompt_file: str = "", + image_directory: str = "", + use_cache: bool = False, + skip_file_selection: bool = True, + no_execution: bool = False, + diff_timeout: int = 3, + default_prompt: str = "", + default_improve_prompt: str = "", + auto_apply_changes: bool = True, + return_system_info: bool = False, + skip_entrypoint_execution: bool = True, + WebSocketFlag: Optional[WebSocket] = None, + session_id: Optional[str] = None, + user_email: Optional[str] = None, + appcompany: Optional[App] = None, +) -> GPTEngineerResult: + """ + Non-interactive version of the main GPT Engineer function. + + Parameters + ---------- + skip_entrypoint_execution : bool + If True, skips the execution step that asks for user confirmation + + Returns + ------- + GPTEngineerResult + Object containing the results of the operation. + """ + + try: + # save_history_user(session_id, user_email, default_prompt, appcompany) + + + # Set model default + if model is None: + model = os.environ.get("MODEL_NAME", "gpt-4o") + + # Return system info if requested + if return_system_info: + sys_info = get_system_info() + return GPTEngineerResult( + success=True, + system_info=sys_info + ) + + # Validate arguments + if improve_mode and (clarify_mode or lite_mode): + return GPTEngineerResult( + success=False, + error_message="Error: Clarify and lite mode are not compatible with improve mode." + ) + + # Set up logging + logging.basicConfig(level=logging.DEBUG if verbose else logging.INFO) + if use_cache: + set_llm_cache(SQLiteCache(database_path=".langchain.db")) + + load_env_if_needed() + + if WebSocketFlag == None: + ai = AI( + model_name=model, + temperature=temperature, + azure_endpoint=azure_endpoint, + ActiveWebSocket=None + ) + else: + ai = AI( + model_name=model, + temperature=temperature, + azure_endpoint=azure_endpoint, + ActiveWebSocket=WebSocketFlag, + session_id=session_id, + user_email=user_email, + appcompany=appcompany, + ) + + path = Path(project_path) + print("Running gpt-engineer in", path.absolute(), "\n") + + + # Load prompt (non-interactive version) + prompt = load_prompt_non_interactive( + DiskMemory(path), + improve_mode, + prompt_file, + image_directory, + entrypoint_prompt_file, + default_prompt, + default_improve_prompt + ) + + if not ai.vision: + prompt.image_urls = None + + # Configure generation function + if clarify_mode: + code_gen_fn = clarified_gen + elif lite_mode: + code_gen_fn = lite_gen + else: + code_gen_fn = gen_code + + # Configure execution function - use non-interactive version + if skip_entrypoint_execution: + execution_fn = non_interactive_execute_entrypoint + elif self_heal_mode: + execution_fn = self_heal + else: + execution_fn = execute_entrypoint + + preprompts_holder = PrepromptsHolder( + get_preprompts_path(use_custom_preprompts, Path(project_path)) + ) + + memory = DiskMemory(memory_path(project_path)) + memory.archive_logs() + + execution_env = DiskExecutionEnv() + agent = CliAgent.with_default_config( + memory, + execution_env, + ai=ai, + code_gen_fn=code_gen_fn, + improve_fn=improve_fn, + process_code_fn=execution_fn, + preprompts_holder=preprompts_holder, + repo_path=project_path + ) + + files = FileStore(project_path) + files_dict = None + diff_output = None + changes_made = False + + if not no_execution: + if improve_mode: + # Use non-interactive file selector + file_selector = NonInteractiveFileSelector(project_path) + files_dict_before, is_linting = file_selector.ask_for_files( + skip_file_selection=skip_file_selection + ) + + # Lint the code + if is_linting: + files_dict_before = files.linting(files_dict_before) + + files_dict = handle_improve_mode( + prompt, agent, memory, files_dict_before, diff_timeout=diff_timeout + ) + + if not files_dict or files_dict_before == files_dict: + return GPTEngineerResult( + success=False, + error_message=f"No changes applied. Debug log available in {memory.path}/logs folder" + ) + else: + diff_output = compare_files(files_dict_before, files_dict) + changes_made = True + + if not auto_apply_changes: + # Return the diff for manual review + return GPTEngineerResult( + success=True, + files_dict=files_dict, + changes_made=changes_made, + diff_output=diff_output, + token_usage="0" + ) + + else: + files_dict = agent.init(prompt) + changes_made = True + + # Apply changes + stage_uncommitted_to_git(path, files_dict, improve_mode) + files.push(files_dict) + + return GPTEngineerResult( + success=True, + files_dict=files_dict, + changes_made=changes_made, + token_usage="0", + diff_output=diff_output + ) + + except Exception as e: + if debug: + import traceback + traceback.print_exc() + + return GPTEngineerResult( + success=False, + error_message=str(e) + ) + + +def _get_token_usage(ai) -> Dict[str, Any]: + """Helper function to get token usage information.""" + try: + if hasattr(ai, 'token_usage_log'): + if ai.token_usage_log.is_openai_model(): + return { + 'cost': ai.token_usage_log.usage_cost(), + 'type': 'openai' + } + elif os.getenv("LOCAL_MODEL"): + return { + 'cost': 0.0, + 'type': 'local' + } + else: + return { + 'total_tokens': ai.token_usage_log.total_tokens(), + 'type': 'other' + } + except Exception: + pass + return {'type': 'unknown'} + + +# # Simple test script +# if __name__ == "__main__": +# # Test the non-interactive function +# result = run_gpt_engineer( +# project_path="./my_project", +# default_prompt="Create a simple web server using Flask", +# model="gpt-4o", +# auto_apply_changes=True, +# skip_entrypoint_execution=True, +# verbose=True +# ) + +# print("\n" + "="*50) +# print("RESULT:") +# print("="*50) + +# if result.success: +# print("✅ GPT Engineer completed successfully") +# print(f"📁 Changes made: {result.changes_made}") + +# if result.files_dict: +# print(f"📄 Generated files:") +# for filename in result.files_dict.keys(): +# print(f" - {filename}") + +# if result.token_usage: +# if result.token_usage['type'] == 'openai': +# print(f"💰 Total API cost: ${result.token_usage.get('cost', 'unknown')}") +# elif result.token_usage['type'] == 'local': +# print("💰 Total API cost: $0.0 (using local LLM)") +# else: +# print(f"🔢 Total tokens used: {result.token_usage.get('total_tokens', 'unknown')}") + +# if result.diff_output: +# print("\n📝 Changes made:") +# print(result.diff_output) + +# else: +# print(f"❌ GPT Engineer failed: {result.error_message}") + +# print("\nResult object:", result.to_dict()) \ No newline at end of file diff --git a/backend/Agents/gpt_engineer/benchmark/__init__.py b/backend/Agents/gpt_engineer/benchmark/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/gpt_engineer/benchmark/__main__.py b/backend/Agents/gpt_engineer/benchmark/__main__.py new file mode 100644 index 000000000..7a0022127 --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/__main__.py @@ -0,0 +1,154 @@ +""" +Main entry point for the benchmarking tool. + +This module provides a command-line interface for running benchmarks using Typer. +It allows users to specify the path to an agent, the benchmark(s) to run, and other +options such as verbosity. + +Functions +--------- +get_agent : function + Dynamically imports and returns the default configuration agent from the given path. + +main : function + The main function that runs the specified benchmarks with the given agent. + Outputs the results to the console. + +Attributes +---------- +__name__ : str + The standard boilerplate for invoking the main function when the script is executed. +""" +import importlib +import os.path +import sys + +from typing import Annotated, Optional + +import typer + +from langchain.globals import set_llm_cache +from langchain_community.cache import SQLiteCache + +from Agents.gpt_engineer.applications.cli.main import load_env_if_needed +from Agents.gpt_engineer.benchmark.bench_config import BenchConfig +from Agents.gpt_engineer.benchmark.benchmarks.load import get_benchmark +from Agents.gpt_engineer.benchmark.run import export_yaml_results, print_results, run + +app = typer.Typer( + context_settings={"help_option_names": ["-h", "--help"]} +) # creates a CLI app + + +def get_agent(path): + """ + Dynamically imports and returns the default configuration agent from the given path. + + Parameters + ---------- + path : str + The file path to the module containing the default configuration agent. + + Returns + ------- + BaseAgent + An instance of the imported default configuration agent. + """ + # Dynamically import the python module at path + sys.path.append(os.path.dirname(path)) + agent_module = importlib.import_module(path.replace("/", ".").replace(".py", "")) + return agent_module.default_config_agent() + + +@app.command( + help=""" + Run any benchmark(s) against the specified agent. + + \b + Currently available benchmarks are: apps and mbpp + """ +) +def main( + path_to_agent: Annotated[ + str, + typer.Argument( + help="python file that contains a function called 'default_config_agent'" + ), + ], + bench_config: Annotated[ + str, typer.Argument(help="optional task name in benchmark") + ] = os.path.join(os.path.dirname(__file__), "default_bench_config.toml"), + yaml_output: Annotated[ + Optional[str], + typer.Option(help="print results for each task", show_default=False), + ] = None, + verbose: Annotated[ + Optional[bool], + typer.Option(help="print results for each task", show_default=False), + ] = False, + use_cache: Annotated[ + Optional[bool], + typer.Option( + help="Speeds up computations and saves tokens when running the same prompt multiple times by caching the LLM response.", + show_default=False, + ), + ] = True, +): + """ + The main function that runs the specified benchmarks with the given agent and outputs the results to the console. + + Parameters + ---------- + path_to_agent : str + The file path to the Python module that contains a function called 'default_config_agent'. + bench_config : str, default=default_bench_config.toml + Configuration file for choosing which benchmark problems to run. See default config for more details. + yaml_output: Optional[str], default=None + Pass a path to a yaml file to have results written to file. + verbose : Optional[bool], default=False + A flag to indicate whether to print results for each task. + use_cache : Optional[bool], default=True + Speeds up computations and saves tokens when running the same prompt multiple times by caching the LLM response. + Returns + ------- + None + """ + if use_cache: + set_llm_cache(SQLiteCache(database_path=".langchain.db")) + load_env_if_needed() + config = BenchConfig.from_toml(bench_config) + print("using config file: " + bench_config) + benchmarks = list() + benchmark_results = dict() + for specific_config_name in vars(config): + specific_config = getattr(config, specific_config_name) + if hasattr(specific_config, "active"): + if specific_config.active: + benchmarks.append(specific_config_name) + + for benchmark_name in benchmarks: + benchmark = get_benchmark(benchmark_name, config) + if len(benchmark.tasks) == 0: + print( + benchmark_name + + " was skipped, since no tasks are specified. Increase the number of tasks in the config file at: " + + bench_config + ) + continue + agent = get_agent(path_to_agent) + + results = run(agent, benchmark, verbose=verbose) + print( + f"\n--- Results for agent {path_to_agent}, benchmark: {benchmark_name} ---" + ) + print_results(results) + print() + benchmark_results[benchmark_name] = { + "detailed": [result.to_dict() for result in results] + } + if yaml_output is not None: + export_yaml_results(yaml_output, benchmark_results, config.to_dict()) + + +if __name__ == "__main__": + typer.run(main) diff --git a/backend/Agents/gpt_engineer/benchmark/bench_config.py b/backend/Agents/gpt_engineer/benchmark/bench_config.py new file mode 100644 index 000000000..a209dad82 --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/bench_config.py @@ -0,0 +1,69 @@ +from dataclasses import dataclass, field +from pathlib import Path + +from tomlkit.items import Integer + +from Agents.gpt_engineer.core.project_config import read_config + + +@dataclass +class AppsConfig: + active: bool | None = True + test_start_index: int | None = 0 + test_end_index: int | None = 1 + train_start_index: int | None = 0 + train_end_index: int | None = 0 + examples_per_problem: int | None = 10 + + +@dataclass +class MbppConfig: + active: bool | None = True + test_len: int | None = 1 + train_len: int | None = 0 + + +@dataclass +class GptmeConfig: + active: bool | None = True + + +@dataclass +class BenchConfig: + """Configuration for the GPT Engineer CLI and gptengineer.app via `gpt-engineer.toml`.""" + + apps: AppsConfig = field(default_factory=AppsConfig) + mbpp: MbppConfig = field(default_factory=MbppConfig) + gptme: GptmeConfig = field(default_factory=GptmeConfig) + + @classmethod + def from_toml(cls, config_file: Path | str): + if isinstance(config_file, str): + config_file = Path(config_file) + config_dict = read_config(config_file) + return cls.from_dict(config_dict) + + @classmethod + def from_dict(cls, config_dict: dict): + return cls( + apps=AppsConfig(**config_dict.get("apps", {})), + mbpp=MbppConfig(**config_dict.get("mbpp", {})), + gptme=GptmeConfig(**config_dict.get("gptme", {})), + ) + + @staticmethod + def recursive_resolve(data_dict): + for key, value in data_dict.items(): + if isinstance(value, Integer): + data_dict[key] = int(value) + elif isinstance(value, dict): + BenchConfig.recursive_resolve(value) + + def to_dict(self): + dict_config = { + benchmark_name: {key: val for key, val in spec_config.__dict__.items()} + for benchmark_name, spec_config in self.__dict__.items() + } + BenchConfig.recursive_resolve(dict_config) + + return dict_config diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/load.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/load.py new file mode 100644 index 000000000..3cd5f4582 --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/load.py @@ -0,0 +1,118 @@ +""" +Module for loading APPS evaluation tasks. + +This module provides functionality to load tasks for evaluating GPT-based models +on smaller, more focused tasks. It defines a set of tasks with predefined prompts +and assertions to benchmark the performance of AI models. + +Functions +--------- +load_apps : function + Loads the APPS benchmark, which consists of a series coding problems. +""" +from pathlib import Path +from subprocess import TimeoutExpired +from typing import Union + +from datasets import Dataset, DatasetDict, load_dataset, load_from_disk + +from Agents.gpt_engineer.benchmark.bench_config import AppsConfig +from Agents.gpt_engineer.benchmark.benchmarks.apps.problem import Problem +from Agents.gpt_engineer.benchmark.types import Assertable, Benchmark, Task +from Agents.gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.prompt import Prompt + +DATASET_PATH = Path(__file__).parent / "dataset" + + +class AppsAssertion: + def __init__(self, expected: str, command: str): + self.expected_output = self._format(expected) + self.command = command + + def evaluate(self, assertable: Assertable) -> bool: + # Create new execution environment for every run to avoid side effects + env = DiskExecutionEnv() + env.upload(assertable.files) + pro = env.popen(self.command) + try: + stdout, stderr = pro.communicate(timeout=2) + stdout, stderr = stdout.decode("utf-8"), stderr.decode("utf-8") + except TimeoutExpired: + print("Execution Timeout") + return False + + return self.expected_output in self._format(stdout) + + def _format(self, string: str) -> str: + return string.replace(" ", "").replace("\n", "") + + +def _get_dataset() -> Union[Dataset, DatasetDict]: + try: + return load_from_disk(str(DATASET_PATH)) + except FileNotFoundError: + print("Dataset not found locally, downloading...") + + dataset = load_dataset("codeparrot/apps", trust_remote_code=True) + dataset.save_to_disk(str(DATASET_PATH)) + + return dataset + + +def load_apps(config: AppsConfig) -> Benchmark: + """ + Loads the APPS benchmark, which consists of a series coding problems. + + Returns + ------- + Benchmark + A Benchmark object containing a list of Task objects for the APPS evaluation. + """ + dataset = _get_dataset() + tasks = [] + problems = list() + for dataset_type in ["test", "train"]: + problems += [ + Problem( + id=problem["problem_id"], + question=problem["question"], + input_output=problem["input_output"], + starter_code=problem["starter_code"], + ) + for index, problem in enumerate(dataset[dataset_type]) + if (index < config.__getattribute__(dataset_type + "_end_index")) + and (index >= config.__getattribute__(dataset_type + "_start_index")) + ] + + for problem in problems: + prompt = Prompt( + problem.question + + "\nThe program, including its inputs, should be run from the command " + "line like 'python main \"input1 input2 etc \"', with all inputs inside " + "the quotation marks. The program should not read inputs from stdin." + ) + + tasks.append( + Task( + name=str(problem.id), + initial_code=FilesDict({"main.py": problem.starter_code}), + command=None, # Explicitly setting `None` because each assertion specifies its command + prompt=prompt, + assertions={ + f"correct output {i}": AppsAssertion( + expected=problem.outputs[i], + command="python main.py" + ' "' + problem.inputs[i] + '"', + ).evaluate + for i in range( + min(len(problem.outputs), config.examples_per_problem) + ) + }, + ) + ) + + return Benchmark( + name="apps", + tasks=tasks, + ) diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problem.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problem.py new file mode 100644 index 000000000..b44567a42 --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problem.py @@ -0,0 +1,25 @@ +import json + +from dataclasses import dataclass +from functools import cached_property +from typing import List + + +@dataclass(frozen=True) +class Problem: + id: int + question: str + input_output: str + starter_code: str + + @property + def inputs(self) -> List[str]: + return self._parsed_inputs_outputs["inputs"] + + @property + def outputs(self) -> List[str]: + return self._parsed_inputs_outputs["outputs"] + + @cached_property + def _parsed_inputs_outputs(self): + return json.loads(self.input_output.replace("\n", "")) diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problems.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problems.py new file mode 100644 index 000000000..a4481104c --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/apps/problems.py @@ -0,0 +1,3 @@ +# TODO: Pick problems +# Temporary testing against these problems +PROBLEM_IDS = list(range(0, 50)) diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/gptme/load.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/gptme/load.py new file mode 100644 index 000000000..d6e82b04c --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/gptme/load.py @@ -0,0 +1,104 @@ +""" +Module for loading GPT-Me evaluation tasks. + +This module provides functionality to load tasks for evaluating GPT-based models +on smaller, more focused tasks. It defines a set of tasks with predefined prompts +and assertions to benchmark the performance of AI models. + +Functions +--------- +load_gptme : function + Loads the GPT-Me benchmark, which consists of a series of tasks for evaluation. +""" +from Agents.gpt_engineer.benchmark.bench_config import GptmeConfig +from Agents.gpt_engineer.benchmark.types import Benchmark, Task +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.prompt import Prompt + + +def load_gptme(config: GptmeConfig) -> Benchmark: + """ + Loads the GPT-Me benchmark, which consists of a series of tasks for evaluation. + + Returns + ------- + Benchmark + A Benchmark object containing a list of Task objects for the GPT-Me evaluation. + """ + return Benchmark( + name="gptme", + tasks=[ + Task( + name="hello", + initial_code=FilesDict({"hello.py": "print('Hello, world!')"}), + command="python hello.py", + prompt=Prompt("Change the code in hello.py to print 'Hello, human!'"), + assertions={ + "correct output": lambda assertable: assertable.stdout + == "Hello, human!\n", + "correct file": lambda assertable: assertable.files[ + "hello.py" + ].strip() + == "print('Hello, human!')", + }, + ), + Task( + name="hello-patch", + initial_code=FilesDict({"hello.py": "print('Hello, world!')"}), + command="python hello.py", + prompt=Prompt("Patch the code in hello.py to print 'Hello, human!'"), + assertions={ + "correct output": lambda assertable: assertable.stdout + == "Hello, human!\n", + "correct file": lambda assertable: assertable.files[ + "hello.py" + ].strip() + == "print('Hello, human!')", + }, + ), + Task( + name="hello-ask", + initial_code=FilesDict({"hello.py": "print('Hello, world!')"}), + command="echo 'Erik' | python hello.py", + prompt=Prompt( + "modify hello.py to ask the user for their name and print 'Hello, !'. don't try to execute it" + ), + assertions={ + "correct output": lambda assertable: "Hello, Erik!" + in assertable.stdout, + }, + ), + Task( + name="prime100", + initial_code=FilesDict( + {} + ), # Empty dictionary since no initial code is provided + command="python prime.py", + prompt=Prompt( + "write a script prime.py that computes and prints the 100th prime number" + ), + assertions={ + "correct output": lambda assertable: "541" + in assertable.stdout.split(), + }, + ), + Task( + name="init-git", + initial_code=FilesDict( + {} + ), # Empty dictionary since no initial code is provided + command="git status", + prompt=Prompt( + "initialize a git repository, write a main.py file, and commit it" + ), + assertions={ + "clean exit": lambda assertable: assertable.process.returncode == 0, + "clean working tree": lambda assertable: "nothing to commit, working tree clean" + in assertable.stdout, + "main.py exists": lambda assertable: "main.py" in assertable.files, + "we have a commit": lambda assertable: "No commits yet" + not in assertable.stdout, + }, + ), + ], + ) diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/load.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/load.py new file mode 100644 index 000000000..44c10c04b --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/load.py @@ -0,0 +1,48 @@ +""" +Module for loading benchmarks. + +This module provides a central point to access different benchmarks by name. +It maps benchmark names to their respective loading functions. + +Functions +--------- +get_benchmark : function + Retrieves a Benchmark object by name. Raises ValueError if the benchmark is unknown. +""" +from Agents.gpt_engineer.benchmark.bench_config import BenchConfig +from Agents.gpt_engineer.benchmark.benchmarks.apps.load import load_apps +from Agents.gpt_engineer.benchmark.benchmarks.gptme.load import load_gptme +from Agents.gpt_engineer.benchmark.benchmarks.mbpp.load import load_mbpp +from Agents.gpt_engineer.benchmark.types import Benchmark + +BENCHMARKS = { + "gptme": load_gptme, + "apps": load_apps, + "mbpp": load_mbpp, +} + + +def get_benchmark(name: str, config: BenchConfig) -> Benchmark: + """ + Retrieves a Benchmark object by name. Raises ValueError if the benchmark is unknown. + + Parameters + ---------- + name : str + The name of the benchmark to retrieve. + config : BenchConfig + Configuration object for the benchmarks. + + Returns + ------- + Benchmark + The Benchmark object corresponding to the given name. + + Raises + ------ + ValueError + If the benchmark name is not found in the BENCHMARKS mapping. + """ + if name not in BENCHMARKS: + raise ValueError(f"Unknown benchmark {name}.") + return BENCHMARKS[name](config.__getattribute__(name)) diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/load.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/load.py new file mode 100644 index 000000000..ffdab4ec7 --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/load.py @@ -0,0 +1,114 @@ +""" +Module for loading MBPP evaluation tasks. + +This module provides functionality to load tasks for evaluating GPT-based models +on smaller, more focused tasks. It defines a set of tasks with predefined prompts +and assertions to benchmark the performance of AI models. + +Functions +--------- +load_mbpp : function + Loads the MBPP benchmark, which consists of a series coding problems. +""" +from pathlib import Path +from subprocess import TimeoutExpired +from typing import Union + +from datasets import Dataset, DatasetDict, load_dataset, load_from_disk + +from Agents.gpt_engineer.benchmark.bench_config import MbppConfig +from Agents.gpt_engineer.benchmark.benchmarks.mbpp.problem import Problem +from Agents.gpt_engineer.benchmark.types import Assertable, Benchmark, Task +from Agents.gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.prompt import Prompt + +DATASET_PATH = Path(__file__).parent / "dataset" + + +class MbppAssertion: + def __init__(self, assertion: str): + self.assertion = assertion + + def evaluate(self, assertable: Assertable) -> bool: + generated_code = assertable.files["main.py"] + code_with_assertion = f"{generated_code}\n{self.assertion}" + + # Create new execution environment for every run to avoid side effects + env = DiskExecutionEnv() + env.upload(FilesDict({"main.py": code_with_assertion})) + pro = env.popen("python main.py") + + try: + stdout, stderr = pro.communicate(timeout=2) + stdout, stderr = stdout.decode("utf-8"), stderr.decode("utf-8") + except TimeoutExpired: + print("Execution Timeout") + return False + + return not stderr + + +def _get_dataset() -> Union[Dataset, DatasetDict]: + try: + return load_from_disk(str(DATASET_PATH)) + except FileNotFoundError: + print("Dataset not found locally, downloading...") + + dataset = load_dataset("mbpp", "sanitized", trust_remote_code=True) + dataset.save_to_disk(str(DATASET_PATH)) + + return dataset + + +def load_mbpp(config: MbppConfig) -> Benchmark: + """ + Loads the MBPP benchmark, which consists of a series coding problems. + + Returns + ------- + Benchmark + A Benchmark object containing a list of Task objects for the MBPP evaluation. + """ + dataset = _get_dataset() + tasks = [] + problems = [] + for dataset_type in ["test", "train"]: + problems += [ + Problem( + source_file=problem["source_file"], + task_id=problem["task_id"], + prompt=problem["prompt"], + code=problem["code"], + test_imports=problem["test_imports"], + test_list=problem["test_list"], + ) + for index, problem in enumerate(dataset[dataset_type]) + if index < config.__getattribute__(dataset_type + "_len") + ] + + for problem in problems: + prompt = Prompt( + problem.prompt + + "Please extend given function without changing it's declaration including arguments." + ) + + tasks.append( + Task( + name=str(problem.task_id), + initial_code=FilesDict({"main.py": problem.starting_code}), + command=None, # Explicitly setting `None` because each assertion runs code + prompt=prompt, + assertions={ + f"correct assertion {i}": MbppAssertion( + assertion=assertion + ).evaluate + for i, assertion in enumerate(problem.test_list) + }, + ) + ) + + return Benchmark( + name="mbpp", + tasks=tasks, + ) diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problem.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problem.py new file mode 100644 index 000000000..ca3cd0ad4 --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problem.py @@ -0,0 +1,25 @@ +from dataclasses import dataclass +from typing import List + + +@dataclass(frozen=True) +class Problem: + source_file: int + task_id: str + prompt: str + code: str + test_imports: str + test_list: List[str] + + @property + def starting_code(self) -> str: + lines: List[str] = [] + + for line in self.code.split("\n"): + lines.append(line) + + if line.startswith("def "): + lines.append("pass # TODO: Implement method\n") + break + + return "\n".join(lines) diff --git a/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problems.py b/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problems.py new file mode 100644 index 000000000..c9dffd97a --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/benchmarks/mbpp/problems.py @@ -0,0 +1,3 @@ +# TODO: Pick problems +# Temporary testing against these problems +PROBLEM_IDS = range(0, 100) diff --git a/backend/Agents/gpt_engineer/benchmark/default_bench_config.toml b/backend/Agents/gpt_engineer/benchmark/default_bench_config.toml new file mode 100644 index 000000000..50205dc70 --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/default_bench_config.toml @@ -0,0 +1,16 @@ +# For apps, the maximal range is 0:5000 for both train and test +[apps] +active = true +test_start_index = 0 +test_end_index = 2 +train_start_index = 0 +train_end_index = 2 + +# For mbpp, the maximal range is 0:47 +[mbpp] +active = true +test_len = 2 +train_len = 2 + +[gptme] +active = true diff --git a/backend/Agents/gpt_engineer/benchmark/run.py b/backend/Agents/gpt_engineer/benchmark/run.py new file mode 100644 index 000000000..de303dadd --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/run.py @@ -0,0 +1,150 @@ +""" +Module for running benchmarks. + +This module defines functions to run benchmarks using a given agent and to print +the results of the benchmark tasks. + +Functions +--------- +run : function + Runs the benchmark tasks using the provided agent and returns a list of TaskResult objects. + +print_results : function + Prints the results of the benchmark tasks to the console. +""" +import time + +from typing import List + +import yaml + +from Agents.gpt_engineer.benchmark.types import Assertable, Benchmark, TaskResult +from Agents.gpt_engineer.core.base_agent import BaseAgent +from Agents.gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv + + +def run( + agent: BaseAgent, + benchmark: Benchmark, + verbose=False, +) -> List[TaskResult]: + """ + Runs the benchmark tasks using the provided agent and returns a list of TaskResult objects. + + Parameters + ---------- + agent : BaseAgent + The agent to use for running the benchmark tasks. + benchmark : Benchmark + The benchmark containing the tasks to run. + verbose : bool, default=False + A flag to indicate whether to print verbose output during the benchmark. + + Returns + ------- + List[TaskResult] + A list of TaskResult objects representing the results of the benchmark tasks. + """ + task_results = [] + for task in benchmark.tasks: + print(f"--> Running task: {task.name}\n") + + t0 = time.time() + files_dict = agent.improve(task.initial_code, task.prompt) + t1 = time.time() + + env = DiskExecutionEnv() + env.upload(files_dict) + + if task.command: + p = env.popen(task.command) + stdout, stderr = p.communicate(benchmark.timeout) + stdout, stderr = stdout.decode("utf-8"), stderr.decode("utf-8") + else: + p, stdout, stderr = None, None, None + + exec_result = Assertable( + files=files_dict, + env=env, + process=p, + stdout=stdout, + stderr=stderr, + ) + + task_results.append( + TaskResult( + task_name=task.name, + assertion_results={ + assertion_name: assertion(exec_result) + for assertion_name, assertion in task.assertions.items() + }, + duration=t1 - t0, + ) + ) + + if verbose: + print_results(task_results) + return task_results + + +def print_results(results: list[TaskResult]): + """ + Prints the results of the benchmark tasks to the console. + + Parameters + ---------- + results : list[TaskResult] + A list of TaskResult objects representing the results of the benchmark tasks. + + Returns + ------- + None + """ + for task_result in results: + print(f"\n--- Results for {task_result.task_name} ---") + print(f"{task_result.task_name} ({task_result.duration:.2f}s)") + for assertion_name, assertion_result in task_result.assertion_results.items(): + checkmark = "✅" if assertion_result else "❌" + print(f" {checkmark} {assertion_name}") + print() + + success_rates = [task_result.success_rate for task_result in results] + avg_success_rate = sum(success_rates) / len(results) + + total_time = sum(task_result.duration for task_result in results) + + correct_assertions = sum( + sum( + assertion_result + for assertion_result in task_result.assertion_results.values() + ) + for task_result in results + ) + total_assertions = sum( + len(task_result.assertion_results) for task_result in results + ) + correct_tasks = [ + task_result for task_result in results if task_result.success_rate == 1 + ] + + print("--- Results ---") + print(f"Total time: {total_time:.2f}s") + print(f"Completely correct tasks: {len(correct_tasks)}/{len(results)}") + print(f"Total correct assertions: {correct_assertions}/{total_assertions}") + print(f"Average success rate: {avg_success_rate * 100}% on {len(results)} tasks") + print("--- Results ---") + print() + + +def export_yaml_results(yaml_path, complete_results, config): + for results in complete_results.values(): + correct_tasks = [ + task_result + for task_result in results["detailed"] + if task_result["solved"] == 1.0 + ] + fraction_correct = len(correct_tasks) / len(results["detailed"]) + results["fully_solved"] = fraction_correct + complete_results["config"] = config + with open(yaml_path, "w") as f: + yaml.dump(complete_results, f, indent=4) diff --git a/backend/Agents/gpt_engineer/benchmark/types.py b/backend/Agents/gpt_engineer/benchmark/types.py new file mode 100644 index 000000000..426cb360b --- /dev/null +++ b/backend/Agents/gpt_engineer/benchmark/types.py @@ -0,0 +1,94 @@ +""" +Module defining types used in benchmarking. + +This module contains dataclass definitions for various types used throughout the +benchmarking process, such as Assertable, Task, Benchmark, and TaskResult. + +Classes: + Assertable: + Represents an object that can be asserted against in a benchmark task. + + Assertion: + Type alias for a callable that takes an Assertable and returns a boolean. + + Task: + Represents a single task within a benchmark, including its assertions. + + Benchmark: + Represents a collection of tasks used to evaluate a model's performance. + + TaskResult: + Represents the result of running a single task within a benchmark. +""" +from dataclasses import dataclass +from subprocess import Popen +from typing import Callable, Dict, Optional + +from Agents.gpt_engineer.core.base_execution_env import BaseExecutionEnv +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.prompt import Prompt + + +@dataclass +class Assertable: + """ + A class representing an object which can be asserted against. + + Attributes: + files (FilesDict): The code files involved in the assertion. + env (BaseExecutionEnv): The execution environment in which the code is run. + process (Popen): The subprocess in which the code is run. + stdout (str): The standard output from the code execution. + stderr (str): The standard error from the code execution. + """ + + files: FilesDict + env: BaseExecutionEnv + process: Optional[Popen] + stdout: Optional[str] + stderr: Optional[str] + + +Assertion = Callable[[Assertable], bool] + + +@dataclass +class Task: + name: str + initial_code: Optional[FilesDict] + command: Optional[str] + prompt: Prompt + assertions: Optional[Dict[str, Assertion]] + + +@dataclass +class Benchmark: + """A benchmark is a collection of tasks that evaluate a model's performance.""" + + name: str + tasks: list[Task] + timeout: Optional[int] = None + + +@dataclass +class TaskResult: + task_name: str + assertion_results: dict[str, bool] + duration: float + + # Returns success rate from 0.00 up to 1.00 + @property + def success_rate(self) -> float: + if not self.assertion_results: + return 0.0 + + succeeded = len( + [result for result in self.assertion_results.values() if result is True] + ) + + return succeeded / len(self.assertion_results) + + def to_dict(self) -> dict: + out_dict = {key: value for key, value in self.__dict__.items()} + out_dict["solved"] = self.success_rate + return out_dict diff --git a/backend/Agents/gpt_engineer/core/WebSocketStreamingCallbackHandler.py b/backend/Agents/gpt_engineer/core/WebSocketStreamingCallbackHandler.py new file mode 100644 index 000000000..be71149d8 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/WebSocketStreamingCallbackHandler.py @@ -0,0 +1,97 @@ +""" +WebSocket AI Streaming Module + +This module extends the existing AI class to support real-time token streaming via WebSocket. +It includes a custom callback handler for WebSocket streaming and an enhanced AI class. +""" + +import asyncio +import json +import sys +import logging +from typing import Any, Dict, List, Optional, Union +from langchain.callbacks.base import BaseCallbackHandler +from langchain.schema import LLMResult +import websockets +from fastapi import WebSocket +from firebase_admin import App +# from modules.Chat.history.save_history_user import save_history_user +# from modules.Chat.history.save_history_system import save_history_system + +logger = logging.getLogger(__name__) + + +class WebSocketStreamingCallbackHandler(BaseCallbackHandler): + """ + Custom callback handler that streams LLM tokens to WebSocket clients in real-time. + """ + + def __init__(self, websocketactivedstream: WebSocket, session_id: str, user_email: str, appcompany: App): + super().__init__() + self.websocketactivedstream = websocketactivedstream + self.session_id = session_id + self.user_email = user_email + self.appcompany = appcompany + self.is_streaming = False + self.buffer_system = "" + + async def on_llm_start( + self, serialized: Dict[str, Any], prompts: List[str], **kwargs: Any + ) -> None: + """Called when LLM starts generating.""" + self.is_streaming = True + logger.info(f"stream_start") + await self._send_message(type="stream_start", message={ + "status": "started", + "timestamp": asyncio.get_event_loop().time() + } + ) + # save_history_user(self.session_id, self.user_email, prompts, self.appcompany) + + async def on_llm_new_token(self, token: str, **kwargs: Any) -> None: + """Called when a new token is generated.""" + if self.is_streaming: + await self._send_message(type="real_stream", message=f"{token}") + self.buffer_system += token + # sys.stdout.write(token) + # sys.stdout.flush() + + async def on_llm_end(self, response: LLMResult, **kwargs: Any) -> None: + """Called when LLM finishes generating.""" + self.is_streaming = False + await self._send_message(type="stream_end", message={ + "status": "completed", + "timestamp": asyncio.get_event_loop().time() + } + ) + logger.info(f"stream_end") + # save_history_system(self.session_id, self.user_email, self.buffer_system, self.appcompany) + # self.buffer_system = "" + + + async def on_llm_error(self, error: Union[Exception, KeyboardInterrupt], **kwargs: Any) -> None: + """Called when LLM encounters an error.""" + self.is_streaming = False + await self._send_message(type="error", message={ + "error": str(error), + "timestamp": asyncio.get_event_loop().time() + } + ) + + + async def _send_message(self, type: str, message) -> None: + """Send message to WebSocket client.""" + payload = { + "Chat Agent": { + "type": type, + "message": message + } + } + + try: + await self.websocketactivedstream.send_json(payload) + except websockets.exceptions.ConnectionClosed: + logger.warning("WebSocket connection closed during streaming") + except Exception as e: + logger.error(f"Error sending WebSocket message: {e}") + diff --git a/backend/Agents/gpt_engineer/core/__init__.py b/backend/Agents/gpt_engineer/core/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/gpt_engineer/core/ai.py b/backend/Agents/gpt_engineer/core/ai.py new file mode 100644 index 000000000..9e5b296dc --- /dev/null +++ b/backend/Agents/gpt_engineer/core/ai.py @@ -0,0 +1,472 @@ +""" +AI Module + +This module provides an AI class that interfaces with language models to perform various tasks such as +starting a conversation, advancing the conversation, and handling message serialization. It also includes +backoff strategies for handling rate limit errors from the OpenAI API. + +Classes: + AI: A class that interfaces with language models for conversation management and message serialization. + +Functions: + serialize_messages(messages: List[Message]) -> str + Serialize a list of messages to a JSON string. +""" + +from __future__ import annotations + +import json +import logging +import os +from pydantic import BaseModel, Field +from pathlib import Path +from typing import Any, List, Optional, Union + +import backoff +import openai +import pyperclip +from fastapi import WebSocket +from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler +from langchain.chat_models.base import BaseChatModel +from langchain.schema import ( + AIMessage, + HumanMessage, + SystemMessage, + messages_from_dict, + messages_to_dict, +) +from langchain_core.messages import ( + AIMessage, + AnyMessage, + BaseMessage, + BaseMessageChunk, + HumanMessage, + convert_to_messages, + convert_to_openai_image_block, + is_data_content_block, + message_chunk_to_message, +) +from langchain_anthropic import ChatAnthropic +from langchain_openai import AzureChatOpenAI, ChatOpenAI +from Agents.gpt_engineer.core.WebSocketStreamingCallbackHandler import WebSocketStreamingCallbackHandler +from Agents.gpt_engineer.core.token_usage import TokenUsageLog +from firebase_admin import App + +# Type hint for a chat message +Message = Union[AIMessage, HumanMessage, SystemMessage] + +# Set up logging +logger = logging.getLogger(__name__) + +class AI: + """ + A class that interfaces with language models for conversation management and message serialization. + + This class provides methods to start and advance conversations, handle message serialization, + and implement backoff strategies for rate limit errors when interacting with the OpenAI API. + + Attributes + ---------- + temperature : float + The temperature setting for the language model. + azure_endpoint : str + The endpoint URL for the Azure-hosted language model. + model_name : str + The name of the language model to use. + streaming : bool + A flag indicating whether to use streaming for the language model. + llm : BaseChatModel + The language model instance for conversation management. + token_usage_log : TokenUsageLog + A log for tracking token usage during conversations. + + Methods + ------- + start(system: str, user: str, step_name: str) -> List[Message] + Start the conversation with a system message and a user message. + next(messages: List[Message], prompt: Optional[str], step_name: str) -> List[Message] + Advances the conversation by sending message history to LLM and updating with the response. + backoff_inference(messages: List[Message]) -> Any + Perform inference using the language model with an exponential backoff strategy. + serialize_messages(messages: List[Message]) -> str + Serialize a list of messages to a JSON string. + deserialize_messages(jsondictstr: str) -> List[Message] + Deserialize a JSON string to a list of messages. + _create_chat_model() -> BaseChatModel + Create a chat model with the specified model name and temperature. + """ + + def __init__( + self, + model_name="gpt-4-turbo", + temperature=0.1, + azure_endpoint=None, + streaming=True, + vision=False, + ActiveWebSocket: Optional[WebSocket] = None, + session_id: Optional[str] = None, + user_email: Optional[str] = None, + appcompany: Optional[App] = None, + ): + """ + Initialize the AI class. + + Parameters + ---------- + model_name : str, optional + The name of the model to use, by default "gpt-4". + temperature : float, optional + The temperature to use for the model, by default 0.1. + """ + self.ActiveWebSocket = ActiveWebSocket + self.session_id=session_id + self.user_email=user_email + self.appcompany=appcompany + self.temperature = temperature + self.azure_endpoint = azure_endpoint + self.model_name = model_name + self.streaming = streaming + self.vision = ( + ("vision-preview" in model_name) + or ("gpt-4-turbo" in model_name and "preview" not in model_name) + or ("claude" in model_name) + ) + self.llm = self._create_chat_model() + self.llm_with_tools = self.llm.bind_tools([AutosaveTool]) + self.structured_llm = self.llm.with_structured_output(DiffOutput) + + self.token_usage_log = TokenUsageLog(model_name) + print(f"Using model {self.model_name}") + logger.debug(f"Using model {self.model_name}") + + def start(self, system: str, user: Any, *, step_name: str) -> List[Message]: + """ + Start the conversation with a system message and a user message. + + Parameters + ---------- + system : str + The content of the system message. + user : str + The content of the user message. + step_name : str + The name of the step. + + Returns + ------- + List[Message] + The list of messages in the conversation. + """ + + messages: List[Message] = [ + SystemMessage(content=system), + HumanMessage(content=user), + ] + return self.next(messages, step_name=step_name) + + def next( + self, + messages: List[Message], + prompt: Optional[str] = None, + tools: bool = False, + structured_output: bool = False, + *, + step_name: str, + ) -> List[Message]: + """ + Advances the conversation by sending message history + to LLM and updating with the response. + + Parameters + ---------- + messages : List[Message] + The list of messages in the conversation. + prompt : Optional[str], optional + The prompt to use, by default None. + step_name : str + The name of the step. + + Returns + ------- + List[Message] + The updated list of messages in the conversation. + """ + + if prompt: + messages.append(HumanMessage(content=prompt)) + + logger.debug( + "Creating a new chat completion: %s", + # "\n".join([m.pretty_repr() for m in messages]), + ) + + if not self.vision: + messages = self._collapse_text_messages(messages) + + if tools == True: + response, content = self.backoff_inference(messages, tools=True) + elif structured_output == True: + response, content = self.backoff_inference(messages, structured_output=True) + else: + response, content = self.backoff_inference(messages) + + self.token_usage_log.update_log( + messages=messages, answer=content, step_name=step_name + ) + messages.append(response) + logger.debug(f"Chat completion finished: {messages}") + + return messages + + @backoff.on_exception(backoff.expo, openai.RateLimitError, max_tries=7, max_time=45) + def backoff_inference(self, messages, tools=False, structured_output=False): + """ + Perform inference using the language model while implementing an exponential backoff strategy. + + This function will retry the inference in case of a rate limit error from the OpenAI API. + It uses an exponential backoff strategy, meaning the wait time between retries increases + exponentially. The function will attempt to retry up to 7 times within a span of 45 seconds. + + Parameters + ---------- + messages : List[Message] + A list of chat messages which will be passed to the language model for processing. + + callbacks : List[Callable] + A list of callback functions that are triggered after each inference. These functions + can be used for logging, monitoring, or other auxiliary tasks. + + Returns + ------- + Any + The output from the language model after processing the provided messages. + + Raises + ------ + openai.error.RateLimitError + If the number of retries exceeds the maximum or if the rate limit persists beyond the + allotted time, the function will ultimately raise a RateLimitError. + + Example + ------- + >>> messages = [SystemMessage(content="Hello"), HumanMessage(content="How's the weather?")] + >>> response = backoff_inference(messages) + """ + if tools == True: + tool_results = [] + response_inference = self.llm_with_tools.invoke(messages) + logger.info(f"Tool calls retornadas pelo LLM: {response_inference.tool_calls}") + for tool_call in getattr(response_inference, "tool_calls", []): + tool_name = tool_call.get("name") + args = tool_call.get("args", {}) + if tool_name == "AutosaveTool": + result = self.autosave(AutosaveTool(**args)) + logger.info(f"Resultado da tool:{result}") + tool_results.append(result) + content_str = f"Tool calls retornadas pelo LLM: {response_inference.tool_calls}\n All Response Tools: {tool_results}" + response = BaseMessage(type="ai", content=content_str) + content = response.content + return response, content + elif structured_output == True: + response_inference = self.structured_llm.invoke(messages) + diff = response_inference.diff + filename = response_inference.filename + content_str = f"{filename}\n{diff}" + response = BaseMessage(type="ai", content=content_str) + content = response.content + return response, content + else: + response = self.llm.invoke(messages) + content = response.content + return response, content + + @staticmethod + def serialize_messages(messages: List[Message]) -> str: + """ + Serialize a list of messages to a JSON string. + + Parameters + ---------- + messages : List[Message] + The list of messages to serialize. + + Returns + ------- + str + The serialized messages as a JSON string. + """ + return json.dumps(messages_to_dict(messages)) + + @staticmethod + def deserialize_messages(jsondictstr: str) -> List[Message]: + """ + Deserialize a JSON string to a list of messages. + + Parameters + ---------- + jsondictstr : str + The JSON string to deserialize. + + Returns + ------- + List[Message] + The deserialized list of messages. + """ + data = json.loads(jsondictstr) + # Modify implicit is_chunk property to ALWAYS false + # since Langchain's Message schema is stricter + prevalidated_data = [ + {**item, "tools": {**item.get("tools", {}), "is_chunk": False}} + for item in data + ] + return list(messages_from_dict(prevalidated_data)) # type: ignore + + def _create_chat_model(self) -> BaseChatModel: + """ + Create a chat model with the specified model name and temperature. + + Parameters + ---------- + model : str + The name of the model to create. + temperature : float + The temperature to use for the model. + + Returns + ------- + BaseChatModel + The created chat model. + """ + if self.ActiveWebSocket == None: + callhandler_ = StreamingStdOutCallbackHandler() + else: + callhandler_ = WebSocketStreamingCallbackHandler( + websocketactivedstream=self.ActiveWebSocket, + session_id=self.session_id, + user_email=self.user_email, + appcompany=self.appcompany + + ) + + + + if self.azure_endpoint: + return AzureChatOpenAI( + azure_endpoint=self.azure_endpoint, + openai_api_version=os.getenv( + "OPENAI_API_VERSION", "2024-05-01-preview" + ), + deployment_name=self.model_name, + openai_api_type="azure", + streaming=self.streaming, + callbacks=[callhandler_], + ) + elif "claude" in self.model_name: + return ChatAnthropic( + model=self.model_name, + temperature=self.temperature, + callbacks=[callhandler_], + streaming=self.streaming, + max_tokens_to_sample=4096, + ) + elif self.vision: + return ChatOpenAI( + model=self.model_name, + temperature=self.temperature, + streaming=self.streaming, + callbacks=[callhandler_], + max_tokens=4096, # vision models default to low max token limits + ) + else: + return ChatOpenAI( + model=self.model_name, + temperature=self.temperature, + streaming=self.streaming, + callbacks=[callhandler_], + ) + + def autosave(self, data: AutosaveTool) -> dict: + """Função que salva o código, chamada pela tool do LLM""" + try: + os.makedirs(os.path.dirname(data.path), exist_ok=True) + with open(data.path, 'w', encoding='utf-8') as f: + f.write(data.code) + logger.info(f"Arquivo salvo com sucesso: {data.path}") + return {"status": "success", "file_path": data.path} + except Exception as e: + logger.error(f"Erro ao salvar arquivo {data.path}: {e}") + return {"status": "error", "message": str(e)} + + def _extract_content(self, content): + """ + Extracts text content from a message, supporting both string and list types. + Parameters + ---------- + content : Union[str, List[dict]] + The content of a message, which could be a string or a list. + Returns + ------- + str + The extracted text content. + """ + if isinstance(content, str): + return content + elif isinstance(content, list) and content and "text" in content[0]: + # Assuming the structure of list content is [{'type': 'text', 'text': 'Some text'}, ...] + return content[0]["text"] + else: + return "" + + def _collapse_text_messages(self, messages: List[Message]): + """ + Combine consecutive messages of the same type into a single message, where if the message content + is a list type, the first text element's content is taken. This method keeps `combined_content` as a string. + + This method iterates through the list of messages, combining consecutive messages of the same type + by joining their content with a newline character. If the content is a list, it extracts text from the first + text element's content. This reduces the number of messages and simplifies the conversation for processing. + + Parameters + ---------- + messages : List[Message] + The list of messages to collapse. + + Returns + ------- + List[Message] + The list of messages after collapsing consecutive messages of the same type. + """ + collapsed_messages = [] + if not messages: + return collapsed_messages + + previous_message = messages[0] + combined_content = self._extract_content(previous_message.content) + + for current_message in messages[1:]: + if current_message.type == previous_message.type: + combined_content += "\n\n" + self._extract_content( + current_message.content + ) + else: + collapsed_messages.append( + previous_message.__class__(content=combined_content) + ) + previous_message = current_message + combined_content = self._extract_content(current_message.content) + + collapsed_messages.append(previous_message.__class__(content=combined_content)) + return collapsed_messages + +class AutosaveTool(BaseModel): + """Tool para salvar código Python em arquivo""" + code: str = Field(..., description="Código Python a ser salvo") + path: str = Field(..., description="Caminho completo do arquivo onde o código será salvo") + +class DiffOutput(BaseModel): + filename: str + diff: str + + +def serialize_messages(messages: List[Message]) -> str: + return AI.serialize_messages(messages) diff --git a/backend/Agents/gpt_engineer/core/base_agent.py b/backend/Agents/gpt_engineer/core/base_agent.py new file mode 100644 index 000000000..24e31ae2e --- /dev/null +++ b/backend/Agents/gpt_engineer/core/base_agent.py @@ -0,0 +1,31 @@ +""" +Base Agent Module + +This module provides an abstract base class for an agent that interacts with code. It defines the interface +for agents capable of initializing and improving code based on a given prompt. Implementations of this class +are expected to provide concrete methods for these actions. + +Classes: + BaseAgent: Abstract base class for an agent that interacts with code. +""" +from abc import ABC, abstractmethod + +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.prompt import Prompt + + +class BaseAgent(ABC): + """ + Abstract base class for an agent that interacts with code. + + Defines the interface for agents capable of initializing and improving code based on a given prompt. + Implementations of this class are expected to provide concrete methods for these actions. + """ + + @abstractmethod + def init(self, prompt: Prompt) -> FilesDict: + pass + + @abstractmethod + def improve(self, files_dict: FilesDict, prompt: Prompt) -> FilesDict: + pass diff --git a/backend/Agents/gpt_engineer/core/base_execution_env.py b/backend/Agents/gpt_engineer/core/base_execution_env.py new file mode 100644 index 000000000..6c43fe38c --- /dev/null +++ b/backend/Agents/gpt_engineer/core/base_execution_env.py @@ -0,0 +1,42 @@ +from abc import ABC, abstractmethod +from subprocess import Popen +from typing import Optional, Tuple + +from Agents.gpt_engineer.core.files_dict import FilesDict + + +class BaseExecutionEnv(ABC): + """ + Abstract base class for an execution environment capable of running code. + + This class defines the interface for execution environments that can execute commands, + handle processes, and manage file uploads and downloads. + """ + + @abstractmethod + def run(self, command: str, timeout: Optional[int] = None) -> Tuple[str, str, int]: + """ + Runs a command in the execution environment. + """ + raise NotImplementedError + + @abstractmethod + def popen(self, command: str) -> Popen: + """ + Runs a command in the execution environment. + """ + raise NotImplementedError + + @abstractmethod + def upload(self, files: FilesDict) -> "BaseExecutionEnv": + """ + Uploads files to the execution environment. + """ + raise NotImplementedError + + @abstractmethod + def download(self) -> FilesDict: + """ + Downloads files from the execution environment. + """ + raise NotImplementedError diff --git a/backend/Agents/gpt_engineer/core/base_memory.py b/backend/Agents/gpt_engineer/core/base_memory.py new file mode 100644 index 000000000..a491ae0aa --- /dev/null +++ b/backend/Agents/gpt_engineer/core/base_memory.py @@ -0,0 +1,15 @@ +""" +Base Memory Module + +This module provides a type alias for a mutable mapping that represents the base memory structure +used in the GPT Engineer project. The base memory is a mapping from file names (as strings or Path objects) +to their corresponding code content (as strings). + +Type Aliases: + BaseMemory: A mutable mapping from file names to code content. +""" + +from pathlib import Path +from typing import MutableMapping, Union + +BaseMemory = MutableMapping[Union[str, Path], str] diff --git a/backend/Agents/gpt_engineer/core/chat_to_files.py b/backend/Agents/gpt_engineer/core/chat_to_files.py new file mode 100644 index 000000000..7d2c23d8b --- /dev/null +++ b/backend/Agents/gpt_engineer/core/chat_to_files.py @@ -0,0 +1,312 @@ +""" +This Python script provides functionalities for parsing chat transcripts that contain file paths and code blocks, +applying diffs to these files, and parsing unified git diff format strings. The script is designed to work within +a larger system that involves processing and manipulating code files based on chat inputs and diff information. + +Key Components: +- chat_to_files_dict: Parses a chat transcript, extracting file paths and associated code blocks, and organizes + them into a FilesDict object, which is a custom dictionary format designed to hold file contents keyed by their paths. + +- apply_diffs: Takes a dictionary of Diff objects (which represent changes to be made to files) and a FilesDict + object containing the current state of files. It applies the changes described by the Diff objects to the + corresponding files in the FilesDict, updating the file contents as specified by the diffs. + +- parse_diffs: Parses a string containing diffs in the unified git diff format, extracting the changes described + in the diffs and organizing them into a dictionary of Diff objects, keyed by the filename to which each diff applies. + +- parse_diff_block: Parses a single block of text from a diff string, translating it into a Diff object that + represents the changes described in that block of text. + +This script is intended for use in environments where code collaboration or review is conducted through chat interfaces, +allowing for the dynamic application of changes to code bases and the efficient handling of file and diff information in chat transcripts. +""" + +import logging +import re + +from typing import Dict, Tuple + +from regex import regex +import tempfile +from pathlib import Path +from Agents.gpt_engineer.core.diff import ADD, REMOVE, RETAIN, Diff, Hunk +from Agents.gpt_engineer.core.diffprocessor import DiffProcessor +from Agents.gpt_engineer.core.files_dict import FilesDict, file_to_lines_dict + + + +# Initialize a logger for this module +logger = logging.getLogger(__name__) + +def chat_to_files_dict(chat: str) -> FilesDict: + """ + Converts a chat string containing file paths and code blocks into a FilesDict object. + """ + + # REGEX COMBINADO: + # 1. Estrutura Antiga: (\S+)\n\s*```[^\n]*\n(.+?)``` (Grupos 1 e 2) + # 2. Estrutura ####: ####\s*`([^`]+)`\n\s*```[^\n]*\n(.+?)``` (Grupos 3 e 4) + # 3. Estrutura ##: ##\s*\d*\.?\s*([^ \n]+)\n\s*```[^\n]*\n(.+?)``` (Grupos 5 e 6) + # 4. Estrutura File: File:\s*([^ \n]+)\n\s*```[^\n]*\n(.+?)``` (Grupos 7 e 8) + + # Usamos grupos de não-captura (?:...) para agrupar as quatro estruturas. + regex = ( + r"(?:(\S+)\n\s*```[^\n]*\n(.+?)```)|" # Padrão 1 (Grupos 1 e 2) + r"(?:####\s*`([^`]+)`\n\s*```[^\n]*\n(.+?)```)|" # Padrão 2 (Grupos 3 e 4) + r"(?:##\s*\d*\.?\s*([^ \n]+)\n\s*```[^\n]*\n(.+?)```)|" # Padrão 3 (Grupos 5 e 6) + r"(?:File:\s*([^ \n]+)\n\s*```[^\n]*\n(.+?)```)" # Padrão 4 (Grupos 7 e 8) + ) + + # Agora temos 8 grupos de captura no total. + matches = re.finditer(regex, chat, re.DOTALL) + + files_dict = FilesDict() + for match in matches: + + # Lógica para encontrar o caminho (path) e o conteúdo (content) corretos + # path será o primeiro grupo não-nulo entre G1, G3, G5, G7 + # content será o primeiro grupo não-nulo entre G2, G4, G6, G8 + + # Encontra o Caminho (Path) - (Grupos 1, 3, 5, 7) + path = ( + match.group(1) or + match.group(3) or + match.group(5) or + match.group(7) + ) + + # Encontra o Conteúdo (Content) - (Grupos 2, 4, 6, 8) + content = ( + match.group(2) or + match.group(4) or + match.group(6) or + match.group(8) + ) + + if not path or not content: + continue # Pula se algo deu errado na extração + + # Clean and standardize the file path + # O código de limpeza é robusto o suficiente para funcionar com o novo padrão: + # Ele remove os caracteres inválidos e trata crases e colchetes. + path = re.sub(r'[\:<>"|?*]', "", path) + path = re.sub(r"^\[(.*)\]$", r"\1", path) + path = re.sub(r"^`(.*)`$", r"\1", path) + path = re.sub(r"[\]\:]$", "", path) + + # Add the cleaned path and content to the FilesDict + files_dict[path.strip()] = content.strip() + + return files_dict + +def apply_diffs(diffs, files_dict, repo_path="."): + """ + Aplica todos os diffs encontrados usando o DiffProcessor. + Cada diff é salvo temporariamente e aplicado via `git apply --3way`. + """ + applied = [] + failed = [] + + for filename, diff_obj in diffs.items(): + try: + # Salva o conteúdo do diff num arquivo temporário + with tempfile.NamedTemporaryFile("w+", suffix=".diff", delete=False) as tmp: + tmp.write(diff_obj.diff_to_string()) + tmp_path = Path(tmp.name) + + dp = DiffProcessor(tmp_path) + dp.parse() + dp.validate() + dp.apply(repo_path) + + applied.append(filename) + tmp_path.unlink(missing_ok=True) + + except Exception as e: + failed.append(f"{filename}: {e}") + logger.error(f"❌ Falha ao aplicar diff em {filename}: {e}") + + if failed: + logger.warning(f"⚠️ Alguns diffs falharam:\n" + "\n".join(failed)) + else: + logger.info("✅ Todos os diffs foram aplicados com sucesso.") + + return files_dict # mantido para compatibilidade + +# def apply_diffs(diffs: Dict[str, Diff], files: FilesDict) -> FilesDict: +# """ +# Applies diffs to the provided files. + +# Args: +# - diffs (Dict[str, Diff]): A dictionary of diffs to apply, keyed by filename. +# - files (FilesDict): The original files to which diffs will be applied. + +# Returns: +# - FilesDict: The updated files after applying diffs. +# """ +# files = FilesDict(files.copy()) +# REMOVE_FLAG = "" # Placeholder to mark lines for removal +# for diff in diffs.values(): +# if diff.is_new_file(): +# # If it's a new file, create it with the content from the diff +# files[diff.filename_post] = "\n".join( +# line[1] for hunk in diff.hunks for line in hunk.lines +# ) +# else: +# # Convert the file content to a dictionary of lines +# line_dict = file_to_lines_dict(files[diff.filename_pre]) +# for hunk in diff.hunks: +# current_line = hunk.start_line_pre_edit +# for line in hunk.lines: +# if line[0] == RETAIN: +# current_line += 1 +# elif line[0] == ADD: +# # Handle added lines +# current_line -= 1 +# if ( +# current_line in line_dict.keys() +# and line_dict[current_line] != REMOVE_FLAG +# ): +# line_dict[current_line] += "\n" + line[1] +# else: +# line_dict[current_line] = line[1] +# current_line += 1 +# elif line[0] == REMOVE: +# # Mark removed lines with REMOVE_FLAG +# line_dict[current_line] = REMOVE_FLAG +# current_line += 1 + +# # Remove lines marked for removal +# line_dict = { +# key: line_content +# for key, line_content in line_dict.items() +# if REMOVE_FLAG not in line_content +# } +# # Reassemble the file content +# files[diff.filename_post] = "\n".join(line_dict.values()) +# return files + + +def parse_diffs(diff_string: str, diff_timeout=3) -> dict: + """ + Parses a diff string in the unified git diff format. + + Args: + - diff_string (str): The diff string to parse. + + Returns: + - dict: A dictionary of Diff objects keyed by filename. + """ + # Regex to match individual diff blocks + diff_block_pattern = regex.compile( + r"```.*?\n\s*?--- .*?\n\s*?\+\+\+ .*?\n(?:@@ .*? @@\n(?:[-+ ].*?\n)*?)*?```", + re.DOTALL, + ) + + diffs = {} + try: + for block in diff_block_pattern.finditer(diff_string, timeout=diff_timeout): + diff_block = block.group() + + # Parse individual diff blocks and update the diffs dictionary + diff = parse_diff_block(diff_block) + for filename, diff_obj in diff.items(): + if filename not in diffs: + diffs[filename] = diff_obj + else: + print( + f"\nMultiple diffs found for {filename}. Only the first one is kept." + ) + except TimeoutError: + print("gpt-engineer timed out while parsing git diff") + + if not diffs: + print( + "GPT did not provide any proposed changes. Please try to reselect the files for uploading and edit your prompt file." + ) + + return diffs + + +def parse_diff_block(diff_block: str) -> dict: + """ + Parses a block of diff text into a Diff object. + + Args: + - diff_block (str): A single block of diff text. + + Returns: + - dict: A dictionary containing a single Diff object keyed by the post-edit filename. + """ + lines = diff_block.strip().split("\n")[1:-1] # Exclude the opening and closing ``` + diffs = {} + current_diff = None + hunk_lines = [] + filename_pre = None + filename_post = None + hunk_header = None + + for line in lines: + if line.startswith("--- "): + # Pre-edit filename + filename_pre = line[4:] + elif line.startswith("+++ "): + # Post-edit filename and initiation of a new Diff object + if ( + filename_post is not None + and current_diff is not None + and hunk_header is not None + ): + current_diff.hunks.append(Hunk(*hunk_header, hunk_lines)) + hunk_lines = [] + filename_post = line[4:] + current_diff = Diff(filename_pre, filename_post) + diffs[filename_post] = current_diff + elif line.startswith("@@ "): + # Start of a new hunk in the diff + if hunk_lines and current_diff is not None and hunk_header is not None: + current_diff.hunks.append(Hunk(*hunk_header, hunk_lines)) + hunk_lines = [] + hunk_header = parse_hunk_header(line) + elif line.startswith("+"): + # Added line + hunk_lines.append((ADD, line[1:])) + elif line.startswith("-"): + # Removed line + hunk_lines.append((REMOVE, line[1:])) + else: + # Retained line + hunk_lines.append((RETAIN, line[1:])) + + # Append the last hunk if any + if current_diff is not None and hunk_lines and hunk_header is not None: + current_diff.hunks.append(Hunk(*hunk_header, hunk_lines)) + + return diffs + + +def parse_hunk_header(header_line) -> Tuple[int, int, int, int]: + """ + Parses the header of a hunk from a diff. + + Args: + - header_line (str): The header line of a hunk. + + Returns: + - tuple: A tuple containing start and length information for pre- and post-edit. + """ + pattern = re.compile(r"^@@ -\d{1,},\d{1,} \+\d{1,},\d{1,} @@$") + + if not pattern.match(header_line): + # Return a default value if the header does not match the expected format + return 0, 0, 0, 0 + + pre, post = header_line.split(" ")[1:3] + start_line_pre_edit, hunk_len_pre_edit = map(int, pre[1:].split(",")) + start_line_post_edit, hunk_len_post_edit = map(int, post[1:].split(",")) + return ( + start_line_pre_edit, + hunk_len_pre_edit, + start_line_post_edit, + hunk_len_post_edit, + ) diff --git a/backend/Agents/gpt_engineer/core/default/__init__.py b/backend/Agents/gpt_engineer/core/default/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/gpt_engineer/core/default/constants.py b/backend/Agents/gpt_engineer/core/default/constants.py new file mode 100644 index 000000000..9eddadd97 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/default/constants.py @@ -0,0 +1,12 @@ +""" +Module defining constants used throughout the application. + +This module contains definitions of constants that are used across various +components of the application to maintain consistency and ease of configuration. + +Constants +--------- +MAX_EDIT_REFINEMENT_STEPS : int + The maximum number of refinement steps allowed when generating edit blocks. +""" +MAX_EDIT_REFINEMENT_STEPS = 1 diff --git a/backend/Agents/gpt_engineer/core/default/disk_execution_env.py b/backend/Agents/gpt_engineer/core/default/disk_execution_env.py new file mode 100644 index 000000000..57d5a9637 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/default/disk_execution_env.py @@ -0,0 +1,111 @@ +""" +Module for managing the execution environment on the local disk. + +This module provides a class that handles the execution of code stored on the local +file system. It includes methods for uploading files to the execution environment, +running commands, and capturing the output. + +Classes +------- +DiskExecutionEnv + An execution environment that runs code on the local file system and captures + the output of the execution. + +Imports +------- +- subprocess: For running shell commands. +- time: For timing the execution of commands. +- Path: For handling file system paths. +- Optional, Tuple, Union: For type annotations. +- BaseExecutionEnv: For inheriting the base execution environment interface. +- FileStore: For managing file storage. +- FilesDict: For handling collections of files. +""" + +import subprocess +import time + +from pathlib import Path +from typing import Optional, Tuple, Union + +from Agents.gpt_engineer.core.base_execution_env import BaseExecutionEnv +from Agents.gpt_engineer.core.default.file_store import FileStore +from Agents.gpt_engineer.core.files_dict import FilesDict + + +class DiskExecutionEnv(BaseExecutionEnv): + """ + An execution environment that runs code on the local file system and captures + the output of the execution. + + This class is responsible for executing code that is stored on disk. It ensures that + the necessary entrypoint file exists and then runs the code using a subprocess. If the + execution is interrupted by the user, it handles the interruption gracefully. + + Attributes + ---------- + store : FileStore + An instance of FileStore that manages the storage of files in the execution + environment. + """ + + def __init__(self, path: Union[str, Path, None] = None): + self.files = FileStore(path) + + def upload(self, files: FilesDict) -> "DiskExecutionEnv": + self.files.push(files) + return self + + def download(self) -> FilesDict: + return self.files.pull() + + def popen(self, command: str) -> subprocess.Popen: + p = subprocess.Popen( + command, + shell=True, + cwd=self.files.working_dir, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + return p + + def run(self, command: str, timeout: Optional[int] = None) -> Tuple[str, str, int]: + start = time.time() + print("\n--- Start of run ---") + # while running, also print the stdout and stderr + p = subprocess.Popen( + command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + cwd=self.files.working_dir, + text=True, + shell=True, + ) + print("$", command) + stdout_full, stderr_full = "", "" + + try: + while p.poll() is None: + assert p.stdout is not None + assert p.stderr is not None + stdout = p.stdout.readline() + stderr = p.stderr.readline() + if stdout: + print(stdout, end="") + stdout_full += stdout + if stderr: + print(stderr, end="") + stderr_full += stderr + if timeout and time.time() - start > timeout: + print("Timeout!") + p.kill() + raise TimeoutError() + except KeyboardInterrupt: + print() + print("Stopping execution.") + print("Execution stopped.") + p.kill() + print() + print("--- Finished run ---\n") + + return stdout_full, stderr_full, p.returncode diff --git a/backend/Agents/gpt_engineer/core/default/disk_memory.py b/backend/Agents/gpt_engineer/core/default/disk_memory.py new file mode 100644 index 000000000..b691420ae --- /dev/null +++ b/backend/Agents/gpt_engineer/core/default/disk_memory.py @@ -0,0 +1,326 @@ +""" +Disk Memory Module +================== + +This module provides a simple file-based key-value database system, where keys are +represented as filenames and values are the contents of these files. The `DiskMemory` class +is responsible for the CRUD operations on the database. + +Attributes +---------- +None + +Functions +--------- +None + +Classes +------- +DiskMemory + A file-based key-value store where keys correspond to filenames and values to file contents. +""" + +import base64 +import json +import shutil + +from datetime import datetime +from pathlib import Path +from typing import Any, Dict, Iterator, Optional, Union + +from Agents.gpt_engineer.core.base_memory import BaseMemory +from Agents.gpt_engineer.tools.supported_languages import SUPPORTED_LANGUAGES + + +# This class represents a simple database that stores its tools as files in a directory. +class DiskMemory(BaseMemory): + """ + A file-based key-value store where keys correspond to filenames and values to file contents. + + This class provides an interface to a file-based database, leveraging file operations to + facilitate CRUD-like interactions. It allows for quick checks on the existence of keys, + retrieval of values based on keys, and setting new key-value pairs. + + Attributes + ---------- + path : Path + The directory path where the database files are stored. + """ + + def __init__(self, path: Union[str, Path]): + """ + Initialize the DiskMemory class with a specified path. + + Parameters + ---------- + path : str or Path + The path to the directory where the database files will be stored. + + """ + self.path: Path = Path(path).absolute() + + self.path.mkdir(parents=True, exist_ok=True) + + def __contains__(self, key: str) -> bool: + """ + Determine whether the database contains a file with the specified key. + + Parameters + ---------- + key : str + The key (filename) to check for existence in the database. + + Returns + ------- + bool + Returns True if the file exists, False otherwise. + + """ + return (self.path / key).is_file() + + def __getitem__(self, key: str) -> str: + """ + Retrieve the content of a file in the database corresponding to the given key. + If the file is an image with a .png or .jpeg extension, it returns the content + in Base64-encoded string format. + + Parameters + ---------- + key : str + The key (filename) whose content is to be retrieved. + + Returns + ------- + str + The content of the file associated with the key, or Base64-encoded string if it's a .png or .jpeg file. + + Raises + ------ + KeyError + If the file corresponding to the key does not exist in the database. + """ + full_path = self.path / key + + if not full_path.is_file(): + raise KeyError(f"File '{key}' could not be found in '{self.path}'") + + if full_path.suffix in [".png", ".jpeg", ".jpg"]: + with full_path.open("rb") as image_file: + encoded_string = base64.b64encode(image_file.read()).decode("utf-8") + mime_type = "image/png" if full_path.suffix == ".png" else "image/jpeg" + return f"data:{mime_type};base64,{encoded_string}" + else: + with full_path.open("r", encoding="utf-8") as f: + return f.read() + + def get(self, key: str, default: Optional[Any] = None) -> Any: + """ + Retrieve the content of a file in the database, or return a default value if not found. + + Parameters + ---------- + key : str + The key (filename) whose content is to be retrieved. + default : Any, optional + The default value to return if the file does not exist. Default is None. + + Returns + ------- + Any + The content of the file if it exists, a new DiskMemory instance if the key corresponds to a directory. + """ + + item_path = self.path / key + try: + if item_path.is_file(): + return self[key] + elif item_path.is_dir(): + return DiskMemory(item_path) + else: + return default + except: + return default + + def __setitem__(self, key: Union[str, Path], val: str) -> None: + """ + Set or update the content of a file in the database corresponding to the given key. + + Parameters + ---------- + key : str or Path + The key (filename) where the content is to be set. + val : str + The content to be written to the file. + + Raises + ------ + ValueError + If the key attempts to access a parent path. + TypeError + If the value is not a string. + + """ + if str(key).startswith("../"): + raise ValueError(f"File name {key} attempted to access parent path.") + + if not isinstance(val, str): + raise TypeError("val must be str") + + full_path = self.path / key + full_path.parent.mkdir(parents=True, exist_ok=True) + + full_path.write_text(val, encoding="utf-8") + + def __delitem__(self, key: Union[str, Path]) -> None: + """ + Delete a file or directory from the database corresponding to the given key. + + Parameters + ---------- + key : str or Path + The key (filename or directory name) to be deleted. + + Raises + ------ + KeyError + If the file or directory corresponding to the key does not exist in the database. + + """ + item_path = self.path / key + if not item_path.exists(): + raise KeyError(f"Item '{key}' could not be found in '{self.path}'") + + if item_path.is_file(): + item_path.unlink() + elif item_path.is_dir(): + shutil.rmtree(item_path) + + def __iter__(self) -> Iterator[str]: + """ + Iterate over the keys (filenames) in the database. + + Yields + ------ + Iterator[str] + An iterator over the sorted list of keys (filenames) in the database. + + """ + return iter( + sorted( + str(item.relative_to(self.path)) + for item in sorted(self.path.rglob("*")) + if item.is_file() + ) + ) + + def __len__(self) -> int: + """ + Get the number of files in the database. + + Returns + ------- + int + The number of files in the database. + + """ + return len(list(self.__iter__())) + + def _supported_files(self) -> str: + valid_extensions = { + ext for lang in SUPPORTED_LANGUAGES for ext in lang["extensions"] + } + file_paths = [ + str(item) + for item in self + if Path(item).is_file() and Path(item).suffix in valid_extensions + ] + return "\n".join(file_paths) + + def _all_files(self) -> str: + file_paths = [str(item) for item in self if Path(item).is_file()] + return "\n".join(file_paths) + + def to_path_list_string(self, supported_code_files_only: bool = False) -> str: + """ + Generate a string representation of the file paths in the database. + + Parameters + ---------- + supported_code_files_only : bool, optional + If True, filter the list to include only supported code file extensions. + Default is False. + + Returns + ------- + str + A newline-separated string of file paths. + + """ + if supported_code_files_only: + return self._supported_files() + else: + return self._all_files() + + def to_dict(self) -> Dict[Union[str, Path], str]: + """ + Convert the database contents to a dictionary. + + Returns + ------- + Dict[Union[str, Path], str] + A dictionary with keys as filenames and values as file contents. + + """ + return {file_path: self[file_path] for file_path in self} + + def to_json(self) -> str: + """ + Serialize the database contents to a JSON string. + + Returns + ------- + str + A JSON string representation of the database contents. + + """ + return json.dumps(self.to_dict()) + + def log(self, key: Union[str, Path], val: str) -> None: + """ + Append to a file or create and write to it if it doesn't exist. + + Parameters + ---------- + key : str or Path + The key (filename) where the content is to be appended. + val : str + The content to be appended to the file. + + """ + + if str(key).startswith("../"): + raise ValueError(f"File name {key} attempted to access parent path.") + + if not isinstance(val, str): + raise TypeError("val must be str") + + full_path = self.path / "logs" / key + full_path.parent.mkdir(parents=True, exist_ok=True) + + # Touch if it doesnt exist + if not full_path.exists(): + full_path.touch() + + with open(full_path, "a", encoding="utf-8") as file: + file.write(f"\n{datetime.now().isoformat()}\n") + file.write(val + "\n") + + def archive_logs(self): + """ + Moves all logs to archive directory based on current timestamp + """ + if "logs" in self: + archive_dir = ( + self.path / f"logs_{datetime.now().strftime('%Y-%m-%d-%H-%M-%S')}" + ) + shutil.move(self.path / "logs", archive_dir) diff --git a/backend/Agents/gpt_engineer/core/default/file_store.py b/backend/Agents/gpt_engineer/core/default/file_store.py new file mode 100644 index 000000000..0bf483287 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/default/file_store.py @@ -0,0 +1,62 @@ +import tempfile + +from pathlib import Path +from typing import Union + +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.linting import Linting + + +class FileStore: + """ + Module for managing file storage in a temporary directory. + + This module provides a class that manages the storage of files in a temporary directory. + It includes methods for uploading files to the directory and downloading them as a + collection of files. + + Classes + ------- + FileStore + Manages file storage in a temporary directory, allowing for upload and download of files. + + Imports + ------- + - tempfile: For creating temporary directories. + - Path: For handling file system paths. + - Union: For type annotations. + - FilesDict: For handling collections of files. + """ + + def __init__(self, path: Union[str, Path, None] = None): + if path is None: + path = Path(tempfile.mkdtemp(prefix="gpt-engineer-")) + + self.working_dir = Path(path) + self.working_dir.mkdir(parents=True, exist_ok=True) + self.id = self.working_dir.name.split("-")[-1] + + def push(self, files: FilesDict): + for name, content in files.items(): + path = self.working_dir / name + path.parent.mkdir(parents=True, exist_ok=True) + with open(path, "w") as f: + f.write(content) + return self + + def linting(self, files: FilesDict) -> FilesDict: + # lint the code + linting = Linting() + return linting.lint_files(files) + + def pull(self) -> FilesDict: + files = {} + for path in self.working_dir.glob("**/*"): + if path.is_file(): + with open(path, "r") as f: + try: + content = f.read() + except UnicodeDecodeError: + content = "binary file" + files[str(path.relative_to(self.working_dir))] = content + return FilesDict(files) diff --git a/backend/Agents/gpt_engineer/core/default/paths.py b/backend/Agents/gpt_engineer/core/default/paths.py new file mode 100644 index 000000000..748659e5f --- /dev/null +++ b/backend/Agents/gpt_engineer/core/default/paths.py @@ -0,0 +1,86 @@ +""" +Module defining file system paths used by the application. + +This module contains definitions of file system paths that are used throughout the +application to locate and manage various files and directories, such as logs, memory, +and preprompts. + +Constants +--------- +META_DATA_REL_PATH : str + The relative path to the directory where metadata is stored. + +MEMORY_REL_PATH : str + The relative path to the directory where memory-related files are stored. + +CODE_GEN_LOG_FILE : str + The filename for the log file that contains all output from code generation. + +DEBUG_LOG_FILE : str + The filename for the log file that contains debug information. + +ENTRYPOINT_FILE : str + The filename for the entrypoint script that is executed to run the application. + +ENTRYPOINT_LOG_FILE : str + The filename for the log file that contains the chat related to entrypoint generation. + +PREPROMPTS_PATH : Path + The file system path to the directory containing preprompt files. + +Functions +--------- +memory_path : function + Constructs the full path to the memory directory based on a given base path. + +metadata_path : function + Constructs the full path to the metadata directory based on a given base path. +""" +import os + +from pathlib import Path + +META_DATA_REL_PATH = ".gpteng" +MEMORY_REL_PATH = os.path.join(META_DATA_REL_PATH, "memory") +CODE_GEN_LOG_FILE = "all_output.txt" +IMPROVE_LOG_FILE = "improve.txt" +DIFF_LOG_FILE = "diff_errors.txt" +DEBUG_LOG_FILE = "debug_log_file.txt" +ENTRYPOINT_FILE = "run.sh" +ENTRYPOINT_LOG_FILE = "gen_entrypoint_chat.txt" +PREPROMPTS_PATH = Path(__file__).parent.parent.parent / "preprompts" + + + +def memory_path(path): + """ + Constructs the full path to the memory directory based on a given base path. + + Parameters + ---------- + path : str + The base path to append the memory directory to. + + Returns + ------- + str + The full path to the memory directory. + """ + return os.path.join(path, MEMORY_REL_PATH) + + +def metadata_path(path): + """ + Constructs the full path to the metadata directory based on a given base path. + + Parameters + ---------- + path : str + The base path to append the metadata directory to. + + Returns + ------- + str + The full path to the metadata directory. + """ + return os.path.join(path, META_DATA_REL_PATH) diff --git a/backend/Agents/gpt_engineer/core/default/simple_agent.py b/backend/Agents/gpt_engineer/core/default/simple_agent.py new file mode 100644 index 000000000..87e54bd73 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/default/simple_agent.py @@ -0,0 +1,100 @@ +""" +Module for defining a simple agent that uses AI to manage code generation and improvement. + +This module provides a class that represents an agent capable of initializing and improving +a codebase using AI. It handles interactions with the AI model, memory, and execution +environment to generate and refine code based on user prompts. + +""" + +import tempfile + +from typing import Optional + +from Agents.gpt_engineer.core.ai import AI +from Agents.gpt_engineer.core.base_agent import BaseAgent +from Agents.gpt_engineer.core.base_execution_env import BaseExecutionEnv +from Agents.gpt_engineer.core.base_memory import BaseMemory +from Agents.gpt_engineer.core.default.disk_execution_env import DiskExecutionEnv +from Agents.gpt_engineer.core.default.disk_memory import DiskMemory +from Agents.gpt_engineer.core.default.paths import PREPROMPTS_PATH, memory_path +from Agents.gpt_engineer.core.default.steps import gen_code, gen_entrypoint, improve_fn +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.preprompts_holder import PrepromptsHolder +from Agents.gpt_engineer.core.prompt import Prompt + + +class SimpleAgent(BaseAgent): + """ + An agent that uses AI to generate and improve code based on a given prompt. + + This agent is capable of initializing a codebase from a prompt and improving an existing + codebase based on user input. It uses an AI model to generate and refine code, and it + interacts with a repository and an execution environment to manage and execute the code. + + Attributes + ---------- + memory : BaseMemory + The memory interface where the code and related data are stored. + execution_env : BaseExecutionEnv + The execution environment in which the code is executed. + ai : AI + The AI model used for generating and improving code. + preprompts_holder : PrepromptsHolder + The holder for preprompt messages that guide the AI model. + """ + + def __init__( + self, + memory: BaseMemory, + execution_env: BaseExecutionEnv, + ai: AI = None, + preprompts_holder: PrepromptsHolder = None, + ): + self.preprompts_holder = preprompts_holder or PrepromptsHolder(PREPROMPTS_PATH) + self.memory = memory + self.execution_env = execution_env + self.ai = ai or AI() + + @classmethod + def with_default_config( + cls, path: str, ai: AI = None, preprompts_holder: PrepromptsHolder = None + ): + return cls( + memory=DiskMemory(memory_path(path)), + execution_env=DiskExecutionEnv(), + ai=ai, + preprompts_holder=preprompts_holder or PrepromptsHolder(PREPROMPTS_PATH), + ) + + def init(self, prompt: Prompt) -> FilesDict: + files_dict = gen_code(self.ai, prompt, self.memory, self.preprompts_holder) + entrypoint = gen_entrypoint( + self.ai, prompt, files_dict, self.memory, self.preprompts_holder + ) + combined_dict = {**files_dict, **entrypoint} + files_dict = FilesDict(combined_dict) + return files_dict + + def improve( + self, + files_dict: FilesDict, + prompt: Prompt, + execution_command: Optional[str] = None, + ) -> FilesDict: + files_dict = improve_fn( + self.ai, prompt, files_dict, self.memory, self.preprompts_holder + ) + return files_dict + + +def default_config_agent(): + """ + Creates an instance of SimpleAgent with default configuration. + + Returns + ------- + SimpleAgent + An instance of SimpleAgent with a temporary directory as its base path. + """ + return SimpleAgent.with_default_config(tempfile.mkdtemp()) diff --git a/backend/Agents/gpt_engineer/core/default/steps.py b/backend/Agents/gpt_engineer/core/default/steps.py new file mode 100644 index 000000000..d9c0946a4 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/default/steps.py @@ -0,0 +1,468 @@ +""" +Module for defining the steps involved in generating and improving code using AI. + +This module provides functions that represent different steps in the process of generating +and improving code using an AI model. These steps include generating code from a prompt, +creating an entrypoint for the codebase, executing the entrypoint, and refining code edits. + +Functions +--------- +curr_fn : function + Returns the name of the current function. + +setup_sys_prompt : function + Sets up the system prompt for generating code. + +gen_code : function + Generates code from a prompt using AI and returns the generated files. + +gen_entrypoint : function + Generates an entrypoint for the codebase and returns the entrypoint files. + +execute_entrypoint : function + Executes the entrypoint of the codebase. + +setup_sys_prompt_existing_code : function + Sets up the system prompt for improving existing code. + + +improve : function + Improves the code based on user input and returns the updated files. +""" + +import inspect +import io +import re +import subprocess +import sys +import traceback +import tempfile +from pathlib import Path +from typing import List, MutableMapping, Union +import tempfile +import os +from langchain.schema import HumanMessage, SystemMessage +from termcolor import colored + +from Agents.gpt_engineer.core.ai import AI +from Agents.gpt_engineer.core.base_execution_env import BaseExecutionEnv +from Agents.gpt_engineer.core.base_memory import BaseMemory +from Agents.gpt_engineer.core.chat_to_files import apply_diffs, chat_to_files_dict, parse_diffs +from Agents.gpt_engineer.core.default.constants import MAX_EDIT_REFINEMENT_STEPS +from Agents.gpt_engineer.core.default.paths import ( + CODE_GEN_LOG_FILE, + DEBUG_LOG_FILE, + DIFF_LOG_FILE, + ENTRYPOINT_FILE, + ENTRYPOINT_LOG_FILE, + IMPROVE_LOG_FILE, +) +from Agents.gpt_engineer.core.files_dict import FilesDict, file_to_lines_dict +from Agents.gpt_engineer.core.preprompts_holder import PrepromptsHolder +from Agents.gpt_engineer.core.prompt import Prompt +from Agents.gpt_engineer.core.diffprocessor import DiffProcessor + +def curr_fn() -> str: + """ + Returns the name of the current function. + + Returns + ------- + str + The name of the function that called this function. + """ + return inspect.stack()[1].function + + +def setup_sys_prompt(preprompts: MutableMapping[Union[str, Path], str]) -> str: + """ + Sets up the system prompt for generating code. + + Parameters + ---------- + preprompts : MutableMapping[Union[str, Path], str] + A mapping of preprompt messages to guide the AI model. + + Returns + ------- + str + The system prompt message for the AI model. + """ + return ( + preprompts["roadmap"] + + preprompts["generate"].replace("FILE_FORMAT", preprompts["file_format"]) + + "\nUseful to know:\n" + + preprompts["philosophy"] + ) + + +def setup_sys_prompt_existing_code( + preprompts: MutableMapping[Union[str, Path], str] +) -> str: + """ + Sets up the system prompt for improving existing code. + + Parameters + ---------- + preprompts : MutableMapping[Union[str, Path], str] + A mapping of preprompt messages to guide the AI model. + + Returns + ------- + str + The system prompt message for the AI model to improve existing code. + """ + return ( + preprompts["roadmap"] + + preprompts["improve"].replace("FILE_FORMAT", preprompts["file_format_diff"]) + + "\nUseful to know:\n" + + preprompts["philosophy"] + ) + + +def gen_code( + ai: AI, prompt: Prompt, memory: BaseMemory, preprompts_holder: PrepromptsHolder +) -> FilesDict: + """ + Generates code from a prompt using AI and returns the generated files. + + Parameters + ---------- + ai : AI + The AI model used for generating code. + prompt : str + The user prompt to generate code from. + memory : BaseMemory + The memory interface where the code and related data are stored. + preprompts_holder : PrepromptsHolder + The holder for preprompt messages that guide the AI model. + + Returns + ------- + FilesDict + A dictionary of file names to their respective source code content. + """ + preprompts = preprompts_holder.get_preprompts() + messages = ai.start( + setup_sys_prompt(preprompts), prompt.to_langchain_content(), step_name=curr_fn() + ) + chat = messages[-1].content.strip() + memory.log(CODE_GEN_LOG_FILE, "\n\n".join(x.pretty_repr() for x in messages)) + files_dict = chat_to_files_dict(chat) + return files_dict + + +def gen_entrypoint( + ai: AI, + prompt: Prompt, + files_dict: FilesDict, + memory: BaseMemory, + preprompts_holder: PrepromptsHolder, +) -> FilesDict: + """ + Generates an entrypoint for the codebase and returns the entrypoint files. + + Parameters + ---------- + ai : AI + The AI model used for generating the entrypoint. + files_dict : FilesDict + The dictionary of file names to their respective source code content. + memory : BaseMemory + The memory interface where the code and related data are stored. + preprompts_holder : PrepromptsHolder + The holder for preprompt messages that guide the AI model. + + Returns + ------- + FilesDict + A dictionary containing the entrypoint file. + """ + user_prompt = prompt.entrypoint_prompt + if not user_prompt: + user_prompt = """ + Make a unix script that + a) installs dependencies + b) runs all necessary parts of the codebase (in parallel if necessary) + """ + preprompts = preprompts_holder.get_preprompts() + messages = ai.start( + system=(preprompts["entrypoint"]), + user=user_prompt + + "\nInformation about the codebase:\n\n" + + files_dict.to_chat(), + step_name=curr_fn(), + ) + print() + chat = messages[-1].content.strip() + regex = r"```\S*\n(.+?)```" + matches = re.finditer(regex, chat, re.DOTALL) + entrypoint_code = FilesDict( + {ENTRYPOINT_FILE: "\n".join(match.group(1) for match in matches)} + ) + memory.log(ENTRYPOINT_LOG_FILE, "\n\n".join(x.pretty_repr() for x in messages)) + return entrypoint_code + + +def execute_entrypoint( + ai: AI, + execution_env: BaseExecutionEnv, + files_dict: FilesDict, + prompt: Prompt = None, + preprompts_holder: PrepromptsHolder = None, + memory: BaseMemory = None, +) -> FilesDict: + """ + Executes the entrypoint of the codebase. + + Parameters + ---------- + ai : AI + The AI model used for generating the entrypoint. + execution_env : BaseExecutionEnv + The execution environment in which the code is executed. + files_dict : FilesDict + The dictionary of file names to their respective source code content. + preprompts_holder : PrepromptsHolder, optional + The holder for preprompt messages that guide the AI model. + + Returns + ------- + FilesDict + The dictionary of file names to their respective source code content after execution. + """ + if ENTRYPOINT_FILE not in files_dict: + raise FileNotFoundError( + "The required entrypoint " + + ENTRYPOINT_FILE + + " does not exist in the code." + ) + + command = files_dict[ENTRYPOINT_FILE] + + print() + print( + colored( + "Do you want to execute this code? (Y/n)", + "red", + ) + ) + print() + print(command) + print() + if input("").lower() not in ["", "y", "yes"]: + print("Ok, not executing the code.") + return files_dict + print("Executing the code...") + print() + print( + colored( + "Note: If it does not work as expected, consider running the code" + + " in another way than above.", + "green", + ) + ) + print() + print("You can press ctrl+c *once* to stop the execution.") + print() + + execution_env.upload(files_dict).run(f"bash {ENTRYPOINT_FILE}") + return files_dict + + +def handle_improve_mode(prompt, agent, memory, files_dict, diff_timeout=3): + captured_output = io.StringIO() + old_stdout = sys.stdout + sys.stdout = Tee(sys.stdout, captured_output) + + try: + files_dict = agent.improve(files_dict, prompt, diff_timeout=diff_timeout) + except Exception as e: + print( + f"Error while improving the project: {e}\nCould you please upload the debug_log_file.txt in {memory.path}/logs folder to github?\nFULL STACK TRACE:\n" + ) + traceback.print_exc(file=sys.stdout) # Print the full stack trace + finally: + # Reset stdout + sys.stdout = old_stdout + + # Get the captured output + captured_string = captured_output.getvalue() + print(captured_string) + memory.log(DEBUG_LOG_FILE, "\nCONSOLE OUTPUT:\n" + captured_string) + + return files_dict + +def improve_fn( + ai: AI, + prompt: Prompt, + files_dict: FilesDict, + memory: BaseMemory, + preprompts_holder: PrepromptsHolder, + repo_path='', + diff_timeout=3, +) -> FilesDict: + """ + Improves the code based on user input and returns the updated files. + + Parameters + ---------- + ai : AI + The AI model used for improving code. + prompt :str + The user prompt to improve the code. + files_dict : FilesDict + The dictionary of file names to their respective source code content. + memory : BaseMemory + The memory interface where the code and related data are stored. + preprompts_holder : PrepromptsHolder + The holder for preprompt messages that guide the AI model. + + Returns + ------- + FilesDict + The dictionary of file names to their respective updated source code content. + """ + preprompts = preprompts_holder.get_preprompts() + messages = [ + SystemMessage(content=setup_sys_prompt_existing_code(preprompts)), + ] + + # Add files as input + messages.append(HumanMessage(content=f"{files_dict.to_chat()}")) + messages.append(HumanMessage(content=prompt.to_langchain_content())) + memory.log( + DEBUG_LOG_FILE, + "UPLOADED FILES:\n" + files_dict.to_log() + "\nPROMPT:\n" + prompt.text, + ) + return _improve_loop(ai, files_dict, memory, messages, repo_path, diff_timeout=diff_timeout) + +def _improve_loop( + ai: AI, + files_dict: FilesDict, + memory: BaseMemory, + messages: List, + repo_path='', + diff_timeout=3 +) -> FilesDict: + messages = ai.next(messages, step_name=curr_fn(), structured_output=True) + files_dict, errors = salvage_correct_hunks( + messages, files_dict, memory, repo_path, diff_timeout=diff_timeout + ) + + + retries = 0 + while errors and retries < MAX_EDIT_REFINEMENT_STEPS: + messages.append( + HumanMessage( + content="Some previously produced diffs were not on the requested format, or the code part was not found in the code. Details:\n" + + "\n".join(errors) + + "\n Only rewrite the problematic diffs, making sure that the failing ones are now on the correct format and can be found in the code. Make sure to not repeat past mistakes. \n" + ) + ) + messages = ai.next(messages, step_name=curr_fn(), structured_output=True) + files_dict, errors = salvage_correct_hunks( + messages, files_dict, memory, repo_path, diff_timeout + ) + retries += 1 + + return files_dict + +def salvage_correct_hunks(messages, files_dict, memory, repo_path, diff_timeout=3): + import os, subprocess, tempfile + from pathlib import Path + + error_messages = [] + diff_text = messages[-1].content.strip() + filename = messages[-1].filename + base_name = os.path.basename(filename) + + repo = Path(repo_path).resolve() + if not (repo / base_name).exists(): + error_messages.append(f"Arquivo {base_name} não encontrado dentro de {repo}") + return files_dict, error_messages + + # Garante cabeçalhos válidos + if not diff_text.startswith("--- "): + diff_text = f"--- {base_name}\n+++ {base_name}\n" + diff_text + + # Cria arquivo temporário com o patch + with tempfile.NamedTemporaryFile("w+", delete=False, suffix=".diff", encoding="utf-8") as tmp: + tmp.write(diff_text) + tmp_path = tmp.name + + print(f"[diff] Aplicando via git apply em {repo}") + + try: + # Primeiro tenta modo seguro 3-way + result = subprocess.run( + ["git", "apply", "--3way", "--ignore-space-change", "--whitespace=nowarn", tmp_path], + cwd=repo, + text=True, + capture_output=True, + ) + if result.returncode != 0: + print(f"[diff] ⚠ Falha no modo 3way, tentando modo direto...") + result = subprocess.run( + ["git", "apply", "--ignore-space-change", "--whitespace=nowarn", "--reject", tmp_path], + cwd=repo, + text=True, + capture_output=True, + ) + + if result.returncode == 0: + print(f"[diff] ✅ Patch aplicado com sucesso em {base_name}") + else: + print(f"[diff] ❌ Falha ao aplicar patch:\n{result.stderr}") + error_messages.append(result.stderr.strip()) + + finally: + os.remove(tmp_path) + + return files_dict, error_messages + +# def salvage_correct_hunks( +# messages: List, files_dict: FilesDict, memory: BaseMemory, repo_path='', diff_timeout=3 +# ) -> tuple[FilesDict, List[str]]: +# error_messages = [] +# ai_response = messages[-1].content.strip() + +# diffs = parse_diffs(ai_response, diff_timeout=diff_timeout) +# print(f"diff {diffs}") + +# for _, diff in diffs.items(): +# print(f"_ {_}") +# print(f"diff {diff}") +# print(f"files_dict.keys() {files_dict.keys()}") + +# # Se o arquivo pré-existente não existe, criar vazio +# if not diff.is_new_file() and diff.filename_pre not in files_dict: +# files_dict[diff.filename_pre] = "" + + +# # if diff is a new file, validation and correction is unnecessary +# if not diff.is_new_file(): +# problems = diff.validate_and_correct( +# file_to_lines_dict(files_dict[diff.filename_pre]) +# ) +# error_messages.extend(problems) + +# files_dict = apply_diffs(diffs, files_dict) + +# memory.log(IMPROVE_LOG_FILE, "\n\n".join(x.pretty_repr() for x in messages)) +# memory.log(DIFF_LOG_FILE, "\n\n".join(error_messages)) +# return files_dict, error_messages + + +class Tee(object): + def __init__(self, *files): + self.files = files + + def write(self, obj): + for file in self.files: + file.write(obj) + + def flush(self): + for file in self.files: + file.flush() + diff --git a/backend/Agents/gpt_engineer/core/diff.py b/backend/Agents/gpt_engineer/core/diff.py new file mode 100644 index 000000000..b66393262 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/diff.py @@ -0,0 +1,421 @@ +""" +File Overview: diff.py + +This Python module is designed for processing and analyzing diffs in source code files. Diffs represent the changes between two versions of a file, which are crucial in version control systems for tracking file modifications. The module focuses on the detailed examination of these diffs, enabling users to understand, validate, and correct changes between file versions. + +Key Features: + +1. The `Hunk` class encapsulates a contiguous block of changes within a file. It includes detailed information such as start lines before and after edits, lengths of change blocks, and specific line changes categorized as additions, deletions, or unchanged. + +2. The `Diff` class represents a complete set of changes across a file and may contain multiple `Hunk` objects. It facilitates operations like generating string representations of diffs, and validating and correcting hunks based on the original file content. + +3. Functions within the module allow for the validation of hunks against original files, identifying mismatches, and making necessary corrections. This feature ensures that diffs are accurate and reflect true changes. + +4. Utility functions `is_similar` and `count_ratio` offer the capability to compare strings for similarity, accounting for variations in spacing and case. This aids in the validation process by allowing a flexible comparison of code lines. + +Dependencies: + +- `logging`: Utilized for logging warnings and errors encountered during the validation and correction process. +- `collections.Counter`: Used for counting occurrences of characters in strings, supporting the string similarity assessment functions. + +Functions and Classes: + +1. `Hunk`: Class representing a block of changes within a file, with methods for managing and validating these changes. + +2. `Diff`: Class representing the entire set of changes in a file, containing multiple `Hunk` instances and methods for overall diff management. + +3. `is_similar(str1, str2, similarity_threshold)`: Function to compare two strings for similarity, useful in validating line changes in hunks. + +4. `count_ratio(str1, str2)`: Function that computes the ratio of common characters to the length of the longer string, aiding in the assessment of line similarity. + +This module is essential for developers and teams utilizing version control systems, providing tools for a deeper analysis and correction of diffs, ensuring the integrity and accuracy of code changes. + +""" +import logging + +from collections import Counter +from typing import List + +RETAIN = "retain" +ADD = "add" +REMOVE = "remove" + + +class Hunk: + """ + Represents a section of a file diff, containing changes made to that section. + + Attributes: + start_line_pre_edit (int): The starting line number in the original file. + hunk_len_pre_edit (int): The length of the hunk in the original file. + start_line_post_edit (int): The starting line number in the edited file. + hunk_len_post_edit (int): The length of the hunk in the edited file. + lines (list): A list of tuples representing the lines in the hunk and their types (RETAIN, ADD, REMOVE). + category_counts (dict): A count of lines by their type. + is_new_file (bool): Flag indicating if the hunk represents a new file. + """ + + def __init__( + self, + start_line_pre_edit, + hunk_len_pre_edit, + start_line_post_edit, + hunk_len_post_edit, + lines, + ) -> None: + self.start_line_pre_edit = start_line_pre_edit + self.hunk_len_pre_edit = hunk_len_pre_edit + self.start_line_post_edit = start_line_post_edit + self.hunk_len_post_edit = hunk_len_post_edit + self.category_counts = {RETAIN: 0, ADD: 0, REMOVE: 0} + self.lines = list() + self.add_lines(lines) + self.forward_block_len = 10 + # Note that this assumption should not be done on hunk level, however, if the below is true, no validation is possible anyway. + if self.category_counts[RETAIN] == 0 and self.category_counts[REMOVE] == 0: + self.is_new_file = True + else: + self.is_new_file = False + + def add_retained_line(self, line, index) -> None: + """Adds a retained line to the hunk at the specified index.""" + self.lines.insert(index, (RETAIN, line)) + self.category_counts[RETAIN] += 1 + + def relabel_line(self, index, new_label) -> None: + """Changes the label of a line at the specified index.""" + old_label = self.lines[index][0] + self.lines[index] = (new_label, self.lines[index][1]) + self.category_counts[old_label] -= 1 + self.category_counts[new_label] += 1 + + def pop_line(self, line, index) -> None: + """Removes a line from the hunk at the specified index.""" + self.lines.pop(index) + assert self.category_counts[line[0]] > 0 + self.category_counts[line[0]] -= 1 + + def add_lines(self, new_lines) -> None: + """Adds multiple lines to the hunk.""" + for line in new_lines: + self.lines.append(line) + self.category_counts[line[0]] += 1 + + def hunk_to_string(self) -> str: + """Converts the hunk to a string representation.""" + string = f"@@ -{self.start_line_pre_edit},{self.hunk_len_pre_edit} +{self.start_line_post_edit},{self.hunk_len_post_edit} @@\n" + for line_type, line_content in self.lines: + line_prefix = ( + " " if line_type == RETAIN else "+" if line_type == ADD else "-" + ) + string += f"{line_prefix}{line_content}\n" + return string + + def make_forward_block(self, hunk_ind: int, forward_block_len) -> str: + """Creates a block of lines for forward comparison.""" + forward_lines = [ + line[1] for line in self.lines[hunk_ind:] if not line[0] == ADD + ] + forward_block = "\n".join(forward_lines[0:forward_block_len]) + return forward_block + + def check_start_line(self, lines_dict: dict) -> bool: + """Check if the starting line of a hunk is present in the original code and returns a boolean value accordingly.""" + if self.is_new_file: + # this hunk cannot be falsified and is by definition true + return True + if self.start_line_pre_edit in lines_dict: + # check the location of the actual starting line: + is_similar(self.lines[0][1], lines_dict[self.start_line_pre_edit]) + else: + pass + + def find_start_line(self, lines_dict: dict, problems: list) -> bool: + """Finds the starting line of the hunk in the original code and returns a boolean value accordingly. If the starting line is not found, it appends a problem message to the problems list.""" + + # ToDo handle the case where the start line is 0 or 1 characters separately + if self.lines[0][0] == ADD: + # handle the case where the start line is an add + start_line = None + # find the first line that is not an add + for index, line in enumerate(self.lines): + if line[0] != ADD: + for line_number, line_content in lines_dict.items(): + # if the line is similar to a non-blank line in line_dict, we can pick the line prior to it + if is_similar(line[1], line_content) and line[1] != "": + start_line = line_number - 1 + break + # if the start line is not found, append a problem message + if start_line is None: + problems.append( + f"In {self.hunk_to_string()}:can not find the starting line of the diff" + ) + return False + + else: + # the line prior to the start line is found now we insert it to the first place as the start line + self.start_line_pre_edit = start_line + retain_line = lines_dict.get(start_line, "") + if retain_line: + self.add_retained_line(lines_dict[start_line], 0) + return self.validate_and_correct(lines_dict, problems) + else: + problems.append( + f"In {self.hunk_to_string()}:The starting line of the diff {self.hunk_to_string()} does not exist in the code" + ) + return False + pot_start_lines = { + key: is_similar(self.lines[0][1], line) for key, line in lines_dict.items() + } + sum_of_matches = sum(pot_start_lines.values()) + if sum_of_matches == 0: + # before we go any further, we should check if it's a comment from LLM + if self.lines[0][1].count("#") > 0: + # if it is, we can mark it as an ADD lines + self.relabel_line(0, ADD) + # and restart the validation at the next line + return self.validate_and_correct(lines_dict, problems) + + else: + problems.append( + f"In {self.hunk_to_string()}:The starting line of the diff {self.hunk_to_string()} does not exist in the code" + ) + return False + elif sum_of_matches == 1: + start_ind = list(pot_start_lines.keys())[ + list(pot_start_lines.values()).index(True) + ] # lines are one indexed + else: + logging.warning("multiple candidates for starting index") + # ToDo handle all the cases better again here. Smartest choice is that, for each candidate check match to the next line etc (recursively) + start_ind = list(pot_start_lines.keys())[ + list(pot_start_lines.values()).index(True) + ] + self.start_line_pre_edit = start_ind + + # This should now be fulfilled by default + assert is_similar(self.lines[0][1], lines_dict[self.start_line_pre_edit]) + return True + + def validate_lines(self, lines_dict: dict, problems: list) -> bool: + """Validates the lines of the hunk against the original file and returns a boolean value accordingly. If the lines do not match, it appends a problem message to the problems list.""" + hunk_ind = 0 + file_ind = self.start_line_pre_edit + # make an orig hunk lines for logging + # orig_hunk_lines = deepcopy(self.lines) + while hunk_ind < len(self.lines) and file_ind <= max(lines_dict): + if self.lines[hunk_ind][0] == ADD: + # this cannot be validated, jump one index + hunk_ind += 1 + elif not is_similar(self.lines[hunk_ind][1], lines_dict[file_ind]): + # before we go any further, we should relabel the comment from LLM + if self.lines[hunk_ind][1].count("#") > 0: + self.relabel_line(hunk_ind, ADD) + continue + + # make a forward block from the code for comparisons + forward_code = "\n".join( + [ + lines_dict[ind] + for ind in range( + file_ind, + min( + file_ind + self.forward_block_len, + max(lines_dict.keys()), + ), + ) + ] + ) + # make the original forward block for quantitative comparison + forward_block = self.make_forward_block( + hunk_ind, self.forward_block_len + ) + orig_count_ratio = count_ratio(forward_block, forward_code) + # Here we have 2 cases + # 1) some lines were simply skipped in the diff and we should add them to the diff + # If this is the case, adding the line to the diff, should give an improved forward diff + forward_block_missing_line = self.make_forward_block( + hunk_ind, self.forward_block_len - 1 + ) + # insert the missing line in front of the block + forward_block_missing_line = "\n".join( + [lines_dict[file_ind], forward_block_missing_line] + ) + missing_line_count_ratio = count_ratio( + forward_block_missing_line, forward_code + ) + # 2) Additional lines, not belonging to the code were added to the diff + forward_block_false_line = self.make_forward_block( + hunk_ind + 1, self.forward_block_len + ) + false_line_count_ratio = count_ratio( + forward_block_false_line, forward_code + ) + if ( + orig_count_ratio >= missing_line_count_ratio + and orig_count_ratio >= false_line_count_ratio + ): + problems.append( + f"In Hunk:{self.hunk_to_string()}, there was at least one mismatch." + ) + return False + + elif missing_line_count_ratio > false_line_count_ratio: + self.add_retained_line(lines_dict[file_ind], hunk_ind) + hunk_ind += 1 + file_ind += 1 + # NOTE: IF THE LLM SKIPS SOME LINES AND HAS ADDs ADJACENT TO THE SKIPPED BLOCK, + # WE CANNOT KNOW WHETHER THE ADDs SHOULD BE BEFORE OR AFTER THE BLOCK. WE OPT FOR PUTTING IT BEFORE. + # IF IT MATTERED, WE ASSUME THE LLM WOULD NOT SKIP THE BLOCK + else: + self.pop_line(self.lines[hunk_ind], hunk_ind) + + else: + hunk_ind += 1 + file_ind += 1 + # if we have not validated all lines, we have a problem + if hunk_ind < len(self.lines) - 1: + remaining_lines = "\n".join( + f"{line_type}: {line_content}" + for line_type, line_content in self.lines[file_ind + 1 :] + ) + problems.append( + f"In {self.hunk_to_string()}:Hunk validation stopped before the lines {remaining_lines} were validated. The diff is incorrect" + ) + return False + return True + + def validate_and_correct( + self, + lines_dict: dict, + problems: list, + ) -> bool: + """ + Validates and corrects the hunk based on the original lines. + + This function attempts to validate the hunk by comparing its lines to the original file and making corrections + where necessary. It also identifies problems such as non-matching lines or incorrect line types. + """ + start_true = self.check_start_line(lines_dict) + + if not start_true: + if not self.find_start_line(lines_dict, problems): + return False + + # Now we should be able to validate the hunk line by line and add missing line + if not self.validate_lines(lines_dict, problems): + return False + # Pass the validation + return True + + +class Diff: + """ + Represents a file diff, containing multiple hunks of changes. + + Attributes: + filename_pre (str): The name of the original file. + filename_post (str): The name of the edited file. + hunks (list): A list of Hunk objects representing the changes in the diff. + """ + + def __init__(self, filename_pre, filename_post) -> None: + self.filename_pre = filename_pre + self.filename_post = filename_post + self.hunks = [] + + def is_new_file(self) -> bool: + """Determines if the diff represents a new file.""" + if self.filename_pre == "/dev/null": + return True + return any(hunk.is_new_file for hunk in self.hunks) + + def diff_to_string(self) -> str: + """Converts the diff to a string representation.""" + string = f"--- {self.filename_pre}\n+++ {self.filename_post}\n" + for hunk in self.hunks: + string += hunk.hunk_to_string() + return string.strip() + + def validate_and_correct(self, lines_dict: dict) -> List[str]: + """Validates and corrects each hunk in the diff.""" + problems = [] + past_hunk = None + cut_lines_dict = lines_dict.copy() + for hunk in self.hunks: + if past_hunk is not None: + # make sure to not cut so much that the start_line gets out of range + cut_ind = min( + past_hunk.start_line_pre_edit + past_hunk.hunk_len_pre_edit, + hunk.start_line_pre_edit, + ) + cut_lines_dict = { + key: val for key, val in cut_lines_dict.items() if key >= (cut_ind) + } + is_valid = hunk.validate_and_correct(cut_lines_dict, problems) + if not is_valid and len(problems) > 0: + for idx, val in enumerate(problems): + print(f"\nInvalid Hunk NO.{idx}---\n{val}\n---") + self.hunks.remove(hunk) + # now correct the numbers, assuming the start line pre-edit has been fixed + hunk.hunk_len_pre_edit = ( + hunk.category_counts[RETAIN] + hunk.category_counts[REMOVE] + ) + hunk.hunk_len_post_edit = ( + hunk.category_counts[RETAIN] + hunk.category_counts[ADD] + ) + if past_hunk is not None: + hunk.start_line_post_edit = ( + hunk.start_line_pre_edit + + past_hunk.hunk_len_post_edit + - past_hunk.hunk_len_pre_edit + + past_hunk.start_line_post_edit + - past_hunk.start_line_pre_edit + ) + else: + hunk.start_line_post_edit = hunk.start_line_pre_edit + past_hunk = hunk + return problems + + +def is_similar(str1, str2, similarity_threshold=0.9) -> bool: + """ + Compares two strings for similarity, ignoring spaces and case. + + Parameters + ---------- + str1, str2 : str + The strings to compare. + similarity_threshold: float + How similar must the strings be + + Returns + ------- + bool + True if the strings are similar, False otherwise. + """ + + return count_ratio(str1, str2) >= similarity_threshold + + +def count_ratio(str1, str2) -> float: + """ + Computes the ratio of common characters to the length of the longer string, ignoring spaces and case. + + Parameters: + - str1, str2 (str): The strings to compare. + + Returns: + - float: The ratio of common characters to the length of the longer string. + """ + str1, str2 = str1.replace(" ", "").lower(), str2.replace(" ", "").lower() + + counter1, counter2 = Counter(str1), Counter(str2) + intersection = sum((counter1 & counter2).values()) + longer_length = max(len(str1), len(str2)) + if longer_length == 0: + return 1 + else: + return intersection / longer_length + + diff --git a/backend/Agents/gpt_engineer/core/diffprocessor.py b/backend/Agents/gpt_engineer/core/diffprocessor.py new file mode 100644 index 000000000..a3776d182 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/diffprocessor.py @@ -0,0 +1,111 @@ +""" +File Overview: diffprocessor.py + +Este módulo substitui toda a lógica manual de parsing e aplicação de diffs. +Agora utiliza a biblioteca `unidiff` para leitura e análise detalhada dos patches +e delega a aplicação real para o `git apply --3way`, garantindo máxima compatibilidade +com o comportamento nativo do Git. + +Principais recursos: +- Leitura de diffs padrão (unified format) usando `unidiff`. +- Validação básica dos blocos de alteração. +- Aplicação real do patch usando `git apply --3way` com fallback seguro. +- Logs estruturados para auditoria e debugging. + +Dependências: +- unidiff (pip install unidiff) +- git instalado no sistema +""" + +import subprocess +import logging +from pathlib import Path +from unidiff import PatchSet + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO, format="[diff] %(message)s") + + +class DiffProcessor: + """ + Classe de alto nível para leitura, análise e aplicação de diffs. + Usa o `unidiff` para parsing e `git apply` para a aplicação real. + """ + + def __init__(self, diff_path="", diff_content=False, f=""): + if diff_content == False: + self.diff_path = Path(diff_path) + if not self.diff_path.exists(): + raise FileNotFoundError(f"Arquivo de diff não encontrado: {self.diff_path}") + self.patchset = None + elif diff_content == True: + self.patchset = PatchSet(f) + + def parse(self): + """Lê e analisa o diff usando `unidiff`.""" + with open(self.diff_path, "r", encoding="utf-8") as f: + self.patchset = PatchSet(f) + logger.info(f"Diff carregado com {len(self.patchset)} arquivos modificados.") + return self.patchset + + def summary(self): + """Retorna um resumo textual das mudanças contidas no diff.""" + if not self.patchset: + self.parse() + + summary_lines = [] + for patched_file in self.patchset: + added = sum(1 for h in patched_file for l in h if l.is_added) + removed = sum(1 for h in patched_file for l in h if l.is_removed) + summary_lines.append( + f"{patched_file.path}: +{added} / -{removed} linhas" + ) + return "\n".join(summary_lines) + + def validate(self): + """Valida se os arquivos referenciados existem antes de aplicar.""" + if not self.patchset: + self.parse() + + problems = [] + for patched_file in self.patchset: + if not Path(patched_file.path).exists() and not patched_file.is_added_file: + problems.append(f"Arquivo não encontrado: {patched_file.path}") + if problems: + logger.warning("⚠️ Problemas de validação encontrados:\n" + "\n".join(problems)) + else: + logger.info("✅ Todos os arquivos do diff foram validados com sucesso.") + return problems + + def apply(self, repo_path: str = "."): + """ + Aplica o diff usando `git apply --3way`. + Caso falhe, tenta fallback com `--reject` (gera .rej com falhas). + """ + repo = Path(repo_path) + if not repo.exists(): + raise FileNotFoundError(f"Repositório não encontrado: {repo_path}") + + try: + logger.info("Tentando aplicar patch com git apply --3way ...") + subprocess.run( + ["git", "apply", "--3way", '--ignore-whitespace', str(self.diff_path)], + cwd=repo, + check=True, + text=True, + capture_output=True, + ) + logger.info("✅ Patch aplicado com sucesso (modo 3-way).") + except subprocess.CalledProcessError as e: + logger.warning("⚠️ Falha no modo 3-way, tentando fallback com --reject...") + reject_proc = subprocess.run( + ["git", "apply", "--reject", str(self.diff_path)], + cwd=repo, + text=True, + capture_output=True, + ) + if reject_proc.returncode == 0: + logger.info("✅ Patch parcialmente aplicado (arquivos .rej gerados).") + else: + logger.error(f"❌ Erro ao aplicar patch:\n{reject_proc.stderr}") + raise RuntimeError("Falha ao aplicar patch.") from e diff --git a/backend/Agents/gpt_engineer/core/files_dict.py b/backend/Agents/gpt_engineer/core/files_dict.py new file mode 100644 index 000000000..3f26a3ff2 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/files_dict.py @@ -0,0 +1,115 @@ +""" +FilesDict Module + +This module provides a FilesDict class which is a dictionary-based container for managing code files. +It extends the standard dictionary to enforce string keys and values, representing filenames and their +corresponding code content. It also provides methods to format its contents for chat-based interaction +with an AI agent and to enforce type checks on keys and values. + +Classes: + FilesDict: A dictionary-based container for managing code files. +""" +from collections import OrderedDict +from pathlib import Path +from typing import Union + + +# class Code(MutableMapping[str | Path, str]): +# ToDo: implement as mutable mapping, potentially holding a dict instead of being a dict. +class FilesDict(dict): + """ + A dictionary-based container for managing code files. + + This class extends the standard dictionary to enforce string keys and values, + representing filenames and their corresponding code content. It provides methods + to format its contents for chat-based interaction with an AI agent and to enforce + type checks on keys and values. + """ + + def __setitem__(self, key: Union[str, Path], value: str): + """ + Set the code content for the given filename, enforcing type checks on the key and value. + + Overrides the dictionary's __setitem__ to enforce type checks on the key and value. + The key must be a string or a Path object, and the value must be a string representing + the code content. + + Parameters + ---------- + key : Union[str, Path] + The filename as a key for the code content. + value : str + The code content to associate with the filename. + + Raises + ------ + TypeError + If the key is not a string or Path, or if the value is not a string. + """ + if not isinstance(key, (str, Path)): + raise TypeError("Keys must be strings or Path's") + if not isinstance(value, str): + raise TypeError("Values must be strings") + super().__setitem__(key, value) + + def to_chat(self): + """ + Formats the items of the object (assuming file name and content pairs) + into a string suitable for chat display. + + Returns + ------- + str + A string representation of the files. + """ + chat_str = "" + for file_name, file_content in self.items(): + lines_dict = file_to_lines_dict(file_content) + chat_str += f"File: {file_name}\n" + for line_number, line_content in lines_dict.items(): + chat_str += f"{line_number} {line_content}\n" + chat_str += "\n" + return f"```\n{chat_str}```" + + def to_log(self): + """ + Formats the items of the object (assuming file name and content pairs) + into a string suitable for log display. + + Returns + ------- + str + A string representation of the files. + """ + log_str = "" + for file_name, file_content in self.items(): + log_str += f"File: {file_name}\n" + log_str += file_content + log_str += "\n" + return log_str + + +def file_to_lines_dict(file_content: str) -> dict: + """ + Converts file content into a dictionary where each line number is a key + and the corresponding line content is the value. + + Parameters + ---------- + file_name : str + The name of the file. + file_content : str + The content of the file. + + Returns + ------- + dict + A dictionary with file names as keys and dictionaries (line numbers as keys and line contents as values) as values. + """ + lines_dict = OrderedDict( + { + line_number: line_content + for line_number, line_content in enumerate(file_content.split("\n"), 1) + } + ) + return lines_dict diff --git a/backend/Agents/gpt_engineer/core/git.py b/backend/Agents/gpt_engineer/core/git.py new file mode 100644 index 000000000..b6475c999 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/git.py @@ -0,0 +1,85 @@ +import shutil +import subprocess + +from pathlib import Path +from typing import List + +from Agents.gpt_engineer.core.files_dict import FilesDict + + +def is_git_installed(): + return shutil.which("git") is not None + + +def is_git_repo(path: Path): + return ( + subprocess.run( + ["git", "rev-parse", "--is-inside-work-tree"], + cwd=path, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ).returncode + == 0 + ) + + +def init_git_repo(path: Path): + subprocess.run(["git", "init"], cwd=path) + + +def has_uncommitted_changes(path: Path): + return bool( + subprocess.run( + ["git", "diff", "--exit-code"], + cwd=path, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ).returncode + ) + + +def filter_files_with_uncommitted_changes( + basepath: Path, files_dict: FilesDict +) -> List[Path]: + files_with_diff = ( + subprocess.run( + ["git", "diff", "--name-only"], cwd=basepath, stdout=subprocess.PIPE + ) + .stdout.decode() + .splitlines() + ) + return [f for f in files_dict.keys() if f in files_with_diff] + + +def stage_files(path: Path, files: List[str]): + subprocess.run(["git", "add", *files], cwd=path) + + +def filter_by_gitignore(path: Path, file_list: List[str]) -> List[str]: + out = subprocess.run( + ["git", "-C", ".", "check-ignore", "--no-index", "--stdin"], + cwd=path, + input="\n".join(file_list).encode(), + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + ) + paths = out.stdout.decode().splitlines() + # return file_list but filter out the results from git check-ignore + return [f for f in file_list if f not in paths] + + +def stage_uncommitted_to_git(path, files_dict, improve_mode): + # Check if there's a git repo and verify that there aren't any uncommitted changes + if is_git_installed() and not improve_mode: + if not is_git_repo(path): + print("\nInitializing an empty git repository") + init_git_repo(path) + + if is_git_repo(path): + modified_files = filter_files_with_uncommitted_changes(path, files_dict) + if modified_files: + print( + "Staging the following uncommitted files before overwriting: ", + ", ".join(modified_files), + ) + stage_files(path, modified_files) diff --git a/backend/Agents/gpt_engineer/core/linting.py b/backend/Agents/gpt_engineer/core/linting.py new file mode 100644 index 000000000..f36229a36 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/linting.py @@ -0,0 +1,64 @@ +import black + +from Agents.gpt_engineer.core.files_dict import FilesDict + + +class Linting: + def __init__(self): + # Dictionary to hold linting methods for different file types + self.linters = {".py": self.lint_python} + + import black + + def lint_python(self, content, config): + """Lint Python files using the `black` library, handling all exceptions silently and logging them. + This function attempts to format the code and returns the formatted code if successful. + If any error occurs during formatting, it logs the error and returns the original content. + """ + try: + # Try to format the content using black + linted_content = black.format_str(content, mode=black.FileMode(**config)) + except black.NothingChanged: + # If nothing changed, log the info and return the original content + print("\nInfo: No changes were made during formatting.\n") + linted_content = content + except Exception as error: + # If any other exception occurs, log the error and return the original content + print(f"\nError: Could not format due to {error}\n") + linted_content = content + return linted_content + + def lint_files(self, files_dict: FilesDict, config: dict = None) -> FilesDict: + """ + Lints files based on their extension using registered linting functions. + + Parameters + ---------- + files_dict : FilesDict + The dictionary of file names to their respective source code content. + config : dict, optional + A dictionary of configuration options for the linting tools. + + Returns + ------- + FilesDict + The dictionary of file names to their respective source code content after linting. + """ + if config is None: + config = {} + + for filename, content in files_dict.items(): + extension = filename[ + filename.rfind(".") : + ].lower() # Ensure case insensitivity + if extension in self.linters: + original_content = content + linted_content = self.linters[extension](content, config) + if linted_content != original_content: + print(f"Linted {filename}.") + else: + print(f"No changes made for {filename}.") + files_dict[filename] = linted_content + else: + print(f"No linter registered for {filename}.") + return files_dict diff --git a/backend/Agents/gpt_engineer/core/preprompts_holder.py b/backend/Agents/gpt_engineer/core/preprompts_holder.py new file mode 100644 index 000000000..17b0d3789 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/preprompts_holder.py @@ -0,0 +1,29 @@ +from pathlib import Path +from typing import Dict + +from Agents.gpt_engineer.core.default.disk_memory import DiskMemory + + +class PrepromptsHolder: + """ + A holder for preprompt texts that are stored on disk. + + This class provides methods to retrieve preprompt texts from a specified directory. + + Attributes + ---------- + preprompts_path : Path + The file path to the directory containing preprompt texts. + + Methods + ------- + get_preprompts() -> Dict[str, str] + Retrieve all preprompt texts from the directory and return them as a dictionary. + """ + + def __init__(self, preprompts_path: Path): + self.preprompts_path = preprompts_path + + def get_preprompts(self) -> Dict[str, str]: + preprompts_repo = DiskMemory(self.preprompts_path) + return {file_name: preprompts_repo[file_name] for file_name in preprompts_repo} diff --git a/backend/Agents/gpt_engineer/core/project_config.py b/backend/Agents/gpt_engineer/core/project_config.py new file mode 100644 index 000000000..137a5558c --- /dev/null +++ b/backend/Agents/gpt_engineer/core/project_config.py @@ -0,0 +1,158 @@ +""" +Functions for reading and writing the `gpt-engineer.toml` configuration file. + +The `gpt-engineer.toml` file is a TOML file that contains project-specific configuration used by the GPT Engineer CLI and gptengineer.app. +""" +from dataclasses import asdict, dataclass, field +from pathlib import Path + +import tomlkit + +default_config_filename = "gpt-engineer.toml" + +example_config = """ +[run] +build = "npm run build" +test = "npm run test" +lint = "quick-lint-js" + +[paths] +base = "./frontend" # base directory to operate in (for monorepos) +src = "./src" # source directory (under the base directory) from which context will be retrieved + +[gptengineer-app] # this namespace is used for gptengineer.app, may be used for internal experiments +project_id = "..." + +# we support multiple OpenAPI schemas, used as context for the LLM +openapi = [ + { url = "https://api.gptengineer.app/openapi.json" }, + { url = "https://some-color-translating-api/openapi.json" }, +] +""" + + +@dataclass +class _PathsConfig: + base: str | None = None + src: str | None = None + + +@dataclass +class _RunConfig: + build: str | None = None + test: str | None = None + lint: str | None = None + format: str | None = None + + +@dataclass +class _OpenApiConfig: + url: str + + +@dataclass +class _GptEngineerAppConfig: + project_id: str + openapi: list[_OpenApiConfig] | None = None + + +def filter_none(d: dict) -> dict: + # Drop None values and empty dictionaries from a dictionary + return { + k: v + for k, v in ( + (k, filter_none(v) if isinstance(v, dict) else v) + for k, v in d.items() + if v is not None + ) + if not (isinstance(v, dict) and not v) # Check for non-empty after filtering + } + + +@dataclass +class Config: + """Configuration for the GPT Engineer CLI and gptengineer.app via `gpt-engineer.toml`.""" + + paths: _PathsConfig = field(default_factory=_PathsConfig) + run: _RunConfig = field(default_factory=_RunConfig) + gptengineer_app: _GptEngineerAppConfig | None = None + + @classmethod + def from_toml(cls, config_file: Path | str): + if isinstance(config_file, str): + config_file = Path(config_file) + config_dict = read_config(config_file) + return cls.from_dict(config_dict) + + @classmethod + def from_dict(cls, config_dict: dict): + run = _RunConfig(**config_dict.get("run", {})) + paths = _PathsConfig(**config_dict.get("paths", {})) + + # load optional gptengineer-app section + gptengineer_app_dict = config_dict.get("gptengineer-app", {}) + gptengineer_app = None + if gptengineer_app_dict: + assert ( + "project_id" in gptengineer_app_dict + ), "project_id is required in gptengineer-app section" + gptengineer_app = _GptEngineerAppConfig( + # required if gptengineer-app section is present + project_id=gptengineer_app_dict["project_id"], + openapi=[ + _OpenApiConfig(**openapi) + for openapi in gptengineer_app_dict.get("openapi", []) + ] + or None, + ) + + return cls(paths=paths, run=run, gptengineer_app=gptengineer_app) + + def to_dict(self) -> dict: + d = asdict(self) + d["gptengineer-app"] = d.pop("gptengineer_app", None) + + # Drop None values and empty dictionaries + # Needed because tomlkit.dumps() doesn't handle None values, + # and we don't want to write empty sections. + d = filter_none(d) + + return d + + def to_toml(self, config_file: Path | str, save=True) -> str: + """Write the configuration to a TOML file.""" + if isinstance(config_file, str): + config_file = Path(config_file) + + # Load the TOMLDocument and overwrite it with the new values + config = read_config(config_file) + default_config = Config().to_dict() + for k, v in self.to_dict().items(): + # only write values that are already explicitly set, or that differ from defaults + if k in config or v != default_config[k]: + if isinstance(v, dict): + config[k] = { + k2: v2 + for k2, v2 in v.items() + if ( + k2 in config[k] + or default_config.get(k) is None + or v2 != default_config[k].get(k2) + ) + } + else: + config[k] = v + + toml_str = tomlkit.dumps(config) + if save: + with open(config_file, "w") as f: + f.write(toml_str) + + return toml_str + + +def read_config(config_file: Path) -> tomlkit.TOMLDocument: + """Read the configuration file""" + assert config_file.exists(), f"Config file {config_file} does not exist" + with open(config_file, "r") as f: + return tomlkit.load(f) diff --git a/backend/Agents/gpt_engineer/core/prompt.py b/backend/Agents/gpt_engineer/core/prompt.py new file mode 100644 index 000000000..4d8286343 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/prompt.py @@ -0,0 +1,44 @@ +import json + +from typing import Dict, Optional + + +class Prompt: + def __init__( + self, + text: str, + image_urls: Optional[Dict[str, str]] = None, + entrypoint_prompt: str = "", + ): + self.text = text + self.image_urls = image_urls + self.entrypoint_prompt = entrypoint_prompt + + def __repr__(self): + return f"Prompt(text={self.text!r}, image_urls={self.image_urls!r})" + + def to_langchain_content(self): + content = [{"type": "text", "text": f"Request: {self.text}"}] + + if self.image_urls: + for name, url in self.image_urls.items(): + image_content = { + "type": "image_url", + "image_url": { + "url": url, + "detail": "low", + }, + } + content.append(image_content) + + return content + + def to_dict(self): + return { + "text": self.text, + "image_urls": self.image_urls, + "entrypoint_prompt": self.entrypoint_prompt, + } + + def to_json(self): + return json.dumps(self.to_dict()) diff --git a/backend/Agents/gpt_engineer/core/token_usage.py b/backend/Agents/gpt_engineer/core/token_usage.py new file mode 100644 index 000000000..7adc80452 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/token_usage.py @@ -0,0 +1,301 @@ +import base64 +import io +import logging +import math + +from dataclasses import dataclass +from typing import List, Union + +import tiktoken +from typing import Optional +from langchain.schema import AIMessage, HumanMessage, SystemMessage +from PIL import Image + +# workaround for function moved in: +# https://github.com/langchain-ai/langchain/blob/535db72607c4ae308566ede4af65295967bb33a8/libs/community/langchain_community/callbacks/openai_info.py +try: + from langchain.callbacks.openai_info import ( + get_openai_token_cost_for_model, # fmt: skip + ) +except ImportError: + from langchain_community.callbacks.openai_info import ( + get_openai_token_cost_for_model, # fmt: skip + ) + + +Message = Union[AIMessage, HumanMessage, SystemMessage] + +logger = logging.getLogger(__name__) + + +@dataclass +class TokenUsage: + """ + Dataclass representing token usage statistics for a conversation step. + + Attributes + ---------- + step_name : str + The name of the conversation step. + in_step_prompt_tokens : int + The number of prompt tokens used in the step. + in_step_completion_tokens : int + The number of completion tokens used in the step. + in_step_total_tokens : int + The total number of tokens used in the step. + total_prompt_tokens : int + The cumulative number of prompt tokens used up to this step. + total_completion_tokens : int + The cumulative number of completion tokens used up to this step. + total_tokens : int + The cumulative total number of tokens used up to this step. + """ + + """ + Represents token usage statistics for a conversation step. + """ + + step_name: str + in_step_prompt_tokens: int + in_step_completion_tokens: int + in_step_total_tokens: int + total_prompt_tokens: int + total_completion_tokens: int + total_tokens: int + + +class Tokenizer: + """ + Tokenizer for counting tokens in text. + """ + + def __init__(self, model_name): + self.model_name = model_name + # tenta mapear o modelo, mas cai para cl100k_base se não reconhecido + try: + if "gpt-4" in model_name or "gpt-3.5" in model_name: + self._tiktoken_tokenizer = tiktoken.encoding_for_model(model_name) + else: + self._tiktoken_tokenizer = tiktoken.get_encoding("cl100k_base") + except KeyError: + # fallback genérico + self._tiktoken_tokenizer = tiktoken.get_encoding("cl100k_base") + + def num_tokens(self, txt: str) -> int: + """ + Get the number of tokens in a text. + + Parameters + ---------- + txt : str + The text to count the tokens in. + + Returns + ------- + int + The number of tokens in the text. + """ + return len(self._tiktoken_tokenizer.encode(txt)) + + def num_tokens_for_base64_image( + self, image_base64: str, detail: str = "high" + ) -> int: + """ + Calculate the token size for a base64 encoded image based on OpenAI's token calculation rules. + + Parameters: + - image_base64 (str): The base64 encoded string of the image. + - detail (str): The detail level of the image, 'low' or 'high'. + + Returns: + - int: The token size of the image. + """ + + if detail == "low": + return 85 # Fixed cost for low detail images + + # Decode image from base64 + image_data = base64.b64decode(image_base64) + + # Convert byte data to image for size extraction + image = Image.open(io.BytesIO(image_data)) + + # Calculate the initial scale to fit within 2048 square while maintaining aspect ratio + max_dimension = max(image.size) + scale_factor = min(2048 / max_dimension, 1) # Ensure we don't scale up + new_width = int(image.size[0] * scale_factor) + new_height = int(image.size[1] * scale_factor) + + # Scale such that the shortest side is 768px + shortest_side = min(new_width, new_height) + if shortest_side > 768: + resize_factor = 768 / shortest_side + new_width = int(new_width * resize_factor) + new_height = int(new_height * resize_factor) + + # Calculate the number of 512px tiles needed + width_tiles = math.ceil(new_width / 512) + height_tiles = math.ceil(new_height / 512) + total_tiles = width_tiles * height_tiles + + # Each tile costs 170 tokens, plus a base cost of 85 tokens for high detail + token_cost = total_tiles * 170 + 85 + + return token_cost + + def num_tokens_from_messages(self, messages: List[Message]) -> int: + """ + Get the total number of tokens used by a list of messages, accounting for text and base64 encoded images. + + Parameters + ---------- + messages : List[Message] + The list of messages to count the tokens in. + + Returns + ------- + int + The total number of tokens used by the messages. + """ + n_tokens = 0 + for message in messages: + n_tokens += 4 # Account for message framing tokens + + if isinstance(message.content, str): + # Content is a simple string + n_tokens += self.num_tokens(message.content) + elif isinstance(message.content, list): + # Content is a list, potentially mixed with text and images + for item in message.content: + if item.get("type") == "text": + n_tokens += self.num_tokens(item["text"]) + elif item.get("type") == "image_url": + image_detail = item["image_url"].get("detail", "high") + image_base64 = item["image_url"].get("url") + n_tokens += self.num_tokens_for_base64_image( + image_base64, detail=image_detail + ) + + n_tokens += 2 # Account for assistant's reply framing tokens + + return n_tokens + + +class TokenUsageLog: + """ + Represents a log of token usage statistics for a conversation. + """ + + def __init__(self, model_name): + self.model_name = model_name + self._cumulative_prompt_tokens = 0 + self._cumulative_completion_tokens = 0 + self._cumulative_total_tokens = 0 + self._log = [] + self._tokenizer = Tokenizer(model_name) + + def update_log(self, messages: List[Message], answer: str, step_name: str) -> None: + """ + Update the token usage log with the number of tokens used in the current step. + + Parameters + ---------- + messages : List[Message] + The list of messages in the conversation. + answer : str + The answer from the AI. + step_name : str + The name of the step. + """ + prompt_tokens = self._tokenizer.num_tokens_from_messages(messages) + completion_tokens = self._tokenizer.num_tokens(answer) + total_tokens = prompt_tokens + completion_tokens + + self._cumulative_prompt_tokens += prompt_tokens + self._cumulative_completion_tokens += completion_tokens + self._cumulative_total_tokens += total_tokens + + self._log.append( + TokenUsage( + step_name=step_name, + in_step_prompt_tokens=prompt_tokens, + in_step_completion_tokens=completion_tokens, + in_step_total_tokens=total_tokens, + total_prompt_tokens=self._cumulative_prompt_tokens, + total_completion_tokens=self._cumulative_completion_tokens, + total_tokens=self._cumulative_total_tokens, + ) + ) + + def log(self) -> List[TokenUsage]: + """ + Get the token usage log. + + Returns + ------- + List[TokenUsage] + A log of token usage details per step in the conversation. + """ + return self._log + + def format_log(self) -> str: + """ + Format the token usage log as a CSV string. + + Returns + ------- + str + The token usage log formatted as a CSV string. + """ + result = "step_name,prompt_tokens_in_step,completion_tokens_in_step,total_tokens_in_step,total_prompt_tokens,total_completion_tokens,total_tokens\n" + for log in self._log: + result += f"{log.step_name},{log.in_step_prompt_tokens},{log.in_step_completion_tokens},{log.in_step_total_tokens},{log.total_prompt_tokens},{log.total_completion_tokens},{log.total_tokens}\n" + return result + + def is_openai_model(self) -> bool: + """ + Check if the model is an OpenAI model. + + Returns + ------- + bool + True if the model is an OpenAI model, False otherwise. + """ + return "gpt" in self.model_name.lower() + + def total_tokens(self) -> int: + """ + Return the total number of tokens used in the conversation. + + Returns + ------- + int + The total number of tokens used in the conversation. + """ + return self._cumulative_total_tokens + + def usage_cost(self) -> Optional[float]: + """ + Return the total cost in USD of the API usage. + + Returns + ------- + float + Cost in USD. + """ + if not self.is_openai_model(): + return None + + try: + result = 0 + for log in self.log(): + result += get_openai_token_cost_for_model( + self.model_name, log.total_prompt_tokens, is_completion=False + ) + result += get_openai_token_cost_for_model( + self.model_name, log.total_completion_tokens, is_completion=True + ) + return result + except Exception as e: + print(f"Error calculating usage cost: {e}") + return None diff --git a/backend/Agents/gpt_engineer/core/version_manager.py b/backend/Agents/gpt_engineer/core/version_manager.py new file mode 100644 index 000000000..02ffe9920 --- /dev/null +++ b/backend/Agents/gpt_engineer/core/version_manager.py @@ -0,0 +1,30 @@ +""" +Version Manager Module + +This module provides an abstract base class for a version manager that handles the creation of snapshots +for code. Implementations of this class are expected to provide methods to create a snapshot of the given +code and return a reference to it. +""" +from abc import ABC, abstractmethod +from pathlib import Path +from typing import Union + +from Agents.gpt_engineer.core.files_dict import FilesDict + + +class BaseVersionManager(ABC): + """ + Abstract base class for a version manager. + + Defines the interface for version managers that handle the creation of snapshots for code. + Implementations of this class are expected to provide methods to create a snapshot of the given + code and return a reference to it. + """ + + @abstractmethod + def __init__(self, path: Union[str, Path]): + pass + + @abstractmethod + def snapshot(self, files_dict: FilesDict) -> str: + pass diff --git a/backend/Agents/gpt_engineer/preprompts/clarify b/backend/Agents/gpt_engineer/preprompts/clarify new file mode 100644 index 000000000..5fae0da39 --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/clarify @@ -0,0 +1,3 @@ +Given some instructions, determine if anything needs to be clarified, do not carry them out. +You can make reasonable assumptions, but if you are unsure, ask a single clarification question. +Otherwise state: "Nothing to clarify" diff --git a/backend/Agents/gpt_engineer/preprompts/entrypoint b/backend/Agents/gpt_engineer/preprompts/entrypoint new file mode 100644 index 000000000..455aeb6e0 --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/entrypoint @@ -0,0 +1,9 @@ +You will receive information about a React + Vite codebase located in the current folder on disk. +When asked, provide a series of terminal commands to set up and run the project. + +* ALWAYS use React with Vite as the framework and build tool +* NEVER use raw HTML, CSS, and JavaScript files +* NEVER install dependencies globally +* NEVER use `sudo` in any commands +* Use example values (for instance, `.` for the target folder) instead of placeholders +* Provide only the necessary shell commands in code blocks; do not include explanations or comments diff --git a/backend/Agents/gpt_engineer/preprompts/file_format b/backend/Agents/gpt_engineer/preprompts/file_format new file mode 100644 index 000000000..ca0c3dbf6 --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/file_format @@ -0,0 +1,67 @@ +You will output the content of each file necessary to achieve the goal, including **ALL** code. +Represent files like so: + +`FILENAME` +``` +CODE +``` + +The following tokens must be replaced like so: + +FILENAME is the lowercase combined path and file name including the file extension +CODE is the code in the file + +Example representation of a file: + +`src/components/features.tsx` +``` +import React from 'react'; + +const featuresData = [ + { title: 'CodeDocumentation', description: 'Generate clear, comprehensive documentation for your code bases. JSDoc, README files, and API docs.' }, + { title: 'CodeFrontEnd', description: 'Assistance with UI/UX development, component design, responsive layouts and frontend optimizations.' }, + { title: 'CodePreProject', description: 'Help with project setup, architecture decisions, tech stack selection, and boilerplates.' }, + { title: 'CodeRefactoring', description: 'Transform messy code into clean, maintainable solutions following best practices.' }, + { title: 'CodeReview', description: 'Thorough code reviews identifying bugs, security issues, and performance bottlenecks.' }, + { title: 'CodeUnittests', description: 'Generate comprehensive test suites to ensure your code works as expected.' }, + { title: 'Decisions', description: 'Weigh pros and cons of technology choices and architectural decisions.' }, + { title: 'ProjectRequirements', description: 'Help define project scope, user stories, and acceptance criteria.' }, + { title: 'ProjectSchedule', description: 'Estimate timelines and create project roadmaps with realistic milestones.' }, +]; + +const Features: React.FC = () => ( +
    +
    +
    +

    Specialized AI Agents

    +

    + Each agent is trained specifically for its domain to deliver expert-level assistance +

    +
    +
    + {featuresData.map((feature) => ( +
    +

    {feature.title}

    +

    {feature.description}

    +
    + ))} +
    +
    +
    +); + +export default Features; +``` + + +Only the above representation file is accepted; do not add or invent any other representation file. +Any other representation file are unacceptable; use only +`FILENAME` +``` +**CODE** +``` + +All content must be written in English, even if the request comes in other languages. + +Do not comment on what every file does. Please note that the code should be fully functional. No placeholders. + diff --git a/backend/Agents/gpt_engineer/preprompts/file_format_diff b/backend/Agents/gpt_engineer/preprompts/file_format_diff new file mode 100644 index 000000000..486e76a2e --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/file_format_diff @@ -0,0 +1,41 @@ +You will output the content of each file necessary to achieve the goal, including ALL code. +Output requested code changes and new code in the unified "git diff" syntax. Example: + +```diff +--- example.txt ++++ example.txt +@@ -6,3 +6,4 @@ + line content A + line content B ++ new line added +- original line X ++ modified line X with changes +@@ -26,4 +27,5 @@ + condition check: +- action for condition A ++ if certain condition is met: ++ alternative action for condition A + another condition check: +- action for condition B ++ modified action for condition B +``` + +Example of a git diff creating a new file: + +```diff +--- /dev/null ++++ new_file.txt +@@ -0,0 +1,3 @@ ++First example line ++ ++Last example line +``` + +RULES: +-A program will apply the diffs you generate exactly to the code, so diffs must be precise and unambiguous! +-Every diff must be fenced with triple backtick ```. +-The file names at the beginning of a diff, (lines starting with --- and +++) is the relative path to the file before and after the diff. +-LINES TO BE REMOVED (starting with single -) AND LINES TO BE RETAIN (no starting symbol) HAVE TO REPLICATE THE DIFFED HUNK OF THE CODE EXACTLY LINE BY LINE. KEEP THE NUMBER OF RETAIN LINES SMALL IF POSSIBLE. +-EACH LINE IN THE SOURCE FILES STARTS WITH A LINE NUMBER, WHICH IS NOT PART OF THE SOURCE CODE. NEVER TRANSFER THESE LINE NUMBERS TO THE DIFF HUNKS. +-AVOID STARTING A HUNK WITH AN EMPTY LINE. +-ENSURE ALL CHANGES ARE PROVIDED IN A SINGLE DIFF CHUNK PER FILE TO PREVENT MULTIPLE DIFFS ON THE SAME FILE. diff --git a/backend/Agents/gpt_engineer/preprompts/file_format_fix b/backend/Agents/gpt_engineer/preprompts/file_format_fix new file mode 100644 index 000000000..69dade918 --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/file_format_fix @@ -0,0 +1,22 @@ +Please fix any errors in the code above. + +You will output the content of each new or changed. +Represent files like so: + +FILENAME +``` +CODE +``` + +The following tokens must be replaced like so: +FILENAME is the lowercase combined path and file name including the file extension +CODE is the code in the file + +Example representation of a file: + +src/hello_world.py +``` +print("Hello World") +``` + +Do not comment on what every file does. Please note that the code should be fully functional. No placeholders. diff --git a/backend/Agents/gpt_engineer/preprompts/generate b/backend/Agents/gpt_engineer/preprompts/generate new file mode 100644 index 000000000..5683397ca --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/generate @@ -0,0 +1,99 @@ + +Think step by step and reason to the correct decisions to ensure a fully working implementation. + + +1. First, list the names of the core React components, utility functions, and hooks that will be necessary, accompanied by a brief comment on each one’s purpose. +2. Follow the UI/UX Excellence Guidelines: + - Implement consistent design system (colors, typography, spacing) + - Add hover/focus/active states to all interactive elements + - Include loading states with skeleton screens + - Create delightful empty states + - Ensure WCAG 2.1 AA accessibility compliance + - Use realistic mock data from data/mock/ directory + - Implement responsive design (mobile-first) + - Add smooth transitions and microinteractions + +3. Follow file format guidelines: + You will output the content of each file necessary to achieve the goal, including **ALL** code. + Represent files like so: + + `FILENAME` + ``` + CODE + ``` + + The following tokens must be replaced like so: + + FILENAME is the lowercase combined path and file name including the file extension + CODE is the code in the file + + Example representation of a file: + + `src/components/features.tsx` + ``` + import React from 'react'; + + const featuresData = [ + { title: 'CodeDocumentation', description: 'Generate clear, comprehensive documentation for your code bases. JSDoc, README files, and API docs.' }, + { title: 'CodeFrontEnd', description: 'Assistance with UI/UX development, component design, responsive layouts and frontend optimizations.' }, + { title: 'CodePreProject', description: 'Help with project setup, architecture decisions, tech stack selection, and boilerplates.' }, + { title: 'CodeRefactoring', description: 'Transform messy code into clean, maintainable solutions following best practices.' }, + { title: 'CodeReview', description: 'Thorough code reviews identifying bugs, security issues, and performance bottlenecks.' }, + { title: 'CodeUnittests', description: 'Generate comprehensive test suites to ensure your code works as expected.' }, + { title: 'Decisions', description: 'Weigh pros and cons of technology choices and architectural decisions.' }, + { title: 'ProjectRequirements', description: 'Help define project scope, user stories, and acceptance criteria.' }, + { title: 'ProjectSchedule', description: 'Estimate timelines and create project roadmaps with realistic milestones.' }, + ]; + + const Features: React.FC = () => ( +
    +
    +
    +

    Specialized AI Agents

    +

    + Each agent is trained specifically for its domain to deliver expert-level assistance +

    +
    +
    + {featuresData.map((feature) => ( +
    +

    {feature.title}

    +

    {feature.description}

    +
    + ))} +
    +
    +
    + ); + + export default Features; + ``` + + + Only the above representation file is accepted; do not add or invent any other representation file. + Any other representation file are unacceptable; use only + `FILENAME` + ``` + **CODE** + ``` + + All content must be written in English, even if the request comes in other languages. + + Do not comment on what every file does. Please note that the code should be fully functional. No placeholders. + + + + +4. The file creation order must start with the entry point `src/main.jsx` `index.css` `App.jsx` `App.css`, then proceed to any modules it imports, and so on through the dependency graph. +5. Follow React and Vite best practices for file and folder naming conventions. +6. Include all necessary imports, TypeScript types (if using TS), and ensure compatibility across files. +7. If uncertain about specifics, implement a plausible version that clearly demonstrates the feature. +8. Provide a `package.json` and a `vite.config.js` (or `vite.config.ts`) with all required dependencies and scripts. +9. Provide an `eslint.config.js` and `index.html` and `README.md` as per the project +10. Before concluding, verify that all parts of the architecture (components, utilities, configuration) are present and linked correctly. + + + +When everything is complete, end your response with: + +This concludes a fully working implementation. diff --git a/backend/Agents/gpt_engineer/preprompts/improve b/backend/Agents/gpt_engineer/preprompts/improve new file mode 100644 index 000000000..a8f5f0825 --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/improve @@ -0,0 +1,17 @@ +Think step by step and reason yourself to the correct decisions to make sure we get it right. +Make changes to existing code and implement new code in the unified git diff syntax. When implementing new code, First lay out the names of the core classes, functions, methods that will be necessary, As well as a quick comment on their purpose. + +FILE_FORMAT + +As far as compatible with the user request, start with the "entrypoint" file, then go to the ones that are imported by that file, and so on. +Please note that the code should be fully functional. No placeholders. + +Follow a language and framework appropriate best practice file naming convention. +Make sure that files contain all imports, types etc. The code should be fully functional. Make sure that code in different files are compatible with each other. +Ensure to implement all code, if you are unsure, write a plausible implementation. +Include module dependency or package manager dependency definition file. +Before you finish, double check that all parts of the architecture is present in the files. + +When you are done, write finish with: + +"this concludes a fully working implementation". diff --git a/backend/Agents/gpt_engineer/preprompts/philosophy b/backend/Agents/gpt_engineer/preprompts/philosophy new file mode 100644 index 000000000..74231021c --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/philosophy @@ -0,0 +1,12 @@ +Almost always put different classes in different files. +Always use the programming language the user asks for. +For Python, you always create an appropriate requirements.txt file. +For NodeJS, you always create an appropriate package.json file. +Always add a comment briefly describing the purpose of the function definition. +Add comments explaining very complex bits of logic. +Always follow the best practices for the requested languages for folder/file structure and how to package the project. + + +Python toolbelt preferences: +- pytest +- dataclasses diff --git a/backend/Agents/gpt_engineer/preprompts/roadmap b/backend/Agents/gpt_engineer/preprompts/roadmap new file mode 100644 index 000000000..177bfdb5a --- /dev/null +++ b/backend/Agents/gpt_engineer/preprompts/roadmap @@ -0,0 +1,2 @@ +You will get instructions for code to write. +You will write a very long answer. Make sure that every detail of the architecture is, in the end, implemented as code. diff --git a/backend/Agents/gpt_engineer/teste_ai_strutured_output.py b/backend/Agents/gpt_engineer/teste_ai_strutured_output.py new file mode 100644 index 000000000..415516dfd --- /dev/null +++ b/backend/Agents/gpt_engineer/teste_ai_strutured_output.py @@ -0,0 +1,79 @@ +import os +from dotenv import load_dotenv +from langchain_openai import ChatOpenAI +from pydantic import BaseModel, Field + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'keys.env')) + +# Defina o schema Pydantic para o diff +class DiffOutput(BaseModel): + filename: str + diff: str + +# Cria o LLM +llm = ChatOpenAI( + model="gpt-5-nano", + temperature=0, + api_key=os.getenv("OPENAI_API_KEY") +) + +# Bind do LLM a um parser Pydantic +structured_llm = llm.with_structured_output(DiffOutput) + +# Prompt +prompt = """Crie um diff que adicione a função hello_world() em main.py + + + + +You will output the content of each file necessary to achieve the goal, including ALL code. +Output requested code changes and new code in the unified "git diff" syntax. Example: + +```diff +--- example.txt ++++ example.txt +@@ -6,3 +6,4 @@ + line content A + line content B ++ new line added +- original line X ++ modified line X with changes +@@ -26,4 +27,5 @@ + condition check: +- action for condition A ++ if certain condition is met: ++ alternative action for condition A + another condition check: +- action for condition B ++ modified action for condition B +``` + +Example of a git diff creating a new file: + +```diff +--- /dev/null ++++ new_file.txt +@@ -0,0 +1,3 @@ ++First example line ++ ++Last example line +``` + +RULES: +-A program will apply the diffs you generate exactly to the code, so diffs must be precise and unambiguous! +-Every diff must be fenced with triple backtick ```. +-The file names at the beginning of a diff, (lines starting with --- and +++) is the relative path to the file before and after the diff. +-LINES TO BE REMOVED (starting with single -) AND LINES TO BE RETAIN (no starting symbol) HAVE TO REPLICATE THE DIFFED HUNK OF THE CODE EXACTLY LINE BY LINE. KEEP THE NUMBER OF RETAIN LINES SMALL IF POSSIBLE. +-EACH LINE IN THE SOURCE FILES STARTS WITH A LINE NUMBER, WHICH IS NOT PART OF THE SOURCE CODE. NEVER TRANSFER THESE LINE NUMBERS TO THE DIFF HUNKS. +-AVOID STARTING A HUNK WITH AN EMPTY LINE. +-ENSURE ALL CHANGES ARE PROVIDED IN A SINGLE DIFF CHUNK PER FILE TO PREVENT MULTIPLE DIFFS ON THE SAME FILE. + +""" + +# Chamada +result = structured_llm.invoke(prompt) + +# O resultado já vem como objeto DiffOutput +print(result.filename) +print(result.diff) diff --git a/backend/Agents/gpt_engineer/teste_ai_tools.py b/backend/Agents/gpt_engineer/teste_ai_tools.py new file mode 100644 index 000000000..268ad3747 --- /dev/null +++ b/backend/Agents/gpt_engineer/teste_ai_tools.py @@ -0,0 +1,58 @@ +# Back-End\Agents\gpt_engineer\teste_ai.py +import os +from dotenv import load_dotenv +from langchain_openai import ChatOpenAI +from pydantic import BaseModel, Field +import os +import logging + + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'keys.env')) + +logger = logging.getLogger(__name__) + +# Tool de teste +class AutosaveTool(BaseModel): + """Tool para salvar código Python em arquivo""" + code: str = Field(..., description="Código Python a ser salvo") + path: str = Field(..., description="Caminho completo do arquivo onde o código será salvo") + +def autosave(data: AutosaveTool) -> dict: + """Função que salva o código, chamada pela tool do LLM""" + try: + os.makedirs(os.path.dirname(data.path), exist_ok=True) + with open(data.path, 'w', encoding='utf-8') as f: + f.write(data.code) + logger.info(f"Arquivo salvo com sucesso: {data.path}") + return {"status": "success", "file_path": data.path} + except Exception as e: + logger.error(f"Erro ao salvar arquivo {data.path}: {e}") + return {"status": "error", "message": str(e)} + +# Instancia LLM +llm = ChatOpenAI( + model="gpt-5-nano", + temperature=0, + max_tokens=None, + max_retries=2, + streaming=False +) + +# Bind da tool +llm_with_tools = llm.bind_tools([AutosaveTool]) + +# Prompt de teste +prompt = "Salve o seguinte código em ./teste.py:\nprint('Oi Mundo!')" + +# Invoca o LLM +ai_msg = llm_with_tools.invoke(prompt) +print("Tool calls retornadas pelo LLM:", ai_msg.tool_calls) + +# Executa as tool calls +for tool_call in getattr(ai_msg, "tool_calls", []): + tool_name = tool_call.get("name") + args = tool_call.get("args", {}) + if tool_name == "AutosaveTool": + result = autosave(AutosaveTool(**args)) + print("Resultado da tool:", result) diff --git a/backend/Agents/gpt_engineer/tools/__init__.py b/backend/Agents/gpt_engineer/tools/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Agents/gpt_engineer/tools/custom_steps.py b/backend/Agents/gpt_engineer/tools/custom_steps.py new file mode 100644 index 000000000..4ae38b413 --- /dev/null +++ b/backend/Agents/gpt_engineer/tools/custom_steps.py @@ -0,0 +1,233 @@ +from platform import platform +from sys import version_info +from typing import List, Union + +from langchain.schema import AIMessage, HumanMessage, SystemMessage + +from Agents.gpt_engineer.core.ai import AI +from Agents.gpt_engineer.core.base_execution_env import BaseExecutionEnv +from Agents.gpt_engineer.core.base_memory import BaseMemory +from Agents.gpt_engineer.core.chat_to_files import chat_to_files_dict +from Agents.gpt_engineer.core.default.paths import CODE_GEN_LOG_FILE, ENTRYPOINT_FILE +from Agents.gpt_engineer.core.default.steps import curr_fn, improve_fn, setup_sys_prompt +from Agents.gpt_engineer.core.files_dict import FilesDict +from Agents.gpt_engineer.core.preprompts_holder import PrepromptsHolder +from Agents.gpt_engineer.core.prompt import Prompt + +# Type hint for chat messages +Message = Union[AIMessage, HumanMessage, SystemMessage] +MAX_SELF_HEAL_ATTEMPTS = 10 + + +def get_platform_info() -> str: + """ + Returns a string containing the OS and Python version information. + + This function is used for self-healing by providing information about the current + operating system and Python version. It assumes that the Python version in the + virtual environment is the one being used. + + Returns: + str: A string containing the OS and Python version information. + """ + + v = version_info + a = f"Python Version: {v.major}.{v.minor}.{v.micro}" + b = f"\nOS: {platform()}\n" + return a + b + + +def self_heal( + ai: AI, + execution_env: BaseExecutionEnv, + files_dict: FilesDict, + prompt: Prompt = None, + preprompts_holder: PrepromptsHolder = None, + memory: BaseMemory = None, + diff_timeout=3, +) -> FilesDict: + """ + Attempts to execute the code from the entrypoint and if it fails, sends the error output back to the AI with instructions to fix. + + Parameters + ---------- + ai : AI + An instance of the AI model. + execution_env : BaseExecutionEnv + The execution environment where the code is run. + files_dict : FilesDict + A dictionary of file names to their contents. + preprompts_holder : PrepromptsHolder, optional + A holder for preprompt messages. + + Returns + ------- + FilesDict + The updated files dictionary after self-healing attempts. + + Raises + ------ + FileNotFoundError + If the required entrypoint file does not exist in the code. + AssertionError + If the preprompts_holder is None. + + Notes + ----- + This code will make `MAX_SELF_HEAL_ATTEMPTS` to try and fix the code + before giving up. + This makes the assuption that the previous step was `gen_entrypoint`, + this code could work with `simple_gen`, or `gen_clarified_code` as well. + """ + + # step 1. execute the entrypoint + # log_path = dbs.workspace.path / "log.txt" + if ENTRYPOINT_FILE not in files_dict: + raise FileNotFoundError( + "The required entrypoint " + + ENTRYPOINT_FILE + + " does not exist in the code." + ) + + attempts = 0 + if preprompts_holder is None: + raise AssertionError("Prepromptsholder required for self-heal") + while attempts < MAX_SELF_HEAL_ATTEMPTS: + attempts += 1 + timed_out = False + + # Start the process + execution_env.upload(files_dict) + p = execution_env.popen(files_dict[ENTRYPOINT_FILE]) + + # Wait for the process to complete and get output + stdout_full, stderr_full = p.communicate() + + if (p.returncode != 0 and p.returncode != 2) and not timed_out: + print("run.sh failed. The log is:") + print(stdout_full.decode("utf-8")) + print(stderr_full.decode("utf-8")) + + new_prompt = Prompt( + f"A program with this specification was requested:\n{prompt}\n, but running it produced the following output:\n{stdout_full}\n and the following errors:\n{stderr_full}. Please change it so that it fulfills the requirements." + ) + files_dict = improve_fn( + ai, new_prompt, files_dict, memory, preprompts_holder, diff_timeout + ) + else: + break + return files_dict + + +def clarified_gen( + ai: AI, prompt: Prompt, memory: BaseMemory, preprompts_holder: PrepromptsHolder +) -> FilesDict: + """ + Generates code based on clarifications obtained from the user and saves it to a specified workspace. + + Parameters + ---------- + ai : AI + An instance of the AI model, responsible for processing and generating the code. + prompt : str + The user's clarification prompt. + memory : BaseMemory + The memory instance where the generated code log is saved. + preprompts_holder : PrepromptsHolder + A holder for preprompt messages. + + Returns + ------- + FilesDict + A dictionary of file names to their contents generated by the AI. + """ + + preprompts = preprompts_holder.get_preprompts() + messages: List[Message] = [SystemMessage(content=preprompts["clarify"])] + user_input = prompt.text # clarify does not work with vision right now + while True: + messages = ai.next(messages, user_input, step_name=curr_fn()) + msg = messages[-1].content.strip() + + if "nothing to clarify" in msg.lower(): + break + + if msg.lower().startswith("no"): + print("Nothing to clarify.") + break + + print('(answer in text, or "c" to move on)\n') + user_input = input("") + print() + + if not user_input or user_input == "c": + print("(letting gpt-engineer make its own assumptions)") + print() + messages = ai.next( + messages, + "Make your own assumptions and state them explicitly before starting", + step_name=curr_fn(), + ) + print() + + user_input += """ + \n\n + Is anything else unclear? If yes, ask another question.\n + Otherwise state: "Nothing to clarify" + """ + + print() + + messages = [ + SystemMessage(content=setup_sys_prompt(preprompts)), + ] + messages[ + 1: + ] # skip the first clarify message, which was the original clarify priming prompt + messages = ai.next( + messages, + preprompts["generate"].replace("FILE_FORMAT", preprompts["file_format"]), + step_name=curr_fn(), + ) + print() + chat = messages[-1].content.strip() + memory.log(CODE_GEN_LOG_FILE, "\n\n".join(x.pretty_repr() for x in messages)) + files_dict = chat_to_files_dict(chat) + return files_dict + + +def lite_gen( + ai: AI, prompt: Prompt, memory: BaseMemory, preprompts_holder: PrepromptsHolder +) -> FilesDict: + """ + Executes the AI model using the main prompt and saves the generated results to the specified workspace. + + Parameters + ---------- + ai : AI + An instance of the AI model. + prompt : str + The main prompt to feed to the AI model. + memory : BaseMemory + The memory instance where the generated code log is saved. + preprompts_holder : PrepromptsHolder + A holder for preprompt messages. + + Returns + ------- + FilesDict + A dictionary of file names to their contents generated by the AI. + + Notes + ----- + The function assumes the `ai.start` method and the `to_files` utility to be correctly + set up and functional. Ensure these prerequisites before invoking `lite_gen`. + """ + + preprompts = preprompts_holder.get_preprompts() + messages = ai.start( + prompt.to_langchain_content(), preprompts["file_format"], step_name=curr_fn() + ) + chat = messages[-1].content.strip() + memory.log(CODE_GEN_LOG_FILE, "\n\n".join(x.pretty_repr() for x in messages)) + files_dict = chat_to_files_dict(chat) + return files_dict diff --git a/backend/Agents/gpt_engineer/tools/supported_languages.py b/backend/Agents/gpt_engineer/tools/supported_languages.py new file mode 100644 index 000000000..7644540ca --- /dev/null +++ b/backend/Agents/gpt_engineer/tools/supported_languages.py @@ -0,0 +1,58 @@ +""" +This module defines the supported programming languages for document chunking. + +Variables: + SUPPORTED_LANGUAGES (list): A list of dictionaries defining supported languages. +""" + +SUPPORTED_LANGUAGES = [ + {"name": "Python", "extensions": [".py"], "tree_sitter_name": "python"}, + { + "name": "JavaScript", + "extensions": [".js", ".mjs"], + "tree_sitter_name": "javascript", + }, + {"name": "HTML", "extensions": [".html", ".htm"], "tree_sitter_name": "html"}, + {"name": "CSS", "extensions": [".css"], "tree_sitter_name": "css"}, + {"name": "Java", "extensions": [".java"], "tree_sitter_name": "java"}, + {"name": "C#", "extensions": [".cs"], "tree_sitter_name": "c_sharp"}, + { + "name": "TypeScript", + "extensions": [".ts", ".tsx"], + "tree_sitter_name": "typescript", + }, + {"name": "Ruby", "extensions": [".rb", ".erb"], "tree_sitter_name": "ruby"}, + { + "name": "PHP", + "extensions": [ + ".php", + ".phtml", + ".php3", + ".php4", + ".php5", + ".php7", + ".phps", + ".php-s", + ".pht", + ".phar", + ], + "tree_sitter_name": "php", + }, + {"name": "Go", "extensions": [".go"], "tree_sitter_name": "go"}, + {"name": "Kotlin", "extensions": [".kt", ".kts"], "tree_sitter_name": "kotlin"}, + {"name": "Rust", "extensions": [".rs"], "tree_sitter_name": "rust"}, + { + "name": "C++", + "extensions": [".cpp", ".cc", ".cxx", ".h", ".hpp", ".hxx"], + "tree_sitter_name": "cpp", + }, + {"name": "C", "extensions": [".c", ".h"], "tree_sitter_name": "c"}, + {"name": "Markdown", "extensions": [".md"], "tree_sitter_name": "md"}, + {"name": "Arduino C", "extensions": [".ino"], "tree_sitter_name": "ino"} + # ---- the following are not supported by the current code chunker implementation ---- + # { + # "name": "Swift", + # "extensions": [".swift"], + # "tree_sitter_name": "swift" + # }, +] diff --git a/backend/Dockerfile b/backend/Dockerfile new file mode 100644 index 000000000..1045f2848 --- /dev/null +++ b/backend/Dockerfile @@ -0,0 +1,25 @@ +FROM python:3.11-slim + +RUN apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + curl \ + jq \ + libffi-dev \ + build-essential \ + gcc \ + g++ \ + linux-headers-amd64 \ + libssl-dev \ + && rm -rf /var/lib/apt/lists/* + +RUN apt-get update && apt-get install -y \ + ca-certificates \ + curl \ + gnupg + +WORKDIR /app + +COPY requirements.txt /app/ +RUN pip install --no-cache-dir --upgrade pip +RUN pip install --no-cache-dir -r requirements.txt +COPY . /app diff --git a/Back-End/EmailTemplates/FalhaDeProjeto.html b/backend/EmailTemplates/FalhaDeProjeto.html similarity index 100% rename from Back-End/EmailTemplates/FalhaDeProjeto.html rename to backend/EmailTemplates/FalhaDeProjeto.html diff --git a/Back-End/EmailTemplates/SucessoDeProjeto.html b/backend/EmailTemplates/SucessoDeProjeto.html similarity index 100% rename from Back-End/EmailTemplates/SucessoDeProjeto.html rename to backend/EmailTemplates/SucessoDeProjeto.html diff --git a/Back-End/EmailTemplates/email_account_success.html b/backend/EmailTemplates/email_account_success.html similarity index 100% rename from Back-End/EmailTemplates/email_account_success.html rename to backend/EmailTemplates/email_account_success.html diff --git a/Back-End/EmailTemplates/email_plan_upgraded.html b/backend/EmailTemplates/email_plan_upgraded.html similarity index 100% rename from Back-End/EmailTemplates/email_plan_upgraded.html rename to backend/EmailTemplates/email_plan_upgraded.html diff --git a/Back-End/EmailTemplates/email_tiktok_fail.html b/backend/EmailTemplates/email_tiktok_fail.html similarity index 100% rename from Back-End/EmailTemplates/email_tiktok_fail.html rename to backend/EmailTemplates/email_tiktok_fail.html diff --git a/Back-End/EmailTemplates/email_youtube_fail.html b/backend/EmailTemplates/email_youtube_fail.html similarity index 100% rename from Back-End/EmailTemplates/email_youtube_fail.html rename to backend/EmailTemplates/email_youtube_fail.html diff --git a/Back-End/EmailTemplates/server_limit.html b/backend/EmailTemplates/server_limit.html similarity index 100% rename from Back-End/EmailTemplates/server_limit.html rename to backend/EmailTemplates/server_limit.html diff --git a/Back-End/EmailTemplates/teste.html b/backend/EmailTemplates/teste.html similarity index 100% rename from Back-End/EmailTemplates/teste.html rename to backend/EmailTemplates/teste.html diff --git a/backend/Functions/autogetcurrenttime/autogetcurrenttime.py b/backend/Functions/autogetcurrenttime/autogetcurrenttime.py new file mode 100644 index 000000000..6c6ca2c8b --- /dev/null +++ b/backend/Functions/autogetcurrenttime/autogetcurrenttime.py @@ -0,0 +1,66 @@ +from typing_extensions import TypedDict, Any +from agents import Agent, ModelSettings, function_tool, FileSearchTool, WebSearchTool, Runner +from datetime import datetime +import pytz + +class GetTimeOptions(TypedDict, total=False): + timezone: str # Ex: "America/Sao_Paulo", "UTC", etc. + format: str # Ex: "%Y-%m-%d %H:%M:%S" ou "iso" + +@function_tool +def autogetcurrenttime(options: GetTimeOptions = None) -> dict[str, Any]: + """ + Retorna o horário atual com base no timezone e formato especificados. + + Parameters + ---------- + options : dict (opcional) + { + "timezone": "America/Sao_Paulo", # timezone válido do pytz + "format": "%Y-%m-%d %H:%M:%S" # ou "iso" para formato ISO 8601 + } + + Returns + ------- + dict: + { + "status": "success", + "datetime": "2025-10-07 12:34:56", + "timezone": "America/Sao_Paulo" + } + """ + try: + # Valores padrão + if options is None: + options = {} + + tz_name = options.get("timezone", "America/Sao_Paulo") + fmt = options.get("format", "%Y-%m-%d %H:%M:%S") + + # Configurar timezone + try: + tz = pytz.timezone(tz_name) + except Exception: + tz = pytz.timezone("UTC") + tz_name = "UTC" + + now = datetime.now(tz) + + # Formatar saída + if fmt.lower() == "iso": + now_str = now.isoformat() + else: + now_str = now.strftime(fmt) + + return { + "status": "success", + "datetime": now_str, + "timezone": tz_name + } + + except Exception as e: + print(f"💥 Erro em autogetcurrenttime: {e}") + return { + "status": "error", + "error": str(e) + } diff --git a/backend/Functions/autolistlocalproject/autolistlocalproject.py b/backend/Functions/autolistlocalproject/autolistlocalproject.py new file mode 100644 index 000000000..a78f7602d --- /dev/null +++ b/backend/Functions/autolistlocalproject/autolistlocalproject.py @@ -0,0 +1,47 @@ +import os +from typing_extensions import TypedDict, Any , Union +from agents import Agent, ModelSettings, function_tool, FileSearchTool, WebSearchTool, Runner + + +def listar_arquivos(pasta, ignorar_ocultos=True): + caminhos_arquivos = [] + for root, dirs, files in os.walk(pasta): + if ignorar_ocultos: + # Ignora diretórios ocultos + dirs[:] = [d for d in dirs if not d.startswith('.')] + files = [f for f in files if not f.startswith('.')] + for nome_arquivo in files: + caminho_completo = os.path.join(root, nome_arquivo) + caminhos_arquivos.append(caminho_completo) + return caminhos_arquivos + +def ler_conteudos_arquivos(caminhos_arquivos): + conteudos = [] + for caminho in caminhos_arquivos: + try: + with open(caminho, 'r', encoding='utf-8') as arquivo: + conteudo = arquivo.read() + except UnicodeDecodeError: + # Caso o arquivo não seja texto ou não seja UTF-8, ignora ou trata como quiser + conteudo = "[ARQUIVO BINÁRIO OU COM CODIFICAÇÃO DESCONHECIDA]" + conteudos.append(conteudo) + return conteudos + +class FunctionData(TypedDict): + path_project: str + +@function_tool +def autolistlocalproject(data: FunctionData): + try: + data_FINAL = data["data"] + path_project = data_FINAL["path_project"] + except Exception as eroo1: + print(eroo1) + path_project = data["path_project"] + caminhos_arquivos = listar_arquivos(path_project) + conteudos_arquivos = ler_conteudos_arquivos(caminhos_arquivos) + data = { + "paths": caminhos_arquivos, + "contents": conteudos_arquivos, + } + return data \ No newline at end of file diff --git a/backend/Functions/autosave/autosave.py b/backend/Functions/autosave/autosave.py new file mode 100644 index 000000000..675182fdf --- /dev/null +++ b/backend/Functions/autosave/autosave.py @@ -0,0 +1,60 @@ + +from typing_extensions import TypedDict, Any +from agents import Agent, ModelSettings, function_tool, FileSearchTool, WebSearchTool, Runner +import os +class AutosaveData(TypedDict): + code: str + path: str + +@function_tool +def autosave(data: AutosaveData): + """ + Save the provided Python code string to a file. + + Parameters: + ---------- + code (str): The Python code to save. + path (str): The name of the file where the code will be saved. + + Returns: + ------- + None + """ + try: + data_FINAL = data["data"] + code = data_FINAL["code"] + path = data_FINAL["path"] + except Exception as eroo1: + print(eroo1) + code = data["code"] + path = data["path"] + print("autosave Prestes a iniciar") + try: + print(f"autosave {path}") + + os.makedirs(os.path.dirname(path), exist_ok=True) + + with open(path, 'w', encoding="utf-8") as file: + file.write(code) + + data_return = { + "status": "success", + "file_path": path, + } + + + return data_return + + + except Exception as e: + print(e) + with open(path, 'x', encoding="utf-8") as file: + file.write(code) + + data_return = { + "status": "success", + "file_path": path, + } + + + return data_return \ No newline at end of file diff --git a/backend/Functions/retrieve_backend_context/retrieve_backend_context.py b/backend/Functions/retrieve_backend_context/retrieve_backend_context.py new file mode 100644 index 000000000..d8b0874f2 --- /dev/null +++ b/backend/Functions/retrieve_backend_context/retrieve_backend_context.py @@ -0,0 +1,36 @@ +from pydantic import BaseModel +import os +from agents import Agent, Runner, function_tool, SQLiteSession +import openai +import chromadb +from openai import OpenAI +from dotenv import load_dotenv +# load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), "../", "../", "../", 'Keys', 'keys.env')) + +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") +openai.api_key = OPENAI_API_KEY +client = OpenAI(api_key=OPENAI_API_KEY) + +@function_tool +def retrieve_backend_context(query: str, k: int = 4, path: str = "./CodeKnowledge/chroma_store", name: str ='backend_skeleton') -> str: + client_chroma = chromadb.PersistentClient(path=path) + collection = client_chroma.get_collection(name) + + q_emb = client.embeddings.create( + model="text-embedding-3-small", + input=[query] + ).data[0].embedding + + results = collection.query( + query_embeddings=[q_emb], + n_results=k, + include=["documents", "metadatas"] + ) + + docs = results["documents"][0] + joined = "\n\n---\n\n".join(docs) + return f"Contexto recuperado (top {k}):\n\n{joined}" + +# if __name__ == '__main__': +# content = retrieve_backend_context("Flask blueprint authentication patterns: user model, registration, login, password hashing, JWT tokens, SQLAlchemy integration", 8, path=os.path.join(os.path.dirname(__file__), 'CodeKnowledge', 'chroma_store')) +# print(content) \ No newline at end of file diff --git a/backend/Functions/task_sheduler/task_sheduler.py b/backend/Functions/task_sheduler/task_sheduler.py new file mode 100644 index 000000000..a9fbd6f5e --- /dev/null +++ b/backend/Functions/task_sheduler/task_sheduler.py @@ -0,0 +1,64 @@ +import requests +from datetime import datetime, timedelta +import pytz +from pydantic import BaseModel +import os +from agents import Agent, Runner, function_tool, SQLiteSession +import openai +import chromadb +from openai import OpenAI +from dotenv import load_dotenv + +@function_tool +def task_sheduler( + BACKEND_URL: str, + ACCESS_TOKEN: str, + EMPLOYER_CATEGORY: str, + SPRINT_NAME: str, + SPRINT_OBJECTIVE: str, + user_id: int = 4, + priority: int = 2, + hours: str = '1.5', + lang: str ='pt', + eta_str: str | None = None + ) -> str: + tz = pytz.timezone("America/Sao_Paulo") + if eta_str: + try: + eta = datetime.strptime(eta_str, "%Y-%m-%d %H:%M:%S") + eta = tz.localize(eta) + except ValueError: + raise ValueError("Formato de data inválido! Use 'YYYY-MM-DD HH:MM:SS'") + else: + eta = datetime.now(tz) + timedelta(minutes=2) + + print(f"⏰ Tarefa agendada para {eta.strftime('%Y-%m-%d %H:%M:%S')} (Horário de São Paulo)") + + payload = { + "user_id": user_id, + "category": EMPLOYER_CATEGORY, + "content": f"Tarefa para {SPRINT_NAME}\n\n{SPRINT_OBJECTIVE}", + "priority": priority, + "hours": hours, + "lang": lang, + "eta": eta.isoformat() # Passando ISO 8601 + } + + headers = { + "Content-Type": "application/json", + "X-API-TOKEN": ACCESS_TOKEN + } + + try: + response = requests.post(BACKEND_URL, json=payload, headers=headers) + if response.status_code == 201: + data = response.json() + print("✅ Tarefa criada com sucesso!") + print(f"🆔 ID da tarefa: {data.get('task_id')}") + print(f"📦 Status inicial: {data.get('status')}") + return f"🆔 ID da tarefa: {data.get('task_id')}" + else: + print(f"❌ Falha ao criar tarefa ({response.status_code}): {response.text}") + return f"❌ Falha ao criar tarefa ({response.status_code}): {response.text}" + except Exception as e: + print(f"💥 Erro de execução: {e}") diff --git a/Back-End/Models/mongoDB.py b/backend/Models/mongoDB.py similarity index 89% rename from Back-End/Models/mongoDB.py rename to backend/Models/mongoDB.py index 4cb78da5a..026fdfa43 100644 --- a/Back-End/Models/mongoDB.py +++ b/backend/Models/mongoDB.py @@ -15,10 +15,6 @@ mongo_db = mongo_client[MONGO_DB_NAME] logs_collection = mongo_db.logs -# ============================================================================= -# MODELOS DE BANCO DE DADOS (MongoDB) -# ============================================================================= - class Log: collection = mongo_db['logs'] diff --git a/Back-End/Models/postgreSQL.py b/backend/Models/postgreSQL.py similarity index 87% rename from Back-End/Models/postgreSQL.py rename to backend/Models/postgreSQL.py index e33b7c0d0..077c2ea76 100644 --- a/Back-End/Models/postgreSQL.py +++ b/backend/Models/postgreSQL.py @@ -5,6 +5,9 @@ import secrets import json from sqlalchemy import Numeric +from enum import Enum as PyEnum +from sqlalchemy import Text +from sqlalchemy.sql import func TOKEN_DEFAULT_EXPIRES_DAYS = 30 @@ -40,7 +43,32 @@ def create_access_token_for_user(self, expires_days: int = TOKEN_DEFAULT_EXPIRES self.expires_at = datetime.utcnow() + timedelta(days=int(expires_days)) self.revoked_at = None return token - + +class TaskStatus(PyEnum): + PENDING = "pending" + SHEDULED = "sheduled" + RUNNING = "running" + DONE = "done" + FAILED = "failed" + +class BackendTask(db.Model): + __tablename__ = "backend_tasks" + + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=True) + user_content = db.Column(db.Text, nullable=False) + category = db.Column(db.String(128), default="desenvolvimento") + commit_language = db.Column(db.String(128), default="pt") + priority = db.Column(db.Integer, default=1) + status = db.Column(db.String(128), default=TaskStatus.PENDING) + created_at = db.Column(db.DateTime(timezone=True), default=func.now()) + completed_at = db.Column(db.DateTime(timezone=True), default=func.now()) + + estimated_hours = db.Column(db.String(128), nullable=True) + total_tokens = db.Column(db.String(128), nullable=True) + result = db.Column(db.Text, nullable=True) + eta_str = db.Column(db.String(328), nullable=True) + class CommitMessage(db.Model): __tablename__ = 'commit_messages' diff --git a/backend/Modules/ChatKit/FactAgentContext.py b/backend/Modules/ChatKit/FactAgentContext.py new file mode 100644 index 000000000..3c9506896 --- /dev/null +++ b/backend/Modules/ChatKit/FactAgentContext.py @@ -0,0 +1,13 @@ + +from __future__ import annotations + +from typing import Annotated, Any, AsyncIterator, Final, Literal +from chatkit.agents import AgentContext +from pydantic import ConfigDict, Field +from .memory_store import MemoryStore + + +class FactAgentContext(AgentContext): + model_config = ConfigDict(arbitrary_types_allowed=True) + store: Annotated[MemoryStore, Field(exclude=True)] + request_context: dict[str, Any] diff --git a/backend/Modules/ChatKit/__init__.py b/backend/Modules/ChatKit/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/backend/Modules/ChatKit/chat.py b/backend/Modules/ChatKit/chat.py new file mode 100644 index 000000000..72fe8856f --- /dev/null +++ b/backend/Modules/ChatKit/chat.py @@ -0,0 +1,298 @@ +# chat.py +from __future__ import annotations + +import os +import asyncio +import inspect +import logging +from datetime import datetime +from typing import Annotated, Any, AsyncIterator, Final, Literal +from uuid import uuid4 +from agents import Agent, RunContextWrapper, Runner, ModelSettings,RunConfig, StopAtTools, function_tool, SQLiteSession +from chatkit.server import ChatKitServer, ThreadItemDoneEvent +from chatkit.agents import ( + AgentContext, + ClientToolCall, + ThreadItemConverter, + stream_agent_response, + stream_widget, + simple_to_agent_input +) +from chatkit.widgets import ( + Text, Card, Chart, BarSeries, LineSeries, XAxisConfig +) +from chatkit.types import ( + Attachment, + ClientToolCallItem, + HiddenContextItem, + ThreadItem, + ThreadMetadata, + ThreadStreamEvent, + UserMessageItem, +) +from .tools import * +from .utils import (_stream_saved_hidden, + _normalize_color_scheme, + CLIENT_THEME_TOOL_NAME, + _gen_id, + _is_tool_completion_item, + _thread_item_done, + _user_message_text + ) +from openai.types.responses import ResponseInputContentParam +from .constants import NAME, INSTRUCTIONS, MODEL +from .memory_store import MemoryStore +from .FactAgentContext import FactAgentContext +from chatkit.store import Store +from .postgres_store import PostgresStore +from api import db, app + +logging.basicConfig(level=logging.INFO) + +class SoftwareAIAgentServer(ChatKitServer[dict[str, Any]]): + """ChatKit server wired up with the fact-recording tool.""" + + def __init__(self, store: Store) -> None: # + self.store = store + # self.store: MemoryStore = MemoryStore() + super().__init__(self.store) + tools = [ + # save_fact, + # switch_theme, + # get_weather, + get_agent_activity_count, + get_gcl_threshold_config, + chart_generator + ] + self.assistant = Agent[FactAgentContext]( + model=MODEL, + name=NAME, + instructions=INSTRUCTIONS, + tools=tools, + + ) + self.short_title = Agent( + model=MODEL, + name="short title conversation", + instructions="voce tem uma responsabilidade, crie titulos curtos para as conversas", + ) + model_settings = ModelSettings( + include_usage=True, + tracing_disabled=True, + workflow_name="SoftwareAI Chat Kit", + # parallel_tool_calls=True + ) + + self.run_config = RunConfig( + model_settings=model_settings + ) + + + os.makedirs(os.path.join(os.path.dirname(__file__), 'Thread_Sessions'), exist_ok=True) + self._thread_item_converter = self._init_thread_item_converter() + + async def respond( + self, + thread: ThreadMetadata, + item: UserMessageItem | None, + context: dict[str, Any], + ) -> AsyncIterator[ThreadStreamEvent]: + if item is not None: + asyncio.create_task(self.maybe_update_thread_title(thread, item)) + + agent_context = FactAgentContext( + thread=thread, + store=self.store, + request_context=context, + ) + + logging.info(f"inference_options: {item.inference_options}") + if item.inference_options.tool_choice: + logging.info(f"inference_options id {item.inference_options.tool_choice.id}") + model_settings_with_tool = ModelSettings( + include_usage=True, + tracing_disabled=True, + workflow_name="SoftwareAI Chat Kit", + tool_choice=item.inference_options.tool_choice.id, + ) + self.run_config = RunConfig( + model_settings=model_settings_with_tool + ) + + target_item: ThreadItem | None = item + if target_item is None: + target_item = await self._latest_thread_item(thread, context) + + if target_item is None or _is_tool_completion_item(target_item): + return + + + agent_input = await self._to_agent_input(thread, target_item) + if agent_input is None: + return + + + session = SQLiteSession(f"{thread.id}", + db_path=os.path.join(os.path.dirname(__file__), + 'Thread_Sessions', + f'{thread.id}.db' + )) + + result = Runner.run_streamed( + self.assistant, + agent_input, + context=agent_context, + session=session, + run_config=self.run_config + ) + + + async for event in stream_agent_response(agent_context, result): + yield event + + # async for event in stream_widget( + # thread, + # self.chart_generator(), + # generate_id=lambda item_type: self.store.generate_item_id( + # item_type, thread, context + # ), + # ): + # yield event + + return + + async def maybe_update_thread_title( + self, + thread: ThreadMetadata, + input_item: UserMessageItem, + ) -> None: + if thread.title is not None: + return + agent_input = await simple_to_agent_input(input_item) + run = await Runner.run(self.short_title, input=agent_input) + thread.title = run.final_output + + async def to_message_content(self, _input: Attachment) -> ResponseInputContentParam: + raise RuntimeError("File attachments are not supported in this demo.") + + def _init_thread_item_converter(self) -> Any | None: + converter_cls = ThreadItemConverter + if converter_cls is None or not callable(converter_cls): + return None + + attempts: tuple[dict[str, Any], ...] = ( + {"to_message_content": self.to_message_content}, + {"message_content_converter": self.to_message_content}, + {}, + ) + + for kwargs in attempts: + try: + return converter_cls(**kwargs) + except TypeError: + continue + return None + + async def _latest_thread_item( + self, thread: ThreadMetadata, context: dict[str, Any] + ) -> ThreadItem | None: + try: + items = await self.store.load_thread_items(thread.id, None, 999, "desc", context) + logging.info(f"_latest_thread_item items {items}") + except Exception: # pragma: no cover - defensive + return None + + return items.data[0] if getattr(items, "data", None) else None + + async def _to_agent_input( + self, + thread: ThreadMetadata, + item: ThreadItem, + ) -> Any | None: + if _is_tool_completion_item(item): + return None + + converter = getattr(self, "_thread_item_converter", None) + if converter is not None: + for attr in ( + "to_input_item", + "convert", + "convert_item", + "convert_thread_item", + ): + method = getattr(converter, attr, None) + if method is None: + continue + call_args: list[Any] = [item] + call_kwargs: dict[str, Any] = {} + try: + signature = inspect.signature(method) + except (TypeError, ValueError): + signature = None + + if signature is not None: + params = [ + parameter + for parameter in signature.parameters.values() + if parameter.kind + not in ( + inspect.Parameter.VAR_POSITIONAL, + inspect.Parameter.VAR_KEYWORD, + ) + ] + if len(params) >= 2: + next_param = params[1] + if next_param.kind in ( + inspect.Parameter.POSITIONAL_ONLY, + inspect.Parameter.POSITIONAL_OR_KEYWORD, + ): + call_args.append(thread) + else: + call_kwargs[next_param.name] = thread + + result = method(*call_args, **call_kwargs) + if inspect.isawaitable(result): + return await result + return result + + if isinstance(item, UserMessageItem): + return _user_message_text(item) + + return None + + async def _add_hidden_item( + self, + thread: ThreadMetadata, + context: dict[str, Any], + content: str, + ) -> None: + await self.store.add_thread_item( + thread.id, + HiddenContextItem( + id=_gen_id("msg"), + thread_id=thread.id, + created_at=datetime.now(), + content=content, + ), + context, + ) + + + + +def create_chatkit_server() -> SoftwareAIAgentServer | None: + """Return a configured ChatKit server instance if dependencies are available.""" + # return SoftwareAIAgentServer() + try: + + + with app.app_context(): + db.create_all() + logging.info("Database tables checked and created if they did not exist.") + + store_instance = PostgresStore(database=db) + return SoftwareAIAgentServer(store=store_instance) + except Exception as e: + # Log and return None if store or server creation fails due to missing dependencies + logging.error(f"Failed to create ChatKit server with PostgresStore: {e}") + return None \ No newline at end of file diff --git a/backend/Modules/ChatKit/constants.py b/backend/Modules/ChatKit/constants.py new file mode 100644 index 000000000..ec5e05ed7 --- /dev/null +++ b/backend/Modules/ChatKit/constants.py @@ -0,0 +1,93 @@ +"""Constants and configuration used across the ChatKit backend.""" + +from __future__ import annotations + +from typing import Final + +charts = """ +**Sobre gráficos:** + +* Para criar gráficos, você **DEVE** chamar a ferramenta `chart_generator`. +* **Nunca** gere gráficos em texto; **sempre** use a ferramenta para exibir visualmente o gráfico. +* Sempre que o usuário fornecer **números, métricas ou dados comparativos** (como vendas, pedidos, usuários, etc.), você deve converter esses dados **proativamente** em um modelo compatível com `ChartData`. + +#### Estrutura esperada de dados: + +* Cada ponto do gráfico deve ser representado por um objeto `ChartPoint` (BaseModel) com as chaves: + + * `month`: nome da categoria, período ou eixo X (ex: `"Jan"`, `"App"`, `"Semana 1"`) + * `sales`: valor de vendas (float) + * `orders`: número de pedidos (float) + +* O conjunto completo é enviado dentro de um modelo `ChartData`, que inclui: + + * `id`: identificador único do gráfico (ex: `"sales_chart"`) + * `title`: título exibido no topo do gráfico + * `xAxis`: campo usado no eixo X (geralmente `"month"`) + * `points`: lista de objetos `ChartPoint` + * `series`: lista de objetos `ChartSeries` que definem o estilo de cada série + +* Cada `ChartSeries` define uma série configurável no gráfico: + + * `type`: `"bar"` ou `"line"` + * `dataKey`: campo de dados correspondente (ex: `"sales"` ou `"orders"`) + * `label`: texto da legenda exibido para a série + *(Exemplo: `ChartSeries(type="bar", dataKey="sales", label="Vendas")`)* + +#### Exemplo prático: + +Se o usuário disser: + +> "Gere um gráfico com 10 vendas e 30 pedidos no app." + +Você deve montar o dado automaticamente assim: + +```python +data = ChartData( + id="sales_chart", + title="📊 Vendas e Pedidos por Aplicativo", + xAxis="month", + points=[ + ChartPoint(month="App", sales=10, orders=30) + ], + series=[ + ChartSeries(type="bar", dataKey="sales", label="Vendas"), + ChartSeries(type="line", dataKey="orders", label="Pedidos") + ] +) +await chart_generator(ctx, data) +``` + +#### Boas práticas: + +* Sempre inclua **legendas (`label`)** e **tooltips** para melhorar a leitura do gráfico. +* Certifique-se de que as **chaves (`dataKey`)** correspondam exatamente aos campos de `ChartPoint`. +* Organize os dados para que **cada ponto represente uma entrada da lista** (`points`). +* Quando o usuário não especificar as séries, use o padrão: + + * `BarSeries` → `"Vendas"` + * `LineSeries` → `"Pedidos"` +* Após o gráfico ser exibido, explique brevemente **o que ele mostra**, mas **nunca descreva o gráfico em texto como se fosse um desenho**. + +""" + +INSTRUCTIONS: Final[str] = ( + "Você é o Guia SoftwareAI, um assistente de integração que ajuda os usuários " + + "**Métricas dos Agentes:** Quando o usuário perguntar sobre a atividade ou produtividade dos agentes, " + "como 'Quantas tarefas os agentes fizeram hoje?' ou 'Me diga o total de execuções do PR AI', você **DEVE** " + "chamar a tool `get_agent_activity_count`. Analise a string de retorno da tool e use-a para fornecer uma resposta clara e conversacional ao usuário." + "\n\n" + "**Configurações do GCL:** Quando o usuário questionar sobre os limites (thresholds) do Git Context Layer (GCL), " + "como 'Qual é o limite de linhas para o GCL?' ou 'Qual o máximo de arquivos?', você **DEVE** chamar a tool `get_gcl_threshold_config`. " + "Use o parâmetro `setting_key` ('lines_threshold' ou 'files_threshold') para especificar a configuração. Analise a resposta e forneça a informação solicitada." + "\n\n" + f"{charts}" + "\n\n" + "Ao recusar uma solicitação, explique brevemente que você só pode ajudar com " + "orientação sobre o SoftwareAI, coleta de fatos, **métricas de agentes, configurações de limite do GCL,** ou compartilhamento de atualizações do clima." + +) +MODEL = "gpt-4.1-mini" +NAME = "Softwareai Chat" + diff --git a/backend/Modules/ChatKit/facts.py b/backend/Modules/ChatKit/facts.py new file mode 100644 index 000000000..dbd629be6 --- /dev/null +++ b/backend/Modules/ChatKit/facts.py @@ -0,0 +1,93 @@ +"""Simple in-memory store for user facts.""" + +from __future__ import annotations + +import asyncio +from dataclasses import dataclass, field +from datetime import datetime +from enum import Enum +from typing import Dict, Iterable, List +from uuid import uuid4 + + +class FactStatus(str, Enum): + """Lifecycle states for collected facts.""" + + PENDING = "pending" + SAVED = "saved" + DISCARDED = "discarded" + + +@dataclass(slots=True) +class Fact: + """Represents a single fact gathered from the conversation.""" + + text: str + status: FactStatus = FactStatus.PENDING + id: str = field(default_factory=lambda: f"fact_{uuid4().hex[:8]}") + created_at: datetime = field(default_factory=datetime.utcnow) + + def as_dict(self) -> dict[str, str]: + """Serialize the fact for JSON responses.""" + return { + "id": self.id, + "text": self.text, + "status": self.status.value, + "createdAt": self.created_at.isoformat(), + } + + +class FactStore: + """Thread-safe helper that stores facts in memory.""" + + def __init__(self) -> None: + self._facts: Dict[str, Fact] = {} + self._order: List[str] = [] + self._lock = asyncio.Lock() + + async def create(self, *, text: str) -> Fact: + """Create a pending fact and return it.""" + async with self._lock: + fact = Fact(text=text) + self._facts[fact.id] = fact + self._order.append(fact.id) + return fact + + async def mark_saved(self, fact_id: str) -> Fact | None: + """Mark the given fact as saved, returning the updated record.""" + async with self._lock: + fact = self._facts.get(fact_id) + if fact is None: + return None + fact.status = FactStatus.SAVED + return fact + + async def discard(self, fact_id: str) -> Fact | None: + """Discard the fact and remove it from the active list.""" + async with self._lock: + fact = self._facts.get(fact_id) + if fact is None: + return None + fact.status = FactStatus.DISCARDED + return fact + + async def list_saved(self) -> List[Fact]: + """Return saved facts in insertion order.""" + async with self._lock: + return [ + self._facts[fact_id] + for fact_id in self._order + if self._facts[fact_id].status == FactStatus.SAVED + ] + + async def get(self, fact_id: str) -> Fact | None: + async with self._lock: + return self._facts.get(fact_id) + + async def iter_pending(self) -> Iterable[Fact]: + async with self._lock: + return [fact for fact in self._facts.values() if fact.status == FactStatus.PENDING] + + +fact_store = FactStore() +"""Global instance used by the API and the ChatKit workflow.""" diff --git a/backend/Modules/ChatKit/memory_store.py b/backend/Modules/ChatKit/memory_store.py new file mode 100644 index 000000000..61a19e9ab --- /dev/null +++ b/backend/Modules/ChatKit/memory_store.py @@ -0,0 +1,165 @@ +from __future__ import annotations + +from dataclasses import dataclass +from datetime import datetime +from typing import Any, Dict, List + +from chatkit.store import NotFoundError, Store +from chatkit.types import ( + Attachment, + Page, + ThreadItem, + ThreadMetadata, +) + + +@dataclass +class _ThreadState: + thread: ThreadMetadata + items: List[ThreadItem] + + +class MemoryStore(Store[dict[str, Any]]): + """Simple in-memory store compatible with the ChatKit server interface.""" + + def __init__(self) -> None: + self._threads: Dict[str, _ThreadState] = {} + # Attachments intentionally unsupported; use a real store that enforces auth. + + # -- Thread metadata ------------------------------------------------- + async def load_thread(self, thread_id: str, context: dict[str, Any]) -> ThreadMetadata: + state = self._threads.get(thread_id) + if not state: + raise NotFoundError(f"Thread {thread_id} not found") + return state.thread.model_copy(deep=True) + + async def save_thread(self, thread: ThreadMetadata, context: dict[str, Any]) -> None: + state = self._threads.get(thread.id) + if state: + state.thread = thread.model_copy(deep=True) + else: + self._threads[thread.id] = _ThreadState( + thread=thread.model_copy(deep=True), + items=[], + ) + + async def load_threads( + self, + limit: int, + after: str | None, + order: str, + context: dict[str, Any], + ) -> Page[ThreadMetadata]: + threads = sorted( + (state.thread.model_copy(deep=True) for state in self._threads.values()), + key=lambda t: t.created_at or datetime.min, + reverse=(order == "desc"), + ) + + if after: + index_map = {thread.id: idx for idx, thread in enumerate(threads)} + start = index_map.get(after, -1) + 1 + else: + start = 0 + + slice_threads = threads[start : start + limit + 1] + has_more = len(slice_threads) > limit + slice_threads = slice_threads[:limit] + next_after = slice_threads[-1].id if has_more and slice_threads else None + return Page( + data=slice_threads, + has_more=has_more, + after=next_after, + ) + + async def delete_thread(self, thread_id: str, context: dict[str, Any]) -> None: + self._threads.pop(thread_id, None) + + # -- Thread items ---------------------------------------------------- + def _items(self, thread_id: str) -> List[ThreadItem]: + state = self._threads.get(thread_id) + if state is None: + state = _ThreadState( + thread=ThreadMetadata(id=thread_id, created_at=datetime.utcnow()), + items=[], + ) + self._threads[thread_id] = state + return state.items + + async def load_thread_items( + self, + thread_id: str, + after: str | None, + limit: int, + order: str, + context: dict[str, Any], + ) -> Page[ThreadItem]: + items = [item.model_copy(deep=True) for item in self._items(thread_id)] + items.sort( + key=lambda item: getattr(item, "created_at", datetime.utcnow()), + reverse=(order == "desc"), + ) + + if after: + index_map = {item.id: idx for idx, item in enumerate(items)} + start = index_map.get(after, -1) + 1 + else: + start = 0 + + slice_items = items[start : start + limit + 1] + has_more = len(slice_items) > limit + slice_items = slice_items[:limit] + next_after = slice_items[-1].id if has_more and slice_items else None + return Page(data=slice_items, has_more=has_more, after=next_after) + + async def add_thread_item( + self, thread_id: str, item: ThreadItem, context: dict[str, Any] + ) -> None: + self._items(thread_id).append(item.model_copy(deep=True)) + + async def save_item(self, thread_id: str, item: ThreadItem, context: dict[str, Any]) -> None: + items = self._items(thread_id) + for idx, existing in enumerate(items): + if existing.id == item.id: + items[idx] = item.model_copy(deep=True) + return + items.append(item.model_copy(deep=True)) + + async def load_item(self, thread_id: str, item_id: str, context: dict[str, Any]) -> ThreadItem: + for item in self._items(thread_id): + if item.id == item_id: + return item.model_copy(deep=True) + raise NotFoundError(f"Item {item_id} not found") + + async def delete_thread_item( + self, thread_id: str, item_id: str, context: dict[str, Any] + ) -> None: + items = self._items(thread_id) + self._threads[thread_id].items = [item for item in items if item.id != item_id] + + # -- Files ----------------------------------------------------------- + # These methods are not currently used but required to be compatible with the Store interface. + + async def save_attachment( + self, + attachment: Attachment, + context: dict[str, Any], + ) -> None: + raise NotImplementedError( + "MemoryStore does not persist attachments. Provide a Store implementation " + "that enforces authentication and authorization before enabling uploads." + ) + + async def load_attachment( + self, + attachment_id: str, + context: dict[str, Any], + ) -> Attachment: + raise NotImplementedError( + "MemoryStore does not load attachments. Provide a Store implementation " + "that enforces authentication and authorization before enabling uploads." + ) + + async def delete_attachment(self, attachment_id: str, context: dict[str, Any]) -> None: + """Método obrigatório pela interface Store — não suportado aqui.""" + raise NotImplementedError("Anexos não são suportados no PostgresStore.") \ No newline at end of file diff --git a/backend/Modules/ChatKit/postgres_store.py b/backend/Modules/ChatKit/postgres_store.py new file mode 100644 index 000000000..a70630f4d --- /dev/null +++ b/backend/Modules/ChatKit/postgres_store.py @@ -0,0 +1,340 @@ +# postgres_store.py +from __future__ import annotations + +from datetime import datetime +import logging +import json +from typing import Any + +from chatkit.store import NotFoundError, Store +from Modules.ChatKit.memory_store import MemoryStore # opcional: manter se for subclass +from chatkit.types import Page, ThreadItem, ThreadMetadata +from flask_sqlalchemy import SQLAlchemy +from sqlalchemy.dialects.postgresql import JSONB +from sqlalchemy.exc import NoResultFound +from sqlalchemy import and_, desc, func, or_ + +from chatkit.types import UserMessageItem, AssistantMessageItem, HiddenContextItem, ClientToolCallItem, ThreadItem as GenericThreadItem + +from api import db, app + +logging.basicConfig(level=logging.INFO) + +# Serializador auxiliar — mas preferimos gravar dicts, não strings. +def json_serial(obj): + if isinstance(obj, (datetime,)): + return obj.isoformat() + raise TypeError(f"Tipo {type(obj)} não é serializável em JSON") + +def _validate_thread_item(raw: Any): + """ + Tenta várias estratégias para transformar `raw` (dict) em um ThreadItem: + 1) usar ThreadItem.model_validate (se existir) + 2) usar pydantic.TypeAdapter (v2) + 3) usar pydantic.parse_obj_as (v1) + 4) tentar model_validate nas subclasses conhecidas + 5) tentar instanciar Generic ThreadItem diretamente + Se nenhuma funcionar, lança Exception. + """ + # 1) Se ThreadItem expuser model_validate (pydantic v2 style em classe), tenta + try: + validator = getattr(ThreadItem, "model_validate", None) + if callable(validator): + return ThreadItem.model_validate(raw) + except Exception: + pass + + # 2) TypeAdapter (pydantic v2) + try: + from pydantic import TypeAdapter + return TypeAdapter(ThreadItem).validate_python(raw) + except Exception: + pass + + # 3) parse_obj_as (pydantic v1) + try: + from pydantic import parse_obj_as + return parse_obj_as(ThreadItem, raw) + except Exception: + pass + + # 4) tentar subclasses conhecidas (defensivo) + for cls in (UserMessageItem, AssistantMessageItem, HiddenContextItem, ClientToolCallItem): + try: + validator = getattr(cls, "model_validate", None) + if callable(validator): + return cls.model_validate(raw) + # fallback simples para instanciar via construtor + return cls(**raw) + except Exception: + continue + + # 5) último recurso: tentar criar um ThreadItem "genérico" (se existir) + try: + # Se ThreadItem for Union, talvez exista uma implementação base importável chamada ThreadItemBase + base_validator = getattr(ThreadItem, "model_validate", None) + if callable(base_validator): + return base_validator(raw) + except Exception: + pass + + # Nenhuma estratégia funcionou -> levantar erro para que o caller logue e continue + raise ValueError("Não foi possível desserializar ThreadItem com as estratégias conhecidas.") + +class Thread(db.Model): + __tablename__ = "threads" + id = db.Column(db.String, primary_key=True) + created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, index=True) + thread_data = db.Column(JSONB, nullable=False) + items = db.relationship("Item", backref="thread", lazy=True, cascade="all, delete-orphan") + + +class Item(db.Model): + __tablename__ = "items" + id = db.Column(db.String, primary_key=True) + thread_id = db.Column(db.String, db.ForeignKey("threads.id"), nullable=False, index=True) + created_at = db.Column(db.DateTime, nullable=False, default=datetime.utcnow, index=True) + data = db.Column(JSONB, nullable=False) + + +class PostgresStore(MemoryStore): + """Implementação da Store do ChatKit usando PostgreSQL/SQLAlchemy.""" + + def __init__(self, database: SQLAlchemy): + self.db = database + + # -- Threads --------------------------------------------------------- + async def save_thread(self, thread: ThreadMetadata, context: dict[str, Any]) -> None: + with app.app_context(): + # gravar como dict (JSONB), convertendo datetime para iso + thread_data_dict = json.loads(json.dumps(thread.model_dump(), default=json_serial)) + thread_record = self.db.session.query(Thread).filter_by(id=thread.id).first() + if thread_record is None: + thread_record = Thread( + id=thread.id, + created_at=thread.created_at or datetime.utcnow(), + thread_data=thread_data_dict, + ) + self.db.session.add(thread_record) + else: + thread_record.thread_data = thread_data_dict + # manter created_at se já existir + self.db.session.commit() + # manter compatibilidade com MemoryStore (que não retorna) + return None + + async def load_thread(self, thread_id: str, context: dict[str, Any]) -> ThreadMetadata: + with app.app_context(): + try: + thread_record = self.db.session.query(Thread).filter_by(id=thread_id).one() + except NoResultFound as e: + raise NotFoundError(f"Thread '{thread_id}' not found.") from e + + raw = thread_record.thread_data + if isinstance(raw, str): + try: + raw = json.loads(raw) + except Exception: + logging.error(f"Thread {thread_id} possui JSON inválido em thread_data.") + raise + return ThreadMetadata.model_validate(raw) + + async def load_threads( + self, + limit: int, + after: str | None, + order: str, + context: dict[str, Any], + ) -> Page[ThreadMetadata]: + """Assinatura alinhada com MemoryStore: (limit, after, order, context).""" + with app.app_context(): + order_by_clauses = [desc(Thread.created_at) if order == "desc" else Thread.created_at] + order_by_clauses.append(Thread.id.desc() if order == "desc" else Thread.id.asc()) + + query = self.db.session.query(Thread).order_by(*order_by_clauses) + + if after: + try: + after_thread = self.db.session.query(Thread).filter_by(id=after).one() + except NoResultFound: + after_thread = None + + if after_thread: + if order == "desc": + query = query.filter( + or_( + Thread.created_at < after_thread.created_at, + and_( + Thread.created_at == after_thread.created_at, + Thread.id > after_thread.id, + ), + ) + ) + else: + query = query.filter( + or_( + Thread.created_at > after_thread.created_at, + and_( + Thread.created_at == after_thread.created_at, + Thread.id < after_thread.id, + ), + ) + ) + + results = query.limit(limit + 1).all() + has_more = len(results) > limit + + data = [] + for rec in results[:limit]: + raw = rec.thread_data + if isinstance(raw, str): + try: + raw = json.loads(raw) + except Exception: + logging.error(f"Thread {rec.id} possui JSON inválido em thread_data.") + continue + try: + data.append(ThreadMetadata.model_validate(raw)) + except Exception as e: + logging.error(f"Falha ao validar ThreadMetadata {rec.id}: {e}") + continue + + next_after = data[-1].id if has_more and data else None + return Page(data=data, has_more=has_more, after=next_after) + + async def delete_thread(self, thread_id: str, context: dict[str, Any]) -> None: + with app.app_context(): + thread_record = self.db.session.query(Thread).filter_by(id=thread_id).first() + if thread_record: + self.db.session.delete(thread_record) + self.db.session.commit() + + # -- Thread items --------------------------------------------------- + async def add_thread_item(self, thread_id: str, item: ThreadItem, context: dict[str, Any]) -> None: + """Adiciona item gravando um dict (JSONB), não string.""" + with app.app_context(): + item_dict = json.loads(json.dumps(item.model_dump(), default=json_serial)) + item_record = Item( + id=item.id, + thread_id=thread_id, + created_at=item.created_at or datetime.utcnow(), + data=item_dict, + ) + self.db.session.add(item_record) + self.db.session.commit() + return None + + async def load_thread_items( + self, + thread_id: str, + after: str | None, + limit: int, + order: str, + context: dict[str, Any], + ) -> Page[ThreadItem]: + with app.app_context(): + order_by_clauses = [desc(Item.created_at) if order == "desc" else Item.created_at] + order_by_clauses.append(Item.id.desc() if order == "desc" else Item.id.asc()) + + query = ( + self.db.session.query(Item) + .filter_by(thread_id=thread_id) + .order_by(*order_by_clauses) + ) + + if after: + try: + after_item = self.db.session.query(Item).filter_by(id=after).one() + except NoResultFound: + after_item = None + + if after_item: + if order == "desc": + query = query.filter( + or_( + Item.created_at < after_item.created_at, + and_(Item.created_at == after_item.created_at, Item.id > after_item.id), + ) + ) + else: + query = query.filter( + or_( + Item.created_at > after_item.created_at, + and_(Item.created_at == after_item.created_at, Item.id < after_item.id), + ) + ) + + results = query.limit(limit + 1).all() + has_more = len(results) > limit + + data: list[ThreadItem] = [] + for rec in results[:limit]: + try: + raw = rec.data + # JSONB normalmente já vem como dict. Se por algum motivo for string, carregar. + if isinstance(raw, str): + raw = json.loads(raw) + item = _validate_thread_item(raw) + data.append(item) + except Exception as e: + logging.error(f"Falha ao desserializar ThreadItem {rec.id}: {e}") + # NÃO interromper a iteração; apenas pular o item inválido. + continue + + next_after = data[-1].id if has_more and data else None + return Page(data=data, has_more=has_more, after=next_after) + + + async def delete_thread_item(self, thread_id: str, item_id: str, context: dict[str, Any]) -> None: + with app.app_context(): + item = self.db.session.query(Item).filter_by(id=item_id, thread_id=thread_id).first() + if item: + self.db.session.delete(item) + self.db.session.commit() + + async def save_item(self, thread_id: str, item: ThreadItem, context: dict[str, Any]) -> None: + with app.app_context(): + item_record = self.db.session.query(Item).filter_by(id=item.id, thread_id=thread_id).first() + item_dict = json.loads(json.dumps(item.model_dump(), default=json_serial)) + + if item_record: + item_record.data = item_dict + item_record.created_at = item.created_at or item_record.created_at + else: + item_record = Item( + id=item.id, + thread_id=thread_id, + created_at=item.created_at or datetime.utcnow(), + data=item_dict, + ) + self.db.session.add(item_record) + + self.db.session.commit() + return None + + async def load_item(self, thread_id: str, item_id: str, context: dict[str, Any]) -> ThreadItem: + with app.app_context(): + item_record = self.db.session.query(Item).filter_by(id=item_id, thread_id=thread_id).first() + if not item_record: + raise NotFoundError(f"Item '{item_id}' not found in thread '{thread_id}'") + + raw = item_record.data + if isinstance(raw, str): + raw = json.loads(raw) + + try: + return _validate_thread_item(raw) + except Exception as e: + logging.error(f"Falha ao desserializar (load_item) ThreadItem {item_id}: {e}") + # convertendo pra NotFound para manter contrato (ou pode re-raise dependendo do desired behavior) + raise + + # -- Attachments (não implementado) --------------------------------- + async def save_attachment(self, attachment, context): + raise NotImplementedError("Anexos não são suportados.") + + async def load_attachment(self, attachment_id, context): + raise NotImplementedError("Anexos não são suportados.") + + async def delete_attachment(self, attachment_id: str, context: dict[str, Any]) -> None: + raise NotImplementedError("Anexos não são suportados no PostgresStore.") diff --git a/backend/Modules/ChatKit/sample_widget.py b/backend/Modules/ChatKit/sample_widget.py new file mode 100644 index 000000000..180bc8286 --- /dev/null +++ b/backend/Modules/ChatKit/sample_widget.py @@ -0,0 +1,742 @@ +from __future__ import annotations + +import base64 +from dataclasses import dataclass, field +from datetime import datetime +from typing import Sequence + +from chatkit.widgets import ( + Box, + Card, + Col, + Image, + Row, + Text, + Title, + WidgetComponent, + WidgetRoot, +) + +WEATHER_ICON_COLOR = "#1D4ED8" +WEATHER_ICON_ACCENT = "#DBEAFE" + + +def _sun_svg() -> str: + color = WEATHER_ICON_COLOR + accent = WEATHER_ICON_ACCENT + return ( + '' + f'' + f'' + '' + '' + '' + '' + '' + '' + '' + '' + "" + "" + ) + + +def _sun_peek_svg() -> str: + color = WEATHER_ICON_COLOR + accent = WEATHER_ICON_ACCENT + return ( + f"" + f'' + f'' + '' + '' + '' + '' + '' + '' + '' + '' + "" + "" + ) + + +def _fog_lines_svg() -> str: + color = WEATHER_ICON_COLOR + return ( + f'' + '' + '' + "" + ) + + +def _drizzle_lines_svg() -> str: + color = WEATHER_ICON_COLOR + return ( + f'' + '' + '' + '' + "" + ) + + +def _rain_lines_svg() -> str: + color = WEATHER_ICON_COLOR + return ( + f'' + '' + '' + '' + "" + ) + + +def _snow_symbols_svg() -> str: + color = WEATHER_ICON_COLOR + return ( + f'' + '' + '' + '' + '' + '' + '' + "" + ) + + +def _lightning_svg() -> str: + color = WEATHER_ICON_COLOR + return ( + f'' + ) + + +def _cloud_svg(before: str = "", after: str = "") -> str: + color = WEATHER_ICON_COLOR + accent = WEATHER_ICON_ACCENT + return ( + '' + f"{before}" + f'' + f"{after}" + "" + ) + + +WEATHER_ICON_SVGS: dict[str, str] = { + "sun": _sun_svg(), + "cloud": _cloud_svg(), + "cloud-sun": _cloud_svg(before=_sun_peek_svg()), + "cloud-fog": _cloud_svg(after=_fog_lines_svg()), + "cloud-drizzle": _cloud_svg(after=_drizzle_lines_svg()), + "cloud-rain": _cloud_svg(after=_rain_lines_svg()), + "cloud-snow": _cloud_svg(after=_snow_symbols_svg()), + "cloud-lightning": _cloud_svg(after=_lightning_svg()), +} + + +def _encode_svg(svg: str) -> str: + encoded = base64.b64encode(svg.encode("utf-8")).decode("ascii") + return f"data:image/svg+xml;base64,{encoded}" + + +WEATHER_ICON_SOURCES: dict[str, str] = { + name: _encode_svg(svg) for name, svg in WEATHER_ICON_SVGS.items() +} + + +DEFAULT_WEATHER_ICON_SRC = WEATHER_ICON_SOURCES["cloud"] + + +def _weather_icon_src(name: str | None) -> str: + if not name: + return DEFAULT_WEATHER_ICON_SRC + return WEATHER_ICON_SOURCES.get(name, DEFAULT_WEATHER_ICON_SRC) + + +def _wind_detail_svg() -> str: + color = WEATHER_ICON_COLOR + return ( + '' + f'' + f'' + f'' + "" + ) + + +def _humidity_detail_svg() -> str: + color = WEATHER_ICON_COLOR + accent = WEATHER_ICON_ACCENT + return ( + '' + f'' + f'' + "" + ) + + +def _precipitation_detail_svg() -> str: + color = WEATHER_ICON_COLOR + accent = WEATHER_ICON_ACCENT + return ( + '' + f'' + f'' + f'' + f'' + f'' + "" + ) + + +def _sunrise_detail_svg(rising: bool) -> str: + color = WEATHER_ICON_COLOR + accent = WEATHER_ICON_ACCENT + sun_y = "30" if rising else "34" + rays_top = ( + '' + if rising + else '' + ) + return ( + '' + f'' + f'' + f'' + f'' + f"{rays_top}" + '' + '' + "" + "" + ) + + +def _thermometer_detail_svg() -> str: + color = WEATHER_ICON_COLOR + accent = WEATHER_ICON_ACCENT + return ( + '' + f'' + f'' + f'' + "" + ) + + +DETAIL_ICON_SVGS: dict[str, str] = { + "wind": _wind_detail_svg(), + "humidity": _humidity_detail_svg(), + "precipitation": _precipitation_detail_svg(), + "sunrise": _sunrise_detail_svg(rising=True), + "sunset": _sunrise_detail_svg(rising=False), + "thermometer": _thermometer_detail_svg(), +} + + +DETAIL_ICON_SOURCES: dict[str, str] = { + name: _encode_svg(svg) for name, svg in DETAIL_ICON_SVGS.items() +} + + +DEFAULT_DETAIL_ICON_KEY = "thermometer" + + +DETAIL_ICON_MAP: dict[str, str] = { + "wind": "wind", + "droplets": "humidity", + "umbrella": "precipitation", + "sunrise": "sunrise", + "sunset": "sunset", + "feels_like": "thermometer", +} + + +def _detail_icon_src(name: str) -> str: + key = DETAIL_ICON_MAP.get(name, DEFAULT_DETAIL_ICON_KEY) + return DETAIL_ICON_SOURCES.get(key, DETAIL_ICON_SOURCES[DEFAULT_DETAIL_ICON_KEY]) + + +@dataclass(frozen=True) +class HourlyForecast: + """Represents a single entry in the short term forecast.""" + + time: datetime | None + temperature: float | None + temperature_unit: str + condition: str + icon: str + + +@dataclass(frozen=True) +class WeatherWidgetData: + """Container for the information rendered by the weather widget.""" + + location: str + observation_time: datetime | None + timezone_abbreviation: str + temperature: float | None + temperature_unit: str + condition: str + condition_icon: str + feels_like: float | None = None + high: float | None = None + low: float | None = None + wind_speed: float | None = None + wind_direction: float | None = None + wind_unit: str | None = None + humidity: float | None = None + humidity_unit: str | None = None + precipitation_probability: float | None = None + sunrise: datetime | None = None + sunset: datetime | None = None + hourly: Sequence[HourlyForecast] = field(default_factory=tuple) + + +def render_weather_widget(data: WeatherWidgetData) -> WidgetRoot: + """Build a modern weather dashboard widget from processed weather data.""" + + temperature_text = _format_temperature(data.temperature, data.temperature_unit) + high_low_text = _format_high_low(data.high, data.low, data.temperature_unit) + updated_text = _format_updated_label(data.observation_time, data.timezone_abbreviation) + + header = Box( + padding=5, + background="surface-tertiary", + children=[ + Col( + gap=4, + children=_compact( + [ + Row( + justify="between", + align="center", + children=_compact( + [ + Col( + align="start", + gap=1, + children=_compact( + [ + Text( + value=data.location, + size="lg", + weight="semibold", + ), + Text( + value=updated_text, + color="tertiary", + size="xs", + ) + if updated_text + else None, + ] + ), + ), + Box( + padding=3, + radius="full", + background="blue-100", + children=[ + Image( + src=_weather_icon_src(data.condition_icon), + alt=data.condition or "Current conditions", + size=28, + fit="contain", + ) + ], + ), + ] + ), + ), + Row( + align="start", + gap=4, + children=_compact( + [ + Title( + value=temperature_text, + size="lg", + weight="semibold", + ), + Col( + align="start", + gap=1, + children=_compact( + [ + Text( + value=data.condition, + color="secondary", + size="sm", + weight="medium", + ), + Text( + value=high_low_text, + color="tertiary", + size="xs", + ) + if high_low_text + else None, + ] + ), + ), + ] + ), + ), + ] + ), + ), + ], + ) + + details_section = _build_details_section(data) + hourly_section = _build_hourly_section(data) + + body_children: list[WidgetComponent] = [] + if details_section is not None: + body_children.append(details_section) + if hourly_section is not None: + body_children.append(hourly_section) + + body = Box(padding=5, gap=4, children=body_children) + + return Card( + key="weather", + padding=0, + children=_compact([header, body if body_children else None]), + ) + + +def weather_widget_copy_text(data: WeatherWidgetData) -> str: + """Generate human-readable fallback text for the weather widget.""" + + segments: list[str] = [] + + time_text = _format_updated_label(data.observation_time, data.timezone_abbreviation, short=True) + temperature_text = _format_temperature(data.temperature, data.temperature_unit) + condition_text = data.condition.lower() if data.condition else "unknown conditions" + location_text = data.location or "the selected location" + + if time_text: + segments.append( + f"As of {time_text}, {location_text} is {temperature_text} with {condition_text}." + ) + else: + segments.append( + f"Current weather in {location_text} is {temperature_text} with {condition_text}." + ) + + high_low_text = _format_high_low(data.high, data.low, data.temperature_unit) + if high_low_text: + segments.append(high_low_text + ".") + + feels_like_text = _format_feels_like(data.feels_like, data.temperature_unit) + if feels_like_text: + segments.append(f"Feels like {feels_like_text}.") + + wind_text = _format_wind(data.wind_speed, data.wind_unit, data.wind_direction) + if wind_text: + segments.append(f"Winds {wind_text}.") + + humidity_text = _format_percentage(data.humidity, data.humidity_unit) + if humidity_text: + segments.append(f"Humidity {humidity_text}.") + + precipitation_text = _format_probability(data.precipitation_probability) + if precipitation_text: + segments.append(f"Precipitation chance {precipitation_text}.") + + sunrise_text = _format_time_of_day(data.sunrise, data.timezone_abbreviation) + sunset_text = _format_time_of_day(data.sunset, data.timezone_abbreviation) + if sunrise_text and sunset_text: + segments.append(f"Sunrise at {sunrise_text} and sunset at {sunset_text}.") + elif sunrise_text: + segments.append(f"Sunrise at {sunrise_text}.") + elif sunset_text: + segments.append(f"Sunset at {sunset_text}.") + + if data.hourly: + upcoming: list[str] = [] + for forecast in list(data.hourly)[:4]: + hour_label = _format_hour_label(forecast.time, data.timezone_abbreviation) + temp_label = _format_temperature( + forecast.temperature, forecast.temperature_unit or data.temperature_unit + ) + condition_label = forecast.condition.lower() + upcoming.append(f"{hour_label}: {temp_label} {condition_label}") + if upcoming: + segments.append("Next hours " + ", ".join(upcoming) + ".") + + return " ".join(segment.strip() for segment in segments if segment).strip() + + +def _horizontal_scroller(items: Sequence[WidgetComponent]) -> WidgetComponent: + return Box( + direction="row", + wrap="nowrap", + gap=3, + width="100%", + justify="start", + align="stretch", + children=list(items), + ) + + +def _build_details_section(data: WeatherWidgetData) -> WidgetComponent | None: + wind_text = _format_wind(data.wind_speed, data.wind_unit, data.wind_direction) + humidity_text = _format_percentage(data.humidity, data.humidity_unit) + precipitation_text = _format_probability(data.precipitation_probability) + sunrise_text = _format_time_of_day(data.sunrise, data.timezone_abbreviation) + sunset_text = _format_time_of_day(data.sunset, data.timezone_abbreviation) + feels_like_text = _format_feels_like(data.feels_like, data.temperature_unit) + + chips = _compact( + [ + _detail_chip("Feels like", feels_like_text, "feels_like") if feels_like_text else None, + _detail_chip("Wind", wind_text, "wind") if wind_text else None, + _detail_chip("Humidity", humidity_text, "droplets") if humidity_text else None, + _detail_chip("Precipitation", precipitation_text, "umbrella") + if precipitation_text + else None, + _detail_chip("Sunrise", sunrise_text, "sunrise") if sunrise_text else None, + _detail_chip("Sunset", sunset_text, "sunset") if sunset_text else None, + ] + ) + + if not chips: + return None + + return Col( + gap=3, + children=[ + Text(value="Today's highlights", weight="semibold", size="sm"), + _horizontal_scroller(chips), + ], + ) + + +def _build_hourly_section(data: WeatherWidgetData) -> WidgetComponent | None: + if not data.hourly: + return None + + cards = [ + _hourly_chip(forecast, data.temperature_unit, data.timezone_abbreviation) + for forecast in data.hourly + ] + + if not cards: + return None + + return Col( + gap=3, + children=[ + Text(value="Next hours", weight="semibold", size="sm"), + _horizontal_scroller(cards), + ], + ) + + +def _detail_chip(label: str, value: str, icon: str) -> WidgetComponent: + return Box( + padding=3, + radius="xl", + background="surface-tertiary", + width=150, + minWidth=150, + maxWidth=150, + minHeight=100, + maxHeight=100, + flex="0 0 auto", + children=[ + Col( + align="stretch", + gap=2, + children=[ + Row( + gap=2, + align="center", + children=[ + Image(src=_detail_icon_src(icon), alt=label, size=28, fit="contain"), + Text(value=label, size="xs", weight="medium", color="tertiary"), + ], + ), + Row( + justify="center", + margin={"top": 4}, + children=[Text(value=value, weight="semibold", size="lg")], + ), + ], + ) + ], + ) + + +def _hourly_chip( + forecast: HourlyForecast, default_unit: str, timezone_abbreviation: str +) -> WidgetComponent: + time_label = _format_hour_label(forecast.time, timezone_abbreviation) + temperature_label = _format_temperature( + forecast.temperature, forecast.temperature_unit or default_unit + ) + + return Box( + padding=3, + radius="xl", + background="surface-tertiary", + width=100, + minWidth=100, + maxWidth=100, + minHeight=150, + maxHeight=150, + flex="0 0 auto", + children=[ + Col( + align="center", + gap=2, + children=_compact( + [ + Text(value=time_label, size="xs", color="tertiary", weight="medium"), + Image( + src=_weather_icon_src(forecast.icon), + alt=forecast.condition, + size=36, + fit="contain", + ), + Text(value=temperature_label, weight="semibold"), + Text(value=forecast.condition, size="xs", color="tertiary"), + ] + ), + ), + ], + ) + + +def _format_temperature(value: float | None, unit: str | None) -> str: + if value is None: + return "—" + try: + number = round(float(value)) + except (TypeError, ValueError): + return "—" + suffix = unit or "°" + return f"{number}{suffix}" + + +def _format_high_low(high: float | None, low: float | None, unit: str | None) -> str: + high_text = _format_temperature(high, unit) if high is not None else "" + low_text = _format_temperature(low, unit) if low is not None else "" + if high_text and low_text: + return f"High {high_text} • Low {low_text}" + if high_text: + return f"High {high_text}" + if low_text: + return f"Low {low_text}" + return "" + + +def _format_feels_like(value: float | None, unit: str | None) -> str: + if value is None: + return "" + return _format_temperature(value, unit) + + +def _format_wind(speed: float | None, unit: str | None, direction: float | None) -> str: + if speed is None and direction is None: + return "" + + parts: list[str] = [] + if speed is not None: + try: + speed_value = round(float(speed)) + except (TypeError, ValueError): + speed_value = None + if speed_value is not None: + parts.append(f"{speed_value}{f' {unit}' if unit else ''}".strip()) + + cardinal = _wind_direction_to_cardinal(direction) + if cardinal: + parts.append(cardinal) + + return " ".join(parts).strip() + + +def _format_percentage(value: float | None, unit: str | None) -> str: + if value is None: + return "" + try: + number = round(float(value)) + except (TypeError, ValueError): + return "" + suffix = unit or "%" + return f"{number}{suffix}" + + +def _format_probability(value: float | None) -> str: + if value is None: + return "" + try: + number = round(float(value)) + except (TypeError, ValueError): + return "" + return f"{number}%" + + +def _format_time_of_day(moment: datetime | None, tz_abbreviation: str) -> str: + if moment is None: + return "" + time_text = moment.strftime("%I:%M %p").lstrip("0") + tz = tz_abbreviation.strip() + return f"{time_text} {tz}".strip() + + +def _format_hour_label(moment: datetime | None, tz_abbreviation: str) -> str: + if moment is None: + return "—" + hour_text = moment.strftime("%I %p").lstrip("0") + return hour_text or moment.strftime("%H:%M") + + +def _format_updated_label( + moment: datetime | None, tz_abbreviation: str, *, short: bool = False +) -> str: + if moment is None: + return "" + + time_text = moment.strftime("%I:%M %p").lstrip("0") + tz = tz_abbreviation.strip() + if short: + return f"{time_text} {tz}".strip() + + date_text = moment.strftime("%b %d").replace(" 0", " ") + base = f"{date_text} · {time_text}" if date_text else time_text + return f"Updated {base} {tz}".strip() + + +def _wind_direction_to_cardinal(direction: float | None) -> str | None: + if direction is None: + return None + try: + degrees = float(direction) + except (TypeError, ValueError): + return None + directions = ["N", "NE", "E", "SE", "S", "SW", "W", "NW"] + index = int((degrees + 22.5) // 45) % len(directions) + return directions[index] + + +def _compact(items: Sequence[WidgetComponent | None]) -> list[WidgetComponent]: + return [item for item in items if item is not None] diff --git a/backend/Modules/ChatKit/tools.py b/backend/Modules/ChatKit/tools.py new file mode 100644 index 000000000..42233bf92 --- /dev/null +++ b/backend/Modules/ChatKit/tools.py @@ -0,0 +1,317 @@ + +import logging +import os +import json +import asyncio +from datetime import datetime +from pydantic import BaseModel +from typing import Annotated, Any, AsyncIterator, Final, Literal, List,TypedDict, AsyncGenerator +from agents import Agent, RunContextWrapper, Runner, function_tool +from chatkit.agents import ( + AgentContext, + ClientToolCall, + ThreadItemConverter, + stream_agent_response, + accumulate_text +) +from chatkit.widgets import * + +from .facts import Fact, fact_store +from .sample_widget import render_weather_widget, weather_widget_copy_text +from .weather import ( + WeatherLookupError, + retrieve_weather, +) +from .weather import ( + normalize_unit as normalize_temperature_unit, +) +from .FactAgentContext import FactAgentContext +from .utils import (_stream_saved_hidden, + _normalize_color_scheme, + CLIENT_THEME_TOOL_NAME, + + ) + +from .data_tools.data import * + + +diretorio_script = os.path.dirname(os.path.abspath(__file__)) +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') +os.makedirs(os.path.join(diretorio_script, '../', '../', 'Logs'), exist_ok=True) +file_handler = logging.FileHandler(os.path.join(diretorio_script, '../', '../', 'Logs', 'tools.log')) +file_handler.setFormatter(formatter) +console_handler = logging.StreamHandler() +console_handler.setFormatter(formatter) +logger.addHandler(file_handler) +logger.addHandler(console_handler) + + + +@function_tool(description_override="Record a fact shared by the user so it is saved immediately.") +async def save_fact( + ctx: RunContextWrapper[FactAgentContext], + fact: str, +) -> dict[str, str] | None: + try: + saved = await fact_store.create(text=fact) + confirmed = await fact_store.mark_saved(saved.id) + if confirmed is None: + raise ValueError("Failed to save fact") + await _stream_saved_hidden(ctx, confirmed) + ctx.context.client_tool_call = ClientToolCall( + name="record_fact", + arguments={"fact_id": confirmed.id, "fact_text": confirmed.text}, + ) + print(f"FACT SAVED: {confirmed}") + return {"fact_id": confirmed.id, "status": "saved"} + except Exception: + logging.exception("Failed to save fact") + return None + + +@function_tool( + description_override="Switch the chat interface between light and dark color schemes." +) +async def switch_theme( + ctx: RunContextWrapper[FactAgentContext], + theme: str, +) -> dict[str, str] | None: + logging.debug(f"Switching theme to {theme}") + try: + requested = _normalize_color_scheme(theme) + ctx.context.client_tool_call = ClientToolCall( + name=CLIENT_THEME_TOOL_NAME, + arguments={"theme": requested}, + ) + return {"theme": requested} + except Exception: + logging.exception("Failed to switch theme") + return None + + +@function_tool( + description_override="Look up the current weather and upcoming forecast for a location and render an interactive weather dashboard." +) +async def get_weather( + ctx: RunContextWrapper[FactAgentContext], + location: str, + unit: Literal["celsius", "fahrenheit"] | str | None = None, +) -> dict[str, str | None]: + print("[WeatherTool] tool invoked", {"location": location, "unit": unit}) + try: + normalized_unit = normalize_temperature_unit(unit) + except WeatherLookupError as exc: + print("[WeatherTool] invalid unit", {"error": str(exc)}) + raise ValueError(str(exc)) from exc + + try: + data = await retrieve_weather(location, normalized_unit) + except WeatherLookupError as exc: + print("[WeatherTool] lookup failed", {"error": str(exc)}) + raise ValueError(str(exc)) from exc + + print( + "[WeatherTool] lookup succeeded", + { + "location": data.location, + "temperature": data.temperature, + "unit": data.temperature_unit, + }, + ) + try: + widget = render_weather_widget(data) + copy_text = weather_widget_copy_text(data) + payload: Any + try: + payload = widget.model_dump() + except AttributeError: + payload = widget + print("[WeatherTool] widget payload", payload) + except Exception as exc: # noqa: BLE001 + print("[WeatherTool] widget build failed", {"error": str(exc)}) + raise ValueError("Weather data is currently unavailable for that location.") from exc + + print("[WeatherTool] streaming widget") + try: + await ctx.context.stream_widget(widget, copy_text=copy_text) + except Exception as exc: # noqa: BLE001 + print("[WeatherTool] widget stream failed", {"error": str(exc)}) + raise ValueError("Weather data is currently unavailable for that location.") from exc + + print("[WeatherTool] widget streamed") + + observed = data.observation_time.isoformat() if data.observation_time else None + + return { + "location": data.location, + "unit": normalized_unit, + "observed_at": observed, + } + +@function_tool( + description_override="Retorna o número de tarefas ou operações concluídas por um agente (ex: 'pr_ai_ci', 'gcl_electron') em um período. Use para responder perguntas sobre produtividade ou status de execução." +) +async def get_agent_activity_count( + ctx: RunContextWrapper[FactAgentContext], + agent_name: str, + time_range: Literal["daily", "weekly", "monthly", "total"] | str, +) -> str: + """ + Simula a consulta ao banco de dados para obter a contagem de atividades do agente. + Na implementação real, você usaria o `ctx.context.request_context` para obter o + ID do usuário ou credenciais e executaria uma consulta ao seu sistema de logs. + """ + + # Simulação de dados de resposta para diferentes agentes e períodos. + # O LLM receberá esta string e a usará para formular a resposta final. + logger.info("get_agent_activity_count called") + agent_name = agent_name.lower().strip() + time_range = time_range.lower().strip() + + if agent_name == "pr_ai_ci": + if time_range == "daily": + return "O agente PR AI concluiu 12 execuções de Pull Request nas últimas 24 horas. 95% dessas execuções resultaram em aprovação automática da mensagem de commit." + if time_range == "weekly": + return "O agente PR AI concluiu 78 execuções nesta semana, gerando uma economia de 4 horas no tempo de revisão manual das mensagens." + if time_range == "monthly": + return "O agente PR AI processou 310 Pull Requests neste mês." + if time_range == "total": + return "O agente PR AI já processou 4.582 Pull Requests desde o lançamento do PR AI." + + if agent_name == "gcl_electron": + if time_range == "daily": + return "O Git Context Layer (GCL) processou 41 commits na camada de pré-staging hoje, com uma taxa de precisão de 98% na sugestão de mensagens de commit." + if time_range == "weekly": + return "O GCL foi invocado 215 vezes na última semana." + + return f"Não foram encontrados dados de atividade para o agente '{agent_name}' no período '{time_range}'. Certifique-se de que o nome do agente é válido (ex: pr_ai_ci ou gcl_electron)." + + +@function_tool( + description_override="Recupera o valor atual de uma configuração de limite (threshold) do GCL (Git Context Layer). Use para responder perguntas sobre os limites operacionais de linhas ou arquivos." +) +async def get_gcl_threshold_config( + ctx: RunContextWrapper[FactAgentContext], + setting_key: Annotated[ + str, + "A chave da configuração do limite que o usuário está perguntando. Deve ser 'lines_threshold' para limite de linhas ou 'files_threshold' para limite de arquivos.", + ], +) -> str: + """ + Simula a recuperação de uma configuração de threshold do GCL. + """ + logger.info(f"get_gcl_threshold_config called for key: {setting_key}") + key = setting_key.lower().strip() + + if key == "lines_threshold": + # Limite atual simulado: 500 linhas de mudança + return "O limite máximo de linhas para a análise do GCL (lines_threshold) está configurado como 500. Commits que excedem este valor são ignorados ou sinalizados para revisão manual." + + if key == "files_threshold": + # Limite atual simulado: 10 arquivos + return "O limite máximo de arquivos (files_threshold) para uma única execução do GCL é de 10. Commits que modificam mais do que 10 arquivos não disparam o processo de sugestão automática." + + return f"A chave de configuração '{setting_key}' não é reconhecida. As chaves válidas são 'lines_threshold' e 'files_threshold'." + + +@function_tool(description_override="Display a dynamic chart widget to the user.") +async def chart_generator(ctx: RunContextWrapper[AgentContext], data: ChartData) -> None: + """ + Gera um gráfico dinâmico e customizável com base nos dados e configurações fornecidas. + """ + logger = logging.getLogger(__name__) + logger.info("Iniciando chart_generator com dados do modelo ChartData.") + + async def widget_generator() -> AsyncGenerator: + # Cria as séries dinamicamente com base no modelo recebido + chart_series = [] + for s in data.series: + if s.type == "bar": + chart_series.append(BarSeries(dataKey=s.dataKey, label=s.label)) + elif s.type == "line": + chart_series.append(LineSeries(dataKey=s.dataKey, label=s.label)) + else: + logger.warning(f"Tipo de série desconhecido: {s.type}") + + # Estado inicial (gráfico vazio) + yield Card( + children=[ + Title(value=data.title, size="xl"), + Chart(id=data.id, data=[], series=chart_series, xAxis=data.xAxis), + ] + ) + + progressive_data = [] + for i, point in enumerate(data.points): + progressive_data.append(point.dict()) + logger.debug(f"Atualizando gráfico com novo ponto: {point.dict()}") + + await asyncio.sleep(0.8) # streaming gradual (remova se quiser render imediato) + + yield Card( + children=[ + Title(value=data.title, size="xl"), + Chart( + id=data.id, + data=progressive_data, + series=chart_series, + xAxis=data.xAxis, + showLegend=True, + showTooltip=True, + height=260, + ), + ] + ) + + logger.info("Finalizando chart_generator com sucesso.") + + await ctx.context.stream_widget(widget_generator()) + + +@function_tool(description_override="Display a sample widget to the user.") +async def sample_widget(ctx: RunContextWrapper[AgentContext]) -> None: + short_title = Agent( + model="gpt-4.1-mini", + name="short title conversation", + instructions="voce tem uma responsabilidade, crie titulos curtos para as conversas", + ) + + description_text = Runner.run_streamed( + short_title, "ChatKit is the best thing ever" + ) + async def widget_generator() -> AsyncGenerator[WidgetComponent, None]: + text_widget_updates = accumulate_text( + description_text.stream_events(), + Text( + id="description", + value="", + streaming=True + ), + ) + + async for text_widget in text_widget_updates: + yield Card( + children=[text_widget] + ) + + await ctx.context.stream_widget(widget_generator()) + + + + + + + + + + + + + + + + + + diff --git a/backend/Modules/ChatKit/utils.py b/backend/Modules/ChatKit/utils.py new file mode 100644 index 000000000..552760ffa --- /dev/null +++ b/backend/Modules/ChatKit/utils.py @@ -0,0 +1,88 @@ +from __future__ import annotations + + +from datetime import datetime +from typing import Annotated, Any, AsyncIterator, Final, Literal +from uuid import uuid4 + +from agents import Agent, RunContextWrapper, Runner, function_tool +from chatkit.server import ChatKitServer, ThreadItemDoneEvent +from chatkit.types import ( + Attachment, + ClientToolCallItem, + HiddenContextItem, + ThreadItem, + ThreadMetadata, + ThreadStreamEvent, + UserMessageItem, +) +from .facts import Fact, fact_store +from .FactAgentContext import FactAgentContext + + +SUPPORTED_COLOR_SCHEMES: Final[frozenset[str]] = frozenset({"light", "dark"}) +CLIENT_THEME_TOOL_NAME: Final[str] = "switch_theme" + + +def _normalize_color_scheme(value: str) -> str: + normalized = str(value).strip().lower() + if normalized in SUPPORTED_COLOR_SCHEMES: + return normalized + if "dark" in normalized: + return "dark" + if "light" in normalized: + return "light" + raise ValueError("Theme must be either 'light' or 'dark'.") + + +def _gen_id(prefix: str) -> str: + return f"{prefix}_{uuid4().hex[:8]}" + + +def _is_tool_completion_item(item: Any) -> bool: + return isinstance(item, ClientToolCallItem) + + +def _thread_item_done(thread_id: str, item: Any) -> Any: + if ThreadItemDoneEvent is None: + raise RuntimeError("ThreadItemDoneEvent type is unavailable") + + attempts: tuple[dict[str, Any], ...] = ( + {"thread_id": thread_id, "item": item}, + {"threadId": thread_id, "item": item}, + {"item": item}, + ) + + for kwargs in attempts: + try: + return ThreadItemDoneEvent(**kwargs) + except TypeError: + continue + + return ThreadItemDoneEvent(item=item) + + + +async def _stream_saved_hidden(ctx: RunContextWrapper[FactAgentContext], fact: Fact) -> None: + await ctx.context.stream( + ThreadItemDoneEvent( + item=HiddenContextItem( + id=_gen_id("msg"), + thread_id=ctx.context.thread.id, + created_at=datetime.now(), + content=( + f'{fact.text}' + ), + ), + ) + ) + + + +def _user_message_text(item: UserMessageItem) -> str: + parts: list[str] = [] + for part in item.content: + text = getattr(part, "text", None) + if text: + parts.append(text) + return " ".join(parts).strip() \ No newline at end of file diff --git a/backend/Modules/ChatKit/weather.py b/backend/Modules/ChatKit/weather.py new file mode 100644 index 000000000..06fb31456 --- /dev/null +++ b/backend/Modules/ChatKit/weather.py @@ -0,0 +1,498 @@ +from __future__ import annotations + +from dataclasses import dataclass +from datetime import datetime, timezone +from typing import Any, Literal, Sequence +from zoneinfo import ZoneInfo, ZoneInfoNotFoundError + +import httpx + +from .sample_widget import HourlyForecast, WeatherWidgetData + +USER_AGENT = "ChatKitWeatherTool/1.0 (+https://openai.com/)" +DEBUG_PREFIX = "[WeatherDebug]" +GEOCODE_URL = "https://nominatim.openstreetmap.org/search" +OPEN_METEO_GEOCODE_URL = "https://geocoding-api.open-meteo.com/v1/search" +WEATHER_URL = "https://api.open-meteo.com/v1/forecast" +CURRENT_FIELDS = ( + "temperature_2m,apparent_temperature,relative_humidity_2m," + "is_day,wind_speed_10m,wind_direction_10m,weather_code" +) +HOURLY_FIELDS = "temperature_2m,weather_code" +DAILY_FIELDS = ( + "weather_code,temperature_2m_max,temperature_2m_min,sunrise,sunset," + "precipitation_probability_max" +) +DEFAULT_TIMEOUT = 20.0 +HOURLY_SEGMENTS = 6 + + +class WeatherLookupError(RuntimeError): + """Raised when the weather service could not satisfy a request.""" + + +def _debug(message: str, *, extra: dict[str, Any] | None = None) -> None: + payload = f"{DEBUG_PREFIX} {message}" + if extra: + payload = f"{payload} | {extra}" + print(payload) + + +@dataclass(frozen=True) +class GeocodedLocation: + latitude: float + longitude: float + label: str + raw: dict[str, Any] + + +WEATHER_CODE_LOOKUP: dict[int, tuple[str, str]] = {} + +DEFAULT_ICON_KEY = "cloud" + + +def _register_weather_codes(codes: Sequence[int], label: str, icon: str) -> None: + for code in codes: + WEATHER_CODE_LOOKUP[int(code)] = (label, icon) + + +_register_weather_codes([0], "Clear sky", "sun") +_register_weather_codes([1], "Mostly sunny", "cloud-sun") +_register_weather_codes([2], "Partly cloudy", "cloud-sun") +_register_weather_codes([3], "Overcast", "cloud") +_register_weather_codes([45, 48], "Foggy", "cloud-fog") +_register_weather_codes([51, 53, 55, 56, 57], "Light drizzle", "cloud-drizzle") +_register_weather_codes([61, 63, 65], "Rain", "cloud-rain") +_register_weather_codes([66, 67], "Icy rain", "cloud-rain") +_register_weather_codes([71, 73, 75, 77], "Snow", "cloud-snow") +_register_weather_codes([80, 81, 82], "Rain showers", "cloud-rain") +_register_weather_codes([85, 86], "Snow showers", "cloud-snow") +_register_weather_codes([95, 96, 99], "Thunderstorm", "cloud-lightning") + + +def normalize_unit(value: str | None) -> Literal["celsius", "fahrenheit"]: + """Normalize user-supplied units into the Open-Meteo expected values.""" + + if value is None: + return "fahrenheit" + + normalized = value.strip().lower() + if normalized in {"c", "cel", "celsius", "metric", "°c"}: + return "celsius" + if normalized in {"f", "fahr", "fahrenheit", "imperial", "°f"}: + return "fahrenheit" + raise WeatherLookupError("Units must be either 'celsius' or 'fahrenheit'.") + + +async def retrieve_weather(query: str, unit: str | None = None) -> WeatherWidgetData: + """Fetch and transform weather data for the provided location.""" + + location_query = query.strip() + _debug("retrieve_weather invoked", extra={"query": location_query, "unit": unit}) + if not location_query: + raise WeatherLookupError("Please provide a city, address, or landmark to look up.") + + normalized_unit = normalize_unit(unit) + + geocoded: GeocodedLocation | None = None + forecast: dict[str, Any] | None = None + try: + async with httpx.AsyncClient( + timeout=DEFAULT_TIMEOUT, + follow_redirects=True, + headers={"User-Agent": USER_AGENT}, + trust_env=True, + ) as client: + geocoded = await _geocode_location(client, location_query) + _debug( + "geocode lookup succeeded", + extra={ + "label": geocoded.label, + "latitude": geocoded.latitude, + "longitude": geocoded.longitude, + }, + ) + _debug("requesting forecast", extra={"unit": normalized_unit}) + forecast = await _fetch_weather_forecast(client, geocoded, normalized_unit) + forecast_keys = sorted(forecast.keys()) if isinstance(forecast, dict) else "unexpected" + has_current = bool(forecast.get("current")) if isinstance(forecast, dict) else False + _debug( + "forecast received", + extra={ + "keys": forecast_keys, + "has_current": has_current, + }, + ) + except httpx.HTTPStatusError as exc: + _debug( + "http status error during weather lookup", + extra={ + "status_code": getattr(exc.response, "status_code", None), + "query": location_query, + }, + ) + raise WeatherLookupError("The weather service returned an error response.") from exc + except httpx.RequestError as exc: + _debug( + "request error during weather lookup", + extra={"error": str(exc), "query": location_query}, + ) + raise WeatherLookupError("Unable to contact the weather service at the moment.") from exc + + if geocoded is None or forecast is None: + _debug( + "weather lookup completed without data", + extra={"geocoded": geocoded, "forecast": forecast is not None}, + ) + raise WeatherLookupError("Weather data is currently unavailable for that location.") + + try: + _debug( + "building widget data", + extra={ + "location": geocoded.label if geocoded else None, + "unit": normalized_unit, + }, + ) + widget_data = _build_widget_data(geocoded, forecast, normalized_unit) + except Exception as exc: # noqa: BLE001 + _debug( + "failed to build widget data", + extra={ + "location": geocoded.label if geocoded else None, + "error": str(exc), + }, + ) + raise WeatherLookupError( + "Weather data is currently unavailable for that location." + ) from exc + if widget_data.temperature is None: + _debug( + "weather data missing temperature", + extra={"location": geocoded.label if geocoded else None}, + ) + raise WeatherLookupError("Weather data is currently unavailable for that location.") + + _debug( + "weather data ready", + extra={ + "location": widget_data.location, + "temperature": widget_data.temperature, + "unit": widget_data.temperature_unit, + }, + ) + + return widget_data + + +async def _geocode_location(client: httpx.AsyncClient, query: str) -> GeocodedLocation: + providers = ( + ("nominatim", _geocode_with_nominatim), + ("open-meteo", _geocode_with_open_meteo), + ) + last_error: WeatherLookupError | None = None + + for provider_name, provider in providers: + try: + location = await provider(client, query) + return location + except httpx.HTTPStatusError as exc: + err = WeatherLookupError("The geocoding service returned an error response.") + err.__cause__ = exc + last_error = err + except httpx.RequestError as exc: + _debug( + "geocode provider request error", + extra={"provider": provider_name, "error": str(exc)}, + ) + err = WeatherLookupError("Unable to contact the geocoding service at the moment.") + err.__cause__ = exc + last_error = err + except WeatherLookupError as exc: + _debug( + "geocode provider failed", + extra={"provider": provider_name, "reason": str(exc)}, + ) + last_error = exc + + if last_error is not None: + raise last_error + + raise WeatherLookupError("I couldn't find that location. Try another nearby city or landmark.") + + +async def _geocode_with_nominatim(client: httpx.AsyncClient, query: str) -> GeocodedLocation: + response = await client.get( + GEOCODE_URL, + params={ + "q": query, + "format": "json", + "limit": 1, + "addressdetails": 1, + }, + ) + response.raise_for_status() + payload = response.json() + if not payload: + raise WeatherLookupError( + "I couldn't find that location. Try another nearby city or landmark." + ) + + first = payload[0] + try: + latitude = float(first["lat"]) + longitude = float(first["lon"]) + except (KeyError, TypeError, ValueError) as exc: + raise WeatherLookupError( + "The location data returned from the geocoder was incomplete." + ) from exc + + label = _format_location_label(first) + return GeocodedLocation(latitude=latitude, longitude=longitude, label=label, raw=first) + + +async def _geocode_with_open_meteo(client: httpx.AsyncClient, query: str) -> GeocodedLocation: + response = await client.get( + OPEN_METEO_GEOCODE_URL, + params={"name": query, "count": 1, "language": "en", "format": "json"}, + ) + response.raise_for_status() + payload = response.json() + results = payload.get("results") if isinstance(payload, dict) else None + if not results: + raise WeatherLookupError( + "I couldn't find that location. Try another nearby city or landmark." + ) + + first = results[0] + try: + latitude = float(first["latitude"]) + longitude = float(first["longitude"]) + except (KeyError, TypeError, ValueError) as exc: + raise WeatherLookupError( + "The location data returned from the geocoder was incomplete." + ) from exc + + label = _format_open_meteo_label(first) + return GeocodedLocation(latitude=latitude, longitude=longitude, label=label, raw=first) + + +async def _fetch_weather_forecast( + client: httpx.AsyncClient, + location: GeocodedLocation, + unit: Literal["celsius", "fahrenheit"], +) -> dict[str, Any]: + params: dict[str, str | int | float | bool | None] = { + "latitude": location.latitude, + "longitude": location.longitude, + "current": CURRENT_FIELDS, + "hourly": HOURLY_FIELDS, + "daily": DAILY_FIELDS, + "temperature_unit": unit, + "windspeed_unit": "mph" if unit == "fahrenheit" else "kmh", + "timezone": "auto", + } + + response = await client.get(WEATHER_URL, params=params) + response.raise_for_status() + return response.json() + + +def _build_widget_data( + location: GeocodedLocation, + forecast: dict[str, Any], + unit: Literal["celsius", "fahrenheit"], +) -> WeatherWidgetData: + tz = _resolve_timezone(forecast.get("timezone")) + tz_abbreviation = forecast.get("timezone_abbreviation") or _infer_timezone_abbreviation(tz) + + current = forecast.get("current") or {} + current_units = forecast.get("current_units") or {} + daily = forecast.get("daily") or {} + hourly = forecast.get("hourly") or {} + hourly_units = forecast.get("hourly_units") or {} + + observation_time = _parse_time(current.get("time"), tz) + temperature = _to_float(current.get("temperature_2m")) + feels_like = _to_float(current.get("apparent_temperature")) + humidity = _to_float(current.get("relative_humidity_2m")) + wind_speed = _to_float(current.get("wind_speed_10m")) + wind_direction = _to_float(current.get("wind_direction_10m")) + + weather_code = current.get("weather_code") + condition, icon = _weather_code_info(weather_code) + + daily_high = _to_float(_first_value(daily.get("temperature_2m_max"))) + daily_low = _to_float(_first_value(daily.get("temperature_2m_min"))) + precipitation = _to_float(_first_value(daily.get("precipitation_probability_max"))) + sunrise = _parse_time(_first_value(daily.get("sunrise")), tz) + sunset = _parse_time(_first_value(daily.get("sunset")), tz) + + hourly_forecasts = _build_hourly_forecasts( + hourly, + hourly_units, + tz, + observation_time, + ) + + temperature_unit = current_units.get("temperature_2m") or ( + "°F" if unit == "fahrenheit" else "°C" + ) + + return WeatherWidgetData( + location=location.label, + observation_time=observation_time, + timezone_abbreviation=tz_abbreviation or "", + temperature=temperature, + temperature_unit=temperature_unit, + condition=condition, + condition_icon=icon, + feels_like=feels_like, + high=daily_high, + low=daily_low, + wind_speed=wind_speed, + wind_direction=wind_direction, + wind_unit=current_units.get("wind_speed_10m") + or ("mph" if unit == "fahrenheit" else "km/h"), + humidity=humidity, + humidity_unit=current_units.get("relative_humidity_2m") or "%", + precipitation_probability=precipitation, + sunrise=sunrise, + sunset=sunset, + hourly=tuple(hourly_forecasts), + ) + + +def _build_hourly_forecasts( + hourly: dict[str, Any], + hourly_units: dict[str, Any], + tz: ZoneInfo | None, + observation_time: datetime | None, +) -> list[HourlyForecast]: + times = hourly.get("time") or [] + temperatures = hourly.get("temperature_2m") or [] + codes = hourly.get("weather_code") or [] + unit = hourly_units.get("temperature_2m") or "°" + + forecasts: list[HourlyForecast] = [] + for time_str, temp, code in zip(times, temperatures, codes): + moment = _parse_time(time_str, tz) + if observation_time and moment and moment < observation_time: + continue + condition, icon = _weather_code_info(code) + forecasts.append( + HourlyForecast( + time=moment, + temperature=_to_float(temp), + temperature_unit=unit, + condition=condition, + icon=icon, + ) + ) + if len(forecasts) >= HOURLY_SEGMENTS: + break + return forecasts + + +def _weather_code_info(code: Any) -> tuple[str, str]: + try: + numeric = int(code) + except (TypeError, ValueError): + condition, icon_key = "Current conditions", DEFAULT_ICON_KEY + else: + condition, icon_key = WEATHER_CODE_LOOKUP.get( + numeric, ("Current conditions", DEFAULT_ICON_KEY) + ) + + return condition, icon_key + + +def _resolve_timezone(name: str | None) -> ZoneInfo | None: + if not name: + return None + try: + return ZoneInfo(name) + except ZoneInfoNotFoundError: + return None + + +def _infer_timezone_abbreviation(tz: ZoneInfo | None) -> str: + if tz is None: + return "" + now = datetime.now(tz) + return now.tzname() or "" + + +def _parse_time(value: Any, tz: ZoneInfo | None) -> datetime | None: + if not value: + return None + try: + text = str(value) + if text.endswith("Z"): + text = text.replace("Z", "+00:00") + moment = datetime.fromisoformat(text) + except (TypeError, ValueError): + return None + + if moment.tzinfo is None: + moment = moment.replace(tzinfo=timezone.utc) + if tz is not None: + moment = moment.astimezone(tz) + return moment + + +def _to_float(value: Any) -> float | None: + if value is None: + return None + try: + return float(value) + except (TypeError, ValueError): + return None + + +def _first_value(values: Any) -> Any: + if isinstance(values, (list, tuple)) and values: + return values[0] + return None + + +def _format_location_label(result: dict[str, Any]) -> str: + address = result.get("address") or {} + city = ( + address.get("city") + or address.get("town") + or address.get("village") + or address.get("hamlet") + or address.get("municipality") + or address.get("county") + ) + region = address.get("state") or address.get("province") or address.get("state_district") + country = address.get("country") + + parts = [part for part in (city, region, country) if part] + if parts: + if len(parts) > 2: + return ", ".join(parts[:2]) + return ", ".join(parts) + + display = result.get("display_name") + if isinstance(display, str) and display: + pieces = [segment.strip() for segment in display.split(",") if segment.strip()] + if pieces: + return ", ".join(pieces[:2]) + + return "Selected location" + + +def _format_open_meteo_label(result: dict[str, Any]) -> str: + name = result.get("name") + admin1 = result.get("admin1") or result.get("admin2") + country = result.get("country") + + parts = [part for part in (name, admin1, country) if part] + if parts: + if len(parts) > 2: + return ", ".join(parts[:2]) + return ", ".join(parts) + + return "Selected location" diff --git a/Back-End/Modules/Geters/logs.py b/backend/Modules/Geters/logs.py similarity index 100% rename from Back-End/Modules/Geters/logs.py rename to backend/Modules/Geters/logs.py diff --git a/backend/Modules/Geters/next_task.py b/backend/Modules/Geters/next_task.py new file mode 100644 index 000000000..311a1cb07 --- /dev/null +++ b/backend/Modules/Geters/next_task.py @@ -0,0 +1,17 @@ +from Models.postgreSQL import db +from Models.postgreSQL import BackendTask, TaskStatus + +def get_next_task(): + """ + Seleciona a próxima tarefa pendente baseado em prioridade + """ + task = ( + BackendTask.query + .filter_by(status=TaskStatus.PENDING.value) + .order_by(BackendTask.priority.desc()) + .first() + ) + if task: + task.status = TaskStatus.SHEDULED.value + db.session.commit() + return task diff --git a/Back-End/Modules/Geters/plans_data.py b/backend/Modules/Geters/plans_data.py similarity index 80% rename from Back-End/Modules/Geters/plans_data.py rename to backend/Modules/Geters/plans_data.py index 5559e2d8b..eea9db44b 100644 --- a/Back-End/Modules/Geters/plans_data.py +++ b/backend/Modules/Geters/plans_data.py @@ -12,27 +12,29 @@ def get_plans_data(): 'payment_link': '' }, "Premium": { - 'price': 15, - 'limit_monthly_tokens': 3000000, + 'price': 5, + 'limit_monthly_tokens': 1000000, 'features': [ 'PR Premium automation', + '1 million monthly tokens', '20 - 40 PRs/mo', 'Logs advanced', 'API access' ], - 'payment_link': 'teste 123' + 'payment_link': '' }, "Pro": { 'price': 29, 'limit_monthly_tokens': 10000000, 'features': [ 'Everything from Premium', + '10 million monthly tokens', '60 - 90 PRs/mo', 'Git Context Layer', 'Auto-Commit Intelligence', 'Smart Threshold Detection', 'Context-Aware Messages' ], - 'payment_link': 'teste 123' + 'payment_link': '' } } \ No newline at end of file diff --git a/Back-End/Modules/Geters/pr_diff.py b/backend/Modules/Geters/pr_diff.py similarity index 100% rename from Back-End/Modules/Geters/pr_diff.py rename to backend/Modules/Geters/pr_diff.py diff --git a/Back-End/Modules/Geters/systemsettings.py b/backend/Modules/Geters/systemsettings.py similarity index 80% rename from Back-End/Modules/Geters/systemsettings.py rename to backend/Modules/Geters/systemsettings.py index 02ac64147..c5f044ac8 100644 --- a/Back-End/Modules/Geters/systemsettings.py +++ b/backend/Modules/Geters/systemsettings.py @@ -15,8 +15,6 @@ def get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) db.session.rollback() GITHUB_TOKEN = settings.github_token - OPENAI_API_KEY = settings.openai_api_key - GITHUB_SECRET = settings.github_secret REPOSITORY_NAME = settings.repository_name - return GITHUB_TOKEN, OPENAI_API_KEY, GITHUB_SECRET, REPOSITORY_NAME + return GITHUB_TOKEN, REPOSITORY_NAME diff --git a/Back-End/Modules/Geters/user_by_access_token.py b/backend/Modules/Geters/user_by_access_token.py similarity index 100% rename from Back-End/Modules/Geters/user_by_access_token.py rename to backend/Modules/Geters/user_by_access_token.py diff --git a/Back-End/Modules/Geters/user_by_email.py b/backend/Modules/Geters/user_by_email.py similarity index 100% rename from Back-End/Modules/Geters/user_by_email.py rename to backend/Modules/Geters/user_by_email.py diff --git a/backend/Modules/Helpers/EgetTools.py b/backend/Modules/Helpers/EgetTools.py new file mode 100644 index 000000000..3580fd6fe --- /dev/null +++ b/backend/Modules/Helpers/EgetTools.py @@ -0,0 +1,87 @@ +import requests +import json +import time +import os +import zipfile +import importlib + + + +def download_tools_zip(tool_ids: list, extract_dir = os.path.join(os.path.dirname(__file__), 'Functions')) -> bool: + """ + Faz o download do ZIP contendo os arquivos .py de múltiplas ferramentas. + Após o download, extrai para a pasta 'Functions'. + + :param tool_ids: Lista com os IDs das ferramentas. + :param output_path: Caminho de saída do arquivo ZIP. + :param base_url: URL base da API. + :return: True se tudo foi bem-sucedido, False caso contrário. + """ + for i in range(10): + + output_path = 'tools_code.zip' + base_url = 'https://softwareai-library-hub.site' + joined_ids = ','.join(tool_ids) + url = f'{base_url}/api/tool-code/{joined_ids}' + + try: + response = requests.get(url) + + if response.status_code == 200: + with open(output_path, 'wb') as f: + f.write(response.content) + + # Extrai o ZIP para a pasta Functions + + os.makedirs(extract_dir, exist_ok=True) + + with zipfile.ZipFile(output_path, 'r') as zip_ref: + zip_ref.extractall(extract_dir) + + return True + + else: + print(f"Erro {response.status_code}: {response.json()}") + time.sleep(5) + continue + + except Exception as e: + print(f"Erro durante o download ou extração: {e}") + time.sleep(5) + continue + +def import_tool(tool_name: str, base_dir = os.path.join(os.path.dirname(__file__), "../", "../",'Functions')): + """ + Importa dinamicamente o módulo da ferramenta e retorna o objeto decorado com @function_tool. + """ + module_path = os.path.join(base_dir, tool_name, f"{tool_name}.py") + spec = importlib.util.spec_from_file_location(tool_name, module_path) + if spec and spec.loader: + module = importlib.util.module_from_spec(spec) + spec.loader.exec_module(module) + + # Procura por função decorada com @function_tool (tem atributo .name) + for attr_name in dir(module): + attr = getattr(module, attr_name) + if hasattr(attr, "name") and hasattr(attr, "description"): + return attr + + raise ImportError(f"Nenhuma função decorada com @function_tool encontrada em {tool_name}.py") + else: + raise ImportError(f"Não foi possível importar a ferramenta: {tool_name}") + +def Egetoolsv2(functionstools = ['autosave']): + + # # Define diretório base como o do script + # os.chdir(os.path.dirname(__file__)) + + # Lista de tools que você deseja baixar + tools = functionstools + + download_tools_zip(tools, extract_dir = os.path.join(os.path.dirname(__file__), "../", "../",'Functions')) + + os.remove("tools_code.zip") + + # Importa dinamicamente cada ferramenta + imported_tools = [import_tool(tool) for tool in tools] + return imported_tools \ No newline at end of file diff --git a/Back-End/Modules/Helpers/estimate_tokens.py b/backend/Modules/Helpers/estimate_tokens.py similarity index 100% rename from Back-End/Modules/Helpers/estimate_tokens.py rename to backend/Modules/Helpers/estimate_tokens.py diff --git a/backend/Modules/Resolvers/generate_invoice_pdf.py b/backend/Modules/Resolvers/generate_invoice_pdf.py new file mode 100644 index 000000000..846844e0a --- /dev/null +++ b/backend/Modules/Resolvers/generate_invoice_pdf.py @@ -0,0 +1,34 @@ +from reportlab.lib.pagesizes import A4 +from reportlab.pdfgen import canvas +import os +import json + +def generate_invoice_pdf(invoice, output_dir="../../Invoices"): + pdf_filename = f"invoice_{invoice.id}.pdf" + pdf_path = os.path.join(output_dir, pdf_filename) + + c = canvas.Canvas(pdf_path, pagesize=A4) + width, height = A4 + + c.setFont("Helvetica-Bold", 16) + c.drawString(50, height - 50, "INVOICE") + + c.setFont("Helvetica", 12) + c.drawString(50, height - 100, f"Invoice Number: {invoice.number}") + c.drawString(50, height - 120, f"Date: {invoice.date.strftime('%Y-%m-%d')}") + c.drawString(50, height - 140, f"User ID: {invoice.user_id}") + c.drawString(50, height - 160, f"Plan: {invoice.plan_name}") + + c.drawString(50, height - 200, "Items:") + y = height - 220 + lines = json.loads(invoice.lines) if invoice.lines else [] + for line in lines: + c.drawString(60, y, f"{line['description']} x {line['qty']} - ${line['price']:.2f}") + y -= 20 + + c.drawString(50, y - 20, f"Total Amount: ${float(invoice.amount):.2f} {invoice.currency}") + + c.showPage() + c.save() + print(f"pdf_path {pdf_path}") + return pdf_path diff --git a/Back-End/Modules/Resolvers/git_contex_layer_process.py b/backend/Modules/Resolvers/git_contex_layer_process.py similarity index 100% rename from Back-End/Modules/Resolvers/git_contex_layer_process.py rename to backend/Modules/Resolvers/git_contex_layer_process.py diff --git a/Back-End/Modules/Resolvers/github_app_auth.py b/backend/Modules/Resolvers/github_app_auth.py similarity index 100% rename from Back-End/Modules/Resolvers/github_app_auth.py rename to backend/Modules/Resolvers/github_app_auth.py diff --git a/Back-End/Modules/Resolvers/pr_process.py b/backend/Modules/Resolvers/pr_process.py similarity index 100% rename from Back-End/Modules/Resolvers/pr_process.py rename to backend/Modules/Resolvers/pr_process.py diff --git a/backend/Modules/Resolvers/send_email.py b/backend/Modules/Resolvers/send_email.py new file mode 100644 index 000000000..e5edd0625 --- /dev/null +++ b/backend/Modules/Resolvers/send_email.py @@ -0,0 +1,171 @@ + + + + + +import os +from dotenv import load_dotenv +import smtplib +from email.mime.multipart import MIMEMultipart +from email.mime.text import MIMEText +import logging +import os + +diretorio_script = os.path.dirname(os.path.abspath(__file__)) +logger = logging.getLogger(__name__) +logger.setLevel(logging.INFO) +formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') +os.makedirs(os.path.join(diretorio_script, "../", '../', 'Logs'), exist_ok=True) +file_handler = logging.FileHandler(os.path.join(diretorio_script, '../',"../", 'Logs', 'send_email.log')) +file_handler.setFormatter(formatter) +console_handler = logging.StreamHandler() +console_handler.setFormatter(formatter) +logger.addHandler(file_handler) +logger.addHandler(console_handler) + +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), + "../", + "../", + "Keys", + "keys.env" + )) + +def SendEmail( + user_email_origin="", + html_attach_flag=True, + email_type="Failed Project", + + SMTP_ADM="", + SMTP_PASSWORD="", + SMTP_HOST="", + SMTP_PORT="", + use_tls="", + + erro_project="", + title_origin="", + new_scheduled_time="", + planname='' + ): + """ + email_type: "Sucess Upgrated Account", "Failed Project", "Sucess Project", "Server Limitation", "Tiktok Publish Fail", "Youtube Publish Fail", "Sucess Created Account" + """ + template_path = os.path.join(diretorio_script, '../', '../', "EmailTemplates") + with smtplib.SMTP(SMTP_HOST, SMTP_PORT) as SMTP_server: + SMTP_server.connect(SMTP_HOST, SMTP_PORT) + if use_tls: + SMTP_server.starttls() + SMTP_server.login(SMTP_ADM, SMTP_PASSWORD) + MIME_server = MIMEMultipart() + MIME_server['From'] = f"Media Cuts Studio <{SMTP_ADM}>" + MIME_server['To'] = user_email_origin + try: + if email_type == "Failed Project": + corpo = f""" + Olá Nao foi possivel executar seu projeto com maestria pedimos desculpas e a compreencao que é natural que ocorra erros na versao beta + enviaremos o seguinte erro para os desenvolvedores: \n {erro_project} \n + """ + MIME_server['Subject'] = "O projeto falhou" + html_body = open(os.path.join(template_path, "FalhaDeProjeto.html"), encoding='utf-8').read().replace("{{erro}}", str(erro_project)) + + elif email_type == "Sucess Project": + corpo = f""" + Olá viemos informar que seu projeto\n + {title_origin}\n + foi executado com maestria confira no seu painel de projetos localizado em\n + https://mediacutsstudio.com/projects + """ + MIME_server['Subject'] = "O projeto foi um sucesso" + html_body = open(os.path.join(template_path, "SucessoDeProjeto.html"), encoding='utf-8').read().replace("{{title_origin}}", str(title_origin)) + + elif email_type == "Server Limitation": + corpo = f""" + Olá Nao foi possivel colocar seu projeto {title_origin} em execucao por conta da limitacao do servidor\n + Mas nao se preocupe agendamos a execucao do seu projeto para o seguinte horario: \n + {new_scheduled_time} + """ + MIME_server['Subject'] = "Limitacao do servidor" + html_body = open(os.path.join(template_path, "server_limit.html"), encoding='utf-8').read().replace("{{title}}", title_origin).replace("{{new_scheduled_time}}", new_scheduled_time) + + elif email_type == "Tiktok Publish Fail": + corpo = f""" + Olá Nao foi possivel enviar o video vertical {title_origin} para o tiktok\n + o seguinte erro aconteceu: \n {erro_project} \n + """ + MIME_server['Subject'] = "Nao foi possivel enviar o Tiktok" + html_body = open(os.path.join(template_path, "email_tiktok_fail.html"), encoding='utf-8').read().replace("{{title}}", title_origin).replace("{{errupload1}}", str(erro_project)) + + elif email_type == "Youtube Publish Fail": + corpo = f""" + Olá Nao foi possivel enviar o shorts {title_origin} para o youtube\n + o seguinte erro aconteceu: \n + {erro_project} + """ + MIME_server['Subject'] = "Nao foi possivel enviar o Youtube" + html_body = open(os.path.join(template_path, "email_youtube_fail.html"), encoding='utf-8').read().replace("{{title}}", title_origin).replace("{{error_content}}", str(erro_project)) + + elif email_type == "Sucess Created Account": + corpo = f""" + 🎉 Bem-vindo(a) ao Media Cuts Studio! + Olá {user_email_origin}, sua conta foi criada com sucesso. + Agora você já pode acessar o painel e começar a criar seus projetos de cortes automáticos! + https://mediacutsstudio.com/login + Media Cuts Studio © 2025 + + """ + MIME_server['Subject'] = "Conta criada com sucesso - Media Cuts Studio" + html_body = open(os.path.join(template_path, "email_account_success.html"), encoding='utf-8').read().replace("{{username}}", user_email_origin) + + elif email_type == "Sucess Upgrated Account": + corpo = f""" + 🎉 Bem-vindo(a) ao Media Cuts Studio! + Olá {user_email_origin}, sua conta foi atualizada com sucesso. + Agora você já pode acessar o painel e começar a criar seus projetos de cortes automáticos! + https://mediacutsstudio.com/login + Media Cuts Studio © 2025 + + """ + MIME_server['Subject'] = f"Seu conta foi atualizada para o Plano {planname} 🚀" + html_body = open(os.path.join(template_path, "email_plan_upgraded.html"), encoding='utf-8').read().replace("{{username}}", user_email_origin) + + if html_attach_flag == True: + MIME_server.attach(MIMEText(html_body, "html")) + elif html_attach_flag == False: + MIME_server.attach(MIMEText(corpo, "plain")) + + SMTP_server.sendmail(SMTP_ADM, user_email_origin, MIME_server.as_string()) + logger.info(f"Email '{email_type}' enviado com sucesso!") + SMTP_server.quit() + except Exception as eerrorsendemail: + logger.warning(f"erro ao enviar o email de sinalizacao de erro {eerrorsendemail}") + + + +# if __name__ == '__main__': + +# host = os.getenv('SMTP_HOST') +# port = int(os.getenv('SMTP_PORT', 587)) +# SMTP_USER = os.getenv('SMTP_USER') +# password = os.getenv('SMTP_PASSWORD') +# use_tls = os.getenv('SMTP_USE_TLS', 'true').lower() == 'true' +# user_email_origin = "freitasalexandre810@gmail.com" +# erro_project = "erro de teste" +# title_origin = "projeto de teste" +# new_scheduled_time = "2025-08-05 21:42:04" + + +# SendEmail( +# user_email_origin=user_email_origin, +# html_attach_flag=True, +# email_type="Sucess Created Account", + +# SMTP_ADM=SMTP_USER, +# SMTP_PASSWORD=password, +# SMTP_HOST=host, +# SMTP_PORT=port, +# use_tls=use_tls, + + +# erro_project=erro_project, +# title_origin=title_origin, +# new_scheduled_time=new_scheduled_time +# ) diff --git a/Back-End/Modules/Resolvers/user_identifier.py b/backend/Modules/Resolvers/user_identifier.py similarity index 59% rename from Back-End/Modules/Resolvers/user_identifier.py rename to backend/Modules/Resolvers/user_identifier.py index db25a4fa6..ae2cb8234 100644 --- a/Back-End/Modules/Resolvers/user_identifier.py +++ b/backend/Modules/Resolvers/user_identifier.py @@ -21,52 +21,6 @@ ] ) logger = logging.getLogger(__name__) -def require_user_token(optional=False): - def decorator(f): - @wraps(f) - def wrapped(*args, **kwargs): - token_str = request.headers.get('X-API-TOKEN') - - logger.info(F'API token {token_str}') - if not token_str: - if optional: - g.current_user = None - return f(*args, **kwargs) - - return jsonify({'error': 'API token obrigatório'}), 401 - - user = get_user_by_access_token(token_str) - revoked, reason = is_token_revoked_or_expired(user) - if revoked: - return jsonify({'error': 'Token inválido', 'reason': reason}), 401 - - g.current_user = user - return f(*args, **kwargs) - return wrapped - return decorator - -def resolve_user_identifier(identifier): - """ - Aceita: - - None -> retorna None - - número (string ou int) -> busca por id - - string com @ -> busca por email - - string sem @ -> tenta converter para int, senão retorna None - Retorna User instance ou None. - """ - if not identifier: - return None - - try: - uid = int(identifier) - return User.query.get(uid) - except (ValueError, TypeError): - pass - - if isinstance(identifier, str) and "@" in identifier: - return User.query.filter_by(email=identifier).first() - - return User.query.filter_by(email=str(identifier).strip()).first() def auth_user(logs_collection, app, email='', password=''): with app.app_context(): @@ -106,58 +60,28 @@ def auth_user(logs_collection, app, email='', password=''): return user, user.id, "success" -def auth_user_fallback(email, password, logs_collection, app): +def resolve_user_identifier(identifier): """ - Autentica usuário por token (se já estiver em g.current_user) - ou por email+senha. Retorna tupla (user, access_token, status). - - status: - - "success" -> login ok - - "token_limit" -> limite de tokens atingido - - "invalid" -> credenciais inválidas + Aceita: + - None -> retorna None + - número (string ou int) -> busca por id + - string com @ -> busca por email + - string sem @ -> tenta converter para int, senão retorna None + Retorna User instance ou None. """ - with app.app_context(): - # se já veio pelo decorator (token válido) - if getattr(g, "current_user", None): - user = g.current_user - try: - user.last_seen = datetime.utcnow() - db.session.add(user) - db.session.commit() - except Exception: - db.session.rollback() - log_action(logs_collection, 'login_success_token', {'message': 'login_success_token_by_token', 'username': user.email}, user=user.id) - # garante que retornamos o token atual do usuário - return user, user.acess_token, "success" - - # 2) Autenticação por email + senha - if not email or not password: - logger.info("????????") - return None, None, "invalid" - - user = resolve_user_identifier(email) - # evita usar user.id quando user é None (corrige crash no log) - if not user or not user.check_password(password): - log_action(logs_collection, 'login_failed', {'message': 'login_failed in if not user or not user.check_password(password):'}, level='warning', user=(user.id if user else None)) - return None, None, "invalid" - - # atualiza last_seen - user.last_seen = datetime.utcnow() + if not identifier: + return None - # garante que o usuário tenha um access token válido; cria se necessário - token_needs_creation = ( - not user.acess_token - or user.revoked_at is not None - or (user.expires_at is not None and datetime.utcnow() > user.expires_at) - ) + try: + uid = int(identifier) + return User.query.get(uid) + except (ValueError, TypeError): + pass - limit = user.limit_monthly_tokens or 0 - used = user.tokens_used or 0 - remaining = limit - used + if isinstance(identifier, str) and "@" in identifier: + return User.query.filter_by(email=identifier).first() - # se token não precisava ser recriado, só retorna o token atual - g.current_user = user - return user, user.acess_token, "success" + return User.query.filter_by(email=str(identifier).strip()).first() def is_token_revoked_or_expired(user: User): if not user: diff --git a/Back-End/Modules/Resolvers/verify_signature.py b/backend/Modules/Resolvers/verify_signature.py similarity index 100% rename from Back-End/Modules/Resolvers/verify_signature.py rename to backend/Modules/Resolvers/verify_signature.py diff --git a/backend/Modules/Savers/create_task.py b/backend/Modules/Savers/create_task.py new file mode 100644 index 000000000..462e40c71 --- /dev/null +++ b/backend/Modules/Savers/create_task.py @@ -0,0 +1,29 @@ +from Models.postgreSQL import db +from Models.postgreSQL import BackendTask, TaskStatus +from datetime import datetime +import pytz + +def create_task(user_id, content, priority=1, hours="1.2", lang="pt", eta_str='', EMPLOYER_CATEGORY=''): + """ + Cria uma tarefa no banco Flask-SQLAlchemy. + """ + tz = pytz.timezone("America/Sao_Paulo") + + task = BackendTask( + user_id=user_id, + category=EMPLOYER_CATEGORY, + user_content=content, + priority=priority, + estimated_hours=hours, + commit_language=lang, + status=TaskStatus.PENDING.value, + created_at=datetime.now(tz), + eta_str=eta_str + ) + db.session.add(task) + db.session.commit() + print(f"Tarefa criada: {task.id}") + return task.id + +# # Exemplo +# create_task("user_001", "Gerar endpoints para autenticação", priority=5, capacity="1.2") diff --git a/backend/Modules/Savers/log_action.py b/backend/Modules/Savers/log_action.py new file mode 100644 index 000000000..37f2e26a2 --- /dev/null +++ b/backend/Modules/Savers/log_action.py @@ -0,0 +1,68 @@ +# Back-End\Modules\Savers\log_action.py +from datetime import datetime, timedelta +import logging + + +logging.basicConfig( + level=logging.INFO, + format="%(asctime)s [%(levelname)s] %(message)s", + handlers=[ + logging.StreamHandler() + ] +) +logger = logging.getLogger(__name__) + + +def log_action(logs_collection, action, details=None, user=None, level='info'): + """ + Registra uma ação no MongoDB (coleção logs). + Padroniza campos: timestamp (UTC), level uppercase, user_id (se for int), user (se for string/obj), details como dict. + """ + if details is None: + details = {} + + if not isinstance(details, dict): + try: + details = {"message": str(details)} + except Exception: + details = {"message": "no details"} + + if "message" not in details: + details["message"] = details.get("msg") or str(action) + + user_id_val = None + user_val = None + if user is not None: + try: + user_id_val = int(getattr(user, "id", user)) + except Exception: + user_val = str(user) + if isinstance(user, int): + user_id_val = user + user_val = user + + log_entry = { + "timestamp": datetime.utcnow(), + "action": action, + "details": details, + "level": (level or "info").upper() + } + + if user_id_val is not None: + log_entry["user_id"] = user_id_val + log_entry["user"] = user_id_val + elif user_val is not None: + log_entry["user"] = user_val + + if "prNumber" in details and "pr_number" not in details: + details["pr_number"] = details["prNumber"] + + logger.info(f""" +timestamp {datetime.utcnow().isoformat()} +action {action} +details {details} +user {user} +level {level} + """) + result = logs_collection.insert_one(log_entry) + return str(result.inserted_id) \ No newline at end of file diff --git a/Back-End/Modules/Savers/log_audit.py b/backend/Modules/Savers/log_audit.py similarity index 100% rename from Back-End/Modules/Savers/log_audit.py rename to backend/Modules/Savers/log_audit.py diff --git a/Back-End/Modules/Savers/log_system_health.py b/backend/Modules/Savers/log_system_health.py similarity index 100% rename from Back-End/Modules/Savers/log_system_health.py rename to backend/Modules/Savers/log_system_health.py diff --git a/Back-End/Modules/Updaters/pr_body.py b/backend/Modules/Updaters/pr_body.py similarity index 100% rename from Back-End/Modules/Updaters/pr_body.py rename to backend/Modules/Updaters/pr_body.py diff --git a/Back-End/Modules/Updaters/pr_merge.py b/backend/Modules/Updaters/pr_merge.py similarity index 100% rename from Back-End/Modules/Updaters/pr_merge.py rename to backend/Modules/Updaters/pr_merge.py diff --git a/Back-End/Modules/Updaters/user_tokens.py b/backend/Modules/Updaters/user_tokens.py similarity index 100% rename from Back-End/Modules/Updaters/user_tokens.py rename to backend/Modules/Updaters/user_tokens.py diff --git a/backend/TestDiscovery/_task_sheduler.py b/backend/TestDiscovery/_task_sheduler.py new file mode 100644 index 000000000..fde1dbcd2 --- /dev/null +++ b/backend/TestDiscovery/_task_sheduler.py @@ -0,0 +1,74 @@ +import requests +from datetime import datetime, timedelta +import pytz + +# URL base do seu backend Flask +BACKEND_URL = "http://localhost:5910/api/tasks/add" # ajuste se estiver em outra porta/host +ACCESS_TOKEN = "IJGpuZxIP0eIJRfpzUsuCMbOEkq0dwR-Lq8sY2Uo-o0" # substitua pelo token JWT real do usuário autenticado + +# 🧠 Conteúdo da Sprint 3 +SPRINT_NAME = "## Sprint 1 | Intervalo de horas: 1-4" +SPRINT_OBJECTIVE = """ + +Descrição do produto: sistema multiusuário (médicos e pacientes) para agendamento online de consultas com pagamento integrado via Stripe. Backend em Flask, PostgreSQL, Redis; Front-end em Vite + React; Observabilidade com MongoDB; Orquestração de tarefas com Celery + Redis; CI/CD com GitHub Actions. + +### MVP Base +- Configurar estrutura do projeto Flask API + PostgreSQL + Redis +- Criar containers Docker +- Definir arquitetura de pastas +- desenvolvimento dos endpoints + +## Sprint 1 | Intervalo de horas: 1-4 +* [x] Configuração inicial do projeto (Flask + PostgreSQL + MongoDB) +* [x] Setup de ambiente e containers Docker +* [x] Implementar `/api/register` e `/api/login` +* [x] Configuração de AUth +* [x] Persistência de usuários no PostgreSQL +* [x] Integração com MongoDB para logs +* [x] Implementar endpoints `/api/logs` e `/api/logs/export` +* [x] Função `log_action` com salvamento estruturado de ações +* [x] Implementar `/api/settings` (GET/PUT) +* [x] Endpoint `/api/health` para checagem completa de serviços +* [x] Modelagem de médicos e pacientes no Postgres +* [x] Endpoint `/api/médicos` (listagem) +* [x] Endpoint `/api/médicos/` (detalhes) +* [x] Endpoint `/api/pacientes` (listagem) +* [x] Endpoint `/api/pacientes/` (detalhes) +* [x] Endpoint `/api/dashboard-data` com estatísticas e atividades do sistema + +""" + +tz = pytz.timezone("America/Sao_Paulo") + +now_sp = datetime.now(tz) + +eta = now_sp + timedelta(minutes=2) +print(f"⏰ Tarefa agendada para {eta} ") + +# Corpo da requisição +payload = { + "user_id": 1, + "content": f"Tarefa para {SPRINT_NAME}\n\n{SPRINT_OBJECTIVE}", + "priority": 2, + "hours": "1.5", + "lang": "pt", + "eta": eta.isoformat() # Passando ISO 8601 +} + +# Cabeçalhos (autenticação + JSON) +headers = { + "Content-Type": "application/json", + "X-API-TOKEN": ACCESS_TOKEN +} + +try: + response = requests.post(BACKEND_URL, json=payload, headers=headers) + if response.status_code == 201: + data = response.json() + print("✅ Tarefa criada com sucesso!") + print(f"🆔 ID da tarefa: {data.get('task_id')}") + print(f"📦 Status inicial: {data.get('status')}") + else: + print(f"❌ Falha ao criar tarefa ({response.status_code}): {response.text}") +except Exception as e: + print(f"💥 Erro de execução: {e}") diff --git a/Back-End/TestDiscovery/add_mock_pr.py b/backend/TestDiscovery/add_mock_pr.py similarity index 100% rename from Back-End/TestDiscovery/add_mock_pr.py rename to backend/TestDiscovery/add_mock_pr.py diff --git a/Back-End/TestDiscovery/create_new_user.py b/backend/TestDiscovery/create_new_user.py similarity index 93% rename from Back-End/TestDiscovery/create_new_user.py rename to backend/TestDiscovery/create_new_user.py index 0f81f65b6..566e28286 100644 --- a/Back-End/TestDiscovery/create_new_user.py +++ b/backend/TestDiscovery/create_new_user.py @@ -27,3 +27,6 @@ def criar_conta(email: str, senha: str, expires_days: int = None): # Exemplo de uso if __name__ == "__main__": criar_conta("teste@example.com", "minhasenha123", expires_days=30) +# git checkout main +# git pull origin main +# git checkout -b new-feature \ No newline at end of file diff --git a/backend/TestDiscovery/errorr.txt b/backend/TestDiscovery/errorr.txt new file mode 100644 index 000000000..e5eb51398 --- /dev/null +++ b/backend/TestDiscovery/errorr.txt @@ -0,0 +1,9 @@ +[plugin:vite:react-babel] E:\Users\Media Cuts DeV\Downloads\WorkEnv\SoftwareAI\Back-End\example8\src\components\appointments\AppointmentList.jsx: Identifier 'user' has already been declared. (11:11) + 14 | +E:/Users/Media Cuts DeV/Downloads/WorkEnv/SoftwareAI/Back-End/example8/src/components/appointments/AppointmentList.jsx:11:11 +9 | const { user } = useAuth(); +10 | const { appointments, loading } = useAppointments(); +11 | const { user } = useAuth(); + | ^ +12 | +13 | if (loading || !user) return ; \ No newline at end of file diff --git a/Back-End/TestDiscovery/gen-prai.py b/backend/TestDiscovery/gen-prai.py similarity index 100% rename from Back-End/TestDiscovery/gen-prai.py rename to backend/TestDiscovery/gen-prai.py diff --git a/Back-End/git_context_layer.py b/backend/TestDiscovery/git_context_layer.py similarity index 100% rename from Back-End/git_context_layer.py rename to backend/TestDiscovery/git_context_layer.py diff --git a/Back-End/TestDiscovery/local_pipeline_test.py b/backend/TestDiscovery/local_pipeline_test.py similarity index 100% rename from Back-End/TestDiscovery/local_pipeline_test.py rename to backend/TestDiscovery/local_pipeline_test.py diff --git a/Back-End/TestDiscovery/log_action.py b/backend/TestDiscovery/log_action.py similarity index 100% rename from Back-End/TestDiscovery/log_action.py rename to backend/TestDiscovery/log_action.py diff --git a/backend/TestDiscovery/lovable.py b/backend/TestDiscovery/lovable.py new file mode 100644 index 000000000..997d434d9 --- /dev/null +++ b/backend/TestDiscovery/lovable.py @@ -0,0 +1,158 @@ +import os +import threading +import requests +import json +import logging +from dotenv import load_dotenv +import asyncio +import stripe +from decimal import Decimal +from bson.json_util import dumps +from datetime import datetime, timedelta, timezone +import hmac +import hashlib +from flask import g, Flask, Response, request, jsonify, send_file, abort, redirect +from flask_cors import CORS +from asgiref.wsgi import WsgiToAsgi +from flask_jwt_extended import JWTManager, create_access_token, jwt_required, get_jwt_identity +from flask_limiter import Limiter +from flask_limiter.util import get_remote_address + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'Keys', 'keys.env')) + +from Agents.AppAI.PredictedTypeApp.ai import GeneratePredictedTypeAppAgent +from Agents.AppAI.SprintsPlanner.ai import SprintsPlannerAppAgent +from Agents.AppAI.CodeBackend.ai import CodeBackEndAgent +from Agents.AppAI.RequirementsPlanner.ai import RequirementsPlannerAppAgent +from Agents.AppAI.SprintsSheduler.ai import SprintsShedulerAppAgent + +from Agents.AppAI.CodeFrontend.ai import CodeFrontendAgent + +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") +user_id = 1 +model = "gpt-5-nano" +commit_language = "pt" +type_devlopment = 'create' +project_name = "Agendmedi" +tipo_app = "SaaS: Agenda de Consultas com Pagamento" +descricao = "sistema multiusuário (médicos e pacientes) para agendamento online de consultas com pagamento integrado via Stripe. Backend em Flask, PostgreSQL, Redis; Front-end em Vite + React; Observabilidade com MongoDB; Orquestração de tarefas com Celery + Redis; CI/CD com GitHub Actions." +user_task = "Quero um sistema onde médicos e pacientes possam agendar consultas online e pagar pelo site." +BACKEND_URL = "http://localhost:5910/api/tasks/add" +ACCESS_TOKEN = "IJGpuZxIP0eIJRfpzUsuCMbOEkq0dwR-Lq8sY2Uo-o0" +local_to_save = os.path.join(os.path.dirname(__file__), 'WorkEnv') + + +# type_app, justificativa, total_usage = asyncio.run(GeneratePredictedTypeAppAgent( +# OPENAI_API_KEY, +# user_id, +# user_task, +# commit_language = commit_language, +# model = model, +# )) + +# print(f"type_app {type_app}") +# print(f"justificativa {justificativa}") +# print(f"total_usage {total_usage}") + + + +# user_content = f""" +# user request: {user_task}\n + +# Predicted Type App:\n +# type_app: {type_app}\n +# justificativa: {justificativa} + + +# """ + +# user_content = """ +# Descrição do produto: sistema multiusuário (médicos e pacientes) para agendamento online de consultas com pagamento integrado via Stripe. Backend em Flask, PostgreSQL, Redis; Front-end em Vite + React; Observabilidade com MongoDB; Orquestração de tarefas com Celery + Redis; CI/CD com GitHub Actions. + +# """ +# total_usage, saved_files = asyncio.run(RequirementsPlannerAppAgent( +# OPENAI_API_KEY, +# user_id, +# tipo_app, +# descricao, +# user_content, +# commit_language = commit_language, +# model = model, +# local_to_save = local_to_save, +# type_requirements="frontend" + +# )) +# print(f"saved_files {saved_files}") + + +saved_files = ['e:\\Users\\Media Cuts DeV\\Downloads\\WorkEnv\\SoftwareAI\\Back-End\\WorkEnv/docs/technical-requirements.md', 'e:\\Users\\Media Cuts DeV\\Downloads\\WorkEnv\\SoftwareAI\\Back-End\\WorkEnv/docs/adr/001-architecture-decision.md', 'e:\\Users\\Media Cuts DeV\\Downloads\\WorkEnv\\SoftwareAI\\Back-End\\WorkEnv/docs/adr/002-api-client.md', 'e:\\Users\\Media Cuts DeV\\Downloads\\WorkEnv\\SoftwareAI\\Back-End\\WorkEnv/docs/adr/003-state-management.md', 'e:\\Users\\Media Cuts DeV\\Downloads\\WorkEnv\\SoftwareAI\\Back-End\\WorkEnv/docs/adr/004-security.md', 'e:\\Users\\Media Cuts DeV\\Downloads\\WorkEnv\\SoftwareAI\\Back-End\\WorkEnv/docs/requirements-summary.md'] + +total_usage, saved_files = asyncio.run(CodeFrontendAgent( + OPENAI_API_KEY, + user_id, + tipo_app, + descricao, + saved_files, + model = model, + local_to_save = local_to_save, + type_devlopment=type_devlopment, + project_name=project_name, + + )) +print(f"saved_files {saved_files}") + + + + + +# saved_files = ['docs/technical-requirements.md', 'docs/adr/001-architecture-decision.md', 'docs/adr/002-architecture-decision.md', 'docs/adr/003-architecture-decision.md', 'docs/requirements-summary.md'] + +# total_usage, caminho_do_arquivo = asyncio.run(SprintsPlannerAppAgent( +# OPENAI_API_KEY, +# user_id, +# tipo_app, +# descricao, +# saved_files, +# commit_language = commit_language, +# model = model, +# local_to_save=local_to_save +# )) + +# print(f"total_usage {total_usage}") +# print(f"caminho_do_arquivo {caminho_do_arquivo}") + +# os.chdir(os.path.join(os.path.dirname(__file__))) + + + +# with open(os.path.join(local_to_save, "sprint_plan.md"), "r") as content: +# user_content = content.read() + +# total_usage, total_de_tasks = asyncio.run(SprintsShedulerAppAgent( +# OPENAI_API_KEY, +# user_id, +# ACCESS_TOKEN, +# user_content, +# BACKEND_URL, +# commit_language = commit_language, +# model = model, +# )) + +# print(f"total_usage {total_usage}") +# print(f"total_de_tasks {total_de_tasks}") + +# with open(os.path.join(local_to_save, "sprint_1.md"), "r") as content: +# user_content = content.read() + +# total_usage, saved_files = asyncio.run(CodeBackEndAgent( +# OPENAI_API_KEY, +# user_id, +# tipo_app, +# descricao, +# user_content, +# commit_language = commit_language, +# model = model, +# local_to_save = local_to_save +# )) +# print(f"saved_files {saved_files}") diff --git a/Back-End/TestDiscovery/normalize_user.py b/backend/TestDiscovery/normalize_user.py similarity index 100% rename from Back-End/TestDiscovery/normalize_user.py rename to backend/TestDiscovery/normalize_user.py diff --git a/Back-End/observer.py b/backend/TestDiscovery/observer.py similarity index 100% rename from Back-End/observer.py rename to backend/TestDiscovery/observer.py diff --git a/Back-End/TestDiscovery/openai_status.py b/backend/TestDiscovery/openai_status.py similarity index 100% rename from Back-End/TestDiscovery/openai_status.py rename to backend/TestDiscovery/openai_status.py diff --git a/Back-End/TestDiscovery/rate_limiting.py b/backend/TestDiscovery/rate_limiting.py similarity index 100% rename from Back-End/TestDiscovery/rate_limiting.py rename to backend/TestDiscovery/rate_limiting.py diff --git a/Back-End/TestDiscovery/seed_invoices_for_freitas.md b/backend/TestDiscovery/seed_invoices_for_freitas.md similarity index 100% rename from Back-End/TestDiscovery/seed_invoices_for_freitas.md rename to backend/TestDiscovery/seed_invoices_for_freitas.md diff --git a/Back-End/TestDiscovery/test_usage_tokens.py b/backend/TestDiscovery/test_usage_tokens.py similarity index 100% rename from Back-End/TestDiscovery/test_usage_tokens.py rename to backend/TestDiscovery/test_usage_tokens.py diff --git a/backend/TestDiscovery/teste_ai_type.py b/backend/TestDiscovery/teste_ai_type.py new file mode 100644 index 000000000..515cfc867 --- /dev/null +++ b/backend/TestDiscovery/teste_ai_type.py @@ -0,0 +1,138 @@ + +import json +import logging +import os +from pydantic import BaseModel, Field +from pathlib import Path +from typing import Any, List, Optional, Union + +import backoff +import openai +import pyperclip +from fastapi import WebSocket +from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler +from langchain.chat_models.base import BaseChatModel +from langchain.schema import ( + AIMessage, + HumanMessage, + SystemMessage, + messages_from_dict, + messages_to_dict, +) +from langchain_core.messages import ( + AIMessage, + AnyMessage, + BaseMessage, + BaseMessageChunk, + HumanMessage, + convert_to_messages, + convert_to_openai_image_block, + is_data_content_block, + message_chunk_to_message, +) +from langchain_anthropic import ChatAnthropic +from langchain_openai import AzureChatOpenAI, ChatOpenAI +from firebase_admin import App +from Agents.gpt_engineer.core.files_dict import FilesDict, file_to_lines_dict +from Agents.gpt_engineer.core.base_memory import BaseMemory + +from Agents.gpt_engineer.core.default.steps import salvage_correct_hunks +from Agents.gpt_engineer.applications.cli.main import NonInteractiveFileSelector, memory_path, DiskMemory + +# Type hint for a chat message +Message = Union[AIMessage, HumanMessage, SystemMessage] + +def next( + messages: List[Message], +) -> List[Message]: + filename = "main.py" + + # with open(os.path.join(os.path.dirname(__file__), 'teste_main.diff'), 'r', encoding='utf-8') as f: + # diff = f.read() + diff_content = """ +--- main.py ++++ main.py +@@ -1,11 +1,11 @@ +- def hello_world(): ++ def hello_worlddddddddddddddd(): + print("Hello, World!") + + +def main(): + hello_world() + + +if __name__ == "__main__": + main() + + """ + + # print(f"diff {diff}") + content_str = f"{diff_content}" + response = BaseMessage(type="ai", content=content_str, filename=filename) + content = response.content + messages.append(response) + return messages + +def _improve( + files_dict: FilesDict, + memory: BaseMemory, + messages: List, + repo_path='', + diff_timeout=3 +) -> FilesDict: + messages = next(messages) + files_dict, errors = salvage_correct_hunks( + messages, + files_dict, + memory, + repo_path, + diff_timeout=diff_timeout + ) + + return files_dict, errors + +# os.chdir(os.path.join(os.path.dirname(__file__))) + +project_path=os.path.join(os.path.dirname(__file__), 'example8') + +# mock files_dict +file_selector = NonInteractiveFileSelector(project_path) +files_dict, is_linting = file_selector.ask_for_files( + skip_file_selection=True +) +# print(f"files_dict.keys() {files_dict.keys()}") + +# mock memory +memory = DiskMemory(memory_path(project_path)) +memory.archive_logs() + +# mock messages +messages = [ + SystemMessage(content="TESTE"), +] + +# mock next +messages = next( + messages, +) + +# mock improve +files_dict, errors = _improve( + files_dict, + memory, + messages, + repo_path=project_path, + diff_timeout=3 +) + +print(f"errors {errors}") + +# diff_content = messages[-1].content.strip() +# filename = messages[-1].filename +# print(f"filename {filename}") + +# # Remove comentários do LLM +# cleaned_lines = [line for line in diff_content.splitlines() if not line.strip().startswith("//")] +# diff_content_cleaned = "\n".join(cleaned_lines) +# print(f"diff_content_cleaned {diff_content_cleaned}") diff --git a/backend/TestDiscovery/teste_diff.py b/backend/TestDiscovery/teste_diff.py new file mode 100644 index 000000000..7ec3bba71 --- /dev/null +++ b/backend/TestDiscovery/teste_diff.py @@ -0,0 +1,34 @@ +from Agents.gpt_engineer.core.diffprocessor import DiffProcessor +import os +import tempfile + +# os.chdir() +# diff_file = os.path.join(os.path.dirname(__file__), 'example8', "teste.diff") +diff_content = """ +--- /dev/null ++++ main.py +@@ -0,0 +1,10 @@ ++def hello_world(): ++ print("Hello, World!") ++ ++ ++def main(): ++ hello_world() ++ ++ ++if __name__ == "__main__": ++ main() +""" +repo_path = os.path.join(os.path.dirname(__file__), 'example8') + +with tempfile.NamedTemporaryFile("w+", delete=False, encoding="utf-8", suffix=".diff") as tmp_diff: + tmp_diff.write(diff_content) + tmp_diff_path = tmp_diff.name + +dp = DiffProcessor(diff_path=tmp_diff_path) +dp.parse() +print(dp.summary()) +dp.validate() +dp.apply(repo_path) + +os.remove(tmp_diff_path) \ No newline at end of file diff --git a/backend/TestDiscovery/teste_main.diff b/backend/TestDiscovery/teste_main.diff new file mode 100644 index 000000000..28088d29d --- /dev/null +++ b/backend/TestDiscovery/teste_main.diff @@ -0,0 +1,21 @@ +--- a/main.py ++++ b/main.py +@@ -5,11 +5,12 @@ + + def initialize_app(config): + """Inicializa as configurações básicas do aplicativo.""" ++ logging.info(f"Configurações carregadas: {config}") + logging.info("Aplicação iniciada.") + # TODO: Implementar carregamento de rotas e banco de dados + if not config.get('DEBUG', False): + logging.info("Modo de produção ativo.") + + def run_server(): + """Simula o loop principal do servidor.""" + config = {'DEBUG': True} + initialize_app(config) +- print("Servidor rodando...") ++ logging.info("Servidor pronto e rodando.") + + if __name__ == "__main__": + run_server() \ No newline at end of file diff --git a/backend/TestDiscovery/teste_mcp.py b/backend/TestDiscovery/teste_mcp.py new file mode 100644 index 000000000..519bc5dc6 --- /dev/null +++ b/backend/TestDiscovery/teste_mcp.py @@ -0,0 +1,33 @@ +from pathlib import Path +from agents import Agent, Runner +from agents.mcp import MCPServerStdio +import asyncio +import os +from dotenv import load_dotenv + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), "Keys", 'keys.env')) + +import asyncio + +from agents import Agent, HostedMCPTool, Runner + +async def main() -> None: + agent = Agent( + name="Assistant", + tools=[ + HostedMCPTool( + tool_config={ + "type": "mcp", + "server_label": "gitmcp", + "server_url": "https://gitmcp.io/openai/codex", + "require_approval": "never", + } + ) + ], + ) + + result = await Runner.run(agent, "https://github.com/openai/openai-chatkit-advanced-samples Which language is this repository written in?") + print(result.final_output) + +asyncio.run(main()) \ No newline at end of file diff --git a/backend/TestDiscovery/testerun_gpt_engineer.py b/backend/TestDiscovery/testerun_gpt_engineer.py new file mode 100644 index 000000000..8582d1ba4 --- /dev/null +++ b/backend/TestDiscovery/testerun_gpt_engineer.py @@ -0,0 +1,48 @@ +import os +from dotenv import load_dotenv + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'Keys', 'keys.env')) + +from Agents.gpt_engineer.applications.cli.main import run_gpt_engineer + +default_prompt = """ +Product Description (Front-End): Multi-user system (doctors and patients) for online appointment scheduling. +The front-end should be developed in Vite + React, including: + +- Responsive and accessible interface for desktop and mobile. +- Reusable and modularized components. +- User management (registration, login, profile). +- Appointment scheduling. +- Payments via Stripe. +- Global state and data management. +- Minimal observability on the front-end. +- Support for authentication and authorization of different user profiles. +- Best UI/UX practices, including feedback for user actions. +- Organized folder structure and easy maintenance. +""" + +with open("errorr.txt", "r", encoding='utf-8') as err: + error = err.read() +improvment_prompt = f""" +pense passo a passo para resolver o erro abaixo e corrija os arquivos problematicos de forma proativa: +{error} +""" + +result = run_gpt_engineer( + project_path="./example8", + # default_prompt=default_prompt, + default_improve_prompt=improvment_prompt, + improve_mode=True, + model="gpt-5-nano", + auto_apply_changes=True, + skip_entrypoint_execution=True, # Pula confirmações + verbose=True, + debug=True +) + +if result.success: + print("Success!") + print("Files created:", list(result.files_dict.keys())) +else: + print("Error:", result.error_message) \ No newline at end of file diff --git a/backend/TestDiscovery/testes.py b/backend/TestDiscovery/testes.py new file mode 100644 index 000000000..acbb829b5 --- /dev/null +++ b/backend/TestDiscovery/testes.py @@ -0,0 +1,6 @@ +# Simple check to confirm the database connection is minimally functional +from Modules.ChatKit.postgres_store import Thread +from api import app +with app.app_context(): + Thread.query.count() +print("Database connection verified: Thread table queried successfully.") diff --git a/Back-End/Workflows/PullRequest/pr.yml b/backend/Workflows/pr.yml similarity index 100% rename from Back-End/Workflows/PullRequest/pr.yml rename to backend/Workflows/pr.yml diff --git a/Back-End/api.py b/backend/api.py similarity index 92% rename from Back-End/api.py rename to backend/api.py index 90822e146..a60e02ac2 100644 --- a/Back-End/api.py +++ b/backend/api.py @@ -22,7 +22,7 @@ from Models.postgreSQL import * from Modules.Resolvers.pr_process import process_pull_request from Modules.Resolvers.generate_invoice_pdf import generate_invoice_pdf -from Modules.Resolvers.user_identifier import auth_user, require_user_token, resolve_user_identifier +from Modules.Resolvers.user_identifier import auth_user from Modules.Geters.systemsettings import * from Modules.Geters.user_by_access_token import get_user_by_access_token @@ -43,6 +43,7 @@ from Modules.Geters.plans_data import get_plans_data from Modules.Resolvers.verify_signature import verify_signature from Modules.Resolvers.git_contex_layer_process import process_git_context_layer +from Modules.Savers.create_task import create_task diretorio_script = os.path.dirname(os.path.abspath(__file__)) logger = logging.getLogger(__name__) @@ -57,7 +58,7 @@ logger.addHandler(console_handler) os.chdir(os.path.join(os.path.dirname(__file__))) -load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'keys.env')) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), "Keys", 'keys.env')) INVOICES_DIR = os.path.join(os.path.dirname(__file__), 'Invoices') @@ -178,7 +179,6 @@ def register(): return jsonify({'error': 'Failed to register user', 'detail': str(e)}), 500 @app.route('/api/login', methods=['GET']) -# @require_user_token(optional=True) def login(): try: email = request.args.get('email') @@ -220,7 +220,7 @@ def health_check(): numeric_user_id = user.id - GITHUB_TOKEN, OPENAI_API_KEY, GITHUB_SECRET, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) + GITHUB_TOKEN, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) health_status = { 'status': 'ok', @@ -339,7 +339,7 @@ def get_rate_limits(): 'timestamp': datetime.utcnow().isoformat() } - GITHUB_TOKEN, OPENAI_API_KEY, GITHUB_SECRET, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) + GITHUB_TOKEN, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) # GitHub Rate Limits if GITHUB_TOKEN: @@ -400,11 +400,7 @@ def get_settings(): response_data = { 'githubToken': settings.github_token, 'GITHUB_TOKEN': settings.github_token, - 'githubSecret': settings.github_secret, - 'repositoryName': settings.repository_name or '', - 'openaiApiKey': settings.openai_api_key, - 'webhookUrl': settings.webhook_url or '', - 'autoProcessPRs': settings.auto_process_prs, + 'repository_name': settings.repository_name or '', 'enableLogging': settings.enable_logging, 'logLevel': settings.log_level or 'INFO', @@ -454,11 +450,7 @@ def update_settings(): db.session.add(settings) settings.github_token = data.get('githubToken') - settings.github_secret = data.get('githubSecret') settings.repository_name = data.get('repositoryName') - settings.openai_api_key = data.get('openaiApiKey') - settings.webhook_url = data.get('webhookUrl') - settings.auto_process_prs = data.get('autoProcessPRs') settings.enable_logging = data.get('enableLogging') settings.log_level = data.get('logLevel') @@ -552,7 +544,7 @@ def test_connection(service): }), 400 elif service == 'openai': - if not settings or not settings.openai_api_key: + if not settings or not OPENAI_API_KEY: log_action(logs_collection, 'settings_openai_api_key_error', { 'status': 'error', 'service': service, @@ -566,7 +558,7 @@ def test_connection(service): response = requests.get( 'https://api.openai.com/v1/models', - headers={'Authorization': f'Bearer {settings.openai_api_key}'}, + headers={'Authorization': f'Bearer {OPENAI_API_KEY}'}, timeout=10 ) @@ -844,7 +836,7 @@ def get_pull_requests(): numeric_user_id = user.id - GITHUB_TOKEN, OPENAI_API_KEY, GITHUB_SECRET, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) + GITHUB_TOKEN, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) try: @@ -914,7 +906,7 @@ def get_pull_request_details(pr_id): numeric_user_id = user.id - GITHUB_TOKEN, OPENAI_API_KEY, GITHUB_SECRET, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) + GITHUB_TOKEN, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) try: pr = PullRequest.query.filter_by(id=pr_id, user_id=numeric_user_id).first_or_404() @@ -1010,7 +1002,6 @@ def parse_to_aware(dt): return None @app.route('/api/dashboard-data', methods=['GET']) -# def get_dashboard_data(): """Obter dados agregados para o dashboard (correção focada: apenas aqui).""" @@ -1152,7 +1143,6 @@ def get_dashboard_data(): @app.route('/api/workflows', methods=['GET']) - def list_workflows(): """ Lista workflows (arquivos .yml/.yaml) a partir de WORKFLOWS_PATH (env) ou ./workflows. @@ -1210,7 +1200,6 @@ def list_workflows(): return jsonify({'error': 'Failed to list workflows', 'detail': str(e)}), 500 @app.route('/api/myaccount', methods=['GET']) - def my_account(): """ Retorna informações da conta do usuário autenticado. @@ -1243,7 +1232,6 @@ def my_account(): @app.route('/api/invoices', methods=['GET']) - def list_invoices(): """ Listar faturas paginadas. @@ -1289,7 +1277,6 @@ def list_invoices(): @app.route('/api/invoices/', methods=['GET']) - def get_invoice_detail(invoice_id): """ Detalhe da fatura (inclui linhas / itens). @@ -1318,7 +1305,6 @@ def get_invoice_detail(invoice_id): @app.route('/api/invoices//download', methods=['GET']) - def download_invoice(invoice_id): """ Download do PDF da fatura. @@ -1370,7 +1356,6 @@ def download_invoice(invoice_id): @app.route('/api/reprocess-pr/', methods=['POST']) - def reprocess_pr(pr_number): """Reprocessar um Pull Request específico""" data = request.get_json() @@ -1384,7 +1369,7 @@ def reprocess_pr(pr_number): numeric_user_id = user.id model = "gpt-5-nano" - GITHUB_TOKEN, OPENAI_API_KEY, GITHUB_SECRET, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) + GITHUB_TOKEN, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) thread = threading.Thread(target=process_pull_request, args=( app, numeric_user_id, @@ -1418,7 +1403,7 @@ def prai(): numeric_user_id = user.id model = "gpt-5-nano" - GITHUB_TOKEN, _, GITHUB_SECRET, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) + GITHUB_TOKEN, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) threading.Thread(target=process_pull_request, args=( app, @@ -1438,9 +1423,6 @@ def prai(): 'triggered_by': numeric_user_id }), 202 - - - @app.route('/api/prai/diff_context', methods=['POST']) def diff_context(): data = request.get_json() @@ -1455,7 +1437,7 @@ def diff_context(): numeric_user_id = user.id model = "gpt-5-nano" - GITHUB_TOKEN, _, GITHUB_SECRET, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) + GITHUB_TOKEN, REPOSITORY_NAME = get_tokens(numeric_user_id, log_action, logs_collection, SystemSettings, db) commit_message = process_git_context_layer( app, @@ -1478,6 +1460,145 @@ def diff_context(): + + + + + + +@app.route('/api/tasks/add', methods=['POST']) +def add_task(): + """ + Endpoint para criar uma tarefa na fila process_dynamic_queue + """ + data = request.get_json() + if not data: + return jsonify({"error": "Nenhum dado fornecido"}), 400 + + user_id = data.get('user_id') + content = data.get('content') + EMPLOYER_CATEGORY = data.get('category') + priority = data.get('priority', 1) + hours = data.get('hours', "1.0") + lang = data.get('lang', "pt") + eta_str = data.get('eta') # Espera string ISO + + if not user_id or not content: + return jsonify({"error": "Campos 'user_id' e 'content' são obrigatórios"}), 400 + + try: + + + task_id = create_task(user_id, content, priority, hours, lang, eta_str, EMPLOYER_CATEGORY) + + + return jsonify({"task_id": task_id, "status": "created"}), 201 + except Exception as e: + return jsonify({"error": str(e)}), 500 + +@app.route('/api/tasks/list', methods=['GET']) +def list_tasks(): + """Listar tarefas criadas pelo usuário, com filtros e paginação""" + user, _, status = auth_user(logs_collection, app) + if status != "success" or not user: + return jsonify({"error": "Usuário não autenticado ou inválido"}), 401 + + numeric_user_id = user.id + page = int(request.args.get("page", 1)) + limit = int(request.args.get("limit", 50)) + search_term = request.args.get("searchTerm", None) + status_filter = request.args.get("status", None) + + try: + query = BackendTask.query.filter_by(user_id=numeric_user_id) + + if search_term: + query = query.filter(BackendTask.user_content.ilike(f'%{search_term}%')) + if status_filter: + query = query.filter(BackendTask.status == status_filter) + + tasks_paginated = query.order_by(BackendTask.created_at.desc()).paginate( + page=page, per_page=limit, error_out=False + ) + + formatted_tasks = [] + for task in tasks_paginated.items: + formatted_tasks.append({ + 'id': str(task.id), + 'content': task.user_content, + 'priority': task.priority, + 'status': task.status, + 'createdAt': task.created_at.isoformat(), + 'completedAt': task.completed_at.isoformat() if task.completed_at else None, + 'eta_str': task.eta_str if task.eta_str else None, + 'estimatedCapacity': task.estimated_hours, + 'total_tokens': task.total_tokens, + 'commitLanguage': task.commit_language + }) + + log_action(logs_collection, 'tasks_listed', { + 'page': page, + 'limit': limit, + 'searchTerm': search_term, + 'status': status_filter, + 'total_found': tasks_paginated.total + }, user=numeric_user_id) + + return jsonify(formatted_tasks) + + except Exception as e: + log_action(logs_collection, 'tasks_list_error', {'error': str(e)}, user=numeric_user_id, level='error') + return jsonify({'error': 'Falha ao buscar tarefas'}), 500 + +@app.route('/api/tasks/details/', methods=['GET']) +def get_task_details(task_id): + """Obter detalhes de uma tarefa específica""" + user, _, status = auth_user(logs_collection, app) + if status != "success" or not user: + return jsonify({"error": "Usuário não autenticado ou inválido"}), 401 + + numeric_user_id = user.id + + try: + task = BackendTask.query.filter_by(id=task_id, user_id=numeric_user_id).first_or_404() + + task_details = { + 'id': str(task.id), + 'content': task.user_content, + 'priority': task.priority, + 'status': task.status, + 'createdAt': task.created_at.isoformat(), + 'completedAt': task.completed_at.isoformat() if task.completed_at else None, + 'eta_str': task.eta_str if task.eta_str else None, + 'estimatedHours': task.estimated_hours, + 'total_tokens': task.total_tokens, + 'commitLanguage': task.commit_language, + 'result': task.result if hasattr(task, 'result') else None # caso você armazene resultado + } + + log_action(logs_collection, 'task_details_accessed', { + 'task_id': task_id + }, user=numeric_user_id) + + return jsonify(task_details) + + except Exception as e: + logger.info(f"task_details_error {str(e)}") + log_action(logs_collection, 'task_details_error', {'task_id': task_id, 'error': str(e)}, user=numeric_user_id, level='error') + return jsonify({'error': 'Falha ao buscar detalhes da tarefa'}), 500 + + + + + + + + + + + + + @app.route("/api/billing/checkout", methods=["POST"]) def create_checkout(): data = request.get_json() diff --git a/backend/apichatkit.py b/backend/apichatkit.py new file mode 100644 index 000000000..c8ece3661 --- /dev/null +++ b/backend/apichatkit.py @@ -0,0 +1,93 @@ +"""FastAPI entrypoint wiring the ChatKit server and REST endpoints.""" + +from __future__ import annotations +import os +from typing import Any +from dotenv import load_dotenv +from chatkit.server import StreamingResult +from fastapi import Depends, FastAPI, HTTPException, Request, status +from fastapi.responses import Response, StreamingResponse +from starlette.responses import JSONResponse +from fastapi.middleware.cors import CORSMiddleware +from Modules.ChatKit.chat import ( + SoftwareAIAgentServer, + create_chatkit_server, +) +from Modules.ChatKit.facts import fact_store +from api import db, app as app_flask + + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), "Keys", 'keys.env')) + + +app = FastAPI(title="ChatKit API") +origins = [ + "http://localhost:4684", + "http://localhost:5170", +] + +app.add_middleware( + CORSMiddleware, + allow_origins=origins, + allow_credentials=True, + allow_methods=["*"], + allow_headers=["*"], +) + +_chatkit_server: SoftwareAIAgentServer | None = create_chatkit_server() + + +def get_chatkit_server() -> SoftwareAIAgentServer: + if _chatkit_server is None: + raise HTTPException( + status_code=status.HTTP_503_SERVICE_UNAVAILABLE, + detail=( + "ChatKit dependencies are missing. Install the ChatKit Python " + "package to enable the conversational endpoint." + ), + ) + return _chatkit_server + + +@app.post("/chatkit") +async def chatkit_endpoint( + request: Request, server: SoftwareAIAgentServer = Depends(get_chatkit_server) +) -> Response: + payload = await request.body() + result = await server.process(payload, {"request": request}) + if isinstance(result, StreamingResult): + return StreamingResponse(result, media_type="text/event-stream") + if hasattr(result, "json"): + return Response(content=result.json, media_type="application/json") + return JSONResponse(result) + + +@app.get("/facts") +async def list_facts() -> dict[str, Any]: + with app_flask.app_context(): + facts = await fact_store.list_saved() + return {"facts": [fact.as_dict() for fact in facts]} + + +@app.post("/facts/{fact_id}/save") +async def save_fact(fact_id: str) -> dict[str, Any]: + with app_flask.app_context(): + fact = await fact_store.mark_saved(fact_id) + if fact is None: + raise HTTPException(status_code=404, detail="Fact not found") + return {"fact": fact.as_dict()} + + +@app.post("/facts/{fact_id}/discard") +async def discard_fact(fact_id: str) -> dict[str, Any]: + with app_flask.app_context(): + fact = await fact_store.discard(fact_id) + if fact is None: + raise HTTPException(status_code=404, detail="Fact not found") + return {"fact": fact.as_dict()} + + +@app.get("/health") +async def health_check() -> dict[str, str]: + return {"status": "healthy"} diff --git a/backend/celery_app.py b/backend/celery_app.py new file mode 100644 index 000000000..1848f95c4 --- /dev/null +++ b/backend/celery_app.py @@ -0,0 +1,131 @@ +# celery_app.py +from celery import Celery +from celery.schedules import crontab +import os +from dotenv import load_dotenv +import asyncio +from datetime import datetime +import pytz + +from Models.postgreSQL import db +from Models.postgreSQL import BackendTask, TaskStatus +from Modules.Geters.next_task import get_next_task +from api import app + +os.chdir(os.path.join(os.path.dirname(__file__))) +load_dotenv(dotenv_path=os.path.join(os.path.dirname(__file__), 'Keys', 'keys.env')) + +from Agents.AppAI.CodeBackend.ai import CodeBackEndAgent + +OPENAI_API_KEY = os.getenv("OPENAI_API_KEY") +REDIS_URL = "redis://redis:6379/0" +local_to_save = os.path.join(os.path.dirname(__file__), 'WorkEnv') +os.makedirs(local_to_save, exist_ok=True) + +celery_app = Celery( + "api", + broker=REDIS_URL, + backend=REDIS_URL +) + +celery_app.conf.update( + task_serializer='json', + accept_content=['json'], + task_track_started=True, # Permite o acompanhamento do progresso + worker_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(message)s", + worker_task_log_format="[%(asctime)s: %(levelname)s/%(processName)s] %(taskName)s %(task_id)s %(message)s", + loglevel='DEBUG', + worker_concurrency=10, + task_always_eager=False, + task_acks_late=False, # Garante que a tarefa só será confirmada após sua execução + task_reject_on_worker_lost=True, +) +celery_app.conf.worker_prefetch_multiplier = 1 +celery_app.conf.timezone = 'America/Sao_Paulo' +celery_app.conf.enable_utc = False +# celery_app.autodiscover_tasks(['.']) +# from tasks import * + +# celery_app.conf.beat_schedule = { +# "run-backend-agent-daily": { +# "task": "tasks.run_backend_agent", +# "schedule": crontab(hour=9, minute=0), +# "args": ("user_123", "Implementar endpoints do backend hoje", "pt") +# }, +# } + +celery_app.conf.beat_schedule = { + "process-dynamic-queue-every-minute": { + "task": "celery_app.process_dynamic_queue", + "schedule": crontab(minute="*/1"), + }, +} +@celery_app.task +def process_dynamic_queue(): + """ + Verifica o banco e envia a próxima tarefa para execução. + """ + with app.app_context(): + + task = get_next_task() + if not task: + print("🚫 Nenhuma tarefa pendente.") + return + + print(f"🚀 Executando tarefa #{task.id} | Prioridade: {task.priority}") + + async def execute_task(): + try: + eta_str = task.eta_str + eta_dt = None + if eta_str: + try: + eta_dt = datetime.fromisoformat(eta_str) + except ValueError: + print(f"Formato de 'eta' inválido. Use ISO 8601") + task.status = TaskStatus.FAILED.value + db.session.commit() + + if task.category == "desenvolvimento": + result = run_backend_agent.apply_async( + args=(task.id, task.user_id, task.user_content, task.commit_language), + eta=eta_dt + ) + print(f"Tarefa #{task.id} enviada com sucesso.") + return result + except Exception as e: + print(f"Erro ao enviar tarefa #{task.id}: {e}") + # Atualiza status para FAILED + task.status = TaskStatus.FAILED.value + db.session.commit() + + asyncio.run(execute_task()) + +@celery_app.task +def run_backend_agent(task_id, user_id: str, user_content: str, commit_language: str = "pt"): + """Task Celery para executar o CodeBackEndAgent.""" + with app.app_context(): + + print(f"🚀 Executando tarefa CodeBackEndAgent") + + # total_tokens, saved_files = asyncio.run( + # CodeBackEndAgent( + # OPENAI_API_KEY=OPENAI_API_KEY, + # user_id=user_id, + # user_content=user_content, + # commit_language=commit_language, + # local_to_save=local_to_save + # ) + # ) + total_tokens = 7800 + saved_files = '' + tz = pytz.timezone("America/Sao_Paulo") + if task_id: + task = BackendTask.query.get(task_id) + if task: + task.status = TaskStatus.DONE.value + task.completed_at = datetime.now(tz) + task.total_tokens = total_tokens + db.session.commit() + + return {"total_tokens": total_tokens, "saved_files": saved_files} \ No newline at end of file diff --git a/backend/celerybeat-schedule b/backend/celerybeat-schedule new file mode 100644 index 0000000000000000000000000000000000000000..bafda8998e089e22d787c8bc12c3acff35565a63 GIT binary patch literal 3072 zcmeHH&1w`u5bo90{foLG3IU@8FKToqNRkH#l7obR7%?JZ(=*#~8fSVoGd;pCEbJ)| z=vz7{-h2b`1w4xfAHb7GFFrzI)lRRg!T6g9tLdh?e!9An0W*hW0av6ug_+uyx@f05G1e8koh z%YGW@?1Pu*Gv(8zFYMo|+g^2e_2TxpY7=tB#=+h_3AB4)%>_@p#g1|DK1nKKNolvZ zWq~L9*ql4(&KOsWCuNfrs;S<86F9S*5mP9$WexY0GAhoHM2XUgak%YMKcS;!aQvMsY|E(HZW znY&QdY`QiiwIOLQq|xODQ(TD%0uIDYbG=&nP_5Kvos-dB*zqzEDj`#&OAonXN+pm% zm)o)ALaxRj-UIOlieRtMOg4r8DCB0{+%n%P!(stfxP6ekr#=G2s73I|34cI>G1B~wMGe$p$^q<05$42qyfMMMJ1sKl-F#kG? dzx^u)_^%8j{- usa filtro is_not_empty (show all with status definido). + Se status_value inválido -> usa is_not_empty e loga aviso. + """ + # validar status + valid_statuses = list_status_options(db_id) + if status_value: + if status_value not in valid_statuses: + logger.warning("Status '%s' não encontrado entre as opções do DB. Usando is_not_empty em vez de equals.", status_value) + status_filter = {"property": "Status", "status": {"is_not_empty": True}} + else: + status_filter = {"property": "Status", "status": {"equals": status_value}} + else: + status_filter = {"property": "Status", "status": {"is_not_empty": True}} + + results = [] + try: + has_more = True + start_cursor = None + while has_more: + query_kwargs = { + "database_id": db_id, + "filter": status_filter, + "page_size": 100 + } + if start_cursor: + query_kwargs["start_cursor"] = start_cursor + + res = notion.databases.query(**query_kwargs) + results.extend(res.get("results", [])) + has_more = res.get("has_more", False) + start_cursor = res.get("next_cursor") + logger.info("Página recebida: %d itens (has_more=%s)", len(res.get("results", [])), has_more) + + logger.info("Total de itens retornados: %d", len(results)) + return results + + except APIResponseError as e: + logger.exception("Erro ao consultar database: %s", e) + return [] + + +def safe_get_title(properties: dict): + """Retorna o título de forma segura. Usa chaves prováveis e faz fallback para id/url se vazio.""" + # chaves prováveis em PT/EN + candidate_keys = ["Nome do projeto", "Nome", "Name", "title"] + for key in candidate_keys: + prop = properties.get(key) + if prop and prop.get("type") in ("title",): + title_list = prop.get("title", []) + if title_list: + return title_list[0].get("plain_text", "").strip() + + # fallback: tentar qualquer propriedade do tipo title + for k, v in properties.items(): + if v.get("type") == "title": + tl = v.get("title", []) + if tl: + return tl[0].get("plain_text", "").strip() + + # se tudo vazio, retorna vazio para caller tratar + return "" + + +def get_rich_text_from_property(properties: dict, keys=None) -> str: + """ + Retorna o texto contido numa propriedade do tipo rich_text. + keys: lista de nomes possíveis da propriedade (ex: ["Descrição do projeto", "Descrição"]) + """ + if keys is None: + keys = ["Descrição do projeto", "Descrição", "Description"] + + for key in keys: + prop = properties.get(key) + if not prop: + continue + # suporta tanto rich_text quanto title (fallback) + if prop.get("type") == "rich_text": + parts = prop.get("rich_text", []) + texts = [seg.get("plain_text", "") for seg in parts if seg.get("plain_text")] + return sanitize_text(" ".join(texts)) + if prop.get("type") == "title": + parts = prop.get("title", []) + texts = [seg.get("plain_text", "") for seg in parts if seg.get("plain_text")] + return sanitize_text(" ".join(texts)) + return "" + + +def _extract_plain_from_rich_text_list(rich_list: list) -> str: + """Helper: junta os plain_texts de uma lista rich_text.""" + if not rich_list: + return "" + return sanitize_text(" ".join([seg.get("plain_text", "") for seg in rich_list if seg.get("plain_text")])) + +def sanitize_text(s: str) -> str: + """Remove quebras de linha e colapsa múltiplos espaços.""" + if not s: + return "" + s = s.replace("\r", " ").replace("\n", " ") + s = re.sub(r"\s+", " ", s).strip() + return s + +def get_page_text_recursive(block_id: str) -> str: + """ + Busca o conteúdo em blocos (children) de uma página (ou bloco) recursivamente. + Retorna todo texto concatenado (parágrafos, headings, lists, callouts, quotes). + """ + texts = [] + + try: + start_cursor = None + while True: + if start_cursor: + res = notion.blocks.children.list(block_id=block_id, start_cursor=start_cursor, page_size=100) + else: + res = notion.blocks.children.list(block_id=block_id, page_size=100) + + for block in res.get("results", []): + t = block.get("type") + # tipos comuns com rich_text + if t in ("paragraph", "heading_1", "heading_2", "heading_3", + "bulleted_list_item", "numbered_list_item", + "quote", "callout", "to_do"): + content = block.get(t, {}) + rich = content.get("rich_text", []) or content.get("text", []) or [] + texts.append(_extract_plain_from_rich_text_list(rich)) + + # toggles, páginas aninhadas e lists podem ter children -> recursão + if block.get("has_children"): + # chamar recursivamente e anexar + child_text = get_page_text_recursive(block["id"]) + if child_text: + texts.append(child_text) + + # outros tipos (embed, image, video) -> opcionalmente podemos logar ou extrair captions + if t in ("image", "video", "file"): + caption = block.get(t, {}).get("caption", []) + if caption: + texts.append(_extract_plain_from_rich_text_list(caption)) + + if not res.get("has_more"): + break + start_cursor = res.get("next_cursor") + + except Exception as e: + logger.exception("Erro ao ler blocks.children para %s: %s", block_id, e) + + return sanitize_text("\n".join([txt for txt in texts if txt])) + + +def extract_rich_segments_from_property(prop: dict): + """ + Recebe a propriedade (ex: prop = properties['Descrição do projeto']) + Retorna lista de segmentos: { 'text': str, 'href': str|None, 'annotations': {...}, 'type': 'text'|'mention'|'equation'} + """ + segments = [] + if not prop: + return segments + + # pode ser rich_text ou title + key = 'rich_text' if prop.get('type') == 'rich_text' else ('title' if prop.get('type') == 'title' else None) + if not key: + return segments + + for seg in prop.get(key, []): + # seg: objeto rich_text do Notion + text = seg.get('plain_text', '') or '' + href = None + # o texto pode estar em seg['text'] com link + if seg.get('href'): + href = seg.get('href') + elif seg.get('text') and seg['text'].get('link'): + # formato alternativo dependendo do SDK + link = seg['text'].get('link') + if isinstance(link, dict): + href = link.get('url') + + annotations = seg.get('annotations', {}) + rtype = seg.get('type') # 'text', 'mention', 'equation' + # para mentions podemos extrair info extra + mention = seg.get('mention') if rtype == 'mention' else None + + segments.append({ + 'text': text, + 'href': href, + 'annotations': annotations, + 'type': rtype, + 'mention': mention + }) + return segments + + +def rich_segments_to_markdown(segments: list) -> str: + """ + Converte uma lista de segmentos (do extract_rich_segments_from_property) para Markdown simples. + Suporta bold, italic, strikethrough, code, links. + """ + out = [] + for s in segments: + txt = s.get('text', '') + ann = s.get('annotations', {}) or {} + # aplicar código primeiro (backticks) + if ann.get('code'): + txt = f'`{txt}`' + # aplicar negrito / italic / strike / underline (underline não tem markdown direto) + if ann.get('bold'): + txt = f'**{txt}**' + if ann.get('italic'): + txt = f'*{txt}*' + if ann.get('strikethrough'): + txt = f'~~{txt}~~' + # link + href = s.get('href') + if href: + txt = f'[{txt}]({href})' + out.append(txt) + return ''.join(out) + + +# Versão que retorna segmentos ao invés de plain_text do seu get_page_text_recursive +def get_page_rich_segments_recursive(block_id: str) -> list: + """ + Retorna lista de segmentos ricos (mantendo annotations/href) para todo o corpo da página (recursivo). + Cada item desta lista é um dict: {'block_type': 'paragraph', 'segments': [ ... ] } + """ + results = [] + try: + start_cursor = None + while True: + if start_cursor: + res = notion.blocks.children.list(block_id=block_id, start_cursor=start_cursor, page_size=100) + else: + res = notion.blocks.children.list(block_id=block_id, page_size=100) + + for block in res.get('results', []): + t = block.get('type') + container = block.get(t, {}) or {} + segments = [] + + # extrair rich_text dependendo do tipo de bloco + if t in ("paragraph", "heading_1", "heading_2", "heading_3", + "bulleted_list_item", "numbered_list_item", + "quote", "callout", "to_do"): + # normalmente é container['rich_text'] + rich_list = container.get('rich_text') or container.get('text') or [] + for seg in rich_list: + segments.append({ + 'text': seg.get('plain_text', ''), + 'href': seg.get('href') or (seg.get('text') and seg.get('text').get('link') and seg.get('text').get('link').get('url')), + 'annotations': seg.get('annotations', {}), + 'type': seg.get('type'), + 'raw': seg + }) + + # adicionar o bloco com seus segmentos (mesmo que vazio) + results.append({ + 'block_id': block.get('id'), + 'block_type': t, + 'segments': segments + }) + + # recursão para children + if block.get('has_children'): + child_segments = get_page_rich_segments_recursive(block['id']) + # anexar os filhos como itens separados (ou você pode concatenar) + if child_segments: + results.extend(child_segments) + + if not res.get('has_more'): + break + start_cursor = res.get('next_cursor') + + except Exception as e: + logger.exception("Erro ao ler blocks.children para %s: %s", block_id, e) + + return results +def get_block_children(block_id: str) -> list: + """ + Retorna a lista de blocos filhos imediatos de `block_id`. + Cada item é o dict bruto do Notion para o bloco filho. + Faz paginação automaticamente. + """ + children = [] + try: + start_cursor = None + while True: + if start_cursor: + res = notion.blocks.children.list(block_id=block_id, start_cursor=start_cursor, page_size=100) + else: + res = notion.blocks.children.list(block_id=block_id, page_size=100) + + children.extend(res.get("results", [])) + + if not res.get("has_more"): + break + start_cursor = res.get("next_cursor") + + except Exception as e: + logger.exception("Erro ao recuperar filhos do bloco %s: %s", block_id, e) + + return children + + +def _make_block_node(block: dict) -> dict: + """ + Normaliza um bloco bruto do Notion para uma estrutura simples: + {id, type, plain_text (concat dos rich_text do bloco), raw} + """ + t = block.get("type") + container = block.get(t, {}) or {} + # extrair texto plain do bloco quando aplicável + rich = container.get("rich_text") or container.get("text") or [] + plain = _extract_plain_from_rich_text_list(rich) + return { + "id": block.get("id"), + "type": t, + "plain_text": plain, + "has_children": block.get("has_children", False), + "raw": block # se quiser campos completos depois + } + + +def get_block_tree(block_id: str, depth: int | None = None) -> dict: + """ + Constrói uma árvore com o bloco raiz e seus filhos recursivamente. + - block_id: id do bloco/página a partir do qual extrair + - depth: profundidade máxima (None = sem limite). depth=0 retorna apenas o nó raiz. + Retorna um dict: {'node': , 'children': [ ... ]} + """ + try: + # recuperar o bloco raiz (para pegar tipo/conteúdo do próprio bloco) + root = notion.blocks.retrieve(block_id=block_id) + except Exception as e: + logger.exception("Erro ao recuperar bloco raiz %s: %s", block_id, e) + return {"node": None, "children": []} + + node = _make_block_node(root) + + if depth is not None and depth <= 0: + return {"node": node, "children": []} + + # buscar filhos imediatos + raw_children = get_block_children(block_id) + children_nodes = [] + for child in raw_children: + child_node = _make_block_node(child) + # se tiver filhos e ainda permitimos profundidade, fazer recursão + if child_node["has_children"]: + # calcular nova profundidade + next_depth = None if depth is None else (depth - 1) + # recursão + subtree = get_block_tree(child_node["id"], depth=next_depth) + # substituir raw children pela árvore retornada + children_nodes.append({"node": child_node, "children": subtree["children"]}) + else: + children_nodes.append({"node": child_node, "children": []}) + + return {"node": node, "children": children_nodes} + +def retrieve_page(page_id: str, filter_properties: list | None = None) -> dict: + """ + Recupera uma página via notion.pages.retrieve. + - page_id: id da página (UUID do page retornado pela query do database) + - filter_properties: lista de property ids se quiser limitar (opcional) + Retorna o dict bruto da Notion (page). + """ + try: + if filter_properties: + # A SDK do notion-client aceita parametros por nome; montar kwargs se necessário + res = notion.pages.retrieve(page_id=page_id, filter_properties=filter_properties) + else: + res = notion.pages.retrieve(page_id=page_id) + logger.info("Página recuperada: id=%s", res.get("id")) + return res + except Exception as e: + logger.exception("Erro ao recuperar página %s: %s", page_id, e) + return {} + + +def retrieve_page_with_children(page_id: str, depth: int | None = None) -> dict: + """ + Recupera a página + árvore de blocos filhos (recursivo). + - page_id: id da página + - depth: profundidade de recursão (None = sem limite) + Retorna { 'page': , 'blocks_tree': }. + """ + page = retrieve_page(page_id) + if not page: + return {"page": None, "blocks_tree": None} + + # construir a árvore do corpo da página (raiz = page_id) + tree = get_block_tree(page_id, depth=depth) + logger.info("Árvore construída para página %s (children=%d)", page_id, len(tree.get("children", [])) if tree else 0) + return {"page": page, "blocks_tree": tree} + + +def main(): + logger.info("Iniciando busca de tarefas no Notion (database_id=%s)", DATABASE_ID) + + # 1) mostrar opções de status (útil para confirmar ortografia) + list_status_options(DATABASE_ID) + + # 2) buscar tarefas (filtra por TARGET_STATUS se válido, senão traz todos com status definido) + tarefas = fetch_all_tasks(DATABASE_ID, TARGET_STATUS) + + if not tarefas: + logger.info("Nenhuma tarefa retornada pela query.") + return + + # 3) iterar e imprimir de forma segura + for page in tarefas: + props = page.get("properties", {}) + logger.info(f"props {props}") + title = safe_get_title(props) + status_name = None + status_obj = props.get("Status", {}).get("status") + if status_obj: + status_name = status_obj.get("name") + # se title está vazio, usar parte da url ou id como fallback + if not title: + title = page.get("url") or page.get("id") + + logger.info(f"title {title}") + logger.info(f"status_name {status_name}") + prop = props.get("Descrição do projeto") + segments = extract_rich_segments_from_property(prop) + md = rich_segments_to_markdown(segments) + logger.info("Descrição (prop) MD: %s", md) + + page_id = page.get("id") + if page_id: + # 1) recuperar somente a página (metadados + propriedades) + page_obj = retrieve_page(page_id) + # imprimir propriedades resumidas + props = page_obj.get("properties", {}) + logger.info("Página recuperada tem %d propriedades", len(props)) + + # exemplo: pegar descrição (rich_text) direto do objeto page_obj + desc_prop = props.get("Descrição do projeto") or props.get("Description") or props.get("Description") + if desc_prop: + segments = extract_rich_segments_from_property(desc_prop) + logger.info("Descrição extraida da page.retrieve MD: %s", rich_segments_to_markdown(segments)) + + # 2) recuperar a árvore de blocos (se quiser o corpo completo) + page_with_children = retrieve_page_with_children(page_id, depth=None) + blocks_tree = page_with_children.get("blocks_tree") + if blocks_tree: + # exemplo simples: printar primeira camada de filhos + for child in blocks_tree.get("children", []): + node = child.get("node") + if node: + logger.info("child node: id=%s type=%s text_preview=%s", node['id'], node['type'], node['plain_text']['text_preview']) + break + + # exemplo: se quiser atualizar o status programaticamente + # page_id = page["id"] + # notion.pages.update(page_id=page_id, properties={ + # "Status": {"status": {"name": "Pendente"}} + # }) + # logger.info("Atualizado status da página %s para 'Pendente'", page_id) + + logger.info("Fim.") + + +if __name__ == "__main__": + main() diff --git a/build_in_windows.py b/build_in_windows.py new file mode 100644 index 000000000..027485d3f --- /dev/null +++ b/build_in_windows.py @@ -0,0 +1,14 @@ +import subprocess +import os + +os.chdir(os.path.join(os.path.dirname(__file__))) +# Adiciona o caminho do Docker Compose +os.environ["PATH"] += r";C:\Program Files\Docker\Docker\resources\bin" + +def executar_comando(comando): + """Executa um comando sem abrir um novo terminal (funciona dentro do contêiner).""" + subprocess.run(comando, shell=True) + + +executar_comando("docker-compose up --build -d ") + diff --git a/docker-compose.yml b/docker-compose.yml index e4d24a784..f9000523a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -57,11 +57,11 @@ services: frontend-pipeline: image: frontend-pipeline-server:latest build: - context: ./Front-End/webpr + context: ./frontend/web dockerfile: Dockerfile container_name: frontend-pipeline volumes: - # - "./Front-End/webpr:/app" + - "./frontend/web:/app" - npm-modules:/app/node_modules working_dir: /app environment: @@ -71,7 +71,7 @@ services: - "4684:4684" restart: always command: > - sh -c "npm run dev:web -- --port 4684" + sh -c "npm run dev -- --port 4684" healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:4684"] interval: 129s @@ -82,13 +82,13 @@ services: pipeline-api: build: - context: ./Back-End + context: ./backend dockerfile: Dockerfile container_name: pipeline-api working_dir: /app privileged: true volumes: - # - ./Back-End:/app + - ./backend:/app - Invoices:/app/Invoices - /var/run/docker.sock:/var/run/docker.sock restart: always @@ -100,7 +100,7 @@ services: - FLASK_ENV=development - DATABASE_URL=postgresql://postgres:postgres@meu_postgres2:5432/meubanco - MONGO_URI=mongodb://root:rootpassword@mongodb:27017/controls_logs?authSource=admin - - REDIS_URL=redis://redis:6389/0 + - REDIS_URL=redis://redis:6379/0 depends_on: - meu_postgres2 - mongodb @@ -110,9 +110,62 @@ services: networks: - rede_externa + + chatkit-api: + build: + context: ./backend + dockerfile: Dockerfile + container_name: chatkit-api + working_dir: /app + privileged: true + volumes: + - ./backend:/app + - /var/run/docker.sock:/var/run/docker.sock + restart: always + ports: + - "5919:5919" + command: > + sh -c "uvicorn apichatkit:app --host 0.0.0.0 --port 5919" + environment: + - FLASK_ENV=development + - DATABASE_URL=postgresql://postgres:postgres@meu_postgres2:5432/meubanco + - MONGO_URI=mongodb://root:rootpassword@mongodb:27017/controls_logs?authSource=admin + - REDIS_URL=redis://redis:6379/0 + depends_on: + - meu_postgres2 + - mongodb + - redis + mem_limit: 800MB + cpus: "2.25" + networks: + - rede_externa + + celery_app: + build: + context: ./backend + dockerfile: Dockerfile + container_name: celery_app_backend + restart: always + command: celery -A celery_app.celery_app worker --beat --loglevel=info + volumes: + - ./backend:/app + depends_on: + redis: + condition: service_healthy + meu_postgres2: + condition: service_started + mongodb: + condition: service_started + working_dir: /app + networks: + - rede_externa + + + networks: rede_externa: - external: true + external: false + volumes: postgres_data: diff --git a/Front-End/git-genius-commit/.gitignore b/frontend/electron/.gitignore similarity index 100% rename from Front-End/git-genius-commit/.gitignore rename to frontend/electron/.gitignore diff --git a/Front-End/git-genius-commit/bun.lockb b/frontend/electron/bun.lockb similarity index 100% rename from Front-End/git-genius-commit/bun.lockb rename to frontend/electron/bun.lockb diff --git a/Front-End/git-genius-commit/components.json b/frontend/electron/components.json similarity index 100% rename from Front-End/git-genius-commit/components.json rename to frontend/electron/components.json diff --git a/Front-End/git-genius-commit/electron/main.cjs b/frontend/electron/electron/main.cjs similarity index 100% rename from Front-End/git-genius-commit/electron/main.cjs rename to frontend/electron/electron/main.cjs diff --git a/Front-End/git-genius-commit/electron/preload.cjs b/frontend/electron/electron/preload.cjs similarity index 100% rename from Front-End/git-genius-commit/electron/preload.cjs rename to frontend/electron/electron/preload.cjs diff --git a/Front-End/git-genius-commit/eslint.config.js b/frontend/electron/eslint.config.js similarity index 100% rename from Front-End/git-genius-commit/eslint.config.js rename to frontend/electron/eslint.config.js diff --git a/Front-End/git-genius-commit/index.html b/frontend/electron/index.html similarity index 100% rename from Front-End/git-genius-commit/index.html rename to frontend/electron/index.html diff --git a/Front-End/git-genius-commit/package-lock.json b/frontend/electron/package-lock.json similarity index 100% rename from Front-End/git-genius-commit/package-lock.json rename to frontend/electron/package-lock.json diff --git a/Front-End/git-genius-commit/package.json b/frontend/electron/package.json similarity index 100% rename from Front-End/git-genius-commit/package.json rename to frontend/electron/package.json diff --git a/Front-End/git-genius-commit/postcss.config.js b/frontend/electron/postcss.config.js similarity index 100% rename from Front-End/git-genius-commit/postcss.config.js rename to frontend/electron/postcss.config.js diff --git a/Front-End/git-genius-commit/public/favicon.ico b/frontend/electron/public/favicon.ico similarity index 100% rename from Front-End/git-genius-commit/public/favicon.ico rename to frontend/electron/public/favicon.ico diff --git a/Front-End/git-genius-commit/public/placeholder.svg b/frontend/electron/public/placeholder.svg similarity index 100% rename from Front-End/git-genius-commit/public/placeholder.svg rename to frontend/electron/public/placeholder.svg diff --git a/Front-End/git-genius-commit/public/robots.txt b/frontend/electron/public/robots.txt similarity index 100% rename from Front-End/git-genius-commit/public/robots.txt rename to frontend/electron/public/robots.txt diff --git a/Front-End/git-genius-commit/src/App.css b/frontend/electron/src/App.css similarity index 100% rename from Front-End/git-genius-commit/src/App.css rename to frontend/electron/src/App.css diff --git a/frontend/electron/src/App.tsx b/frontend/electron/src/App.tsx new file mode 100644 index 000000000..965c9eefa --- /dev/null +++ b/frontend/electron/src/App.tsx @@ -0,0 +1,96 @@ + +import { Toaster } from "@/components/ui/toaster"; +import { Toaster as Sonner } from "@/components/ui/sonner"; +import { TooltipProvider } from "@/components/ui/tooltip"; +import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; +import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; +import Login from "./pages/Login"; +import GCL from "./pages/GCL"; +import NotFound from "./pages/NotFound"; +import Layout from "./components/layout"; + +import { AuthProvider, useAuth } from "./contexts/AuthContext"; +import ProtectedRoute from "./components/ProtectedRoute"; + + +const queryClient = new QueryClient(); + +// const AppRoutes = () => { +// const { isAuthenticated } = useAuth(); + +// return ( +// +// {isAuthenticated ? ( +// +// +// } /> +// } /> +// {/* } /> */} +// +// +// ) : ( +// +// } /> +// } /> + +// } /> +// +// )} +// +// ); +// }; + +// const App = () => ( +// +// +// +// +// +// +// +// +// +// ); + +// export default App; + + + +const App = () => { + return ( + + + + + + + + {/* Rota pública, sem necessidade de autenticacao */} + } /> + } /> + + + + {/* Rotas protegidas: só acessa se estiver autenticado */} + + + + + + } + /> + + {/* Caso nenhuma rota seja encontrada */} + } /> + + + + + + +); +} +export default App; \ No newline at end of file diff --git a/Front-End/git-genius-commit/src/components/CommitPreview.tsx b/frontend/electron/src/components/CommitPreview.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/CommitPreview.tsx rename to frontend/electron/src/components/CommitPreview.tsx diff --git a/Front-End/git-genius-commit/src/components/ConfigPanel.tsx b/frontend/electron/src/components/ConfigPanel.tsx similarity index 85% rename from Front-End/git-genius-commit/src/components/ConfigPanel.tsx rename to frontend/electron/src/components/ConfigPanel.tsx index 01a04a953..b65b3023a 100644 --- a/Front-End/git-genius-commit/src/components/ConfigPanel.tsx +++ b/frontend/electron/src/components/ConfigPanel.tsx @@ -35,6 +35,7 @@ export const ConfigPanel = () => { console.log("Config recebida:", data); setLocalConfig({ + repositoryName: data.repository_name, ai_model: data.ai_model ?? 'gpt-5-nano', lines_threshold: data.linesThreshold ?? 50, files_threshold: data.filesThreshold ?? 5, @@ -67,7 +68,7 @@ export const ConfigPanel = () => { "X-API-TOKEN": accessToken, }, body: JSON.stringify({ - + repositoryName: localConfig.repositoryName, ai_model: localConfig.ai_model, autoPush: localConfig.auto_push, AutoCreatePr: localConfig.auto_create_pr, @@ -105,29 +106,31 @@ export const ConfigPanel = () => {
    - + setLocalConfig({ ...localConfig, GITHUB_TOKEN: e.target.value })} className="font-mono text-sm bg-input border-border" />
    - {/*
    - +
    + setLocalConfig({ ...localConfig, api_endpoint: e.target.value })} + placeholder="ualers/Media-Cuts-Studio" + value={localConfig.repositoryName} + onChange={(e) => setLocalConfig({ ...localConfig, repositoryName: e.target.value })} className="font-mono text-sm bg-input border-border" /> -
    */} +
    - +
    -
    - - -
    {/* Thresholds */}
    diff --git a/Front-End/git-genius-commit/src/components/DiffViewer.tsx b/frontend/electron/src/components/DiffViewer.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/DiffViewer.tsx rename to frontend/electron/src/components/DiffViewer.tsx diff --git a/Front-End/git-genius-commit/src/components/ProtectedRoute.tsx b/frontend/electron/src/components/ProtectedRoute.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ProtectedRoute.tsx rename to frontend/electron/src/components/ProtectedRoute.tsx diff --git a/Front-End/git-genius-commit/src/components/RepositorySelector.tsx b/frontend/electron/src/components/RepositorySelector.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/RepositorySelector.tsx rename to frontend/electron/src/components/RepositorySelector.tsx diff --git a/Front-End/git-genius-commit/src/components/StatusMonitor.tsx b/frontend/electron/src/components/StatusMonitor.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/StatusMonitor.tsx rename to frontend/electron/src/components/StatusMonitor.tsx diff --git a/frontend/electron/src/components/app-sidebar.tsx b/frontend/electron/src/components/app-sidebar.tsx new file mode 100644 index 000000000..b746858ca --- /dev/null +++ b/frontend/electron/src/components/app-sidebar.tsx @@ -0,0 +1,131 @@ +import { + Activity, + Bot, + GitPullRequest, + GitBranch, + ScrollText, + Settings, + Zap, + User, + CreditCard, + FileText +} from "lucide-react" +import { NavLink, useLocation } from "react-router-dom" + +import { + Sidebar, + SidebarContent, + SidebarGroup, + SidebarGroupContent, + SidebarGroupLabel, + SidebarMenu, + SidebarMenuButton, + SidebarMenuItem, + SidebarHeader, + useSidebar, +} from "@/components/ui/sidebar" + +import { LogOut } from "lucide-react" +import { useNavigate } from "react-router-dom" +import { useAuth } from '@/contexts/AuthContext'; + +const navigationItems = [ + { + title: "Git Context Layer", + url: "/gitcontextlayer", + icon: GitPullRequest, + description: "IA de Commits" + }, + // { + // title: "Pull Requests", + // url: "/prs", + // icon: GitPullRequest, + // description: "Monitoramento de PRs" + // }, +] + +// Dentro do componente AppSidebar +export function AppSidebar() { + const { state } = useSidebar() + const location = useLocation() + const currentPath = location.pathname + const isCollapsed = state === "collapsed" + const navigate = useNavigate() + const { logout } = useAuth(); + + const isActive = (path: string) => { + if (path === "/") return currentPath === "/" + return currentPath.startsWith(path) + } + + const getNavClassName = (path: string) => { + const baseClasses = "w-full justify-start transition-all duration-200" + return isActive(path) + ? `${baseClasses} bg-gradient-primary text-primary-foreground shadow-glow` + : `${baseClasses} text-sidebar-foreground hover:bg-sidebar-accent hover:text-sidebar-accent-foreground` + } + + const handleLogout = () => { + logout(); + navigate("/login") + window.location.reload() + + } + + return ( + + +
    + + {!isCollapsed && ( +
    +

    PR AI - Git Context Layer

    +
    + )} +
    +
    + + + + + Navegação + + + + {navigationItems.map((item) => ( + + + + + {!isCollapsed && ( +
    + {item.title} + {item.description} +
    + )} +
    +
    +
    + ))} + + {/* Botão de Logout */} + + +
    + + {!isCollapsed && Logout} +
    +
    +
    + +
    +
    +
    +
    +
    + ) +} diff --git a/Front-End/webpr/src/components/layout.tsx b/frontend/electron/src/components/layout.tsx similarity index 93% rename from Front-End/webpr/src/components/layout.tsx rename to frontend/electron/src/components/layout.tsx index 1f2e2e77c..2a946aa7c 100644 --- a/Front-End/webpr/src/components/layout.tsx +++ b/frontend/electron/src/components/layout.tsx @@ -15,13 +15,13 @@ const Layout = ({ children }: LayoutProps) => { {/* Header with sidebar trigger */}
    -
    + {/*
    Sistema Online
    -
    +
    */}
    {/* Main content */}
    diff --git a/Front-End/git-genius-commit/src/components/ui/accordion.tsx b/frontend/electron/src/components/ui/accordion.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/accordion.tsx rename to frontend/electron/src/components/ui/accordion.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/alert-dialog.tsx b/frontend/electron/src/components/ui/alert-dialog.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/alert-dialog.tsx rename to frontend/electron/src/components/ui/alert-dialog.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/alert.tsx b/frontend/electron/src/components/ui/alert.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/alert.tsx rename to frontend/electron/src/components/ui/alert.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/aspect-ratio.tsx b/frontend/electron/src/components/ui/aspect-ratio.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/aspect-ratio.tsx rename to frontend/electron/src/components/ui/aspect-ratio.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/avatar.tsx b/frontend/electron/src/components/ui/avatar.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/avatar.tsx rename to frontend/electron/src/components/ui/avatar.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/badge.tsx b/frontend/electron/src/components/ui/badge.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/badge.tsx rename to frontend/electron/src/components/ui/badge.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/breadcrumb.tsx b/frontend/electron/src/components/ui/breadcrumb.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/breadcrumb.tsx rename to frontend/electron/src/components/ui/breadcrumb.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/button.tsx b/frontend/electron/src/components/ui/button.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/button.tsx rename to frontend/electron/src/components/ui/button.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/calendar.tsx b/frontend/electron/src/components/ui/calendar.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/calendar.tsx rename to frontend/electron/src/components/ui/calendar.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/card.tsx b/frontend/electron/src/components/ui/card.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/card.tsx rename to frontend/electron/src/components/ui/card.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/carousel.tsx b/frontend/electron/src/components/ui/carousel.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/carousel.tsx rename to frontend/electron/src/components/ui/carousel.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/chart.tsx b/frontend/electron/src/components/ui/chart.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/chart.tsx rename to frontend/electron/src/components/ui/chart.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/checkbox.tsx b/frontend/electron/src/components/ui/checkbox.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/checkbox.tsx rename to frontend/electron/src/components/ui/checkbox.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/collapsible.tsx b/frontend/electron/src/components/ui/collapsible.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/collapsible.tsx rename to frontend/electron/src/components/ui/collapsible.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/command.tsx b/frontend/electron/src/components/ui/command.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/command.tsx rename to frontend/electron/src/components/ui/command.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/context-menu.tsx b/frontend/electron/src/components/ui/context-menu.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/context-menu.tsx rename to frontend/electron/src/components/ui/context-menu.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/dialog.tsx b/frontend/electron/src/components/ui/dialog.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/dialog.tsx rename to frontend/electron/src/components/ui/dialog.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/drawer.tsx b/frontend/electron/src/components/ui/drawer.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/drawer.tsx rename to frontend/electron/src/components/ui/drawer.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/dropdown-menu.tsx b/frontend/electron/src/components/ui/dropdown-menu.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/dropdown-menu.tsx rename to frontend/electron/src/components/ui/dropdown-menu.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/form.tsx b/frontend/electron/src/components/ui/form.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/form.tsx rename to frontend/electron/src/components/ui/form.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/hover-card.tsx b/frontend/electron/src/components/ui/hover-card.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/hover-card.tsx rename to frontend/electron/src/components/ui/hover-card.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/input-otp.tsx b/frontend/electron/src/components/ui/input-otp.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/input-otp.tsx rename to frontend/electron/src/components/ui/input-otp.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/input.tsx b/frontend/electron/src/components/ui/input.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/input.tsx rename to frontend/electron/src/components/ui/input.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/label.tsx b/frontend/electron/src/components/ui/label.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/label.tsx rename to frontend/electron/src/components/ui/label.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/menubar.tsx b/frontend/electron/src/components/ui/menubar.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/menubar.tsx rename to frontend/electron/src/components/ui/menubar.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/navigation-menu.tsx b/frontend/electron/src/components/ui/navigation-menu.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/navigation-menu.tsx rename to frontend/electron/src/components/ui/navigation-menu.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/pagination.tsx b/frontend/electron/src/components/ui/pagination.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/pagination.tsx rename to frontend/electron/src/components/ui/pagination.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/popover.tsx b/frontend/electron/src/components/ui/popover.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/popover.tsx rename to frontend/electron/src/components/ui/popover.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/progress.tsx b/frontend/electron/src/components/ui/progress.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/progress.tsx rename to frontend/electron/src/components/ui/progress.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/radio-group.tsx b/frontend/electron/src/components/ui/radio-group.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/radio-group.tsx rename to frontend/electron/src/components/ui/radio-group.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/resizable.tsx b/frontend/electron/src/components/ui/resizable.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/resizable.tsx rename to frontend/electron/src/components/ui/resizable.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/scroll-area.tsx b/frontend/electron/src/components/ui/scroll-area.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/scroll-area.tsx rename to frontend/electron/src/components/ui/scroll-area.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/select.tsx b/frontend/electron/src/components/ui/select.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/select.tsx rename to frontend/electron/src/components/ui/select.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/separator.tsx b/frontend/electron/src/components/ui/separator.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/separator.tsx rename to frontend/electron/src/components/ui/separator.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/sheet.tsx b/frontend/electron/src/components/ui/sheet.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/sheet.tsx rename to frontend/electron/src/components/ui/sheet.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/sidebar.tsx b/frontend/electron/src/components/ui/sidebar.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/sidebar.tsx rename to frontend/electron/src/components/ui/sidebar.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/skeleton.tsx b/frontend/electron/src/components/ui/skeleton.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/skeleton.tsx rename to frontend/electron/src/components/ui/skeleton.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/slider.tsx b/frontend/electron/src/components/ui/slider.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/slider.tsx rename to frontend/electron/src/components/ui/slider.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/sonner.tsx b/frontend/electron/src/components/ui/sonner.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/sonner.tsx rename to frontend/electron/src/components/ui/sonner.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/switch.tsx b/frontend/electron/src/components/ui/switch.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/switch.tsx rename to frontend/electron/src/components/ui/switch.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/table.tsx b/frontend/electron/src/components/ui/table.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/table.tsx rename to frontend/electron/src/components/ui/table.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/tabs.tsx b/frontend/electron/src/components/ui/tabs.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/tabs.tsx rename to frontend/electron/src/components/ui/tabs.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/textarea.tsx b/frontend/electron/src/components/ui/textarea.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/textarea.tsx rename to frontend/electron/src/components/ui/textarea.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/toast.tsx b/frontend/electron/src/components/ui/toast.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/toast.tsx rename to frontend/electron/src/components/ui/toast.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/toaster.tsx b/frontend/electron/src/components/ui/toaster.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/toaster.tsx rename to frontend/electron/src/components/ui/toaster.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/toggle-group.tsx b/frontend/electron/src/components/ui/toggle-group.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/toggle-group.tsx rename to frontend/electron/src/components/ui/toggle-group.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/toggle.tsx b/frontend/electron/src/components/ui/toggle.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/toggle.tsx rename to frontend/electron/src/components/ui/toggle.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/tooltip.tsx b/frontend/electron/src/components/ui/tooltip.tsx similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/tooltip.tsx rename to frontend/electron/src/components/ui/tooltip.tsx diff --git a/Front-End/git-genius-commit/src/components/ui/use-toast.ts b/frontend/electron/src/components/ui/use-toast.ts similarity index 100% rename from Front-End/git-genius-commit/src/components/ui/use-toast.ts rename to frontend/electron/src/components/ui/use-toast.ts diff --git a/Front-End/git-genius-commit/src/contexts/AuthContext.tsx b/frontend/electron/src/contexts/AuthContext.tsx similarity index 100% rename from Front-End/git-genius-commit/src/contexts/AuthContext.tsx rename to frontend/electron/src/contexts/AuthContext.tsx diff --git a/Front-End/git-genius-commit/src/hooks/use-mobile.tsx b/frontend/electron/src/hooks/use-mobile.tsx similarity index 100% rename from Front-End/git-genius-commit/src/hooks/use-mobile.tsx rename to frontend/electron/src/hooks/use-mobile.tsx diff --git a/Front-End/git-genius-commit/src/hooks/use-toast.ts b/frontend/electron/src/hooks/use-toast.ts similarity index 100% rename from Front-End/git-genius-commit/src/hooks/use-toast.ts rename to frontend/electron/src/hooks/use-toast.ts diff --git a/Front-End/git-genius-commit/src/hooks/useGitOperations.ts b/frontend/electron/src/hooks/useGitOperations.ts similarity index 100% rename from Front-End/git-genius-commit/src/hooks/useGitOperations.ts rename to frontend/electron/src/hooks/useGitOperations.ts diff --git a/Front-End/git-genius-commit/src/index.css b/frontend/electron/src/index.css similarity index 100% rename from Front-End/git-genius-commit/src/index.css rename to frontend/electron/src/index.css diff --git a/Front-End/git-genius-commit/src/lib/utils.ts b/frontend/electron/src/lib/utils.ts similarity index 100% rename from Front-End/git-genius-commit/src/lib/utils.ts rename to frontend/electron/src/lib/utils.ts diff --git a/Front-End/git-genius-commit/src/main.tsx b/frontend/electron/src/main.tsx similarity index 100% rename from Front-End/git-genius-commit/src/main.tsx rename to frontend/electron/src/main.tsx diff --git a/Front-End/git-genius-commit/src/pages/Index.tsx b/frontend/electron/src/pages/GCL.tsx similarity index 96% rename from Front-End/git-genius-commit/src/pages/Index.tsx rename to frontend/electron/src/pages/GCL.tsx index cefac5d87..cb25ba5cd 100644 --- a/Front-End/git-genius-commit/src/pages/Index.tsx +++ b/frontend/electron/src/pages/GCL.tsx @@ -1,4 +1,4 @@ -// src\pages\Index.tsx +// src\pages\GCL.tsx import { useState, useEffect, useCallback } from "react"; import { GitConfig } from "@/types/git"; import { RepositorySelector } from "@/components/RepositorySelector"; @@ -10,7 +10,7 @@ import { useGitOperations } from "@/hooks/useGitOperations"; import { toast } from "sonner"; import { GitBranch } from "lucide-react"; -const Index = () => { +const GCL = () => { const [repoPath, setRepoPath] = useState(""); const [config, setConfig] = useState(); const [gitDiff, setGitDiff] = useState(""); // Estado para armazenar o diff @@ -101,7 +101,7 @@ const Index = () => { return (
    {/* Header */} -
    + {/*
    @@ -115,7 +115,7 @@ const Index = () => {

    -
    +
    */} {/* Main Content */}
    @@ -164,4 +164,4 @@ const Index = () => { ); }; -export default Index; \ No newline at end of file +export default GCL; \ No newline at end of file diff --git a/Front-End/git-genius-commit/src/pages/Login.tsx b/frontend/electron/src/pages/Login.tsx similarity index 99% rename from Front-End/git-genius-commit/src/pages/Login.tsx rename to frontend/electron/src/pages/Login.tsx index 6685b10ae..09c9718de 100644 --- a/Front-End/git-genius-commit/src/pages/Login.tsx +++ b/frontend/electron/src/pages/Login.tsx @@ -63,7 +63,7 @@ const LoginForm: React.FC = () => { console.log('Token access_token_fallback:', token); login(token); - navigate(`/home`); + navigate(`/gitcontextlayer`); diff --git a/Front-End/git-genius-commit/src/pages/NotFound.tsx b/frontend/electron/src/pages/NotFound.tsx similarity index 100% rename from Front-End/git-genius-commit/src/pages/NotFound.tsx rename to frontend/electron/src/pages/NotFound.tsx diff --git a/Front-End/git-genius-commit/src/types/electron.d.ts b/frontend/electron/src/types/electron.d.ts similarity index 100% rename from Front-End/git-genius-commit/src/types/electron.d.ts rename to frontend/electron/src/types/electron.d.ts diff --git a/Front-End/git-genius-commit/src/types/git.ts b/frontend/electron/src/types/git.ts similarity index 97% rename from Front-End/git-genius-commit/src/types/git.ts rename to frontend/electron/src/types/git.ts index df02a865e..9220b672e 100644 --- a/Front-End/git-genius-commit/src/types/git.ts +++ b/frontend/electron/src/types/git.ts @@ -7,6 +7,7 @@ export interface GitConfig { auto_commit: boolean; auto_create_pr: boolean; throttle_ms: number; + repositoryName: string; GITHUB_TOKEN: string; ai_model?: string; commitLanguage?: string; diff --git a/Front-End/git-genius-commit/src/vite-env.d.ts b/frontend/electron/src/vite-env.d.ts similarity index 100% rename from Front-End/git-genius-commit/src/vite-env.d.ts rename to frontend/electron/src/vite-env.d.ts diff --git a/Front-End/git-genius-commit/tailwind.config.ts b/frontend/electron/tailwind.config.ts similarity index 100% rename from Front-End/git-genius-commit/tailwind.config.ts rename to frontend/electron/tailwind.config.ts diff --git a/Front-End/git-genius-commit/tsconfig.app.json b/frontend/electron/tsconfig.app.json similarity index 100% rename from Front-End/git-genius-commit/tsconfig.app.json rename to frontend/electron/tsconfig.app.json diff --git a/Front-End/git-genius-commit/tsconfig.json b/frontend/electron/tsconfig.json similarity index 100% rename from Front-End/git-genius-commit/tsconfig.json rename to frontend/electron/tsconfig.json diff --git a/Front-End/git-genius-commit/tsconfig.node.json b/frontend/electron/tsconfig.node.json similarity index 100% rename from Front-End/git-genius-commit/tsconfig.node.json rename to frontend/electron/tsconfig.node.json diff --git a/Front-End/git-genius-commit/vite.config.ts b/frontend/electron/vite.config.ts similarity index 100% rename from Front-End/git-genius-commit/vite.config.ts rename to frontend/electron/vite.config.ts diff --git a/frontend/web/.gitignore b/frontend/web/.gitignore new file mode 100644 index 000000000..0a7c4c06f --- /dev/null +++ b/frontend/web/.gitignore @@ -0,0 +1,10 @@ +node_modules/ +dist/ +.vite/ +.DS_Store +.env +.env.local +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* diff --git a/Front-End/webpr/Dockerfile b/frontend/web/Dockerfile similarity index 100% rename from Front-End/webpr/Dockerfile rename to frontend/web/Dockerfile diff --git a/frontend/web/README.md b/frontend/web/README.md new file mode 100644 index 000000000..5efec2744 --- /dev/null +++ b/frontend/web/README.md @@ -0,0 +1,30 @@ +# ChatKit Frontend + +This Vite + React client wraps the ChatKit web component in a slim list UI so you can focus on iterating with the backend agent. It mirrors the root README tone while surfacing the project paths and configuration you need day to day. + +## Quick Reference +- App entry point: `src/main.tsx` +- ChatKit config helper: `src/lib/config.ts` +- Fact list UI: `src/App.tsx` and `src/components` +- Styling: `src/index.css` (Tailwind layers) + +## Requirements +- Node.js 20+ +- Backend API running locally (defaults to `http://127.0.0.1:8000`). + +## Environment Variables + +Optional overrides include `VITE_CHATKIT_API_URL` and `VITE_FACTS_API_URL`. If you change them, restart `npm run dev` so Vite reloads the new values. + +## Install & Run + +```bash +npm install +npm run dev +``` + +The dev server is available at `http://127.0.0.1:5170`, which works for local development. To test remote access flows, you can temporarily expose the app with a tunnel (for example `ngrok http 5170`) after allowlisting that hostname. + +For production deployments, host the app on infrastructure you control behind a managed domain. Register that domain on the [domain allowlist page](https://platform.openai.com/settings/organization/security/domain-allowlist), add it to `frontend/vite.config.ts` under `server.allowedHosts`, and set the resulting key via `VITE_CHATKIT_API_DOMAIN_KEY`. + +Need backend guidance? See the root README for FastAPI setup and domain allowlisting steps. diff --git a/frontend/web/eslint.config.js b/frontend/web/eslint.config.js new file mode 100644 index 000000000..82289be45 --- /dev/null +++ b/frontend/web/eslint.config.js @@ -0,0 +1,36 @@ +import js from "@eslint/js"; +import globals from "globals"; +import reactHooks from "eslint-plugin-react-hooks"; +import reactRefresh from "eslint-plugin-react-refresh"; +import tseslint from "@typescript-eslint/eslint-plugin"; +import tsParser from "@typescript-eslint/parser"; + +export default [ + js.configs.recommended, + { + files: ["**/*.{ts,tsx}", "*.{ts,tsx}"], + languageOptions: { + parser: tsParser, + parserOptions: { + projectService: true, + ecmaFeatures: { + jsx: true, + }, + }, + globals: { + ...globals.browser, + ...globals.node, + }, + }, + plugins: { + "@typescript-eslint": tseslint, + "react-hooks": reactHooks, + "react-refresh": reactRefresh, + }, + rules: { + ...tseslint.configs["recommended-type-checked"].rules, + ...reactHooks.configs.recommended.rules, + "react-refresh/only-export-components": ["warn", { allowConstantExport: true }], + }, + }, +]; diff --git a/Front-End/webpr/index.html b/frontend/web/index.html similarity index 55% rename from Front-End/webpr/index.html rename to frontend/web/index.html index 4c4fcf03e..3074e5a7e 100644 --- a/Front-End/webpr/index.html +++ b/frontend/web/index.html @@ -3,15 +3,11 @@ - SoftwareAI - - - - - - + SoftwareAI + + + -
    diff --git a/Front-End/webpr/package-lock.json b/frontend/web/package-lock.json similarity index 79% rename from Front-End/webpr/package-lock.json rename to frontend/web/package-lock.json index 02da59dc4..5c08e5202 100644 --- a/Front-End/webpr/package-lock.json +++ b/frontend/web/package-lock.json @@ -1,14 +1,15 @@ { - "name": "vite_react_shadcn_ts", - "version": "0.0.0", + "name": "chatkit-frontend", + "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "vite_react_shadcn_ts", - "version": "0.0.0", + "name": "chatkit-frontend", + "version": "0.1.0", "dependencies": { "@hookform/resolvers": "^3.9.0", + "@openai/chatkit-react": "^0", "@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-alert-dialog": "^1.1.1", "@radix-ui/react-aspect-ratio": "^1.1.0", @@ -37,7 +38,7 @@ "@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.4", "@stripe/stripe-js": "^7.9.0", - "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query": "^5.90.2", "axios": "^1.12.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -65,7 +66,7 @@ "devDependencies": { "@eslint/js": "^9.9.0", "@tailwindcss/typography": "^0.5.15", - "@types/node": "^22.5.5", + "@types/node": "^22.18.8", "@types/react": "^18.3.25", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react-swc": "^3.5.0", @@ -85,6 +86,10 @@ "typescript-eslint": "^8.0.1", "vite": "^5.4.1", "wait-on": "^9.0.1" + }, + "engines": { + "node": ">=18.18", + "npm": ">=9" } }, "node_modules/@alloc/quick-lru": { @@ -100,9 +105,9 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -110,9 +115,9 @@ } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "dev": true, "license": "MIT", "engines": { @@ -120,13 +125,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.9.tgz", - "integrity": "sha512-aI3jjAAO1fh7vY/pBGsn1i9LDbRP43+asrRlkPuTXW5yHXtd1NgTEMudbBoDDxrf1daEEfPJqR+JBMakzrR4Dg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.4.tgz", + "integrity": "sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.25.9" + "@babel/types": "^7.28.4" }, "bin": { "parser": "bin/babel-parser.js" @@ -136,26 +141,23 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.9.tgz", - "integrity": "sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", + "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/types": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.9.tgz", - "integrity": "sha512-OwS2CM5KocvQ/k7dFJa8i5bNGJP0hXWfVCfDkqRFP1IreH1JDC7wG6eCYCi0+McbfT8OR/kNqsI0UU0xP9H6PQ==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.4.tgz", + "integrity": "sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -197,6 +199,17 @@ "node": ">=10.12.0" } }, + "node_modules/@electron/asar/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@electron/asar/node_modules/commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", @@ -207,26 +220,17 @@ "node": ">= 6" } }, - "node_modules/@electron/asar/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", + "node_modules/@electron/asar/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "brace-expansion": "^1.1.7" }, "engines": { "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@electron/fuses": { @@ -340,16 +344,6 @@ "node": ">=12.13.0" } }, - "node_modules/@electron/node-gyp/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@electron/node-gyp/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -597,16 +591,6 @@ "node": ">=16.4" } }, - "node_modules/@electron/universal/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/@electron/universal/node_modules/fs-extra": { "version": "11.3.2", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", @@ -635,22 +619,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@electron/universal/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@electron/universal/node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -735,9 +703,9 @@ "license": "MIT" }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", - "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.10.tgz", + "integrity": "sha512-0NFWnA+7l41irNuaSVlLfgNT12caWJVLzp5eAVhZ0z1qpxbockccEt3s+149rE64VUI3Ml2zt8Nv5JVc4QXTsw==", "cpu": [ "ppc64" ], @@ -748,13 +716,13 @@ "aix" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", - "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.10.tgz", + "integrity": "sha512-dQAxF1dW1C3zpeCDc5KqIYuZ1tgAdRXNoZP7vkBIRtKZPYe2xVr/d3SkirklCHudW1B45tGiUlz2pUWDfbDD4w==", "cpu": [ "arm" ], @@ -765,13 +733,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", - "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.10.tgz", + "integrity": "sha512-LSQa7eDahypv/VO6WKohZGPSJDq5OVOo3UoFR1E4t4Gj1W7zEQMUhI+lo81H+DtB+kP+tDgBp+M4oNCwp6kffg==", "cpu": [ "arm64" ], @@ -782,13 +750,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/android-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", - "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.10.tgz", + "integrity": "sha512-MiC9CWdPrfhibcXwr39p9ha1x0lZJ9KaVfvzA0Wxwz9ETX4v5CHfF09bx935nHlhi+MxhA63dKRRQLiVgSUtEg==", "cpu": [ "x64" ], @@ -799,13 +767,13 @@ "android" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", - "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.10.tgz", + "integrity": "sha512-JC74bdXcQEpW9KkV326WpZZjLguSZ3DfS8wrrvPMHgQOIEIG/sPXEN/V8IssoJhbefLRcRqw6RQH2NnpdprtMA==", "cpu": [ "arm64" ], @@ -816,13 +784,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", - "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.10.tgz", + "integrity": "sha512-tguWg1olF6DGqzws97pKZ8G2L7Ig1vjDmGTwcTuYHbuU6TTjJe5FXbgs5C1BBzHbJ2bo1m3WkQDbWO2PvamRcg==", "cpu": [ "x64" ], @@ -833,13 +801,13 @@ "darwin" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", - "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.10.tgz", + "integrity": "sha512-3ZioSQSg1HT2N05YxeJWYR+Libe3bREVSdWhEEgExWaDtyFbbXWb49QgPvFH8u03vUPX10JhJPcz7s9t9+boWg==", "cpu": [ "arm64" ], @@ -850,13 +818,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", - "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.10.tgz", + "integrity": "sha512-LLgJfHJk014Aa4anGDbh8bmI5Lk+QidDmGzuC2D+vP7mv/GeSN+H39zOf7pN5N8p059FcOfs2bVlrRr4SK9WxA==", "cpu": [ "x64" ], @@ -867,13 +835,13 @@ "freebsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", - "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.10.tgz", + "integrity": "sha512-oR31GtBTFYCqEBALI9r6WxoU/ZofZl962pouZRTEYECvNF/dtXKku8YXcJkhgK/beU+zedXfIzHijSRapJY3vg==", "cpu": [ "arm" ], @@ -884,13 +852,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", - "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.10.tgz", + "integrity": "sha512-5luJWN6YKBsawd5f9i4+c+geYiVEw20FVW5x0v1kEMWNq8UctFjDiMATBxLvmmHA4bf7F6hTRaJgtghFr9iziQ==", "cpu": [ "arm64" ], @@ -901,13 +869,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", - "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.10.tgz", + "integrity": "sha512-NrSCx2Kim3EnnWgS4Txn0QGt0Xipoumb6z6sUtl5bOEZIVKhzfyp/Lyw4C1DIYvzeW/5mWYPBFJU3a/8Yr75DQ==", "cpu": [ "ia32" ], @@ -918,13 +886,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", - "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.10.tgz", + "integrity": "sha512-xoSphrd4AZda8+rUDDfD9J6FUMjrkTz8itpTITM4/xgerAZZcFW7Dv+sun7333IfKxGG8gAq+3NbfEMJfiY+Eg==", "cpu": [ "loong64" ], @@ -935,13 +903,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", - "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.10.tgz", + "integrity": "sha512-ab6eiuCwoMmYDyTnyptoKkVS3k8fy/1Uvq7Dj5czXI6DF2GqD2ToInBI0SHOp5/X1BdZ26RKc5+qjQNGRBelRA==", "cpu": [ "mips64el" ], @@ -952,13 +920,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", - "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.10.tgz", + "integrity": "sha512-NLinzzOgZQsGpsTkEbdJTCanwA5/wozN9dSgEl12haXJBzMTpssebuXR42bthOF3z7zXFWH1AmvWunUCkBE4EA==", "cpu": [ "ppc64" ], @@ -969,13 +937,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", - "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.10.tgz", + "integrity": "sha512-FE557XdZDrtX8NMIeA8LBJX3dC2M8VGXwfrQWU7LB5SLOajfJIxmSdyL/gU1m64Zs9CBKvm4UAuBp5aJ8OgnrA==", "cpu": [ "riscv64" ], @@ -986,13 +954,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", - "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.10.tgz", + "integrity": "sha512-3BBSbgzuB9ajLoVZk0mGu+EHlBwkusRmeNYdqmznmMc9zGASFjSsxgkNsqmXugpPk00gJ0JNKh/97nxmjctdew==", "cpu": [ "s390x" ], @@ -1003,13 +971,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/linux-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", - "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.10.tgz", + "integrity": "sha512-QSX81KhFoZGwenVyPoberggdW1nrQZSvfVDAIUXr3WqLRZGZqWk/P4T8p2SP+de2Sr5HPcvjhcJzEiulKgnxtA==", "cpu": [ "x64" ], @@ -1020,13 +988,13 @@ "linux" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", - "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.10.tgz", + "integrity": "sha512-AKQM3gfYfSW8XRk8DdMCzaLUFB15dTrZfnX8WXQoOUpUBQ+NaAFCP1kPS/ykbbGYz7rxn0WS48/81l9hFl3u4A==", "cpu": [ "arm64" ], @@ -1041,9 +1009,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", - "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.10.tgz", + "integrity": "sha512-7RTytDPGU6fek/hWuN9qQpeGPBZFfB4zZgcz2VK2Z5VpdUxEI8JKYsg3JfO0n/Z1E/6l05n0unDCNc4HnhQGig==", "cpu": [ "x64" ], @@ -1054,13 +1022,13 @@ "netbsd" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", - "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.10.tgz", + "integrity": "sha512-5Se0VM9Wtq797YFn+dLimf2Zx6McttsH2olUBsDml+lm0GOCRVebRWUvDtkY4BWYv/3NgzS8b/UM3jQNh5hYyw==", "cpu": [ "arm64" ], @@ -1075,9 +1043,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", - "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.10.tgz", + "integrity": "sha512-XkA4frq1TLj4bEMB+2HnI0+4RnjbuGZfet2gs/LNs5Hc7D89ZQBHQ0gL2ND6Lzu1+QVkjp3x1gIcPKzRNP8bXw==", "cpu": [ "x64" ], @@ -1088,13 +1056,30 @@ "openbsd" ], "engines": { - "node": ">=12" + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.10.tgz", + "integrity": "sha512-AVTSBhTX8Y/Fz6OmIVBip9tJzZEUcY8WLh7I59+upa5/GPhh2/aM6bvOMQySspnCCHvFi79kMtdJS1w0DXAeag==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", - "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.10.tgz", + "integrity": "sha512-fswk3XT0Uf2pGJmOpDB7yknqhVkJQkAQOcW/ccVOtfx05LkbWOaRAtn5SaqXypeKQra1QaEa841PgrSL9ubSPQ==", "cpu": [ "x64" ], @@ -1105,13 +1090,13 @@ "sunos" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", - "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.10.tgz", + "integrity": "sha512-ah+9b59KDTSfpaCg6VdJoOQvKjI33nTaQr4UluQwW7aEwZQsbMCfTmfEO4VyewOxx4RaDT/xCy9ra2GPWmO7Kw==", "cpu": [ "arm64" ], @@ -1122,13 +1107,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", - "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.10.tgz", + "integrity": "sha512-QHPDbKkrGO8/cz9LKVnJU22HOi4pxZnZhhA2HYHez5Pz4JeffhDjf85E57Oyco163GnzNCVkZK0b/n4Y0UHcSw==", "cpu": [ "ia32" ], @@ -1139,13 +1124,13 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@esbuild/win32-x64": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", - "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.10.tgz", + "integrity": "sha512-9KpxSVFCu0iK1owoez6aC/s/EdUQLDN3adTxGCqxMVhrPDj6bt5dbrHDXUuq+Bs2vATFBBrQS5vdQ/Ed2P+nbw==", "cpu": [ "x64" ], @@ -1156,42 +1141,32 @@ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "eslint-visitor-keys": "^3.4.3" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, "node_modules/@eslint-community/regexpp": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", - "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", "engines": { @@ -1199,13 +1174,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -1213,20 +1188,60 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.0.tgz", + "integrity": "sha512-WUFvV4WoIwW8Bv0KeKCIIEgdSiFOsulyN0xrMu+7z43q/hkOLXjvb5u7UC9jDxvRzcrbEmuZBX5yJZz1741jog==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.16.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1247,6 +1262,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -1260,20 +1286,36 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/js": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.13.0.tgz", - "integrity": "sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.37.0.tgz", + "integrity": "sha512-jaS+NJ+hximswBG6pjNX0uEJZkrT0zwpVi3BA3vX22aFGjJjmgSTSmPpZCRKmoBL5VY/M6p0xsSJx7rk7sy5gg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1281,11 +1323,13 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", - "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.0.tgz", + "integrity": "sha512-sB5uyeq+dwCWyPi31B2gQlVlo+j5brPlWx4yZBrEaRo/nhdDE8Xke1gsGgtiBdaBTxuTkceLVuVt/pclrasb0A==", "dev": true, + "license": "Apache-2.0", "dependencies": { + "@eslint/core": "^0.16.0", "levn": "^0.4.1" }, "engines": { @@ -1293,31 +1337,31 @@ } }, "node_modules/@floating-ui/core": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.8.tgz", - "integrity": "sha512-7XJ9cPU+yI2QeLS+FCSlqNFZJq8arvswefkZrYI1yQBbftw6FyrZOxYSh+9S7z7TpeWlRt9zJ5IhM1WIL334jA==", + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz", + "integrity": "sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==", "license": "MIT", "dependencies": { - "@floating-ui/utils": "^0.2.8" + "@floating-ui/utils": "^0.2.10" } }, "node_modules/@floating-ui/dom": { - "version": "1.6.11", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.11.tgz", - "integrity": "sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.4.tgz", + "integrity": "sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==", "license": "MIT", "dependencies": { - "@floating-ui/core": "^1.6.0", - "@floating-ui/utils": "^0.2.8" + "@floating-ui/core": "^1.7.3", + "@floating-ui/utils": "^0.2.10" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.6.tgz", + "integrity": "sha512-4JX6rEatQEvlmgU80wZyq9RT96HZJa88q8hp0pBd+LrczeDI4o6uA2M+uvxngVHo4Ihr8uibXxH6+70zhAFrVw==", "license": "MIT", "dependencies": { - "@floating-ui/dom": "^1.0.0" + "@floating-ui/dom": "^1.7.4" }, "peerDependencies": { "react": ">=16.8.0", @@ -1325,9 +1369,9 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.8.tgz", - "integrity": "sha512-kym7SodPp8/wloecOpcmSnWJsK7M0E5Wg8UcFA+uO4B9s5d0ywXOEro/8HM9x0rW+TljRzul/14UYz3TleT3ig==", + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", "license": "MIT" }, "node_modules/@gar/promisify": { @@ -1392,18 +1436,18 @@ } }, "node_modules/@hookform/resolvers": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.9.0.tgz", - "integrity": "sha512-bU0Gr4EepJ/EQsH/IwEzYLsT/PEj5C0ynLQ4m+GSHS+xKH4TfSelhluTgOaoc4kA5s7eCsQbM4wvZLzELmWzUg==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.10.0.tgz", + "integrity": "sha512-79Dv+3mDF7i+2ajj7SkypSKHhl1cbln1OGavqrsF7p6mbUv11xpqpacPsGDCTRvCSjEEIez2ef1NveSVL3b0Ag==", "license": "MIT", "peerDependencies": { "react-hook-form": "^7.0.0" } }, "node_modules/@humanfs/core": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", - "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1411,14 +1455,14 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.5", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", - "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanfs/core": "^0.19.0", - "@humanwhocodes/retry": "^0.3.0" + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" @@ -1439,9 +1483,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1492,18 +1536,41 @@ "node": ">=12" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1515,25 +1582,16 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", @@ -1682,6 +1740,25 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/@openai/chatkit": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@openai/chatkit/-/chatkit-0.0.0.tgz", + "integrity": "sha512-9YomebDd2dpWFR3s1fiEtNknXmEC8QYt//2ConGjr/4geWdRqunEpO+i7yJXYEGLJbkmB4lxwKmbwWJA4pvpSg==", + "license": "MIT" + }, + "node_modules/@openai/chatkit-react": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/@openai/chatkit-react/-/chatkit-react-0.0.0.tgz", + "integrity": "sha512-ppoAKiWKUJGIlKuFQ0mgPRVMAAjJ+PonAzdo1p7BQmTEZtwFI8vq6W7ZRN2UTfzZZIKbJ2diwU6ePbYSKsePuQ==", + "license": "MIT", + "dependencies": { + "@openai/chatkit": "0.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -1693,32 +1770,32 @@ } }, "node_modules/@radix-ui/number": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", - "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==", "license": "MIT" }, "node_modules/@radix-ui/primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", - "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.3.tgz", + "integrity": "sha512-JTF99U/6XIjCBo0wqkU5sK10glYe27MRRsfwoiq5zzOEZLHU3A3KCMa5X/azekYRCJ0HlwI0crAXS/5dEHTzDg==", "license": "MIT" }, "node_modules/@radix-ui/react-accordion": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.1.tgz", - "integrity": "sha512-bg/l7l5QzUjgsh8kjwDFommzAshnUsuVMV5NM56QVCm+7ZckYdd9P/ExR8xG/Oup0OajVxNLaHJ1tb8mXk+nzQ==", + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.12.tgz", + "integrity": "sha512-T4nygeh9YE9dLRPhAHSeOZi7HBXo+0kYIPJXayZfvWOWA0+n3dESrZbjfDPUABkUNym6Hd+f2IR113To8D2GPA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collapsible": "1.1.1", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collapsible": "1.1.12", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -1736,17 +1813,17 @@ } }, "node_modules/@radix-ui/react-alert-dialog": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.2.tgz", - "integrity": "sha512-eGSlLzPhKO+TErxkiGcCZGuvbVMnLA1MTnyBksGOeGRGkxHiiJUujsjmNTdWTm4iHVSRaUao9/4Ur671auMghQ==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.1.15.tgz", + "integrity": "sha512-oTVLkEw5GpdRe29BqJ0LSDFWI3qu0vR1M0mUkOQWDIUnY/QIkLpgDMWuKxP94c2NAC2LGcgVhG1ImF3jkZ5wXw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dialog": "1.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dialog": "1.1.15", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", @@ -1764,12 +1841,12 @@ } }, "node_modules/@radix-ui/react-arrow": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", - "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.7.tgz", + "integrity": "sha512-F+M1tLhO+mlQaOWspE8Wstg+z6PwxwRd8oQ8IXceWz92kfAmalTRf0EjrouQeo7QssEPfCn05B4Ihs1K9WQ/7w==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", @@ -1787,12 +1864,12 @@ } }, "node_modules/@radix-ui/react-aspect-ratio": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.0.tgz", - "integrity": "sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-aspect-ratio/-/react-aspect-ratio-1.1.7.tgz", + "integrity": "sha512-Yq6lvO9HQyPwev1onK1daHCHqXVLzPhSVjmsNjCa2Zcxy2f7uJD2itDtxknv6FzAKCwD1qQkeVDmX/cev13n/g==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", @@ -1810,15 +1887,16 @@ } }, "node_modules/@radix-ui/react-avatar": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.1.tgz", - "integrity": "sha512-eoOtThOmxeoizxpX6RiEsQZ2wj5r4+zoeqAwO0cBaFQGjJwIH3dIX0OCxNrCyrrdxG+vBweMETh3VziQG7c1kw==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-avatar/-/react-avatar-1.1.10.tgz", + "integrity": "sha512-V8piFfWapM5OmNCXTzVQY+E1rDa53zY+MQ4Y7356v4fFz6vqCyUtIz2rUD44ZEdwg78/jKmMJHj07+C/Z/rcog==", "license": "MIT", "dependencies": { - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-is-hydrated": "0.1.0", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -1836,19 +1914,19 @@ } }, "node_modules/@radix-ui/react-checkbox": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.2.tgz", - "integrity": "sha512-/i0fl686zaJbDQLNKrkCbMyDm6FQMt4jg323k7HuqitoANm9sE23Ql8yOK3Wusk34HSLKDChhMux05FnP6KUkw==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.3.3.tgz", + "integrity": "sha512-wBbpv+NQftHDdG86Qc0pIyXk5IR3tM8Vd0nWLKDcX8nNn4nXFOFwsKuqw2okA/1D/mpaAkmuyndrPJTYDNZtFw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -1866,19 +1944,19 @@ } }, "node_modules/@radix-ui/react-collapsible": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.1.tgz", - "integrity": "sha512-1///SnrfQHJEofLokyczERxQbWfCGQlQ2XsCZMucVs6it+lq9iw4vXy+uDn1edlb58cOZOWSldnfPAYcT4O/Yg==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.12.tgz", + "integrity": "sha512-Uu+mSh4agx2ib1uIGPP4/CKNULyajb3p92LsVXmH2EHVMTfZWpll88XJ0j4W0z3f8NK1eYl1+Mf/szHPmcHzyA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -1896,15 +1974,15 @@ } }, "node_modules/@radix-ui/react-collection": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", - "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.7.tgz", + "integrity": "sha512-Fh9rGN0MoI4ZFUNyfFVNU4y9LUz93u9/0K+yLgA2bwRojxM8JU1DyvvMBabnZPBgMWREAJvU2jjVzq+LrFUglw==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", @@ -1921,25 +1999,10 @@ } } }, - "node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", - "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -1952,9 +2015,9 @@ } }, "node_modules/@radix-ui/react-context": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.1.tgz", - "integrity": "sha512-UASk9zi+crv9WteK/NU4PLvOoL3OuE6BWVKNF6hPRBtYBDXQ2u5iu3O59zUlJiTVvkyuycnqrztsHVJwcK9K+Q==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -1967,17 +2030,17 @@ } }, "node_modules/@radix-ui/react-context-menu": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.2.tgz", - "integrity": "sha512-99EatSTpW+hRYHt7m8wdDlLtkmTovEe8Z/hnxUPV+SKuuNL5HWNhQI4QSdjZqNSgXHay2z4M3Dym73j9p2Gx5Q==", + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context-menu/-/react-context-menu-2.2.16.tgz", + "integrity": "sha512-O8morBEW+HsVG28gYDZPTrT9UUovQUlJue5YO836tiTJhuIWBm/zQHc7j388sHWtdH/xUZurK9olD2+pcqx5ww==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-menu": "2.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -1995,25 +2058,25 @@ } }, "node_modules/@radix-ui/react-dialog": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.2.tgz", - "integrity": "sha512-Yj4dZtqa2o+kG61fzB0H2qUvmwBA2oyQroGLyNtBj1beo1khoQ3q1a2AO8rrQYjd8256CO9+N8L9tvsS+bnIyA==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.15.tgz", + "integrity": "sha512-TCglVRtzlffRNxRMEyR36DGBLJpeusFcgMVD9PZEzAKnUs1lKCgX5u9BmC2Yg+LL9MgZDugFFs1Vl+Jp4t/PGw==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", @@ -2031,9 +2094,9 @@ } }, "node_modules/@radix-ui/react-direction": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", - "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -2046,16 +2109,16 @@ } }, "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.1.tgz", - "integrity": "sha512-QSxg29lfr/xcev6kSz7MAlmDnzbP1eI/Dwn3Tp1ip0KT5CUELsxkekFEMVBEoykI3oV39hKT4TKZzBNMbcTZYQ==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.11.tgz", + "integrity": "sha512-Nqcp+t5cTB8BinFkZgXiMJniQH0PsUt2k51FUhbdfeKvc4ACcG2uQniY/8+h1Yv6Kza4Q7lD7PQV0z0oicE0Mg==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2073,18 +2136,18 @@ } }, "node_modules/@radix-ui/react-dropdown-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.2.tgz", - "integrity": "sha512-GVZMR+eqK8/Kes0a36Qrv+i20bAPXSn8rCBTHx30w+3ECnR5o3xixAlqcVaYvLeyKUsm0aqyhWfmUcqufM8nYA==", + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.16.tgz", + "integrity": "sha512-1PLGQEynI/3OX/ftV54COn+3Sud/Mn8vALg2rWnBLnRaGtJDduNW/22XjlGgPdpcIbiQxjKtb7BkcjP00nqfJw==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -2102,9 +2165,9 @@ } }, "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.1.tgz", - "integrity": "sha512-pSIwfrT1a6sIoDASCSpFwOasEwKTZWDw/iBdtnqKO7v6FeOzYJ7U53cPzYFVR3geGGXgVHaH+CdngrrAzqUGxg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.3.tgz", + "integrity": "sha512-0rFg/Rj2Q62NCm62jZw0QX7a3sz6QCQU0LpZdNrJX8byRGaGVTqbrW9jAoIAHyMQqsNpeZ81YgSizOt5WXq0Pw==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -2117,14 +2180,14 @@ } }, "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.7.tgz", + "integrity": "sha512-t2ODlkXBQyn7jkl6TNaw/MtVEVvIGelJDCG41Okq/KwUsJBwQ4XVZsHAVUkK4mBv3ewiAS3PGuUWuY2BoK4ZUw==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2142,20 +2205,20 @@ } }, "node_modules/@radix-ui/react-hover-card": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.2.tgz", - "integrity": "sha512-Y5w0qGhysvmqsIy6nQxaPa6mXNKznfoGjOfBgzOjocLxr2XlSjqBMYQQL+FfyogsMuX+m8cZyQGYhJxvxUzO4w==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-hover-card/-/react-hover-card-1.1.15.tgz", + "integrity": "sha512-qgTkjNT1CfKMoP0rcasmlH2r1DAiYicWsDsufxl940sT2wHNEWWv6FMWIQXWhVdmC1d/HYfbhQx60KYyAtKxjg==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -2173,12 +2236,12 @@ } }, "node_modules/@radix-ui/react-id": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2191,12 +2254,12 @@ } }, "node_modules/@radix-ui/react-label": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", - "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.7.tgz", + "integrity": "sha512-YT1GqPSL8kJn20djelMX7/cTRp/Y9w5IZHvfxQTVHrOqa2yMl7i/UfMqKRU5V7mEyKTrUVgJXhNQPVCG8PBLoQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", @@ -2214,29 +2277,29 @@ } }, "node_modules/@radix-ui/react-menu": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.2.tgz", - "integrity": "sha512-lZ0R4qR2Al6fZ4yCCZzu/ReTFrylHFxIqy7OezIpWF4bL0o9biKo0pFIvkaew3TyZ9Fy5gYVrR5zCGZBVbO1zg==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "version": "2.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.16.tgz", + "integrity": "sha512-72F2T+PLlphrqLcAotYPp0uJMr5SjP5SL01wfEspJbru5Zs5vQaSHb4VB3ZMJPimgHHCHG7gMOeOB9H3Hdmtxg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", @@ -2254,21 +2317,21 @@ } }, "node_modules/@radix-ui/react-menubar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.2.tgz", - "integrity": "sha512-cKmj5Gte7LVyuz+8gXinxZAZECQU+N7aq5pw7kUPpx3xjnDXDbsdzHtCCD2W72bwzy74AvrqdYnKYS42ueskUQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-menu": "2.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menubar/-/react-menubar-1.1.16.tgz", + "integrity": "sha512-EB1FktTz5xRRi2Er974AUQZWg2yVBb1yjip38/lgwtCVRd3a+maUoGHN/xs9Yv8SY8QwbSEb+YrxGadVWbEutA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-menu": "2.1.16", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -2286,25 +2349,25 @@ } }, "node_modules/@radix-ui/react-navigation-menu": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.1.tgz", - "integrity": "sha512-egDo0yJD2IK8L17gC82vptkvW1jLeni1VuqCyzY727dSJdk5cDjINomouLoNk8RVF7g2aNIfENKWL4UzeU9c8Q==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.14.tgz", + "integrity": "sha512-YB9mTFQvCOAQMHU+C/jVl96WmuWeltyUEpRJJky51huhds5W2FQr1J8D/16sQlf0ozxkPK8uF3niQMdUwZPv5w==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", @@ -2322,26 +2385,26 @@ } }, "node_modules/@radix-ui/react-popover": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.2.tgz", - "integrity": "sha512-u2HRUyWW+lOiA2g0Le0tMmT55FGOEWHwPFt1EPfbLly7uXQExFo5duNKqG2DzmFXIdqOeNd+TpE8baHWJCyP9w==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.15.tgz", + "integrity": "sha512-kr0X2+6Yy/vJzLYJUPCZEc8SfQcf+1COFoAqauJm74umQhta9M7lNJHP7QQS3vkvcGLQUbWpMzwrXYwrYztHKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", @@ -2359,21 +2422,21 @@ } }, "node_modules/@radix-ui/react-popper": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", - "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.8.tgz", + "integrity": "sha512-0NJQ4LFFUuWkE7Oxf0htBKS6zLkkjBH+hM1uk7Ng705ReR8m/uelduy1DBo0PyBXPKVnBA6YBlU94MBGXrSBCw==", "license": "MIT", "dependencies": { "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-rect": "1.1.0", - "@radix-ui/react-use-size": "1.1.0", - "@radix-ui/rect": "1.1.0" + "@radix-ui/react-arrow": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2390,29 +2453,14 @@ } } }, - "node_modules/@radix-ui/react-popper/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-portal": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.2.tgz", - "integrity": "sha512-WeDYLGPxJb/5EGBoedyJbT0MpoULmwnIPMJMSldkuiMsBAv7N1cRdsTWZWht9vpPOiN3qyiGAtbK2is47/uMFg==", + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.9.tgz", + "integrity": "sha512-bpIxvq03if6UNwXZ+HTK71JLh4APvnXntDc6XOX8UVq4XQOVl7lwok0AvIl+b8zgCw3fSaVTZMpAPPagXbKmHQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2430,13 +2478,13 @@ } }, "node_modules/@radix-ui/react-presence": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.1.tgz", - "integrity": "sha512-IeFXVi4YS1K0wVZzXNrbaaUvIJ3qdY+/Ih4eHFhWA9SwGR9UDX7Ck8abvL57C4cv3wwMvUE0OG69Qc3NCcTe/A==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.5.tgz", + "integrity": "sha512-/jfEwNDdQVBCNvjkGit4h6pMOzq8bHkopq458dPt2lMjx+eBQUohZNG9A7DtO/O5ukSbxuaNGXMjHicgwy6rQQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2454,12 +2502,12 @@ } }, "node_modules/@radix-ui/react-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", - "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.3.tgz", + "integrity": "sha512-m9gTwRkhy2lvCPe6QJp4d3G1TYEUHn/FzJUtq9MjH46an1wJU+GdoGC5VLof8RX8Ft/DlpshApkhswDLZzHIcQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-slot": "1.1.0" + "@radix-ui/react-slot": "1.2.3" }, "peerDependencies": { "@types/react": "*", @@ -2477,13 +2525,13 @@ } }, "node_modules/@radix-ui/react-progress": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.0.tgz", - "integrity": "sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-progress/-/react-progress-1.1.7.tgz", + "integrity": "sha512-vPdg/tF6YC/ynuBIJlk1mm7Le0VgW6ub6J2UWnTQ7/D23KXcPI1qy+0vBkgKgd38RCMJavBXpB83HPNFMTb0Fg==", "license": "MIT", "dependencies": { - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", @@ -2500,37 +2548,22 @@ } } }, - "node_modules/@radix-ui/react-progress/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-radio-group": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.2.1.tgz", - "integrity": "sha512-kdbv54g4vfRjja9DNWPMxKvXblzqbpEC8kspEkZ6dVP7kQksGCn+iZHkcCz2nb00+lPdRvxrqy4WrvvV1cNqrQ==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-radio-group/-/react-radio-group-1.3.8.tgz", + "integrity": "sha512-VBKYIYImA5zsxACdisNQ3BjCBfmbGH3kQlnFVqlWU4tXwjy7cGX8ta80BcrO+WJXIn5iBylEH3K6ZTlee//lgQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2548,20 +2581,20 @@ } }, "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", - "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.11.tgz", + "integrity": "sha512-7A6S9jSgm/S+7MdtNDSb+IU859vQqJ/QAtcYQcfFC6W8RS4IxIZDldLR0xqCFZ6DCyrQLjLPsxtTNch5jVA4lA==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -2578,36 +2611,21 @@ } } }, - "node_modules/@radix-ui/react-roving-focus/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "license": "MIT", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.0.tgz", - "integrity": "sha512-q2jMBdsJ9zB7QG6ngQNzNwlvxLQqONyL58QbEGwuyRZZb/ARQwk3uQVbCF7GvQVOtV6EU/pDxAw3zRzJZI3rpQ==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.10.tgz", + "integrity": "sha512-tAXIa1g3sM5CGpVT0uIbUx/U3Gs5N8T52IICuCtObaos1S8fzsrPXG5WObkQN3S6NVl6wKgPhAIiBGbWnvc97A==", "license": "MIT", "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2625,32 +2643,32 @@ } }, "node_modules/@radix-ui/react-select": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.2.tgz", - "integrity": "sha512-rZJtWmorC7dFRi0owDmoijm6nSJH1tVw64QGiNIZ9PNLyBDtG+iAq+XGsya052At4BfarzY/Dhv9wrrUr6IMZA==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-focus-guards": "1.1.1", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.6.0" + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.2.6.tgz", + "integrity": "sha512-I30RydO+bnn2PQztvo25tswPH+wFBjehVGtmagkU78yMdwTwVf12wnAOF+AeP8S2N8xD+5UPbGhkUfPyvT+mwQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-focus-guards": "1.1.3", + "@radix-ui/react-focus-scope": "1.1.7", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" }, "peerDependencies": { "@types/react": "*", @@ -2668,12 +2686,12 @@ } }, "node_modules/@radix-ui/react-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.0.tgz", - "integrity": "sha512-3uBAs+egzvJBDZAzvb/n4NxxOYpnspmWxO2u5NbZ8Y6FM/NdrGSF9bop3Cf6F6C71z1rTSn8KV0Fo2ZVd79lGA==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.1.7.tgz", + "integrity": "sha512-0HEb8R9E8A+jZjvmFCy/J4xhbXy3TV+9XSnGJ3KvTtjlIUy/YQ/p6UYZvi7YbeoeXdyU9+Y3scizK6hkY37baA==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", @@ -2691,22 +2709,22 @@ } }, "node_modules/@radix-ui/react-slider": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.2.1.tgz", - "integrity": "sha512-bEzQoDW0XP+h/oGbutF5VMWJPAl/UU8IJjr7h02SOHDIIIxq+cep8nItVNoBV+OMmahCdqdF38FTpmXoqQUGvw==", - "license": "MIT", - "dependencies": { - "@radix-ui/number": "1.1.0", - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.3.6.tgz", + "integrity": "sha512-JPYb1GuM1bxfjMRlNLE+BcmBC8onfCi60Blk7OBqi2MLTFdS+8401U4uFjnwkOr49BLmXxLC6JHkvAsx5OJvHw==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2724,12 +2742,12 @@ } }, "node_modules/@radix-ui/react-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.3.tgz", + "integrity": "sha512-aeNmHnBxbi2St0au6VBVC7JXFlhLlOnvIIlePNniyUNAClzmtAUEY8/pBiK3iHjufOlwA+c20/8jngo7xcrg8A==", "license": "MIT", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0" + "@radix-ui/react-compose-refs": "1.1.2" }, "peerDependencies": { "@types/react": "*", @@ -2742,18 +2760,18 @@ } }, "node_modules/@radix-ui/react-switch": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.1.tgz", - "integrity": "sha512-diPqDDoBcZPSicYoMWdWx+bCPuTRH4QSp9J+65IvtdS0Kuzt67bI6n32vCj8q6NZmYW/ah+2orOtMwcX5eQwIg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.2.6.tgz", + "integrity": "sha512-bByzr1+ep1zk4VubeEVViV592vu2lHE2BZY5OnzehZqOOgogN80+mNtCqPkhn2gklJqOpxWgPoYTSnhBCqpOXQ==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-previous": "1.1.0", - "@radix-ui/react-use-size": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-use-size": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2771,19 +2789,19 @@ } }, "node_modules/@radix-ui/react-tabs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.1.tgz", - "integrity": "sha512-3GBUDmP2DvzmtYLMsHmpA1GtR46ZDZ+OreXM/N+kkQJOPIgytFWWTfDQmBQKBvaFS0Vno0FktdbVzN28KGrMdw==", + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.13.tgz", + "integrity": "sha512-7xdcatg7/U+7+Udyoj2zodtI9H/IIopqo+YOIcZOq1nJwXWBZ9p8xiu5llXlekDbZkca79a/fozEYQXIA4sW6A==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -2801,23 +2819,23 @@ } }, "node_modules/@radix-ui/react-toast": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.2.tgz", - "integrity": "sha512-Z6pqSzmAP/bFJoqMAston4eSNa+ud44NSZTiZUmUen+IOZ5nBY8kzuU5WDBVyFXPtcW6yUalOHsxM/BP6Sv8ww==", - "license": "MIT", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-collection": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" + "version": "1.2.15", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.2.15.tgz", + "integrity": "sha512-3OSz3TacUWy4WtOXV38DggwxoqJK4+eDkNMl5Z/MJZaoUPaP4/9lf81xXMe1I2ReTAptverZUpbPY4wWwWyL5g==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-collection": "1.1.7", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.3" }, "peerDependencies": { "@types/react": "*", @@ -2835,14 +2853,14 @@ } }, "node_modules/@radix-ui/react-toggle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.0.tgz", - "integrity": "sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle/-/react-toggle-1.1.10.tgz", + "integrity": "sha512-lS1odchhFTeZv3xwHH31YPObmJn8gOg7Lq12inrr0+BH/l3Tsq32VfjqH1oh80ARM3mlkfMic15n0kg4sD1poQ==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -2860,18 +2878,18 @@ } }, "node_modules/@radix-ui/react-toggle-group": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.0.tgz", - "integrity": "sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toggle-group/-/react-toggle-group-1.1.11.tgz", + "integrity": "sha512-5umnS0T8JQzQT6HbPyO7Hh9dgd82NmS36DQr+X/YJ9ctFNCiiQd6IJAYYZ33LUwm8M+taCz5t2ui29fHZc4Y6Q==", "license": "MIT", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-direction": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-roving-focus": "1.1.0", - "@radix-ui/react-toggle": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0" + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-roving-focus": "1.1.11", + "@radix-ui/react-toggle": "1.1.10", + "@radix-ui/react-use-controllable-state": "1.2.2" }, "peerDependencies": { "@types/react": "*", @@ -2888,10 +2906,44 @@ } } }, - "node_modules/@radix-ui/react-toggle-group/node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "node_modules/@radix-ui/react-tooltip": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.2.8.tgz", + "integrity": "sha512-tY7sVt1yL9ozIxvmbtN5qtmH2krXcBCfjEiCgKGLqunJHvgvZG2Pcl2oQ3kbcZARb1BGEHdkLzcYGO8ynVlieg==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.3", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.11", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.8", + "@radix-ui/react-portal": "1.1.9", + "@radix-ui/react-presence": "1.1.5", + "@radix-ui/react-primitive": "2.1.3", + "@radix-ui/react-slot": "1.2.3", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-visually-hidden": "1.2.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -2903,44 +2955,33 @@ } } }, - "node_modules/@radix-ui/react-tooltip": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.1.4.tgz", - "integrity": "sha512-QpObUH/ZlpaO4YgHSaYzrLO2VuO+ZBFFgGzjMUPwtiYnAzzNNDPJeEGRrT7qNOrWm/Jr08M1vlp+vTHtnSQ0Uw==", - "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.1", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-popper": "1.2.0", - "@radix-ui/react-portal": "1.1.2", - "@radix-ui/react-presence": "1.1.1", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "@radix-ui/react-visually-hidden": "1.1.0" + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { - "optional": true } } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", "license": "MIT", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, "peerDependencies": { "@types/react": "*", "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" @@ -2951,13 +2992,13 @@ } } }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" + "@radix-ui/react-use-callback-ref": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -2969,13 +3010,13 @@ } } }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "node_modules/@radix-ui/react-use-is-hydrated": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-is-hydrated/-/react-use-is-hydrated-0.1.0.tgz", + "integrity": "sha512-U+UORVEq+cTnRIaostJv9AGdV3G6Y+zbVd+12e18jQ5A3c0xL03IhnHuiU4UV69wolOQp5GfR58NW/EgdQhwOA==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" + "use-sync-external-store": "^1.5.0" }, "peerDependencies": { "@types/react": "*", @@ -2988,9 +3029,9 @@ } }, "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -3003,9 +3044,9 @@ } }, "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", - "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", "license": "MIT", "peerDependencies": { "@types/react": "*", @@ -3018,12 +3059,12 @@ } }, "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", - "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", "license": "MIT", "dependencies": { - "@radix-ui/rect": "1.1.0" + "@radix-ui/rect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -3036,12 +3077,12 @@ } }, "node_modules/@radix-ui/react-use-size": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", - "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", "license": "MIT", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" + "@radix-ui/react-use-layout-effect": "1.1.1" }, "peerDependencies": { "@types/react": "*", @@ -3054,12 +3095,12 @@ } }, "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", - "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.3.tgz", + "integrity": "sha512-pzJq12tEaaIhqjbzpCuv/OypJY/BPavOofm+dbab+MHLajy277+1lLm6JFcGgF5eskJ6mquGirhXY2GD/8u8Ug==", "license": "MIT", "dependencies": { - "@radix-ui/react-primitive": "2.0.0" + "@radix-ui/react-primitive": "2.1.3" }, "peerDependencies": { "@types/react": "*", @@ -3077,24 +3118,31 @@ } }, "node_modules/@radix-ui/rect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", - "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==", "license": "MIT" }, "node_modules/@remix-run/router": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.20.0.tgz", - "integrity": "sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==", + "version": "1.23.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.23.0.tgz", + "integrity": "sha512-O3rHJzAQKamUz1fvE0Qaw0xSFqsA/yafi2iqeE0pvdFtCO1viYx8QL6f3Ln/aCCTLxs68SLf0KPM9eSeM8yBnA==", "license": "MIT", "engines": { "node": ">=14.0.0" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.27", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.27.tgz", + "integrity": "sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.2.tgz", + "integrity": "sha512-uLN8NAiFVIRKX9ZQha8wy6UUs06UNSZ32xj6giK/rmMXAgKahwExvK6SsmgU5/brh4w/nSgj8e0k3c1HBQpa0A==", "cpu": [ "arm" ], @@ -3106,9 +3154,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.2.tgz", + "integrity": "sha512-oEouqQk2/zxxj22PNcGSskya+3kV0ZKH+nQxuCCOGJ4oTXBdNTbv+f/E3c74cNLeMO1S5wVWacSws10TTSB77g==", "cpu": [ "arm64" ], @@ -3120,9 +3168,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.2.tgz", + "integrity": "sha512-OZuTVTpj3CDSIxmPgGH8en/XtirV5nfljHZ3wrNwvgkT5DQLhIKAeuFSiwtbMto6oVexV0k1F1zqURPKf5rI1Q==", "cpu": [ "arm64" ], @@ -3134,9 +3182,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.2.tgz", + "integrity": "sha512-Wa/Wn8RFkIkr1vy1k1PB//VYhLnlnn5eaJkfTQKivirOvzu5uVd2It01ukeQstMursuz7S1bU+8WW+1UPXpa8A==", "cpu": [ "x64" ], @@ -3147,10 +3195,38 @@ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.2.tgz", + "integrity": "sha512-QkzxvH3kYN9J1w7D1A+yIMdI1pPekD+pWx7G5rXgnIlQ1TVYVC6hLl7SOV9pi5q9uIDF9AuIGkuzcbF7+fAhow==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.2.tgz", + "integrity": "sha512-dkYXB0c2XAS3a3jmyDkX4Jk0m7gWLFzq1C3qUnJJ38AyxIF5G/dyS4N9B30nvFseCfgtCEdbYFhk0ChoCGxPog==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.2.tgz", + "integrity": "sha512-9VlPY/BN3AgbukfVHAB8zNFWB/lKEuvzRo1NKev0Po8sYFKx0i+AQlCYftgEjcL43F2h9Ui1ZSdVBc4En/sP2w==", "cpu": [ "arm" ], @@ -3162,9 +3238,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.2.tgz", + "integrity": "sha512-+GdKWOvsifaYNlIVf07QYan1J5F141+vGm5/Y8b9uCZnG/nxoGqgCmR24mv0koIWWuqvFYnbURRqw1lv7IBINw==", "cpu": [ "arm" ], @@ -3176,9 +3252,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.2.tgz", + "integrity": "sha512-df0Eou14ojtUdLQdPFnymEQteENwSJAdLf5KCDrmZNsy1c3YaCNaJvYsEUHnrg+/DLBH612/R0xd3dD03uz2dg==", "cpu": [ "arm64" ], @@ -3190,9 +3266,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.2.tgz", + "integrity": "sha512-iPeouV0UIDtz8j1YFR4OJ/zf7evjauqv7jQ/EFs0ClIyL+by++hiaDAfFipjOgyz6y6xbDvJuiU4HwpVMpRFDQ==", "cpu": [ "arm64" ], @@ -3203,12 +3279,12 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.50.2.tgz", + "integrity": "sha512-OL6KaNvBopLlj5fTa5D5bau4W82f+1TyTZRr2BdnfsrnQnmdxh4okMxR2DcDkJuh4KeoQZVuvHvzuD/lyLn2Kw==", "cpu": [ - "ppc64" + "loong64" ], "dev": true, "license": "MIT", @@ -3217,12 +3293,12 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.2.tgz", + "integrity": "sha512-I21VJl1w6z/K5OTRl6aS9DDsqezEZ/yKpbqlvfHbW0CEF5IL8ATBMuUx6/mp683rKTK8thjs/0BaNrZLXetLag==", "cpu": [ - "riscv64" + "ppc64" ], "dev": true, "license": "MIT", @@ -3231,12 +3307,40 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.2.tgz", + "integrity": "sha512-Hq6aQJT/qFFHrYMjS20nV+9SKrXL2lvFBENZoKfoTH2kKDOJqff5OSJr4x72ZaG/uUn+XmBnGhfr4lwMRrmqCQ==", "cpu": [ - "s390x" + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.2.tgz", + "integrity": "sha512-82rBSEXRv5qtKyr0xZ/YMF531oj2AIpLZkeNYxmKNN6I2sVE9PGegN99tYDLK2fYHJITL1P2Lgb4ZXnv0PjQvw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.2.tgz", + "integrity": "sha512-4Q3S3Hy7pC6uaRo9gtXUTJ+EKo9AKs3BXKc2jYypEcMQ49gDPFU2P1ariX9SEtBzE5egIX6fSUmbmGazwBVF9w==", + "cpu": [ + "s390x" ], "dev": true, "license": "MIT", @@ -3246,9 +3350,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.2.tgz", + "integrity": "sha512-9Jie/At6qk70dNIcopcL4p+1UirusEtznpNtcq/u/C5cC4HBX7qSGsYIcG6bdxj15EYWhHiu02YvmdPzylIZlA==", "cpu": [ "x64" ], @@ -3260,9 +3364,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.2.tgz", + "integrity": "sha512-HPNJwxPL3EmhzeAnsWQCM3DcoqOz3/IC6de9rWfGR8ZCuEHETi9km66bH/wG3YH0V3nyzyFEGUZeL5PKyy4xvw==", "cpu": [ "x64" ], @@ -3273,10 +3377,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.2.tgz", + "integrity": "sha512-nMKvq6FRHSzYfKLHZ+cChowlEkR2lj/V0jYj9JnGUVPL2/mIeFGmVM2mLaFeNa5Jev7W7TovXqXIG2d39y1KYA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.2.tgz", + "integrity": "sha512-eFUvvnTYEKeTyHEijQKz81bLrUQOXKZqECeiWH6tb8eXXbZk+CXSG2aFrig2BQ/pjiVRj36zysjgILkqarS2YA==", "cpu": [ "arm64" ], @@ -3288,9 +3406,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.2.tgz", + "integrity": "sha512-cBaWmXqyfRhH8zmUxK3d3sAhEWLrtMjWBRwdMMHJIXSjvjLKvv49adxiEz+FJ8AP90apSDDBx2Tyd/WylV6ikA==", "cpu": [ "ia32" ], @@ -3302,9 +3420,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.2.tgz", + "integrity": "sha512-APwKy6YUhvZaEoHyM+9xqmTpviEI+9eL7LoCH+aLcvWYHJ663qG5zx7WzWZY+a9qkg5JtzcMyJ9z0WtQBMDmgA==", "cpu": [ "x64" ], @@ -3345,15 +3463,15 @@ } }, "node_modules/@swc/core": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.7.39.tgz", - "integrity": "sha512-jns6VFeOT49uoTKLWIEfiQqJAlyqldNAt80kAr8f7a5YjX0zgnG3RBiLMpksx4Ka4SlK4O6TJ/lumIM3Trp82g==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.13.5.tgz", + "integrity": "sha512-WezcBo8a0Dg2rnR82zhwoR6aRNxeTGfK5QCD6TQ+kg3xx/zNT02s/0o+81h/3zhvFSB24NtqEr8FTw88O5W/JQ==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.13" + "@swc/types": "^0.1.24" }, "engines": { "node": ">=10" @@ -3363,19 +3481,19 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.7.39", - "@swc/core-darwin-x64": "1.7.39", - "@swc/core-linux-arm-gnueabihf": "1.7.39", - "@swc/core-linux-arm64-gnu": "1.7.39", - "@swc/core-linux-arm64-musl": "1.7.39", - "@swc/core-linux-x64-gnu": "1.7.39", - "@swc/core-linux-x64-musl": "1.7.39", - "@swc/core-win32-arm64-msvc": "1.7.39", - "@swc/core-win32-ia32-msvc": "1.7.39", - "@swc/core-win32-x64-msvc": "1.7.39" + "@swc/core-darwin-arm64": "1.13.5", + "@swc/core-darwin-x64": "1.13.5", + "@swc/core-linux-arm-gnueabihf": "1.13.5", + "@swc/core-linux-arm64-gnu": "1.13.5", + "@swc/core-linux-arm64-musl": "1.13.5", + "@swc/core-linux-x64-gnu": "1.13.5", + "@swc/core-linux-x64-musl": "1.13.5", + "@swc/core-win32-arm64-msvc": "1.13.5", + "@swc/core-win32-ia32-msvc": "1.13.5", + "@swc/core-win32-x64-msvc": "1.13.5" }, "peerDependencies": { - "@swc/helpers": "*" + "@swc/helpers": ">=0.5.17" }, "peerDependenciesMeta": { "@swc/helpers": { @@ -3384,9 +3502,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.7.39.tgz", - "integrity": "sha512-o2nbEL6scMBMCTvY9OnbyVXtepLuNbdblV9oNJEFia5v5eGj9WMrnRQiylH3Wp/G2NYkW7V1/ZVW+kfvIeYe9A==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.13.5.tgz", + "integrity": "sha512-lKNv7SujeXvKn16gvQqUQI5DdyY8v7xcoO3k06/FJbHJS90zEwZdQiMNRiqpYw/orU543tPaWgz7cIYWhbopiQ==", "cpu": [ "arm64" ], @@ -3401,9 +3519,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.7.39.tgz", - "integrity": "sha512-qMlv3XPgtPi/Fe11VhiPDHSLiYYk2dFYl747oGsHZPq+6tIdDQjIhijXPcsUHIXYDyG7lNpODPL8cP/X1sc9MA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.13.5.tgz", + "integrity": "sha512-ILd38Fg/w23vHb0yVjlWvQBoE37ZJTdlLHa8LRCFDdX4WKfnVBiblsCU9ar4QTMNdeTBEX9iUF4IrbNWhaF1Ng==", "cpu": [ "x64" ], @@ -3418,9 +3536,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.7.39.tgz", - "integrity": "sha512-NP+JIkBs1ZKnpa3Lk2W1kBJMwHfNOxCUJXuTa2ckjFsuZ8OUu2gwdeLFkTHbR43dxGwH5UzSmuGocXeMowra/Q==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.13.5.tgz", + "integrity": "sha512-Q6eS3Pt8GLkXxqz9TAw+AUk9HpVJt8Uzm54MvPsqp2yuGmY0/sNaPPNVqctCX9fu/Nu8eaWUen0si6iEiCsazQ==", "cpu": [ "arm" ], @@ -3435,9 +3553,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.7.39.tgz", - "integrity": "sha512-cPc+/HehyHyHcvAsk3ML/9wYcpWVIWax3YBaA+ScecJpSE04l/oBHPfdqKUPslqZ+Gcw0OWnIBGJT/fBZW2ayw==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.13.5.tgz", + "integrity": "sha512-aNDfeN+9af+y+M2MYfxCzCy/VDq7Z5YIbMqRI739o8Ganz6ST+27kjQFd8Y/57JN/hcnUEa9xqdS3XY7WaVtSw==", "cpu": [ "arm64" ], @@ -3452,9 +3570,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.7.39.tgz", - "integrity": "sha512-8RxgBC6ubFem66bk9XJ0vclu3exJ6eD7x7CwDhp5AD/tulZslTYXM7oNPjEtje3xxabXuj/bEUMNvHZhQRFdqA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.13.5.tgz", + "integrity": "sha512-9+ZxFN5GJag4CnYnq6apKTnnezpfJhCumyz0504/JbHLo+Ue+ZtJnf3RhyA9W9TINtLE0bC4hKpWi8ZKoETyOQ==", "cpu": [ "arm64" ], @@ -3469,9 +3587,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.7.39.tgz", - "integrity": "sha512-3gtCPEJuXLQEolo9xsXtuPDocmXQx12vewEyFFSMSjOfakuPOBmOQMa0sVL8Wwius8C1eZVeD1fgk0omMqeC+Q==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.13.5.tgz", + "integrity": "sha512-WD530qvHrki8Ywt/PloKUjaRKgstQqNGvmZl54g06kA+hqtSE2FTG9gngXr3UJxYu/cNAjJYiBifm7+w4nbHbA==", "cpu": [ "x64" ], @@ -3486,9 +3604,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.7.39.tgz", - "integrity": "sha512-mg39pW5x/eqqpZDdtjZJxrUvQNSvJF4O8wCl37fbuFUqOtXs4TxsjZ0aolt876HXxxhsQl7rS+N4KioEMSgTZw==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.13.5.tgz", + "integrity": "sha512-Luj8y4OFYx4DHNQTWjdIuKTq2f5k6uSXICqx+FSabnXptaOBAbJHNbHT/06JZh6NRUouaf0mYXN0mcsqvkhd7Q==", "cpu": [ "x64" ], @@ -3503,9 +3621,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.7.39.tgz", - "integrity": "sha512-NZwuS0mNJowH3e9bMttr7B1fB8bW5svW/yyySigv9qmV5VcQRNz1kMlCvrCLYRsa93JnARuiaBI6FazSeG8mpA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.13.5.tgz", + "integrity": "sha512-cZ6UpumhF9SDJvv4DA2fo9WIzlNFuKSkZpZmPG1c+4PFSEMy5DFOjBSllCvnqihCabzXzpn6ykCwBmHpy31vQw==", "cpu": [ "arm64" ], @@ -3520,9 +3638,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.7.39.tgz", - "integrity": "sha512-qFmvv5UExbJPXhhvCVDBnjK5Duqxr048dlVB6ZCgGzbRxuarOlawCzzLK4N172230pzlAWGLgn9CWl3+N6zfHA==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.13.5.tgz", + "integrity": "sha512-C5Yi/xIikrFUzZcyGj9L3RpKljFvKiDMtyDzPKzlsDrKIw2EYY+bF88gB6oGY5RGmv4DAX8dbnpRAqgFD0FMEw==", "cpu": [ "ia32" ], @@ -3537,9 +3655,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.7.39", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.7.39.tgz", - "integrity": "sha512-o+5IMqgOtj9+BEOp16atTfBgCogVak9svhBpwsbcJQp67bQbxGYhAPPDW/hZ2rpSSF7UdzbY9wudoX9G4trcuQ==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.13.5.tgz", + "integrity": "sha512-YrKdMVxbYmlfybCSbRtrilc6UA8GF5aPmGKBdPvjrarvsmf4i7ZHGCEnLtfOMd3Lwbs2WUZq3WdMbozYeLU93Q==", "cpu": [ "x64" ], @@ -3561,9 +3679,9 @@ "license": "Apache-2.0" }, "node_modules/@swc/types": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.13.tgz", - "integrity": "sha512-JL7eeCk6zWCbiYQg2xQSdLXQJl8Qoc9rXmG2cEKvHe3CKwMHwHGpfOb8frzNLmbycOo6I51qxnLnn9ESf4I20Q==", + "version": "0.1.25", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.25.tgz", + "integrity": "sha512-iAoY/qRhNH8a/hBvm3zKj9qQ4oc2+3w1unPJa2XvTK3XjeLXtzcCingVPw/9e5mn1+0yPqxcBGp9Jf0pkfMb1g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3584,18 +3702,16 @@ } }, "node_modules/@tailwindcss/typography": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", - "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.19.tgz", + "integrity": "sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==", "dev": true, + "license": "MIT", "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", "postcss-selector-parser": "6.0.10" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" } }, "node_modules/@tailwindcss/typography/node_modules/postcss-selector-parser": { @@ -3603,6 +3719,7 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", "dev": true, + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3612,9 +3729,9 @@ } }, "node_modules/@tanstack/query-core": { - "version": "5.59.16", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.59.16.tgz", - "integrity": "sha512-crHn+G3ltqb5JG0oUv6q+PMz1m1YkjpASrXTU+sYWW9pLk0t2GybUHNRqYPZWhxgjPaVGC4yp92gSFEJgYEsPw==", + "version": "5.90.2", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.2.tgz", + "integrity": "sha512-k/TcR3YalnzibscALLwxeiLUub6jN5EDLwKDiO7q5f4ICEoptJ+n9+7vcEFy5/x/i6Q+Lb/tXrsKCggf5uQJXQ==", "license": "MIT", "funding": { "type": "github", @@ -3622,12 +3739,12 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.59.16", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.59.16.tgz", - "integrity": "sha512-MuyWheG47h6ERd4PKQ6V8gDyBu3ThNG22e1fRVwvq6ap3EqsFhyuxCAwhNP/03m/mLg+DAb0upgbPaX6VB+CkQ==", + "version": "5.90.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.2.tgz", + "integrity": "sha512-CLABiR+h5PYfOWr/z+vWFt5VsOA2ekQeRQBFSKlcoW6Ndx/f8rfyVmq4LbgOM4GG2qtxAxjLYLOpCNTYm4uKzw==", "license": "MIT", "dependencies": { - "@tanstack/query-core": "5.59.16" + "@tanstack/query-core": "5.90.2" }, "funding": { "type": "github", @@ -3661,9 +3778,9 @@ } }, "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.2.tgz", + "integrity": "sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==", "license": "MIT" }, "node_modules/@types/d3-color": { @@ -3688,33 +3805,33 @@ } }, "node_modules/@types/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", + "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==", "license": "MIT" }, "node_modules/@types/d3-scale": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", - "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", + "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", "license": "MIT", "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", "license": "MIT", "dependencies": { "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", "license": "MIT" }, "node_modules/@types/d3-timer": { @@ -3734,9 +3851,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, @@ -3782,13 +3899,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.7.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.9.tgz", - "integrity": "sha512-jrTfRC7FM6nChvU7X2KqcrgquofrWLFDeYC1hKfwNWomVvrn7JIksqf344WN2X/y8xrgqBd2dJATZV4GbatBfg==", + "version": "22.18.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.18.8.tgz", + "integrity": "sha512-pAZSHMiagDR7cARo/cch1f3rXy0AEXwsVsVH09FcyeJVAzCnGgmYis7P3JidtTUjyadhTeSo8TgRPswstghDaw==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.21.0" } }, "node_modules/@types/plist": { @@ -3804,16 +3921,16 @@ } }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "version": "15.7.15", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.15.tgz", + "integrity": "sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==", "devOptional": true, "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.25", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.25.tgz", - "integrity": "sha512-oSVZmGtDPmRZtVDqvdKUi/qgCsWp5IDY29wp8na8Bj4B3cc99hfNzvNhlMkVVxctkAOGUA3Km7MMpBHAnWfcIA==", + "version": "18.3.26", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.26.tgz", + "integrity": "sha512-RFA/bURkcKzx/X9oumPG9Vp3D3JUgus/d0b67KB0t5S/raciymilkOa66olh78MUI92QLbEJevO7rvqU/kjwKA==", "devOptional": true, "license": "MIT", "dependencies": { @@ -3822,13 +3939,13 @@ } }, "node_modules/@types/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "version": "18.3.7", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.7.tgz", + "integrity": "sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==", "devOptional": true, "license": "MIT", - "dependencies": { - "@types/react": "*" + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/responselike": { @@ -3860,22 +3977,16 @@ "@types/node": "*" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.11.0.tgz", - "integrity": "sha512-KhGn2LjW1PJT2A/GfDpiyOfS4a8xHQv2myUagTM5+zsormOmBlYsnQ6pobJ8XxJmh6hnHwa2Mbe3fPrDJoDhbA==", + "node_modules/@typescript-eslint/project-service": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.0.tgz", + "integrity": "sha512-OEhec0mH+U5Je2NZOeK1AbVCdm0ChyapAyTeXVIYTPXDJ3F07+cu87PPXcGoYqZ7M9YJVvFnfpGg1UmCIqM+QQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/type-utils": "8.11.0", - "@typescript-eslint/utils": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "@typescript-eslint/tsconfig-utils": "^8.46.0", + "@typescript-eslint/types": "^8.46.0", + "debug": "^4.3.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3885,73 +3996,52 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.11.0.tgz", - "integrity": "sha512-lmt73NeHdy1Q/2ul295Qy3uninSqi6wQI18XwSpm8w0ZbQXUpjCAWP1Vlv/obudoBiIjJVjlztjQ+d/Md98Yxg==", + "node_modules/@typescript-eslint/project-service/node_modules/@typescript-eslint/types": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", + "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", - "debug": "^4.3.4" - }, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.11.0.tgz", - "integrity": "sha512-Uholz7tWhXmA4r6epo+vaeV7yjdKy5QFCERMjs1kMVsLRKIrSdM6o21W2He9ftp5PP6aWOVpD5zvrvuHZC0bMQ==", + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.0.tgz", + "integrity": "sha512-WrYXKGAHY836/N7zoK/kzi6p8tXFhasHh8ocFL9VZSAkvH956gfeRfcnhs3xzRy8qQ/dq3q44v1jvQieMFg2cw==", "dev": true, "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0" - }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.11.0.tgz", - "integrity": "sha512-ItiMfJS6pQU0NIKAaybBKkuVzo6IdnAhPFZA/2Mba/uBjuPQPet/8+zh5GtLHwmuFRShZx+8lhIs7/QeDHflOg==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.0.tgz", + "integrity": "sha512-hy+lvYV1lZpVs2jRaEYvgCblZxUoJiPyCemwbQZ+NGulWkQRy0HRPYAoef/CNSzaLt+MLvMptZsHXHlkEilaeg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.11.0", - "@typescript-eslint/utils": "8.11.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/utils": "8.46.0", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3960,16 +4050,15 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/types": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.11.0.tgz", - "integrity": "sha512-tn6sNMHf6EBAYMvmPUaKaVeYvhUsrE6x+bXQTxjQRp360h1giATU0WvgeEys1spbvb5R+VpNOZ+XJmjD8wOUHw==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", + "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", "dev": true, "license": "MIT", "engines": { @@ -3980,21 +4069,23 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.11.0.tgz", - "integrity": "sha512-yHC3s1z1RCHoCz5t06gf7jH24rr3vns08XXhfEqzYpd6Hll3z/3g23JRi0jM8A47UFKNc3u/y5KIMx8Ynbjohg==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", "dev": true, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/visitor-keys": "8.11.0", + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4003,49 +4094,127 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "node_modules/@typescript-eslint/type-utils/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.0.tgz", + "integrity": "sha512-nD6yGWPj1xiOm4Gk0k6hLSZz2XkNXhuYmyIrOWcHoPuAhjT9i5bAG+xbWPgFeNR8HPHHtpNKdYUXJl/D3x7f5g==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.11.0.tgz", - "integrity": "sha512-CYiX6WZcbXNJV7UNB4PLDIBtSdRmRI/nb0FMyqHPTQD1rMjA0foPLaPUV39C/MxkTd/QKSeX+Gb34PPsDVC35g==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", + "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", + "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.11.0", - "@typescript-eslint/types": "8.11.0", - "@typescript-eslint/typescript-estree": "8.11.0" + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4055,18 +4224,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.11.0.tgz", - "integrity": "sha512-EaewX6lxSjRJnc+99+dqzTeoDZUfyrA52d2/HRrkI830kgovWsmIiTfmr0NZorzqic7ga+1bS60lRBUgR3n/Bw==", + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.11.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4076,30 +4245,44 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" } }, + "node_modules/@typescript-eslint/utils/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, "node_modules/@vitejs/plugin-react-swc": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.7.1.tgz", - "integrity": "sha512-vgWOY0i1EROUK0Ctg1hwhtC3SdcDjZcdit4Ups4aPkDcB1jYhmo+RMYWY87cmXMhvtD5uf8lV89j2w16vkdSVg==", + "version": "3.11.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react-swc/-/plugin-react-swc-3.11.0.tgz", + "integrity": "sha512-YTJCGFdNMHCMfjODYtxRNVAYmTWQ1Lb8PulP/2/f/oEEtglw8oKxKIZmmRkyXrVrHfsKOaVkAc3NT9/dMutO5w==", "dev": true, "license": "MIT", "dependencies": { - "@swc/core": "^1.7.26" + "@rolldown/pluginutils": "1.0.0-beta.27", + "@swc/core": "^1.12.11" }, "peerDependencies": { - "vite": "^4 || ^5" + "vite": "^4 || ^5 || ^6 || ^7" } }, "node_modules/@xmldom/xmldom": { @@ -4127,9 +4310,9 @@ "license": "ISC" }, "node_modules/acorn": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.13.0.tgz", - "integrity": "sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { @@ -4214,15 +4397,12 @@ } }, "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -4383,9 +4563,9 @@ "license": "Python-2.0" }, "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.6.tgz", + "integrity": "sha512-ik3ZgC9dY/lYVVM++OISsaYDeg1tb0VtP5uL3ouh1koGOaUMDPpbFIei4JkFimWUFPn90sbMNMXQAIVOlnYKJA==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -4450,9 +4630,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dev": true, "funding": [ { @@ -4470,11 +4650,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -4525,6 +4705,16 @@ ], "license": "MIT" }, + "node_modules/baseline-browser-mapping": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.8.6.tgz", + "integrity": "sha512-wrH5NNqren/QMtKUEEJf7z86YjfqW/2uw3IL3/xpqZUC95SSVIFXYQeeGjL6FT/X68IROu6RMehZQS5foy2BXw==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "baseline-browser-mapping": "dist/cli.js" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -4559,14 +4749,12 @@ "optional": true }, "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "balanced-match": "^1.0.0" } }, "node_modules/braces": { @@ -4582,9 +4770,9 @@ } }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.26.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.26.2.tgz", + "integrity": "sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==", "dev": true, "funding": [ { @@ -4602,10 +4790,11 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "baseline-browser-mapping": "^2.8.3", + "caniuse-lite": "^1.0.30001741", + "electron-to-chromium": "^1.5.218", + "node-releases": "^2.0.21", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -4764,16 +4953,6 @@ "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/cacache/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -4893,9 +5072,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001669", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001669.tgz", - "integrity": "sha512-DlWzFDJqstqtIVx1zeSpIMLjunf5SmwOw0N2Ck/QSQdS8PLS4+9HrLaYei4w8BIAL7IB/UEDu889d8vhCTPA0w==", + "version": "1.0.30001743", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001743.tgz", + "integrity": "sha512-e6Ojr7RV14Un7dz6ASD0aZDmQPT/A+eZU+nuTNfjqmRrmkmQlnTNWH0SKmqagx9PeW87UVqapSurtAXifmtdmw==", "dev": true, "funding": [ { @@ -5003,6 +5182,7 @@ "version": "0.7.1", "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "license": "Apache-2.0", "dependencies": { "clsx": "^2.1.1" }, @@ -5064,17 +5244,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - } - }, "node_modules/cli-truncate/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -5099,20 +5268,6 @@ "node": ">=8" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -5128,16 +5283,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -5160,19 +5305,6 @@ "node": ">=8" } }, - "node_modules/cliui/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -5224,393 +5356,31 @@ } }, "node_modules/cmdk": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", - "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", "license": "MIT", "dependencies": { - "@radix-ui/react-dialog": "1.0.5", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" }, "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" } }, - "node_modules/cmdk/node_modules/@radix-ui/primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", - "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-compose-refs": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", - "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-context": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", - "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-dialog": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", - "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", - "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-focus-guards": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", - "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", - "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", - "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-portal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", - "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-presence": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", - "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", - "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", - "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", - "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", - "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-callback-ref": "1.0.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", - "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.13.10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/cmdk/node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", - "license": "MIT", - "dependencies": { - "react-remove-scroll-bar": "^2.3.3", - "react-style-singleton": "^2.2.1", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, "node_modules/color-name": { @@ -5709,10 +5479,31 @@ "typescript": "^5.4.3" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "node_modules/config-file-ts/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true, "license": "MIT", "optional": true @@ -5759,6 +5550,7 @@ "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -5918,9 +5710,9 @@ } }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -6048,9 +5840,9 @@ } }, "node_modules/detect-libc": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.1.tgz", - "integrity": "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -6088,6 +5880,30 @@ "p-limit": "^3.1.0 " } }, + "node_modules/dir-compare/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/dir-compare/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -6253,9 +6069,9 @@ } }, "node_modules/electron": { - "version": "38.2.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-38.2.0.tgz", - "integrity": "sha512-Cw5Mb+N5NxsG0Hc1qr8I65Kt5APRrbgTtEEn3zTod30UNJRnAE1xbGk/1NOaDn3ODzI/MYn6BzT9T9zreP7xWA==", + "version": "38.2.2", + "resolved": "https://registry.npmjs.org/electron/-/electron-38.2.2.tgz", + "integrity": "sha512-OXSaVNXDlonXDjMRsFNQo1j5tzTKwKXh5/m46IjAFccBcZJZMISI+EjSI07oexIuhvKM8AZLuFuihVn4YjWWrA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -6404,9 +6220,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.45", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.45.tgz", - "integrity": "sha512-vOzZS6uZwhhbkZbcRyiy99Wg+pYFV5hk+5YaECvx0+Z31NR3Tt5zS6dze2OepT6PCTzVzT0dIJItti+uAW5zmw==", + "version": "1.5.222", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.222.tgz", + "integrity": "sha512-gA7psSwSwQRE60CEoLz6JBCQPIxNeuzB2nL8vE03GK/OHxlvykbLyeiumQy1iH5C2f3YbRAZpGCMT12a/9ih9w==", "dev": true, "license": "ISC" }, @@ -6449,31 +6265,31 @@ } }, "node_modules/embla-carousel": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.3.0.tgz", - "integrity": "sha512-Ve8dhI4w28qBqR8J+aMtv7rLK89r1ZA5HocwFz6uMB/i5EiC7bGI7y+AM80yAVUJw3qqaZYK7clmZMUR8kM3UA==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", "license": "MIT" }, "node_modules/embla-carousel-react": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.3.0.tgz", - "integrity": "sha512-P1FlinFDcIvggcErRjNuVqnUR8anyo8vLMIH8Rthgofw7Nj8qTguCa2QjFAbzxAUTQTPNNjNL7yt0BGGinVdFw==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-react/-/embla-carousel-react-8.6.0.tgz", + "integrity": "sha512-0/PjqU7geVmo6F734pmPqpyHqiM99olvyecY7zdweCw+6tKEXnrE90pBiBbMMU8s5tICemzpQ3hi5EpxzGW+JA==", "license": "MIT", "dependencies": { - "embla-carousel": "8.3.0", - "embla-carousel-reactive-utils": "8.3.0" + "embla-carousel": "8.6.0", + "embla-carousel-reactive-utils": "8.6.0" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.1 || ^18.0.0" + "react": "^16.8.0 || ^17.0.1 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "node_modules/embla-carousel-reactive-utils": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.3.0.tgz", - "integrity": "sha512-EYdhhJ302SC4Lmkx8GRsp0sjUhEN4WyFXPOk0kGu9OXZSRMmcBlRgTvHcq8eKJE1bXWBsOi1T83B+BSSVZSmwQ==", + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-reactive-utils/-/embla-carousel-reactive-utils-8.6.0.tgz", + "integrity": "sha512-fMVUDUEx0/uIEDM0Mz3dHznDhfX+znCCDCeIophYb1QGVM7YThSWX+wz11zlYwWFOr74b4QLGg0hrGPJeG2s4A==", "license": "MIT", "peerDependencies": { - "embla-carousel": "8.3.0" + "embla-carousel": "8.6.0" } }, "node_modules/emoji-regex": { @@ -6574,9 +6390,9 @@ "optional": true }, "node_modules/esbuild": { - "version": "0.21.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", - "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "version": "0.25.10", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.10.tgz", + "integrity": "sha512-9RiGKvCwaqxO2owP61uQ4BgNborAQskMR6QusfWzQqv7AZOg5oGehdY2pRJMTKuwxd1IDBP4rSbI5lHzU7SMsQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -6584,32 +6400,35 @@ "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.21.5", - "@esbuild/android-arm": "0.21.5", - "@esbuild/android-arm64": "0.21.5", - "@esbuild/android-x64": "0.21.5", - "@esbuild/darwin-arm64": "0.21.5", - "@esbuild/darwin-x64": "0.21.5", - "@esbuild/freebsd-arm64": "0.21.5", - "@esbuild/freebsd-x64": "0.21.5", - "@esbuild/linux-arm": "0.21.5", - "@esbuild/linux-arm64": "0.21.5", - "@esbuild/linux-ia32": "0.21.5", - "@esbuild/linux-loong64": "0.21.5", - "@esbuild/linux-mips64el": "0.21.5", - "@esbuild/linux-ppc64": "0.21.5", - "@esbuild/linux-riscv64": "0.21.5", - "@esbuild/linux-s390x": "0.21.5", - "@esbuild/linux-x64": "0.21.5", - "@esbuild/netbsd-x64": "0.21.5", - "@esbuild/openbsd-x64": "0.21.5", - "@esbuild/sunos-x64": "0.21.5", - "@esbuild/win32-arm64": "0.21.5", - "@esbuild/win32-ia32": "0.21.5", - "@esbuild/win32-x64": "0.21.5" + "@esbuild/aix-ppc64": "0.25.10", + "@esbuild/android-arm": "0.25.10", + "@esbuild/android-arm64": "0.25.10", + "@esbuild/android-x64": "0.25.10", + "@esbuild/darwin-arm64": "0.25.10", + "@esbuild/darwin-x64": "0.25.10", + "@esbuild/freebsd-arm64": "0.25.10", + "@esbuild/freebsd-x64": "0.25.10", + "@esbuild/linux-arm": "0.25.10", + "@esbuild/linux-arm64": "0.25.10", + "@esbuild/linux-ia32": "0.25.10", + "@esbuild/linux-loong64": "0.25.10", + "@esbuild/linux-mips64el": "0.25.10", + "@esbuild/linux-ppc64": "0.25.10", + "@esbuild/linux-riscv64": "0.25.10", + "@esbuild/linux-s390x": "0.25.10", + "@esbuild/linux-x64": "0.25.10", + "@esbuild/netbsd-arm64": "0.25.10", + "@esbuild/netbsd-x64": "0.25.10", + "@esbuild/openbsd-arm64": "0.25.10", + "@esbuild/openbsd-x64": "0.25.10", + "@esbuild/openharmony-arm64": "0.25.10", + "@esbuild/sunos-x64": "0.25.10", + "@esbuild/win32-arm64": "0.25.10", + "@esbuild/win32-ia32": "0.25.10", + "@esbuild/win32-x64": "0.25.10" } }, "node_modules/escalade": { @@ -6636,32 +6455,33 @@ } }, "node_modules/eslint": { - "version": "9.13.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.13.0.tgz", - "integrity": "sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==", + "version": "9.37.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.37.0.tgz", + "integrity": "sha512-XyLmROnACWqSxiGYArdef1fItQd47weqB7iwtfr9JHwRrqIXZdcFMvvEcL9xHCmL0SNsOvF0c42lWyM1U5dgig==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.11.0", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.13.0", - "@eslint/plugin-kit": "^0.2.0", - "@humanfs/node": "^0.16.5", + "@eslint-community/eslint-utils": "^4.8.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.4.0", + "@eslint/core": "^0.16.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.37.0", + "@eslint/plugin-kit": "^0.4.0", + "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.3.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.1.0", - "eslint-visitor-keys": "^4.1.0", - "espree": "^10.2.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -6675,8 +6495,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -6697,9 +6516,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.1.0-rc-fb9a90fa48-20240614", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz", - "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.2.0.tgz", + "integrity": "sha512-+f15FfK64YQwZdJNELETdn5ibXEUQmW1DZL6KXhNnc2heoy/sg9VJJeT7n8TlMWouzWqSWavFkIhHyIbIAEapg==", "dev": true, "license": "MIT", "engines": { @@ -6710,19 +6529,19 @@ } }, "node_modules/eslint-plugin-react-refresh": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.14.tgz", - "integrity": "sha512-aXvzCTK7ZBv1e7fahFuR3Z/fyQQSIQ711yPgYRj+Oj64tyTgO4iQIDmYXDBqvSWQ/FA4OSCsXOStlF+noU0/NA==", + "version": "0.4.20", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.20.tgz", + "integrity": "sha512-XpbHQ2q5gUF8BGOX4dHe+71qoirYMhApEPZ7sfhF/dNnOF1UXnCMGZf79SFTBO7Bz5YEIT4TMieSlJBWhP9WBA==", "dev": true, "license": "MIT", "peerDependencies": { - "eslint": ">=7" + "eslint": ">=8.40" } }, "node_modules/eslint-scope": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", - "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -6737,9 +6556,33 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", - "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -6749,17 +6592,43 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, "node_modules/espree": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", - "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.12.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.1.0" + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -6876,25 +6745,25 @@ "license": "MIT" }, "node_modules/fast-equals": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.0.1.tgz", - "integrity": "sha512-WF1Wi8PwwSY7/6Kx0vKXtw8RwuSGoM1bvDaJbu7MxDlR1vovZjIAKrnzyrThgAjm6JDTu0fVgWXDlMGspodfoQ==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.2.tgz", + "integrity": "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==", "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -6927,9 +6796,9 @@ "license": "MIT" }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -6968,16 +6837,6 @@ "minimatch": "^5.0.1" } }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, "node_modules/filelist/node_modules/minimatch": { "version": "5.1.6", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", @@ -7035,9 +6894,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, @@ -7062,12 +6921,12 @@ } }, "node_modules/foreground-child": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", - "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.0", + "cross-spawn": "^7.0.6", "signal-exit": "^4.0.1" }, "engines": { @@ -7278,20 +7137,22 @@ } }, "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -7310,27 +7171,27 @@ } }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, "node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "*" } }, "node_modules/global-agent": { @@ -7353,9 +7214,9 @@ } }, "node_modules/globals": { - "version": "15.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", - "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, "license": "MIT", "engines": { @@ -7646,9 +7507,9 @@ } }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -7709,13 +7570,13 @@ "license": "ISC" }, "node_modules/input-otp": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.2.4.tgz", - "integrity": "sha512-md6rhmD+zmMnUh5crQNSQxq3keBRYvE3odbr4Qb9g2NWzQv9azi+t1a3X4TBTbh98fsGHgEEJlzbe1q860uGCA==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/input-otp/-/input-otp-1.4.2.tgz", + "integrity": "sha512-l3jWwYNvrEa6NTCt7BECfCm48GvwuZzkoeG3gBL2w4CHeOXW3eKFmf9UNYkNfYc3mxMrthMnxjIE07MT0zLBQA==", "license": "MIT", "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0.0 || ^19.0.0-rc" } }, "node_modules/internmap": { @@ -7727,15 +7588,6 @@ "node": ">=12" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.0.0" - } - }, "node_modules/ip-address": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.0.1.tgz", @@ -7772,9 +7624,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -7908,9 +7760,9 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "license": "MIT", "bin": { "jiti": "bin/jiti.js" @@ -8077,18 +7929,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==", - "dev": true - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -8126,9 +7966,9 @@ } }, "node_modules/lovable-tagger": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/lovable-tagger/-/lovable-tagger-1.1.7.tgz", - "integrity": "sha512-b1wwYbuxWGx+DuqviQGQXrgLAraK1RVbqTg6G8LYRID8FJTg4TuAeO0TJ7i6UXOF8gEzbgjhRbGZ+XAkWH2T8A==", + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/lovable-tagger/-/lovable-tagger-1.1.10.tgz", + "integrity": "sha512-LbYaxi6vgrqg7Sq93/cRbIM78EP+X+GUU7spx804yqB2bxfiOej8UvcZHeE4WqMjAFI2dHGhXpy8r6SnvmrzGg==", "dev": true, "license": "MIT", "dependencies": { @@ -8140,556 +7980,393 @@ "tailwindcss": "^3.4.17" }, "peerDependencies": { - "vite": "^5.0.0" + "vite": ">=5.0.0 <8.0.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/aix-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", - "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", - "cpu": [ - "ppc64" - ], + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "aix" - ], "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/android-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", - "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, - "node_modules/lovable-tagger/node_modules/@esbuild/android-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", - "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "node_modules/lucide-react": { + "version": "0.462.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.462.0.tgz", + "integrity": "sha512-NTL7EbAao9IFtuSivSZgrAh4fZd09Lr+6MTkqIxuHaH2nnYiYIzXPo06cOxHg9wKLdj6LL8TByG4qpePqwgx/g==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/android-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", - "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", - "cpu": [ - "x64" - ], + "node_modules/magic-string": { + "version": "0.30.19", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.19.tgz", + "integrity": "sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.5" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/darwin-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", - "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", - "cpu": [ - "arm64" - ], + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, "engines": { - "node": ">=18" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/darwin-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", - "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", - "cpu": [ - "x64" - ], + "node_modules/make-fetch-happen/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "debug": "4" + }, "engines": { - "node": ">=18" + "node": ">= 6.0.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", - "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", - "cpu": [ - "arm64" - ], + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=18" + "node": ">= 6" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/freebsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", - "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", - "cpu": [ - "x64" - ], + "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "dependencies": { + "agent-base": "6", + "debug": "4" + }, "engines": { - "node": ">=18" + "node": ">= 6" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", - "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", - "cpu": [ - "arm" - ], + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "ISC", "engines": { - "node": ">=18" + "node": ">=12" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", - "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", - "cpu": [ - "arm64" - ], + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", - "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", - "cpu": [ - "ia32" - ], + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-loong64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", - "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", - "cpu": [ - "loong64" - ], - "dev": true, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">= 0.4" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-mips64el": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", - "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", - "cpu": [ - "mips64el" - ], - "dev": true, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">= 8" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-ppc64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", - "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", - "cpu": [ - "ppc64" - ], - "dev": true, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">=18" + "node": ">=8.6" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-riscv64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", - "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", - "cpu": [ - "riscv64" - ], + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "bin": { + "mime": "cli.js" + }, "engines": { - "node": ">=18" + "node": ">=4.0.0" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-s390x": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", - "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", - "cpu": [ - "s390x" - ], - "dev": true, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=18" + "node": ">= 0.6" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/linux-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", - "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", - "cpu": [ - "x64" - ], - "dev": true, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "mime-db": "1.52.0" + }, "engines": { - "node": ">=18" + "node": ">= 0.6" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/netbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", - "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", - "cpu": [ - "x64" - ], + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], "engines": { - "node": ">=18" + "node": ">=6" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/openbsd-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", - "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", - "cpu": [ - "x64" - ], + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], "engines": { - "node": ">=18" + "node": ">=4" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/sunos-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", - "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=18" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/win32-arm64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", - "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", - "cpu": [ - "arm64" - ], + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "license": "ISC", "engines": { - "node": ">=18" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/win32-ia32": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", - "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", - "cpu": [ - "ia32" - ], + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=18" + "node": ">= 8" } }, - "node_modules/lovable-tagger/node_modules/@esbuild/win32-x64": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", - "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", - "cpu": [ - "x64" - ], + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/lovable-tagger/node_modules/esbuild": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", - "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, - "hasInstallScript": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" }, "engines": { - "node": ">=18" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.0", - "@esbuild/android-arm": "0.25.0", - "@esbuild/android-arm64": "0.25.0", - "@esbuild/android-x64": "0.25.0", - "@esbuild/darwin-arm64": "0.25.0", - "@esbuild/darwin-x64": "0.25.0", - "@esbuild/freebsd-arm64": "0.25.0", - "@esbuild/freebsd-x64": "0.25.0", - "@esbuild/linux-arm": "0.25.0", - "@esbuild/linux-arm64": "0.25.0", - "@esbuild/linux-ia32": "0.25.0", - "@esbuild/linux-loong64": "0.25.0", - "@esbuild/linux-mips64el": "0.25.0", - "@esbuild/linux-ppc64": "0.25.0", - "@esbuild/linux-riscv64": "0.25.0", - "@esbuild/linux-s390x": "0.25.0", - "@esbuild/linux-x64": "0.25.0", - "@esbuild/netbsd-arm64": "0.25.0", - "@esbuild/netbsd-x64": "0.25.0", - "@esbuild/openbsd-arm64": "0.25.0", - "@esbuild/openbsd-x64": "0.25.0", - "@esbuild/sunos-x64": "0.25.0", - "@esbuild/win32-arm64": "0.25.0", - "@esbuild/win32-ia32": "0.25.0", - "@esbuild/win32-x64": "0.25.0" + "encoding": "^0.1.13" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/lucide-react": { - "version": "0.462.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.462.0.tgz", - "integrity": "sha512-NTL7EbAao9IFtuSivSZgrAh4fZd09Lr+6MTkqIxuHaH2nnYiYIzXPo06cOxHg9wKLdj6LL8TByG4qpePqwgx/g==", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" - } - }, - "node_modules/magic-string": { - "version": "0.30.12", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", - "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, "license": "ISC", "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/make-fetch-happen/node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "debug": "4" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" } }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "minipass": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/make-fetch-happen/node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "agent-base": "6", - "debug": "4" + "yallist": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">=12" + "node": ">=8" } }, - "node_modules/make-fetch-happen/node_modules/minipass": { + "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", @@ -8702,310 +8379,44 @@ "node": ">=8" } }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "escape-string-regexp": "^4.0.0" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", "engines": { "node": ">= 8" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "license": "MIT", + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8" } }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "license": "MIT", "bin": { - "mime": "cli.js" + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/minipass-fetch/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" + "node": ">=10" } }, "node_modules/motion-dom": { @@ -9042,9 +8453,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", @@ -9087,9 +8498,9 @@ } }, "node_modules/node-abi": { - "version": "3.77.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.77.0.tgz", - "integrity": "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ==", + "version": "3.78.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.78.0.tgz", + "integrity": "sha512-E2wEyrgX/CqvicaQYU3Ze1PFGjc4QYPGsjUrlYkqAE0WjHEZwgOsGMPMzkMse4LjJbDmaEuDX3CM036j5K2DSQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9118,9 +8529,9 @@ } }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.21.tgz", + "integrity": "sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==", "dev": true, "license": "MIT" }, @@ -9269,33 +8680,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", "dev": true, "license": "MIT", "engines": { @@ -9470,9 +8858,9 @@ } }, "node_modules/pirates": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", - "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz", + "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==", "license": "MIT", "engines": { "node": ">= 6" @@ -9494,9 +8882,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "funding": [ { "type": "opencollective", @@ -9513,8 +8901,8 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -9539,9 +8927,19 @@ } }, "node_modules/postcss-js": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", - "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.1.0.tgz", + "integrity": "sha512-oIAOTqgIo7q2EOwbhb8UalYePMvYoIeRY2YKntdpFQXNosSu3vLrniGgmH9OKs/qAkfoj5oB3le/7mINW1LCfw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" @@ -9549,10 +8947,6 @@ "engines": { "node": "^12 || ^14 || >= 16" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.4.21" } @@ -9834,9 +9228,9 @@ } }, "node_modules/react-hook-form": { - "version": "7.53.1", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.53.1.tgz", - "integrity": "sha512-6aiQeBda4zjcuaugWvim9WsGqisoUk+etmFEsSUMm451/Ic8L/UAb7sRtMj3V+Hdzm6mMjU1VhiSzYUZeBm0Vg==", + "version": "7.64.0", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.64.0.tgz", + "integrity": "sha512-fnN+vvTiMLnRqKNTVhDysdrUay0kUUAymQnFIznmgDvapjveUWOOPqMNzPg+A+0yf9DuE2h6xzBjN1s+Qx8wcg==", "license": "MIT", "engines": { "node": ">=18.0.0" @@ -9865,23 +9259,23 @@ "license": "MIT" }, "node_modules/react-remove-scroll": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.0.tgz", - "integrity": "sha512-I2U4JVEsQenxDAKaVa3VZ/JeJZe0/2DxPWL8Tj8yLKctQJQiZM52pn/GWFpSp8dftjM3pSAHVJZscAnC/y+ySQ==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.1.tgz", + "integrity": "sha512-HpMh8+oahmIdOuS5aFKKY6Pyog+FNaZV/XyJOq7b4YFwsFHe5yYfdbIalI4k3vU2nSDql7YskmUseHsRrJqIPA==", "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.6", - "react-style-singleton": "^2.2.1", + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", "tslib": "^2.1.0", - "use-callback-ref": "^1.3.0", - "use-sidecar": "^1.1.2" + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -9890,20 +9284,20 @@ } }, "node_modules/react-remove-scroll-bar": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", - "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", "license": "MIT", "dependencies": { - "react-style-singleton": "^2.2.1", + "react-style-singleton": "^2.2.2", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" }, "peerDependenciesMeta": { "@types/react": { @@ -9912,9 +9306,9 @@ } }, "node_modules/react-resizable-panels": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.5.tgz", - "integrity": "sha512-JMSe18rYupmx+dzYcdfWYZ93ZdxqQmLum3xWDVSUMI0UVwl9bB9gUaFmPbxYoO4G+m5sqgdXQCYQxnOysytfnw==", + "version": "2.1.9", + "resolved": "https://registry.npmjs.org/react-resizable-panels/-/react-resizable-panels-2.1.9.tgz", + "integrity": "sha512-z77+X08YDIrgAes4jl8xhnUu1LNIRp4+E7cv4xHmLOxxUPO/ML7PSrE813b90vj7xvQ1lcf7g2uA9GeMZonjhQ==", "license": "MIT", "peerDependencies": { "react": "^16.14.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc", @@ -9922,12 +9316,12 @@ } }, "node_modules/react-router": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.27.0.tgz", - "integrity": "sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==", + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.30.1.tgz", + "integrity": "sha512-X1m21aEmxGXqENEPG3T6u0Th7g0aS4ZmoNynhbs+Cn+q+QGTLt+d5IQ2bHAXKzKcxGJjxACpVbnYQSCRcfxHlQ==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.20.0" + "@remix-run/router": "1.23.0" }, "engines": { "node": ">=14.0.0" @@ -9937,13 +9331,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.27.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.27.0.tgz", - "integrity": "sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==", + "version": "6.30.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.30.1.tgz", + "integrity": "sha512-llKsgOkZdbPU1Eg3zK8lCn+sjD9wMRZZPuzmdWWX5SUs8OFkN5HnFVC0u5KMeMaC9aoancFI/KoLuKPqN+hxHw==", "license": "MIT", "dependencies": { - "@remix-run/router": "1.20.0", - "react-router": "6.27.0" + "@remix-run/router": "1.23.0", + "react-router": "6.30.1" }, "engines": { "node": ">=14.0.0" @@ -9954,9 +9348,9 @@ } }, "node_modules/react-smooth": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.1.tgz", - "integrity": "sha512-OE4hm7XqR0jNOq3Qmk9mFLyd6p2+j6bvbPJ7qlB7+oo0eNcL2l7WQzG6MBnT3EXY6xzkLMUBec3AfewJdA0J8w==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/react-smooth/-/react-smooth-4.0.4.tgz", + "integrity": "sha512-gnGKTpYwqL0Iii09gHobNolvX4Kiq4PKx6eWBCYYix+8cdw+cGo3do906l1NBPKkSWx1DghC1dlWG9L2uGd61Q==", "license": "MIT", "dependencies": { "fast-equals": "^5.0.1", @@ -9964,26 +9358,25 @@ "react-transition-group": "^4.4.5" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-style-singleton": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", - "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", "license": "MIT", "dependencies": { "get-nonce": "^1.0.0", - "invariant": "^2.2.4", "tslib": "^2.0.0" }, "engines": { "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -10057,16 +9450,16 @@ } }, "node_modules/recharts": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.13.0.tgz", - "integrity": "sha512-sbfxjWQ+oLWSZEWmvbq/DFVdeRLqqA6d0CDjKx2PkxVVdoXo16jvENCE+u/x7HxOO+/fwx//nYRwb8p8X6s/lQ==", + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/recharts/-/recharts-2.15.4.tgz", + "integrity": "sha512-UT/q6fwS3c1dHbXv2uFgYJ9BMFHu3fwnd7AYZaEQhXuYQ4hgsxLvsUXzGdKeZrW5xopzDCvuA2N41WJ88I7zIw==", "license": "MIT", "dependencies": { "clsx": "^2.0.0", "eventemitter3": "^4.0.1", "lodash": "^4.17.21", "react-is": "^18.3.1", - "react-smooth": "^4.0.0", + "react-smooth": "^4.0.4", "recharts-scale": "^0.4.4", "tiny-invariant": "^1.3.1", "victory-vendor": "^36.6.8" @@ -10075,8 +9468,8 @@ "node": ">=14" }, "peerDependencies": { - "react": "^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0" + "react": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/recharts-scale": { @@ -10088,12 +9481,6 @@ "decimal.js-light": "^2.4.1" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "license": "MIT" - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -10123,18 +9510,21 @@ } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10201,9 +9591,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -10227,28 +9617,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/roarr": { "version": "2.15.4", "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", @@ -10269,13 +9637,13 @@ } }, "node_modules/rollup": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", - "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "version": "4.50.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.50.2.tgz", + "integrity": "sha512-BgLRGy7tNS9H66aIMASq1qSYbAAJV6Z6WR4QYTvj5FgF15rZ/ympT1uixHXwzbZUBDbkvqUI1KR0fH1FhMaQ9w==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -10285,22 +9653,27 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.24.0", - "@rollup/rollup-android-arm64": "4.24.0", - "@rollup/rollup-darwin-arm64": "4.24.0", - "@rollup/rollup-darwin-x64": "4.24.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", - "@rollup/rollup-linux-arm-musleabihf": "4.24.0", - "@rollup/rollup-linux-arm64-gnu": "4.24.0", - "@rollup/rollup-linux-arm64-musl": "4.24.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", - "@rollup/rollup-linux-riscv64-gnu": "4.24.0", - "@rollup/rollup-linux-s390x-gnu": "4.24.0", - "@rollup/rollup-linux-x64-gnu": "4.24.0", - "@rollup/rollup-linux-x64-musl": "4.24.0", - "@rollup/rollup-win32-arm64-msvc": "4.24.0", - "@rollup/rollup-win32-ia32-msvc": "4.24.0", - "@rollup/rollup-win32-x64-msvc": "4.24.0", + "@rollup/rollup-android-arm-eabi": "4.50.2", + "@rollup/rollup-android-arm64": "4.50.2", + "@rollup/rollup-darwin-arm64": "4.50.2", + "@rollup/rollup-darwin-x64": "4.50.2", + "@rollup/rollup-freebsd-arm64": "4.50.2", + "@rollup/rollup-freebsd-x64": "4.50.2", + "@rollup/rollup-linux-arm-gnueabihf": "4.50.2", + "@rollup/rollup-linux-arm-musleabihf": "4.50.2", + "@rollup/rollup-linux-arm64-gnu": "4.50.2", + "@rollup/rollup-linux-arm64-musl": "4.50.2", + "@rollup/rollup-linux-loong64-gnu": "4.50.2", + "@rollup/rollup-linux-ppc64-gnu": "4.50.2", + "@rollup/rollup-linux-riscv64-gnu": "4.50.2", + "@rollup/rollup-linux-riscv64-musl": "4.50.2", + "@rollup/rollup-linux-s390x-gnu": "4.50.2", + "@rollup/rollup-linux-x64-gnu": "4.50.2", + "@rollup/rollup-linux-x64-musl": "4.50.2", + "@rollup/rollup-openharmony-arm64": "4.50.2", + "@rollup/rollup-win32-arm64-msvc": "4.50.2", + "@rollup/rollup-win32-ia32-msvc": "4.50.2", + "@rollup/rollup-win32-x64-msvc": "4.50.2", "fsevents": "~2.3.2" } }, @@ -10392,9 +9765,9 @@ } }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", "dev": true, "license": "ISC", "bin": { @@ -10559,13 +9932,13 @@ } }, "node_modules/sonner": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.5.0.tgz", - "integrity": "sha512-FBjhG/gnnbN6FY0jaNnqZOMmB73R+5IiyYAw8yBj7L54ER7HB3fOSE5OFiQiE2iXWxeXKvg6fIP4LtVppHEdJA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/sonner/-/sonner-1.7.4.tgz", + "integrity": "sha512-DIS8z4PfJRbIyfVFDVnK9rO3eYDtse4Omcm6bt0oEr5/jtLgysmjuBl1frJ9E/EQZrFmKx2A8m/s5s9CRXIzhw==", "license": "MIT", "peerDependencies": { - "react": "^18.0.0", - "react-dom": "^18.0.0" + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc", + "react-dom": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "node_modules/source-map": { @@ -10684,37 +10057,28 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/string-width-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -10726,8 +10090,7 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", @@ -10739,11 +10102,15 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } @@ -10783,6 +10150,26 @@ "node": ">=16 || 14 >=14.17" } }, + "node_modules/sucrase/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sumchecker": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", @@ -10822,9 +10209,9 @@ } }, "node_modules/tailwind-merge": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.4.tgz", - "integrity": "sha512-0q8cfZHMu9nuYP/b5Shb7Y7Sh1B7Nnl5GqNr1U+n2p6+mybvRtayrQ+0042Z5byvTA8ihjlP8Odo8/VnHbZu4Q==", + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", "license": "MIT", "funding": { "type": "github", @@ -10969,29 +10356,6 @@ "node": ">= 10.0.0" } }, - "node_modules/temp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/temp/node_modules/mkdirp": { "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", @@ -11021,13 +10385,6 @@ "rimraf": "bin.js" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "license": "MIT" - }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", @@ -11127,19 +10484,6 @@ "utf8-byte-length": "^1.0.1" } }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "typescript": ">=4.2.0" - } - }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -11147,9 +10491,9 @@ "license": "Apache-2.0" }, "node_modules/tslib": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.0.tgz", - "integrity": "sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/type-check": { @@ -11180,9 +10524,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", - "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", + "version": "5.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz", + "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", "bin": { @@ -11194,15 +10538,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.11.0.tgz", - "integrity": "sha512-cBRGnW3FSlxaYwU8KfAewxFK5uzeOAp0l2KebIlPDOT5olVi65KDG/yjBooPBG0kGW/HLkoz1c/iuBFehcS3IA==", + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.0.tgz", + "integrity": "sha512-6+ZrB6y2bT2DX3K+Qd9vn7OFOJR+xSLDj+Aw/N3zBwUt27uTw2sw2TE2+UcY1RiyBZkaGbTkVg9SSdPNUG6aUw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.11.0", - "@typescript-eslint/parser": "8.11.0", - "@typescript-eslint/utils": "8.11.0" + "@typescript-eslint/eslint-plugin": "8.46.0", + "@typescript-eslint/parser": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/utils": "8.46.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11211,83 +10556,252 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.0.tgz", + "integrity": "sha512-hA8gxBq4ukonVXPy0OKhiaUh/68D0E88GSmtC1iAEnGaieuDi38LhS7jdCHRLi6ErJBNDGCzvh5EnzdPwUc0DA==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/type-utils": "8.46.0", + "@typescript-eslint/utils": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.46.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" + } }, - "node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/parser": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.0.tgz", + "integrity": "sha512-n1H6IcDhmmUEG7TNVSspGmiHHutt7iVKtZwRppD7e04wha5MrkV1h3pti9xQLcCMt6YWsncpoT0HMjkH1FNwWQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "unique-slug": "^3.0.0" + "@typescript-eslint/scope-manager": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/typescript-estree": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.0.tgz", + "integrity": "sha512-lWETPa9XGcBes4jqAMYD9fW0j4n6hrPtTJwWDmtqgFO/4HF4jmdH/Q6wggTw5qIT5TXjKzbt7GsZUBnWoO3dqw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.0.tgz", + "integrity": "sha512-bHGGJyVjSE4dJJIO5yyEWt/cHyNwga/zXGJbJJ8TiO01aVREK6gCTu3L+5wrkb1FbDkQ+TKjMNe9R/QQQP9+rA==", "dev": true, "license": "MIT", "engines": { - "node": ">= 4.0.0" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.0.tgz", + "integrity": "sha512-ekDCUfVpAKWJbRfm8T1YRrCot1KFxZn21oV76v5Fj4tr7ELyk84OS+ouvYdcDAwZL89WpEkEj2DKQ+qg//+ucg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "license": "MIT", "dependencies": { - "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "@typescript-eslint/project-service": "8.46.0", + "@typescript-eslint/tsconfig-utils": "8.46.0", + "@typescript-eslint/types": "8.46.0", + "@typescript-eslint/visitor-keys": "8.46.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" }, - "bin": { - "update-browserslist-db": "cli.js" + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, - "peerDependencies": { + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" + } + }, + "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.0.tgz", + "integrity": "sha512-FrvMpAK+hTbFy7vH5j1+tMYHMSKLE6RzluFJlkFNKD0p9YsUT75JlBSmr5so3QRzvMwU5/bIEdeNrxm8du8l3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.46.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/typescript-eslint/node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/typescript-eslint/node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { "browserslist": ">= 4.21.0" } }, @@ -11302,9 +10816,9 @@ } }, "node_modules/use-callback-ref": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", - "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" @@ -11313,8 +10827,30 @@ "node": ">=10" }, "peerDependencies": { - "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "license": "MIT", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -11322,150 +10858,567 @@ } } }, - "node_modules/use-sidecar": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", - "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "node_modules/use-sync-external-store": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", + "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" + }, + "node_modules/vaul": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz", + "integrity": "sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-dialog": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/victory-vendor": { + "version": "36.9.2", + "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", + "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", + "license": "MIT AND ISC", + "dependencies": { + "@types/d3-array": "^3.0.3", + "@types/d3-ease": "^3.0.0", + "@types/d3-interpolate": "^3.0.1", + "@types/d3-scale": "^4.0.2", + "@types/d3-shape": "^3.1.0", + "@types/d3-time": "^3.0.0", + "@types/d3-timer": "^3.0.0", + "d3-array": "^3.1.6", + "d3-ease": "^3.0.1", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-shape": "^3.1.0", + "d3-time": "^3.0.0", + "d3-timer": "^3.0.1" + } + }, + "node_modules/vite": { + "version": "5.4.20", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz", + "integrity": "sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/vite/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=12" } }, - "node_modules/utf8-byte-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "node_modules/vite/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "(WTFPL OR MIT)" - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "license": "MIT" - }, - "node_modules/vaul": { - "version": "0.9.9", - "resolved": "https://registry.npmjs.org/vaul/-/vaul-0.9.9.tgz", - "integrity": "sha512-7afKg48srluhZwIkaU+lgGtFCUsYBSGOl8vcc8N/M3YQlZFlynHD15AE+pwrYdc826o7nrIND4lL9Y6b9WWZZQ==", "license": "MIT", - "dependencies": { - "@radix-ui/react-dialog": "^1.1.1" - }, - "peerDependencies": { - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/verror": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", - "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "node_modules/vite/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", "optional": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - }, + "os": [ + "win32" + ], "engines": { - "node": ">=0.6.0" + "node": ">=12" } }, - "node_modules/victory-vendor": { - "version": "36.9.2", - "resolved": "https://registry.npmjs.org/victory-vendor/-/victory-vendor-36.9.2.tgz", - "integrity": "sha512-PnpQQMuxlwYdocC8fIJqVXvkeViHYzotI+NJrCuav0ZYFoq912ZHBk3mCeuj+5/VpodOjPe1z0Fk2ihgzlXqjQ==", - "license": "MIT AND ISC", - "dependencies": { - "@types/d3-array": "^3.0.3", - "@types/d3-ease": "^3.0.0", - "@types/d3-interpolate": "^3.0.1", - "@types/d3-scale": "^4.0.2", - "@types/d3-shape": "^3.1.0", - "@types/d3-time": "^3.0.0", - "@types/d3-timer": "^3.0.0", - "d3-array": "^3.1.6", - "d3-ease": "^3.0.1", - "d3-interpolate": "^3.0.1", - "d3-scale": "^4.0.2", - "d3-shape": "^3.1.0", - "d3-time": "^3.0.0", - "d3-timer": "^3.0.1" + "node_modules/vite/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" } }, - "node_modules/vite": { - "version": "5.4.10", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", - "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", + "node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "esbuild": "^0.21.3", - "postcss": "^8.4.43", - "rollup": "^4.20.0" - }, "bin": { - "vite": "bin/vite.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" + "node": ">=12" }, "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" } }, "node_modules/wait-on": { @@ -11558,15 +11511,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -11587,22 +11531,22 @@ "node": ">=8" } }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "license": "MIT", "engines": { "node": ">=12" @@ -11611,6 +11555,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -11646,15 +11605,15 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.0.tgz", - "integrity": "sha512-a6ae//JvKDEra2kdi1qzCyrJW/WZCgFi8ydDV+eXExl95t+5R+ijnqHJbz9tmMh8FUjx3iv2fCQ4dclAQlO2UQ==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.1.tgz", + "integrity": "sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==", "license": "ISC", "bin": { "yaml": "bin.mjs" }, "engines": { - "node": ">= 14" + "node": ">= 14.6" } }, "node_modules/yargs": { @@ -11686,16 +11645,6 @@ "node": ">=12" } }, - "node_modules/yargs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/yargs/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -11718,19 +11667,6 @@ "node": ">=8" } }, - "node_modules/yargs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", @@ -11756,9 +11692,9 @@ } }, "node_modules/zod": { - "version": "3.23.8", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", - "integrity": "sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==", + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "license": "MIT", "funding": { "url": "https://github.com/sponsors/colinhacks" diff --git a/Front-End/webpr/package.json b/frontend/web/package.json similarity index 73% rename from Front-End/webpr/package.json rename to frontend/web/package.json index 6bfecd05c..31bc583e3 100644 --- a/Front-End/webpr/package.json +++ b/frontend/web/package.json @@ -1,22 +1,21 @@ { - "name": "vite_react_shadcn_ts", + "name": "chatkit-frontend", + "version": "0.1.0", "private": true, - "version": "0.0.0", "type": "module", - "main": "electron/main.cjs", "scripts": { - "dev:web": "vite", - "dev:electron": "cross-env NODE_ENV=development electron .", - "dev": "concurrently -k -n web,electron -c cyan,magenta \"npm run dev:web\" \"wait-on http://localhost:4343 && npm run dev:electron\"", - "build:web": "vite build", - "build:web:dev": "vite build --mode development", - "build:electron": "electron-builder --publish never", - "dist": "npm run build:web && npm run build:electron", - "lint": "eslint .", - "preview": "vite preview" + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "lint": "eslint . --ext ts,tsx" + }, + "engines": { + "node": ">=18.18", + "npm": ">=9" }, "dependencies": { "@hookform/resolvers": "^3.9.0", + "@openai/chatkit-react": "^0", "@radix-ui/react-accordion": "^1.2.0", "@radix-ui/react-alert-dialog": "^1.1.1", "@radix-ui/react-aspect-ratio": "^1.1.0", @@ -45,7 +44,7 @@ "@radix-ui/react-toggle-group": "^1.1.0", "@radix-ui/react-tooltip": "^1.1.4", "@stripe/stripe-js": "^7.9.0", - "@tanstack/react-query": "^5.56.2", + "@tanstack/react-query": "^5.90.2", "axios": "^1.12.2", "class-variance-authority": "^0.7.1", "clsx": "^2.1.1", @@ -73,7 +72,7 @@ "devDependencies": { "@eslint/js": "^9.9.0", "@tailwindcss/typography": "^0.5.15", - "@types/node": "^22.5.5", + "@types/node": "^22.18.8", "@types/react": "^18.3.25", "@types/react-dom": "^18.3.0", "@vitejs/plugin-react-swc": "^3.5.0", @@ -93,25 +92,5 @@ "typescript-eslint": "^8.0.1", "vite": "^5.4.1", "wait-on": "^9.0.1" - }, - "build": { - "appId": "com.seuapp.electron", - "productName": "ViteReactElectron", - "files": [ - "dist/**/*", - "electron/**/*" - ], - "directories": { - "buildResources": "build" - }, - "win": { - "target": "nsis" - }, - "mac": { - "target": "dmg" - }, - "linux": { - "target": "AppImage" - } } } diff --git a/Front-End/webpr/postcss.config.js b/frontend/web/postcss.config.cjs similarity index 73% rename from Front-End/webpr/postcss.config.js rename to frontend/web/postcss.config.cjs index 2e7af2b7f..12a703d90 100644 --- a/Front-End/webpr/postcss.config.js +++ b/frontend/web/postcss.config.cjs @@ -1,6 +1,6 @@ -export default { +module.exports = { plugins: { tailwindcss: {}, autoprefixer: {}, }, -} +}; diff --git a/Front-End/webpr/src/App.tsx b/frontend/web/src/App.tsx similarity index 77% rename from Front-End/webpr/src/App.tsx rename to frontend/web/src/App.tsx index e84cbaa63..cf0103bd9 100644 --- a/Front-End/webpr/src/App.tsx +++ b/frontend/web/src/App.tsx @@ -1,7 +1,7 @@ -import { Toaster } from "@/components/ui/toaster"; -import { Toaster as Sonner } from "@/components/ui/sonner"; -import { TooltipProvider } from "@/components/ui/tooltip"; +import { Toaster } from "./components/ui/toaster"; +import { Toaster as Sonner } from "./components/ui/sonner"; +import { TooltipProvider } from "./components/ui/tooltip"; import { QueryClient, QueryClientProvider } from "@tanstack/react-query"; import { BrowserRouter, Routes, Route, Navigate } from "react-router-dom"; import Layout from "./components/layout"; @@ -11,7 +11,6 @@ import Logs from "./pages/Logs"; import Controls from "./pages/Controls"; import Settings from "./pages/Settings"; import NotFound from "./pages/NotFound"; -import Login from "./pages/Login"; import Workflows from "./pages/Workflows"; import MyAccount from "./pages/MyAccount"; import BillingPage from "./pages/Billing"; @@ -23,16 +22,27 @@ import CheckoutSuccess from "./pages/CheckoutSuccess"; import CheckoutError from "./pages/CheckoutError"; import CommitMessages from "./pages/CommitMessages"; +import AgentTasks from "./pages/AgentTasks"; - +import Chat from "./pages/Chat"; +import Login from "./pages/Login"; import { AuthProvider, useAuth } from "./contexts/AuthContext"; -import ProtectedRoute from "./components/ProtectedRoute"; +import type { ColorScheme } from "./hooks/useColorScheme"; +import { useColorScheme } from "./hooks/useColorScheme"; +import { useCallback } from "react"; const queryClient = new QueryClient(); const AppRoutes = () => { const { isAuthenticated } = useAuth(); + const { scheme, setScheme } = useColorScheme(); + const handleThemeChange = useCallback( + (value: "light" | "dark") => { + setScheme(value); + }, + [setScheme] + ); return ( @@ -40,6 +50,9 @@ const AppRoutes = () => { } /> + } /> + + } /> } /> } /> } /> @@ -52,19 +65,23 @@ const AppRoutes = () => { } /> } /> + + ) : ( - + } /> } /> + } /> } /> } /> } /> + )} diff --git a/Front-End/webpr/src/assets/hero-image.jpg b/frontend/web/src/assets/hero-image.jpg similarity index 100% rename from Front-End/webpr/src/assets/hero-image.jpg rename to frontend/web/src/assets/hero-image.jpg diff --git a/Front-End/webpr/src/assets/logo.png b/frontend/web/src/assets/logo.png similarity index 100% rename from Front-End/webpr/src/assets/logo.png rename to frontend/web/src/assets/logo.png diff --git a/frontend/web/src/components/ChatKitPanel.tsx b/frontend/web/src/components/ChatKitPanel.tsx new file mode 100644 index 000000000..ed22b95b9 --- /dev/null +++ b/frontend/web/src/components/ChatKitPanel.tsx @@ -0,0 +1,191 @@ +import { useRef } from "react"; +import { ChatKit, useChatKit } from "@openai/chatkit-react"; +import { + CHATKIT_API_URL, + CHATKIT_API_DOMAIN_KEY, + STARTER_PROMPTS, + PLACEHOLDER_INPUT, + GREETING, +} from "../lib/config"; +import type { Actions } from "../hooks/useActions"; +import type { ColorScheme } from "../hooks/useColorScheme"; + + +// Configurações padrão para attachments — ajuste conforme necessário +const DEFAULT_MAX_SIZE = 100 * 1024 * 1024; // 100MB +const DEFAULT_MAX_COUNT = 10; +const DEFAULT_ACCEPT = { +"image/*": [".png", ".jpg", ".jpeg", ".gif", ".webp"], +"video/*": [".mp4", ".mov", ".webm"], +"application/pdf": [".pdf"], +"text/plain": [".txt"], +"application/zip": [".zip"], +}; + + +type ChatKitPanelProps = { + theme: ColorScheme; + onWidgetAction: (action: Actions) => Promise; + onResponseEnd: () => void; + onThemeRequest: (scheme: ColorScheme) => void; +}; + +export function ChatKitPanel({ + theme, + onWidgetAction, + onResponseEnd, + onThemeRequest, +}: ChatKitPanelProps) { + const processedFacts = useRef(new Set()); + function validateAttachments(files?: FileList | null) { + const errors: string[] = []; + if (!files || files.length === 0) return { ok: true, errors }; + + + if (files.length > DEFAULT_MAX_COUNT) { + errors.push(`Máximo de anexos permitido: ${DEFAULT_MAX_COUNT}`); + } + + + for (let i = 0; i < files.length; i++) { + const f = files[i]; + if (f.size > DEFAULT_MAX_SIZE) { + errors.push(`${f.name}: excede o tamanho máximo de ${Math.round( + DEFAULT_MAX_SIZE / (1024 * 1024) + )}MB`); + } + // validação de tipo com base na extensão (aceita ou não) + // nota: checagem de MIME nem sempre é confiável do lado do cliente + const ext = (f.name.match(/\.[0-9a-z]+$/i)?.[0] || "").toLowerCase(); + const allowedExts = Object.values(DEFAULT_ACCEPT).flat(); + if (allowedExts.length > 0 && !allowedExts.includes(ext)) { + errors.push(`${f.name}: tipo não permitido`); + } + } + + + return { ok: errors.length === 0, errors }; + } + const chatkit = useChatKit({ + api: { + url: CHATKIT_API_URL, + domainKey: CHATKIT_API_DOMAIN_KEY, + // uploadStrategy: { + // type: "direct", // ou "hosted" dependendo do seu fluxo + // uploadUrl: "https://meu-backend.example.com/chatkit/upload", + // }, + }, + theme: { + colorScheme: theme, + color: { + grayscale: { + hue: 220, + tint: 6, + shade: theme === "dark" ? -1 : -4, + }, + accent: { + primary: theme === "dark" ? "#f1f5f9" : "#0f172a", + level: 1, + }, + }, + radius: "round", + }, + startScreen: { + greeting: GREETING, + prompts: STARTER_PROMPTS, + }, + + composer: { + placeholder: PLACEHOLDER_INPUT, + // attachments: { + // enabled: true, + // maxSize: DEFAULT_MAX_SIZE, + // maxCount: DEFAULT_MAX_COUNT, + // accept: DEFAULT_ACCEPT, + // }, + tools: [ + { + id: 'chart_generator', + label: 'Gere Graficos', + shortLabel: 'Graficos', + placeholderOverride: 'Crie Graficos Com IA', + icon: 'chart', + pinned: true, + } + ], + models: [ + { + id: 'Chat', + label: 'Chat', + description: 'Apenas Chat' + }, + { + id: 'documentation', + label: 'Documentation', + description: 'Documentar apis e codigos' + } + // ...and 2 more models + ], + }, + threadItemActions: { + feedback: false, + }, + + onClientTool: async (invocation) => { + console.log(`onClientTool invocation ${invocation}`); + if (invocation.name === "chart_generator") { + const id = String(invocation.params.fact_id ?? ""); + console.log(`onClientTool chart_generator ${id}`); + const requested = "light" + console.debug("[ChatKitPanel] switch_theme teste", requested); + onThemeRequest(requested); + return { success: false }; + } + if (invocation.name === "switch_theme") { + const requested = invocation.params.theme; + if (requested === "light" || requested === "dark") { + if (import.meta.env.DEV) { + console.debug("[ChatKitPanel] switch_theme", requested); + } + onThemeRequest(requested); + return { success: true }; + } + return { success: false }; + } + + if (invocation.name === "record_fact") { + const id = String(invocation.params.fact_id ?? ""); + const text = String(invocation.params.fact_text ?? ""); + if (!id || processedFacts.current.has(id)) { + return { success: true }; + } + processedFacts.current.add(id); + void onWidgetAction({ + type: "save", + factId: id, + factText: text.replace(/\s+/g, " ").trim(), + }); + return { success: true }; + } + + return { success: false }; + }, + onResponseEnd: () => { + onResponseEnd(); + }, + onThreadChange: () => { + processedFacts.current.clear(); + }, + onError: ({ error }) => { + // ChatKit handles displaying the error to the user + console.error("ChatKit error", error); + }, + }); + console.log(chatkit.control); + + return ( +
    + +
    + ); +} diff --git a/frontend/web/src/components/FactCard.tsx b/frontend/web/src/components/FactCard.tsx new file mode 100644 index 000000000..a12c5d295 --- /dev/null +++ b/frontend/web/src/components/FactCard.tsx @@ -0,0 +1,12 @@ +import { ChevronRight } from "lucide-react"; + +import type { FactRecord } from "../lib/facts"; + +export function FactCard({ fact }: { fact: FactRecord }) { + return ( +
  • + + {fact.text} +
  • + ); +} diff --git a/Front-End/webpr/src/components/ProtectedRoute.tsx b/frontend/web/src/components/ProtectedRoute.tsx similarity index 100% rename from Front-End/webpr/src/components/ProtectedRoute.tsx rename to frontend/web/src/components/ProtectedRoute.tsx diff --git a/frontend/web/src/components/ThemeToggle.tsx b/frontend/web/src/components/ThemeToggle.tsx new file mode 100644 index 000000000..5b3b2bdf3 --- /dev/null +++ b/frontend/web/src/components/ThemeToggle.tsx @@ -0,0 +1,46 @@ +import clsx from "clsx"; +import type { ColorScheme } from "../hooks/useColorScheme"; +import { Moon, Sun } from "lucide-react"; + +type ThemeToggleProps = { + value: ColorScheme; + onChange: (scheme: ColorScheme) => void; +}; + +const buttonBase = + "inline-flex h-9 w-9 items-center justify-center rounded-full text-[0.7rem] transition-colors duration-200"; + +export function ThemeToggle({ value, onChange }: ThemeToggleProps) { + return ( +
    + + +
    + ); +} diff --git a/Front-End/webpr/src/components/app-sidebar.tsx b/frontend/web/src/components/app-sidebar.tsx similarity index 92% rename from Front-End/webpr/src/components/app-sidebar.tsx rename to frontend/web/src/components/app-sidebar.tsx index 832e60d5a..bc9887265 100644 --- a/Front-End/webpr/src/components/app-sidebar.tsx +++ b/frontend/web/src/components/app-sidebar.tsx @@ -23,11 +23,11 @@ import { SidebarMenuItem, SidebarHeader, useSidebar, -} from "@/components/ui/sidebar" +} from "../components/ui/sidebar" import { LogOut } from "lucide-react" import { useNavigate } from "react-router-dom" -import { useAuth } from '@/contexts/AuthContext'; +import { useAuth } from '../contexts/AuthContext'; const navigationItems = [ { @@ -36,6 +36,12 @@ const navigationItems = [ icon: Activity, description: "Visão geral do sistema" }, + { + title: "Chat", + url: "/chat", + icon: GitPullRequest, + description: "Controle seus agentes conversando" + }, { title: "Pull Requests", url: "/prs", @@ -48,7 +54,12 @@ const navigationItems = [ icon: GitPullRequest, description: "Monitoramento de Commits" }, - + { + title: "Tarefas", + url: "/tasks", + icon: GitPullRequest, + description: "Monitoramento de Tarefas dos agentes" + }, { title: "Workflows", url: "/workflows", @@ -128,8 +139,8 @@ export function AppSidebar() { {!isCollapsed && (
    -

    PR AI

    -

    Equipe de DevOps

    +

    Software AI

    +

    Governe ou Crie Softwares End-to-End

    )}
    diff --git a/Front-End/webpr/src/components/cta-section.tsx b/frontend/web/src/components/cta-section.tsx similarity index 98% rename from Front-End/webpr/src/components/cta-section.tsx rename to frontend/web/src/components/cta-section.tsx index 67c2db687..cc69648ea 100644 --- a/Front-End/webpr/src/components/cta-section.tsx +++ b/frontend/web/src/components/cta-section.tsx @@ -1,5 +1,5 @@ import { ArrowRight, Github, Rocket } from "lucide-react"; -import { project } from "@/constants/landingpage.ts"; +import { project } from "@/constants/landingpage"; export const CTASection = () => { const { links, cta } = project[0]; diff --git a/Front-End/webpr/src/components/features-section.tsx b/frontend/web/src/components/features-section.tsx similarity index 100% rename from Front-End/webpr/src/components/features-section.tsx rename to frontend/web/src/components/features-section.tsx diff --git a/Front-End/webpr/src/components/footer.tsx b/frontend/web/src/components/footer.tsx similarity index 98% rename from Front-End/webpr/src/components/footer.tsx rename to frontend/web/src/components/footer.tsx index 4b12be640..929b9b8bb 100644 --- a/Front-End/webpr/src/components/footer.tsx +++ b/frontend/web/src/components/footer.tsx @@ -1,5 +1,5 @@ import { Github, Mail, ExternalLink } from "lucide-react"; -import { project } from "@/constants/landingpage.ts"; +import { project } from "@/constants/landingpage"; export const Footer = () => { const github = project[0].links.github diff --git a/Front-End/webpr/src/components/header.tsx b/frontend/web/src/components/header.tsx similarity index 98% rename from Front-End/webpr/src/components/header.tsx rename to frontend/web/src/components/header.tsx index d84127be6..05e99f7d9 100644 --- a/Front-End/webpr/src/components/header.tsx +++ b/frontend/web/src/components/header.tsx @@ -1,6 +1,6 @@ import { useState } from "react"; import { Menu, X, Github } from "lucide-react"; -import { project } from "@/constants/landingpage.ts"; +import { project } from "@/constants/landingpage"; export const Header = () => { const [isMenuOpen, setIsMenuOpen] = useState(false); diff --git a/Front-End/webpr/src/components/hero-section.tsx b/frontend/web/src/components/hero-section.tsx similarity index 98% rename from Front-End/webpr/src/components/hero-section.tsx rename to frontend/web/src/components/hero-section.tsx index 134250854..01193aa9b 100644 --- a/Front-End/webpr/src/components/hero-section.tsx +++ b/frontend/web/src/components/hero-section.tsx @@ -1,6 +1,6 @@ import { ArrowRight, Github, Zap } from "lucide-react"; import heroImage from "@/assets/hero-image.jpg"; -import { project } from "@/constants/landingpage.ts"; +import { project } from "@/constants/landingpage"; export const HeroSection = () => { const { github, app } = project[0].links; diff --git a/frontend/web/src/components/layout.tsx b/frontend/web/src/components/layout.tsx new file mode 100644 index 000000000..437f74cc3 --- /dev/null +++ b/frontend/web/src/components/layout.tsx @@ -0,0 +1,36 @@ +import { ReactNode } from "react" +import { SidebarProvider, SidebarTrigger, SidebarInset } from "../components/ui/sidebar" +import { AppSidebar } from "../components/app-sidebar" + +interface LayoutProps { + children: ReactNode +} + +const Layout = ({ children }: LayoutProps) => { + return ( + +
    + + + {/* Header with sidebar trigger */} +
    + +
    +
    +
    +
    + Sistema Online +
    +
    +
    + {/* Main content */} +
    + {children} +
    +
    +
    +
    + ) +} + +export default Layout \ No newline at end of file diff --git a/Front-End/webpr/src/components/pricing-section.tsx b/frontend/web/src/components/pricing-section.tsx similarity index 99% rename from Front-End/webpr/src/components/pricing-section.tsx rename to frontend/web/src/components/pricing-section.tsx index 681ec39a4..50232fc18 100644 --- a/Front-End/webpr/src/components/pricing-section.tsx +++ b/frontend/web/src/components/pricing-section.tsx @@ -1,7 +1,6 @@ // Front-End\src\components\pricing-section.tsx import { Check, Star, Zap } from "lucide-react"; import { useEffect, useState } from "react"; -import { project } from "@/constants/landingpage.ts"; export const PricingSection = () => { const [isAnnual, setIsAnnual] = useState(false); diff --git a/Front-End/webpr/src/components/ui/accordion.tsx b/frontend/web/src/components/ui/accordion.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/accordion.tsx rename to frontend/web/src/components/ui/accordion.tsx diff --git a/Front-End/webpr/src/components/ui/alert-dialog.tsx b/frontend/web/src/components/ui/alert-dialog.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/alert-dialog.tsx rename to frontend/web/src/components/ui/alert-dialog.tsx diff --git a/Front-End/webpr/src/components/ui/alert.tsx b/frontend/web/src/components/ui/alert.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/alert.tsx rename to frontend/web/src/components/ui/alert.tsx diff --git a/Front-End/webpr/src/components/ui/aspect-ratio.tsx b/frontend/web/src/components/ui/aspect-ratio.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/aspect-ratio.tsx rename to frontend/web/src/components/ui/aspect-ratio.tsx diff --git a/Front-End/webpr/src/components/ui/avatar.tsx b/frontend/web/src/components/ui/avatar.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/avatar.tsx rename to frontend/web/src/components/ui/avatar.tsx diff --git a/Front-End/webpr/src/components/ui/badge.tsx b/frontend/web/src/components/ui/badge.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/badge.tsx rename to frontend/web/src/components/ui/badge.tsx diff --git a/Front-End/webpr/src/components/ui/breadcrumb.tsx b/frontend/web/src/components/ui/breadcrumb.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/breadcrumb.tsx rename to frontend/web/src/components/ui/breadcrumb.tsx diff --git a/Front-End/webpr/src/components/ui/button.tsx b/frontend/web/src/components/ui/button.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/button.tsx rename to frontend/web/src/components/ui/button.tsx diff --git a/Front-End/webpr/src/components/ui/calendar.tsx b/frontend/web/src/components/ui/calendar.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/calendar.tsx rename to frontend/web/src/components/ui/calendar.tsx diff --git a/Front-End/webpr/src/components/ui/card.tsx b/frontend/web/src/components/ui/card.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/card.tsx rename to frontend/web/src/components/ui/card.tsx diff --git a/Front-End/webpr/src/components/ui/carousel.tsx b/frontend/web/src/components/ui/carousel.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/carousel.tsx rename to frontend/web/src/components/ui/carousel.tsx diff --git a/Front-End/webpr/src/components/ui/chart.tsx b/frontend/web/src/components/ui/chart.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/chart.tsx rename to frontend/web/src/components/ui/chart.tsx diff --git a/Front-End/webpr/src/components/ui/checkbox.tsx b/frontend/web/src/components/ui/checkbox.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/checkbox.tsx rename to frontend/web/src/components/ui/checkbox.tsx diff --git a/Front-End/webpr/src/components/ui/collapsible.tsx b/frontend/web/src/components/ui/collapsible.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/collapsible.tsx rename to frontend/web/src/components/ui/collapsible.tsx diff --git a/Front-End/webpr/src/components/ui/command.tsx b/frontend/web/src/components/ui/command.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/command.tsx rename to frontend/web/src/components/ui/command.tsx diff --git a/Front-End/webpr/src/components/ui/context-menu.tsx b/frontend/web/src/components/ui/context-menu.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/context-menu.tsx rename to frontend/web/src/components/ui/context-menu.tsx diff --git a/Front-End/webpr/src/components/ui/dialog.tsx b/frontend/web/src/components/ui/dialog.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/dialog.tsx rename to frontend/web/src/components/ui/dialog.tsx diff --git a/Front-End/webpr/src/components/ui/drawer.tsx b/frontend/web/src/components/ui/drawer.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/drawer.tsx rename to frontend/web/src/components/ui/drawer.tsx diff --git a/Front-End/webpr/src/components/ui/dropdown-menu.tsx b/frontend/web/src/components/ui/dropdown-menu.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/dropdown-menu.tsx rename to frontend/web/src/components/ui/dropdown-menu.tsx diff --git a/Front-End/webpr/src/components/ui/form.tsx b/frontend/web/src/components/ui/form.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/form.tsx rename to frontend/web/src/components/ui/form.tsx diff --git a/Front-End/webpr/src/components/ui/hover-card.tsx b/frontend/web/src/components/ui/hover-card.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/hover-card.tsx rename to frontend/web/src/components/ui/hover-card.tsx diff --git a/Front-End/webpr/src/components/ui/input-otp.tsx b/frontend/web/src/components/ui/input-otp.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/input-otp.tsx rename to frontend/web/src/components/ui/input-otp.tsx diff --git a/Front-End/webpr/src/components/ui/input.tsx b/frontend/web/src/components/ui/input.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/input.tsx rename to frontend/web/src/components/ui/input.tsx diff --git a/Front-End/webpr/src/components/ui/label.tsx b/frontend/web/src/components/ui/label.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/label.tsx rename to frontend/web/src/components/ui/label.tsx diff --git a/Front-End/webpr/src/components/ui/menubar.tsx b/frontend/web/src/components/ui/menubar.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/menubar.tsx rename to frontend/web/src/components/ui/menubar.tsx diff --git a/Front-End/webpr/src/components/ui/navigation-menu.tsx b/frontend/web/src/components/ui/navigation-menu.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/navigation-menu.tsx rename to frontend/web/src/components/ui/navigation-menu.tsx diff --git a/Front-End/webpr/src/components/ui/pagination.tsx b/frontend/web/src/components/ui/pagination.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/pagination.tsx rename to frontend/web/src/components/ui/pagination.tsx diff --git a/Front-End/webpr/src/components/ui/popover.tsx b/frontend/web/src/components/ui/popover.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/popover.tsx rename to frontend/web/src/components/ui/popover.tsx diff --git a/Front-End/webpr/src/components/ui/progress.tsx b/frontend/web/src/components/ui/progress.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/progress.tsx rename to frontend/web/src/components/ui/progress.tsx diff --git a/Front-End/webpr/src/components/ui/radio-group.tsx b/frontend/web/src/components/ui/radio-group.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/radio-group.tsx rename to frontend/web/src/components/ui/radio-group.tsx diff --git a/Front-End/webpr/src/components/ui/resizable.tsx b/frontend/web/src/components/ui/resizable.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/resizable.tsx rename to frontend/web/src/components/ui/resizable.tsx diff --git a/Front-End/webpr/src/components/ui/scroll-area.tsx b/frontend/web/src/components/ui/scroll-area.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/scroll-area.tsx rename to frontend/web/src/components/ui/scroll-area.tsx diff --git a/Front-End/webpr/src/components/ui/select.tsx b/frontend/web/src/components/ui/select.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/select.tsx rename to frontend/web/src/components/ui/select.tsx diff --git a/Front-End/webpr/src/components/ui/separator.tsx b/frontend/web/src/components/ui/separator.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/separator.tsx rename to frontend/web/src/components/ui/separator.tsx diff --git a/Front-End/webpr/src/components/ui/sheet.tsx b/frontend/web/src/components/ui/sheet.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/sheet.tsx rename to frontend/web/src/components/ui/sheet.tsx diff --git a/Front-End/webpr/src/components/ui/sidebar.tsx b/frontend/web/src/components/ui/sidebar.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/sidebar.tsx rename to frontend/web/src/components/ui/sidebar.tsx diff --git a/Front-End/webpr/src/components/ui/skeleton.tsx b/frontend/web/src/components/ui/skeleton.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/skeleton.tsx rename to frontend/web/src/components/ui/skeleton.tsx diff --git a/Front-End/webpr/src/components/ui/slider.tsx b/frontend/web/src/components/ui/slider.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/slider.tsx rename to frontend/web/src/components/ui/slider.tsx diff --git a/Front-End/webpr/src/components/ui/sonner.tsx b/frontend/web/src/components/ui/sonner.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/sonner.tsx rename to frontend/web/src/components/ui/sonner.tsx diff --git a/Front-End/webpr/src/components/ui/switch.tsx b/frontend/web/src/components/ui/switch.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/switch.tsx rename to frontend/web/src/components/ui/switch.tsx diff --git a/Front-End/webpr/src/components/ui/table.tsx b/frontend/web/src/components/ui/table.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/table.tsx rename to frontend/web/src/components/ui/table.tsx diff --git a/Front-End/webpr/src/components/ui/tabs.tsx b/frontend/web/src/components/ui/tabs.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/tabs.tsx rename to frontend/web/src/components/ui/tabs.tsx diff --git a/Front-End/webpr/src/components/ui/textarea.tsx b/frontend/web/src/components/ui/textarea.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/textarea.tsx rename to frontend/web/src/components/ui/textarea.tsx diff --git a/Front-End/webpr/src/components/ui/toast.tsx b/frontend/web/src/components/ui/toast.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/toast.tsx rename to frontend/web/src/components/ui/toast.tsx diff --git a/Front-End/webpr/src/components/ui/toaster.tsx b/frontend/web/src/components/ui/toaster.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/toaster.tsx rename to frontend/web/src/components/ui/toaster.tsx diff --git a/Front-End/webpr/src/components/ui/toggle-group.tsx b/frontend/web/src/components/ui/toggle-group.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/toggle-group.tsx rename to frontend/web/src/components/ui/toggle-group.tsx diff --git a/Front-End/webpr/src/components/ui/toggle.tsx b/frontend/web/src/components/ui/toggle.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/toggle.tsx rename to frontend/web/src/components/ui/toggle.tsx diff --git a/Front-End/webpr/src/components/ui/tooltip.tsx b/frontend/web/src/components/ui/tooltip.tsx similarity index 100% rename from Front-End/webpr/src/components/ui/tooltip.tsx rename to frontend/web/src/components/ui/tooltip.tsx diff --git a/Front-End/webpr/src/components/ui/use-toast.ts b/frontend/web/src/components/ui/use-toast.ts similarity index 100% rename from Front-End/webpr/src/components/ui/use-toast.ts rename to frontend/web/src/components/ui/use-toast.ts diff --git a/Front-End/webpr/src/constants/landingpage.ts b/frontend/web/src/constants/landingpage.ts similarity index 100% rename from Front-End/webpr/src/constants/landingpage.ts rename to frontend/web/src/constants/landingpage.ts diff --git a/Front-End/webpr/src/contexts/AuthContext.tsx b/frontend/web/src/contexts/AuthContext.tsx similarity index 100% rename from Front-End/webpr/src/contexts/AuthContext.tsx rename to frontend/web/src/contexts/AuthContext.tsx diff --git a/Front-End/webpr/src/hooks/use-mobile.tsx b/frontend/web/src/hooks/use-mobile.tsx similarity index 100% rename from Front-End/webpr/src/hooks/use-mobile.tsx rename to frontend/web/src/hooks/use-mobile.tsx diff --git a/Front-End/webpr/src/hooks/use-toast.ts b/frontend/web/src/hooks/use-toast.ts similarity index 100% rename from Front-End/webpr/src/hooks/use-toast.ts rename to frontend/web/src/hooks/use-toast.ts diff --git a/frontend/web/src/hooks/useActions.ts b/frontend/web/src/hooks/useActions.ts new file mode 100644 index 000000000..68b339bbd --- /dev/null +++ b/frontend/web/src/hooks/useActions.ts @@ -0,0 +1,45 @@ +import { useCallback, useState } from "react"; + +import type { FactRecord } from "../lib/facts"; + +export type Actions = { + type: string; + factText?: string; + factId?: string; +}; + +export function useActions() { + const [facts, setFacts] = useState([]); + const [error] = useState(null); + const loading = false; + + const performAction = useCallback(async (action: Actions) => { + if (action.type === "chart_generator") { + console.log(`performAction chart_generator`); + } + if (action.type === "save") { + setFacts((current) => { + const text = (action.factText ?? "").trim(); + if (!text) { + return current; + } + if (current.some((fact) => fact.id === action.factId)) { + return current; + } + const saved: FactRecord = { + id: action.factId, + text, + status: "saved", + createdAt: new Date().toISOString(), + }; + return [...current, saved]; + }); + } + }, []); + + const refresh = useCallback(() => { + /* no-op: facts are stored in-memory */ + }, []); + + return { facts, loading, error, refresh, performAction }; +} diff --git a/frontend/web/src/hooks/useColorScheme.ts b/frontend/web/src/hooks/useColorScheme.ts new file mode 100644 index 000000000..687692115 --- /dev/null +++ b/frontend/web/src/hooks/useColorScheme.ts @@ -0,0 +1,39 @@ +import { useCallback, useEffect, useState } from "react"; + +import { THEME_STORAGE_KEY } from "@/lib/config"; + +export type ColorScheme = "light" | "dark"; + +function getInitialScheme(): ColorScheme { + if (typeof window === "undefined") { + return "light"; + } + const stored = window.localStorage.getItem(THEME_STORAGE_KEY) as ColorScheme | null; + if (stored === "light" || stored === "dark") { + return stored; + } + return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light"; +} + +export function useColorScheme() { + const [scheme, setScheme] = useState(getInitialScheme); + + useEffect(() => { + if (typeof document === "undefined") return; + const root = document.documentElement; + if (scheme === "dark") { + root.classList.add("dark"); + } else { + root.classList.remove("dark"); + } + window.localStorage.setItem(THEME_STORAGE_KEY, scheme); + }, [scheme]); + + const toggle = useCallback(() => { + setScheme((current) => (current === "dark" ? "light" : "dark")); + }, []); + + const setExplicit = useCallback((value: ColorScheme) => { setScheme(value); }, []); + + return { scheme, toggle, setScheme: setExplicit }; +} diff --git a/Front-End/webpr/src/index.css b/frontend/web/src/index.css similarity index 91% rename from Front-End/webpr/src/index.css rename to frontend/web/src/index.css index bdbeb5a56..083074e72 100644 --- a/Front-End/webpr/src/index.css +++ b/frontend/web/src/index.css @@ -5,7 +5,22 @@ /* AI Frontend Design System - Tech/AI themed with gradients and modern aesthetics */ @layer base { + /* body { + @apply m-0 min-h-screen font-sans bg-surface-light text-slate-900 transition-colors; + } + + .dark body { + @apply bg-surface-dark text-slate-100; + } */ + + a { + color: inherit; + text-decoration: none; + } + :root { + color-scheme: light dark; + /* Core Background & Text */ --background: 240 10% 3.9%; --foreground: 0 0% 98%; @@ -92,7 +107,7 @@ --gradient-hero: linear-gradient(135deg, hsl(0 0% 100%), hsl(240 4.8% 95.9%)); } } - +/* @layer base { * { @apply border-border; @@ -101,4 +116,4 @@ body { @apply bg-background text-foreground; } -} \ No newline at end of file +} */ \ No newline at end of file diff --git a/frontend/web/src/lib/config.ts b/frontend/web/src/lib/config.ts new file mode 100644 index 000000000..aef6405a9 --- /dev/null +++ b/frontend/web/src/lib/config.ts @@ -0,0 +1,44 @@ +import { StartScreenPrompt } from "@openai/chatkit"; + +export const CHATKIT_API_URL = + import.meta.env.VITE_CHATKIT_API_URL ?? "/chatkit"; + +/** + * ChatKit still expects a domain key at runtime. Use any placeholder locally, + * but register your production domain at + * https://platform.openai.com/settings/organization/security/domain-allowlist + * and deploy the real key. + */ +export const CHATKIT_API_DOMAIN_KEY = + import.meta.env.VITE_CHATKIT_API_DOMAIN_KEY ?? "domain_pk_localhost_dev"; + +export const FACTS_API_URL = import.meta.env.VITE_FACTS_API_URL ?? "/facts"; + +export const THEME_STORAGE_KEY = "chatkit-boilerplate-theme"; + +export const GREETING = "Bem vindo Ao SoftwareAI"; + +export const STARTER_PROMPTS: StartScreenPrompt[] = [ + { + label: "Quantos commits eu fiz esse mes?", + prompt: "Quantos commits eu fiz esse mes?", + icon: "circle-question", + }, + { + label: "Quantas tarefas os agentes fizeram hoje?", + prompt: "Quantas tarefas os agentes fizeram hoje?", + icon: "book-open", + }, + { + label: "O que o GCL fez na semana passada?", + prompt: "O que o GCL fez na semana passada?", + icon: "search", + }, + { + label: "Gere um grafico com 10 vendas e 30 ordens no app", + prompt: "Gere um grafico com 10 vendas e 30 ordens no app", + icon: "sparkle", + }, +]; + +export const PLACEHOLDER_INPUT = "Envie para a ia"; diff --git a/frontend/web/src/lib/facts.ts b/frontend/web/src/lib/facts.ts new file mode 100644 index 000000000..342c98759 --- /dev/null +++ b/frontend/web/src/lib/facts.ts @@ -0,0 +1,6 @@ +export type FactRecord = { + id: string; + text: string; + status: string; + createdAt: string; +}; diff --git a/Front-End/webpr/src/lib/utils.ts b/frontend/web/src/lib/utils.ts similarity index 100% rename from Front-End/webpr/src/lib/utils.ts rename to frontend/web/src/lib/utils.ts diff --git a/frontend/web/src/main.tsx b/frontend/web/src/main.tsx new file mode 100644 index 000000000..20df98286 --- /dev/null +++ b/frontend/web/src/main.tsx @@ -0,0 +1,15 @@ +import { StrictMode } from "react"; +import { createRoot } from "react-dom/client"; +import App from "./App"; +import "./index.css"; + +const container = document.getElementById("root"); +if (!container) { + throw new Error("Root element with id 'root' not found"); +} + +createRoot(container).render( + + + +); diff --git a/frontend/web/src/pages/AgentTasks.tsx b/frontend/web/src/pages/AgentTasks.tsx new file mode 100644 index 000000000..2641f4434 --- /dev/null +++ b/frontend/web/src/pages/AgentTasks.tsx @@ -0,0 +1,299 @@ +import { useEffect, useState } from "react" +import { + Card, CardContent, CardHeader, CardTitle, CardDescription +} from "@/components/ui/card" +import { + Table, TableBody, TableCell, TableHead, TableHeader, TableRow +} from "@/components/ui/table" +import { + Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogTrigger +} from "@/components/ui/dialog" +import { + Button +} from "@/components/ui/button" +import { + Badge +} from "@/components/ui/badge" +import { + Input +} from "@/components/ui/input" +import { + ClipboardList, + RefreshCw, + Eye, + Search, + Calendar, + Clock, + CheckCircle, + XCircle, + CalendarClock +} from "lucide-react" + +interface Task { + id: string + content: string + priority: number + status: "pending" | "processing" | "completed" | "error" + createdAt: string + completedAt?: string | null + eta_str?: string | null + estimatedHours: string + commitLanguage: string + result?: string | null +} + +const AgentTasks = () => { + const [tasks, setTasks] = useState([]) + const [selectedTask, setSelectedTask] = useState(null) + const [isLoading, setIsLoading] = useState(true) + const [searchTerm, setSearchTerm] = useState("") + const [showFullContent, setShowFullContent] = useState(false) + const backendUrl = import.meta.env.VITE_BACK_END + const access_token = localStorage.getItem("access_token") + + const fetchTasks = async () => { + if (!access_token) return + try { + setIsLoading(true) + const res = await fetch(`${backendUrl}/api/tasks/list`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'X-API-TOKEN': `${access_token}` + }, + }) + if (!res.ok) throw new Error("Falha ao carregar tarefas") + + const data: Task[] = await res.json() + setTasks(data) + } catch (error) { + console.error("Erro ao buscar tarefas:", error) + } finally { + setIsLoading(false) + } + } + + const fetchTaskDetails = async (taskId: string) => { + if (!access_token) return + try { + const res = await fetch(`${backendUrl}/api/tasks/details/${taskId}`, { + method: 'GET', + headers: { + 'Content-Type': 'application/json', + 'X-API-TOKEN': `${access_token}` + }, + }) + if (!res.ok) throw new Error("Falha ao buscar detalhes da tarefa") + + const data: Task = await res.json() + setSelectedTask(data) + } catch (error) { + console.error("Erro ao buscar detalhes da tarefa:", error) + } + } + + useEffect(() => { + fetchTasks() + }, []) + + const filteredTasks = tasks.filter(task => + task.content.toLowerCase().includes(searchTerm.toLowerCase()) + ) + + const getStatusBadge = (status: string) => { + switch (status) { + case "done": + return ( + + Concluída + + ) + case "failed": + return ( + + Erro + + ) + case "pending": + return ( + + Pendente + + ) + case "running": + return ( + + Processando + + ) + case "sheduled": + return ( + + Agendada + + ) + default: + return Desconhecido + } + } + + const formatDate = (dateString?: string | null) => + dateString ? new Date(dateString).toLocaleString('pt-BR') : "—" + + return ( +
    + {/* Header */} +
    +
    +

    Tarefas dos Agentes

    +

    Monitoramento e histórico de tarefas processadas pela IA

    +
    + +
    + + {/* Search */} + + +
    + + setSearchTerm(e.target.value)} + className="pl-10" + /> +
    +
    +
    + + {/* Tasks Table */} + + + + Tarefas ({filteredTasks.length}) + + Lista das tarefas criadas e processadas + + +
    + + + + ID + Conteúdo + Prioridade + Status + Criada em + Agendada para + Ações + + + + {filteredTasks.length > 0 ? ( + filteredTasks.map(task => ( + + {task.id.slice(0, 8)} + {task.content} + {task.priority} + {getStatusBadge(task.status)} + +
    + {formatDate(task.createdAt)} +
    +
    + +
    + {formatDate(task.eta_str)} +
    +
    + + + + + + + + Tarefa {task.id.slice(0, 8)} + Detalhes completos da tarefa processada + + {selectedTask && selectedTask.id === task.id && ( +
    +
    +
    +

    Informações

    +
    +

    Status: {getStatusBadge(selectedTask.status)}

    +

    Prioridade: {selectedTask.priority}

    +

    Linguagem: {selectedTask.commitLanguage}

    +

    Horas Estimada: {selectedTask.estimatedHours}

    +

    Criada em: {formatDate(selectedTask.createdAt)}

    +

    Agendada para: {formatDate(selectedTask.eta_str)}

    +
    +
    +
    + +
    +

    Conteúdo Original

    +
    +
    +                                      {showFullContent
    +                                        ? selectedTask.content
    +                                        : selectedTask.content.slice(0, 300) + 
    +                                          (selectedTask.content.length > 300 ? "..." : "")
    +                                      }
    +                                    
    + {selectedTask.content.length > 300 && ( + + )} +
    +
    + + {selectedTask.result && ( +
    +

    Resultado do Agente

    +
    +
    +                                        {selectedTask.result}
    +                                      
    +
    +
    + )} +
    + )} +
    +
    +
    +
    + )) + ) : ( + + + {searchTerm ? "Nenhuma tarefa encontrada" : "Nenhuma tarefa registrada ainda"} + + + )} +
    +
    +
    +
    +
    +
    + ) +} + +export default AgentTasks diff --git a/Front-End/webpr/src/pages/Billing.tsx b/frontend/web/src/pages/Billing.tsx similarity index 94% rename from Front-End/webpr/src/pages/Billing.tsx rename to frontend/web/src/pages/Billing.tsx index 58dacdefa..494e3603c 100644 --- a/Front-End/webpr/src/pages/Billing.tsx +++ b/frontend/web/src/pages/Billing.tsx @@ -13,27 +13,6 @@ type AccountData = { remainingTokens: number } -const samplePlans = [ - { - id: 'free', - name: 'Free', - price: 'R$ 0/mês', - features: ['300k tokens / mês', 'Suporte via docs', 'Limitações básicas'] - }, - { - id: 'pro', - name: 'Pro', - price: 'R$ 49/mês', - features: ['1M tokens / mês', 'Suporte por e-mail', 'Renovação automática'] - }, - { - id: 'business', - name: 'Business', - price: 'R$ 249/mês', - features: ['Tokens ilimitados', 'Suporte prioritário', 'Conta multi-usuário'] - } -] - const BillingPage = () => { const [account, setAccount] = useState(null) const [loading, setLoading] = useState(false) @@ -90,7 +69,7 @@ const BillingPage = () => { const plansArray = Object.entries(data.payload).map(([key, value]: any) => ({ id: key.toLowerCase(), name: key, - price: `R$ ${value.price}/mês`, + price: `$ ${value.price}/mês`, features: value.features, paymentLink: value.payment_link })) diff --git a/frontend/web/src/pages/Chat.tsx b/frontend/web/src/pages/Chat.tsx new file mode 100644 index 000000000..7ad60b8f3 --- /dev/null +++ b/frontend/web/src/pages/Chat.tsx @@ -0,0 +1,48 @@ +import clsx from "clsx"; +import { useState } from "react"; + +import { ChatKitPanel } from "@/components/ChatKitPanel"; +import { ThemeToggle } from "@/components/ThemeToggle"; +import { ColorScheme } from "@/hooks/useColorScheme"; +import { useActions } from "@/hooks/useActions"; +import { Aperture, Code, Sparkles } from "lucide-react"; + + +const Chat = ({ + scheme, + handleThemeChange, +}: { + scheme: ColorScheme; + handleThemeChange: (scheme: ColorScheme) => void; +}) => { + + const { refresh, performAction } = useActions(); + + const containerClass = clsx( + "min-h-screen bg-gradient-to-br transition-colors duration-300", + scheme === "dark" + ? "from-slate-900 via-slate-950 to-slate-850 text-slate-100" + : "from-slate-100 via-white to-slate-200 text-slate-900" + ); + + return ( +
    +
    + + +
    + +
    + +
    +
    + ); +} +export default Chat; diff --git a/Front-End/webpr/src/pages/CheckoutError.tsx b/frontend/web/src/pages/CheckoutError.tsx similarity index 100% rename from Front-End/webpr/src/pages/CheckoutError.tsx rename to frontend/web/src/pages/CheckoutError.tsx diff --git a/Front-End/webpr/src/pages/CheckoutSuccess.tsx b/frontend/web/src/pages/CheckoutSuccess.tsx similarity index 100% rename from Front-End/webpr/src/pages/CheckoutSuccess.tsx rename to frontend/web/src/pages/CheckoutSuccess.tsx diff --git a/Front-End/webpr/src/pages/CommitMessages.tsx b/frontend/web/src/pages/CommitMessages.tsx similarity index 100% rename from Front-End/webpr/src/pages/CommitMessages.tsx rename to frontend/web/src/pages/CommitMessages.tsx diff --git a/Front-End/webpr/src/pages/Controls.tsx b/frontend/web/src/pages/Controls.tsx similarity index 100% rename from Front-End/webpr/src/pages/Controls.tsx rename to frontend/web/src/pages/Controls.tsx diff --git a/Front-End/webpr/src/pages/Dashboard.tsx b/frontend/web/src/pages/Dashboard.tsx similarity index 100% rename from Front-End/webpr/src/pages/Dashboard.tsx rename to frontend/web/src/pages/Dashboard.tsx diff --git a/Front-End/webpr/src/pages/Invoices.tsx b/frontend/web/src/pages/Invoices.tsx similarity index 100% rename from Front-End/webpr/src/pages/Invoices.tsx rename to frontend/web/src/pages/Invoices.tsx diff --git a/Front-End/webpr/src/pages/Landingpage.tsx b/frontend/web/src/pages/Landingpage.tsx similarity index 100% rename from Front-End/webpr/src/pages/Landingpage.tsx rename to frontend/web/src/pages/Landingpage.tsx diff --git a/Front-End/webpr/src/pages/Login.tsx b/frontend/web/src/pages/Login.tsx similarity index 95% rename from Front-End/webpr/src/pages/Login.tsx rename to frontend/web/src/pages/Login.tsx index e1d1d8888..28ed8dac8 100644 --- a/Front-End/webpr/src/pages/Login.tsx +++ b/frontend/web/src/pages/Login.tsx @@ -1,11 +1,11 @@ // webproject\src/components\LoginForm.tsx import React, { useState } from 'react'; -import { Button } from '@/components/ui/button'; -import { Input } from '@/components/ui/input'; -import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; +import { Button } from '../components/ui/button'; +import { Input } from '../components/ui/input'; +import { Card, CardContent, CardHeader, CardTitle } from '../components/ui/card'; import { Mail, Lock, LogIn, Loader2 } from 'lucide-react'; import { useNavigate } from 'react-router-dom'; -import { useAuth } from '@/contexts/AuthContext'; +import { useAuth } from '../contexts/AuthContext'; const LoginForm: React.FC = () => { const [email, setEmail] = useState(''); diff --git a/Front-End/webpr/src/pages/Logs.tsx b/frontend/web/src/pages/Logs.tsx similarity index 100% rename from Front-End/webpr/src/pages/Logs.tsx rename to frontend/web/src/pages/Logs.tsx diff --git a/Front-End/webpr/src/pages/MyAccount.tsx b/frontend/web/src/pages/MyAccount.tsx similarity index 100% rename from Front-End/webpr/src/pages/MyAccount.tsx rename to frontend/web/src/pages/MyAccount.tsx diff --git a/Front-End/webpr/src/pages/NotFound.tsx b/frontend/web/src/pages/NotFound.tsx similarity index 100% rename from Front-End/webpr/src/pages/NotFound.tsx rename to frontend/web/src/pages/NotFound.tsx diff --git a/Front-End/webpr/src/pages/PullRequests.tsx b/frontend/web/src/pages/PullRequests.tsx similarity index 100% rename from Front-End/webpr/src/pages/PullRequests.tsx rename to frontend/web/src/pages/PullRequests.tsx diff --git a/Front-End/webpr/src/pages/Settings.tsx b/frontend/web/src/pages/Settings.tsx similarity index 74% rename from Front-End/webpr/src/pages/Settings.tsx rename to frontend/web/src/pages/Settings.tsx index ee88686e0..f414eb534 100644 --- a/Front-End/webpr/src/pages/Settings.tsx +++ b/frontend/web/src/pages/Settings.tsx @@ -21,11 +21,7 @@ import { interface SystemSettings { githubToken: string - githubSecret: string repositoryName: string - openaiApiKey: string - webhookUrl: string - autoProcessPRs: boolean enableLogging: boolean logLevel: string } @@ -33,11 +29,7 @@ interface SystemSettings { const Settings = () => { const [settings, setSettings] = useState({ githubToken: "", - githubSecret: "", repositoryName: "", - openaiApiKey: "", - webhookUrl: "", - autoProcessPRs: true, enableLogging: true, logLevel: "INFO", @@ -224,25 +216,6 @@ const Settings = () => {
    -
    - -
    - setSettings(prev => ({ ...prev, githubSecret: e.target.value }))} - placeholder="webhook_secret_here" - /> - -
    -
    @@ -255,15 +228,6 @@ const Settings = () => { />
    -
    - - setSettings(prev => ({ ...prev, webhookUrl: e.target.value }))} - placeholder="https://seu-dominio.com/webhook" - /> -
    - - - - - - {/* System Settings */} @@ -323,21 +249,7 @@ const Settings = () => { -
    -
    - -

    - Processar novos PRs automaticamente quando recebidos via webhook -

    -
    - setSettings(prev => ({ ...prev, autoProcessPRs: checked }))} - /> -
    - - - +
    diff --git a/Front-End/webpr/src/pages/SignupCheckout.tsx b/frontend/web/src/pages/SignupCheckout.tsx similarity index 100% rename from Front-End/webpr/src/pages/SignupCheckout.tsx rename to frontend/web/src/pages/SignupCheckout.tsx diff --git a/Front-End/webpr/src/pages/Workflows.tsx b/frontend/web/src/pages/Workflows.tsx similarity index 100% rename from Front-End/webpr/src/pages/Workflows.tsx rename to frontend/web/src/pages/Workflows.tsx diff --git a/frontend/web/src/types/chatkit-tools.d.ts b/frontend/web/src/types/chatkit-tools.d.ts new file mode 100644 index 000000000..bdb52aff2 --- /dev/null +++ b/frontend/web/src/types/chatkit-tools.d.ts @@ -0,0 +1,8 @@ +declare module "@openai/chatkit" { + interface ClientToolInvocation> { + // Projects can augment this interface to provide strongly typed arguments + // and results for custom client tools. + switch_theme(params: { theme: "light" | "dark" }): { success: boolean }; + record_fact(params: { fact_id: string; fact_text: string; }): { success: boolean }; + } +} diff --git a/Front-End/webpr/src/vite-env.d.ts b/frontend/web/src/vite-env.d.ts similarity index 100% rename from Front-End/webpr/src/vite-env.d.ts rename to frontend/web/src/vite-env.d.ts diff --git a/Front-End/webpr/tailwind.config.ts b/frontend/web/tailwind.config.ts similarity index 100% rename from Front-End/webpr/tailwind.config.ts rename to frontend/web/tailwind.config.ts diff --git a/frontend/web/tsconfig.json b/frontend/web/tsconfig.json new file mode 100644 index 000000000..218da28f1 --- /dev/null +++ b/frontend/web/tsconfig.json @@ -0,0 +1,20 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "target": "ES2022", + "useDefineForClassFields": true, + "lib": ["ES2022", "DOM", "DOM.Iterable"], + "module": "ESNext", + "moduleResolution": "Bundler", + "moduleDetection": "force", + "resolveJsonModule": true, + "isolatedModules": true, + "esModuleInterop": true, + "jsx": "react-jsx", + "paths": { + "@/*": ["src/*"] + } + }, + "include": ["src", "src/types/chatkit.d.ts", "src/types/chatkit-tools.d.ts"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/frontend/web/tsconfig.node.json b/frontend/web/tsconfig.node.json new file mode 100644 index 000000000..5d35fae7a --- /dev/null +++ b/frontend/web/tsconfig.node.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "resolveJsonModule": true, + "isolatedModules": true, + "types": ["node"] + }, + "include": ["vite.config.ts"] +} diff --git a/frontend/web/vite.config.ts b/frontend/web/vite.config.ts new file mode 100644 index 000000000..44cf03be5 --- /dev/null +++ b/frontend/web/vite.config.ts @@ -0,0 +1,39 @@ +import { defineConfig } from "vite"; +import react from "@vitejs/plugin-react-swc"; +import * as path from 'path'; + +const filePath = path.resolve(__dirname, 'src'); + + +const backendTarget = process.env.BACKEND_URL ?? "http://127.0.0.1:8000"; + +// https://vitejs.dev/config/ +export default defineConfig({ + server: { + port: 5170, + host: "0.0.0.0", + proxy: { + "/chatkit": { + target: backendTarget, + changeOrigin: true, + }, + "/facts": { + target: backendTarget, + changeOrigin: true, + }, + }, + // For production deployments, you need to add your public domains to this list + allowedHosts: [ + // You can remove these examples added just to demonstrate how to configure the allowlist + ".ngrok.io", + ".trycloudflare.com", + ], + }, + + plugins: [react()], + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + }, + }, +}); From 21c144a05448f49924ae0654f97d7a5660e5e8a7 Mon Sep 17 00:00:00 2001 From: Ualerson Date: Wed, 15 Oct 2025 11:13:08 -0300 Subject: [PATCH 2/2] Delete backend/test_notion.py and remove IPC comment in GCL.tsx MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit O commit realiza as seguintes mudanças: - backend/test_notion.py: removido o arquivo de teste Notion (teste legada). A exclusão sugere alinhamento com a estratégia atual de testes, evitando execuções de testes desatualizados no CI. - frontend/electron/src/pages/GCL.tsx: removal de uma linha de comentário que previa a adição da função IPC ao useGitOperations.ts e ao preload.cjs. A remoção é puramente de limpeza de código; não altera o comportamento, apenas elimina informação redundante. - backend/celerybeat-schedule: presença de diff binário indica uma alteração nesse arquivo, mas o diff textual não está disponível. Recomenda-se revisar essa alteração para confirmar o conteúdo e impactos. - backend/TestDiscovery/test_notion.py: listado como modificado no contexto, porém o diff apresentado não detalha alterações específicas; verifique se há outras mudanças não exibidas no patch. Resumo: o foco principal é limpar o repositório removendo teste legada e melhorar a legibilidade do código frontend, com uma verificação adicional necessária para o aporte binário em celerybeat-schedule. --- backend/{ => TestDiscovery}/test_notion.py | 0 backend/celerybeat-schedule | Bin 3072 -> 3072 bytes frontend/electron/src/pages/GCL.tsx | 1 - 3 files changed, 1 deletion(-) rename backend/{ => TestDiscovery}/test_notion.py (100%) diff --git a/backend/test_notion.py b/backend/TestDiscovery/test_notion.py similarity index 100% rename from backend/test_notion.py rename to backend/TestDiscovery/test_notion.py diff --git a/backend/celerybeat-schedule b/backend/celerybeat-schedule index bafda8998e089e22d787c8bc12c3acff35565a63..8f59f0f9722efc0b50d70933834b5cb97b8dec59 100644 GIT binary patch delta 29 lcmZpWXpq=&kc*Xzfq}_u@_)8CW?w6b$?@#klY_X|0RVfe2w?yK delta 29 lcmZpWXpq=&kc*Xtfk8)L@_)8CW?vJD$?@#klY_X|0RVan2t@z@ diff --git a/frontend/electron/src/pages/GCL.tsx b/frontend/electron/src/pages/GCL.tsx index cb25ba5cd..63ebe2d56 100644 --- a/frontend/electron/src/pages/GCL.tsx +++ b/frontend/electron/src/pages/GCL.tsx @@ -33,7 +33,6 @@ const GCL = () => { return; } try { - // Nota: Esta função de IPC precisa ser adicionada ao seu useGitOperations.ts e preload.cjs, se ainda não estiver lá! const diff = await window.electronAPI.git.getDiff(path); setGitDiff(diff); } catch (error) {

    )<~w} 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