From e2d1c2bd9ef1c2e4037c01ddfd00e7080f3e6f71 Mon Sep 17 00:00:00 2001 From: Shiv Singh Date: Mon, 19 Oct 2026 12:28:03 +0530 Subject: [PATCH 01/10] Extract reusable LaraCoreKit package and refresh demo and documentation --- .env.example | 2 + .github/IMPLEMENTATION_CHECKLIST.md | 2 + .github/README_REPOSITORY.md | 2 +- .github/dependabot.yml | 22 + .github/package-workflows/sync-source.yml | 91 + .github/workflows/build.yml | 48 +- .github/workflows/code-quality.yml | 55 +- .github/workflows/consumer.yml | 19 + .github/workflows/package-preview.yml | 37 + .github/workflows/security.yml | 21 + .github/workflows/tests.yml | 63 +- .gitignore | 11 +- CHANGELOG.md | 13 + CODEOWNERS | 16 +- CONTRIBUTING.md | 15 +- README.md | 522 +-- ROADMAP.md | 189 +- SECURITY.md | 110 +- app/Console/Commands/CollectPackageStats.php | 60 + app/Console/Commands/GenerateSitemap.php | 126 +- app/Filament/Pages/Dashboard.php | 3 +- app/Http/Controllers/SitemapController.php | 10 +- .../Middleware/RedirectIfAuthenticated.php | 6 +- .../src/Http => app}/Livewire/Changelog.php | 10 +- .../Core/src/Http => app}/Livewire/Home.php | 11 +- app/Providers/Filament/AdminPanelProvider.php | 30 +- app/Providers/ModuleServiceProvider.php | 27 - bootstrap/app.php | 8 +- bootstrap/providers.php | 16 +- composer.json | 50 +- composer.lock | 2821 +++++++++-------- config/auth.php | 4 +- config/laracorekit.php | 10 + config/modules.php | 41 - config/permission.php | 12 +- config/site.php | 6 + .../seeders/BlogSeeder.php | 6 +- database/seeders/DatabaseSeeder.php | 17 +- database/seeders/DemoSeeder.php | 23 + .../seeders/SettingSeeder.php | 4 +- .../seeders/UserSeeder.php | 28 +- docs/SCREENSHOT_GUIDE.md | 310 +- docs/admin/custom-pages.md | 120 +- docs/admin/filament-overview.md | 110 +- docs/admin/forms-tables.md | 148 +- docs/admin/resources.md | 156 +- docs/advanced/caching.md | 172 +- docs/advanced/queues.md | 196 +- docs/advanced/search.md | 206 +- docs/advanced/testing.md | 250 +- docs/api/authentication.md | 127 +- docs/api/endpoints.md | 188 +- docs/api/sanctum.md | 177 +- docs/comparisons/laracorekit-vs-larament.md | 310 +- .../laracorekit-vs-livewire-starter.md | 468 +-- docs/configuration.md | 389 +-- docs/contributing.md | 166 +- docs/core/architecture.md | 153 +- docs/core/middleware.md | 74 +- docs/core/modules-system.md | 202 +- docs/core/routing.md | 108 +- docs/core/service-providers.md | 79 +- docs/deployment/demo-setup.md | 1045 +----- docs/deployment/docker.md | 211 +- docs/deployment/hosting.md | 182 +- docs/deployment/optimization.md | 200 +- docs/deployment/production.md | 228 +- docs/faq.md | 419 +-- docs/features/authentication.md | 203 +- docs/features/blog.md | 140 +- docs/features/media.md | 139 +- docs/features/multilingual.md | 132 +- docs/features/roles-permissions.md | 137 +- docs/features/rtl-support.md | 106 +- docs/features/settings.md | 107 +- docs/features/users.md | 97 +- docs/frontend/components.md | 162 +- docs/frontend/layouts.md | 177 +- docs/frontend/livewire.md | 227 +- docs/frontend/ui-showcase.md | 93 +- docs/images/screenshots/admin-dashboard.png | Bin 0 -> 52854 bytes docs/images/screenshots/blog-detail.png | Bin 0 -> 41837 bytes docs/images/screenshots/blog-editor.png | Bin 0 -> 71586 bytes docs/images/screenshots/blog-management.png | Bin 0 -> 77101 bytes docs/images/screenshots/blog.png | Bin 0 -> 85862 bytes docs/images/screenshots/documentation.png | Bin 0 -> 111128 bytes docs/images/screenshots/homepage-dark.png | Bin 0 -> 99758 bytes docs/images/screenshots/homepage.png | Bin 0 -> 129027 bytes docs/images/screenshots/mobile-navigation.png | Bin 0 -> 74821 bytes docs/images/screenshots/rtl-support.png | Bin 0 -> 84393 bytes docs/images/screenshots/ui-showcase.png | Bin 0 -> 194588 bytes docs/implementation-report.md | 61 + docs/installation.md | 600 +--- docs/introduction.md | 206 +- docs/maintenance-and-distribution-audit.md | 81 + docs/modules/best-practices.md | 208 +- docs/modules/create-module.md | 336 +- docs/modules/module-structure.md | 144 +- docs/modules/publishing.md | 185 +- docs/package-release.md | 48 + docs/project-structure.md | 657 +--- docs/quick-start.md | 406 +-- docs/upgrade-guide.md | 27 + modules/Auth/src/AuthServiceProvider.php | 27 - modules/Blog/src/BlogServiceProvider.php | 31 - modules/Core/views/layouts/app.blade.php | 299 -- modules/Core/views/livewire/home.blade.php | 823 ----- modules/Docs/src/DocsServiceProvider.php | 7 +- .../src/Http/Controllers/DocsController.php | 90 +- modules/Docs/views/show.blade.php | 46 +- modules/UIShowcase/config/components.php | 8 +- modules/UIShowcase/routes/web.php | 14 +- .../src/UIShowcaseServiceProvider.php | 11 +- modules/UIShowcase/views/index.blade.php | 18 +- .../views/layouts/showcase.blade.php | 25 +- package-lock.json | 1602 ++++------ package.json | 15 +- packages/core/.gitignore | 5 + packages/core/CHANGELOG.md | 10 + packages/core/CONTRIBUTING.md | 5 + packages/core/LICENSE | 21 + packages/core/README.md | 108 + packages/core/SECURITY.md | 5 + packages/core/composer.json | 61 + packages/core/config/laracorekit.php | 20 + packages/core/lang/ar.json | 169 + packages/core/lang/en.json | 169 + packages/core/lang/hi.json | 169 + .../core/modules}/Auth/routes/web.php | 11 +- .../modules/Auth/src/AuthServiceProvider.php | 32 + .../Auth/src/Http/Livewire/Dashboard.php | 2 +- .../Auth/src/Http/Livewire/ForgotPassword.php | 20 +- .../modules}/Auth/src/Http/Livewire/Login.php | 33 +- .../Auth/src/Http/Livewire/Register.php | 22 +- .../Auth/src/Http/Livewire/ResetPassword.php | 27 +- .../Auth/views/livewire/dashboard.blade.php | 4 +- .../views/livewire/forgot-password.blade.php | 0 .../Auth/views/livewire/login.blade.php | 7 +- .../Auth/views/livewire/register.blade.php | 0 .../views/livewire/reset-password.blade.php | 0 .../2025_12_11_112405_create_blogs_table.php | 10 +- ..._11_115208_add_category_to_blogs_table.php | 0 .../core/modules}/Blog/routes/web.php | 0 .../modules/Blog/src/BlogServiceProvider.php | 35 + .../src/Filament/Resources/BlogResource.php | 48 +- .../Filament/Resources/Pages/CreateBlog.php | 9 +- .../src/Filament/Resources/Pages/EditBlog.php | 9 +- .../Filament/Resources/Pages/ListBlogs.php | 2 +- .../src/Filament/Resources/Pages/ViewBlog.php | 2 +- .../Filament/Resources/Schemas/BlogForm.php | 4 +- .../Resources/Schemas/BlogInfolist.php | 2 +- .../Filament/Resources/Tables/BlogsTable.php | 11 +- .../Blog/src/Http/Livewire/BlogDetail.php | 10 +- .../Blog/src/Http/Livewire/BlogList.php | 18 +- .../core/modules}/Blog/src/Models/Blog.php | 10 +- .../Blog/views/livewire/blog-detail.blade.php | 4 +- .../Blog/views/livewire/blog-list.blade.php | 0 .../modules}/Core/src/CoreServiceProvider.php | 7 +- .../Core/src/Http/Livewire/LocaleSwitcher.php | 0 .../Core/src/Http/Middleware/SetLocale.php | 8 +- .../modules/Core/views/layouts/app.blade.php | 30 + .../views/livewire/locale-switcher.blade.php | 2 +- .../2026_05_13_095858_create_media_table.php | 5 + .../Media/src/MediaServiceProvider.php | 2 +- ...025_12_11_113213_create_settings_table.php | 2 +- .../Settings/src/Filament/Pages/Settings.php | 16 +- .../modules}/Settings/src/Models/Setting.php | 3 +- .../Settings/src/SettingsServiceProvider.php | 6 +- .../views/filament/pages/settings.blade.php | 0 .../User/database/factories/UserFactory.php | 5 +- ..._12_11_104127_create_permission_tables.php | 0 .../database/seeders/RolePermissionSeeder.php | 25 +- .../Filament/Resources/Pages/CreateUser.php | 2 +- .../src/Filament/Resources/Pages/EditUser.php | 2 +- .../Filament/Resources/Pages/ListUsers.php | 2 +- .../src/Filament/Resources/Pages/ViewUser.php | 2 +- .../Permissions/Pages/CreatePermission.php | 2 +- .../Permissions/Pages/EditPermission.php | 2 +- .../Permissions/Pages/ListPermissions.php | 2 +- .../Permissions/Pages/ViewPermission.php | 2 +- .../Permissions/PermissionResource.php | 40 +- .../Permissions/Schemas/PermissionForm.php | 0 .../Schemas/PermissionInfolist.php | 0 .../Permissions/Tables/PermissionsTable.php | 1 - .../Resources/Roles/Pages/CreateRole.php | 2 +- .../Resources/Roles/Pages/EditRole.php | 2 +- .../Resources/Roles/Pages/ListRoles.php | 2 +- .../Resources/Roles/Pages/ViewRole.php | 2 +- .../Filament/Resources/Roles/RoleResource.php | 40 +- .../Resources/Roles/Schemas/RoleForm.php | 0 .../Resources/Roles/Schemas/RoleInfolist.php | 0 .../Resources/Roles/Tables/RolesTable.php | 1 - .../Filament/Resources/Schemas/UserForm.php | 2 +- .../Resources/Schemas/UserInfolist.php | 0 .../Filament/Resources/Tables/UsersTable.php | 0 .../src/Filament/Resources/UserResource.php | 40 +- .../core/modules}/User/src/Models/User.php | 21 +- .../modules}/User/src/UserServiceProvider.php | 2 +- packages/core/resources/css/app.css | 8 + packages/core/resources/dist/laracorekit.css | 2 + packages/core/src/Console/InstallCommand.php | 33 + .../core/src/Console/MakeAdminCommand.php | 54 + packages/core/src/CoreServiceProvider.php | 75 + .../core/src/Filament/AdminPanelProvider.php | 61 + .../core/src/Filament/LocalAvatarProvider.php | 23 + packages/core/src/Filament/OverviewStats.php | 29 + phpstan.neon.dist | 9 +- phpunit.xml | 7 +- public/build/assets/app-Cg1sXqY3.css | 1 - public/build/assets/app-DkUO_YE_.js | 36 - public/build/assets/app-R6y9SjND.css | 1 - public/build/assets/app-hMwi2c-O.css | 2 + public/build/assets/app-ksbcZ8Zp.js | 9 + .../build/assets/rolldown-runtime-XKyaHtl9.js | 1 + public/build/assets/showcase-C6uyB5YP.css | 1 + public/build/assets/showcase-CXkh-bbm.js | 4 + public/build/assets/theme-BAIzQs4N.css | 1 - public/build/assets/theme-Bi9UJXw9.css | 2 + public/build/manifest.json | 32 +- public/css/filament/filament/app.css | 4 +- .../fonts/filament/filament/inter/index.css | 2 +- ...er-cyrillic-ext-wght-normal-SP7Z6XGK.woff2 | Bin 0 -> 25668 bytes .../inter-cyrillic-wght-normal-DR6K5BQD.woff2 | Bin 0 -> 18860 bytes ...inter-greek-ext-wght-normal-A2J6H3EX.woff2 | Bin 0 -> 11180 bytes .../inter-greek-wght-normal-ZABHMKQG.woff2 | Bin 0 -> 18688 bytes ...inter-latin-ext-wght-normal-ZIT2UBIY.woff2 | Bin 0 -> 89876 bytes .../inter-latin-wght-normal-DIHYUR35.woff2 | Bin 0 -> 68332 bytes ...nter-vietnamese-wght-normal-VWEHJHBA.woff2 | Bin 0 -> 11376 bytes public/images/screenshots/admin-dashboard.png | Bin 0 -> 52854 bytes public/images/screenshots/blog-detail.png | Bin 0 -> 41837 bytes public/images/screenshots/blog-editor.png | Bin 0 -> 71586 bytes public/images/screenshots/blog-management.png | Bin 0 -> 77101 bytes public/images/screenshots/blog.png | Bin 0 -> 85862 bytes public/images/screenshots/documentation.png | Bin 0 -> 111128 bytes public/images/screenshots/homepage-dark.png | Bin 0 -> 100621 bytes public/images/screenshots/homepage.png | Bin 0 -> 130724 bytes public/images/screenshots/rtl-support.png | Bin 0 -> 84393 bytes public/images/screenshots/ui-showcase.png | Bin 0 -> 194588 bytes public/js/filament/actions/actions.js | 2 +- public/js/filament/filament/app.js | 2 +- public/js/filament/filament/echo.js | 2 +- .../js/filament/forms/components/builder.js | 1 + .../forms/components/checkbox-list.js | 2 +- .../filament/forms/components/code-editor.js | 46 +- .../filament/forms/components/color-picker.js | 2 +- .../forms/components/date-time-picker.js | 2 +- .../filament/forms/components/file-upload.js | 16 +- .../js/filament/forms/components/key-value.js | 2 +- .../forms/components/markdown-editor.js | 64 +- .../js/filament/forms/components/repeater.js | 1 + .../filament/forms/components/rich-editor.js | 135 +- public/js/filament/forms/components/select.js | 4 +- public/js/filament/forms/components/slider.js | 2 +- .../filament/forms/components/tags-input.js | 2 +- .../components/text-input/password-reveal.js | 1 + .../js/filament/forms/components/textarea.js | 2 +- .../forms/components/toggle-buttons.js | 1 + .../filament/notifications/notifications.js | 2 +- public/js/filament/schemas/components/tabs.js | 2 +- .../js/filament/schemas/components/wizard.js | 2 +- public/js/filament/schemas/schemas.js | 2 +- public/js/filament/support/support.js | 16 +- .../tables/components/columns/checkbox.js | 2 +- .../tables/components/columns/select.js | 4 +- .../tables/components/columns/text-input.js | 2 +- .../tables/components/columns/toggle.js | 2 +- public/js/filament/tables/tables.js | 2 +- .../js/filament/widgets/components/chart.js | 5 +- .../components/stats-overview/stat/chart.js | 4 +- public/robots.txt | 9 +- resources/css/app.css | 4 + resources/css/filament/admin/theme.css | 1 + resources/js/app.js | 39 - resources/js/showcase.js | 38 + resources/views/filament/auth/login.blade.php | 120 - .../filament/login-placeholders.blade.php | 22 - .../views/site}/changelog.blade.php | 0 resources/views/site/home.blade.php | 65 + resources/views/sitemap.blade.php | 43 +- .../views/vendor/core/layouts/app.blade.php | 87 + routes/console.php | 5 + routes/web.php | 25 +- storage/framework/sessions/.gitignore | 2 + storage/framework/views/.gitignore | 2 + tests/Feature/DocumentationTest.php | 41 + tests/Feature/PackageSecurityTest.php | 162 + tests/Feature/PackageStatisticsTest.php | 39 + tools/browser-smoke.cjs | 104 + tools/consumer-smoke.py | 76 + tools/package-release.py | 32 + tools/preview-seed.php | 35 + vite.config.js | 2 +- vite.core.config.js | 15 + 293 files changed, 6036 insertions(+), 15675 deletions(-) create mode 100644 .github/dependabot.yml create mode 100644 .github/package-workflows/sync-source.yml create mode 100644 .github/workflows/consumer.yml create mode 100644 .github/workflows/package-preview.yml create mode 100644 .github/workflows/security.yml create mode 100644 app/Console/Commands/CollectPackageStats.php rename {modules/Core/src/Http => app}/Livewire/Changelog.php (84%) rename {modules/Core/src/Http => app}/Livewire/Home.php (64%) delete mode 100644 app/Providers/ModuleServiceProvider.php create mode 100644 config/laracorekit.php delete mode 100644 config/modules.php create mode 100644 config/site.php rename {modules/Blog/database => database}/seeders/BlogSeeder.php (99%) create mode 100644 database/seeders/DemoSeeder.php rename {modules/Settings/database => database}/seeders/SettingSeeder.php (98%) rename {modules/User/database => database}/seeders/UserSeeder.php (64%) create mode 100644 docs/images/screenshots/admin-dashboard.png create mode 100644 docs/images/screenshots/blog-detail.png create mode 100644 docs/images/screenshots/blog-editor.png create mode 100644 docs/images/screenshots/blog-management.png create mode 100644 docs/images/screenshots/blog.png create mode 100644 docs/images/screenshots/documentation.png create mode 100644 docs/images/screenshots/homepage-dark.png create mode 100644 docs/images/screenshots/homepage.png create mode 100644 docs/images/screenshots/mobile-navigation.png create mode 100644 docs/images/screenshots/rtl-support.png create mode 100644 docs/images/screenshots/ui-showcase.png create mode 100644 docs/implementation-report.md create mode 100644 docs/maintenance-and-distribution-audit.md create mode 100644 docs/package-release.md create mode 100644 docs/upgrade-guide.md delete mode 100644 modules/Auth/src/AuthServiceProvider.php delete mode 100644 modules/Blog/src/BlogServiceProvider.php delete mode 100644 modules/Core/views/layouts/app.blade.php delete mode 100644 modules/Core/views/livewire/home.blade.php create mode 100644 packages/core/.gitignore create mode 100644 packages/core/CHANGELOG.md create mode 100644 packages/core/CONTRIBUTING.md create mode 100644 packages/core/LICENSE create mode 100644 packages/core/README.md create mode 100644 packages/core/SECURITY.md create mode 100644 packages/core/composer.json create mode 100644 packages/core/config/laracorekit.php create mode 100644 packages/core/lang/ar.json create mode 100644 packages/core/lang/en.json create mode 100644 packages/core/lang/hi.json rename {modules => packages/core/modules}/Auth/routes/web.php (88%) create mode 100644 packages/core/modules/Auth/src/AuthServiceProvider.php rename {modules => packages/core/modules}/Auth/src/Http/Livewire/Dashboard.php (100%) rename {modules => packages/core/modules}/Auth/src/Http/Livewire/ForgotPassword.php (60%) rename {modules => packages/core/modules}/Auth/src/Http/Livewire/Login.php (63%) rename {modules => packages/core/modules}/Auth/src/Http/Livewire/Register.php (68%) rename {modules => packages/core/modules}/Auth/src/Http/Livewire/ResetPassword.php (78%) rename {modules => packages/core/modules}/Auth/views/livewire/dashboard.blade.php (96%) rename {modules => packages/core/modules}/Auth/views/livewire/forgot-password.blade.php (100%) rename {modules => packages/core/modules}/Auth/views/livewire/login.blade.php (94%) rename {modules => packages/core/modules}/Auth/views/livewire/register.blade.php (100%) rename {modules => packages/core/modules}/Auth/views/livewire/reset-password.blade.php (100%) rename {modules => packages/core/modules}/Blog/database/migrations/2025_12_11_112405_create_blogs_table.php (95%) rename {modules => packages/core/modules}/Blog/database/migrations/2025_12_11_115208_add_category_to_blogs_table.php (100%) rename {modules => packages/core/modules}/Blog/routes/web.php (100%) create mode 100644 packages/core/modules/Blog/src/BlogServiceProvider.php rename {modules => packages/core/modules}/Blog/src/Filament/Resources/BlogResource.php (81%) rename {modules => packages/core/modules}/Blog/src/Filament/Resources/Pages/CreateBlog.php (53%) rename {modules => packages/core/modules}/Blog/src/Filament/Resources/Pages/EditBlog.php (74%) rename {modules => packages/core/modules}/Blog/src/Filament/Resources/Pages/ListBlogs.php (100%) rename {modules => packages/core/modules}/Blog/src/Filament/Resources/Pages/ViewBlog.php (100%) rename {modules => packages/core/modules}/Blog/src/Filament/Resources/Schemas/BlogForm.php (97%) rename {modules => packages/core/modules}/Blog/src/Filament/Resources/Schemas/BlogInfolist.php (100%) rename {modules => packages/core/modules}/Blog/src/Filament/Resources/Tables/BlogsTable.php (93%) rename {modules => packages/core/modules}/Blog/src/Http/Livewire/BlogDetail.php (81%) rename {modules => packages/core/modules}/Blog/src/Http/Livewire/BlogList.php (73%) rename {modules => packages/core/modules}/Blog/src/Models/Blog.php (82%) rename {modules => packages/core/modules}/Blog/views/livewire/blog-detail.blade.php (97%) rename {modules => packages/core/modules}/Blog/views/livewire/blog-list.blade.php (100%) rename {modules => packages/core/modules}/Core/src/CoreServiceProvider.php (57%) rename {modules => packages/core/modules}/Core/src/Http/Livewire/LocaleSwitcher.php (100%) rename {modules => packages/core/modules}/Core/src/Http/Middleware/SetLocale.php (75%) create mode 100644 packages/core/modules/Core/views/layouts/app.blade.php rename {modules => packages/core/modules}/Core/views/livewire/locale-switcher.blade.php (95%) rename {database => packages/core/modules/Media/database}/migrations/2026_05_13_095858_create_media_table.php (92%) rename {modules => packages/core/modules}/Media/src/MediaServiceProvider.php (77%) rename {modules => packages/core/modules}/Settings/database/migrations/2025_12_11_113213_create_settings_table.php (98%) rename {modules => packages/core/modules}/Settings/src/Filament/Pages/Settings.php (98%) rename {modules => packages/core/modules}/Settings/src/Models/Setting.php (92%) rename {modules => packages/core/modules}/Settings/src/SettingsServiceProvider.php (79%) rename {modules => packages/core/modules}/Settings/views/filament/pages/settings.blade.php (100%) rename {modules => packages/core/modules}/User/database/factories/UserFactory.php (91%) rename {modules => packages/core/modules}/User/database/migrations/2025_12_11_104127_create_permission_tables.php (100%) rename {modules => packages/core/modules}/User/database/seeders/RolePermissionSeeder.php (61%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Pages/CreateUser.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Pages/EditUser.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Pages/ListUsers.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Pages/ViewUser.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/Pages/CreatePermission.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/Pages/EditPermission.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/Pages/ListPermissions.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/Pages/ViewPermission.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/PermissionResource.php (79%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/Schemas/PermissionForm.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/Schemas/PermissionInfolist.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Permissions/Tables/PermissionsTable.php (97%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/Pages/CreateRole.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/Pages/EditRole.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/Pages/ListRoles.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/Pages/ViewRole.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/RoleResource.php (78%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/Schemas/RoleForm.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/Schemas/RoleInfolist.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Roles/Tables/RolesTable.php (98%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Schemas/UserForm.php (96%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Schemas/UserInfolist.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/Tables/UsersTable.php (100%) rename {modules => packages/core/modules}/User/src/Filament/Resources/UserResource.php (78%) rename {modules => packages/core/modules}/User/src/Models/User.php (76%) rename {modules => packages/core/modules}/User/src/UserServiceProvider.php (78%) create mode 100644 packages/core/resources/css/app.css create mode 100644 packages/core/resources/dist/laracorekit.css create mode 100644 packages/core/src/Console/InstallCommand.php create mode 100644 packages/core/src/Console/MakeAdminCommand.php create mode 100644 packages/core/src/CoreServiceProvider.php create mode 100644 packages/core/src/Filament/AdminPanelProvider.php create mode 100644 packages/core/src/Filament/LocalAvatarProvider.php create mode 100644 packages/core/src/Filament/OverviewStats.php delete mode 100644 public/build/assets/app-Cg1sXqY3.css delete mode 100644 public/build/assets/app-DkUO_YE_.js delete mode 100644 public/build/assets/app-R6y9SjND.css create mode 100644 public/build/assets/app-hMwi2c-O.css create mode 100644 public/build/assets/app-ksbcZ8Zp.js create mode 100644 public/build/assets/rolldown-runtime-XKyaHtl9.js create mode 100644 public/build/assets/showcase-C6uyB5YP.css create mode 100644 public/build/assets/showcase-CXkh-bbm.js delete mode 100644 public/build/assets/theme-BAIzQs4N.css create mode 100644 public/build/assets/theme-Bi9UJXw9.css create mode 100644 public/fonts/filament/filament/inter/inter-cyrillic-ext-wght-normal-SP7Z6XGK.woff2 create mode 100644 public/fonts/filament/filament/inter/inter-cyrillic-wght-normal-DR6K5BQD.woff2 create mode 100644 public/fonts/filament/filament/inter/inter-greek-ext-wght-normal-A2J6H3EX.woff2 create mode 100644 public/fonts/filament/filament/inter/inter-greek-wght-normal-ZABHMKQG.woff2 create mode 100644 public/fonts/filament/filament/inter/inter-latin-ext-wght-normal-ZIT2UBIY.woff2 create mode 100644 public/fonts/filament/filament/inter/inter-latin-wght-normal-DIHYUR35.woff2 create mode 100644 public/fonts/filament/filament/inter/inter-vietnamese-wght-normal-VWEHJHBA.woff2 create mode 100644 public/images/screenshots/admin-dashboard.png create mode 100644 public/images/screenshots/blog-detail.png create mode 100644 public/images/screenshots/blog-editor.png create mode 100644 public/images/screenshots/blog-management.png create mode 100644 public/images/screenshots/blog.png create mode 100644 public/images/screenshots/documentation.png create mode 100644 public/images/screenshots/homepage-dark.png create mode 100644 public/images/screenshots/homepage.png create mode 100644 public/images/screenshots/rtl-support.png create mode 100644 public/images/screenshots/ui-showcase.png create mode 100644 public/js/filament/forms/components/builder.js create mode 100644 public/js/filament/forms/components/repeater.js create mode 100644 public/js/filament/forms/components/text-input/password-reveal.js create mode 100644 public/js/filament/forms/components/toggle-buttons.js create mode 100644 resources/js/showcase.js delete mode 100644 resources/views/filament/auth/login.blade.php delete mode 100644 resources/views/filament/login-placeholders.blade.php rename {modules/Core/views/livewire => resources/views/site}/changelog.blade.php (100%) create mode 100644 resources/views/site/home.blade.php create mode 100644 resources/views/vendor/core/layouts/app.blade.php create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 tests/Feature/DocumentationTest.php create mode 100644 tests/Feature/PackageSecurityTest.php create mode 100644 tests/Feature/PackageStatisticsTest.php create mode 100644 tools/browser-smoke.cjs create mode 100644 tools/consumer-smoke.py create mode 100644 tools/package-release.py create mode 100644 tools/preview-seed.php create mode 100644 vite.core.config.js diff --git a/.env.example b/.env.example index 084f8e4..100e89c 100644 --- a/.env.example +++ b/.env.example @@ -67,6 +67,8 @@ VITE_APP_NAME="${APP_NAME}" # Demo Mode Configuration (set to true on demo server only) DEMO_MODE=false +# Optional host-only Packagist snapshots; requires Laravel's scheduler. +LARACOREKIT_COLLECT_STATS=false DEMO_RESET_INTERVAL=30 DEMO_ADMIN_EMAIL=admin@laracorekit.com DEMO_ADMIN_PASSWORD=Admin@123 diff --git a/.github/IMPLEMENTATION_CHECKLIST.md b/.github/IMPLEMENTATION_CHECKLIST.md index 8776db1..2ebf1df 100644 --- a/.github/IMPLEMENTATION_CHECKLIST.md +++ b/.github/IMPLEMENTATION_CHECKLIST.md @@ -1,5 +1,7 @@ # LaraCoreKit - Implementation Checklist +Historical checklist from the earlier host audit. For the current package extraction, validation evidence and external release blockers, see [implementation report](../docs/implementation-report.md). + This document tracks the implementation of improvements based on the comprehensive audit report. ## Must-Fix Priority Items diff --git a/.github/README_REPOSITORY.md b/.github/README_REPOSITORY.md index d418efa..36ea16e 100644 --- a/.github/README_REPOSITORY.md +++ b/.github/README_REPOSITORY.md @@ -3,7 +3,7 @@ Use this for the GitHub repository About/Description section: ``` -Modular Laravel 13 starter kit with Filament 5, Livewire 4, Tailwind 4, multilingual content, RTL support, auth, roles/permissions, blog, settings, media, and publishable add-on modules. +Modular Laravel foundation for public websites and Filament administration. Reusable Composer package, documentation, demo host and component examples. ``` ## Topics/Tags diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..5f470bd --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,22 @@ +version: 2 +updates: + - package-ecosystem: composer + directory: / + schedule: + interval: weekly + open-pull-requests-limit: 5 + - package-ecosystem: npm + directory: / + schedule: + interval: weekly + open-pull-requests-limit: 5 + - package-ecosystem: composer + directory: /packages/core + schedule: + interval: weekly + open-pull-requests-limit: 5 + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + open-pull-requests-limit: 5 diff --git a/.github/package-workflows/sync-source.yml b/.github/package-workflows/sync-source.yml new file mode 100644 index 0000000..27b1a28 --- /dev/null +++ b/.github/package-workflows/sync-source.yml @@ -0,0 +1,91 @@ +name: Sync Package Source +on: + workflow_dispatch: + schedule: + - cron: '17 8 * * *' +permissions: + contents: read +jobs: + propose: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - uses: actions/checkout@v6 + with: + path: distribution + - uses: actions/checkout@v6 + with: + repository: ProgrammerNomad/LaraCoreKit + ref: main + path: source + persist-credentials: false + - name: Check source availability and pending proposals + id: source + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + run: | + if [ ! -f source/packages/core/composer.json ]; then + echo 'Package extraction is not on the monorepo main branch yet.' + exit 0 + fi + pending=$(gh pr list --state open --label package-sync --json number --jq length) + if [ "$pending" != '0' ]; then + echo 'A package source proposal is already waiting for review.' + exit 0 + fi + echo 'ready=true' >> "$GITHUB_OUTPUT" + - if: steps.source.outputs.ready == 'true' + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + extensions: dom, curl, mbstring, zip, pdo_sqlite, bcmath, intl, gd, exif + coverage: none + - if: steps.source.outputs.ready == 'true' + uses: actions/setup-node@v6 + with: + node-version: '24' + cache: npm + cache-dependency-path: source/package-lock.json + - name: Validate the monorepo source and prepare the package + if: steps.source.outputs.ready == 'true' + working-directory: source + run: | + composer install --prefer-dist --no-interaction + cp .env.example .env + php artisan key:generate + composer validate --strict + composer --working-dir=packages/core validate --strict + composer review + composer audit --locked + npm ci + npm audit + npm run build:core + python3 tools/consumer-smoke.py + python3 tools/package-release.py + - name: Propose a package-only source update + if: steps.source.outputs.ready == 'true' + working-directory: distribution + env: + GH_TOKEN: ${{ github.token }} + GH_REPO: ${{ github.repository }} + run: | + branch="codex/package-sync-$GITHUB_RUN_ID" + source_sha=$(git -C ../source rev-parse HEAD) + git switch -c "$branch" + # Preserve this repository's own maintenance workflow. + git rm -r --ignore-unmatch -- . ':!.github' + unzip -oq ../source/storage/app/releases/laracorekit-preview.zip + git add -A + if git diff --cached --quiet; then + echo 'Package source is already current.' + exit 0 + fi + git config user.name 'github-actions[bot]' + git config user.email '41898282+github-actions[bot]@users.noreply.github.com' + git commit -m "Sync package source from $source_sha" + git push --set-upstream origin "$branch" + printf 'Update package source from LaraCoreKit commit %s.\n\nMonorepo checks, dependency audits and clean-consumer installation passed. Review and merge before creating a release tag.\n' "$source_sha" > "$RUNNER_TEMP/package-sync-body.md" + gh pr create --base main --head "$branch" --draft --label package-sync --title 'Sync LaraCoreKit package source' --body-file "$RUNNER_TEMP/package-sync-body.md" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dce8c51..43ae380 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,38 +1,28 @@ name: Build Assets - on: push: - branches: [ main, develop ] + branches: [main, develop] pull_request: - branches: [ main, develop ] - + branches: [main, develop] +permissions: + contents: read jobs: build: runs-on: ubuntu-latest - name: Build Frontend Assets - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup Node.js - uses: actions/setup-node@v4 + - uses: actions/checkout@v6 + - uses: shivammathur/setup-php@v2 with: - node-version: '20' - cache: 'npm' - - - name: Install dependencies - run: npm ci - - - name: Build assets - run: npm run build - - - name: Check for build errors - run: | - if [ -d "public/build" ]; then - echo "Build directory created successfully" - ls -la public/build - else - echo "Build directory not found!" - exit 1 - fi + php-version: '8.3' + extensions: intl, gd, exif, zip + coverage: none + - run: composer install --prefer-dist --no-interaction + - uses: actions/setup-node@v6 + with: + node-version: '24' + cache: npm + - run: npm ci + - run: npm audit + - run: npm run build:core + - run: npm run build + - run: git diff --exit-code -- packages/core/resources/dist diff --git a/.github/workflows/code-quality.yml b/.github/workflows/code-quality.yml index 5d6990f..d1b63ae 100644 --- a/.github/workflows/code-quality.yml +++ b/.github/workflows/code-quality.yml @@ -1,50 +1,23 @@ name: Code Quality - on: push: - branches: [ main, develop ] + branches: [main, develop] pull_request: - branches: [ main, develop ] - + branches: [main, develop] +permissions: + contents: read jobs: - pint: + quality: runs-on: ubuntu-latest - name: Laravel Pint - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 + - uses: actions/checkout@v6 + - uses: shivammathur/setup-php@v2 with: - php-version: 8.3 - extensions: dom, curl, libxml, mbstring, zip + php-version: '8.3' + extensions: dom, curl, mbstring, zip, pdo_sqlite, bcmath, intl, gd, exif coverage: none - - - name: Install dependencies - run: composer install --prefer-dist --no-interaction - - - name: Run Pint - run: vendor/bin/pint --test - - phpstan: - runs-on: ubuntu-latest - name: PHPStan - - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: 8.3 - extensions: dom, curl, libxml, mbstring, zip - coverage: none - - - name: Install dependencies - run: composer install --prefer-dist --no-interaction - - - name: Run PHPStan - run: vendor/bin/phpstan analyse --memory-limit=2G + - run: composer install --prefer-dist --no-interaction + - run: cp .env.example .env + - run: php artisan key:generate + - run: composer pint-test + - run: composer phpstan diff --git a/.github/workflows/consumer.yml b/.github/workflows/consumer.yml new file mode 100644 index 0000000..2a50961 --- /dev/null +++ b/.github/workflows/consumer.yml @@ -0,0 +1,19 @@ +name: Clean Package Consumer +on: + push: + branches: [main, develop] + pull_request: + branches: [main, develop] +permissions: + contents: read +jobs: + install: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + extensions: dom, curl, mbstring, zip, pdo_sqlite, bcmath, intl, gd, exif + coverage: none + - run: python3 tools/consumer-smoke.py diff --git a/.github/workflows/package-preview.yml b/.github/workflows/package-preview.yml new file mode 100644 index 0000000..b0106f3 --- /dev/null +++ b/.github/workflows/package-preview.yml @@ -0,0 +1,37 @@ +name: Package Release Preview +on: + workflow_dispatch: +permissions: + contents: read +jobs: + package: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + extensions: dom, curl, mbstring, zip, pdo_sqlite, bcmath, intl, gd, exif + coverage: none + - uses: actions/setup-node@v6 + with: + node-version: '24' + cache: npm + - run: composer install --prefer-dist --no-interaction + - run: cp .env.example .env + - run: php artisan key:generate + - run: composer validate --strict + - run: composer --working-dir=packages/core validate --strict + - run: composer audit --locked + - run: composer review + - run: npm ci + - run: npm audit + - run: npm run build:core + - run: python3 tools/consumer-smoke.py + - run: python3 tools/package-release.py + - uses: actions/upload-artifact@v7 + with: + name: laracorekit-package-preview + path: storage/app/releases/ + if-no-files-found: error + retention-days: 14 diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml new file mode 100644 index 0000000..9409ffc --- /dev/null +++ b/.github/workflows/security.yml @@ -0,0 +1,21 @@ +name: Dependency Security +on: + schedule: + - cron: '23 7 * * 2' + workflow_dispatch: +permissions: + contents: read +jobs: + audit: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + coverage: none + - uses: actions/setup-node@v6 + with: + node-version: '24' + - run: composer audit --locked + - run: npm audit --package-lock-only diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index d649e63..db4a398 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,57 +1,34 @@ name: Tests - on: push: - branches: [ main, develop ] + branches: [main, develop] pull_request: - branches: [ main, develop ] - + branches: [main, develop] +permissions: + contents: read jobs: tests: runs-on: ubuntu-latest - strategy: fail-fast: false matrix: - php: [8.3] - laravel: [13.*] - stability: [prefer-stable] - - name: PHP ${{ matrix.php }} - Laravel ${{ matrix.laravel }} - ${{ matrix.stability }} - + php: ['8.3', '8.5'] + dependencies: [locked, compatible] + name: PHP ${{ matrix.php }} / ${{ matrix.dependencies }} steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 + - uses: actions/checkout@v6 + - uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} - extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv + extensions: dom, curl, mbstring, zip, pdo_sqlite, bcmath, intl, gd, exif coverage: none - - - name: Setup problem matchers - run: | - echo "::add-matcher::${{ runner.tool_cache }}/php.json" - echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" - - - name: Install dependencies - run: | - composer require "laravel/framework:${{ matrix.laravel }}" --no-interaction --no-update - composer update --${{ matrix.stability }} --prefer-dist --no-interaction - - - name: Create SQLite database - run: | - mkdir -p database - touch database/database.sqlite - - - name: Setup environment - run: | - cp .env.example .env - php artisan key:generate - - - name: Run migrations - run: php artisan migrate --force - - - name: Execute tests - run: vendor/bin/phpunit --testdox + - run: composer validate --strict + - run: composer --working-dir=packages/core validate --strict + - if: matrix.dependencies == 'locked' + run: composer install --prefer-dist --no-interaction + - if: matrix.dependencies == 'compatible' + run: composer update --with-all-dependencies --prefer-dist --no-interaction + - run: cp .env.example .env + - run: php artisan key:generate + - run: composer audit --locked + - run: composer test diff --git a/.gitignore b/.gitignore index d99a643..ed579b1 100644 --- a/.gitignore +++ b/.gitignore @@ -48,5 +48,12 @@ Thumbs.db /storage/logs/*.log .github/copilot-instructions.md /package-files -/storage/framework/sessions -/storage/framework/views +/storage/framework/sessions/* +!/storage/framework/sessions/.gitignore +/storage/framework/views/* +!/storage/framework/views/.gitignore +/packages/**/vendor +/packages/**/node_modules +/packages/**/composer.lock +/storage/framework/cache/phpstan/ +/storage/app/releases/ diff --git a/CHANGELOG.md b/CHANGELOG.md index e79deb0..94ff184 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Package extraction and website refresh +- Extract `programmernomad/laracorekit` under `packages/core`, bundling both public frontend and admin modules with auto-discovery. +- Move marketing pages and sample seeders into the host; retain Docs/UIShowcase/demo integrations outside the package. +- Add an explicit installer, prebuilt public CSS, interactive administrator creation and clean-consumer smoke testing. +- Update compatible PHP dependencies and the Vite toolchain; separate showcase JavaScript from ordinary pages. +- Add authentication throttling, safe seed defaults, direct resource access checks, settings save authorization and public blog sanitization/publication checks. +- Redesign the website, add mobile navigation and real screenshots, and correct installation/features/upgrade documentation. +- Add machine-readable docs, page descriptions, full documentation sitemap coverage and accurate source-code metadata. +- Add dependency proposals, scheduled security checks and separate locked/compatible PHP CI lanes. + +This package release is prepared locally; registry publication and deployment are separate steps. Earlier entries below describe historical host changes. + + ### Added - Installed `bezhansalleh/filament-language-switch` plugin for a native Filament admin topbar language switcher - Configured `LanguageSwitch` in `AppServiceProvider` with locales `en`, `hi`, `ar`, native labels, and circular avatars diff --git a/CODEOWNERS b/CODEOWNERS index 27d7f7f..601d57d 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -4,14 +4,14 @@ * @ProgrammerNomad @shivsingh # Core modules -/modules/Core/ @ProgrammerNomad -/modules/Auth/ @ProgrammerNomad -/modules/User/ @ProgrammerNomad +/packages/core/modules/Core/ @ProgrammerNomad +/packages/core/modules/Auth/ @ProgrammerNomad +/packages/core/modules/User/ @ProgrammerNomad # Feature modules -/modules/Blog/ @ProgrammerNomad -/modules/Media/ @ProgrammerNomad -/modules/Settings/ @ProgrammerNomad +/packages/core/modules/Blog/ @ProgrammerNomad +/packages/core/modules/Media/ @ProgrammerNomad +/packages/core/modules/Settings/ @ProgrammerNomad # Documentation /docs/ @ProgrammerNomad @@ -30,3 +30,7 @@ package.json @ProgrammerNomad # Database migrations and seeders /database/migrations/ @ProgrammerNomad /database/seeders/ @ProgrammerNomad + +# Package registration, installer and release contract +/packages/core/ @ProgrammerNomad +/tools/ @ProgrammerNomad diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 14cca4a..cf91107 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -60,13 +60,19 @@ Feature suggestions are welcome! Please: 7. **Push to your branch** (`git push origin feature/amazing-feature`) 8. **Open a Pull Request** +## Package and host ownership + +The Composer package is `programmernomad/laracorekit`, with public and admin modules under `packages/core`. The repository root hosts the website, documentation viewer, component showcase and demo integrations. Keep the local path repository and package directory together when developing from GitHub. Read `docs/installation.md` and `docs/upgrade-guide.md` before changing registration or installation behavior. + +Run `python tools/consumer-smoke.py` for an independent package installation in a disposable Laravel application. Never use real data for smoke tests or screenshots. Registration/telemetry is not required for package users. + ## Development Setup ### Prerequisites - PHP 8.3+ - Composer -- Node.js & NPM +- Node.js 22.12+ and npm (CI uses Node 24) - MySQL, PostgreSQL, or SQLite ### Local Installation @@ -78,7 +84,7 @@ cd LaraCoreKit # Install dependencies composer install -npm install +npm ci # Setup environment cp .env.example .env @@ -90,7 +96,7 @@ php artisan migrate --seed php artisan storage:link # Create admin user -php artisan filament:user +php artisan laracorekit:admin # Start development servers npm run dev @@ -113,6 +119,7 @@ vendor/bin/phpstan analyse composer review # Build assets +npm run build:core npm run build ``` @@ -271,7 +278,7 @@ php artisan test --filter=test_user_can_create_blog_post Each module should follow this structure: ``` -modules/YourModule/ +packages/your-addon/ ├── src/ │ ├── YourModuleServiceProvider.php │ ├── Http/ diff --git a/README.md b/README.md index e1fde94..1274abc 100644 --- a/README.md +++ b/README.md @@ -1,519 +1,91 @@ # LaraCoreKit -**A modular Laravel 13 starter kit for building admin-driven and content-driven apps with Filament 5, Livewire 4, and Tailwind 4.** +**A modular Laravel foundation for your public website and admin workspace.** -[![Laravel 13](https://img.shields.io/badge/Laravel-13-FF2D20?style=flat&logo=laravel&logoColor=white)](https://laravel.com) -[![Filament 5](https://img.shields.io/badge/Filament-5-F59E0B?style=flat)](https://filamentphp.com) -[![Livewire 4](https://img.shields.io/badge/Livewire-4-FB70A9?style=flat)](https://livewire.laravel.com) -[![Tailwind 4](https://img.shields.io/badge/Tailwind-4-06B6D4?style=flat&logo=tailwindcss&logoColor=white)](https://tailwindcss.com) -[![Tests](https://github.com/ProgrammerNomad/LaraCoreKit/workflows/Tests/badge.svg)](https://github.com/ProgrammerNomad/LaraCoreKit/actions) -[![Code Quality](https://github.com/ProgrammerNomad/LaraCoreKit/workflows/Code%20Quality/badge.svg)](https://github.com/ProgrammerNomad/LaraCoreKit/actions) -[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) -[![Latest Release](https://img.shields.io/github/v/release/ProgrammerNomad/LaraCoreKit)](https://github.com/ProgrammerNomad/LaraCoreKit/releases) +Laravel 13 · Filament 5 · Livewire 4 · Tailwind CSS 4 · PHP 8.3+ · MIT ---- +[Demo website](https://www.laracorekit.com) · [Documentation](https://www.laracorekit.com/docs) · [Installation](docs/installation.md) · [Security policy](SECURITY.md) -LaraCoreKit gives you a clean starting point with auth, users, roles/permissions, blog, settings, media, multilingual content, and RTL support already structured for real projects. Each official module follows the same contract: migrations, routes, policies, translations, UI, admin resources, tests, and docs. +![LaraCoreKit public website](docs/images/screenshots/homepage.png) -**Live Demo:** [https://www.laracorekit.com](https://www.laracorekit.com) | **Documentation:** [https://www.laracorekit.com/docs](https://www.laracorekit.com/docs) +## Package and demo are separate ---- +The reusable Composer package is **`programmernomad/laracorekit`**, maintained under [`packages/core`](packages/core). It includes public authentication and blog pages, a Filament admin panel, users, roles/permissions, settings and media. It is not admin-only. -## Screenshots - -### Admin Dashboard -![Admin Dashboard](docs/images/screenshots/admin-dashboard.png) -*Filament 5 admin panel with dark mode support, resource management, and widgets* - -### Blog Editor -![Blog Editor](docs/images/screenshots/blog-editor.png) -*Rich text editor with multilingual support, SEO fields, and draft management* - -### UI Component Library -![UI Component Showcase](docs/images/screenshots/ui-showcase.png) -*175+ production-ready Tailwind components across 12 categories* - -### RTL Support -![RTL Layout Support](docs/images/screenshots/rtl-support.png) -*Full right-to-left layout support for Arabic and other RTL languages* - -### Demo Animations - -**Creating a Blog Post** - -![Create Blog Post](docs/images/screenshots/create-blog-post.gif) - -**Language Switching** - -![Language Switch](docs/images/screenshots/language-switching.gif) - ---- - -## What Ships Today - -LaraCoreKit includes these official modules out of the box: - -- **Auth** - Login, registration, password reset, email verification, Sanctum API tokens -- **User Management** - User profiles, account settings, avatar uploads -- **Role & Permission System** - Full RBAC with Spatie Permission -- **Blog Module** - Multilingual blog with draft/published states, SEO fields, rich text editor -- **Settings Module** - Global site configuration, SEO defaults, multilingual settings -- **Media Module** - File uploads, image management, automatic thumbnails, S3/local storage -- **Multilingual Content** - English, Hindi, and Arabic translations built-in -- **RTL Support** - Full right-to-left layout support for Arabic -- **Admin Panel** - Filament 5 admin with resources, pages, and widgets -- **UI Components** - 175+ production-ready Tailwind components - -## What is Optional +This repository also hosts the marketing website, documentation viewer, component showcase and the separately published [demo module](https://packagist.org/packages/programmernomad/laracorekit-demo-module). Those features and sample accounts stay outside the reusable package. -These features are available as separate addon modules or are planned for future releases: +**Release status:** the first standalone Packagist release is being prepared. The registry command below is the intended stable interface, not a claim that the package is already published: -- Billing and subscriptions -- Search integration (Meilisearch/Scout) -- Analytics dashboard -- Advanced notifications -- Teams / multi-tenancy -- E-commerce module -- Payment gateways (Stripe, Razorpay, PayPal) -- Module marketplace - ---- - -## Supported Stack - -| Technology | Version | Purpose | -|------------|---------|---------| -| **PHP** | 8.3+ | Server-side language | -| **Laravel** | 13.x | Backend framework | -| **Filament** | 5.x | Admin panel | -| **Livewire** | 4.x | Dynamic frontend components | -| **Tailwind CSS** | 4.x | Utility-first styling | -| **Alpine.js** | 3.x | Lightweight JavaScript (bundled with Livewire) | -| **Vite** | 5.x | Asset bundler | -| **MySQL/PostgreSQL/SQLite** | Latest | Database options | +```bash +composer require programmernomad/laracorekit +php artisan laracorekit:install +``` ---- +Until publication, install only the package directly from its GitHub VCS repository using the commands in the [installation guide](docs/installation.md). Start with a fresh Laravel 13 application; existing user models and route names need a compatibility review. -## Quick Start +## Run the complete GitHub host -### Installation +Requires Composer 2, PHP 8.3+ and Node 22.12+ (CI uses Node 24). ```bash -# Clone the repository git clone https://github.com/ProgrammerNomad/LaraCoreKit.git my-app cd my-app - -# Install PHP dependencies composer install +npm ci +``` -# Install Node dependencies -npm install +Copy `.env.example` to `.env`, configure your database, then: -# Setup environment -cp .env.example .env +```bash php artisan key:generate - -# Create and setup database (SQLite for quick start) -touch database/database.sqlite php artisan migrate --seed - -# Link storage +php artisan laracorekit:admin php artisan storage:link - -# Create admin user -php artisan filament:user - -# Build frontend assets +npm run build:core npm run build - -# Start development server php artisan serve ``` -Your application will be available at `http://localhost:8000` - -Admin panel at `http://localhost:8000/admin` - -### Development Mode - -For active development with hot-reload: - -```bash -# Terminal 1: Start Laravel dev server -php artisan serve - -# Terminal 2: Start Vite dev server -npm run dev -``` - ---- - -## Demo Credentials - -**Live Demo:** [https://www.laracorekit.com](https://www.laracorekit.com) - -**Admin Panel:** [https://www.laracorekit.com/admin](https://www.laracorekit.com/admin) - -### Demo Accounts - -| Role | Email | Password | -|------|-------|----------| -| **Admin** | admin@laracorekit.com | Admin@123 | -| **Editor** | editor@laracorekit.com | Admin@123 | -| **User** | user@laracorekit.com | User@123 | - -> **Note:** Demo site resets every 30 minutes. Destructive actions are blocked in demo mode. - ---- - -## Included Modules - -Every official LaraCoreKit module is installable, removable, versioned, and documented. Each module includes routes, migrations, seeders, permissions, policies, translations, frontend UI, Filament resources/pages, tests, and upgrade notes. - -### Core Module -- Application bootstrapping -- Module loader system -- Locale management -- Shared layouts and components - -### Auth Module -- User authentication (login, register, logout) -- Email verification -- Password reset functionality -- Sanctum API token authentication -- Two-factor authentication ready -- Session management - -### User Module -- User profile management -- Avatar uploads -- Account settings -- Role and permission assignment -- Filament UserResource for admin -- Public/private profile options - -### Blog Module -- Multilingual blog posts (EN/HI/AR) -- JSON-based translation storage -- Draft, Published, Archived statuses -- SEO-friendly slugs -- Rich text editor -- Featured images -- Meta tags and descriptions -- Categories and tags -- Livewire frontend -- Filament BlogResource for admin - -### Settings Module -- Global site configuration -- Multilingual settings -- SEO defaults (title, meta, OG tags) -- Contact information -- Theme settings -- Filament SettingsPage - -### Media Module -- File and image uploads -- Automatic thumbnail generation -- S3 and local storage support -- Media categories and organization -- Image optimization -- Spatie Media Library integration - ---- - -## Features - -### Modular Architecture -- Clean separation of concerns -- Each feature in its own module -- Predictable structure: routes, migrations, views, tests -- Easy to enable/disable modules -- Version control per module - -### Admin Panel (Filament 5) -- Beautiful, responsive admin interface -- CRUD resources for all modules -- Custom pages and widgets -- Form builder with validation -- Table builder with filters and actions -- Dark mode support -- Role-based access control - -### Frontend (Livewire 4 + Tailwind 4) -- Dynamic components without writing JavaScript -- 175+ pre-built UI components -- Responsive and mobile-friendly -- Dark mode toggle -- Alpine.js for interactions -- Fast page loads with Vite - -### Multilingual System -- English, Hindi, and Arabic included -- JSON-based translation storage -- Locale middleware and switcher -- Translatable database fields -- RTL layout support for Arabic -- Easy to add more languages - -### Role & Permission System -- Full RBAC with Spatie Permission -- Module-level permissions -- Role-based resource access -- Permission assignment UI in admin -- Policy-driven authorization -- Customizable permission structure +Normal seeding creates roles, not public sample accounts. Only a disposable demo instance should enable `DEMO_MODE=true` and run the guarded DemoSeeder. Never use demo credentials in production. -### Developer Experience -- Laravel Pint for code formatting -- PHPStan for static analysis -- PHPUnit test suite included -- GitHub Actions workflows -- Well-documented code -- IDE helper support +## What is included ---- +| Public frontend | Admin and infrastructure | +| --- | --- | +| Login and password recovery | Filament administration | +| Optional registration and account dashboard | Users, roles and permissions | +| Public multilingual blog | Blog authoring and publication | +| English, Hindi and Arabic language switching | Settings and media attachments | +| RTL-aware shared layout | Configurable modules and view overrides | -## UI Component Library +API tokens, enforced email verification, billing, tenancy and a marketplace are not bundled. Check [architecture](docs/core/architecture.md) and [production setup](docs/deployment/production.md) before adopting. -LaraCoreKit includes 175+ production-ready UI components built with Tailwind CSS and Livewire. View them all at [https://www.laracorekit.com/ui-showcase](https://www.laracorekit.com/ui-showcase) - -**Component Categories:** -- Typography (headings, paragraphs, lists, code blocks) -- Buttons (variants, sizes, states, groups) -- Forms (inputs, selects, checkboxes, radios, file uploads) -- Navigation (headers, sidebars, breadcrumbs, tabs, pagination) -- Layouts (cards, grids, containers, sections) -- Data Display (tables, lists, badges, avatars, stats) -- Feedback (alerts, modals, notifications, progress bars) -- Charts (line, bar, pie, radar, area charts) -- Media (galleries, lightbox, video, audio players) -- Auth (login, register, profile, sessions) -- E-commerce (products, cart, checkout, reviews) -- Advanced (drag-drop, calendar, Kanban boards) - ---- - -## Module Development - -### Official Module Contract - -Each LaraCoreKit module follows this structure: - -``` -modules/YourModule/ -├── src/ -│ ├── YourModuleServiceProvider.php -│ ├── Http/ -│ │ ├── Controllers/ -│ │ ├── Livewire/ -│ │ └── Middleware/ -│ ├── Models/ -│ ├── Policies/ -│ ├── Filament/ -│ │ ├── Resources/ -│ │ ├── Pages/ -│ │ └── Widgets/ -│ └── Console/ -├── database/ -│ ├── migrations/ -│ ├── seeders/ -│ └── factories/ -├── routes/ -│ ├── web.php -│ └── api.php -├── views/ -├── lang/ -│ ├── en.json -│ ├── hi.json -│ └── ar.json -├── config/ -├── tests/ -│ ├── Feature/ -│ └── Unit/ -├── composer.json -├── README.md -└── CHANGELOG.md -``` - -### Creating a Module - -Documentation for creating custom modules: [https://www.laracorekit.com/docs/contributing/module-development](https://www.laracorekit.com/docs/contributing/module-development) - ---- +## Screenshots ---- +![Filament administration](docs/images/screenshots/admin-dashboard.png) +![Public blog](docs/images/screenshots/blog.png) +![Component showcase](docs/images/screenshots/ui-showcase.png) -## Quality Assurance +Screenshots show the local demonstration application, including host-only features. They do not imply that the demo website is included in the package. -### Code Quality Tools +## Development and validation ```bash -# Run tests composer test -php artisan test - -# Run code style fixer -composer pint -./vendor/bin/pint - -# Run static analysis -./vendor/bin/phpstan analyse - -# Run all quality checks -composer review +composer pint-test +composer phpstan +composer audit --locked +npm audit +npm run build:core +npm run build ``` -### Continuous Integration - -LaraCoreKit uses GitHub Actions for automated testing: -- PHPUnit tests on every push and pull request -- Laravel Pint code style checks -- PHPStan static analysis -- Frontend asset build verification - -View workflows: [.github/workflows](.github/workflows) - ---- - -## Included Packages - -### Laravel Official -- **Breeze** - Authentication scaffolding -- **Sanctum** - API authentication -- **Pint** - Code style formatter -- **Tinker** - REPL for Laravel - -### Spatie -- **laravel-permission** - Role and permission management -- **laravel-medialibrary** - Media/file handling -- **laravel-sitemap** - Sitemap generation - -### Filament -- **filament/filament** - Admin panel framework - -### Livewire -- **livewire/livewire** - Full-stack framework - ---- - -## Roadmap - -### Version 1.0 (Next Release) -- [ ] Module marketplace/registry -- [ ] CLI module installer -- [ ] Packagist/Laravel installer support -- [ ] Enhanced documentation with screenshots -- [ ] Video tutorials -- [ ] Example applications - -### Future Releases -- [ ] Search module (Meilisearch/Scout) -- [ ] Analytics dashboard module -- [ ] Notification center module -- [ ] Social authentication (Google, GitHub) -- [ ] Teams/multi-tenancy module -- [ ] E-commerce addon module -- [ ] Payment gateway integrations -- [ ] GraphQL API support -- [ ] Webhook system -- [ ] Audit log module -- [ ] Two-factor authentication UI - -See full roadmap: [https://github.com/ProgrammerNomad/LaraCoreKit/issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues) +See [contribution guidelines](CONTRIBUTING.md), [upgrade guide](docs/upgrade-guide.md), and [package release checklist](docs/package-release.md). Keep changes to package code in `packages/core`; site-specific changes belong in the host. Published assets must be rebuilt when their source changes. ---- +## Adoption and privacy -## Documentation - -Comprehensive documentation is available at [https://www.laracorekit.com/docs](https://www.laracorekit.com/docs) - -### Quick Links -- [Introduction](https://www.laracorekit.com/docs/introduction) -- [Installation](https://www.laracorekit.com/docs/installation) -- [Quick Start](https://www.laracorekit.com/docs/quick-start) -- [Project Structure](https://www.laracorekit.com/docs/project-structure) -- [Module System](https://www.laracorekit.com/docs/core/modules-system) -- [Multilingual Support](https://www.laracorekit.com/docs/features/multilingual) -- [Contributing](https://www.laracorekit.com/docs/contributing) - ---- - -## Contributing - -We welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details. - -### Ways to Contribute -- Report bugs via [GitHub Issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues) -- Suggest features or improvements -- Submit pull requests -- Improve documentation -- Share your LaraCoreKit projects -- Help others in discussions - -### Development Process -1. Fork the repository -2. Create a feature branch -3. Make your changes -4. Write/update tests -5. Run quality checks -6. Submit a pull request - -Read the full guide: [CONTRIBUTING.md](CONTRIBUTING.md) - ---- - -## Security - -If you discover a security vulnerability, please use GitHub Security Advisories: - -- Go to https://github.com/ProgrammerNomad/LaraCoreKit/security/advisories/new -- Or contact the repository owner directly through GitHub - -All security vulnerabilities will be promptly addressed. See [SECURITY.md](SECURITY.md) for details. - -Please see our [Security Policy](SECURITY.md) for more information. - ---- +No registration, activation or telemetry is required. Packagist downloads can measure distribution activity after publication, not unique developers or active projects. The host includes a validated daily snapshot command and optional scheduler configuration; see [release and metrics setup](docs/package-release.md). Contributions, issues and voluntary showcase submissions are welcome. Search engines and AI tools can read server-rendered docs and `/llms.txt`; no ranking or recommendation is promised. ## License -LaraCoreKit is open-source software licensed under the [MIT license](LICENSE). - ---- - -## Support - -- **Documentation:** https://www.laracorekit.com/docs -- **Issues:** https://github.com/ProgrammerNomad/LaraCoreKit/issues -- **Discussions:** https://github.com/ProgrammerNomad/LaraCoreKit/discussions - ---- - -## Credits - -Created and maintained by [Shiv Singh](https://github.com/ProgrammerNomad) - -Built with these amazing open-source projects: -- [Laravel](https://laravel.com) -- [Filament](https://filamentphp.com) -- [Livewire](https://livewire.laravel.com) -- [Tailwind CSS](https://tailwindcss.com) -- [Alpine.js](https://alpinejs.dev) -- [Spatie Packages](https://spatie.be/open-source) - ---- - -**Star this project on GitHub if you find it useful!** - -If this project helps you: - -- Star the repo -- Contribute improvements -- Share with the community - -Thank you for supporting open-source! - ---- - -**Happy Coding - Build Something Amazing!** \ No newline at end of file +[MIT](LICENSE). Report sensitive vulnerabilities through the [security policy](SECURITY.md). diff --git a/ROADMAP.md b/ROADMAP.md index a8e1ec0..3e89a64 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -1,175 +1,26 @@ -# LaraCoreKit Roadmap +# Roadmap -This document outlines the development roadmap for LaraCoreKit. Items are organized by release version and priority. +## First standalone package release -## Version 0.1.0 (Next Release) - Q2 2026 +- [x] Extract reusable public and admin modules into `programmernomad/laracorekit`. +- [x] Keep demo website, Docs, UIShowcase and sample accounts outside the package. +- [x] Add configuration/asset installation and interactive administrator creation. +- [x] Update website, installation docs and module guides around both installation paths. +- [x] Add independent consumer smoke tests, security regressions and dependency update proposals. +- [x] Refresh public/admin screenshots using disposable fixtures. +- [ ] Create/configure the dedicated package repository and export reviewed package source. +- [ ] Publish a reviewed semantic version tag and register it on Packagist. +- [ ] Verify a registry-based installation and enable repository branch protections/security settings. +- [x] Implement validated daily Packagist snapshot collection without install telemetry. +- [ ] Enable the statistics collector on persistent production storage after publication. -Focus: Trust, Documentation, and Distribution +## Next priorities -### High Priority -- [ ] Add production screenshots to README and homepage -- [ ] Create demo walkthrough GIFs -- [ ] Publish comprehensive module development guide -- [ ] Add per-page documentation metadata -- [ ] Publish to Packagist -- [ ] Submit for Laravel installer support -- [ ] Create first official GitHub release with release notes -- [ ] Add code coverage reporting +- Broader database coverage and additional upload/authorization regression tests. +- Document and test migration paths for custom existing user models. +- More complete translations of website marketing copy and accessibility testing of individual showcase examples. +- Release automation from the monorepo into the dedicated package repository. -### Medium Priority -- [ ] Create comparison documentation (vs Larament, vs official starter) -- [ ] Add FAQ page -- [ ] Implement structured data for SEO -- [ ] Add "view source" links in UI showcase -- [ ] Create video tutorials for installation and basic usage -- [ ] Enhance demo site with auto-reset banner +## Optional future work -### Low Priority -- [ ] Add more UI component examples -- [ ] Create example applications repository -- [ ] Write implementation blog posts - -## Version 0.2.0 - Q3 2026 - -Focus: Enhanced Features and Developer Experience - -### Core Improvements -- [ ] Enhanced test coverage (target: 80%+) -- [ ] Performance optimization and benchmarking -- [ ] Improved error handling and logging -- [ ] Database query optimization -- [ ] Cache strategy implementation - -### Module Enhancements -- [ ] Blog: Add categories and tags -- [ ] Blog: Add featured posts and pinning -- [ ] Blog: Implement reading time estimation -- [ ] Media: Add image editing capabilities -- [ ] Media: Bulk upload and management -- [ ] Settings: Add theme customization options -- [ ] User: Add user activity tracking - -### Developer Tools -- [ ] Laravel Telescope integration guide -- [ ] Debugging best practices documentation -- [ ] Module scaffolding CLI command -- [ ] Automated module installer command - -## Version 0.3.0 - Q4 2026 - -Focus: Search, Analytics, and Social Features - -### New Features -- [ ] Search module (Meilisearch/Scout integration) -- [ ] Analytics dashboard module -- [ ] Notification center module -- [ ] Social authentication (Google, GitHub, Facebook) -- [ ] Activity/Audit log module -- [ ] Email template management - -### Platform Improvements -- [ ] API versioning strategy -- [ ] Rate limiting configuration -- [ ] Webhook system -- [ ] Event sourcing support -- [ ] Queue optimization - -## Version 1.0.0 - Q1 2027 - -Focus: Production Stability and Module Ecosystem - -### Production Readiness -- [ ] Security audit and penetration testing -- [ ] Performance benchmarking -- [ ] Load testing and optimization -- [ ] Comprehensive upgrade guides -- [ ] Production deployment guide -- [ ] Backup and disaster recovery documentation - -### Module Marketplace -- [ ] Module registry/marketplace UI -- [ ] Module versioning and compatibility system -- [ ] Module discovery and installation flow -- [ ] Module review and rating system -- [ ] Module documentation standards - -### Optional Addon Modules -- [ ] E-commerce module -- [ ] Payment gateway integrations (Stripe, Razorpay, PayPal) -- [ ] Teams/multi-tenancy module -- [ ] Subscription/billing module -- [ ] Advanced permissions module - -## Version 2.0.0 - Future - -Focus: Advanced Features and Scalability - -### Advanced Features -- [ ] GraphQL API support -- [ ] Real-time features with WebSockets -- [ ] Advanced caching strategies -- [ ] Multi-database support -- [ ] Horizontal scaling guide -- [ ] Microservices architecture option - -### Enterprise Features -- [ ] Advanced audit logging -- [ ] Compliance tools (GDPR, CCPA) -- [ ] Advanced backup solutions -- [ ] High availability setup -- [ ] Enterprise support options - -## Ongoing Priorities - -These items are continuously maintained across all versions: - -### Documentation -- Keep all documentation up-to-date -- Add more examples and use cases -- Create video tutorials -- Translate documentation to more languages -- Improve search and discoverability - -### Quality Assurance -- Maintain high test coverage -- Regular security updates -- Performance monitoring -- Code quality improvements -- Dependency updates - -### Community -- Respond to issues and discussions -- Review and merge pull requests -- Engage with community feedback -- Highlight community contributions -- Foster module ecosystem - -### SEO & Marketing -- Regular blog posts and tutorials -- Social media presence -- Community showcases -- Conference presentations -- Open-source advocacy - -## How to Contribute - -Want to help with any of these roadmap items? - -1. Check the [Issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues) page for tasks -2. Comment on an issue to express interest -3. Read the [Contributing Guide](../CONTRIBUTING.md) -4. Submit a pull request - -## Feature Requests - -Have an idea not on this roadmap? - -1. Check [Discussions](https://github.com/ProgrammerNomad/LaraCoreKit/discussions) -2. Open a [Feature Request](https://github.com/ProgrammerNomad/LaraCoreKit/issues/new?template=feature_request.md) -3. Participate in community voting - ---- - -**Last Updated:** April 22, 2026 - -**Note:** This roadmap is subject to change based on community feedback, priorities, and resources. Dates are approximate targets, not commitments. +Email-verification enforcement, API authentication, billing, tenancy and external search integrations require separate implementation and compatibility testing. These are not claims about current bundled features. No release dates are promised until scope and maintainers are assigned. diff --git a/SECURITY.md b/SECURITY.md index a7e5816..805c3e6 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,105 +1,19 @@ -# Security Policy +# Security policy -## Supported Versions +The standalone `programmernomad/laracorekit` package is currently unreleased. The development branch is being prepared for its first reviewed release. Older demo tags do not imply that their dependency lockfiles remain secure; audit and upgrade before deploying. -We release patches for security vulnerabilities in the following versions: +## Reporting a vulnerability -| Version | Supported | -| ------- | ------------------ | -| 0.0.2 | :white_check_mark: | -| 0.0.1 | :x: | +Report sensitive issues through [GitHub private vulnerability reporting](https://github.com/ProgrammerNomad/LaraCoreKit/security/advisories/new). Include affected commit/version, impact and a minimal reproduction. Do not post secrets or exploitable details in public issues. Repository administrators must enable private reporting if the form is unavailable. -## Reporting a Vulnerability +Maintainers will assess reports and coordinate fixes and disclosure. Response and fix times depend on severity and maintainer availability; this project does not provide a guaranteed security-response SLA. -We take security seriously at LaraCoreKit. If you discover a security vulnerability, please follow these steps: +## Deployment expectations -### Where to Report +- Use reviewed lockfiles and run Composer/npm audits regularly. +- Set `APP_DEBUG=false`, use HTTPS and keep environment files and logs private. +- Keep demo mode disabled in customer applications. Never deploy sample credentials or the demo reset scheduler against real data. +- Create administrators with unique passwords. Review permissions on public Livewire actions and direct admin record routes. +- Test upload restrictions, mail recovery and data backups for your deployment. -**DO NOT** create a public GitHub issue for security vulnerabilities. - -Instead, please use one of these methods: - -**Option 1: GitHub Security Advisories (Recommended)** -- Go to https://github.com/ProgrammerNomad/LaraCoreKit/security/advisories/new -- This creates a private security advisory - -**Option 2: Private Email** -- **Email:** Contact the repository owner directly through GitHub -- **Subject:** [SECURITY] Brief description of the issue - -### What to Include - -Please provide the following information: - -1. **Description** - Clear description of the vulnerability -2. **Steps to Reproduce** - Detailed steps to reproduce the issue -3. **Impact** - Potential impact and severity assessment -4. **Affected Versions** - Which versions of LaraCoreKit are affected -5. **Suggested Fix** - If you have a fix or mitigation suggestion -6. **Disclosure Timeline** - Your preferred disclosure timeline - -### Response Timeline - -- **Initial Response:** Within 48 hours -- **Status Update:** Within 7 days -- **Fix Timeline:** Depends on severity - - Critical: 1-7 days - - High: 7-14 days - - Medium: 14-30 days - - Low: 30-60 days - -### Disclosure Policy - -We follow responsible disclosure practices: - -1. We will acknowledge your email within 48 hours -2. We will provide a detailed response within 7 days -3. We will work with you to understand and validate the issue -4. We will develop and test a fix -5. We will release a security patch -6. We will credit you in the release notes (unless you prefer to remain anonymous) - -### Security Updates - -Security updates will be: -- Released as patch versions -- Documented in CHANGELOG.md -- Announced on GitHub Releases -- Tagged with `security` label - -### Security Best Practices - -When using LaraCoreKit: - -1. **Keep Updated** - Always use the latest supported version -2. **Environment Files** - Never commit `.env` files to version control -3. **Credentials** - Use strong passwords and rotate API keys regularly -4. **Database** - Run migrations and seeders only in trusted environments -5. **File Permissions** - Ensure proper file and directory permissions -6. **Dependencies** - Keep all Composer and NPM dependencies updated -7. **HTTPS** - Always use HTTPS in production -8. **Demo Mode** - Never use demo credentials in production - -### Scope - -This security policy applies to: -- LaraCoreKit core framework -- Official modules (Auth, Blog, Core, Media, Settings, User) -- Official documentation -- Official demo site - -This policy does NOT apply to: -- Third-party modules -- Custom implementations -- Modified versions -- Development/staging environments - -## Hall of Fame - -We thank the following researchers for responsibly disclosing security issues: - -(No reports yet) - ---- - -**Last Updated:** April 22, 2026 +The package requires no activation, telemetry or user registration. The current automated tests are not an independent security audit. Read [production setup](docs/deployment/production.md) before deploying. diff --git a/app/Console/Commands/CollectPackageStats.php b/app/Console/Commands/CollectPackageStats.php new file mode 100644 index 0000000..8d7804b --- /dev/null +++ b/app/Console/Commands/CollectPackageStats.php @@ -0,0 +1,60 @@ +toDateString(); + $path = 'metrics/packagist/'.$day.'.json'; + $disk = Storage::disk('local'); + if ($disk->exists($path)) { + $this->info('A download snapshot already exists for '.$day.'.'); + + return self::SUCCESS; + } + + try { + $response = Http::timeout(15)->withUserAgent('LaraCoreKit statistics (+https://www.laracorekit.com)') + ->get('https://packagist.org/packages/programmernomad/laracorekit/stats.json'); + if ($response->status() === 404) { + $this->line('Package is not registered yet; no snapshot was recorded.'); + + return self::SUCCESS; + } + $response->throw(); + $downloads = $response->json('downloads'); + foreach (['total', 'monthly', 'daily'] as $field) { + if (! is_array($downloads) || ! isset($downloads[$field]) || ! is_int($downloads[$field]) || $downloads[$field] < 0) { + throw new \RuntimeException('Invalid Packagist statistics response.'); + } + } + $saved = $disk->put($path, json_encode([ + 'package' => 'programmernomad/laracorekit', + 'collected_at' => now('UTC')->toIso8601String(), + 'downloads' => $downloads, + 'metric' => 'downloads, not unique developers or installations', + ], JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR)); + if (! $saved) { + throw new \RuntimeException('Could not persist download statistics.'); + } + } catch (\Throwable $error) { + $this->error('Statistics collection failed; no zero-valued replacement was recorded. '.$error->getMessage()); + + return self::FAILURE; + } + + $this->info('Download snapshot saved for '.$day.'.'); + + return self::SUCCESS; + } +} diff --git a/app/Console/Commands/GenerateSitemap.php b/app/Console/Commands/GenerateSitemap.php index c965140..6ee45b1 100644 --- a/app/Console/Commands/GenerateSitemap.php +++ b/app/Console/Commands/GenerateSitemap.php @@ -2,130 +2,24 @@ namespace App\Console\Commands; +use App\Http\Controllers\SitemapController; use Illuminate\Console\Command; -use Spatie\Sitemap\SitemapGenerator; -use Spatie\Sitemap\Tags\Url; +use Illuminate\Support\Facades\File; class GenerateSitemap extends Command { - /** - * The name and signature of the console command. - * - * @var string - */ protected $signature = 'sitemap:generate'; - /** - * The console command description. - * - * @var string - */ - protected $description = 'Generate the XML sitemap for search engines.'; + protected $description = 'Export the dynamic website sitemap to private storage for inspection'; - /** - * Execute the console command. - */ - public function handle() + public function handle(): int { - // Use the configured app url or the local dev server - $appUrl = config('app.url') === 'http://localhost' ? 'http://127.0.0.1:8000' : config('app.url'); + $path = storage_path('app/exports/sitemap.xml'); + File::ensureDirectoryExists(dirname($path)); + File::put($path, app(SitemapController::class)->index()->getContent()); + $this->info('Sitemap exported to '.$path); + $this->line('Search engines should use the live /sitemap.xml route.'); - $this->info("Crawling {$appUrl} to generate sitemap..."); - - $sitemap = SitemapGenerator::create($appUrl) - ->hasCrawled(function (Url $url) { - // Ignore admin panel and livewire internal routes - if ($url->segment(1) === 'admin' || $url->segment(1) === 'livewire') { - return null; - } - - // Set priority and change frequency based on URL patterns - $path = $url->path(); - - // Homepage - highest priority - if ($path === '/') { - $url->setPriority(1.0) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY) - ->setLastModificationDate(now()); - } - // Blog posts - high priority, updated frequently - elseif (str_starts_with($path, '/blog/')) { - $url->setPriority(0.8) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY) - ->setLastModificationDate(now()); - } - // Main sections (blog, docs, ui-showcase) - elseif (in_array($path, ['/blog', '/docs', '/ui-showcase'])) { - $url->setPriority(0.9) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_DAILY) - ->setLastModificationDate(now()); - } - // Documentation pages - elseif (str_starts_with($path, '/docs/')) { - $url->setPriority(0.7) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY) - ->setLastModificationDate(now()); - } - // UI Showcase component pages - elseif (str_starts_with($path, '/ui-showcase/') && substr_count($path, '/') >= 2) { - $url->setPriority(0.7) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY) - ->setLastModificationDate(now()); - } - // UI Showcase category pages - elseif (str_starts_with($path, '/ui-showcase/')) { - $url->setPriority(0.6) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY) - ->setLastModificationDate(now()); - } - // Auth pages (login, register) - lower priority - elseif (in_array($path, ['/login', '/register', '/forgot-password'])) { - $url->setPriority(0.3) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY) - ->setLastModificationDate(now()); - } - // Everything else - medium priority - else { - $url->setPriority(0.5) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_MONTHLY) - ->setLastModificationDate(now()); - } - - return $url; - }) - ->getSitemap(); - - // Add component URLs from config that might not be crawled - $categories = config('showcase.components.categories', []); - foreach ($categories as $categorySlug => $category) { - if (isset($category['components'])) { - foreach ($category['components'] as $componentSlug => $component) { - $componentUrl = "{$appUrl}/ui-showcase/{$categorySlug}/{$componentSlug}"; - - // Check if URL already exists in sitemap - $exists = false; - foreach ($sitemap->getTags() as $tag) { - if ($tag->url === $componentUrl) { - $exists = true; - break; - } - } - - // Add if it doesn't exist - if (!$exists) { - $sitemap->add( - Url::create($componentUrl) - ->setPriority(0.7) - ->setChangeFrequency(Url::CHANGE_FREQUENCY_WEEKLY) - ->setLastModificationDate(now()) - ); - } - } - } - } - - $sitemap->writeToFile(public_path('sitemap.xml')); - - $this->info('Sitemap generated successfully in public/sitemap.xml!'); + return self::SUCCESS; } } diff --git a/app/Filament/Pages/Dashboard.php b/app/Filament/Pages/Dashboard.php index 444f12d..1892b4b 100644 --- a/app/Filament/Pages/Dashboard.php +++ b/app/Filament/Pages/Dashboard.php @@ -4,5 +4,4 @@ use Filament\Pages\Dashboard as BaseDashboard; -class Dashboard extends BaseDashboard -{} +class Dashboard extends BaseDashboard {} diff --git a/app/Http/Controllers/SitemapController.php b/app/Http/Controllers/SitemapController.php index 40e2fbb..d00029c 100644 --- a/app/Http/Controllers/SitemapController.php +++ b/app/Http/Controllers/SitemapController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers; use Illuminate\Http\Response; +use Modules\Blog\Models\Blog; +use Modules\Docs\Http\Controllers\DocsController; class SitemapController extends Controller { @@ -11,8 +13,8 @@ public function index(): Response $blogs = collect(); try { - $blogs = \Modules\Blog\Models\Blog::query() - ->where('status', 'published') + $blogs = Blog::query() + ->published() ->whereNotNull('published_at') ->orderByDesc('published_at') ->get(['slug', 'updated_at', 'published_at']); @@ -20,8 +22,10 @@ public function index(): Response // Table may not exist yet during install } + $docs = app(DocsController::class)->publishedPages(); + return response() - ->view('sitemap', compact('blogs')) + ->view('sitemap', compact('blogs', 'docs')) ->header('Content-Type', 'application/xml; charset=utf-8'); } } diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index 6ecdd92..bfbf7cf 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -12,7 +12,7 @@ class RedirectIfAuthenticated /** * Handle an incoming request. * - * @param \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response) $next + * @param Closure(Request): (Response) $next */ public function handle(Request $request, Closure $next, string ...$guards): Response { @@ -21,12 +21,12 @@ public function handle(Request $request, Closure $next, string ...$guards): Resp foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { $user = Auth::guard($guard)->user(); - + // Redirect based on user role if ($user->hasRole(['Admin', 'Editor'])) { return redirect('/admin'); } - + // Regular users go to dashboard return redirect('/dashboard'); } diff --git a/modules/Core/src/Http/Livewire/Changelog.php b/app/Livewire/Changelog.php similarity index 84% rename from modules/Core/src/Http/Livewire/Changelog.php rename to app/Livewire/Changelog.php index 6b414ab..525d3b8 100644 --- a/modules/Core/src/Http/Livewire/Changelog.php +++ b/app/Livewire/Changelog.php @@ -1,10 +1,10 @@ changelog = File::get($changelogPath); } else { @@ -24,6 +24,6 @@ public function mount() public function render() { - return view('core::livewire.changelog'); + return view('site.changelog'); } } diff --git a/modules/Core/src/Http/Livewire/Home.php b/app/Livewire/Home.php similarity index 64% rename from modules/Core/src/Http/Livewire/Home.php rename to app/Livewire/Home.php index 64066ce..60bf33b 100644 --- a/modules/Core/src/Http/Livewire/Home.php +++ b/app/Livewire/Home.php @@ -1,9 +1,10 @@ latest('published_at') ->take(3) ->get(); @@ -19,8 +20,8 @@ public function render() $latestPosts = collect(); } - return view('core::livewire.home', [ - 'latestPosts' => $latestPosts + return view('site.home', [ + 'latestPosts' => $latestPosts, ]); } } diff --git a/app/Providers/Filament/AdminPanelProvider.php b/app/Providers/Filament/AdminPanelProvider.php index 4cc4b86..6792ecf 100644 --- a/app/Providers/Filament/AdminPanelProvider.php +++ b/app/Providers/Filament/AdminPanelProvider.php @@ -2,19 +2,27 @@ namespace App\Providers\Filament; +use App\Filament\Pages\Dashboard; use Filament\Http\Middleware\Authenticate; use Filament\Http\Middleware\AuthenticateSession; use Filament\Panel; use Filament\PanelProvider; use Filament\Support\Colors\Color; use Filament\Widgets\AccountWidget; -use Filament\Widgets\FilamentInfoWidget; use Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse; use Illuminate\Cookie\Middleware\EncryptCookies; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken; use Illuminate\Routing\Middleware\SubstituteBindings; use Illuminate\Session\Middleware\StartSession; use Illuminate\View\Middleware\ShareErrorsFromSession; +use LaraCoreKit\Core\Filament\LocalAvatarProvider; +use LaraCoreKit\Core\Filament\OverviewStats; +use LaraCoreKit\DemoModule\Filament\Widgets\DemoBannerWidget; +use Modules\Blog\Filament\Resources\BlogResource; +use Modules\Settings\Filament\Pages\Settings; +use Modules\User\Filament\Resources\Permissions\PermissionResource; +use Modules\User\Filament\Resources\Roles\RoleResource; +use Modules\User\Filament\Resources\UserResource; class AdminPanelProvider extends PanelProvider { @@ -28,29 +36,29 @@ public function panel(Panel $panel): Panel ->login() ->authGuard('web') ->brandName('LaraCoreKit') + ->defaultAvatarProvider(LocalAvatarProvider::class) ->brandLogo(asset('images/logo.svg')) ->darkMode(true) - ->renderHook('panels::body.end', fn() => view('filament.login-placeholders')) ->colors([ 'primary' => Color::Red, 'danger' => Color::Red, ]) - ->font('Inter') ->resources([ - \Modules\Blog\Filament\Resources\BlogResource::class, - \Modules\User\Filament\Resources\UserResource::class, - \Modules\User\Filament\Resources\Roles\RoleResource::class, - \Modules\User\Filament\Resources\Permissions\PermissionResource::class, + BlogResource::class, + UserResource::class, + RoleResource::class, + PermissionResource::class, ]) ->pages([ - \App\Filament\Pages\Dashboard::class, - \Modules\Settings\Filament\Pages\Settings::class, + Dashboard::class, + Settings::class, ]) ->discoverWidgets(in: app_path('Filament/Widgets'), for: 'App\Filament\Widgets') ->widgets([ AccountWidget::class, - FilamentInfoWidget::class, - \LaraCoreKit\DemoModule\Filament\Widgets\DemoBannerWidget::class, + OverviewStats::class, + ...(config('demo.enabled') && class_exists(DemoBannerWidget::class) + ? [DemoBannerWidget::class] : []), ]) ->middleware([ EncryptCookies::class, diff --git a/app/Providers/ModuleServiceProvider.php b/app/Providers/ModuleServiceProvider.php deleted file mode 100644 index b892867..0000000 --- a/app/Providers/ModuleServiceProvider.php +++ /dev/null @@ -1,27 +0,0 @@ - $moduleConfig) { - if ($moduleConfig['enabled'] ?? false) { - $providerClass = $moduleConfig['provider'] ?? null; - if ($providerClass && class_exists($providerClass)) { - $this->app->register($providerClass); - } - } - } - } - - public function boot(): void - { - // - } -} diff --git a/bootstrap/app.php b/bootstrap/app.php index dc9585d..610542c 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -1,5 +1,6 @@ withMiddleware(function (Middleware $middleware) { - $middleware->web(append: [ - \Modules\Core\Http\Middleware\SetLocale::class, - ]); - + $middleware->alias([ - 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'guest' => RedirectIfAuthenticated::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { diff --git a/bootstrap/providers.php b/bootstrap/providers.php index fa67da1..365d3a3 100644 --- a/bootstrap/providers.php +++ b/bootstrap/providers.php @@ -1,13 +1,11 @@ =5.3.0" + "php": ">=7.4" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + "phpunit/phpunit": "^6 || ^7 || ^8 || ^9 || ^10" }, "type": "library", "extra": { @@ -3602,22 +3833,22 @@ ], "support": { "issues": "https://github.com/Masterminds/html5-php/issues", - "source": "https://github.com/Masterminds/html5-php/tree/2.10.0" + "source": "https://github.com/Masterminds/html5-php/tree/2.11.0" }, - "time": "2025-07-25T09:04:22+00:00" + "time": "2026-08-18T06:18:41+00:00" }, { "name": "monolog/monolog", - "version": "3.10.0", + "version": "3.12.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0" + "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/b321dd6749f0bf7189444158a3ce785cc16d69b0", - "reference": "b321dd6749f0bf7189444158a3ce785cc16d69b0", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/d7059e4c691d05ea1222b5124bed0f961be46e15", + "reference": "d7059e4c691d05ea1222b5124bed0f961be46e15", "shasum": "" }, "require": { @@ -3643,6 +3874,7 @@ "phpstan/phpstan-strict-rules": "^2", "phpunit/phpunit": "^10.5.17 || ^11.0.7", "predis/predis": "^1.1 || ^2", + "psr/clock": "^1.0", "rollbar/rollbar": "^4.0", "ruflin/elastica": "^7 || ^8", "symfony/mailer": "^5.4 || ^6", @@ -3661,6 +3893,7 @@ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "psr/clock": "Required to pass a clock to the Logger and control the timestamp of log records", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, @@ -3695,7 +3928,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.10.0" + "source": "https://github.com/Seldaek/monolog/tree/3.12.1" }, "funding": [ { @@ -3707,20 +3940,20 @@ "type": "tidelift" } ], - "time": "2026-01-02T08:56:05+00:00" + "time": "2026-09-29T19:21:12+00:00" }, { "name": "nesbot/carbon", - "version": "3.11.4", + "version": "3.15.0", "source": { "type": "git", "url": "https://github.com/CarbonPHP/carbon.git", - "reference": "e890471a3494740f7d9326d72ce6a8c559ffee60" + "reference": "217d38553209bdb44e01590d9e9a2e4df8354cce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/e890471a3494740f7d9326d72ce6a8c559ffee60", - "reference": "e890471a3494740f7d9326d72ce6a8c559ffee60", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/217d38553209bdb44e01590d9e9a2e4df8354cce", + "reference": "217d38553209bdb44e01590d9e9a2e4df8354cce", "shasum": "" }, "require": { @@ -3730,6 +3963,7 @@ "psr/clock": "^1.0", "symfony/clock": "^6.3.12 || ^7.0 || ^8.0", "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-time": "^1.0", "symfony/translation": "^4.4.18 || ^5.2.1 || ^6.0 || ^7.0 || ^8.0" }, "provide": { @@ -3740,7 +3974,7 @@ "doctrine/orm": "^2.15.2 || ^3.0", "friendsofphp/php-cs-fixer": "^v3.87.1", "kylekatarnls/multi-tester": "^2.5.3", - "phpmd/phpmd": "^2.15.0", + "phpmd/phpmd": "^3.0@dev", "phpstan/extension-installer": "^1.4.3", "phpstan/phpstan": "^2.1.22", "phpunit/phpunit": "^10.5.53", @@ -3812,7 +4046,7 @@ "type": "tidelift" } ], - "time": "2026-04-07T09:57:54+00:00" + "time": "2026-10-18T18:27:53+00:00" }, { "name": "nette/php-generator", @@ -3890,16 +4124,16 @@ }, { "name": "nette/schema", - "version": "v1.3.5", + "version": "v1.3.6", "source": { "type": "git", "url": "https://github.com/nette/schema.git", - "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002" + "reference": "c54350438cd6914616f790a49cb424605f421562" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/schema/zipball/f0ab1a3cda782dbc5da270d28545236aa80c4002", - "reference": "f0ab1a3cda782dbc5da270d28545236aa80c4002", + "url": "https://api.github.com/repos/nette/schema/zipball/c54350438cd6914616f790a49cb424605f421562", + "reference": "c54350438cd6914616f790a49cb424605f421562", "shasum": "" }, "require": { @@ -3951,22 +4185,22 @@ ], "support": { "issues": "https://github.com/nette/schema/issues", - "source": "https://github.com/nette/schema/tree/v1.3.5" + "source": "https://github.com/nette/schema/tree/v1.3.6" }, - "time": "2026-02-23T03:47:12+00:00" + "time": "2026-08-16T21:58:41+00:00" }, { "name": "nette/utils", - "version": "v4.1.3", + "version": "v4.1.5", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe" + "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/bb3ea637e3d131d72acc033cfc2746ee893349fe", - "reference": "bb3ea637e3d131d72acc033cfc2746ee893349fe", + "url": "https://api.github.com/repos/nette/utils/zipball/b043439dbdf954e6c28b5ea7e34b0100f83165e0", + "reference": "b043439dbdf954e6c28b5ea7e34b0100f83165e0", "shasum": "" }, "require": { @@ -3986,7 +4220,7 @@ }, "suggest": { "ext-gd": "to use Image", - "ext-iconv": "to use Strings::webalize(), toAscii(), chr() and reverse()", + "ext-iconv": "to use Strings::chr(), ord() and reverse()", "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", @@ -4042,80 +4276,25 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.1.3" - }, - "time": "2026-02-13T03:05:33+00:00" - }, - { - "name": "nicmart/tree", - "version": "0.10.1", - "source": { - "type": "git", - "url": "https://github.com/nicmart/Tree.git", - "reference": "2ef11e329d26005ef49dbacd0223bcfd2515b6cc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nicmart/Tree/zipball/2ef11e329d26005ef49dbacd0223bcfd2515b6cc", - "reference": "2ef11e329d26005ef49dbacd0223bcfd2515b6cc", - "shasum": "" - }, - "require": { - "php": "~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0 || ~8.5.0" - }, - "require-dev": { - "ergebnis/composer-normalize": "^2.48.2", - "ergebnis/license": "^2.7.0", - "ergebnis/php-cs-fixer-config": "^6.28.1", - "fakerphp/faker": "^1.24.1", - "infection/infection": "~0.26.19", - "phpunit/phpunit": "^9.6.19", - "psalm/plugin-phpunit": "~0.19.0", - "vimeo/psalm": "^5.26.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Tree\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolò Martini", - "email": "nicmartnic@gmail.com" - }, - { - "name": "Andreas Möller", - "email": "am@localheinz.com" - } - ], - "description": "A basic but flexible php tree data structure and a fluent tree builder implementation.", - "support": { - "issues": "https://github.com/nicmart/Tree/issues", - "source": "https://github.com/nicmart/Tree/tree/0.10.1" + "source": "https://github.com/nette/utils/tree/v4.1.5" }, - "time": "2025-11-25T08:51:01+00:00" + "time": "2026-07-17T23:02:45+00:00" }, { "name": "nikic/php-parser", - "version": "v5.7.0", + "version": "v5.9.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82" + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/dca41cd15c2ac9d055ad70dbfd011130757d1f82", - "reference": "dca41cd15c2ac9d055ad70dbfd011130757d1f82", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9e33da9553fe7786f0962b35f4e4ecf01be89def", + "reference": "9e33da9553fe7786f0962b35f4e4ecf01be89def", "shasum": "" }, "require": { - "ext-ctype": "*", "ext-json": "*", "ext-tokenizer": "*", "php": ">=7.4" @@ -4154,9 +4333,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.7.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.9.0" }, - "time": "2025-12-06T11:56:16+00:00" + "time": "2026-09-13T18:51:52+00:00" }, { "name": "nunomaduro/termwind", @@ -4409,16 +4588,16 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.5", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "75365b91986c2405cf5e1e012c5595cd487a98be" + "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be", - "reference": "75365b91986c2405cf5e1e012c5595cd487a98be", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/67b192b6a42ec03944b972d6e633ddec78ad2c6d", + "reference": "67b192b6a42ec03944b972d6e633ddec78ad2c6d", "shasum": "" }, "require": { @@ -4426,7 +4605,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.44 || ^9.6.25 || ^10.5.53 || ^11.5.34" + "phpunit/phpunit": "^8.5.54 || ^9.6.36 || ^10.5.64 || ^11.5.56 || ^12.5.33" }, "type": "library", "extra": { @@ -4468,7 +4647,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.5" + "source": "https://github.com/schmittjoh/php-option/tree/1.10.0" }, "funding": [ { @@ -4480,20 +4659,20 @@ "type": "tidelift" } ], - "time": "2025-12-27T19:41:33+00:00" + "time": "2026-08-24T00:54:40+00:00" }, { "name": "pragmarx/google2fa", - "version": "v9.0.0", + "version": "v9.1.0", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa.git", - "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf" + "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/e6bc62dd6ae83acc475f57912e27466019a1f2cf", - "reference": "e6bc62dd6ae83acc475f57912e27466019a1f2cf", + "url": "https://api.github.com/repos/antonioribeiro/google2fa/zipball/f00bc788c555adfb6765c437ff3538e59cd88af1", + "reference": "f00bc788c555adfb6765c437ff3538e59cd88af1", "shasum": "" }, "require": { @@ -4501,8 +4680,11 @@ "php": "^7.1|^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.9", - "phpunit/phpunit": "^7.5.15|^8.5|^9.0" + "phpstan/phpstan": "^1.0|^2.0", + "phpstan/phpstan-phpunit": "^1.0|^2.0", + "phpunit/phpunit": "~9|~10|~11|~12|~13", + "psalm/plugin-phpunit": "^0.19|^0.20", + "vimeo/psalm": "^5.26|^6.13" }, "type": "library", "autoload": { @@ -4525,38 +4707,48 @@ "keywords": [ "2fa", "Authentication", + "MFA", "Two Factor Authentication", - "google2fa" + "google-authenticator", + "google2fa", + "hotp", + "otp", + "rfc4226", + "rfc6238", + "totp" ], "support": { + "docs": "https://github.com/antonioribeiro/google2fa#readme", "issues": "https://github.com/antonioribeiro/google2fa/issues", - "source": "https://github.com/antonioribeiro/google2fa/tree/v9.0.0" + "security": "https://github.com/antonioribeiro/google2fa/security/policy", + "source": "https://github.com/antonioribeiro/google2fa" }, - "time": "2025-09-19T22:51:08+00:00" + "time": "2026-08-15T13:22:01+00:00" }, { "name": "pragmarx/google2fa-qrcode", - "version": "v3.0.0", + "version": "v4.0.0", "source": { "type": "git", "url": "https://github.com/antonioribeiro/google2fa-qrcode.git", - "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b" + "reference": "16159f84fa0838c276f35d46de57fd90dfbb385c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/ce4d8a729b6c93741c607cfb2217acfffb5bf76b", - "reference": "ce4d8a729b6c93741c607cfb2217acfffb5bf76b", + "url": "https://api.github.com/repos/antonioribeiro/google2fa-qrcode/zipball/16159f84fa0838c276f35d46de57fd90dfbb385c", + "reference": "16159f84fa0838c276f35d46de57fd90dfbb385c", "shasum": "" }, "require": { - "php": ">=7.1", - "pragmarx/google2fa": ">=4.0" + "php": "^8.1", + "pragmarx/google2fa": "^8.0|^9.0" }, "require-dev": { - "bacon/bacon-qr-code": "^2.0", - "chillerlan/php-qrcode": "^1.0|^2.0|^3.0|^4.0", + "bacon/bacon-qr-code": "^2.0|^3.0", + "chillerlan/php-qrcode": "^5.0|^6.0", "khanamiryan/qrcode-detector-decoder": "^1.0", - "phpunit/phpunit": "~4|~5|~6|~7|~8|~9" + "phpstan/phpstan": "^2.0", + "phpunit/phpunit": "~9|~10|~11|~12|~13" }, "suggest": { "bacon/bacon-qr-code": "For QR Code generation, requires imagick", @@ -4597,51 +4789,54 @@ ], "support": { "issues": "https://github.com/antonioribeiro/google2fa-qrcode/issues", - "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v3.0.0" + "source": "https://github.com/antonioribeiro/google2fa-qrcode/tree/v4.0.0" }, - "time": "2021-08-15T12:53:48+00:00" + "time": "2026-05-08T19:24:44+00:00" }, { - "name": "programmernomad/laracorekit-demo-module", - "version": "v1.0.5", - "source": { - "type": "git", - "url": "https://github.com/ProgrammerNomad/laracorekit-demo-module.git", - "reference": "7237b3b79d8b5927ba17feed39fc030a40e0a34f" - }, + "name": "programmernomad/laracorekit", + "version": "dev-main", "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ProgrammerNomad/laracorekit-demo-module/zipball/7237b3b79d8b5927ba17feed39fc030a40e0a34f", - "reference": "7237b3b79d8b5927ba17feed39fc030a40e0a34f", - "shasum": "" + "type": "path", + "url": "packages/core", + "reference": "5ebe60c79a9ba823b081caa1516ba2462f354b9f" }, "require": { - "illuminate/console": "^11.0|^12.0|^13.0", - "illuminate/database": "^11.0|^12.0|^13.0", - "illuminate/filesystem": "^11.0|^12.0|^13.0", - "illuminate/support": "^11.0|^12.0|^13.0", - "php": "^8.2|^8.3" - }, - "require-dev": { - "filament/filament": "^3.0|^4.0|^5.0", - "laravel/pint": "^1.0", - "orchestra/testbench": "^9.0|^10.0", - "phpunit/phpunit": "^11.0" + "filament/filament": "^5.10", + "laravel/framework": "^13.37", + "livewire/livewire": "^4.4", + "php": "^8.3", + "spatie/laravel-medialibrary": "^11.23", + "spatie/laravel-permission": "^6.23" }, "type": "library", "extra": { "laravel": { "providers": [ - "LaraCoreKit\\DemoModule\\DemoServiceProvider" + "LaraCoreKit\\Core\\CoreServiceProvider" ] } }, "autoload": { "psr-4": { - "LaraCoreKit\\DemoModule\\": "src/" + "LaraCoreKit\\Core\\": "src/", + "Modules\\Core\\": "modules/Core/src/", + "Modules\\Auth\\": "modules/Auth/src/", + "Modules\\User\\Database\\Seeders\\": "modules/User/database/seeders/", + "Modules\\User\\Database\\Factories\\": "modules/User/database/factories/", + "Modules\\User\\": "modules/User/src/", + "Modules\\Settings\\": "modules/Settings/src/", + "Modules\\Media\\": "modules/Media/src/", + "Modules\\Blog\\": "modules/Blog/src/" } }, - "notification-url": "https://packagist.org/downloads/", + "archive": { + "exclude": [ + "/tests", + "/phpunit.xml", + "/.github" + ] + }, "license": [ "MIT" ], @@ -4651,15 +4846,84 @@ "homepage": "https://github.com/ProgrammerNomad" } ], - "description": "Auto-resetting demo environment for Laravel applications with Filament integration", - "homepage": "https://github.com/ProgrammerNomad/laracorekit-demo-module", + "description": "Modular Laravel application foundation with Filament administration, authentication, roles, settings, blog and media.", + "homepage": "https://www.laracorekit.com", "keywords": [ - "auto-reset", - "demo", "filament", "laracorekit", "laravel", - "module" + "livewire", + "modular", + "starter-kit" + ], + "support": { + "source": "https://github.com/ProgrammerNomad/laracorekit-package", + "issues": "https://github.com/ProgrammerNomad/LaraCoreKit/issues" + }, + "transport-options": { + "symlink": true, + "relative": true + } + }, + { + "name": "programmernomad/laracorekit-demo-module", + "version": "v1.0.5", + "source": { + "type": "git", + "url": "https://github.com/ProgrammerNomad/laracorekit-demo-module.git", + "reference": "7237b3b79d8b5927ba17feed39fc030a40e0a34f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ProgrammerNomad/laracorekit-demo-module/zipball/7237b3b79d8b5927ba17feed39fc030a40e0a34f", + "reference": "7237b3b79d8b5927ba17feed39fc030a40e0a34f", + "shasum": "" + }, + "require": { + "illuminate/console": "^11.0|^12.0|^13.0", + "illuminate/database": "^11.0|^12.0|^13.0", + "illuminate/filesystem": "^11.0|^12.0|^13.0", + "illuminate/support": "^11.0|^12.0|^13.0", + "php": "^8.2|^8.3" + }, + "require-dev": { + "filament/filament": "^3.0|^4.0|^5.0", + "laravel/pint": "^1.0", + "orchestra/testbench": "^9.0|^10.0", + "phpunit/phpunit": "^11.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "LaraCoreKit\\DemoModule\\DemoServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "LaraCoreKit\\DemoModule\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "ProgrammerNomad", + "homepage": "https://github.com/ProgrammerNomad" + } + ], + "description": "Auto-resetting demo environment for Laravel applications with Filament integration", + "homepage": "https://github.com/ProgrammerNomad/laracorekit-demo-module", + "keywords": [ + "auto-reset", + "demo", + "filament", + "laracorekit", + "laravel", + "module" ], "support": { "issues": "https://github.com/ProgrammerNomad/laracorekit-demo-module/issues", @@ -5081,16 +5345,16 @@ }, { "name": "psy/psysh", - "version": "v0.12.22", + "version": "v0.12.24", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "3be75d5b9244936dd4ac62ade2bfb004d13acf0f" + "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/3be75d5b9244936dd4ac62ade2bfb004d13acf0f", - "reference": "3be75d5b9244936dd4ac62ade2bfb004d13acf0f", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", + "reference": "ca0fdcf8a7617afa3adfdf1b5fef573dffb69ca1", "shasum": "" }, "require": { @@ -5154,53 +5418,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.12.22" - }, - "time": "2026-03-22T23:03:24+00:00" - }, - { - "name": "ralouphie/getallheaders", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/ralouphie/getallheaders.git", - "reference": "120b605dfeb996808c31b6477290a714d356e822" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", - "reference": "120b605dfeb996808c31b6477290a714d356e822", - "shasum": "" - }, - "require": { - "php": ">=5.6" - }, - "require-dev": { - "php-coveralls/php-coveralls": "^2.1", - "phpunit/phpunit": "^5 || ^6.5" - }, - "type": "library", - "autoload": { - "files": [ - "src/getallheaders.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ralph Khattar", - "email": "ralph.khattar@gmail.com" - } - ], - "description": "A polyfill for getallheaders.", - "support": { - "issues": "https://github.com/ralouphie/getallheaders/issues", - "source": "https://github.com/ralouphie/getallheaders/tree/develop" + "source": "https://github.com/bobthecow/psysh/tree/v0.12.24" }, - "time": "2019-03-08T08:55:37+00:00" + "time": "2026-06-29T15:41:09+00:00" }, { "name": "ramsey/collection", @@ -5280,20 +5500,20 @@ }, { "name": "ramsey/uuid", - "version": "4.9.2", + "version": "4.9.4", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "8429c78ca35a09f27565311b98101e2826affde0" + "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/8429c78ca35a09f27565311b98101e2826affde0", - "reference": "8429c78ca35a09f27565311b98101e2826affde0", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/75d73f48d02797c2c285a7e9f348fadc0102ffe2", + "reference": "75d73f48d02797c2c285a7e9f348fadc0102ffe2", "shasum": "" }, "require": { - "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14", + "brick/math": "^0.8.16 || ^0.9 || ^0.10 || ^0.11 || ^0.12 || ^0.13 || ^0.14 || ^0.15 || ^0.16 || ^0.17 || ^0.18 || ^0.19 || ^0.20 || ^1.0", "php": "^8.0", "ramsey/collection": "^1.2 || ^2.0" }, @@ -5352,9 +5572,9 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.9.2" + "source": "https://github.com/ramsey/uuid/tree/4.9.4" }, - "time": "2025-12-14T04:43:48+00:00" + "time": "2026-09-16T11:39:30+00:00" }, { "name": "ryangjchandler/blade-capture-directive", @@ -5512,154 +5732,18 @@ ], "time": "2022-12-17T21:53:22+00:00" }, - { - "name": "spatie/browsershot", - "version": "5.2.3", - "source": { - "type": "git", - "url": "https://github.com/spatie/browsershot.git", - "reference": "d2e4ac7c69162999940172a674bf83ddc5ac59ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/browsershot/zipball/d2e4ac7c69162999940172a674bf83ddc5ac59ea", - "reference": "d2e4ac7c69162999940172a674bf83ddc5ac59ea", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "ext-json": "*", - "php": "^8.2", - "spatie/temporary-directory": "^2.0", - "symfony/process": "^6.0|^7.0|^8.0" - }, - "require-dev": { - "pestphp/pest": "^3.0|^4.0", - "spatie/image": "^3.6", - "spatie/pdf-to-text": "^1.52", - "spatie/phpunit-snapshot-assertions": "^5.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Browsershot\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://github.com/freekmurze", - "role": "Developer" - } - ], - "description": "Convert a webpage to an image or pdf using headless Chrome", - "homepage": "https://github.com/spatie/browsershot", - "keywords": [ - "chrome", - "convert", - "headless", - "image", - "pdf", - "puppeteer", - "screenshot", - "webpage" - ], - "support": { - "source": "https://github.com/spatie/browsershot/tree/5.2.3" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2026-02-18T16:10:58+00:00" - }, - { - "name": "spatie/crawler", - "version": "8.5.0", - "source": { - "type": "git", - "url": "https://github.com/spatie/crawler.git", - "reference": "18198a2198adff1637c0028cb60d2c9559721556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/crawler/zipball/18198a2198adff1637c0028cb60d2c9559721556", - "reference": "18198a2198adff1637c0028cb60d2c9559721556", - "shasum": "" - }, - "require": { - "guzzlehttp/guzzle": "^7.3", - "guzzlehttp/psr7": "^2.0", - "illuminate/collections": "^10.0|^11.0|^12.0|^13.0", - "nicmart/tree": "^0.10", - "php": "^8.2", - "spatie/browsershot": "^5.0.5", - "spatie/robots-txt": "^2.0", - "symfony/dom-crawler": "^6.0|^7.0|^8.0" - }, - "require-dev": { - "pestphp/pest": "^2.0|^3.0|^4.0", - "spatie/ray": "^1.37" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\Crawler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be" - } - ], - "description": "Crawl all internal links found on a website", - "homepage": "https://github.com/spatie/crawler", - "keywords": [ - "crawler", - "link", - "spatie", - "website" - ], - "support": { - "issues": "https://github.com/spatie/crawler/issues", - "source": "https://github.com/spatie/crawler/tree/8.5.0" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2026-02-21T22:52:37+00:00" - }, { "name": "spatie/image", - "version": "3.9.4", + "version": "3.9.7", "source": { "type": "git", "url": "https://github.com/spatie/image.git", - "reference": "6a322b5e9268e3903d4fb6e1ff08b7dcc3aa9429" + "reference": "5450a2f63f315d56453fbbf58f5dacaecbf48dd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image/zipball/6a322b5e9268e3903d4fb6e1ff08b7dcc3aa9429", - "reference": "6a322b5e9268e3903d4fb6e1ff08b7dcc3aa9429", + "url": "https://api.github.com/repos/spatie/image/zipball/5450a2f63f315d56453fbbf58f5dacaecbf48dd4", + "reference": "5450a2f63f315d56453fbbf58f5dacaecbf48dd4", "shasum": "" }, "require": { @@ -5672,8 +5756,10 @@ "symfony/process": "^6.4|^7.0|^8.0" }, "require-dev": { + "ext-ffi": "*", "ext-gd": "*", "ext-imagick": "*", + "jcupitt/vips": "^2.4", "laravel/sail": "^1.34", "pestphp/pest": "^3.0|^4.0", "phpstan/phpstan": "^1.10.50", @@ -5707,7 +5793,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/image/tree/3.9.4" + "source": "https://github.com/spatie/image/tree/3.9.7" }, "funding": [ { @@ -5719,25 +5805,25 @@ "type": "github" } ], - "time": "2026-03-13T14:23:45+00:00" + "time": "2026-09-30T07:06:27+00:00" }, { "name": "spatie/image-optimizer", - "version": "1.8.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/spatie/image-optimizer.git", - "reference": "2ad9ac7c19501739183359ae64ea6c15869c23d9" + "reference": "333c03952289dc2df0a91874636a0dffeb5b6aec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/2ad9ac7c19501739183359ae64ea6c15869c23d9", - "reference": "2ad9ac7c19501739183359ae64ea6c15869c23d9", + "url": "https://api.github.com/repos/spatie/image-optimizer/zipball/333c03952289dc2df0a91874636a0dffeb5b6aec", + "reference": "333c03952289dc2df0a91874636a0dffeb5b6aec", "shasum": "" }, "require": { "ext-fileinfo": "*", - "php": "^7.3|^8.0", + "php": "^7.4|^8.0", "psr/log": "^1.0 | ^2.0 | ^3.0", "symfony/process": "^4.2|^5.0|^6.0|^7.0|^8.0" }, @@ -5772,22 +5858,22 @@ ], "support": { "issues": "https://github.com/spatie/image-optimizer/issues", - "source": "https://github.com/spatie/image-optimizer/tree/1.8.1" + "source": "https://github.com/spatie/image-optimizer/tree/1.10.0" }, - "time": "2025-11-26T10:57:19+00:00" + "time": "2026-06-29T08:28:30+00:00" }, { "name": "spatie/invade", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/spatie/invade.git", - "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63" + "reference": "f929c7b6e75fceeefa7b41a491e91274bafb17af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/invade/zipball/b920f6411d21df4e8610a138e2e87ae4957d7f63", - "reference": "b920f6411d21df4e8610a138e2e87ae4957d7f63", + "url": "https://api.github.com/repos/spatie/invade/zipball/f929c7b6e75fceeefa7b41a491e91274bafb17af", + "reference": "f929c7b6e75fceeefa7b41a491e91274bafb17af", "shasum": "" }, "require": { @@ -5825,7 +5911,7 @@ "spatie" ], "support": { - "source": "https://github.com/spatie/invade/tree/2.1.0" + "source": "https://github.com/spatie/invade/tree/2.1.1" }, "funding": [ { @@ -5833,20 +5919,20 @@ "type": "github" } ], - "time": "2024-05-17T09:06:10+00:00" + "time": "2026-08-24T12:39:05+00:00" }, { "name": "spatie/laravel-medialibrary", - "version": "11.21.0", + "version": "11.23.9", "source": { "type": "git", "url": "https://github.com/spatie/laravel-medialibrary.git", - "reference": "d6e2595033ffd130d4dd5d124510ab3304794c44" + "reference": "afe6e389994ada7f33b731a837ea79301a7ec6c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/d6e2595033ffd130d4dd5d124510ab3304794c44", - "reference": "d6e2595033ffd130d4dd5d124510ab3304794c44", + "url": "https://api.github.com/repos/spatie/laravel-medialibrary/zipball/afe6e389994ada7f33b731a837ea79301a7ec6c1", + "reference": "afe6e389994ada7f33b731a837ea79301a7ec6c1", "shasum": "" }, "require": { @@ -5931,7 +6017,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-medialibrary/issues", - "source": "https://github.com/spatie/laravel-medialibrary/tree/11.21.0" + "source": "https://github.com/spatie/laravel-medialibrary/tree/11.23.9" }, "funding": [ { @@ -5943,20 +6029,20 @@ "type": "github" } ], - "time": "2026-02-21T15:58:56+00:00" + "time": "2026-10-05T08:08:06+00:00" }, { "name": "spatie/laravel-package-tools", - "version": "1.93.0", + "version": "1.93.3", "source": { "type": "git", "url": "https://github.com/spatie/laravel-package-tools.git", - "reference": "0d097bce95b2bf6802fb1d83e1e753b0f5a948e7" + "reference": "7aeef26bd8d4909bec744dbf47aee7d1395588c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/0d097bce95b2bf6802fb1d83e1e753b0f5a948e7", - "reference": "0d097bce95b2bf6802fb1d83e1e753b0f5a948e7", + "url": "https://api.github.com/repos/spatie/laravel-package-tools/zipball/7aeef26bd8d4909bec744dbf47aee7d1395588c1", + "reference": "7aeef26bd8d4909bec744dbf47aee7d1395588c1", "shasum": "" }, "require": { @@ -5996,7 +6082,7 @@ ], "support": { "issues": "https://github.com/spatie/laravel-package-tools/issues", - "source": "https://github.com/spatie/laravel-package-tools/tree/1.93.0" + "source": "https://github.com/spatie/laravel-package-tools/tree/1.93.3" }, "funding": [ { @@ -6004,7 +6090,7 @@ "type": "github" } ], - "time": "2026-02-21T12:49:54+00:00" + "time": "2026-09-28T07:16:50+00:00" }, { "name": "spatie/laravel-permission", @@ -6091,47 +6177,35 @@ "time": "2026-03-17T22:46:46+00:00" }, { - "name": "spatie/laravel-sitemap", - "version": "8.0.0", + "name": "spatie/shiki-php", + "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/spatie/laravel-sitemap.git", - "reference": "8c79e1420a6f41405707ea7d00bb6cc10160c0ac" + "url": "https://github.com/spatie/shiki-php.git", + "reference": "b8b0ca32d3a82bc5c533e68ffab96c5d4ec1b9ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/laravel-sitemap/zipball/8c79e1420a6f41405707ea7d00bb6cc10160c0ac", - "reference": "8c79e1420a6f41405707ea7d00bb6cc10160c0ac", + "url": "https://api.github.com/repos/spatie/shiki-php/zipball/b8b0ca32d3a82bc5c533e68ffab96c5d4ec1b9ba", + "reference": "b8b0ca32d3a82bc5c533e68ffab96c5d4ec1b9ba", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^7.8", - "illuminate/support": "^11.0|^12.0||^13.0", - "nesbot/carbon": "^2.71|^3.0", - "php": "^8.2||^8.3||^8.4||^8.5", - "spatie/crawler": "^8.0.1", - "spatie/laravel-package-tools": "^1.16.1", - "symfony/dom-crawler": "^6.3.4|^7.0|^8.0" + "ext-json": "*", + "php": "^8.0", + "symfony/process": "^5.4|^6.4|^7.1|^8.0" }, "require-dev": { - "mockery/mockery": "^1.6.6", - "orchestra/testbench": "^9.0|^10.0||^11.0", - "pestphp/pest": "^3.7.4|^4.0", - "spatie/pest-plugin-snapshots": "^2.1", - "spatie/phpunit-snapshot-assertions": "^5.1.2", - "spatie/temporary-directory": "^2.2" + "friendsofphp/php-cs-fixer": "^v3.0", + "pestphp/pest": "^1.8", + "phpunit/phpunit": "^9.5", + "spatie/pest-plugin-snapshots": "^1.1", + "spatie/ray": "^1.10" }, "type": "library", - "extra": { - "laravel": { - "providers": [ - "Spatie\\Sitemap\\SitemapServiceProvider" - ] - } - }, "autoload": { "psr-4": { - "Spatie\\Sitemap\\": "src" + "Spatie\\ShikiPhp\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6139,54 +6213,58 @@ "MIT" ], "authors": [ + { + "name": "Rias Van der Veken", + "email": "rias@spatie.be", + "role": "Developer" + }, { "name": "Freek Van der Herten", "email": "freek@spatie.be", - "homepage": "https://spatie.be", "role": "Developer" } ], - "description": "Create and generate sitemaps with ease", - "homepage": "https://github.com/spatie/laravel-sitemap", + "description": "Highlight code using Shiki in PHP", + "homepage": "https://github.com/spatie/shiki-php", "keywords": [ - "laravel-sitemap", + "shiki", "spatie" ], "support": { - "source": "https://github.com/spatie/laravel-sitemap/tree/8.0.0" + "source": "https://github.com/spatie/shiki-php/tree/2.4.0" }, "funding": [ { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" + "url": "https://github.com/spatie", + "type": "github" } ], - "time": "2026-02-21T23:01:14+00:00" + "time": "2026-04-27T14:27:52+00:00" }, { - "name": "spatie/robots-txt", - "version": "2.5.4", + "name": "spatie/temporary-directory", + "version": "2.4.0", "source": { "type": "git", - "url": "https://github.com/spatie/robots-txt.git", - "reference": "a8dd35d0a94e863f52509a366a634978e9c1db03" + "url": "https://github.com/spatie/temporary-directory.git", + "reference": "32cbb9645b28839cf4f476708e99a2c70e6802c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/robots-txt/zipball/a8dd35d0a94e863f52509a366a634978e9c1db03", - "reference": "a8dd35d0a94e863f52509a366a634978e9c1db03", + "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/32cbb9645b28839cf4f476708e99a2c70e6802c9", + "reference": "32cbb9645b28839cf4f476708e99a2c70e6802c9", "shasum": "" }, "require": { - "php": "^8.1" + "php": "^8.0" }, "require-dev": { - "phpunit/phpunit": "^11.5.2" + "phpunit/phpunit": "^9.5" }, "type": "library", "autoload": { "psr-4": { - "Spatie\\Robots\\": "src" + "Spatie\\TemporaryDirectory\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6195,21 +6273,22 @@ ], "authors": [ { - "name": "Brent Roose", - "email": "brent@spatie.be", + "name": "Alex Vanderbist", + "email": "alex@spatie.be", "homepage": "https://spatie.be", "role": "Developer" } ], - "description": "Determine if a page may be crawled from robots.txt and robots meta tags", - "homepage": "https://github.com/spatie/robots-txt", + "description": "Easily create, use and destroy temporary directories", + "homepage": "https://github.com/spatie/temporary-directory", "keywords": [ - "robots-txt", - "spatie" + "php", + "spatie", + "temporary-directory" ], "support": { - "issues": "https://github.com/spatie/robots-txt/issues", - "source": "https://github.com/spatie/robots-txt/tree/2.5.4" + "issues": "https://github.com/spatie/temporary-directory/issues", + "source": "https://github.com/spatie/temporary-directory/tree/2.4.0" }, "funding": [ { @@ -6221,161 +6300,35 @@ "type": "github" } ], - "time": "2026-02-25T07:59:20+00:00" + "time": "2026-06-22T07:55:44+00:00" }, { - "name": "spatie/shiki-php", - "version": "2.3.3", + "name": "symfony/clock", + "version": "v7.4.21", "source": { "type": "git", - "url": "https://github.com/spatie/shiki-php.git", - "reference": "9d50ff4d9825d87d3283a6695c65ae9c3c3caa6b" + "url": "https://github.com/symfony/clock.git", + "reference": "07437f612dca89c1894c1db04491002b1e798f03" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/shiki-php/zipball/9d50ff4d9825d87d3283a6695c65ae9c3c3caa6b", - "reference": "9d50ff4d9825d87d3283a6695c65ae9c3c3caa6b", + "url": "https://api.github.com/repos/symfony/clock/zipball/07437f612dca89c1894c1db04491002b1e798f03", + "reference": "07437f612dca89c1894c1db04491002b1e798f03", "shasum": "" }, "require": { - "ext-json": "*", - "php": "^8.0", - "symfony/process": "^5.4|^6.4|^7.1|^8.0" + "php": ">=8.2", + "psr/clock": "^1.0", + "symfony/polyfill-php83": "^1.28" }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v3.0", - "pestphp/pest": "^1.8", - "phpunit/phpunit": "^9.5", - "spatie/pest-plugin-snapshots": "^1.1", - "spatie/ray": "^1.10" + "provide": { + "psr/clock-implementation": "1.0" }, "type": "library", "autoload": { - "psr-4": { - "Spatie\\ShikiPhp\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Rias Van der Veken", - "email": "rias@spatie.be", - "role": "Developer" - }, - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "role": "Developer" - } - ], - "description": "Highlight code using Shiki in PHP", - "homepage": "https://github.com/spatie/shiki-php", - "keywords": [ - "shiki", - "spatie" - ], - "support": { - "source": "https://github.com/spatie/shiki-php/tree/2.3.3" - }, - "funding": [ - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2026-02-01T09:30:04+00:00" - }, - { - "name": "spatie/temporary-directory", - "version": "2.3.1", - "source": { - "type": "git", - "url": "https://github.com/spatie/temporary-directory.git", - "reference": "662e481d6ec07ef29fd05010433428851a42cd07" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/spatie/temporary-directory/zipball/662e481d6ec07ef29fd05010433428851a42cd07", - "reference": "662e481d6ec07ef29fd05010433428851a42cd07", - "shasum": "" - }, - "require": { - "php": "^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "Spatie\\TemporaryDirectory\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alex Vanderbist", - "email": "alex@spatie.be", - "homepage": "https://spatie.be", - "role": "Developer" - } - ], - "description": "Easily create, use and destroy temporary directories", - "homepage": "https://github.com/spatie/temporary-directory", - "keywords": [ - "php", - "spatie", - "temporary-directory" - ], - "support": { - "issues": "https://github.com/spatie/temporary-directory/issues", - "source": "https://github.com/spatie/temporary-directory/tree/2.3.1" - }, - "funding": [ - { - "url": "https://spatie.be/open-source/support-us", - "type": "custom" - }, - { - "url": "https://github.com/spatie", - "type": "github" - } - ], - "time": "2026-01-12T07:42:22+00:00" - }, - { - "name": "symfony/clock", - "version": "v7.4.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/clock.git", - "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/clock/zipball/674fa3b98e21531dd040e613479f5f6fa8f32111", - "reference": "674fa3b98e21531dd040e613479f5f6fa8f32111", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "psr/clock": "^1.0", - "symfony/polyfill-php83": "^1.28" - }, - "provide": { - "psr/clock-implementation": "1.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/now.php" - ], + "files": [ + "Resources/now.php" + ], "psr-4": { "Symfony\\Component\\Clock\\": "" }, @@ -6405,7 +6358,7 @@ "time" ], "support": { - "source": "https://github.com/symfony/clock/tree/v7.4.8" + "source": "https://github.com/symfony/clock/tree/v7.4.21" }, "funding": [ { @@ -6425,20 +6378,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-12T14:31:36+00:00" }, { "name": "symfony/console", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707" + "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", - "reference": "1e92e39c51f95b88e3d66fa2d9f06d1fb45dd707", + "url": "https://api.github.com/repos/symfony/console/zipball/21f1bc2296f7ff6043241a8dcbc09559b3732820", + "reference": "21f1bc2296f7ff6043241a8dcbc09559b3732820", "shasum": "" }, "require": { @@ -6503,7 +6456,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v7.4.8" + "source": "https://github.com/symfony/console/tree/v7.4.21" }, "funding": [ { @@ -6523,20 +6476,20 @@ "type": "tidelift" } ], - "time": "2026-03-30T13:54:39+00:00" + "time": "2026-10-12T18:45:38+00:00" }, { "name": "symfony/css-selector", - "version": "v7.4.8", + "version": "v7.4.18", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "b055f228a4178a1d6774909903905e3475f3eac8" + "reference": "fecf40067fc8d8880ea87b8ac227600b9aadd1d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/b055f228a4178a1d6774909903905e3475f3eac8", - "reference": "b055f228a4178a1d6774909903905e3475f3eac8", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/fecf40067fc8d8880ea87b8ac227600b9aadd1d0", + "reference": "fecf40067fc8d8880ea87b8ac227600b9aadd1d0", "shasum": "" }, "require": { @@ -6572,7 +6525,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.4.8" + "source": "https://github.com/symfony/css-selector/tree/v7.4.18" }, "funding": [ { @@ -6592,20 +6545,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-08-23T10:03:40+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.6.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", - "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/f3202fa1b5097b0af062dc978b32ecf63404e31d", + "reference": "f3202fa1b5097b0af062dc978b32ecf63404e31d", "shasum": "" }, "require": { @@ -6618,7 +6571,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.7-dev" } }, "autoload": { @@ -6643,75 +6596,7 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-09-25T14:21:43+00:00" - }, - { - "name": "symfony/dom-crawler", - "version": "v7.4.8", - "source": { - "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "2918e7c2ba964defca1f5b69c6f74886529e2dc8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2918e7c2ba964defca1f5b69c6f74886529e2dc8", - "reference": "2918e7c2ba964defca1f5b69c6f74886529e2dc8", - "shasum": "" - }, - "require": { - "masterminds/html5": "^2.6", - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "symfony/css-selector": "^6.4|^7.0|^8.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases DOM navigation for HTML and XML documents", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v7.4.8" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.7.1" }, "funding": [ { @@ -6731,20 +6616,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/error-handler", - "version": "v7.4.8", + "version": "v7.4.20", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa" + "reference": "82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", - "reference": "8dd79d8af777ee6cba2fd4d98da6ffb839f3c0fa", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0", + "reference": "82239fe00f7cdc9f17c4166fff4ebdc22bd26ec0", "shasum": "" }, "require": { @@ -6793,7 +6678,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.4.8" + "source": "https://github.com/symfony/error-handler/tree/v7.4.20" }, "funding": [ { @@ -6813,20 +6698,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-09-22T18:56:40+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.4.8", + "version": "v7.4.17", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "f57b899fa736fd71121168ef268f23c206083f0a" + "reference": "d269974ee93c61d03620ffee358355bfdb471d66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/f57b899fa736fd71121168ef268f23c206083f0a", - "reference": "f57b899fa736fd71121168ef268f23c206083f0a", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d269974ee93c61d03620ffee358355bfdb471d66", + "reference": "d269974ee93c61d03620ffee358355bfdb471d66", "shasum": "" }, "require": { @@ -6878,7 +6763,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.8" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.4.17" }, "funding": [ { @@ -6898,20 +6783,20 @@ "type": "tidelift" } ], - "time": "2026-03-30T13:54:39+00:00" + "time": "2026-08-21T17:40:08+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.6.0", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586" + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/59eb412e93815df44f05f342958efa9f46b1e586", - "reference": "59eb412e93815df44f05f342958efa9f46b1e586", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c7de7a00ffb67842132da02ea92988a39ccd9f4e", + "reference": "c7de7a00ffb67842132da02ea92988a39ccd9f4e", "shasum": "" }, "require": { @@ -6925,7 +6810,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.7-dev" } }, "autoload": { @@ -6958,7 +6843,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.6.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.7.1" }, "funding": [ { @@ -6969,25 +6854,29 @@ "url": "https://github.com/fabpot", "type": "github" }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, { "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", "type": "tidelift" } ], - "time": "2024-09-25T14:21:43+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/finder", - "version": "v7.4.8", + "version": "v7.4.20", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e0be088d22278583a82da281886e8c3592fbf149" + "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e0be088d22278583a82da281886e8c3592fbf149", - "reference": "e0be088d22278583a82da281886e8c3592fbf149", + "url": "https://api.github.com/repos/symfony/finder/zipball/2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e", + "reference": "2dd31e5208db7a0fda7bfc998ad727b79c2e4d1e", "shasum": "" }, "require": { @@ -7022,7 +6911,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.4.8" + "source": "https://github.com/symfony/finder/tree/v7.4.20" }, "funding": [ { @@ -7042,20 +6931,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-09-26T06:31:10+00:00" }, { "name": "symfony/html-sanitizer", - "version": "v7.4.8", + "version": "v7.4.20", "source": { "type": "git", "url": "https://github.com/symfony/html-sanitizer.git", - "reference": "9a79c53c4bf0a8a7b0d3d917fe03eda605ea6438" + "reference": "0b7605debddc90c7c9d4e9c1b6eb520a248f26dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/9a79c53c4bf0a8a7b0d3d917fe03eda605ea6438", - "reference": "9a79c53c4bf0a8a7b0d3d917fe03eda605ea6438", + "url": "https://api.github.com/repos/symfony/html-sanitizer/zipball/0b7605debddc90c7c9d4e9c1b6eb520a248f26dc", + "reference": "0b7605debddc90c7c9d4e9c1b6eb520a248f26dc", "shasum": "" }, "require": { @@ -7096,7 +6985,7 @@ "sanitizer" ], "support": { - "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.8" + "source": "https://github.com/symfony/html-sanitizer/tree/v7.4.20" }, "funding": [ { @@ -7116,20 +7005,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-09-28T05:21:23+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "9381209597ec66c25be154cbf2289076e64d1eab" + "reference": "58c89144c7a36dd89c3d01917e9fa3a72d8aaf31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9381209597ec66c25be154cbf2289076e64d1eab", - "reference": "9381209597ec66c25be154cbf2289076e64d1eab", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/58c89144c7a36dd89c3d01917e9fa3a72d8aaf31", + "reference": "58c89144c7a36dd89c3d01917e9fa3a72d8aaf31", "shasum": "" }, "require": { @@ -7178,7 +7067,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.4.8" + "source": "https://github.com/symfony/http-foundation/tree/v7.4.21" }, "funding": [ { @@ -7198,20 +7087,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-08T16:56:12+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "017e76ad089bac281553389269e259e155935e1a" + "reference": "4779fce7dedacb8801b2b61c703ef99159502331" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/017e76ad089bac281553389269e259e155935e1a", - "reference": "017e76ad089bac281553389269e259e155935e1a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4779fce7dedacb8801b2b61c703ef99159502331", + "reference": "4779fce7dedacb8801b2b61c703ef99159502331", "shasum": "" }, "require": { @@ -7269,7 +7158,7 @@ "symfony/validator": "^6.4|^7.0|^8.0", "symfony/var-dumper": "^6.4|^7.0|^8.0", "symfony/var-exporter": "^6.4|^7.0|^8.0", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "type": "library", "autoload": { @@ -7297,7 +7186,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.4.8" + "source": "https://github.com/symfony/http-kernel/tree/v7.4.21" }, "funding": [ { @@ -7317,20 +7206,20 @@ "type": "tidelift" } ], - "time": "2026-03-31T20:57:01+00:00" + "time": "2026-10-14T06:44:08+00:00" }, { "name": "symfony/mailer", - "version": "v7.4.8", + "version": "v7.4.19", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "f6ea532250b476bfc1b56699b388a1bdbf168f62" + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/f6ea532250b476bfc1b56699b388a1bdbf168f62", - "reference": "f6ea532250b476bfc1b56699b388a1bdbf168f62", + "url": "https://api.github.com/repos/symfony/mailer/zipball/6f6f2441bef07a42d2617b9b3aadf04a321aa514", + "reference": "6f6f2441bef07a42d2617b9b3aadf04a321aa514", "shasum": "" }, "require": { @@ -7381,7 +7270,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v7.4.8" + "source": "https://github.com/symfony/mailer/tree/v7.4.19" }, "funding": [ { @@ -7401,20 +7290,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-09-15T06:01:15+00:00" }, { "name": "symfony/mime", - "version": "v7.4.8", + "version": "v7.4.19", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "6df02f99998081032da3407a8d6c4e1dcb5d4379" + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/6df02f99998081032da3407a8d6c4e1dcb5d4379", - "reference": "6df02f99998081032da3407a8d6c4e1dcb5d4379", + "url": "https://api.github.com/repos/symfony/mime/zipball/f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", + "reference": "f8ac7d0a800bcabbcd1f7de56594cf05e6cd5693", "shasum": "" }, "require": { @@ -7438,7 +7327,7 @@ "symfony/process": "^6.4|^7.0|^8.0", "symfony/property-access": "^6.4|^7.0|^8.0", "symfony/property-info": "^6.4|^7.0|^8.0", - "symfony/serializer": "^6.4.3|^7.0.3|^8.0" + "symfony/serializer": "^6.4.44|^7.4.17|^8.1.5" }, "type": "library", "autoload": { @@ -7470,7 +7359,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v7.4.8" + "source": "https://github.com/symfony/mime/tree/v7.4.19" }, "funding": [ { @@ -7490,11 +7379,11 @@ "type": "tidelift" } ], - "time": "2026-03-30T14:11:46+00:00" + "time": "2026-09-04T10:45:44+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.36.0", + "version": "v1.37.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", @@ -7553,7 +7442,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.37.0" }, "funding": [ { @@ -7577,16 +7466,16 @@ }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.36.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df" + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/ad1b7b9092976d6c948b8a187cec9faaea9ec1df", - "reference": "ad1b7b9092976d6c948b8a187cec9faaea9ec1df", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/5cac8f4db97208823aa353f59a01faad2da52c75", + "reference": "5cac8f4db97208823aa353f59a01faad2da52c75", "shasum": "" }, "require": { @@ -7635,7 +7524,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.43.0" }, "funding": [ { @@ -7655,28 +7544,281 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-09-25T15:46:47+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/533d68cf99c8f8ee2e8893c59ed59192e92cfd74", + "reference": "533d68cf99c8f8ee2e8893c59ed59192e92cfd74", + "shasum": "" + }, + "require": { + "php": ">=7.2", + "symfony/polyfill-intl-normalizer": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Trevor Rowbotham", + "email": "trevor.rowbotham@pm.me" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T14:40:04+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/ebd57ccc7edb93d632e184efbe7693d2517bab3b", + "reference": "ebd57ccc7edb93d632e184efbe7693d2517bab3b", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-23T22:02:09+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.43.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "reference": "4d5d331bf731e0aedbc6b2f5e61135b7b7996a72", + "shasum": "" + }, + "require": { + "ext-iconv": "*", + "php": ">=7.2" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.43.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://github.com/nicolas-grekas", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2026-09-24T15:19:04+00:00" }, { - "name": "symfony/polyfill-intl-idn", - "version": "v1.36.0", + "name": "symfony/polyfill-php80", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3" + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/9614ac4d8061dc257ecc64cba1b140873dce8ad3", - "reference": "9614ac4d8061dc257ecc64cba1b140873dce8ad3", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", + "reference": "9c6a5d6b01ca51d486c813e9a9c0ed55f208bb74", "shasum": "" }, "require": { - "php": ">=7.2", - "symfony/polyfill-intl-normalizer": "^1.10" - }, - "suggest": { - "ext-intl": "For best performance" + "php": ">=7.2" }, "type": "library", "extra": { @@ -7690,8 +7832,11 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Idn\\": "" - } + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7699,30 +7844,28 @@ ], "authors": [ { - "name": "Laurent Bassin", - "email": "laurent@bassin.info" + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" }, { - "name": "Trevor Rowbotham", - "email": "trevor.rowbotham@pm.me" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "idn", - "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.43.0" }, "funding": [ { @@ -7742,28 +7885,25 @@ "type": "tidelift" } ], - "time": "2024-09-10T14:38:51+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.36.0", + "name": "symfony/polyfill-php82", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "3833d7255cc303546435cb650316bff708a1c75c" + "url": "https://github.com/symfony/polyfill-php82.git", + "reference": "843bbe8b2a7934307b749751eede0f111f5d1cfc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", - "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "url": "https://api.github.com/repos/symfony/polyfill-php82/zipball/843bbe8b2a7934307b749751eede0f111f5d1cfc", + "reference": "843bbe8b2a7934307b749751eede0f111f5d1cfc", "shasum": "" }, "require": { "php": ">=7.2" }, - "suggest": { - "ext-intl": "For best performance" - }, "type": "library", "extra": { "thanks": { @@ -7776,7 +7916,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + "Symfony\\Polyfill\\Php82\\": "" }, "classmap": [ "Resources/stubs" @@ -7796,18 +7936,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", + "description": "Symfony polyfill backporting some PHP 8.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "intl", - "normalizer", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-php82/tree/v1.43.0" }, "funding": [ { @@ -7827,32 +7965,25 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.36.0", + "name": "symfony/polyfill-php83", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315" + "url": "https://github.com/symfony/polyfill-php83.git", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6a21eb99c6973357967f6ce3708cd55a6bec6315", - "reference": "6a21eb99c6973357967f6ce3708cd55a6bec6315", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/80ccff923a8d61f73ebe9da0aa94e25232f004ce", + "reference": "80ccff923a8d61f73ebe9da0aa94e25232f004ce", "shasum": "" }, "require": { - "ext-iconv": "*", "php": ">=7.2" }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, "type": "library", "extra": { "thanks": { @@ -7865,8 +7996,11 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } + "Symfony\\Polyfill\\Php83\\": "" + }, + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -7882,17 +8016,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "mbstring", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.43.0" }, "funding": [ { @@ -7912,20 +8045,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T17:25:58+00:00" + "time": "2026-09-25T15:50:05+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.36.0", + "name": "symfony/polyfill-php84", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411" + "url": "https://github.com/symfony/polyfill-php84.git", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dfb55726c3a76ea3b6459fcfda1ec2d80a682411", - "reference": "dfb55726c3a76ea3b6459fcfda1ec2d80a682411", + "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/22c6548499cbe5c5bb072fc0c42312dff062a015", + "reference": "22c6548499cbe5c5bb072fc0c42312dff062a015", "shasum": "" }, "require": { @@ -7943,7 +8076,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Polyfill\\Php84\\": "" }, "classmap": [ "Resources/stubs" @@ -7954,10 +8087,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -7967,7 +8096,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -7976,7 +8105,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-php84/tree/v1.43.0" }, "funding": [ { @@ -7996,20 +8125,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-09-23T22:01:09+00:00" }, { - "name": "symfony/polyfill-php83", - "version": "v1.36.0", + "name": "symfony/polyfill-php85", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149" + "url": "https://github.com/symfony/polyfill-php85.git", + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/3600c2cb22399e25bb226e4a135ce91eeb2a6149", - "reference": "3600c2cb22399e25bb226e4a135ce91eeb2a6149", + "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/86a42cbcc07adc331481a5ab310a4024bfc227f6", + "reference": "86a42cbcc07adc331481a5ab310a4024bfc227f6", "shasum": "" }, "require": { @@ -8027,7 +8156,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" + "Symfony\\Polyfill\\Php85\\": "" }, "classmap": [ "Resources/stubs" @@ -8047,7 +8176,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -8056,7 +8185,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-php85/tree/v1.43.0" }, "funding": [ { @@ -8076,20 +8205,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T17:25:58+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { - "name": "symfony/polyfill-php84", - "version": "v1.36.0", + "name": "symfony/polyfill-php86", + "version": "v1.43.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php84.git", - "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06" + "url": "https://github.com/symfony/polyfill-php86.git", + "reference": "8840df45b24f33a49dc419fa18dc0057231ae1d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/88486db2c389b290bf87ff1de7ebc1e13e42bb06", - "reference": "88486db2c389b290bf87ff1de7ebc1e13e42bb06", + "url": "https://api.github.com/repos/symfony/polyfill-php86/zipball/8840df45b24f33a49dc419fa18dc0057231ae1d8", + "reference": "8840df45b24f33a49dc419fa18dc0057231ae1d8", "shasum": "" }, "require": { @@ -8107,7 +8236,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Php84\\": "" + "Symfony\\Polyfill\\Php86\\": "" }, "classmap": [ "Resources/stubs" @@ -8127,7 +8256,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 8.6+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -8136,7 +8265,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php84/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-php86/tree/v1.43.0" }, "funding": [ { @@ -8156,24 +8285,24 @@ "type": "tidelift" } ], - "time": "2026-04-10T18:47:49+00:00" + "time": "2026-09-25T15:46:47+00:00" }, { - "name": "symfony/polyfill-php85", - "version": "v1.36.0", + "name": "symfony/polyfill-time", + "version": "v1.42.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php85.git", - "reference": "2c408a6bb0313e6001a83628dc5506100474254e" + "url": "https://github.com/symfony/polyfill-time.git", + "reference": "ac9f1ed802dd58f37e720388130c088434aa09fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php85/zipball/2c408a6bb0313e6001a83628dc5506100474254e", - "reference": "2c408a6bb0313e6001a83628dc5506100474254e", + "url": "https://api.github.com/repos/symfony/polyfill-time/zipball/ac9f1ed802dd58f37e720388130c088434aa09fc", + "reference": "ac9f1ed802dd58f37e720388130c088434aa09fc", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=8.1" }, "type": "library", "extra": { @@ -8183,11 +8312,8 @@ } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php85\\": "" + "Symfony\\Polyfill\\Time\\": "" }, "classmap": [ "Resources/stubs" @@ -8199,24 +8325,30 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Ignace Philippe Nyamagana Butera", + "email": "nyamsprod@gmail.com" + }, + { + "name": "Tim Düsterhus", + "email": "tim@tideways-gmbh.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.5+ features to lower PHP versions", + "description": "Symfony polyfill for the Time API added to PHP 8.6", "homepage": "https://symfony.com", "keywords": [ "compatibility", + "duration", "polyfill", "portable", - "shim" + "shim", + "time" ], "support": { - "source": "https://github.com/symfony/polyfill-php85/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-time/tree/v1.42.0" }, "funding": [ { @@ -8236,20 +8368,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:50:15+00:00" + "time": "2026-08-07T13:08:13+00:00" }, { "name": "symfony/polyfill-uuid", - "version": "v1.36.0", + "version": "v1.43.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-uuid.git", - "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94" + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/26dfec253c4cf3e51b541b52ddf7e42cb0908e94", - "reference": "26dfec253c4cf3e51b541b52ddf7e42cb0908e94", + "url": "https://api.github.com/repos/symfony/polyfill-uuid/zipball/b23ff8245cc5c4479ea2be3d0132d2e6dd433993", + "reference": "b23ff8245cc5c4479ea2be3d0132d2e6dd433993", "shasum": "" }, "require": { @@ -8299,7 +8431,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/polyfill-uuid/tree/v1.36.0" + "source": "https://github.com/symfony/polyfill-uuid/tree/v1.43.0" }, "funding": [ { @@ -8319,20 +8451,20 @@ "type": "tidelift" } ], - "time": "2026-04-10T16:19:22+00:00" + "time": "2026-09-24T05:20:52+00:00" }, { "name": "symfony/process", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "60f19cd3badc8de688421e21e4305eba50f8089a" + "reference": "e5247f4a5e0797d232ad8e8e6803aeb341843c83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/60f19cd3badc8de688421e21e4305eba50f8089a", - "reference": "60f19cd3badc8de688421e21e4305eba50f8089a", + "url": "https://api.github.com/repos/symfony/process/zipball/e5247f4a5e0797d232ad8e8e6803aeb341843c83", + "reference": "e5247f4a5e0797d232ad8e8e6803aeb341843c83", "shasum": "" }, "require": { @@ -8364,7 +8496,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.4.8" + "source": "https://github.com/symfony/process/tree/v7.4.21" }, "funding": [ { @@ -8384,20 +8516,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-08T16:56:12+00:00" }, { "name": "symfony/routing", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b" + "reference": "7a344cf871532d081875bfdd18f3dff8dca36c5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", - "reference": "9608de9873ec86e754fb6c0a0fa7e5f1a960eb6b", + "url": "https://api.github.com/repos/symfony/routing/zipball/7a344cf871532d081875bfdd18f3dff8dca36c5b", + "reference": "7a344cf871532d081875bfdd18f3dff8dca36c5b", "shasum": "" }, "require": { @@ -8449,7 +8581,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v7.4.8" + "source": "https://github.com/symfony/routing/tree/v7.4.21" }, "funding": [ { @@ -8469,20 +8601,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-11T18:40:59+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.6.1", + "version": "v3.7.3", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43" + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/45112560a3ba2d715666a509a0bc9521d10b6c43", - "reference": "45112560a3ba2d715666a509a0bc9521d10b6c43", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", + "reference": "15e6a07ec2a2c75ceb1b21dd98105ee8456d2257", "shasum": "" }, "require": { @@ -8500,7 +8632,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.7-dev" } }, "autoload": { @@ -8536,7 +8668,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.6.1" + "source": "https://github.com/symfony/service-contracts/tree/v3.7.3" }, "funding": [ { @@ -8556,20 +8688,20 @@ "type": "tidelift" } ], - "time": "2025-07-15T11:30:57+00:00" + "time": "2026-07-27T15:39:01+00:00" }, { "name": "symfony/string", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "114ac57257d75df748eda23dd003878080b8e688" + "reference": "9bc35d074ad16a58c21cd52b18c5cacc4f4c3981" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/114ac57257d75df748eda23dd003878080b8e688", - "reference": "114ac57257d75df748eda23dd003878080b8e688", + "url": "https://api.github.com/repos/symfony/string/zipball/9bc35d074ad16a58c21cd52b18c5cacc4f4c3981", + "reference": "9bc35d074ad16a58c21cd52b18c5cacc4f4c3981", "shasum": "" }, "require": { @@ -8627,7 +8759,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.4.8" + "source": "https://github.com/symfony/string/tree/v7.4.21" }, "funding": [ { @@ -8647,20 +8779,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-03T15:15:30+00:00" }, { "name": "symfony/translation", - "version": "v7.4.8", + "version": "v7.4.17", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "33600f8489485425bfcddd0d983391038d3422e7" + "reference": "2ee1e4a3b32a528a642babe041ff7c440b213b4b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/33600f8489485425bfcddd0d983391038d3422e7", - "reference": "33600f8489485425bfcddd0d983391038d3422e7", + "url": "https://api.github.com/repos/symfony/translation/zipball/2ee1e4a3b32a528a642babe041ff7c440b213b4b", + "reference": "2ee1e4a3b32a528a642babe041ff7c440b213b4b", "shasum": "" }, "require": { @@ -8727,7 +8859,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v7.4.8" + "source": "https://github.com/symfony/translation/tree/v7.4.17" }, "funding": [ { @@ -8747,20 +8879,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-08-21T17:40:08+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.6.1", + "version": "v3.7.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "65a8bc82080447fae78373aa10f8d13b38338977" + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/65a8bc82080447fae78373aa10f8d13b38338977", - "reference": "65a8bc82080447fae78373aa10f8d13b38338977", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/ccb206b98faccc511ebae8e5fad50f2dc0b30621", + "reference": "ccb206b98faccc511ebae8e5fad50f2dc0b30621", "shasum": "" }, "require": { @@ -8773,7 +8905,7 @@ "name": "symfony/contracts" }, "branch-alias": { - "dev-main": "3.6-dev" + "dev-main": "3.7-dev" } }, "autoload": { @@ -8809,7 +8941,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.6.1" + "source": "https://github.com/symfony/translation-contracts/tree/v3.7.1" }, "funding": [ { @@ -8829,20 +8961,20 @@ "type": "tidelift" } ], - "time": "2025-07-15T13:41:35+00:00" + "time": "2026-06-05T06:23:12+00:00" }, { "name": "symfony/uid", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/uid.git", - "reference": "6883ebdf7bf6a12b37519dbc0df62b0222401b56" + "reference": "3e706a245b5343ea93be9cafe84525bfb54e60fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/uid/zipball/6883ebdf7bf6a12b37519dbc0df62b0222401b56", - "reference": "6883ebdf7bf6a12b37519dbc0df62b0222401b56", + "url": "https://api.github.com/repos/symfony/uid/zipball/3e706a245b5343ea93be9cafe84525bfb54e60fc", + "reference": "3e706a245b5343ea93be9cafe84525bfb54e60fc", "shasum": "" }, "require": { @@ -8887,7 +9019,7 @@ "uuid" ], "support": { - "source": "https://github.com/symfony/uid/tree/v7.4.8" + "source": "https://github.com/symfony/uid/tree/v7.4.21" }, "funding": [ { @@ -8907,20 +9039,20 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-12T14:31:36+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd" + "reference": "55d06b02f49eca9bff61828548988e6f8763e8a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9510c3966f749a1d1ff0059e1eabef6cc621e7fd", - "reference": "9510c3966f749a1d1ff0059e1eabef6cc621e7fd", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/55d06b02f49eca9bff61828548988e6f8763e8a6", + "reference": "55d06b02f49eca9bff61828548988e6f8763e8a6", "shasum": "" }, "require": { @@ -8936,7 +9068,7 @@ "symfony/http-kernel": "^6.4|^7.0|^8.0", "symfony/process": "^6.4|^7.0|^8.0", "symfony/uid": "^6.4|^7.0|^8.0", - "twig/twig": "^3.12" + "twig/twig": "^3.12|^4.0" }, "bin": [ "Resources/bin/var-dump-server" @@ -8974,7 +9106,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.4.8" + "source": "https://github.com/symfony/var-dumper/tree/v7.4.21" }, "funding": [ { @@ -8994,7 +9126,7 @@ "type": "tidelift" } ], - "time": "2026-03-30T13:44:50+00:00" + "time": "2026-10-13T05:48:33+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -9053,16 +9185,16 @@ }, { "name": "ueberdosis/tiptap-php", - "version": "2.1.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/ueberdosis/tiptap-php.git", - "reference": "6ea321fa665080e1a72ac5f52dfab19f6a292e2d" + "reference": "5a2e8155c5b09c9ad4efd480550270a6924865b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/6ea321fa665080e1a72ac5f52dfab19f6a292e2d", - "reference": "6ea321fa665080e1a72ac5f52dfab19f6a292e2d", + "url": "https://api.github.com/repos/ueberdosis/tiptap-php/zipball/5a2e8155c5b09c9ad4efd480550270a6924865b9", + "reference": "5a2e8155c5b09c9ad4efd480550270a6924865b9", "shasum": "" }, "require": { @@ -9102,7 +9234,7 @@ ], "support": { "issues": "https://github.com/ueberdosis/tiptap-php/issues", - "source": "https://github.com/ueberdosis/tiptap-php/tree/2.1.0" + "source": "https://github.com/ueberdosis/tiptap-php/tree/2.2.0" }, "funding": [ { @@ -9118,27 +9250,27 @@ "type": "open_collective" } ], - "time": "2026-01-10T16:40:02+00:00" + "time": "2026-08-31T07:00:09+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.6.3", + "version": "v5.7.0", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "955e7815d677a3eaa7075231212f2110983adecc" + "url": "https://github.com/phpdotenv/phpdotenv.git", + "reference": "301c07936b16d88628b126b01d082ba153cf4c40" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc", - "reference": "955e7815d677a3eaa7075231212f2110983adecc", + "url": "https://api.github.com/repos/phpdotenv/phpdotenv/zipball/301c07936b16d88628b126b01d082ba153cf4c40", + "reference": "301c07936b16d88628b126b01d082ba153cf4c40", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.1.4", + "graham-campbell/result-type": "^1.2", "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9.5", + "phpoption/phpoption": "^1.10", "symfony/polyfill-ctype": "^1.26", "symfony/polyfill-mbstring": "^1.26", "symfony/polyfill-php80": "^1.26" @@ -9182,7 +9314,7 @@ "homepage": "https://github.com/vlucas" } ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "description": "Loads environment variables from `.env` to `$_ENV` and `$_SERVER` automagically, and optionally to `getenv()`.", "keywords": [ "dotenv", "env", @@ -9190,7 +9322,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.6.3" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.7.0" }, "funding": [ { @@ -9202,20 +9334,20 @@ "type": "tidelift" } ], - "time": "2025-12-27T19:49:13+00:00" + "time": "2026-08-24T18:07:49+00:00" }, { "name": "voku/portable-ascii", - "version": "2.1.0", + "version": "2.1.1", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "d870a33f0f79d2b4579740b0620200221ee44aeb" + "reference": "8e1051fe39379367aecf014f41744ce7539a856f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/d870a33f0f79d2b4579740b0620200221ee44aeb", - "reference": "d870a33f0f79d2b4579740b0620200221ee44aeb", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/8e1051fe39379367aecf014f41744ce7539a856f", + "reference": "8e1051fe39379367aecf014f41744ce7539a856f", "shasum": "" }, "require": { @@ -9252,7 +9384,7 @@ ], "support": { "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.1.0" + "source": "https://github.com/voku/portable-ascii/tree/2.1.1" }, "funding": [ { @@ -9276,7 +9408,7 @@ "type": "tidelift" } ], - "time": "2026-04-16T23:10:39+00:00" + "time": "2026-04-26T05:33:54+00:00" } ], "packages-dev": [ @@ -9345,16 +9477,16 @@ }, { "name": "filp/whoops", - "version": "2.18.4", + "version": "2.18.7", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d" + "reference": "50670ba239926c50f2073e868f6672f775cd57ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d", - "reference": "d2102955e48b9fd9ab24280a7ad12ed552752c4d", + "url": "https://api.github.com/repos/filp/whoops/zipball/50670ba239926c50f2073e868f6672f775cd57ec", + "reference": "50670ba239926c50f2073e868f6672f775cd57ec", "shasum": "" }, "require": { @@ -9363,8 +9495,8 @@ }, "require-dev": { "mockery/mockery": "^1.0", - "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^4.0 || ^5.0" + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3 || ^10.5.58", + "symfony/var-dumper": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -9404,7 +9536,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.18.4" + "source": "https://github.com/filp/whoops/tree/2.18.7" }, "funding": [ { @@ -9412,23 +9544,25 @@ "type": "github" } ], - "time": "2025-08-08T12:00:00+00:00" + "time": "2026-10-18T13:17:38+00:00" }, { "name": "hamcrest/hamcrest-php", - "version": "v2.1.1", + "version": "v3.0.0", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487" + "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", - "reference": "f8b1c0173b22fa6ec77a81fe63e5b01eba7e6487", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b61cd040da1a4925bc90a51c074f5297e7c0fa52", + "reference": "b61cd040da1a4925bc90a51c074f5297e7c0fa52", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-dom": "*", "php": "^7.4|^8.0" }, "replace": { @@ -9437,13 +9571,15 @@ "kodova/hamcrest-php": "*" }, "require-dev": { + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", "phpunit/php-file-iterator": "^1.4 || ^2.0 || ^3.0", "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -9461,22 +9597,152 @@ ], "support": { "issues": "https://github.com/hamcrest/hamcrest-php/issues", - "source": "https://github.com/hamcrest/hamcrest-php/tree/v2.1.1" + "source": "https://github.com/hamcrest/hamcrest-php/tree/v3.0.0" + }, + "time": "2026-03-17T11:56:53+00:00" + }, + { + "name": "iamcal/sql-parser", + "version": "v0.7", + "source": { + "type": "git", + "url": "https://github.com/iamcal/SQLParser.git", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/iamcal/SQLParser/zipball/610392f38de49a44dab08dc1659960a29874c4b8", + "reference": "610392f38de49a44dab08dc1659960a29874c4b8", + "shasum": "" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^1.0", + "phpunit/phpunit": "^5|^6|^7|^8|^9" + }, + "type": "library", + "autoload": { + "psr-4": { + "iamcal\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Cal Henderson", + "email": "cal@iamcal.com" + } + ], + "description": "MySQL schema parser", + "support": { + "issues": "https://github.com/iamcal/SQLParser/issues", + "source": "https://github.com/iamcal/SQLParser/tree/v0.7" + }, + "time": "2026-01-28T22:20:33+00:00" + }, + { + "name": "larastan/larastan", + "version": "v3.13.0", + "source": { + "type": "git", + "url": "https://github.com/larastan/larastan.git", + "reference": "24ee69a7705ffc7c2cd8a3c96a5f498a4c2de5e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/larastan/larastan/zipball/24ee69a7705ffc7c2cd8a3c96a5f498a4c2de5e3", + "reference": "24ee69a7705ffc7c2cd8a3c96a5f498a4c2de5e3", + "shasum": "" + }, + "require": { + "iamcal/sql-parser": "^0.7.0", + "illuminate/console": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/container": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/contracts": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/database": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/http": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/pipeline": "^11.44.2 || ^12.4.1 || ^13", + "illuminate/support": "^11.44.2 || ^12.4.1 || ^13", + "php": "^8.2", + "phpstan/phpstan": "^2.3.0" + }, + "require-dev": { + "doctrine/coding-standard": "^14", + "laravel/framework": "^11.44.2 || ^12.7.2 || ^13", + "mockery/mockery": "^1.6.12", + "nikic/php-parser": "^5.4", + "orchestra/canvas": "^v9.2.2 || ^10.0.1 || ^11", + "orchestra/testbench-core": "^9.12.0 || ^10.1 || ^11", + "phpstan/phpstan-deprecation-rules": "^2.0.1", + "phpunit/phpunit": "^10.5.35 || ^11.5.15 || ^12.5.8 || ^13.3.0" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench", + "phpmyadmin/sql-parser": "Install to enable Larastan's optional phpMyAdmin-based SQL parser automatically" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon" + ] + }, + "branch-alias": { + "dev-master": "3.0-dev" + } + }, + "autoload": { + "psr-4": { + "Larastan\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Can Vural", + "email": "can9119@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/larastan/larastan/issues", + "source": "https://github.com/larastan/larastan/tree/v3.13.0" }, - "time": "2025-04-30T06:54:44+00:00" + "funding": [ + { + "url": "https://github.com/canvural", + "type": "github" + } + ], + "time": "2026-10-07T14:14:28+00:00" }, { "name": "laravel/pail", - "version": "v1.2.6", + "version": "v1.2.7", "source": { "type": "git", "url": "https://github.com/laravel/pail.git", - "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf" + "reference": "2f7d27dada8effc48b8c424445a69cca7007daaa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pail/zipball/aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", - "reference": "aa71a01c309e7f66bc2ec4fb1a59291b82eb4abf", + "url": "https://api.github.com/repos/laravel/pail/zipball/2f7d27dada8effc48b8c424445a69cca7007daaa", + "reference": "2f7d27dada8effc48b8c424445a69cca7007daaa", "shasum": "" }, "require": { @@ -9543,20 +9809,20 @@ "issues": "https://github.com/laravel/pail/issues", "source": "https://github.com/laravel/pail" }, - "time": "2026-02-09T13:44:54+00:00" + "time": "2026-05-20T22:24:57+00:00" }, { "name": "laravel/pint", - "version": "v1.29.1", + "version": "v1.32.1", "source": { "type": "git", "url": "https://github.com/laravel/pint.git", - "reference": "0770e9b7fafd50d4586881d456d6eb41c9247a80" + "reference": "006bd7825eb01daf92959d060b89cd9514fe4253" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/0770e9b7fafd50d4586881d456d6eb41c9247a80", - "reference": "0770e9b7fafd50d4586881d456d6eb41c9247a80", + "url": "https://api.github.com/repos/laravel/pint/zipball/006bd7825eb01daf92959d060b89cd9514fe4253", + "reference": "006bd7825eb01daf92959d060b89cd9514fe4253", "shasum": "" }, "require": { @@ -9564,17 +9830,19 @@ "ext-mbstring": "*", "ext-tokenizer": "*", "ext-xml": "*", - "php": "^8.2.0" + "php": "^8.3.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.95.1", - "illuminate/view": "^12.56.0", - "larastan/larastan": "^3.9.6", - "laravel-zero/framework": "^12.1.0", - "mockery/mockery": "^1.6.12", + "composer/semver": "^3.4.4", + "friendsofphp/php-cs-fixer": "^3.95.25", + "illuminate/view": "^13.31.0", + "larastan/larastan": "^3.11.0", + "laravel-zero/framework": "^13.0.0", + "laravel/agent-detector": "^2.0.2", + "laravel/prompts": "^0.3.24", + "mockery/mockery": "^1.6.15", "nunomaduro/termwind": "^2.4.0", - "pestphp/pest": "^3.8.6", - "shipfastlabs/agent-detector": "^1.1.3" + "pestphp/pest": "^4.7.8" }, "bin": [ "builds/pint" @@ -9611,20 +9879,20 @@ "issues": "https://github.com/laravel/pint/issues", "source": "https://github.com/laravel/pint" }, - "time": "2026-04-20T15:26:14+00:00" + "time": "2026-09-10T10:47:55+00:00" }, { "name": "laravel/sail", - "version": "v1.57.0", + "version": "v1.69.0", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "fa8d057b6e9310380ccbc3a209ed7f927d54f648" + "reference": "3587ac9d68e8f2eaf36bd9fb003a4555861dca9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/fa8d057b6e9310380ccbc3a209ed7f927d54f648", - "reference": "fa8d057b6e9310380ccbc3a209ed7f927d54f648", + "url": "https://api.github.com/repos/laravel/sail/zipball/3587ac9d68e8f2eaf36bd9fb003a4555861dca9d", + "reference": "3587ac9d68e8f2eaf36bd9fb003a4555861dca9d", "shasum": "" }, "require": { @@ -9674,33 +9942,32 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2026-04-14T13:32:04+00:00" + "time": "2026-10-08T20:06:52+00:00" }, { "name": "mockery/mockery", - "version": "1.6.12", + "version": "1.6.15", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699" + "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/1f4efdd7d3beafe9807b08156dfcb176d18f1699", - "reference": "1f4efdd7d3beafe9807b08156dfcb176d18f1699", + "url": "https://api.github.com/repos/mockery/mockery/zipball/967a801bd188989a5669bd280f252d51c0fdc9ee", + "reference": "967a801bd188989a5669bd280f252d51c0fdc9ee", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "^2.0.1", - "lib-pcre": ">=7.0", + "hamcrest/hamcrest-php": "^2.0 || ^3.0", "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.6.17", - "symplify/easy-coding-standard": "^12.1.14" + "phpunit/phpunit": "^9.6.36", + "symplify/easy-coding-standard": "^13.2.17" }, "type": "library", "autoload": { @@ -9757,24 +10024,24 @@ "security": "https://github.com/mockery/mockery/security/advisories", "source": "https://github.com/mockery/mockery" }, - "time": "2024-05-16T03:13:13+00:00" + "time": "2026-08-19T19:37:52+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.13.4", + "version": "1.14.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a" + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a", - "reference": "07d290f0c47959fd5eed98c95ee5602db07e0b6a", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", + "reference": "8680aa248f8e07bc8fb43f56f0f5fc77a0c96aae", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.0" }, "conflict": { "doctrine/collections": "<1.6.8", @@ -9809,35 +10076,35 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.13.4" + "source": "https://github.com/myclabs/DeepCopy/tree/1.14.0" }, "funding": [ { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" + "url": "https://github.com/mnapoli", + "type": "github" } ], - "time": "2025-08-01T08:46:24+00:00" + "time": "2026-08-11T10:17:44+00:00" }, { "name": "nunomaduro/collision", - "version": "v8.9.3", + "version": "v8.9.5", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "b0d8ab95b29c3189aeeb902d81215231df4c1b64" + "reference": "fb53eacd509a1d303858e2d20cfebf2d630254ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/b0d8ab95b29c3189aeeb902d81215231df4c1b64", - "reference": "b0d8ab95b29c3189aeeb902d81215231df4c1b64", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/fb53eacd509a1d303858e2d20cfebf2d630254ec", + "reference": "fb53eacd509a1d303858e2d20cfebf2d630254ec", "shasum": "" }, "require": { "filp/whoops": "^2.18.4", "nunomaduro/termwind": "^2.4.0", "php": "^8.2.0", - "symfony/console": "^7.4.8 || ^8.0.4" + "symfony/console": "^7.4.14 || ^8.1.1" }, "conflict": { "laravel/framework": "<11.48.0 || >=14.0.0", @@ -9845,12 +10112,12 @@ }, "require-dev": { "brianium/paratest": "^7.8.5", - "larastan/larastan": "^3.9.3", - "laravel/framework": "^11.48.0 || ^12.56.0 || ^13.2.0", - "laravel/pint": "^1.29.0", - "orchestra/testbench-core": "^9.12.0 || ^10.12.1 || ^11.0.0", - "pestphp/pest": "^3.8.5 || ^4.4.3 || ^5.0.0", - "sebastian/environment": "^7.2.1 || ^8.0.4 || ^9.0.0" + "larastan/larastan": "^3.10.0", + "laravel/framework": "^11.48.0 || ^12.56.0 || ^13.20.0", + "laravel/pint": "^1.29.3", + "orchestra/testbench-core": "^9.12.0 || ^10.12.1 || ^11.3.5", + "pestphp/pest": "^3.8.5 || ^4.7.5 || ^5.0.0", + "sebastian/environment": "^7.2.1 || ^8.1.2 || ^9.3.2" }, "type": "library", "extra": { @@ -9913,7 +10180,7 @@ "type": "patreon" } ], - "time": "2026-04-06T19:25:53+00:00" + "time": "2026-07-15T19:09:14+00:00" }, { "name": "phar-io/manifest", @@ -10033,6 +10300,70 @@ }, "time": "2022-02-21T01:04:05+00:00" }, + { + "name": "phpstan/phpstan", + "version": "2.3.1", + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/6155239b488e95d26d1ebd95c6b4bb294d7f09db", + "reference": "6155239b488e95d26d1ebd95c6b4bb294d7f09db", + "shasum": "" + }, + "require": { + "php": "^7.4|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ondřej Mirtes" + }, + { + "name": "Markus Staab" + }, + { + "name": "Vincent Langlet" + } + ], + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + } + ], + "time": "2026-10-08T21:09:11+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "11.0.12", @@ -10382,26 +10713,26 @@ }, { "name": "phpunit/phpunit", - "version": "11.5.55", + "version": "11.5.57", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00" + "reference": "36b75bf56a8535623f5b3e24b27ea1823759da1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/adc7262fccc12de2b30f12a8aa0b33775d814f00", - "reference": "adc7262fccc12de2b30f12a8aa0b33775d814f00", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/36b75bf56a8535623f5b3e24b27ea1823759da1a", + "reference": "36b75bf56a8535623f5b3e24b27ea1823759da1a", "shasum": "" }, "require": { "ext-dom": "*", + "ext-filter": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", - "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.13.4", + "myclabs/deep-copy": "^1.14.0", "phar-io/manifest": "^2.0.4", "phar-io/version": "^3.2.1", "php": ">=8.2", @@ -10464,31 +10795,15 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.55" + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.5.57" }, "funding": [ { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - }, - { - "url": "https://liberapay.com/sebastianbergmann", - "type": "liberapay" - }, - { - "url": "https://thanks.dev/u/gh/sebastianbergmann", - "type": "thanks_dev" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" + "url": "https://phpunit.de/sponsoring.html", + "type": "other" } ], - "time": "2026-02-18T12:37:06+00:00" + "time": "2026-10-05T05:47:54+00:00" }, { "name": "sebastian/cli-parser", @@ -11530,16 +11845,16 @@ }, { "name": "symfony/yaml", - "version": "v7.4.8", + "version": "v7.4.21", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883" + "reference": "044907929c7999814378be22da34722c7a86bad4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c58fdf7b3d6c2995368264c49e4e8b05bcff2883", - "reference": "c58fdf7b3d6c2995368264c49e4e8b05bcff2883", + "url": "https://api.github.com/repos/symfony/yaml/zipball/044907929c7999814378be22da34722c7a86bad4", + "reference": "044907929c7999814378be22da34722c7a86bad4", "shasum": "" }, "require": { @@ -11582,7 +11897,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.4.8" + "source": "https://github.com/symfony/yaml/tree/v7.4.21" }, "funding": [ { @@ -11602,7 +11917,7 @@ "type": "tidelift" } ], - "time": "2026-03-24T13:12:05+00:00" + "time": "2026-10-12T12:34:30+00:00" }, { "name": "theseer/tokenizer", @@ -11656,8 +11971,10 @@ } ], "aliases": [], - "minimum-stability": "dev", - "stability-flags": {}, + "minimum-stability": "stable", + "stability-flags": { + "programmernomad/laracorekit": 20 + }, "prefer-stable": true, "prefer-lowest": false, "platform": { diff --git a/config/auth.php b/config/auth.php index d56848e..4830175 100644 --- a/config/auth.php +++ b/config/auth.php @@ -1,5 +1,7 @@ [ 'users' => [ 'driver' => 'eloquent', - 'model' => env('AUTH_MODEL', Modules\User\Models\User::class), + 'model' => env('AUTH_MODEL', User::class), ], // 'users' => [ diff --git a/config/laracorekit.php b/config/laracorekit.php new file mode 100644 index 0000000..07a86cb --- /dev/null +++ b/config/laracorekit.php @@ -0,0 +1,10 @@ + true, + // This host demonstrates a custom panel; the package supplies its own in fresh apps. + 'panel' => ['enabled' => false, 'id' => 'admin', 'path' => 'admin'], + 'modules' => ['Auth' => true, 'User' => true, 'Settings' => true, 'Media' => true, 'Blog' => true], + 'registration' => true, + 'locales' => ['en', 'hi', 'ar'], +]; diff --git a/config/modules.php b/config/modules.php deleted file mode 100644 index d99187a..0000000 --- a/config/modules.php +++ /dev/null @@ -1,41 +0,0 @@ - [ - 'Core' => [ - 'enabled' => true, - 'namespace' => 'Modules\Core', - 'provider' => 'Modules\Core\CoreServiceProvider', - ], - 'Auth' => [ - 'enabled' => true, - 'namespace' => 'Modules\Auth', - 'provider' => 'Modules\Auth\AuthServiceProvider', - ], - 'User' => [ - 'enabled' => true, - 'namespace' => 'Modules\User', - 'provider' => 'Modules\User\UserServiceProvider', - ], - 'Blog' => [ - 'enabled' => true, - 'namespace' => 'Modules\Blog', - 'provider' => 'Modules\Blog\BlogServiceProvider', - ], - 'Settings' => [ - 'enabled' => true, - 'namespace' => 'Modules\Settings', - 'provider' => 'Modules\Settings\SettingsServiceProvider', - ], - 'Media' => [ - 'enabled' => true, - 'namespace' => 'Modules\Media', - 'provider' => 'Modules\Media\MediaServiceProvider', - ], - 'Docs' => [ - 'enabled' => true, - 'namespace' => 'Modules\Docs', - 'provider' => 'Modules\Docs\DocsServiceProvider', - ], - ], -]; diff --git a/config/permission.php b/config/permission.php index f39f6b5..85b8832 100644 --- a/config/permission.php +++ b/config/permission.php @@ -1,5 +1,9 @@ [ @@ -13,7 +17,7 @@ * `Spatie\Permission\Contracts\Permission` contract. */ - 'permission' => Spatie\Permission\Models\Permission::class, + 'permission' => Permission::class, /* * When using the "HasRoles" trait from this package, we need to know which @@ -24,7 +28,7 @@ * `Spatie\Permission\Contracts\Role` contract. */ - 'role' => Spatie\Permission\Models\Role::class, + 'role' => Role::class, ], @@ -136,7 +140,7 @@ /* * The class to use to resolve the permissions team id */ - 'team_resolver' => \Spatie\Permission\DefaultTeamResolver::class, + 'team_resolver' => DefaultTeamResolver::class, /* * Passport Client Credentials Grant @@ -183,7 +187,7 @@ * When permissions or roles are updated the cache is flushed automatically. */ - 'expiration_time' => \DateInterval::createFromDateString('24 hours'), + 'expiration_time' => DateInterval::createFromDateString('24 hours'), /* * The cache key used to store all permissions. diff --git a/config/site.php b/config/site.php new file mode 100644 index 0000000..9f31cae --- /dev/null +++ b/config/site.php @@ -0,0 +1,6 @@ + env('LARACOREKIT_COLLECT_STATS', false), +]; diff --git a/modules/Blog/database/seeders/BlogSeeder.php b/database/seeders/BlogSeeder.php similarity index 99% rename from modules/Blog/database/seeders/BlogSeeder.php rename to database/seeders/BlogSeeder.php index 7edd608..6af3f07 100644 --- a/modules/Blog/database/seeders/BlogSeeder.php +++ b/database/seeders/BlogSeeder.php @@ -1,10 +1,10 @@ first(); - if (!$admin) { + if (! $admin) { $admin = User::first(); } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index ed9bd96..9cffe0c 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -2,22 +2,17 @@ namespace Database\Seeders; -use Modules\User\Models\User; -// use Illuminate\Database\Console\Seeds\WithoutModelEvents; use Illuminate\Database\Seeder; +use Modules\User\Database\Seeders\RolePermissionSeeder; class DatabaseSeeder extends Seeder { - /** - * Seed the application's database. - */ public function run(): void { - $this->call([ - \Modules\User\Database\Seeders\RolePermissionSeeder::class, - \Modules\User\Database\Seeders\UserSeeder::class, - \Modules\Settings\Database\Seeders\SettingSeeder::class, - \Modules\Blog\Database\Seeders\BlogSeeder::class, - ]); + // Safe defaults: roles only. Demo content requires an explicit DemoSeeder invocation. + $this->call(RolePermissionSeeder::class); + if (config('demo.enabled')) { + $this->call(DemoSeeder::class); + } } } diff --git a/database/seeders/DemoSeeder.php b/database/seeders/DemoSeeder.php new file mode 100644 index 0000000..fcda371 --- /dev/null +++ b/database/seeders/DemoSeeder.php @@ -0,0 +1,23 @@ +call([ + RolePermissionSeeder::class, + UserSeeder::class, + SettingSeeder::class, + BlogSeeder::class, + ]); + } +} diff --git a/modules/Settings/database/seeders/SettingSeeder.php b/database/seeders/SettingSeeder.php similarity index 98% rename from modules/Settings/database/seeders/SettingSeeder.php rename to database/seeders/SettingSeeder.php index 3824124..196dd77 100644 --- a/modules/Settings/database/seeders/SettingSeeder.php +++ b/database/seeders/SettingSeeder.php @@ -1,9 +1,9 @@ config('demo.credentials.admin.email', 'admin@laracorekit.com')], @@ -21,9 +25,9 @@ public function run(): void ); // Assign Admin role if it exists - if (class_exists(\Spatie\Permission\Models\Role::class)) { - $adminRole = \Spatie\Permission\Models\Role::where('name', 'Admin')->first(); - if ($adminRole && !$admin->hasRole('Admin')) { + if (class_exists(Role::class)) { + $adminRole = Role::where('name', 'Admin')->first(); + if ($adminRole && ! $admin->hasRole('Admin')) { $admin->assignRole('Admin'); } } @@ -33,14 +37,14 @@ public function run(): void ['email' => 'editor@laracorekit.com'], [ 'name' => 'Editor User', - 'password' => Hash::make('password'), + 'password' => Hash::make(config('demo.credentials.admin.password', 'Admin@123')), 'email_verified_at' => now(), ] ); - if (class_exists(\Spatie\Permission\Models\Role::class)) { - $editorRole = \Spatie\Permission\Models\Role::where('name', 'Editor')->first(); - if ($editorRole && !$editor->hasRole('Editor')) { + if (class_exists(Role::class)) { + $editorRole = Role::where('name', 'Editor')->first(); + if ($editorRole && ! $editor->hasRole('Editor')) { $editor->assignRole('Editor'); } } @@ -55,9 +59,9 @@ public function run(): void ] ); - if (class_exists(\Spatie\Permission\Models\Role::class)) { - $userRole = \Spatie\Permission\Models\Role::where('name', 'User')->first(); - if ($userRole && !$user->hasRole('User')) { + if (class_exists(Role::class)) { + $userRole = Role::where('name', 'User')->first(); + if ($userRole && ! $user->hasRole('User')) { $user->assignRole('User'); } } diff --git a/docs/SCREENSHOT_GUIDE.md b/docs/SCREENSHOT_GUIDE.md index 9a458d7..6ede718 100644 --- a/docs/SCREENSHOT_GUIDE.md +++ b/docs/SCREENSHOT_GUIDE.md @@ -1,309 +1,15 @@ -# Screenshot and Media Guide for LaraCoreKit +# Real application screenshots -This guide explains exactly which screenshots and GIF animations you need to create and where to place them. +Screenshots are generated from a disposable local SQLite application, never customer data. Files are stored in `docs/images/screenshots` for the README and `public/images/screenshots` for the website. They show the host application, including optional showcase features. -## Directory Structure +## Reproduce -Create this directory structure for all images: +Install the project dependencies and build assets. Configure an isolated test process with `APP_ENV=testing`, `DB_CONNECTION=sqlite`, `DB_DATABASE` pointing to a disposable file named `laracorekit-preview.sqlite`, `DEMO_MODE=false`, `CACHE_STORE=array`, `SESSION_DRIVER=file` and a localhost APP_URL. Create the empty file, run migrations, then `php tools/preview-seed.php`. The fixture refuses to run outside this setup. -``` -docs/ - images/ - screenshots/ - admin-dashboard.png - blog-editor.png - ui-showcase.png - rtl-support.png - create-blog-post.gif - language-switching.gif -``` +Start `php artisan serve --host=127.0.0.1 --port=8765 --no-reload` with the same environment. With Playwright available, run `node tools/browser-smoke.cjs`. The script uses Edge by default; set PLAYWRIGHT_CHANNEL for a supported installed browser. Set LARACOREKIT_PREVIEW_URL if using a different local server URL. -## Required Screenshots +The fixture's preview account is test-only and its password appears only in local test tooling. Do not deploy the fixture or reuse its credentials. No Packagist/GitHub account tokens are used in screenshots. -### 1. Admin Dashboard (admin-dashboard.png) +Captured pages include homepage, documentation, public blog, admin dashboard, blog management/editor, mobile navigation and UI showcase. Inspect images after capture; passing HTTP checks does not guarantee good layout. No generated GIFs or placeholder screenshots are advertised. -**What to capture:** -- Navigate to: http://localhost:8000/admin or https://www.laracorekit.com/admin -- Login as admin user -- Capture the main dashboard view showing: - - Filament admin navigation sidebar - - Dashboard widgets (if any) - - Dark mode toggle visible - - User menu in top-right - - At least 2-3 resources visible in sidebar (Users, Blog Posts, etc.) - -**Technical requirements:** -- Resolution: 1920x1080 or higher -- Format: PNG -- Show full browser window or crop to just the admin panel area -- Include visible data (users, blog posts, etc.) from seeded data -- Optional: Take both light and dark mode versions - -**Recommended tool:** -- Windows: Snipping Tool (Win + Shift + S) -- Browser: Full page screenshot extension -- Professional: ShareX, Greenshot - ---- - -### 2. Blog Editor (blog-editor.png) - -**What to capture:** -- Navigate to: http://localhost:8000/admin/blog-posts/create or edit an existing post -- Show the Filament form for creating/editing a blog post with: - - Rich text editor visible with content - - SEO fields section visible (slug, meta description) - - Language selector showing multilingual support - - Status selector (Draft/Published) - - Featured image upload area - - Save/Cancel buttons - -**Technical requirements:** -- Resolution: 1920x1080 or higher -- Format: PNG -- Capture the full form or most important sections -- Show actual content in the editor, not empty fields -- Make sure multilingual tabs/selector is visible - -**Example content to show:** -Use one of the seeded blog posts or create a new one titled "Getting Started with LaraCoreKit" - ---- - -### 3. UI Component Showcase (ui-showcase.png) - -**What to capture:** -- Navigate to: http://localhost:8000/ui-showcase or https://www.laracorekit.com/ui-showcase -- Capture a view showing: - - Multiple component categories visible - - At least 6-8 different components rendered - - Variety of components (buttons, forms, cards, tables, etc.) - - Clean, organized layout - - Navigation showing component categories - -**Technical requirements:** -- Resolution: 1920x1080 or higher -- Format: PNG -- Capture a scrolled view showing component variety -- Ensure text is readable -- Show colorful, visually appealing components - -**Alternative:** -Create a collage showing 4-6 individual component categories in a grid layout - ---- - -### 4. RTL Support (rtl-support.png) - -**What to capture:** -- Navigate to homepage or blog page -- Switch language to Arabic using language switcher -- Capture a page showing: - - Right-to-left text direction - - Navigation aligned to right - - Content properly flowing RTL - - Arabic text visible and readable - - UI elements mirrored correctly - -**Technical requirements:** -- Resolution: 1920x1080 or higher -- Format: PNG -- Show clear before/after or side-by-side comparison if possible -- Ensure Arabic text is properly displayed -- Show both navigation and content areas - -**Recommended approach:** -Take two screenshots (LTR English and RTL Arabic) and combine them side-by-side using image editor, OR take a single screenshot showing the RTL layout prominently - ---- - -## Required GIF Animations - -### 5. Creating a Blog Post (create-blog-post.gif) - -**What to record:** -A short workflow showing: -1. Navigate to admin panel -2. Click "Blog Posts" in sidebar -3. Click "Create" button -4. Fill in title field (type: "My First Blog Post") -5. Add some content to the rich text editor -6. Select "Published" status -7. Click "Save" button -8. Show success notification -9. See the new post in the list - -**Technical requirements:** -- Duration: 15-30 seconds -- Resolution: 1920x1080 or 1280x720 -- Format: GIF (optimized, max 5MB) or MP4 -- Frame rate: 10-15 fps for GIF, 30 fps for MP4 -- Show cursor movements clearly -- Smooth transitions - -**Recommended tools:** -- Windows: ScreenToGif (free, excellent) -- Cross-platform: OBS Studio + GIF converter -- Online: Recordit, Gifox -- Browser extension: Chrome Capture, Loom - -**Tips:** -- Record at normal speed, then speed up 1.5x -- Pause briefly on important steps -- Crop to focus on relevant area -- Optimize GIF size (use fewer colors, lower fps if needed) - ---- - -### 6. Language Switching (language-switching.gif) - -**What to record:** -A short workflow showing: -1. Start on homepage in English -2. Show language switcher in navigation -3. Click language dropdown -4. Select "Arabic" or "Hindi" -5. Show page content changing language -6. Show RTL layout shift (if switching to Arabic) -7. Navigate to one more page (like Blog or About) -8. Show consistent language across site - -**Technical requirements:** -- Duration: 10-20 seconds -- Resolution: 1920x1080 or 1280x720 -- Format: GIF (optimized, max 5MB) or MP4 -- Frame rate: 10-15 fps for GIF -- Show smooth transition -- Visible UI changes - -**Tips:** -- Show clear before/after state -- Highlight the language switcher -- Show multiple pages if possible (homepage + blog) -- For Arabic, emphasize the RTL layout change - ---- - -## File Placement - -After creating all screenshots and GIFs: - -1. Create the directory structure: -```bash -mkdir -p docs/images/screenshots -``` - -2. Place files with exact names: -``` -docs/images/screenshots/admin-dashboard.png -docs/images/screenshots/blog-editor.png -docs/images/screenshots/ui-showcase.png -docs/images/screenshots/rtl-support.png -docs/images/screenshots/create-blog-post.gif -docs/images/screenshots/language-switching.gif -``` - -3. Verify files: - - All files exist - - File names match exactly (lowercase, hyphens, correct extensions) - - PNG files are not too large (compress if over 1MB each) - - GIF files are optimized (max 5MB each, preferably under 3MB) - -## Image Optimization - -### PNG Optimization -Use one of these tools to compress PNG files without losing quality: -- **TinyPNG** - https://tinypng.com (online, drag and drop) -- **ImageOptim** - https://imageoptim.com (Mac) -- **PNGGauntlet** - https://pnggauntlet.com (Windows) -- **squoosh.app** - https://squoosh.app (online, advanced) - -Target: Keep each PNG under 500KB if possible, max 1MB - -### GIF Optimization -Use these tools to reduce GIF file size: -- **ScreenToGif** - Has built-in optimizer (Windows) -- **ezgif.com** - https://ezgif.com/optimize (online) -- **gifsicle** - Command line tool for advanced optimization -- Convert to MP4 if GIF is too large, then use video tag in docs - -Target: Keep each GIF under 3MB, ideally under 2MB - -**GIF optimization tips:** -- Reduce colors to 64-128 instead of 256 -- Lower frame rate to 10-12 fps -- Resize to 1280x720 or 1024x768 if needed -- Crop to focus area only -- Remove unnecessary frames - -## Alternative: Video Format - -If GIF files are too large even after optimization, you can use MP4 format instead: - -1. Record as MP4 using OBS Studio or similar -2. Place in same directory with .mp4 extension -3. Update README.md to use HTML5 video tag: - -```html - -``` - -MP4 files are usually 10-20x smaller than GIFs for the same quality. - -## Checklist - -Before committing, verify: - -- [ ] All 6 files created and placed in correct directory -- [ ] File names match exactly (lowercase, hyphens, correct extensions) -- [ ] PNG files are clear and readable (1920x1080 or higher) -- [ ] PNG files are optimized (under 1MB each) -- [ ] GIF files show smooth animations (15-30 seconds) -- [ ] GIF files are optimized (under 3MB each) -- [ ] All screenshots show seeded demo data, not empty screens -- [ ] RTL screenshot clearly shows right-to-left layout -- [ ] Images look professional (no personal info, clean browser, etc.) -- [ ] Test that images display correctly in README.md - -## After Adding Images - -Once all images are added: - -1. Commit the images: -```bash -git add docs/images/screenshots/ -git commit -m "Add product screenshots and demo GIFs" -``` - -2. Push to GitHub: -```bash -git push origin main -``` - -3. Verify images display on GitHub README -4. Update website homepage with same images -5. Consider adding to docs pages as well - -## Additional Screenshots (Optional) - -Consider adding these for documentation and marketing: - -- **Login page** - show auth UI (login-page.png) -- **User profile** - show profile editing (user-profile.png) -- **Settings page** - show admin settings (settings-page.png) -- **Media library** - show file management (media-library.png) -- **Mobile view** - show responsive design (mobile-view.png) -- **Dark mode** - show dark mode UI (dark-mode.png) - -Place these in docs/images/additional/ directory. - ---- - -**Questions or need help?** - -If you encounter issues capturing screenshots or creating GIFs, you can: -1. Use the live demo site at https://www.laracorekit.com -2. Seed your local database with demo data: `php artisan db:seed` -3. Ask for help: https://github.com/ProgrammerNomad/LaraCoreKit/discussions +Set `LARACOREKIT_CRAWL_SHOWCASE=true` when running the browser script to additionally validate every linked showcase URL. Theme and Arabic RTL checks capture additional real views. diff --git a/docs/admin/custom-pages.md b/docs/admin/custom-pages.md index d8946f4..9cb2c6d 100644 --- a/docs/admin/custom-pages.md +++ b/docs/admin/custom-pages.md @@ -1,119 +1,7 @@ -# Custom Admin Pages +# Custom admin pages ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Source Files:** [Settings Page example](../../modules/Settings/views/filament/pages/settings.blade.php) ---- +The package Settings page lives under `packages/core/modules/Settings/src/Filament/Pages`. Its view namespace is `settings`. The demo Dashboard lives under `app/Filament/Pages` and is host-only. -Filament Custom Pages let you build completely custom screens in the admin panel - dashboards, reports, settings forms, and more - without being tied to a specific Eloquent model. +Use Filament 5's page APIs for your own application pages and register them in a custom panel. Enforce permissions again inside public Livewire mutation methods; navigation visibility alone is insufficient. Settings provides an example by checking edit permission in `save()`. ---- - -## Creating a Custom Page - -```bash -php artisan make:filament-page DashboardStats -``` - -Move to your module: -``` -modules/Core/src/Filament/Pages/DashboardStats.php -``` - ---- - -## Custom Dashboard Page - -```php -stats = [ - 'users' => User::count(), - 'posts' => Post::where('status', 'published')->count(), - 'drafts' => Post::where('status', 'draft')->count(), - 'new_today' => User::whereDate('created_at', today())->count(), - ]; - } -} -``` - ---- - -## Custom Page View - -```blade -{{-- modules/Core/views/filament/pages/dashboard-stats.blade.php --}} - - -
- @foreach($stats as $key => $value) -
-

{{ str_replace('_', ' ', $key) }}

-

{{ number_format($value) }}

-
- @endforeach -
-
-``` - ---- - -## Settings Page (Form-based) - -```php -use Filament\Forms\Components\TextInput; -use Filament\Forms\Concerns\InteractsWithForms; -use Filament\Pages\Page; - -class SiteSettings extends Page -{ - use InteractsWithForms; - - protected static ?string $navigationIcon = 'heroicon-o-cog'; - protected static string $view = 'core::filament.pages.site-settings'; - - public string $site_name = ''; - - public function mount(): void - { - $this->site_name = Setting::get('site_name', ''); - } - - public function save(): void - { - Setting::set('site_name', $this->site_name); - $this->notify('success', 'Settings saved!'); - } - - protected function getFormSchema(): array - { - return [ - TextInput::make('site_name')->required(), - ]; - } -} -``` - ---- - -## Next Steps - -**[Forms & Tables →](forms-tables)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/admin/filament-overview.md b/docs/admin/filament-overview.md index 8462ece..2cfb317 100644 --- a/docs/admin/filament-overview.md +++ b/docs/admin/filament-overview.md @@ -1,109 +1,11 @@ -# Admin Panel Overview (Filament) +# Filament administration ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Source Files:** [AdminPanelProvider](../../app/Providers/Filament/AdminPanelProvider.php) ---- +The reusable package provides its own panel at `/admin`, with public frontend features available alongside it. Create an administrator with `php artisan laracorekit:admin`; a generic Filament user without the required role cannot access the panel. -LaraCoreKit includes a **Filament 5** admin panel - a beautiful, powerful TALL-stack admin interface built for Laravel. +Registered resources include users, roles, permissions and blogs, plus the settings page. There is no separate media-library resource. Use `php artisan route:list --path=admin` for exact resource URLs. ---- +The package panel uses Filament's default theme. The website host disables that panel and registers a custom panel provider, theme, dashboard and optional demo widget. Demo banners are not part of the package. -## Access the Admin Panel +Set `panel.enabled=false` to build your own panel and register the resources you need. Preserve authorization methods when customizing resources. -``` -URL: /admin -Login: your Filament admin credentials -``` - -Create your first admin user: - -```bash -php artisan filament:user -``` - ---- - -## What's Included - -| Section | Route | Description | -|---------|-------|-------------| -| Dashboard | `/admin` | Overview stats and activity | -| Users | `/admin/users` | Manage registered users | -| Roles | `/admin/roles` | Roles & permissions | -| Permissions | `/admin/permissions` | Fine-grained permission management | -| Posts | `/admin/posts` | Blog content management | -| Media | `/admin/media` | File and image library | -| Settings | `/admin/settings` | Site configuration form | - ---- - -## Admin Panel Architecture - -``` -app/Providers/Filament/AdminPanelProvider.php ← Panel config -modules/*/src/Filament/ -├── Resources/ ← CRUD resources (one per model) -├── Pages/ ← Custom admin pages -└── Widgets/ ← Dashboard widgets -``` - ---- - -## AdminPanelProvider - -The admin panel is configured in `app/Providers/Filament/AdminPanelProvider.php`: - -```php -use Filament\Panel; -use Filament\PanelProvider; - -class AdminPanelProvider extends PanelProvider -{ - public function panel(Panel $panel): Panel - { - return $panel - ->default() - ->id('admin') - ->path('admin') - ->login() - ->colors(['primary' => Color::Violet]) - ->discoverResources(in: app_path('Filament/Resources'), for: 'App\\Filament\\Resources') - ->discoverPages(in: app_path('Filament/Pages'), for: 'App\\Filament\\Pages'); - } -} -``` - ---- - -## Navigation Groups - -Resources are grouped in the sidebar using `$navigationGroup`: - -```php -class PostResource extends Resource -{ - protected static ?string $navigationGroup = 'Blog'; - protected static ?string $navigationIcon = 'heroicon-o-document-text'; - protected static ?int $navigationSort = 1; -} -``` - ---- - -## Authorization - -Users accessing `/admin` must pass the `canAccessFilament()` check. By default, any user with `is_admin = true` or the `admin` role can access it. - ---- - -## Dark Mode - -Filament's dark mode is enabled by default and follows system preference. - ---- - -## Next Steps - -**[Resources →](resources)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/admin/forms-tables.md b/docs/admin/forms-tables.md index 007dcab..67638ad 100644 --- a/docs/admin/forms-tables.md +++ b/docs/admin/forms-tables.md @@ -1,147 +1,9 @@ -# Forms & Tables in Filament +# Forms and tables ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Source Files:** [Filament Forms Docs](https://filamentphp.com/docs/5.x/forms) | [Example Resource](../../modules/User/src/Filament/Resources/UserResource.php) ---- +The package uses Filament 5 schema and table APIs. Forms are organized under resource `Schemas` directories; table definitions live under `Tables`. -Filament provides rich declarative builders for forms and tables that power all admin resources in LaraCoreKit. +User forms contain identity fields, hashed password handling and role assignments. Blog forms contain translations, status, author and metadata fields. Table definitions provide search, filters and record actions. ---- +Validate permissions on the server for role assignment, publication and destructive actions. Use Laravel's JSON query syntax for database portability rather than concatenating SQL for a specific database. Consult the official Filament 5 documentation when extending components. -## Form Fields Reference - -```php -use Filament\Forms\Components\*; - -$form->schema([ - // Text inputs - TextInput::make('title')->required()->maxLength(255), - TextInput::make('slug')->unique(ignoreRecord: true), - TextInput::make('email')->email()->required(), - TextInput::make('password')->password()->minLength(8), - - // Select & multi-select - Select::make('status') - ->options(['draft' => 'Draft', 'published' => 'Published']) - ->default('draft'), - - Select::make('tags') - ->multiple() - ->relationship('tags', 'name'), - - // Rich text - RichEditor::make('content')->columnSpanFull(), - MarkdownEditor::make('notes'), - - // Dates - DatePicker::make('published_at'), - DateTimePicker::make('scheduled_at'), - - // Toggle / Checkbox - Toggle::make('is_featured')->inline(false), - Checkbox::make('agree_terms')->required(), - - // File uploads - FileUpload::make('attachment'), - FileUpload::make('avatar')->image()->avatar()->circular(), - - // Layout helpers - Grid::make(2)->schema([...]), - Section::make('SEO')->schema([...]), - Tabs::make()->tabs([ - Tabs\Tab::make('Content')->schema([...]), - Tabs\Tab::make('SEO')->schema([...]), - ]), -]); -``` - ---- - -## Table Columns Reference - -```php -use Filament\Tables\Columns\*; - -$table->columns([ - TextColumn::make('title')->searchable()->sortable()->limit(50), - TextColumn::make('author.name')->label('Author'), - BadgeColumn::make('status') - ->colors(['success' => 'published', 'warning' => 'draft', 'danger' => 'archived']), - ImageColumn::make('avatar')->circular(), - IconColumn::make('is_featured')->boolean(), - TextColumn::make('created_at')->dateTime()->since()->sortable(), - TextColumn::make('published_at')->date(), -]); -``` - ---- - -## Table Filters - -```php -use Filament\Tables\Filters\*; - -$table->filters([ - SelectFilter::make('status')->options(['draft' => 'Draft', 'published' => 'Published']), - SelectFilter::make('locale')->options(['en' => 'English', 'hi' => 'Hindi', 'ar' => 'Arabic']), - - Filter::make('featured') - ->label('Featured only') - ->query(fn ($query) => $query->where('is_featured', true)), - - Filter::make('published_this_month') - ->query(fn ($query) => $query->whereMonth('published_at', now()->month)), -]); -``` - ---- - -## Table Actions - -```php -use Filament\Tables\Actions\*; - -$table - ->actions([ - EditAction::make(), - DeleteAction::make(), - Action::make('publish') - ->label('Publish') - ->icon('heroicon-o-check') - ->visible(fn ($record) => $record->status === 'draft') - ->action(fn ($record) => $record->update(['status' => 'published'])), - ]) - ->bulkActions([ - DeleteBulkAction::make(), - BulkAction::make('publish_selected') - ->label('Publish Selected') - ->action(fn ($records) => $records->each->update(['status' => 'published'])), - ]); -``` - ---- - -## Validation - -All form fields support Laravel validation rules: - -```php -TextInput::make('email') - ->email() - ->required() - ->unique('users', 'email', ignoreRecord: true) - ->maxLength(255), - -TextInput::make('price') - ->numeric() - ->minValue(0) - ->maxValue(99999), -``` - ---- - -## Next Steps - -**[Livewire Basics →](../frontend/livewire)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/admin/resources.md b/docs/admin/resources.md index e30df03..59658b6 100644 --- a/docs/admin/resources.md +++ b/docs/admin/resources.md @@ -1,155 +1,9 @@ -# Filament Resources +# Admin resources ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Source Files:** [PostResource example](../../modules/Blog/src/Filament/Resources/PostResource.php) ---- +Resources live under the package module's `src/Filament/Resources` directory. They compose schema classes, table classes and list/create/view/edit pages. User resources manage User, Role and Permission models; BlogResource manages Blog. -Filament Resources are the primary way to manage Eloquent models in the LaraCoreKit admin panel. LaraCoreKit places each module's resources inside the module directory. +Each resource checks permissions for record access and mutations. Bulk delete/restore/force-delete paths must remain consistent with record permissions. Test direct record URLs, not only resource navigation. ---- +Add application-specific resources to your application's own panel. Editing files in vendor will be lost during updates. -## Resource Location - -``` -modules/{Module}/src/Filament/Resources/ -└── {Model}Resource.php -``` - -Example: -``` -modules/Blog/src/Filament/Resources/PostResource.php -``` - ---- - -## Creating a Resource - -```bash -php artisan make:filament-resource Post --model="Modules\Blog\Models\Post" -``` - -Move the generated file to your module and update the namespace. - ---- - -## Full Resource Example - -```php -schema([ - Forms\Components\Grid::make(2)->schema([ - Forms\Components\TextInput::make('title') - ->required() - ->maxLength(255) - ->live(onBlur: true) - ->afterStateUpdated(fn ($state, $set) => - $set('slug', \Str::slug($state)) - ), - - Forms\Components\TextInput::make('slug') - ->required() - ->unique(ignoreRecord: true), - ]), - - Forms\Components\Select::make('status') - ->options(['draft' => 'Draft', 'published' => 'Published']) - ->default('draft') - ->required(), - - Forms\Components\Select::make('locale') - ->options(['en' => 'English', 'hi' => 'Hindi', 'ar' => 'Arabic']) - ->default('en') - ->required(), - - Forms\Components\Textarea::make('excerpt') - ->rows(2) - ->maxLength(500), - - Forms\Components\RichEditor::make('content') - ->columnSpanFull() - ->required(), - - Forms\Components\SpatieMediaLibraryFileUpload::make('cover') - ->collection('cover') - ->image() - ->imageResizeMode('cover'), - - Forms\Components\DateTimePicker::make('published_at'), - ]); - } - - public static function table(Table $table): Table - { - return $table - ->columns([ - Tables\Columns\TextColumn::make('title')->searchable()->sortable(), - Tables\Columns\BadgeColumn::make('status') - ->colors(['warning' => 'draft', 'success' => 'published']), - Tables\Columns\TextColumn::make('locale')->label('Lang'), - Tables\Columns\TextColumn::make('published_at')->since()->sortable(), - ]) - ->filters([ - Tables\Filters\SelectFilter::make('status') - ->options(['draft' => 'Draft', 'published' => 'Published']), - Tables\Filters\SelectFilter::make('locale') - ->options(['en' => 'English', 'hi' => 'Hindi', 'ar' => 'Arabic']), - ]) - ->actions([ - Tables\Actions\EditAction::make(), - Tables\Actions\DeleteAction::make(), - ]) - ->bulkActions([ - Tables\Actions\DeleteBulkAction::make(), - ]); - } - - public static function getPages(): array - { - return [ - 'index' => Pages\ListPosts::route('/'), - 'create' => Pages\CreatePost::route('/create'), - 'edit' => Pages\EditPost::route('/{record}/edit'), - ]; - } -} -``` - ---- - -## Registering Resources - -Filament auto-discovers resources. If you need manual registration, add to `AdminPanelProvider`: - -```php -->resources([ - PostResource::class, -]) -``` - ---- - -## Next Steps - -**[Custom Pages →](custom-pages)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/advanced/caching.md b/docs/advanced/caching.md index ea93acb..1279ac5 100644 --- a/docs/advanced/caching.md +++ b/docs/advanced/caching.md @@ -1,171 +1,9 @@ -# Caching +# Caching -**Estimated time:** 8 minutes -**Difficulty:** Intermediate +Choose a cache store appropriate to deployment. Settings-page reads cache individual keys and saves invalidate those keys. Blog category caching includes the locale in its key. ---- +Authentication throttles use Laravel's cache-backed rate limiter. Use shared storage across servers so limits cannot be bypassed by switching application instances. Avoid broad cache flushes in ordinary content actions. -Effective caching can make your application 10-100x faster. LaraCoreKit supports multiple cache drivers out of the box. +Deploy using reviewed configuration/route/view caching and clear stale caches when changing providers or package settings. Application-specific content caching and invalidation need their own tests. ---- - -## Cache Drivers - -| Driver | Config value | Best For | -|--------|-------------|----------| -| File | `file` | Development / small apps | -| Redis | `redis` | Production (recommended) | -| Memcached | `memcached` | High-traffic alternative | -| DynamoDB | `dynamodb` | AWS serverless deployments | -| Array | `array` | Testing only | - -Set in `.env`: - -```env -CACHE_DRIVER=redis -``` - ---- - -## Basic Cache Operations - -```php -use Illuminate\Support\Facades\Cache; - -// Store a value (seconds TTL) -Cache::put('key', $value, 3600); - -// Store with Carbon TTL -Cache::put('key', $value, now()->addHours(6)); - -// Store forever -Cache::forever('key', $value); - -// Retrieve -$value = Cache::get('key'); -$value = Cache::get('key', 'default_value'); - -// Check existence -Cache::has('key'); - -// Remove -Cache::forget('key'); - -// Clear all cache -Cache::flush(); -``` - ---- - -## The Remember Pattern (Most Common) - -```php -// Only queries DB if cache misses -$posts = Cache::remember('home_posts', 3600, function () { - return Post::published()->latest()->take(6)->get(); -}); - -// Remember forever -$settings = Cache::rememberForever('app_settings', function () { - return Setting::all()->pluck('value', 'key'); -}); -``` - ---- - -## Cache in Livewire Components - -```php -use Illuminate\Support\Facades\Cache; -use Livewire\Attributes\Computed; - -class BlogList extends Component -{ - #[Computed] - public function posts() - { - return Cache::remember('blog_list_' . $this->page, 300, function () { - return Post::published() - ->locale(app()->getLocale()) - ->latest() - ->paginate(12); - }); - } -} -``` - ---- - -## Cache Tags - -Group related cache items for easy invalidation: - -```php -// Store with tags -Cache::tags(['posts', 'homepage'])->put('featured_posts', $posts, 3600); - -// Retrieve with tags -$posts = Cache::tags(['posts'])->get('featured_posts'); - -// Invalidate all 'posts' tagged caches at once -Cache::tags(['posts'])->flush(); -``` - -> **Note:** Cache tags require Redis or Memcached driver. - ---- - -## Model Cache Events - -Auto-clear cache when model changes: - -```php -class Post extends Model -{ - protected static function booted(): void - { - static::saved(function () { - Cache::tags(['posts'])->flush(); - }); - - static::deleted(function () { - Cache::tags(['posts'])->flush(); - }); - } -} -``` - ---- - -## HTTP Response Caching - -Cache entire HTTP responses: - -```php -// In a controller -return response() - ->view('blog.index', compact('posts')) - ->header('Cache-Control', 'public, max-age=3600') - ->header('ETag', md5($posts->toJson())); -``` - ---- - -## Artisan Cache Commands - -```bash -# Clear application cache -php artisan cache:clear - -# Clear config cache -php artisan config:clear - -# Clear all compiled/cached files -php artisan optimize:clear -``` - ---- - -## Next Steps - -**[Queues →](queues)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/advanced/queues.md b/docs/advanced/queues.md index 6059c5f..9ee2b2a 100644 --- a/docs/advanced/queues.md +++ b/docs/advanced/queues.md @@ -1,195 +1,7 @@ -# Queues +# Queues -**Estimated time:** 8 minutes -**Difficulty:** Intermediate +Queue configuration remains standard Laravel configuration. Select a backend, run workers under a process supervisor and monitor failed jobs. Media conversions or notifications that you add may require workers. ---- +The demo reset scheduler belongs only to the disposable demo host. Installing the reusable package does not configure a worker service or deployment scheduler automatically. Test retry and failure behavior for your application's jobs. -Queues offload time-consuming tasks (sending emails, image processing, API calls) out of the web request, keeping your app fast and responsive. - ---- - -## Configuration - -Set the queue connection in `.env`: - -```env -QUEUE_CONNECTION=redis # Production (recommended) -QUEUE_CONNECTION=database # Simple fallback -QUEUE_CONNECTION=sync # Development (no workers needed) -``` - -For database driver, create the jobs table: - -```bash -php artisan queue:table -php artisan migrate -``` - ---- - -## Creating a Job - -```bash -php artisan make:job SendWelcomeEmail -``` - -```php -onQueue('emails'); - } - - public function handle(): void - { - Mail::to($this->user->email)->send(new WelcomeMail($this->user)); - } - - public function failed(\Throwable $exception): void - { - // Log failure, notify admin, etc. - \Log::error('Welcome email failed', [ - 'user_id' => $this->user->id, - 'error' => $exception->getMessage(), - ]); - } -} -``` - ---- - -## Dispatching Jobs - -```php -// Dispatch immediately -SendWelcomeEmail::dispatch($user); - -// Dispatch after delay -SendWelcomeEmail::dispatch($user)->delay(now()->addMinutes(5)); - -// Dispatch to a specific queue -SendWelcomeEmail::dispatch($user)->onQueue('emails'); - -// Dispatch on specific connection -SendWelcomeEmail::dispatch($user)->onConnection('redis'); - -// Dispatch synchronously (ignore queue) -SendWelcomeEmail::dispatchSync($user); -``` - ---- - -## Running Workers - -```bash -# Basic worker -php artisan queue:work - -# Worker with specifics -php artisan queue:work redis --queue=emails,default --sleep=3 --tries=3 - -# Process only one job then stop -php artisan queue:work --once - -# Graceful shutdown after current job -php artisan queue:restart -``` - ---- - -## Queues in Livewire - -Dispatch jobs from Livewire components: - -```php -class RegisterForm extends Component -{ - public function register(): void - { - $user = User::create($this->validated()); - - // Dispatch to queue - don't block the response - SendWelcomeEmail::dispatch($user); - SendVerificationEmail::dispatch($user); - - $this->redirect(route('home')); - } -} -``` - ---- - -## Chaining Jobs - -```php -use Illuminate\Support\Facades\Bus; - -Bus::chain([ - new ProcessPayment($order), - new SendReceiptEmail($order), - new UpdateInventory($order), -])->dispatch(); -``` - ---- - -## Failed Jobs - -```bash -# View failed jobs -php artisan queue:failed - -# Retry a single failed job -php artisan queue:retry {id} - -# Retry all failed jobs -php artisan queue:retry all - -# Delete all failed jobs -php artisan queue:flush -``` - ---- - -## Supervisor Configuration - -For production, run workers with Supervisor: - -```ini -[program:laracorekit-worker] -process_name=%(program_name)s_%(process_num)02d -command=php /var/www/html/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600 -autostart=true -autorestart=true -user=www-data -numprocs=2 -redirect_stderr=true -stdout_logfile=/var/log/laracorekit-worker.log -stopwaitsecs=3600 -``` - ---- - -## Next Steps - -**[Search →](search)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/advanced/search.md b/docs/advanced/search.md index 7440411..7d901d1 100644 --- a/docs/advanced/search.md +++ b/docs/advanced/search.md @@ -1,205 +1,7 @@ -# Search +# Search -**Estimated time:** 10 minutes -**Difficulty:** Intermediate +The public Blog list includes database-backed text search over localized title/content fields. This is not a bundled external search service. ---- +Scout, Meilisearch and other search integrations are optional application work. Add indexing, authorization-aware visibility, lifecycle updates and relevant tests before exposing a search service. Do not index drafts or future publications into a public index. -Add powerful full-text search to LaraCoreKit using database queries, Laravel Scout, or Algolia. - ---- - -## Option 1: Simple Database Search - -Good for small-to-medium datasets (<10,000 records). - -```php -// In a Livewire component -public string $query = ''; - -public function render() -{ - $posts = Post::published() - ->when($this->query, function ($q) { - $q->where(function ($q) { - $q->where('title', 'LIKE', "%{$this->query}%") - ->orWhere('content', 'LIKE', "%{$this->query}%") - ->orWhere('excerpt', 'LIKE', "%{$this->query}%"); - }); - }) - ->latest() - ->paginate(12); - - return view('blog::livewire.blog-list', compact('posts')); -} -``` - -Add database indexes for better performance: - -```php -Schema::table('blog_posts', function (Blueprint $table) { - $table->fullText(['title', 'content', 'excerpt']); -}); -``` - -Then use MATCH AGAINST: - -```php -$posts = Post::whereRaw( - "MATCH(title, content, excerpt) AGAINST(? IN BOOLEAN MODE)", - [$this->query . '*'] -)->get(); -``` - ---- - -## Option 2: Laravel Scout - -The standard approach for scalable search. - -### Install Scout - -```bash -composer require laravel/scout -php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider" -``` - -### Add Searchable Trait - -```php -namespace Modules\Blog\Models; - -use Illuminate\Database\Eloquent\Model; -use Laravel\Scout\Searchable; - -class Post extends Model -{ - use Searchable; - - public function toSearchableArray(): array - { - return [ - 'id' => $this->id, - 'title' => $this->title, - 'content' => $this->content, - 'excerpt' => $this->excerpt, - 'locale' => $this->locale, - 'status' => $this->status, - ]; - } - - public function shouldBeSearchable(): bool - { - return $this->status === 'published'; - } -} -``` - -### Search - -```php -// Simple search -$results = Post::search('laravel tutorial')->get(); - -// With filters -$results = Post::search('laravel')->where('locale', 'en')->paginate(15); -``` - -### Import Existing Records - -```bash -php artisan scout:import "Modules\Blog\Models\Post" -``` - ---- - -## Option 3: Algolia (Best for Production) - -**Algolia DocSearch** is free for open-source projects. - -### Step 1: Install Algolia Driver - -```bash -composer require algolia/algoliasearch-client-php - -# Set Scout driver to algolia -SCOUT_DRIVER=algolia -ALGOLIA_APP_ID=your-app-id -ALGOLIA_SECRET=your-secret-key -``` - -### Step 2: Add Algolia to Your Front-end - -```bash -npm install algoliasearch instantsearch.js -``` - -```javascript -import algoliasearch from 'algoliasearch/lite'; -import instantsearch from 'instantsearch.js'; - -const searchClient = algoliasearch('YOUR_APP_ID', 'YOUR_SEARCH_KEY'); - -const search = instantsearch({ - indexName: 'blog_posts', - searchClient, -}); - -search.start(); -``` - ---- - -## Search UI Component (Livewire) - -```php -class GlobalSearch extends Component -{ - public string $query = ''; - public array $results = []; - - public function updatedQuery(): void - { - if (strlen($this->query) < 2) { - $this->results = []; - return; - } - - $this->results = Post::search($this->query) - ->take(10) - ->get() - ->map(fn ($post) => [ - 'id' => $post->id, - 'title' => $post->title, - 'url' => route('blog.show', $post->slug), - 'type' => 'Post', - ]) - ->toArray(); - } - - public function render() - { - return view('core::livewire.global-search'); - } -} -``` - ---- - -## Search Route - -```php -// In your module's routes/web.php -Route::get('/search', function (Request $request) { - $query = $request->get('q', ''); - $results = $query ? Post::search($query)->paginate(20) : collect(); - - return view('search.results', compact('results', 'query')); -})->name('search'); -``` - ---- - -## Next Steps - -**[FAQ →](../faq)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/advanced/testing.md b/docs/advanced/testing.md index 6f67b43..ae9fda0 100644 --- a/docs/advanced/testing.md +++ b/docs/advanced/testing.md @@ -1,249 +1,11 @@ -# Testing +# Testing -**Estimated time:** 12 minutes -**Difficulty:** Intermediate +Run `composer test` for the PHPUnit suite. Database-mutating tests use SQLite in memory, enforced in phpunit.xml, and demo mode is disabled. Never point regression tests at a real application database. ---- +Coverage includes safe default seeding, demo-seeder guards, login throttling, registration controls, admin access, publication visibility, content sanitization and documentation endpoints. These tests reduce regressions; they are not a complete independent security audit. -LaraCoreKit is configured with **PHPUnit** and supports **Pest PHP** for an elegant, expressive testing experience. +Run `python tools/consumer-smoke.py` to install only the package into an isolated temporary Laravel application, verify public/admin login routes and assets, and test cached routes/configuration. It leaves the temporary consumer for inspection. ---- - -## Running Tests - -```bash -# Run all tests -php artisan test - -# Run with verbose output -php artisan test --verbose - -# Run with coverage -php artisan test --coverage - -# Run a specific test file -php artisan test tests/Feature/Blog/PostTest.php - -# Run tests matching a filter -php artisan test --filter=BlogTest - -# Run in parallel (much faster) -php artisan test --parallel -``` - ---- - -## Test Structure - -``` -tests/ -├── Feature/ ← HTTP/integration tests -│ ├── Auth/ -│ │ ├── LoginTest.php -│ │ └── RegisterTest.php -│ ├── Blog/ -│ │ ├── PostTest.php -│ │ └── BlogListTest.php -│ └── Api/ -│ └── ApiTokenTest.php -├── Unit/ ← Unit tests (no HTTP) -│ ├── Blog/ -│ │ └── PostModelTest.php -│ └── Newsletter/ -│ └── SubscriberTest.php -└── TestCase.php ← Base test class -``` - ---- - -## Feature Test Example - -```php -count(5)->published()->create(); - Post::factory()->count(3)->draft()->create(); - - $response = $this->get(route('blog.index')); - - $response - ->assertOk() - ->assertViewHas('posts') - ->assertViewHas('posts', fn ($posts) => $posts->count() === 5); - } - - /** @test */ - public function it_shows_a_published_post(): void - { - $post = Post::factory()->published()->create([ - 'title' => 'Test Post Title', - ]); - - $this->get(route('blog.show', $post->slug)) - ->assertOk() - ->assertSee('Test Post Title'); - } - - /** @test */ - public function it_returns_404_for_draft_post(): void - { - $post = Post::factory()->draft()->create(); - - $this->get(route('blog.show', $post->slug)) - ->assertNotFound(); - } -} -``` - ---- - -## Unit Test Example - -```php -create(['title' => 'Hello World']); - - $this->assertEquals('hello-world', $post->slug); - } - - /** @test */ - public function published_scope_filters_correctly(): void - { - Post::factory()->published()->create(); - Post::factory()->draft()->create(); - - $this->assertEquals(1, Post::published()->count()); - } -} -``` - ---- - -## Livewire Component Tests - -```php -set('email', 'test@laracorekit.com') - ->call('subscribe') - ->assertHasNoErrors() - ->assertSet('success', true); - - $this->assertDatabaseHas('newsletter_subscribers', [ - 'email' => 'test@laracorekit.com', - ]); -}); - -it('fails with invalid email', function () { - Livewire::test(Subscribe::class) - ->set('email', 'not-an-email') - ->call('subscribe') - ->assertHasErrors(['email']); -}); -``` - ---- - -## Authentication Helpers - -```php -// Authenticate as a user in tests -$user = User::factory()->create(); -$this->actingAs($user); - -// Authenticate with a specific role -$admin = User::factory()->create(); -$admin->assignRole('admin'); -$this->actingAs($admin); - -// Test unauthenticated access -$this->get(route('dashboard'))->assertRedirect('/login'); -``` - ---- - -## Model Factories - -Create factories for each module: - -```php -// modules/Blog/database/factories/PostFactory.php -namespace Modules\Blog\Database\Factories; - -use Illuminate\Database\Eloquent\Factories\Factory; -use Modules\Blog\Models\Post; - -class PostFactory extends Factory -{ - protected $model = Post::class; - - public function definition(): array - { - return [ - 'title' => $this->faker->sentence(), - 'slug' => $this->faker->slug(), - 'content' => $this->faker->paragraphs(5, asText: true), - 'excerpt' => $this->faker->paragraph(), - 'status' => 'draft', - 'locale' => 'en', - 'published_at' => null, - ]; - } - - public function published(): static - { - return $this->state([ - 'status' => 'published', - 'published_at' => now()->subDays(rand(1, 30)), - ]); - } - - public function draft(): static - { - return $this->state(['status' => 'draft']); - } -} -``` - ---- - -## Next Steps - -**[Caching →](caching)** +Run `composer pint-test`, `composer phpstan`, dependency audits and both frontend builds as well. CI separates locked dependencies from compatible updates. The browser smoke script requires Playwright and the disposable preview fixture; see the screenshot guide. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/api/authentication.md b/docs/api/authentication.md index 17002f1..5fa38c6 100644 --- a/docs/api/authentication.md +++ b/docs/api/authentication.md @@ -1,126 +1,5 @@ -# API Authentication Flow +# Optional API integration -**Estimated time:** 6 minutes -**Difficulty:** Intermediate - ---- - -This page explains the full token lifecycle for API authentication in LaraCoreKit. - ---- - -## Token Lifecycle - -``` -┌──────────────────────────────────────────────────────────┐ -│ 1. Client POSTs credentials to POST /api/tokens │ -│ 2. Server validates email + password │ -│ 3. Server creates and returns plaintext token │ -│ 4. Client stores token securely │ -│ 5. Client sends token in Authorization header │ -│ 6. Server validates token on each protected request │ -│ 7. Client calls DELETE /api/tokens/current to logout │ -└──────────────────────────────────────────────────────────┘ -``` - ---- - -## Required Headers - -```bash -# For authenticated requests -Authorization: Bearer {your-token} -Accept: application/json -Content-Type: application/json -``` - ---- - -## Step-by-Step Example - -### 1. Login and Get Token - -```javascript -const response = await fetch('/api/tokens', { - method: 'POST', - headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, - body: JSON.stringify({ - email: 'user@laracorekit.com', - password: 'secret', - device_name: 'My Mobile App', - }), -}); - -const { token, user } = await response.json(); - -// Store token securely -localStorage.setItem('token', token); -``` - -### 2. Make Authenticated Requests - -```javascript -const token = localStorage.getItem('token'); - -const response = await fetch('/api/user', { - headers: { - 'Authorization': `Bearer ${token}`, - 'Accept': 'application/json', - }, -}); - -const { data } = await response.json(); -``` - -### 3. Logout - -```javascript -await fetch('/api/tokens/current', { - method: 'DELETE', - headers: { 'Authorization': `Bearer ${token}` }, -}); - -localStorage.removeItem('token'); -``` - ---- - -## Token Abilities (Scoped Tokens) - -Issue tokens with restricted abilities for extra security: - -```php -// Only allow reading posts -$token = $user->createToken('mobile-reader', ['posts:read']); -``` - -In your API controller: - -```php -public function store(Request $request) -{ - if (!$request->user()->tokenCan('posts:write')) { - abort(403, 'Token does not have write access.'); - } - // ... -} -``` - ---- - -## Security Best Practices - -| Practice | Why | -|----------|-----| -| Use HTTPS | Tokens in plaintext over HTTP are interceptable | -| Short expiry | Set `expiration` in `config/sanctum.php` | -| Revoke on logout | Always call DELETE token on logout | -| Scope tokens | Use abilities to limit what each token can do | -| Never log tokens | Keep out of logs, error reports, analytics | - ---- - -## Next Steps - -**[Create a Module →](../modules/create-module)** +The current package implements session-based public authentication and Filament administration. It does **not** ship Sanctum tokens or a public application API. Earlier references to bundled API authentication were inaccurate. +If your application needs an API, install and configure Laravel Sanctum using the [official Laravel documentation](https://laravel.com/docs/13.x/sanctum), adapt your user model, and define your own routes, token abilities, validation and rate limits. Treat this as application development and add authorization tests before exposing endpoints. diff --git a/docs/api/endpoints.md b/docs/api/endpoints.md index f211a7e..5fa38c6 100644 --- a/docs/api/endpoints.md +++ b/docs/api/endpoints.md @@ -1,187 +1,5 @@ -# API Endpoints - -**Estimated time:** 8 minutes -**Difficulty:** Intermediate - ---- - -LaraCoreKit provides a set of REST API endpoints for accessing data programmatically from mobile apps, SPAs, or third-party integrations. - ---- - -## Base URL - -``` -https://www.laracorekit.com/api -``` - -All API responses use JSON format. Always include: - -``` -Accept: application/json -``` - ---- - -## Authentication Endpoints - -| Method | Endpoint | Auth | Description | -|--------|----------|------|-------------| -| `POST` | `/api/tokens` | No | Issue an API token | -| `DELETE` | `/api/tokens/current` | | Revoke current token | -| `DELETE` | `/api/tokens` | | Revoke all tokens | - ---- - -## User Endpoints - -| Method | Endpoint | Auth | Description | -|--------|----------|------|-------------| -| `GET` | `/api/user` | | Get the authenticated user | -| `PUT` | `/api/user` | | Update user profile | -| `PUT` | `/api/user/password` | | Change password | - ---- - -## Blog Endpoints - -| Method | Endpoint | Auth | Description | -|--------|----------|------|-------------| -| `GET` | `/api/posts` | No | List published posts | -| `GET` | `/api/posts/{slug}` | No | Get a single post | - ---- - -## Settings Endpoint - -| Method | Endpoint | Auth | Description | -|--------|----------|------|-------------| -| `GET` | `/api/settings` | No | Get public site settings | - ---- - -## Pagination - -List endpoints return paginated responses: - -```json -{ - "data": [ - { "id": 1, "title": "First Post", "slug": "first-post" } - ], - "meta": { - "current_page": 1, - "last_page": 5, - "per_page": 15, - "total": 72 - }, - "links": { - "first": "https://www.laracorekit.com/api/posts?page=1", - "next": "https://www.laracorekit.com/api/posts?page=2", - "prev": null, - "last": "https://www.laracorekit.com/api/posts?page=5" - } -} -``` - -Pass `?page=2&per_page=20` to paginate. - ---- - -## Query Parameters - -For list endpoints: - -``` -GET /api/posts?locale=en&status=published&page=1&per_page=12 -``` - -| Parameter | Type | Default | Description | -|-----------|------|---------|-------------| -| `locale` | string | `en` | Filter by language | -| `page` | integer | `1` | Page number | -| `per_page` | integer | `15` | Items per page (max 100) | - ---- - -## Error Responses - -```json -{ - "message": "Unauthenticated.", - "errors": {} -} -``` - -| Status Code | Meaning | -|-------------|---------| -| `200` | Success | -| `201` | Created | -| `400` | Bad request | -| `401` | Unauthenticated | -| `403` | Unauthorized | -| `404` | Not found | -| `422` | Validation failed | -| `500` | Server error | - -### Validation Error - -```json -{ - "message": "The email field is required.", - "errors": { - "email": ["The email field is required."] - } -} -``` - ---- - -## Adding a New API Endpoint - -1. Create a controller in your module: - -```php -namespace Modules\Blog\Http\Controllers\Api; - -use Illuminate\Http\JsonResponse; -use Illuminate\Routing\Controller; -use Modules\Blog\Models\Post; - -class PostApiController extends Controller -{ - public function index(): JsonResponse - { - $posts = Post::published() - ->locale(request('locale', 'en')) - ->latest() - ->paginate(request('per_page', 15)); - - return response()->json($posts); - } - - public function show(string $slug): JsonResponse - { - $post = Post::published()->where('slug', $slug)->firstOrFail(); - - return response()->json(['data' => $post]); - } -} -``` - -2. Register routes in `modules/Blog/routes/api.php`: - -```php -Route::prefix('api')->group(function () { - Route::get('/posts', [PostApiController::class, 'index']); - Route::get('/posts/{slug}', [PostApiController::class, 'show']); -}); -``` - ---- - -## Next Steps - -**[API Auth Flow →](authentication)** +# Optional API integration +The current package implements session-based public authentication and Filament administration. It does **not** ship Sanctum tokens or a public application API. Earlier references to bundled API authentication were inaccurate. +If your application needs an API, install and configure Laravel Sanctum using the [official Laravel documentation](https://laravel.com/docs/13.x/sanctum), adapt your user model, and define your own routes, token abilities, validation and rate limits. Treat this as application development and add authorization tests before exposing endpoints. diff --git a/docs/api/sanctum.md b/docs/api/sanctum.md index 55a99b5..5fa38c6 100644 --- a/docs/api/sanctum.md +++ b/docs/api/sanctum.md @@ -1,176 +1,5 @@ -# API Authentication (Sanctum) - -**Estimated time:** 8 minutes -**Difficulty:** Intermediate - ---- - -LaraCoreKit uses **Laravel Sanctum** for API authentication - lightweight, stateless token authentication perfect for mobile apps, SPAs, and third-party integrations. - ---- - -## How Sanctum Works - -``` -1. Client sends email + password to POST /api/tokens -2. Server validates and returns a plaintext token -3. Client stores the token (localStorage, secure cookie, etc.) -4. Client includes the token in the Authorization header -5. Server validates on protected routes -``` - ---- - -## Configuration - -Sanctum is pre-configured. Verify in `.env`: - -```env -SANCTUM_STATEFUL_DOMAINS=localhost,127.0.0.1,laracorekit.com -``` - -And in `config/auth.php`, the API guard should use Sanctum: - -```php -'guards' => [ - 'api' => [ - 'driver' => 'sanctum', - 'provider' => 'users', - ], -], -``` - ---- - -## Issue a Token - -```php -// routes/api.php -Route::post('/tokens', function (Request $request) { - $request->validate([ - 'email' => 'required|email', - 'password' => 'required', - 'device_name' => 'required|string', - ]); - - $user = User::where('email', $request->email)->first(); - - if (!$user || !Hash::check($request->password, $user->password)) { - return response()->json([ - 'message' => 'The provided credentials are incorrect.' - ], 401); - } - - return response()->json([ - 'token' => $user->createToken($request->device_name)->plainTextToken, - 'user' => $user->only('id', 'name', 'email'), - ]); -}); -``` - -**Example request:** - -```bash -curl -X POST https://www.laracorekit.com/api/tokens \ - -H "Content-Type: application/json" \ - -d '{"email":"user@laracorekit.com","password":"secret","device_name":"My App"}' -``` - -**Example response:** - -```json -{ - "token": "1|abc123def456...", - "user": { - "id": 1, - "name": "John Doe", - "email": "john@laracorekit.com" - } -} -``` - ---- - -## Authenticating Requests - -```bash -# Include token in Authorization header -curl -H "Authorization: Bearer 1|abc123def456..." \ - -H "Accept: application/json" \ - https://www.laracorekit.com/api/user -``` - -In JavaScript: - -```javascript -const response = await fetch('/api/user', { - headers: { - 'Authorization': `Bearer ${token}`, - 'Accept': 'application/json', - } -}); -``` - ---- - -## Protecting Routes - -```php -// routes/api.php -Route::middleware('auth:sanctum')->group(function () { - Route::get('/user', fn (Request $r) => $r->user()); - Route::get('/posts', [PostApiController::class, 'index']); - Route::post('/posts', [PostApiController::class, 'store']); -}); -``` - ---- - -## Token Abilities - -Issue tokens with restricted abilities: - -```php -$token = $user->createToken('mobile-app', ['posts:read', 'posts:write']); -``` - -Check abilities in controllers: - -```php -if ($request->user()->tokenCan('posts:write')) { - // Allow write operation -} -``` - ---- - -## Revoking Tokens - -```php -// Revoke current token (logout) -$request->user()->currentAccessToken()->delete(); - -// Revoke all tokens (logout from all devices) -$request->user()->tokens()->delete(); - -// Revoke a specific token -$user->tokens()->where('name', 'mobile-app')->delete(); -``` - ---- - -## Token Expiry - -Set token expiry in `config/sanctum.php`: - -```php -'expiration' => 525960, // Minutes (1 year), or null for no expiry -``` - ---- - -## Next Steps - -**[API Endpoints →](endpoints)** +# Optional API integration +The current package implements session-based public authentication and Filament administration. It does **not** ship Sanctum tokens or a public application API. Earlier references to bundled API authentication were inaccurate. +If your application needs an API, install and configure Laravel Sanctum using the [official Laravel documentation](https://laravel.com/docs/13.x/sanctum), adapt your user model, and define your own routes, token abilities, validation and rate limits. Treat this as application development and add authorization tests before exposing endpoints. diff --git a/docs/comparisons/laracorekit-vs-larament.md b/docs/comparisons/laracorekit-vs-larament.md index eaa65ee..819a062 100644 --- a/docs/comparisons/laracorekit-vs-larament.md +++ b/docs/comparisons/laracorekit-vs-larament.md @@ -1,309 +1,7 @@ -# LaraCoreKit vs Larament +# Choosing a Laravel foundation -A detailed comparison between LaraCoreKit and Larament to help you choose the right Laravel starter kit for your project. +LaraCoreKit combines a public frontend and Filament administration in a reusable package. It is useful when your application needs those features together and you accept the documented Laravel/PHP constraints. -## Quick Comparison +Compare alternatives using their current official documentation and your own clean-install evaluation. This repository does not maintain a verified feature-by-feature comparison of third-party projects. Earlier comparative claims should not be used as evidence of security, performance or completeness. -| Feature | LaraCoreKit | Larament | -|---------|-------------|----------| -| **Laravel Version** | 13.x | 13.x | -| **Admin Panel** | Filament 5 | Filament 5 | -| **Frontend Framework** | Livewire 4 | Livewire 4 | -| **Styling** | Tailwind 4 | Tailwind 4 | -| **PHP Version** | 8.3+ | 8.3+ | -| **License** | MIT (Free) | MIT (Free) | -| **Architecture** | Modular | Monolithic | -| **Multilingual** | Yes (EN/HI/AR built-in) | No (DIY) | -| **RTL Support** | Yes (built-in) | No | -| **Blog Module** | Yes (included) | No | -| **Media Library** | Yes (Spatie Media) | No | -| **Settings Module** | Yes (included) | No | -| **UI Components** | 175+ components | Minimal | -| **Role/Permissions** | Yes (Spatie Permission) | Yes (Spatie Permission) | -| **API Auth** | Sanctum | Sanctum | -| **GitHub** | [LaraCoreKit](https://github.com/ProgrammerNomad/LaraCoreKit) (new) | [Larament](https://github.com/lara-zeus/larament) (established) | -| **Active Development** | Yes | Yes | -| **Documentation** | Comprehensive | Comprehensive | -| **CI/CD** | GitHub Actions | GitHub Actions | -| **Code Quality** | Pint + PHPStan | Pint + PHPStan + Larastan | - -## Detailed Comparison - -### Architecture - -**LaraCoreKit:** -- **Modular architecture** - Each feature (Blog, Settings, Media, User) is in its own module -- Modules can be enabled/disabled independently -- Each module has its own routes, migrations, tests, views, and Filament resources -- Easy to remove features you don't need -- Predictable structure across all modules -- Designed for feature-rich applications - -**Larament:** -- **Monolithic architecture** - All code in standard Laravel app structure -- Simpler, more familiar to Laravel developers -- Less overhead for small applications -- Easier to understand for beginners -- Better for projects that don't need modularity -- Designed as a clean foundation to build upon - -**Winner:** LaraCoreKit if you want modular architecture, Larament if you prefer simplicity - ---- - -### Out-of-the-Box Features - -**LaraCoreKit Ships With:** -- Blog module with multilingual support -- Media library with image management -- Settings module for site configuration -- User management with profiles -- Role and permission system (Spatie Permission) -- Multilingual content (English, Hindi, Arabic) -- RTL support for Arabic -- 175+ UI components -- Admin panel (Filament 5) -- Frontend (Livewire 4) - -**Larament Ships With:** -- User authentication -- Role and permission system (Spatie Permission) -- Admin panel (Filament 5) -- Basic UI components -- Quality assurance tools (Pint, PHPStan, Larastan) -- CI/CD workflows - -**Winner:** LaraCoreKit for feature breadth, Larament for focused simplicity - ---- - -### Multilingual & Internationalization - -**LaraCoreKit:** -- Built-in support for English, Hindi, and Arabic -- JSON translation files included for all modules -- Language switcher in navigation -- Locale middleware and routing -- RTL layout support for Arabic -- Easy to add more languages -- Translatable database fields for content - -**Larament:** -- No built-in multilingual support -- Laravel's standard localization available -- You need to implement language switching yourself -- No RTL support out of the box - -**Winner:** LaraCoreKit (significant advantage if you need multilingual) - ---- - -### Content Management - -**LaraCoreKit:** -- Full blog module with rich text editor -- Draft/Published/Archived statuses -- SEO fields (slug, meta description, OG tags) -- Featured images -- Multilingual blog posts -- Category and tag support -- Filament resource for admin -- Public Livewire frontend - -**Larament:** -- No content management features included -- You build your own blog/CMS if needed -- Clean slate approach - -**Winner:** LaraCoreKit if you need a blog/CMS, Larament if you're building something else - ---- - -### Media Handling - -**LaraCoreKit:** -- Spatie Media Library integrated -- Image upload and management -- Automatic thumbnail generation -- S3 and local storage support -- Media organization -- Image optimization - -**Larament:** -- No media library included -- Standard Laravel file upload available -- Add your own media solution - -**Winner:** LaraCoreKit (media library included) - ---- - -### Quality Assurance - -**LaraCoreKit:** -- Laravel Pint (code formatting) -- PHPStan (static analysis) -- PHPUnit (testing) -- GitHub Actions (Tests, Code Quality, Build) -- Composer scripts: `composer review` - -**Larament:** -- Laravel Pint (code formatting) -- PHPStan (static analysis) -- Larastan (Laravel-specific static analysis) -- PHPUnit (testing) -- GitHub Actions workflows -- Composer scripts for all quality checks -- More mature quality tooling - -**Winner:** Larament (more established QA tooling) - ---- - -### Developer Experience - -**LaraCoreKit:** -- Comprehensive documentation site -- Module development guide -- Contributing guidelines -- Security policy -- Code is well-commented -- Predictable structure across modules -- One command quality check: `composer review` - -**Larament:** -- Excellent documentation -- Established project with proven track record -- Active community -- Production-tested -- Clean, idiomatic Laravel code -- Established best practices - -**Winner:** Larament (more mature, battle-tested) - ---- - -### Community & Support - -**LaraCoreKit:** -- New project (launched 2026) -- Growing community -- Active development -- Documentation site -- GitHub issues and discussions - -**Larament:** -- Established project -- Large community -- Multiple forks and contributors -- Many releases -- Proven in production -- Active community -- Regular updates - -**Winner:** Larament (more established community) - ---- - -### UI Components - -**LaraCoreKit:** -- 175+ production-ready Tailwind components -- 12 component categories -- UI showcase page -- E-commerce components -- Chart components -- Auth components -- Media components - -**Larament:** -- Minimal UI components -- Focus on Filament admin UI -- Frontend is your responsibility -- Add your own component library - -**Winner:** LaraCoreKit (extensive component library) - ---- - -## Use Cases - -### Choose LaraCoreKit if you need: -- Multilingual website (especially with RTL languages) -- Blog or content management system -- Feature-rich application with modules -- Extensive UI component library -- Media library out of the box -- Settings management -- Modular architecture -- Quick start with many features - -### Choose Larament if you want: -- Clean, minimal starting point -- Standard Laravel structure -- Proven, battle-tested foundation -- Strong code quality tooling -- Simpler application -- Build features from scratch your way -- Established community -- Production-ready quality assurance - -## Migration Between Them - -### From Larament to LaraCoreKit: -Difficult. Different architectures (monolithic vs modular). Would require significant refactoring. - -### From LaraCoreKit to Larament: -Easier. You can extract Laravel/Filament/Livewire code and remove modules. But why would you? - -### From either to vanilla Laravel: -Both are Laravel applications, so you can always refactor toward vanilla Laravel if needed. - -## Pricing - -Both are **100% free and open-source** under MIT license. - -## Our Honest Recommendation - -**Choose Larament if:** -- You want a proven, battle-tested foundation -- You prefer building features yourself -- You value simplicity and standard Laravel structure -- You don't need multilingual or blog features -- You want an established community -- Code quality is your top priority - -**Choose LaraCoreKit if:** -- You need multilingual support (especially RTL languages) -- You're building a blog, CMS, or content-driven site -- You want a modular architecture -- You need 175+ UI components ready to use -- You want more features out of the box -- You value quick development speed -- You're building a feature-rich application - -**Can't decide?** -Try both! Both are free. Clone each one, run `composer install`, seed the database, and see which fits your workflow better. The one that feels right is the right choice. - -## Conclusion - -Larament and LaraCoreKit solve different problems: - -- **Larament** is a clean, high-quality foundation to build upon -- **LaraCoreKit** is a feature-rich starter with modules and multilingual support - -Neither is "better" - they serve different needs. Larament has the advantage of maturity and battle-testing. LaraCoreKit has the advantage of built-in features and modular architecture. - -## Further Reading - -- [LaraCoreKit Documentation](https://www.laracorekit.com/docs) -- [Larament GitHub Repository](https://github.com/rizkhal/larament) -- [LaraCoreKit vs Official Livewire Starter](laracorekit-vs-livewire-starter.md) - ---- - -**Have questions or corrections?** - -This comparison is meant to be honest and help you make the right choice. If you spot any inaccuracies, please open an issue or submit a pull request. - -Last updated: April 22, 2026 +Review [implemented features](/docs/introduction), [installation](/docs/installation) and [production requirements](/docs/deployment/production) before deciding. diff --git a/docs/comparisons/laracorekit-vs-livewire-starter.md b/docs/comparisons/laracorekit-vs-livewire-starter.md index 04bac85..819a062 100644 --- a/docs/comparisons/laracorekit-vs-livewire-starter.md +++ b/docs/comparisons/laracorekit-vs-livewire-starter.md @@ -1,467 +1,7 @@ -# LaraCoreKit vs Official Laravel Livewire Starter Kit +# Choosing a Laravel foundation -A detailed comparison between LaraCoreKit and the official Laravel Livewire starter kit to help you choose the right starting point for your project. +LaraCoreKit combines a public frontend and Filament administration in a reusable package. It is useful when your application needs those features together and you accept the documented Laravel/PHP constraints. -## Quick Comparison +Compare alternatives using their current official documentation and your own clean-install evaluation. This repository does not maintain a verified feature-by-feature comparison of third-party projects. Earlier comparative claims should not be used as evidence of security, performance or completeness. -| Feature | LaraCoreKit | Laravel Livewire Starter | -|---------|-------------|--------------------------| -| **Laravel Version** | 13.x | 13.x | -| **Admin Panel** | Filament 5 | None | -| **Frontend Framework** | Livewire 4 | Livewire 4 + Flux UI | -| **Styling** | Tailwind 4 | Tailwind 4 | -| **PHP Version** | 8.3+ | 8.3+ | -| **License** | MIT (Free) | MIT (Free) | -| **Official Support** | Community | Laravel Official | -| **Architecture** | Modular | Standard Laravel | -| **Multilingual** | Yes (EN/HI/AR) | No | -| **RTL Support** | Yes | No | -| **Blog Module** | Yes | No | -| **Admin Panel** | Yes (Filament) | No | -| **UI Components** | 175+ Tailwind | Flux UI Pro Components | -| **Authentication** | Breeze + Custom | Breeze + Flux | -| **Role/Permissions** | Yes (Spatie) | No (DIY) | -| **GitHub** | [LaraCoreKit](https://github.com/ProgrammerNomad/LaraCoreKit) (new) | [Livewire Starter](https://github.com/laravel/starter-kit) (official) | -| **Documentation** | Comprehensive | Official Laravel Docs | - -## Detailed Comparison - -### Official Support & Trust - -**Laravel Livewire Starter Kit:** -- **Official Laravel starter kit** - Maintained by Laravel team -- Direct integration with Laravel installer -- Backed by official documentation -- Part of Laravel ecosystem -- Long-term support guaranteed -- Regular updates with Laravel releases -- Production-ready from day one - -**LaraCoreKit:** -- **Community-maintained** - Created by independent developer -- Not officially endorsed by Laravel -- Community-driven development -- Documentation provided by maintainers -- Updates depend on maintainer availability -- Newer project (less battle-tested) - -**Winner:** Official Livewire Starter (official backing is huge) - ---- - -### Architecture & Scope - -**Laravel Livewire Starter Kit:** -- **Minimal, focused scope** - Auth + basic UI only -- Standard Laravel directory structure -- Clean slate to build upon -- No opinions beyond Livewire + Flux -- Perfect for learning Livewire -- Small footprint -- Fast to understand - -**LaraCoreKit:** -- **Feature-rich, modular** - Auth + Blog + Media + Settings + Admin -- Custom modular directory structure -- Many features out of the box -- Opinionated architecture -- Better for rapid development -- Larger footprint -- More to learn initially - -**Winner:** Depends on your goal - Official starter for learning, LaraCoreKit for building - ---- - -### UI Components - -**Laravel Livewire Starter Kit:** -- **Flux UI components** - Modern, accessible, professionally designed -- Designed specifically for Livewire -- Pro version available (paid) -- Fewer components than LaraCoreKit -- Higher quality, more polished -- Official Laravel design language -- Consistent with Laravel ecosystem - -**LaraCoreKit:** -- **175+ Tailwind components** - Broad variety across 12 categories -- All free and open-source -- E-commerce, charts, media, auth components -- Community-built -- More quantity, varying quality -- Independent design -- Good for prototyping - -**Winner:** Flux UI for quality and official support, LaraCoreKit for quantity and variety - ---- - -### Admin Panel - -**Laravel Livewire Starter Kit:** -- **No admin panel included** -- Build your own admin using Livewire + Flux -- Full control over admin experience -- More work upfront -- Learn by building - -**LaraCoreKit:** -- **Filament 5 admin panel** - Full-featured admin out of the box -- CRUD resources for all modules -- Form builder, table builder, widgets -- Dark mode, responsive -- Role-based access -- Ready to use immediately - -**Winner:** LaraCoreKit (huge advantage if you need an admin) - ---- - -### Authentication - -**Laravel Livewire Starter Kit:** -- Laravel Breeze for auth scaffolding -- Livewire + Flux UI for auth pages -- Login, registration, password reset -- Email verification -- Profile management -- Clean, modern UI -- Official Laravel auth patterns - -**LaraCoreKit:** -- Laravel Breeze + Custom auth -- Livewire 4 for auth pages -- Same features as official starter -- Plus: Avatar uploads -- Plus: User profiles -- Plus: Role-based access -- Filament admin for user management - -**Winner:** Tie (both have solid auth, LaraCoreKit has more features) - ---- - -### Content Management - -**Laravel Livewire Starter Kit:** -- **No content features** - Build your own -- Pure authentication starter -- Add blog/CMS yourself -- Full flexibility - -**LaraCoreKit:** -- **Full blog module** - Ready to use -- Rich text editor (Filament) -- Multilingual blog posts -- SEO fields, featured images -- Draft/publish workflow -- Filament admin + Livewire frontend - -**Winner:** LaraCoreKit (blog included vs none) - ---- - -### Multilingual & Internationalization - -**Laravel Livewire Starter Kit:** -- **No multilingual support** -- Laravel localization available -- Build language switcher yourself -- No RTL support -- Single language by default - -**LaraCoreKit:** -- **Built-in multilingual** - English, Hindi, Arabic -- Language switcher in navigation -- RTL layout support -- Locale middleware -- Translatable content -- Easy to add more languages - -**Winner:** LaraCoreKit (significant advantage) - ---- - -### Developer Experience - -**Laravel Livewire Starter Kit:** -- **Official Laravel documentation** - Best docs in PHP ecosystem -- Laravel installer support: `laravel new --using=livewire` -- Consistent with Laravel conventions -- Large Laravel community -- Abundant tutorials and resources -- Official support channels - -**LaraCoreKit:** -- **Custom documentation site** - Comprehensive but community-built -- Clone via Git (not Laravel installer yet) -- Custom conventions for modules -- Smaller community -- Growing documentation -- Community support - -**Winner:** Official Livewire Starter (better docs and community) - ---- - -### Quality Assurance - -**Laravel Livewire Starter Kit:** -- Official Laravel testing standards -- Clean, well-tested codebase -- Backed by Laravel team -- Production-ready -- Regular security updates - -**LaraCoreKit:** -- PHPUnit tests included -- Laravel Pint (code formatting) -- PHPStan (static analysis) -- GitHub Actions CI/CD -- `composer review` command -- Community-maintained - -**Winner:** Official Livewire Starter (official backing and testing) - ---- - -### Feature Comparison Table - -| Feature | Official Livewire | LaraCoreKit | -|---------|------------------|-------------| -| **Authentication** | Yes | Yes | -| **Registration** | Yes | Yes | -| **Password Reset** | Yes | Yes | -| **Email Verification** | Yes | Yes | -| **Profile Management** | Yes | Yes | -| **Admin Panel** | No | Yes (Filament 5) | -| **User Management** | No | Yes | -| **Role/Permissions** | No | Yes (Spatie) | -| **Blog/CMS** | No | Yes | -| **Media Library** | No | Yes (Spatie) | -| **Settings Module** | No | Yes | -| **Multilingual** | No | Yes (EN/HI/AR) | -| **RTL Support** | No | Yes | -| **UI Components** | Flux UI | 175+ Tailwind | -| **Dark Mode** | Yes | Yes | -| **API Auth** | Sanctum | Sanctum | -| **2FA Ready** | No | No | - ---- - -## Installation Comparison - -### Official Laravel Livewire Starter Kit - -```bash -# One command installation -laravel new my-app --using=livewire - -cd my-app -php artisan migrate -npm install && npm run dev -php artisan serve -``` - -**Pros:** -- Single command -- Official installer -- Fast setup -- Clean slate - -### LaraCoreKit - -```bash -# Git clone installation -git clone https://github.com/ProgrammerNomad/LaraCoreKit.git my-app -cd my-app - -composer install -npm install - -cp .env.example .env -php artisan key:generate - -touch database/database.sqlite -php artisan migrate --seed -php artisan storage:link -php artisan filament:user - -npm run build -php artisan serve -``` - -**Pros:** -- Full features ready -- Seeded demo data -- Admin panel configured -- All modules working - -**Cons:** -- More steps -- Not Laravel installer yet - ---- - -## Use Cases - -### Choose Official Laravel Livewire Starter if: -- You want official Laravel backing -- You're learning Livewire -- You need a minimal, clean foundation -- You prefer building features from scratch -- You want the best documentation -- You value official support -- You're building a simple app -- You want Flux UI components -- You prefer standard Laravel conventions - -### Choose LaraCoreKit if: -- You need an admin panel immediately -- You're building a blog or CMS -- You need multilingual support (especially RTL) -- You want role/permission system out of the box -- You need rapid development -- You want 175+ UI components -- You're building a feature-rich application -- You like modular architecture -- You need media library and settings management - ---- - -## Learning Curve - -**Official Livewire Starter:** -- **Gentle learning curve** - Standard Laravel + Livewire -- Official documentation -- Familiar structure -- Less to learn upfront -- Build features as you learn - -**LaraCoreKit:** -- **Steeper learning curve** - Custom modular architecture -- Need to understand module system -- More features to learn -- Documentation is good but not official -- Faster development once learned - ---- - -## Long-Term Maintenance - -**Official Livewire Starter:** -- **Official maintenance** - Laravel team responsibility -- Regular updates with Laravel releases -- Security patches guaranteed -- Long-term support -- Won't be abandoned - -**LaraCoreKit:** -- **Community maintenance** - Depends on maintainer -- Updates depend on community -- Security patches depend on maintainer activity -- Uncertain long-term support -- Risk of abandonment (like any community project) - -**Winner:** Official Livewire Starter (much lower risk) - ---- - -## Our Honest Recommendation - -### For Learning Livewire: -**Use Official Livewire Starter Kit** -- Best documentation -- Official support -- Clean, minimal codebase -- Learn Livewire the right way - -### For Production Projects: - -**Use Official Livewire Starter if:** -- You want official backing and long-term support -- You're building a simple application -- You have time to build features -- You prefer minimal starting point -- Official documentation is important -- You value stability over features - -**Use LaraCoreKit if:** -- You need an admin panel now -- You're building a content-driven site -- You need multilingual/RTL support -- Time-to-market is critical -- You're comfortable with community projects -- You want features over official backing - -### For Rapid Prototyping: -**LaraCoreKit** - More features out of the box means faster prototyping - -### For Enterprise: -**Official Livewire Starter** - Official support and long-term maintenance guarantee matter most - ---- - -## Can They Work Together? - -**Yes, but carefully:** - -You can use Flux UI components in LaraCoreKit, or add LaraCoreKit modules to an official Livewire starter project. However, architectural differences may cause friction. - -**Better approach:** -- Pick one as your foundation -- Borrow ideas from the other -- Avoid mixing architectures - ---- - -## Migration Path - -### From Official Livewire to LaraCoreKit: -Difficult. Very different architectures. Better to start fresh with LaraCoreKit if you want modular approach. - -### From LaraCoreKit to Official Livewire: -Possible but wasteful. You'd lose all the modules and features. Only do this if you need to standardize on official stack. - ---- - -## Conclusion - -The official Laravel Livewire starter kit and LaraCoreKit serve different audiences: - -**Official Livewire Starter Kit:** -- Official, stable, well-documented foundation -- Perfect for learning and simple projects -- Flux UI components are beautiful -- Best for long-term enterprise projects -- Minimal but high-quality - -**LaraCoreKit:** -- Feature-rich, rapid development starter -- Perfect for content-driven and admin-heavy projects -- Multilingual and modular from day one -- Best for MVPs and feature-rich applications -- Comprehensive but community-maintained - -**The truth:** The official starter has the advantage of official backing, stability, and documentation. LaraCoreKit has the advantage of features, admin panel, and rapid development. - -**Our advice:** If you're torn, start with the official Livewire starter and add features as you need them. If you know you need admin, blog, multilingual, and rapid development, go with LaraCoreKit. - ---- - -## Further Reading - -- [Official Laravel Livewire Starter Kit](https://laravel.com/docs/13.x/starter-kits#livewire) -- [Livewire Documentation](https://livewire.laravel.com) -- [Flux UI](https://fluxui.dev) -- [LaraCoreKit Documentation](https://www.laracorekit.com/docs) -- [LaraCoreKit vs Larament](laracorekit-vs-larament.md) - ---- - -**Questions or corrections?** - -This comparison aims to be honest and helpful. If you find inaccuracies, please open an issue or submit a pull request. - -Last updated: April 22, 2026 +Review [implemented features](/docs/introduction), [installation](/docs/installation) and [production requirements](/docs/deployment/production) before deciding. diff --git a/docs/configuration.md b/docs/configuration.md index 6f02e12..c5c28dd 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,381 +1,16 @@ -# Configuration +# Configuration ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Estimated Time:** 8 minutes -**Difficulty:** Intermediate -**Source Files:** [config/modules.php](../../config/modules.php) | [config/app.php](../../config/app.php) ---- +Run `php artisan laracorekit:install` to publish `config/laracorekit.php` and public CSS. Existing configuration is preserved. -This guide explains all key configuration points in LaraCoreKit, including app settings, module configuration, multilingual setup, and environment-specific options. +| Setting | Default | Purpose | +| --- | --- | --- | +| `configure_auth` | `true` | Select the packaged User model for the `users` auth provider | +| `panel.enabled` | `true` | Register the package's Filament panel | +| `panel.id` / `panel.path` | `admin` | Panel identity and URL path | +| `modules` | all bundled modules enabled | Register module providers and matching panel resources | +| `registration` | `false` | Enable public registration | +| `locales` | `en`, `hi`, `ar` | Accepted language-switch values | ---- - -## Environment File (`.env`) - -Your `.env` file controls runtime behavior for local, staging, and production environments. - -### Core Application Settings - -```env -APP_NAME="LaraCoreKit" -APP_ENV=local -APP_KEY=base64:your-generated-key -APP_DEBUG=true -APP_URL=http://localhost:8000 -``` - -### Localization - -```env -APP_LOCALE=en -APP_FALLBACK_LOCALE=en -APP_FAKER_LOCALE=en_US -``` - -### Database - -```env -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laracorekit -DB_USERNAME=root -DB_PASSWORD= -``` - -### Cache & Sessions - -```env -CACHE_DRIVER=file -SESSION_DRIVER=file -QUEUE_CONNECTION=sync -``` - -### Mail - -```env -MAIL_MAILER=smtp -MAIL_HOST=mailpit -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS="hello@laracorekit.com" -MAIL_FROM_NAME="${APP_NAME}" -``` - ---- - -## Modules Configuration (`config/modules.php`) - -This is one of the most important files in LaraCoreKit. - -### Example - -```php -return [ - 'namespace' => 'Modules', - - 'paths' => [ - 'modules' => base_path('modules'), - ], - - 'enabled' => [ - 'Core', - 'Auth', - 'User', - 'Blog', - 'Media', - 'Settings', - ], - - 'scan' => [ - 'enabled' => true, - 'paths' => [ - base_path('modules'), - ], - ], -]; -``` - -### Enable/Disable a Module - -Disable module temporarily: - -```php -'enabled' => [ - 'Core', - 'Auth', - 'User', - // 'Blog', // disabled - 'Media', - 'Settings', -], -``` - -Then clear cache: - -```bash -php artisan optimize:clear -``` - ---- - -## Application Config (`config/app.php`) - -Common customizations: - -- Application name -- Timezone -- Locale defaults -- Service providers -- Aliases - -### Recommended - -```php -'name' => env('APP_NAME', 'LaraCoreKit'), -'timezone' => 'UTC', -'locale' => env('APP_LOCALE', 'en'), -'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'), -``` - ---- - -## Authentication Config (`config/auth.php`) - -LaraCoreKit uses Laravel auth + Sanctum. - -Key sections: - -- `guards` (web, api) -- `providers` (users) -- `passwords` (reset options) - -If using custom user model in a module, update provider model accordingly. - ---- - -## Permissions Config (`config/permission.php`) - -Powered by Spatie Permission. - -Configure: - -- Role model / permission model -- Teams support -- Cache store and expiration -- Table names - -After permission changes, clear permission cache: - -```bash -php artisan permission:cache-reset -``` - ---- - -## Filesystem Config (`config/filesystems.php`) - -Use local or cloud storage. - -### Local Disk - -```php -'public' => [ - 'driver' => 'local', - 'root' => storage_path('app/public'), - 'url' => env('APP_URL').'/storage', - 'visibility' => 'public', -], -``` - -### S3 Disk - -```env -FILESYSTEM_DISK=s3 -AWS_ACCESS_KEY_ID=your_key -AWS_SECRET_ACCESS_KEY=your_secret -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET=your_bucket -AWS_URL= -``` - -Create storage symlink for local: - -```bash -php artisan storage:link -``` - ---- - -## Cache & Queue Config - -### Local Development - -```env -CACHE_DRIVER=file -QUEUE_CONNECTION=sync -SESSION_DRIVER=file -``` - -### Production Recommended - -```env -CACHE_DRIVER=redis -QUEUE_CONNECTION=redis -SESSION_DRIVER=redis -``` - -Run queue worker: - -```bash -php artisan queue:work -``` - ---- - -## Mail Configuration - -### Development (Mailpit) - -```env -MAIL_MAILER=smtp -MAIL_HOST=127.0.0.1 -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -``` - -### Production (SMTP) - -```env -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailgun.org -MAIL_PORT=587 -MAIL_USERNAME=postmaster@laracorekit.com -MAIL_PASSWORD=your_password -MAIL_ENCRYPTION=tls -``` - ---- - -## Multilingual Config - -Supported locales are usually managed by Core/Settings modules. - -Typical setup: - -```php -// config/app.php -'locale' => 'en', -'fallback_locale' => 'en', -``` - -And language files in: - -- `lang/en.json` -- `lang/hi.json` -- `lang/ar.json` - -For RTL logic: - -```blade - -``` - ---- - -## Frontend Build Config - -### Vite (`vite.config.js`) - -Make sure module assets/views are included when needed. - -Typical inputs: - -```js -input: ['resources/css/app.css', 'resources/js/app.js'] -``` - -### Tailwind (`tailwind.config.js`) - -Include module blade paths: - -```js -content: [ - './resources/**/*.blade.php', - './modules/**/resources/**/*.blade.php', - './vendor/filament/**/*.blade.php', -] -``` - ---- - -## Config Cache Commands - -Use these commands during configuration updates: - -```bash -php artisan config:clear -php artisan cache:clear -php artisan route:clear -php artisan view:clear -php artisan optimize:clear -``` - -Production optimize: - -```bash -php artisan config:cache -php artisan route:cache -php artisan view:cache -php artisan optimize -``` - ---- - -## Environment Profiles - -### Local - -- `APP_DEBUG=true` -- File cache/session -- Sync queue -- Detailed logs - -### Staging - -- `APP_DEBUG=false` -- Real services where possible -- Redis queue/cache -- Lower log verbosity - -### Production - -- `APP_DEBUG=false` -- Redis for cache/session/queue -- SMTP configured -- Monitoring enabled -- Config and route cache enabled - ---- - -## Common Configuration Mistakes - -1. Forgetting to run `php artisan optimize:clear` after config changes. -2. Missing module path in `config/modules.php`. -3. Not including module blade files in Tailwind content paths. -4. Wrong `APP_URL` causing broken asset URLs. -5. Wrong filesystem disk causing upload failures. - ---- - -## Next Steps - -Next: [Core Architecture →](core/architecture.md) -Then: [Module System →](core/modules-system.md) +The initial supported authentication model is `Modules\User\Models\User`. Disabling `configure_auth` does not automatically adapt resources or relationships to a custom user model. Custom model support requires integration work. +The demo host disables the packaged panel, uses its own provider and enables registration for evaluation. Environment settings such as database, mail, queues, storage and APP_URL remain standard Laravel configuration. Cache configuration after deployment with `php artisan config:cache`. diff --git a/docs/contributing.md b/docs/contributing.md index 2160a1a..a806b00 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,165 +1,9 @@ -# Contributing to LaraCoreKit +# Contributing -**Estimated time:** 5 minutes -**Difficulty:** Beginner +Changes are welcome through GitHub pull requests. Read CONTRIBUTING.md at the repository root for the workflow, and use the security policy for sensitive reports. ---- +Package changes belong in packages/core; website/docs/showcase changes belong in the host. Add meaningful regression tests for behavior changes, rebuild package CSS when its source changes, and update installation/upgrade notes when the public contract changes. -Thank you for your interest in contributing to LaraCoreKit! Contributions make the open-source community amazing. +Run tests, Pint, static analysis, dependency audits and production builds before proposing a release. Test package installation independently of the host using the consumer smoke script. ---- - -## Ways to Contribute - -| Contribution | How | -|-------------|-----| -| Report bugs | [GitHub Issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues) | -| Suggest features | GitHub Discussions | -| Improve docs | Edit docs and submit a PR | -| Build modules | Share on GitHub / Packagist | -| Add translations | Create/improve language files | -| Star the repo | Helps others discover it | - ---- - -## Contributing Code - -### Step 1: Fork and Clone - -```bash -# Fork on GitHub first, then: -git clone https://github.com/YOUR_USERNAME/LaraCoreKit.git -cd LaraCoreKit -``` - -### Step 2: Set Up Locally - -```bash -cp .env.example .env -composer install -npm install -php artisan key:generate -php artisan migrate --seed -npm run dev -``` - -### Step 3: Create a Branch - -```bash -git checkout -b feature/your-feature-name -# or -git checkout -b fix/bug-description -``` - -**Branch naming:** -- `feature/` - New feature -- `fix/` - Bug fix -- `docs/` - Documentation improvement -- `refactor/` - Code refactoring - -### Step 4: Make Your Changes - -- Follow PSR-12 coding standards -- Write tests for new features -- Keep commits small and focused -- Write clear commit messages - -### Step 5: Test Your Changes - -```bash -# Format code -./vendor/bin/pint - -# Run all tests -php artisan test - -# Run type checking (if using PHPStan) -./vendor/bin/phpstan analyse -``` - -### Step 6: Submit a Pull Request - -```bash -git push origin feature/your-feature-name -``` - -Then open a PR on GitHub with: -- **Clear title** describing what it does -- **Description** of what changed and why -- **Screenshots** for UI changes -- **Reference** to related issues - ---- - -## Code Style - -LaraCoreKit uses **Laravel Pint** (PSR-12 based): - -```bash -# Auto-format all PHP files -./vendor/bin/pint - -# Check without fixing -./vendor/bin/pint --test -``` - ---- - -## Documentation - -Docs files are in `/docs/*.md`. Edit them directly and submit a PR. - -Guidelines: -- Start each page with a clear **H1 heading** -- Include `**Estimated time:**` and `**Difficulty:**` -- Use real, working code examples -- End with a **"Next Steps"** section -- Avoid vague descriptions - be specific - ---- - -## Bug Reports - -A great bug report includes: -- **LaraCoreKit version** (`git log --oneline -1`) -- **PHP version** (`php -v`) -- **Steps to reproduce** (exact steps, no assumptions) -- **Expected behavior** -- **Actual behavior** -- **Error messages / stack trace** - ---- - -## Feature Requests - -Open a GitHub Discussion with: -- **What problem does this solve?** -- **Who would use this feature?** -- **How should it work?** (API, UI, behavior) -- **Alternative solutions you considered** - ---- - -## Module Contributions - -Built an awesome module? Share it! - -1. Create a Composer package (see [Publishing Modules](modules/publishing.md)) -2. Post in GitHub Discussions with `[Module]` prefix -3. We may feature it in the official docs! - ---- - -## Code of Conduct - -Be respectful, inclusive, and constructive. We follow the [Contributor Covenant](https://www.contributor-covenant.org/) Code of Conduct. - ---- - -## License - -By contributing, you agree that your contributions will be licensed under the **MIT License**. - ---- - -**Thank you for helping make LaraCoreKit better! ** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/core/architecture.md b/docs/core/architecture.md index 47bf552..d57087b 100644 --- a/docs/core/architecture.md +++ b/docs/core/architecture.md @@ -1,129 +1,46 @@ -# Architecture - -**Estimated time:** 10 minutes -**Difficulty:** Intermediate - ---- - -LaraCoreKit is built on a modular architecture where each feature is isolated into a module with clear boundaries. - ---- - -## Architectural Goals - -1. **Separation of concerns** - Features are isolated. -2. **Scalability** - Add new modules without touching core. -3. **Maintainability** - Smaller, focused code areas. -4. **Reusability** - Modules can be reused across projects. -5. **Testability** - Module-level testing is straightforward. - ---- - -## High-Level Design - +# Package architecture + +The reusable package and the demo host have separate responsibilities. + +```text +LaraCoreKit/ + packages/core/ programmernomad/laracorekit + composer.json package dependencies and discovery + src/CoreServiceProvider.php configuration and module registration + src/Console/ installer and administrator creation + src/Filament/ default package admin panel + config/laracorekit.php package defaults + modules/ Core, Auth, User, Settings, Media, Blog + resources/dist/ prebuilt public frontend CSS + app/ demo/site application and custom panel + modules/Docs/ website documentation viewer + modules/UIShowcase/ component demonstration application + resources/views/site/ marketing homepage and changelog + resources/views/vendor/core/ host override for shared layout + database/seeders/ safe defaults and guarded demo seeders + docs/ documentation source ``` -Application Core -├── Module Loader -├── Global Middleware -├── Shared Layouts -└── Cross-cutting Services - -Feature Modules -├── Auth -├── User -├── Blog -├── Media -└── Settings -``` - -Core is intentionally minimal. Most business logic belongs in modules. - ---- - -## Request Lifecycle (Simplified) - -1. Request enters Laravel HTTP kernel. -2. Global middleware runs. -3. Routes resolve (core + module routes). -4. Controller/Livewire from module executes. -5. View or JSON response is returned. - ---- - -## Layering Strategy - -### Core Layer - -- Boots module system -- Provides shared helpers/layouts -- Coordinates application-level concerns - -### Module Layer - -Each module owns: - -- Domain models -- Routes/controllers/livewire -- Admin resources -- Migrations/seeders -- Views/translations - -### Infrastructure Layer - -- Database, cache, queue, mail -- Filesystem/media -- External services - ---- - -## Why This Works Well - -- Teams can work in parallel by module. -- New features are additive, not invasive. -- Refactoring one feature has minimal side effects. -- Optional modules can be distributed as packages. - ---- - -## Design Principles - -1. Keep `app/` small and framework-centric. -2. Keep feature code inside `modules/{Feature}`. -3. Prefer explicit module contracts over hidden coupling. -4. Avoid cross-module direct DB assumptions when possible. -5. Use events/services for looser integration. - ---- - -## Typical Data Flow - -Example: creating a blog post -1. Authenticated user submits form. -2. Blog module validates request. -3. Blog model persists translated fields. -4. Permission checks use shared RBAC system. -5. Optional media attachments via Media module. -6. Response returns to frontend/admin. +Composer loads package namespaces and Laravel discovers `LaraCoreKit\Core\CoreServiceProvider`. It registers enabled module providers from `config/laracorekit.php` and the default panel when enabled. The host disables the default panel and provides its own. There is one registration contract; modules are no longer registered individually in the host's `bootstrap/providers.php`. ---- +## Public and admin features -## Trade-offs +Auth and Blog register public routes and Livewire components. User, Settings, Blog and Media provide the models, migrations and admin resources. Core supplies the shared layout, locale component and middleware. The homepage, changelog, docs and UI demonstration are website responsibilities and are excluded from the Composer package. -### Benefits +The first release bundles functional modules in one package to keep compatibility and releases manageable. Their internal boundaries remain available for future extraction. Installing the bundle installs its PHP dependencies; disabling Blog does not uninstall Media Library or remove database tables. -- Better structure for medium/large apps. -- Faster feature onboarding. -- Cleaner ownership boundaries. +## Application ownership -### Costs +Keep application logic and view overrides outside `vendor/`. Your app owns its homepage, environment, mail, database, storage, queues and deployment. The installer publishes configuration and prebuilt public CSS. It does not overwrite your routes or create demo accounts. The default admin uses Filament's theme; the host's custom admin theme is separate. -- Slightly more setup for new modules. -- Requires consistent conventions. -- Developers must understand module boot process. +The public model namespaces remain `Modules\...` for compatibility with existing code. Applications that already use those namespaces or the package's route names need conflict resolution. Existing applications must review user-model and data compatibility before installation. ---- +## Extension points -## Next Steps +- Publish config with `php artisan vendor:publish --tag=laracorekit-config`. +- Override namespaced Blade views under `resources/views/vendor/{namespace}`. +- Disable the packaged panel and register resources in your own Filament panel. +- Use normal Laravel packages with auto-discovered providers for additional modules. +- Re-publish assets after updates with `php artisan vendor:publish --tag=laracorekit-assets --force`. -Next: [Module System →](modules-system.md) +See [installation](/docs/installation) and [upgrade notes](/docs/upgrade-guide). diff --git a/docs/core/middleware.md b/docs/core/middleware.md index 81246e9..2d8d0d9 100644 --- a/docs/core/middleware.md +++ b/docs/core/middleware.md @@ -1,73 +1,9 @@ -# Middleware +# Middleware -**Estimated time:** 6 minutes -**Difficulty:** Intermediate +Core appends `Modules\Core\Http\Middleware\SetLocale` to the web middleware group. It reads the session locale and accepts only configured supported values. ---- +Public auth pages use guest middleware, while the account dashboard and logout require authentication. Filament uses its own authenticated panel middleware stack and the User model's panel-access check. -Middleware provides request-level control for authentication, localization, permissions, and feature flags. +CSRF protection, session handling and cookie encryption remain Laravel responsibilities. Configure trusted proxies correctly when deploying behind a load balancer, since IP-based rate limits depend on the resolved client address. ---- - -## Common Middleware in LaraCoreKit - -- `web` - session, CSRF, cookies -- `auth` - authenticated users only -- `verified` - email verified only -- `setLocale` - locale from request/session/user -- `permission:*` - permission-based access control - ---- - -## Global vs Route Middleware - -### Global middleware - -Runs on every request (registered in HTTP kernel). - -### Route middleware - -Applied only on specific routes/groups: - -```php -Route::middleware(['auth', 'verified'])->group(function () { - // Protected routes -}); -``` - ---- - -## Localization Middleware - -Typical behavior: - -1. Detect locale from route/session/user preference. -2. Set `app()->setLocale($locale)`. -3. Apply RTL layout if locale is Arabic. - ---- - -## Permission Middleware - -Spatie permission middleware controls route-level RBAC: - -```php -Route::middleware(['auth', 'permission:blog.create'])->group(function () { - Route::get('/admin/blog/create', ...); -}); -``` - ---- - -## Best Practices - -1. Keep middleware focused and single-purpose. -2. Avoid heavy logic in middleware. -3. Use route groups for clean middleware stacking. -4. Document custom middleware behavior. - ---- - -## Next Steps - -Next: [Authentication Feature →](../features/authentication.md) +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/core/modules-system.md b/docs/core/modules-system.md index 92ed4f7..0d12c43 100644 --- a/docs/core/modules-system.md +++ b/docs/core/modules-system.md @@ -1,201 +1,7 @@ -# Module System +# Module system -**Estimated time:** 10 minutes -**Difficulty:** Intermediate +Package modules live in `packages/core/modules`. Configure their providers through `config/laracorekit.php`, under `modules`. Core always loads. Auth requires User; Blog requires User and Media; the packaged panel requires User. Invalid combinations fail explicitly. ---- +Providers own routes, namespaced views and migrations. The packaged panel registers resources only for enabled modules. Disabling a module does not delete data or remove Composer dependencies. The website's Docs and UIShowcase modules are host-only providers. -The LaraCoreKit Module System is the **core differentiator** that makes this starter kit production-ready and team-scalable. Instead of one giant `app/` directory, features are organized into self-contained, independent modules. - ---- - -## What is a Module? - -A **module** is a self-contained PHP package directory within `/modules` that handles a single feature area. Each module owns: - -- Its own **Models** -- Its own **Controllers / Livewire components** -- Its own **Migrations** and **Seeders** -- Its own **Views** and **Blade components** -- Its own **Routes** -- Its own **Translations** -- Its own **Service Provider** - ---- - -## How Modules Load - -The loading pipeline: - -``` -config/modules.php - │ - ▼ -App\Providers\ModuleServiceProvider::register() - │ (iterates enabled modules) - │ - ▼ -Each Module's ServiceProvider::boot() - │ - ├── loadViewsFrom() - ├── loadMigrationsFrom() - ├── loadRoutesFrom() - └── Livewire::component(...) -``` - -### `config/modules.php` - -```php -return [ - 'modules' => [ - 'Blog' => [ - 'enabled' => true, - 'namespace' => 'Modules\\Blog', - 'provider' => 'Modules\\Blog\\BlogServiceProvider', - ], - // ... more modules - ], -]; -``` - -Setting `enabled => false` completely disables a module - no routes registered, no migrations run. - ---- - -## Benefits - -| Benefit | What it means for you | -|---------|----------------------| -| **Independent** | Teams can work on separate modules independently | -| **Enable/Disable** | Toggle features without touching any other code | -| **Distributable** | Publish as Composer packages | -| **Testable** | Test each module in isolation | -| **Scalable** | Add features without touching existing code | - ---- - -## Module Directory Structure - -``` -modules/ -└── Blog/ - ├── src/ - │ ├── BlogServiceProvider.php ← Registers everything - │ ├── Models/ - │ │ └── Post.php - │ ├── Http/ - │ │ └── Livewire/ - │ │ ├── BlogList.php - │ │ └── BlogDetail.php - │ └── Filament/ - │ └── Resources/ - │ └── PostResource.php - ├── database/ - │ ├── migrations/ - │ │ └── 2024_01_01_create_posts_table.php - │ └── seeders/ - │ └── BlogSeeder.php - ├── views/ - │ └── blog/ - │ ├── list.blade.php - │ └── detail.blade.php - └── routes/ - └── web.php -``` - ---- - -## The Service Provider - -Every module has one `ServiceProvider` that bootstraps the module: - -```php -namespace Modules\Blog; - -use Illuminate\Support\ServiceProvider; -use Livewire\Livewire; - -class BlogServiceProvider extends ServiceProvider -{ - public function register(): void - { - // Bind interfaces, share config, etc. - } - - public function boot(): void - { - // Load migrations - $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); - - // Load Blade views under 'blog::' namespace - $this->loadViewsFrom(__DIR__ . '/../views', 'blog'); - - // Register Livewire components - Livewire::component('blog.blog-list', \Modules\Blog\Http\Livewire\BlogList::class); - Livewire::component('blog.blog-detail', \Modules\Blog\Http\Livewire\BlogDetail::class); - - // Load routes - $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); - } -} -``` - ---- - -## Accessing Module Views - -Module views use a **namespace** prefix: - -```blade -{{-- In any Blade view --}} -@extends('blog::layouts.base') - -@include('blog::partials.card') -``` - ---- - -## Module Autoloading - -Modules are autoloaded via `composer.json`: - -```json -{ - "autoload": { - "psr-4": { - "Modules\\Blog\\": "modules/Blog/src/", - "Modules\\Blog\\Database\\Seeders\\": "modules/Blog/database/seeders/" - } - } -} -``` - -After adding a new module, run: - -```bash -composer dump-autoload -``` - ---- - -## Disabling a Module - -To temporarily disable the Blog module: - -```php -// config/modules.php -'Blog' => [ - 'enabled' => false, // ← toggle this - ... -], -``` - -Run `php artisan optimize:clear` after changing this. - ---- - -## Next Steps - -**[Create a Module →](../modules/create-module)** - -Step-by-step guide to building your first custom module. +For additional independently distributed modules, follow the existing demo module's Composer service-provider discovery pattern. Do not edit the installed package to add application features. diff --git a/docs/core/routing.md b/docs/core/routing.md index 71bd9e6..e7dc0e5 100644 --- a/docs/core/routing.md +++ b/docs/core/routing.md @@ -1,107 +1,9 @@ -# Routing +# Routing -**Estimated time:** 7 minutes -**Difficulty:** Intermediate +Auth provides session authentication routes and Blog provides `/blog` and `/blog/{slug}`. Core provides the named `locale.switch` route. Routes use the web middleware group. ---- +Your application owns `/`; the package does not replace your homepage. This repository's host additionally defines `/docs`, `/docs/{page}`, `/docs-source/{page}`, `/llms.txt`, `/changelog` and `/sitemap.xml`. UIShowcase owns `/ui-showcase` routes. -Routing in LaraCoreKit combines global Laravel routes with module-specific routes. +Use `php artisan route:list` to inspect exact routes. Conventional names such as `login`, `dashboard` and `blog.index` can collide with existing application routes. Resolve conflicts before installation and test `php artisan route:cache` during deployment. ---- - -## Route Sources - -1. `routes/web.php` - global routes -2. `routes/api.php` - global API routes -3. `modules/*/src/routes/web.php` - module web routes -4. `modules/*/src/routes/api.php` - module API routes - ---- - -## Module Route Loading - -Module providers load their own routes: - -```php -$this->loadRoutesFrom(__DIR__.'/routes/web.php'); -``` - -This keeps routes close to feature code. - ---- - -## Recommended Route Conventions - -### Public web routes - -```php -Route::get('/blog', [BlogController::class, 'index'])->name('blog.index'); -``` - -### Protected routes - -```php -Route::middleware(['auth'])->group(function () { - Route::get('/dashboard', DashboardController::class)->name('dashboard'); -}); -``` - -### API routes - -```php -Route::middleware('auth:sanctum')->group(function () { - Route::get('/profile', [ProfileController::class, 'show']); -}); -``` - ---- - -## Route Naming - -Use consistent names to avoid conflicts: - -- `blog.index` -- `blog.show` -- `user.profile.edit` -- `settings.general.update` - -Prefer module-prefixed route names. - ---- - -## Route Caching - -Production: - -```bash -php artisan route:cache -``` - -After route changes: - -```bash -php artisan route:clear -``` - ---- - -## Debugging Routes - -List routes: - -```bash -php artisan route:list -``` - -Filter by module/prefix: - -```bash -php artisan route:list --name=blog -php artisan route:list --path=admin -``` - ---- - -## Next Steps - -Next: [Middleware →](middleware.md) +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/core/service-providers.md b/docs/core/service-providers.md index 45de34b..7faf0b0 100644 --- a/docs/core/service-providers.md +++ b/docs/core/service-providers.md @@ -1,78 +1,9 @@ -# Service Providers +# Service providers -**Estimated time:** 6 minutes -**Difficulty:** Intermediate +Laravel discovers `LaraCoreKit\Core\CoreServiceProvider` from the package's Composer metadata. It merges configuration, selects the packaged auth model when enabled, registers configured module providers, and optionally registers the default Filament panel. ---- +Module providers load namespaced views, migrations, public routes and Livewire aliases. The package also registers the locale middleware and console commands. The host's `AppServiceProvider` handles website-only integration, including the docs view namespace and the demo's language-switch plugin. -Service providers are the bootstrap layer of LaraCoreKit and each module. +The former application `ModuleServiceProvider` and `config/modules.php` have been removed. Use `config/laracorekit.php` for bundled modules. Independently distributed addons should use normal Composer provider discovery. ---- - -## Why Providers Matter - -Service providers tell Laravel how to wire your application: - -- Register services in the container -- Load routes/views/translations/migrations -- Bind interfaces to implementations -- Register event listeners and commands - ---- - -## Provider Types in LaraCoreKit - -1. `AppServiceProvider` - global app bootstrapping. -2. `ModuleServiceProvider` - discovers and registers modules. -3. `*ModuleServiceProvider` - one per module. - ---- - -## Typical Module Provider - -```php -class BlogServiceProvider extends ServiceProvider -{ - public function register(): void - { - // Bind services or merge config - } - - public function boot(): void - { - $this->loadRoutesFrom(__DIR__.'/routes/web.php'); - $this->loadViewsFrom(__DIR__.'/resources/views', 'blog'); - $this->loadMigrationsFrom(__DIR__.'/Database/migrations'); - $this->loadTranslationsFrom(__DIR__.'/resources/lang', 'blog'); - } -} -``` - ---- - -## Register vs Boot - -- `register()`: - - Container bindings - - Config merge - - No runtime dependencies - -- `boot()`: - - Route/view/migration loading - - Event registration - - Runtime-ready logic - ---- - -## Best Practices - -1. Keep providers lightweight. -2. Avoid heavy DB queries in `boot()`. -3. Use dedicated classes for complex registration logic. -4. Namespace module views/translations. - ---- - -## Next Steps - -Next: [Routing →](routing.md) +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/deployment/demo-setup.md b/docs/deployment/demo-setup.md index a696007..dc13c7e 100644 --- a/docs/deployment/demo-setup.md +++ b/docs/deployment/demo-setup.md @@ -1,1047 +1,16 @@ -# Demo Mode Setup Guide +# Demo setup -**Auto-resetting demo environment for LaraCoreKit with Filament integration** +The demo is a disposable application hosted by this repository. It is not part of `programmernomad/laracorekit`. The existing `programmernomad/laracorekit-demo-module` dependency manages reset behavior and restrictions. -**Package**: [programmernomad/laracorekit-demo-module](https://packagist.org/packages/programmernomad/laracorekit-demo-module) -**Repository**: [GitHub](https://github.com/ProgrammerNomad/laracorekit-demo-module) +Use a separate database and storage location. Explicitly set `DEMO_MODE=true` only for the demo application. Follow the demo package's allowed-host requirements before enabling it in production. Then migrate and seed: ---- - -## Quick Start - -### 1. Install Package - -```bash -composer require programmernomad/laracorekit-demo-module -``` - -### 2. Configure Environment - -Add to `.env`: - -```env -DEMO_MODE=true -DEMO_RESET_INTERVAL=30 -DEMO_ADMIN_EMAIL=admin@laracorekit.com -DEMO_ADMIN_PASSWORD=Admin@123 -DEMO_USER_EMAIL=user@laracorekit.com -DEMO_USER_PASSWORD=User@123 -``` - -### 3. Update User Seeder - -Modify `modules/User/Database/Seeders/UserSeeder.php` to use demo credentials: - -```php -// Admin user -$admin = User::firstOrCreate( - ['email' => config('demo.credentials.admin.email', 'admin@laracorekit.com')], - [ - 'name' => 'Admin User', - 'password' => Hash::make(config('demo.credentials.admin.password', 'password')), - 'email_verified_at' => now(), - ] -); - -// Regular user -$user = User::firstOrCreate( - ['email' => config('demo.credentials.user.email', 'user@laracorekit.com')], - [ - 'name' => 'Demo User', - 'password' => Hash::make(config('demo.credentials.user.password', 'password')), - 'email_verified_at' => now(), - ] -); -``` - -### 4. Add Frontend Banner (Optional) - -Edit `modules/Auth/views/livewire/login.blade.php`: - -```blade -{{-- Demo Banner --}} -@if(config('demo.enabled') && view()->exists('demo::components.login-banner')) - @include('demo::components.login-banner', ['type' => 'user']) -@endif -``` - -### 5. Run Database Reset - -```bash -php artisan demo:reset --force -``` - -### 6. Test Login - -**Frontend**: http://localhost/login -- Email: `user@laracorekit.com` -- Password: `User@123` - -**Admin**: http://localhost/admin/login -- Email: `admin@laracorekit.com` -- Password: `Admin@123` - -**Done!** Demo banners appear automatically. - ---- - -## What's Included - -### Auto-Registered Features - -The package automatically provides: - -1. **Filament Admin Login Banner** - Shows credentials before login form (auto-injected via render hook) -2. **Artisan Command** - `php artisan demo:reset` to reset database -3. **Scheduled Reset** - Cron job every 30 minutes (configurable) -4. **Action Blocking** - Prevents destructive operations (user deletion, etc.) -5. **Middleware** - `demo` and `demo.block` for route protection -6. **Blade Component** - `@include('demo::components.login-banner')` for frontend - -### 📋 Manual Setup Required - -1. **User Seeder** - Update to use demo credentials from config -2. **Frontend Login** - Add `@include` directive to show banner -3. **Cron Job** - Setup Laravel scheduler on server - ---- - -## Features - -### Method 1: Packagist (Recommended) - -**Production/Demo Server:** -```bash -composer require programmernomad/laracorekit-demo-module -``` - -**Local Development:** -```bash -composer require programmernomad/laracorekit-demo-module --dev -``` - -### Method 2: Local Development (Path Repository) - -**For contributing or testing changes:** - -```bash -# Clone package repo -cd C:\xampp\htdocs -git clone https://github.com/ProgrammerNomad/laracorekit-demo-module.git -``` - -**In `composer.json`:** -```json -{ - "repositories": [ - { - "type": "path", - "url": "../laracorekit-demo-module", - "options": { - "symlink": true - } - } - ], - "require-dev": { - "programmernomad/laracorekit-demo-module": "@dev" - } -} -``` - -```bash -composer update programmernomad/laracorekit-demo-module -``` - -**Benefits:** -- Changes in `laracorekit-demo-module/` instantly reflect in LaraCoreKit -- Perfect for development and testing - ---- - -## Configuration - -### Step 1: Publish Config File - -```bash -php artisan vendor:publish --tag=demo-config -``` - -This creates `config/demo.php` with all customizable options. - -### Step 2: Update `.env` (Production/Demo Server) - -**Add to `.env` on your demo server:** -```env -# Demo Mode Configuration -DEMO_MODE=true -DEMO_RESET_INTERVAL=30 - -# Demo Credentials (displayed on login pages) -DEMO_ADMIN_EMAIL=admin@laracorekit.com -DEMO_ADMIN_PASSWORD=Admin@123 -DEMO_USER_EMAIL=user@laracorekit.com -DEMO_USER_PASSWORD=User@123 -``` - -### Step 3: Update `.env.example` (Repository) - -**For contributors and documentation:** -```env -# Demo Mode (set to true on demo server only) -DEMO_MODE=false -DEMO_RESET_INTERVAL=30 -DEMO_ADMIN_EMAIL=admin@laracorekit.com -DEMO_ADMIN_PASSWORD=Admin@123 -DEMO_USER_EMAIL=user@laracorekit.com -DEMO_USER_PASSWORD=User@123 -``` - -### Step 4: Customize Settings (Optional) - -**Edit `config/demo.php`** to customize: - -- Reset interval -- Allowed domains (security) -- Blocked actions -- Banner appearance -- Cleanup settings - -**Example customizations:** -```php -// config/demo.php - -'allowed_hosts' => [ - 'www.laracorekit.com', // Your demo domain - 'localhost', - '127.0.0.1', -], - -'blocked_actions' => [ - 'user.delete', - 'role.delete', - 'backup.run', - // Add your custom actions -], - -'banner' => [ - 'background_color' => 'blue-50', // Change colors - 'border_color' => 'blue-500', - 'text_color' => 'blue-900', -], -``` - ---- - -## Plesk Cron Setup - -The demo module automatically schedules database resets using Laravel's task scheduler. You just need to add Laravel's scheduler to your server's cron. - -### Step 1: Access Plesk Cron Jobs - -1. Log into Plesk Control Panel -2. Go to **Websites & Domains** -3. Select **www.laracorekit.com** -4. Click **Scheduled Tasks (Cron Jobs)** - -### Step 2: Add Laravel Scheduler Cron - -**Settings:** -- **Command**: `cd /var/www/vhosts/laracorekit.com && php artisan schedule:run >> /dev/null 2>&1` -- **Run**: Every minute (*/1) -- **Minute**: `*` -- **Hour**: `*` -- **Day of Month**: `*` -- **Month**: `*` -- **Day of Week**: `*` - -**Alternative (if using different path):** -```bash -cd /home/username/public_html && /usr/bin/php artisan schedule:run >> /dev/null 2>&1 -``` - -**Find your PHP path in Plesk:** ```bash -which php -# Output: /usr/bin/php8.2 or similar -``` - -**Full command with explicit PHP version:** -```bash -cd /var/www/vhosts/laracorekit.com && /usr/bin/php8.2 artisan schedule:run >> /dev/null 2>&1 -``` - -### Step 3: Verify Cron is Running - -**SSH into server:** -```bash -ssh username@www.laracorekit.com -cd /var/www/vhosts/laracorekit.com - -# Test schedule manually -php artisan schedule:list - -# Check if demo:reset is scheduled -php artisan schedule:work -``` - -### Step 4: Monitor Cron Logs - -**Create log output (temporary for testing):** -```bash -cd /var/www/vhosts/laracorekit.com && php artisan schedule:run >> storage/logs/cron.log 2>&1 -``` - -**Check logs:** -```bash -tail -f storage/logs/cron.log -tail -f storage/logs/laravel.log -``` - ---- - -## UI Integration - -### Add Demo Banner to Login Pages - -The package provides Blade components that automatically show demo credentials when `DEMO_MODE=true`. - -**Frontend Login** (`modules/Auth/views/login.blade.php`): -```blade - -``` - -**Admin Login** (create `app/Filament/Pages/Auth/Login.php`): -```php -login(Login::class) -``` - -**Admin Dashboard Widget**: -```php -// app/Filament/Pages/Dashboard.php -use LaraCoreKit\DemoModule\Filament\Widgets\DemoBannerWidget; - -protected function getHeaderWidgets(): array -{ - return [ - DemoBannerWidget::class, - ]; -} -``` - ---- - -## Security & Testing -```php -use Modules\Demo\Filament\Widgets\DemoBannerWidget; - -protected function getHeaderWidgets(): array -{ - return [ - DemoBannerWidget::class, - ]; -} -``` - ---- - -## Phase 4: Plesk Cron Setup - -### Step 4.1: Access Plesk Cron Jobs - -1. Log into Plesk Control Panel -2. Go to **Websites & Domains** -3. Select **www.laracorekit.com** -4. Click **Scheduled Tasks (Cron Jobs)** - -### Step 4.2: Add Laravel Scheduler Cron - -**Settings:** -- **Command**: `cd /var/www/vhosts/laracorekit.com && php artisan schedule:run >> /dev/null 2>&1` -- **Run**: Every minute (*/1) -- **Minute**: `*` -- **Hour**: `*` -- **Day of Month**: `*` -- **Month**: `*` -- **Day of Week**: `*` - -**Alternative (if using different path):** -```bash -cd /home/username/public_html && /usr/bin/php artisan schedule:run >> /dev/null 2>&1 -``` - -**Find your PHP path in Plesk:** -```bash -which php -# Output: /usr/bin/php8.2 or similar -``` - -**Full command with explicit PHP version:** -```bash -cd /var/www/vhosts/laracorekit.com && /usr/bin/php8.2 artisan schedule:run >> /dev/null 2>&1 -``` - -### Step 4.3: Verify Cron is Running - -**SSH into server:** -```bash -ssh username@www.laracorekit.com -cd /var/www/vhosts/laracorekit.com - -# Test schedule manually -php artisan schedule:list - -# Check if demo:reset is scheduled -php artisan schedule:work -``` - -### Step 4.4: Monitor Cron Logs - -**Create log output (temporary for testing):** -```bash -cd /var/www/vhosts/laracorekit.com && php artisan schedule:run >> storage/logs/cron.log 2>&1 -``` - -**Check logs:** -```bash -tail -f storage/logs/cron.log -tail -f storage/logs/laravel.log -``` - ---- - -## Phase 5: Security & Testing - -### Step 5.1: Test Manual Reset - -**SSH into server:** -```bash -cd /var/www/vhosts/laracorekit.com - -# Run manual reset -php artisan demo:reset --force - -# Verify database was reset -php artisan tinker ->>> \App\Models\User::count() ->>> \Modules\Blog\Models\Post::count() -``` - -### Step 5.2: Test Blocked Actions - -1. Login as admin -2. Try to delete a user Should show "Action disabled in demo mode" -3. Try to modify critical settings Should be blocked -4. Upload a file Should work (will be deleted on reset) - -### Step 5.3: Security Checklist - -- [ ] `DEMO_MODE=false` in local `.env` -- [ ] `DEMO_MODE=true` only on `www.laracorekit.com` -- [ ] Verify `allowed_hosts` in config includes demo domain -- [ ] Test that demo banner shows on login pages -- [ ] Test that cron job runs every 30 minutes -- [ ] Verify uploaded files get deleted on reset -- [ ] Check sessions are cleared on reset -- [ ] Test that database credentials work after reset - -### Step 5.4: Monitoring Setup - -**Install Laravel Telescope (if not already):** -```bash -composer require laravel/telescope -php artisan telescope:install php artisan migrate +php artisan db:seed --class="Database\Seeders\DemoSeeder" ``` -**Monitor:** -- Scheduled commands at `/telescope/schedule` -- Database queries at `/telescope/queries` -- Logs at `/telescope/logs` - -**Enable only in demo:** -```php -// config/telescope.php -'enabled' => env('TELESCOPE_ENABLED', env('DEMO_MODE', false)), -``` - ---- - -## Phase 6: CI/CD Integration - -### Step 6.1: GitHub Actions Workflow - -**File**: `.github/workflows/deploy-demo.yml` -```yaml -name: Deploy Demo Environment - -on: - push: - branches: - - main - - demo - -jobs: - deploy: - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v3 - - - name: Deploy to Plesk - uses: appleboy/ssh-action@master - with: - host: ${{ secrets.DEMO_SERVER_HOST }} - username: ${{ secrets.DEMO_SERVER_USER }} - key: ${{ secrets.DEMO_SERVER_SSH_KEY }} - script: | - cd /var/www/vhosts/laracorekit.com - - # Pull latest code - git pull origin main - - # Install dependencies - composer install --no-dev --optimize-autoloader - - # Run migrations (safe with fresh flag in demo) - php artisan migrate --force - - # Clear caches - php artisan config:cache - php artisan route:cache - php artisan view:cache - - # Build assets - npm ci - npm run build - - # Reset demo database immediately after deploy - php artisan demo:reset --force - - # Restart queues if applicable - php artisan queue:restart -``` - -### Step 6.2: GitHub Secrets Setup - -**In GitHub Repository Settings Secrets:** -``` -DEMO_SERVER_HOST = www.laracorekit.com -DEMO_SERVER_USER = your-ssh-username -DEMO_SERVER_SSH_KEY = (paste your private SSH key) -``` - -### Step 6.3: Plesk Git Integration (Alternative) - -**If using Plesk Git:** -1. Go to **Git** in Plesk -2. Add repository: `https://github.com/yourusername/LaraCoreKit.git` -3. Set branch: `main` or `demo` -4. **Deployment Actions** Add commands: -```bash -composer install --no-dev --optimize-autoloader -php artisan migrate --force -php artisan config:cache -npm ci && npm run build -php artisan demo:reset --force -``` - ---- - -## Phase 7: Production Deployment - -### Step 7.1: Pre-Deployment Checklist - -- [ ] All code committed to GitHub -- [ ] `.env` configured on Plesk server -- [ ] `DEMO_MODE=true` set -- [ ] Cron job added in Plesk -- [ ] SSH access verified -- [ ] Database backed up -- [ ] CI/CD secrets configured - -### Step 7.2: Deploy to Production - -**Option A: Manual Deployment** -```bash -# SSH into server -ssh username@www.laracorekit.com - -cd /var/www/vhosts/laracorekit.com - -# Pull latest code -git pull origin main - -# Install dependencies -composer install --no-dev --optimize-autoloader - -# Publish demo config -php artisan vendor:publish --tag=demo-config - -# Run migrations -php artisan migrate --force - -# Seed demo data -php artisan db:seed --force - -# Clear and cache -php artisan config:cache -php artisan route:cache -php artisan view:cache - -# Build assets -npm ci -npm run build - -# Initial demo reset -php artisan demo:reset --force -``` - -**Option B: CI/CD Auto-Deploy** -```bash -# Just push to main branch -git push origin main - -# GitHub Actions will handle deployment -``` - -### Step 7.3: Verify Deployment - -**Visit site:** -- Frontend: https://www.laracorekit.com/login -- Admin: https://www.laracorekit.com/admin/login - -**Check:** -- [ ] Demo banner visible on login pages -- [ ] Demo credentials work -- [ ] Admin dashboard shows demo widget -- [ ] Can create blog post (temporary) -- [ ] Wait 30 minutes verify auto-reset worked -- [ ] Check logs: `storage/logs/laravel.log` - -### Step 7.4: Post-Deployment Monitoring - -**Monitor for first 24 hours:** -```bash -# Watch cron execution -tail -f storage/logs/laravel.log | grep "Demo database reset" - -# Check scheduled tasks -php artisan schedule:list - -# Monitor Telescope -# Visit: https://www.laracorekit.com/telescope -``` - ---- - -## Troubleshooting - -### Issue: Cron not running - -**Solution:** -```bash -# Check if cron daemon is running -sudo service cron status - -# Check Plesk cron logs -tail -f /var/log/cron - -# Manually test Laravel scheduler -cd /var/www/vhosts/laracorekit.com -php artisan schedule:work -``` - -### Issue: Demo reset fails - -**Solution:** -```bash -# Check Laravel logs -tail -f storage/logs/laravel.log - -# Run manually with verbose output -php artisan demo:reset --force -vvv - -# Check database connection -php artisan tinker ->>> DB::connection()->getPdo() -``` - -### Issue: Demo banner not showing - -**Solution:** -```php -// Check config -php artisan config:clear -php artisan tinker ->>> config('demo.enabled') ->>> config('demo.banner.show_on_login') - -// Clear view cache -php artisan view:clear -``` - -### Issue: Files not being deleted - -**Solution:** -```bash -# Check permissions -ls -la storage/app/public/media/ -chmod -R 775 storage/app/public/media/ -chown -R www-data:www-data storage/app/public/media/ - -# Manual cleanup test -php artisan tinker ->>> \Illuminate\Support\Facades\File::cleanDirectory(storage_path('app/public/media')) -``` - ---- - -## Module Management - -### Option 1: Disable Demo Module (Recommended for End Users) - -**In `.env`:** -```env -DEMO_MODE=false -DEMO_MODULE_ENABLED=false -``` - -**What this does:** -- Module code remains in `modules/Demo/` -- Service provider won't register -- No demo features active -- Zero overhead (not loaded) - -**When to use:** -- Production environments -- Local development (non-demo) -- Temporarily disable without removing files - ---- - -### Option 2: Remove Demo Module Completely - -**If you want to delete the module entirely:** - -**Step 1: Disable in config** -```php -// config/modules.php -'modules' => [ - // Comment out or remove: - // 'Demo' => [ - // 'enabled' => env('DEMO_MODULE_ENABLED', false), - // 'provider' => \Modules\Demo\DemoServiceProvider::class, - // ], -], -``` - -**Step 2: Remove from ModuleServiceProvider** -```php -// app/Providers/ModuleServiceProvider.php -// Remove these lines: -// if (config('modules.modules.Demo.enabled')) { -// $this->app->register(\Modules\Demo\DemoServiceProvider::class); -// } -``` - -**Step 3: Delete module directory** -```bash -# PowerShell -Remove-Item -Recurse -Force modules\Demo - -# Or Git (to keep in history) -git rm -r modules/Demo -git commit -m "feat: remove Demo module" -``` - -**Step 4: Update autoload** -```bash -composer dump-autoload -``` - ---- - -### Option 3: Extract as Standalone Composer Package (Advanced) - -**This allows users to `composer require/remove` the demo module** - -**Benefits:** -- Users can install: `composer require laracorekit/demo-module` -- Users can remove: `composer remove laracorekit/demo-module` -- Version management (1.0.0, 1.1.0, etc.) -- Separate repo, separate maintenance -- Can be used in other Laravel projects - -**Steps to extract:** - -**1. Create new repository** -```bash -# On GitHub, create: laracorekit/demo-module -git clone https://github.com/laracorekit/demo-module.git -cd demo-module -``` - -**2. Copy module files** -```bash -# From LaraCoreKit project -cp -r modules/Demo/* demo-module/ -``` - -**3. Create standalone `composer.json`** - -**File**: `composer.json` (in demo-module repo root) -```json -{ - "name": "laracorekit/demo-module", - "description": "Auto-resetting demo environment module for Laravel applications", - "keywords": ["laravel", "demo", "module", "filament"], - "license": "MIT", - "type": "library", - "authors": [ - { - "name": "Your Name", - "email": "your.email@laracorekit.com" - } - ], - "require": { - "php": "^8.2", - "laravel/framework": "^11.0|^12.0", - "filament/filament": "^3.0" - }, - "autoload": { - "psr-4": { - "LaraCoreKit\\DemoModule\\": "src/" - } - }, - "extra": { - "laravel": { - "providers": [ - "LaraCoreKit\\DemoModule\\DemoServiceProvider" - ] - } - }, - "minimum-stability": "dev", - "prefer-stable": true -} -``` - -**4. Update namespace in all PHP files** -```php -// Change from: -namespace Modules\Demo; - -// To: -namespace LaraCoreKit\DemoModule; -``` - -**5. Create README.md for package** -```markdown -# Demo Module for Laravel - -Auto-resetting demo environment with Filament integration. - -## Installation - -composer require laracorekit/demo-module - -## Configuration - -php artisan vendor:publish --tag=demo-config - -## Usage - -See full documentation... -``` - -**6. Publish to Packagist** -```bash -# Push to GitHub -git add . -git commit -m "Initial release" -git tag 1.0.0 -git push origin main --tags - -# Submit to Packagist.org -# Go to: https://packagist.org/packages/submit -# Enter: https://github.com/laracorekit/demo-module -``` - -**7. Install in LaraCoreKit** - -**Remove local module:** -```bash -git rm -r modules/Demo -``` - -**Install via Composer:** -```bash -composer require laracorekit/demo-module -``` - -**Update config/modules.php:** -```php -'modules' => [ - 'Demo' => [ - 'enabled' => env('DEMO_MODULE_ENABLED', false), - 'provider' => \LaraCoreKit\DemoModule\DemoServiceProvider::class, - ], -], -``` - -**8. Users can now uninstall:** -```bash -# Remove package -composer remove laracorekit/demo-module - -# Remove from config/modules.php -# Done! Module completely removed -``` - ---- - -### Comparison: Built-in vs Composer Package - -| Feature | Built-in Module | Composer Package | -|---------|----------------|------------------| -| Installation | Included by default | `composer require` | -| Removal | Delete directory | `composer remove` | -| Updates | Git pull main repo | `composer update` | -| Versioning | Follows main repo | Independent (1.0, 2.0) | -| Portability | LaraCoreKit only | Any Laravel project | -| Maintenance | Same repo | Separate repo | -| User Control | Less flexible | Full control | - ---- - -### Recommended Approach - -**For LaraCoreKit Distribution:** - -**Option A: Keep Built-in (Default)** -- Include in main repo -- Users disable via `.env` -- Easier for beginners -- Less setup complexity - -**Option B: Make it Optional** -- Don't include in `modules/` by default -- Provide installation docs -- Users install if needed: `composer require laracorekit/demo-module` -- Cleaner for production users - -**Option C: Hybrid (Best of Both)** -- Include in repo but **disabled by default** -- `.env.example` has `DEMO_MODULE_ENABLED=false` -- README shows how to enable OR how to remove completely -- Users choose their path - ---- - -### Implementation for "Composer Uninstallable" - -**If you want users to be able to `composer remove` it:** - -**1. Extract to package (follow Option 3 above)** - -**2. Remove from main LaraCoreKit repo** -```bash -git rm -r modules/Demo -git commit -m "feat: extract Demo module to separate package" -``` - -**3. Add as dev dependency** -```bash -composer require laracorekit/demo-module --dev -``` - -**4. Update documentation** -```markdown -## Demo Module (Optional) - -Install demo auto-reset functionality: - -composer require laracorekit/demo-module - -Remove when not needed: - -composer remove laracorekit/demo-module -``` - -**5. Users have full control** -```bash -# Install -composer require laracorekit/demo-module - -# Enable -# .env: DEMO_MODULE_ENABLED=true - -# Disable -# .env: DEMO_MODULE_ENABLED=false - -# Remove completely -composer remove laracorekit/demo-module -``` - ---- - -## Maintenance - -### Regular Tasks - -**Weekly:** -- Check cron logs for failures -- Monitor storage usage (media uploads) -- Review Telescope for anomalies - -**Monthly:** -- Update demo credentials (security) -- Review blocked actions list -- Test manual reset -- Backup database before changes - ---- - -## Summary - -**Module Benefits:** -- Isolated demo logic -- Easy to enable/disable -- Production-safe (domain whitelisting) -- Auto-resetting (30-min cron) -- Plesk-compatible -- CI/CD integrated -- Extractable as package - -**Next Steps:** -1. Create module structure (Phase 1) -2. Configure `.env` on Plesk (Phase 2) -3. Add UI banners (Phase 3) -4. Setup Plesk cron (Phase 4) -5. Test & deploy (Phase 5-7) +The seeder refuses to run with demo mode disabled. Admin/editor sample passwords come from the demo administrator credential configuration; user credentials come from demo user configuration. These accounts are publicly shared and must never exist in a customer application. -**Questions? Issues?** -Refer to troubleshooting section or Laravel docs. +The demo package's reset command rebuilds its configured database and calls the default seeder, which delegates to DemoSeeder only when demo mode is enabled. Configure Laravel's scheduler only on the disposable demo host. Review blocked actions and test restrictions after package updates. Do not run reset commands against valuable data. +Public-facing credential banners should appear only while demo mode is active. Screenshots must use a disposable demo instance and contain no real customer information. diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 8228da5..921b34f 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -1,210 +1,7 @@ -# Docker Deployment +# Docker -**Estimated time:** 12 minutes -**Difficulty:** Intermediate +Docker is an optional deployment/development choice. This repository includes Laravel Sail as a development dependency; it does not claim a maintained production container image. ---- +For container deployment, build your own reviewed PHP/Node stages, install locked dependencies, compile assets, run as a suitable non-root user and mount persistent storage appropriately. Configure secrets at runtime and run migrations as a deliberate deployment step. Validate the resulting image with your application's smoke tests. -LaraCoreKit supports containerized deployment with Docker, both for local development (via Laravel Sail) and production. - ---- - -## Option 1: Laravel Sail (Development) - -Laravel Sail is pre-configured for development containers. - -```bash -# Install Sail -php artisan sail:install - -# Start all services (MySQL, Redis, etc.) -./vendor/bin/sail up -d - -# Run artisan commands inside container -./vendor/bin/sail artisan migrate -./vendor/bin/sail artisan queue:work - -# Run composer inside container -./vendor/bin/sail composer require some/package - -# Run npm inside container -./vendor/bin/sail npm run dev -``` - ---- - -## Option 2: Custom Docker Setup (Production) - -### `Dockerfile` - -```dockerfile -FROM php:8.3-fpm-alpine - -# Install system dependencies -RUN apk add --no-cache \ - git curl zip unzip \ - libpng-dev libjpeg-dev libwebp-dev \ - icu-dev libzip-dev \ - && docker-php-ext-install \ - pdo_mysql mbstring zip bcmath \ - gd intl exif opcache - -# Install Composer -COPY --from=composer:2 /usr/bin/composer /usr/bin/composer - -# Set working directory -WORKDIR /var/www/html - -# Copy application -COPY . . - -# Install PHP dependencies -RUN composer install --no-dev --optimize-autoloader --no-interaction - -# Build frontend assets -COPY --from=node:20-alpine /usr/local/bin/node /usr/local/bin/node -COPY --from=node:20-alpine /usr/local/lib/node_modules /usr/local/lib/node_modules -COPY --from=node:20-alpine /usr/local/bin/npm /usr/local/bin/npm -RUN npm ci && npm run build && rm -rf node_modules - -# Optimize Laravel -RUN php artisan optimize - -# Set permissions -RUN chown -R www-data:www-data /var/www/html/storage \ - && chmod -R 775 /var/www/html/storage /var/www/html/bootstrap/cache - -EXPOSE 9000 -CMD ["php-fpm"] -``` - -### `docker-compose.yml` - -```yaml -version: '3.8' - -services: - app: - build: - context: . - dockerfile: Dockerfile - restart: unless-stopped - working_dir: /var/www/html - volumes: - - ./storage:/var/www/html/storage - - ./.env:/var/www/html/.env - depends_on: - - db - - redis - networks: - - laracorekit - - nginx: - image: nginx:alpine - restart: unless-stopped - ports: - - "80:80" - - "443:443" - volumes: - - ./public:/var/www/html/public - - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf - - /etc/letsencrypt:/etc/letsencrypt:ro - depends_on: - - app - networks: - - laracorekit - - db: - image: mysql:8.0 - restart: unless-stopped - environment: - MYSQL_DATABASE: laracorekit - MYSQL_USER: laracorekit - MYSQL_PASSWORD: secret - MYSQL_ROOT_PASSWORD: root_secret - volumes: - - db_data:/var/lib/mysql - networks: - - laracorekit - - redis: - image: redis:7-alpine - restart: unless-stopped - volumes: - - redis_data:/data - networks: - - laracorekit - - queue: - build: - context: . - dockerfile: Dockerfile - restart: unless-stopped - command: php artisan queue:work redis --sleep=3 --tries=3 - environment: - QUEUE_CONNECTION: redis - depends_on: - - db - - redis - networks: - - laracorekit - -volumes: - db_data: - redis_data: - -networks: - laracorekit: - driver: bridge -``` - ---- - -## Nginx Config for Docker - -```nginx -# docker/nginx.conf -server { - listen 80; - server_name _; - root /var/www/html/public; - index index.php; - - location / { - try_files $uri $uri/ /index.php?$query_string; - } - - location ~ \.php$ { - fastcgi_pass app:9000; - fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - include fastcgi_params; - } -} -``` - ---- - -## Deploy Commands - -```bash -# Build and start all containers -docker compose up -d --build - -# Run migrations -docker compose exec app php artisan migrate --force - -# Optimize -docker compose exec app php artisan optimize - -# View logs -docker compose logs -f app - -# Restart app container -docker compose restart app -``` - ---- - -## Next Steps - -**[Hosting Guide →](hosting)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/deployment/hosting.md b/docs/deployment/hosting.md index c2ffd79..26aa306 100644 --- a/docs/deployment/hosting.md +++ b/docs/deployment/hosting.md @@ -1,181 +1,9 @@ -# Hosting Guide +# Hosting -**Estimated time:** 8 minutes -**Difficulty:** Beginner +Deploy a supported PHP 8.3+ Laravel environment with required extensions, HTTPS, a webroot pointing at public/, a configured database, mail, storage and background workers as needed. ---- - -## Recommended Hosting Providers - -| Provider | Type | Best For | Starting Cost | -|----------|------|----------|--------------| -| **Laravel Cloud** | Managed | Easiest deployment | ~$5/mo | -| **Forge + VPS** | VPS Panel | Full control | ~$12/mo | -| **Ploi** | VPS Panel | Affordable alternative | ~$10/mo | -| **Railway** | PaaS | Fast hobby projects | Free tier | -| **Fly.io** | PaaS | Docker-based | Free tier | -| **DigitalOcean App** | PaaS | Simple setup | ~$12/mo | - ---- - -## Option 1: Laravel Cloud (Easiest) - -The official managed Laravel hosting platform. - -```bash -# Install CLI -curl -fsSL https://cloud.laravel.com/installer.sh | sh - -# Login -cloud login - -# Deploy from your project root -cloud deploy -``` - -Laravel Cloud handles: -- Zero-downtime deployments -- Auto-scaling -- SSL certificates -- Queue workers -- Cron jobs - ---- - -## Option 2: Forge + DigitalOcean - -Best balance of control and automation. - -### Step 1: Create a DigitalOcean Droplet - -- Ubuntu 22.04 LTS -- At least 2GB RAM (4GB recommended) -- 2 vCPUs - -### Step 2: Connect to Forge - -1. Visit [forge.laravel.com](https://forge.laravel.com) -2. Add your server (DigitalOcean) -3. Forge SSH's in and configures PHP, Nginx, MySQL, Redis - -### Step 3: Add Your Site - -1. Add site: `laracorekit.com` -2. Connect GitHub repo -3. Click **Deploy Now** - -### Step 4: Set Environment Variables - -In Forge → Site → Environment → Edit `.env`: - -```env -APP_ENV=production -APP_DEBUG=false -APP_URL=https://www.laracorekit.com -DB_DATABASE=laracorekit -DB_PASSWORD=your-secure-password -QUEUE_CONNECTION=redis -CACHE_DRIVER=redis -``` - -### Step 5: Deployment Script - -```bash -cd /home/forge/laracorekit.com -git pull origin main -composer install --no-dev --optimize-autoloader -npm ci && npm run build -php artisan migrate --force -php artisan optimize -php artisan queue:restart -``` - ---- - -## Option 3: Railway - -Great for quick deployments with zero server management. - -```bash -# Install Railway CLI -npm install -g @railway/cli - -# Login -railway login - -# Initialize project -railway init - -# Add services -railway add mysql -railway add redis - -# Deploy -railway up -``` - -Set environment variables in the Railway dashboard. - ---- - -## Option 4: Fly.io - -Docker-based deployment with global edge distribution. - -```bash -# Install flyctl -curl -L https://fly.io/install.sh | sh - -# Login -fly auth login - -# Initialize (creates fly.toml) -fly launch - -# Deploy -fly deploy -``` - -**fly.toml** (based on your Dockerfile): -```toml -[build] - dockerfile = "Dockerfile" - -[env] - APP_ENV = "production" - -[[services]] - protocol = "tcp" - internal_port = 80 - [[services.ports]] - port = 80 - handlers = ["http"] - [[services.ports]] - port = 443 - handlers = ["tls", "http"] -``` - ---- - -## SSL Certificates - -### Using Let's Encrypt (Free) - -```bash -# Install Certbot -sudo apt install certbot python3-certbot-nginx - -# Issue certificate -sudo certbot --nginx -d laracorekit.com -d www.laracorekit.com - -# Auto-renewal (runs twice daily) -sudo systemctl enable certbot.timer -``` - ---- - -## Next Steps - -**[Performance Optimization →](optimization)** +Use the production checklist for environment hardening, migrations, unique credentials and dependency audits. Do not expose .env, storage logs or repository files. Route requests through Laravel's front controller. +Keep the demo deployment isolated from customer applications and data. The package itself does not provision hosting, certificates or monitoring. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/deployment/optimization.md b/docs/deployment/optimization.md index aa8e039..3224024 100644 --- a/docs/deployment/optimization.md +++ b/docs/deployment/optimization.md @@ -1,199 +1,9 @@ -# Performance Optimization +# Performance -**Estimated time:** 10 minutes -**Difficulty:** Intermediate +The host builds ordinary public JavaScript separately from Chart.js, Sortable and Prism used by the component showcase. Images below the fold should use lazy loading, defined dimensions and suitable compression. ---- - -Speed directly impacts user experience, SEO rankings, and conversion rates. This guide covers key optimizations for LaraCoreKit in production. - ---- - -## Laravel Built-in Optimizations - -Run all at once: - -```bash -php artisan optimize -``` - -Or individually: - -```bash -# Cache config (major speedup) -php artisan config:cache - -# Cache routes (faster route matching) -php artisan route:cache - -# Cache views (skip Blade compilation) -php artisan view:cache - -# Cache events (avoid dynamic discovery) -php artisan event:cache -``` - -Clear all caches: - -```bash -php artisan optimize:clear -``` - ---- - -## PHP OPcache - -Enable OPcache in `php.ini`: - -```ini -opcache.enable=1 -opcache.enable_cli=1 -opcache.memory_consumption=256 -opcache.max_accelerated_files=20000 -opcache.validate_timestamps=0 ; Disable in production -opcache.save_comments=1 -opcache.fast_shutdown=1 -``` - -Verify it's active: - -```bash -php -r "echo opcache_get_status()['opcache_enabled'] ? 'OPcache ON' : 'OPcache OFF';" -``` - ---- - -## Redis for Cache, Sessions, Queues - -Switch all drivers to Redis in `.env`: - -```env -CACHE_DRIVER=redis -SESSION_DRIVER=redis -QUEUE_CONNECTION=redis -``` - -Redis is dramatically faster than file-based drivers under load. - ---- - -## Database Indexes - -Add indexes to frequently queried columns: - -```php -// In a migration -Schema::table('blog_posts', function (Blueprint $table) { - $table->index(['status', 'locale']); - $table->index('slug'); - $table->index('published_at'); - $table->index('author_id'); -}); -``` - -Check for missing indexes using Laravel Telescope or the query log. - ---- - -## Eager Loading (Avoid N+1) - -```php -// ❌ Bad - N+1 queries -$posts = Post::all(); -foreach ($posts as $post) { - echo $post->author->name; // Query per post -} - -// Good - 2 queries total -$posts = Post::with('author', 'tags', 'media')->get(); -``` - ---- - -## HTTP Caching with Cache Headers - -```php -// In a controller -return response()->view('blog.show', compact('post')) - ->header('Cache-Control', 'public, max-age=3600'); -``` - ---- - -## Asset Optimization (Vite) - -Already handled by `npm run build`: -- Minification -- Tree-shaking -- Content hash for cache busting -- CSS extraction - ---- - -## Image Optimization - -When using Spatie MediaLibrary, add WebP conversions: - -```php -$this->addMediaConversion('webp') - ->format('webp') - ->quality(80); -``` - -Use lazy loading in Blade: - -```blade -{{ $post->title }} -``` - ---- - -## Livewire Optimization - -```php -// Use lazy loading for heavy components -@livewire('blog.blog-list', lazy: true) - -// Use wire:navigate for SPA-like navigation (Livewire 4) -Blog - -// Minimize re-renders with computed properties -#[Computed] -public function posts() -{ - return Post::published()->latest()->paginate(12); -} -``` - ---- - -## Benchmark Your App - -```bash -# Install k6 for load testing -# https://k6.io - -# Or use Apache Benchmark -ab -n 1000 -c 10 https://www.laracorekit.com/blog -``` - ---- - -## Monitoring - -Use these tools in production: - -| Tool | Purpose | -|------|---------| -| Laravel Telescope | Debug queries, jobs, requests | -| Sentry | Error tracking | -| UptimeRobot | Uptime monitoring | -| New Relic / Datadog | APM (Application Performance Monitoring) | - ---- - -## Next Steps - -**[Testing →](../advanced/testing)** +Use production builds, reviewed lockfiles, OPcache, appropriate cache storage and eager loading for public content. Paginate lists and measure real response times with representative data before making performance claims. +Run `npm run build:core` for the package's prebuilt public stylesheet and `npm run build` for the demo host. Package consumers do not need the demo's npm dependencies to use default views. Test view overrides after changes. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/deployment/production.md b/docs/deployment/production.md index d54f2cf..dc9e7a9 100644 --- a/docs/deployment/production.md +++ b/docs/deployment/production.md @@ -1,220 +1,16 @@ -# Production Setup +# Production setup -**Estimated time:** 15 minutes -**Difficulty:** Intermediate +Start with [package installation](/docs/installation) and test in staging. The package supplies frontend and admin features; your application remains responsible for infrastructure and operations. ---- - -This guide covers what you need to do to deploy LaraCoreKit to a live production server safely and efficiently. - ---- - -## Pre-Deployment Checklist - -Before going live, verify: - -- [ ] `APP_ENV=production` -- [ ] `APP_DEBUG=false` -- [ ] `APP_URL` set to your real domain -- [ ] Database configured with a strong password -- [ ] Mail configured (Mailgun, SES, Postmark) -- [ ] Storage configured (local or S3) -- [ ] Queue worker running (Redis recommended) -- [ ] HTTPS certificate installed (Let's Encrypt) -- [ ] File permissions set correctly - ---- - -## Environment Variables - -```env -APP_NAME="My App" -APP_ENV=production -APP_DEBUG=false -APP_URL=https://www.laracorekit.com -APP_KEY=base64:... # Generate with: php artisan key:generate - -LOG_CHANNEL=stack -LOG_LEVEL=error - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laracorekit_prod -DB_USERNAME=dbuser -DB_PASSWORD=very_secure_password_here - -BROADCAST_DRIVER=log -CACHE_DRIVER=redis -FILESYSTEM_DISK=local -QUEUE_CONNECTION=redis -SESSION_DRIVER=redis -SESSION_LIFETIME=120 - -REDIS_HOST=127.0.0.1 -REDIS_PORT=6379 -REDIS_PASSWORD=null - -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailgun.org -MAIL_PORT=587 -MAIL_USERNAME=your@mailgun.org -MAIL_PASSWORD=your-mailgun-key -MAIL_FROM_ADDRESS=noreply@laracorekit.com -MAIL_FROM_NAME="${APP_NAME}" -``` - ---- - -## Deployment Script - -```bash -#!/bin/bash -set -e - -# Navigate to app -cd /var/www/laracorekit - -# Pull latest code -git pull origin main - -# Install/update PHP dependencies -composer install --no-dev --optimize-autoloader --no-interaction - -# Install/build frontend -npm ci && npm run build - -# Cache everything -php artisan config:cache -php artisan route:cache -php artisan view:cache -php artisan event:cache - -# Run migrations -php artisan migrate --force - -# Create storage symlink (if not exists) -php artisan storage:link - -# Restart queue workers -php artisan queue:restart - -echo " Deployment complete!" -``` - -Make it executable: -```bash -chmod +x deploy.sh -./deploy.sh -``` - ---- - -## Nginx Configuration - -```nginx -server { - listen 80; - listen 443 ssl http2; - server_name www.laracorekit.com laracorekit.com; - root /var/www/laracorekit/public; - index index.php; - - ssl_certificate /etc/letsencrypt/live/laracorekit.com/fullchain.pem; - ssl_certificate_key /etc/letsencrypt/live/laracorekit.com/privkey.pem; - - # Redirect HTTP to HTTPS - if ($scheme != "https") { - return 301 https://$server_name$request_uri; - } - - # Gzip Compression - gzip on; - gzip_types text/plain text/css application/json application/javascript; - - # Browser caching for assets - location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2)$ { - expires 1y; - add_header Cache-Control "public, immutable"; - try_files $uri =404; - } - - location / { - try_files $uri $uri/ /index.php?$query_string; - } - - location ~ \.php$ { - fastcgi_pass unix:/var/run/php/php8.3-fpm.sock; - fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - include fastcgi_params; - } - - location ~ /\. { - deny all; - } -} -``` - ---- - -## File Permissions - -```bash -# Set correct ownership -sudo chown -R www-data:www-data /var/www/laracorekit - -# Set permissions -sudo find /var/www/laracorekit -type f -exec chmod 644 {} \; -sudo find /var/www/laracorekit -type d -exec chmod 755 {} \; - -# Storage and cache dirs need write access -sudo chmod -R 775 /var/www/laracorekit/storage -sudo chmod -R 775 /var/www/laracorekit/bootstrap/cache -``` - ---- - -## Queue Worker (Supervisor) - -```ini -; /etc/supervisor/conf.d/laracorekit-queue.conf -[program:laracorekit-queue] -process_name=%(program_name)s_%(process_num)02d -command=php /var/www/laracorekit/artisan queue:work redis --sleep=3 --tries=3 --max-time=3600 -autostart=true -autorestart=true -stopasgroup=true -killasgroup=true -user=www-data -numprocs=2 -redirect_stderr=true -stdout_logfile=/var/log/laracorekit-queue.log -stopwaitsecs=3600 -``` - -```bash -supervisorctl reread -supervisorctl update -supervisorctl start laracorekit-queue:* -``` - ---- - -## Scheduled Tasks (Cron) - -```cron -* * * * * www-data php /var/www/laracorekit/artisan schedule:run >> /dev/null 2>&1 -``` - -Add via: -```bash -crontab -e -u www-data -``` - ---- - -## Next Steps - -**[Docker →](docker)** +1. Set `APP_ENV=production`, `APP_DEBUG=false`, a unique application key and correct HTTPS `APP_URL`. +2. Keep `DEMO_MODE=false`. Do not seed demo accounts or run the demo reset scheduler in a customer application. +3. Install from reviewed lockfiles with `composer install --no-dev --optimize-autoloader`. Build and publish assets during deployment; do not run a Vite development server publicly. +4. Back up data before running `php artisan migrate --force`. Create the first administrator using `php artisan laracorekit:admin` and a unique password. +5. Configure transactional mail and test password recovery. Email-verification enforcement is not bundled. +6. Configure storage, file-size/type restrictions, queue workers and scheduled tasks appropriate to your application. Run `php artisan storage:link` for public local uploads. +7. Cache configuration/routes/views, monitor failures, test backups and restore procedures, and run dependency audits regularly. +8. Verify anonymous visitors cannot read unpublished or future-dated posts, regular users cannot enter the admin panel, and editors cannot manage users or roles. +The installer never creates known production credentials. Registration is disabled by default. Login failures are rate limited; choose a shared cache store across application servers so limits apply consistently. +Security reports belong in the repository's [security policy](https://github.com/ProgrammerNomad/LaraCoreKit/security/policy), not public issues containing sensitive details. diff --git a/docs/faq.md b/docs/faq.md index b1a571b..315a78c 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,418 +1,33 @@ -# Frequently Asked Questions (FAQ) +# Frequently asked questions -Comprehensive answers to common questions about LaraCoreKit. +## Is this only an admin panel? ---- +No. The package provides a public Livewire frontend and a Filament admin workspace, with shared users, roles, blog, settings and media. -## General Questions +## Should I clone GitHub or install with Composer? -### What is LaraCoreKit? +Use the package in a fresh Laravel application for your product. Clone the full repository to run the demo website, docs and showcase or contribute. Until Packagist publication, use the documented GitHub VCS installation. -LaraCoreKit is a modular Laravel 13 starter kit that provides a feature-rich foundation for building admin-driven and content-driven applications. It combines Filament 5 (admin panel), Livewire 4 (dynamic frontend), and Tailwind 4 (styling) with built-in modules for auth, blog, media, settings, multilingual support, and RTL layouts. +## Does Composer install the demo too? -### Is LaraCoreKit free? +No. The package has no dependency on the demo module, marketing website, Docs module or UIShowcase module. Its own Laravel/Filament dependencies still need to be downloaded. -Yes, 100% free and open-source under the MIT license. You can use it for personal projects, commercial projects, and client work without any restrictions. +## Can I update my application later? -### Who maintains LaraCoreKit? +Yes, package code can be updated through Composer. Your application code and view overrides stay outside vendor. Read release notes, back up data and test migrations in staging. Before 1.0, pin a tested minor release series. -Created and maintained by Shiv Singh (ProgrammerNomad) and the open-source community. It is a community-driven project. +## Can I add it to an existing application? -### Is LaraCoreKit production-ready? +The initial supported path is a fresh Laravel 13 application. Existing authentication models, route names, tables and Modules namespaces require compatibility review. The installer does not resolve those conflicts automatically. -LaraCoreKit is actively developed with quality assurance tools (tests, code formatting, static analysis). As a newer project, we recommend thorough testing before production deployment. +## Is everything advertised implemented? -### What are the system requirements? +The installation and introduction pages list the implemented scope. API tokens, email-verification enforcement, billing, tenancy and a module marketplace are not bundled. There is no claim of a completed independent security audit. -- PHP 8.3 or higher -- Composer 2.x -- Node.js 18.x or higher -- MySQL 8.0+, PostgreSQL 13+, or SQLite 3.x -- 512MB RAM minimum (2GB+ recommended) +## Are installations tracked? ---- +No telemetry or registration is required. Packagist downloads can indicate adoption after publication, but cannot identify developers or count unique active installations. -## Installation & Setup +## Can AI tools read the documentation? -### I get "Class not found" errors - -```bash -composer dump-autoload -php artisan optimize:clear -``` - -### Migration fails with database connection error - -1. Check `.env` database credentials -2. Ensure database server is running -3. For MySQL, create database: `CREATE DATABASE laracorekit;` - -### Vite build fails with Node.js errors - -```bash -rm -rf node_modules package-lock.json -npm install --legacy-peer-deps -npm run build -``` - -### White screen after installation - -Check: -- `.env` file exists and configured -- Storage permissions: `chmod -R 755 storage bootstrap/cache` -- Run `php artisan config:clear` -- Check `storage/logs/laravel.log` - ---- - -## Features - -### Does it include a blog? - -Yes! Full blog module with multilingual posts, rich text editor, SEO fields, draft/published states, Filament admin, and Livewire frontend. - -### Does it support e-commerce? - -UI components are included, but no full e-commerce module yet. Planned as future addon module. - -### Does it have payment integration? - -No, payment systems are planned as separate addon modules (Stripe, Razorpay, PayPal). - -### Can I build a SaaS with this? - -Partially. Includes foundation (auth, admin, roles/permissions, API), but lacks subscription billing and multi-tenancy. These are planned as addon modules. - -### How many languages are included? - -Three: English, Hindi, and Arabic. Easy to add more via JSON translation files. - -### What's included in the 175+ components? - -Typography, Buttons, Forms, Navigation, Layouts, Data Display, Feedback, Charts, Media, Auth, E-commerce, and Advanced components. - ---- - -## Modules - -### Can I remove modules I don't need? - -Yes! Each module is self-contained. To remove: -1. Delete module directory -2. Remove service provider from `bootstrap/providers.php` -3. Remove module routes -4. Update tests - -### Can I disable a built-in module? - -Set `enabled => false` in `config/modules.php`, then run `php artisan optimize:clear`. - -### Can I create my own modules? - -Yes! See [Module Development Guide](https://www.laracorekit.com/docs/contributing/module-development). - -### I added a new module but routes aren't loading - -1. Add to `config/modules.php` with `enabled => true` -2. Add namespace to `composer.json` autoload psr-4 -3. Run `composer dump-autoload && php artisan optimize:clear` - ---- - -## Admin Panel - -### I can't log into the admin panel - -Create admin user: -```bash -php artisan filament:user -``` - -### How do I change the admin URL? - -Edit `app/Providers/Filament/AdminPanelProvider.php`: -```php -->path('dashboard') // Changes /admin to /dashboard -``` - -### Where are Filament admin resources? - -Inside each module: `modules/{Module}/src/Filament/Resources/` - -### Filament admin not loading - -Check: -- Admin user created -- Assets published: `php artisan filament:assets` -- Clear cache: `php artisan cache:clear` - ---- - -## Customization - -### Can I change the design/styling? - -Yes! Edit `tailwind.config.js`, modify Blade templates, add custom CSS in `resources/css/app.css`, then run `npm run build`. - -### Can I use Bootstrap instead of Tailwind? - -Not recommended. Entire UI built with Tailwind. Switching requires rewriting all templates. - -### Can I use Inertia instead of Livewire? - -Not easily. Livewire deeply integrated. Consider Laravel Breeze with Inertia for that preference. - -### Can I customize UI components? - -Yes! Edit directly in `modules/*/views/`, extend with your variants, or replace entirely. - ---- - -## Multilingual & RTL - -### How does multilingual content work? - -Two approaches: -1. **Static text** - JSON files in `lang/` directories -2. **Database content** - JSON columns for translatable fields - -### How do I add a new language? - -1. Add `lang/fr.json` -2. Add to each module: `modules/*/lang/fr.json` -3. Update language switcher -4. Add to `config/app.php` supported locales - -### How does RTL support work? - -- Locale middleware detects Arabic/Hebrew -- Tailwind RTL plugin handles layout mirroring -- Use `rtl:` prefix for custom RTL styles - -### Can I make the site RTL by default? - -Set default locale in `config/app.php`: -```php -'locale' => 'ar', -``` - ---- - -## Development - -### How do I run tests? - -```bash -php artisan test -# Or -composer test -``` - -### How do I check code quality? - -```bash -composer review # Runs all checks -# Or individually: -composer pint # Format code -composer pint-test # Check style -composer phpstan # Static analysis -``` - -### How do I enable debug mode? - -Edit `.env`: -```env -APP_DEBUG=true -APP_ENV=local -``` -Never enable in production! - -### I updated a view but see old content - -```bash -php artisan view:clear -``` - -### How do I see SQL queries? - -Install Laravel Telescope: -```bash -composer require laravel/telescope --dev -php artisan telescope:install -php artisan migrate -``` -Visit `/telescope` - ---- - -## Deployment - -### Can I deploy to shared hosting? - -Yes, but requires PHP 8.3+, Composer, Node.js, and SSH. Modern platforms (Forge, Vapor, DigitalOcean) recommended. - -### Does it work with Docker? - -Yes! Works with Laravel Sail or custom Docker setups: -```bash -composer require laravel/sail --dev -php artisan sail:install -./vendor/bin/sail up -``` - -### Does it work with Laravel Forge/Vapor? - -Yes! Standard Laravel application compatible with all Laravel deployment tools. - -### How do I set up queues? - -Configure in `.env`: -```env -QUEUE_CONNECTION=database -``` - -Run: -```bash -php artisan queue:table -php artisan migrate -php artisan queue:work -``` - -For production, use Supervisor. - ---- - -## Performance & Security - -### How do I speed up my app? - -```bash -php artisan optimize # Cache everything -``` - -Use Redis for cache/sessions/queues in `.env`: -```env -CACHE_DRIVER=redis -SESSION_DRIVER=redis -QUEUE_CONNECTION=redis -``` - -### Is LaraCoreKit secure? - -Includes: CSRF protection, XSS protection, SQL injection protection, password hashing, rate limiting, Sanctum API auth, and RBAC. - -### How do I report security vulnerabilities? - -Use GitHub Security Advisories (recommended): -- https://github.com/ProgrammerNomad/LaraCoreKit/security/advisories/new - -Or contact the repository owner directly through GitHub. See [Security Policy](SECURITY.md) for full details. - -**Do not create public issues for security vulnerabilities.** - -### Is it GDPR compliant? - -Provides tools (data export, deletion) but compliance is your responsibility. Consult legal counsel. - ---- - -## Comparisons - -### LaraCoreKit vs Laravel Breeze? - -- Breeze: Minimal auth only -- LaraCoreKit: Full starter with admin, blog, media, settings - -Use Breeze for minimal auth, LaraCoreKit for complete foundation. - -### LaraCoreKit vs Laravel Jetstream? - -- Jetstream: Auth + teams + 2FA + API -- LaraCoreKit: Auth + admin + blog + media + multilingual - -Different focus: Jetstream on auth, LaraCoreKit on content management. - -### LaraCoreKit vs Filament? - -- Filament: Admin panel framework -- LaraCoreKit: Complete starter using Filament - -LaraCoreKit includes Filament plus frontend, modules, multilingual. - -See detailed comparisons: -- [LaraCoreKit vs Larament](comparisons/laracorekit-vs-larament.md) -- [LaraCoreKit vs Official Livewire Starter](comparisons/laracorekit-vs-livewire-starter.md) - ---- - -## Troubleshooting - -### Images not displaying - -Check: -- Storage linked: `php artisan storage:link` -- Permissions: `chmod -R 755 storage` -- Config: `config/filesystems.php` -- APP_URL in `.env` - -### Dark mode not working - -Add to `` tag: -```blade - -``` - -Or toggle with Alpine.js: -```javascript -document.documentElement.classList.toggle('dark'); -``` - ---- - -## Support - -### Where can I get help? - -- **Documentation:** https://www.laracorekit.com/docs -- **GitHub Issues:** https://github.com/ProgrammerNomad/LaraCoreKit/issues -- **Discussions:** https://github.com/ProgrammerNomad/LaraCoreKit/discussions - -### How do I report bugs? - -Use [Bug Report template](https://github.com/ProgrammerNomad/LaraCoreKit/issues/new?template=bug_report.md) with Laravel version, PHP version, steps to reproduce, and error logs. - -### Can I contribute? - -Yes! See [Contributing Guide](CONTRIBUTING.md). Fix bugs, add features, improve docs, write tests, or help in discussions. - -### Is there paid support? - -Not currently. Community support is available via GitHub Discussions and Issues. See [Support section in README](../README.md#support). - ---- - -## License - -### Can I use this for client projects? - -Yes! MIT license allows commercial use without restriction. - -### Do I need to credit LaraCoreKit? - -Not required, but appreciated! Only requirement is including the license file. - -### Can I sell products built with LaraCoreKit? - -Yes! MIT license allows commercial products. - -### Can I create paid themes/modules? - -Yes! Create and sell extensions for LaraCoreKit. - ---- - -**Don't see your question?** - -Search [GitHub Issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues) or ask in [Discussions](https://github.com/ProgrammerNomad/LaraCoreKit/discussions). - -Last updated: April 22, 2026 +Documentation is server-rendered HTML with stable links and a plain-text index at `/llms.txt`. Markdown source is available under `/docs-source/{page}`. These formats help tools retrieve accurate information; they do not guarantee search rankings or recommendations. diff --git a/docs/features/authentication.md b/docs/features/authentication.md index a89db6b..e06b817 100644 --- a/docs/features/authentication.md +++ b/docs/features/authentication.md @@ -1,202 +1,11 @@ -# Features: Authentication +# Authentication ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 -**Source Files:** [Auth Module](../../modules/Auth/) | [Login Component](../../modules/Auth/views/livewire/login.blade.php) ---- +The Auth module implements session login, optional public registration, logout, password recovery and an authenticated account dashboard using Livewire. It is custom application code, not an installed Breeze scaffold. Sanctum API tokens and email-verification enforcement are not implemented. -LaraCoreKit's Auth module provides a complete, production-ready authentication system built on **Laravel Breeze** with added enhancements for multilingual support, admin integration, and API token management. +Routes: `/login`, `/forgot-password`, `/reset-password/{token}`, `/dashboard` and POST `/logout`. `/register` exists only when `laracorekit.registration` is enabled. Form submission uses Livewire actions, not standalone POST login/register controllers. ---- +Login failures are limited per normalized email/IP and per IP. Successful login regenerates the session and clears the account counter. Registration and reset requests are rate limited. Configure a shared cache in multi-server deployments and working mail transport for password recovery. -## What's Included - -| Feature | Status | -|---------|--------| -| Login / Register | | -| Email Verification | | -| Password Reset | | -| Remember Me | | -| Sanctum API Tokens | | -| Filament Admin Auth | | -| Multilingual Forms | | - ---- - -## Module Location - -``` -modules/Auth/ -├── src/ -│ ├── AuthServiceProvider.php -│ └── Http/ -│ └── Livewire/ -│ ├── Login.php -│ ├── Register.php -│ └── ForgotPassword.php -├── views/ -│ └── auth/ -│ ├── login.blade.php -│ └── register.blade.php -└── routes/ - └── web.php -``` - ---- - -## Routes - -The Auth module registers these routes automatically: - -```php -GET /login → Auth\Login -POST /login → Auth\Login (Livewire action) -GET /register → Auth\Register -POST /register → Auth\Register (Livewire action) -GET /forgot-password → Auth\ForgotPassword -POST /forgot-password → Email password reset link -GET /reset-password/{token} -POST /logout -GET /email/verify -GET /email/verify/{id}/{hash} -``` - ---- - -## Login Component - -The `Login` Livewire component handles authentication: - -```php -namespace Modules\Auth\Http\Livewire; - -use Livewire\Component; -use Illuminate\Support\Facades\Auth; - -class Login extends Component -{ - public string $email = ''; - public string $password = ''; - public bool $remember = false; - - public function login() - { - $this->validate([ - 'email' => 'required|email', - 'password' => 'required|min:6', - ]); - - if (!Auth::attempt(['email' => $this->email, 'password' => $this->password], $this->remember)) { - $this->addError('email', __('auth.failed')); - return; - } - - redirect()->intended('/dashboard'); - } -} -``` - ---- - -## Protecting Routes - -Use standard Laravel middleware to protect routes: - -```php -// In any module's routes/web.php -Route::middleware(['auth'])->group(function () { - Route::get('/dashboard', DashboardPage::class)->name('dashboard'); -}); - -// Verify email -Route::middleware(['auth', 'verified'])->group(function () { - Route::get('/profile', ProfilePage::class)->name('profile'); -}); -``` - ---- - -## Admin Authentication - -Filament admin authentication is handled separately. Admin users must be explicitly created: - -```bash -php artisan filament:user -``` - -Under the hood, Filament checks `canAccessFilament()` on the User model via a Filament Panel configuration in `app/Providers/Filament/AdminPanelProvider.php`. - ---- - -## Email Verification - -Enable email verification by implementing `MustVerifyEmail` on the User model: - -```php -use Illuminate\Contracts\Auth\MustVerifyEmail; - -class User extends Authenticatable implements MustVerifyEmail -{ - // ... -} -``` - -Configure your mail settings in `.env`: - -```env -MAIL_MAILER=smtp -MAIL_HOST=smtp.mailgun.org -MAIL_PORT=587 -MAIL_USERNAME=your@mailgun.org -MAIL_PASSWORD=secret -MAIL_FROM_ADDRESS=noreply@laracorekit.com -``` - ---- - -## Sanctum API Tokens - -For API authentication, Sanctum is pre-configured: - -```php -// Create a token for the authenticated user -$token = $user->createToken('my-app')->plainTextToken; - -// Revoke all tokens -$user->tokens()->delete(); -``` - -API routes should use: - -```php -Route::middleware('auth:sanctum')->get('/user', function (Request $request) { - return $request->user(); -}); -``` - ---- - -## Customization - -### Custom Login Redirect - -Override the `redirectTo` property in the Login component: - -```php -protected string $redirectTo = '/dashboard'; -``` - -### Custom Guards - -Add a new guard in `config/auth.php` and create a corresponding provider. - ---- - -## Next Steps - -**[Users & Profiles →](users)** - -Learn how to manage user profiles, avatars, and extended user data. +Registration creates an ordinary User role and redirects to the account dashboard. Administrative access requires the appropriate role and resource permissions. Create administrators with `php artisan laracorekit:admin`. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/features/blog.md b/docs/features/blog.md index 2c00a13..3f1f98d 100644 --- a/docs/features/blog.md +++ b/docs/features/blog.md @@ -1,139 +1,9 @@ -# Blog System +# Blog ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 -**Source Files:** [BlogResource](../../modules/Blog/src/Filament/Resources/BlogResource.php) | [Routes](../../modules/Blog/routes/web.php) | [Post Model](../../modules/Blog/src/Models/Post.php) ---- +Blog supports JSON translations for titles, excerpts, content, categories and metadata, unique slugs, authors, draft/published/archived status, featured posts, publication timestamps and soft deletion. -The Blog module in LaraCoreKit provides a fully multilingual blog system with SEO-friendly slugs, categories, and Filament admin integration. +Public routes are `/blog` and `/blog/{slug}`. The published scope requires published status and a publication time at or before now, so future-dated posts and drafts remain private. Blog HTML is sanitized before public rendering. The list includes search, categories and pagination; related-post filtering uses Laravel JSON queries rather than MySQL-specific raw SQL. ---- +Filament BlogResource provides authoring and permission checks. Featured-image and gallery attachments use Media Library. Configure storage and workers for the media operations you enable. Blog depends on User and Media. -## Features - -- Multilingual posts (EN, HI, AR) -- SEO-friendly slugs -- Categories and tags -- Featured images via Media Library -- Draft/Published status -- Author attribution -- Filament admin CRUD - ---- - -## Routes - -``` -GET /blog → BlogList (Livewire) -GET /blog/{slug} → BlogDetail (Livewire) -GET /admin/posts → Filament admin -``` - ---- - -## Post Model - -```php -namespace Modules\Blog\Models; - -use Illuminate\Database\Eloquent\Model; -use Spatie\MediaLibrary\HasMedia; -use Spatie\MediaLibrary\InteractsWithMedia; - -class Post extends Model implements HasMedia -{ - use InteractsWithMedia; - - protected $fillable = [ - 'title', 'slug', 'content', 'excerpt', - 'status', 'locale', 'author_id', 'published_at', - ]; - - public function scopePublished($query) - { - return $query->where('status', 'published'); - } - - public function scopeLocale($query, string $locale) - { - return $query->where('locale', $locale); - } -} -``` - ---- - -## Creating a Post Programmatically - -```php -use Modules\Blog\Models\Post; - -Post::create([ - 'title' => 'Getting Started with LaraCoreKit', - 'slug' => 'getting-started-with-laracorekit', - 'content' => '...', - 'excerpt' => 'A short summary of the post.', - 'status' => 'published', - 'locale' => 'en', - 'published_at' => now(), -]); -``` - ---- - -## Displaying Posts in Blade - -```blade -@foreach($posts as $post) - -@endforeach -``` - ---- - -## Blog in Multiple Languages - -Filter posts by locale: - -```php -$posts = Post::published()->locale(app()->getLocale())->latest()->paginate(12); -``` - ---- - -## Admin Panel - -Navigate to `/admin/posts` to: -- Create, edit, delete posts -- Set status (Draft/Published) -- Upload featured images -- Set SEO metadata - ---- - -## Customizing the Blog - -Add a new field to posts: - -```php -// In migration -$table->string('reading_time')->nullable(); - -// In model $fillable -'reading_time', - -// In Filament resource schema -TextInput::make('reading_time')->suffix('min'), -``` - ---- - -## Next Steps - -**[Media Management →](media)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/features/media.md b/docs/features/media.md index 7d0437f..9bb7875 100644 --- a/docs/features/media.md +++ b/docs/features/media.md @@ -1,138 +1,9 @@ -# Media Management +# Media attachments ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 -**Source Files:** [Media Module](../../modules/Media/) | [MediaResource](../../modules/Media/src/Filament/Resources/MediaResource.php) ---- +The package requires Spatie Laravel Media Library and registers its media-table migration. Blog implements Media Library's HasMedia contract, with `featured_image` as a single-file collection and a `gallery` collection. -LaraCoreKit uses **Spatie Laravel MediaLibrary** for file uploads, image optimization, and media management. - ---- - -## Features - -- Upload any file type -- Automatic image conversions (thumbnails, etc.) -- Store locally or on S3 -- Admin media browser -- Associate media with any Eloquent model - ---- - -## Setup - -Add `HasMedia` and `InteractsWithMedia` to any model: - -```php -use Spatie\MediaLibrary\HasMedia; -use Spatie\MediaLibrary\InteractsWithMedia; - -class Post extends Model implements HasMedia -{ - use InteractsWithMedia; - - public function registerMediaCollections(): void - { - $this->addMediaCollection('cover') - ->singleFile() // Only one cover per post - ->acceptsMimeTypes(['image/jpeg', 'image/png', 'image/webp']); - } - - public function registerMediaConversions(Media $media = null): void - { - $this->addMediaConversion('thumb') - ->width(400) - ->height(300) - ->sharpen(10); - - $this->addMediaConversion('og') - ->width(1200) - ->height(630); - } -} -``` - ---- - -## Uploading Files - -### From Request (controller/Livewire) - -```php -// Upload from file upload -$post->addMediaFromRequest('cover_image') - ->toMediaCollection('cover'); - -// Upload from URL -$post->addMediaFromUrl('https://www.laracorekit.com/image.jpg') - ->toMediaCollection('cover'); - -// Upload from existing file path -$post->addMedia('/path/to/file.jpg') - ->toMediaCollection('cover'); -``` - ---- - -## Retrieving Media - -```php -// Get first media URL -$coverUrl = $post->getFirstMediaUrl('cover'); - -// Get thumbnail conversion -$thumbUrl = $post->getFirstMediaUrl('cover', 'thumb'); - -// Get all media -$allImages = $post->getMedia('images'); - -// Check if media exists -if ($post->hasMedia('cover')) { - // ... -} -``` - ---- - -## In Blade Templates - -```blade -{{ $post->title }} -``` - ---- - -## Admin Media Library - -Access the media browser at `/admin/media` to: -- Browse all uploaded files -- Delete unused media -- Preview images - ---- - -## Storage Configuration - -For production, use S3: - -```env -FILESYSTEM_DISK=s3 -AWS_ACCESS_KEY_ID=your-key -AWS_SECRET_ACCESS_KEY=your-secret -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET=your-bucket -``` - ---- - -## Next Steps - -**[Settings →](settings)** +The Media module supplies infrastructure, not a standalone `/admin/media` library resource. Automatic thumbnails, a full media browser and storage-specific configuration should not be assumed. Configure permitted file types, size limits, storage and queue behavior for your application, and test uploads before deployment. +Run `php artisan storage:link` when using public local storage. S3 requires your own disk configuration and credentials. The demo's reset behavior is separate from this module. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/features/multilingual.md b/docs/features/multilingual.md index 0ca7365..f5fe5bf 100644 --- a/docs/features/multilingual.md +++ b/docs/features/multilingual.md @@ -1,131 +1,9 @@ -# Multilingual Support +# Multilingual content ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 -**Source Files:** [LocaleSwitcher](../../modules/Core/src/Http/Livewire/LocaleSwitcher.php) | [Middleware](../../modules/Core/src/Http/Middleware/SetLocale.php) ---- +English, Hindi and Arabic are the default locale choices. Core supplies language switching and locale middleware, while package JSON translations provide interface text. Blog/settings fields can store language-keyed JSON values. -LaraCoreKit ships with multilingual support for **English**, **Hindi**, and **Arabic** out of the box, including automatic RTL layout switching for Arabic. +The session locale is checked against configured supported locales before application locale is changed. The locale switch returns to the application's root. Content views generally fall back to English when a field translation is missing. ---- +Adding a language requires configuring its locale, labels, JSON translations and any content/form fields your application needs. The demo marketing copy may fall back to English; supported locale selection does not imply every site paragraph is translated. -## Supported Languages - -| Code | Language | Direction | Flag | -|------|----------|-----------|------| -| `en` | English | LTR | | -| `hi` | Hindi | LTR | | -| `ar` | Arabic | RTL | | - ---- - -## Locale Switcher - -The `LocaleSwitcher` Livewire component (Core module) handles language switching: - -```blade -@livewire('locale-switcher') -``` - -It stores the selected locale in the session and redirects back with the new locale active. - -**Component:** `modules/Core/src/Http/Livewire/LocaleSwitcher.php` - ---- - -## Translation Files - -### JSON translations (recommended for UI strings) - -``` -lang/ -├── en.json -├── hi.json -└── ar.json -``` - -```json -// lang/hi.json -{ - "Welcome": "स्वागत है", - "Log in": "लॉग इन करें", - "Register": "पंजीकरण करें" -} -``` - -### PHP translation files (for organized namespaced strings) - -```php -// lang/hi/auth.php -return [ - 'failed' => 'प्रमाण-पत्र इनमें से किसी से मेल नहीं खाते।', - 'throttle' => 'बहुत अधिक लॉगिन प्रयास।', -]; -``` - ---- - -## Using Translations in Blade - -```blade -{{ __('Welcome') }} -{{ __('Hello, :name!', ['name' => $user->name]) }} -@lang('auth.failed') -``` - ---- - -## Using Translations in PHP - -```php -__('Welcome'); -trans('auth.failed'); -app()->getLocale(); // 'en', 'hi', 'ar' -``` - ---- - -## Detecting Current Locale - -```php -$locale = app()->getLocale(); -$isRTL = in_array($locale, ['ar']); -``` - ---- - -## Adding a New Language - -1. Create `lang/{locale}.json` with translations: - -```json -// lang/fr.json -{ - "Welcome": "Bienvenue", - "Log in": "Se connecter" -} -``` - -2. Add to the locale switcher options in `CoreServiceProvider.php` - -3. If it's RTL, add to the RTL detection in your layout - ---- - -## SEO with Multilingual - -Use `hreflang` tags for multilingual SEO: - -```blade - - - -``` - ---- - -## Next Steps - -**[RTL Support →](rtl-support)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/features/roles-permissions.md b/docs/features/roles-permissions.md index dc83cb8..25355bb 100644 --- a/docs/features/roles-permissions.md +++ b/docs/features/roles-permissions.md @@ -1,136 +1,9 @@ -# Roles & Permissions +# Roles and permissions ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 -**Source Files:** [RoleResource](../../modules/User/src/Filament/Resources/RoleResource.php) | [Config](../../config/permission.php) ---- +Spatie Laravel Permission supplies authorization. `RolePermissionSeeder` creates Admin, Editor and User roles with permissions for user/role management, blog actions, settings and media-related operations. It never promotes a user based on a well-known email address. -LaraCoreKit uses **Spatie Laravel Permission** for role-based access control (RBAC), pre-configured and seeded with sensible defaults. +The User model permits Admin and Editor roles into the panel. Resources additionally check the relevant permissions for viewing, creating, editing and deleting records; entering the panel does not grant access to every resource. Settings saves check `edit-settings`. Blog publication checks `publish-blog`. ---- +Default editors can author and publish blog content but cannot manage users or roles. Test custom roles and direct resource URLs when extending authorization. Do not treat hidden navigation items as a security boundary. -## Default Roles - -| Role | Description | -|------|-------------| -| `super-admin` | Full access to everything | -| `admin` | Access to admin panel | -| `editor` | Can manage blog content | -| `user` | Standard registered user | - ---- - -## Default Permissions - -| Permission | Description | -|-----------|-------------| -| `view users` | List all users | -| `edit users` | Update user profiles | -| `delete users` | Remove users | -| `manage posts` | Full blog post access | -| `manage settings` | Change site configuration | - ---- - -## Assigning Roles - -```php -// Assign a single role -$user->assignRole('editor'); - -// Assign multiple roles -$user->assignRole('editor', 'user'); - -// Sync roles (removes old ones) -$user->syncRoles(['editor', 'user']); - -// Remove a role -$user->removeRole('editor'); -``` - ---- - -## Checking Roles & Permissions - -```php -// Check role -$user->hasRole('admin'); -$user->hasAnyRole(['admin', 'super-admin']); -$user->hasAllRoles(['admin', 'editor']); - -// Check permission -$user->can('edit posts'); -$user->hasPermissionTo('delete users'); - -// Via Gate facade -Gate::allows('manage posts'); -``` - ---- - -## In Blade Templates - -```blade -@role('admin') - Admin Panel -@endrole - -@can('edit posts') - Edit Post -@endcan - -@hasanyrole('admin|editor') - {{-- Admin or editor content --}} -@endhasanyrole -``` - ---- - -## In Middleware - -```php -// In routes -Route::middleware(['role:admin'])->group(function () { - Route::get('/admin', AdminDashboard::class); -}); - -Route::middleware(['permission:manage posts'])->group(function () { - Route::get('/posts/create', CreatePost::class); -}); -``` - ---- - -## Creating Custom Roles - -Via Seeder: - -```php -use Spatie\Permission\Models\Role; -use Spatie\Permission\Models\Permission; - -// Create role -$role = Role::create(['name' => 'moderator']); - -// Create permission -$permission = Permission::create(['name' => 'moderate comments']); - -// Assign permission to role -$role->givePermissionTo('moderate comments'); -``` - ---- - -## Admin Panel - -Manage roles and permissions from the Filament admin: -- `/admin/roles` - Create, edit, delete roles -- `/admin/users` - Assign roles to users - ---- - -## Next Steps - -**[Blog System →](blog)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/features/rtl-support.md b/docs/features/rtl-support.md index 8592a52..6caeb15 100644 --- a/docs/features/rtl-support.md +++ b/docs/features/rtl-support.md @@ -1,105 +1,7 @@ -# RTL Support +# Right-to-left layouts ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 ---- +The shared public layout sets `dir="rtl"` for Arabic and `ltr` otherwise. The website uses logical spacing where practical, and Filament supplies its own locale-aware interface. -LaraCoreKit automatically enables RTL (right-to-left) layout when the Arabic locale is active, without any additional setup required. +Test your custom views, dropdown alignment, tables and embedded widgets in Arabic. Direction switching does not translate text automatically. The component showcase contains examples rather than a guarantee that every third-party widget is RTL compatible. ---- - -## How It Works - -The layout detects the current locale and sets the HTML `dir` attribute automatically: - -```blade - -``` - -When `ar` locale is set, the entire page flips to RTL - text, navigation, sidebars, and all components. - ---- - -## TailwindCSS v4 RTL Classes - -TailwindCSS v4 supports RTL modifiers natively: - -```html - -
- Content with direction-aware alignment -
- - -
- Direction-aware margin -
- - -
- Items reverse in RTL -
-``` - ---- - -## Adding a New RTL Language - -For example, adding Urdu (`ur`): - -### Step 1: Create translations - -``` -lang/ur.json -lang/ur/auth.php -``` - -### Step 2: Add to RTL locales - -In your layout file, add `'ur'` to the RTL array: - -```blade - -``` - -### Step 3: Add to locale switcher - -In `modules/Core/src/Http/Livewire/LocaleSwitcher.php`: - -```php -protected array $locales = [ - 'en' => 'English', - 'hi' => 'हिन्दी', - 'ar' => 'العربية', - 'ur' => 'اردو', // Add this -]; -``` - ---- - -## Testing RTL - -Switch to Arabic locale: - -``` -http://localhost:8000?locale=ar -``` - -You should see the entire layout mirror to right-to-left. - ---- - -## Filament RTL - -Filament 5 also supports RTL. It auto-detects from the `` attribute. - ---- - -## Next Steps - -**[Admin Panel Overview →](../admin/filament-overview)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/features/settings.md b/docs/features/settings.md index a454d30..71c2285 100644 --- a/docs/features/settings.md +++ b/docs/features/settings.md @@ -1,106 +1,9 @@ -# Settings +# Site settings ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 -**Source Files:** [Settings Module](../../modules/Settings/) | [Setting Model](../../modules/Settings/src/Models/Setting.php) ---- +Settings stores key/value data with JSON values, type metadata and translatable fields. Its Filament page edits site identity, contact details, footer and SEO fields. Loading the page requires `view-settings`; saving requires `edit-settings`. -The Settings module provides a centralized key-value store for site-wide configuration, fully managed from the Filament admin panel. +The model provides `Setting::get($key, $default)` and `Setting::set($key, $value)`. The page caches individual settings and invalidates affected keys when saving rather than clearing the application's entire cache. ---- +The package does not seed the demo's brand/contact information into customer applications. Configure your own defaults. Keep secrets in appropriate environment/secret storage rather than publicly rendered settings. -## Default Settings - -| Key | Default | Description | -|-----|---------|-------------| -| `site_name` | LaraCoreKit | Site display name | -| `site_description` | - | Meta description | -| `default_locale` | `en` | Default language | -| `maintenance_mode` | `false` | Maintenance toggle | -| `logo` | - | Site logo path | -| `social_twitter` | - | Twitter/X URL | -| `social_github` | - | GitHub URL | - ---- - -## Reading Settings - -```php -use Modules\Settings\Models\Setting; - -// Get a value with default -$siteName = Setting::get('site_name', 'LaraCoreKit'); - -// Get all settings as key-value array -$all = Setting::getAll(); -``` - ---- - -## Writing Settings - -```php -// Set a single setting -Setting::set('site_name', 'My Awesome App'); - -// Set multiple at once -Setting::setMany([ - 'site_name' => 'My App', - 'site_description' => 'A great Laravel app', -]); -``` - ---- - -## In Blade Templates - -Settings are auto-shared as a view global: - -```blade -{{ setting('site_name', 'LaraCoreKit') }} - -``` - ---- - -## Admin Panel - -All settings are editable at `/admin/settings` - no code changes needed. - -The settings admin shows a clean form UI generated from the settings schema. - ---- - -## Adding a Custom Setting - -1. Add to the Settings seeder: - -```php -Setting::firstOrCreate(['key' => 'custom_key'], ['value' => 'default_value']); -``` - -2. Run the seeder: - -```bash -php artisan db:seed --class=Modules\\Settings\\Database\\Seeders\\SettingsSeeder -``` - ---- - -## Caching Settings - -Settings are cached automatically. To clear the settings cache: - -```bash -php artisan cache:forget settings -# Or clear everything -php artisan optimize:clear -``` - ---- - -## Next Steps - -**[Multilingual →](multilingual)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/features/users.md b/docs/features/users.md index ea442d1..2dd4125 100644 --- a/docs/features/users.md +++ b/docs/features/users.md @@ -1,96 +1,9 @@ -# Users & Profiles +# Users and account dashboard ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Module Status:** Core -**Last Updated:** April 22, 2026 -**Source Files:** [User Model](../../modules/User/src/Models/User.php) | [User Resource](../../modules/User/src/Filament/Resources/UserResource.php) ---- +The packaged `Modules\User\Models\User` extends Laravel's authenticatable model and includes Spatie Permission roles, notifications and a package-specific factory. Passwords are hashed through a model cast; password and remember token are hidden from serialization. -The User module manages user profiles, avatars, and extended user data beyond the core `users` table. +The public dashboard displays account information. Filament provides user CRUD to authorized administrators. A complete self-service profile editor, avatar pipeline and enforced email-verification flow are not bundled. ---- - -## User Model - -The User model lives in `modules/User/src/Models/User.php` and extends Laravel's base Authenticatable. - -## Profile Fields - -| Field | Type | Description | -|-------|------|-------------| -| `name` | string | Display name | -| `email` | string | Unique email address | -| `avatar` | string (nullable) | Profile picture path | -| `bio` | text (nullable) | Short user biography | -| `locale` | string | Preferred language | - ---- - -## Working with Users - -```php -use Modules\User\Models\User; - -// Get all users -$users = User::all(); - -// Find by email -$user = User::where('email', 'john@laracorekit.com')->first(); - -// Update profile -$user->update(['name' => 'John Doe', 'bio' => 'Laravel developer']); -``` - ---- - -## Roles - -Roles are managed via Spatie Laravel Permission. Users can have multiple roles. - -```php -// Assign a role -$user->assignRole('editor'); - -// Check role -$user->hasRole('admin'); - -// Get all roles -$user->roles; -``` - ---- - -## Avatars - -Profile pictures are stored via Spatie MediaLibrary: - -```php -// Upload avatar -$user->addMediaFromRequest('avatar')->toMediaCollection('avatars'); - -// Get avatar URL -$avatarUrl = $user->getFirstMediaUrl('avatars'); -``` - -In Blade: -```blade -{{ $user->name }} -``` - ---- - -## Admin Management - -Users are managed at `/admin/users` in the Filament admin panel: -- View all registered users -- Assign/revoke roles -- Reset passwords -- View activity - ---- - -## Next Steps - -**[Roles & Permissions →](roles-permissions)** +The package uses Laravel's standard users table. Existing applications with a different auth model must plan integration before installing. Create the first administrator interactively; normal seeding creates roles without known accounts. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/frontend/components.md b/docs/frontend/components.md index df2e71f..c25e88d 100644 --- a/docs/frontend/components.md +++ b/docs/frontend/components.md @@ -1,161 +1,9 @@ -# UI Components +# Frontend components -**Estimated time:** 8 minutes -**Difficulty:** Beginner +The reusable package includes its locale selector and public application views. The repository's UIShowcase contains additional interface examples for developers to explore; its routes and JavaScript dependencies are not bundled into the Composer package. ---- +Use showcase examples as starting points and adapt data, authorization, semantics, keyboard controls and responsive behavior for your application. An interface example is not a complete backend feature. -LaraCoreKit ships with **175+ ready-to-use UI components** built with TailwindCSS v4 and Livewire. Browse them all interactively at `/ui-showcase`. - ---- - -## Component Categories - -### Core UI -| Component | Usage | -|-----------|-------| -| Buttons | Primary, secondary, outline, ghost, icon, loading | -| Badges | Status, counter, label variants | -| Alerts | Success, warning, error, info with dismiss | -| Avatars | Sizes, with status, group | -| Spinners | Loading states for buttons and pages | - -### Forms -| Component | Usage | -|-----------|-------| -| Text Input | Standard, with icon, with error | -| Select | Native, searchable, multi-select | -| Textarea | Resizable with character count | -| Checkbox | Single, group | -| Radio | Button group style | -| Toggle | Switch component | -| File Upload | With drag-and-drop preview | - -### Layout -| Component | Usage | -|-----------|-------| -| Cards | Basic, profile, stats, bordered | -| Modals | Confirmation, form, full-screen | -| Drawers | Side panel sliding menu | -| Tabs | Horizontal, vertical | -| Accordion | Collapsible FAQ sections | - -### Navigation -| Component | Usage | -|-----------|-------| -| Navbar | Sticky, with search, mobile | -| Sidebar | Collapsible, with groups | -| Breadcrumbs | With icons, truncated | -| Pagination | Standard, compact, infinite scroll | - -### Data Display -| Component | Usage | -|-----------|-------| -| Tables | Sortable, filterable, with actions | -| Stats | Number cards, with trend | -| Progress | Bar, circular, step indicator | -| Timeline | Activity feed | -| Charts | Bar, line, doughnut (Alpine.js) | - ---- - -## Using Components - -### Blade Components (x-tags) - -```blade -{{-- Button --}} - - Save Changes - - - - Delete - - -{{-- Alert --}} - - Your changes have been saved successfully! - - -{{-- Card --}} - - - - -{{-- Badge --}} -Published -Draft -``` - -### Form Components - -```blade -
- - - - - - - - Save - Saving... - - -``` - ---- - -## Livewire Components - -Pre-built interactive components: - -```blade -{{-- Blog listing with search & pagination --}} -@livewire('blog.blog-list') - -{{-- Newsletter subscribe form --}} -@livewire('newsletter.subscribe') - -{{-- Locale switcher dropdown --}} -@livewire('locale-switcher') -``` - ---- - -## Dark Mode - -All components support dark mode automatically via TailwindCSS `dark:` variants. No extra configuration needed - just set `dark` class on ``. - ---- - -## Customizing Components - -Components are in `modules/UIShowcase/views/components/` and `resources/views/components/`. - -Override any component by publishing: - -```bash -php artisan vendor:publish --tag=laracorekit-components -``` - ---- - -## Next Steps - -**[Layout System →](layouts)** +Keep Chart.js, Sortable and Prism in the showcase bundle. Ordinary website pages load the smaller base bundle. Livewire supplies Alpine for both. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/frontend/layouts.md b/docs/frontend/layouts.md index fbc7fcf..96a1f40 100644 --- a/docs/frontend/layouts.md +++ b/docs/frontend/layouts.md @@ -1,176 +1,9 @@ -# Layout System +# Shared layouts -**Estimated time:** 6 minutes -**Difficulty:** Beginner +The package's shared layout is `core::layouts.app`, loaded from its Core module. It provides a responsive page shell, stylesheet link, Livewire assets and navigation for enabled modules. ---- +Override individual templates under `resources/views/vendor/core`. The demo host overrides `layouts/app.blade.php` there with the website header, footer, theme controls and metadata. Host-only marketing copy does not ship in the package. -LaraCoreKit uses a modular layout system where each module can define its own layouts while sharing the core design tokens, navigation, and assets. +Auth, Blog and Settings views use their own namespaces and can be overridden under matching vendor-view directories. Review copied overrides when upgrading, since they do not automatically inherit package fixes. ---- - -## Core Layout - -The primary app layout lives in the Core module: - -``` -modules/Core/views/layouts/app.blade.php -``` - -```blade - - - - - - {{ $title ?? config('app.name') }} - @vite(['resources/css/app.css', 'resources/js/app.js']) - @livewireStyles - - - - {{-- Navigation --}} - - - {{-- Locale Switcher --}} - @livewire('locale-switcher') - - {{-- Page Content --}} -
- {{ $slot }} -
- - {{-- Footer --}} - - - @livewireScripts - - -``` - ---- - -## Extending the Layout - -### With Livewire full-page components - -```php -class BlogList extends Component -{ - public function render() - { - return view('blog::livewire.blog-list') - ->layout('core::layouts.app', [ - 'title' => 'Blog - ' . config('app.name'), - ]); - } -} -``` - -### With Blade extends - -```blade -@extends('core::layouts.app', ['title' => 'My Page']) - -@section('content') -

My page content

-@endsection -``` - ---- - -## Module-Specific Layouts - -Modules can define their own layouts: - -``` -modules/Blog/views/layouts/blog.blade.php -``` - -```blade -@extends('core::layouts.app') - -@section('content') -
- - -
- {{ $slot }} -
- - -
-@endsection -``` - ---- - -## Guest Layout (Auth Pages) - -``` -modules/Auth/views/layouts/guest.blade.php -``` - -A centered, minimal layout for login/register pages with no navigation. - ---- - -## Named Slots - -```blade -{{-- In the layout file --}} -
- {{ $header ?? '' }} -
- -
{{ $slot }}
- -
- {{ $footer ?? '' }} -
-``` - -```blade -{{-- When using the layout --}} - - -

Page Title

-
- -

Page content here

-
-``` - ---- - -## Asset Pipeline - -Assets are compiled with **Vite**: - -``` -resources/ -├── css/ -│ └── app.css ← Main CSS (TailwindCSS v4) -└── js/ - └── app.js ← Main JS (Alpine.js, Livewire) -``` - -Development: -```bash -npm run dev # Hot-reload -``` - -Production: -```bash -npm run build # Minified assets -``` - ---- - -## Next Steps - -**[UI Showcase →](ui-showcase)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/frontend/livewire.md b/docs/frontend/livewire.md index 9273103..d7ab7e6 100644 --- a/docs/frontend/livewire.md +++ b/docs/frontend/livewire.md @@ -1,226 +1,9 @@ -# Livewire Basics +# Livewire frontend -**Estimated time:** 10 minutes -**Difficulty:** Beginner +Public package pages use Livewire 4 components and the `core::layouts.app` layout. Auth components implement login, registration, password recovery and the account dashboard. Blog components implement the public list/detail pages. ---- +Components are registered by module providers with stable aliases. The demo Home and Changelog components live under `app/Livewire`, outside the package. Livewire bundles Alpine; do not load a second Alpine instance. -LaraCoreKit is built on **Livewire v4** - Laravel's full-stack component framework that lets you build dynamic, reactive UIs without writing JavaScript. - ---- - -## How Livewire Works - -Livewire components consist of: -1. A **PHP class** (holds state + handles actions) -2. A **Blade view** (renders the UI) - -When users interact, Livewire sends AJAX requests to the server, re-renders only the changed part, and updates the DOM with morphdom diffing. - ---- - -## A Simple Component - -### PHP Class - -```php -when($this->query, fn ($q) => - $q->where('title', 'like', "%{$this->query}%") - ) - ->latest() - ->take(10) - ->get(); - - return view('blog::livewire.blog-search', compact('posts')); - } -} -``` - -### Blade View - -```blade -
- - -
- Searching... -
- - -
-``` - ---- - -## Essential Wire Directives - -| Directive | What it does | -|-----------|-------------| -| `wire:click="method"` | Call a PHP method on click | -| `wire:model="property"` | Two-way bind an input to a property | -| `wire:model.live` | Bind and sync on every keystroke | -| `wire:model.blur` | Bind and sync on field blur | -| `wire:submit="method"` | Handle form submission | -| `wire:loading` | Show element during AJAX request | -| `wire:loading.remove` | Hide element during AJAX request | -| `wire:navigate` | SPA-style page navigation | -| `wire:confirm="message"` | Confirm dialog before action | - ---- - -## Form with Validation - -```php -class ContactForm extends Component -{ - public string $name = ''; - public string $email = ''; - public string $message = ''; - public bool $sent = false; - - protected $rules = [ - 'name' => 'required|min:2|max:100', - 'email' => 'required|email', - 'message' => 'required|min:10|max:2000', - ]; - - public function send(): void - { - $this->validate(); - - // Send email logic... - Mail::to('admin@laracorekit.com')->send(new ContactMail($this->all())); - - $this->reset(['name', 'email', 'message']); - $this->sent = true; - } -} -``` - -```blade -
- @if($sent) -
Message sent! We'll get back to you soon.
- @else -
- - @error('name') {{ $message }} @enderror - - - @error('email') {{ $message }} @enderror - - - @error('message') {{ $message }} @enderror - - -
- @endif -
-``` - ---- - -## Registering a Component - -In the module's ServiceProvider: - -```php -Livewire::component('blog.search', \Modules\Blog\Http\Livewire\BlogSearch::class); -``` - -Using in Blade: - -```blade -@livewire('blog.search') - -{{-- Or with props --}} -@livewire('blog.search', ['category' => 'tutorial']) - -{{-- Or as Blade component tag --}} - -``` - ---- - -## Lifecycle Hooks - -```php -class MyComponent extends Component -{ - public function mount(): void - { - // Runs once when component mounts - $this->loadData(); - } - - public function updated($property): void - { - // Runs after any property updates - } - - public function updatedQuery(): void - { - // Runs specifically when $query updates - $this->resetPage(); - } -} -``` - ---- - -## Pagination - -```php -use Livewire\WithPagination; - -class BlogList extends Component -{ - use WithPagination; - - public function render() - { - return view('blog::list', [ - 'posts' => Post::published()->paginate(12), - ]); - } -} -``` - ---- - -## Next Steps - -**[UI Components →](components)** +Treat public component methods as externally callable endpoints: validate inputs, authorize mutations and rate-limit abuse-sensitive operations. Test them with Livewire's component testing helpers. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/frontend/ui-showcase.md b/docs/frontend/ui-showcase.md index 09865f0..385be2b 100644 --- a/docs/frontend/ui-showcase.md +++ b/docs/frontend/ui-showcase.md @@ -1,92 +1,9 @@ -# UI Showcase +# UI showcase -**Estimated time:** 5 minutes -**Difficulty:** Beginner +Visit `/ui-showcase` in the GitHub host to browse examples organized by category. Categories are defined in `modules/UIShowcase/config/components.php`; views and routes live in that module. ---- +The showcase is host-only. It does not imply that every demonstrated feature, including e-commerce or advanced charts, has an implemented application backend. Copy/adapt the examples you need into your own views. -The UI Showcase is an interactive, searchable gallery of all **175+ components** included in LaraCoreKit. It's the fastest way to explore what's available and copy-paste into your project. +The showcase has mobile navigation and theme switching. Its Chart.js, Sortable and Prism dependencies load through a separate Vite entry rather than on all public pages. ---- - -## Access the Showcase - -``` -http://localhost:8000/ui-showcase -``` - -**Live:** [www.laracorekit.com/ui-showcase](https://www.laracorekit.com/ui-showcase/) - ---- - -## What You'll Find - -### Interactive Previews -Every component renders live in the browser - dark mode, RTL, responsive - exactly as it will look in your app. - -### Copy-Paste Ready Code -Click **"Copy Code"** on any component to copy the Blade/Livewire markup. Paste into your views and it works. - -### Multiple Formats -Components shown in: -- **Blade** (x-component tags) -- **HTML/TailwindCSS** (raw markup) -- **Livewire** (wire:* directives) - ---- - -## Component Categories in Showcase - -``` -Core -├── Typography - Headings, body text, code -├── Buttons - All variants and sizes -├── Badges - Colors, sizes, pill vs square -└── Icons - Heroicons reference - -Forms -├── Inputs - Text, email, password, number -├── Selects - Dropdown, multi-select -├── Textareas - Plain and with character count -├── Checkboxes - Single and group -├── Radios - Button group style -├── Toggles - Switch style -└── File Upload - Drag & drop, image preview - -Layout -├── Cards - Basic, profile, stats -├── Modals - Confirmation, form modal -├── Drawers - Slide-in panels -├── Tabs - Horizontal tabs -└── Accordion - Collapsible FAQ - -Navigation -├── Navbar - Desktop and mobile -├── Sidebar - With groups + badges -├── Breadcrumbs - Icon and text -└── Pagination - Standard and compact - -Data Display -├── Tables - Sortable, with actions -├── Stats Cards - Number, with trend -├── Progress - Bar and ring -└── Timeline - Activity log - -Advanced -├── Auth Flows - Login, register, forgot password -├── Media - Gallery, lightbox, video -└── Charts - Bar, line, pie (Alpine.js + Chart.js) -``` - ---- - -## Adding Your Own Component to Showcase - -1. Create your component in `modules/UIShowcase/views/components/` -2. Register it in the showcase index - ---- - -## Next Steps - -**[API Authentication →](../api/sanctum)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/images/screenshots/admin-dashboard.png b/docs/images/screenshots/admin-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..f5fb484a3b347b083ebbf54389d36c3ffd3ecb9c GIT binary patch literal 52854 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 z z_hoMAEO&KJ6ZZUMQu^G*X$U+;xp;H;^3s6*_DNEe!J8k%_;!gE{O3hE>HYu<>s@!7 zi{V&FC8&-3gDRHg^4!s&sZn=ALW&if4-2od4Gf0 z+fIIyJE(FlPd-ValkP9t*rW?z3F=EPKRTdSj!X7l`H$bUxwBEkuxQt^8Ld1P%&-J^ z0LcyWLKlfTpt?~OYX=49>w`AJz0!RljwbF!c=8DzFTSM2{r!9TV%^5ThXnsGhvehm zSD0bF%e$I4Aw1_m%e`LoU^l^7C@Aly(u%yJ+mt`_{q4C$l)*qTv3hh_YSw*NNH1a9 zq$bZMoE{BfRP7sIi;;sfrj$M$t*Q%HICPhQ{n*LveD?QI^1-Xtan@|PTsM36lbnCQ z&Z$Vnb*GMdFR@H)pYLK`bZi_!K#@+!pW;fp9LL4xu=Yo_(u9F4<&|wffQRm+IE_cc zMI!Ntf1|a?v)da}>jm9~gT?4awyTpo1;lMOtehkB3CWRKhP zUiUovGtShBhJ`SvD`Hp>=DZ@;_2HO)F?LJ?Vz!6SipKrIGx>JXLX-@Zm6V=CQiIBX z$=CPqy}dY8eCI*i(kVrK8&~+cq*H zo~7{l^JfrLCa|f2ffFNFh3-pcQXB?j|30iXZC~dpQlWqy`F3oynbU<(gQWyK#WyvG zh%G6n`3h;CT(8Gw_T7~v^Ul=)&+Au7)_9ds-fum2T*J1ko7KPuvfE+gp&QAz@X`c?9h%@ z0^!A-o#)anXZV$+r5DS=C#9v<;{NkYAFgE@Z%`eIIS<|4>izI2mbbT`0i7ZaLtPV- zeUPbMpU$M6?z&5cRQI*EUJs^K$Hj?*NS~d%tG~bI`cxeR#)8i5x_<&@sHmvkOG~c} z1MT##zCQcOU+Ur1f>uzd=XMc#pDV?y)RYu$shXqA%yQ8C_+zH~lfg#+{`ED#k)dHn zJBrO}HV&U^Iz=eC8mfJKab$`@C9hTr3C-JFUtf8~P;?7}8Z@+SHwGQsgBgSzM3t3X z>!hJ!DCKPGv@~}t{Q54izZN6GgLc{1+HXH3tC90#ubO55$Wl>htt zVD3FTK2GG2}vT&odvAFoeHWVa&v8*>1JCm+f)oG3(2G*FBkAKa>%iH~1teq?`Z#w5^ zg3X$AXHghsV63Tcz0~D;;tjRHV@5^X_-AexYm(08&vOjl>dq&+Y1%efFMX5kKi&8A z4h>baa@`yxbCkZBW9q^3>az{wzWe5 z{)jK65_0HZnHux%Zg>u*Nz){br5RO*`e1aYv6`+(B%Ce7&@_#n6f` z1nhLcrf!eJbIX&^Y^bVI9TSTes;=hgxmUC4PjlJ>Hyxqt!gw>k;fCnia6O~m9Lgwg z?ps{6%8&~G9-HWTCh2)Lccx~k20~uLhlc~69>e9vj<%%H?>7d_4e{A^M1+s%*zL~2 z1U=#H45M-f4beK(EK2PxD;?pH{ITVr(=Y<9qbuqjn7p9P`i8^!`&!C63q!Pl4{JiB_+ffINRHr!Yq6rzpNa$Deo*S_) z9`fedFV8@8W?x?)K-?iR(x~iTY>_m=@z$AHS`lPVc?CzTTyjE){OI zeoBQXC|_Jm&CPWuW!VH-`PS%=TiQ$5bJ*7W@9E?8bkKud7teiov^|*}nv;vIz2Fc{ zAbxm!9HCkTtN}jA3dKf5D1A&Vp`@sgym!yofbQYr$2vcwS+};fY>?+KZJU0pGM z^OaMRxw|_Sm})+ZBY3vOqU}RZ)+;I4=OU_p;Nz>_VB>%K(aWR65RDXZadsXGyS>#H zHCAZ;85tQ!8z#2H4`Y4=w@LqWM2%N{Yvjo3X{_Itor41t5Y1p>dK9W>X~~>{arC>M z&vMg?6yfBs8-!fAIqi-R%cf4|zskxn9&HE|P;;iT*t2>TBI*|^sh=~!jW|!c>+FoF zJc7qzTO1h^^YWuGA|+8aCyMY194q18g*@kDT!j8qrKS39oaaTdQj1CX^XDE|x&im+ ze6bmQx{?_xceq^wyV($)X%8VIemJZsd9SN$!|=ls7+(~(0Dxb|O*pBk_efa`0|o!&mJ~pHZnJ>;cMDUc#+=REP97|;$X?!oGE8l@;aVBr_*iZHV5hRLyD|--7QZQ z@uM=hEx|Ikf_ZLWVLfB%ty+RITkC!;?uTo(&^WgbyRkmdDJ&@o?*HYk4i8LDE|QI9CgtVjRk0e* zlJ){!%Kga;{QUfRWBI^$qO)o?M@|kc)q#Dnb6_B67c1fEMd=S3S;=Ma942hV8;>c$ za{AN7th?4evC?Yp<-XbKH7tZnGMxJ52wsid!6KTo^TmSu8EkjPQC(fVCr$1V*81qF}9yMuh zjv5a#vc8|WzIgEh08V^%2gDOi0_Xkl9LC7&>x;8*>yjQqL_|dV_FK} zmf`THFok99`;gT5@=ir11Feth9#5a4t4^5j2C))_$_ZcBr>1_{nXCg~5Qs_4E8yPP z{()HeZb7@z3{tNe6x@Fv-DwIb=@_!;3eUPY0%!+hkd|{uU$2DK)wS>XY~d*7#zMVR zFBIwV$%qoHmYl-H{}#@Fiv{8GJg1@AhmX+wr+K&=j|cJ(rY2<2;&2HtUrpW>{tf*g zUM>G;QzvlK0N4Bf%E8RgATb7phA+H~0tx8Bb}B6fvJ?_k6%{%!Bfsz$;9qdWo6wrd zlo*udFFuJDnTzjP*u5euGmG8hWw|S zAQSm%*zNBcD~|*D_1yLuK2R-*ejg1OfXT_bVC~-7={*lKVF&d=5G8@{b$v+(pvn82 zn{SUm6QvhPcHo^basROFEHc+cS7&Dj`0@roMIgWN*InPnTY>n&l#|>!Djw84LTy)Kq)nbbemT%zkA- zT1#twyl4iCps_~W|MZTRuXPm2IUtL*bttqBIpH==6L(whFu$;F@M3FpnqB<~I^vBD zn+~^t^#QhHiGCD^aX%e>%JvxJWLsNJX69`#H~iw$$>_wQ*uoW6l` zg5$kDb1`=j*L8Qxd_!H&U2&A%-fUjB3^^Brl)U`Va2AcRp&_$&<9XeFCGu(^<+u4p zgVSMIA(JMR`t|Y109f!NRSI73F9oxXchMZ#QUb4~ zkFe{ho3*v|Sj$o?wj&tby*&m`pkA=QJC}_}V=%J0zO690jKIramuA<$bj3kTtHQ|0 zNKa1>iUdFo6bK;L+t@HMGV;6eShWSo0k^62iS0F73W`Kf0XTu(%z;V*i#S-6X2tzc z5ih2uNEH?OfwKx3uAlujm($}KpuE3*wg9j~OCglgSbJz9h|KvNj$c>h0xgHx%H29o z)RA_M9B6X-J@acx7)!hqV8x)iwYjM+e6_OxY5+g30N`Ifs{wgWcSF_XsmQ{@0`RX| z&HA{NMIETeok$R5kk$1w^H5SzVd3KzsSSg85-j1$(yKd$yF3PWXvxJ;F_shkfCqX5 zl7vF%-z}-B#UnX#N2jOX%eN<>m#`aGO+UKbnW~%RVEd!>hUC~-)iZont@>*7i8C^? zcE9KBl#w;<{QGXHDl?BBZEg%`pSKdY`o5g|RDIB@T%gjU8hNh=RN0Ppt7bqryqXSe zoI;GN?|0j+_VYs*05`S8m!>oN--XeHVZsv^KVBPfmah+%^rOpFi=P4RwIn5wSDDE3 zZfLkJ9}qfOPsGu7F%84zZ)vfry+MJ}>D($Qj+*5(n5lF?tyH%K-9{yw*z;;85r(w+ zvN@=3_&D;rjn(p>L(Mv@?viXn9$LrO`t4CRP!PQo)_O+22j?sSpMO-c`(ecd3UxHV zW^+_sogsXK>^T~^F`WFBW|J)FN(;7Lao)5E()K?{>W9PIf%J3$XvHJvd;;=-c0YhZ z-5#9D+rn5KhLlvhB}~0Nj1MNV6?4L9JnId{@(s`CT?e|Na*X?2;50YqvCTSw8fyU} z_vq*oP_*_$S})YtZh(0(kSuLE*zfK>Q&(5lbx&QL0^1+aQJ2JH-QCufWkWd<5izf& z)vh6#QMx@l8y!XCd}%UfXV3y-tbRXE5C+@hQF7E$h0hn2foIpR6fFq zw^E`q7)8cSVqsE(m+f{o7fvVV;dHS0wdKca42*N|H2~#ZIXMDsY=8cJN}(@0o;A6n zZ;Bf6p^APlZy}C*ftJ%w-BabpQH(UxwA$&=g?V(WStS*fO8t(#XhvZfSy}k>>yMCX z4eOsQu*vr3zDO$#dxriA;>qe74d}-a6%~7L_mvQ?v|KpwWbWKSrMkb6OC3-c(u%KoPLw3KrYS z-H%u4OzFArc?nNNMyB~8BR{u;I&;bFd(JliuqZ4lQY}0O)xQ*W4%SX#kbVB?=*Y3% zfRKq}V4r;|)l+su27;19rR9|s@?0t-!!ug_;=-PZg{$+#*4B1+cXv$|lp|IPFW!}^ zjy1S)YilnM2qQN{UKh-F;^5Hd8j1 zVj<)r;khQxpOo`^G>-lJ>Z$>W zu&|v80u{8Uq&8SEz>Ya&_l2>6y(;Uw;CqTa8yj{c%yW9!}U(Cb;Q06b~ z_=y6GQJP{7{)zL@#nH`a7kvTj!YH_)V0*PIoJqa1-b6 z5@T3e=o)$UBz3L5wPty)YbkActDbt^=tWeoqs0}tKX>_{RpF5C9Lv0v0UqAV-1fRI z7nIgB!kAXxvlB%o24HOsrd>Ga!)B=CijG?(|h(yW3d3S<<5 z#s&tUke)Zz4hN`Libt&gH+NNL=4e}6e9j;A3Z61!$3rhtpwGXHvhf`L1A!s*GscLJ#emFRX~#hRcKZPB zo3UadT9eMzmrJ72R5W%{l@_z7;=lU^Ee1DBml|YThpuavdYo?LpPEvPTl7%yo$W7K z`m&e~RNYJwxuYxMuxK>)A0Zr*~)H$;jsr$R$r!>K>s|%I2`< zAEHE@ekJB-qZg;q_#fWAc{>9NMHcvaS6dDh|x z2MLR?;TnP($7yeFm%L(^7RE5oHWotEpMMm8W$_bNSnd`JswM8}I)0!Q?kr$G`=?8& zz9JiTCu1kBN9ZA~L&IT|t^fIH8DdLHv*#Z6ZD4JCO>_DbJ=k@h3go1Y7y3V|ZIb(w z`MV@Qa2O?xjgK3h7$8|%Q2~_Ka!Z8+nCu)K>ky`Nv9W*7~Jw4kaIjU>-Wo2dA<(|$#%!uo5u-z91weZogd^06>rE{4Eq(e}s zSfBd*a{Avb%>`0lyb^yM!l(H&3u2M6`Qe(U$2-v-?*5@P9EEd%tlA!^jLm7+s^lqT zcduOfYi_|;s4)C{j2kR-6&n+OG*-SX$GsSkz1i{Ek6ku9plbz>KGH3Hr5;w0IiLzWqDbYC#a z+BNDgcRo>%JlmEU7zlhtJ^zQz9Z>~49H#fYyR^Je=a2hQ16}N!EB0gPX%zQBJfCoW zuH5;Lq2?O?d5_D`e>6j}>xB-3s#eE&pYwEfNLF8*;NRQZThrl_uZ!sm57@Ws__3sE zxu&jui9A*&hFb0>!D&!tLV45AYu95V%8!$mfXNAGdK%!O)&rh5i zQ5ortA4<-LX3q%faLGA}p@(~Io|*{rLuFZ~7b|38avU-!LbjvmK2yZ=5SlGl0lmxm zxoAx%J(aOz)sK5Y;cqVJH-ZohW`aw%`-pY1Cl0=RgS=mjXoq2jMW=~4XT5QEN&#R* zY@~QPfPgYb##JSbudN=epqN+=gpjR`1C;h3%W|yF{ef02UzX5GYW~Cc2tJi6_yfLw z{xNg@;NMt<%XP~CR_kVsI+iW?=2Qf`#=qJ7vZgn&)@3H{7q;0JTmiX4N->Ppul9OH zQoqNm*_~>^#q6`6>AUXAfCkN!i=C3z4>IUha1GAutdp6JekwyV)4`>A)fME0 z9^G|Twmf~l-$dArD2DyLiyr#;>BLUWH38z%!_Hsy-ZFJ{@EU@YO-n1nkCX!IH8qN2 zcVt}24Q!D^hF9SNhXx1CX($Sn6dZDa&dIrq)d@W9)o_n1@2>2Gl^6=j1(%&3JWpKb zbk$vKx4?qgz?F+W!tpsPGK;PB?|Ml6re5E*95zGSKWAb3!fuA?c}5K{MwiCuVY6=g zp=+97@3c2?*#@|cRN1{3Mj~0$Xd2noin-3|BG1obg!==jRZn-$4X2{485uWPvO!f5 zRrPuij!>;{d*Qy5u8lA3sh^uWaH##=?f9)$3ERjXnE_I|x^%ng$SNA|b^Z~4zXeF{@vy9b%)u;&*l>+p`DBZ@-k|I1j>xmkGw4OiSO}rW!|K^x5}DB3&!(OLq2kRvrxYu(B?7hQACn)|dN(e2Tc# z7;1Wcc)s*-LVaNW=Fsh;-(n6Cp8TG)0l~_@=)sKt~dHrV@2EayNYX40D<1 ze6m!3lAulITTzgWQGmO8vu@|bFn@m1=3N#*O3#e^}JmhCx4uuwv}haRCx0sI*x zFT=wjMYRp}0u*e^Sdc8nuz4EA@2vAqc5;T1W;5a8m}QMZfG`goS#vO{+L$iv@?qiy^7%8LE*OjT5;LKFv{W` z(F{2M4wkn1Qx;F8!uwHxu6D7_GA|1u>yzP(I4sJ`$6qq#6O{<{zzS7$E{Jl;JMoz)oLE(scD1_TLin%E(AuSopKFtT zz;k#+@^Sm$-Cz_vYtvd@}MAfSNNctpbdq^`{yo zQ`fNJ*f0M|v^mP}Q3Lnnhp?9n^y>3>i+;A#-3zlS9#cIf*rKaU`tVS9Z6%I6Opq35 z%?Fr0)n8Fx*h#>?f8R=bhd1rG_k7rj@~l^om{q>?-3c1q8wASI|N7^rqpGLt6esBZ zX49XsVUS3Y%SECL#%Ixp1~P5Kfp}ZmLgd_wBmrHa#ml3u;jzPD+pZVs>5)BwK2A%o zt4$LaMqOIW*PK@-^AJ*xXhP$7H+lpe`)KB5H9RYR-Vz0Vi%fV%$U~}=Sj^-?T8pX{ zHrLnH4sBO{HRH3no>5RdHbJ7-_wP@FxX-D^XHQ8)PG9ZuJwqJ+yr zIczG%>e>zt)X2T6@nMc1=hx5XXI$82VyR&#*K!`kpKQd>O*(P|Si?3$oZnkd@14;L zo};Q^mljHQy;8@r3Du<4-JHg$02)phAA!(hKHHoLeDREbLByxKeK zmTA_i0>5zT+0Bl!^)+~zeXIv!+v2{$)x8o?>)!7<*(_7gOU4Jz@wEcc8T#%Nh{wtv z&x^IR{%0aE^FV&v)Y6=_x#GvGxEn~3eX4GFR3m8HX(9(>$x2N?hl0Z!rDZ4Mo&{?pcQk+n2**R7X5U8Ev7~g!W(Ruj4V}gBOx7&da_d zCfs**VT`J_6l|6@t4XRfvz8iNj-v+;F3}*)OJYR=% zKp^51F){HyNN)Q7O=V+{`(?rvbYyqYGBkE*CPNey>?_m8*R}w=SsX787N#6o8rCX1 zdQUm4u{GC}mdV4qu~nkJFt>GN@3OSH{^i1@?V|QhA{M2xWycfBS;`Vq`cUUNJ~<~m zGyZ!qgFi|zfAe&8y#&NahUo6@Za`HS3>lKZ^eTHSHCw&a=Q`c*94>T$`uRvPJp9MC z^hAft++>w_MME_glhnttZTsyy^-yp1Q0^J7|Es*W4y*F(*TlE_wLm~bT0lTrK^keL zq)`N<1*AJSxk2gJgn%I3DcvpI-QC^YFzewx?>X-~GuN5lZ_b>VYp!|zAojDLTF;8l zx|tk%@?2F$yVclwsQ5Na0X^pwlw)Y5h0eZHH0X%SQnk2 zL1ja~RU+ZAx=L7ur`l)1G0WdB1aMoIj{poURS}1XIm3_}JwMIL-~62aeGvG6H=_qU z*#7{Q{{M1EsW`A5U1}N{M!e7vKr#*u1-c>uU|k3tT{8!1i!P*-0n4P&9-Jy7LV^_q z)%R-}DMK4b&4JVnNIe69>@m|b`d6W%=Av)Esd*6PbB2ayfGI5YJT9pVB?UtRfFzBO zMnJ8R_m#!S=#R!D)(w!=0L;43wlAhRnBe5{ezmvayhB1m0THkLAr+MfP^Xsqe@&*% zlz&5-smOVG3#Rl6B-A8d@YV1q=P!*5!Ezr1hM)leEp9`6CBT`HeGSJP)_czm`}6%P zD;=G(;vxXhl}Nx*IKbl@FgL-{?SSf7_f?xNQ$=wX+KGR&^V26IU0uNblzb;&mOlqT zi9#mutS`k8L3#)y9{@i+R9tNHQIM|zR~m8yV7+!Loe?2n%zHGLq?mjq_^!(kV1T)3 z<3FM>Ug+_6=Z4KBZ^hB5q-}>_%s?%a(0Qnavp#@M7GiF*>Tf^9x(iIIX4kv#u zbTH?)P&&AQtoz{L_8(!xdnT1v>+N(Fzf2ws)J2`Q$iC<{5C|rRWqJN4Yw-dkNHpk+ z20hrtwO?j@Dq}j3Dl1oa;@Cc=Lbt-m0b{{k8XCBLsIztJ1yn^KCK6@GB=A^oneZ2Y zKFI&95~Z00Dz%V|AUA9 zw-ZS&IYn3^wgwWv_4XG(eIU;1y!9?J5D}U#xRQjy8-8t3F*O?7GgxJTx_)e*;t6(~U=D^H$sX=UfDr;TbY8;ZROsz$-Xf`eZ)5i)} z$7;fELt9(DT^33?6&Et?>RlJ~ZK-tr!s@$f6Jygv@&vmE@1k;_#~u;mFMrGkvztDw zyHDQzs?xrxm(B5ONn%Z?C&5%aDe>4r1Un5!sr?og-7(>`oVk>Vl-l9G!td_hMVzPV z5%g@lTSo^!;ZusGhkm)as8krjB)sZovsMS)A|GE8QVx>opVyW7mPGwl`byoixU_Q6 zIHQUREfs2M+gIp$vm8Bhc^XV6FewR$l;vvn6>2VQQP4j1}73mSZuvkI$7=og+t6x|~u>KI=Z7uWT~#V|LIXDKm9CT%7k~ zP`ILJIa-%KAexu2excvEOPuqt-yx5Lt97^czQs_J5Bqw*MpA9zG`&(OmAI56uS3^z zF;iuk(dn*x0lB-`Q?i_{$!D=V=Y18ykt%QSMCSZeJ@+apCuUvcErCkQ7U{75^TkZ2x#lDyg6fclM!+Tbsvq^a<9W_<;9k`x(H&V)E}3Po zFlNNRaldvUL}Ag_CdVBPxvA!4RET-qNSmB7f}NpK;-P4ht>tRC^hWJ>gsUjTJOjfOza2|< z_GTr+W%%vy8${d05!Fj7P2Icw+gHiQlb%1XqEttJPREI>agwJTBN_V@qWT+S!g=RM z{M+q6HBeUVDSZ^`_S+a?6(O!V4|A!lsVOCUlQ?GYA*<{^!Omenb4P@Y5?j^oOIh!! zd7X`35tscsn;d#kbfod(_lMG)>%&RBH3cbKm;}f1q-0y3!pGJ6c)w&iVwfxDmiN~O zS(h$$$vJzAL<04wV@+zi<{El!d%qJQxjw8teWpUuNX>(I-8Iu|{ONOCso4(yoc8*- zUesiiA0N@VB>t%6(bCqjYpiuCon4j7 zo1IljZ_F6HX#WN&MO zV{XnUdVDgxZ27c@;twb1>;XRJm?(JqoAEhBXA-M7D6~rS%wEuBMai6Q<)pQB22pqN z{6{ZQ|5X9AmWfQH)3(~ktBtEm!E*;6Q9iYo^aAu`*j+M4N4bZ8|a9K?zQ{eL)MP!IMk7Q6(O2 zIFU+!c#<^iPGcIwb!LA~;7?J#68>1#Eg3)7^M{gv-J%RpSj)48!83GJ3sPB=@#1KO z(1epL%Vm=q7Q>$5;;fRe3XUl2w-1~(7#ml632UZs9C$^%h(p~O4RxI9iPKk1WX~TE z?2+4;9rD2`p02fvNEI25FIS7oo>lms_3A95VC2wN42oPks&II^-+ORwL#oPd#F@K& za*3GCc$Q`USpM|-!mo6b%OADE#HkIp_;ByBXZ~V3mJfDyU+y z5O!`xEIni|@}uY?NM%A74E4dxhKB|$u5#P_xJ=~oHJpY=1|(2Ycc~r77(%+6vZJcT*(-0k#u)VHyIHaaWC%_1 z)SISTki^)2nf$h2wEdh%j{X1>CkS`){Cncxv49GT+Oxz)0@G`$xvx&KBTqoTv|K)G zsfK6ZC@Z8mhFW&lnDdyC^+Q>>)k4pf>)2KOIy6?mAIN=@(X2f3%@-(NJ zS+?j!D-P2(gzO#HC)kUBN^{u|93C|EWL(BcNavL;#p{6rgeVd&eUGlhV;9K@ z^1u07Yx6xUQk^8n7zOR=B#f2DSv_d~?9Qk&rs!K{uB!uiPx~XRRe~3pp9G54bg;06 z5dQmNHaS(;9-J!_(_zCes(24STbKQDJjZoqsn+>oF1JQDVlyYHz);1qM-P=7gcx)5#~N6p3dKEAH?i!wK(gu zEo|cR5vN-c%QV&?8EI9H5|v=-)<5Gu8Wyo%+E6{ZsuLo~@`aNiq!$a6(87#u-HSKJ z2&TU_mbD`Nd0$O@7vZs;b_3kEiZOgm^ai!D1joSMz@1s%xs5F(V`!BF%7Ocy?A9zK zdw`-wpWqXLx~96eH`X~^T=xb!eNOXVqU|HicLrSdb3Bw!s| zZ?gPLlIuFlZ%G?$ZgVOI7Z|ASd0x_usjVDv6~9m+2(9lnHfmX%XGuGUD>AS4 ztgyO=87z$W5*`i(ia7G?hJ-CAn|e??)UUQJ!Dp`iM&nsGYm~U&fj;TUkZl zv9yP8B~4*b&AZg{2;NzwjOoO#j=t@d%z^QXW40p#=^5~h7K~LQ>@QEAm%DmWQq8*M z3AHxWMDtKbDBwCDOuMewmFGnILbh%5Z#FA{rl`NisO zi#EpSA)ZC|42i>Ega>F(G7(PVACFZdWNR)(n&ZYI zIYD9Y0zjWKUb{|7Qzu|RP`AR?C{e(i2vb4#CSIcBpONs&u5mBG`mQy`hKHS}8 z=B`|h>Q-pI3FmQl||~j7uApgB41Gq~}{JinCn# zsdtqrK38~3#%N#pzVbTVi!KuB>v|?lk7$;B)9 zim?af}H@r@)k%mffeb%(M-A z-D3dzkhz@+)|0;llLIr+(2$U?I%+FDwF)YPWpvT>t zG6HT}x=_V;)|ruc?n$Z;7Dl%*E{CsCSY1f9^{B&4br61e(&YbK!$9aqRpB{2chFTjfNHzQD;VD_;X2y)Z?g^>}HV z^jp;z#~5C@ot1jdx|j~Ug0)vCCRDP1|86J}m68I4T$%Jw!_{Eg`O*i>7z_2zqCL6C zuGs8bM_(A*d^EZcU`7!PoS#&{pLn;qurwBKC9t=3rrPzVDV4Bp#OJG1*B_50!eOD6 zfm4#o5#UHKG~P9AdM9?)GW(~;$u#ds2?yJrZk3)3bI|>+aZhw~!#QOe)rp@)kz`oi zg4vUW^ljW5dQuxhlIz7ya{j?eJC+*{XZwo^N{LxqO;Pit-#q^Hf`CDPd+Mp=%45i_ z%EjUa!@(K)PEKXtn69f%=fygy1IORIYVG?IIjQvdxYE$H_M1|4fXZIZonLh_fvN0& z^{LzzgQ$4?hV^*QU`iazxm4#@dr2??kz{)MmQKdB=sTW#Y@xv85*Bw#HUoazsJW`! z!gHZ+tDqSi18p}NEf!R(O%oO=BJlrnfDExQZLEY=79fjRu{q6AeJt)bHn-$;(hCev3A0VY*K^Cm5!y67_xnC*y$HFr4-wJEN?o~nvL)~!oS~#pjJDpNu57(I{qBm zLb-OgtZx59%IX$Y>;`@D@5vNgsF<=LCRNDNl{6L(T6$DJhrKVK(8io6@u_{C$3(Yd z&Sxuw<)s&lnp1(aLWz9hCuVw!QDcXFZ%ORt^A_iw&wQQH7<#o^@J#b|DySI|ZqPYp zsDMmLh5(rf$4YG<<6}0n>U20%2D_P?Xphyw^tWS z7Mxo1Y%g~4TDwd|UHKArct6qKJ1|}&BIEw1{9zmq9qwHo)>ki&7CmueGj_8)9tE~G z#jJdWn#&9=XsCs-YypvTq3ikG(Q7tgv|h_?=f%wLx3s>qH08ZEIl||4NL}Hw2&6o! z@^p2mBrtAcq7U`-iniQF!7Fcg=AX3X>t(yWJ1$H=aL<2Zi>BbmiFK^dOS`43`|LO; zXecxzZ0E%;74oSni+WFjpJ-e3PD&4WUNfV{SRkDiM;{nVio1UQ?#9L_2Nhc>3WVK6 zcBgaVOEz(mCY>sirR0ldoas-psEZj?3)xdmh}v<$7f;mzz*Ark?145NMkx^A3z=cDu8f@pRQLC2N2#4+qk z0cG(_`YYqAjzo4ce3`!K8iFQ{3kauxx1>`kds|p^4q+>Y_DEsb^_WDACSNnzd31q; zZ`7n7cTb1yUR-GiuxNIE6VR-C{y{x^{`PN7SJQntC+V8Y-`E0Y#}Lv1%l`gW z_!hOK=D?CEo5Gb~1j)}IPj*NA(zf<_!&xuu7iYauNf6{i&jrICGJ~32K&(!bI%t3e z?;;{ZY}a3l(K4vBThFbP8m*2*G~eNNOx;c|x+^m0(B0uH7UJOLXnCZWwZ5>MvRp$T z`y^gmbU;TfPve>~nDxvH*(>MsgDmse{u0lwLUs7DmiRO}QvKNaA~|6qt@8t!(ZPEH zC^Cg9K#3Hw0_RqNbB0c9=k39l^7zgZ}-dB@8Sa2ILCod^~&evtPJO+M6*+ zd2k-fV0|ws>z;+8@ui~>*(vPB>TWz-+W_13NVvz~n44A|pSoCdAKjmma4g9Y<#XQ3 z{z9FwR#Ryu$LZf{w@}s2Xl6}G<=AB~e(m922VCdTTWE~*>?yI??~-FMWUG+c)&{BP z7~PxWqtmP%o63>reJX#x9RT;~jpY%mhB^$D=o@;z3+>-9dq6m}TA88CMoxrEg>7za zQC_K(jgE28u5D(d>)IvDiobKHA;>2^E-(XKdxeMGp?#H7Vi^;il=p*e&U$NW;nQG6 z0&;{}0OA^D+7j_091Pm+ZGB~BWlD;Q-iE<90*m;M>Df*oTk!cQl&`!kl|3beMw9cc zX|N(CEulD%%aO{oJ@#d`XwO7qndQyEZx0OcT*lH_5!F+h8$bsEbI}2+VVJ@4@j?og zG*mlboy5{lZoeG*I~MT&OLPhbd}#XzVR||k<75>Tfm_WYSoR#GgJvS2nFlex@zZdy z3?=@fd$(Y1N%EP1dc7&>^#*iv!r&w!g2IGM11()$Ke5o!(E*ow@5rU%HcafrIwOAX z+TmFgpmI;BC@3i4+sMR23pRmcp4R`9Ce7tX>&yBkL3ur<`S;@D`v(U}G$22LY-l~zjL>e1`JVEpqS*pj(t*O=443UoR|&z}7SE9A(x z2$qZby#i(R^qzq(4CTvK)JG+ywYfPmAanZx?fYsi0?dN>$)Uqxc3EJ}QR#6s*sGYE zJ%9dXkKWdeUI$|5y5LC4TjiHC4?BS2o8>R*54YkT-E*yNY7z$84N5vr#Yw>K?=gcO z?9YWZWq{OQJ#(!-{!2iOz=HlSS(Sg#{U?IBN;|HW%|-tE8c0Jn#ovXpG5-(6SNJR-&2N*yynE!cZv4XMleQ(B19B1b}1%Ze^8p z3W5!!FepL%4uuP*Niz!zpg!LF`JA1dotZgUM-LX#4wB+2g-fOKS@MznXyCzM1fHN| zHNzRs7SUXgNF>lWRgzFMGcsgFfu1{?sqS?%K2v#?9~($s1M7V#xYDdX3sdwcYxa3Q z42%1^#Ni6e1YOo4rP$u5Cg9y267a7dd^EqAG{*H=+djaD+7IkctS=Z1pzS~47V;+_ z@IQdA9e5TzZ2hO~clsw<*LXo-lo0r@wn?B%{rpo*+xYcUR2V4Z_jS_(2U&;L7# zd0#!?`d9P5qqP-GP*HH;P|B1+#o;eoOsu(%%!mfA_?TTfxxMd z7qsV>Aot$dnpZl)&xQVPB!VR+C|%zMP0>;IJ}M`Fe8a^R8tM&9B3m*iJDO%MVK-rlz! zjY~=4pxXC9!!57|@-?+1rLWNsVH5#_aTMz{py}{gS}Toyh3W?kRGfda{8<2^{!akV z*wLNqgU0he*0p~i75o1!{i`f0a3lh65zkKy)IzW{HsFttf+`8rAcF>>N>`~L!N{t_ z1D;t@GKB!FHo-Iyh`R`6l0!qZpmyB2FQJG1Y)dLlisNUfM^}t)69Y4_9-m#`$Na%R zaOZ#wwpf@A6!>Q*0yegp*B%5mLPCx9PVr*exh2B@xL2ZU0{xaC=qQ1DWDzXxLk?cN zib(#)P`S*gz`>W%SKvkBfEP*mBUU}`qvHN18SJyy?=RXA`vimvnZU0qjwZaq%a8@A z55K&H>JF%>P{Y6gZNV2<;IQF6LPtNk4f~>zpC1ZUe`x2Uo1L_@#RUZbhM^?=N4CmO zikkNA?={mR_pwt9KKpUD7uN(?!KffM)($$7E@t_&WpxzKzh7tzA4Gcl~a_!c3Lpyf0 z>%&FtG70v-3^cl&7HEFx7R9$>x(o@(V}5P;I|+t$1!erpYcnA==_O%$tLs}bgc-8` zg1$wdS{fRBvu8er-PqQEPJ;z&$prT{+E7G4<0Z1zNYOHnN{C? zk`Cvx$*oaT8^iUIJEpP4P1mQ7V%a1%rf>k%3TQEe;O$b-wDjnt%3rr)BehxvwNux8 z{DR91P}O|{h6eL2f}|p&^>p844XYy378!IAxQqSRB8fS+3?`e~ z=yXV1R#K_Yfzl2EewH+Y?Umd1v#vqQIBGoedW5|BqxJ0n3-o#!|@ z^c=aJ!9m4Nm2-AVH?+KBf$GB`iAzWVcd&2g+I~4yHWifF2DW#Iw}zKlTw-ztr{G=)*01ssBj!SRH+^{z#V3DUo&BiG({NWu7H4WN?swmhIls)xuIV(AUFMZ# z|IO@WuBOG>^oyq;V4|e@Y|p$YjLsRC;QWy4%-@_&{YT-PZNRYGYSl2Dw+MvkKDXD zTfj~Y%f##nnbR;I&h}CE)ZL|>VM{(fwdzoFPQX=Sa67l!!g@iLXd{B*%-x~(SxR#t z#d<9Mio82ZIg+6{p#)Bf?Tac|P4AEnVLc%jw|ANl9+R?GLTCdE`>I z59@>250*L;v*!AyO|oGhv{{>_>ZznrFb2H-#Hh-hla-KE&aWbVa)WLO<^zP@{Q6DV zC|71J$%?7>9{DR4*aX`rBk9d83b2N$MUP`&m=8}^(hvTAo6Uz(go%U2XV<0eoTwwVe;NZfjRjng|E_et!he3#F`s5YxB@*2CLb9)gw%Ldv516_X|1&eKt`ZdW!I-B$ z{gucT;WM6{Z{&o*KH1#46Dt=S8eD~AL{-+2w4P&Koy8WlZdB2Sh96_66=jbfAkTXq zV;&16I!v?pNl@!_|5DxEKRsL{u)I3Kj9wWdf6o#kUGhcOd`_=YuhzdQn%Wu#J^P1d z2r(a??#>Du?MoRI4%_Fu`G>|VT_#dZvHq7SejAi1T8S8hzE!RjZ+yX$_s~TA0c0kH z?=xTBrJT&b9j94wQxw%+Bhq~Y{h?XT(= z!t#@xMPCLZ-pOjz`r|hX=j0Ke|7>;)V!n1Sz}%giNI+kTV6to+{bs_ZC9olt-HOm# z4suRCj+UwNek-Qw{n+N);W|TNb^mewiB`YY9+A%9v4B_()f;t zLAqR$+ezv(9OY5k$Aj~4;qOvwYk7INxqM4Y!;>5?*7x6_tUUQb6m53q_h9n{D2bb~ zTC8Bpd!?mq>V*>z8M{?hDYn(c!dEjs4adi=EB^Y|qrVv0(>kl+3>!E$*H^4o-^~ks zqpUG5cJ&;Iu+^KESd-VN#+_LU5~Iot1^c$^3M>>2-~okbstYEMg0EM&U+Rj4guhN0 zYoZFkcPr7V$Pn69EV(P3NxMY+8T)7|xr=p6Hq73!Z@n&ry_?9X$_cIciMo}97kyoy zU$=m0R(z#Jn!os0^gRP7&%0%TG$qF4U72DZE{4i1OVlG+R}9C8#@kh&b(KGNtH}+Y zJ6J)goBHy^k_!g3)rGSb@Zko0vMNb;`U~w8ldJSBw&DrO;UanJSkb2CbP~xk zotMDq-lrQoK?s+4HvRZ~HgwwLd{m9#O=67}-@aRC0il`hg(tSgHY86?||nJxKLh9S+JyY=UE3?3Lmi+lFKx5Zbr?8{}Z zCbGnt$~?bX+Q?gxb=h)q=MBRn*6Q?xmz(Yr-`S$i!z0pEBseYfj^7$z&mIzDQ1Zwk z-cLlS(xOTTSa4vxF8Z9ejZaXz+Auqkm^^9!>4=P{+IovnxjmJL3u$k!sW*s_Nl6`1 z*_UB~`c~kg$gh9zI=Oof6K(WQV|jk8+gSEikmp9TBj!bWL`Y3ei{0h7jT*0{xL-uh z_L%}a=iXLmKjbnwa*wn$ymHwhU@+yfAx99 zyN;tt{H+wK@bD%1PQ}uUth{EQ?j8MlP27}X*2y;|$5~8M>1F1g&AH`GWOD6T(P5T( z20_ZpxmR*zPpnm)1X6$0>3@=~?ff#g#j~fCo3{VHYKIQja8mbC-th|5pvzs8nnYy$M$G&L#WJc1V zzR%+9(lo{T;s@%7gzEA~xx-#_cRU3J3S-aH3zUC@;3I?9{nz~jH_DDYM(G;k5H`|F z+A%S=sh-XWGXC(`l8?M>BI5{B&12ogJ9#Nd1QpqM=fwkEBb`Z~oOcaUD}?XfZLAxc ztWQAuj1pj~c)Gaewet0ilRmf7JV|3Rwq^2QaW2Nj!mF+qlo87;PQ>Ty2CFk* z>`sqtn_XsOTi7!v7`UwX{mV-4Afis3)nWtWg4bIU$Gs_M`=`j~ReaI|T+8%@14JlQ zN2lL<5Ha`)q3VkK>@LCQEbsdEriu&xaoaoC{Lc(=!Z!=7?j@9Isatg)qdX;|%yc@N z>P65)!B~|@h~xNpvQ{8C*sN|O;p_ag!n3u7ud+X_$#}&N^c+?{*%lo>_6YBu65ZMw zmr8zOxB5`&R3T-!%~CgOx>ris?gY>sUBMMJryVX9*`Jm(KYUX+9D55& zNc(}vp1QM|BK@4cGky9hQA=i1k_Z$A$*85p8T06NN0%ka{zz_N+;P2oQFhkD&!^Ls z%3D(FlWd(F>&C}N!ZoiyIP=Qtq#!BV{dSm4Jy8cvQ4~i6OKD=GF z*_4##wV)J1*i4j5mTvE9hz!s=DebkgsCq{MKgMm&jhLNkwmdGIOG4~aKZONla@9CoIV{($tMHlEbBUwd{5k?WW3*K?yV;85{hETb{#~+`-L1?=Ch;~Fmc|n0q;~L2dfhMc{b(9SLixP9Uj+J)>tt4I7Z_?r zHO5B?#>?v^-@13+D2NMOn38NLKO;OXP-FS?tL4t}roeqq*4oe4C zjcS2opzX#&IO1-(%|Fplw)zPFLB!!!#5(wa+ zLP8tr<8XK{C{;X$1Cjv59g|`277yh3&TfVuGf7dbWe?GTB-MNkVYrN>Dw6VcyzA*k9 zIi*)~ifF`oq^`8>wBh$T)tb#F%Y~`s(yN>$JZRL1F&DvLjf^V=vU3;>zHx}RS1|;= zDn#cyMP4Df-F2#qg@DPT$`jDTVPC=7dUtfp$m!JTuH~=Hl1xggj`xRz`%@S8Lu0!s z$E(};(`f>qBIYEQip6(IZ9$u;9x1}yR`Y(*NJ;9CC7pPWNl{uflMMAO?&#YxVc*K*lM}Wq*z+Xx3ids#?|UG zeU5}V(6uFz04Dpc$A_>MDxMbSV!JdJlvY3nXI=;X8n1S0<>S)aJ@fG*V?LV?YewG~ zV{mLEjFgruH0#+?;m~SY3*T5-WUez^!R6HwvPwxmser31hP@E%8!KZ@an_NdIq;sY z+#N|n#3vHRmQYq}?)Z%iGV8p&p#MN$ZfX|x4dc_ssZ7JcB47J;`=pff`Cg!)^Xs+n z2lxc?6mC7G_6i@8rNw$=`|C8-5w^SO5mQ!rBkxJc5;NVXov0lA_n?3XmH`pqpN$bk zI^#^nMm_y#z2V&xh7jX89OURnbH4cTjmVSdI(o%n8CEd@Cs~`cJcFmaAY(^N>SAv5 zI-a{Kqg=e3@J9eXOs(m&%-Os7aNb^ulOQj_?OPgCqM5N0=knEH+K^eY=N9^tPt+npXO!&F4V1{twyWgMV#%ES8sD&90~ft@>gj0t2V54LfeKNW88RKxcImvuM% z2D+j&BfxrUj0|SR^Gfqa-qYI>Pf4{N1x3~{cCL?G<8on1KkV)27`|M(T8y+Sw!}Sr zjv?4GZv z;M-3~GVUa?^xa<>bqC>cRgbq!!s<{>rArV8h7&XjxQsD^HB9gJO4u5{^}1U3JoAq})*i?!O|v%j-#nigKI^$_8W8r&e^S@Kg}{AMMfYjB5hD-y)jyvXOZB#ZGoLE7$iWk$futz z%`$Dwhj5l)tc|Oh#QsR@98j-LyAE$9aB65;5vTC}5Lq*-a*BnYQ)A&g74XW5iv=+` zycxu-|Ob<&$wl;jnc}pCuhf5QP%i>^5T{IvMd1Ga$L=Ei&IsLC7M7v4a-whl-11r-M zPQoB!3fKdMCD0z1rR)yDoMDhZM}_J2eifq1cXxN!5ZobZf2V4u zrsmdtZ+~h|b?;ubmppqdf@Gyd;9;;}0002In5dvU005Z@0KDD(@CN)#0p@5f0PqnY zCdjAgoO-YfrHQiB1NAomH(pou2MP|_G{f{8btvgd+9gG*>{+?Gy%OaIbGiLuN0p@< z$_4cv`M zWB_DtZmu9V;eQL81qx%U>9Mh~xwyEz%h=VJeYt@Oc_-$LlC~`)|7^_+^=l;0(U9%zoILUOK_s1R>7;trU zZEkLU$E%xHP*9MUhlz#d`A&-Mqs=Q-ifGmoVEek?IK)o!*%Y=%G+Uj!V z|G2bVC`a_>ublJMk(RRZtZ{}%eyJwxmHNm4MJrNbowEghMaBMu8&|FaCew0$ zv$y}r++_lV{MMd@3)^Bc7aHO^keHZwd{|mSVxJ4!_8vR6%}L0v&d657@;Wc=y^HmK zQruLMm5oeIEiEq}-Lix36cPOVadUI?6BgENBa(=;^q-^EcMvKJViy-j1x))-jmN)Z zbEK_MG}b)$7)qyWi=w5BPpim7CCJa4R6n^UAVgljn~W8+jI(GaXEM*`w5OCKpO}~^ zQ7((-bZ~S$TyAL?j)s7Mz{A6v)R&Z!GIhD7!%gROspgD(kpy`&KYf&_uftnz?&Rd; zA ztCiearzcY9F$W(Zsw}0bWd2Tqg!}J3umZ;eNRogGYx+gL2+1Wel~OHr2}Q&mZU{%Xx2kZCYpxk_X^s+WOZyieNc?@Jm9(mvrjV-GefUz?eLq`kkw^UyZB zgh_8MtW<36=4Qg}86Fy*Z@TXm)yAy>FsGS0VWe<--1a9~MNW z7)+`25*Wh?PJ_96pgfdGoyV=YQbR?G|0f&N12)xsjdny>n0~Mynx~_p zCbfr{H&#(=;Wttzcu?Pk%|eu*iJtm6z`)3rC0+(Y*xn{V5~q@@4tlSl&ES6h_m5Z% zX%*2>F1ASTE`Y}S)zLk3NAG&R#;^hE|Nho(wGm02G2HAOj@np-RwG7CQFeKG>XWr< zyE@U3=Ueu(y)RqN=*~9?H+qwu2=6j$i9J2rL(7FOoNi5-5?t>Wcpd|2&Y##zWLT=F zDL$+wG_Ffd5Eq2?#gxS|cCUD}sFG_zmc=WNGM2CSFR!s<=8^r4TP`K$&RSdY6TiKq zj`{E<8J#KoYd0i&k$a=8CS%y!!E;3Q&uHi$Nu@qXQszt6_zSq1T+7SF@@BMkLk1e7 zbLi|{HZ#!Q2!ZCx4W@!{ziKac{_)GhP;Itjr;GBrSIK|YB7iq8ohKsy>2g<>$ewbs zRDgUq6B8;bWcOsot%7M00h`C{z7dI*_H7H6fiKiMvX9<~YbQN0Zg2Cl`fNl_R@*H+ z0`fU9(8I<)Ml)+U21|e(OnX9$thUfhRcTlUzd3hl+sW6%j&VULT3q&*X5C}9pZ?8m z|B{%GvSmh^w`lT(USyX`j9>1PtBxx|UcQu=RGg^`0g9G0mS>!`5TP9Nt?7c`(^WlmSeUu(Xi*Ocl>_DjwH6QX3L&PV#2h9^0YsNqDx^smzN`yx@ z#TrXd72k~GZB2fEv)JZmAw_jSkz*%WfjJ3!uT`uzwHuP{HC!X1B*7T|CaLU8E;$># zZh0?~PFYVl#nicvi{n9Y&c#&p&s-I2m*-G(C7=r#7`4X%-UxN(bMud^szCB4Qh#Z& z=iFv(iU8GUcURFi+Q{M_lSX)RvR5>Nn6vp&K2ih7UvsmAt6}%kN307&29k6WyP=kW zao7vVb+4NXf{~pEG`h;&@Nl=OTWG@j7p ze@LUjJRsHVa&pXZzdnSxBCO>aYd&4CWM1|yqC%^Q$QbJ_eoJ9N(<$m%drV4J&g2h| z&M}!8xqXIcOozQ$yavRYP|#{?C|TR~{}EoTD#cItcNgEvPZ;uc~W~m^*W$id?`zh;@M_l=*3T3nv~i88PD2m^y+7HRM|m6{E<)a&s=<3b_(g~z z^F%0WsP}qFjc6cU-o|2h!3<;y*D1NYg<+l7D5s1X6`Tcm7{XJDE2J|i8EpZ@Bem?4 z1bs+9GX$&#IBZ1OsbqdR87VD-j8^`XM;Akp*T@%K%Rs|Di29WhpIgw*QbKoEOP;Tj zAj}^rnwB5bS*%oIHhaL|jQ1=HZ<$EWgpBbwO8%cofEtdtlY^xDj>8-CB2{BgY}iFp z?K>tdq{IYlO|oq+3o*ZhSnB#GWXEJYV+7T)i}o8V(&NtA_teD2)#WD_sk5Vrnksn} zQZ#_539;gEr5q;cT#BZaa}`V!I;BDB2rg29;+(kP^UJm~)0L)6SA$$}?6eR z%_QEoNl`~NCs1;cRa9TWn8tl$Bq&O4OE5FUO`eUe=8E(Do#&33L}Z9s6Qv~S&Zt!s z0PS~z#>^j8;4%28C&2UzfroW0kw|!BbF;XPH6d9p_A`HfgUlCa&%1nn1qF$rIri|8 zLHl8Hxz0!L$xc|T+)CVvRHxr&z_fp>cvu@vVq+sFW8ap;FE3d z2zPPb7?xaX5}Qg`Qzwd^rlV9;e#{1ok4BVk#_v9JNS*3DD42MMPcz275`DHHG-DO0R9_&k#uSSw zrjMIM!y3Ek?1b4CCSG#ChgWphdU>?0VK)KemNf|W1s|SS0w_W)cJzf|XKh)d47vVY zgVqS`-_Y6|Su+q=tQZc#Ry1KYFBQ;cq+x)=27Q#XU-V=aia8bg9^5$flWa_TE9D$> z<(D9i_TOVpm>5i(Pnf$=38v@NrMm_M5|M(np}?6Byh00gDkbb|pG;Y2#c%4os#zu| z9)G4ciRX2oxg2IFyKLnqW9?b$fg|*~Hrv3Ru63^ZqcE|BPOiMZxK*4y_qWezR3BFj z>+jPvhd6PgjOD1zj3=fOTUlHt;hj`nk>NQ8m%hG)2|#gfP7asNSLBci^+p-LE=P~(WmU^!m9EJQxC?T$`&S_RNsyCQLrLDIhf3`60HlX!b~yhw|}{v zEy^+WNi;v2nNhNvn(ECG?rI6VvsJ4unYCUmj{2)M-`22x1BvJ}3Z?0qC<&l6ni0#% z78}7$PCr9=8W|V8h08E0O`^dtct^T|ODG>$r5F8j8}{`H12-CN ziDDmv@I8e$LVJ5zfD4&#fy>U1oXH5P8sB1bs<)SM7mT%nPPy;~xRod9_x8S$aeIx| z9~j5DY^9H7tc!`8WvDqF{=9cxtS^xo{=Ft4ax@i1`JU93UC=2YKRKT3&Op1v<;0@# z`knAp?OElh|GP{*Tp9zTkET4VgBHmIn)KrR2rhKe=d^e&_Gb5^W{TQL?@?_~opmCm zU-IhZ38N9pRU))-pe3OPevJ4yWTqF1gwlzYXkv&Czl6>(p=qfw>hAG>Sb$vqZ@zqc}7qiHGKOgGz9&=rDBTQB`)}%7) zJ+9~9HG14gs*Ul6U7m#>o2@9pr_cpa;mwK_nCp)sEetV=Kx|V9Qj_E>>{V%ERHGu3 zJqaBfNAABr(P$I0=&@36*_g zRWkI8N^&0&^m}XHzP7M(nu$p;H7<65_4MbJv0OE%H`Zc7@Nt_UKR=&Jr93yw-vG`n zE7(B*@kQN{A|#f;`IDJ`R&qxyOGV>o29W}!fPR6;=)VIB@`N=z`%Tu;M0H`x5>yrC z&4{e)8?Xji4+LT9VIMCz|F_c_F?;l)H5{@@=x3iT% z>dY+(ruBIbZ{@-RV4`JC*SWfD`2lRKG;d;paxZr_Wc+}Mi%HkDu1e!x&+yqd9obzXdC!~~u zVMR%mJq2P;P2PQeh!i8wA2zrJ8rs8vl82VNd`Tf4oY<^4_(S53A$?{u?TR!j@PP~D z307aUVw5`qpNxYYv8|2{6sJkQ5)$Kx z6^{>l4-Za-qXRB4FWcO%$_ux_*k5NSFNi++^ckKB1;aBm87AXzETC{KT-b@4DPFvW zklDk%F`Z~A(W&)aB6EX7k#HOXCB___7sxhLW#bE)r{)1<-wi^_)Kz*~z!s_Zw z)&zOJyGSpJ;Ke&XD9X%S8%bdSE|1U6kpb|drl%E?ZQU<_8xIZ+GPNj^kQLZmS^w~+ zO3J-;y_!nC@LEcCY$N#o50T@gwdjmWPfw4J_rH7FEker9t}Y`ZqoUH#2LZLex^}R4 z$+lO&P}%ojB`VPQ3Rr%o!?M}j+4=SB*Z%G<7|#OhfZxupT9({mp|&VE7zUoT|8C%a zV6{Aq(!#>X-)9%D^XBcwJ@C-)a9(H!oa$lQ8W>cyE|H5(L=`=mHMC^%&Yuc+|Ij22R93w0O3s00Tez+3-;ePk0^02XXD;UE<~1xba=VtF{(JwT5>teak55}0k4pj-#_!yLo{TI2 zK>oqe(GhC^w7WZQA+4ko*Tx_;fx`YDt24@~p@&Yfxbc#N0QhL)?ynng^%8PwJ^dB0l&{)2}*`TwZ~ z0DwXKM<;lfa{l*uK<3~7uvLI}_kVi)|Lb9et+N;y@C6I|0z82==bbGlFE6jGtPHj< z{^tKM?BEb1oMPbS=U3GN0Kt-R{y6Xc{ly!Vb@Tq;{r?J8|CdbliPC@AVgGh)(PnwWYXM?xDj5hnD^}uu%9Z< z9-P?P`|@^4+J^&5Nb`=4G^v(}T7jI7qW4MfZ%w17hy9RMxChT1O*?@0YQ$r;rU4Je zk;WB%KM%={K(b)Yw?cB)_x#C9s|D|tm|$$peqY<;E@?l~OwT?{eT-G_$QcT{)E|+4 zF0LuEsv&$?GE-sQ$`#K|OB3#e6K>#n7X-kL>SG`A2j~W+CI^A@wf=Y-WBm3hdgh5S zSBI_ZiVjGUDg{FKS<4G(u_-3{NzvwJ>(y06e6CRGyp0;da7(t$hrq_4SBEjRn^2{xr{Coay$ZDP8LBQ$JSDbZ&HPsV_!Cd|V*8pUl?y zg7 zB05%^ip?G&Hh-EdE3A4?#S?KPSqmhIaKtu^YNbZH<5kKbMw5-}B}`5ueX2MqGoP~x zSbf~zuH#hV!cM@<8DY!4-PPXO8d7amDcah`u511$^|?LHwa8rThr6px#Idw90q`d~ z;m#ePT@q-Cb2m9x`>z@Kk@d2J>WZ#y&8E*3^``TnaV^Y53Dbr0ko8X=8IS1-&m(W(ddOEB?}P z{k^&VdpLVh6}7H7`b3nRQ1}f5=*ljM4RvR?-r z+cje&BKPC9bH02tM~1Qa*y!ln$KMQtzpPiw43x>ixh080;-Jyy+BSU06?kl}H9wR} zQM2-qe06K?&f?&s%UlG-SS!)-P$D9tn8zdaoY0MqnANd`r|iut*C{$Onq-b`SPyxR zAnh7Wgj#L48OHByu&+L>GXKX4gpM~e`pCzqsqX<6xP&fTGVP3v- zKnHrVUwPcGIlFo|Gv?N@w=tbFYp{dzUdYZbQy_g8*imclmbn{(w2HtoCFZsDG_&N*{(t7=B_^TRo z8`B);HlG;Xc{OMmFPkb_WCm4oTJEoQ(rYl^GMC{F4h11{wm%KWq561^u3nJ<@C))0 zR>P&Q&d*jF;+rO5eid$1x{RV<*vw$O@Z@f0*5t^PVl@r{3(M#-_-%hS33V0fdn+PZ z`qW=5;*}?1RDzqQv{as%5u#KFO!{Hq#j)jC`yw_eEis%XQ=3t7inZCv zJWgV>EG%Y5>y+;wD93K`*hnt@~bx|&4 z`hViItVVg#rBG!8mA;;V)AZNAfD84_(-@U6RhV3*QhOv!&b4zt9nS_>eWc6I^~3LLxn)HG+~R|-%=$)+Wg1PoJ%jN3@zkl~10P0S z@Jv7^!n6@=cxb3(vXzOs`2>W#6mVmFc6RfGn}}()SW3f=gTOD6nX|>zeh~{{x7Q(! ze*Ns;di%ltZor}h!TKrhL?obzM+U!GCeULH?MoHpsp1zwfgoLe1`QJsOy& z6=d5$A+h-B{IHv|L4k@v&$Dx;VD;PAJM4Zlo{j0j_FYZ;G zj=wG7TC_9JTTM0W?~}D#M9r=qvCm(o?tq3czFj{M5Z^kT&6PQp5~|52?1c*a>h!L> z${!gc5!7hOC4zYS&<7M6Frd}?%{(;1B2ds~IHufM@6qA)BLeVCnXh&Q6U|_ zSyi4|r)8?J$w?o?ySGY3YQ^P7H8Ih28k`~0K1@KgGz;EzmB zAnxMP#$gA+MDAhdEHTO7T5Gd_CXoh2v@1_6$9@r~vJs8s=n@&iVDnLz(@mb_j(_Lm zfWj#CBLl_!#fD?C+mC24jCkCk#C3!xps-Bd+ix@b2}z?N(x)0SI$yfIKfZm7NASeu z5}hnyCy$4-u&%Tevm3&r=^vJ|gA~tCmMh%qEET9bz(k4Gd~@g8kw8IFROP7=?i*SE zwq5UbyApHFAo6zSQsC;Qh=KxXWsx(Z(4DO>N~H1qEhX`Z80#4-g|0|F#s#Okbcp9$ zbNg1Dpm4ShQhI*KWW^wAz-@gUmY%@~*WcPsbGM#j90oPUP_v1q# z!a8;}GWHInR!>8Dl5-paOMM1+@lSiYlWS&_*^vm<&7(!}=iTF_W8wO?yiljge%)F<^voUxl z&b!LX3YmYkph@KEk#Au5LmY+;*OL<5zz`8WKDZ)QCM|Arv(xM=a;hV_$h*8-`@Ejc zwArc@TwiYl&MlE_UJ30i;AM65y!=kI8IwhC89iEVnX5f5_J8VI!(2qnv<)vmcfD!c zTaY%Z&>r6H+CLTx?Yn=U@pL)(WLG4&JIP;-|M*uRXIgD7LnEEr5odg{iqz4%`t=?C z9|i$%lyEqpJ2fo{V3NK2Cih=8Yw7|qH&9T9Hwysw02OLRYTSXe(PU=L7pJnGDyvrE zDmQJ#r2@HF`)uu1PjaeS2xl)zUWmvb-43tJsCQL;3kIn&?Xr8FxjWVe?ynW1_zIj# zKO2>cj9KFj#vCY~3ew9nl4dvHKfiVzyR{W1qq$rG@my!r5l!mrwLEh0TxepwEXw^6 zT*%Af;^0*jZANG~?LBPqq#?foK;Ev;^<#0DMUu|+RN#7t2?WpjCL9Xr&CXN%Ykv%2 z4;L&T@2k!~Y!>J0=MBsG^Xv2x`g$MeqwJlcJ~I%L-+PL#!9oylmb7!ZT~sk`*iojC z$e_CH|9HyF6eXaq$KvX1N=QObklUOYk~A$iGx#Y)lTq1ZE@8>667GjfBtvgS9+F56FC+WziGLBxnU9{ET{F| z{;)v1aE+Pn%~KJ2xD}cdn&0s!OZKlSs4v!K!rQnP^34>bkQuDhzj&wb2ucd#G&8z! z+gzMlinssZr>!-DJVCaa+MxH?_xhtfPNHOpaw%HMzACa=yPMyp5L=_^SG=nB#fnmW zr<&(JsbFBJKuHvl!K!UnZ;-rx<1-ANFB-6Z?lObQzId=v=Uf0EGw+uNx@*;hq=M0O zs(?S@@!pf(Ao@6)eZxu52K#{zM8_x2R`W`?#L{FOM~`Eyygp1W&N7ZsMP&%8vK$qx zCyZZiXZ_<>7}AT;&}QeDIzhki)5@Ek#0RE4OrDJ$OHaD_;mbFxiHsVL7Nh*P^{6`t ztprfVI5vfQKM*I1@OR$Dac*8NJ8;n|eZ=mWlpEcdATn)Azj=TUi~u;Z^bv-I9L54=;icM5MzxV^u!?MvJGW4Bn9pVopT~U%~0aF5( zCb*S~mGcgb+bcAF=Iqx{;m0D8cq4hHlKK?;rQ?XRE;%|B6LC8i|JJnZm*6q&bN(~k zg)qG@cmpd>cyV94K}8x?vf*aEOelec8Qb1Z^8!RQJ@B|B;#*s%j}W=DShV{AX0oxE z>(``+dfIT{7iu@Z&;nWX_XSKK{(Uj5{g{fujp2v9>CLSWw(ZpWm{roc^K7lFU2?NpWlD-&>cWZEPb2 zGS&Da(7Z(-AykpsLwV4m@)E*n0wv>lKvCXX=%aCb&$TE!^@f@_R|mWJsqoM3qLY3i z3X5573ny^4_-N0L(8QT`OqvH%N-}_neUF^UsnkqEK9O8r!&dZom!J(Tf0KqF%*BkD zeZ!M@f?g#}O?q)8*uts2KY>NbWa!FjmtXNsb zo&-6~t+S%=?^5RyXZC_AJG`1=sMwzz-aqyyzB?sCS#Ku4uF+D0Lu2biNRa7 z!qqXm^0b->-qXEa3qcCrRxz{HvWPE=GM4H)Cn!&5I?yLT(UA%@o7CYm;z z6z)bY?cW*B>Lg-laek5)C5r456uVVREd1Q^x7t9EP{CipfzL%(8Ot>CIZzh!joEdM z{}CYZ(%){<@kD<3#X_QG>|0S-J0|T}JB=%)p4@NpEvt*-8$<>rU z`jmP?N!S=-hl9n`o1OH-6dTKYTn|FRm(T?tuCrj)@g_V;m@Mo^HhmN%P}Lbb(X2~T zo&V`wOhIeir!nAo<3SX*l;T2#EIo-!gG$UY;%Q*eo+hIqa?%bSO^s9B7zPG>U0S)G zBuc0Ws7Fr@$n}OrPD|_Fxw@?wkK&pxRO|iL}-PksblfIv#qw?4R*99K1MNwalg2+UwS3 zu6_25L=Nm!wPDP?el=Ik<6Ehfo-(uHT;2%*?wfA$FyAfe&znsuEB4{ZbreD2!>+U~ zR(a)&aLWbun)xj3+r{}rgDppKbWBW77#*5OB9_~6!uEZ3n##Ks^(v$jY#f&uG(J^1 zM>Qd?B8VU!&fJMaAP(4jthIqu7sTs|1Kp9;bO&aQj7Si(yR!!qK7NoF$Fpg4J=ck0 zj+ck*Cd`OS2^y0jM3dcG7-hBLVvfVdMzVX{-6o+$NE=*=W;UA2_HqBmnE|Uszl+A{ z7xVejQ0zBxNL1(U()$k#l5F%}?0^5zJRzPKfRYr5*g<4S68WBVl@mlcfViBXz&GNu zLq{RCSp3bQL|MhEt1j#Z=zAV1k4}7jCs~Ak!Imd@-T=qrFnE5DDM9#ZmshCi&}5G z*52t^W)~B|^YuE4;FX7t;^l4BOjoPOI=5b6U?()2;%$lc$Ij}~H7I`j663BbjXIQ) zwOm8p291y85g#Vq>cylSzkv2xe5V z$hfu$vdZQ$=93em+;bMvGscBUKGRM_J?9}l*_+*dQCq?B#NXIC^=w!1Tv1rPhH{b*~yzx}}PU@(B9Hzhx4*;gPc|vo9BBRUQ=Y z4R9TkP{vt(w0vUikzMT*!LZlt+dJqeS`LsPJTi!S4*{m{HR}H5@3=8gx+ zQ7ycwk_5CDWq21G4y)%~&LM}{Qk`pl7(hYeJauJpaY8Wt7;9&T)gKMu?b+ms+jo~g znv5?Au|~PGE3hosiY}4sbI!-ZQ3c{WhG>n!%PA@L;(DC^fq)X*$#jw9xLs^g8pkgD zy~h+!6`w(Ur+J?vFtYP5s@O(LTIc}B`|jtnf%D>uE65z6IE#l?{uGUs0a%&WMqOGh4NjqR9I(#Jmy{r-xC3P|^|V|6tmiwzrKB(nzpp=Ut>F?+N*QOThScW(Aj{`^9Vw%Q71sOsJ*MrPWF zNBHaovE-PmDM{dsRT_m+h---ud9a20igsdr zxE7L`R*V?h$o~Cuq&A&W8?Lj>(NR_>|HnyOY zocsQCfIQ}R4$aU(v$n8b0_WQ9fSGXjpVQrpRGF9TShhvc?drbwEkg5qQQRI9O2GJE z=r;+!8-UY0bqyJndJB>CP(6O~C@})F(iEVPSQ}EfI)Yax5A(|q=cab12dfkOS|;FK zL8^x54jq^OVk}vEpI~nUhG;~?w}`*CLJcnk&G^~}EgsJqhqUW&a1h*Zp%~0`dgL>i2s;Y6Gl*!RC*mKa+0ei za+aT*ODeD9*Dg9`Jylf3{j%r5Aa{gn*?Sx$x@%4_PQPg z`=B!nCUNq~o(E|yB9D|g;96jl$KEF6ne7MGOmy&}SKgDldOg`I8RLHosdd^@r^9Qh zylw?47bP=z`cq5Fvx|!#)TpqhhSwJV*sAL|F)0}b=km0y+n*f#_8!Nepd8U)nnKt4 zOcdDYyeFv=#XzxHnj%}%O;(q%9RVK&KAZu?B4ZxH@ndoqnsLjJ zGySbr+p#fk2q{1`xZ7Z$_8;|~)7r2IT`?jjf*lcMK@JUg`3SHH7lRwSUwTgF>JL7M zPgomTnNbIKc$w|@1fHB}QnM0M{rS@q*g7wmeU}6sakhR^*HhK4HuN4d*5l2D57FXN zFtOBP5;KwM72QG0lf`DV7wN#4@ zcTXN11KANs8kG;C4M;SJW>$E&zjxFG32kd_Y=YgIx3F&X0&8;U398yL(zlZ$)L3sM z5EKqZCo;xv?|!MX)){O|Ti?%&O<5+ws%c-BE_*%65m!|`4(7R?N6#CNG;_45qIf4q zj~v2xLJ%S~$~5!P$qT>^Q92$k z`OOlCN!0{S_y?7HRuzGa4+_yAkf3mGX*AFrr?Sd4tm&Y+UALy-ndf->Ud?lSd|Df; zbB3On_-Mwfx7lxczLokrc|=Z5NmPmouOgEKJM7HNEXk&na(wGd%snT+pcs-|G+VM- zBDTo~Xx_Ae{{Cob7FCP#sMy$lP)cT3VVk$WRQIj@s=`%80DEY|1T9v=MaA4g%$TGI zO_I@KZV^FHphuh#Rt}*Kk`=b3i#X*E3g(s*RJVD**`>5Y&Q5V^XU9| zRbbn>cKM&COw8yB*5=_rhOu`C)A0f;EEzvLJe`Ji#{H+pPPzBD42B4DtIE>oU2HER zQi4ElbSHfn3%bu7EIV$qC$WBJ32VDnf8ipEP+d?p&)0hBVOb9&r`oXez2a`jYbjTJ zBx<%r@xZFiZI_Z6`)9a-zbC~r2vnhW)c117^WbwH?qAju0fWWDxB(+}N4=NTS=Ptw zQfs!?-R*VU!)JRMa4CPLvx8x1?k?MI?`Co|_!r@BU7AN4*?a`u?h&mK(C8XhF!VL= zFqPXmm)|?V-Rw`6*Rfa{HNi8y1`BYXv#tE#zyLuVtx9aV7^`Nu`i&UaErAG?XmF*N zn#_krhh}8sP{&3-2E(v6pI(t9rzDj82vK_#5`f#t5yb}3DNe7B^4 z2H5<$jpZVA3fud76bK*~)B`*8V!hmz7=+q20HA5yfry2Lg@Ypip^$NUms>(e$nSOC zkI@+!GF~4>1_tuj-i9#)fzvb7(|e2?ykO)}=_|GsxKU{WH$Fa|ROt12%J{fAp|Q`q zh}q|GKc-a_5S}4A%w#L@yrF@C0eE84t|{!52ygdyKfZw{DZ%(DxMSub(spf|5Zrdb zPoHd6SX4yts(f#=EHb2X#UJUimB#3~;o!~_@4?E$K`f?8lGpFe2+EM`LPK(ueRh2A z@aY#unN3YiZEfY`;-Y=E_d+CBeu5)+U_m*y?PoBrzjs$ehzDn9XJ0EZ!14EV)`1m`a-nZjNkr)iole$)Bzr zfU^F@CquhSA-tT2{SGWE#oWwHUL~a$MNgBs*2j?at+a=MJGPXRl)z0}QdNk^_Ncje z6JB{!VW|licrx12NrH-Qv?leSmhE*ng2^|2KfcvgR)2@M$=n?f;={dyd+tgx=&T?I zQzbh$&)xCv4FvA^bnzVp7k&oMw%mk8nm0?r)ZL_#x8ELb@?EsN(z&c4FvC_$_P_*cvgYA zE(MS1A}Y2=6*7%loMGrWemoFh_3$zS*TJiMvv=1oi%Ls_%{{ju@Evc|gk_@DfP-7U zhT{V+KNS@trid76Vyq{Ja#Mno91*;gOc_G@OdV}oBBMGf{_u$l4Wf}puw!!(kl~XGrpON&82~#@wbQz zJ)2CB86(kYP?2sY-`FY)Rv!~50RH2H!)rJqkFb28K@I{kF+q3!^0S(8SS&A)z}dZN ztY(OE&CVz4P&1k!FEM_p zyYsfTwu;1-A0XB?c%P|>x#fEcd$~fsw|DSi#;T*+A8dW^T7a#mNcU;bD171Xl75F)vIR z!X!*W8q08pfo^If8cA*l@Cv7AQC5Kd5Kry#z_-sU04PuHZ%Q!ewDWRvC;otYM4dj9 zki!1H;G|Cw^t3z`Wc)YycZ0!z-n3^AQk< z$W8aWSe+30Fu1>;o&H2hPcJ(BdS~}}yftIA;A9Hu-s^Py*p@8@-2NJaz^`4Ue}7*N z?s$pE1osRw0Ldk#DNtJ#CO5xeWQnqbW*ZYWHTkI#vWtdfAtL;?>3;v2$6fpR6N4pP z^vLi`v|2FWVS>@h`XkXEgsd-T;PDvXDR{;ZR{((J?aKYAGC8eiwvhXori?eS%b}KF zImNdz27v_EGXGH6w)vT76tYoNGE(37BtY6MujnKk+`GvRNZ6(MfcNijYmB6Hu|vsy zlN}gddR_ps*7FWN!r0)kn@`vYOE=MdI1Zd)Y`er*_K{}&V@RZ}kJ^XA|Mdlg56D_i zwg!E7($bMj{ht}t>WO!J$n1(K)zx5^QO2KMJqhyXH2JgKg4onVLkyEG{U-b%aek9W zMikGi)*@@Fro~@O;>BVBvQqyy=0CBcY_ z6}PhAPV;|9-<$cOwub!ea3}lR7<8s0^`SH1&+fd)(tyc~+>h_y+ry;D-k=pecoRL` zj)0q)kQzXu*IO#f>C2|ICxtnVgBibmx4vvr@JvuBDF%3IWKtzRmJd8m&P0C#A0@#r zPf33(pK2vL7&d%(sHlyOy6Q)$^T~tmTuz=pTs$V;h&fFIgnFSBnS$)dLQTm=5b_DD zp%!G;HJWboG^jt>TywkMNoIY)9K{g(9K1DivHsVD5WzNgnji5bBx!{UZS( z-)=Zu+_J%;PuO0~;wYcv?*98kuv5nKVRvPVe6m%*JVw~J6`ISD{oJrz*KH_X z$}YxA`~D7rr(;*`|Jx{IMkr;=nZZ<8y`=_H;XKr?fnu8>Y<-XjSip{MP6b}CEw`C( zlvX|{yDOlvy+x4z)y@o3If6{%a#PSsSbI8fQ4|c@BV; zGI~Vt?}89hb13TFs?|XFL`XYZW&2pPU!g-BIc6gT7b`Eufsl)BcN_UlE{k4d_^PJE z`QBSGgPe_mrQ-U#84-;@c&|Zx+D3=}Ns@>Bb{`>G2vJFW@xokc5W_sXKtLM>fN5ZaBg(R=QUM_%ecl9I)R*a+-med{biZ z=N4=xC~$>mt=8Au@cK=@+(3>?)an^CJskLO$b6;uKH5ho!d42ql9s>pXxx``bo_^klR!ND^xx2Z<|7QlT4(xN{5Lj1s+AA}X zT@MXn1Me`~O7wZ3@EmLNy#~C}3q8-m^l-{)#{zHmzr?bX;Uf7O^u^H;i?g*Hon)3@ zxv_~H!Ap%%B}Lwyx=+uqIJn2kM0a`(O|f}Z9R&GPPH|*!34)DE!}~i+XY8V7A4KY1g)-GFSihrX8nY0g5!Dd^HYA5+T-TW zKR)PZ9tBu%;=x)qC7lMkXOS7s4v?FEB5D`X#>UXx85Ez{yH{e^QMG_kByvnp;L8!g;p0W zb7>}#?}$HUF2$7K6AyuC2t%8r4MwBw>Jb#IKA&0QMv!0Qdlx_@K+BDstTNXa7t8{; z866eHMky>mEz(49m%{*dj5mQZHF{HYsMl!tx?*KB*3s{P1_$%s*y-ipiYNP%j2XYK z)FP6zOM7haSh7Qry208W*@#2fKXw0u5~L^8#QWbZ+WK|HqHeb`!SUM>=Suk$wP~yZ z6?6(?j|Kf3K5>>p@vRSdas>H`GLq+5$KyZ|x!aFM!ezcvxgY*yr=VbxQO09)Kf=7n zTCmhaT{)hPvN+-EXp@IdN@}s_HDB-M-GDfI;_6gj{BZ{4bg6y(*09^o z0%_oNKD`*@Qrjz4`OJ3D%vK!AS1~7`bUzUPA$Pz(BfDrnt^F!Sz>7Fq9NU#fA|8bV zEk({}k!yie{Ped~(t-m3jRxMdbkHqVLT=3tt8SP#KOC_zNS;+XE+d!O#+>%X;-oJb zYGbC@n>|>o^Xo>cc>=5tVQwvt2?Z4&?~Z=X7V@(lYGU*tOdY2i3-$We0tCvFM2a?`#Zr8Zg#);MTWGk>v-~1SE9e#`zV)hrS!|;(+Y0eFSk-RIk|rv zWuN+v5dZFK-xOan3ldmvNZHs~M64#@im6JHShQPATl1I+nn!ylb;P1`bO`5;3aYwk z%)0!<_~)z#XsKyvgr}nlv%6H%UVNTEreWYbH#mO{+mKrcEmq~MhW}XkXlRIRkq`&c%Jq7^;;=cURE9jBQorzuj0mxnlEKSl z>aAeVN_e!pKylm(QLG30-gBQE-JTNX~0Ff4GsG zFW;}-V6xtKBK&7N@o|ai&CT3G_;UZ0oYW}f&)bC>R=GP8@b0j!5V-i6-$A!0dexeo za$5h&*6yDDaTYN(HAO`YLPk`%pKsux3`(__voQ#S~~vjU;oJ+XI+oIwUreSAz_yv{GNmDX@1>C_@#$nyIK)+C`^qmt^7|kY7F~7 z`zA`;j3ZSf8H04$Zgl&8!hYGRQ&UsJ%y02bLPngVgb%ybW$|=a1Q2`o|I`&x7sYqk*i= zK*W;$3{O#4bdZ`2 z?a4RMaBiaH%*L(!O9pn#0EU7jioZw9w_T2ovY{{Ur}te=%`hweiKqm~JlIe9KjdsK zis<0&2rml5kAHa;l>FTJ2k!dohw8d-d?G!f?H$Geikgm6W3BA};uQJa^MXi8-z?vQ z9LC?@M=sY;>yVD572TjEq&kqW=y+|NL;d@L!-1XwjIEk&%&- zl9H69LjS!qAQ1^+wIe;(sj2Ub{!Mx-Xa2ili$!(<5_QbVsw^v0m+|Ng{m@8_@!3Mg zfs}bce^b2U%jXYo5~43jnB&H` z^)*@!QkS#mizdfTUV_B~O`c32IJ&+>Nv3%W2nUso#E<{%{rpT=-&KNoYgo87$6{@A zEck3|$x&nV0tfGvQSNgoT#gQayzmW^&d_x1ooE;*>&c>2kWM4}@wX|{;tt*AS}Ci| zPcMa9kwS(5E|C@IO5K=FqN_+a_McIDlsO9St@s{^7fh0`XEpZ@>x#az^$0Xtn=|j) zJ7VX6nmobvx&jZomYJuv$_BfShkLh>U z1_stj;*;|2fYs2%6)|Hi7mG~=It*(Rnos3CPqX7BBj^ll`=vfAZuLyWu1?JTY5}Kj zEHGsqt}?&I4KE8X44ldnASct8c<%I0g{%oA(Y^ zr-T52N~4N(SUFsr zl8K243M>r4!^2x%-fX}@J3p59PY;jtJUh*<6AI?>noTVbJSd33&*23sUoXAE$ffX| zfar5ipB{pe0#Pxap)gSJ``vyV_X>ZU?iJ_%Xg6%r+Ocb9uNTRi`1B)EZqQ7wm%)q|VCNsiP<368AlLz$b@t z@EGMiXjAdl5KBipGg4Hg*Hh7dl^V`GFoL+ZJ^F)K;Aa%DR1W*$=pc&Gou;l{{i$0% zlpB_lckq(-^+F~QK9{Xae%{v8m7bA#2^OkIyFHPd=#uARw=&I!N)!7zc1Y2OO?D}B zQ5FwJg-`t}H+`c~3ba)G^JM1XIknl)6@#n!KZQXg2Y_FoV18kXVRodB>U5ZK^^m2j zp(O9RFz0lw3AnVVX6HT$*`)T>K`KwN2CH3{UJ`ctWo1VX(QJ@|0FR$>z>sZ9U)l8!yR;Kb6NM9m7KaqSbXJ~Fg z5BnM(PCpX^{{)G=X=)(lhy1qviGQb5wd56wM7xERB3fce!7slS>*Ev@>>Q-CVKKwP z22vkWvF{X{>arTP#jLDlovgvxWTpL&o4Q_MUso!*08}L z=eh!cca)d)P5bU=0_*-R^zfhp(CDZ!866czBw6Gp%Wc7kf9`z1pa47%*YD5DlP)^D zQfrvaTg>!=-Wg+lqHzAYeV<~{&Kz!62WR)qL#vOG7#N>a!!{iWMx>QWFz$Ck(>R~VXIX2O`soc|?wcC(G zf79$c*cDq&)w*5O@NAAP9gL5-#$1#C{cz6Oo|SD!<^kWn+ajS7oltC!k8&qR_-p>} z58pb6n&lj_TdCwkuf*}m83#|^kDSb-LLcg=W|?xZN=NJGFpNl#IE}m}q;Xy{ta`p< zS|p-F>Pe|)?>-N|6KHl3QadPPJzVbhuWxZ#_hFw}Dj=rw8DGoIc^4x6G@;J*OK8=N z|5V%?{@Y#AN^+WWRi^4C#iMZ?B#$yzK*Tdpp7M_5iY>!!3{WjZ`rh}#a$xlQYtz^p zO`w7Y44hfSn5)(=iwhIkeh70mk^7#60+EvG z{MTsQ9a#Hco6FQs-$_Yu2yAa2hB92VO>k0F4C2FNeEABoFp=+;1JBSRKz8glz%}xL zxQqauw{IU3mzrxF$Yf<{84L8^CmP&Q+kHSQR6gFeeF1_8H{{~GdR1) z;baeeUz_f<>ZoT-n0W-4dI5chXetx*_< zCaTb(i=qylHgR(rPA6g4I(Nj9p}$(=Y5~>+S${zVCJPbnr{9oT8Ih5>oEePFU(_9Q z=F#kQ#jL?)HEw^=l|5DG#e7N5Ve=a$Z2HSYMZ4@E+S>C$9U(Wls}J5I3X22zABX~m z?wRt&A4SQ(Kwf_SY&bAj@Ux`fA!#HYOxF_jEHvznRbUGw-u}B-3)F(r5%=@LAi_Ow zxjK%JBbmvZyKm6u=BmQz5~~eUk^eaD1m4=^Rz=7(tSdvJ(~WPhR6)yJgDLU?8Wwyd zqnJS>f8ymhI;&!Av(Xm)p7rFofcc9D4G&e(rsK~1!0Fm-^qthuG*7U0)Ti5|dna+^ zd-AuB^NIF6LfQlbtEpxyY7-Q2ro@DVQ9pl|7D6d#vQ1inaCt$i{{N;nWMhqXt2c29~9yBR!ZA2Qyymw+LvmWGzn`PbS z`bwciMPU79J)Gw5>V&~>4)LwyLn&bH#|%}vXqZJZNq;(q3mX;p1ir13fcFX`79EM6 zz^Wc9_Rl{ zk2lL;vu_NOUE1d!UnIL0Y3oHSg-Qeio!IBP=p$=D0yVeaPs+gi;mA2GpHk46XiS95 z?S9ZV`fgR08XMb|St^#a?7HRU48|S(g>US%KC1kXjqa}MTq5N|!0~}-T+)x8r4<5S zdL!eV!;eoWJlWW4rMc?KTXu+EqMP00?4@%i9iucvD;}Y~Zy4Wj(roRo0VUxLgpHCU zx#c-a#|Q8YF%vrs40V=T2V-6s>%EQJ&A56Q(TUHHZr=B{hg@q?MKr+c0D-y)eSaP{ zuDG!DYch6X62wiCl%dv4e6eI~ZPCv5K)-2B-$35RYC9Y8wb@RyqgGITmJ+%HcyP5Fna`WuEzfqQ1c;fScc+0?@o}5zR(=|IZmLpLq zDcg3Ry2Jn~TG~)sa9>=|wgLDDRmW>_=FnmcAPpTxpc z!^lnkw;hB2Hz8~7Q>rrseY9eQZ*c7Ii1G-}j9={fINXFOg3}!_42L~??_Zb`a zA=0f^SCV-G4}<#ChmGxe-VzN0ho9MLHntVFfMz>|RA~4@*7|0cWhjn=1Dn>s@~tiG;97Aq!EI>;eQND8p**2O-`t*&7xv z!vL5mgd#hC(zrciHFkrfT*zct#Cp#@Rd?&CZ z%a^vzOV-0EWD)$gMaPZ5$+A-YX+D}B{_6Wdccp*KKYi+C3Y^cK;X?A;% zRgZDaLqkS_3W8fVkLzY(2SnZP!qLcJGH&7)3L^~*&4b3D3<+j^b5Ai|%y zp>@Qy9>7teF5|36%*6=2?>bvx61N8xx6Mx_IjfeCf)}5y!;sdQI>aTeIcVs2Q%dNa zYon3KJ&ROHb~edVln*6!b*v&HB7A%y!yJ_7KNeKJeZwXuUPY3Krly{|s{G@~Qd_&( zM#dZ&?L&DZO^xkn0wJfxy?8F3Mb|cgi&7C`sWrauw8sz;r#<->PH4y5b*%K(RLu1N z4%b|Cf>ki+a!(p*1-H6pXad@YPdvax^3_?SiU~4yS5RUo_A%G&9EjPztWdTq0_Srb*kpP4ArjIy%}ycf<91x z`GShf#Ny|ll0wdVrt@~c6VlVmYij}fW2?(Kq93H?<+-@IYY@m`ek+OUmE-YVD^^DG1M`N?$K`$s9 z9gr{}HZsLw4lVX{<&)Ix5Ma69U#l#rX^sjRI@A8eQiO>NV{39_&qHFt;-&x`?!;?gpv}wiGGM7n?07ooOw&nUN zDlfL19y6^-5*hDdz=6r#X)ud{4Du{SNc@-NG_Mx*WO%jG+fA2?sLe1@VzhPGeBtq? z^!&jycBuFrjV{c0yos}L&FVTbf;*FD*O>Wa#aBvt1h~r`-9k%V@V_L(&qROJWjvqc zs*q#;dpePe=p?-px!?0zGQqbpLOyQC-QU!9jk`g#LTl%9GCg5WpWd(tK752zU63X3 ziT?8q6suz4-GI(ww8bE?T=C*^?qdUiyJH2(!L)>8sb|pVLebbqneKI`K!X|<1zn>W z?-%G*_f3jdV9d#*9scod$HNt^CR^|k^fX>|Rqy^J{NfMV^3cLUAsSX>)Lyr*!~SX@;A3lw-8_Ky(*SH})}8;N9W@N>ZaeqBUHDQ^BT;ME#VN)de0ZICkrLta8lVpA+`Kd7J_6Ka-}b;WIgj~4 zS&!A6G{@9`LyI_sp;f-XZp`(V!Cg}p!}~A(=Tc()(COy@>V{e!ujUWm^pQei81g+^ zz{YYp_uq3NimKwz#GA-`zIvrD9o-#Lq??rNEv$XJ@fANV4w)Zvx_u0gF~+01dT0mM zYS#`DuQ6@>8=rM)j%cOIc4?r2^6?|oB=@w}{#FaI!_i7f=}YP&%<{L2=9 zdZW#&w>+-gdt+;R1_Rowg()oCX(fqd)FG!Z*mhCav>MApP?QuvvXY2PNw(YnD6R;t z87f}EZCCm!y4AAl2!1e@n4t-bdr~7X;j?@8V{zT|uBK7y;_$(JJ6>^MfM`>2$X> zw$XI4+|+b>VHJ3LgSf}A{``wf*h4ZC6Ew%k(&^!49Mv0? z>1f++@iokw>yw82-DUsFtF|@|Ew9~Lzg*_C?%fc;3LHW%flF*%XfCNSbtA zSUw*&(WOYch56)trX%+MtMWEDV%qv+y{Z5}+~4R5;M(xJH`m$RNDyDDh{Sp6;r?QP@9NJ{z0^V>oI{70J_l!VM?Yr$t zchcjrdE>!d_#z+=m|&AoJd6oX9VCdbNLve+knc%}kyrtTL6UYJy)Tb61({MMfYKh9 znIN|&Rzuw}L+yK(pq`zN zZAACt>51af&l zK4Rh@rUp(!%7oDZ(;oauXgNHscvm%Oq5I zDpYXV1>4O#k*dP>yYUV;I5^cIX0>^aqpp!Pq8nc0kys%)YHO}WlXla&*f+Zj2A%v> zhF2>7Ck^L(Pe`aabNC`^k}EMW@n6~kh4X#Wdj}Bc2I1Uc?zmPa4j)}4^02*Isi+cTSnyz z?j<8b%KIp5Tp|Ai$r1C3Ef`a00$cT-eAeUOV%FQeeOxsziSFvj;WB>&8T)Y2=|BD< z6wxm#QNY=3h4l%p26D316VH81qx)lX^~WVYUh(qf>5Wj?vPU5NxINGPPO|tQ;iQq^ z@~60F8oF?_fbV>^c(#DoaTDvOFYo=qcl<3F!(_lwcrjBIldCeK3!&3r2uve6L~qy8 z6`L{2E7?!%oGa@t6RWTxEU?f2a65?bb3IY>@?lE1z3Q?{jgTaW&4uMeNS?9J847 zl>CXo=1A8y`u{QFYDsg$emg~koX0%gA`Y=VIe2UmZ7tIO)x7>>6>@a09%qMc%TZqb zTKT_Y`5^ug87?{3y!NJmUNNPAzkD=X_4hQ>roCA+t1h*7DnzVuGU3Jre{38#JUlhl z>~Mc%a#BU*Qw8;gJM8v&i1|3DC*Cg=qH*_XQAXky*ojNk+Ee0*^hZX<2>?J5*@cEJ zXXjt(;oMVUkOQcX; zG$fOYgZ7^_P@1-Hj(L^SlK*@BPyzz~|7809Q_&;2*}ng)-B6+V_h=$Zu8Z=oVFEnRWiL-uTSc( zE_%l}%8-2j+rJ4X&YUYFZ^x0Lt#3c6h|0+6>gvkAVf(9m9HAZqD2(A?n-=~o-H?`f z5=#g&RJ1eHlkBGdLd~uWbW-J%)@49;DbnaJWxcMss#Ui5KgM0E59u)-#jGUUGxD8cC1EoLM1t?Oa@3pZKv029c`Snb}#( ziGs4Su;{rOCvZAW6WQ-z`mP0XFJ$_TQ$Z@@Cm;OyxnusZ_<%+85=~ZNn zWPyy-W3r}8ej+=HD-d~u{7=!aB1Kn(@-585CIPwRAHI+v$YK`sMK7L0wyBYx z#Zc>MNTDY9I+Y;h)5$>&bJg2C(MJ@21$y~fTPb!9#J z@R!%GqdtmAP=}*~Uq>fjHfgMztIPdM{AP>Mzdb@$E*aA^MvbgFC8dTxk`F9D2s~i))(rc4XdT-=7W!>oj%EL}aI?`a2I=>?hyJHl4+YgJ^B} z<1|=nw6kbm*h-!x?DGEHVZrQ0N>-yYQ~0B!uisyK?$QdC`H0*_(Z0~1z^XbD;GF4- z`@BmFH%$h5$Jm?Bom9#+ywKw005vj-vP*37G^p*;=1BU9{Pe~vG7G|#`a1u8(!ACd zDc}@#J)(qDxxV@Pyy0^fk4#N1%*-VEGb4FTvAyGDRpy=U&`!XebhqC_>}f5G1BTWk zf9JLqe2OK#E_1CdmS^;XyyxEep7}k`_UiNQh-dly6N^G)6K~o5KeG6kqx+q%8O5>;I!(ij@nR4Y8hx)^4A{NxbstmEZ z6~Afr_{NePUe2m5|8vOqB`wJve6@ZN*Cg)Y9IL|>6)2d@rC$hHvX#YBg$N{NSlfR) zbadH1l>OjZWB_@B?B?a9=PDL8-G^)d@C%{=MP}`Ep9?}u*U!T24+(VoI$CNK_#~K5 z*smPahBfeg953SHtY$XH@8_6-iH-@Cp#X(!S00-E!OCabU9M}sR0lA%TVi~s9=W<} zyRT1GgtxJ@<7&;le(moH(ki|>@nvA%pN|So?l^8*mtwxg^XG^}3Z||a5gZhUgO%#` zDq=vIDYB*`$I09-ZW>xzB$F?Jiq!cBJtpvf4|{@^hd4m;h!0SpW`;j-3K|k7GC49r zjdZOQQb-^}n46gEi$V?=n^Nt*c?y!nVUsJ`yNNJg^E+i@=jM1~U_lwrw_w%!ZaXxj z;e7QE=}(b0{=Zm&)9pmRp#)2iZUvwtPGjc`5~$0lh5T@t7)}`kkw4wA3S6W@#K;O| zgnpXN9XFf0rOyP1Y~Ioowfk4J9=*OQ^!QEocq>C982@A?CFl8yvN$7|jFL zW4w$sOB-@`m6`N3gqd+PP3v<+=80ilce=LO9DUrA*19MACOVXm9 z8*hAUho)3nbt8r{j^UJIw~A-erQpR%cw$DSMC#1sF8C}7@=VtDtPsR8VKxgr{#eP- zojTz2py8b7OQtL`0tS#^)a8Lz+D)QAtQpT2_vVZQR^iDc5)W?Bc z9&&o5^aQlUnxX5W+P2H5XjSZVku-z?Mm9z-eZK>AKzfb8f9Z+wxzMl*P`2Yz3*a66 z)bpq<6euJs`VN)$&n(&4dG#*8xVQ%<=SD8ZlPH*>NbOBG;d6wACY4vvQN=A=JEA41 zSzCFnvrj&Uu3X*F_8cuXaboz$-2>aFvF;= z`zZ_Mm$>dQjwu#1TTMEVrFq>iY}t5{f=KvA`8DL+y}!vuNi4cNFk$k=>HE6D>Y}RU zs|I6sm0w_)8&>C(E|Vx`AJX;fk}VSFq-6FMsnI-k*%`?o%ssx?_}mI)i-dvUB#&n# z!GasYh}O${|5!z<{)2szjr{6Gw`DZOHS7;<%)d;|m0ZGUcB6_k-kC2gBgkx>S(yo4 ztvB7Kce;=#uh+GK^6(ME zR{rR7c^*(eNJ!g+2vV;dhDD{<8BT$6p;Y-0vgLqHP%L3qxNX*fnO`*aG*T;mjb$82Knh^2+v{tMGp zc#(`&9q`^>pfPht{V14`?ZUx;lLMR7VW}VN_r(g%>%#_Te#$lc=i9ZzrN-AZzI5X;Ca+g-=$Y2anHr zEbpGFuN=QpjhY`gJYe(lJK=%8hS)LPpW^X9+V}7LcnT4&enE~ijI9|bB*ZOGh>+d+ z{ajo3kVR6V=mo|yz)|yZ)#!LD1U^J+DiTK7vrH;5fywQvSwAy)-8;s7paM5BCn41} zUwUCLLJf@;KXb)$%RaHvdeGPs80_)Fuu2u(vrNT2YjcflS^D8tm7a|Q zoxTQ__e+3wkm%!nXl>684_VKhy43WBJ-@=ODd1e(Z?omFjy2jh>hNi!zVf!K@I!wQ zf9pNrYz#6vWaZ57KyLJxBK5}lsiL#a!>W_|Y`i9^q(@zC7<7(>gwKh`QLB4nx^Zns z?V|lFK+Wz4?{}|Jve$lTI>sX+^=6tMhO^&AZ_L)p_`932feOh;*DBnn-K9ovB_qir z{|-Q0b|X~+q(C_Lpu&OVhX#e%0(y@w*yc%8C$KB>?D7`vmo@jrANI@c7Er^2)X*3L zRC1TM*$MTt*^Bw&tYD+(P4)d7J9`Kd4q24HIk@Qqc7x&bxLha?xK!4x#HoYlP}OV*##yPk#EF+C>+d z%x1KikL3nI?W{ooR~IwDRQZfPWVJ(;*ZETa9Q0Y%tnnjPBG1sg(jMtZXco&Y#B$!g zL$niu?Nt}1VcNr6oF41q%E<_S%Y!NbKbc71w6WN0w}H(wRwl%L55;G}8+HUV%yP&@ zlE1k3#N#kN80JGNcpE+4R})jCnr{`Tc_||?GbUlc!F#{K-Q5R(5E~cQ&*_Fm+yd4w z{OkGtNQPI2w6ZcFh?W59*+wRT*EQO(fa4SjpCe^`Tf5(P%M0B&Vrya*uB|`(KE}-p z@9gpcrG*}|!V*WHCR~=c)l@Rmvc{mC*Kihv#gT2W6d(8>^Rz*JvG%zN-|VqYj_=+A z9zI5=Pjsceg&fVVdRI<_|F-V#aADZ?-~~6fD(x&aWb}E1<)b9Su*<^iIW`C3T&c{l z2AfJE{LBV}ExAv3T9JLYi6s zq_RAYfysya*iCpnpE32?BkSTsVhoOdAimY+;5`bsQVieSWKm|{JUi6>C3m25urhtV z#NoF?PE*u{C{{G#w{I6h*Wo&A4bbHKXpg6iL|sqDeoBwxW`2!%%R=1X$Bwtdo?&Xd z7`OgA!NtnpgV5z@2i{1oyAFCOO;J!rkl%)Zw+v11z@bbet4gO`gaIM}a%6|{)!Nuh zg0g6^EZpxn4gKAEXNz_FtaKTnw>_ELOP#u=yEm!F?ZCNLzyt;GSb4L9E~ z@Kw!$y7!O}n@?Jt={sW}zj^O89tFD<^k8dJXf_>q1^2B2wPLLY@|xW$tjmWNH0?^4 zZCuka$JEFwtobZ*?4T@WQStZG@L5w?lrl3Go9jTuP-X@;F<74UZFzFltN8f>EHg}42u|#+$ zy9c`o2&~UEe2W9$y}+`2;Z#;-@O385;qa{F`S<<25toxQYY4)0V<5p;-7eRh40O{{ z%srmsj{uKHCm4ITd=yYOt*tbvxsn}l%;n1=0W;rI@Jy{z{h9MDCL9H8H?dAYgFUnh zqlmm5hmuSyr&M!3wvx4Zdpv5C8GdKy4vajq*#(*4f|#Z_3sJj9@9MjJS)Q|xZCaUu(R=$&Qa|IzDZ8DL!#gCpWO&`);tItToKR!T&Ems;Rr1vvaQq1Lx zrX>p?&ykgr>5BUwPVv!FSws4#n7DX^GS{u9EN*l4M^-~|@4}M&jtPQe9>BMHmm9{5 z>(<0oGQaXq2&B{$du72Oc;!L z0PTUcJxYI-%CqYeAulxm%hNCnXBP(-GIRSHm2S71`K7~B(jZjkc9t&aRxAscoszPM zhNa&!veKi*N&k1>Z`mD=->h*V96}(33YP`Wfw?EGJT^=7@f&ZlvWcq6?CyG9Y?2+v zvyE4uYT}0Ryq z=s`wD*|=41sv~qj`ntn8 z3lD4G#Inq<7*6N+8=k!pmD8UDGE@D9bI0G5g*4nguURrvd@8v1d{$u=wfl5Xh3`78 z(Je4s^n9eePL>Ci1!r26(EL4Z>0}hzWYuIuRgDv`4*1M0aJaE>1Wo@y z=G(kNcFnkO_&4=t2Cb~jh0%nxT*pf+N0QRV9V{Gm#XQn)`xpG$jz)bC4^&ivsHmXF z&tE=R>c_j8MM52WWDos{Y^HE$aqd8 zTimDL;>10hk#*`lfY~d zIJdXiS@Dl^sCVxZlO_8^ANhH|Ee-Y^s}F?Qp5`nxS^6%}8$vz9oc`e}?z`D1$0&&O z?Qz8{VURmrHZN|EbD?3+Ekn(hg)xM9xG-$PUre#Rz7+&~uMg(Wfcj3#(h9#;KReoA z0({PSQ%9CnU8At^r@oyTQ+r_sApIHd@jm5qZFqmj7Xh{57m68T!!c}&4og5^_L@&T z13WM=(<7C@^m(J6`a$|S#Z6h@CwXdJn`Fy1ii}8s!S8a^3@eu$-dJU)3W=QSA8p6s z|APhCO)(27+xqDDB62tIdB)xg7+)M=3ZjpL~=6ZpAgVgBs8xRl9K|}A5YT7EnwtQ2I-;T&Q9%Np4{1Fu3 zJz52?PSw?$sWw^b>Y5tYSAZ-Dm41AJLN77@m^GU1>;3ecq^?~&F1oCZzasMM(^%fP z&!^_Ic?Z0Lxtat5#+cjV_s^O8*4OQ)n59S)M+n099I=?81f;3XS(mLb)^6kN;+Ol$ zg(F#MxKX#mf_fZ<>I~)k^8CnBdjCXCulI@G*|q)0?Y3NRotmsKj|l~~X1azo#QUyw zXJeIHrpam9^nOCq5O_oGFXK0!f<`*?$J=dFPTAx;?gIi7YJi}cmmO^!79Vzo2@sJL z6-ugOf0mMK_?1;8#)onn*c2;R_#6+p{v>!npQFLJ%6cqUu(D0b-F!4f9r6#=w7hnB z^l{3uCeU-CUk@(AmlL7ek7?8t0k@)yy=K>FrHp(PhQcZgGw@&{V&bHe$U^#@dXCab zqQ+rsU-z2fCp-68@Kb&*cD8#^x$q_o2Ud^DRP7z-E_YpV$fC+3D0!WCT4r^AVqm(y z?rD(yfZw%PQU0lKt3(K98&~f{Vs2}Dx;1wkn>TlS*)igN!noA33G>&l4?D;2ezwtA zSvw@_#z<1L1^{#p1`Y&#dh{AJo}lYkA)HNuA1>+zH zrkyX3n&K)eT_~=@Y@+Ik_H1lTx&Dj_FX`ukM_%cxTi*6`d0keTBs2~RkgCB5!SVum zmpCy^LYLlkyF17lzh&YvmdcghRt}Og-)0vQ*w2~O++5f>R| zzQdEfiB%7}XjL4xJqa>GCE5zs(y;H#ls_Lif&)2?7MhB0GCmj>LU0I30g@A3>b^bZ z{`LzCqaZtayv-iQhK6>Q%iUvr+uMrd!qMfLR7ffcy6h{E)?!{X zOyrKUJ@H-!5dJ`&RA^}xFXaKQ?bMRmy&J*E@#*`jue99?ndTAJm%F`5zxMB^#N^L( ztKW@hRoc`i%XT*Hwz(32`ed7EfpM#@xq*)CM<-z}%fc#qoWxVV<`=c9pJYlOZEE@# zw23EpDZ4lOY9&byygiB%#aKZ`M|M6PEy| z>&yIsQqAPfip6xVcS)@;I$o*f{a#(qvG3WpKFHzWIG3Y*QN6^`aJR);3&N(-ij7PM z%q5~FcoyFc1M39TBbGIGBgY`Q!i#eUiFquSoEhG=s_FQrr)TC}JZC53m!;W2--x+y zjd2}$^EJ|9(=*!x zg1%S!Pp7x9T=wF)zNTkt;uW$P!xlCwN+(AhOH&|>Bg@PdE7Qf`~;4F{{W-#nXQ#OjCbTvNn}YBCwN%I&)!ef&%2`9XX?Pl&@cT0=LYam{stm*> zys=`~g|@nQatx$OO4atUEt4J**I+nTQm))x;Y(W!MpsgNbbGC1ky1}ppB3%Zs`aAy z@+Cq^h~_x2h)U2Q>RCw{w$X1v1)1b?>sB{<-%-v1B+I2LC)Tt^GDDLc zhoDS49n*tF$LU`%RY4mJ!nvy!O}h@y<@XCBUuGc%lx9}f~{60lz#?oT7;A%jn(2AV$y z#jZZyfa0kjLU~QIj}glFz}qr|b$Q#|Ldv@gkXOosrvO`FG?$vac=d9ZeS`0nOXnfW3h2jrFu zg(}_cTqWqg^W`zzsOU1!n}f&)KFP;)amzIk6Tc2fdhE2t@m6P^A z4bSDz%w1TWHW3l$g@yg5`a|gCB0am61UA(tb&Kr)^3n^i2E#fm8U?eJ-S8J7+kjUJH>`d6&bJ!@0=jaq~cR z!sL+{l;$>X*(7;(Y?A>vSm9fDQlHYyymZq1N2dvkgu{5v8zdiVZ zLrB=W!Ng*;DygU}KN@i&|0x|1UR*d#?0=Kk6A3}aFb1E+-z6w6?`D{sW9&n)bcTh< zYNkbQ@ZDK;PSfIVn=8JQbkC+;+_LEQZ{SM2^|eXJoMzS~;wlCh5=x2r}|+r5|&EruI(5kpK-rl3phT9t~5DU6srU3K^D1TeIF zeuau4iO?&gH1VfUL>WQbgUfBb<2hmf3iZ968}yKJwfbAtVkZt5@e)beHc|GHRb~Ud zh9Ws)_rlT;!d;%zzoLE)={N5sX2(x%`kwpc_&`sKYv;aTPG)sOWL(c*KS#lc%>a9- z+>30GEV7H7gLRtOMNl_ZMeOd%5$mKde`C|hNmB2p3(K_B9LA3pb1^7e%an>klLnR+gb+9mu7P!V$Wa361vlYi9Q&kt_2xCl8 z3;44+EUljn|8Vm!mkjUT2XBV(%k5s@PMU0@0kZ19dIo>rJq6X`91(J?^Kge?^T}n9 z$n7JJZZUD9Tu20;3z^L(1k2xR*IJ4qcrP-Yi_T)L%FA%C7KQ7#MCb6$%B##v^73+K zvR6aunjiEnsQ|6T8uW;psnL3aI0;_u2qM=dKo#Ftpq`11+(=uNmE?KoBBu1Z{OvKp zN~8~}6JZTelw!5xhne*X4ahji7;+RzBD>414&?+SvA@}3Dn%rH<+Z3i^n;{XSjeB1ZM`zM!`Fca zuYN1-BgLm4 zIevRe<&54D2oLLp1E`ElV&@^NSNL8u__odCFtG8%5~*F`FXdkgR}XraSR~|y^=0K} z_RNttzw{%5k2}37l^IR%s7GLx_z2di5L{?4;ttz{rS_bH7maZ>A#b zk7=`V@9FvsUp6-q>g~5$E={{TTlb}DXP!gr&lq_cdb=idnJHvXld{oh^K44+$VSW# zy12hi3`JG&AR2U3ZIhIxzaT5%)~!@;Wxym*TUCCYyU_+O>_yB2 zE>b|cA~arvceMYxY zP9L|d@~Ou~8H&%SS;>~=W)lJWFzs?mzmlu`=5>2g^;869 z;63kUWD!dL?^?hdKGEy}pB{lTU7Lu?H3PIZCeUZU+s{9vxlLg9c5JO26UD+GSimGH z&!e7%`{Ks^fIoxI3iLX6%Y1L&E?#zoUWHje;`|LdMqHKZl11%1=U<rAZcWQD+6;7;LW+jxU4;kGmiWl;(i*jmM|7%`re&_>(Qk6{oVFVwQ2?` z)`_9j%AmGnrU2EWfn21;3NAV^hvf$|_dn{I15(Esjw0%v^L@I|fh61L(6Zaa-F+DW z@mhVlxbsc4UyW!L%*hTA0)5bI#OF#+oCCs zJRu22N$N7BEzfSON}7x#2+C2}SQ!V%@9HM{ZBIA}+ub!>dxvtE4(^`gzKM*Lur!@$dU+1js0o+|C}93EjhX+tKXv=&Y0xfDq>@&1OZHL@ zZr}>YRY!DVGa;;8|FH#0cc|;D+Dc6Z9h523z6ywqG^Sczp@Sg2zYv*uX8wFJa>?5o zJg@L!W16WRA`#`F@52)l$@mMg-6QxCqY?Cw_x6HtJSI)Y$K~<_#D6vFe9N#M+JBpZ z(-)EKvNsrXbW0-qW5QfRR+gTJrxEG7ka_-h_$V5yBUZv$|M58F$>X__tI6}E-A9kS z)Sd~ll{PE9sDMLz*mYl>Q%o2=wNY2l@JZR(4SecRvUm|dq5RBgy;lA3^jVxmy!}22 z=|C21_1Ce_`yh4n%{R%^WS&@)(*FCIM%cEmmfn4^N(Lkw8qm~p-iy)hHEj_R;W*G- z`1sT-^lC=(yT4WFC)m!r5$o@A|53_DihJ7>G4BHNxckn+s8d7rgAr|5Z#*G`l7^-L z`6P0DKISty_LO?!x1?u#n(r*1wMNZAA5AIhW4A}g z*?oK8=*Tef5^Q)3U zfr&@oU(lLof6l>FSD!)V>$UmZr=k+FUq)+%cdy&^9yDJ4ann(HPA4;zRb(IM@a$*T zOL;tJ4yu_z-wt7HPX`QWav%*#k5q=N!IL5*_EDu&9(9ZPuWz!H-VzvGL%iRQa>TbC zg=-L>P5`$RBoH^dsQ2|q0r=&oq)*0>>`Q{IYFAqoWdPq^zjJjnVFf1dL-Ssp8{m^C zRO=F70i^LTuD6`4^w!>ZM$uRBRl6~scQY;MfonEBuuzUBr<|H(=}^}x=cD2L!wpbT zB8d_8G^DUpL4v9lFL;6%qt_V!ugR}6{y$+X>ox&??)D3|b1|L(o}1igc56B@X+3E@ zorIi%VpVLUh3-?$xr}f+yN=EwWS*hpw9`xDi>E_!Lvx&KiD|LO{KNOGW<}C0-=h?c zQAw-=tjj3w%h_GfXl@9QhQP?u(J$F~lKt(U@4(;q?8H0Avl{@CBayZg)015Ng;X>< zzhsx5*#i z4YC-XKn5Mif?)sJi}VIhoHp!0YI|=s#D_sil}^GQA29j$q=+0(-6AGZ|EbC!A?>b^ zvB}7-BQ=B@&{Z{+zz7~PLE}KAU6T3aM5zwJKdm|PcBA}reswpuLGzX)BHfW2sH8LI zBQcaxcsm3_N)w!G#hLCW?5$?<>wTOV};69Bh%{zdc zXNJs9V>>dF5cr}W#!LLqoD3=5E}Ztkz*3A~ElKf%uzDUYARQC7is@LkZ{$>^~$DEyTm zujidw$0heAmO!8!@?#srW^sIa&%5&Ow))Jtze&)GmCnjbQ6xU6jnzrE%b_!@5T3o} zvsSl;UnqZe`Rg&=yMQ6F5O!;FOA3t5H&R|A>+M&`k42CJN$zw>QLMb#6Qq0#^1ZvO zE4?3nwB9|yx>;MxAb#SiHn>snFVX zB=rFITxw}2XMlT4bCI5}4&GG5+HC|(yIg1O%_7TFZjB!%BK$6pE|h`)tJ)nM9YYm5 z8Q`wP6VS*m_zsg;o(rjUcT(fHRCi7|JmfC;ze(NI7|}?OijD-iyota(6Hh^e{0+U9 zr9=BXiJ^=P9TZWIAVb`9PEt&1{8^xGi3WvueUK@0AiSfo5cUAER?v4jTc zOE=j2aOg=MIK_py%N8hccMdO_08`r|T3?Iv4&S@qDiK-EUmcwRWK?aQJc2|>5T|@Y zhLQ(-GeQ3tQUnBAg;4DL>FJcJ^XkE?BEw(;)F<*t@+FJ;rZ!b&1d zRdK)RysifSpW9aGq7b^V)cgw*GwC=?X+JC?FWmIzLI-m$c>$!yQvvcdovfV26RH`4 zblV<}L8@h6=idZsNl5GnA(r3Oz8?Vd6uLE3&R{R~jIfJ{0JaW&mvWrXu2-IxV%uP1 zD#oC5zajUhj>Q*%LRP+-jZFZgALOMzN;&8sUpq}e zE^BJoiENPMET`>qL-y0x+6?sc^a27IiPKY4qJLvJOmK1Wk+^qPWkXIFYfb zO;y^anZZn6Y};c8Wu%gZd#!i0Y|>NtbV0EAMxuZawp5PalnH^DqgkwB4@D(lip36Tm5)Y!cqG6gBCCW%00$fRT4=trLb(hcD z-6yD{ly1##%Me!(}~& z_dhLLXlt7uJyF(gd?E6A1}HGno9)TRvQ z^XbI>WBaY{Y@NlR`3_Jvu#J~54z=>&;IpMZ@05$E{UoM^Q{{fwRFd$4TxX^qJ6P$G zPegCC6VDpsa2xc1`{jZ>ImpE3bfbP zu^nM}vJ9~4^|slvawXz$-TaYb#!RL+PQ`J3R4Vr55r?EB`fsH|AducH?4@=%etz|| zZAYgNXR$PpvsAm*g4I|kYdUeyJ5nwK;aWQ>ZSMp3>UuKk38sMjRzso}^eZc7Pbd%0 z7ff<<0dm z#ie`p7?W`IpxF>fMhJfaC(xl5t$8dJ(dvmu-revCLLZ|}0tYWW+_x+&`3=%go+6AP z+fo-l+QhR)v~_9j9D!{H6&G^sYz*Nqxp6c+J*{t8bW(?tbjS7{a*6nG_SLVHadu2B zia(wTJYrX${-eqrC!?>5{Q&t*4BsgkKn*N8eU${}+GQ zkj_XJ}y(Wjr>j=$B%i(_tz?jjNi@c zU|RfE^56?{7ZFePCJe{|f%eSv|&c24$^#LQ=jee)nwD03HQa@sJNqp{NU zesuzw*?qUx%GVOm0zmWCvP4aLtbmF*HgMe&%*vEFgLpC!@!Mry>4@mxt+QG$^G8+0 zlf=dmoo#SX1fn*Cp$kV;Qivn(yhII-H*){QE(Gt|Tc4yLfN$PxxR+)6uCbX`73$-v-){*Y}i%l5_qKfAOZaLBXx8jTQhH zV=)Q5@xh?B_7xTuoCKb1stcn#qC3vSTY80fcl}sxC-r3f3>!c^ROoQojf!ePsXU^< zbr-_UzA)pRMPfA%5khdkYU*1gC3ee3~of#-!zTjcM&4qETGC z^4=ZfI(8BAl5Jmmv(oDAJVfhYm=qHPurhG|Wq0PS*Ir#$<2F-;DW<%ErTigVXrS@@(cd?x?}IC!SfMvhLzEV7>BV zL5JVuOTs;leIFI!LO8MdEgqMgR8IOEN6J95YN%KlkszP_EI2-%p!|*h)vWzhL^4FP zU0xmsCoYoYEc#nzf2lCXHrc&D$AlA#}_vC z?pA-_x7A^)p0T@LA#Lx7e`Z7zyua%lx0pZ+xa=-#^bQ~(P<+evt!KKoz%j!|e`h*5 z`cDvhz08?|BN@NbX@kLo26=_U!=tBvh6mBmpFe+EIv0LMT1i?~qo5()!~st60cm47 z?VBgi&_reGWuu*=1vc!U7a~Z-Ws~e~xf!Hc9TyNpnki3XbGj=l#Q%ng13na|%xmSyrZc>)#uXqXqs z({=OTw5{Hn(CAMpv(RX;VlZSfgu+}6hDP5z5}N0&lL4tQPww24KF4X0zaUV%DNd0w zK%xiEu(!2CK?W1F)|kbNF(fX=Bk`Xz7M&hEhKh3xpA0&qWt$J)Zpj*izf(WnB11wA zU~)Mtd8`$#1ow5et7p|?uVHi4ijaHH^7EA1y395$;`YhFu8k z*f89<6af0)oE7V%`Tf|1*ypm3OTZO_+(oh#cVD}=&1PIeZNud z+&xKqjB4rADgZ9xYAE+|C!^8JXsRAw2sRaDB~TA^0O@)xd_X%N?#>2> zeaSqMuW6_;&ZxkkbU!}vVHQ(ou#`5C@)esmUy(cH})Hz z6zVFYZo7hK{dCwWJaMr)!RH4^Vw@DTH?v~Dkn2!2>td1sQkqcEIj2o-Rcvy{ZJv<8 zKR(g8!AORXHZ9$>xG8>YJ(wrO0IRRitvuCSo(x?;D~oAy9^Rq2slov}WZlHMI!(wj zxhu++{WMHEsB|j|)Xd2M!^qZ>0U$A7OOK=j`74F#v%vh21jXT zx`)+a@1O0wE3mbNtJp<0O3S1yqn(pTN-3(l5Xo(9O7lO#N~N{V@?Cbj z7wV^}HH11~0mf&onvb61+dhvzvKcyFHukc|1#P_KgRkb;VD+(P$!|4#%z!En3sQzM ziMq!elGm4&TRs%)7F2c*K*cykL%3^bzmC@l_%&=un?gAiX!-?OQfl7+4+`>N{~r{D zGIMvf?Kr#FlOUy%dDv?-#R@GW0=PIf^FGy9w+XicOGn3*M8M-ykx?zVof7h$d7D9c z>eUT~tObiH;Va`TSvC6?CRy$L0*EFz`zvg)yES1m)h;u{ znQ3u|2>Z){{q4p=PG*6EK_cCh!?^aCY{8fZnZTjr!^V$Bf#Ovbq`$4QUtxA)x#I6# zp$p&pBU5hPi44!4EWwFwj8?1*?xXcetJ#hf4E`sSlurb9t{|Tll6XGKwd{YUaTjE= zR2mX|>7~bdm`9k=UwVZRh5^+<*aSVCyf(pV4v5LD+3EhV0ieEx3;z$Paklg@Rftt; zn)G7AkHBT`?p`7a7$SDv;n@FEkg*BiOQ9$Ik0{ak4^g6O)l=s~8puY|^nr0cj!6_q z>ysB{iqfV!+&sFnhL} z?MXA~71T3{!$^!H?4%kw8IqeMH0gV;W_x)nj+*Iyw-ssu~Tt_QuM_#tQAk<8Z~ zD?bMfF4BDY!^sKvDl1mGksni4AOw1vPV?#r@9V@!Bp$eX7Eb7LnGtMLP|5uM(*zwG&*P`=NZ8fp=Sb^@_H`OOcH ztozo<$(Akms*cUba$|csx{3R>Y7B`5ac4eRDP;waJ&uWa97J$&lf8Egw7bMFZ~FdL zIky}>xo%K%n|Xhk?{{t zrwl{lmiy@3ZJRCqtFQfoW%<2Py@xhhcEocDN8h|E-*K0_u_#Egk{j(z)!3^b0L+An zcdK;$N8r^uf^y-q5U{W;*?Q{b$?jLPE|WRv`bnex z!q4q(wON&3fzsnY1@D)0q!WM}OXX&(m6^59DoKlneJ$DI2|u(hM)SeP!e-cc-RH!wG<=IO)a~$`~RW-p8%& z5MY(I24R#40h%O6FLV-VV;|Y}QSk$Pu%4DC8`bZTg413uC+##`*P}#QG{ZS)@3oj} z1?d)0Ipz1ErR`_ez3sfAFrO*=s`5f}OrO=?V|`M$ZFhhV3tYxSA;v1;T0Q%1)?im! zc*Vx+I9EzCD<0LbYKHyZv<+CRsOwY9eJ~{iv3yU5dBa9Pbt21djF}o7-Oj2xuqS_tN@@2K$%_|+zNRyvWy^-X? zrZhb^8cz0>;dgrx!;%jN$TBxaJpiNuLPi$tJNZ5I_Owttmnb~Js?(gHYo7Uqf?QeC zja%W``dwu7^_S`m3iSc+Evl|FVGibnvmFBW`=SyOaltQF;qf4ag;?-9I#2eiRa1EI;?>5*sm%`G+4-x^wj3Wh z(f$O`9*>ag-M+t^;f`-J+K|+(l~U>SFn~wTtZ|gjjSI;oYfAg_PQB?D*pK><%?3=I ze9Cw-U;RRa7oy+qpm;ZVg8f7Ry@c+x;y&Eje7)Vz6tDf2?l zaI^&luGk|bzqPlNFi6u*%x(9P{&ts-q zac?~!We~a0)i!iZKu0LRVk940o}1f~7d+?p{lSCs<4P0i@we0h>R?UJZ5^Xhb0jM> zS8?q$2e@bL%uc&&>b&(eJrxHyBS^{cFn6R^5ZTSsN@^Y8vwSl)u8;P^Vt{oa1D*qd7J(% zo)-tLsrBJ4eBE0W%vn5-!Pf3~O3}BwtkFD+~IN_~Q16YZ6T8zQn`D+L$SpGW{*5?JFgZd#QVvj?=6WEtuPt z>EQb8xpJ4xhqYHbr`euYyXP;M8J_anZsI-~Ft8538K0f%SEVWu@Px&XNumKjo3Yuu z{_8vFKWuZThiop5vUAA1AM0*&E$UJzZC-}h*dRZ1{PPRAHNSbpOh-*!{+SXMB!w1W zOL@<~6=LosnA9B~@w8g>3oYtARKQAk*nnc3n^B5(AY8%jwMF#SD{ zly5~gv$0r^8Pm&cNcop1i`b+(b1Sc7|44$TlwVjt;I znq!r7+F%kX`^m@_^@}p^){HzvBZmWlJM{ECUL(4(38^k7OUE(Gq9}8yv;R^qM1oJt z?~P{Fds6Yq;>8h8;s~|T3v4gX{ zZ)wX?T7LdTRw;F~(!9Zz?LM?wEu%#(vSbB+@uu5bc(HB28tIp^)Z(z<)j$M%;cjk z7;E(GO>xkNO*tJLTcCr|>s#>LaBr$*B@tT0_5D_|G<9)V`}*puSt({C>U!z?{2WbZ z8K}eBd11kLw(@!$H%AAf{z2%aw7egTicVy!rcxs_qeCYm8W4mtjQEmaclAH4L94Yf zKoh`MUV_)h2ZssH+jRj+nmg%RtV=i6ZyWKLm{98mID;r%K;=awU@+;%dsyHz=1f7R zHIUS6n$`2Qxq+N)#Z|JDsaYv_)=^l;CopJHo)95zRs~>1Mue|SZDGkO_&B`S0?LMqg1sGJaF*uIJ9s@62*#tOT zAmcxBJX-N)Z+N-`Ah|ZUrPbI-GLZpm$wbJ13k0$6lq2{oa9U11rIu&aCpo7VX5=je7vQZmU|8R z;K4Ua$?ZruL{Lxkoh!9!-xc3jhR(Y9NLJ$%BjkV>8;f`zilR5h*i2)3Sk5|;>`PON z3Z7@0>RBdF^fVdC@~JnxrsWAEVKX|s@l&-CN@?4GG;FHSUbGo19|=`oX}u2*BQPR6 z@y?OPsefN9_xO9)1cZHV^_Ah~VPU^n+uK%N?r(j3jp;a6$E=ahXNaI7NrEi;{0C;M zw1>Z@yy~d8_a>tZPm-!OE_Oso56=n592Xv21pyu!hvX1iXTiVQ{g zoUMIrP6GubUF)%u@(*|_k~ke-m}Mxa)za?;4B24J>R+Uo>${RcvJjo_lZRnWubcgH z+i!3J`Xz-B(F-`mb(Rt_bhS5rhjF&nx2$X^o@(xh3_cVYTRHlmUzdI!~eBSXfwu1;&j^*d%P0 zEmu|Y&_%1C8ZX)*dDR_zC0se}B;)QS3fis$X`F}b^Ypf=%H^thFAwHM49t%Am%3ZE zJXbR-QJD8C@x_(5Sb(EBFax4==ihqH2r2%hOi9(suR2nnC0PJjjilNhK2B$oaIHLx zEyk5aqqDp$PbQs4e)GH75RbS+fADWdzHR3=JJH3q%hzz2DWh6Ky@7%IZx0`@{S7oN zW{r3ZrXwVdzhkz$_96B>^|;IStwN4(!xnta@>4+jOdE9Ltt(*F^yEaqo4@;tY~(I{ zp>0t_C$E8Ce5*;i!Skl@AqN97|LV=G*%8+$R%>r?g}IPb#)@Zll-Cp3IB$Y0Xkue< zv$!;A!d0YHqU;K`k3()Wfa;BaoW}paXrEKFoi11zuWv<$ttTvYI!I`9=D=L#?ojOE zB3Zrg;W68TfC<`@p9g_%ZSIbsM~i0sx=}msBRTU47BlbfuZu~T^IHY_Ra`}7xK6yO z+tYI11T}cn4p)~4`wD2fx>j;XWNkiD@a5Glzl<&?*lKj7XOO*&I7TUIdyTgRwrFxg z^rXUTaY=KZ=JVxSC+I||bR8`2JSb;VILW|$np^5573@IiI*s2#okj*}9i#CD+ZItI zDSO^ZDx;@zSY0duCKAm>J>Ci6QI$V?iWRfa8yFTAN3~ONAtY1t_*ac_jiUX@!EVaL zmA&pfkzNflWM$BGnf%1W%j}DJu_DclDZSzEbH`nx#c;6kx7fTy=jjPip1zR9Y6J4M z;sjr{uB}jtvQc-kI8Nv(u0f!9AUWF$vqpvWBudGn`b(nwi5{1fpxGj7zxBxc{_Jk3 zo;r1_txU6z)y3zuu0(kdP-=Zyr74!&@PPH|0!v6<;)RGR2b?h2w$Uk*p}u0CSC{D9 z?!Z?^a-16nn^}=(S>fmc#>so{BXWd@V0Hsa{@8&d-InumaYhZq>QIxHIXroXU=NRu)HwO&SqNQH2p?0)Y<}u{ zp?&a1>FFu6i$qk~S3*H!gXBF*10W_>eOQbLTj_Xf3Vb7hEBjYPVGfNP&UUfDZEbnv zOL_>0%fmC!Y#wR-`Xrp}{5!SZgMz!wASy{U8U*`;5J4VLdjG3)PtD z0GYDb1m9EV6WMaDHjPQ%MV(V+aw}!r&zaT5v*t66&rn~hd@(J%{UC&ejWfD)GDwmk zo=SVTtm#X&6O*&$BKpFe?d33M#b z>3xaW2&3)UkDDj$(wp%NqbqH;kE;c_`919GR^x-m@B?{o7-I>{GWqI7s?=7mZzg8A zUN*hXxWl2zx;9jSr9~9;FE&dA`tKtSQ_r3{ZkQ+Ak*5*bi7~-oE8`xUW5Cub?+I|8 z)@q_td+9HhgBty9YZ@8(R*%ud@Xd>TM@wgMnu1hmX{seRU~X!mu~`VuE$lM(0co%u zpBdIkKYXm3@6+bApaNReWZOo?xur7Lc9|KenQWf+qDR*AmqhYaLjaRk78-<1W@IojTUzIVqLjm`FG9=v}_>u!j3QJWw{(rp3!LqyC*w z?U$W3>fCCiBIJ9(^6&4?CmTdx0B z*?5=k?ZFL#)Tez?xO1AX-kMh`d)wko09pdSb#De)omm>BegKG3 zl-H40x^2h)*6Rm6$5_eARmQOK6|!Kz-{`#0jWFvz^1&oIoGwgJ$;6s>Z~*a|w1t+z+qrfO1lbc}LS-{ULjEBjm= z-a`c)thWviYb?gc<;idyN}k^=y~e|{Xf)H`+Cb^dj^5a0;8L%wb!;#gZ$u%-{r1$i zMO@h}AY*0#Wr`6>jd^#=y3SV>C3E7i3g)pKyt6rHjFU6NZ)qI57*KY|Ip*r3cNmQi z|8YrC&Sk}KZgfJMXHnjMKeZ{!fEQ^ys3{3FwZsCu1mqGJZlLG4ExX0f+Hp9))rLVS zS9ES2?q-qK?Mvg4(!DUi(aP6ulHA~Q80khb8lMgP#dVs;_#2$Rsj6?K4*CTuV1>p?-mG)%T6cT4 zH0$%CaQL@y{947JKk8E)*d4xmV3)9-zfT1&r}d})TAL0bHft1Qmr@RG6*}iL7^H-x zuarZ+X04gBC0iXv9 zcJguw8_urZlS{TLEV}9I{R*4A^>Q*#ab=lX3)Y>lRUjqUFE=bW^DIWWv$HVJ=>9s= zF(V|`$_A9?Xms~2Ei;(YxdqoeG4M{rpSv<}KRVIQscI70wzSdY^~P@+pls*OFEgTX z3szHXf8c2+?H0-e-sb{amwSb4JEh6=vp;z}8+JrL($xZgGmLkc&vswz7=<|iP++2Q zi*5wj$^F{60h;q#ml+3mlk%Bda19K#DHm_+1t}tVUA7TM+<86x;)~>s zpQdePU2&4mY`Sl&)v&lP)U0IoaAP{i$5tj(6Y+yOE>2StdR`AZTIl|2?tyTHb~@k6 z7@r(YpMp|?gTaYSZhr=dGN#KbpNU>u{Vc=V+pG(6TANM*{?$E0ZSYwR6Bh9pN2#h% z7KP(@-4Q(7qPD+<$pvynh!3eO4w58`BWbRWxG%;OI9`ElR2aq$jWipXOf>D5a9Ot< zR@a1q?i5NTwz!1UcCfpb?e(0 zRO)_x_i`yM#T*B_Bq>d(vslLMWKK;deEcn2&`+WjPQ{M1V?(0;W zAq_W?huliEpm?XYzMNr9!W>{x#?a2(bn{?{`nq-NrbJnnSLa01cBPjGu%{=vSg!`) z5gY=*J14mthDIG+zw8^J1sx>j=7=RoOH03g6fN)J;i0Xq?d2shk{UH5s7SZF((0MS zY~bSHK&Mmp%f6UhMov!dc(FE5nQT}8DxliaIDmjNB+zjT!QQ#BJdjf{gC&m|SKP5F z71Bzfo>Q87bt>WakT|}z)X`zgUNl{to})HX=peu-$3eIOi61)zx8$Y@CGxI54pp+I zR&8m-6Sv(auyjw1eNqxH8LfHu^ib-mxM>x29riFrL$h56-mZ5WF;O2j*&hT*VJO16 z7zN!kF~#-e5~(ickeAS_6ZeiIK=$yc&*LbMGjC~v{JJfOk@Ev^9_@59$ z^yYZUi+fSk^CL)@#ffp3s*=#VdH$5`|!__FdI(v>}VYNt`5TQbnVV=@tai!mfkQgKsTk8 z+ln<7Pt!ANWNWYcRd~29Nry0m8>eUM1}%7svow!a3}?Ig)C1l~u`zo;Q~tIkL+I%u zg*_<|*<61FJsMG;G%6od=TG!zYNgsb;Yr+1`2NeON2__1c%N2j**yEnyMhhN?DxYz z0@S9FNi)dw5WQN-*k4i5aAp+Bs~@Dy^7D;P{gIcrBM(G*881m|PE$}mJO(eF!?ad1~5WdDTSoWCbkS7X%Fy2W{P`VP4Vs?k_2 zsm4CaIE?H+$ju{hB(U-;{+0fp`bVB+fA7Zb(`n!c+xbYG=3A)WI(fa%jTgLUaq&16{iJ6j@x5OwXA)8Ur-_PioO+A07 z!naT$m&H_}IvY`Ga{xj6%HMMrSeyZbkU2g2x)T*Ee!iD<5AOeZkSAWEL%H%>fUcDp zZr!Ye0x8WixDdV2^#Mvp8h~u2RN9z5Kxx?~OMj@6j%|iR%v8yuJn%jJQkxG(ipI z5iiwgW>aB567(`|4&?NQi1HI>sz_hb6=#OmklKtXAY1FW^8bRF# z_HxQDKhqn9=WXfKV*~qO#M1eM@9JXg-guR*`aa53uU|7#jQIB?ZNKp1c;`~fFN?+G?X@pK<0?GroN;Ia zpX*fLUU^Uo>6q@{WnUc_J{-=G9B@_V+zrpKB^*Os#>}}K)F1lW#x79CG-FoXt;Vxg zbrYYZ5I5G`SHQ!&`JNwKQF9_0JOq7;N)`y9dWyHMoIdz?I+ZwLC zKML3zuTypV3F~yBrA3=7L&z@y7S3ZXw?aR3i%_@T?H?R7*T6;^?(=tv4<%+3c1yRH z?gjb14i3gW6osnf{+^)I?{8jmqi5Qxm3;YaF@>64fyF@R;*uiOjOR)z{zZMC)msEj zha!?xC|M&f>==TEeP>HH&^M@|8#$xXS2#D$D5`xWys?!v2qtJt;FeK9h6M`N5+vUsXUhKoWd-H71@G$ zgWtR5_b2-#GBF)l);pBjSoydq-ZF2WF9aKP0m)b`w|n)D|Y7Nzm1mCnN#TvrcVS79f(2D_;_4m;>IWb z`uugczyrN|Q`mVNnRp4w4NS9H;U!>ML+VBxXLYdDJMVFL^Xf^x8$3$0x!uh-H}z7t z=K&f+o1K_P)K`RK=08(in>A`q8P}`}^3wi$;=b$R`O@Uv6c8gv&9|(%S=;3{ONmi4 zmF8ucClduJ^X+c4t`ic2Cg2vsR)gCMu~0W_S~SzkldA)MFgdLSZ6B~5;nJ-_uz6KW ziFV;>bXnw&8&e{5rITJ!r3tKx(ga$ObJ_2Oxi_uiym_-3$%JsaVhs9mFL0hVO$mDT zw++}IcZf)$&Uz*-l^{!7tE8b??tks8MPmfkyWj1b&X#p5B_vlv>d-Gw? zsifnTylQ*Ve1E3GhN{Cn#OzP>B(CclJqTJb>F!}c+sD9HTUn1Tc ziubQWgr(^^zl(-)F4o!n*3kSDu7WI7MaYi{wEqulZyD9*x3&G!_D>CKixqF7xEJ>p zEl{9HaA~2qq_|59MGL{*-GXb7v{2lN1_PCuNJw&r zdo8l=x#sn|=A37nR>yVy!`*&D0nYbnd3e<4a_kzX|MkYiAh$SE#l&|q-+Oir(+AFG z?bmi2&vMiUNkZ689Zp}zXr$Oq%i>{edZ@nq*EjVpo=ZY@Hm3iRN~we;E)oO9B?s`b zPkV7rC&p*Tv(Wpy9beQvvn&R^DEv<@z+rG!r$KklpaMLYNM5wIR5y0$-^8&#FsYH^ zTmplKe_($bn3aUuNBJKWn_{Eg~wPnZ5A_We;5 zSuh)?!_b@#PeG8y{eQ(`yI{dd?u0T(w4x=zG_eqO9v4=_$}$1@dzYG)*^Y4lOQs6h zFfzXdchlVQAvP!b2AuCZ|h z`9_|aOHAx)Ya~N!_>;A@(qCto%R5!5Cu)=kS*J^036QmQDoNKmERr(mG#r>-ebHKLyJ6h=%&4)vBPj{+h;Bbci<=z}tFGnXjGO^W zcpm6fn@VBJsV0mj@ctc!sz0MKi8?Hayl}6C}DL(fWB$9?QJC_J}d?xUDjr{rB^^Fo@myaqgtR!9DiLJ-pZ}R~V%YTe3C!yapH|s7^fDQ!DL#Apx5zSn?;}sl- z48+~5b6FJ=%<(^B6}Ts zQRd3T`s>M(F~_+&)oW7bAGn!Pt_>mcJXk3EkSF`AFaCbA;!}KNV#CKwiRhzKn$>N% zI;WXGiUG=qRgF_8J*QoSp!bwa^K;v!G2Rz3a=yJ{QCdeo_p&fvJF#!&QZgyt*naWF zZo`|SPt3Y{7T1Xw-0Vc1fVO7%kLQ|Bzbfwr2YZz3fFS8eeyq7{*MyQ^8B;Rh<3Bx{ zGVhVCDbJj^kT1!=Z&aD0W`Leu(M;92<0tq>`Ye9-aPHSqOr1DP5bD^`p`ue~u!OHadVgBa@v;%-D2TN8n9U+)1 zc+^4H#)a!c150rEO2I_z?dNeGdUnrqznUhc=~79m){>P7aZzRL@eivx%Vbt&2J8rR)6$@N(yJX6#PoTWzA%p_`73=CgA%DyMLL zBrg$Fq9X?j!o)T?nN}DSOI^zd$GcvvFKT9S3?CHs)q3=Gi(sHH`4T<0?2FZ#Aj=TT zf#31Il8%Xzpdcacjm_lzZP z{}-=KQEy``dEXfcSr&|O&?aF-;PIbnzJ~+)mbK9JDP?1bnfY0U^qhs-qwd^G;cq!V)`;+e%i|xh)=O& zo?qXYm+WYoJ!aYW`|#IfU8madQ~T{7XHEwb=id>W#MYy6rp=#Ka$8?qakig-KIe6B zq8hQ*q)nz&fchab$iA~*ullS1rp7wk9~@c~mL!8b0&O>9h2V3Z_!F#IuX|29n#fWe zNj~=bFX-F8e4wzwUos9a1{oz?6?=mcTPL54XW$-DI1Q$+rR6#c1Q(37wV)YZ34tuL zgDn-5zE^uS`e$u*Snmt<-)U|yaJ5D6-eXc>uuk_56LWMB6cQ1i zb}sWR^u(uBG%Q60=F@!8YWE+jKB z`YHk!dZs*-NH+7akBm`8Q47pYzm`kKbV@UFj7rA!PZP*>Q1aH3S?-HF|FWrl$@V+b zUml5?*9?#ba5HpGdxqP)y>GZuzKrY{xbszek*lXwefH^fkE)O=uDFr9ipcriqee-m znaXhj-ZP4St%(C1vO1cT2u0!JxHuQ?18FG<6)cOA6VYQsQZkR8lk82~FNK;_PwCnf zeQ1*fK%mEa3!nRM7N1@xK(2TjpJ#wWO%`6Zmae!C7;JKRH}>RuL&9etF1EiULK{5u zL9D&$9@YLPTaYgcdw;Ot>-TZAtTYoat|eCAlnz=4;j1M)cu3g6CN&;-F>n_FekB2O zsHdcCV&O8R7Zew?*tN2S42)TgZvW{OC^oYNx9gMsz?YP(a|;N|+rQQtV} z7xf!Qubef-_4W)4v~!IEUkmxg8x0+we(N$2mpuDoxJv*gZxy?x`|8(dl*=TT?SQXsa z;E=xad+GhDR#e%pEf}G6eK?g^^HDq9rfb@<~SCI zwOx)h3@fe=td^zK*9xg%;``0M;&-NbP%dSgfiV`CGU8<4e4_G-w7@zI>M}kZl_XNWD?_ML&!C1 z1gJ@f*bHo#yHw~lnvYydBonmyX}F5s@{?)yU#FQFxSTqvLj1Y)|8X`|SI`0#tV@t_ zfsy1dnB~Zzm}~1`oWCN{*1uZ@RBzrbxj1ZnQ8iiW*(>@TH_(;?Jqx|4td5&i6B`z5 zfboYnv6e~}kB!7Q?MqnmED4yotow)3;zhRT1}838EN@K-BD>D?etaIR9hx{FX_zkP&|22^H;Ls z)@0a)3(KN@N~ks?7u>ZaaQ%MrZFxhA{X)Ro%7#zv>)X$yn+Ad!i{|SGWc0h1fYLWd zQ=6s16=vw`?h9g5;e|l{U$1|s)sUDGw8aYD1j|{eK)$S8Xg^gxk(-=8(rEU-oQDm` zM89j12|7N3WKBd>KwHzjqe2tyeW6B9JiFgkO?&M_Roj+v2ZVWGN};SOW-&AciMTyV zr}bdn*yK_+lN1~L;+N}C$>!I|Kyh{qiqSJn-uJ-|XYUn-{ip!b;#fY_TyJN~ZE=&7 z=fe^n79XH2CMoh#XWenpu7NVu z!S|Gm#&iu6Oxp7D4Mymh3wxfXWEEo24Ip6We7;llv|eQzDVv{}mAM(F`RNnOm@rX+ zdsK-kEWeOIZ$QnzJ>5?JkpMN&QbVK=nwrX)AL5*$kH=ivuc=ULMVoOAm`yycDO*m@ zE$Xz>^eSFSn=G>UGO_}W%ki~clT(~xc$T^SQ*(T54{{!DeN~FTZ#WV|XmsWNV_Cky z&H2qWz%|En_m8}u_D1_TH@$fNACEH^(ob>dZpQCnqGVQ`d!*z(U4r8Xx739?xN3~m z!8W<6y%Ug}{Qf^tU*W*&Wcv&wT#E~HV`#+UVq?2xgqUWY**{94)RjyN6(8;8b&;5s z-eKUR%gj~MTc#!!zioHx?S64y$JZg>l?X_-YYc)5Tiw%-y31PWIpq4kq`b`#R(nh+ zDkJA7X_;`tza-=QIlcmsd2@#V7CNa_cQIjahPJKbX4c4QbUf=#|Mgbut@JUMQ3wqig47`8cm=jlbcP0!f9R^Z){zZpnjW3 zizvzYO|H$NF%s@`L5(3ENEd-bxAet{3+l|4*Z+r=>8*cek>`8IyPeW!UrX9rUobeo zyG{<_b=rguOivL#}25TLEk5mhm5F zZt?Roel@tOOPmtH(tbM(rcW)dGRSM%~9nHVHc$1^Z(=mw6{U$ zaX7ty^MF*lp!|(<%PDemkwGzg-k{rBf7(6=E9wVWVCCnXRpoVRqCW}s4sVh1s3slr zXWYoarsizN_gq=QNY_?kV`SgNl|K09yx?wfK} zww_qI7<(AjS3FeuXDNzxT&pgsIm1ylQ zgsZOKx$0MBh=}E5^-_|D%*XAN*p7xhZ?VgXMu7eo*qY2lwWRcynEU zYSViQaxUyg6(v<2=I}B6>g`b=2wR%da%mki@jsKxbJgqrahB{!h5BiJmdpcS>is>a%K(Julv?W^nl!&QwA(-#w&l!L1X0|5_+9J59d)4@1JY zdoSBrW8wmBbex!2-F&0IhG(X{_ivn~($o3mE@SlAWQtK|cB2Ou_8^;I1Nr<&x zv}DBB0H>{p?cNRprlcAV$C>v5Ym-Kph-pE)txS~dMcBLb*66d-*g#()=>jv|0X;qU z@#})slTDv$m{OWd=-C|t?_e?2fpSiW2W=CriM44`XBmSY==CaJ9NZK#*z z%X%2)hC(@ya81-IEmMs9o-1vOOYPV2OY?u_9L^F8y^l|=7(GC5P+rJsJ66irEi0=# zLVsbmLXWGhhE{#&#jFH%6FO^DP} z%asOZ{ZUsX&lg~lC%d&=zx9}MSK7Y=_0r|G{zwWg>2Gy)ok>C<@>qLz^aCqHwd7>v zaG7+?@M(7BFwUj$_Je`7Q-JK!Nx43Kf19qY)$8g{hQ8;tHcNEmezqHmOWBR-h5j$8 z;BOj~IlH=wf))n4wF_vLZGTn*AmRF}GgE+Wo~p~#Z0a`8ou8T=OOKH^nX6sJBh5I* zx`n`cu<1&sx@yexd8_ThsD_dLwc!7`MM1J08)}}Uq?%C4BaDOCTCfL`LjSl}zqZ`F z+@x#M2+XN`OhRAHoi$q(JIz1{ftjU)FEZO4_IHJH)E!C1S`U$syC#e((S{SgKeLyN zF5VAbr;$bUZYaHXyyzbVMtJApxJ@hVY5~G4#KtzMpHfHt?NlBfU?rnM#hrlr`;rJ( z>90F03>pW)-7Y9#Wr8aF`)UHkZZDT7_ve?&$}U(~4eUe2l^Ye;1J)ZfFlEcc-4M|3dkhK`wLYX1sF9TC#d~ zh0EmelM|_dVZDcf9#kcXIGR8I0~d2f0MT;79RJrDP0qrid=%Vc#%TsSf)SVGx+Fya zA!mc<^{O3_T8sCKHVfSXc7!K2`zaI8WCN`Zvn!wEnrlFpswVJ@H|~;=mViig=g^Om znkyu{-MjMXMXjd14lOgb8e#u{p9L)Ys;nB#WQ>~;??~#heh>b?T>^)mF8rltB7s?r zB|wr3t9^gpUW)cy9F3$Ga;~O(eR($beP7`LIUr++R2$FgbvKWx%k=tsnzPc%#bhqW@A*ha5+`EsS zlOAZB+H5Unywlm?kyhP;%Lm1JB+bxA@!l@D&JAw9T~B#Gm0`@fN1O#O`)wbNHEOX# zTApQnsE9*$_+S6-dtUc;87m=axzcqglthCn6FGCN-r8y`^r*R^Pa0_nQ~h6{{uEmn zMNrB63JOG@-liA-{=OLExqvHD)$FF`15An|T3J)9naPPKFgr2q zMi*3y>_MK63EXtTA!<(OZ&lmLr=;~U9{Yt+PpeF&G6k{?+b-xzvjSx!y9kzw0yJ?b z;SO#E=N=C|d*j2Qf>YLm0^@$P#Ta3P7*<|UjeuYL=!?l73)F#GamybKl>U(mjo_Kk z_<^y}Uo{6>!>lIA@oLp5Aqy1=jfs_EAsfP}Z7CqT)xo1APSWq?)hS`yn{RV^) zk@*#ReOf~z@&Y6p$CmmVc^09{qbDVc)d`c)KE%X4)FfhvhXhhA?S?~YgCHxYrNteJ zvZBxXEkr3xBCuHzsx!|)`=X$38@|-Nc4=wBF@WU+lBJRANg>Jg^-nEc;8)h9m#_Ff z9A0VidUw0I+rMP&ST+#maphDS5&a#GgX2fJrF8C;6lf_}?T0?JZF8YZwf35^J^N={ z*VnC0p=L59fkaRyg80#tkP&^`t>vlnN4x(4$nV$CMnuMT;4`59x>^*nVxBRs@8|~Z zrkcVHO?`;9e7vA?3b#UtDXB3FRqN(n#*<8)$okDzc1B4pvZD=nYjl{M;U#}Uf2o`0 zlEr61T0Pr_^03HpACkQdh9)@`C*Lu53J&;E_WC)#I8w(S>O!dykJO2PO#`rKR7 z%hJegbU*XdgqnEN@M%_3Ct{r*!_0TMKLj#}pQB(GLa#Rco4n`yu3^9AKA%#ciaHm> z+9-Ppw8`?PRkP|#^~RD@cU;V8H%G$)q_B(dPudGW|7S4a6c<7AJ%z>q-v^Q@R#J3%Vy z*Xnpw{cW+lUlZTd05GmybTc^RXQ|EVzJvErE{KA9TNcn284*D-O?z-y+F)q?l#VW8 z%*i0NjT`w|+Iel@khNuTIlASeU5#P)q5$LK}Q)ex*NE66Q7ln;SAl>x;B&Zm%*) zh)_|Tgv;XCa|NfmY8rTF4ip>iw9i6E`hC*UEy(RB&=6tL;SZ&phozNr<{&?U{cm&_ zU8>c2ug@H~b+Y}%m2JPd`LkW5!#%cU?no@trPrem`U?G>zxkOr`+nZmyQjxRzu+C| zhB6ee>UxuOL@lkZE}4AkMz?ynTs<8`ev$E$%qGqbjaH^4IE#94kx|e7`9Ivan0d2u zX4-Tm0C=c=&&u)P`2J*8vP`s624nVK?(bI!?tG2V;a#}-AK?pc26P%pO=g(J(c>H` zTkvM@ljGIN`BLO?1e;AQ_?AW7F{kv;`a}X5J5xArj6Yb}pB}_yO8L;R| zeZYGOx66K}sTsGG#;3qz`h@E-yY#3Fl+Z{b42_>t` zHJ(YKDMPF0i7EjjgY#@P>ddaib>3*zABQ$h;Wms*e1Wa2n}DTAKl zbjzf3)zG=$jKIY&N#Ao3nVreW$$1y*kJ;C6au)2IeBa;9s&bkbFHi{D8-2=H*jC+d z$m6@)MF`A-;06o5@`JEd(~D_8jgvDQ)zT~FxSS#}!w^m2$gWwgFhlv%Cxu1ERN zq9EQ(4>}-kD63IdJAYmSlWdxI!ixMGn!C23;-CLia5Cu}ka{}Mtg{`-NBj%VX6JOX zowdEmw!0%^Jf8x%1qggWk!T+d+i9sC{FA2(t44C)IvIYw$AN$!-|Eq~wat`PR()tS zgeR%zeCHW#-WGt>l1j>#mzZH`r_&q$o6n|{`^#s4uke90eazPWxIMT_K~T`pO))Zg z-=ir7?N-B(K2^*o6hV*kV8z-0+#NrKLJUAzepGMSm3Xj&acT@YEd9CblX|!Fmi8{;{x||;98#Eku?SaXf&G^h zFyHGukC#?(ioKmHgVuGmnTsvy<)0nOU>4peiZY1uhzS?8ePS7j7TB_K+|ikCKR-{} zOnbD?Jz~^b{lh6Qu=K5b;Dm&IqBu?^9sv&Y0fmCwkva(h)_LKPt!IJ zY9^q>#M9i$N)a3h@$rm!FEY-~&i;c6Fd%QV{udB8GxPLkzA`}tf$W25aomF!`+UD<$-OQ=TE@VA*IWGBJ<@VJ9nknlx7?=EaQUPV zqJkz09?=yaRj%Kk713Y;0d$5#?Rz%^_H!o+)nIBkI&w_ zhr%0QdZu42l0D|Y_H+S5&;?1AR$DE;oF(PbdRbh9AS(B4)aejLbZ+JGuEg9Q4(sLz$a21?otFihAE;7QvTtt?G~qD%1Vk{Rbs7m*x3umjTRilF-GrN*k_th;l+hE_EGI$bmj8RmC(8| zSsQ8_VOSr?l8Gcy)4|)&F;>$F5vz%fggCGF?!%iabiszLE}QN19dr(|5 zNUm`Zu`5iS1W*>z91vUlH|8{3fso01wlzqHBZS_9iEj3B2y|kTIiaY$Rqv+=F&ukD zSNS82dH%&B4xaK>R)wY{+O;RysVHkGlOomzte6L96Kl(Cz;*SyDQ=5ID+78HcOH!R z<0W#b?h~qdeNq;20so4-HJiX8*|C)DETx83b!V)2D{uc!bS86stV^^K3#B~GUp6Z; z6o*i-zij_||AULo{ri9K{BHu+|G$yj|9v0>0=#}X2M1ik7u=2c#R^_5>;D6w#xeW< zdh&k{3IFc{|9`OMV}J3&+^M3H5&}u@!9;c@JiI~qpE%m;LwTVM(;OEwGqaEoU}fN= zqobpRg@wK1@Etsrf4@KlXT*CfM0h{=EEnfx!1*|m)yuKR+Y`05&M`5>YXdCcr|b@| z)82~!mjtP!siPGiON5Kzy)jV9C5iDZ6T!BhozAJkfE0b?5gC-{j>M+T(q7Bob(~R` z$yp`O4kIQKZ-$n*m(5gg&I3G9kCyZLH453()MN;5(kfEHIZD>at{=SwKeTm!$Ejc_ zH1RlIH=&`G6UR}?0ONF61)~%{{c_;OWfG10*t9L+FVRmHU38%6=jVqr zL~!bqzQDCUF(<~=F1NJ=RGVh`(BkF3=%M~1?}WCwHPCFEevuOson5DXbK9T1a?eQm zQ4`UTqXTE;EB0S6a7}t&ms<;6%>}UoeWO&!6$T>3>MT$3o8Kk}$t^m&y*c$QS1F{y z`dE+NFy6u&Z13H{d$X#1M@dU7Ua{ci;)j21g^G%cRVwz%O0pSO@bHRi()ley+31zg zo%2+Hrs*B!B`0bcPJ3je#aPXEEouF@I$C z(`V`ulvFzc9L7Rdvhu7G2E}BOT4dx)U@a21uT|>pxug(pwPsMeFh& zx}|anUKzF=v2iuH$D#Nc5@kegC#J^@#B@Ym@n2@t&j^*@;6hP&Q-}hKp%_F|x8~X9 zwy4X7yv|e)5(az+YMd|m4Gk)ycgOw5;Nz{-8hDhmB$VNn%C+U~Ej5eHLAyM`&7l;i z_i1rb5;=DSUT(_`3O4eX++ir0+ej8Yy@m|#{({-A$XAJ)QJ;%)JK(pxPKjKgd5ECwV8=uiW-c6t8T$pVZ+<{NV$(X$#?@G(r0 z$CvW>o6}Ar20yxRz)NLd+V}@vz-e%Cp7V> z0&o_U$Lfzoac&^BMWUWK-L!_aorrsQiTRi5rLUIbwD7=kG00~#P1LF%f#RL$pC}b@ zFLc#W{Z0Hiw?W-S8xt(Ut;&h2<}J1vJslq<)^NR;Maj4xqL)D5ot|kzdKA`Kd%@>Q znuIhcq9#TLyaw0_oT#0$G5TEi4#h;>ediAuYAY}@NFQ2gbb_OMnxb>SOfrs|0Rs!z zEOCpyojE6c^iI$aB`q9HY=6GepK=k1jw&;S25CC#oJ^WEbu^xbnUqMx)DU_g%VL1g zg{u4~7d(z>=*{C(N_iy9-NBS3rv^v(#7ShL^TYXa-1%}X;><|4g4A~uY8xAGk=0Nx z`&boPyrT`yuWh9pJmM$$rBk`eR=31$Gb6O}H`Q^WKbq-~Q+1Lx;8GvAPbvA;kKGft zs0to#Q;bxEe=F5$Q`fbAu~|N4J6))VwTv1i=8+7DniQXZ|I??IKSiYR0$9;DU7 za+TLl)|yKR(iC9j)(F}{hawf>yI4Y!5*n?lw^GD-Z=Mzw7bkP-slU-I1h9Zb@8Eq1 zU#s|)r>RHIcs{|9Zvb|vE@q*5U&i5HbmFOf_{biP_K(&r*H;dgNr(!-0_^QG96$sN zQ^vQ;6Gh9*PpHFu8u#}ygqwYBmd|Uxx7*cetz`jZU97o4)feFVL`0dNOV3D;ge!hA~98+47mnbT|&B zO{sw4LKF&Xf7(sdoZXix?aygtFq2>1RWHoOAkh_aY9+YIkjfx7<2QwReVkrW^`6o! zGq0v7t4%RKc<9V}aHNM0Y%^;~%nsl9O(O!7PK^@)|nmmx&f3N;!8Fb!l|S zYTCy{`{(_uiOf+UdnXIWv#?R^r5dAVtBchv8e&zAAwxajlyy7MRaGP(AbG1u^=-zl zZLK5g#H~UQA<$cr%*NOjV{z*k9PBPb7f#O6eCHlK;B*u7qj~p&Zc5VXwk%dd`Wd-B z>fDJODhBI(R_^ZCc~yo|lJ?yW7ZjLoYjkP*BA;{2K7a1u=CGb!bVz3>gmFAXTO@*I zc7%YFbshH7f}S>pwYn*K51K02aKlO;VMYA7C-NR1KKtLDSLC9}s&}-itV${_XIj>8`v|bjCShPSA1=yz$wxn%*MH68wIUIP2ws6koI~DBYL(^oA*8jjMHMLhDDU zk*tY=8s*R%CoYNU)YRvclqq)!v(qy_L(C$kbWO_IKR{+@MfsaI>W5%YSFlo81*!#0!~#rI@)N_bde{V3;Gc0ElshMhNgR2sa# z`&lchX%Xd+Uo9G2=$Sb6a8Tevp!)D^QiW+bcchy6EbQ$sncJCC*pC>H|DdBJ4H=*1 zdMlYGHZSdctKZGeVb?%GlJ>7)kc|6bwAsyV4%OHm{E9dGv^@dvRSC;&Gi6V+j%?VS zEzRptt4+QUU29UOezqa#IR@V^oV(oo+1f%KEe;D*!DB0Me}i*t{kwKxyeraL<^y^P zlH6B1J_f_4=uitORQop~FCBfxzZ_iUu!yQw7w!g!HPh6NaGKCx@uI6F{Q|(C3E49qh?72=-?X$fIP$HH8%6yRC zc8P8nt#8J`;&8F7p4B3PPBpH}%Qc?`Ax(7B#a8=ms9y9McWaCB?A2)7X)y0YJW#=} zKNl3-udyREi>vCFb?&T@0n1{{k8);mj|Js^_EJ?D@FHN*w6$Zd=ti0pp5IH-Ld`d< z_e_^Zr1tReTI>G?R3Gvm3sL(tAm=-@FAlOG9(MZ&`gv|u+IO+f5D3J;zyL1frRZ7T zD83*mB=WJhQ@X0_OajYASqlcTl!ysB=uV!4?%9((&)%Qg?G+)Q9A0)g(`AN*swW9R z|FAnh_(s9|$hh+~M0&IAny8^^LUp?d|2|zSEZ5tybzZ*f*j-g5tJcM}nq8)?35Ym} z{hjWJyuDhSK(SWRv`EaSKWNdK-ap9OWEeIpKyw#a6@*R;tp7=zWtic)`Ldc^5IRVd zwcZqPjbfOFx9W}vFDpY80d%je?Le=UHq-n%HP+F3M5JB8(u)D&EYfqaUxWtrJ8lKe zwY*`nFy5=PdP|9z+cdl7+|FRNQNlSLML_jw?pH_Jjh&v}G7ptm5lBO5caCrAxe5=1 zqz(;+7`Esoiu72w(s-uK-!cJOSrrz|O z%EI`_TTU6H_VX~aXAZ_R5*6S&#W7=f%1)E^>r!uFC(O-A)5EqZIfg98URB|5ka?d%QtaRW;HU z?A+LzkLIuS0I?V%5Q{S1o=!wd*SB${UKNHsLY(Orua&nw?_=F6RIbO2V1eFjjd@D@ z4%6DaVfXhVXQq^;J2!`-eL==5Wov6UI=UGt87U+O#B=SaHikfqfPu--X4$aLam zG3WA%kr$=GnUd|eB{ScxF7Ges1@Q@(HR2vgimC7xRMtOQ4n`HX|0#Wu6bqu4F%f7k z=0AR0|TI3PJC5+Gnb)w|3w4Ynp+z8oELCDyOfp(g3Lm^kw6RILF{K|+sL;$b&8 z%_hm}OZKzIOQ_9crY#>*_7abPWAH&#$My)5v2@LGh6%3pF?+a70o;A1Sz^L|07`eM z+Z^EW(^rPtehU2jc98>n{FZ8(V3fxnv3d1NZ_j9|5o936{&70nWH~$VD0wnpkvDKT z6yE`0Eh+B#Cs)k(nIMtj6d#872)7;pJCa>fIZzVrPMQ(|axG`wUsdxh+H^^h5|Iza z%)Y90x+4Bm0b%!l5YO@CsOU?wY$Md%O=Sx$fW_Hs})LyYAiDn#Vd#PEB8MnR{I?>ri(e0|9zOu zf99J!Z0yQ7*BI#b%=2FAt#~)mdzMDIPvhXqGySZa>=I7vqTVGmpwzKG!4VW=1d^zr2u~)SVcVQ zyb%)InYGUR;L(!mgJ|s5Pj z+Uy-|^O=M)rUj<^8LK5@5$Dm*7`p;V=^nU`7JX7F35qV*=)C(hPuQmGFirv-Ul+QV;TT`hayFI`JpWkm&RcB-=$y?dL;qjKDW5Poc4c zKnkq&L^&@pNo-q@SN}j!Fh%GR#H!&?)D{8Hav23?Gu&({I}(pAqb7TPut&9blU_-{g+n(2s9?7gQy^&ODEYPl*cs zK4CqrX>$St+rwJVb%)Yz8U8sC+gZ$&V?GU1GfRKnpm|_<189SN%Ny$l8Mf(R_ByhB z1NH?ksXndmN_iDJ7C^R2TZ=Al_rWCro;1%M;qG!HW6Ypa4it2(Y z0}6)WSvGqDAd7YN(7p%{I&mv$;5ax+d|&_4yR1}~4jFN;gfT>vE}+GnCJ-vz8?00y zKUikLs&Egq)tWgiVwdQ=eYcT?6Cf72n^-ztrs}U6^@uaYX$dqvglN?6tBTO2gIkU| zosKR}ukC2Gn!R*85cbK0=2XM8?tKOFiaGcljkL>n-PtgzQwUb9n%i#mm~L2qAR8Eq zQ7@jAh-k5g6*4bWs?j++Aqoc=oNh2v3K>4&T{tCJB7q|sE*f6{76arWUh)<1?JbJ7 zCwFSNOZNLam|-}R{kB8IeOC!yB_-gduWIxO@+3jO%=jeDg0*WT@Y**?es5Ei%0g$b ztGFKrD&@YEr_0{{eV-87x=e^FJtL>k1q}*KA)!g%M~srog_G1#5Fbt zsyvTwcA=YDYIIf78?Q~!+Yh3o7$rKv%*enkVSdt=1)D}LRi}Q)E{&4e%zGqGr(u&8f@|AQ7(=6PrYXbTolpg{{0>dw!ygK#T_mAZ=Sdc)u+NgF7j0W1L^M-uGe&+mW7*29 z_r(r(!Uk-fRMD&B)4=1M-;oslSnmRkQ}QS#IN|-2p}~o>@t)r68)Xvqmk(|)T7OJ> zu)=)o@>JgqT4&CyyMGsT#eB0dTfUK8okBccT{F=OFoyc0sm-!67@CaKEfd38-PUzY z-_Cqz`W~;7DNDp}Q!+sG{6tI1m_meba{t!Yx)N{1 z^%4n1>KDJo-C$u;3@$VsdTRn;lCL|q`YPj<{aEMkNRL~5unJCTNF@7|@bs*(%&1+o zY(#Y;__xXA1MUT%9Ye*Rp9ED{MYaUe6TdC|!>XoZC%yxv58mL1`k%@$I7vN0Ch4K6 z@eDX%_K0!DK6{PnDV03guvIyM3X26!8#UwGMwy~ThXIBUG~ z)K%@2rflSN4BqExQnP#381g%$6io0f;OQ6&;fNq!ZUoSvdR82v4LkF1#V4wc9njPz z=Z6rTBDK?Ru-B!F9l(3e9@B+lG*FV;Pw21&Xv>EhCzd+?2mgqWRxz_Y*A5BOlR^J> zkJ8Qhq5A&ar6oFyX4IhZWFPhM@b>(iy~J(E$}m}O;d`tY!TBS!sfi)kP4ITnN9OHU zW2c*z^+n#o)X~nYdK$aq(}Cz5mu1>upNxMrnREycx(%4 zzM(vP$tc;(yrp9_X!#?sm-)F?;n_x13i@Un1z;`u7QY_Q`GmD{Z<^V!mGbg|{ro`p z`I#p?fL{-STM~9oJWB#7Ok?Lw9)&?4b?{th`G{<_Ww9y*3m;5S*2>~1@!=8{ditg$ zBYVyDZ?}o(mpdQbh%*WgJoj}uEoUGVs0sxf{^?w5{G+z&bIK+XIEPuHVQ`3g$~^3S zsZ)K#e!HE+|LD^MkVecVN$#gtwJiCk0nyOT4LMw)8m!mU3f_m4%5*hjez|t3K$9S> z_$h&K3>YK9o2!P|hN#`hVf~2iMEb8sGXMk7f z`@U_ntFciLN|HmU^Uv~XrHF)rl+MkLC4e$zFWhrhX?J<%~H+|*pojLE=(yZ*|%+UX0==^A;vn5$!f^Q9hN)P zi!47HO`-d3Nl^-7`}Lgxj^AY3>;mMbe*rhlDny1!E_)@t-EX&VuPJN5{T6=+jc?_2 zu%?dXBk`=|C=*{Vt0-AYMoU`2J_107hq)RoEG&G8*Uus)CB@CnEiIjAHL~WU8f*TZ zZ>g~std%-+IU(9CzpBXoWt^Q|SeWYNn_<0zTirIl8s6M!w!)1>GNX)2wwFDrHt#EJ zss}`jVpD=~l@J(&KCH@keN_qYDm31{;!kdG_zZTag9x$zd3^`d`d=xLl>Fx4Ar>LA zfkeBCDxJ<3V78mk|KtMhDOIMo8xZ;fbqKtUTELWnFaZBcJU7ieoSEpV824@9eywS1KQP5?Io%Tkx!Cf2}7O+3ZCQ5GEYokXYe*MZuuUd*sxD%R8eBS0e)7($QWogobBZTDLWFmsYH2 z(G|W-0NFdZI5~|j4-YYe!kyQOuUHx{l6XHhX;oGNs2veuIQj4U%N4vM-p#4N^F8Eg z$_Q#Xi81S&p2JyA5CF4ZW`VboQ)IlUVyAfop_q6Woy{=rD|d7ax_i*CX2>zU&!^t0 z%#F*Az9A*Y6HEGt`+0f6e!#*ps7GeVaRn-P%`oTt@Vk+W z;McZ2<0|-giQoSHo-!Sd;9oCt*(Nv=ba9Fy+dqGcOuc!;VWC@Vu7Fs+y!5*BJyutD zCb9r0(z4zC*Ruoh>L8q`VGjfb-d>}im}}LQ2v#tQt)+6sdqd|!8oXRGoJfkx@(yX? z|D2g=@+I>fBY|ftq`DyBEtLd#2%*+20gPX`>omPV#&!_fvX?(obZ0M zqIQ`U^L34%Ebb(iTV1zt6&#YQw6X)P5s~DaTK+g40e8-C4nzy@1(|=ID^o#)8iIAp zbS5Gi#%+FpK-iQ831Mjr#A|JCcJ`fj0<%{gPVpvf`|KbG3(?y!XYQ!SbIrjuCPU%BK$$NFd-`5>AJ6s0QV_+HSq~**E-&epaDV4QyDb@BQ2eh5LA(_+W-+l=EoPKV z-u=Eb0jM#Qo>!{W^#5w_JfoW0vN)diRK_PhT~e$d3WOp?L?EFEQQ8OyNbew>#Dpq@ zD*7mqUZg!iG!#JsNRuLj2og|0zz7Bip$wpeVn_rP2;^PjTJvef<;<-4mXG(WbMHOn zzxQc-{SKi#G0~iq;2_9X;E=tT0Gve0**7dXM{QXGjmL!y>4G0v*@WQ)z{i+5dONtT z_{k_DDzt*a30-`@4Dh)2flSUD&iG}Ox3;fXml$L<_3Z_E>XCObzLbpEL6R6eKbVq% z2D#xVldnF?-j+@)iEJ_`$4wJMw^Z;ueq^nHlM ziI)EcvLyrYZe(&XA*OvLC$m{i#T$X&IoN)5s<FNT1BF5X*8z@%nzEHu zQbbg3%cdd1YWrw%SOwR);?cY!#dpV^QRhhv;ymi!z){&K_RXb?GTOrESOcrBS31Sv zaFBgt1vvHdVwJEx=81BFDBrLEs5U*o3gIQWrwZnKyr{@+X=$n4qJ~SFNo(xvl#HLV z=m^;S)s&S0pBh}`M0_Iw#HXQ!gltTmn#dcdfeWxH!1kG-=5fM;SqlgPaz0wCKqHn%sURl5XY1w%J-%a&mkIn5if$%M_7csIdd z@PyJ{7kMI@9l99@!NH|Q;1t|f{#^yn8U=pqe*bi@VcNtPM|VmLqCu5j8k5K5g@lk? zBNsIV!z|YkfrBpL^gD^)(3q+InBeG^@v*u9YTNG3D)}VQann3gMM(&g{VC`MMlT_b zhD{AfwOvDNZMtaNSs(froU!UdFW}K0F!v|MQd{_1!{t6i=BO0_v^M7 zXHl%9=An>ZCwhxfJ+~3JE26u8$k&N8UHve*oj;t)KP4uPKZz}&nj+xfJv9L7@!o~8 z3YS{=PL#P>q{#RU9|!ue9(nl)5A7A=n$;04{C>}dUU&wYU{tP0KYv& z0jdMKo*vYbHZy5vF5Vdbrpi^9igj)clC!<|7)dKduSP&Naw1(?4lGZ$d81bB70aA9@14OkI>S3RmrrXaG)s4Fn2 z`=sNCZTAC+awTM?FrH!(@i|qKc2UDlc_k!{@60!^o-uv>WRE4HQBc%!f&O|=$*-?b{;-A^-UsV zq2BSpjON2}O$pz!t)xUdw)|=RFbjOaUOX+bV-}i?0dPwwR6>zntoHJAE%wcgiuu7l zHaq9;XD#<)8H5(C6BBU5nU3@SO5Hl_%V8ohf!arReh9jDJYn6c-pr1<0x<==U($1znOoOpuYk*rc0a?*%>&hN{Z8&O(P(n+&ndwHFsI2PXED^3_LGEuCFVpcE; zlQVjshrSFWuF~U$($lXU6?_UTwn|E$At?%Q!z-B&g>~?sG`}=zeK2xZHyUYYP>2K> zrNGunN{YxJBYC(~z)Yuhd)(K*qsOUIfLpLfLqZ%!i-7Udq>c=qS!F96wbZ7WGfAeq ze!w~tl$mnCQp5zVzD|H$oc*L(zIwm;8ho)*w}=mtfvxz5!UAm?^2SodZau{(!hJ4J z-q#22LTRCC@THbJAFgGt+~CYg~t`%`0w9TJo8xzd#J0x{EyljlDe{YxkPCWm6d#gq5#nHd_ihM_S{@(U%{X6~l_C-`E1JmDoFXjL3U3WA5 zoqz+FO?jtv!N?4{ILTJCvz-fF?21use8EUHGPljhD;x2{)%uM4HR_!xVaoU`m=_j} zYYO zQWRE0D#KYVEbEV(&zj(3UTK zMN4n%6Qzzv8XvAhA}&!StLXi+)^F>PZWp!LGcWglxfT7Kcz*cAYs+UQtc+1*&pS$? z^qp~qzT*+bHf9I!Wx$FbtU+%*^N+p!HaVTdx7yGnDh(;V;7k9$`sk?ekGx6uccWcm zR;fVMN6Uz0!G8`KS*ltCtHvzWqt;QVqn4@gl5Zv>0doFCeQOEN5uUuoZn(oj`#FA_ z37N|WUuVFd0ajQ(4bE2EI4Coa!_jj`4clca`|#rZ%mqNck}(#8lW==YHEnjvyF-=7 zNU~nWC#GO?3_a& z8$0F#uW$6&u>4ieo!}GCOA>vjR=%p+>^xOF{Bmu4^@jiRj!w`gKC5Q5u{)AFwX-Y@ z-nZ0+kVSsoz3|j>x`A1|Wd1CmG!C~Jm*NiI$GJLW-3o)`t@oVQ?G~Y`=C9Ri30?o#{U$+@x0^!X)0v!B`&$e!d9M4hR`|>Dn zcWo3pm8?3qa57)Ks&(3`LtK=hmMyiuxBtuj>TP(n{a0wSoqqQ&Xo(Q&d_g8GJ=(l( zEqITaDvol!TIwA9sCMl{JUa=Jq=M3q{FPowB z!TKCmcOWV7Rq%#Pm^eymtCo<(e2agsmM}%%(mW|MWw?#JZ?4*+UNDaRr5YIQeoeaMU zNcZ8$ZN-;%5A5^UgGp~gP~$$UCXA{^2(=f{IK5eTCZuLVUzti$vWpZ?DBl1eK%^Hf1zxt zyZ4oe15iEX-7j9r{&>|OH%d4lcB>)usGTp`onArJCHu@cJ0%G3offRxO2&&5XA_VL zR9*CK169(f>4z#^CpTsB!| zs(JGB&52Hvb!_D#q=JB?fAQI7gHw~k-H^KwZuk9@%X~+V@6ZRcg}zrut8VSg4`)8W zdsSL@KgUq%DqHi#C}cOE-O>ex#ZQOa^aet=b ztvw}Ns>cvcJ5h}xjXQ!g6&(!S>o&A-yjSc>oASg*>MG3DNZQl2#~LG&il+kM_ZRG$ zEemJ2wZK%0u-$VLnsO8q9siDKBNyy9u+%9xX}LW=%%-~YbeUHfOv?}j6Kr2voJLJA z-4jv0TefcoFW#EJ%5SkpR_N2Ecng50w#5sBwaLW>!71k?mfNl*>~tG1(k@GS(vHDD zD?sCUCqFou^-rv7mBk<)UxWAA3R>rVmdyK(sw`k8qZ<6^)a4fHzD)l_!TAJwn@6aE z&qm-hir>_Cb-slcj+`|a*LXpUZsCJt5%j8-FAk1gjrC?Q-w9VR^omGrpO7A@X%vb@ z%L;AV`;K&cxeX?cChfH)Zer*v$Yp!vvv%>y1`_t?4l{TMqh5}2#LVx=#0%*JnCC41 zY@;@D+8CPH7(k^+r4|S&S2~VTHzEUP<$|HBaY%b7PWvtu-0XtkWL=`-^MPLX+R?oy ze7;lo=|@_uqX8W{a#Nczpo#r%&{UAHhA(B<1miJGU6wZsZj#j~WV3@?B0mb&Uc`@s zKU+V7m~A$M=U=2sewMbHoi9}_)VX3to7P%T=f|Tvf0U|L=4pUnC@O>?f4=iMr~RWD z%^>NpFhTf&bGo*S|455mSfo>jWXfN5V zCNU&hEudygdpCSgMqH2!>l^T`*Hev$<_N;Ce*Xvb4@YvPuM;(myY z?$|~+xx~Hx#w{j~VHGwvTa_mRujRzZ9hhcA{^nlRsUULgS1qwFcM#9PPL~Y1s?r4W zHIw$B94$8k`;5I-cdMl7u}#6KTHO=Hi+oBN-V3d~JC41(7?aIKKNN`fqHYiBUgNdo#tLv zl0=w7Y*6m{;M^m0t$9vjkHWSYo%hy8^O1^eVvfk##OP?O+KRa^*ulql+%{CE>f@(> z9%{GAGzG0oLW0)>BVhfSMXsut@i(1J4~3c~vAzkPw*?cov%|bSqLQ*7_g(37`qZRZnXFW2Jt((^QCc$EF*j2T76e3Pvf5ptIxLpv!=Rb}0zW*~R z9t7D}r(!$+|1uJbn$@$>eh=B-5=tdDBO$@tD7rill5W5^XAmg?y4xz4FT;cha!)$j zR1hs+&&MgRWOf@v+>m4gZ@(s<@EjFbobXyj>8VmdarvDI)ZKk{I5F;H^#nOTH#8sF zo=30I8Ve&f2R2o#mXBG_351Fi&MktKXiW+HGz`1ruXVakIb~HVkhfyH;Jh1hLob0s zGYUD*qSym;nds?qx&>?lIcQ{lLq4a^2~Ai@fFu==a)jB; zo!-URe&)tkgK3+u4NyqJ2KEwdIuJu#KV}2p>F;0cN)Z~oOzo&xZK04BL!(I8C&Lqf z^CY`%F7MKUmfeq^zW98Fb1`G)B71A1{8njle(lcmQIro2M}PK;S8%I}+l@R_ukKRQ zn}tqHOtK5GcN@)sV0Dr@L6e)LTrnwxbu_(=({75(xv*Eljk3XJ1E+Q%Qn!n3&=Ims z4cc?2`TWkuCr*?5qbJ-lb1QoiokzuW6|se(Zlep~;{vzi&Rkqs48j1AX8k3HoJzQ&J?Ayg7-Jzw84mild`869&>!Z z2F5&)7)L3P?J?A;Xk7&xZKa_cZGu%Rb*pNAjSd`Eqs^qIx@ryRSi51hppBaaz`j&={@S8^kc;5VEVzzpVp3 zqp;kf{u8zFj)^Z|B@Q8qH_sG+%c2DI5s*`se> z4`!VLxZPY_pAfik5Af@jVs8XV?#K%;$AoU?pzj5DGdK#DX5;EMdu#{oQ9X1Bs58dL z+WMbp`r^>D@t~lIRlr>CPk&x@m&|heB=6F+;7%snYFw{Z)z_J*4|-U=%kS$}wUyP! z{Z-X>f_m#LeCU(Z!@9qtEg)0= z6N7LN1Qz2Sl8I(R`c8ikxBwbwX61S|EJYZ>)sPwI^fZwTKpOA|3po3ZxYBB_^Uuum zQKa3M(P@L#6t4!h3#Kl;vZ`gI7(Fln6FR=XM9xCMX10V7lDb?iLwto;r`(^05Ec<$4H&NTB$ z*bVp+oc4o{24`xHa#TuGT<;90`Mo*G&O;5+x6AptyA@r#)oeOE^?a2cNs1o`9jE|# zWeeyyIHt3xdengka!qAGoLf#OPjN~+M{kaJhDSyzc*YV_QSI%G8?`vF;HooZlFF7q zS%_K9$A_~=OFM>W5&L+EzbsNY0s%}ERWK-R*J6+28TzXA6HfT8`fwbj;p%^mc0ujV7=jlsLsQ25rHNu<@URzV({fD-aA1bCLrlq5-6 zj%EevvoS8=|53Y04qnhQbw&2t!Yl2lkxmE`9p#cIxG3s$hyq|4&uvOHS|3*r_yB~` zblVBd!m8&Hhdq}UK_j%`mQBXIdGQQ5UzigXV51|n*TA2kqUJO-*1oh zvS?7TZ7*?juPL3Xa%TBK%N%}v*3itO(iam*U-zAgTlv76H+4#y8(W;IfYd0Q$<4R^ zb}{=5yTOCtCd=mEu}Mn4zobE@g;`9kHYWU=UCvHRe`AchlLf4jUFNIUMVY$))T)Zyx|*(J9z`%RZSe0y^QAKI*sMt`$wU> zJWDAB)3#(o5u^^hMT$gQ5MB~7gU*-?x~=IsY)YO}i+@UqUu{vPwyw7!w8WKj_X9ub zzaZmk_PWNKlbkDwMT^Qq^}hvt>FqB81)~jjz{x1G`}V?>+4;}S<%Jw6DODciPPnmS z(*jz@5n8NBJkt*3o0+;WwXwHEc~3G5H|i7~DPB2k)P~>>!rfwbtDx71rhIyGn|qIf z7x%`0yii{c@n1L}DkeK$*n-f#;PDS<59$tSt<4|b!2ju0`U<72Od!z^&9QBdfNy;Q zM<#>B7t4|yeSEdoTxNd{Yu5#iW`xFCq$)B6rj z9c6dR121UOf*cVd@gAeNMP=fH1?c)1VyV3QrE7%8HO3R{ll!zKcXIb!fyOtswkkG! z$~73D`gZ#1Vo4x3TSr#tan0>x()B)zKWNLl8MC{2HEv;JSy;C(?QLhvYJF@6-R~E* zXqDG@|EKwyPz$f!?+zCp|F!PG_3-nI0Sx%_8zB1>ne|8z2xAxB-%VMU9maUJi?>h+ z@X|MYSTZG))F|CWSqHXzSCaJNw(u{>1Rv<|72+u>B9xyDpc=LNeYx4P?8hW-qd6>s zY+v4HPR!5N_-4MpY@Z6p)h<)XN!&BkUu3fDF>%LYXVJ3OE4leq+c!|kxF!w=@%dCJ zoiaRGPQ`Zt|E@`!x&{zx*{GBfD8K(sn}IHWjBBcN~n9(xC^S-_(~4 z89VF1ACt=$eVHI5G-=4#0v-(B{UTaM-9E-aAKixo*g0)xR`Z{Fuf-K-ch%hlo74bO zCA6!0AMo$CS-j=uZk2+mQC@SM4Z~t3vw3egd*+Q4HG=rO$MzGfH z8y-WYZQ1#bce}VPx>a{x2p6krWs6d1lef#n5Tf?mUeJ!JqNw)TB93?+xqW=x@aNld z!-mlHz+Y6oJI9tzL@CUEIDk@zRbC3e)1Yq67xM z&ZiIf*Tn|QO9W9l4=n!qaFM>o8dyuFkxktTJv@_rffTk(I7)RsnK@9;(esoN&Pl@< zNMZEoO&%IhjOzY_Mak{vHO)Z`Vf(`QC1w`@`l5N`&tskY98rqysH3c4IsrZw)X&1I zw8MbE2Lm8PGoLMmeC@=Ng+*k|)LW%Qa-WtFe~;yrFw7KA7@J$I0J9t7e`6_8u8JnK zvB+T@WAc1><)2Rz7r(fuGL5`RfVhnwC1A*7+-|bA=mZ%!qt<)#jv%Y*wNFrV=v!V? z31$pIn@B<-Et}5AOWPtrPW1W8PYBHJDmJ%>Xf3jS;0*sf`L#b*SMd(hR` zlJkG-5~)bJ?VtT{7waMf27p=Ez(_Bp?G*QQn}KB|j0!g16nBCZN!+H)%^~3jz~uGz z@5$3$b;ph?o=-6GY}EiOSObavRf57u&=w7dz(ZW~3L1*)^MTFge`{yt8u#-+G>gVs?Dw=dJtG?0A7TSkru%TBsMNbnd=5=540 z2?)Be*5g{fkfPy}uJ@OF8ly3R`IG2hbk>AeJM~612+9&bX|vxWja_FK;0G);A)1n1 z>6fw-UaY4~+cftbvlx4;u+yvtjZBt=#wT6gBb{q}7Y$!~i!ygnw2ne11yjjv64ipe zuWfWyw;bk1P72XH=ckxpZpor@ll%QgkDs2-+GY^WFPTj&hWoU0+Mp3KXsbKicD{=$ z$iapz_gmsE6O;baU)7JZnAABqd?dYQMGy!EYX;kYAGUPc2cOf3&DVMmz7uWXK342kx|Ot>&wk zUAo&=FX_vlp<=dE4f&ibU=vJMr-!{vX&BEh-Ev%o{R@4ANC0h-xjgGrl4~C1^lKNx11F%V3!)E^VcFAs+81OfAj>$jzQr=uvqi}@h zSkP<6sJ!xtXFv^d5&!~fx3J?(Jf5+5hA7ro4C>BSVVdE_K@Zrd&r1%=OE02dH(fB@ zNwBB7g>?FAT3nFc*v5k<=lhQ^_*Y$+bYKFMk}fzNrA=QeBU}b-(Tz?hrMpXW1xcXo zT#Zs%@a3Qj`00@vz>(w$F^u2r@?wUb=U5w}7FKs1Yn{`YBa| zF?C1B?AdUg1!~1n)|Ivi!4z=$saTunNu(w11cTSPz~~A8l+qyy?vM*+mW5~YFN#|> zMtdZn;Bsck4z3mRefzT%PcFCBdDrcr8SWX@myLJRs3#Z<>mW|yt zsW0j{T|4^;qLo`Y{YjX0#6AD%kS>DmQZHP^7@!cO;U<~vKCV_c$me|GuxZu(q7U<9 zD7p>KowsasaZh=(XAS^+McV>4QPJzA7`kiG`U5;65fd%T4G0Eh?z>U~@*O9Cn1lPo zkEY5KcSDfA6ua?tTN-8QyR>~b?a~ct+M9$(TLXeK6Q88xcI;c4Hju{bf-tlU80%Is zs{*A(P>Vs4^I$4(;s%D4N>p|%KmVOeUC`a=T6!9cg%>~9A7lSKXfY7{Su%b5)jd3+ z!r4uAkBKQ-b!k;kh1}3&lP?tpc<7=qv(r5C&(Zn8+bL9303N&{QsCIYnUzYc9?sNO zx_o15{6AO#{U^J)JYoJGhq2#Ojepnzm_~G``)-2Jhy;ryzhwk{sHYZ);IK6i>VS*9 zBrE%*L}4_06jx_AC@mdOq*dZdIn$K)c+Fm|Rt5y6$$nTAl;D@NyoCaa%`9slLk}yg zeaHLkpNk;(zcGsxyck^?MqzxB#JJsI;{N8KA(9$JZbt3AKdC(dr8gGab*rufG6h-J zp2JCFpPU z^*9TU1W+;WyLwO$?mMnsXH9l3mw?MnSyJa$S6>0SHRmIL{=A&yN}sI7k(8BLpkmap z-62@bEUsKphfTZ9%tM=`CU6z)zYOIo?@wi#^5_oHs0y65)IjXAkLul+4Ik2SDXv+j@Gb`A5mSlnE3sDx;UNKMZXpirO2WSE^Os0~z{iAxe+ zBZ2fUuKywboG7k4a@4*%_3E_M+osb|3_F7VAr8F;*a&X`Vu4y+ z;{hPexTN#n+5mh8-9S9AVYYlCqvQcL1~~Ko@P-;rTR7C;FId*CF9QwnzR#@cWVjur_DXL z?s4!bJM`SjAPouMMGrTR7B2#zPjd+fW9;>@{w^rZ_s(B>Q<|i-T~`2posg-AAl5TM zNn;7upTNGN{}M2Yq>crM{%4R3X>&82|F2P@QW^7+w5UH*0oYnnPJ2wyL&6L2C@sb+ z?0{KzaQ!7)9e$+9`~N{|)_+Yx+5bOkK+XPpUf>^w-4a(hZ}D2WTLJrC#bzPCj2+Ox z7paHTzgw7Rv;O1o8KLfT7mQt+GK_d7Jr`B>s3b#Y5s?E;t>ujW0sOi3+E+*ywo``J zK5P^UGdo6zB^Z{RM>CK_FdT~+B$aqkL6S*z%=jrKx zfe&9?f`;i;f9d!*jzGZ$~DjS z`1xUk%0e$HT7fw0LHD;>S!<`I*{T-yGcxg3(+!2$s_-A;)Xi7Hlr)H+5+STuO3U1#RH{rj(h{WCnNoAVVb|X>PCNZFs zOO#g!>*S;iZN4vzIMc;dK)MXC*by2R5!Bi4(Wr*4zIPO0)~mH1NC5kEx-yODXTb<> z`FT~!_G?9>RjFTq#tfUx2afK#bx(UWZ@{Q`0$+cSml~hS;)n2wrRKizpv4+61V5ry zj@ex_2rg<_(cQ2S;)hLX4begtd3-tpb(7+J6~8&nd`8iNP%Oz1iGv~G|EkW5(R?## zm#UImVLMkKUodnOV||S>*MO=0r1f+MYCl2S7YN-bB(8LbNP9(g`YO)cI1 z+DY2Z3b(Oq2vKlfgAANq%022Dnv>VA0bMd2Zl6n5b=JW2N@(^?yJf@`Jz497;WTNsA&H$bUx_NQxPe<)sOcV^C zZXX6iSZxy*K6OD4b`Za-|1ON zywP8^7Y<~Y42j*B4td8OSmfrCv~J&QIE$FR$KW8SOK8HIOt(AMt^%WC1hHp__zUkB zN%|Gq;_uNts42)dH$aqKv4hR{rvrUEFd-SDguC+**iJMl+ZDH(g+=^H5S>ymKIMH% z#h12auhW|Gvk>niJj}&aI3pD)QsX}!4JW<>`e698%ekPK6e(L1YWMFJH#%MqNqHj* zCzcpEE!37n@?$G+2L>(XhA%$KG~dm0EvL`~j3)7~9A_&7-Q;oPYFGav8+dgiK^Jka zYN)j~W$_aibM?B{EP}qZ^!o;TDsqNmQ#P?#kUMq$;Egjk4z}P!8w$>6Y}1#eU8Jo4 z2GdUgfzhQN{9c7CB6m&Q9UZ)pBh6a567e)rR8PT;P563IGh=A*#+nW7qp;NaSLR@3 z_pyU5JY6S#z~oN5=1iUcY@k~1N8ApFZA5@6PPtzNwDNriWNip-0Qj7R7n{hgsNW6t zTjD!tck3|b(Ufplr;3p=aiOOZuonwR$OJQJBU`yi)yv&d*2?*f@%#D6w1nb)pR5V* zF5QnSAw%-huTXr-cYq%L+7SKYB2_y*gTwUpu5@GxIlhreWB6jh$Xljp{~&spuerzI z2)A1`ek;rXlUKX$-6JLZtCFTm<}2u*;sy*AA%-Wg*Im4dLTkx4c+?~GCuZvj^j~-{-BoQr_S14|!qJF#dmW-2qh%U| zNC6$BJ4@kzw88?NOrX!_j{hv$VhlyV$8Fd%Yo*QYYNcJvdeb|O;bCb1uqvlg`6 zecNXc2cBUmX7lucDO;+o@ua14r%=2qi_{1eo1gJzrrN;sG`$Atg9WoxwOrC&G}G_` z3{{$VS+QiCYMBwy_M*_yDkva$Q zcO6>`*iN%GG$Yy|CN_%4VgAv1L#B2gfHt=f|2;2XME^i4!1X^5@BgnJ|G!!YB!Q7! z9#bRmdSli4vJ#)~ZdK!yu&T?EJAxQKSJ@DNxEZUvtqEtQBUI&d8h<|~u z{Aye~hqtA*CL4lX&{o{1&{>JNd5&6%?blErh%OdvBJpx@bqf&Pbr#e#(0;1Zjto)p z(Izb}#knbZVe~^SsGo0X{h$oZ?R&(04=mYNXC$O3IT4`z=k^~sbjAV_-#;2T}49GQ%Fvp()LCxo@ z)%PcJRD8Bw(;A^ zJSzaszFDlhhYE;pbKJGsiW)ZGZfcZLbyOuV!&%_?av0pDL>q!;P@B|;*jtB52IYjjNGJ`c_pEqEV%wT z*dygRJ%s()BrNa2dt#BVuFBKrOTE@jNBER?*CM0%lM5{qd#Lpo1;7w_t>aE}>sI%e_0sckQY@H2G*oj(VAD zL)=XvzME~sy8$Ij1K(D*JaTO@9@y*b1{DEoo~30`JklckQn}GqT$)cUG(B@>&?s_?G@maxT?@jVrjS^7-gnuk)r%n7?vI2S9X5# zL%XyHD;^HlS12mlwc3r!FIerpn($d-BWESt1OoGZWqNtmo_~Km&RJ!pMm_sJu$=>r z9RxI%w6EJ8Q71vXE444?kYv8{qx?7GAkX}kU+$ACXl9L2(?vH zIO#)u(t^dgv;5^>*!FtM7d6JJIIFhjvCW>1hM!E7fAqC;+eGsi$Y|uu6_YesOrjNW z2ATQ?_KEQT+DXGd56=ErIP)V{54G2Gb-e|2(IR;>hiF(`L+5_ku6OnnXIb0*#^%Xq zZf@>XUnhJAb+Ag%yj~3~naJG+J>|JjoM*L#xOR>9p!|9f?t}8J%jRzl%su`UHXX^g zsz!M2YQ~*sua1TyI`y?(k?v^?A?s3%5liurr2C53gREY6A z$)81HSLyR-66~5gcMEh}yhcXi3>8Vg4G6pfh4xml+=vSxz|Zw49Y%G$>fYI{ncShM z^TQTZ#{OM*sM!|=1E(+F^euzLT`?Tlmu__93dDq9wI*xh1lV@-cZ30}9Ru$FeO21! z8*Lz)@;hz7clqpu@5VjfSho8zYY8VWKY7JJxahE^RPXO*o2W6Is<;su50m^AFjDY% zp_O&~N80e9dgwsv^Fs3PI=t#cJc-g5s0MS936u9co-7c}{ruu>H=^l-{oEGA@iH5}(*}R6!OU$fDj)t7S ziFuG%RZA;pN2?rC|;Wqabeur2fgwXOLZf z<^BMi<1xaxpFYYd#4v+&CuwJtb1=(fg2Vrg)9x8I$BoyyaOpCAduzt*-;Ir|ro(=T zDyN?HmD-b{k7X+-OVj7y{TvCgx6^aX4kogRLYySr?p4@4&Fsi%-QB4V#L4RZ8Xyg& z+|bWC&~S@C8tw~q-@X;eWy&vyUHKNr8k4uEK9aAV4fgp;;(2*0c^&S(i_uY!Ra`P=>LfTVhwI~cU8Ej|5DZi z@Qbwc!*~G5btQXk58_HZr*gH~^6mIse4O5_AcddkV6FnGt`V zUrarWm4Oxvylnr$g#T-Yf(LT}Ci7qNDC>XCQFk-EER%!|t@%#D;LYe!sA^*RVI{$m zc025}ndS8Ko8zL$kt@ui@()ZH5eTc`4BkcN{U4+J=rayS^L6}fND;^zh!Qegd5I=`8v47ovxcX}{0gIR3 zk*$IvZ!s!AD``T1kqra}B)E47Tr$9p;~7VSPRsGX&CuAVoQ8c6Lx?{-%@}n7-&Kuc zGxzieHa>5ym_}klQyyQsG#dyIP;GH^EKFC{=2jzD((XuP;_R&MB zrA1q*9`AOfF~Wm_-y$`JyEv}DWl#_A9Yk;+meFtVHwK*^>XZ3zp9!ITEa}&-j9I<|cm*L&D(=UDhj14y7IsaiHx@Hiw@j&oPb?3Xw zp;MO`{dB<`$dgx4tBMeC*R zJg%z7Zk11goe~*tg#sW(z_B@ZWdcQLSb6_lZ_8skPtESX%ks?ti1UvaPMH!qVIcs524M$c>08>CG@W0iOBSjDyDZpd*; z-wuefN_U5^^bsFy>srJO{|9F^x!)udjzz-=3=G0CKo!$ z8Ir8UTa!3?59M-muOV<~Q7e(ORE%@0*|PrnGa+APu1YAT^Q$Qjr89tM9*}Xx^oFAa zX`j2h_L0x1!LRD=lblt%Al4rvL4efh``sq`#(|gguuuMj1rXLk&kt24$`X{VL#J_~ zYo*fOAsVaQzfk1Q(H5>jPoXj1skQVl&FwgQWmD<6bFCM~?!q2q`_b+eIp+0*c^x43 z40YBG-bSjj+aq~Kqqpy;dJTDtZ-4_z?VK>4ds}+ApnE~Gn%-Mlu7UFcdeq?1cDDO+ zqZAqZsFChiaI40s^@YHXT6xdzm>`R`7s?^1?KCX{dI&Wi-yA`4<+9H%5k}SCVU@}= zO8x*XADznaYkAqh{}}I_mrnB~({lY>7y7(^ zb`DebJ8@y3! z0VLnt$$ZeevbATO_vcErG77`8={3bgKQp;JMy!%$-4zy`!tQF!st#z(N|nAnP{d>K zkD3v43(n#dfk~6<{1P=|o!sH6#(#`S!nHg4VS+BT!>u8Eq(R>FWa3s+-mtlQ!>L{& zUqD;WUv+~yd&*`$@A#;;H$KNsFp~`^rQ#4ZFx82Nkp^a!9dtoR>HBN?Z_hB9^nTbC z_g|qo)uf*-^D`OJHqBR2oX^QQ${x{qdHktP@iq-CrTICTO~Xq=Q((=?#0P>LBMG;xtBf-XXB>oH+iEJtP@HR6&tbA zp5h>X@=LO|*(GXW<7Q{sMaA_|d(1C4T;kia7fhk+84CaWtzvcA3i?iWN#d*~DfzDw|jRdviCmJr-0%Nc~y+BpYLJj`&b`Yja)i zXQjQNWxs2vVQ}9Sca*}tcnh~|6A)xI*6Ye0yFR52ys^wwvp2@3meFx@|Q zolf3q;Z<6bdXyS4UujvX6zucqi%21W{1J*SJ8#tUh&$fHwNJ$hhV;Q>mwQG!Y`VDY$CYa=R-3k>+u!N^)Gzm8 z1!MLd9#{jyVxPNI)oZiK95vN=vziYuIxEqLn zJ{y0uP0&8d*xb-l>U+B7*iY*>Po1A>E5!@#_NX0wAM_(GQBfx~Pt3jThfK-utTN-p z4Pk)VgIHZVOY%N6=PzcWgqz!1wN}8RKYm|gt(uMRFUNd6$=+?4D#Qi1dSAPw_Uu_j zM3{)OtQ-DJ%XnDaH}+J2v-^D9#CvT}J=N+VvFZ_KC&O{ts&k5A*w<@etE>=#wM_%5 zjkL>iYb9p}R|E?@$1IvzoU@sOu6;+%NsQkG1sn&cr!4H){bo-N`qmzk9Ipk{|K8pR zbMk!Kxz&Loug82bTi;7U<{5dMhlg4p8x|?wT)(^>6gi_5rE1rrS)KLe@}0zkNRvVN zCdyWVz6QENu%&ZwP#r>xz!p!TzfV+pQaXyf3xd2)w!Mql@XsNcMXxk`xL%(yP_`;7 zTv$Hh2JZrN*uZ?HC}<;$uLlnd?cb#{fYoF+cFDH29piRS%FBp12^fo+!|Z9+P}hq4 z*Y5FqSYK%0+9=l3l|2*hhFmW#WYZE&5vx5}IMR&afuT1F@5vmDswW{^*+>yvDFe_v8=N4|j$viqFPCJ=&zm`%#GSv-=AMxui&6mAWJAHE7n7>gzY z`}Ys!Q-0N2s*h7QBzF<;K>0l2^sDL3dsD&tV?S};z@JyrT{%=q-9uVsO%bGt{!lfV?H|Gnpu!kPc;P?YTU4&CuMlNELHYCNDq?KJ&tYRqJs8QzetDNbNdfy0f^3 z`GLE>#9_ACVzBX`82O0kyU!Z<3+lH1^}Jg72y`_gKSE63*mn4;5AYVU^M?QHSo?io zam@3TyjIQ2cmvG6!Zb-W5p~@5+@u0vWhrmXC@uKz3Z>C}5p=ejcIDOez@2+#hbwKL zt&D=^rTcg^GB)~*LVs@wrNCBy^p}e}I)wIPKG$@->@b=ln%Mu=AehQNo>KOXa~SNbp9zS!pUalPArU69Ij5 zZNoVfE&*D@*lG6IN_DwWW$y}X-b`;y-|y*9oG*wM4vQ0cbIXes7I0VO+k+i) z3o_p;)RJF%AIhe)8iPOx$>S2A+0z1g_gDC)5-KBb4S%w~0zvF*?NavPPmUgP!l#cM(#&8nzhG9}6?Jt$pnU=eEVToriN{P%0nu&9t;3;XzB@xk zj*H7I)h6y+F4hLBv309W)wwrjPx~`5hcl$-U`Jb0d@b^cFyGYx2 z1}{z$?9pFT7DE&$@kg;jk9T3`LO8fe_N~JUq%vRt?f2@5Lkok>-+aTu5Wsy{7d;pS zKnc2>esBX^|4WhhpDq~wKmWr^|C_Sa<0ncu^LCk_wv6|=7)*XoC`ehRUC)?LKMp(k zV(1l;v5umN>n$g8KdUxJC*|Vcg_xt_0P{F^W!HB;Z`r!rHjb8;A=T#Xt!}#P)8=W5 z25T;^RgZfsWfvBtoV{>uL(PNJ+~u;XK%zxM=n=94I2;c95Z-=PtL>)qQgj}EW@R-< z-tv~;wJ|2r1(6WsS9iCnI~Xo<684+>l_k^fVx+ggvxi)V=0ddTH3b4UGT*yJ@4)4w z$Gos(98J%wQqERA_(%M46z}*enX0r4X74{=XV)fBVqb+D-xiMi=W+HGec^cA#(aE9 z&-5#E()Pa&Akmnzg-GqWj_8<2BjVA3l8zywGdwQLy-Hu(}z3mO83zf}aDXLn@H%e@!(j1;rk)3CVdi8F4E z3j>nuH%?U%V)mEEU7w-$?{K3Bzy2Sry?H#;>;FFfZqX)nQYeyhhzdiICWJP7$TpU- zoUEC_lr_uHUI-z|PIhC+GN!SN(<0f|8M`U#jIo44#`e8ms&hK;_j!MRpU>~{{VRvZ z;hy_--`9OTujh5$FWcX^=dIzkDpx;f7S^A3Pj$)lw6qy6KiEIr#*ulgKhC7FOVUq1 zCrg`TWjEqE$H0Fnwqvv7$MIfC#EDm>)*`LMS^E~E#UU09a|nBhwj!e|#YQBAfJvnb zyr&1Q%pBWMvcui;bfC5W^lh|IzE1nF-D6c|wCF0wbA#xlKaz~(WlV1DEYz!i_1=5^ z;=vh1_>iN4noXxh^F?=3&PO%3dq>6{COYdLYro^fFN8(74#3yHI^f|4MvmmfXJmQC zm&6wL8DOINu9pRu9;|eRS0rfLt_x(w-#@XxM-#7RM!&+Im~cY9aq1rsXI;=fZF2Nnk6FZ9i<-bfm74dH=&JCfE4@f9 z3x?6ssb}Nc(_UfbXEYryw!r&)$F)rR1bVKxy?Y+}@hrNgm)(UbR}DH+ek0@o)+klp z?Aeh;6_@ITsDlhII%5_ru3`Jg>N6=(TviufWoUU_kX6&lqtyI65pC%!FM+$5Z*Y+t!#|G?Ed+D>N( zL*9GeJE<0hT%EGXkyPX+{3>c*TRId#^^IG66ZSE#s;&=td^S}Xacb{9PtU$fw16+i z9+QT$-W3kmtb3*@ZXxK&JRmQ{w3p30Y>ts#wk#jo#~+o~$^H6|1A@|yM@2vBIUnW^ zOVzmk%&4)qM0%~TeM!-FFd?;2S!;+~)AYci>@}lK@A?(9;vHwV~E-->9hDQQS9D(B!#I!R4T_T{-$W~#!LHaj44&T&G)*q`$D+|QNR36`6l^frTECjtj}lZZ3Dc7gDPIN zU$eh1WyCYey8_s2A2GZYWj9nnOKZLRrDZmPFqABNEWGRhUXFzx(|VH<_Tyh0fEdGM5JKb^nmgGW-I z?22XDR0XV>ukCkb>2Sbyfc0-*W8MOnXr7^!IxHv0)Xn#3>EWRT_JB=aPA)D0j{-kE zj!Xuesa_+%!l*xYC8H!NF`24+C{eL?f1EikXQf^GlTG%OSW7`d%29VDTKkd5bN}Ov zYt6l#F7?qGpVM!VT`#1YrS}f;&dBr5OB=#n^v4|YVzO0w;*2=Xc%~As#mOs}^Jk1L z5>9_9_ByR3N%nJh*Si0{#e#VYg}XDTg1SSeWYGu=<%nWJ7*y5WJ_*6 zTNWZKXp9{cmk?db^6EjlrRAZ-4a8(4!)16cH*!i2*PT`FviHb|jv?=@6Sw?@q-WC3 z)5}MhB*aD5%t1gtb8hUKdHq0e|DjiI_f#BV6mi}jT2x^iDg!`WdAYltmk5@M%9c|(sR;S2Cn6%_x0L>!>#a|cO|FU zV$k|-Ax>1x)!V7H5L*hp+*;u**koGZM4MMD{P>nlVbrGuCaJH_jY2$a}JPNk&0Q)YB`r;{xYA7mSqpadLF>*t$6F(eJMPp^q;c8G4w2 zRaAf1wtbFP^{dlO5we1`{Q`Z7EQ$?RqrvJG+6waV6iHhCR`tC1<~lW*`4VJX*-`wn zSBDk7%re6YD9=9nc6>E&oG@L67W+F7%NtKT`pk>scj@B--&)GXd!9X4N{_!aw;wx) zl_-!^Xp?3&s(6`+v8lW1@q5g(G1pm*uAL}B@L>}?`j=VwW`Lyj9Z7-l6CG&}?Wyj; zC>wlcbTV-W`SkV!8T|dpkj{`4jx0|Rbh!l` z*^e97ay?z-8|o|uHj07+BWL7qKwntCzmZ1JKo+h_>o%LsSx6mO_gcT-JF^KJ<))kh z0EEr^YLp~NkGI~2jdE5#4xmM1LWI3-C#WNCuMQ)3stUI=ld-dQV+7gcdlx5=Uv$G? zaNLyK>TQd^@76y5GI;SN9Ib+Q{mK*8ztAVmt0h^bW~A;wFf`Ss4<7ZwSoV_oZm5)b zOhgWUutl%qw9_S;^$HN?Cr!0A|DfD}DJl&kku;gxWY7BT{ZAh3`3bhcOufI`Zz_>$ z!NM~aY#(qU)oGjeq+ygYFjy$L^&w1+@BRGbeo9icS-u@#YG1X1nb%R&1+9`umzvcB zJHP(n*XpiJZ`mHl-f=zRA@hh}y;Hxh?56tIRc_B{Yxrp~vjWi@cTOl+HEC%5k=%9m z^x;bpEyr`>h)&ikwpnxDA7qNFvClqW!xK449yi;glchp^1@lJGA(P1X3$(ku!T#sL zxyXWbp;9oL!QtZ*MCrXpa>w|2Sz;UDyxFjS*f8NkUvouS?FPo$9pp1S}?DweQtlgM+PlUgiIUx5JfmC*RTHt%&3g{>)9!u=gw7 zH+DMw0`2`c2Rk#*94tPnh$q)O zTAZstPjhBoopYOP_@7XF5^a@IK00eGkmxv(D3kC&%14>q>gbuE_k$yV5WZ z&VaErW(;>vPLF4Eu<+$1?h{YQJUy3b3KwZ?ey}5+kU+6B$6Fz%4*876DCqA=O^6VL<^;OPD-p`fvh2t|; ztVl-Lr-O{wgbKYo=48y$6!F2sp26o7ReOu#GJPiW1rRm306Z-Hml$;p<#~$nXtlBPs*QpEoUc{kb)cVbq|-<~{m*>J^D=%LaXQR{&)wh|55G>1)5$3xe}z-kK=MhvBNRe%oiD1F-%+B zB(JFN#9J8ef`0Xs?&-iz;cs--vC*A$Yeit0T6|RSGPFM-wlrtK%W9OqN7g(ebO1~o z&%!?Jy?iiZ^QQ?2*?Qv{#*qftKq!H`PNy?Od>~{XZ`JhkTPne$*S*U0c;O1aKI~5P zqkwBL?ux^s6`n3*ZtqszBN%67m`ZjtWQ67 zr3{AXx1-J7S$sL>zatBl$aw>G3YSSmuQvh;`$l zm|q27f9*&m-KO5&;NjxSns7@QW$}Ojh67vb8-gVJ;M|!B?v=;sp6|_FtI{zFGMJ3j z>nzx(YlmEFNhz&FG3FT*A6Nwkdi7|5H&@kZC|Gq(RcRV04h}1yGl=Ir*Pb?{#g3U!kbcQ{k_EqVG^`BhQlME#j%s- zQILbvqP@AgpkXfi+u1!iH)&$is(S6R$)c~=r$>=J3CTy8PT(=PA;D(`pg1B6p8a3k zjSG8^_Y&AOXD=p9v9qjSnu*|W0fzPU~afeDqmwut^ zH^9qpt*(U5cf@*5azL}5h;Fq6^8om9FGZh|j`VgHH8_ZsCOK9EMAdYffo74v$mDz)p^v0fW9w}!_ZK4tc z67>c9DBPw#bUrF~*;&m2WT%%Dyf0izu>2@#rmJUtocrf$Sk9te7c)Q{+}BblVtg*m zoRf_ZBX(~5K0z$!*(YFdx;Ag}qaKq9wE=lIt}*GzKd!M{$Q|DRISTnm%&bFJ;@5dY z@gscAb>D!-QexNj=inHS7n+^@{Nz7?=CW{ku4pTE=hyuLj~)Ul$}eg>cV;pqa01L; z&f?4Ghu~;3K>*?#%&*X?wS~47TU=V5D-fr$3+oODQ$obE+bZ<<+4cQT>Q1%|_ z{oG{H7$5LQqch&{4%J8R+T*J$R`wnM?_4HD{BOW-U{>A2% zS8pM9UH^JUbXxBnM3IQf;M#KDv5CwFsvSxfK9#>0ZJ(6+f{bN;Vpig8JM*YtS<@eVCYa?h3jaS*W-L;d<30_-{N& zrr_B$X~DPuFCJvPwzGF|@#4!GDVI*CQ`(C`?-?1ID#kZ`uTR-e`7p#i`b2M$Yy9V= zCMiakvsoZbKUbA}(A z+6llH<&kE=b0Q7j=YJ?M$ycHL%6Q5H_QRM2_ORF7LR4V%^re%;DK)E;b5gg8roLJ` zS2?^XWGqcvKP~xU#p*j=?K~>n;^q4udE%P9*F;f+sS$Fs5Ql-DjrZ?Gwv)@!`RiQm zo^MXI-9-B&ZzlNDf=x1f85AELGh9v-e}HRzYbaC&bhieBYGmlJ+I84^;;w#P1=uKL#z8Eyp`53h`?;ML0z0-Qns#A^#>2rVw zqf4|lw1&E7@?66tDcK5N^82fp$lJKj=3c&YWS;QbVS+g=x5T`+TzSAAk#)I}fj+yM zL`Z76y4`E_Ef@=LK?qsirFzBNVh{BqtxWfN_LlO1Yhay*{7oOc$_+S2Ca(?4cCN06 zO7+4@NDQe?0VrvDRN;SCBqiexhCEW@S{ZwLq~RxSRrt@`Dp6<-5u?)jcR5e3at}2( zJkX5xK5?gl*Vu1oTnm?C`na+){JgjL4sSb;7XiZ+a}E5yr&>T!G@JB#EsGSh>6qmb zqb<9WE-(y4%WWlovs-uF2jU$!V?(?<+9?&A=={&s;#G+>k;#}Zu);pVe2jUSJ`nCc zdp;>`PSUAeZohHZ!|6u_xx(q5AD*%NCzC@GM>F{r6>MNc>o&MxEOGG3d6xnOSDidc zUKTP*W3Nr3ZR88EUb0QN@wA|E3Cj;@$x@R#d<1*GxYhOJnw)hehgbaXa7K)CgTZleQ0? zrFyKtbb{7>yuC(jdEj?^=4*yH?@jN2#NB-Wnu~Ix?fUVw9Zy@%Ims@VQWl^Mbs6GZ zmuTWCZ0JrtvT2n1uCdC)ib>uW4xvq~KT+()um~y53pNh{A z_Vb+h(rm*e-1LW)|6%djC}pJ*XshJuU>OrHf$@3fCtW7Gt8C3D-3xvmRhid+^y#2% zn%veJahdH~vCM$Kic`GAKYWvmA8NDO?Neqx`>0#(@7xyNCxP?0Fs$s7(M8U7Eub98 z^2=W@JG2}$Ccn4cd;u}hbURw$K;la>F3)o^6d$u~wXPzvL1M%&zY^U4_Wy$-<^lM*MEQ6^rfxzmksp3Aj11=&k?#XZOHcX3RrN&*Xhd z#M;nV9qrxr27GaCOH0YUjlFtn#^k+k`pN`+-ZYedsx2D|EL@G_sL33w3cS!J42qT` z87~?ww)W_T-;xlOtO>J>ITV7@{*-opTytX26|X!t2Z?n*>+}~OGM^+^sGqZS6d`4NnNf67?a+UiVYD4oWPfV|hu5^Y@?LJyt{ZIXuU-DiK zjXX);x)Kz6>D{RVJ3}LLec~6YRlEWk6yZeM|CIHNh1QG6L5ll5CYmle_u0(hj|>)M z0=OPu+$AYcH=ZcBTUA!1s>_% z9^xlh7}G1wh!1N(-c(B|H4!9=QBl-(n4U}&_ZP#rBDDP}n6~?SN$%|!;(f464uLb_ z01F=hzRVU4-B>u9T>Cl$S+Maee~)i1?K%>Lr>z9~rGf9`RhRq(>CCc`_-?jF_(xu7|#r@TM(9;dqFPsIonV9Y!B>;LXia_wGamGhL;gFTPYvLKk%Q1J>&EUMNdC z$E1)DSJv=Vo7I&usQ`0eC`X*FJk7`w*WKG#*`OqC`5>(P)>ztsucMZ^8DGNg2d2-u zzpE5@`eDu3yhGt%t&1;vD<8AdCVgG159uwN0%_VTm~6I|f~ixv%N;9!mn`bgLX3Ox zN!~bR3lJ?^h?$^?6GrCAdNgV^n)E#XVvS|Roc>nqJuzrz6XqS3Dx5EA>tfx?m-fpo znPezdlXCVhZF2`4IH@#WyQ{$LhO_V5GT%{{>jA^D2bGFwxygvuhyYI)yu%Wt7m89* z3TNE+T~|~Z{N7t}kj#bM3E!M^tWfb}cj3b7hGzJ)_E?QGsAP>-K;03IxoOqCf)VKz zvu+;b8;a)vI75wT7AzTRf_0xw!3b9?JS1ZQ%0Lv}#^~H&egaIe^4L|ySYeV=tP#Ia z%Oj2aXF>jcyd`6)!_vFMI7B~dc%iJ1k`cwq%G^OIovPVzN_5|KyLtZZD{l9^x#PnA zQUh!yNAYo0=!jCAW$T2b;!%>txwTL%=fY_(;`^$2BWqkv56jBKxbi*KyrcVODfPyv zbTbfpqS&X@Xmwpz+**luSqXB@_7}kFwJ25mQ;7s^Ix*Tp zLcNYj9H_uli=^19i=R%a?f;k4JD|G+R)UojgF{c^K2BU0_PGMjsisph>ca@dCE|7Tkz zzkg;&s3sM?bB9gqjGLOl=C$`9Qa>LIzOSZ9snA&-6jD?f#Y+ahgwU6``UHQ1GMFi$ zV#z-v&ZiD7Nd71KI(d1J&II%Z>_U9wXI{C$MnoIiX!^p;99ysPr$J8yzA{Y zO7AZ&YT%TMmyP89vK?y}P{qBs8^fSc%R z;7luhI*qvWm!42wI$)p;A3uYFSA?}LbQhoS3FHsECpGD!A2MV6{7HD=wWj$(58C&x zwJe57?PCpEsppL>XtOg#<`4<{vL}se@Ii#Qd5`+225|g5`||M^vT!K=$$fAWow?28 zBl9ctgPLC+r(moOIi<_qCG!xE(~%-z+*7|OsBxbYrpKG8@iU&JV5(ue*wl~kiOW?F zerN$Kt~#JuS7+OaOu_Of@MvF7i~is9 z>CayO!KXKXct#&^gTV*8ER!b9enZT;sQMK1gUyGseLyy&I@R5I+5ayNotO(abWXIhogtsEKxS-OT86%FfVK7(6|{Q$+#8j; z$SPT0!k=oYFHaB)sHtYI`4uDjd#m^?k0A%l8#MxZwPoEK8ezxVU6;#TKnq8bj*NiB zic2(ehi^v#2Uem8vhGys)7VgQ=n26>BK~!E&eVHlV`3+&tZ~fUN4jk2?|K9e5|>l| zqzaVGJ^Af6F;n}4+O?wsatB#0ef52FZN~K1iX4fy<`eE0^o&;qE}Apbe1V>b&!lLh zFQOwp?sNSOYRbhx(pPxOWrwg7Owb_~-r=`fx;*srh1h*8yc6gFrD1+*lk)-PkosLY zL2P} zkE2a-jIIXNlu6cOqQP6Yi7xxt!tBzm%Dd8&-cS8uSJMMoFa$E0cWu*$sI$r(s3kH_ zf!2H*ZY~$BWZ}s`>9Q(>Y%PVfFE<=H;H&sCnbEDg;tyc#n^^5Ms z_EwKStx8X-D~#v7VQmQK^^kUV>bd73HC2U}H%T9+V!nDujicqFXeV5Yr#e*x-7=kZ;Fpo^n-BU8ktvL^n;f6SGN~)R6=4s z*J7G>O}K1gBYGv_ZLgvb58zwxcOE zRe6}frmceIbH4}>yZmvFzTy}I{kPebo9iDI`8sl4>Pz+zS+Md@Q6hOz1DOXC{aoHE zziOQmJ-z*H4|nY6yMRUG+&x=~ra~DvX}|@v1zTLW*O}$Nv+>TW(#sC7Q^2nuw*Zqs zRd?$1W;HgQr?F+A^RHdM{0g4W*n%vI}t zwMLbUxk-d{+L}7i>lYR4?<>3oK8aMN#o-|j;$89uB48K3Kv&y6lIvg6l{mFg>Lp6s zjy=Raefv0|sF&-f)>LkT+l|8pL*&Nm?|YnDHHolg?=y9*!dfyMRGhA5!K$wlH?Whu z_a?1vbcJ;{Nz5vz=hKLc!b~My%g6oFGh_T@3iz`pHbBgcv_W}yvK>M%y;>d@p%9fh zHiex@sqFulbEJ_n;#Q7HvB8!fA=Z1*OmVM~Bn0>SUkS!%T69imWv`RUJXgvNC#wfuAK^XstCv z-0=*5qv0-ok>j6Lh-xZoTxLkR)%JNQv*bm_^5sERTY7TtS*6p9GK&=+JPK2~7sg)j zE?cx1@>CI@QpcYGLy9Rb=jd|@7xh$3jQ#g&VdBbS0}u1R0xiCs^{s%J!QuYYd1pW^+zut?a7IKqBFxG()k{x261YOw2uGl>5O zd5kPEC{Qc?#Ln0J`Sw|GAmr?zcSY<9b##NDSNKv%Zg>tVNkqsBouaCo;RsX3gw(^2lv=X$S&%fBe zVEE|e*IcU>T@#3{dcHznSL)efQ&(CF755h23~40#zOIOy>gNLb*(>McIB)97_p6$4 z^A#%(QBt43uPfFGn2vtn(O)cAM^g%(JP`G*vjWw+3auLu52Jw z>-|v%T5%SCRyy zk!fLJ?=!n@u$A4_Mw;W>?Plv`Y<>58!y?bstd|s%_7z`&`gK{<%|k*eQcmsxWx+xt z?V5op-avv6A;bA}MuVAez&F#TNpy%sz z>`eTTd9QD{A-6=&5pM#}e1fnvZMsA4pRoD3pBL)GaP0>n>T0Xl_8yPiqv(9{8sFeir; zZSSKiBGJhLQ~kG3FBG)B6vws5PpcBKhE9tp?=7>7o6@&KHQd3b)_p|ZJj55txeK(S zU3bZZ?EuF^J|7mmiK{_zG|LFFV7OoD0wv%wdc2ySUs4{^<1N}mEHW^fU|9T#kTN^E z0^CgS;GDU)1Brw<8#C&EQ6Vl%78D}r;|I&qN$Mv}-%h7B5e0GyZ|h{-%bo;^)3gSF zg=s^Mkn8PCk&{qj>f1d8Ff;BBM(vx9U!zVdg4d7+ujE(#%=`LX4Cdq95^@)N$wdJdHWOGOKmnBMz zLu3ewJdvVMoG9mY8b3>NKl30=XUGlu@H=Dybi+)D$ zpX^c*AyEr)VZ#rXKNDUL*11l_8`=*_n3;=(DY!X#$9c7hNR~X!dxaXoln;Cv_tmY5 z^8&H>=|05ZqJrBt8{6!6cn!O)MST#gn*vxLU0!^NWa_Hs`E8!sMM*brwi5P)*mUw^ zvTD1?hMkq#MSM$bCEk8VM>_9rB?4ZLgG#MGUX#Y{Uv$kKrNr+*UI~alW`&IRXt#5|+J1yPj)Gdb?C+#JG02bhv(T zJ>T>?&swmy@&`%v6ssVl6Lmd?jf*_7ot zRN$@*YCT2{^OEa79|K>$23H~4*9u(IMw81C#fsCa1qBqAf9Y6yFLMF1%Rt~%3b8VG z=1UCsIXDn%U~>I)-z`ti?D#I)>zNrZ_r@GqG?LsGn%~9RYBEw+-H8GR#$sGqE=zE? zeRz7E%%Jtj6S^#;j12op5YIc8lRxL;y#cOX0G#H}CyZKH+KOrjb-Qd`k zJX+3%u6>7KQ)M-f8?3_eM5}M#pK|hTNKQtH3Uqfo7Wyz4lT7`l(jqV6!U6N#1r|7&ktZbDZY&d>_wrfKW&X{DnzJWaWX)hF{C;H8BCt~a;DK4)E+H!Ck&e076{?Fd9CdU1!XFf;D+6_Qr z!$gQ#IhBPj-`j8Ilj(g%#%JBLvYzDO*k@Ctu{|$HR$z`{29r?g6xo;MCHeQZ-je*& zddk|(4&ewwoMwJ8!mxAu#bu>jF2^QEp7DrMc6>g?NEI#TE~|BMsM{6tz4!n<228$# z*?C$~8ChrF2A|cbpr&R(q}$8rZ1fS6KHGg*G(@#wb>jO&>aw0UYHaOSd85q!o20Rn zT~#FgN8OoyXT9F=M)zh}Xi1I=Y73n+rS_%_%IjbJfGgl%r6mB&}VR>JF=GG*u3brJv%F#FnE z4(0TCIoI!XA_OIaN0{ta*wa6(Ep{f`w`Maed7h@#HAjqsh{pxm#N8ziFz|aDf#I$QUB5DM z0MSdwohC2uTVx>+K|MQ%6N9V&Oj(JJi&wdR$ue^)5dFV1@0|ukK;O`m!01Go$=atr zKrtLT@y05e%HGGdO!f~?qy&vKzZv2xTJ2`%S0 zRZ0IGU{<4=AzxUI#6v#Rtyr8fP{82O(ryl9HOjXOuD1|NuE25}S@>|sA$=TO&nu<^ zU&0-KnLObI6Q?CU4iMPzzdeJY#ETCf1}}ld$nqC@nR~Rk)UPFmat}qN3zSB^fkED_&;8bIWv}p`>L;7Vc=Oaxf?k4rmW`!eB9fnpEIlGy+utJ zUn{c_Hp!f8g;$r{p!EXQ@o1xFl{Foi&jnUVF%iO;I1p0B&FJ=<+kn9955m1?g2|l( z&l3pWFlD^hc@+yE)x+C~{5SiXM46Big+<2KOQK853X|!v?&(I~dwSnhYN+>Q#sym0Bq-nptph@wQvNq*^M~-JU~FB^ ze~0I)Dfd_EmUE!rCmAPYwW4_QH<^c^;RmumM;ql8bTdr-jVas3I~HFg*B6Lub47D( zH}TSWwch9yU3G6wVtq$2TIU2U=Z~A-yU*5?bd8l{=`w|9mIX+V8BW7?T^xoI{MSIp z5me>EDdBQ~6u0Nsf*M+QA!gyF3O(}LH8omU8V?wFj3`v&c6{h|cib;$~yxF};J(fJ6X)PhLC*xwYq z(t&4Z^`WXl$Sx{s)Zy9Ins#|ZnPvioFS@u>w*?+brt}h4TcMHqFpn6rblmLgm`?(! zX&AEZ{^MH!lgOnB>*;CeE(814+Dfo^V&_69(x1Q|@axD?yuDfyV*ePoh?Va^yCp$r& ziX}oTEHg)CxfH7Wt^0TI&glReq=neNqx%$n`oyN3vZ{Y(=J>AeL;7w93BykZ29OoX0*Zi(p{*A2Nzv zAVq{3JCdTp_^`sZ@(?t`nOSFz&lfgA!vC}iST;aM6$nZsA-)B}umE4`!y|{{`*#6- zH7+_{Z@T__Guhxy3zfFOFJCBDly5SldMww|$uU{|C7Ve{{8=I}l1Qt|Y7)cJ2?)0r}Qi~QkA57CCP`NKj z1Qtc-=WH2dBOLG!QvIY)l*Qa3-mj;w$+-!d;>`4j=L-EkFQ51vp;u~C(`kuwS~nr; z&ox`(x^cjT1$=w+QW9yCWNn}r$$&!!+)A*A1)BhAe|o(AA*{speOMd>TP+75tu~gX zx^LBvh}K`4y3FdmY7$Mpm+Gu<7(4RmZ2AXmeCy-C=VlAOn(Z~0F1b2l60$~V-TF28 zR(8>;rI9*WT*G|x{W-&Ru3C(s&Q#AEob9;#$44EtvkVR;oeBfOn|k{%RvtIka~JF5 zqXMcd*5{sI!{8mJ@@l)MFF+PZa0)d-KWTyE0$7K?Td?kVoxh#Nbsa4tY;b2Ih4CR` zbg=&})wAQDY4^_3gFo`J2iRu)2P>|gT}ZYPj4~fe&T~fON8EF-Zjfs`y2s4?=-{PW zoqElDAE$VJ=-kSRZ$U^QDu5#4G$y%YUSeKlOy4EDt+17&<{}cmttn+;pZq=k1G?cw z#vt0_DKhACkOedP7q%S{4$Kol2^Y9_WvO@PhLA~R`)1DUX7h^QCOhHO=>iA9hp0a8 zcZpJJblIawh9W;z;I~^XuGsLUl}S#%+9ES6KYoDg&kz{TldX;nrx1i936{mD8AsuR zaEWF;3Mz z{e_g0)%ssggR8F)?MqLu9YUQZmS9@~QxyKV5Z(t|Occ-*nWI$_YJ>z!Bo{yJd{Sn7-(r*-D9B4Vu z@hp4VkwfnN=GV4>oSl7}#O(WfR!n2G^f~=*%WETSjG!oODHrQ*S;3qpm}7Ku&OP&6 zGOn2Qu_n+&3XC99Um^}%S@&O`<5q{VMH9zrGxRRv4lzZU#Tw;9DeWO< zz$Ql(ahZo(;&Ot2K2!h?^Qz1(?}@XOYtEaQttnEv&cerRSo4wTo-CNeQ*f2XsrtKQ z4tByS)bnZKfFg>g=_j~D?>hd(@XN0_{4k2tsjo(3Hz7)Qs=E$?Oxh{lIYh>^`PpqI z78z`M&biU?>o)6k6KGLvD*Scdppk4^6vpB$u2Lz~01_ zHwT$a{d}+_lFWrl8`dqVP{o>AX$C+O_AWWi_2+v8n#L6LndhfmuYmo2I9?ONYKS)> zMG}{?$AjU48ug21UQPzzHikxwb`n?d{UXNJu(1Ih}>mm}Ek$7P9V5Vs>lTbVWI z*gr64HmBsmuaeYIu`7|x-UbFC`Qwt3r+-uUhI#vr(0+tS=N-t1f_^qZ9$VuoMURZr zXFNMmJ?j*gjurP#RFlfIYA5N?3q`A`o2^a9OF6+6kXchE* zWBcloD#Rs*lI{yxS{ffDH4m2tz|Z$GC{@NElR+I|s9r(Q4bd%g>8>i)&kWaDP`U+j znWE?p%>pr9-<%`MdVZ-ZgE7sXLRNX}Uai>0F12V@tu(3W`E-tkubF{(@*BU_>Q&r; zG)9-b>b6Q;L$p;dzLdblgO*e5dTv1a-Jy2#KHF5_Tf529k*_R``v`p7E%2Mc9STq^ z0g)NL!NM=>gxX7qy&hC0-pg@Yme=xUnWuCAxiWae>v`7X-;#Un=23Ig+TI{8e73w6 zd%I3fW<6n&0M9#j*N@8by(!3lvK%Hzl89u6jO+uML$+~2dSdaf9R(fh8;iUqlL?eB z8joguhcvOy>}HR{#vTNY8M#*Cjs7p+?g$#pL_>!|3G^OXvCvn+yYhY<3Z0>-&iWJO z7w4^O0({5I7*6N96y=S{`MW4QJJlCgL4uD%UoK2$okx#Q!PB zQ#S!=ER~8D5-BR*1i(6R@1dAf3kd~}FcaBgtH=Ez3wOymVxE^)tR6!Z%J?_pO-BZR zSibHaK&Ld<{`C^`6f!BZrF*@-o+kN5lqft_j(m!cbN$LrQph163?XEdBg)<(hneOGSm=8={A>dP!#Y5atu~ zludW8OW@R%>-dTO2T0>GKvCF(4A}fIoKT67?JVfoS1+ZH50LhK%}26zjCO*5%gS$T z$OK#bHvp%61MnlWZ&Nwl`!Bw+0NLb?R;ffN{lnUI5TtP*C@XdU2BsdC7W`pW$8T#7nT%WrsXrfjwfLrq~m+A!PWzSWZFJ(Wgoi6axWkBY{%ZhBa6 zUc2rjH9mbSeprFw^{l5f&uGAH;KhN(A05}_*jr}cf}Ontd+*;YHcW=a=BMDiMhcsK zXz58w9R@y*MHcI>=V3oY`HyS4HR-bTO$Qw&wLI`po;chjo3Hyg)$wjoQGZ&RN*i(a z?Q{Q zX89!^-*=~I)b8FlRVS9#UG+ISTbCw_?rx1LLd)$Jij?`>-DU-biXX5B!-OiH(VmS2 z0LbrIes_33BNnvnwp=!m&nS0?|7u{uqc$Z=!qd1wgl!(fGkZ+#r~7lL1BszBSm&bY zH{T*-rEN2au3kh-yka&`laj>YQ>~(1`W*IKbg4P{OhK@Z@E9kMXr2 z$^Qw2qxJ=^UW+-Bn{gE7GP;|&ImiBE3wY^0w%G5fm8!6k=M+X`UdgUBGY1f<&$R^Nf!uLR8>fqE-L4JE0SG1nP;;+4>$1!> z&!bu5r*YD{A!cQI zM|Guj*g3)NlMx3xOIFc*6Dk8*`npOAqajcLwiC9HKPj@!2G28$Z9d zsFb(ms(b0`aaQB>gIkpvZFyv{=ODEzC}ZcwzhKru8lMYLln+7iVghAx`F$am4T?I( zYcwod^KWPJLIU`SqSz2{*hBC+lAg^gZJFmWVzo`Cd5)BG>m0N%D!GY}cL3YjpiPe|)qi|~>-O~cr zMFpgz!}Qav>`vr@lb|UqVvk^s*GAt68ZD^SzvaED%kvxRWOc{gT#7tym++!10j1?V zt~DhS`?pw)>0(Xvv?+Aw*}q?fql=1F{8yB93`Jez5KymOwlOt^H$N?yZyTZz^E!uC zDMLxS^|+7gwuwNFLgUzcLU!@cgnCVTU)+P>tPQV=`Q|wiHLs(efZ=fxWjveS0#=Rg z)F;dLzQ`OJkU93V@cZOxchB7Og!tg*?^6!S32-ZudFURO?Ar&*Ko+ua2eHc9DgCvo z<+_B2Jgc7?0f;XsB8I8&MUw@XX$vkNAcuG0)x%Cro!}NUko)fO{~T1;*0@bSkcY@C zJuUX3zDmj1>ejiyQ|)G3EfXlW=j9`;+EK+Hm4xR{Q9(`H&t4NevErdx#6BFQK8<*w~S36RV2Z&iA$~L0j_Xy)d zn6J%M_FsF7R&u9a)+Jyf<9Dha2#>GP*83Qu*P$K{(n8U0kKkxArpe@Bep^UkTV#1( z!2M}e@A?h_qc^r4TaIIB$rN2$EAjeJr{3Z0YjZ4Ow3=@{xr*2_-9AA>IaqIFuFNX zpDfgP`4cQpBo-KFmhb)cNlhGmi&AK>hEDozPCY9`UX4-cbJS?H5q)g z5}uQp`}QN&i-G%RME-H38BpAzo1T77lZ*aR>D5L{GGCe-jOyNTR@qV4DacZ+e59^eG-=WV>Ai)bROua*7CIt`6zNR}y%z!Loe0u9NQV%m z7YPEP6Synrx6j^ZpYNP|&;9*#ug~K{o&e!p@0xRrF~^*1ErY%>-~ve%)31G;88sA? z?7&@5&fwu?kGK|nZMfF;haUe%IQ{3xx4c?7?T{o zL{sX@Xa5&94P4_ZJ}@R#6Hlu5FJpzpW?&g-pzjGl*I2n1<96zeEWf;qHPK=MZDE0y zgO+vSC;12%?o@$$W`CY{SO9Q`#S>pxkJ|4`l$u6Y#>6@$;Pc4yR>$Q6wEjmDT;19> zhe1RrL98>b^t5OzzaYkGXIbl{v7#o0&ABd1lhuiLmyP0ohT;2#+G=3CPM>c^QFuG@ z$8v1qf}hr%IYJCjK#Z~v`?!k!oj~@@)-k-jaP;}M#NbTz_7|bNZ%b+7WZQWH->>!% zeM`lO3!SS$IKc1ns``EV0}7569dWj!>p7(cXFkdt=KtZLkcgzCC$=@U!jm|48tK(^ zj8oCq%Cxyw$W8nn+9tn8f3I#4NjUx2TtMOxt9t*Diqb0rlSeI7GLsikyRkhLO-$;x z&b0Ly8(%2G>gm`|UKBK^{?Z#{&|Q-)eCjxR?`E3Oz~0jm^{Aino?`g-k9#w2-}|=i zA#A0%+E9C%?R;3w7+ZyGl6aL@d|#1n9EJ6c)mQ=oE1u znm&uT6T;BnDH$RE^bQ%ZV-^J)LFGpogS&hJWfH59vs7Le%k;Gw-^0D17k)hbyjDXi z{+#>bRu^lJ14K>D&u0-wMB#q_QS-ddDr#p zlIQKM0vT#noy+H>&lqB`Gn7&hhTF=L3zM!wGRF6{VGIQyQ@R--bupKpWTL|!`8PHZ z>nkrK_l7wk0tJo4ukym&Fv!M+xG1+S?8jQFj(8p^ItSH_8a<)Z7-kuk7cex>gySQrPgOGE zbT(OVtW%Z7QiuKPz=EZq&+dKsqG3J2*UfMXd_L>=Gv9}3-{I8X6_&+qrocQu(Fch& z?K9lDroF?oGWwxAdD*dJ`NKP6qKQwzkAq~jd|771{Ab3Lz9<*78hSQXT|o5*!R6#`3Ok6A;r;IXzG8=i8|ySI4I`s7=Qop{QUxQz%$sHtC?E+2v^62D+a3sy4Me- zex0;W*KJQ>J78;0Cl*ELy9Iue@Mq z<+|9JPSyGG42lcv{otKG!-;z+rV*$0I&(vlOn8t4@VL$3 zc?}WbHqdM$gAR_E3l5N1*viemxeBsyUU?pmd_JCnT#62w{&%c=Fe|<&p*6!E=dKlU zjT0#w)O0ptqd_%9rC~@zfVF^XCigmbAnD#r$wre>Y>)@!$NqBf z^8AVDNwzot38&Y~1F*#_)Vf|cgVo6G39^FI&{}rh#o=g6jM&wEJe*UGlRJ>AiwZFR`fx5T|Jgv3blA$xCiKdDYGSkBt<+*AoVn>uq*U#0R z&qDlgh0c=C4548je`)Cp4E$zi!xi{p47CWN&F61rz$W3~3$XovIcUmraW&2SS|yI1)RXm)}|V@=wbtwLc-C!LEX@cvcG7Jei(V zNc1BdMK#0nNx8)=r%G5&5t7bPVxd{fn=lFD(kAApFAjoc9yo*K+f_yGtMEGeDvNnJmUsA);RCap|u-JSRJDax5Q zXXPb!S~6QzR)35=>(Su%6h{C2GF6g(-o4zQScs+(K4a_1TSWJc0#iZ~QM^X2K@g{G zx;OulADx3_pVJe}JCpI0LA(j`n~I-WL#m}VPGVu`&_P0?b0a2MfrCu^g^!0ml~T}m zKd?>-Y;Rykwwra7MSKsY+}~JmNq>_&gAv0W7hT71s5+V?r!CmaN@ZfC3^NEIkD}`9 z@t>rVmq`?d8HRE&IeVR0C8k-^GBTUYF=*6Rwdbg6l-`*LC4|@#9zVPzO)_is0v8mv{48vORaUJ zV@|4X|L)|Y-=L39(5n*^Cqo9j*5@N!7wo~sr#T2MI>(=UVl$q)GedfcQ2#heYuOI_ zs5p#9f3=1}uu4``$NvrZf4h@?i`7_`^Nd>m5Ijm>DqmQ0$HrzCuUJP226z&dS*eM9xwCoB!1Rd9 z1ii=^?(vTkJ<_N6vawBU3R)N6%SfMfz(ShB?HeY8_xidCAuKa5XO+>D#d?NF48+bIK`+*Lm(I6;qy$(yN@m^_K@Cj!lt10F!E=Eu! zXG)HjR1xdJNm#tqD_|i2d{?I^n)lZTkX~&j`yEA+t=0<8=Fx8e1SV^9l4wTg2IPm#$F)~QCKmdE4Prm6}&Awo4LvT$Tqp@ZSMO&IW;+L^h`b@|Q&*!l;Oj1%9{p2v@9IF)w_Nb92_60 zu7WxXPUnmV1WT#SdL0=+QSCW3^Y5eHiBrGqLkt;92~tNBTV;0&$C`E+M$RC0Y-C^r zC`_x|rf^Y9j<;IoCo9vWGIY5H6cyun{|@2+afYwciW}2qse%quieaz%&pEw({1kAs z(?8#{ea9xcF4&T~F8B~81MS><2T;zV5vR6yN96&2ydzH7rz(3__6W6xc9T0xT(?)6wz0@ zFGv+*s7*g`8057Gd-aw@KudG~?s6x7zbw&PNa5C z5x|~i0xQoF2hKQ$%xZjUHr!{%R88!ZV=TKpH>KbYpubi!|L!O)!ZB4~8juKsc?|sO zeVq4ZgQv+zg~)|G)>~Q(SHbzf@j>V$EUsHQ+E{vJc+)X#xh2KY*}hmgMg8@Rau!VL z<1*rT4CBFe_@Z89j`#I<1ql9o(M7CM53>~onjbG6SfB2BFlNCA*UymsgC7zDDGLp? zEv1s^XEYIzHh!fGWy3V4M5|>5Tt>mXW(q~0tQ)W>c$_jD7d=akeFKi+2hk(jE|m0a zP(1t<_JdEXyf{{D4GAlt*;?H&KiJu0h;!>EB@%K+XtRO=3}B!jn$}3x>*U9uC3l-6 z_3}r=RIYMCB?jbdvvFGb4h=?FwZbNaI{s3pC0nV@U7YQ=A8g+5_<4>`dtWM&?ogdE zZ@r&H*T|8x*<)N?_M(dH8C&J~213!ECr0MVo!|1biwN^CiqG2^m30lL){fd+dbYg<%3#Qm*qC3iK;z>Yw%SVC0 zQy|VwL(n=s&(dqA25KH5vn*+8{*o;GEFx`MMfYLjS|l-doUNj6I>P?V_oj8pzNDD` z3)usaAI~BQI&X7MyrX*h^eY*w81J3#;Xq0xRFiYDhNQQs$bC#vLy1GB^q%q47h{dS zx!jE43=S#&({p8kU{KY zmm8Wi!SNzR6tOF~e!mP|S9n4u@;S*(SWh|Hq8;Vz3UFG(?++&#APM-d-AU?`fZFgU z^d#B^`0e}s-trx$Q%4+1DvA5M7UKeLrH$A4mz}KkT z$%bgI*~;qW7+V@Kh6k@dyb>?^495A{B%;hn{pWoE(Se05W$-S!t~d-R1xtZa@a1*8 ziaVS4Rf!tC7Y5eTq{C~dRlV*+cnEI5`RTleeLVT_RIw(vn1&Wk|MCK`z%kudg)Ec? zk}V$;e~Uh`krW~uY(DdLc@e=XvA2d zbOt=qFXLM5B7J zd;|wmAd{RzW$!|u5yQiRn3ITKWsAnKAv@VkCwrL5Kh#u&&RCU%@GiV$?#4$XYm(>3 z+n(d@S;<@%_XFD%)?R*g&rMal_dM>Bvk^X)tHV6l-C>2jNeNnd<9BP;M9-dwl21r6 zR^>3#FU~m#$j!UNfBUUxrGV`Bpd)O4cpm&HyO_ZhOkKNtAGH$ncoA2qj&Aeoo!BPX z))A>?o*^YwdYGX+f{sdm-jJjZ92Kk>JNRLR#Z9)IG^OF)15&umQTTi`F<*QmXg^O0 z23r3Yo&U6HCE>Gh0nzF>(F>8ChuUwL?W1c~lOM}iyG9WtjQia1^!Iq*zQK=O-*-I#TY zx#$9Og!M=*it8)72%^OES6}bVM_9jK%VWtF*!kbfe0vXzuB}nz%C4d$6f%0Wkp!XS zxXG*DR6G#ODOZ^{FBnL@`4_^5TD4?G&EV}+&nMcvX8=}-=EyiCRo zq&~wRt`KC^yd?aSH~i^-b{fF3a|a{oo$MN;=f%n^fQMct*tSHnz@;JJZ12kR|Beh0 zRI>EZ{dGqovpsj)4mKN^$BXhm86+@|zYLb2*;?;>sgyh3T1FOMOXNWU=xcVrpt7Z; zF}xK=Q@D(vjE|}m%gI=6fEOS;J;|1*P3dl-&q~ToBt!y8k1KZ2m)g9t86?eQFSNM^ z>J^W~D0tkQEE~4OC;&Rh?K4~b{@d4y>DDB$z=5EsLV@xQv|tN!R5BHF@y~O zB4@4-Wy4P=K9w{XV+O>8)>k>pAn8xY0SOv$Ld%g$#fFe6RfdB6Sp{|(jvBricb^k; z1?uCbbtoReVj_je!!zt-?_pWw5CHF+5NNzMUQ>odDkqGHI|u8Gut`w$j6 zsmcpz{l`&6L%8dfgj85)&iO;843y~o1B&#NWs}ImYJ(LPE$7x{<{w$@m`r~3^Q@9nZQ$l@AD_ZmrEey-(>p+HD z@Z=eXStiVyC;BKHm|}q?8@~Dzcv{jYc7JiC?O>nMtu`8eaSPO!v?DjA#~>8wURe8N zLao{`naDrbdIZ3B+qt;?gpt)P%B#h$UWWUTXc~<;EvO*%8||<300$EeNxg6?Fri`=ehihqGPX)2T4~>Gk(X4Z z->3dz*a>AIg3EySS8hK3nvvps2ugG&JwFIzW1;5F<5Xsy@F-Xu4#V<0M@*_aT$*gl z3nd7DUOhBKzB-iUpyiDfIq~x~&4x?fY*Dtn4N$?TlV;@alo72@zN24jH3^=2hZZR# zPLkCOsL6J;Tk1ObTB?!yLcY?d+deFq#ziws@>_!!VQNTm^N3;W-zjk(T=t>gY;c-p4)Bbefu>!;YT+wGTrDGm~QEH-2U`@Y$X;X2O&C zMf^yHNtaX)fmUhG190EKn~+>~Y3Hy5z>2sEUYRR@F=c>NNCtZH&xXwd5g@rDHc&ha z+#U9)$jO*=%GsW+ZwT5C9+ml&GnRXQp5T9}$EQ}B)@^kBBQm_YNhncd;VKCV zBy603XNsS$_)p0=;-pRi5In`#OX{bh!LD2v>J88V*Dbf|4d$6<5?J7SZ7eEDh5l%U z-p#TOGLjd$!}8_{|Lm&#EHmM|-r(a6&52-`D_$#;hv?~)^^w?eOXdD_Lz;eO)U-9$ zy=7@INaXaWh%M5ff#Jw$vfp7nECdN2HPi7|@cIhz z-qj52)64kyry^jwfvyNfoctc40r%U469@JcB3#6jjyr$j2OzcJsj10V`GKIGC4`^e z9*jHTANGm0eP4O5`p`Rj%0W6vd|1q*DtT7Hui*^E>OL+FOZWc^Sp8vW=&vi98W5a&OYSDq?Z$ljIEzK z#PV9dw+#oOq~{VScdbJ5QHHJ!Sjsj-Qi>uhN$ck_VsHGyYa(gPfA1tuvNqs;FBrDm zCVJL}CR&x=q@s1KVO$hh;$xst1RRMk6c_OIuiwSHOFi5S+Wj{@ ztOV#`19Fr8kQL7K_t;;gp*H6^aAj7x->h_hUO9wgj(4kROY*lkc{t+q9bI1c3@2D& zewZO8c-XL&jUy^e)qM0Nw6O0M3>NK27{AKN049pyK$PLGG|5RZ_F8s1#|zV&;0?}8 z-U<6p?nu$kk*?JLV~{E;Q^c9QSK_H0UH!QSHxsUDuG-6bI+(<9IGzKi<6u)p8~1VZ z@0K~UD>`BPXwR?CgKfRevJ|d&70E^VkrsHDz1(Jqc3t){!(rHXQ(Y(E|{_^ppajGpM zB;+n0(}J449Z~iMr2wd|W*g(e{G+pcxl%S?`KVPVFiIHb&j&oowpS)4e@1|LST5QW_*AX2dW4 z%02soU1&FhpAt1WcGaK!^?vGHJI|i!SkSDE1V+H+?2s*q2GS05?l{R_#7Tdm(e->s zosL#5)Xj7l#^}%hKF7LbVbisD8*4*n+beWzQLMcrvoBB&(!)1w_*my+QkmkTsKc2G z=txI!_RLSsf?ho!0-;Q}zh+R3Or|8Y7FDf>ceJF~9`}5R4oOI-3|U%h!$&s6hkI;G zJKGkgRcnrGDuL{}lhhKcPkhM@`^-kPR8TH@JMtD5*?(a!fDa#q>T}@n9V1Q(HTm8P zfiyXAQ_tNcU7r-dR>cQ8e`X#2)IXx+L8>m`og%`|1&>z#@-VV1SfR0!LgbYeeBt(* zY_gRDwSf;|+A!D`jdzQX{(DE$_HV>>A9R|?H^hZKe3AbBCR~PaXVVsx6#khMmH1M= zE~n-z;1*p0aM9jPcYoekxv46sa`iLrMJNClb-8Oj-fweFe?yyX3pL=l0y+mR!qw%` zOk1ig;(?{?MwGP3`A$=-gwpN51YfK~Y>U6VfPV+#-Q+7EF2XkuE%-Zw+G4pu7xW+Q z#b|SDxZ~!Q65CCX^qSBn5VilPWPVF?P_FIfX=xrBHW>8EQB5`oK!BYp^8Ng>>@B;_ zN(I;uKE@{Yw!~Qjl4dQcvHuXW%+cnID%Efie>3;VFM2e+@|rII+xPF(tnPEU(1u&S zjnEJE>y`1Nu3OLyX{f~@(1;B1yR{?>ZSX@&#g%jeg_!9p(Fm+=6Rl@~GAn}3ju!@{ zB*=U6k!r#T&+RCa^tbhV=QZU&6fB9A4C!U8G!u~KS?l@bT!G_mCwR-c4152re&q(7 zsY#jX$EFRpumnlcze%5LB~O3jP)4&+Cj8t3;Cn;#Ic!IFK>?9n#2?EdPD+es{t+R{ zHZk7K7j_l5|KH+j%-w3u_RUn;k03eo?dJDd*U~>fo8=K{`LQ<4^@Nc;=5MToxAUyL zm~^pacXmnh8bkWZS9y>*(vWc?s(fnR)4rmCm{?c|RZLQch<#pj(xWDc7-O0BAs&(4YT!}?oz)+EN zxEqoChbZPGm36Gi4~@}b7}pD_<^!ql#FjtM*#SSXx|6(xBW&3X_y>2#tr-Z^yyzYKqgHsV zi}NppRN~>|#~#3RD=t?E*BGB6;)5G0$i9#BD1!w);|i zWcoT~xu6eMMme5<7p2SEL-?oV@948blWx|$wv}$hH1JCAjcE!xhXU`7^#KkGn(oPPu_I4Av@ZD>!AH2U_mq8E=!N11IEXax zh`_uzXG|-oB*$J7?Fj4FTggl|ZK+P{Ys=OUx*x(V6hA+7q+_fI22 z)c7e^bRWrp*uJYf^9l$uw$FP?V$tV)Jdb?;QDCGupFr>Ba&x%rJ-V7gh6sj5!0Uy? z3S5=-;V>O)*3;5M7SE{-pwCPu{T?VzGyve|Q2jRQ#6j@8(R@HvP3cC6z}^;<`wJQM zIm~&rZ>0Q0z-pF83o${JRa87@6XvdVcWx$y1yohx!cOkS*dwb$y&?M@PF zz%9wd+iLs;v+|eE`aY>PcfB+1PYQk(^MV}IqvOwfA7twtGoNgGZ)I7orC@caMRT7e z=?#r4i^K4TUZ*Zg4&|zcr#;QCA@aV7qfT@>Ogx^zxLT;%P!p{sHUB^e@L4ARnt|^I$eK3t8OHt457v|v>3}vl` zU|qISH>f+aeLrBH#yJzEe%{^?q{sPLtP@c)@r(5R554CkW@L)Gq>2dUEi3wJ&!*9L zGWYx4C|-ZeY*mf;rE1{kIZ5Z&Ui*XU{b2ohOsWTE;WqA^rqNrSnDoRX1*v^OV7Jnr zD~2+X)D}uuUY7r;6KkQ(^ZVA%-4NMsrSuvXt$Fby&Rflp6$!KHbDE2u@#lOP0Odib zuKvjHPK~Glx)=rs9B4VABuoH^BK$Z;c;u;AZ+AKzx%a#{>%;S9MWp4USu8NfJZ3QN zp-0z*`mWtHfhBA`@X(TI!cGgI6vbT>UJW0ihsa^R;3u1t)Q z?L&O7QS{)Cb%~*DMlN^SNPTki1+9c za#P8PCUrlOVU7FX{klCkrG5Fb}g!_q#Nj>k}XBv|Dw>iC0t6~+_GS2Zek?5qgK zmXrFGdssU@U9{tinDW|;Xj;d*$uD!F&tjaEEquK$s2L~b6KznaUy0n`eJAkkRbzdO zu+$A0)(a+9TykW|B86K@vaCri>@qg7KVDzGQ;k?iK&xcKVL&A(9~=7Ky|OCI%jx1L zL;8vmvw-KK*UhbAGZOur;A%}C{E+*?wO4)V_?Qn4F;*{V-nPsqLATlsvjWrjMB z`Y>F&SM!rmF7n)mGM2VzLc!&pMt`I1=5rO?EG1Bac#>#-2iZ4b;TeXL!Q%l5RCYWr zun|n`goX#`(!m69aEZRj$4sJYcyy1201pFAz-*U|{w=DV6C}mnFP$PAZw(qf=`mC_*bg?wI8JeSZ^J|NkfMY869K!ZiAh?Y64 zPa(DtjZGPAXQI`i_`SQuJ05nSMLY7hNP&?OuMb1h6l3^rlE`^y-(tS-O$r(CYgM*7 zDJbJV-NoT8+D_iw|G3Fa1!09nP3lYD|N3Nb{bkRGUfP<|_YN;qyR~kV$yEzWGuSd9 z^|e%gNB)RYihBEa&v&$DLVE?#M=5<@p6quG_ul<5Cbx$miypM1>f_ zTkNoSq%V$vmfw?x$+dpv&ty#sjWR3))}3~%?pMu4*wXju)#MI383P{)JJADG3AUu?>=xT89zUHAGu<5RMtXVZ)Nb6DeL9jIg_ zlZ>HgS>6_RC9VEC#&y9_K=TZ98z5|4kT zD7Fb3cP&d#(A#m`Gemy2RyH>7D^^dsqTR3Y&M$4ZB!?`Ne_%hnEAAK3gGsdG>Y6p9 zz&_~g;TNlyNqGW&3f9D}&r6J@=f5aaQeU%-<|3L5XZLqqV5%gU2xm@B!1L+eBc0u{ zVD}RR_f_Q#zM~ACV<$c+n>w5q-CRl9ryeN2Q4rGIU;0!&9`5AS7kJN;F6Tcl5*Tr< zt5df`LQ*h`dXS!>D@vKbz%d7vB13IiwN_BkE^Xg~y!!`0PjpV7h4)ltFhI-v6xdS6 z5vT0q-}?~2a}Legb50u=30&likL(WVu*mOZlDpGbQjvTzEFUDUbs69td&3aWnDk`6 z?WrFgo`)u6hKKD;d{{NS`&7rvwk3%1=bEIn%a7q@V8G|Y>_}~4^k;{Z*K-Z}Ai8tv z(sG>EWz808r;-S*n$xC#=VY5MdV42=&${1!VY#9T@v<&(#smNwLZ7|$x+m*`GqB$U z>6k-JOg5ZK_0Plwv;}gJa7U5+?rXt!mTH#hf+V`Era}R+U;=Av+>a3EW)vwQ zs-iuMJ=ReWOpbpX+PicrXbM&a)$}w9_YZz9>bRGo#tp+y4vs$RZ!kUKr5L5Tk?6cr zo>49@XR*1dRWlDU@hoP0-WRhlMl;w%3)Sqme4aStLZsLBRXD6JG2~RB>KL~S)r8B> z2-mfATjb}I1{zZh{CG2)J00KVf#Nz$f(=ycB1E3`=pgF1BLtiyJsmU$p^vP&{TY;B z=1;f7ATI6fSMm%j;`=CJ8ETR?ICg&J%^{{aLpPbX0lrkuA5P8K$?hMOhC6Gp{^bP_ zk53g5Erj+DgGUcoi$YWAOeQ;>yuHK~QTa(G&iCF8CoU2%b6i+cQl0pAubZ*gh{d3q z)-A`3R6rSyEx%olIEKyXxfb|ipYuSg7{-8r^w%y!%2$7R5 zTY%K@hmx#CST0!qU`GgI1hw5fv;{Jza4)RyVG$pQ*N$jXi@~R3lgl*Es%uvNd3&3< zY&F7Eh(Ne1s9BzobxkJd;O?r-A<19_n?rM6XWu})h-E`-J4tPePQm|3Z;snNp7AcW zDWlWlmb4`mUJu3=f{++Ox_>HK%V3`0wkJ~m6$y$glvnvS-Yv8XbnGvcXDNTA+^OFI zwDlXJ!9KkRXZu+ptkNd1g*;drJmsR5<-z2qYussxdERh+rUWOCKie6*0Vn5ZfBUfE znF1ETPfn^5tfb#=J+#sghdxYlc*TK*9tVJxJ~OIbq2tNHT*@24og=%jmX1Bhj#AS@9Jm6}8_>hY|qWU(KRLM5J z!X8UM+{v9s^KrH@+JzES|4hC!%9wsnqC@1Kp*1kqRYjAYkxOPRd-3n(8@m=V{e09D z(xa-ymHtYH?bp42kac-d>GAG7>wl`@3X_akU=Z3NTAxDxJAI_NcEJw`7|9RNx`(VD zX#PBfYI-rD4@fz}Kfn)U_UwxC)g?Zps14&3V&)GwxU3DO3c1)ol&~-)%zm{MeOt@$ z_bbsU#i!K}9C5-Jk(Pj7lW@uV4s>DmDX(Gt{-?hD^825cZ?bP<-u&~LRE*-upO=~I zZD0QSX&FN7+kf6>@#22<=cUAGU;yTy*J1bZY5u%aNB)23qto}XNC~ZmLg7;(;;BR# z>HNbejgQ&uJVDk6l)KDpl>T0=$NQ6u=Q`Ih^qAHKF|5ln;TRZH`1mxP0TcYKmlY=( z5!RN^ea~ma!>Te;F87N(cFbOD*u9>4hYe$p2)~ZP#u&Vdq{fiI3=GJ@IsQemi;%PA z{d{EANpOEJ0t#nLr$O8u1;B5gK%CVWhC5AsK^@j^arQOX6Ww+cx;sUGt= zgmxyKQIm&W*Dyw#9B+x=eb>%*Q?=x}HP9nAK(B-l3Au${3VN;a;;Fq8R^8XS z+OG|ji?Z*7Zw^|4DSS`Ep=39*_0HG%tJIj6%FBs>&v>tN1A~u!#EElV@XhMY)4?0S zCPx5Q88Gz~Sh*~;dIZ#;XN%%rUc0w*Ja8x?{jg!o<41-ay#k)95a|g9dx+O7I#Ul4yRFBPytY5K5r90*e1+Ih@r%lP!P^dxO>&&`e#+Eo#z8i!>p(5~r)iJw)EUy;+L`yWiI^CCh9gdH>^Cv28#CdXIzW=Ty_1p+PtW0k z_~u`Xp6<~4Z;Q0p81aow?{VaGd#{2-RGOv?Y#mv7jE*BKEIt($k9Y2sotz=M68-st zGniY?T)g*wOxX?Yr1JMc&yu%!BO;-E(5flYf&t3#LFz85xiv~IAEN<%rpQJUcA1Rc zj8G?9Ule%p$BV9%$FGr>y#1xEC%Hne^Xe@ND^@Zhb_`4qWEdDPu22Yls?=#ezs(69 z+vHueckJ4ENw}7QB_{=Y8DCS=$X*2`M(okg(gcWVNM%z*WN9fS#%`YK>Y>M@4F0|{ z!3*gSNIB0`GuHx%<%#O|*t)q=H-f`S1?ednjL{aGltE}4P>3y}deyMeEeyz-p9SUDjKiI_KjE&y2YiC=|0 zhV`T8ZKKjB0HU=-x$JqmhQFxoJedIE*l?@!*x0P|g7)Ll(?^`pQHqPH#m_xqJnQ}0 zr$YPsRVsFknJDe992m!0ONIFdV02aJWfdzYX<+Ne0*4DKo*nny5w(G9T%i{hT@PYF zm#1r`K#l^}B>YRFz0=sY8KV7(eea)HOFF<~O=>@f3b@#EuV7%u$kHBKr;&8q&s_CX zt_p>jaiX)vXG~s0rfV=jEceFX{;)VyyF@2As*rlUZuX5IX5me=9)7c`*alQe z?>X31lKMFxJ>Ocm*rPS}o;yc=YI(j}1P^;A7~1v4=kUh3LK^_NALm zD?tGk0IqVsKLrn@UJ^XyuWOW z5l)X=ZHbz`yigF?ExmL=Dj2p}ub|G6U#l@Pt^XBI?KO(n59&HbR{}4ILJQRRjX9ws zSD?NuL&WjJ9XL%Ak(uzY>j1)XybM<~F}WcJ>fU75^X>9DqOW@A8XIhO20gxh4P)>= zI)roq1jUE|x@vS^HaRYkK1-;mt)+qD{7#wDZC}VIdn{|Af8i9;n>rbP|A&sy!+M`_HcPNAVwgfHT$SC`da+$;G?|BjBL{o41k_wn zuA4RM^-I5gOumqENGdbd-_;+j_HY^ODN8Jbc?~X{DWpJ`)L@$yn zseWd$XBSXopa%h&lz;WHp{B~VlH{JYo|K-;>U0aDUTrCC!K>ub^(sK)=`HMuG!>U( z4F^RLDkWdN?Y`|pwrM75jF9JCSQvoB0W0rN6xMTbl@hC@dVLd6(QSLHmL&|bMieg9 z#c*|EJ1|fAXzaZqx`vVY1{mjjY^#cZiTZ2Sjm<#Bhs4z1SC${x*`d4_Y6v3`jJ9g! zyM#t|mvgmnDX{w;mC%x%W~a=wuai^a9&nCy{lN`E_eZ`ynwMo}8Eml|>TeQzhNm78 z+`RPGbtoiLp-!u1#Sy-7_WIyr&mvA1fBQ+P>elT{3DRQTcZr>=H4yremIYR0nCtxw zHC5V~Q>R<93$Ob#86&K%SkFI}+AQC~pbFT>;`4PpUtQ4cHu9}qO^b*^Qb7^bE6#iG z3XD$Sm{84FGb~;BJ_H&O7DH4dRn2qinT>znZXFtJa6s&R&deH~}!FVygqK zS8ZK5FgVfo7d*5b4H~tEyv@}3?1Y*-zNjLcfzIBt#v?5RRwubNNj@>|!yw?GceFb~ zM2yvfFiwec=uU#^4(xF=3HQN2A@?YJpPQZ^g#5 zmkZ-HaTpkHBmo^+UkKc-9MzbGvP$#kzp2@!2I}AVTv$bm(BmtDG*LbU&HB%-)(y${ zbf~V!->wxs?*g7yqOobI^mXGh5dRFx0X}g zX@plB=!FBKx))Dg?Jt>qRS!Q*CmR{F@z#fKrP1n7wUV&})fwqI08h;Q5`Z$hRw?$F z=koo1_5;0_-Jus49h>vaeka(M8ruh7-j*s@Q40-U$op5jdK^l?z6@wYDG-SGekAJj z;@%dcUwG5K3q3L4{5VJ@{Q_@)-|vo+iK>r@E=#~C0rB~R<7xM@^Nkb5IH8A<316cK z$C1}*%c(bTg}k?37#~*?y;McTe`0`p+BAyUsytP?K$cHE_cfIRn{O4L?k#0V$FZjw z{SdMVPNEjO)_QCJSW;o+wS@rc*xfES`ut1fY>g3hAL0wP(~uat?`b>zD;bJBK+HrP zii_KLA=>=U1~T}?n{4<|h z`G0;nmyR+$me}epH)20R+?#EzTg|f53y&h)b`6t^KiFZl{knP6@x?s@pL%d7COCZU za;bMtQ|Tb$Mqn_uA!x8SB8t$VCa6_b=bABYH zbIVJYz6~ z#2*`-yD$%yxcV9T>_n}JMERSmn`~r9ghT6hYi6Lwy;4)5dYOfC1tw6ph1IDpku|J5 zLf%CUj#KCInM%~`9&}BRHk?|T&Z*^z*_aP&NFKND@crtIp8P;w?_wwJf_|%{(uEil z&PA$)YUr=iQ8Vu$u;tXkbmPJD^r*wVDTnd~<5^o&LZ#o@ioo@OaH;T}loo{f9_p)7 z>%3i}=o?op)Nug&saWmC$&aawDPU^!_98+5<1>xUg{AEA;|bQ8S7^rydt-AK1RDlaFJ5b?Tn(4x*p)r-3R*T_w6IPDKZx0DuG zqbM@)S#be%x1+GfdSDJ@&C5o++=F$i=$JghqpJ^iT2tHSvpPA|2#-DMm8_g${DUyN zxqWeWIqJ#gz7`|6`?p-$7k*EloQ7wpI$!szcN-J04+j&-0y7xy5_x6Rpg0)4t$?O}WIGooM#U&ML=wfqepYSaFL}^ZE2T^ql0{ z$jjrc>dpuYiz%GfgI`7wWX*BI<%K=0*Ds4sI`@bWAW)0x;jNle<;sGzM+B=j1-?<@ zz|H=0qs009yeBy~js`Ojb9UWTPBTCKQg&OW8waW!tM8qC6Le_NItbrUYuT=%%9#29 zd*Noiqij6!;kb3>Bv97@($CB#w%F1FPCK84m>jB=r?+sMfYl&FM^8`oR&(SCdp+lc zk4{iT{=F&9wZ76@)QHs2n-gh?c$EnQ#JXxaT)ti~=F#}3xltX2@8DEfZ5li4q>^w% z`ej^;)3gk#4I=KDTe4K|uuEt=wc(on`5RkupjzawuFZ+}@bjPatW1`BUe?t#8FZZcd9szNxS(eed%~oC9%Dw zb`3tQSF>7k@9^woK}) z?vl@EHMBcr7t8ir?2Whmoi&}Vji{s3Z zxh2kj=#$cuBq3t>f6?~VL2b3&+bC_H3Z>9Oi(4t~?pj*hiqi&niUbcHTHG~I9Exl3 z;1qXv3#GUOCrAjK^m*UkeBU?ck27cHocsgBzRB#pZ&~ZQ*0t6;o_n2nB?>;T=ZDp4 zp=Q}!S4#n_&9~Q8=*2~{-S73S)LvRv!FW2))0dlWw&hgkLUAhgFZ+jcu1U&D!M81< zD)T0Ll4=dR(u}BF196WQpDBEUSU;D0v#p&9N)8(XmmBj7(QOIu*3z;T{PK@K8KCym zP9v>DSt(-2y%C(1TLfx;t~b?VUa4nw;!m|==D=pvlnBpqAes6WDXl7%n%7g3t9iA| zmcpr-;*JIoRjw5u_ba(8kjn;p&m;eV1!s{4Y&WiI8=%O+ul3h&-7gLjfdq)A!OYv4K# z|4)0Cm-RPPuc+fh4SX;1IrumC&OI9&t5fDC{`#`+NmQCZ7Gd2lumIea+YeTQ#H>`yCwtz~-S0-$3b<^jL1VM*l%y`t!H}!33 zVB@Fhc%3Th&)7AjpC(6ZZ1tzNcrN?o3RM^GuNX*Jw^zCby3X!?mV%TIa(wSCQnXs! znEv!0iU&mMdpJ?qTE#yzm1t~ehb`1iWm7k~Ic-GU6X~w*w#)c5xNU_37MHg1S}G&h zA>)n|Urx#dr7r~JVMo)pZLqiXTRkIyn&=+rKAhDjgm{v zrQdNSR{{|}BQ*pV&o9|+%4)TGBGXX3+VpljnzDI?>(9w4OWezEO%f7Ect;a$=MkI@ zi(ALw)^eQF9B`*REZP9Li|Hd;DjsHL0Vx`=U6M<`h=KLbD_oLQ4fETCrM^@Pvz~;< z4A;$BMO@T^i8N5;z{aX`r3Ay%)F>CE`(1`=8BW8E3!JA3hvPioi!;QmHNc}{AoH>H z`+sWC?QEP-k=n0yQ~Gj=xYH#O>C`DOqT%DD0EjpyE5B8ao5I5`6%OCO0j6w-x5&Xu z-qg`}2mp#{v+cSfNm^y$>*Aj=eogUQ)Cvc>#fv01>34SizSqjU+YT|Yr~7t;AJQH= zX-3XSoiat+l6?Sos&KisbqCfR)ny6Gte)9k8f2|M<5H6z3X-L2g}(-0>xQfBwHO*X zmcNd6^SpeOI>4plU1YA-rv@hMcq3v5MUa3Iz3lv9Z zD_o!BpYfX+p=PR!L5BO63DgUyFG|!4>Gwl4QugyO8<|1t=B*$?N#f7rBowwvhdQG| zo+{yn^G5^WZffvt<(-A;^yPZH;cd;B=h1P{CO_K&bO6<7*nJn-65T{wmrB4Bcp|uC zrX;3lK@5G!t>i8gvS%<|kFG->9vb+MK-vx5=f)RGFNJfjBSdQvB9&z|Ut5X<>z;pN z{l0M5x~T@`fL*|4)(mXD(F3l)HWNPi}>hqTSk;<26 zvqpIn_OZ>e4y#~^O*`8I!OF|WDey;>`=hg2?Z4BxzV2?~{VaCAhyrh-7aJLu1w4`M zm!4@G-k19f-A4N4WOD(B$1pi$gq=AePZSLiv>A8rv>iRAzLo^q+M?hwVl{^!H{ls$ zF&DZnWz1tnX~k?*?XNSE84pL?)b5{*mzT! za&yExs9eF^2K8-5^IOw1T{+LJnP)Q-*^Sy0759uU>34e<>?z@>bX5I1Sj+94xc$1PntFLvg|Buv?7aD2qObRSV$5)1FJo4C zrwuy4-M=O9a60~CO3O=R`L|qyEi`ZcZeOx>8ijP{^^-9=s*w;CWM8two@!bpZVCt7 z2tR2MMBe`9xB51meFrpe1?g922c=e?6qlaw{$ zk|hyu)jfx79@)3ik>v3{8z9?9d)_A`ShmsZsoF>afBAYK^E}(@4To&u%vpCcGYgO4 z&S|3SCyUR$0lD6pE{t=-KF;ep-uM~0$q9`OQC2>ZwQg3bN+USR?HI!eOCIbo@|~<8 zQ`c<0j$1ICeToa~+nBpRzC;)bqT|Ys^m@)tay;)*C;h@2x<)SLm!&N}bpX+bJANg6 z%O`i`Aj9=PVXG@A(ajv|>w9R<(Yw8ui1+sZ$#jX`o)7gX&vNL^KHLBuB~X5^k2Ni7 z1uF9z1*nPsRQ6;%@+@rU_BFe1V%ra!RY|YDKL5O3e2wZkeAReyPqxPteasH?L5Lg; ze5vGM{@JyfA#sGOD=N-2vXaBz6ou*I>qjQG%g-4}+TIJ-bJ*PzgpH;bh#sDAKlLwT>PZ!46@L8pBivD*14NtSO#oG9Wo*r z&E~`k+&xVS&#s0GPj_9h_9AdlD{fXEGdG#vZV-0Y;ymTvezwuDP5ae#Ga_NN_t5w7 z&y8t!p0^Ql6!vry!oKEb>qcoQEesrbWR4!&qf?EX;{5`{p;c~MzBmHyCP&Do-_`9q zb6vWXV85!|J3g~|5d2J_GTrZTCA9{*4Ww4mSr^`91*T{=p0tJB^@iCkwO2SIA3$)) zcZyH-W&J&on!7JJ%qDE8A!=y))eiJEU&JrIz z-oFI-p66uQ*Wz?!etLt|gE_KHf1$$_QL2dM=!|V&qsplRaO2#B&RjGJg1Nsd23+jh zd&+C$b_YEZZ|AlOEQ~NBS*TmePjNuE1Abgru*&+l)LR7$ozF{ozrKoEpWAev?t1Kt z63v~C`Fa5QcG#Mp@^oz2=k!X!Dl}GvblyJi{&Dw+rWbP-DUf7zUjT#_G)TC;7IuA* zJk|s|A4JUwd#ga3^Y0Uhk-c?mTj~8kZTmGUq}um6em2&v&xpp6o9}Pp zn-Z88E(HSDMG(4}Xpuj;JCh({nOC^=Cx^9dlQL1%vD@)-pv2S0>rVoq^G+3j5aBvC z+?W1RWXu0NFAIJZ+FG^jRp4;FsM$V^4MtvVT^qTe^}SZcQx5w~7vZS!l^YUTr9~*QYHcP~SeI&{W#6!m2&KPQ?nS8g z?fP(!OzsfD=-KFHTw~?x`u!er6S{_Rp5?I9Pwk4@kU5K|)=aK2qTOky{~Dl12jKW_ zrD*5XJzMm;2F%+}v&2Q)8#!sg_Y6HFr!1aq*sc4@W1#HmZg~Qy2Wr*3OF=gqFQ8kD_gQZy7qHa zjJUWt4&nh>jmYUlqb{6vQa$!_V?<}y9V}qP8vsncF(%K$bp4MlYDLgxs^i#uOE(7W zJ~jMJw^^~ytq?y3Z9O%t`pyW$BLvKW`9y`{*8Vu;CfgZGNWbwvtMJ_^OiO<1J<8cu zZ)fR1P>0EQ4S-MYNg z5hL<3I*EVpa)~}qvzTjmbUvHx+6uZxGUh%8o3t~+#Dtqlw+ro8tA@ZA=Ey-OP3nnq z`(qv#r;s$v;y+wL)($)tL>__+!oYKhqw{N8AFPMpj4 zF$@g3|IxFxJ(o|FFXnp4d*^<5#?fTcJ*-0L62Q3seTiy`6pk1N-X;LWc=?!r?o<1) z{Y2lPJ8WeRyEE%%?V$*eE@%Y%eb&BsrEQ25^XKO#zY`fRb%rT^xav8h)`sRD-*oh8 zl(>AB*wYBKCPMwx{YlDB3(j)}#vf9I}Eh`l6-mHLpzT1FG z00Z0V9km*KtI@jGuHvB`b;(J_ef$^Mf^FqQvC(&ktQm z2xOo7c3>iFl!8*Hb&6B0-E-AvGoV`>b#V!9ipZ6zlvv#AegDXX@9+_y$^Tt`_0Z=* z?n2FeoW|w+-oBLs{MvX*T<%eJ!`1&8uvSrTN4tN9N*oGQ_k&1jW$Mk_WPB@efls8?%BfqY!Q%1jn{)qvr_JygiLE^}k^(1$PVT2N}!3?>T5GQnbc(ZnX=dhPDc{i1pH|E!HFT;BEi(KSM zMfq^!R|sNH-Mf{06$pqg&W@yy!`^5AGspFUBmf1hjv=dTXW`jbPWeKyK$ zpYwhSU1hs(3vU%f9^A~|T_!xb_ndcP+MgS_+a9q9X!5g}jHe8dJV!kLZ#W~Zt^Uu5 z-op^0)r;Rv3D^SP(f=Fqe%bsnv@4=*+5Yy=2&x2KBq`De90N+|NK4VYI{hTRWFUkty0ah-+gMc|8&f$P>Yy*1yNre#1#f#>`PiK%nC{pm=MUpoy-hR zH=~WxTSes2U9_8LeQ+Vy1rxh}*MaBvzw$w{M4TJs(e~XU;tMw(+S~JZtKDq-Ju2%_ z`|_GT-mSEe)ksfk%#pL<6)^QYHy0A}ANG0A+z9-aelGKri@HDFa|=nB^m94U&2p6_ zTCzdjq==8z_}Te>Mbh-;cYP?m^!wzt6Cn6sb~7$Equ|c9&<*zWY$HuS1j8fO51?mm zf<+n2yxgoH^m;RJ!K4?h-R@rZ}q&Ldabt}aZP!rbV<6Q^p(&KusJVXsc<(c#JZ}_+qbqBt2Htf<9IB=}xXg*^ zxMyT2u!dD%zkc$(YQJ%N#p3Ow`y(?8dqBk5msQs>--?SupEI3*1)|sf|IXtNJoJ-B zfrs9$y^P+N#$q83mr;j6QA&8zCFRL#$mK#i3irVG+bbYqWu4t}XAWKPHu^7XWJ`}9 zf8AYBGgEe=S5WF>LlX!Dd@tvDy*2gCW&hjR+)+CCNQD?R8(TuD zChn+oPu~amRsQke-vuOYIe@o4JQ1;2-(J7E(h9MlwbBHoR^tBM+1ZZ9zx^lL`bqzX z3(#UA!Xv#t9)!tgnxVd*d?3;aY%i=Rf8$p8b#t0)QQ9Ozu=*20z1RU!gQNE-d^7lg zO6u4pr_0?+J7}T6d4Cmd;R`TYDFp*C?ookNMvd?y@(2{=>-!h=2VqdZnEv_!_{h5p zJ=1I?827rB;r{p0at~QryNKf5um2O?g1kzFk@w~`E&itWvHvAa;S z8>IPBK4M-)j@9q1)J@X&6rSn)GvjU$;C9+uFrtnB4TEi!Bpl;h1VV0COU z8n@Pj`<`$b)|sPQOfWiTiS3J<&bQlr!KZ}$(#!MEEQ_U`MKn(R)CmT8us*z}`i<&TR}hLW+>BJ38Tx&`;}`O}S*B zzwHgldgjz&0iJ+{fZBqu<KtrK#=?±9-)CDi@A_+_Dgdwv3rY;I%XEdRwtN3E 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 GJp3=;l^w|d literal 0 HcmV?d00001 diff --git a/docs/images/screenshots/homepage-dark.png b/docs/images/screenshots/homepage-dark.png new file mode 100644 index 0000000000000000000000000000000000000000..d12501ac508a7eecd53f8bc137866635d9403bf8 GIT binary patch literal 99758 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 M@@jIWvY)>FFEpXSB>(^b literal 0 HcmV?d00001 diff --git a/docs/images/screenshots/homepage.png b/docs/images/screenshots/homepage.png new file mode 100644 index 0000000000000000000000000000000000000000..26bdea0c5742b3044000d53931743f875927148f GIT binary patch literal 129027 zcmd3NRa6{V)GiP#xCR0Z1PczqU4py226uNSxVyUsm(XZq!QCymTjTCJ(QW7Zc7@5yiXkK5AwWPtAWMh~D?&iPQ5IY-fyn*MS~EHCcL*vp56q-hVn19icuE-o7;Jd~EUJ7zN?&x z!o>0SUy%Pwem1E8UvxDs`0t1Wp50G^&e>NT<}tUjJzoP*mzKCo<|n46T5mKhk9a(m zNKv@$mMYmv<%t3l6JoPU$!y!Z^=r39ZZ74_OB^~S`zn?~{_nw# zXXtCb+rC@ySPRF)1-2dM)zB8m(9sY1g;5z*7M@R?7E#qM3&8s`Lrr4Gznk{U912I!>$9XQplD z|L^B-ZpM;#VZFOm$d$`cC;XKcml*Lw;naTY3apnfPV*(s`ZAMaCqYO4(RTqjQVZhAU-q>i;=(-d?WB&P2k^idHeCJk_%8hKj8H` z(+zM62`2x~P@TNr79e$em&MFH^55G6DLaG3*=y$g)+NNPH+|f<&$qq|?N1LgF{VyV zS5@z~Mn^{rR0)30e$ZRCt!A*j2tt1ENB~84N*qJ zzW(Zt`?+USzMCDL2JYLDg!g_`aC7TsEPFb0w`0W*uN{Yvz4RG2vre-*&xuB7ZhGN%*N)u@KMxH6W%8UQNgJP)*mn zTk`N0NAG-sRF1MA^@ns;$2VfgiD9$TeeI?~>z91v%Wz){!}D4funjF`wxCuP|4gHs zx#tE3osAL>ohM}yO%i*O(6ElAW?h~4*RkIqQm}Li?VbaZ+{2J%EX_?N$3mg%xc2jO!Tib0ZK0>Li zc2+wG9;{e`D0sbbCUpC1wh5H1t9^M{>)lhRTre&^UiEUXcu>OEctXWvIcvbLa=X5N z^)X&sfp?Pl);YPuai>-J3^#G4aWQq7-1cCgW_w#QbsSnCn=fj=!*2_?y+X9uTF%M2 z*h+{tKb|ggnb&ljS^xU3)M~>1P9IL&egOtrAjU+)b8o7_W%kv|0)tLQu)db7kOWX@ zXs%`In1DOM-nKoy(>x@9{R61v;v|_zAD?)fRa=x+CM+s{;7{{YsCTWpzPX+}hfK%* zS6}X!tb_@5gkU}Pj0|=V%|d0yC0IMLDOc9$TZgIztzc-fNglnPm{>7JUwV3p+%+l* zL|aBR;EG^&P}?y|L5VL@Qp6IaUdDNAc}@GFFT++YhcQ3^@}mxdvj$kd|9rKOs`2@e z|M}rs%XzzIlG}>;;F*e{O}l2o{b3=+%$?bx=gT#_(ZD*k8m?fj)SDey+E1l<m zHBOS=x;S||ZzZX%-JRUZso_6A-nP6}S+cLaEtBU%q=uS~H|8v4((>uc8BTp38B&o= z3Gy|*wftlgDbqegZhwJC@9<(`?pJTEj9I-t`5nUMlIA^Xq1g;J=e9yCb92RKt=YE1 zIScM&N#!Zefvn!?A5Y4F8b(^{LwPmnEUQ;O81DcOf6<;2ZHS|SdD*bIh)Ve)*oOPyip9Hs6$80~*ILAwfsp9;%P0!QQx}{EN(3jNwsUUTI%Ba=Ki3=Y?uRUb7 z1_fUGy`<&W^#bKY3bs`X)cVKrHQf*H@+XsIDR-waz98!G?eGr0Mz?beot51DD)$>X zUtDXN9QzWt^!MgK6J_f2#1AV#?m^>D{~*)X3&EsiaDgiC?U7Q2Teka2(KY)jInzng zL2}ErG}OeUJg>{FkYbi>4(MkEZ<=b2okYe(W$>noZ&G-`?;*y;XoZ$H+lhE?$&Mgg z9Adk%j#GHf-)u$Q@zu2_48fOl*OEsm;t|H=QZ~u=i!*#j>!sqVC_xW)V11ugrKRPr z87kv)yyzTQhj&_`dGh+y~b>PAuS_U>2-%TcK~@sClz#Zwbww^}Gp+wL{bAJ+b=C8kf+))OZ1pgk z$o2Hmmfv~*>!X7G?!Xr63f`$`MaSwQyUrs8w$aJedth;U8I(=khR2W&mBH)d>FAKi z^Yg=U4oiv*I5C^)vO9$cbo#KD-D*14UoGRlm&WXS@eVt{VJ4v5%8TWEp&NCD|Kj!6 z%Bu(1_f_?UKl`bR$oEwWY8W3Lpc5L!W)9}}K+p|y=MOep<}+M95Ox1uM5+;<&l;X z?5$P|Ye-Vg^He1XDzevpY4oLfm6UEi$w{F`4uaV49WcmQU@y_lY*XAPxVBVLaY+F8 z(wQI18=iTGUw%rDcz02$`6}rQ%CE}0AiB5bEf>$X#?Hfgr?!k1DDCP{DYcb2oNxxlh@pK^DfQ*J`J5a>Qp?N? z!VJa$FAaqO`9=XMba0ulS}9skdLNeD{&V?pN;jcQ>48 zCA=LMqvzG_jBXRT1Px1)%|tb8gohPvZ|=Iy^N`@SH(O21x#w)7T>H6NOYZr={Z!`V zTSg@t??Ip~4b}FOUUvIIUykodP>Sz!%WJX4wtjgo6Fr`%ns>{z*6j;8t7#ku)xI6Nr3YnNSF_KzBsJRKe@zDAwhHF; z0*By#9~NpwMeS>e;d6_?U`q7J zXGt8$zz}=6{H0$1b7vRdwq|wF#v#MYz90;fFeYA}Q#r0jNeyD(ecu}}+dpkhvl!9F zH;YJpl^Bkxj$ne=n{E1&UFS|kr}MKa0KE*jf-x#q!$b34;JN;ThhC5&Oj_;}d2#aY zlwBRR%*LT0!WUyukqkZ>KM=9n^o&?f|LCO(P z`e~>);HBVJQ)Lm*e`z>c;(OqPuvc0;tLsCS7>P!OlJ9n%e@GQh)7yh12Xm^1q^lf_ z@a#LA6=U=D%BrON&C(^MBm7I0mC>9JX1tZpu@sSXqXu|A3}*3jQIZJRzE=LwkhGso zodZ<`VzgmVOM&qy>xY^0!U;3xl6Uu^Nux+TQVOiZQb2m=nvf9c@3-*vUcu$#uWHs- zpi$j8&a=0qN{-b4+|RtYOOFgv7FrzpDzDrAaV_VxU>#O%s`G3`42j0)rCUo7C;djVHsaJopXh`w8EbLsCS zdV(lg6oc}Y5^f@OzdGF3i9E&UDj2EcdiyqG>?QwvcQ5@R}7`=0V0=F7PnPgo2V8ee$YpRAfA$Tr;w!A{5C;i!^-HnPvO&A;aUfSKXE#M zzr9r`mXyyWKja(LbnDJ~Oelk@M*@`U+QenW?rF?))9t@X?B&O&qqzf&VmT7S?J#3?`OI~x2^EGxP99~Lp$y~~Sv#{vht93~Bi#y*W>Gh_-CjdEBBG?Po#Gm!m7pq!Dx~0&a6h^|Hc(0vsQ7Hd1q%%=z@2o12f! zQUrlor%k7$jjKA2qY8QprjhZSCf-bsVfNz(f4eK}6rHoa;TY+Rt0y_xd!L-St_O|7 zDxk@lkM|Fm48HTW+u4(Rk%*-5ypVL}TObVLhq8j<#YHY|?!D2RYJllj`pVpxuNdux zTu=k_E~?A>Pj*hk$@KIUbc?H^G^m&%0G&0~)g%*i3GBU>r^Mf_f)we7qP?eu!UPXz*px^sQJ^Rao8>s{49Kn{rv5-Mv?D@T2a zunHJZh>MF1)z$f$77=39rvs%Qz- z;PAgdOPHDtE&O1^yf0tWew3{SeVUBSHXe&ljVqG%;+h=F8Y0hOj4tG8dZ2PTMJ(1| z_NQDBs8i8JcGiQvu_TyiEMk%QVcm>8&W4Sh|C@tysy99SGC){kH}|5R1VTWewP|Cw z<+qUJuG?nmUd+>j+WRXgLXYjicJBwkT@vqX(*bb214F~5C-XL98in_c# z7NT_vgVmhVw!QNV2MHv}!|$>d!VuX)KH)W8ohCblRzfkW#Pi9S7}vGi0rf4nomuuV zjzcJw3E>c3!dEWy9F8y%=y9q81EyNid$(^PUgL(nj&QG?Zl#X zYKfjU7LZpLljQ_o?A_LJZ+japy%(Csix{OEwxph%LMa4wd_y!!qaLpN+=t~*s{MX5sNsZ_GTqj&iF~L~=vFlz1OxfdtEBQ3T)E&}ZdzV?*6pE}2WJ z5m^ip%`l}Mcl&dFCH(UPVN~5ZP1EEsHZJNW(3qrB=$xa%d}V#J7h?E$-{$7LXxF5w z18aE9TKq+ny0(Y>q3s7^M25x9i*nP-PW0o3dYskJE@P@H@hR<@RAKvMC8yHEx>W>- zmAITNpRPpI;@SlH#79)wm-{$9{#XHq^~wI6?CZfJ24D03hMSvLzN=Jcr=mQX59MLe z#6qyA!1<~;n11H*HXiGT5#%|&TafS5c?Gj9*H#@SEHXem7Y_1!!SEX@WDPVOOjhOE z&!A(S;ppRi?kc%%i29Lc)jCT!nHcNn>m0VYVg_WOAtwRwJg|hZrip}+#;F7$RFQ;{ ztT~T&@6xH)4DVZ$mdBdSNdV3YG21H>(PR=-ZB=5vC58?ckzC>N<%$_W+fP6U8>sxerBn|Xq0&VR8nPo4PorOA;G-<)rF7Fq}Rq&Fpa^+m6TPJXlbxy62gZO zHHWIgKRyJ(P(|ob=Zy$o1}uiJSlw*m%q4}YhEirbza5~_Tz;8lqhnKOQ_A!-`d45O z{4Uo-RgQkd!RgA)@0Bq^Ass5lq|?TrgTkwvPNN}>6Rs_6Vlm(F6!1ov6PlbNtHrJ4 zQq*=T;5-XjY*i~LI`d+~9#!Njpy0$H$XD85((IqDCgG*@sG0$OD^ht`1#-oW4aAZ; zgz4u0*aSBWwUzk4|B9?&1hKzZ(cD)u%F?AXmeTHIbxPgzd4T_@Hc!rx9T|!VxRh+ZKSxY zzJySCJ!ZMCK5i#0KzpFkLE}k*aTImEe_p1(J8YM~WEg)qr^xZb3qw)UeQ7CwbuMo~ z5(`vhT=m#%bK{e0C9v-`#sT;qvEROBtm2Ge9A`A1)Xf|1zIxtIF=OGp)qEDSA+L__ z9wD*jfiZ7+fQkh55Pl18f3s=M#dg!4QZF8a2W)S3@|h0PEZvdV4e=~D-tU-6X_a{! z`PUyTY32Ci1?IUMl@|^8C6S^t4cm^HrEyS`R%-BKWaW4TKWS zuA2UBccaU_u22nEheGrogp_V;ma_KOqsd1nAVYgud7@i+37$K~Q|_FaIgabH6uPTQIaU zP)&qO_Y2Yk7DxMz;u_}-0Yx-SonBsEo?GR+`C0rSG37p@`J~UcoS%K*EpaM;(Z21^ z@tRA?%*Gt%UFAEQFnsR>85r1RD8p%1+#98#_oFoI#I2V9FW`0sj@*t`V~#%YX{Nee zO6D5r19k`P(iCktQF>VWq*Bc)34{kF(b%0;6grK(Y(;h798dFcAArgGfdvXcDpqxK z^m|FMt&+pRu#C0ksBQ&4grMfNy=DBx>EtIxras-T$*5FrZ>aB!kciQEz%F@4Qx{Se z(j>IM`p(@`Oyyl&{aBe+(6Dkq2LVC7Xd^$ro>~y|1b%t!X^Hqi|FA;t>v51YPf3xY zb9IQ`t*W5UpTYiGmmrtQXgF8x<7pql9QtsXlU2K8lA-IpBICL?kAJL6-@0BgZe4Ry zIH*M5ddIM$wgSNl2PGDzVcGVB6Nvv4qeU|GFR0Z<*dboUd-*R)cn7%V5Sk?k?EdJxONMNl_jbqZ*%c^osb(aDhH{ZhCWmyvNQ6&=M{=(YJFJq;@*ybvSC)^b!2Vd`fW6U- z*VS#*hTm3O+^5ZYIARUUUI{tb4pWgDIZyjnK-XoT48v$HgCrGI)e|DGyUF{GHnI!g zn5L!nZ47_)7o&m9X2-X7>*e?#y*T*0Lr|Bz=d)(l7%8$X2tezvV*p00R16MyKO4jf z2#XO5%TS%0ik7R~`2Qx#8yf8Wn(Oo4+xgY|r1@A6d`jfoOr}XxSXAUbOvl#pJoebf zd-)_ugUoxC`<%3u-E!=4rgnS0f7EpHV~LRH_G)iVj~#8VM!y{J9M%060o+Ef8!2Io z2IGsKAFrbfR$VeG3Ej?o<@lbLV~K^@U4HSEE@W^z&ZX_Wh+1nq-}iz%3vIM7_Gt9m zAwjG)>m|G)MAHx3-2~T<$&yM+#P9#12H+;Are;nwO6FRgFWELP=*ouRmlourw|^pZeN%0M7=e_$uGriTC`> z05>-`k;k^eb)%KWpo!O!p&VtHQTO%yW0xqtD5KcgC^DKkpo8;Py2xJG1@IHZxN*&1 zib6^Jqpb}cc-KNeM^`gc&G^@F%PWba`3s_<0>c5j_!BO-z58 zh0gCwzhqmV4tl(ha8(i6zefXcMGJd#%IrH?3p=8y@HeSa_ms+g3!LNgRwb&}tZTU# zq6vC_J^g9FcE37^qx)2Re~EL_{8+_p)yS$MR$)J*wIctTQ!cUEYCV|L$x*?#kNwWWLyV>`8NG1m1)b-g4Z2mYT6&A@nE7s zKH#?;>v|)!@VMOkN`!{hhWtU3lf)s&l_|lsgMB$_zLPF3zKa7{uCJzdHA($Ppy{_n zXuqJ8i2rd}>dg-diNUQ|s<#@MclbOjI3i9#yzsDRXdds%6W=~ggd^`A=I+u1xBbXE2%<13!6(1 zp7frM-gNyn#3VYwqTT`&9S**77Y1#CWijsrmNk!>zgv>&QiVp1jddM=ER4 z*5>BAo|UXFgl&}|sMIt?{x2dhe})a=hWACJ=rP_h9039uA}8$M+YtX(%G$5Exj7A< zh{Xt9aDB+H3g$n;di`TPI5at#{(K{;Di}m7^u|s=IFbJkTRyI;<@M8c%?BDVW4vIK zA@jzELI2Oo3vXN;s+KYKh@w3jxEA2G&Ic`^2K66nerEN?({;2CyO4?@QRL?B@sa$8 z1^h)9fH%<~blwvek^M6(2*P&9&GA*Y%i{xP6O6oDvP95%(75j#y!x69v2XAnHSdQt z_B>kj>iM*wk>geCbP#`Y6TMpO^fry%w>%D6%Q%VQw05Q0G+P?NiTA&$2yj)mosYeN z)vs@;;n=;EuI-`dd*a}#FGelaY`k~ByuUERIBER%_?shJ3J?+fXDcBf{$Er6bZ^N? zZa{v=k|zq$}A+*@t-s- z_iP@o^j^2CI6K;vH#6@px^ob3KkP@J&xTHgHv~3}ify-Z+Kdq}^mt11kT)~&7PUWW z=(=?K9osA$>1a;q3!QT!>t`uS3)0O{0(TJ<~HDQqjb zkI_NYbi|MC)1)CTvw}$2WRO#gU2kUZG-~> z9*&==*JAVGw>KSsyFeelpK$F->I%cA(B3nWQr7onCX%{poDhpG{bXNRF)LKW$XLxZ zb{x7nGd@GWiUzM30-eQoRqE3-?4Kstn(5SHeB(_HRWIo!F6C{iB$+hFPpA^)=Fo%L zB?gTrwfZ6{(fUiD@$P2;*FsYxNal^C%Z|BqKIwTj13hvs&fTF2ZRuUHNlj9lxz3sn zrTB`whnPQj23hl8sAjTYGX<+W<637R`Tb+~PnwwAza)GK$Lw@RZiP3|E;9HY52bOM zjH%Y3)R)prD|oLc7$a8wxiAe{i-nV-s|;T;g6CYKmBnhMXy=#A+>J$tC84u~W1xnxgF! z&y4+}?(44mdm!^SbAYgwtyXA{Q4^z(e86S{bC;Dz4GkP1vbAGIKaVm zgg$C3l&*U`F*QP7mH;AR0x`Ve*l?@RI`p^}o&yh-BdprB6m?OgJDj&wp(u zv;)tb#;N=%tdX>)rFmHwfT#%?qQj*1wbS(R-b0 zJdRnlP}a(lXfqyxo^x3dH@NRU(a?&LE$@~SjrbCl5YJI$zHEu?t6@DNuo|8d#?-ejKUY9kmVEGU5H$aem$C-;|=3ssoQ9t-5lg(UdPL>fFuY zngb#}f{VY3=;qC7$DtvN--$l|8c%P-<}Ab}zX*{OcTU)A>om}@zD02`J6wn<8T))g zeja=N1jiCxxK1uP%TXIaK#rrt9h!jFlY#;2{b=s;(Y{Dv*EZjV<7*+gOU+KqL0YCq zPdi>_G@2fWOsk7=bHZRcLUKrHm~1w@_yeYD+DA@9bPf|4PFV;$EYxKz`E%M-(`T;}RqneD_+nA~N%uqCTipu-e>}_oaK27(%UiW9iuU4t%1wCq-@_q z^*iF2HKl2hwWu{c*LiA%u)Aok0#GPfw>>yMt0aF<(#-u!M42$mgd)ofvZSK))q+DD z29C$N7FsO@7L5#xbid?|CXXF|v;Mny{MXp-<8B zJYszar;we76;(7vAOg5e(T?YV*_0|g^?@$N0(KjFO16_%BVJ-nARVY6ZhPC`;c+>y z%w>S%@VOYRk)&c~8|j%kZd#_+KN0nF^qfLvWp=*JmzM2i3_Xv;Wt@Xn6hY5euh4I| zN&euzi#Rs0vZ6Bqo{#^=qq+y=^GmmL2w96EKuj^5cfO!1$t^CTMQUvLaGImbKrCMF za>w{{87^eJJX7}@ZiTHaL1(B!W7LCYD$zF>S88Jh(LwalWt)|M86|M4#8l_fm=C2vS|?nf<8$C)5B0kLRfur)}O%%Fgh7s}DK));?Ex z<`%o$a3aR^@x!9%l+iZI@Yxd&*Q z*41nLBIhoTj9f!Ds3}5qDAmw9Z|`eN6c5Gli0DuHYQmpeX4mY?N_7SkM6mH=RE5MV zrt%gmu*Ctwe4GK^3|dFMgV`D!yTkQKGiP@sX>M&hAo=fEm7K5 z0|rIUbADyk+r$h`q8R1~j8`~_)lRGQTF@VGRU)?sbLZFBUXw){mI$y^&*O>ZFI za-TDCZg%HHJQE@9Gp_1L@=I4vb(+~{g@BgU$l8Jx$x?Il8Y4s>CueaLQk+NLJiBnR^l*N}x$1pZASJH?p^>97fj# zlgt2ljY+NJUudlN@j_H|$ycwS^cE%I?484R%#zeVzdN@zXj%qnUxR$;wh9Wd<)fda zsJ>rR`M^OlPGS_%5Oisj3B@Szdv7`Y$pU|M5w4HU;+*%EisABXJUDl89W-yB?1cFI=HAR*I87T$tq;ASIe`U|Gw>qQR(c4mYm; zI>K5fg1mtfU${VIH;cUIg1(c?S&<2fHgcxeq{($z3@R_Q!Bv}-Y40i~7@c73yd^3zZH#v$Z z>?^g7SXWq)1Kq=-lWGOJF7Op0?Pzm=f>|X^>RG4bBKf+4kr6394mJ20B%;HKIqknY zq}r+*1a9PH@&!ctZc1}P227i(r~Ts7(+4CNg=49T`8(Fd8a07d<8=m0@NEj2elr;4 z2X0e&pQ>Lr)vW?Hdy6H=pMtka&G)crbV?VlEMb%-PU6$r z8j@n`U)1`)`HTivtc;tEvX6Mx;)Tr4#;_Nb3gebRbF&K@F^`_z-KN>@tED!B2+g}C zhsRLga+!Qs&R~4u*1k?rI-s=ypjzSh_LlS?xV{v0z!pk^J zGGf~2mYEDPnW4et>jA20d$GSDDt@`Kcv(uHzB?L;&el4Uj7AZ1u?Jc<6}7}Nq%$eX zb|`_qvrtTCXlpRWZdfdp^?nsOTv|`5>8fNzC{!?El`k)aQQ4PCg+B$&HSZfasUww^ zs#<>O-(VQ8>=ySBtXstTkfNvw5SND>#jzpjbWfs(3M%?LNplW_O`OR|_xpv)WsPQM zv)H=>Wz(P?+aouE-7PEVzXGbSXxlb!NaEch+k;#lvMIh|Fj&+?y9g@3bME#a#n=NA z>fCa^e_#Xg=5lw5r;9c^= zF?%G(_Qa!Q;4)romcR8Ia>bWA?Ze=BhF$pyw{E}|?TpT8IK4qTe@As%uj9zF&6$Rv z{uO*bo>A3&TBwl8#DpYD0zMs5^LAA-$G4JIqlxx_gEP$LMaXJedDTl~)!lDQrF(%x z?=8a?(>`m}GUhv|@+W2HA#mb^@Z#JggR`IqHLdO1;E(IVn51PH+fvvl4>3*oyZr%e zG2R8sTI;@93tBnP5-4UynYMda0*&PE$UyhcL+A4Mgi<(EkNV-2$3{V2+Ni#Yq;F4Td;3vEiy%Bxj-d!vaLgE}%jnsh7CcuK4nBRak~J zR?aR_fYD0sz8CS|RqDBrH7ksg$LmF~XxT26*kqsV#Occh5V`q_0P;iOPRQnUrtjiv zLJC=90utDuFc}Sw{T!;kNPfMHx})xWy~BwA?oJsEov>VvbZ8U!{xR&7!LUa^Dmwim znmLnLpIFQwn)`#fmAJk~x%f(ngxJg$w_RE8Qv6Ra{ivfSx#)sj z;CiR?2v1Vor(nU7P-zcchrz3vZ!yY_^eS92vOO(d@jDVFKp@(96K{Zd@u zbIq~)C{3ShFTXE?WCoCSn1j_aOZ^_GaknoirrKngVbr4$)2+xJ|7o!oC%vFZSiSU% zbDb~e1~`fX>Ltk#^KW2)C3d+j%g(QEw|1S!lt5~Rt?s&x{t*hUESyH?JTs+Xi43wYP!Vv_B7AHd z&LzWI$cR+k_q4vh^&5pP_Yi(X_>7$|%!RYa!b>zrJSG=ktKrr+AEm+`uec&DVyDJE zX5GmvE2m{A_HYRh8;}HleAc>G3;7fMaxIA+K==deRfI{aIy0VO{@2#FU^?3ZPRjbV zPyRaJ{UbRlg%qVU=Q*xknz2=qf8^y^?ptff?0x}#Jf{-o%uD=H$%8ZG={*ZlyJ-d(7T@mu=%(^I|+^Vf77u!XW~tLlE97jcdFL)<|p zTRiDR_n>zKvl*b_f$B~OMAQI*^L@3p+6av*-}tW0ghig&frdg*N%Oi(EcI)k-Vf=d z`2<8W)elqYn)?jjy~Vbau7;M4wB^iABQU6VR5>mR9n1jPFE!bCdn2KPn0KO+Ot$WsX!k_4>Oh zBMP(nQ|6>-T^-C5-;mNKd;|s~%o`N0;QR><`+}j`CrtfScFRgwn8PuX1a$#{8HYBA zDr$@d{9RzF1Y+n!MPQ^%AtTA&AxB}fcQ3svP4am`BdyM`QKbmYXgl<@@LYf$^4wi4 z`F^Z4M(tiqs{YpH6hqLpB^I(-+?YYe_~iG-E9{b}TC5TAZUnO#(ghD9Li{H512Q3sr^9 z^h_ALddd08Kay^4o9ky9RJc-<9y(&zo6#|;a7_(n+lEUrGXF_w`9&2J}!ie(B1CtQa6LAUu{;;f; zcr+9Ldzk%CWh4@Mx99m4h)-Eacp=fVuX64)ybSP|%Ss;mL8*4j3AO2f!Va&{7gqK{ z(!$S}D$sgH8s}&ka1Nhu$yo#6z^02Za;_%TjM$DV`kmrT6DndRa@$dXfTwAdTJf_3 zCFP;Xf0Q=>&7F7OP}p3Db}7J=9V=!b2geG--#$`nRWv~Ew|)GypmR}_qWt&;Ao&B@ z=@MQD%i=^cezbjZW*AvKk`C#G5{Pzg3V({IqgbU(PgI|fa%R{0-AnQz(`L88EpdGvQ2F0E9M6NO7dQi>i}F)zj_<`Z{8Mxin9=*#P`Ky5#N`w#&) z-851*by0FT99#J3y(m+d<~ZTUON~Is0BDLV@#DlOno{3SbF4m$a^aywFtgJ!Ra&Lk zx;La1j&j-fwHdE-jdm4m1G8l{9j+9GuI!Os|wb;=X6%kpgmaKiTpIp0XC-U zb_(};G%u`I+mnwkiwvm;TB#x=@L=@0A?YV> zC-$h8nFTsVD?q2ChiHk(yX&JoFK-PpZF9*R>C2b;|jML!zFQVD|)b^xcruhnTS$)kmdqO2Q-5PnnCp2pzUwy7RqLMoZHj-=Q~s7% z;vcQVpv=6L-iQ19WeXdROV=chm)SR=c6?jDR$HRaFUn$|&|bVBL=p*1b9%Bse1w)< z{p}wy!sTBX10@RZI*<%TQW)|#GQjju*;K|9&a)7dv}Hx75Oy!8W_~9qnJDy^PcGrL zK_p$SzI6VamTZQrk5bjVw2SvaF{9|HK^%r0neXFXODpLhJk52131;T88e(ToN}}#} z(i?dMS<#jS9DH=lyhLf{$xxt|=)<>y6|t13-p^}ruT3_Nnc?<9TjCXHKkDKhzPX7Y zJM5O3-6~&j)?cn4_K9yHFfOeg5+C0Rr@I{4$OXH{G=+4Uo{nO2xx-S-vx;sogfC6iNY^$ozf8^7jY61b}q8tc=EKs1L3P)!!cKdt>Na@bj9 z1cIIdUIowcBpKhvCr}~}X^bk7dW?hY8?Fk9Nuv6^sW2M#e#t0EkR%RP`#c=onI`(K zgm#;qSjy$5!OlAq0}rZqLOS?d;A@4F0}f9{-fg`nkY_JEQUwPO%-hQGw`5DLI>xL$ zc*I^3OZrAu051;+s&qH{3LX>M)dq5?gt8Ks^&8aJt3oGUe;PSSB9sUan`EiQ6TPVo z*;|=4EjU=E3^*Hp{b^xV?5T(@u8@2IyOf!suTz;O(Fo~Jo^LVeu&)jO+Auf6gx6oS z$0V_r#v>MliHegkc~<{0^?{igSzMo(^wl~FJ_&E#3@9C*J;hRUcurg;r0Q~%DTJ+xvkujLVL6#-X*Iz-LXjI zMgs*(b2`HLp>@fAqZ%kfB4Qxyl- zTgJvKm9m}BepVd>I&;L-#+MS$Tu^Bpz5)S~p5)=9qrhEB6g+u=*})lo+U5(a^}@>+XOx0Z4-n*a^@@ z5q^c2Ii(~A5HLnm2z(b6<&aaL%4{`rkXF3nI*k0hRha2%$)#4^1s^ z+gnIOt6c>9$D`Hf=|4xvU+Q=?7(!1k8hH+YPzSH;29w?m9dmwldDS-acFS?gYZQC; z8!zPYJ@!&Zu`j+Q(VLN53|Y!dafnc}`;TUl3t4zED>EIhH=$cK<^|d7COgB%WjU4; zZ6+kUq3)9SDuP_qV`!Q`hatu>L{3&tcp?VlCulW<5$)^UX9Lo9cCd8BR|fE%tLVLL zKi$F{sN%t?oRwts7R*NM78$v!k+pbnaY_Yq1hUNP^WG==58Ja)b5zw~*`pVxb-_e( z;6`whxCR$EB@>WWQ8Ol@=&4{-Wj`UPVbS~(xctH&aY(8?jgjpu<5J@NcC$WeU=UZg zN5n$2;7{K?!N|?)=miMb(n^{~zeu!LesWy2DMV_~uv~}Rbi(^Fg_XSw3tZ@%+a|VT zLm-c~AMf!d`#mYUqH~$P9Zstwgxi1pgzt?TcX4&NXQK=2lR-J-6{BeMXxN&Y@*|}v z@b*)w5ASB-(mTB1+0rWa?R)Cb5j?oZXz?6_{jh{L4x+V;%2qYlU(oCoR}xN54n~?Y z^v*!OTEjqxG?};%cvsRW(2$4%{FSongiRtVUEHIkoFN=1Ifpx;CvjjOuiBpki0J(1 z0IPYystdex?W=Ymu zVjgcXBtG?k)nL%ol&~wSDW!~Ieko&M%k{HL->C1n=#6ef`OF zk_&B_t={T)%|wI>TTe~4Xf*V|gO;KXFk|Ae^B=lS6&U=xOgCsY)pLxpKU*%K54eFP z_C?Bd(cxdImU>BobiHhO2sIEs{QVic8KsJgc-ebhjfox;bvFa2{=f~%>JjP+b4gp8rk`7i2a~I8CbvIKwmY5= zF1vt|7qzMk$QnUPtJJjNfIm?ZjJWnP9NgHV?ksy0n2BtQxvZ7z0GK-Vqa(F$CuN61BVhwnb3Rzjj|faGKM+^RxeO(6N}_n9^_bMNrs|tmtqSfjaYUF?3~U<#yp(VmB^+-4&kWm)JTb zW`8N}#WV3AFEoR9tjfeRw&`*tpPA2LA}_1UzgQIykUVj;G|Gv=Zz-nsPpx9bCEr|p zs`jU9S*3E4xzH`iyv-vnGzUy=eNET9t@&1oznqxnw@a*V4rlT+*LAV7t`IZt+5+LN zolQjcL5-?74NZhgfI2D4)J3%#jf=T?a@+T=wHrBdcO6ZjGG*y-p}V=)B=}^}{Og~v z&pSA)YNH+_;?~fnyQNT2GqMplOCB&)J$nQc;&|U{Ei?M==bBvH2t588NPr%l{_{v*c(Ba*{d61R9= zR7yLXwhL259Z}r35dS*g7!E9|GgxWA-AWMkNoEV)l=F$Y$O7=-X$x>bAo`kS#Xce+ zeZNIbP^gBsY`YnNB(|z3^nYl&2KG9;rkl2Dd}1`V?WA#XV%utx6Wea%G`4Nqwr$(C z(=YGSet+P;_PsH)X3fkRYRNOdnb|NBRiZYS%GZ-R*`m+W3bC;y5_^{Q_gBG>$bYXU zmdLt@(>*XvR$b7}u-XeTr$}6_s|1gn1fI zICL(Cgs(YZn?=nCv;uhPts6Z&FzVYU!x*p#)lmVp6LPChdywhW=HAJnD_{W}?9L72 zjn(tZ*d)@;sk`^Fi)5d!!Hz|~9A04sUc}js2!(_i4`aY4^PlQ`AX2iL^UB{}Ur>dw zhmSj!!Z?8YeW8Xjj=nemQaPmFca$vk#JNZoiIM4~?-_UnkKbL2Ieq?9`1tuuSj=&( zU{oPu=rkK`_<7q!E0Rd@`aU)VHK{t6l7v1~1!lv5L)oI%{ zh9ClxQjx~UBWPBY?m{y5fp#q9XY&+C?x^#fpGohRNQ5M0k{wuNIhm!x#SwIuJxk#g zb!{IGQ{T}-@PfR4qxOddV*N$+X&FU&>pT_@30k~1xCP&nqTUuFHKW7n06M4Mgl-N5 zS!q!`#;<=*s~H@##Rkx66>J9(6?b;OQ zjxLhgoy^y$B1J!kV*JvsDXY{_D7sLc07^D2^Tja^ek<1;O}EOrKemU)<<4HeBul~2 zDk*;sD4%rzlFjubo-h09_x=f0;y9DSj1sdb?KUrSke5DxI*Nk)e^^@%_tz9{Ps&m_ zN_tL_J&Kt>OH19>VV*<2V4|m^I4DF;l0Scs@0te4iHiA&67M^6%A##UMlNk~ zn&eoU$My7Jq-|g+o(~f9Lh4;w#q7%M6=e$K?FcDL4%~wL#7{4UPunSUJ_!8ito-;l zp&8)Rr4?UdV0CV7br9#7tD{zF&`eeM z|1o-!#|x~}MUBJ>4eprr-wE}tCCZI0SlG*iKqE{@z*>>i+8qg>LtHy2Flkx&!y>VR zTrFZK{fS}p@uy>61LZy}*^ns!4qOSOGy>BoQ7RY7TZm$B0G^v5YU_xgV!lLFqCjp; zvpb_WiutNsX=pdz9ieYehx)T=(=5OGfodb;-j_lYq7|W)#K97eM`5-S{)e7R$bh2Fpi~9ZFx1X(}BZv z8A~n*+hP#$bTa8_ueEonrk-L5_)Z~Q&WcI8bawG5hhyo1lsFiS-9o$`OPn4_lv*=S z3VozzCPwac4JT$sZutsx9qt3O-GX!8V?iOhFU?LzzqA5u;N^(4O9e-yV z;;vvgOqPMo{iyA_uyl`x1e8kO5nLDR(`w+*3Sz8-F}}{n z7!Sb78No3$)NEvpVu%iE2&R55qlwaqP~#o@(V!%%7RbE;Y#<8!YgCuzIs)idWQyV3 zFUeh4oR9@Xhr(W3?y;s*MFc<<>8Xq0n8*Pn)sQbfv|=mEM0lFSFQ~b@$*0L$Kko9D zu{tL=%rbYDVFER-&38ow1aH#;Pt(J$*h1y1#N%p|(DU zg(-rxMk&UrI9a3g#;2r7*U8F>Dqmr5gs95htSGp)%p{kMMH93CS3v&rcxYu3@Z!88 zIHHbT^rrz9=4wHxAAGK@AzAC_3!bxpM z+e642)|F~yu=aIcK?r<|y%uE;msWkC55qWB_6^i@3Nq5U*_VQI= zAuGLs^+HoI;(;g>ZWdRj3K0V%%cn2qH=a?Z6l^agr~CIK4K)+S_~8RP07(;T95uzC zJGWwo!c%4m#)d6IRs4UDYHetxc;tlKoXzLlR#Lnn@p7vUYckoPJ)P6_`?0vn4`_au znE8}o%JWzjlo}}znZ78g&&JUps}H#p?!b553$fC{Wf9rW@!ntdvC$AGol8UX_HxVB zs5Cc0jQS^~R{X1nU9)%lpjnR9_3AwxJ}pW%neUT56=Y>LRr|;afn&*oFhr$(Bk5n< z+B8qyN9>t^ktCUlcE?}9nwPgFZrqgqzWPbIVjQ6ovc?s>A6KlJHHKs~;E0T4(%bvo z176?>TbD{m{b{EVKX$Pi3GNp)mK`Ha?JLW+x*k1-?AsMW)NKkdy^!qyjv&7#X94Rz zTr-L%a^G3yH52|3%`3#=%)+DDAc`S&YWyD9T_ zf?JJuo88CQX=sCMEj5L*lXINKz)$d?B=7RNuHj9%wYQL%V%3>GI3RYyHW}3Qsd>nxfY!IiBur;O?Xvs_MNr4E0xwaWyO$YBs6Q6PU;WHciNIb11oR^ zj8*2>H)-Gl<=9tNKWmprCICY8K@!rlf@^cj{Rjt42l=^2uz4o4C&ZRWPv9M?#uqA$ z!5SX|Z7Q$IRehz_VGNH+y7K zMIg!oRs@!TjXTdipNSTL^xj#&`4I>MzUSu9kgO!@3CKvNQ|8;0R*s-cQR&A`y@@Na(vIihSO0+nN-ug7I6`^X-D#00VXNXBB= zDVa)`AtJX{N4jKA_Q@hms+UP*6cU|kC?}i2{-x+xg0LoJi{Otin74KxEUWNDaEiFw%IH@|yWAUDAwXD0x}VAlZ*|#_w<4BI2)WYC+K`G6icEPec7l4fzZVVE z2oATn+0QFW0^eCVayOiOhkoWm9U33EFdm8EXw>#Ef}RqzZU85_qtxi^W3GU{86%jx z9FhahJ%LgFul3k-(VdggpUP3)#s^ulknn+8#{#Q%!lTOg;1)kc4 z&3f9@?@F|6P?%Dz|M4t7kC_AwA6W%-JA`Fb3*wIU+0n@Fmk;g3)1elYVQZS-4El=2 zg}o1roJ58^E*xoUZgW_~d_VX6nCsf{_yRh{YJV|uh8yItJ~L%9$d4_^YYuFSg~ASw zHSIc{o`7ELYtaESThcGczQmk- zjZqJY0(p?vT}vYx3`BvmWI&kaM|%R`r;i(f)a)V7ZOwmmA%D_|ORJy{&R32l$`xT^ zo;SkKNu?$=2CMK6Q_v7yl{dT^9+Tg`0@|ZXnjl2^r87eTa*8^XtUP1;t?PJm!Z<=> zgd#hWD6C$TxLfBgygdBlmzmTI&<~+Fxwi+SmM06@9dQ?Dg)KKdMrPz=!Go@P$O|J{G&f?XB0)bE%J5FbCpF>WCoM90Xz#gb$2 zw9wapPbm@`_(61mg%e;~Cnhs*VwKGENp*){r*UewUTbwr`iT8Gvh=E+f*cEnOJ`Z_ zCfAAz>iZMQSwm98I4?z7w(S~&7`_}0S2za6*?~9Ut10@@3Mz)+cKz;1|M0JNJ~OMd zY5o)+w`Q%ws|7aPYS-u&-rrC>o>_{y>^RCbmd5ZfTfluJj*E$)~%!%8(`}=x7g-&_~tPdw}HMK zPe%<~HcGxNffrG0*@yWDG^Nk%rbj+b;uCNqk9LIm5}TD>1OmW6w8JXi{)6=8L6_&d z(BE$RouEogam;%(=Htm#r#Z|*ou8gp-29rW`JE&e7{1ZrA%bFR_swk(NrhZ(4HmG5 znNK+emo6*12;Yb!%O8<7=b_FLMiI6nXTUKu7Hukq8q$6RAa&DLDD z6=Toy5Z|LeA1yuaL2-SeiO!NdKtJ4P6iI!a z=>yF@dn`}W*bkYYmqi#W;y2JL~54MqfN61xid zf2zl{+Rnb!{ZZo)#LqEkp49Ra@0=Z?bj1z=y)M0-EQfvc@Gfk`TMwF!K~9On0!+mf z@mFmJA5}Tbulw}R=GZ;#_%&Mi6!|1Zm@&T2rMtl*-VHJzUd`TAO>wQ%k-RR0#2DKS zH*+ytI7o9gtED-?6?riCu{GeDTS)W48CZ1JSnU#=w&-i8H6LYC73Mbww>Jh!<~Ki# zIv9V?<=uMQ`TEBhrbJ7*%P^>bq5Y_n7?N2&KXa?jWmou8{h5!mFOGKjz2}ESX9vAs zdeS6;PAa>x5NxMmPqd)JkT1?2sa|6jUbITB(Vr`Ik~9EMC__)nv;S>@p|ENWT?T3P z*K|LuTwyRJF&?~h;BV4=sY2n;%TAAbj=TxP!p@i?Wg=Ivh~dY5vf_` zy;?vGP%7ZJG6a*bQ`;zl3eMbu1o~Cc-x%WO2NR~x^IaY@W+cTy1GX3fsssfu>mjC& zu`pVw)YC@DwOuLE%E@Mx*Qi?jDRP338Swzq;+6{IS4!L#@9^xeNsh7T+%6X<492mf z5V)XCtKvU&vd$y)hk_0rf#er2DF<+EMj9Mnb>=n^jOf{BZnn5~4+)w(ar638<$Iivo0ch8}@{^30J#r+o7&(~>AIlolCIDCO5hL$+}eKtEHS_YVA`AU1Qz^^;L z#6jsztnghIgrvnCoP#ZXS?ne%%OcfQZ$4>s`w15$<=y zg?f2$g#s~FBI;oh%Qe#Q%dpE${0Z8)4lqd0WQz({<`W)v9SVZW!?U8x#ALgWC0%Wk&$Ip3@r}8= z&wskZMG-eBLaQuncYe`Niwq6UVpY?3W|3#TkY6W%ssYSIr*5&V=1FmKRSSLN8jVY6 zZE+VkHK~JON%H*3?`7CHmtn+pacN!8KN3}*%05XOB)Lo%G`Mwq71(T<)w__T*A$;enL<^burG`<<6g%jg| zaD=_8ZIIm2&xeV#MksoXlgVvRb7iG-6PDag59T1;+}V@*A`IIxh!zW%8glCbSNM%G zynR~1<+nOBwpEfvUZRq#8!Ip!MsR;}BhR?Y0%pOePw1~Rmiy7pKTaJN zjhN~%msiq1T31(Iyth$vxi%e9^QY#q2qm8zzkS+K<(uAdv8=v1Fl#R5-$FBe(iO}i zsRDC)ZWOOUi5K!Q1w5j0i0q7OAQL|pBd85RYCI|gSY?XY`m>tMpb~r7tNuW zRwr*A>fs*%Rg8hB)~AsPxhTnT2-Q$?bfPH^zd7xN9gKW;$1p*GC$fTXBO{pa z65-G3Xc3MS@v44K%tlLV&vmQ8k0|8SXc1t&>%gwM>ofJ+?j4y^PGg%a)SIx&u`-M$ z9cnPDoKF!96$j5nt3f?9&!LuGEhozY9O^GL)46~a7gS6bX;ay{XCYG)}?+3TElt)u_9=cd8mRo#xsv-i$zbAEf)mtZ>NMu zoX76(Lp$j=JjIM*;$Lr7sOZmbB3qbrMpzLAfI3)zH(N(`0u_EMed zf8wdD{}HZGoF6N^b{pYn6e|E(UwhSZKrS* zb6>nByv7-OS{IK{Qhj?lk&XgWvzooQiox3nS*?gB$4gJm3m%MQ(IopOQ5E`z<)5qU zCo!I;92iX9;9pQkPK_tq7o{eIfW!udLJ{xYv?6p ziWnstQ0b#qk1!8~Mjfse6^J#EzQ?(mZ|pG`-pS`cwien{47o%n60&*~k2AZAu+s zf-YBb{aHNQbg;;C4N?kiWPT{~oMI&bTK&LufDUOCCb?pn_)3j@`pZYzlJN}*Eo*Og zAvo^e6m45jeHQG<#dE`rV7&eS^%IZ3{F)1+&NT~&76-2x3Y9Z04s9%sq*At(lzDL8 z+{bE4nof`W-kN5_kxk%cN`CDTkV-M56iY%_0P`0{-J&;JcTmi{#{M3cF_dD|G*f8_ z!yR8R04Xr$!I(M)`){(sZy}+cQjT?}=pQB3kx(o$poxG;8o(f93h`WVQt---WZk4p z)KJVz@~rfZDXqK;ea4lQf3+Y^O7SOTyYodVqrz@wHZS=*@>l5Qo@;`K$T5?ujzofj z&+<=x6FW(h_y}?`igh^Z;}BAN1DF1-3kECSO3Aui-Vy#)R6#V-@6NjXFlO;KkDt=& zMt&MxYE|5RO2{_ELF7DM8^RSBIBk0%s!i`A}OMTCDnG0UlUFYf46 z0@+afU{(C%6Po4y>HcVncC*7d)D+B7T*m>iy;M`@+Ij~v)pp{kY_G@0krt z-qc8)$Bii02e`Qgbon4@+6i4PL=%>-bIh>DgW&eqvU!2|5BHuMb0N-mTNOVc+3Zwo z2-}K|xhvbi?m{)6R33i9#^`eiO&86+p&hF1 zeL19^eX1%wuG-_SD8a6ILvA$;v9wh5dZ=Zq#@)%m&ub7R(C2=erl%OCM z6?gfa*8Pu}&|s-EAvHPyPjwT2?vr1sT>-I4(Ou6Y(zt&k(PJqM)eW1Gncdrllj*2w zzDkg*K@SA(-Fo}PS|UbH!@UQwUiUoew&jtgP;96`yUrjbNh4 zae4udK^7?1ZNKPBztQkn5urijtN$q3zWWT8+p|mq{^~cRfSQX+FM~wFeJw0L3$H}9 zx6K&U(c}|57HYK*QVPmH!(-kcH(8C^68;rM}|Qs2|i4Rc;EEr}cubI{mk)za7;+?0hs z?6Wo2oLP|2!qNu0%hw;~dOpx4 zz;8ZvHd@2!(JrHkBXpZE*_W!F-yCxeKm9#biCwmhLT?BrwyDpTYpTS`>q4#dt*pWy z#cWt~wj|x*O9?;FPp!P0ex)>O?vtb{Y@TbRxpoP6L!fJ&teQD6B{b8}ee9##Akgvp$IHr4tP}XnBwvPaezfHgSu#TTz_$e`sh|%4z6$gjS7#5@0c5A2z zLYyi!4}$X!UQ-%Mc1)>os+71J-LqQBOrGTbfh4k{kkYY$T>Nae`ZWuNA`|fp$baw> zN^N-)+jV((x`s*=HOt1{q`Y0<0)|YcC!sx`XUW&XcK1H`5xcIa#2VEzpD z+zn=8baO_3M@SLa`Op2z(dO+)7YufR1PjqJ5FMXK`b&)!5LF{g>LPTO{~;hQK^pIs zu*68Ptr?`k_#$v_aKStv#VfX!jdKD9(~l6{`aAJG5WXu5yfagcmliV`;WgF*6f-9e z)rv2faU!OEHZ5yZ9g;}VixVhr1&RwBm_=4S<$k3ltCL~(rYw+|^BJs=T_spP<&Z^f zXc4iRRS3G|=kymfqo}nNb{^3VCbd+oeQX&M;y?N6NL0tT2qL3h&%%6N(M;Qv%>c@d zQ@H;g&f(mw{4(OxYRQCnyOU}9=@F67UJ`3>n8A-T0br*7G2?2aO!G5YjxE%V$thvN zZ~c#CAK-ArIG2ne0B`?jMFdBN%->u>`%`wbjAUnb-!*YH_{1h%F{daP{~T1o>ip1N zx;9-=r9*LTrI;Z=hBAv@~o$$GE_3QVkE*qJS7op1@c z=`rpZf0g1}egC<==Lb%msOD zQz0b>rAtWaM-?sfT=FmFLPZy&UW2}I8XThe3zo}d-#(SaXU?xXrgQ_7cq5Dv%s9o) zacCt0TZU2_jw$Kqb7C49`>s(2ErcH3(#gLCyhh;Lf-S&Nvla)rF?4^sDgAO0ysC-T zdM^Y6yX)~J^&j9dSL(VJZ7`Ay4h%&G(jTgE^5@2Zn(qaC6#d4+IHVf8ht<@-)g?k{ zIGHfQ?3AQ|b{ZsB6lY|lnm8yj|c{MDU{B<*FVU>^kA|$yb6RLP1U|)0Lr?nDe zSgA3DPWNX4c2vZ)km3RV&O8XB2s>Nj;q)n1J!dp{#vVR2y($Y+(QrW9TrWN)vTDN_`vf_bD z^tnzIR*b$;WyZgfT9c9{sm+9DyH?TKaf2+)WN=kI3udvV_n$}QBV^52@P1NRqpXYq zPPnE`eZN}@=$3FO?+{2B!p}#XSk={pMX?VA5f8_#F*%8FDPkYesI(*{h9)lU{HSEh zR->xiF9fl0gy4hm)0tU0#_7;N?VC_wuPWqN1>*)0X7F2pD9a^2?_KwHl8h{xW86U$lpvh*{~2njBZmTG@49yG$&Hh*<@%rgZ*n(Quc?0%d+2WO7PTwD)Ce(iq9cz4;6{!m<|q%3{O(H57^!%bSb zbb+r`sa-@=oCOcG=wf$ z>>gXxER9H}xjih+6~bJn>gtrhN8Pk5F${jlmdR7OB-*#lD6l<$EhMNr%~MGOpMm*N zR_$ZMQv=iJrH1gY8>}-oo2FtLmgj#ChZHcMLrjE zjR?Cc8#~kTZ6$H!RaWO$_)r@aR)Z2BXv!`{G|FH0astL>GFT{Jb=f{c-c1>1QBJuE zGko5maflR?-6J-Sx1YCZ5Iv(J6$1tasC0sR-lR%nb>_s~%%sTwQB{#BOJ#1tS?HSa z_4$RpQ;ops9XcjUSYu5$UMnIWb-T4M`<>OzNf;tPZG;j|nN(KRmb2&)32uB1RYKS} zfUxS+%I8cZL)yYIf~5^kOmwXpKY%fr{io<>(>amZ);P7qT-*tjxW{9WVFG6L+W$sh z@lRwkuCX1ltQx*jhXJOw2h|XC&3BFBch~!?b}K8cs@>t?Em}1(=qD;1(3R5I|((S8AMu-3IhZOan4} z*VmT&^>WGYoRAhqwDe$LJbtI&eUw|V_joYMFxm37jJBcLH|t9EnK81OXr@RG#N2ET zm_fG#l+~n`?jM%<7bVsImUJlI*mL2E24E5nlOn9Xr5A3tk3WNnoaQU&$8={2*NC!N z2X+b)zN=P>dJqaKO+G*DRX&FU-6{xNinmVUkqWWF9tR6;8>z~i#1w0(X`6s^6@?Yx zCA%p<)O+_r&-dXZ*l07J0?d#4-KgE}=5^cc|7A)`cfXBV(|o9@?F$1`oO{EWg0PTE zqkMR0twW7Wca*LSA$zcsdfd4BJEQ-f3&@{DWY`v)(89vJ(0D~^=O^LKi7>;1i|VSX zeysT>uW7z%6j9k7%F4g?6X$a?Gg_-cQwZb)7ZHydglDY46e8Y4Tp9Q-ambSz>(`)) zRE$;mHBBc|GM3(6`ckPZP|*34-NU}anWW{MOHtOn9hE& zIu)%{X&e)c^RTW=a`}A6s07X_5UnS$zzj-k_t)?K@Jafd6EvK^F@)g{PArqh!8p=} zPZ~m5J>O$Xp0L!MgW|Wm84+3O3isKjSDzgyp8gXCQhNQhnVH@ z=lLu7!w;k2B9E6TkP42mnK|o7HUbj|@tWk5 z8Pt#c zJd?3vkQM)~H@gXIJrZ04<4MuN5qEzXhod!@L^Z_ZP@AYMz&Q;Vv^5jcg2%)xz;ENrpFV6QRJq zJ!@}*bt|$`U4sMUA~@rAw`BBaY5&TRo3u5p@&q(=U6=6a9j4{PBp!*V^_C>37(u7b z_J~W>I_iiu%2aSmXo0m3`?>ICX!9m=D^moorB7ul@{|>tmr)X#0uX52Tvh@Zb{ZC z9*l*(uG1YGWL`l7l_#xKl+_9Lz-Y2%P0KVNE7=;DA2((uj*{M8q+6j+(q&UAcee|@ zBwJfQ>u%;{S>Uj1(s=^NuMpC^dyL9Ra^I)O4H6!(|1WxK+Ws3lAcg;1}u2E$mEo`qVaSn zr@zcj=X>on%&TZoI&8G^vk@hIb6*gNIi`}QZ(a9YvwObK%j%p=0i3#7Bj?5G=z;EpP;0SC zwft*=#E{T2Y*2ECg4;!GJMI})LK}?u`0v!UaWru{1WZ~Eu){Pp1aE`e&tv&H%e&oJ zffbt)Z;!FDSxYu|&0<8Nb*a^lCdJ-26yV{_%=Yk}3~2#ynXIC687iMMPjY72?-n}n z0l0!A%O>X@Zbz0H<|F`o2{14{`M9u>U36&Jr-?~t6iy#wCfWNHD{!*vUTKyQ(4sjm zZIG@Dv$5{#C0&q@6K1Klc%f|)BeRipUZL6S);P9ez6#SW7?>Mfk+KNM;QS;w@p2)V zpz6+`g4Es|rJ4F|um_54_j+}ycK74LLHEa)PWG6B=~jOhvp7Lrq@U+O3VQ(+Kwrqo zff|!7A`N5IPhk88HlvW-lJQT7BAp&zPQ@W|<1$>RM5Q6xKdTV7wj6vO-1LunF8EZF z2qt!+LC8d_2Oy6IFRzRxM5D-^c$DpQcH;HL0^^?`DD_p!RPl?0Pr4UYLu(a>x_FlG z!e-ezl_1Y#A5TVK)Bn6Q2-Nrmmvi&|dK^`wHFjPL?HJ((tavDT|a;g8=^*{mjC=gV=Ec-ljcBP(AE%1>0{#HD{P0Ar`T{CBn? zO5b5dESL~KCLAh`ZO_C7lvK{|NOr>s7Z%n+jp@Aj5g`RMgx)C;XsFrDh72hdwWX=x zih$jIo4xs%%F$f|;DQI^2iDyvPQMMxQH?XGtdfkHOCWw7B274KO5X^^lxsj8tbE}_2`7orc1*>0;`dbyA z9X|}va9Gy3%#fO^A(Ys7q7F_Ro^h@8{vxU^EvGYj75&;r_2Y}2gpS`my)&JwqQj7$ zQ;e(@)PNRdoY4o%ZEXmmATQGYQtVv5n=54|JnXy2BdMN@ZTu;`5eCt)(fz)b04?|M z6FN>^K~7C&@nNCzM}B3fGRvRbV-M|88x4#frr#qFZj2(y7Vj%Il}vSOgU!}9dAirp zm9dV;TUl@oU)sX_e1HtaN4VpbLzO*0Kc7Vnzhu&L*RbJMa@Me9*ZK3k8Pf7sfdm!z zT0SvT-AIX|5DFHAh9;Pvg93*Ys0X}ms9kuSB{ zrR&v561}0JuEz!c19HD1(U#GAKHpvNnOvHgmoBX?J10!7c4av4MmU zl^&(NDc2$0jm8ngJf`~&eJ&u1pu zT-MbKDn2$P9$&d=ud)y^Z?4!c&j+z)Q`pph-_3(qg~VJE+u+;Myxxyl08A85Mxv0e z!H1gBmlwq{_1AISnDNDjG9l3p$3vZq*ZqJcd#=KR%PCPlJZ;$@`$Fq?56kY||5DZ@1p6oyE zwXwxQJO{AoC?7U*!17A$Y{XT)`w`3gLOS`{m)Yy){G?+1y>b4S@#BZ&h?Pk5iiE3uKfZSidfxjbxfWxcY9u{Kb zbh>oHwY2V#M4K{h`Ll8u0IRCacxv9RCFVJ=-jF<`eik#(K!5t7x&BTpgWobme~-sM zmz91)`id-5Q!gFb1Aj*Zi^mmYr7;b(XgLMrpkGC9}EcatjO%jOgEnO^!YxNRq4wL=79KN(y-??{}-NcI!E*N zD(O#)ff#RAL%S1&jyVDy?Phn5tEqBqzcG1V_W=kx+AHC7gYGk4_DN3d;)$;QqooZB zT`V~U?==adk0aj881*xS2BNQ5g;^T4lCvEcVP5952r69LZKfD)GsXpI2|S$MllT=n zb$3+=^o@E$vtNO}8vUuP+kW%_x>0XRt*tKm@{B*@pRw-l;=JE-+7SwsV!?0D3j%p7 z4{vSFtq)RnBo8_qr`+EVHe8O*{+wH2ue*)nFRZ(l?e9jzTd%p#bS9OUx0tx2mAM<< zk9MST9t1BKUFE}Zo_IJ`aDn1)xQ|cXREabQo8WzAt#oaUda7;Wya?$3=rH~f1-!gH zs9Mpc&wj_Sa=6wwUjkr@smo6^xh;PJ%ls@M>4!d)6>z9icNX&QF!o`KdYnF*7x^3b zmDLoOZJut7K>_Au4_9|9uu%>DRr$W}l;#O}Gh81BE^yo4 zg(t12x*V#pJv~27ustl9jYL*JPmJ`0-53$MomHD+@T@z`ZY;EKooAIy%wO}mooUja z7SL@T?XXc%u>xb3MN_Na%Tz0PUy~4&_ZOay3bFgkUk315dEDm**yHTEw$}1dF0>vd z3TkEAo@%OQ0&zU<%mS_XYab*U&<&v`IAzQU3J(tUyP1&ZZjp>sdXKLGx z*FW~f8($FLLE$UhVa>zDyaM!^+sh^zev0$T4G`bcqf1><^i?l+_(pc#DkIn3t3AxC zc03N_)*PGtV&K3L$Niug18;@pZn-I9wBCSqA{-2ifH)iG0cL)U!8ztEI3|D9>7fT@ z!{tBUX5~{{f8O?IYv|%5Os-V^VJ1xJ@t$`+=q^KE7GM8kT%iQpYnn+32WqOd;CZ2* z@MBE;KDyaNrQ43mN`R9i1iYC_n$66i(~xM4N$;gspJmm}R!P|L#&q+%nSoPw5`M$f z?L>b&Fy_zqoxu-R^He6RSY+Q{N})94^f4Er>d#MF=R+Y}T;{s)^UH~bat`M!qXKV+ z`?9ZJ8TFoD$=8wHGg_Ymd^I#w@tk^*%2=GPBzKJq1h~r75cPE24TrjEAu}pBet&sE zSUhUXDsi{(zTCyM#%&(SWiCHoeTi0fhAE$J?%T?lpPER}KetC11VrF+g4VpssKYt7 zC%v)`*}hfU+cpoIN1!oz-zIjIdA@`$TlX;%b7i>d>rnQ!sp8IcOkAG5glC5*%@1R@ z+iNv!SZM;xv~3sTv8ge$J?X|g_X(S}1bW!in{31%)??f+`rCB1Oz&pMO^1a0NLA0! zgkD%CaJbG+eK+3kqi$fSBp}Cd8Vrv!y>vPC`UKMvzP0+FyQX~NDqA(~qX)=^W8*ar ze}8)^tr-A|^L7SFAD;RY9<*Yj>w*1zoxOayr7HGbwK@2JDf-ItAJ%&fO4+h#_#|NE zqSP`?OdHM0_OdknMkE|wBJ5~EqBt(@yCi9HB(k)U{BeM_*Y6*FVH$zXGM-i}cIq}#td z@HSsX>Z{`Ai)!X3X%x9m62Q#VOHJ#^C+}1~N6OC}Fmqm2et6>aO6i%-xR<#7%HAuN zsfh*NT0KSpmfUwXv%67zCRUWQnbA>O%}x*YUfu!Yf#iV$XF8gF_HpDYW-gHmPxCD{ z*Mh>1h~usSiB| zk)OaE`xmrARx#+bUIz^(#?u-9UUmQC){g;Er$YnyTzdRj2?yhh!R^IFK&zXObD44! zrxfUq=}C;f&oj|RNgh=4I|~?S@1KuFegQ=B?7?{4#{(1AAC5+sZq}PF-ZD~a{NOR0 zy^pX7>`u#=_vy||+z)nE{)nbna0ZFMFWNaib>`tq>#Pb$Vzk~b6ww7rwI5eXFobMAShM>9b2KyqT#QnPh)sH*>g zSI28}M-WdZRpYyE09wN{a+|}Fr~x^xsV2Ac>EcrCFKMS^_RFgOqvJ|!?DXL&Dikz zm}XbFm9iP0%X293?S3QeL{-yrP+)Ehlw{R;s2WYed7cq7DO9}ct#sTG_WH@*TebE* z&uE8~%I0kM$NgmfrKB$Je|(IXx&fK3Y^F#1wAbgdi|X-2pq=Z_crAK?Qj5O;Ft}6g z@YMQh;o^$h*TH*OAQ}AFi8M9ZZnF?(5{kG>NZjl`yf$<^5k4jNI0`TeE%jdXwJP=9 zTSwUMz0vvBcXCSJJT?si+YrYl{TUH>ORoJBm;HS5l~43t@4!0O)|yCptJ`Il(@m=T z)|`1q?KNtLu#Y<r_xH(ofsNpoJNj~v<^)~ibQ72YU}T0+2&Z(^3M?^h_y zJO^~8D&WIYI*_}SX_|hy`@uTLQ(4L5j^;7@%;W3BhKH8FH9eAW!={? zC%novyWQdPI!@1_mVQv*#}D5po`0m#o|RNJALq$@_vE7@-84VeIp(IJyD*xj0k%F4 zJ7cJ}bS~)z#JY(iQmUcCplhiz2?4 zt!W`<)N=KI9W^OH!z&7>Gj`qr1e1?okSS;f2v2VC+i<%6!XY%WtH(M@0?TXu#O)CRNv5$}oTJN4Q+ zmHvd^38k4wV!FV&A9;HV7lSr)Jcd;=RT@5}9@?3m6Fqq<)uv^ES6BOS^NA2DRIsE# zM`-DZpFwD0ua2p&BUtXA&)ToN)WjeZ^ZgyVe{Qr*<6G#dtg3LICu!DFZiX?Gwq#dZ zXa+b*YGzWhk^Uvn_!SU^MN3lsrsgZ3VCEyvmPF*)wL(^_Qm-A-dn0~eVj3fc-9Up0 zQX&2DA}T~KrJ=C$1{@#%;U+Innaoe6|m9ihb}_CU1RVtH%|T#-_duuWm%RJROeo z8Ev|yY=$*nR%H=AG5YX@wSnq5rssZk^L^t3<9o;mauz)H?G`@Zc6*n1XK$m#^JT31s-*Wq|P;X=^ZR0>2ugzX|ZX4-*WS z>Gx?~r~)JupzFbIa^{ha`J*+FU;NGUk3V6{y&dh2g7{!`9z;rG#;?UlVvY-t@T zjZDE&+M5~+ou5+`pFSD49)HctFwWNuRm0nzVt>rmQ~s}$!EsSI4z?0+ag2zL8_iAj zMl*>AX5#G1fYOV;F8Yg zMKWeeZLm|)j%!$~ff45kuT=68lbRcB1lEtg{T0Qk91cM0@#+t`axzj4*1d6oN(z$p<_j9So`o{# z^M(h|h2;~y(7r))-k&H?cwfxfZ_5J+mmbdZCwoGBs1n6}%Eph=D|lFn=%)hcZ4yuZ zP4LhUIC2U<|A3Eq^F7mf!2Dsn@qu^ADpxxuLj#LjvixE}_eNak`kb{Ly1=Uek+XFV zQ1s?HSSneCTgJ+M0lMAGKNf!7RyLYsRO9!&;d>VzjwyvB&8}%(_|<1&^=NG+H0ohj z2#2z9-ULx6IA5%_06^s0z8`sm31WwcDA^U9~k-_ zN)6k9F@mnF4RHX=7cxyikT^=6n>1Frm5ni55x^wQ5`{i2#BH>bAQvT;|0d#K^}n27 z(Vbr|aZ{iq{OPNGhHIV~qwpUV!YS;YJ;m)}t4g>@$JJ&O5Gup>Gj%LXtOo*W0(~o& zSLF|^{ELE1GShqya??%X4U*w zi1StuHp`Gk(b`=}q?laFlMkxyk`xd(e7OLE*lPZ~R37v;`Pw;}^PW`6z+66tpkRIl zy%}MC=zBdol^;CNCt$;6y5Zh2*u4jy%eh9|WV+ezB z>4eh%xqx=_>I;Tu441K6>BCbiAI;uOac61nkSL}?D!`B`tr0r`6ZJglgvELf7==?V zm7vz1jqH^UL$$T7QgoZts9l)=gIXHGYTstW$>hX@1M!nJ$+$%=~R>dB19BkVh;K560ILzFMA7?Vaga3+*&$bWDYFUu+XXzltI z*I-t2SH&Q!wlQpwiqO#GbL&8%FLdbe=Y=%w2PSRP<;%?7>)VOJx$i6ng-{p|lipt` z73X*-K>#n>zHCL*`Q)#aGI_WX6il(-lj*`qyV9ZJm>`A7lBIhqFq&+X0&QTdc=~z$>s6+CVAcgpJO^S2C{ZJQJgd8 z&9NEb26Z?>Oj~|ivrCib{6LaZQcz7i3V!*#$mjg^G z7NjqCU|gjZn*4@QbWVLT(Dxr`B6Ezhx4tt)gapTN9%O&*5vTYT1?FmgG03Y8fEmK> z^4w0=zF4{W?`DCM`NZT{@^)p~_ho?XktB)ZXu{Xm{>}XHLx=DiNy$1R zCdRQipV5&Y$C^snH74MpTksla)mAFoEk&)K3e4#KGX`WhGT=qOJmPnLoTGB}Fy*#V zv3Xe$9koNu!EBtgq$PO5@pY?zNLZT}GvAOfcN*$SLay4dwXDfk&%nyp?6r$}Z))VD zR_1HibEtqF2-Ij`&KDsQ$KPp+el}{nZ{ytL=&mzuoEKSuBOe?3i%)4)pP7q>{Xh)- z&SBKd7zIb3sA5am z;5vYMe3I4D?Yl(lB|rDm(kNMYKI#_xa|w~idJm1qWx76L zBuCT|!hV?6w@!$y0Vh21lP`Awsti#`(ZyNlr9J{jvI-dhr_@V_B7CQbSD zZ_A!_cJnIA{o5ztNd^NS~Y5Nl}0{C~bu zR%`Q&yUdDC;r2BzB?wq!kNpk)FY_L%$zs(Mw{^y;$fE>*%2K1w@9Ii24CflRVl^Yb zi8SQ0O+Q6#YCQS(Gkr4sRnp}-{55%9*8mS#;|aEnzNP#D*Q1+xiHeYl=)EWDq?ei_ z#kV|}D88H#)2n~;=%3JQ9i~W`lGUDz53nE%P)nG*k!b!Az@LsTJ8vAmUWgB7(G(G_ ztkt*d1Ujy#*-(R-_uo_QBhmMU1yb4OfB&!BjA_n>nUslRT{Wfg-zP}_9ZtZrk6%0O z>%(sP^DNG+{xcsY(%59h_uI{yzy_?pcleQPFQK}&Fs1N(*JzV6cXr7SIOumGH(^)x zoAkLzivdUB_x2PVs;Iy4$7{8SGh2p1#uNy2)6*=E()P8TSD5*?`qu_Yr ztO`nGe6Ku8{%`0lCFAO~l=n2nELSdcaRTUMnILOX;K0St1#NSC1zcz^qm;u@E!!Yc zEqFsRdzclqL;j%Qy`uQNghv`SlU!AxD%aCS)F2l%cg$w-sORfFe|mMO)?HEl8>`2V zpZb9|(I+#Q&E*B~C^5NHhILgY$VITn*2-ZETJE~BXgao zmW2AB24n@qX8XzZofa4w|79VC@Llz7Del?@-rgFnH|yTfGvX;+bS8>(&P~QG3}Lg4 zS^v1mkzOJk&6*;&U%%#nhRRh4j_>(7&>$dWi%w=EeDksU8_~NMui|A<0 zHmDSuYxwSezXL4llPf_}k3=QyVjbCN&-Bl|(LM!CAcefvrD?UR+?g)w@+=w)+m2e| zuT>28Rydv`=aPep6Vy3ZNQ4X(R5}^EI2M$5%`yuG(ePJ^lXF@lTc0DfF^6T|s6=XT zElB^@AJV|FtT8s(?}MZfIfo7J-;1){-m}zO;kE9Lo>`H3U`Q)CQ(FA$<~tY>sY=G9 zGoMhBogOz)C|e2c(8dYAF?{pqFZKWhY)tA4H1Ej;0NLGo1zJ!jOu zsm2Z^N-Z&3h^gI#AkHP6JR9TR&-&Yl>+MDN9=4rLSM4Ge zJv+cR09NzafKI0+ka&C`GT2KA78CxtEn*r{Y`CZsXn(9Iq;nCI9;C^Zn54+U{GY24 z@8uy5!M5J6J^5iyCY|w}UHR@Cm|um) z^rdK*bxPVhJ8)ztbuMsHGwO}V?H;yNdJnmd&vY>+VmBm~CIovgBuH0+2)TmN7WmKJ zxp?IF>gc?>*4#WHZu|4eoDpaIr0=UgTiGMR!;+b1YQES$aNvwdvkUdVYLb#oTXrnQ z{@43|)aX)?sAG(akPFRn{=1Yh-g7kDxdw3X78!0;_a$SxA&X{WX}3fvcBsYiWMz}o zz6nc0`9RM^cR+4ZZG)RP;&7qn!V9&iES&1g;cIYKw~iQ>LWxcMhBvpygLxUZsuW*% z-}#@vw^hppLd@G=TiQZBZjWm2+*Tj3%r;lTV)$PHpTq7Zw;x8-&|e5!XnJjGH?xj5X}x z_ea^Qe$}eR=Y|~j>{~b3jm4lkC}8;^Gc*yei#*`&@NR@lD6G@dt6@SUJPR^QjVWL?2Gq`2fiL#+S=a1*`?sS{#C<^i&~h9f_KY|6|L>v*SdFKlmfSSm%Wou_Y7K20T?#^ zrcd~OIM|eM)G;T+GCH5h?JOe<1$tV4 zn-ls+nK0o=wkaSIw}OI?9q%CNeBnaBgJMYRn}+9{mz)~Xf$cW5zc1F4O_-Zj@?Ud= z`=0m<9&bd;XtGpmVtSQML0z6iVFjm7H0NEEzIQzdk+DVo8?OLE11@Fui=L4?#=D?D z%B%^m&$n5R*93@f4US|h^pM^tE0iM(2uObd5{$UxfrK(4eCv(&uMp03*IrczqOH(tFP}&^ApZ~Wx7^MmK7ShI_=EnzDj02t z10xSc-CrjIZTqo*<*B5!2%8(zr8b*d3ZC~QqdpAc`%LlNtZ`wWkh+)x3XH6=Vbnn= zu-$EWBYcK(NU`%5g%%fx5{H%!303wXfB)N0<%;%8_jAJ+1%l28)~2_IDzUam7_$>~ z6JeDc+YenOro99?m$Knoc9EVDg0=9{p)r-g7LNX zP7tm6|G5AksJh#NWlIkFKoac!I?rwZkjN9*7!3&a0Nph75=$?2R3_Y7EMd{M+>21- z%~weCJqFU%E;B?Ho5N7=yz1YC%sP+r@nfq#r(%FqZ26ky!`8KRSLGwFds2k&MhysL=z2VklSty}$uWZ3? zN)oHkB{!Aq-};fbyY2Hgg8K-jA61T(ho`(##xGZVvabdo{3WCU50h?vA{C!c9Cl&9 zq1s44UlLUvg?t!DZ^uktk4oReDqr_06#|-xPU0D6$veV#!!^WtDwV!q+`{a(?8`W_ zY!TCbdtp7+#^!s&E+ElTBYby7F}K`xe>Amt4>O5YODDbFLsrd)!{Zq38t+&jb1XZ) zJc=-Rci8bT!n5qakn9fn4CFX;Ze8{vB7hW;TVvO}ZFfE1BqFli|Bh@EjnAjAbmc}! z1^R71m)GE-z~_3I+vHOyh3g;uWc`o5dD77z;P2ug2qlqwI5GvZZlB`rtFxgJ`y;0{ zl=1LXLh-mmY}3!LP>F4Wyw<-XZ*eUTvJvebcaT0wVfeOP@E z7CERd?w5wG=m^4SI^Z*zh^x?&GM=to(0Z3dsL!Q1q=c-E^1uplv)&&ga9$v@8HQP; zi&zhx;$IXfv_GzKdq}@2nd>1Ow0uY5Hk$HI6)UmF-~r^+H=;P73lZ5N>3D#qlzTxj zdA$%N1sK92x^(%+XB#88L-Hf5Mi_(C{t0PFyX16|R z-gBSh!+vdGvVbydvP|-Hx0r+gae7hG0ZpeEOXJO)+}qo0+&G=Ht%j0=I_~qC++^t5 zR#=er?sq}r^$hIAiVroJkCc`5kp~Ql?whudiSvp!j}>{uHJQ)>2{H)obf}8?1<>Fb0pM;x&SHzNYB_ zGeJ4sdTWQ@OVEYg&@@*339+d7@os5$k+cVBe=HzgUP*l$v;ivH#Ns;`O?F+iD`Dn2 zCyVMJY;hmNnXxp6-H!0C`npZpJ&>L^fR;bvpU;()Lr$$B85iqn2a9rPJexrj8PElb zed6s%2f(Pm`F6ux{a|BSvGY&8@9_>^%P{&3>E zrg?o8tg_I4aFF(8Mo#KOu~_@1j{QoV0^cucr13 z9~^~Go$!Ow!WctpGwkw-f9}a^B97ajQ=efsF1W#wHSVhK#^A1&Nabu3cj+=F&b*@)z zli3EWl;a(wd`4D?&IPtn8ZQ<7W(RG9bHjZ<@f9z`6O-h3QPF;~1&ojF79tSdyusT3 zNW3j>DV+?zqkw8`FCV?4!r=dApXopLt0^-I1daL_rQN}Us0=8}2`R%!w!dLSJPCNJQ7{jUd@1-~9aYui`_DPFV zZ{GTRo22g;;28YUbT%pwU)~1ivBHy0ViG#G=os=cj;!%LF^YOS{RRq%$$GgL#czh& z4nxGbKQhIP{;a+Qm{UP$br*ELK?f)xNas%ZL(^l$+vQvF6Lc^92EOg_s|L zT?l7V?j|fd)ViL}g!Ka{1pyGm9q%qo&6G>cijp-3)D~;v%uqHoOGosur+O+6UvnZU zwQliMV2n>5gylJ*Kka5Px!vw zcL2_Cfe^apBB?ph2O^qROLpmR;H_sHw+KPDBxvjU{o&))G_JSo{59Ll*Lxj@ECMzS z;2rCVy8AWJz|^!f;S{0W!GeqqzzQX__P+EuNFmJhz0PxIUt@aSp00L!gicX^k=#+6 zJGQr=IeD-3DcPF)iNL$C~g29#6$}mtyL73 zXT=GU`)ur^u{_qCwy>%3z#E=N7ft0O4jPj06hx&plVR(K=|AqZ4^S};fi3HYzZUkIA zMvQ*ohLiXI=nRxBQZB6ItI`mQ% zUxK#gI_?Kxyf1f%=vRGrg@(7=k^2-<1%siFdFc&^OS;|u^gk#-&aC&TuGi@~9nS!` zVKuiot9e*M*T!-3Tq-^k(1z<^!hWfxF~Nt6z!(1%`^#AG}Mo>pIo2F1Mq!9W%^jd1>>iGef!i`*O- zh%l3PAN+1ctOPFX{;Dza1&8Z83o%Tf0JltmOM$}n3j zucSg>=k%}2IHC=6km}BGymbD{l?tW)$;qCq!3q7=5gx}hs=OHA%ga<(FjG~ZpHhGu5dKP4 zW1M!nSTam+8dg{`!|qCGU&BSR7CGwN z*vLJ%UKw7NgAl$5x6vY-Q|eD-{Ks3H4Dhb5i%-y3i0fTQdCO?(G#19ZeN4LRa)?mv z{@cvI4!|3!z(-KbuwxU-3-Q^WnbXenI;|_ID~}l69DepTE~ae z0+|Hk-21U-CV#`O#sUMSgG4Vi7b(`el@HvSVa?pa-JwmH;D_5yq6Fl;A${Nd3MSnU zhQW+BAP`Zc&!a=C5x!ogTpLR1 z@e~=iWW(MxkJ$Y}u1g-9tlrT9HdS|oE5U3g-e~D8hV3^iH2T>EzDF%L$v(rj#pl=4 zjHI|)73ae(M@B2!>79Yd_ny5#co}`zc)4fW0b};H@z&N|g7U(2VO8m&@rw5+*Gsn2 zS&iRLLn-825S>yKUIC|DC1{QA((RUb7QZ|{l?k`#ieB?*+1o;NbDswT@MzBQbpo@D z`rXDZZ_kY8&MRMb|yJt9iP!+zwM>AY-YnW##jm6~I3+@S4zakSb3FiEVEn=FzQB8Fh z=?xZuT2e`1i*m8onc8GdsFf;8T$ROt!BgX@4#TMf%7MCkxV{K6xW_rF@(6(Zrc+h z0F9WE7^!E_Vw@iJsHhPE2(|Heb_@6UrI1J?3}*ty+4)K_%+rU;k`|kH)Bb!0j7~ID_yp{WBy?R^bPl8*Il4#%q7Kz%0I$Jd4du z_}&zrrNZZ}3Ho z?JYwU3N`v1t-Ckg(|$*z+sed-Fx?zP!_f{k74zj7(zhl&n*;8J1ZzXUq z!i3(;-6pmUBn&=je$}}x5sc7UZg?j@`eTu*Z;$4K%@_fdQ&*UmS`2M0$uDiTsy<`7 z64n<7Q+#nwv#*7mm2-dl{m`WDBqkLKTF4wt5jL3}!0uM@QRwpY6^aEM=r3p_#7ytU zMOS3Syh}0}@%8q~c0gPk!WSx!bY~Qd|1#!oGCJ37**q70Zs}W~OK5pxfC|D)e{_5RVS8y=_f{Om1seTF|X9R?7{!A@K)}w$Df_cx^9KCRnkIsOsKRBzw`o`O; z{`f!CwUvyOHIZKQ_Tp<+GcsjWGAPGdV>i8Cm!w<9>LR1mbEKUzgzC@e&rETqNIw-6 zG1)6BFE1}XNs)s+d?4T7T1lk;#LI(Y*+uOnj`1omh8iV+vVktg-biB}ZGrqTAnC&q z@<0+BQfZ;FMgt6t-$#)6fjE@ja=^$`)gguxwbTZwlmz`y{#i%_)zrGgh!c@j*eVk$ zDK8l7(6WKS$gclysS$(BR+babw8TGv`?>MX^;Uis}NDV!?ZIQ zN@%Y!_jaicaXz8GpI$?F ze9#UZ^S-GF7Cw7=Xi)R^rf;TDQkc|cdrSDySYM|f!&c(e7hN9vlxe$8X+9n&9{;dMjdyx_Glz3;T^xW=;+Eg;imT5`9)D}*Hspp=V?pboQ4q1|Qm zVzt3{ULt)$5z7n!Rd6|975^==+GAM3&I5QfXHQCLXEpy1-|)3=iZ#k;Wh!deZ5f+9 z>g|?#x#0)PMQxn1-$YmEKO@mdOR%$rUdHHPAJGO-q6BPF=%8omv($?8Ayy1hra)We2k#J{PJynjBX(5QzWb08|8vj8s*8?ZaB1fe0B^B39NIUeyupo z9JnB3nguXg&*pu|+_w55)z6&9`_$gl^hg8*5BPfO#yG3j=80}+GGH2)Sp3!gfR~X~ zuMx#~BOb*32)Q9?Y$5*&g6xUFl<~|R$Jzrq;c)4JrdQ>9cj^hXjpI$8$Eka5ACvZ| z`$;)|QFx3J8y8TvNZIvQjI#Q9S9 zsxQm>rU&i%*Fr&oU|qL%*h%QJzHsL0KGm~9GqQPv!^Aq`SB=qTjP6G{IU?iLg_V|@ zbRjqL2wIOOkK_uy_0x+7iPX{jD_hwPUG&%jzm~byg|;o8Z%LW_>GG=sUe~1GPGoE* zeruHR*;&7EGNB3noSpW0nTv&-Sukz7KY+!&|7CCg`<$B7b*v zDRA0q@+eF5YyZ<&`k06Lmf>}z{IVB(Cwm@M&hMimwX#|D%ZE$D)!Q%YQV!h33!@iD znSB)e-gtIi#5{#lzt2~wiM}2+4yrTsyB>}67zv0s+&_rGVWy}3#4Bk=OA;ALirzk+ z3K)o#JA3lOMd2cR>|WochTV=`=AE}%O}?9bjhYbnqeu-y!mbD-jyA~8>Pg%^I6~z0 z0dlMbECfu`-+EBxSQJP15&?+UClnCXgRNuzLar&O`A5b99?Bu@^vGi6$5Obt zt@MhDK$CjpJhN`~jBA{Z`q;unuc=v}xB+(z#5^Fz5 z>(6jmf{o}=>N_&xayiKSx?g{>;%2>Ms1!;dD@Y`zTMMH-_zua|e9A3HZzjpOfY`vphMqk)-Yn&y0kx-SQ)}Y;cJCbgA)d#T&K%(&I zVpRdS+cVE4)Xk0JL7+5QePMM~`s6kgxT+ycHHZdt*r7dm>m_9?I=ycF zh@Y>J#NkH{{kD4ySa()?t`xkApS64_iliy6;e?j)536c&Y{^+8FnCKl-S^^jOx#0q zkn`Fi1D?Kf^pWMHGW(gt%}A1M%g*CN&2A{>x+i<%b3MxM9+nqHQwxJIuS9x%{)eNc z7*zu2L+_5{UfW92!4c|>^!_2!=KGst=@Wys4<|n!Jm$}mcfl#57K3z=i0rXPkKOVW zB}y#(YQL5nrMc)+AGZFYn8&M2@{2noM%v<8pR&}*)QGF7D7+T|>R8led~A0ISz+Tj z>eQsa4wdM*YNF}NL(MDZJu4+be*-=HY?PP62X&e^S{>Xow+Ncompk#Dk_ri2(eKgi z(qIx18U+$_*k#qbzJ*~lIvxzpvl#4$k(5x1@*-PvW*_S&D-#u#{r%A&&D=aqVz$k# zfF)a@a#6K$B%G<-I!h%&Tb>=!XdvS*iZ_tUZ23IrFz~)v%_77y(fJK~ec*-tD2DCN zoIVMs#LAnIrm(bm!_6B}gMM9hScS$UiZuh!)Pqig&kQJXg? zz%@)80&TTwnArgr&yG}fD=*sTX!4p%x>LC)mL(ng;J#LMmQ~V>|LoG&N`-=hS6wpm z%r?PT7MDb8=i7bR=LC9W#V)oI2hT2zwFu&bZ=Hp-)qHX9{U|$_^1gh=alz;}xO|QS zU;~;C*%L9^*VQce>XbO$mnQE%u|0ZRagNS>PSJf;X=W{T%g$84v!9L$udSDU_47RT>^Aa)Wk2V%4xK`paNTwmw2%D>K?eD`5q z6kaU1r6$rhFj$ST)V(-jEb1JW`Hc&jhJ4yZg?p zgQjbX^Qyz)TyN%N5=~=-s*K*k-p~RTU?eXxYH`%@Q>#JY2-Viuu)ueux2@xs=8G^4 z{CaP8li>Ol#wN%e5fX6){A|AZV41`K;*;*K;EMnOQ_Q2A?7u&18CVGGyM8OSwDcmV9D@{J*3aaINj_JX6c)4D-4V6hB zYdQmLuc|Oi@8QmTzt}JG4;mp09B2kby^F_zP((jbeAiQ?NAEg6?w>RJS)if=3a`-o zkk1c2n6_~qliwHpG5uBE&I&IV^#%L1o!{mt(5)g zjGeWl;j8ZD7tdlVtrdc9Au*E>GUBnxax}1J_pw?ampo zTOb)p-Jutn-3E``X3_wEC2xUTsoC28x}*da?N@Qoo~iMb!YGTX%vzFw+rqNSp4GA= zn+v+w={RE;Gs`|-E+uN!I$y|s!H7=m=WD7phO7MFW|w`ZifOb%^;md9EpBOC# zoJt*9JDaT}sjWV0Cc<{VA5$X1$f9qQ!KK|R=$%`S_ww3x)*2#>Up}miF4T0U-0U8S zWM#5g%MR%d>vM9ay;6FahVg>*IfJyE%?p$yhAQ@N>#r40EXT+8!uL_J1v^L8*|3B@ z>DHFSYRnQhiz(DML|T6-GV&rAdDZDg!&5IO7irL^mx95x&5%Un^Wm^5KO&#BTJ zS@fO+xfA{JPh6A0$5UE!6VV@!Sksw23j|sT_hnQ>Ggrw8Ga+(CR7fx-y&+2o?hodw zt|PxPbV=mcl+QV-9p7QU`dG^4HgguUB8R{-G5yU<_hX?Qh|QlzHQ6F~WaAZc3A}wP z4pQ{W!3Q(N?ffTqogmWVn}<%4iti7q6(=j^qcTY1KIHJFcA>#Or!mDd;m{MCM~C4w zdl2O!iEg$aHs3GBwL#UJg3#CA_f3Qn$nD&=1lrF8pr!A~LC)~53cW|{h_`t%N#4fO zmFSkb;;t+_13Iv_BHT!P)|W3nb-J-;i>CkPVb+A(r+d}e=~KMdEN6O7jl;_mz*cFf zHz1V?xn)t^TV-^?u`*b0nXS@N2lMl|g9?2)1dxZ!Gfju4Lm!((k+pk1{W!E_kAR5U z^51@96qV@Q;Q6^->(B8qS_fw-Z>*aeOi3y3YKcLGUDc#AU&DL2uHo_p@$3LMlIiVllr-(X5XaC(k0kziEeA%`mLhk|io)*Ym3u@>Vl$MdeN zr}^P+Mf>CMb_xw|@>D|U6plO#1gz{PzilVS?kg6Z*~YE%TGU)$jHlf^<)G%kY_|mJ z#kqLUZ+yr|3G+Y;(GQ&7NGYj(_*;vybc&mUC6)y)I9p-G`*yJ#DgHX^wDX6UM1;`!P zdCMHH*exfZ>!~_e5tPcLM8zT_@()%6@6qqs2}l<#SpASYFmIZ0a^CKdojao`Dlh`( zL@fSf#X6H)-Vx6}^}x2}Yx|qhnD6Umxjhpo^4A0WAOhzbT=gfDk>R5_Q#mzLJD=3Z z-$=MP_S*hLQevS9proRnqL*GiuuOb5og;x%@MvuHTwxbuQKM@=b3-s}X^IDBI4X*g+D6gw&vn)-RDZ`;F2khDJz$Js&O?-tBmBsnryehb zwa_E-evgb3BzX~(O1~-DCIC<VG-lp8zKhgX!i}@kCf(G-_H5mxF~4$}>ApJly(HFpN1v`2gaHcKIp)76%HJlg z^ERW<{g2|*2!3GBU)+jM+$m!4o7`2<4talGCle{~l zJfgY1u16B}#&uLmm8DGO8Yu|_$@;w_KEv{F`prnCfPUn~I zZbMytSdqDZ^~+#}co}bwsw)+fne^&83@6{wspMwehZ9TGt3}dO$5$II66d~D+vUe} zP>V&B8B)EoJ5Mi4tHoxdH4uSlN|kss)}R4bI9|Rp%H3l`gp`Si$#Zmq`{Vu0+kzvV z%T|hxo~O|o^)lm|^$9*c9C$Jla)Zu+^s%*m`441eipaK=vFTHPXsa7BdNJ9BGVD zTe`$9{Yz4C9g|8XW08{hJk$@#&bvV`Pf*33xup+lH4T9#@okw(p zHoyGS3R{~=28*Wehs8A~tC2`P)~>09mjCm&oezz-Pm+Fso0;e;6cR)4!Ay@S0n#N} z>%jJ$@R6Z$)Bvfk{1D2r?UcJDcS{j~X_3GxqJ(rPyDp!yMKQP?7)Zn#k6z;v?RMfJ z5f;$F_>oA&`r@*AF-v+9vrA35v1aD+Ft;B7I!LW+~qS z?EJT{jw95CTT{T8D8p)N+?(eU?mG*Zu`n`-kO`49S8IAc_J#TcaB#s}aywA~sCr)^+zCC!9qSr0=J;2N^9HsDDi1!ITSt z8RzON8@bWh&%s+1S`vS8PDc9)`QI}N!$Web2Z|7|68;;cHD{A8=a>$gu!a@b>4iRT zm=;pdc~HKdkM#(6+*{tWZybMg*!o3pS`2s>9IOFRAOtYMz*xkfqE4Cq8&rA3V5h?b zNp2TB_yi8YL@MK9BGhz;u`PzpEF-y(H@r%w;RETt9LqVVsnzG_h4245;6$c&`PaS? zi--ZEc>&R64Y8oxXC_D$scj+v&)?rnfdihv39DrtMh+cyq0l+>j}n{wme9XP$lDTP z!u+>faELsauu8B_i-}+};uMB9zn2xybibMq^DQ_(Hk-~<#3Dq%!xQ}5F@6}Neyaa9 zhGemcu2%qK;gb2lNSh8m&g_|kvGvqYNAh9$-yXo*Q|b|d`qzImKg&M!_gmSGiYdGY zb)*UwF1Dt38X3>!`VImI?*H`+O8-Gjnav6R?_W$!z0sN(@l{Cw z3T(1Hkj`}|0U>l2%l|a9=jtbTNykc-Or&(d3Tl!Pi}3%=3B~7tGcLbWC}0$JyyUE{ zKhU~s0viabYYdaoW9#$>9s^Jmi{u+{wn8w?FS(D%LJC5U+`?p*?Tc7p1na}fwF!d$ zZ$v$!LwGRQ*xR3aZT?#zXy0*8mkyjd&2CxZQ$7%d6<2SFCZZyfl?l1(quf?gx{YBt z1eYZz#i%971ew_wyFisf)fK9@K3ByE?fJa3&G^jvpbNv-js}L3C{Gn zx=1%o2}OPXYa7E%eshc9{1x$`J^imqV}Q{08UA3Ws}~LiL+X7>>h%~o3X&V&jlxJ> zaj&^>_KfKg*9_wRPY>Q9>~meR$g!hYSYQM_A>-#gW-QsRt|4>qX;0!^I0OxdD6eo0 z0iP?LpeLPr>zcEyI4Nf5p~^;1uEdR>E&OeLW*z%!yt#Oz%?wcg?Xpmer(_aq+r`9# zO#Y;*hf`-0a5M#{@l-yCsiI^28gO94Q}0ZB_&evlq1Z%rcPDayO5j7rIl&;e#maZN z8}O67;hA>=jcTWV=%@it*_UF_|IQj%TXjUjI(WGzDs0cTZ8;AXHyO z3ZH@rqfn$zdB4bn!=-_3qf=w=ab+rGzFS$Wtr=VYZUuHaiM*&~>n)LwzP&zg49jKJ z7!O55!Za5_D@AQ4x8&&mVF4ZbQ^ILsHdN@qmJTIJTR4yYVLR(sX;k1xUnKf zg%E=4-QIDM#&=QiJz6~SQQB4rB`+q1#(n0;1D0e^``x74N`eySWaXd7U@A3gEv27K z*7c4v!-E5jOtQ%jy0r!K1)+s4a!sA|u8zmSi$ul|>;?Co#7?qyoSUXAKTnE+S_@_0 zOS(XvtX`EYsw zs}bGw``072Gr}`d0mDI&E9^Rw+Dex5azDl{B$@@bLA-PwlGZoLpvwr^=qzc=x8!rb z5RF+^;C^Iw3$;z?OOyG(TZ)7acMYBz-h@ymgBa{`eO{l=RBEv3Ft~h*J^cA?px1B1 zdAu%>>ho`~8=hMt#BsqFlh>PH(745f4K0~AF9++~=Xed}P^-wXYLP1( z^l7#3{*1)8#ZCGH^2V|i5@6(mnN{U2=X0kw3i*z+FrHP?8uNnBL-e9FD03If1F`2J! zgfD-Av*PE6|5t==(Fn6JsvCIdFT05@*FX(&FB$qOUKs zJTzX-7(6c8CRl)~xKYM{FJRz7`uDt?Zj^5)*Eb)}y5j;mkR96OuzqWnkayEG*944Y zWiEyO+45tW4L2gkBX^Pf*c{(am}fP-yw3ZQ#p&?1)Gm1R8bqvW^Yz#9lGkg^9J;;| zJ)1st)I8KF=V~sPyUU&V?w^RX4Ca;_-j`1?AR&3)UbP_Hr9#6awEU_z!KyZT0jJi> zEp8mCvR)M^nx&VwocJAN^@&X)Hdh*2S#D^GC|gP-Xw&UQdpZEXAwzBEK@09y;o#b?z`Ku9eILj zXmD!EaCA2NzRYfMy(2a2Rw#2i?h;$(Zm2n5oGb1zhlSIbNYZS>Gpf-l$Y~Ge zC|5uL>z%#3lhjjMUU_fjMIFCmrRO)jw@~>g{Yy58_*?xUH{0zhhk|Tl{lFGRXGhcR<)Q zsooqXUKvGMNxYtNEqosyX?E_7j0>lb$%OZ-l?%eFdz+i~6MrSA(|J!EaaE-~6)a2_ z-LN@449osHKE!_;NUP?)@jdaYcJC#9%fG1127wj#7JD8YnZd%5?esNxmB^7d@@V|D zLjmmur3gbX!4Ma4Fe*kB&v0nPqvdGo^(vlWi2t@Fx~e#z~!h z&h&J)w7CDig%i44nkF?m=mf`LiQS_{_yMcAN?$=UUjUPo?Zix%G(x{W4jGGcwp|R# zqvNOxov^+{83~mEJk0z$E8yI+P+CY%=H&>EBRS0f7geO+)vR~{j+F1kiAbS*c95j8 z;I!Kjt>{$b?Gtr=^u}Wxa!}7#Vq7nlJogpm(DXUu1eWR(4Hax0VR9+@d0b}007Zi| zMqqvAtJV}jcHVzkxJY8=gS^bYZUv5UCmEi0BQn8Tx+pArA*Gz;jSGqiE-g@wIQECF zb=xaUyHjH~G*kIuFm8G$KTKFG@~eKg#AbK0yV}X9jWS4G@&ljkBa;B%eZ3|@aAIMK zv|6T4EFP4pxzZAIFHU}ZV{K1 zj0`t5qU_pFWTUj42iNNp$NCbtuQIy#AVkuT+EqhGYX*v8qb$m(n;N zGZTpWTsFzT)+iBd%)N$#XZA-gjf{t9ckla5u9M+4z)jq1AXBgAD0&uKGozFcM?NM@ zZ^Ecw56TM1PbhM!LEi7Ok7MB^-JlWNabdtHwBG z8~w`7HR=iWOCOFor(a@VElZ%5a9s#Rg!U&(N*i z>FZw-z;g4325@~V1{%bohfdIZj*~<(7nAm&h(Y9yOlpk7g6~}qa>dS#m2R>flD8e} z@4YY6(m)IzAZNNkVOO=^7>)WbYPFN@b^IPn@Qx>LWm5S?MIylyQeJ`fHfEy%F-;PR z5*N&B8QAC9?uHzn_`GpvANs64^j(sf=Uqg<@*9^iE>9q&yDDK23&pG^j)`8!ej+F) zYr$EYol~nM{aCl%XSIA|38^9kR;Ur5h&^g5@1F+_+1$UyllC{?V?hi`##5-qOKSlU zBC?mp3Q*u!VNbys{BiGQvPl%UJj%C!@^Qg02KDyjcTSf@%OB}tv zuDtH}V7xri|G2Y|Z-cD6Bw)8J({fAxO0_?Zf6Y-gG0I1sIhyoVQl)f)#Hy}0tJ8{gsjc^A-{1WWdt$UxciK5IG^Ua`J(-Jo4^1PF|f z!3EZ;Sl%w!c3~Qff^c}838n~K_;UXdzRk34afbu+#NL?$O>_8zU4cfY(J2%NFGJ^DFsN>qzM6qt4= zEKKi?fF`Pe2NX(jNG8Y>>1_`%*#CH$#1TxfLp+Y1{U?OZor{yr2hLiPw(lHX?QVCu z-tUKZjT@bAcX(Vu_bMlL*GdI4$5%{|k8dA$3}mc>Pqo)k;~sM8HFK5n3N5vD%7wml zhF=d6?tJ+H)3RSs-qY6b#jX3)urkz*{V2sC8ad+2ul4cM8xxrh;W}jqLukFK> z#F&59(EEBLGD63zGgqGsmw@|-N>Cc>Anxj(0A>AcxQO?{0YCW*PnpEHPAlu>ob9&x zu0fQHm&E9%XZ8>^vLMmh-j?Y@lGV>Az@?1G<-F$>>5A(n;-?_yPk6aIY<_SIaWgln z4pV{Pbl>ywe*Js8=0X>6T|JZcAT?Knnf2#v_F6Ba-RYIOF!uL#Uf>RnCzi0K1XARG zQ9KHs=AwK6^fLlY>Dy?6To{mTFHd76+VEFF9Fr9v$-jtH6XSDAq3v(>6tshS9Rgch z%xX)vE}pKMd**KpT0vB|mg@KPXz0zN@zQ0wzWgqPk0LIFjnktSRSwmQ`VaIWV$G)qGmhx0c6VqhQlFqdP+se^>yy)slw{HBf!5RNKy!!bCuGIH^iC zhsUgrO!CL5K{yK++2|7j_WI&0qsK?@!28F;S+yY*sf+bm6N~Y);Fphc{^+~f$qaW^ z*QJAUUQ(Bk78aKy(;2PkJGF9Mxf8u68&vqj|D4w7BMiVSsk|!Hox7(#T{OjS_DnE% z#c~Vnk>mg`g7~HV;3OA2|2R6St=CF6Nh|}Jiyzz@X3{3_0eAjo&6v)QzEd>p`>Wl9 z-_z6QFC}n|%zn82fhBX@*hx1cN)Sx9dsEE9r=^AG5g@?Skx|#b32O8CxmK6tJ&8he zgr(93NdmhA8X466&&m^4achK-*-lN6Y(+4P9Kj?dLNd5W0G8fdzJ|D)9w&vq(b z(D9yRl7pKxKE)(q9ofk26>O2l z-uM3Axoz+)JiztSEyVV%8CwL@ z4E%W4l_u-=b@r)Hl1O;f&sd{QF6z=^&G(!VBU6FxOu#mKul+lkKdK62AF#8{dK`(1 z!uNtqknyzLx%cCh@%?4qS&#k+$?tIU2CGu16AnIlo%f9@`s&+CO*!W4Uet_YF4pTq z$R@Id+QB~N4~|4Vr{~#4SDwvd^lRQq9c;uY1dzDv+$!#&tFMD|}??3+-kg0uv;v-!J5U3y(?) zPcstiq%a+QXiDH@_K7|mxo{v`EqBNG_W<5^Y)ol+u!T53M+NYzQ|v8%UV3KAuG;k~ zp5qYVC}DAggdn)Pl}1_1^%9LxwEoKy&HdZsuY+A z`F=t38pr$xQ-*!E6YBiFK+rpqNp@W7sbgBj{&R%5rUq+@JVI(AXdavvRD=~c2ft0K zRgl1nS&z}hx{yT&hDkPOj#Xs0U@BH8`$rF%$-JL{op;z|Nz6BwUu7058A2EmZ z>bw2wi>8pTJ=tidxATt=jL0UQuw?i}{QXvBO8;=zruTRezn;6Yv*%J-E6Zvn_73Vg3<|pm3kVChjYTgndeqEHQ8Gm z@9}d5L%K<5N0n>4&eqVVKP3Y2T40Ykiz9cBA8ZO)7fnhnc9LH_b-4})Ld!^!_%w^A z+5MhK0reiv+F9pfWv|@o(}PT8s&xhvz*tO0+xRWen8N7DV1@rX!a0y0x?j?Y^@}|! zgz`bL6z=MX{6Ho25Zpg=U#!5GF=hBg7BO7hQ*;%ozaDjErV5DsG}%s&PKrkYo9|#j zn+*+`;Ig2hDFcVi3YP-WsMPfR{RvI{XncP7kuqQ4Xs_U=EE&fmxMaPS8EpUX{(L%L zzUm|#^XSomT=3y|_3G_#JlCPv4-dGg;iU@a51prJ_q}Rw8Alg(TZ@|&BLeP7e%XKq z&_a#jeRVJS!dg8uJtRHKGA21M<_wK6F)i((UoE?-agVsB1xu{PH14RD@{n?L9r^*b zU74eTQJx7ivSvT;P?z?-@|ToXbqB^%N^99(fLZ_PM!CcFGrM|6z^@}=P~;{O&HWO3 zON+i@OWEyQW|&IR&=ZK?Rc0e;;B&Nx6Pxw1`-2|kMw(j9tf7Loqp1H8$eTcgzJRY2 z0u>>|NGRTMDf8Zc%EkY-`9o>?*LyCg^}9lKVxFQi^~vYsuGSCQ<*RKH$S)7_xr0$d zR8V%q#fCK!7}A!9!IcLcMF~!lWI*Q#e%g>qtqHEd|3@R#Qrdo7W5`7?s zy)$`aoyWOIv6;*nP(Hq)Pyo*6?5~&m1OlfU=QV|sNJ*v!(*+5Kt&UH@_h&b5gvPKcGIW{yWRKi)So=Hxfm%|9$U<%Z=R*ZU(eHxwVkh=Bqbhnf6K|hQKnzX zMu{Uu$IaI`B@r0Z7Kzktp^m?@b3UK^n>l*ma2ds$tjDFZ|yNSTYXeasQS~J!$?zH z>^7|=I_wc`tFhBqe(76lGHYfo(9J~K^-lb`!h4(}>oG(%IA zafDHv^GHVh1py)mAcEZ}CX$eLV@az4Le9rWVQ{HR8lR7*&)T~?gA?Nhv1&2da#EetKE~&?EtGSMrz$+#Qq?>Avo@%Z8lFiL7+7{q8E` zT5OB3%}eRo{^5plqIC4=F?HzNPpg9IRp0qccZRyx!9YwmFKgpon_Nm_Tdo}P8C8Ta zaWpw0fLyR*c=ZLLQ;@Twx4u-h7JG6u1tt*U+iH}8ZT%XLoKZrMtRHi(gd4Ne9($MnP>q$Q_0xKTzM0zNIEQU1g^ZjQGTbM6!+H}zHS?1_t0XCAa>mc4Bo+Dix z%fv`NEvB1g(`E=gz1Q`wd@HvsC1@zWe}-LXD+hvL9Lhfei=c)+b6B9!e(~au;Q2eH z;pV|OZ%tHYo87(|EZzQSKN})OY#m_f?oJkXT*H3x$J$?!x#XJdx&tXbd%A_fZ#?-@ ziLZByr4u?vB3|v9Br87M{{?ohiL@G5VXrhp?!{(wn~mYVXHZ6KT2Y4`Q zA#tFOEL%Rsb*Y68@fcmN^BaUE`|u#BxaBhYfAXmi0dpss zbOodqyl(Y+Gd!6DN~^}&DCFDqhgI*dpZ?2Dv$dTUsv;R1<8ykt#&pI5!%-MtRGTVn2RVn7}>(yk^HR=*j|Kq{U+GXM+B&T;X+sW0}DoQIEd7Jb#F?1IS!=)@O zU4x4S+t@DZByJ!0($A?ejiXa)tyeE^cG`z5u&vI#b{p;n={(nN65@! zg)plzj@p03wmR5a3xH$Wp*Bi&wuZDQWVn~NKaG#R50YT5ckS7z)Jug58K}^R58kmP87hwk zrEvc~39_%OAe0ZnR|P}*(WYkF`q{15NwKg__@zgET#-@;j#y|Iivu0m+Eb}~N*ugk z8CHe5b|sjBm%e;Of-mwDRFnki==JMlQUnfvHdq-43e$gK6a0*G4}S1HjR2lAXJlCy zYC^0?0EtwemUlB_*bE-rNK$+lW^k2KOT=6bqTUu)Qn9wI(iT@rejmE6YN^8LAzBKQ za7>6iBu3=VO|JK);>CjQ8}th%Y2Ax|Y(Wb(v*Y~^IO1Hnv|!u)5$`})-9sw-r&Is- zwUW<=i+H-Ec~vjVl5mENnpBD>r|)=asTRTNcVg$C-A^+s>!#6~rlTlcGjMiKR*9TC z8hT3L5M+>1PbiO7Iw8L!=wwVzeF-S)Gm&lo;E}4N%`>0vKX3T|T(4+Xq^9W42-C-# ze>69@F70Z$VV(I47V`6!R<20@eoJ`p&XoedhfAJZaE{cTm)s!EQ~N-g@QfO&)G^KlgUDlJhCHplPwz;6R`r#f=$BO1FV9*_Tr z1#o)y<>-j(C(nKr@HHy$*pA8JC_05=wS2uMDj`T7UGlyAE);aP%m(q=65-m=)d&AqaZDdu$H8VW6AU(7HWbkZ<@mS zTZ7O+6bp8c^u8dc$4)M6iAN}YMfxYV{#x(naA!yI1`*dxWTtPB%k8t?*Xp1SLcKT4 zg>u>^ZQ8(oASB!z(7CCwP6&+!xoWj3)lh)GeFH6{2I7skgY!13tJ!~R$+W;0okLW} zQ-l--NeExecalqzvSYJIZGMadj1&{PZL$OO5MqmWK><8@=>zz@mrEpu(-HsW(p%-& zf)zo*1d+P&ZeHu$b!)`DfX-8WDI{Phdav-9rt#GkD~dzLZX_ADg=DaeV-C;Y1y7ZhZKe-Ztdedc{ZA$>PxN$q3z3tZSzp%g;hy&KD?m&bpDa2b^oBVq_U2`bnK7CoUZ+iKL( zGpi2m6r&3Z4@UDF`2G!q232VILSD|ktmu`2fV)~a!~^Rnt=+>5cmjt!j` zi3FU|m7UI<0mx=A9Z7=IGWi+|04S%-?(ikiKP-48;O}(GF~_PlxQmkBFQJA;O!W?C zM2X0d3y4-NFi~hw7}OuzZilI(`B?&2JJ8X1uP9RblN8KdV4j{={MWdTIeQ{BrgZSl zfutVz;>S1%wLh!&z3nH7}}k z;r9ieEpwyaU!)eXJO0!SmF@NfB7RlYf>U8DR@Tw3)~R)S!8+aP&yG&I{EC_Mi)viL z--$mcwl)n@*$&tny4IU*yi^Sae9I;C_e2se>Wzty_oa^5C+wbm3f_xB>(~Y*eQ@qO z3q!t>>~DT}Q5+1!tDo7l|5*y(oZvZ|6TAYguw2$5k4S%uCQ=cny{LIj=zH)_hTZxX ziBC09RXic(0_FZgL1<)G*PVVqslzpdA8J;X|Kif$ty`m_!O?ck{MS?dN}G?;_2y7@ zRfl#@*NHO1b8;dw%dFGW`Ung*|37mZv7}Mcr?j3B-Zh)Z=bHS?r8@pKOI*O{OV*N;D* zFUUHWdwvWmB}VyS)$$~kx|hy!&Z%-kWUlKYZ3hpS2TGnf1__Mhwr@02Nq!$M-u>6; z<@U2JZFI@p`+E_&dUP9G8y?GkDn%4$OZ^0tjuubqjTw5KNWu4kcDASNxAR5Eymga| z`Z3&Vjarg#t%AMYjA^sio)6!|cnawK);flsmb5~+3?z?m$U@Na4X*H}5}@WUL@Qk5>!yn(iSTazjHo;0#YkbPn~*Ht<{KEFpL|;flDbcmfAv4fi!EZz~kf z=h`aikX;&{hRqM^wMd2GLmZ*ETBKA$cf0TCMahD;V(E1B0qw z&@JwCJH(a9P>RyRD8PS`M1=S`)VZ4}_pWDFT0HhOWqoq|4ctWerra@>9x|p*z{&wG4ZX#@Ut-Y!Ik<%;Hv1OA~&Y=8R#P&xhp9YD^h{z2WRlU{i z3W7dQGhJXv{KTFRy)T}6ImjVlv)Z?pjCDUNqAJCmxj8a;)k$U=cK1e_8fyM}o!y@O z`!Iols@~OS^NH~IeNCIvxXfM+2u+RAyzIy%LLd{M&-GLx_r=12i#fqU@Z?FKQAH*h zk)fyG(9O8tWP1kr<}-heW#Gz)Ajp5pz_o?F$!#z{0KC=;P8LHy$4hWAi%3;20_jZB zQR-`L(s`SF`N5oZq@34Vlsi0fzKOrDMUyTEyG2jMd@bvD6|;>-DYL@%;RW)+A~kcT zCD)AFUdE>{h%0aJ#X&!l@F%cKs3cA|kE$t%o@9B~9mT}hvw%AL5m^0SO%n!A?+&0! zJI}lH7g|o{ROM95KepkB>3A8eDwT)GL(KwK@j|`n%T5o zWZlXPHwo+qI(w0cFoAP#1Nd2{=2!TjaW}ttmaYn?-?6Md#gz{Pzu_IS8>~3!mcN7h z0xBCF({5C+C}KfZf#A+FCMEI5^q?ZNZ~fNf8>Fc{K;clU*_LLCM^+cWCroksvnqSDf{m?gVYS7PH{DzHe8qe~p zOhw#SP*VQ6lD%VxkZiz6hWX9lHsg%n-AgEKz=Epd6Wx!&qO0@JD8pZ%(~Q`l0@t2E z9R&ZO;F5q8)AjqcFiO?oZ{#Lj5vauZw+gy6DZ&vkxM2vxA<-+ef#IA9mpX8M!B%S$ z5jkJTmK$AS@OTXuPCn6iicf&?lS|69#?qvg{Ydfh;5EaD$TUgNT2_C&bvekTx?Q6x z;SII6N7W|3&j?-s40UX8681s?t0|^KC3>c{Vzz7UZv)>7TbHQT?X@k?v(1v~(ims@ z7kpNWKcpp0N`<>ProSN~O_^4`580&brmxJ~RUVy|Pd48#xGyTay{rj?cmoGiE-UQ@@H5QI* z-o3f8QuT+4IlGY@2P*Uqspom{wWYmHM9xhQZ73{~M)o_0@a{l}~rKRrOBhG@Nm?&Rd@`&RZ_-+*A@7=9R_mBDgu3 zX<5tbJ#oiq&WEItlTnYzvh^r=1$dFWgah1*mTF^!_c)pH>ZMw_Qe^V~@`Zc?!pKuB zva`7+l)u-K0XXO1SNSXr8h<2Gf&JXJ68n`a8$ zT_RhNCZ>b$^_?U|NHC^b+~b)^j`?LK-Jx+czc@-Nv$v=1VZMZb>yFGN2VzSQ{MbiK zHhke<&NX7DQSSKA-$h`O>i`fmEp7!)-Hg9U;Vu7w3SLLcpQjsR8ZX!Ur8Zh^^aFc`qKvUypHC zhL=&84#`|T4Sx)~b5^|LRWY7T{ewYojVjPV@CwnO5Rq z8&nig+@|Zfn^#V$X}0(uB-Uic5zrVQ3jjPoMEu>sFMfLna+%Gn&ggJozv{J=QWxQ8 z;Y3hC7Fr9<3UvNLFqr@ptTAc0vx>ca@b1E)NC)Pb4WThsC6GFs+eKux&4%0=G*P$I zLi<12-Stmfjs*;t{pFvuaXHZoyJ6kowY-l|@@jg;`kQ&=%XGltIGt6>wM&#Gfde(E z#dp)2z(>mfi3;(reh2Btud+>IDHL$jU?gIz&Eg0AUz2OzTYm!)u;ntjTlIGjHr_tC z0J>e4cWZ_@TQ~UrK{$r~k*{8-a3j3q@&55j38?8L;B>av2BlYLzPJk%_;KJa`T1ad zWjlWq2QapBzu6+SQW7e4Yf(jZy3ilhxc?6eAo{45*^DpEjwuqK! zCkje~3?8?BEi&n3Wlqsb+Uvc|vL~n4eAlc;m--r@SJ^cOx47wX{Cx4}9pTXU`g#d9 zMS_{>bF&-$*G`K}9z>7%9j?XOLH2ZMN$cMu&Vkl40VE;cK;rIb9UmxURx+|F_px#H zkcLKNuyzO}qfU!xH~F9MeejZs^pn!?VCD;woAAN-CNZY+5#3EchawgU6aPpx`<+1} z1jPtdt010{6^6UrTYS9)LYLf;{`v*SpZrz1Sh?E3GH@(+u*qF7h3&i@S>Sl)=^aS) zMPJu{8ewM)6ZIk)f44f>9FBeveSZwzR4q{l_dDFm9xDuL-)i@=47>))90+U4=(IbX z$9sEzQFN7f`WfDNv6L-a6-5h@(rjmw+fxw9SZy@LPapU;vB^68u%1j}eltk?iYx%p z@6YT9N43}14h_0o>6vtakg8L7dgHA4cw;D1Rw?mrtepGv>_No6HOWJ!H--wm0({GL zqs8(3F?C~p^O9pQBHhfnH|1BpV0C0M&0&5HpUnrdM$F-|5exQEtnf>?&59lq>Pp=M zl6#t&(f3J)7(}ank+baxQ76!sglC1+?)hf}fGz=K7jw$b~(b zv_R~>3Oz|C;rK=P^Jb%K4o9V)zlRj^^z@YbkK2jy*zp585e)M=@yOH;H^k`^L}7SX z$t(+rBIkd6QzH)eupd2sJg1{br=KO!G{bEs z>1r6K_diduW817a{Ow{o-KOH1kyLeyG1I7$=h>z9T4m> z#=bCkc9(GE2^@z$JlCJTxFLqzLw%%RsPT5%vXm^|y27!o9{6q%r2eO11Xhf2fJXFX zJe(1{i>rL<1bUHqCWQ(}ob2Zb!1fV^@bU)D1TjE_ltX}RB138C`a(u@==(u@1DR&d zoqRyw-s^t&zO2d+2)3wK8^ruFSMEH$3-v~l(hV(__qyNQ3@cSY^xM1IRW z-Qf^iL~XjsJ@VG(yjI+21El?hfl;&lR}1fRoKYZB;xQOO8*D0?4I7fp5fn+o7IT`N zlfMG`SQWO=Q-(x3`t&`<+7u244Eom7?%zQR2XSb*X-=@(A`nuI57p>n#(Jx3@mkw) zJHVTAe<}DJ5URW0DoY?ZVz>`|XYPGt41fFyQtk?^f0#McWV`y^$E*FFa)?H&1{Ava zaUmJYC_0jP_NHD1O%80&7w7OdrIMhX%$(^hqD*O-FmjmJlwkN}pHx!<@^?j#qnmyy zsGkXj3S~{6K2}5_c(2+lOnBdpS!e#*_MdE`-`y0@Kzav(pA4!Xo&(2|UGq^(e zzL(eC-ho%YwqmwKQR3wJ+6DUm3*QrF891Lck0`m*WW;JsgO+dm8?#LeGm$_s5O)Kj z=r`VvzIBv-_==zuY_4@|DYl2 zJi)JrJVqLR877#fOD& zlxXoHY)&M2-!{9ay*)bv-0KinTN(&+heA{9K2HY!#xkGF7cq#dtTGrRgWZ9Q{Qnu7 zkh-SM$1k~Dw%}vq;SJ9xom%k?UB)P)VXQ7`Ba<49B2v-hj?=Doiph3-VW5^gXz9G zubJXhPM{70ZtLcAk3z^^Gn{ z0tTv3nZiYK?k```G`{M>TrpepFS^`rfB)dja$e_QZ(q`jX|=ss`14Elk5~&(5=0W= z50QkMRnJin;t50?vYoxYcaZm6Nt=$=+j8OF&ChaY&tl#zOYY+eJVg<5y;3MAa4$3KRSwI} zaYR8K5vx)0d}}#@M$dKge+j)YY4Jd60Hc&E@!VDrMu~rj+zbf1eW(QT8BcGWqSL`2 zDbxCT`$jSWg`|1_53SxRUWDRHLy?n6ZjFo;Zy>Zr%oND3Z@20k%J~NI+Ybd^WkK0& z7~uR8km|%s_DQ|I$f?V{Al&=cjsY{+6(05GEvtG3-ziW+j}? z3ZKFr1krG+mrrX3D^QQR{Z&}`3ME6>H~-MrfSuRnMdz`LRGXxNz^9;sp#*eQ;aX2si_I%auT*`filHz?|J-8x(3L~7 zWI?x`XN)R=FLVjQ1`@+#+67-aKcaqhpepG~xuLWxq2x^o*`flo)m%TFw4chS|DN{NlwJ%$Pl@&LcffxPOc6p5KX%cjtO zeV-{^pE>{1ZlSh+XaHti4PTJze-jfzGCj=}vDq>M?iA^7`#n1f4Hz$sCc{v~GVD@1 zsEZYO+Ath1gJz|H0=|?qhNCHn==&r_dlW%>UG}QK{5(rIpjH2WTzzF!Ra>|=-J6o$ zAf3_;3eq9nozk&sL^?Mu-QC^YjUXXNmw?hGlG1nKIp==keq*dL__Y^ntvTnL&-1)3 z=s;qzsw4I8fJh@RUcD0`Q;4OcY9iyw=_KUb+pR!MazF2L0gZQH)bpnTSRP1%@L{ID z6kNq9S11|v1)LR5R*vEhiy%JjI(VzEc;d^-SLG~vjOx9RkDJZ}yUklD%I{(#omx1y zUrLwb`2;nJ^O$N%1BH#)m5@xAGr!#(U%^A@=i3+|VlplC2|j?P>m=MG_I%Rxkj7X- zcqd|mlgyW7u;m0w7W*Teoh+i0tX)t?IRn{?Kx=_Pm+~fuYP{M7}5y6s?&NuZGIy_aW z6ws?YJx7`LaoA5U1ccODCpmH16p{TOw0Bqe`6Se6-~YWKy;D<>r4h5Qv^7vdFO>0j zkbFK~$&&TR8yi&U+?aHo4A&xQ)FO^qI^1t@#)N{;usIO%R*cN58#gg}MXv{o{b7{; zY+z+3@n)`r8sGn=nVSGbeG-9gkD~I{La|s1l=(=6F2&~umJq!vbV?OwZWn{SI?d`BpxE~;2;7-PLb`!t#Ryt*jj-el{8 z#Iy%IgI}c(!kKYx{;Ct04sM{7I;Cz(_F447dZS}jUnBE9B2Gbx;LtIb8W2M@_V#)r zWBYjaa=pwGc=fq4F*qYAQ1X=zFg*%CxUR1gzS2Ph5M!_cGDf(nOED+(z}6T!jwY56 z{~BR>KmRD4?nld`GJwHmqvJT`Bvoc12?gV_Ax8*tGAKhRdud+PJ?CKHHPfFfnU*(KkN;3YglR1kZ%Mr#LSr2e0`F)LzeP>2h?pxkeB4yljm zPdfws)=z3D_n0nqVWV~#+foa5<5=~{@)IXX3$bmgXJi$Yq8D}}AQrIY9$-am;3*MD zE`m*CnoIUqxWeNzxAv(3Gr#;8;)LVCTA=uuG0-mJR8qL^J1OmNFSn{`x~SU`?nVrq z`65o?lKPTQM6W)znP`WYtNj<;O`a3z+7R~J)3$3(0p{jXa-R*!|7t29ZUikLcOZ5VE%mPh_~&=x9r8q z<+Y=fWX^gP6acRN2+~4}0D|Y8F>)NvJjG9=cZ5ovhGH)$Y6;+o^&C^d&B}zl=$OTU z3jXX~C;^2aX=Io`lrr`mF#P4n2xU$%JYN6FFW^kE{v}GR#vzb|P6Wb>)o;Yoba&_G zEL-dK&DSw=T7~y*W>N(ez{huC)sNRrW0$?ukA??yTaVnL2L97rP|Y2F#zRrCjsS>u zi$0U#JMK%waLYaum$z}|-Q6&sD9Gy9x&}SXWig5yA|hSTXcJrY9K+tIS*bt;*k})7 zzVR-R8MnslYfYCz7Ol#VJ z8HK0 zy{6CibSTcYRPa(u&w&EA@N&9=QjV#Gy2*zn7JiX3>euz9BX(%o8ENn?st~AF31VoR zfTStB^WG#QU}-{GI?%q#!`oGJz)3=R*QfM~hsZLFV$gK|6}E7i`t%} ziXHx90Q$(LeXzz_d?Ln%eXg>c^(``$h{!0+{4~X0#pEC%((vPqV^C+PnuVtEC~U zx4rvz?~ywqBbcoa{u4&&75Rr2vl{0?tTf(}>-@;fFR|SWLu~BgoEK!Oyf)3kZ`MLn z-<%g9u2I+32r??>#+>ON;@)$deDSZI2_9+bUz}vvYsJvGQ(Z?#5FZS`iU1KhX6<9d zISW5cZbGNb2Eh`Z_L3y--Iz8>=s={jsU=2G6xGPYV3OR~JonR=nsX+tBxsj12Jqn_ zihB;v{vM!G5C2)QhEllcI>NLL9l5gcVWpUNCxwnnQ5Iz>&}7_;UPi2Re|AQ-3y>~V zE{2wyYVt*k0`C?}r2t_CdagB(ybi}-I@La3UVD^CbF2V2l|)BX;CfzN8d90nP?*Hv zJeHj%W+uhD-tx&}!aQ&a;*tjcBqLQ>pqnBG9}QPW#6AyvChr7UzO%6;D9y(@dKwmZ zaaD<>M*wT%F-YTMcND>V6$z?4+JN?AGvK&lWkJEbyLi|Fd8bEe{9U-Vq{b(4 z0xxU6H2xz5B*P#37qbcQcxORr(cGev>yE?AwM{VkW0>uMgSSEc8hv;aW+|ol7GyBS zmnh+1oWe9Lo4{WLSmw zVv6QjGyv!T3M>Eod+dJk&w*gPJn{5=ZbjM=!)>WH!_xDT-Wl7c`f?PjK-X@AstWdT z+FwPCbF9`zf2x=rsT}U}$g3p@mB*U5BjC^N{cCz;Qsb0&{@xJFaSp_ue4*c(kHoi! zL?i}NMIloS1vjcd%h+U~Ibk}VS7Q~>F$;Jy@R6lI#x0qs&eJBlM9BQi4Mn<&g99+U zc-2OsM$LCEcH=8eb2&cmg#G5*<%>@I0bKai=SH?^^KSrtI4vaCqO z)rph_KZxxnj6|n2cG}8)2X;~6!wgWsds9>^AEhp2XtPdx5CBmz0|VaYf&EziZy361 zS`NO7qW>XIV@RUqlG0FY-D*;X)o2uMCQF1{^l=1Nx^2q27=}zf(Poe+-pytMjRSY_ z+u*zUCX?)}WZz0LwQENif!lpE;vNq?QXT0n$*1-@ck}F&K|s;?7Z1hlhp%`qG$>L| zPJN$xp0YbwSd{cs+g&WJ_wx)@V(6uj_3bDB9A0XypXwc5Sj~p@;L(G9-&X3ST~EK} zW6dP|F2-Z?j+!2?#*fcviz0mppdcPEjw|7D{$(MmUl4I>8Tn;*oF;&m12e~j6nud0 zNavY>q1H5jFD%R1_7PyaKBH~9%h89+pT76?sJp#JpwA6<&wIMFhI~Qhqfj62(#Raq zUNwjVvk`Bc(YB#KrX4ziv3W{<{fZR2lHeA&lN+ec8i@}&ehZin&|hV>Wx2F9NnRRH zw!4fDla+Zxcb~Ji<3mmOXCtth33NbyNBZ^Dl!N0@t+L5?nhU$W@kT#<(fT0!TG{qp zd@5*QOEjK{3+6xB>u3u3Wx7`D3PVCXL)4FcYE>V%NLDz zIx){Y4gQJ%Y+wtm)tA3#PybHs@6j-`n8(gYyNraxjVI*O3`|1NzX`+0luR zud2@L9>3dD=DJbSwj2nyyB|^xwOA4PnT`krb0l0l0S%AOSUm*FYwS8{>DP0C`i(^5 zu`6lD%$pFn|9?V2zT`in0Ct&U05$u;#l9~}fTDeH9D#u}Ue^i$O{NN0Tbl|rnyOiQ zZx0w9J!AB==t|hmPWr3dJiz*Q>Ddi}ywp{i-xg1V$j8J9i!|%`S?$J0b?GYYJx-bM zON^m4ZiMlhwY~mXvtY3L3azN`@@cHYS?A^5!jBJ$m?!A;Z3&O(PAAQc6q=_3yJq#{ zFS+VGe&c?}3bb9=iuv9a_mMpek)upLdCHGSCF;;nRP!!pvi&#UsHSE^0dDoqc;X{} zd+Nv;?Z59YA>+B*bVwhASdzi~;83m4T}Tcf>d^O->wW@~{he2vRdV%5+n{B>02ZSo zCxLhdictmAC@o~Iah-ZZv`9cu(xOt??9-O^2%(wKy5tKl*5a=Qjl$@Fi;azCPx*Z- zXCLQ~YM1IHn0ZK6a%D1C0w4Jeg9dpJ}TuZ~BqtOwt;~1Fwb$*hK#VS|>`SI-ZtxSZ}&pZ(a3tdzsslb+R1)0cgDE zsbCX`%ROZfCawiYEn|IL%ZaL1op}62-*Oj^*hX1%#iPkQTJ@6c@}9-AyWcnOTvp<< z*QM5TUnuBXHustHv%{Uw)fY36Q4-oPi zGu#BRei)(Zp914j&x}-#PzhwI`P(SwI?1ehw?m=%4^jctfw3j4Ty#cX1qho%HGm4* zwP6p=Fw!Vmvm*Td=I5YR5UT;k_K_Cr0M^)fATGZcx||cBN5aDLE6?x>2M5-4x+l2e z;kBGxj1bOTw;bLQf9>a|iTqWd8$J1@kjBjfa(Gv8Qr_p?{_HAp!ajYtR4oz)o<4Yx z#bj{$KcRZp2F%m((IZj@Ii9h)Agd_{$CV>CRn5$WSB+n?@ABx#6XiVHwelforVMnw z+F@IE9GL2*#mRch}yPn7YCdCu(m4ae}NK2(pq7TcE8 zTCf$2UP3f#e;DDL0T95SjogF+Id`>FYDpvF2K(3`2{H(cG>(c5i{Rn)!UH3p%EH0= zvDa4ko>#{02?J;-LN0~v3t(iyn!7$v28LJGJKD~uJ$F>sBd{$Y=5q(%evVGFEK2}w z#^1`Vj)sO;=HI{6xJV`=njy+1_bKQtY1JCav@R_CDzjoKrQbi$I(J!Mc9Gku-?e;; zBmFJ~^+dufLbpkavqwErEg!*>EbeWFOHc<1-%{MkuW#bARJP8ST0=VGG!xvd3w##& zNddIY&g!NerEagz!z?z(1DtOQ?;k$2J>=8}nnQn!rL@1WT6y7oBSEM*#%cSC*-(th z|93p3#COMnNX(*JyoDj3BTh~V$#?UO_qF*+J)2A9r;q4B4NaIaWw!jbPhpHq3eBtx zYu^RS1A=V&tC|d+aMG$mGoR6wv0_Cu*4!QtZJ$3#`Cyka8NRzP{^!)c%i);vvPxh{ zH)u2~!FO6~h=WCNusW6NePsLhlkZeN#R;h+1%=`>G7UKB%_HZ-Dxzg0+nYwk*2)N{ z22`HeJ(YB?5@jpB98Xq{PDaU=AvdNF_uZ{qH{(doh-CxMfUZypwLN8%F+wg^r$Q~~ zo^vh&Qe{so-pO&Yu_*uQ}YviX;Y_rNmKy+QKx#NUG^x{ z9WW3P7Xmb(lZ_n@TJIk?^L#~4e$pdLU*GhYx@JZ?;}=qXy#r88o?j45sBm}Dcqz8@ z3l+YJ&$NUvH%s3a{pp%GvruTuel_CadDZBBLj`bnzEi#@zSpml_LRqqIk zk>YObVf2U7pVN&z(Q@_Qo5?QCy7Z|8zc)60l*U4xBXtgt>eB7Beq~!*G}iwsl<;sF zxcgh9*U2Bx-!=jI@1zJ-WrQr{3uWX9O?_>J^l}fGLEp3MwER4dHbO;t5ZDQZC64@A zUR@5f*u8U@dzFWH%qh!Tet>Afgi9%O!nKlM?);B9q0)$^!ja z3Ex`fb>1xj-$WpDbCX4VvmG$g?|5x{-V*Vm!^CQ;TXuYt=a#X)xe!uTg+^>SS`m~n z5~~;c4J1LaXG+$8#m<{-*JzbQl+dKkm&@NH>?ZwS<}zY_u;Nv81KK}tvpoLPJUV+H zTc%lrP~nvF9SrQKal<ziy z1(YvBBoO7SW<;VU2~aqoN5M)DYoKnI+lzxU5>=y<{9(Jk7ET8?-pyjazWO?jQsiP zjhfL>_26xw7M@Y#ePQbnX+Hpm^K1**n;GX`&UCx zw_?-ITR^=E6%mlpkJCXWoZ}PysOf+Ts;e_MwYegh?k{(pY6=G;isWI;`C!~-X>pe@ zM_Zc1d!2>k_pcH|(#fQvj*XMIg7H+S>F=0>6_+CBOk$SNer+KqkF)SG=wz_YOc#jR z$)_!k2EC}VNe)hEc=G?QIG>!@LczdP>Kw!($V{r~rxo60=Xj*9M6>p~GpS2MTMN&} z;;Y53NWR5r{)i>v^<%#Ngt5c(0$C8bU?`Jml*Z2vMC8z1p3&ZT zyJJV{amoSI@11Ugu|XN2QHzU8n!?8P`?cw-L+NY*#;49`qlWKm-GelF^~y!<>MVxK z=Lub3wfsW5dj9-^l#>!&p=bF4CsyqT6fvD^~(3IWB> z`3^C`lGuIYEca&a`P3YU=rCKl9a%&DMyrY6NdD%uau>XM$n{f#zbs)R@@hxJ#iQrx zh**?6!pobLLo^~KRwDmvo{w+AZ+4@-`xn!{Enc4GyeL)Qa(;8~k?2LYQHWg7@8$(W zTzHteMAMh|N3|J&(J{4vg~?2xNSLLF_qwteYTV0I&r(y+Kx+)c=v+HE_d{FD6+!)m zGf-9~7<2Stzx>CbN`rU|!3L^ialo=cJMWZHg^v2{rauSwTFm>Z&wDi6@$F!t)%qt2 zb%&LrOvCTxo}b>wH+(f@=fyH3WldP@k`(6p{;kv{HOa(^ul!pcMoEV?b%95sx?igi znJ7GPpw?hnJf{<^iJE8kO$-&xeZxpNEupvXnMhb$5P(z|Mgr{qj0#F3u=-UjB-`z+SQg-`gZp`ap1xX|pekwQ} zvj{O2?4&%6I|h{a7dmG*F8v|qKM4ZBQB{?1atNywC-Ch=Mj{?2zxDGRWSQqm$fBSF z;FJ8p0VV^acgcyYYbbWO&RhP>5n(z{FZluhA}|AZU|kXqAs;P?8UOL0Enhj%k6QB= zzTf&l=qFkxo&ITRCT{~MxT7;V#lO=a2d7CTu5M^vY?7DNY!C0YR z`*_KB{u{my*5TLteLSY}zK~`nO=_M!SYgaxGGDDttFPYc5=~+zyCJQGd7{~C0j8#n zo#EptijasDOhcFu`i{ukH65vnN+SK*fxK^(D4Un3z40x%pS8h4NvmqRXbv;WFsq=IKQ&nam3y8mLo+ zMH(tMRO3x8_mAE*)LT&+RClU3d2S%dt-)%X#QQFPS@+s0><$E>;E>UbZZoTHm*d90 zr&yP0i-0#P({E?iZ%2W3s;l(?vdmwdNR%6V{Zaqs9t%ZI`TDI4MkLeIs-x`tMnDb~ z5)e=3{#iei4Vq0hUtoyv21N0>dp^0UhNLmXNa)4qB{pJ~YzJPzGR<2CP^}L_8r`-|*5* zKT<(tK!=gP+rhh#+V8CTBTW>`APK09{+>7P{_l2fLx!J{fQ-C0LdArgP0}X{QSr|N zb+lMgKqeYm0D+-?m1^tTp}SeTRvV6!ejRFF4@+u^AD&?>IU@|G^&mrelTO;)Fo{rKnjEt6;tldfXcY=RC8snp&V6nOZbR0I-`B2I*mw)z^3YUAL2NF+G<(gnLvBPue& zvaMR>Em<~rO!!cD1lCtwZ`)};{ec(Vs z&)pH=l90~FEto1s=WQEMCxFS ziI9K2(RxUNi73H)Sc<`9E z!iXW#avNw)(c}a4O;A+m`v?u9dd7Z*vhD2bWTHdTq+gDGp2MwX0aVpKaD1*3b>_Qo zrTg_w(wD5>#!aVm{b<&j;szlIXaV>gcy!ONnDk7&Y;)JBE7|zK82>Z6f~6C6RA%An z>qPi7k!WS8?VrX*AVnB#0Yn)Nmc<>Y38s}mQmbhd-3DG(iJJy_!gLT4^|oh~M4k_<9V;ZD1q-k|^00 z{Ycl3KaAqich4Ms*V!I_b>p!L9|8hxtlCNufrXw5Mn&cK(^+rmYUC#-VpPNz*|;aj zest2Lg_^|`;!ppcx7~YXAhlRwZnQ%tFv9nPf}ZxnMs`jhul1-PRS)0I?URsmlh(Hy zAM$&*Rj!3^3%fTQx~zXs7SJg*mcbuyas47Wr2dK~pq)}+7G!{iT?)okHeqJi4_HDE zcu=zo3}LTj&`X=ArgGgh{Zw!0p8 zZ7mhi7Sh|=YTYHjclxce%f-Kp!u?nld->hZV*StUx&BH2uRkguhqn%?)Zoq^rtshuF*8d0@)kW-i zRH&zv521UxT}8b)P6AIVvu(L<6>brLG*cIA1s%r8tE=yI`IMgxbZZ#fV#@Ov;5Qo-BQ;n3 zD>5R`bg1Z6$`-uWy>0StQO(%hC7P=z_m@hg?D3ZFb!md})%lTS2SA-%(=X%tPwyTy z+FSUNzn+-}Yfj5IOD-LEy0ooEql2N&a=}_~2E;X;S2e^B&O5BmN|($H zq%||%R*q1=-GHrkJQk{5Y$ktTwcYpWcyM^y7W4qdD(5}Ln$pVkRVfq@NPr`BU!__) z2l(nINc(;nl$rZk^hdD$W}qfz8_1uOa$?W*Ym}b9N|VR_O60$HnPPkoOlrHrsOKlFq*0?fgTE0l}b zgZDB!Yb5SR(2;vGF{}Gv*zwX?8<`{rE1OjR=!CANJ44l#8^g1Bar5DEJP6WFOz5(; z_Ii7*uS6L2E@Zy+CH>G`vP=qv43(gv^9%Q1;4DrqE5C%?*4tO4LPzd_YV=!1H6yfg zvj3SaK9>3Z@3rw$V*yUO)3rlwFfb5L*o+h7o05?zWHf4BzU6^(&>ontWTIg0% zuH`dYovMcQNKQm#VCq(ajJ{PrSy2(@npo#IV3RGpR8hbcC$@`hR$&eJ_cH=Goq_t2 z+~mV%q8tkasb-k&@ZgzpG2Fq0jdVK(`?FaPOaLM>_*Ek675(qe=D}!)7UYiJiel_P zo)uVQc@7qP2pkp!>_k~d6vTtWcMVw$4=_=P^J6Z^RqZxvO{ZHD5S4)LtxAoQ%>?-s zdXbSYqxf%X4i(G6hiLXCVxo6XdsA%x~inKyCOhy=e}rV%`NeUsS26d2X-aDq%)+SIvSz z^*erE?%`hPP>+=tCJgW1SObnJn3Ln%3>#hrt_|+`NOTJj10;Qj@Z!^@j4QePnR2566OV{o zn;*2D+}})52c<9W2~R_n+z~7}#SpUl>7pCD$P`540 zU0^C8Q*gnB3s|L)TEwXKzTjiy2NA3N0NXy37s`9<{f^+oK9muP*E^x_2Ps{soc5-L z%t|CtaAlocHg}I70TEnx`^y|bR-^Ih-5lnX5wuglMyx6LDB${B^PVSFY`BSfJXUtv zC-@x>cLGS$ujXSG77F#lboTSrzifTUZ^EgR)*SQ$=5o0M^#WmODuYd5dIi(SW%McZY8njD0&2$s=dW_0^upiaC zar=Hk_Sj%~LBnjO+;kvIMjj5Cp)@Kc0GjhdPu+Eoe(yL9oZl|=tnh8b44qhe-Z8lX zcoxT-Gho(r4|j__xOsgQw92Z20ZF#zb1QsIX76i-d#TbK z(ku%L5z(da`D)*b`n=dp`7Z4s;xa zTU%yGb^tZyGf7}!D8MMHpP&k=a2lC)$i3I}Xon6GGpK(Vc;9K0Oq zSKGHP$SxTHi?O#DjmPj>2B6eRuYz*A==f(rJ36mu1yd2DnnI}OD%PxYow+`<^Tfdr zkoNMIkH9e^3`&u5UaqjZ$ovc43-ri$Dlq5?{h*cXRrG;nyJ(*~uS1seUaXM4%Fr`?XaFr;{wPu*^wm(FtFN6_^JgrH#F z;m=uba!HGZO+lyrsob%zy{R+rffTGJwcQw2j^P=r>(r{q70csAU(L`!A(_2pkJ)}9ct|I z)B1G-jcAOG^B0q;YsKv*S=Er3abBD0iS3vm3YqRWkMe-8*ys#$Xez6q5}(ku15q^* z?@9w`MSGuh2!JZ&Tgv4sbfk7d(N{Ms=h|TZ;V7RfvJ=ZO!tgg#4bw7B@A`IgZ>!`( zay@%}cOZP)^Ld=C>DFiU=%T~sqkMx|llPY~q2=rwVa2lh{lJH&TLs&~cH-fOnhz}X zxO5>k_Twtt=(b%G*1^o-dXT4Co2_mBF36fil4g8-YI9dOv)IAH$-FjW^@5bwQYE?0 z0h=(M%ZF8LH`KM7AI%GmQj^?XLw3O!rO`}irCDVQZPVB*?CWdEYAs9s!=6fp)-I5M zWfbc+!(T5w1$yW?(7k#)bhkgWh-P4Vno}WPu=Z>kbgiDm{MP>2Tx)-_fF0KQ#3Mv% zd0F^?=c2TR%-NKkP}gEznS@2WOe8$L<2Z_Bbybqr?vYmt9&U^^NN=YkrSq%)@pxTg zQ9^h)P$r>)^e`*bIPY4veb}Vi;F`5W&Z5FrojJ6U0yBl2|SsvKhEhef{5DKkS-RPl=tK2jw!| zsJ8d(ruHFriF}X?$F)q5+(pts>OyqV(|ex7zPyP865p%gAOU6JY+xEI7}i|Yjs!7k z$rpubc#lNl6Dz`&-Ky;8a&AN25<2vA$cF)_k}I+KIBveqY$IL(u%*k!tc$ofwn>(u zZCvNOnW^u7=Pqe#@7{W{sBoW5A7TCx8r{EZr(D&J?oE6-Vf-__8xAXxQNecmK3)I} z7k`t>2xYC^yVXUm z=KdZAYrV$#05(y?q6Gv-`m_fVFb6u#h4@n{A*l0N3G`cgZ8i?Y`p@x?C!o55USUPj zT*z*=m&$ae5C#3CK~AGSTU2iml50zlYek&HguXoN1he~zU+YYIa#y4wIi@P4#zZD# znL_|MMaPXanqlxk$wha1WC=-BtyxuGzUwWhuo4ba=Qu5}f6^d28*OT8|Gj8%Zy}iw z${pOxTn5b0z+4bMsrmciBZ{&CNL1mgR z59Ytz6L}bv%{7Ar7I@Y90FFp#)54S=_&1lnDzdYX+65hB3W4t0sX)K`NUwnYVX#3W zd%hja!uLU9ZS@}?>tQNvM@S9CO+#TiQVd;h`Kcpg9;qsuo_E zIXbLpj;ddC-8=q0ci3lf+ol$~!EqV>ay$&<*@0l>UCv^#$C0ZS;0l#XdP~~Bfy0x= zT0A`|Igm}lCW39qWpIw+6A<~`T4p=UO$n#WwQvwYh-#;gTOt^)jjDrJR7QI3PXR?` z{mm(Zl@!L*0X2mHbm`UHl;0wfpV=4gF>~;+S0FGIh}xKp&2}|E1|}4jqPbdCBh{*6 z5%c)WibG-4u|c8R&~sOPE`soA_VR}y)_=gL6n$sfcfM{ezTX)PTg!ck?Y;Jn;*zYb9rAG;id9M6Aj3vW%eemB_~29EO+$jb);17klZP-CCeX;;+iuVj zL&Vt_gkz2Go-;Y!A86GcWUi5C9%}GI;7VfhX6>Ly&9Hb}Z*WhFI2!yg%FU$0ij6-r zXvJ4*!qm+q&p-f9!(#d^?HTq;TbU~eaAcvyJpPX>`i*kNL&S4(7>Iq5?IxNiLG7^K znFmmz3n)r;K?J3@%m!*kO+@g2ZzHNwvHrQ~mJtkVPvw03Nw?ln7i-N=bTmB=>hQ-( z@9Z;{vLfi@c?{I=xutXE4IausnUSV%+G@KzUY>St06 za{9oBhUPz>yU^Lic6GhEIU+bHr>cqnl$1HOWeIxu@hOeYx(ArlUrL()oxd6&HbUC%*9B0R>EA zHnW>ByI{en%$D>NEkoMQX?!#j3?Ht+$88=|0L;qktN_o}WpiW3wS{i!e2XPgB79_= z3jD`96y{oKhdYlcpJfd8re&_^t-;Kt{!jyutZi#1ns?AKG!}#@P4Mal$!(q~Js#Ix zxD}z%8nztzOLO#Vw3kDeX)obg)c!ZxKpak8=y8zkD9z=9dk%U)$C*FiHFeqbHT7L# zElm^s50KUa#Va9;Gr6@R>I@*5otDz~&F{_A{1Q>(#`E0%8}f+F<{?vf5HOCMBW4Sb zUa=(x)JZd0sVr`BGZ1<;5LyqAsQrS0+t^GIp{lKBXU%;K{NQ0n4FB23LzYK zB6{xrBa)H?cZH{&>Ht3cpBp`AJYpinEeyMO1|Qg6qjQ0Od4RN~v=%$m(-!6mTArq> zjf^mJBS1KSx(O2hJAd=D?V!SZ5hu-`_DZF8vt_V0WM z3|N_(!Hqh%+GIRg+O`l;}^o7X`kChud+&;-k ze{f0|IIj#WVn6bqxB9zm5h#sQ#$7e!q z^pqRe&{Ckt&S{MC&xGH9KGvH*NO+hPppAW!UO^}feu+4)W$<<>7~8^)8X*$P#8w?m zoBd~a{nR_;|6=6lL`@ZC(bOL1;Ttw{Z=A^>fejuUv1h9Ue$xk9b+@1u&~<@b(2qvh z3h*b7e8tz8z#z@%AN_NwYEK1l9U0Qp<7>};#6y_n;qEL2Yj#kUgZp0Mw<-vpmXBYn z!s=mQKGS}l-w!nc=X^$W_%B+1i(JqVx)v!hnNw}jNFLk{D~68QLK(c3@WTKgFK;-y zk^;}vr@ghM;2Tlv&#Ug`V2gX49iqPktpA=b z1SLU45?gil&qU!nSUxxL8b(#VRV)mRHJEA!YGKV_;*212lf>vg(S-zdq`!0*V3e

88y_4ML<{wte~vtRn}vrG^Bag^2fgwoJ7k_BiGyLeqcZuW?pTzvEU1% zpx%*&@E^EJwmzXa>xmOl&*vX@TM?dakonBVelrGRHk#KwnJ&q-#dF~@tFm@h)`HFE_}fh z2DMY;dt;}40Ij0TZWn!graeCImqHnik0*yL?Ar1rn0 z*xxDWKXlCbiqf7D&&=^ z{)TyZTqrU2=%iL8yQ>8mGNq)lLAp=60# zcjd@yAb|<2yq`!esR`A50T4TzkgSqq{l2ukd->iqhO~mYglCsfJcPKx(KM7xcQcp= zA6dKl#iZ2ikh`kdpvN6b8roG@~3sy7vEiSaAeH3vp z8^tT}eQz}3!%*@Kn>fil542dqOd@ufE|;oT173+iIaoB6hKpz*3pE`dpR8EMg$lzM zCy3c-0uEKRA=s2Wu&E@i_u=^~MzKI{lXJMk?uLzUOv?s^Qq)3;%SE|5-SdDVl$d68=4F*z z92ZLhavGFKT`5qk!*55CgM>yGYU*Ct4}RV&7p+9bG{|w$_OjR#@OCBwrNtgLA^IB! z&}v&{(@;C@vXMjsB&}Z?HUv@ao2RNKHm3jji&$gSEnHlZq6E4k`%FBsyU_ZtqRa>i z158DmvvuqU*|qu3<79KPE`AgtB_G6vRr<|nhzwscrOb#=CIxjYg48Z z3B`9vEIiv86UXMI;+OZ=t=rzzrjs71zqdMb8LnM@i{k9{z6`!G60HLACki*$CLNa7 zP7GeUA$AFVAP?d%zQ(SB5$kb)MTTc`#Ljvh6s zbpm#AJedTfyl&!n(*u%!ViytW;_+nG{6!9+N6LH`T*L~>EAHe31uc8||9ZmU=`PB| zQUcV@hw>5;hBO5{t;pbP99i>n&xwmEYECOdTqC5BlQ_?#)U|1glW$oma3O?s6rRzW zRC$9?h8MNB z`Jnez_p;Az{xv~VqTwgO6O?~wdc@>F%aW#?G}D#l&Afc&}>7T#E1vXz2C>m0hy-l zIN6f!i&$xK)E~wOeA8a7c4qXndpnv+Li)UC?`hM^R2y8bJS-(N^tKg;2bsDl&l9y% zsjG<6FfF{>_w$7}so#G{4|tPwN|g&bpPo5iB+BHvedWZ*w+vU0Civ4Ql_?XLj^&ed zrmEuJ=(L{?t#YcO_w?6jD*QaEFs@%De0N2n{Od&nPM^=v>f3knOCv;ifa=jFmOZ2g zy=GGdf0hj-X$+2F44s|K5QxCj0g}JLTC90TAGAyuf%gZ{TGc$#@bs@ffU3&vDE>q3 z3xoMfNV<@7S!p)8n^>#0w`J=PzFEC;tH|pm=6G9W?rEz(_FVbCDYWkRWc1a`Xer*+ zJ3f9P30M%l-)br?M^9yAo)0M}c2p{(n#>`+rDC#Ji6RtrrqGUd(E$*r%_sw}TM+Lx z%!#lfGEKE4I?&;ifAKv0<=;yZc49)J*q+rNjg4uEOamr(Q*v(S!opr!Z%)Do#c+*1 z+W_;Kqd6$z+4%kPQP6jep@%YMlJLyBqM7#Jv zm6?uqSUWWQ(TsKzGCRA)>wpG=#aU28OYeo|zqH`LF`OtGPKGySB|;_&8Sdghfn1vyyAZiiA>b15Q8z`JYY_Y9R50-e1aAFxF_Tuw%OJ9zI3~28&ar z&XV*^!(!K)()pu_^nQfkPm%3;U5#0ob}Nc*LCct;z%W1b{}bSn0(uF`-2Pzm0fLes z%SXxvQ@8?@5rCPWaRc2lv{K`Xf@VpPvK~P3>f0%&EPz~qpH%05F$ z!BFX_-kjnehpYBO<9}m9!#h-IwuiDR_NjgI1Q@cs0%{-xQj&M#adr})8Y00`>$Y1$f3FX@ z{Tl4PBP^*i@)h?LC)UgJl~**K8$Znp_wx57HdXC@Cm{b#YF1umi;0#%&ds0RNuu5*iZqa(_?~yulB77e$Qvq%yLk8kWQnu+p>LZ$Fhm?Ao zK0@0&4BM|K+OK{747wf6CvH}Z{BjRUj+R$v7M4=VPOw&w@Ups^J^8)tu6Yo@_Mz}8bLSs+x2Vz#lByig1Lfja7B+FE{8iUNn%PZJ3sV`70`PIZIxc| z-4!1l@q$mlS&<&hBY{V)k?! z2`s-bY@z{6AR}>jUCsYU6GlETTdstt`PP3Jc;n?}9^{n-pM{eu`_llkDC9D{p+qx_ zzPob%Ay+?LbOT99s+f_D{_NYPzk#ZIU#_|ROf=(Mv7F<2eTw$mtMC`Y!I2hoPA|%} zV%r^(&?@4`-=|rdtf;&9rCu*PC`%8fz3^eW7!GNP7|TG>uSWMl+ck90-bWJnJo(Z0 z59!KYy(%KtXis-_&KoJePm97>J@Dn`55Ne9tPRlQcls}^8Ww3m|J4FkkQ3*L7h3TD z?qV6U+*MWY_!-O~KLnP*JpfY`yT?T$oks9KRDESwTul=t?yiBsT?4`0Ex5Y`f)fUJ z32s3X+}+(7EVw&^O9<{RLBdY*z1e4%AN;wur@QO6)j6lDNT8#+&9@8djhY?Hi9!p2 zr4Vtw|4JOmyp7Rle^;NqNy=)RufwvOU+70xve_;Qg#wHDS?l4O@*BbztvO3K;@b@l zrQrv^&mRwmHL%L*-J_m>lVLZ626o{&eEF3;{`wgRr{Fo#7`a=w4Wf1u}G!J7w4#tgOjvh*2j;Bm?w@Pz1|Z^i*2iC7lW!jd#VY3LU#i zfGJu=5xtUyu$O~%=DQ<{<%xDF<#6dUZ!@nkkf&a@^AwKNK?zOAy{6u~HZ|2$Fg=1t z27@mhD|P0`ofpDI;=8ko{+yFu%-Z%jc!E~qk1Gk0EB5X*8j+Ljqa9lHvpN=o?zRQl z5=k_}02A_9?;;SXMe^AbK?lm<%Tzux^u2eRmf?m}^`dmvcRpK@5?HJ3Bn_9%BrQZm zKL@Ca8~E(^J-7J&S8o~}eAp@#OftYmqG}6jyQFO*FLLCa*LI88lynJMAe|<=!VZ(i zu2H$~vg+Yt9=9TDCTjE?A|y-L|6_FV&=T46>`209w_HS{+->T(Y3uUC`hxnRY9QB7 z<5|@t>zk181|hRsmjk7fQk5&@2m!7JSV{}gs3GH+Xu^IW(_?Ql_-;;H6|PoM(+~Y( zwl$1=H0HrWgMR(oWS|$xr~q@CRDT9)(GXlpDRcYLzjC{L`9AWJ44^?42Iv*PJqsRj z9G-=dcoT%qk?*wUP1iM5VVNv@T&P7T2^V%d+&~8Ts=A4F`%rQM9*G=??yqf!(qmfAxcQV5STmD;uErl% z%Na3^W=)r^cUsaj?kYrf_YJ2@RTE2UAC|ewO;TU34-8@_uLmAi{k)@dZhLE2QgMVJ zoU<~|cugYcnaGdd7v!VE6k)~DI)xau5Sc~c1D1JN?{x1|xja3KnG&*H0~}WT*tiP| zlTaaLnBxXI8s242l~ttaxv{IbNkix)$OauRA+wWgc2*}>^?Z=yOk?N2g%Q|@^STcDH+Ey<0i6J z$>iO~NIVZ%?=9lkry-4$0~D}bKjLk&DRB)kIp%Xyi`n`|IivC`@b5_C%d|tgCWBpT zo_?Je#D&DZ5Thd43)q{=ERp4ADUVJqn6AjyMd^25KjbryggnTx#&7F!t?7h6i%ior zx6BjG{#sI2p;_Qeq|<^b$9A~Q=~VgTP1{qd=wd!oQ40Kf+EPEL4I_;0tVE!^+(A>z zV~OaYoB_dRiPAE-NnVu$#r)^de~b{VrPv~aN~H*-_pAjgRudC>SLvK5YTddoAzMwE zjnaI|&F`g$+%B&Qe*$xE?p#cUskA5BK^;--ZZYobNp&($<%=U^9Js(R)q~PWx)q#x zQip~T7HiHXC?c-9AE66<$(;qB=&lASKXJtRWmK)uZk??g;5Od%5m;{^+V;aiB;Vn| zXX^c`otm2aNUDi7XQvg5eEFM9vaGU^EGozDvA^rzT2QGH2oO`QGyQNjs#iYQt`I#E zva+Q&lR@925Y54iN*Toi^E0seX&L@JIf|5BDN@wT47OFhv)(wv-KQ7Z^S~u!zzsb@ zz=5IOD``@65Vl77dzuuP0Yfidk6C%=OQOI$oOTSAgeT#2(85`;324^ zFTEGmDPQ|=>lYPm)Q;0l=^jJg zaah!g9EAhp+f#&z>V#2b8Ql4*{LVMzq|vRV6{DGas0C~|TzM-%-^Qa^oqU=%4! znN_0lV&QY5Ifk=f!9DWBxt~7qmkn3M4sZC2SiwaKflNaV0lf;i6_or!^5b*|Mz&hv z2;!t>3p-CGOWv09>}$DX;^lx33n(=p@lGkiB$!@{4vhO{5`yFjDZ9C*IJvYb#{GnY#10VteF)={JmrD+xL4BRI zs1jw{I{td2HO0!`h(ZPN6lV;REQ}Q%aSUgeTLFiTzd?A~nkwI@0a~wkZdKKWiEfA2 z94fk#*ik_r+B=&t1fR7@`tQBm+`E^wG{U;m_SOzNv|u_S84ix~ks_WcsIxaIe$frb z@vZYSXkDtz?A3yfNE$C0NZHaBKi^8ZcjF^gL6Y6MoF~A43ui%jpY|s{83gu4jCP4) zjX?P>!)5~Rr|u=K4ZnQ zq*@FbYSPoYU*LMj%Yp4h26VTxQh84W!zVu9W!hMt^xg30yiO8i1}XUFmZHKB$N87Yr2s!1`b6%wQ)5$hZ}%Y2=H__UTK_Dz{d0#fhGe=;i9 zk}=Ou^Q}4HZ)FUhf;36lkMbVe7&YZ`Z+OA>Lqg2S6hdXvp%vQ!3Kl5+q24vyT#k%SqE3w@T%ls;L01jF-W+&5nH73+kbDs8c=4H&jNk9Iux&{a ziOqg;&9P5f(I{>`mKi4BrZQKO^Xv>v(i_k zqpdD8jUzmsmJe!g(fHJB;=A83vOZyaiIB7IpbdrSW>F>RHF@2)A22K)P}#4pT{S1f z(kO`|sPtYBfB&oKzy>o?(1&m_(E7{pbzl1-+w%7)^B51;hknLBokQ*+^lTn448KN8 zEueDE;s(

vqz3!hGO!y0PWdOgcx@*@l3ZM5jBk86oDA7KW=#`K$P*+D#oQ^keax z9+6>2goG5|5=vUp;TfO?orebCoNKQW8A~4x;~oQXt_Vr8usZVCe-@Ifx~r^3{uBKp z%26QajSaM$WrvSdBYBxJb=xa`34V%!^fR4v_uHr`1u*ZE{uYlMygdus+e&Ov?|S@w z>G#c4N0vVW{L3T>7)oj_diS*5JG%l!y%MLpQM-cu_W-J6D;evN?;@Q$#8V+oJ;NU7 zML9?QEhhZ2cNoQ1C`&IQjV>GK9w_XWoL{qDIg^WGIUGD9B--Mjze~daIRt&idZ%HSlWpvg83-n4j5VJ5n9ODOV_oq$oTyYd zCI`NEUXcM$ZT}?p;2&JZU5&uw80U2MDV4*i8f9Of)3*kBJs*;-ye)RZfCPfM>Mfj{ z14*)!0i^5gMLW-uEidjqm(-EG$CxJ?2~V%@Bh#B3)+p+`nr@j|72xyuG^wn=TP zE3=URdC>vmM$Z*x?3PD0Qh|(N{9!82EKfEg-y3J*wZ<^B;Sp_Q z^JAS+8Etvk4$<`iCuvFObs)<3pV+aR3B=gdq>bj$=?4%05mj;t7FW4@RjXXD9DN3- zz&W2@F7=#eMH9>_<7r9dL}goF@7@O`LR{~!;0FkWgo880IPj4``NYvOTfGfJD&Zqm zrrSJpB`K%R^ZRtH47ceE&&yceEE+S7IW)a2oGF-zs|H#HzK2(?ywDmA(DX%%7Kr88NXKzp*3y_zj_X*pkZB6?_sdW159T8bkC)W92H7-sybK?*6nh8hzy<`YDs^WA)v0jtvc( zFwq<*GEe7(fwGGa!`|%UrT!GX!(@Q16EIH_zddX;oMX}k+#$uo4QTN`cQ1G(sw$v9Aw-NAoRG(NU@`4+o7G<(KYgh0gTZxA1cqabK=V+?ewasJiS5%yg{V-Ju$-C| z$q~%lf?350@e85U%t-dA5d?xL9_S?E^Th*@a`SKyRG`O7BnKugsN1wHw94uT+90_8 z15!SHLgCXm8FINv*lbP$EicYTSCKW4VPFMDh3_8NEq`Po8St zJ=LHzU2cn^z?Ek6VU)y|P|Ic0YZd5)uHXuwqd6q9U;|PiMB)%w0iuNDJf98^gkX#R zc>Ol5Hz^!t_?2lJGFtEFf22cWM8vD(N~lmt_sLsKW@!`r21QJ3s9^=6aCjfRNdS<= z{xB?4JY1Er_w9dfjI6K>s&@LrZQys{xzVx0uL-IOG*c24HybfG`{r_{JEOG;7!bnP zLPF2U9q0!W2lSYYc-ZhSN`cdG6@UHQ z|KWMg$Brx-COF+6;HvO)`B-RZG7^Y8*zczqrwcxYEPPupVI!U-rQQQj%27u-%TUV= zC7$*yCzJ|L$>osD8io#^eM{jhDjSN0=Tmk9zoQOt&Dh}IS}Shb*h#fWvx3Awk_d5D zhMpe4z@597Qi|+FSb>6C2nv3;9AD;0rkRQA|4EJMsj|(qnIIh`zUma<;nr7X;iv$2 zgpdpWKbl)^CRE-H`r9mz@@&J$>G!+{pOgT(K17Py?Zwwp>)(D(KXRvhH9VzDjyZuF zo%3;SmCtph$>me>U3RvciZSq!fC?uTS5eRLYd5_6BM%suOs$_U*^DYXUd z0g%*ntvNyzGsvcajEV4wWqSn!7$E#p&#GaoL)5QrdGGPRvOgkBi}NaCOD!lV@NppG zWrMat?$(^%Tg3hK+J5%$js@EjzRa#Q+b{XM@P1ld8LR$ZOlk&4nQ;}nG_v;&@P+J@ z^%DD^REWGFq1mn!=G;lU(_XudGV`r5MczZtr-l!hSKIjPB-wc=x7WYjo!1_;<6HlR<&;Li0A=k=Y5LFI{TBBH=U`|D6BCTXu zPC~4x->VU?AU)Ef;b~?Va+H+(dGqb#v}tO5h{k$6$^I^x1%WyQ4EotXWT5Njoz9Sa<$)q{2tF+Z(V=8JQaLx?wD2rRyo8w?iww+#Fb>gXe~ zhSmLs66yRgFH0SgcQtME?XD1&0VO|;wt5{ojIVx4WE8&@GIxVr>XT{;)`47O{C`OZypTX1 zO`41k(3NA6pOV-Cxef<7$VoZ_>byI?WdN)o(4Q-k1Ymb9-c~T}KL+}Ly@j?nrUXz0 zj-wFpWMGU~kxJ7W&tRJRy}wBg9Chv`4oeMPNmhj4t}P01lXdnRS>87r-Fg$Dmv)9T zSExqB$_Er*P$u87_ZC=-{zD@?9d)pX^^PS-*SH@;xCK17L<0}kqXZ<)w^*~ACxX7i z`MCe?7;V%(r3S2{z#3Kwu`r`S!nCF-zz3YaQUw~VPji+J`?>}1W8(;sfzciDyj6J< z;kW`Qe#z+B-jV*cBwkZwFq3b6B8lX|#=X4RU_rsaiO(-F_#Y-Hg=Lkf8cDA;eFe7} z9%^+AttqEwkT>BjxtzS@{#{)_>_iHOB+R=vG4*At1q2PrJw}v>*aqJ+%IaGYe$#Yp zw!QrU9F{vFgEG5B1GCSxgzER?gu6V{lsB-Vddlr9 z(kCR|q~iEkvb3(ggjZV}l}8GM+>jQ2Uhwj{9o(9>H37oqhs9bzwE_)!zg;adbrSQ7OiT8 zsEPO#`b9&K4K!`MiZ*Yma|0{eBenaeZ$HbqoyiO6SbZPd#rvtx224c_Z7XG@y|lLCzz=)LAfI&+l0;_s z;ACN^-b;6Puc!9z9xu+1eulohh36jGg9B@;H)z+BXP;gN`n4RKC$0UYJbmJ7J+3HH zB{n~ZZ;T`TOoPbM^ov`_xZwY+4Kz89TFCZ&Hm!LMOP@$RM5P)10CmQJTF1)HDK46<$N%6S?`!)qjVQ%?{=C99r*WA`xpvDXU8q7xMD!4iD$7GIR zbNB?nnGA04B$E|uh!u(<{DnTN)z>7P<)@7=j~jnT5eA>o{d|P{$+k8)f%@SH-L$)b zavHztMpRyNZ>?FRSBZwwPTH~N`^wPE>%O?@TWL}Z#m9b|NZiI_)DM+zF=;bw#}z@` z4YZM8xXMf_Hd@a&YV!FFg|t%bga!Fh9tT z^LMDp5@G(n>~)HH;Vjc~kK{uSa1NW%wC3gf-|`Tc{{{Pdstp!puw74Ho|O`|6j@SR zdB{oftCn@ES}BB%h-!zf1mz_ae32Kgy>qcOEr@^kDTp~><z^ zoHZRQAaeSJKdmlUmdGw(p>KFY3w4e9dR?%`khAfOJ2eWb+?DPu4|$LY^fD}-^`nGe z8#wk!j(G1^<2!HUoc%-m6|0ux!UV;u=Xk!}rg8QsLi4=)f!!_JxVix%Ihs!!3ials{!7;4(Ijt2n2(T9 zTyyr$LL!g0&On%Jg?G)T5WNXxt^9O^fHaS;hm{8l33Xx2k3s@3_NZUa;xHx>TAjT# zVpzmrOs2{f>jfk?pibRjZFF*bcxOTaJj? z5S`hx8NXV4IgZ4c>1}r^HH+pFwM`$7s0vmZY8;8(V$_9tRIP|GYQHOWA~|#y)T+@} z;T}Tb*ktk>na^OY4%6|8klXSmtZOLggb$*&Pj(k|)mVF54~t52?5FMB6x??g0(bi5Oz!5j~hXhrcl zhiPT|l%cW=*JlzuJnB6=m(*qmUMGd-Oi=s+LkeJN1;YW_bD_AMil>wAZQrWkG(_7WR;Y?>&wMe1SV5!o5?Lc3XxKkRgbUvpL->j*5 zD(q>`WJ;1O{`}CG+&XRKx=Z5;-g)@2tydLsG7*os{=Qji*#<42+w-NLy2HHkV@{E4 z+-+xXrLybTxL~;g2orgz5gV#C&arBuf}TzjA!-2P%L00p6G0N-Oe*}_#T8s{7UTh& zUNqLNEruQ+p&#Lr)9a`Y2$;AKh}cKg>5VDO0p8Lwe&cFadF!dctECK(d)UlVy@F$~ z;)`9e2PwbKdZtk6FLSNE12pO6cc{D~-rf==R`z=F!$I9c?_DTDhf+gfnHSObow`(A5SNB#Z0_?;d*3^4#hD>9I)OwSII?4b6 zkU%P8qMB&%w}JM))(J=tS!IOT=Z~XvkaWbe=!b00%JV*CB8lNGP8%?AA=4c9fvtUR zv}pEWIk|iMKTZo}+@}jO8T;-bX}JJ!qu0-Vs)dmr4Ii96(>zD^K6+2c z4HLO;?of;hmjeRcGQkJcmo_|&&(R%cPUFjeLcI>H*WCL>98$%Zmyp~wYI#SEuCxjf}i1N zp|%BwHfT(y5Ob_#N^u53!dv=w?SxE_e!(!|QlQ=5BWh+v^YdRJdIThGLNPE2y#;I8 zEo;hLE`bD__h2xPV}add^t*-x9~<@0WEdDXSfNrtJ%qY|&{hbmEzjk!GQxP>Z;LW^ zYqEbAr}OrBPL@T$$Py^}&ml2;n$J}7&qpzL{bLCnM;rAlEiP9gzYuFX8jWHxooucg zn(?}EFMQ9)L`snVpn0Y*+@+LHq^WMC=+8UDx43f1*t{$2xDtb7oZwbICGR)q@+{Hf z!WhW&eynDaGr4I8hhg;y*XCM%rCK3im!xDuC#jIBphGX0f%BZ(SL`3L0X7jdQY!D| zS{ZW)XZ6J{be?hcj5vx*X4qZ)XQ{Av~*4-ORm}DG|BbRf7Vi|QIjA1 zd*I}&?GM;&IbWyo&K+T3=lM+;#={mC($lKwFfZR1$t1yd4mTH+9WAN95oT1Il)+7` z-P5d<#hO#n$@8QWu;jEAAl}SG8pUcBB=DVuc8vdTPT;ysrud4zXH3I*t+vB<3 zn>fd%ZgNs?E2uA7J{Nz1B61N7{eUoQ|ETf4WL_pQrz=bnQE%kFve^=(|FBz!L7jB# zb<|)qGS(LUBXfhO>UVuY*6>{i+Q6cWL&>XoRT4yRX4ifK5e!3MX+YCo)iFvhWUau# zn9$Hq?fOkZG?kLxhe~A0-Cz-J7o9b4m13RYAIO_V+ydFbzNIsM@QSZfZ?MIO%en{O`$7wlU&-P)UOe2toTpWsdSMZ6L0}*Od zxStlAWsVqJ-c}_`Syai{VNICOw2f2@t6%)astuAMDiUtA<(XeY^W1eJ-KcK2y4?IT z7YuoS#t3Rt3gq;G9)*3&^zr<}zoAqY6U5nu?@x7>x2#ds3Hw-t0TEHG!j$wOVXk`_ zmpQmw^1wwt#`AZPvn2=OP+hk3qpBk|o{?>OFP-?;*!sbO(fwi2a^$M$l4wVR@WAi0 z-@{Oez2l41fdn?-l^<3!&QWa3sem{?mW!&ht&=mx--ym&ZH>clpKiopCy#%&PM_I( z6Boo1qqxTJ&zHxhMRK}W2{^T9-LZafKx3VgbUDq5(qoS0tvp zxj@Xg_%>oh8EXV%^2RSfDIZE5cQn_Ge72;d8!p-Ck0TwO*V9sL@A$s|>Z0D)a#$B5 z#|U)nc)7kt(3#H}vDGByhQ^9-X`7Q**oMRR4Id@g@pm_P0(;Sli=CMVbTJNQDFVNW z?-U)v4s@oq&3wkDfy4Pa$774Rr;^#F+oVn;8)`CT%&e6cQn2JGu_Z~cWdopRG$3*@ zXdjGxld_iQI%w!;3W0ZrFl&gHzYe2o3^plJ43*nG%-;&iHrbNMdK0N5p}A>I-2@K5 ztv$4-<``b%&Z4J_r3PTVjgZPO!_;WDqVZTDc`rk=K$Rc164R#OA(AxTN}Pb-sFq@r z3AtYW_Immv;+G996Zt5gPDMHgfZZNEyyT#d={yss$sA`>K(P(r=;Jh*CVpROVVr0| ztwZN<`t0a2`z=iv?`7bLMv-iObEz;a5|VW$_9)W~8OIe4y#d9d(iGw-Ug>1ehUxu? z9`30y#>)ev1Nrx{_|;|T<+@Ze2Nz{&HsG8&bNjjZW@{q)IT+NlAma{7ht@Oz0nw%b z#9Hd4;fKQbF5o*i((uY*-~Rk}J5mJ0E}|KY%s*k0(K7~QPa7Zeyz-+{UZ|?n17Du79Hb}9$re#T61SsU7?>hE?God2+tjTT-RnI z!6EGCp2(@Kw_N;6=_l`D7yemqj4vy&Tq|&<^+U%R&gi!RqYDX0^tKX+*j8b`yM`E8 zdKIejLinBDM%p$J?PK5m96X8}Y^uF9)ePawj_#PF#1OP2%b$23ZgJhL}4;xwS`s@qq!KXk-?G>m$MCI$Y0|f&a(4(jnFS%&jAr(&qLl-IA(zv?yIp z{%m2#u7z{^Omc~9>6x(#hv9+TB7)%O*dN-&_SA^Hcqj(#CQ*^`^T6u5btRQyiOXpH zRj$>~c%Ige?8~{W;8Tj|!xddlNyG2eyG6|7W|uZ^iTM=)=yyepV#|ed7p5zFW(ocU z?SP1rl+Q{2SDRlfM~Yr3&&Zf}M7zsztAT8NCrejD+w{ViR`>+GzXvq@jVwVYeBQ-Q z`{K|=FQnm9Oz7{ac+Bo%ocpjkyLghx`Et9_yjK0+^)@ZezKs}Wd3+YN;s%Y!FZ%1L zSZv9Antpg+-8cX?h=PL3$!PF)u=`0=fToFl$)k43qu_*~!W+UgIjzWR+rcOccPKL) zMK}K=0@dE&3u6-c%B`R(lq!DJYE%pJ6FGAG6l#BrHmg8o#YwvqL+3M=X3q}O(~o#S zSSu51DIje4<9ZCSaa%!(=jZK2RzS%xb)l*x<1^dqdVM=D=vWYG%30{$5Oaoq2lF}@ zGt|F^B&kZ&d?3eg`_N-Mo9yQ)Yn=VkRjN;Pi%j3u<^)MR??C6}1~JOnq&P$&2Ara5 z>2e}GncJ1l8d(JPs>kGhvAb0o0H3nk`ok z7+dV$_q>y%^Rbx&j$uUl>XNXYxb?mh!wI zJSeV3M`L|Y9R|Z5yb1xD48Dx z0nQl9dZ3}8dL__fTX%iF#f~meS?>BA6EwhcL16{8BZOyKw>o4{Ep}gME+AF5ZndpO z-IvJ>pnm~zgblP9U~YO7A9<62wS%e6L6p56_EF@vj*#xp<7Btz%o8+(nMmeC=W4s$ zSDIpLcN_C$X0MQJ3~A?(@y<7Kun?S{NxulJ*CJGc(xrvhOHUlY!R@7x;!seku+JK3 zDh-fK2OZR(EUfZ-_nR4=8!3I$iw@RUi!3vWT0@e6x-6z8fS>@_KLrAaw_1J%!#1Ef*~diiLLqHfCqDmyl~Kne@Z}cOKOStm0jx^?Rj{= zs)hL+dwXU-z7;%}BPP6cmBjkf4@g5eHLK)V0^>r@w*v<01@L*Lesq42CW({=Q6lmE zeWR37xjP*{y~v}=x)0n^s-a0ox?!{3rUwZg`~SRi6a@&(gid!< z(e{QUE5g?lM?!pYkSW%`9*Je?d472b6n5r=4MVExlK$9J26mSLQsbI?vV-G+NHCBA z1o^X#A7DG2_GZ!43*(gY08Cy8;-T|=Q67k4Ce#hSDQ6d+)>%qi`v~AfB7PY|q zY+oe?CiT9*|JY!%L31SZEC2E3N?3eoaS2Q&{{}FK`p2S!@Xf-=cYN$CNF7@8TIn$l z=<|{6RDdFW9uWAC(W4_*zgpc?`FT|WDTPKEF#mivw`74{tgbET9}L};y&lP>NXZ(W z%s@Cm5od~z;K!UlE&i@}$M)IrA!lQq?N8h1iIY{|%Qm^O5o@2KZU2(KEd&Iu_V=b% z(6e;u&!hX1`EcuK<}|mwGTysGMmAI~#?>GZ!DbYIU{j5XVg*a>)R@b>g;;BZt(Vp3jKq59-l?+w~VJ6cwjd@ zw~CvqhyJYS{l%4puk-GQON_^c!60ShXGe1IxSh#eERNpx*^J&qHs+dK9yY_jQ2S4~G+_UR(er&&pJV=C7j z)HUt&_jToq=NH1(B4dd<^n;x%R-Mk~9R<(4o^y$xn=i-|Z?jQmZZ-&CU3Hjqiq@MJ z1p~b+ouBU+hLk#etFmr|HD(iPGDq+EHowsZsTbb>n3L6zK`DypP!UYIX6lHaVr!I)hJW{3Nk0QZSKZR> zywPu)iiYaW3bIUArB_=69e&$|9QS7ajjhF+y}Mb+v3L6G=(o>b$G$nIIj#ivYACNh z=-*Yo${XBB%4=!NnqvPC3#h!nQ}v5&;DxtlMnkE$XFc=Y0=El6>sja-@nfj}TJ!5+|XB!c~SY5#YjPhk=qWa z64XDRga3%Hk2uv;mut|QKe$D`%o~KA6a_f4kpQZL=g`IJ3*OBfn`$|o9ku(fYo72I zRwGd)RSJoMn_G_;jRrQ9?2OiBfX|*=8`a;Kzc}iscshM3HPf2&$#GTLv`Xc=ycD)S zzhp7gy9Fto3A&z`bU9|-FxQntFCG<-bOS;AIpoYAF*~28Udx;1&)%3_xrysA##B9* zwSkrHjp^@BR_V(>oT}5Vm$H0g7VPo>w*#0<5>P72H(Mlu7hqgXTGQQOl9ht9jB5x> zvoA;VwAlm*&5o&2(p!X#{7zc)Lq#nzufu2syQ!xV=X3mDd=vV17(*1>6 zTdqlM1J-Bq9`xIx}eWw6m5okni>KVnn-LR?-K2g`>Aj}T#xQ{=;@308J3jS=tNwBL}mLW83 zXF{K2K}l`}exJ|;T$Oo4IM{r;$mf*52-f>~+JPQ^hN6xt>9=-M9i=Ui(xHKB^-@*^ z$t0KZeXP&r#f~&nh#%SpyVdSq#O9f+EKc%Evwae+of6?yuJjcLn#8_<4KtfYwcD(A zN$8)Q$yRWJukT40PV>E^Op}9JQ~XObi1)khr>(4UxlhU8nX1OG zexfS`-U-{H7R91-1V&*m@Z6PIQp9wghgHp2bttzS)T^|WC-*y0i(iT6W5be%p=JiV zN@l)|0oZA-ok=1-W4tjb!~ekz3FqVr>05{0kWpt$sr1$@_Rn1DON&yEEQXqt1^ZnB zfsgQ{f6qc%kW)iB>xv`W=J!rz!?`zQvDlxG({W|%R@Go)tyjB!M@8dgH4U9!PDq%q zREF%UF=j&pZw&4!3s9YT7p9-rMX0Ky=w}M0aApo4HAhQ~zZnp9l!^dH(@;}49DdyMqRhOgPRjYih3 zka#af+QGD$;OiiiyLPA-#eRa=|AS@n50#Ik_SPucPJJIhrtA$7KoI3YF!dcq)ywFC z%A@@4t&+$(`KL8J|AIIQREN3z`UXrFrJ%%_?c=e**$In<(g_yulL_NCMCjxRHl<$*Mrox0>qBjqTL zXFe~uMIrWspM7Z?%$Ia|$bm!lhVd4=W58|q{&PV?bLUGj%jG6xx5*hJ12Db%NFu*{ zC!27W=QU}d>Se5?UC<-3oqGLx%4SYjnD5BG`5D&J;+Ny;n1c>~klJIM;l2Ca*hcin zIoI7{rXIVV1BcqHv9@v#Fym`<<#I&3)96mXCKz@y(U}l!aqxlM%7T(g{uy;&N9E0; zmH-B(x8R|x2jNxiOcW-hs|R!K6-({5qloGI-g7sj*F}X2_6EaRRNC&{`z736WDDrYcCU1Cycm7k zlQ-V38?oi!^C)!ySu})a=a9U4=YJk@iQ8PC>vcWxl+HQ~J0P`XcU16|w=7?=(%+3J z;Uw1SZ5wB?P#u}~IHY|s7;Xu>z0p?nLY<b?$AIYH;LtmriAHdq|78>hPGPfNJ-~eXfUFj{(m6626ug zUlT0{DJoW0fvQ#sl13~x$+q5st~!l1K=EgPw`$zF>zpLObn+b|#7+^>w6^%7Xd4tf z*?O7j!bLEa)E?#+TD501P*5|4*SkFqiH~LXb(^r=pSj5&gx!Tn<2j2R*Sq1Mp!O1- z)^FRs>?84umlpaT`JLQ7+Uuv*9eD_die>h8?{*{WP&=nq(R@F?i_!S=-n{Jw61DDqp>khC1Xh`Bt>A!d zYz!_O2|H~Y;^->;-&ZJmoKdzSnOLCvq-op)p3m?qIC-l7b91nUSn|RI`-o_xivifK zg8B{rIX4j>6SUT_K&;w9NbU_wNSd$0+W$Ra$5e>V?8OOnl@wiJf1^9E$yWH^VLCM= z0pi`{&W6)UfwrP}%2R=*Ry7I9EdM?37tXS#W?#R^V0LWXB*|MTv_>FMwt9oB1N+B2 z3Amssnr|=N8ek+eGH;-b;5)NJhr&wKSUSb0-Ji-4bpciG1Vwx%sIr!{zMa@Y<6wH; zkYO&FJ$2_=>IcXDaRw>SQn*wqbh`cZYz{+R_DL|>6V5}S0$M*}Yge#RzN@qOl05tL zOGOs*3*Y{H6b~0Q+LyXzY0ty39-yq<9T~IsAGhISdXsHdYNqSmO%}SqyY`OEVTQR-|QeC zd<$L|JfKag-H)j zjl935Y#d2vUWXwmYc*0zO=INE-Cw$(J#F8QIyNE2cbiH2pI9iQU=igo?+P`aQ)4Kx+s zW!TEGIG{n@h(r&=H(iHca7b>I_zp4RhXCnm5qKzDPOFO*tak;<1T4w91wj*~?_`=t zChF41X7my!Z=53jbKujrZtfEE@`2SjTn`th=9wbsGF(52OYWTKGxDe>3(yJwIj;d4 z74p)xlYG9m1`jOK9+e*P(jWPIc&L}Ww@Lmv!Xrs`Z*1zQ=1oI2d@4n&Mwny;+#J@; znEv^DXx)GWI39&d2Zj9KQ^QJ%nZ$ON23dRBHf${8K9!oB|FLZsYUx559~URd3_wP-jX99UY}L>a`*qvpYK6vcBhhrSM!7Ai{PAZNLgiXMNCSF`6NU~{3cOFU_zvX#tdP=_LLkAOi~nH`u$ko;91?d4riFEp z3E#!DfN$P2WNt}Oa)0@+K4PqTtq9(SX%$`;Dk%@ZQ6#Jbb453L@Au+CyAkQN3+dehVzVN;}VTae}JRKD5*GoMJwcpJ&u1b%ui`*6z zX*BeuZsq-Ae!Ytbz~*+XBzrYT`uL^NMxn3s8OAcQ*HVh==OSr<>faT_%yPdRT8~%m zv%52uE|7Wb^Y7gI_En{L|-az;==C#xm? zHyr5p&sd0SK1=mSyu_aD%#1}tT&8^nmo!XJ~5(`EXe4k zSViz0-d_ZcW@}aJNbb&t*s1IiiOLK5H~JI{UAF}t_R;O4>XBPLL3C|v0rSl)L=Ol2>Vvt9m;sM#`xAbZzi z*nq#%IRo~-SFr#7LwR*h!?Dq;&g5}hK8z+=3!=`xaB0{0ilPBXe`9ZyGO1$P=g`Ke zG09G?8;;93E(tY3xz6r0w=v<71|5t_{6+;@X+`NDBoND|EgUnF&c1#Z=ZmI@X1QC( z<>p&VkO3l>Ewy&Hnq#?=<#iL}GcD$WPt|Sq)81|hm(2h61R4xk1ug#ewEi7z)Y3-a z8B9NRfuU9-|u;KxcEKmE%4WgL6?Q_Nk5q&Isu6w{?XI=i((Eym^;K8AWLv!=aTuhIe> zRINiU-Z_pA+2wE6@;v6Im_4+uPeOfV3=vgr3TErF&znkNgsFl2|p(B zVCV}zJ#5l3Fr&NWGEGS@luLG=YwB-WSN_cV1-o9M3({e->1L{tw!@D@8y7mNW+?my zv?gKLm10?EBrE~TI&4_qCl6P|vvs5-R}vaMwduPHZFKf+Oa;s8$h_5;%n!EyhXq*t zs&F42a0Bz$orE5z%4w9BP8PJlB)InQ8l86L2Q^xb`t503BsZKj?2T}QJm+hecwR9f zknmp3UK=;UCT9;nS2@2;Z1ObruI8+`M7fO*!raAczvI1dOL$q+y=VMp0wb6*N-y_> z4i|vmI$$wQRC=c3-7iR2lLz@%3o- z(vP2Y{t$S5$1^eYa*w(gk9pP1=oD$TZ(G!Q#<+yoVbG3b}8S%}pS-jBH7ca6#ND^x(Fw2$N{+An$d zAXMRLb3FN|BxqeD5xmFbPA0l)`r~NYPr#bIR7@S)yXl;%kXhBWO&?hU)TrCdq&tDv zM_5Jh5mJ3k!Nn%jAuWXf8fr&A+Dg0T2%!*Rc1ILK3`i9B%8=n2Wa6Dv^JVCDudBJU z=8PgCz5|8-p)^{k(S*=Hs3Q>SA~zBRV#^bYk|r$r=DjGMZY^+#M;uO5$PMm|p~q`M z&#L^I$ZgAd=uJgag@}YPp_6K^B-3_l>*> zao1Vi4Vf$Yj*UK+E)H15x1ji+ZOH54UVy9CjExYt1XwqWzmT%ogqC-Lzt?XHhl~=s zj<;<=0mr;9W%FE>?d`WA2*0d;iHq=tJ$yKydE7vN=kGj5WNm4Ot4Y|Rdu`kp0LRnV z>E~dS#C|Rj?bN)=>C$>#^jV}EQ9u=VziVu+)IRr}4eaa^R+PPhMa*?4VJtm&_Va;| z?G&FB(aq^qn{5Dv6aj9Y+VQ-}SI94{!bAI!s9Q3p_Uw+TzUFMj`h1}+y+ZYpuruI;1DFZ1a}V*Ah^pQLlOwC!GZ^OcLtc? z4#Azl-CYLQ1KeZ|3t+%R}*WPrw{xO_w96O}@llSoy zC(e3phq=^TA)q%-_`|uM{`t2xLf(T=o+E-Cosq8(ErEANM3FAr zUef1QbWdK5j!%K#i%wBqPT04B@L>HnTOX%Hn~l;oBMfJKa*A%1a`M_gpFht&u}X%n zH-InwhT+404(lN$I?7YgLX zLR`^wBR`-2ooHV(WE(DpHL7tDd}Lgx?86X&fHhhRgj?y=+;1ayfAL>q};C zPwKxbYY#SV?{Lhi3Tz5)7Z}o_ytX*mC}k!-`t$yaed~>L8f*v2{UQg(zF+Ct);EE- z#&A;u5P0Q$zRUDLQsxo}tbbX+=(Wk2mIDIUO=*|wV(QmzJ z&TO!_Xqdy2CE6b)^~Wj+)pVt(JJ?$iTHs*Qfps^#%f+FVH0SS`Y8*t2AL^&fHoDw3 zd@MCkHaNNwI@wUrPmbC2ltn2+U3M-&KCD3`qcCWu{%p}XRPrJ(iE->}lUVcVFzKBX z>Gr}>7MEo*;?1O*w!Wx4mD_{bw?&GktfiBpn1?tGy#2JbzT) zH~fxLdj|8_z4wPuya~G1#$7FrL>i&;{QPuJ%3GnMTdmXYu+_hLDAI`-PmjwtkJHh~ z)Pp|m_uEsq2z+5)Lu9S*c{b?;(_!dgm*Ua*r(?~FXMaLT5NDP*AI1?Urg6FPrMH5J z{H_SG0f1cT$0ISKeR?ud5FdV1q=sn*B6+16tYH zCRx0+%LXeAX6cjI{<$3r)^CLV82mZsc3*zk(L08v2nA`EOwxyQ95{fI(_S0gT=v^c zAu62VP_hyV0Fe-0xSHIDP!G|+Kt0v!jt;)eDr2m43UCL6m|9sUmv=gPFiMa z1u0~TJqM^HNl#(-OGUm!i__5I)VhVJ#SDWg`UDv>^Jg(pqxq%`VCKaJulC$bukKGR z7eueK4jWQ`Bjp2WNdVsjel%qqMTn`6QXRj?1Fvef1P9Ogb(ks1_ z?4nFd_BzQM8#R5@`J1#OFQ-p3BKI+N^?FLe>Uu{e6)1<0x56EpM zcs`ysMVqLWf?5zarA$bvQAJ)RPgNkJD-YIuxKzc_a-Cp7A!|D+@rUQvP_YX*r;0Vz z`e_0?90v*5t$n<6R+z51K-?%gx9}ajPULFehktw_e^ivujO<4dw!<(0t^o^%#x=9ZfIsoS7T0p>JfCr9(Gr@$Y%*Ns z*uET9+p*8P4Nfc|LgKddd0`%XWHOc7 zTd(I4x;;yl3)k(7XIT6Ht6x6nP&$8VY|1AV0ziH$tJsr?`r=7G#nkK>&BwXY_&|+1 zF^}PQ|CuYFvrmp)pU<6rJu?&`;AHgTVh%58yTtJC02*Ir*lpgp9Ews=`|=;8h(>XN zDJ;Vy(VC)}zD5ypp*I@U8^)&)n>iC6{ z(&c1p+w%NExYt=iqZYezc%8S|44%5Y7~uGb_}`9q+tO^?f!sje?DVUl^a6L4_R!sl zGW#mJC`Z6ICjRv~)3_87U-(+EhjpTuZA1_df!}_!BC!81iJV>5Ry~FS=sK9SnTIhcD!h6&+xQUkg>v1#HC|mVT;L3^Uux>HMtVgsvWax=KINu z2Y4sFO8^jMld@59jg?)|ptRQg#h0SRWB#k%;)*W5TE0!hK6)@``)(9?82Ij*Au_?6 zI#c?_WEV%#YrSsnG{;1gR8Kr-4Z0q*3Par=)iOFq-Y~DAot?LLo~$ph)6ms5q+h2e zqMO76;5?5;z;)c2c3pJHWXC%U7Ku2PT67yO%m$V1oDL>^-F|WXXN4V+P&r1=oG+H` z*&}tcx<)HWoyRj(Ij2)0$(z~p?s3yKi;0u{y1wam@%F`FX9X-7Mkhm=-fc74%3x>6 zUMPL6Ppy(2codrIJXk~Lyml<>+)`PyXbW8*df#x}o27Z|dL8smc!GA+PX4CduP=T& z6~dzlPH?pit5m%d6Ta^CbPkZ5?p!`!k4Z1(V^tUzSnl0M_nGS_1tCfoI#}y@Eqky) zxZb{wPS|zf)8HlrGXojqQZQrIK;%wvs;L8I`XI^BG%JgWarqDkQGs{Li|zN{%7JbO zTSRUASq655$2sV_+d9=OL0g(N|8nw2HmM*Jk_cmZbC08<+_QVVcV2SWqctlhikd3g z?|kKEGC9_Q?coNhNnT+2+o6?J6{0m6>d)-HY_`0){KB9d??Eh!yNg;NUK@u>og&#o ze#yDy(27$3CWjO4-Mp^IbnL#()b#$TQPrUU&FBqn7zM5Uj?Wlwj?3zo44;uu0z_%Z z3(Oy7JxpsPWUAruEOF^+&f(0_Vk{OqI_qCH`@C6j&~L9X z%+^odS~Pfh*8RdAo|WG}0PUT09DFC@;^{Rsbet6Y4w=K>563s_i%4j&Xi}yQXM_GB zdjW!RsMl+{7|xOf8ob`UVd03*8-dXPjw24O5bwL7NNA6;AB`Qq2&i#QgkKhW!C3zA z3+bJ%-0+nALuF4IOlX@QNj(>N(fJ9PoNN~V&G`uka2UHZ~5}6p}KT1 zA!mT}i|j6wEy!dzLTs-JdNo%`4I=G$Wl8#@R922}-p65F9{(Xm=kP?nn5eI_x@>LK zE(SmJLm%~cs>|=>cB;5u1MKxuu3shVM0*5oUIi|%nAZ#x6l--182XnPt8`=VO0Xc! z^UI8ERSa}RyXAcSax8s&ZPW@epQAV8a+#P)$~^^!$^}__nSy&qEBpH7nNvo;FrmkX zIC)9_yla{$+-Yl1iv0pKBN(Mcm#vk!ww*fA^=fExlb8Hi4VISuxlf&Z=bdPf#yS$e zRGpwHQ&h!}J*}Sbvsq#mEtHO_*F26#y8wh|LnGd##7`dK?~fv@S(E~mVIj~=<{mMR zrj!NB==?mOcotMyUTC@X>60rq0N`&o3e-eXmBz(u+32n@knii_0PZ{g>JqWq1xcI0 zB+af{@MN+m8V6?uCVu^<{gr*Pr*lZWIYZNyUu6<*QK|~@R-p|!nx7U+yF79mwqLc7 z0Oh-qU(mDh$9IXP2(B=y+Kazc%!vqCV9Fu&t-r|ZXRk=(AX0;VcxYETDRggOh)(Ve zn*BI|8h8RFG$+#hFDzg`Q(`mmy|hlj!ZuE=zyFuRx!BI6U%%d@*Gnw(ar}HW^gjK? zOwN*MQf?Xxt4z7BTwi~-<=#OZAeoJ7W+!Q2+d%zS)RbABJRYbDSN_MKs$FzsC0(m7 zC{??-mkC{V)QN0;b6*aFDo{LxC>xRNR3%AQ?rmRRHoo{Y7i3>XMouOw^c@w?`zw`7 zdIlzg*w|i{nrU1TM!~EBa}i3DNWkv^qqSBgJp{w-@8N2gQXO+X@-GB9=QO z^0Me%Nlre;E4{;5o+hxGb&@CPk0|JLU$`2X(3p*CqhskOINifuDIS5-6zL9B_cSYg z6g6;{qgR7gshm!CJyx2%nxSCvo;7Y$X4RlVOxT66s51s%2Ky&25hxvU@7~z>wqeQY zpNe@seVAmu-O;Zl9oIysmwN;UZY;X{Vm7_OnnhzenwpLm-VO89bmLMx#X>4Is>zK> zG96yXe*%c%Cf%1J0MU|G3nP3LKN>>?#LE<;BI_SW@kX{Kr^dosrM90+3+Awn#a2R- zCSx@}u(DHmFR`r2{H`QF#2I(NtwtMzx?G0)D0vbDf$r4#zb9PahtE|=JN!MGdX%e;A2Nw5&a z^GyX>s4^WAdYdYJ_FA`4c+oTmTh~Sl&xf^7tyINK!IOP;!$FI(F|6^p%hhzWv<0Ov zp#9WT?=n7SR%Pnj6{)His(41zZAmqr0Q1Ckr2h4^*Qf?AP~jGI|2106@&F4)e$LzOk?g=jr1QkX?3yGYPiYgD_0*69CasrECL2nW_?Gh$J>0pCt zT)bTdT{5$E3zihZyZVQ67(wZ60s!zg<$Wmx zJU9x~#TN_ahf`oEU1U(?P%wJ818E|;CzAYs(lh6Sc%f16MfoP}%M)s9&mpao+CeKE z)m}^`b&%tq{faVl2F92q4%)@kpv%sUL-F?+t&$|-&2-MzswT?l5p!q&$;@3a5J1HirML^UXNP{vee0Gj3`liRDrtT*EO%p7GDP5viCFmV(h#@H zKRfd6wjb--moqUE!j@ENovbc>_}vDxh7&Td6Gtun97rmn#1b5ZqcAC)l>v(Uj= zRsSwG+T8>W;2R&UkH0MC7ciym4*FTT7~V7K*c!+Wab1kpA4qHmc{Kwo? z$vkalbBMK;IZRv7t+8Z5Tolzd&8M3;c&#EETtMfoEG`N&t&63oNih^9>)|kVQXT^I zam>+%_@R1$@_rL+AAu6^TAMhDnPegaSI@@gcaXJ5g8`~P@M+rrLzY`h6jvh7^CFL40BjzXAZkNA7ixKXD2av*%X>rg45H>rz zt?72MLYGRB41>BriBv8EpINVg_IT_zE4{E1+-8-3Qb&Ff^}Usux71YZ&4R!iL&+ogeNF{hWCBFta~r) zeR1-e{}h1!zqFfCr$3Yi#evJx#2IYqW59 zM$q%Q)6F4-iOztSOAFy+-~HFHi{b0pbWBI&C9-0uk!7mc z=u*dHX*UCpYv0CyOJ1Y_ck`y*4(Qid5TK)_|8N~hWW%F($>OV-z!E$`f)!}m3Q30# zSMx`Hc$?yazsZGy>>c-x`P#(J`T;`R#Q$I!UQS!v@ z)SY8*T1zP}?~J>wy}(zFo3-}Lef7VdDi2{P*19M+Og1a>tj?hCB(rW|oYt?m z-Ng1%O8GFT@I^sFE-Q(vrM`XL*3;Z&8^#gy6$vf-fvruZD+A9VNZB~>=KJNb5fQ6l z?N0xl$esZB3h)jU;qaCnks7O(*E3iI_xv@wKe%5`8dPnwN~dm<6_6mePN#m_gE|T+ z5Mzu4pb@wscae$gEkd{ahEJ#L9b*&rV35nU8BQ}gBIZ7p>;i;2UtuOI^GQaoK&$Ly zyQb}|HlEte#lgFki;s(5xmyyX6Z42l(Au2TO9;>h7-I03>Q$X8@L3$6KK4*5q#Qiv z%j12QzH$iu;J8za?{E~33c#@@Y?zc1i;=<{6*P1k)DSuJIUnAgDr0!An?)SS1INXD zj^*=69(W^W{DO>HorM4hro-~X4jaG6L1}zI^Dcza2tX)tVgEic%yXJwm`K(WeYItl zl!WgTbDQ;A3EvtMv~e>`vOb_jXoB~a-87$1Lo@@5T6*(Xc?DfHw6<`=wzj*f9+k99#H0pXtH+bA1Mqt zEMO+7a%GzGG)e9LI`xv30Qu@d`zv(**9gdVRUqA!VZ*_e@16Aih5)o{Sob^y=D>*+ zx{QERceO+o&^$=E8gLq4hoDI>IsH)hBcih}_4r1l#$j$Zu4V5X~jt<=~ zHTIbhw=HEW4RvA6Ym}k`AdLgzT^LQJKFwOD#MSc8Rs%FG+dGe^g*(CU#VI4vg}AuS z7=1!Wx~G<*Yu5$fm|0pARDiPMhqqhqhi4qMD{)26p2}-=_&Xn&tj(b`ga2bs&NjTL zq2{AoVyNuXMHfnlRG}q)m9XymOu#N?PNuk!oIzaH@@)J~p;LzpYa3RCcRifh&f|sG z?L@)4G3{Z{n}C0jA}%JOQPlTABk2`{zD}LB+pGXUKE@eT@hW@*gdn_m{<$7sf_9-= z-IMNFmSYlTxTzruuHYDaA(Q6? z&C0CFDu8ahy{ni#Nj^q>zOh>c8lMD#ZY*&aGZ(|#N_UO)%1H#yikQ2w z+{z&+UvmWqsPQkz_53j$Y8;2z@edC=NC?%RC?gM8QPx5AO6wS>qM(K9KWqk?t|A-a zl&MVDWNl!fu5^!YbAN&7IVMe&G7IwYH)|a8O}#yAq40bsIxLm-S+dqiTpOBpjRX<> zr|y|=bmREMCO6({SJAB8kf2!GZmEj_)nTIHnYgG{sD4_Nhzi$2;rD8*HT;>{dF?%n zsr&fqup`OGKrI|;*5xw@6?I|Fa-DYGcf#A{s{g_Qyb6$ov3M|*S6Sy(UbxC4BZ}LJ z(P05q)Pa+%DDKaa{xdlZVsd{w?vNmBXJSe^F%8&15bGYG5Gu|XsIi|-)zhFD7^G0vyrLC187Kh zJv$9q+QHPZE0aS^oHI)%h4QjwmTcrD-;NkJ&Qo`V))w8bSY@7wzgu=uy&9iIOLPf3 zLc(hC%$SXG{2NByV%J{M@Htyix(Bt3#hv&yW1+r}II;+qE7gDEYTh(vY6Oc*aIe0- zQumkRm6#~BKWfI92n$2nQ0-)?WqvJPzW0XtbzqQGBk-gk|MV$H2=Qib%-34MF*YZQ z79v0?v{BEwK{0Anrs?7POsLYJ+0ML7TF^md661)5v>ov0M(XNm6N~++*MnV@5fY>t zV*GYINV5^>#2O~p=r$w&!onbu)B=lmDlakUU&RE5=EH8b4D@&i=0d1)vH&xhPCmXZ z4*M6g{}nVG^$ci#d(jk}PJZ#)sdHk?ZkyQVq`b5xGZLn^F#qsZF7VEF1oBc^Z+$vf z$KKanH5(J#=Z}@ta`z!YZok&gv(K(oM`iCos7lyDQ_Z2`Dq+hev&xdhLwpk1hzQE> zNlLCL0c0Be4$0bx$TA<+_#?1>#nmE~rt{~XJTY`4mw?+6b?0JO>~~HCU5#*eO|w$P z>8xML=%#iZZxuYE57NCFf#8YUcUIN8g?-VP3%#FMBN`UQ8EN|1fWfBAa67%j3&rKd z)({I%U*J5j$YgGW@651+`^OiG9ZFjc>J}!19MDTUC05_F>)#seEJ4yjbo24KTkI82 z(#+?b5|*RH`ubaN#p9eu_J~%&9Mo#OFosOX)Vo1G6C$^*;vO_%6aD{ad^?Z$yXjp3 zakByh&eP;_DxUGNSv^)W)AQ~uSmrI){hF1TMx2VDk#4Srm7T)IHx0P>_{<1eRY z7F_RZ(PGMA)~y`CUxA|+KwTgb-m~6a2HAah2 zL73w(3+A=V{AN<;tv2ZG+q=KFq(d)9-t6A%>9_Vp!y_&F#U)m)!SVF^b;Yr@7OPlh z-^0sZbG4N9`1njb$g+4?k36_;ao_P!*_Tuso)dZ!5r1LRRsU&a$uBso2;H|Bg*TM> zf|mq_4cCm`8kMVdzvi#h?i#12L3C(Z5R8b7^ z#*a$J;zny$-Kvc*(FK5+OF{5@Av-Q3VIF_ zi-_9j34!;ak#75O%tF&6niSMT$s)Q(>lNre$qC9a*89cESg<;ls?>;j7=uw^an0F8(P!QJsLN7 zs!w$iUpBZ;osMDoPB8wkK`qf|7xl2|+{|m6x`5TckrJQ7TfRk%*)M|~DHnoQJ%QH( zcU!XEMv}&?Y+_G0((+$kp$+cQ2PfsiU2oUMg3F5+bCH-knN~I?1#nr|DBs;Z_$1rXK$rVk84JIo!Z|fyaaKH0 zu*7Iean~KPA#l>jZd+8~1`jV~|Ca(|+sdvaC+elWR&_zVL!d zg^jc3PQzq>(lnl84mOB+CJTwmz+$<-dtjAZQk3{Dh9ImN^wxS`>sObk6M1=q_$yzyDx z!>%MNGoc%aegbfxP$%%u8#p-I84M&RG*uAsx9g$`o0$EV{{DxAxP=!^&^MYLEHKyV z-FktJ{o>{rl}f7~#}HBJ_n#ah=L_7NWrA-M+&&4(W+j7tA4=Fh$m=vL(K)t$9=oRL91FksmqJ7ChE(7JXsc4{jX}P*}6qy~L13gy3+Tio#6a_+QxS)cM@4ko59NnnWIl7}S9s?)ajX}m{_wQI)(*_<%R zmCIj~4$Bo0A|8Xad^@Ph(3WqK99u|PH(LzKqDR=%1lxr_&PLb-C5qTTZhjrT4M4w3 z3e^^HI15A5_DiuN+dqLLH^{XWf~+N7zbj`GBZWY{Bnm*saV74j3LovVnneK8I z=i=@05-5bCZu<3d=*WN?G&!V3JS4nSdb;D2Ild3N>cO$&Ty~2R+@gxSSZCLRueRG_ zBIcx@Py7inyUo{HN8_DEvo;*ei!QKE4AOXWL&7b1V({JbZ$=Y#B-e@U&h*LTu~HNN zX)y1h6%El|4k~AjybqgwJ#=<7{B3>Rb?}I)tk-(0vYPx)(9}@KHRp+U9=rGT!Wi$J zA&FPFg7k^uVkU*_+Nh0LX`)WTMhSc?>Mc1FhR0IDq5lrc)W;FWLMO&t^VGBl&5ZA6 zT&h?R@VwYwPKsom375Z&OraywZGNZ`9=uFH*n)>Hq~V!-^-j*w02~f3sFUOcn;P-G zSi!^eN(Q+2dfYxJT7|0M^2Ns-L(crw4EId}GFK6iTC2sr2ir+k<-!xzCDvT-GGCLs z_>$K6ja1>9XlxSYyW zvYWFq9nTiu@7bfL;oBcL7va)K&93hus0v?$$XU6(GEqZ$=cE8C(9(Xu(Ei0AA} zN~*Q;-a6%ocrgIm{%&Chk8_}WcX@%VQ+A{-s1n0--*fSUO>hU2JCeq$AzL47tXD^= z+WhM-!R>5|f27zksd8P<%~O*B%eG*ie4Ukrw8|86``2!egRl?iY@0E$!>?e#UQ=w8 ztk+=8fSqD9E!VIUVJG4+3h|uKaTbcdG|{oku;9=H4VAge6-_js>xo?5>dmqKQ|aXG zEnjSOO(VJHdUsVo+xCfqMyp>JFaCW~EiJmnxFm|SS z5MH9%W>-xAF*0Id@y;&Nb4R=zn+sx7ufJjoQmB(6#UfV^ALwy;7)WzeNNBZSqx6OOT{p^bRJ_pp57_M17Z=BVQrPvIHmwuhwgG`JlV?>1}Tt9N2d zt+JpB`Fu*dGB8u#Og{AaQ)H#HNU~bc{II#9vAXDS>njwq@J35)i)(H6LAdOd&1i)g zp8audWnA#)ah#u&jS=5zgNd1!fGc5Mwy{v@;o0?Wx=@WF$#|tR-qd9F#UAV03%4e7 z&4>*`o;{JBiz3!Sx}vF-1zk!)r2<`0{Ooe!D$B)#QxyEHuYXkd&c296Ev{SFx}bV> z(1O?Iau32~73#ICYEL}5Ju?LZ@2G8q`tPTBKCoijg4^xO_>YP!txvGrJ#Us-TEMoQ zNq7fi$07xVlBhamd0|@+mcB0E1<=t$z0}vCr5?~|`px?HjzmyXhQEUeI+=@)9! z+S>IAG`Gs&5ghV(QS2g8&K%f(wg%cKzgVwd$htmlnbhZuz~-G5rTKi(=SF=XMcCJ6 zU8)mUApiF@liJp|8#4pDAb;N7 z($p!ro~LE05$0!|U3q~PN33)A6XKX}Uv8y)!MMk(Sf&Art%xa9F) zSb$B1*EOz1M?~w7=2iiqMlioglHJy!`NFG#{8k_-Ta}%>kK=JXYXe!$Is{2)$}Gh7 zR5A{~>HI#x&b_HX5ht7aV1Qw5Q_lLwCpt$)&r8S%XS&BHbSzZa)!gF2UOOd=Spg%gIt>w^OzO0jM zH0yMvxqf9cJ-Lx|J1=R*^wQA`hw{AsK{IRDEf6EXi-5mIpP#Q)u&L*0PIp~&KNZTo zJDAwM*20{o%T&i0eVTO{hcQZ!BqOe0#mctzuDGP>Hu>l9m-a>cq>*G#*F)$$b!GOO z_8zKcuJhQUS;f}LvB8dQ%)pKkwroTtyA9!VGmuhBm#hk9DVzMdqC+;ZSrI^akTn2; zH9<*XCxn%ukw>$(`dLX*R4C%_cdPHD9DuD`^HY)$Pj9PNMr=v0pJSIj%Tz4Y!`@>p z5*I4;@EX&|N~>ErZ;23QlWIu)1+vJ^g^P{QoM+9CP0f#~`tRjYBR7zF%=r{jAGhLl zN9?Db#pWgWn=9yBZ@DED1?^f+j#SE4xu15GeR3trtJ#>Pc~9X^R2%mz50=Ee``f19 zYl(?}APQqAjk;7R!=SWvIo0zJo@W?)O5Wfm8t~ATL%A9ESCaWpgvgrSo;w3jRp+J? zvvh}{@LnNwtr?B+0<{3RDn9|r+pOn~5oa9!%0$#7nDfDA{35Dn&oR-%>$a6tx7Ni% z164$T`h_fq@KLGPjh!(Ucl51cgN9Bg5+{4|j@qht6;^0Q#D@vJBCa({PF?=zYwYrHDJlW&&`m=Ur)q11|5-R5C`+XTWEGJ z*$NkVfSBrcq6-dR*5}uYl&YJ&R1djSw4&^YfuX96L+^|DH_)!tqwM@6ztNa`>bt8Q z^hMU{*HYDNh7o2KJ`0@Jl8mVZBi-2xQgaCqeU0WeHILU%0q?}>OHwmZSd3Zq2N6QWEX6{4eYNdKKI4>+QJkM1_(S|`b&kHW(Hr~ac(LKs zudxAdQLs(7N`xvmwXz`n!>`r>U?}9EB&cQZvi>0E~w}N70o5F<8GH>%--H`~DW+3aw*anz- z-lT1e?;RXdXlrQ#iff>guG zYpGUx0l(GjIUF;?lg!Ge?LX+`dtOkPJSC-i#G93E!+dx1O}eP4L-^ZBh$oQ|5!<*r zN`z7C6p&R@0Ug%9|x zMF80kljDrZmmmcWtKL2a*2kwzQ?}NT}k{K(go$CMqD)?Ey-{=Z`RnK9UCCDo) zc@oUEC@oA}VmuP%Quf(5ft(#)#^7Q?lx->2r$IW>}-fRSYu4Ep14hV{#=DrN_ ztfrFTEev>sQpUr!%*m*EsAM#9kpaIYtL-{oP(}%$QxVs37||QaW_<45yXSY*!Ps&>Q6vtX%})cBD=?#hA%dG zw1Q@*&dyUFFy&L~TQS`82u_pZ=Ac7efbyLQ@R@{Ad5{f_EU(Lx(DgXGVOgHJsDN>- ziUXjZ3k~6uG-L&72#v8dEbZa}#_2U=F$+t+qmKjtpL}788hW;&(>~-Yp@e|(*l9Wh zUq10RyMyGBcoJkip_wNhB@F=lC>ly4k|2$K!gJ}BX=*sHl8^zeI^4Vl1uJ1slK*8b zyvm{5fq|}Y5%-ShoGT*)gLWaG`tiPfCQ-RwR2?(|UzNT9Oq3<0j#0qm6d;X=dw^xNK!tvL)MM6Sad6MXR~I|+;@CQQ23)$?|DT7W3G1a>y5 zio~Oj@KeDJwEd_A9bi?rGfX1GoB0%V{aZWSH)gpAu|`zF889SBD@30dHs~!A0Km%Y z45?x|G{oGxAMZM&%aH&$*l65^Ph^|?pZZ3O!Tbmc`p>UfH%||SZm0k`;MYLsJSe_De+CGOfVm%F`1lFsyg$7Oi`^#RHB<+Z2M z1^RC()due=YPs%L?t7=g8f^0xMey2jp+p!;=(!sEz?D9-UX6Qw((q)Xo3gePt75NZ z34dSU#&g805&%HMcqYv~b2$}qPJ`=-ilx=}kam@2(n}pUBsQ<}4c8*9q4o=0i%A$` zyobB#R~lUI!)qKvVhfM>%9%o!cBAyzNGNVvb>|B7?&-!!gwQijbn%9Ph5>x(6?SCXzgZ%Orp~X)-Z;Z-h!qBetHI#or(^ElQ}t!IGwH95`r4p*4)d2s(Gk$)o;d$q+mtl{FvkcZi+ z|G$McIJ9ryTGwJOzxhcg`R3zG`8=}iz829={+$pu@cP4I%&reyVGC{*i;-70E-wJck5A{p=Fi;##({=TMB*wsgp)m!01lA;9Y*_aP%gGPta%o7Xy38m_#^N}r=lQ3o5JErh=EWAf3(ZL#LW+99R1YPbuVcytdsx3qt2%|^vWD)KE52ufnu7WoHOKjVbl|Fgh zvrkapZ<#YP{NInmLy&o*4H;tkQ3M(wJBsfzAC!Mw^1!4xN>h5+0eAI8|3R*Oksx z^t}ePVsA80V4&0A!{5{>*>xC9%5ozwe58 zasMc0^oCriFRZMZ5rc^~(JYCk zeC0V=P_kH@Hr!UH=HKsfYzU><5~N|qc!#~9$y}`zTw~~KSbLQbCM72=#iX@(J@lZV zCQZy;^QgEtLnFP6D^gCkDj34#bcOWH7{NxV5HlMN<}=|qy@Iv*q~doO_P4QiuTw)` z)?r9!iM8*EaLnFWs4V{iV`|l)3L=u&%XQka#|}c-hWP& zizl18A39wPyige&&2;yS%nvK7$SZtXk)COR>S^wHC)Cmb{bq2bE_jZtRr_0e zOR%+6$7dYxRSI(?Ok~qDy@9;}v5b7`H#^>P+0+$T@bu8`&S1m%Gkc6>D_l^Ck#p{hQF7wNIvOx`r;nEfQ zyMP-m*^$PC5QK87_Xg5uetx7AJl%vJAGZjV+AlAJPBxF-et5fcjU5{Cl_K^{chkyr zrHF9UvOu99Y;Iq0xWImL;Ps`bdEH`MLb^2pgM@ktvxoiOzPM0=`>>l21#yw9qMre- z=NNH)W}AbUC!KI9h;93y-XS&yr;n6DBELKIL(|Hqk=v?(i+4?#A)_lzKeL!&Kh{k7 zw(s`yn7K6HG0$ot3?~52>*o<3YK^yd$J_fTSgCJC>Kvf@DGvNKP)7IVYzRv2mJn#> z8H_*s*IIoBTjP3IYBRNOo)w|v#!;)mH6>dLmzCkiFL>757ey^h!bmT9z^j6tLqEJ> zzrOS~vI(!xInVJPs0%3^B&Q;hP}95bMePN%geWqx6!970w!W9JJe~)#d5XNZlwCF+ z=1Cx9(tp1m9cJ`tXhO~t%a=>|E+nHpub5F_i-}A#g~_na!RBGNYI8s2D`{I?w6nYT zxpTNCv+%x}ZaCSz4zcn{ds2muXYJN$Pd3Op1dF0b-@G%iT@WLFAZ@;Gu4elZs-gc3+%(|2A)|o<(XF&UVg!ca=0UbKxI2$6d2RytxjZ#qrVI!<#5IFbqF8KVko%ChMo%u|KYgS`?H?Q95glXV? zWdhpVa^(G6@7{MR+^`{tptD@YMLi8A7W6?Jil_3yUgE~yFEw>E+_%YhoFPwg@0`Rl zMyU(`-_ujKvy_2ylBJfeFtl}dB`A0vI*}77k{th<_C|$i?h0^r7C<6C^R_e4@$Cr%i z-oQ;bm|rs74H+oiAC2mKr|XR!*F4cLz`P3xPn?+%MhdAdyme22&Nd4#U${q~%oWYvM$cYH~Q^v>KSTOZtV`JEqr zza|R;PJEuOa8M1JwjRu9m{gaSBo)eY%G+qlgt7G9FL+6+<3r!?k~e?aoZcNSQuOI8 z)xkzdp)tyPSx4IZcnJ8mBl#D|3)a3$W)e0_tEN(W>0ZXMSXt=Nf0JI@96Kh%UFtBI z9VxfYwal5`heHiI5}a${SFe^!EBbn;bjw3jmh}FlFEq{(;UJ@Fu&=eJt+3OJzI2rQ zSgPpeH%X11qtidY~mG(&w^_=PVW$tQ`&7AiH z4@pen@4G&wCqEqe5|nycS}A&|_`H`A9+$hD&x@0*-&bR_Egal*tW37x7v z2BTl><3F(JBld8Pob(dX4-1~TT-{l!xnB*>?PdgrYL)ylqWP}%cz(k{B#2s(y#D~h zHOO;pD1%K7=@DCwK1^)iO{^xY6UeOpZTIp{7|jPI3H*_fQS7hZpWw!eV>KSw9WhdU7YYyUTnoaEqH*X+C+8iIhId)Z# zojt9>A?rYOZsAz?Y-tR z%ac2$w);;EJi7|f;+_lt`&*d-xVw1u=y_$LTPZJ!JTjvj`yb`uKo>H~DUk==Y3*9; zX#p{^ZgTfZwzYZLAq%TX%C8Y6E@EiQNr_&U(W)|6wP|0!W#DM$-y9w7*LbE)gaAWFY_J~Oy0FqrkUrt2n+M9cylje$;OVH-pW%tXKO9IWZiZZ zW18^dMnB>ig%j6C^ijKPNiGLReT**U8XfdpRjT@tT6vB(d7Y7XL1e}&qCHFRWY@%7 z7qryAfighJjS*ug;{&|H*$-4X5_jci|!Q9i??l2V*v|yg1 zyy=sHB%t9|wdOSQ?sJ_DjHJ7HQ!S`ar+M$LGyU_Yo0ywduQ%)dvXSUyG#4Lf4? zMZC^c?{MrC*(lZA1|6IY3Qy6n%C!HcZ#KpV-FhZ7std7hNij2d&K?EC!#_GZ*U?*XA?0 zJP)Xj2(WEZ;p5N80&hH6O*ILt?^=zSspnEu)Z&)bUHb>5a^9)(f z?@wXW&Y0CBp0AUS5nUiFjgYtr(Wko6_~IeIP@1`Hr?L_vl9QP z4H3#d^Guqn_ED=35ECn=)DSD#1a?gB4C;UX|5(5P0X}oeiQF}rzcwEC>-TwGsMgq0 zn<(nS!%MN(X_PD3KWhoNk{s2kn!ya{GNhTrUq9rjNVD0}W%K^0);0>C?KeI-I&iUp zkuJ5>7%xV)>R2m8hXy@gJhsg*4a!xi+Q-^X_xhQ zMD97d(49q5Sg3lQA{_S;yUwo4s8Yie3mh0(PyG7VIqi0Zs01cQCs2P#!cJ6eW=(?7 zusGf`P;jskoAP*v?QYH0zFzg2?X;YJ(qvIt7L{=N$?36^oW>Esx)ZDbJ*32+MPBfG zXjIRm;xd+cnP&36;7yD-{HIu!n!%i9i%HARRgc}tPU6gvH*1ouAJ?{ak{R-+rKo0Y z@a-`kw0Z7y+|*|XPP+@Gi9gU{1neHx4QmmhQUSzB^zh-FwDY?s0;YG={onj2>43gD zrF(k)1xmYl{b~I4H>FC}cg0$O((xs{0i#ff+b?od803lzdh-1rK0EL0z@6TDo(dd| z_sc7d;y(LRDyJ+XTZ!omgWYxdG9j7%r&o7ufe!+TNRGt`pSKtl(#i>5y#qp|t2bsC znTXiTy8N^x95yIETXD3J zwq2jxXtS{yR04ytee8*=H+>RnK-kZ$ot)5#(m6AbQWRm&X-?uVQneneMjyr>|!Uc;%xu zXaop*3ud{5trK}cjk;^ul8L@ynvpG1p5t&Vcyp80_amk5E~+Hl76objIIKnOIO_hI zKr#b(^|NnonX*=$;0P7EuTmGPs)-Q`Gb7`yB;8+?v$8{+Gxb0EjK@p13LNO^rdWx~ z(Dk#FY>X9~I0HD-pWAWUJ&kl%veZ2P4ROvhJPJ|VXM3ClmVQ3GZqNuzLq@7JE}S$z zRY^Gf&0Vfkp#>?p2}qKqRf;7ehu3Y!nYK4rl26^_M7Sy!tjtvHOG4pC`H_ZYG;uo{ zXQ~`f=9v53GHk?FW|et7yZhv0=wW!&(F)L5V!O;d9ij4a{`)mZYz&9zY17+tLWzOp zu`lMJuallVeh#-k)JdD3_a++h1~)Ty8Bfs&8y738v8vQ>9J}W~hfZ86dVi~k6JT!P zjDjv$+T?ZzygJ=!FNi7suq#V80wS9V`kXBo$$=i@PpLx?0ff(rQL)G=l12Lr?{aI=3 z4wqa@sa%A;Kj9`es;FOCD6LU#en^D)w{SLxI*A&*a9VFhh3 z-13gs<=OqpiH4tvh@a^1fD{w~bQe6c?Fv~;eU@XjqZR%QN)B~WD1-$YiTsc)t+XA> ziMV9rTWXhZf{|C8VB}Rzq4TQa!koOAMW-0=KD62|FUOwNu z9OFuZHFbmQ&fp@rHFf`MMwAno>PZ{qZ#(L`=yoPs`g*s!A>!Aq?wfc@erqcOzRmbO z+uWNEiWi}KO{2t?W*h-<3Co)hb@7RYy0x$158YM3A zcO3oLy9s=wD(iJ+@5zKjhSS+I=_HWnIS36>kZAK~^B*q~@eGvnIupolh6%tL8ucHO zCdDqcG5T#knC!74Lh8! zyIMPku6#<*e#@~GT0WmML>87pxJtCdL@_0Zk$#SqdZ7XRhDMIMS@*BS6| zKh3^x8<+2U_|K@b-=3T0XD!d4gWuv|rM2Js{cOTb6(|G24SlfXB9&fxP zUMmG^dGG?EvuCZeP!hRlRLi(UUhT4Sf+2(~4JnTa*r7b(hI3)%tgu^J&;^mde zJHxi>ZtqfD*tv-b71s<=+gW1U{sLxPS+oRp9}>l5sJm3VI@P#m5L~-AalR6Ks9W94V>K$#6kq;Y+Kxys&Ni(c4nNOe<F9XzOxY zIU-<1;9aJCvE7b1p&DFXvld-I{&AmM*r(%}ndb#J=gCHeM^(>SKbBo-qYQVi@F};dAbUZdT2>7V z_7-)D$&zls&ERP>DQ!vHv(NDJdgk!k(8&(R<CEx<)kn(|#8ocCy$trU;%aK;M~Y+D0hOxZ{uo*mT-> zX5qGZqy#jWd=OBhqJ_+nd4eS(NFO14v$!p`>cX|yUUmh|>-4#Mr`hPT*=+Wy3{Ov@ zARu#B26XV%o~AaQG0@kkD5PnY>>5(-{C0x0L;WG;0Sul{1{{C#s<-yj*b4NwEAq*) zhEl7Rvr}HLg`jx(b+f_`AXIK!bzmX8!~`YzU}t4%ciiXu!C~S*W#7>2iWm}zSNVp} zA9K0Z*i{-W5EGjp^Jc*%_WbnVI#1fcer$x}PZ^!l(5L|6>edIDi~>@gqAh~(08b+k z_G+}rRkC0<{i1ZLb0X->fgo+b{~8u%+5O4Mmssu^eDg%4Q}%$bcQ)4(NcX5YS5@QH zK2G}*BX6e0)#>}d2uQbE!s(X3A|)y zSe$D3_{1ENPX)UTT{D%)GyLoxtUflZ$9faD)i%vuT~fSb&A-gAGLjbpo~#{tlh5#) zyRy5j=&x!1C%>DOBUwG(KaQf?z7=AjmjQa9PCnmoDSZC~dL+C1=cZbXO`FC@I_}_X ztiy2Sur&;`sw-<`aaOoX;D&+?CCOlNaIt%T0cm2m&YmDTW>KhKQaYJa@#GFw+mG3Z z*WIDGn&CY&oStavE}xHz2?^V-dZYYxxqd7gng@V$OQZ;vb>}K~B5QpH+ONOje5hK{ z%AckV39VFfOSgLX80vGG+y7O={j48{H5IsV6Hw1O_Z zRlB(?;9EhlLgS|dk!w>5@SP+)xjEM0prCecD z0)mqST&oqJ;3WAxx}C*&O!>-lY=TGjl15yR(s47XCGL!;Tp!u+^Vo0G)+s1qpZPvq z?rmx4d5pitfx4sZpae4}_7<(^7n%Bd;{w|w2}nsTeqTFg+LZ(! zK~3EJFUbtmqpHxMZBhncib_9=`O7bl*&J}J8g(ub92h} z3O)D1Q=T#`Q3F1uKHdGuTAx^h;5raa5={X~1t>FjHsX@D0JleLF zmf}Bp-X${l7xSL+*yCuJ;$!f5NOQOvMCNAB>N7b|xvg5j!cphx(|jMn_pQWt$G`Z{ zneC3wEqW%-cZSB$ijK{A+GU;Cr&rZNaFM5f<-0*|e=LVkBLO!c4Y6)DQR)GYq zZRgj;ZOJJuLhaN{=^odj613zYuJ36+i*By^-t6d6b`6*0FsGs?CI2!WHbM8nKQomH zs9aQU`ZaKT3L6=iq-(n8rO_rkFuEs4lPMe`$Pe%5{Ww_KHxGk1aMONH1m!xV+8bQd1NEl6{4 ze(Gn?Ua;K06D|7cae86M*gU+@=SS`Vvk#P3^qcfe$P%BXz5>ba(cb}HmqHN3s6qKp zx7)egA}^727i|3TyPUS77X1@|blrH6_(E_@`56oKL_#2jkz?bw3&a^Ce|5ClR`K$e z*rPKEvh`#QC%mmraO>^;M*nYGyW-_V)7&x@@;@xHTL~s{D>3n7N-}qNjY*TG$;2sH zBx+OidiZd98}{BQshOu%j@JB9wm(~)Qt%17Crs~)mjJ^8wn5-S=*#H=p`ZO_;_+1mk z+NiPl)<~h(1~JlpM*VUX^V5mzJKIw{hI9-nTxviY@`QnFF#PHgr4M|e6!#^5ym&$= zTnV7|vKDH2xTTG6@Hg~BIWthUX;0->7p@H#9iMz&_L*NX@(6Prq{--oL_4lKJT1>* z{X$tCFYI!6t|oPuM480sB6}eYco5Z?lY`ONi$RF{SIr4+Knb?7NLGV&Aw4lmBF>D` zc0d7*HpKfeXwzdXYatO5IqIL1%okYAWUwB?_MEgiS3+Mg;pVy}sNrApIuokyA3!8I z`V2Vx3*4)nWMq4kR^lGUGvWXv0v-zTM?5?&wbX9z{nf&=@~7D+A6?$NI;+Xu-W@+` zyAG#Y_4|EqF#7TU`sK>i8y@$c6XeAgAJk{3-t+8ZkgPK9^m1OjemCgmJi!3eLd|#{ zJhSSd^C4HyXd*8c)bh@FBKlvfJXV4+4~fzm&7sF=PGU&&*WUy7F~C5IrNO)0*{;xj znBvuipsB%8lGN*ki0Z66GQ-x$fT1lh`kdd%FP@1>#up;Ll^W>eKl=*`9rgV$rB+18 ze`7ouPd7;UKNOC@7|;J+cxKMsmr4BB2~p^SX76B&sP2+SLF>1eZs^qZrKkRFsMjba zHoqk%VOh`hiX#Ac=>}(4<%KH4<<GnMF5Zrq0y?;LfeM{|p*xuy!gO<}ZX>IvqJm@lK?r?%8DCjU$i zyP@ty`FINhFjo@HV|x3Xa*~NG)hB8g$~SN$ivGjs@yq-Fiu~6T!MqGsL4&MpY)XMP zrpit)G6-;y=`C?5s@cR@@3Trn5%e}~!U#9T^je7_rp51t0wWpmQFSj)7t%NgytY=v zlFTO;m}b^O0H;G!+{XFSDSO0A|4s+{f9K@wQQ;K@PYymA2_xIoFpgg)91m17aQYRGml?w2 w<}q2hiWbgL4LZH}n%Oer;>y4OlS@n&XW!MQ%1#&jt2ThAMo$_Z{r&NO0Jqkb(EtDd literal 0 HcmV?d00001 diff --git a/docs/images/screenshots/mobile-navigation.png b/docs/images/screenshots/mobile-navigation.png new file mode 100644 index 0000000000000000000000000000000000000000..c0156042d162dbc9acea78363ea3aab26b4e34a3 GIT binary patch literal 74821 zcmdSAWmH_@wk?PT3vR)+kYE9V1cC%F+}(n^YjAff3JdP;?(UWlToW|72AAGB=bpZ= z-{`*Mj(7Xr(fyNR@6T$jx#pbfs|ZDTNpw_VR2Uc-bg-0|G7JoCC=3j|EHWJM$pS_u z7zPFl1}yeT)g$9b52ZtX?%sES2t92~i7!-ybw(_N2_h>FWi6ahBi`qhPN7S>P$0Hv z6knw)T%ol~z=}{wV3cl&Fygu4;5U4`Z7!e+yKJ}D3+N-?9$vo?y)4$h z^z`PvP2zZKQp2GPtj=&-NmX}3dNJKEKFPsmE)t6e*o`CAlvhRM;z^r3x{u2yi3$v? z!&;+HHrZ1=#dt^N!yB}@5@kjP+)_j4I%j)dNA}4wC8AByO-9R0iTlZ;%_JeHjiyGO z7d^|lV{TD_a3gVnZ$EU`yzsHn_#nb{>x4?ImGa+aNV#dh8~=a?gFP5R*zja{!Rt

-``` - ---- - -## Step 7: Add Routes - -```php -name('newsletter.subscribe'); -``` - ---- - -## Step 8: Register in Composer Autoload - -Add to `composer.json`: - -```json -{ - "autoload": { - "psr-4": { - "Modules\\Newsletter\\": "modules/Newsletter/src/" - } - } -} -``` - -Then run: - -```bash -composer dump-autoload -``` - ---- - -## Step 9: Enable the Module - -Add to `config/modules.php`: - -```php -'Newsletter' => [ - 'enabled' => true, - 'namespace' => 'Modules\\Newsletter', - 'provider' => 'Modules\\Newsletter\\NewsletterServiceProvider', -], -``` - ---- - -## Step 10: Run the Migration - -```bash -php artisan migrate -``` - -**Expected output:** -``` -Migrating: 2024_01_01_create_subscribers_table -Migrated: 2024_01_01_create_subscribers_table (32.50ms) -``` - ---- - -## Step 11: Use the Component - -In any Blade view: - -```blade -@livewire('newsletter.subscribe') -``` - ---- - -## Verify It Works - -1. Visit `http://localhost:8000/newsletter` -2. Submit the form with an email -3. Check the database: `SELECT * FROM newsletter_subscribers;` - ---- - -## Optional: Add Filament Admin - -Create a resource to manage subscribers from the admin panel: - -```bash -php artisan make:filament-resource Subscriber --model=Modules\\Newsletter\\Models\\Subscriber -``` - -Move the generated file to `modules/Newsletter/src/Filament/Resources/SubscriberResource.php` and update the namespace. - ---- - -## Next Steps - -**[Module Structure →](module-structure)** - -Deep dive into module conventions and best practices. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/modules/module-structure.md b/docs/modules/module-structure.md index 0eb6ba2..d7724df 100644 --- a/docs/modules/module-structure.md +++ b/docs/modules/module-structure.md @@ -1,143 +1,9 @@ -# Module Structure +# Module structure ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Source Files:** Example modules in [modules/](../../modules/) ---- +Bundled modules are under `packages/core/modules/{Name}`. Source is in src/, migrations in database/migrations, routes in routes/, and Blade views in views/ where applicable. Providers register their resources explicitly. -Every module in LaraCoreKit follows a consistent, predictable directory structure. Once you learn it for one module, you know it for all. +The package's composer.json owns autoload mappings, including separate factory/seeder namespaces. Website modules Docs and UIShowcase remain under the repository root's modules/ directory. ---- +Not every module has all possible directories or a dedicated test suite. Check actual source and integration tests rather than assuming a module contract is fully implemented. -## Standard Structure - -``` -modules/{ModuleName}/ -├── src/ ← PHP source (PSR-4 autoloaded) -│ ├── {Module}ServiceProvider.php ← REQUIRED: registers everything -│ ├── Models/ ← Eloquent models -│ │ └── {Model}.php -│ ├── Http/ -│ │ ├── Controllers/ ← Traditional controllers -│ │ │ └── {Model}Controller.php -│ │ └── Livewire/ ← Livewire components -│ │ └── {Component}.php -│ ├── Filament/ -│ │ ├── Resources/ ← Filament admin resources -│ │ │ └── {Model}Resource.php -│ │ └── Pages/ ← Custom admin pages -│ └── Services/ ← Business logic services -│ └── {Module}Service.php -├── database/ -│ ├── migrations/ ← Module-specific migrations -│ │ └── *.php -│ └── seeders/ ← Module-specific seeders -│ └── {Module}Seeder.php -├── views/ ← Blade templates -│ └── {module}/ ← Namespaced folder -│ ├── livewire/ -│ │ └── *.blade.php -│ └── layouts/ -│ └── *.blade.php -└── routes/ - ├── web.php ← Frontend routes - └── api.php ← API routes (optional) -``` - ---- - -## Naming Conventions - -| What | Convention | Example | -|------|-----------|---------| -| Module directory | `PascalCase` | `Newsletter` | -| PHP namespace | `Modules\{Name}` | `Modules\Newsletter` | -| Service Provider | `{Name}ServiceProvider` | `NewsletterServiceProvider` | -| View namespace | lowercase | `newsletter::` | -| Livewire component | `{module}.{component}` | `newsletter.subscribe` | -| Database table prefix | `{module}_` | `blog_posts` | -| Config file | `{module}.php` | `newsletter.php` | - ---- - -## What the Service Provider Does - -The ServiceProvider is the **only required file** in every module. It bootstraps everything: - -```php -class BlogServiceProvider extends ServiceProvider -{ - public function boot(): void - { - // Makes migrations run with php artisan migrate - $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); - - // Enables blog:: view namespace - $this->loadViewsFrom(__DIR__ . '/../views', 'blog'); - - // Registers Livewire components - Livewire::component('blog.blog-list', BlogList::class); - - // Registers routes - $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); - - // Publishes config (optional) - $this->publishes([ - __DIR__ . '/../config/blog.php' => config_path('blog.php'), - ], 'config'); - } -} -``` - ---- - -## Module Config - -Add optional configuration file: - -``` -modules/Blog/ -└── config/ - └── blog.php -``` - -```php -return [ - 'posts_per_page' => 12, - 'image_width' => 1200, - 'allow_comments' => false, -]; -``` - -Load in ServiceProvider: - -```php -$this->mergeConfigFrom(__DIR__ . '/../config/blog.php', 'blog'); -``` - -Use anywhere: - -```php -config('blog.posts_per_page'); // 12 -``` - ---- - -## Module Dependencies - -Modules can share data through Laravel's service container: - -```php -// Module A registers a service -$this->app->singleton(NewsletterService::class, fn ($app) => new NewsletterService()); - -// Module B resolves it -$service = app(NewsletterService::class); -``` - ---- - -## Next Steps - -**[Publishing Modules →](publishing)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/modules/publishing.md b/docs/modules/publishing.md index 3afa46a..7a53036 100644 --- a/docs/modules/publishing.md +++ b/docs/modules/publishing.md @@ -1,184 +1,9 @@ -# Publishing Modules +# Publishing modules ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Estimated Time:** 12 minutes -**Example:** [Demo Module Package](https://github.com/ProgrammerNomad/laracorekit-demo-module) ---- +Publish addons as Composer libraries with their own repository-root composer.json, version tags, license, docs and tests. Use Laravel provider discovery and namespaced views to avoid requiring manual source copies. -LaraCoreKit modules can be extracted and distributed as standalone **Composer packages**, making them reusable across projects and shareable with the community. +The reusable LaraCoreKit package is maintained in packages/core and must be exported to its own package repository before Packagist submission. Do not submit the website host as the core package. See the package release checklist for the release and subtree-split process. ---- - -## When to Publish a Module - -Consider publishing when your module: -- Solves a generic problem (newsletter, notifications, analytics) -- Is stable and tested -- Has clear documentation -- Has no tight coupling to your app's specific data - ---- - -## Step 1: Prepare the Module - -### 1.1 Create a new GitHub repository - -Name it: `{vendor}/{module-name}` (e.g., `programmernomad/laracorekit-newsletter`) - -### 1.2 Create `composer.json` - -```json -{ - "name": "programmernomad/laracorekit-newsletter", - "description": "Newsletter subscription module for LaraCoreKit", - "type": "library", - "license": "MIT", - "keywords": ["laravel", "laracorekit", "newsletter", "module"], - "authors": [ - { - "name": "Your Name", - "email": "you@laracorekit.com" - } - ], - "require": { - "php": "^8.3", - "laravel/framework": "^13.0", - "livewire/livewire": "^4.0" - }, - "autoload": { - "psr-4": { - "YourVendor\\Newsletter\\": "src/" - } - }, - "extra": { - "laravel": { - "providers": [ - "YourVendor\\Newsletter\\NewsletterServiceProvider" - ] - } - } -} -``` - -### 1.3 Add a README.md - -Explain: -- What the module does -- Installation steps -- Usage examples - ---- - -## Step 2: Directory Structure for a Package - -``` -laracorekit-newsletter/ -├── src/ -│ ├── NewsletterServiceProvider.php -│ ├── Models/ -│ │ └── Subscriber.php -│ └── Http/ -│ └── Livewire/ -│ └── Subscribe.php -├── database/ -│ └── migrations/ -│ └── 2024_01_01_create_subscribers_table.php -├── views/ -│ └── newsletter/ -│ └── subscribe.blade.php -├── config/ -│ └── newsletter.php -├── composer.json -├── README.md -└── LICENSE -``` - ---- - -## Step 3: Update ServiceProvider for Package - -```php -class NewsletterServiceProvider extends ServiceProvider -{ - public function boot(): void - { - // Load migrations - $this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); - - // Load views - $this->loadViewsFrom(__DIR__ . '/../views', 'newsletter'); - - // Publish assets (optional) - $this->publishes([ - __DIR__ . '/../config/newsletter.php' => config_path('newsletter.php'), - __DIR__ . '/../views' => resource_path('views/vendor/newsletter'), - ], 'newsletter'); - - // Merge config - $this->mergeConfigFrom( - __DIR__ . '/../config/newsletter.php', 'newsletter' - ); - - // Register Livewire components - Livewire::component('newsletter.subscribe', Subscribe::class); - } -} -``` - ---- - -## Step 4: Publish to Packagist - -1. Push your code to GitHub -2. Visit [packagist.org](https://packagist.org) -3. Click **"Submit"** and enter your GitHub repo URL -4. Packagist auto-indexes it within minutes - ---- - -## Step 5: Install in Any LaraCoreKit Project - -```bash -composer require programmernomad/laracorekit-newsletter -php artisan migrate -``` - -Use in Blade: - -```blade -@livewire('newsletter.subscribe') -``` - ---- - -## Step 6: Enable Auto-discovery (Already Done) - -Because the `extra.laravel.providers` key is set in `composer.json`, the ServiceProvider is automatically registered by Laravel - no manual registration needed. - ---- - -## Versioning - -Follow **Semantic Versioning**: -- `1.0.0` - Initial stable release -- `1.0.1` - Bug fix -- `1.1.0` - New feature (backward compatible) -- `2.0.0` - Breaking change - ---- - -## Tagging Releases - -```bash -git tag v1.0.0 -git push origin v1.0.0 -``` - ---- - -## Next Steps - -**[Best Practices →](best-practices)** +State compatibility constraints accurately and test a clean consumer. Keep demo code and sample credentials out of release archives. Packagist counts downloads; it does not identify users. +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/package-release.md b/docs/package-release.md new file mode 100644 index 0000000..d950a7d --- /dev/null +++ b/docs/package-release.md @@ -0,0 +1,48 @@ +# Publishing the reusable package + +Package name: **`programmernomad/laracorekit`**. Package root: `packages/core`. It provides both public and admin features. The repository root is the demo/documentation host and must not be submitted as the reusable package. + +## One-time setup + +1. Use the selected distribution repository `ProgrammerNomad/laracorekit-package`. The Composer name remains `programmernomad/laracorekit`. +2. Export **only** `packages/core` to that repository. Update its Composer support links to the final repository. Include LICENSE, README, changelog and prebuilt frontend CSS. +3. Run clean-consumer installation and regression checks. Verify the archive excludes demo accounts, website, docs viewer and showcase. +4. Tag the first reviewed release, for example `v0.1.0`, in the package repository. Composer reads the version from the tag. +5. Submit that package repository to Packagist and enable its GitHub update integration. Keep API tokens in secret storage; never in source or screenshots. +6. Verify `composer require programmernomad/laracorekit:^0.1` from a fresh Laravel application. Only then remove the unreleased notices from website/README instructions. + +The source remains maintained in this monorepo. The distribution repository receives the package export through the synchronization workflow described below, preserving its own maintenance workflow. Its root contains the package's `composer.json`; never push the demo repository's root into it. Review compatibility and release notes before tagging. + +## Release checks + +```bash +composer validate --strict +composer --working-dir=packages/core validate --strict +composer audit --locked +npm ci +npm audit +npm run build:core +npm run build +composer test +composer phpstan +``` + +Run the documented clean-consumer smoke check as well. Keep the release blocked on unresolved security findings or installation failures. Publish release notes with migration, asset and view-override changes. + +## Adoption statistics + +Packagist exposes download totals and daily/monthly counts through its [statistics API](https://packagist.org/apidoc). They are not unique developers, new projects or active installations. CI and reinstallations affect counts. The package sends no telemetry and does not require registration. + +The host command `php artisan laracorekit:stats` records validated daily download snapshots on the local storage disk under `metrics/packagist/YYYY-MM-DD.json`. Missing packages produce no snapshot; invalid/network responses fail without inventing zeros. Repeated runs on the same UTC day reuse the existing snapshot. + +After registration, set `LARACOREKIT_COLLECT_STATS=true` on the website host and run Laravel's scheduler. The command is scheduled daily at 07:23 in the application's configured timezone. Keep the local storage disk persistent and backed up. The command uses a public API and needs no Packagist token. These snapshots are distribution metrics, not installation telemetry. + +`python tools/package-release.py` builds a package-only review ZIP and checksum manifest under private `storage/app/releases`. The manual **Package Release Preview** GitHub workflow runs checks and uploads the archive for review. Neither publishes to Packagist or pushes a package repository automatically. + +## Ongoing source synchronization + +The distribution repository's **Sync Package Source** workflow checks the public monorepo main branch daily at 08:17 UTC or on manual dispatch. Its maintained template is `.github/package-workflows/sync-source.yml` in the monorepo; the executable copy lives under `.github/workflows` in the distribution repository. + +It validates the monorepo source, builds the package, tests a clean consumer, and opens a draft package-only update PR. It skips when extraction has not reached main yet, nothing has changed, or a prior package-sync PR is waiting for review. It preserves the distribution repository's maintenance workflow and never merges or tags a release. + +The job uses the distribution repository's own short-lived GITHUB_TOKEN, so no cross-repository personal token or Packagist secret is needed. The distribution repository must allow Actions to create pull requests. Review source updates before merging; then create a reviewed release tag for Packagist indexing. diff --git a/docs/project-structure.md b/docs/project-structure.md index ab7f086..6174fe9 100644 --- a/docs/project-structure.md +++ b/docs/project-structure.md @@ -1,639 +1,46 @@ -# Project Structure +# Project structure ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Estimated Time:** 10 minutes -**Difficulty:** Beginner to Intermediate ---- +The reusable package and the demo host have separate responsibilities. -Understanding LaraCoreKit's modular structure is essential for efficient development. This guide explains how the codebase is organized and where to find everything. - ---- - -## High-Level Overview - -``` +```text LaraCoreKit/ -├── app/ # Core application code -├── bootstrap/ # Framework bootstrap files -├── config/ # Configuration files -├── database/ # Migrations, seeders, factories -├── modules/ # Feature modules (THE KEY) -├── public/ # Web server document root -├── resources/ # Views, assets, lang files -├── routes/ # Route definitions -├── storage/ # Generated files, logs, cache -├── tests/ # Automated tests -└── vendor/ # Composer dependencies -``` - ---- - -## Core Directories - -### `/app` - Application Core - -Contains base application code that's **not** part of modules. Keep this minimal. - -``` -app/ -├── Console/ -│ └── Kernel.php # Console kernel -├── Exceptions/ -│ └── Handler.php # Exception handler -├── Http/ -│ ├── Controllers/ # Global controllers (minimal) -│ ├── Middleware/ # Global middleware -│ └── Kernel.php # HTTP kernel -├── Models/ -│ └── User.php # Base User model -├── Providers/ -│ ├── AppServiceProvider.php # Application services -│ └── ModuleServiceProvider.php # Loads modules -└── Filament/ - └── Pages/ # Global Filament pages (if any) -``` - -**Key Files:** - -- `Providers/ModuleServiceProvider.php` - Discovers and registers modules -- `Models/User.php` - Base user model (can be extended by User module) -- `Http/Kernel.php` - Registers global middleware - ---- - -### `/config` - Configuration - -All configuration files following Laravel conventions. - -``` -config/ -├── app.php # Application settings -├── auth.php # Authentication config -├── database.php # Database connections -├── filesystems.php # Storage disks -├── modules.php # Module configuration -├── permission.php # Spatie permission config -├── filament.php # Filament admin config -├── cache.php # Cache drivers -├── mail.php # Email settings -├── queue.php # Queue connections -└── services.php # Third-party services -``` - -**Key Configuration Files:** - -#### `config/modules.php` - -Defines enabled modules and their metadata: - -```php -return [ - 'namespace' => 'Modules', - - 'paths' => [ - 'modules' => base_path('modules'), - ], - - 'enabled' => [ - 'Core', - 'Auth', - 'User', - 'Blog', - 'Media', - 'Settings', - ], - - 'scan' => [ - 'enabled' => true, - 'paths' => [ - base_path('modules'), - ], - ], -]; -``` - ---- - -### `/modules` - Feature Modules - -**This is where the magic happens.** Each module is self-contained. - -``` -modules/ -├── Core/ # Base module (required) -│ ├── composer.json -│ └── src/ -│ ├── CoreServiceProvider.php -│ ├── Http/ -│ │ ├── Controllers/ -│ │ └── Middleware/ -│ ├── resources/ -│ │ ├── views/ -│ │ └── lang/ -│ └── routes/ -│ └── web.php -│ -├── Auth/ # Authentication module -│ └── src/ -│ ├── AuthServiceProvider.php -│ ├── Http/ -│ │ ├── Controllers/ -│ │ │ ├── LoginController.php -│ │ │ ├── RegisterController.php -│ │ │ └── PasswordResetController.php -│ │ └── Middleware/ -│ ├── resources/ -│ │ └── views/ -│ │ ├── login.blade.php -│ │ └── register.blade.php -│ └── routes/ -│ -├── Blog/ # Blog module -│ └── src/ -│ ├── BlogServiceProvider.php -│ ├── Models/ -│ │ └── Blog.php -│ ├── Filament/ -│ │ └── Resources/ -│ │ └── BlogResource.php -│ ├── Http/ -│ │ ├── Controllers/ -│ │ └── Livewire/ -│ │ ├── BlogList.php -│ │ └── BlogShow.php -│ ├── Database/ -│ │ ├── migrations/ -│ │ └── seeders/ -│ └── resources/ -│ ├── views/ -│ └── lang/ -│ -├── User/ # User management module -├── Media/ # Media management module -└── Settings/ # Settings module -``` - ---- - -## Module Structure (Standard) - -Every module follows this structure: - -``` -ModuleName/ -├── composer.json # Module metadata -├── README.md # Module documentation -└── src/ - ├── ModuleNameServiceProvider.php # Registers module - │ - ├── Models/ # Eloquent models - │ ├── Post.php - │ └── Category.php - │ - ├── Http/ - │ ├── Controllers/ # Controllers - │ │ └── PostController.php - │ ├── Middleware/ # Module middleware - │ │ └── CheckPostOwner.php - │ └── Livewire/ # Livewire components - │ └── PostForm.php - │ - ├── Filament/ # Filament admin - │ ├── Resources/ - │ │ └── PostResource.php - │ └── Pages/ - │ └── CustomPage.php - │ - ├── Console/ # Artisan commands - │ └── Commands/ - │ └── ImportPosts.php - │ - ├── Database/ - │ ├── migrations/ # Module migrations - │ ├── seeders/ # Module seeders - │ └── factories/ # Model factories - │ - ├── resources/ - │ ├── views/ # Blade views - │ │ ├── index.blade.php - │ │ └── show.blade.php - │ ├── lang/ # Translations - │ │ ├── en.json - │ │ └── hi.json - │ └── assets/ # Module assets (optional) - │ - ├── routes/ - │ ├── web.php # Web routes - │ └── api.php # API routes - │ - ├── config/ - │ └── module-name.php # Module config - │ - └── Tests/ # Module tests - ├── Unit/ - └── Feature/ -``` - ---- - -## Resources - -### `/resources` - Views & Assets - -``` -resources/ -├── views/ -│ ├── layouts/ # Global layouts -│ │ ├── app.blade.php -│ │ ├── guest.blade.php -│ │ └── admin.blade.php -│ ├── components/ # Blade components -│ │ ├── button.blade.php -│ │ └── card.blade.php -│ └── welcome.blade.php # Homepage -│ -├── css/ -│ └── app.css # Tailwind entry point -│ -├── js/ -│ ├── app.js # Vite entry point -│ └── bootstrap.js # Bootstrap JavaScript -│ -└── lang/ # Global translations (optional) - ├── en.json - ├── hi.json - └── ar.json -``` - -**Important:** - -- Module-specific views should live in `modules/{Module}/resources/views/` -- Global layouts and shared components go here -- Tailwind CSS compiles from `resources/css/app.css` - ---- - -## Routes - -### `/routes` - Routing - + packages/core/ programmernomad/laracorekit + composer.json package dependencies and discovery + src/CoreServiceProvider.php configuration and module registration + src/Console/ installer and administrator creation + src/Filament/ default package admin panel + config/laracorekit.php package defaults + modules/ Core, Auth, User, Settings, Media, Blog + resources/dist/ prebuilt public frontend CSS + app/ demo/site application and custom panel + modules/Docs/ website documentation viewer + modules/UIShowcase/ component demonstration application + resources/views/site/ marketing homepage and changelog + resources/views/vendor/core/ host override for shared layout + database/seeders/ safe defaults and guarded demo seeders + docs/ documentation source ``` -routes/ -├── web.php # Web routes -├── api.php # API routes -└── console.php # Console routes (Closure-based commands) -``` - -**How Routes Work:** - -1. **Global routes** in `routes/web.php` -2. **Module routes** in `modules/{Module}/src/routes/web.php` -3. Module routes are registered by `ModuleServiceProvider` - -Example module route registration: - -```php -// modules/Blog/src/BlogServiceProvider.php -public function boot() -{ - $this->loadRoutesFrom(__DIR__.'/routes/web.php'); -} -``` - ---- - -## Database - -### `/database` - Database Files - -``` -database/ -├── migrations/ # Global migrations -│ ├── 2024_01_01_000000_create_users_table.php -│ └── 2024_01_01_000001_create_password_resets_table.php -│ -├── seeders/ # Global seeders -│ ├── DatabaseSeeder.php -│ └── RoleSeeder.php -│ -└── factories/ # Model factories - └── UserFactory.php -``` - -**Note:** - -- Module-specific migrations are in `modules/{Module}/src/Database/migrations/` -- Module migrations are auto-discovered and loaded by the module service provider - ---- - -## Public Assets - -### `/public` - Web Root - -``` -public/ -├── index.php # Application entry point -├── .htaccess # Apache rewrite rules -├── robots.txt # SEO robots file -├── favicon.ico # Site favicon -│ -├── build/ # Vite build output -│ ├── manifest.json -│ └── assets/ -│ -├── storage/ # Symlink to storage/app/public -│ └── uploads/ -│ -├── css/ # Additional CSS (if any) -├── js/ # Additional JS (if any) -├── images/ # Static images -└── fonts/ # Web fonts -``` - -**Key Points:** - -- Never edit files in `public/build/` - they're auto-generated -- Use `php artisan storage:link` to create storage symlink -- Static assets can be accessed via `/images/logo.png` - ---- - -## Storage - -### `/storage` - Generated Files - -``` -storage/ -├── app/ -│ ├── public/ # Publicly accessible files -│ │ └── uploads/ -│ └── private/ # Private files -│ -├── framework/ -│ ├── cache/ # Framework cache -│ ├── sessions/ # Session files -│ └── views/ # Compiled Blade views -│ -└── logs/ - └── laravel.log # Application logs -``` - -**Permissions:** -Storage directory must be writable: - -```bash -chmod -R 775 storage -chmod -R 775 bootstrap/cache -``` - ---- - -## Testing - -### `/tests` - Automated Tests - -``` -tests/ -├── TestCase.php # Base test case -├── CreatesApplication.php # Test trait -│ -├── Feature/ # Feature tests -│ ├── Auth/ -│ │ ├── LoginTest.php -│ │ └── RegisterTest.php -│ └── Blog/ -│ └── BlogCrudTest.php -│ -└── Unit/ # Unit tests - └── Models/ - └── UserTest.php -``` - -**Module Tests:** - -Each module can have its own tests in `modules/{Module}/src/Tests/` - ---- - -## Configuration Files - -### Key Configuration - -#### `composer.json` - -Defines PHP dependencies and PSR-4 autoloading: - -```json -{ - "autoload": { - "psr-4": { - "App\\": "app/", - "Modules\\": "modules/", - "Database\\Seeders\\": "database/seeders/" - } - } -} -``` - -#### `package.json` - -Defines JavaScript dependencies: - -```json -{ - "devDependencies": { - "@tailwindcss/forms": "^0.5.0", - "tailwindcss": "^4.0.0", - "vite": "^5.0.0", - "laravel-vite-plugin": "^1.0.0" - } -} -``` - -#### `vite.config.js` - -Vite build configuration: - -```javascript -import { defineConfig } from 'vite'; -import laravel from 'laravel-vite-plugin'; - -export default defineConfig({ - plugins: [ - laravel({ - input: ['resources/css/app.css', 'resources/js/app.js'], - refresh: true, - }), - ], -}); -``` - -#### `tailwind.config.js` - -TailwindCSS configuration: - -```javascript -export default { - content: [ - './resources/**/*.blade.php', - './resources/**/*.js', - './modules/**/resources/**/*.blade.php', - './vendor/filament/**/*.blade.php', - ], - theme: { - extend: {}, - }, - plugins: [ - require('@tailwindcss/forms'), - ], -} -``` - ---- - -## Important Files - -### Root Directory Files - -``` -.env # Environment configuration (DO NOT COMMIT) -.env.example # Environment template -.gitignore # Git ignore rules -artisan # Artisan CLI tool -composer.json # PHP dependencies -composer.lock # Locked PHP versions -package.json # JavaScript dependencies -package-lock.json # Locked JS versions -phpunit.xml # PHPUnit configuration -README.md # Project readme -``` - ---- - -## File Naming Conventions - -### Controllers - -``` -{Name}Controller.php # Standard controller -{Name}ApiController.php # API controller -``` - -Examples: -- `PostController.php` -- `UserApiController.php` - -### Models - -``` -{SingularName}.php # Model name -``` - -Examples: -- `Post.php` -- `BlogCategory.php` - -### Migrations - -``` -{timestamp}_create_{table}_table.php -{timestamp}_add_{field}_to_{table}_table.php -``` - -Examples: -- `2024_01_01_000000_create_posts_table.php` -- `2024_01_02_000000_add_featured_to_posts_table.php` - -### Blade Views - -``` -{name}.blade.php # Standard view -{name}-{variant}.blade.php # Variant view -``` - -Examples: -- `index.blade.php` -- `show.blade.php` -- `form-create.blade.php` - ---- - -## Module Discovery - -### How Modules Are Loaded - -1. **ModuleServiceProvider** reads `config/modules.php` -2. Scans directories in `paths.modules` -3. Discovers `*ServiceProvider.php` files -4. Auto-registers enabled modules -5. Loads routes, migrations, views, translations - -### Module Registration Order - -Modules are loaded in the order specified in `config/modules.php`: - -```php -'enabled' => [ - 'Core', // 1. Loaded first (provides base functionality) - 'Auth', // 2. Authentication - 'User', // 3. User management - 'Blog', // 4. Blog features - 'Media', // 5. Media management - 'Settings', // 6. Settings last -], -``` - -**Important:** `Core` module must always be first. - ---- - -## Autoloading - -### PSR-4 Autoloading Map - -``` -App\ → app/ -Modules\ → modules/ -Database\Seeders\ → database/seeders/ -``` - -### Refresh Autoloader - -After adding new classes: - -```bash -composer dump-autoload -``` +Composer loads package namespaces and Laravel discovers `LaraCoreKit\Core\CoreServiceProvider`. It registers enabled module providers from `config/laracorekit.php` and the default panel when enabled. The host disables the default panel and provides its own. There is one registration contract; modules are no longer registered individually in the host's `bootstrap/providers.php`. ---- +## Public and admin features -## Next Steps +Auth and Blog register public routes and Livewire components. User, Settings, Blog and Media provide the models, migrations and admin resources. Core supplies the shared layout, locale component and middleware. The homepage, changelog, docs and UI demonstration are website responsibilities and are excluded from the Composer package. -Now that you understand the structure: +The first release bundles functional modules in one package to keep compatibility and releases manageable. Their internal boundaries remain available for future extraction. Installing the bundle installs its PHP dependencies; disabling Blog does not uninstall Media Library or remove database tables. -1. **[Learn Module System →](core/modules-system.md)** -2. **[Create Your First Module →](modules/create-module.md)** -3. **[Explore Configuration →](configuration.md)** +## Application ownership ---- +Keep application logic and view overrides outside `vendor/`. Your app owns its homepage, environment, mail, database, storage, queues and deployment. The installer publishes configuration and prebuilt public CSS. It does not overwrite your routes or create demo accounts. The default admin uses Filament's theme; the host's custom admin theme is separate. -## Quick Reference +The public model namespaces remain `Modules\...` for compatibility with existing code. Applications that already use those namespaces or the package's route names need conflict resolution. Existing applications must review user-model and data compatibility before installation. -| Directory | Purpose | Edit Frequency | -|-----------|---------|----------------| -| `/modules` | Feature modules | | -| `/resources/views` | Blade templates | | -| `/config` | Configuration | | -| `/routes` | Route definitions | | -| `/public` | Static assets | | -| `/app` | Core app code | | -| `/database` | Migrations/Seeders | | -| `/tests` | Automated tests | | +## Extension points ---- +- Publish config with `php artisan vendor:publish --tag=laracorekit-config`. +- Override namespaced Blade views under `resources/views/vendor/{namespace}`. +- Disable the packaged panel and register resources in your own Filament panel. +- Use normal Laravel packages with auto-discovered providers for additional modules. +- Re-publish assets after updates with `php artisan vendor:publish --tag=laracorekit-assets --force`. -**Understanding the structure is the first step to mastering LaraCoreKit!** +See [installation](/docs/installation) and [upgrade notes](/docs/upgrade-guide). diff --git a/docs/quick-start.md b/docs/quick-start.md index 0ccac5d..ef83176 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -1,405 +1,7 @@ -# Quick Start +# Quick start ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Estimated Time:** 5 minutes -**Difficulty:** Beginner ---- +Choose the package for your own application or the GitHub host to explore the website, documentation and component showcase. The package includes public and admin features; it is not admin-only. -Get LaraCoreKit running locally in just a few commands. This guide assumes you have PHP 8.3+, Composer, and Node.js installed. - ---- - -## Prerequisites - -Before starting, ensure you have: - -- PHP 8.3 or higher -- Composer 2.x -- Node.js 18+ & npm -- MySQL, PostgreSQL, or SQLite -- Git - -### Check your environment: - -```bash -php -v # Should show 8.2+ -composer -V # Should show 2.x -node -v # Should show 18+ -``` - ---- - -## Installation (5 Minutes) - -### Step 1: Clone the Repository - -```bash -git clone https://github.com/ProgrammerNomad/LaraCoreKit.git -cd LaraCoreKit -``` - -**Expected output:** -``` -Cloning into 'LaraCoreKit'... -remote: Enumerating objects: 1523, done. -remote: Counting objects: 100% (1523/1523), done. -``` - ---- - -### Step 2: Install Dependencies - -```bash -composer install -npm install -``` - -**Expected output:** -``` -Installing dependencies from lock file -Package operations: 127 installs, 0 updates, 0 removals - - Installing doctrine/inflector (2.0.8) - - Installing illuminate/contracts (v11.x-dev) - ... -``` - -⏱ **This takes ~2-3 minutes** - ---- - -### Step 3: Environment Setup - -```bash -cp .env.example .env -php artisan key:generate -``` - -**Expected output:** -``` -Application key set successfully. -``` - ---- - -### Step 4: Configure Database - -Edit `.env` file: - -**Option A: SQLite (Easiest - Recommended for local)** - -```env -DB_CONNECTION=sqlite -# DB_DATABASE=database/database.sqlite # Commented out for SQLite -``` - -Create the database file: - -```bash -touch database/database.sqlite -``` - -**Option B: MySQL** - -```env -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laracorekit -DB_USERNAME=root -DB_PASSWORD=your_password -``` - ---- - -### Step 5: Run Migrations & Seeders - -```bash -php artisan migrate --seed -``` - -**Expected output:** -``` -Migration table created successfully. -Migrating: 2024_01_01_000000_create_users_table -Migrated: 2024_01_01_000000_create_users_table (45.32ms) -... -Seeding: DatabaseSeeder -Seeded: DatabaseSeeder (123.45ms) -Database seeding completed successfully. -``` - -This creates: -- Database tables -- Demo admin user -- Sample blog posts -- Default roles & permissions - ---- - -### Step 6: Build Frontend Assets - -```bash -npm run build -``` - -**Expected output:** -``` -vite v5.0.0 building for production... -✓ 1234 modules transformed. -dist/assets/app-a1b2c3d4.css 123.45 kB -dist/assets/app-a1b2c3d4.js 456.78 kB -✓ built in 3.21s -``` - ---- - -### Step 7: Start Development Server - -```bash -php artisan serve -``` - -**Expected output:** -``` - INFO Server running on [http://127.0.0.1:8000]. - - Press Ctrl+C to stop the server -``` - ---- - -## Verify Installation - -### 1. Visit the Homepage - -Open in browser: **http://localhost:8000** - -You should see the LaraCoreKit landing page. - ---- - -### 2. Create Admin User - -Open a **new terminal** and run: - -```bash -php artisan filament:user -``` - -**Follow the prompts:** - -``` - Name: - > Admin User - - Email address: - > admin@laracorekit.com - - Password: - > ********** - - Success! Admin user created. -``` - ---- - -### 3. Access Admin Panel - -Visit: **http://localhost:8000/admin** - -Login with: -- **Email:** admin@laracorekit.com -- **Password:** (what you set above) - -You should see the Filament admin dashboard. - ---- - -### 4. View UI Components - -Visit: **http://localhost:8000/ui-showcase** - -Explore all 175+ UI components organized by category. - ---- - -## What You Just Installed - -### Modules Included: - -| Module | Description | Admin | Frontend | -|--------|-------------|-------|----------| -| **Core** | Module system, layouts, locale | - | | -| **Auth** | Login, register, email verify | | | -| **User** | User profiles, roles | | | -| **Blog** | Multilingual blog system | | | -| **Settings** | Site configuration | | API | -| **Media** | File uploads, gallery | | | - ---- - -## Next Steps - -### 1. Explore the Codebase - -```bash -# View project structure -tree -L 2 -I 'vendor|node_modules' - -# Or just explore in your code editor -code . -``` - -### 2. Understand the Module System - -Read: **[Module System Guide](core/modules-system.md)** - -This is LaraCoreKit's killer feature - ---- - -### 3. Create Your First Module - -Follow: **[Create a Module](modules/create-module.md)** - -Learn how to build a custom module step-by-step. - ---- - -### 4. Customize the UI - -- Check out the **[UI Components](frontend/ui-showcase.md)** -- Modify **[Layouts](frontend/layouts.md)** -- Learn **[Livewire Basics](frontend/livewire.md)** - ---- - -### 5. Configure Settings - -Visit: **http://localhost:8000/admin/settings** - -Configure: -- Site name and description -- SEO defaults -- Supported languages -- Email settings - ---- - -## Development Workflow - -### Run in Development Mode - -```bash -# Terminal 1: Laravel server -php artisan serve - -# Terminal 2: Vite dev server (hot reload) -npm run dev -``` - -**Access at:** http://localhost:8000 - -Changes to CSS/JS will hot-reload automatically. - ---- - -### Useful Commands - -```bash -# Clear all caches -php artisan optimize:clear - -# Run tests -php artisan test - -# Format code (PSR-12) -./vendor/bin/pint - -# Generate IDE helpers -php artisan ide-helper:generate - -# Run migrations fresh -php artisan migrate:fresh --seed -``` - ---- - -## Troubleshooting - -### Issue: "Class not found" errors - -**Solution:** -```bash -composer dump-autoload -php artisan optimize:clear -``` - ---- - -### Issue: Permission denied on storage/logs - -**Solution:** -```bash -chmod -R 775 storage bootstrap/cache -``` - ---- - -### Issue: Vite build fails - -**Solution:** -```bash -rm -rf node_modules package-lock.json -npm install -npm run build -``` - ---- - -### Issue: Database connection failed - -**Solution:** - -1. Check `.env` database credentials -2. Ensure database server is running -3. For SQLite, verify file exists: - ```bash - touch database/database.sqlite - ``` - ---- - -## Demo Credentials - -If using the live demo: - -**Website:** https://www.laracorekit.com/ - -**Admin Panel:** https://www.laracorekit.com/admin - -Contact for demo credentials if needed. - ---- - -## Get Help - -- **[Full Documentation](introduction.md)** -- **[GitHub Issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues)** - ---- - -## What's Next? - -Now that you have LaraCoreKit running: - -1. **[Understand Project Structure →](project-structure.md)** -2. **[Learn Module System →](core/modules-system.md)** -3. **[Create Your First Module →](modules/create-module.md)** - ---- - -**Congratulations! You're ready to build something amazing.** +Follow the [installation guide](/docs/installation) for exact commands, release status and prerequisites. The package can be installed directly from GitHub now; the stable Packagist release is pending. +After installation, visit `/blog`, `/login` and `/admin`. Configure your own homepage. Create an administrator interactively with `php artisan laracorekit:admin`; there are no default production credentials. diff --git a/docs/upgrade-guide.md b/docs/upgrade-guide.md new file mode 100644 index 0000000..ad04540 --- /dev/null +++ b/docs/upgrade-guide.md @@ -0,0 +1,27 @@ +# Upgrade guide + +## Migrating an existing LaraCoreKit checkout to the package layout + +Back up the application and database. Deploy source and lockfile together. The functional modules have moved from `modules/{Core,Auth,User,Settings,Media,Blog}` to `packages/core/modules`. Their public `Modules\...` namespaces and migration filenames are preserved. The media migration moved into the package with the same filename so an existing migration record prevents it from being rerun. + +Remove old individual module provider entries and obsolete `config/modules.php`. The package provider reads `config/laracorekit.php`. The host still registers its custom Filament panel and UIShowcase provider. Home and Changelog are now application Livewire components, with views under `resources/views/site`. + +Sample seeders moved into `Database\Seeders`. Normal seeding creates roles only, unless explicit demo mode is enabled. The demo reset package calls the default seeder, which delegates to the guarded DemoSeeder in demo mode. Do not run `migrate:fresh` against an existing customer database. + +```bash +composer install +php artisan optimize:clear +php artisan migrate +php artisan vendor:publish --tag=laracorekit-assets --force +npm ci +npm run build:core +npm run build +``` + +Review your copied view overrides against the package changes and verify authentication, resource permissions, blog publication and uploads in staging before deployment. Any public demo passwords previously used in a real deployment must be replaced. + +## Updating package consumers + +After stable publication, use `composer update programmernomad/laracorekit --with-all-dependencies`, review the lockfile and release notes, run migrations and republish package assets. Application view overrides are preserved but may need manual changes. Minor releases before 1.0 can include breaking changes; pin a tested minor series. + +The migration does not automatically turn the demo host into a minimal customer app. For a clean application use the package installation path. diff --git a/modules/Auth/src/AuthServiceProvider.php b/modules/Auth/src/AuthServiceProvider.php deleted file mode 100644 index 8a71d51..0000000 --- a/modules/Auth/src/AuthServiceProvider.php +++ /dev/null @@ -1,27 +0,0 @@ -loadViewsFrom(__DIR__ . '/../views', 'auth'); - - \Illuminate\Support\Facades\Route::middleware('web') - ->group(__DIR__ . '/../routes/web.php'); - - Livewire::component('auth.login', \Modules\Auth\Http\Livewire\Login::class); - Livewire::component('auth.register', \Modules\Auth\Http\Livewire\Register::class); - Livewire::component('auth.forgot-password', \Modules\Auth\Http\Livewire\ForgotPassword::class); - Livewire::component('auth.dashboard', \Modules\Auth\Http\Livewire\Dashboard::class); - } -} diff --git a/modules/Blog/src/BlogServiceProvider.php b/modules/Blog/src/BlogServiceProvider.php deleted file mode 100644 index 1436cc9..0000000 --- a/modules/Blog/src/BlogServiceProvider.php +++ /dev/null @@ -1,31 +0,0 @@ -loadMigrationsFrom(__DIR__ . '/../database/migrations'); - - // Load views - $this->loadViewsFrom(__DIR__ . '/../views', 'blog'); - - // Register Livewire components - Livewire::component('blog.blog-list', \Modules\Blog\Http\Livewire\BlogList::class); - Livewire::component('blog.blog-detail', \Modules\Blog\Http\Livewire\BlogDetail::class); - - // Load routes - \Illuminate\Support\Facades\Route::middleware('web') - ->group(__DIR__ . '/../routes/web.php'); - } -} diff --git a/modules/Core/views/layouts/app.blade.php b/modules/Core/views/layouts/app.blade.php deleted file mode 100644 index 2ffaa6d..0000000 --- a/modules/Core/views/layouts/app.blade.php +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - - @php - $pageTitle = trim((string)($title ?? '')) ?: 'LaraCoreKit - Modular Laravel Starter Kit with Admin Panel, UI Components & Multilingual Support'; - $pageDescription = trim((string)($metaDescription ?? '')) ?: 'Build production-ready Laravel apps in minutes with LaraCoreKit. Includes Filament admin, 175+ UI components, multilingual support, and modular architecture.'; - $pageKeywords = trim((string)($metaKeywords ?? '')) ?: 'Laravel starter kit, Laravel admin panel, Filament, Livewire, Laravel boilerplate, Laravel template, multilingual Laravel, Laravel UI components, Laravel modular architecture'; - $pageRobots = trim((string)($robots ?? '')) ?: 'index, follow'; - $pageOgTitle = trim((string)($ogTitle ?? '')) ?: $pageTitle; - $pageOgDesc = trim((string)($ogDescription ?? '')) ?: $pageDescription; - $pageOgImage = trim((string)($ogImage ?? '')) ?: asset('images/og-preview.png'); - $pageOgType = trim((string)($ogType ?? '')) ?: 'website'; - @endphp - - {{ $pageTitle }} - - - - - - - - - - - - - - - - - - - - - - - - - - - @if(isset($structuredData) && trim((string)$structuredData) !== '') - {!! $structuredData !!} - @else - - @endif - - - - - - @vite(['resources/css/app.css', 'resources/js/app.js']) - @livewireStyles - - -
- - - - -
- {{ $slot }} -
- - - -
- - @livewireScripts - - - - diff --git a/modules/Core/views/livewire/home.blade.php b/modules/Core/views/livewire/home.blade.php deleted file mode 100644 index 3cf23ec..0000000 --- a/modules/Core/views/livewire/home.blade.php +++ /dev/null @@ -1,823 +0,0 @@ -
- -
-
-
-

- {{ __('LaraCoreKit') }} -

-

- {{ __('Build Production-Ready Laravel Apps in Minutes with Modular Architecture') }} -

-

- {{ __('Production-ready Laravel 13 starter with Filament Admin, Livewire, Multilingual Support (EN/HI/AR), Role-Based Permissions, and Modern UI') }} -

- -
-
-
- - -
-
-
- {{ __('Built with') }}: - - {{-- Laravel --}} - - - Laravel 13 - - - {{-- Livewire --}} - - - Livewire 4 - - - {{-- Filament (no simpleicon — use custom SVG) --}} - - - - - Filament 5 - - - {{-- TailwindCSS --}} - - - TailwindCSS 4 - - - {{-- Alpine.js --}} - - - Alpine.js 3 - - - {{-- PHP --}} - - - PHP 8.3 - - - {{-- Open Source badge --}} - - - - - {{ __('Open Source & Free') }} - -
-
-
- - -
-
-
- {{ __('Quick Start') }} -

- {{ __('Up and Running in 5 Minutes') }} -

-

- {{ __('No complex setup. Works out of the box.') }} -

-

- - {{ __('Works on Windows, Mac & Linux') }} -

-
- -
- -
- - - - bash - - -
- -
# Clone the repository
-git clone https://github.com/ProgrammerNomad/LaraCoreKit.git
-cd LaraCoreKit
-
-# Install dependencies
-composer install
-npm install
-
-# Setup environment
-cp .env.example .env
-php artisan key:generate
-
-# Setup database & seed demo data
-php artisan migrate --seed
-
-# Build frontend assets
-npm run build
-
-# Start development server
-php artisan serve
-
- - -
-
- - -
-
-
-

- {{ __('What is LaraCoreKit?') }} -

-
-
-

- {{ __('LaraCoreKit is a production-ready Laravel 13 starter kit designed for developers who want to build modern web applications quickly without reinventing the wheel.') }} -

-

- {{ __('It includes everything you need: Filament admin panel, Livewire components, multilingual support (English, Hindi, Arabic with RTL), role-based permissions, 175+ UI components, and a modular architecture that scales with your project.') }} -

-

- {{ __('Who is it for?') }} {{ __('Developers building SaaS applications, admin dashboards, multilingual websites, e-commerce platforms, or any Laravel project that needs a solid foundation.') }} -

-
-
-
- - -
-
-
-

- {{ __('Powerful Features') }} -

-

- {{ __('Everything you need to build modern web applications') }} -

-
- -
- -
-
- - - -
-

{{ __('Enterprise-Grade Role & Permission System') }}

-

{{ __('Complete RBAC with Spatie Permission package integrated with Filament') }}

-
- - -
-
- - - -
-

{{ __('Multilingual Support') }}

-

{{ __('JSON-based translations in English, Hindi, and Arabic with RTL support') }}

-
- - -
-
- - - -
-

{{ __('Filament Admin Panel') }}

-

{{ __('Beautiful admin interface with dark mode, resources, and custom pages') }}

-
- - -
-
- - - -
-

{{ __('Livewire 4 + Alpine.js') }}

-

{{ __('Reactive frontend components without writing JavaScript') }}

-
- - -
-
- - - -
-

{{ __('TailwindCSS 4') }}

-

{{ __('Modern utility-first CSS framework with custom design tokens') }}

-
- - -
-
- - - -
-

{{ __('Launch Faster with Pre-Built Architecture') }}

-

{{ __('SQLite for local dev, MySQL/PostgreSQL for production, with seeded data') }}

-
-
-
-
- - -
-
-
-

- {{ __('What Can You Build?') }} -

-

- {{ __('LaraCoreKit adapts to your vision') }} -

-
- -
- {{-- SaaS Dashboard --}} -
-
- -
-

{{ __('SaaS Dashboard') }}

-

{{ __('Multi-tenant SaaS with admin panel, user management, and subscription billing') }}

-
- - {{-- Admin Panel --}} -
-
- -
-

{{ __('Admin Panel') }}

-

{{ __('Content management system with Filament, CRUD operations, and advanced filters') }}

-
- - {{-- Multilingual Website --}} -
-
- -
-

{{ __('Multilingual Website') }}

-

{{ __('International websites with EN/HI/AR support, RTL layout, and locale switching') }}

-
- - {{-- Blog Platform --}} -
-
- -
-

{{ __('Blog Platform') }}

-

{{ __('SEO-optimized blog with categories, tags, rich text editor, and social sharing') }}

-
- - {{-- Portfolio Website --}} -
-
- -
-

{{ __('Portfolio Website') }}

-

{{ __('Showcase projects with media library, contact forms, and dynamic components') }}

-
- - {{-- E-commerce (Coming Soon) --}} -
-
- {{ __('Coming Soon') }} -
-
- -
-

{{ __('E-commerce Platform') }}

-

{{ __('Full online store with product management, cart, checkout, and payment gateways') }}

-
-
-
-
- - -
-
-
-

- {{ __('Why Not Plain Laravel?') }} -

-

- {{ __('See what you get out of the box') }} -

-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{ __('Feature') }}{{ __('Plain Laravel') }}{{ __('LaraCoreKit') }}
{{ __('Authentication System') }}{{ __('Manual setup') }}
{{ __('Admin Panel') }}{{ __('Build from scratch') }}Filament 5
{{ __('Multilingual Support') }}{{ __('Manual implementation') }}EN/HI/AR + RTL
{{ __('UI Components') }}{{ __('From scratch') }}175+ Components
{{ __('Role & Permissions') }}{{ __('Complex setup') }}
{{ __('Dark Mode') }}{{ __('Manual CSS') }}
{{ __('Time to Production') }}2-4 {{ __('weeks') }}5 {{ __('minutes') }}
-
-
-
- - -
-
-
-

- {{ __('What Can You Build?') }} -

-

- {{ __('LaraCoreKit adapts to your vision') }} -

-
- -
- {{-- SaaS Dashboard --}} -
-
- -
-

{{ __('SaaS Dashboard') }}

-

{{ __('Multi-tenant SaaS with admin panel, user management, and subscription billing') }}

-
- - {{-- Admin Panel --}} -
-
- -
-

{{ __('Admin Panel') }}

-

{{ __('Content management system with Filament, CRUD operations, and advanced filters') }}

-
- - {{-- Multilingual Website --}} -
-
- -
-

{{ __('Multilingual Website') }}

-

{{ __('International websites with EN/HI/AR support, RTL layout, and locale switching') }}

-
- - {{-- Blog Platform --}} -
-
- -
-

{{ __('Blog Platform') }}

-

{{ __('SEO-optimized blog with categories, tags, rich text editor, and social sharing') }}

-
- - {{-- Portfolio Website --}} -
-
- -
-

{{ __('Portfolio Website') }}

-

{{ __('Showcase projects with media library, contact forms, and dynamic components') }}

-
- - {{-- E-commerce (Coming Soon) --}} -
-
- {{ __('Coming Soon') }} -
-
- -
-

{{ __('E-commerce Platform') }}

-

{{ __('Full online store with product management, cart, checkout, and payment gateways') }}

-
-
-
-
- - -
-
-
-

- {{ __('Why Not Plain Laravel?') }} -

-

- {{ __('See what you get out of the box') }} -

-
- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
{{ __('Feature') }}{{ __('Plain Laravel') }}{{ __('LaraCoreKit') }}
{{ __('Authentication System') }}{{ __('Manual setup') }}
{{ __('Admin Panel') }}{{ __('Build from scratch') }}Filament 5
{{ __('Multilingual Support') }}{{ __('Manual implementation') }}EN/HI/AR + RTL
{{ __('UI Components') }}{{ __('From scratch') }}175+ Components
{{ __('Role & Permissions') }}{{ __('Complex setup') }}
{{ __('Dark Mode') }}{{ __('Manual CSS') }}
{{ __('Time to Production') }}2-4 {{ __('weeks') }}5 {{ __('minutes') }}
-
-
-
- - - - - - @if($latestPosts->isNotEmpty()) -
-
-
-
-

- {{ __('Latest Articles') }} -

-

- {{ __('Discover our latest insights and tutorials') }} -

-
- - {{ __('View all') }} >> - -
- -
- @foreach($latestPosts as $blog) - - @endforeach -
-
-
- @endif - - -
-
-
-

- {{ __('Frequently Asked Questions') }} -

-

- {{ __('Everything you need to know') }} -

-
- -
- {{-- FAQ 1 --}} -
- -
-
- {{ __('LaraCoreKit is a production-ready Laravel 13 starter kit with Filament admin panel, Livewire components, multilingual support, 175+ UI components, and role-based permissions. It helps you build modern web applications faster.') }} -
-
-
- - {{-- FAQ 2 --}} -
- -
-
- {{ __('Yes! LaraCoreKit is 100% free and open-source under the MIT License. You can use it for personal or commercial projects without any restrictions.') }} -
-
-
- - {{-- FAQ 3 --}} -
- -
-
- {{ __('Yes! LaraCoreKit includes built-in support for English, Hindi, and Arabic with RTL (right-to-left) layout support. You can easily add more languages using Laravel JSON translation files.') }} -
-
-
- - {{-- FAQ 4 --}} -
- -
-
- {{ __('Absolutely! LaraCoreKit includes authentication, authorization with roles & permissions, Filament admin panel, and modular architecture - perfect for SaaS applications. Many developers use it as their SaaS foundation.') }} -
-
-
- - {{-- FAQ 5 --}} -
- -
-
- {{ __('LaraCoreKit is built with Laravel 13, Livewire 4, Filament 5, TailwindCSS 4, Alpine.js 3, and PHP 8.3. All modern, well-maintained technologies.') }} -
-
-
- - {{-- FAQ 6 --}} -
- -
-
- {{ __('Simply clone the repository, run composer install and npm install, set up your .env file, migrate the database, and start building. Full installation guide is in the Quick Start section above.') }} -
-
-
-
-
-
- - -
-
-

- {{ __('Start Building Your Laravel App in Minutes') }} -

-

- {{ __('100% Open Source. MIT Licensed. Free Forever.') }} -

- -
-
- - - -
- - diff --git a/modules/Docs/src/DocsServiceProvider.php b/modules/Docs/src/DocsServiceProvider.php index 4399b18..456eb94 100644 --- a/modules/Docs/src/DocsServiceProvider.php +++ b/modules/Docs/src/DocsServiceProvider.php @@ -2,6 +2,7 @@ namespace Modules\Docs; +use Illuminate\Support\Facades\Route; use Illuminate\Support\ServiceProvider; class DocsServiceProvider extends ServiceProvider @@ -14,10 +15,10 @@ public function register(): void public function boot(): void { // Load views - $this->loadViewsFrom(__DIR__ . '/../views', 'docs'); + $this->loadViewsFrom(__DIR__.'/../views', 'docs'); // Load routes - \Illuminate\Support\Facades\Route::middleware('web') - ->group(__DIR__ . '/../routes/web.php'); + Route::middleware('web') + ->group(__DIR__.'/../routes/web.php'); } } diff --git a/modules/Docs/src/Http/Controllers/DocsController.php b/modules/Docs/src/Http/Controllers/DocsController.php index 0482c75..61e4380 100644 --- a/modules/Docs/src/Http/Controllers/DocsController.php +++ b/modules/Docs/src/Http/Controllers/DocsController.php @@ -5,6 +5,7 @@ use Illuminate\Http\Request; use Illuminate\Routing\Controller; use Illuminate\Support\Facades\File; +use Illuminate\Support\Str; use Parsedown; class DocsController extends Controller @@ -16,6 +17,8 @@ class DocsController extends Controller ['title' => 'Introduction', 'slug' => 'introduction'], ['title' => 'Quick Start', 'slug' => 'quick-start'], ['title' => 'Installation', 'slug' => 'installation'], + ['title' => 'Package Release', 'slug' => 'package-release'], + ['title' => 'Upgrade Guide', 'slug' => 'upgrade-guide'], ['title' => 'Project Structure', 'slug' => 'project-structure'], ['title' => 'Configuration', 'slug' => 'configuration'], ], @@ -64,7 +67,7 @@ class DocsController extends Controller 'API' => [ 'icon' => '', 'items' => [ - ['title' => 'API Auth (Sanctum)', 'slug' => 'api/sanctum'], + ['title' => 'Optional API (Sanctum)', 'slug' => 'api/sanctum'], ['title' => 'Endpoints', 'slug' => 'api/endpoints'], ['title' => 'Authentication', 'slug' => 'api/authentication'], ], @@ -109,29 +112,29 @@ class DocsController extends Controller public function show(Request $request, string $page = 'introduction') { $docsPath = base_path('docs'); - $filePath = $docsPath . '/' . $page . '.md'; + abort_unless(preg_match('/\A[a-z0-9]+(?:[\/-][a-z0-9]+)*\z/', $page), 404); + $filePath = $docsPath.'/'.$page.'.md'; - if (!File::exists($filePath)) { + if (! File::exists($filePath)) { // Try index.md fallback - $filePath = $docsPath . '/' . $page . '/index.md'; - if (!File::exists($filePath)) { + $filePath = $docsPath.'/'.$page.'/index.md'; + if (! File::exists($filePath)) { abort(404, 'Documentation page not found.'); } } $markdown = File::get($filePath); - $parsedown = new Parsedown(); + $parsedown = new Parsedown; $parsedown->setSafeMode(false); $content = $parsedown->text($markdown); // CRITICAL: Escape PHP open/close tags inside code blocks to prevent PHP's parser // from interpreting PHP open and close tags in documentation code examples as actual PHP tags. // This must be done BEFORE passing content to Blade's {!! $content !!}. - $content = str_replace('<' . '?php', '<?php', $content); - $content = str_replace('<' . '?=', '<?=', $content); - $content = str_replace('?' . '>', '?>', $content); - + $content = str_replace('<'.'?php', '<?php', $content); + $content = str_replace('<'.'?=', '<?=', $content); + $content = str_replace('?'.'>', '?>', $content); // Extract title from H1 or filename preg_match('/]*>(.*?)<\/h1>/i', $content, $matches); @@ -152,7 +155,7 @@ public function show(Request $request, string $page = 'introduction') // Find prev/next pages $allPages = $this->getAllPageSlugs(); $currentIndex = array_search($page, $allPages); - $prevPage = ($currentIndex > 0) ? $this->findPageBySlug($allPages[$currentIndex - 1]) : null; + $prevPage = ($currentIndex !== false && $currentIndex > 0) ? $this->findPageBySlug($allPages[$currentIndex - 1]) : null; $nextPage = ($currentIndex !== false && $currentIndex < count($allPages) - 1) ? $this->findPageBySlug($allPages[$currentIndex + 1]) : null; // Flat array of all pages for search (pre-computed to avoid Blade arrow-function parsing issues) @@ -164,18 +167,60 @@ public function show(Request $request, string $page = 'introduction') } return view('docs::show', [ - 'content' => $content, - 'title' => $title, - 'page' => $page, - 'sidebar' => $this->sidebar, - 'meta' => $meta, - 'breadcrumb' => $breadcrumb, - 'prevPage' => $prevPage, - 'nextPage' => $nextPage, + 'content' => $content, + 'title' => $title, + 'page' => $page, + 'sidebar' => $this->sidebar, + 'meta' => $meta, + 'breadcrumb' => $breadcrumb, + 'prevPage' => $prevPage, + 'nextPage' => $nextPage, 'searchPages' => $searchPages, + 'description' => Str::limit(preg_replace('/\s+/', ' ', strip_tags($content)), 155), ]); } + public function publishedPages(): array + { + return array_values(array_filter($this->getAllPageSlugs(), fn (string $slug): bool => is_file(base_path('docs/'.$slug.'.md')) || is_file(base_path('docs/'.$slug.'/index.md')) + )); + } + + public function source(string $page) + { + abort_unless(in_array($page, $this->publishedPages(), true), 404); + $path = base_path('docs/'.$page.'.md'); + if (! is_file($path)) { + $path = base_path('docs/'.$page.'/index.md'); + } + + return response(file_get_contents($path), 200) + ->header('Content-Type', 'text/plain; charset=UTF-8') + ->header('X-Content-Type-Options', 'nosniff'); + } + + public function machineIndex() + { + $lines = [ + '# LaraCoreKit', '', + '> MIT-licensed Laravel 13 foundation for both public frontend and Filament 5 administration.', '', + 'Package: programmernomad/laracorekit. Source: packages/core in the GitHub monorepo.', + 'Status: standalone Packagist release pending. Install directly from the GitHub package repository using the documented Composer VCS setup.', + 'Includes Auth, User, Settings, Blog, Media and shared Core infrastructure.', + 'The demo website, docs viewer, showcase and demo accounts are not part of the package.', + 'API tokens, enforced email verification, billing and tenancy are not bundled.', '', + '## Documentation', '', + ]; + foreach ($this->publishedPages() as $slug) { + $page = $this->findPageBySlug($slug); + $lines[] = '- ['.$page['title'].']('.url('/docs/'.$slug).'): Markdown source at '.url('/docs-source/'.$slug); + } + $lines[] = ''; + $lines[] = 'Source: https://github.com/ProgrammerNomad/LaraCoreKit'; + + return response(implode("\n", $lines)."\n", 200)->header('Content-Type', 'text/plain; charset=UTF-8'); + } + protected function buildBreadcrumb(string $page): array { $parts = explode('/', $page); @@ -183,13 +228,14 @@ protected function buildBreadcrumb(string $page): array if (count($parts) > 1) { $crumbs[] = [ 'title' => ucwords($parts[0]), - 'slug' => null, + 'slug' => null, ]; } $crumbs[] = [ 'title' => ucwords(str_replace('-', ' ', end($parts))), - 'slug' => $page, + 'slug' => $page, ]; + return $crumbs; } @@ -201,6 +247,7 @@ protected function getAllPageSlugs(): array $slugs[] = $item['slug']; } } + return $slugs; } @@ -213,6 +260,7 @@ protected function findPageBySlug(string $slug): ?array } } } + return null; } } diff --git a/modules/Docs/views/show.blade.php b/modules/Docs/views/show.blade.php index b95626a..3b1cd6c 100644 --- a/modules/Docs/views/show.blade.php +++ b/modules/Docs/views/show.blade.php @@ -3,8 +3,9 @@ + {{ $title ?? 'Documentation' }} - LaraCoreKit - + @@ -12,15 +13,15 @@ - - + + - - + + @@ -154,13 +155,14 @@
- +
Docs
+
-

eQtN$dG?(^T^CJn?s}>iGeDqyHQJkJg(-2Wo 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 yKv+w;_|sXZE7 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 literal 0 HcmV?d00001 diff --git a/docs/images/screenshots/ui-showcase.png b/docs/images/screenshots/ui-showcase.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f866630e80ea89a5aa0d7a59064da02b1bea72 GIT binary patch literal 194588 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 hWkD=0>n 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 literal 0 HcmV?d00001 diff --git a/docs/implementation-report.md b/docs/implementation-report.md new file mode 100644 index 0000000..14c20f7 --- /dev/null +++ b/docs/implementation-report.md @@ -0,0 +1,61 @@ +# Package and website implementation report + +Reviewed 19 October 2026. + +## Distribution + +- Composer identity: `programmernomad/laracorekit` (public frontend **and** administration). +- Package source: `packages/core` in this monorepo. +- Public distribution repository: [ProgrammerNomad/laracorekit-package](https://github.com/ProgrammerNomad/laracorekit-package). +- Core, Auth, User, Settings, Media and Blog ship together initially. Marketing pages, Docs, UIShowcase, sample seeders and the demo dependency stay in the host. +- The package archive is about 84 KB compressed, excluding installed PHP dependencies. The export checks that host public assets are not accidentally copied into the package. +- Direct GitHub VCS installation was tested in an independent Laravel application. No stable package tag or Packagist registration has been published. + +## Installation and updates + +Package discovery registers the reusable providers. The explicit installer publishes configuration and prebuilt public CSS plus Filament assets, preserving existing configuration. Migrations run only when requested. Administrator creation is interactive and cannot promote an existing email address. + +Source namespaces and migration filenames are preserved for migration from older checkouts. `config/laracorekit.php` replaces the old application module-loader configuration. The default package panel is optional; the host demonstrates a custom panel. Existing custom user models and conflicting routes require integration planning. + +## Security and dependency changes + +- Updated compatible PHP dependencies and the frontend toolchain; Composer and npm audits report no advisories at validation time. +- Added login/registration/reset throttling and neutral password-reset responses. +- Kept known accounts behind explicit demo mode and removed email-based automatic administrator promotion. +- Enforced direct record access, settings save and blog publication permissions. +- Sanitized public blog HTML and excluded future/draft posts from public publication queries. +- Generated default avatars locally instead of sending names to an external avatar service. Used Filament's bundled font by default. +- Removed unused crawler, Alpine and syntax-highlighter dependencies from the host where applicable. + +These are tested improvements, not a claim of a completed independent security audit. + +## Website and documentation + +- Rebuilt the public homepage around the actual frontend/admin bundle, explicit installation paths and accurate release status. +- Added responsive site/showcase navigation, accessible theme controls and improved documentation search keyboard/focus behavior. +- Added permission-aware admin overview statistics and real screenshots from disposable fixtures. +- Corrected unsupported feature claims in installation, architecture, feature, deployment and addon guides. +- Added Markdown source endpoints, `/llms.txt`, page descriptions, source-code metadata and a dynamic documentation sitemap. A pre-existing local static sitemap containing localhost URLs was moved into private storage so it cannot mask the route. +- Split showcase libraries from ordinary public JavaScript: approximately 50 KB for the base bundle versus 304 KB previously. Package public CSS is approximately 46 KB uncompressed. + +## Validation + +- 24 PHPUnit tests, 95 assertions passed locally on PHP 8.3. +- Pint and PHPStan passed. +- Root and package Composer schemas validated strictly. +- Composer and npm dependency audits reported zero advisories. +- Package and host production builds passed. +- Independent consumer installation passed public/admin login routes, asset availability, safe seed defaults, no demo dependency, and cached routes/configuration. +- Desktop/mobile browser checks covered primary public/admin pages and all 46 linked documentation pages. All 122 linked showcase URLs returned HTTP 200. + +## Automation and external status + +Weekly Dependabot proposals, scheduled dependency audits, PHP locked/compatible CI lanes, clean-consumer CI and a manual package-preview archive workflow are configured in source. + +The distribution repository has a daily source-sync workflow using its own short-lived GITHUB_TOKEN. It proposes draft PRs rather than merging or tagging automatically, and waits for the extraction to reach the monorepo main branch. + +The first remote run [39212465937](https://github.com/ProgrammerNomad/laracorekit-package/actions/runs/39212465937) did **not** execute: GitHub reported, “The job was not started because your account is locked due to a billing issue.” Remote CI is therefore unverified and blocked by account state; local checks are the evidence above. Billing settings were not changed. + +The host's optional `laracorekit:stats` command saves validated daily Packagist download snapshots without installation telemetry. Missing/unavailable responses do not become zero counts. Enable it on persistent production storage after package registration. + +Remaining release actions: resolve the GitHub Actions account lock, run remote checks, review/merge the host changes, create the reviewed initial package tag, register the package on Packagist and deploy the updated website. Production deployment and registry publication have not been performed. diff --git a/docs/installation.md b/docs/installation.md index 780a9b1..d8f4e98 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -1,590 +1,104 @@ -# Installation +# Installation ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Estimated Time:** 10 minutes -**Difficulty:** Beginner ---- +LaraCoreKit is a reusable Laravel package for **both a public frontend and a Filament admin panel**. The website/demo application is a separate host in this repository. PHP 8.3+, Composer 2 and Laravel 13 are required. Node 22.12+ is required when building this repository's assets; CI uses Node 24. -This guide covers detailed installation instructions for LaraCoreKit in various environments. +## Release status ---- +The package source is in `packages/core`, named `programmernomad/laracorekit`. The [standalone GitHub source](https://github.com/ProgrammerNomad/laracorekit-package) is available; its first standalone Packagist release is being prepared. Do not assume that `composer require programmernomad/laracorekit` works until the package is registered and a stable tag exists. No account, activation key or telemetry is required. -## System Requirements +## Option A: install only the package directly from GitHub now -### Minimum Requirements - -- **PHP:** 8.3 or higher -- **Composer:** 2.0 or higher -- **Node.js:** 18.0 or higher -- **Database:** MySQL 8.0+, PostgreSQL 13+, or SQLite 3.35+ -- **Web Server:** Apache 2.4+ or Nginx 1.20+ -- **Memory:** 512MB RAM minimum, 1GB recommended - -### PHP Extensions Required - -Ensure these PHP extensions are enabled: - -```bash -php -m | grep -E "openssl|pdo|mbstring|tokenizer|xml|ctype|json|bcmath|curl|fileinfo|gd" -``` - -Required extensions: -- OpenSSL -- PDO -- Mbstring -- Tokenizer -- XML -- Ctype -- JSON -- BCMath -- cURL -- Fileinfo -- GD or Imagick (for image processing) - ---- - -## Installation Methods - -Choose the method that fits your environment: - -- [Local Development](#local-development) (Recommended for beginners) -- [Docker Setup](#docker-setup) (Isolated environment) -- [Production Server](#production-server) (Deployment-ready) - ---- - -## Local Development - -### 1. Clone Repository +Start with a **fresh Laravel 13 application**. The first release uses `Modules\User\Models\User` and the stock Laravel `users` table; integrating an existing authentication system needs a separate migration plan. ```bash -git clone https://github.com/ProgrammerNomad/LaraCoreKit.git -cd LaraCoreKit +composer create-project laravel/laravel my-app "^13.0" +cd my-app +composer config repositories.laracorekit vcs https://github.com/ProgrammerNomad/laracorekit-package +composer require programmernomad/laracorekit:dev-main +php artisan laracorekit:install ``` -### 2. Install PHP Dependencies +Configure `.env` with your application URL, mail and database settings. SQLite is sufficient for initial evaluation. Keep `APP_DEBUG=false` in production. ```bash -composer install -``` - -If you encounter memory issues: - -```bash -COMPOSER_MEMORY_LIMIT=-1 composer install -``` - -### 3. Install JavaScript Dependencies - -```bash -npm install +php artisan migrate +php artisan laracorekit:admin +php artisan storage:link +php artisan serve ``` -Or using Yarn: +Open `/admin` for administration and `/blog` for the public frontend. Your own `/` route remains under your application's control. `/login`, `/forgot-password`, `/reset-password/{token}` and `/dashboard` are provided by the Auth module. Public registration is disabled by default; enable `registration` in `config/laracorekit.php` when needed. -```bash -yarn install -``` +The administrator command prompts for a unique email and a hidden password. It does not promote an existing account. Default seeding does not create sample users. Prebuilt package CSS is published by the installer, so consuming the default package views does not require the demo's npm dependencies. -### 4. Environment Configuration +Package discovery registers providers, views, routes and migrations. Composer installs dependencies; it does **not** configure your database or run package installation migrations automatically. `laracorekit:install --migrate` is available when you explicitly want the installer to run outstanding migrations. Re-running the installer preserves existing configuration. -Copy the example environment file: +## Option B: run the complete GitHub demo/development host ```bash -cp .env.example .env +git clone https://github.com/ProgrammerNomad/LaraCoreKit.git my-demo +cd my-demo +composer install +npm ci ``` -Generate application key: +Copy `.env.example` to `.env` (`cp` on Unix, `Copy-Item` in PowerShell), configure a database, then: ```bash php artisan key:generate -``` - -### 5. Database Configuration - -#### Option A: SQLite (Easiest) - -Edit `.env`: - -```env -DB_CONNECTION=sqlite -# Comment out or remove these: -# DB_HOST=127.0.0.1 -# DB_PORT=3306 -# DB_DATABASE=laracorekit -# DB_USERNAME=root -# DB_PASSWORD= -``` - -Create the database file: - -```bash -# Windows -type nul > database\database.sqlite - -# macOS/Linux -touch database/database.sqlite -``` - -#### Option B: MySQL - -Create a database: - -```sql -CREATE DATABASE laracorekit CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -``` - -Edit `.env`: - -```env -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=laracorekit -DB_USERNAME=root -DB_PASSWORD=your_password -``` - -#### Option C: PostgreSQL - -Create a database: - -```sql -CREATE DATABASE laracorekit ENCODING 'UTF8'; -``` - -Edit `.env`: - -```env -DB_CONNECTION=pgsql -DB_HOST=127.0.0.1 -DB_PORT=5432 -DB_DATABASE=laracorekit -DB_USERNAME=postgres -DB_PASSWORD=your_password -``` - -### 6. Run Migrations - -```bash php artisan migrate --seed -``` - -This will: -- Create all database tables -- Seed default roles and permissions -- Create sample blog posts -- Create demo users (if configured) - -### 7. Build Frontend Assets - -For development with hot reload: - -```bash -npm run dev -``` - -For production build: - -```bash +php artisan laracorekit:admin +php artisan storage:link +npm run build:core npm run build -``` - -### 8. Create Admin User - -```bash -php artisan filament:user -``` - -Follow the prompts to create your admin account. - -### 9. Start Development Server - -```bash php artisan serve ``` -Access at: **http://localhost:8000** - ---- - -## Docker Setup - -LaraCoreKit includes Docker support via Laravel Sail. - -### 1. Install Docker - -Download and install Docker Desktop: -- **Windows:** https://docs.docker.com/desktop/windows/install/ -- **macOS:** https://docs.docker.com/desktop/mac/install/ -- **Linux:** https://docs.docker.com/engine/install/ - -### 2. Install Dependencies - -First, install Composer dependencies using a temporary Docker container: - -```bash -docker run --rm \ - -u "$(id -u):$(id -g)" \ - -v $(pwd):/var/www/html \ - -w /var/www/html \ - laravelsail/php82-composer:latest \ - composer install --ignore-platform-reqs -``` - -### 3. Start Sail - -```bash -./vendor/bin/sail up -d -``` - -This starts: -- PHP 8.3 with Laravel -- MySQL 8.0 -- Redis -- Mailhog (email testing) - -### 4. Setup Environment - -```bash -cp .env.example .env -./vendor/bin/sail artisan key:generate -``` - -### 5. Run Migrations - -```bash -./vendor/bin/sail artisan migrate --seed -``` - -### 6. Install JavaScript Dependencies - -```bash -./vendor/bin/sail npm install -./vendor/bin/sail npm run build -``` - -### 7. Create Admin User - -```bash -./vendor/bin/sail artisan filament:user -``` - -### 8. Access Application - -- **Application:** http://localhost -- **Admin Panel:** http://localhost/admin -- **Mailhog:** http://localhost:8025 - -### Sail Aliases - -Add to your shell profile (`~/.bashrc` or `~/.zshrc`): - -```bash -alias sail='./vendor/bin/sail' -``` - -Then use: - -```bash -sail up -d -sail artisan migrate -sail npm run dev -``` - ---- - -## Production Server - -### 1. Server Setup - -Install required software on Ubuntu/Debian: - -```bash -# Update system -sudo apt update && sudo apt upgrade -y - -# Install PHP 8.3 -sudo add-apt-repository ppa:ondrej/php -sudo apt install php8.3-fpm php8.3-cli php8.3-mysql php8.3-pgsql \ - php8.3-xml php8.3-mbstring php8.3-curl php8.3-zip \ - php8.3-gd php8.3-bcmath php8.3-intl - -# Install Composer -curl -sS https://getcomposer.org/installer | php -sudo mv composer.phar /usr/local/bin/composer - -# Install Node.js 18 -curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - -sudo apt install -y nodejs - -# Install MySQL -sudo apt install mysql-server - -# Install Nginx -sudo apt install nginx -``` - -### 2. Clone and Configure - -```bash -cd /var/www -sudo git clone https://github.com/ProgrammerNomad/LaraCoreKit.git -cd LaraCoreKit - -# Install dependencies (production) -composer install --no-dev --optimize-autoloader -npm install --production -npm run build - -# Setup environment -cp .env.example .env -php artisan key:generate - -# Set permissions -sudo chown -R www-data:www-data /var/www/LaraCoreKit -sudo chmod -R 755 /var/www/LaraCoreKit -sudo chmod -R 775 /var/www/LaraCoreKit/storage -sudo chmod -R 775 /var/www/LaraCoreKit/bootstrap/cache -``` - -### 3. Environment Configuration - -Edit `.env` for production: - -```env -APP_ENV=production -APP_DEBUG=false -APP_URL=https://www.laracorekit.com - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_DATABASE=laracorekit_prod -DB_USERNAME=laracorekit_user -DB_PASSWORD=secure_password_here +This repository uses a Composer **path repository** pointing at `packages/core`; keep that directory with the checkout. It includes the marketing website, docs viewer, showcase and the separately published demo-module dependency. The reusable package does not require any of those. -CACHE_DRIVER=redis -SESSION_DRIVER=redis -QUEUE_CONNECTION=redis +Only on a disposable demo database, explicitly enable `DEMO_MODE=true` and seed `Database\Seeders\DemoSeeder`. Demo mode permits known sample credentials and scheduled resets. Never enable it for a customer deployment. See [demo setup](/docs/deployment/demo-setup). -MAIL_MAILER=smtp -MAIL_HOST=smtp.laracorekit.com -MAIL_PORT=587 -MAIL_USERNAME=your_email -MAIL_PASSWORD=your_password -``` - -### 4. Database Setup +## After the stable Packagist release ```bash -# Create production database -mysql -u root -p << EOF -CREATE DATABASE laracorekit_prod CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -CREATE USER 'laracorekit_user'@'localhost' IDENTIFIED BY 'secure_password_here'; -GRANT ALL PRIVILEGES ON laracorekit_prod.* TO 'laracorekit_user'@'localhost'; -FLUSH PRIVILEGES; -EOF - -# Run migrations -php artisan migrate --force +composer require programmernomad/laracorekit +php artisan laracorekit:install +php artisan migrate +php artisan laracorekit:admin +php artisan storage:link ``` -### 5. Nginx Configuration - -Create `/etc/nginx/sites-available/laracorekit`: +Use the commands above only after release availability is verified. The package installs Laravel dependencies into an existing app; it does not download the demo website. See [release preparation](/docs/package-release) and [upgrading](/docs/upgrade-guide). -```nginx -server { - listen 80; - server_name www.laracorekit.com laracorekit.com; - root /var/www/LaraCoreKit/public; +## Customization - add_header X-Frame-Options "SAMEORIGIN"; - add_header X-Content-Type-Options "nosniff"; +- Edit published `config/laracorekit.php` for registration, modules and panel settings. +- Override individual views under `resources/views/vendor/core`, `auth`, `blog` or `settings`, following Laravel's namespaced-view override convention. Do not edit `vendor` files. +- To use your own Filament panel, set `panel.enabled=false` and register the desired resources/pages in your provider. The demo host is an example of this pattern. +- Keep User enabled for Auth, Blog and the packaged panel. Blog also requires Media. Invalid dependency combinations fail with an explicit configuration error. +- Disabling a module stops its provider/routes/resources from loading. It does not drop data or remove installed Composer dependencies. +- Routes use conventional names such as `login`, `dashboard`, and `blog.index`. Resolve collisions before integrating with existing routes. - index index.php; +The initial package is intended for new applications. API tokens, email-verification enforcement, billing, tenancy and a public module marketplace are not bundled capabilities. - charset utf-8; +## Local package development - location / { - try_files $uri $uri/ /index.php?$query_string; - } +When contributing from the monorepo, use a path repository instead of the GitHub VCS repository: - location = /favicon.ico { access_log off; log_not_found off; } - location = /robots.txt { access_log off; log_not_found off; } +Add this path entry to the consumer application's `repositories` array in `composer.json`. The explicit local version keeps the command working when the monorepo is checked out on a feature branch: - error_page 404 /index.php; - - location ~ \.php$ { - fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; - fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; - include fastcgi_params; - } - - location ~ /\.(?!well-known).* { - deny all; - } +```json +{ + "type": "path", + "url": "../LaraCoreKit/packages/core", + "options": { + "versions": { "programmernomad/laracorekit": "dev-main" } + } } ``` -Enable site: - ```bash -sudo ln -s /etc/nginx/sites-available/laracorekit /etc/nginx/sites-enabled/ -sudo nginx -t -sudo systemctl restart nginx +composer require programmernomad/laracorekit:dev-main ``` -### 6. SSL Certificate (Let's Encrypt) - -```bash -sudo apt install certbot python3-certbot-nginx -sudo certbot --nginx -d laracorekit.com -d www.laracorekit.com -``` - -### 7. Setup Supervisor (Queue Worker) - -Create `/etc/supervisor/conf.d/laracorekit-worker.conf`: - -```ini -[program:laracorekit-worker] -process_name=%(program_name)s_%(process_num)02d -command=php /var/www/LaraCoreKit/artisan queue:work --sleep=3 --tries=3 --max-time=3600 -autostart=true -autorestart=true -stopasgroup=true -killasgroup=true -user=www-data -numprocs=4 -redirect_stderr=true -stdout_logfile=/var/www/LaraCoreKit/storage/logs/worker.log -stopwaitsecs=3600 -``` - -Start supervisor: - -```bash -sudo supervisorctl reread -sudo supervisorctl update -sudo supervisorctl start laracorekit-worker:* -``` - -### 8. Setup Cron - -Add to crontab (`sudo crontab -e -u www-data`): - -```bash -* * * * * cd /var/www/LaraCoreKit && php artisan schedule:run >> /dev/null 2>&1 -``` - -### 9. Optimize for Production - -```bash -php artisan config:cache -php artisan route:cache -php artisan view:cache -php artisan optimize -``` - ---- - -## Post-Installation - -### Verify Installation - -```bash -# Check Laravel version -php artisan --version - -# Check installed modules -php artisan module:list - -# Run health checks -php artisan about -``` - -### Create Admin User - -```bash -php artisan filament:user -``` - -### Configure Settings - -1. Login to admin panel: `/admin` -2. Navigate to Settings -3. Configure: - - Site name and description - - SEO defaults - - Supported languages - - Email settings - ---- - -## Troubleshooting - -### Composer Install Fails - -```bash -# Clear Composer cache -composer clear-cache - -# Install with verbose output -composer install -vvv -``` - -### Permission Issues - -```bash -# Linux/macOS -chmod -R 775 storage bootstrap/cache -chown -R www-data:www-data storage bootstrap/cache - -# Or if you're the owner -chmod -R 775 storage bootstrap/cache -chown -R $USER:www-data storage bootstrap/cache -``` - -### Database Connection Errors - -```bash -# Test database connection -php artisan db:show - -# Clear config cache -php artisan config:clear -``` - -### Module Not Loading - -```bash -# Clear all caches -php artisan optimize:clear - -# Dump autoload -composer dump-autoload - -# Check module config -php artisan config:show modules -``` - ---- - -## Next Steps - - Installation complete! Now: - -1. **[Explore Project Structure →](project-structure.md)** -2. **[Learn Module System →](core/modules-system.md)** -3. **[Configure Settings →](features/settings.md)** - ---- - -## Get Help - -- **[Documentation](introduction.md)** -- **[GitHub Issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues)** - - +A development branch can change without a release. Pin and review a tested commit for evaluation; use a reviewed tagged release for production when available. The monorepo host already configures the local path and an explicit dev-main version for CI. diff --git a/docs/introduction.md b/docs/introduction.md index c965a8d..c61798c 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -1,198 +1,22 @@ -# Introduction +# LaraCoreKit ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Version:** v0.1.0 (unreleased) ---- +LaraCoreKit is an MIT-licensed modular Laravel foundation for a **public website and an admin workspace**. It combines Laravel 13, Filament 5, Livewire 4 and Tailwind CSS 4. -## What is LaraCoreKit? +The reusable package is `programmernomad/laracorekit`, with source in `packages/core`. Its internal modules are Core, Auth, User, Settings, Blog and Media. The repository root hosts the marketing website, documentation viewer, UI showcase and optional demo behavior. -LaraCoreKit is a **production-ready, modular Laravel 13 starter kit** designed for modern full-stack applications. It provides everything you need to build scalable, multilingual web applications with a powerful admin panel, role-based permissions, and a comprehensive UI component library. +## What is implemented -### Why LaraCoreKit? +- Public login, registration when enabled, password recovery and account dashboard. +- Filament administration for users, roles, permissions, blog posts and settings. +- Multilingual blog fields, public blog pages, media attachments and language switching for English, Hindi and Arabic. +- Package discovery, migrations, a configuration/asset installer and interactive administrator creation. +- Module configuration and application-level Blade overrides. -Building modern web applications requires integrating multiple packages, setting up authentication, creating admin panels, and structuring your codebase for long-term maintainability. LaraCoreKit solves these challenges by providing: +## Start here -**Modular Architecture** - Build features as independent modules -**Production-Ready** - Battle-tested code ready for deployment -**Admin Panel** - Beautiful Filament 5 admin interface -**175+ UI Components** - Complete Tailwind CSS component library -**Multilingual** - Built-in support for EN, HI, AR with RTL -**Developer-Friendly** - Clear structure, excellent DX +1. [Choose an installation path](/docs/installation). +2. [Understand package ownership](/docs/core/architecture). +3. [Review production setup](/docs/deployment/production). +4. [Read the upgrade guide](/docs/upgrade-guide). ---- - -## Core Technologies - -LaraCoreKit is built on modern, industry-standard technologies: - -| Technology | Version | Purpose | -|------------|---------|---------| -| **Laravel** | 13 | Backend framework | -| **Livewire** | 4 | Dynamic frontend components | -| **Tailwind CSS** | 4 | Utility-first styling | -| **Filament** | 5 | Admin panel | -| **Alpine.js** | 3.x | Lightweight JavaScript | -| **Vite** | 5.x | Fast build tool | - ---- - -## Who is LaraCoreKit for? - -### Perfect for: - -- **Developers** building SaaS applications -- **Agencies** needing a reliable starter template -- **Startups** wanting to move fast -- **Teams** requiring a modular codebase -- **Multilingual projects** with RTL support needs - -### Not suitable for: - -- Simple landing pages (use static site generators) -- WordPress-like content management (use Statamic or WordPress) -- Pure API backends (use Laravel API starter) - ---- - -## Key Features at a Glance - -### Authentication & Security -- Laravel Breeze scaffolding -- Email verification -- Two-factor authentication ready -- Sanctum token authentication -- CSRF protection & throttling - -### Module System -- Self-contained feature modules -- Independent routing, migrations, views -- Enable/disable modules easily -- Create custom modules in minutes -- Version and distribute separately - -### Admin Panel (Filament) -- User management -- Role & permission assignment -- Blog content management -- Settings configuration -- Media library - -### Frontend -- 175+ ready-to-use UI components -- Livewire-powered interactivity -- Dark mode support -- Responsive design -- RTL layout support - -### Multilingual Support -- English, Hindi, Arabic out of the box -- JSON-based translations -- RTL layout for Arabic -- Easy to add more languages - ---- - -## What Makes LaraCoreKit Different? - -### 1. **True Modularity** - -Unlike traditional Laravel applications where features are tightly coupled, LaraCoreKit uses a **module-based architecture**. Each feature (Blog, Auth, Media) is a self-contained module with its own: - -- Models & Controllers -- Routes & Middleware -- Views & Components -- Migrations & Seeders -- Translations & Config - -This means you can: -- Enable/disable features without breaking the app -- Distribute modules as Composer packages -- Maintain features independently -- Scale your team around modules - -### 2. **Production-Ready, Not a Tutorial** - -LaraCoreKit isn't a learning project-it's production code used in real applications. It includes: - -- Proper error handling -- Security best practices -- Performance optimization -- SEO configuration -- Testing setup - -### 3. **Developer Experience First** - -Every decision prioritizes developer productivity: - -- Clear, consistent code structure -- Comprehensive documentation -- IDE autocomplete support -- Laravel Pint code formatting -- Telescope debugging - ---- - -## Architecture Overview - -``` -┌─────────────────────────────────────────┐ -│ LaraCoreKit Core │ -│ (Routing, Module Loader, Layouts) │ -└─────────────────────────────────────────┘ - │ - ┌──────────────┼──────────────┐ - │ │ │ -┌───▼───┐ ┌───▼───┐ ┌───▼───┐ -│ Auth │ │ Blog │ │ User │ -│ Module│ │ Module│ │ Module│ -└───────┘ └───────┘ └───────┘ - │ │ │ - │ │ │ -┌───▼──────────────▼──────────────▼───┐ -│ Shared Services & Utilities │ -│ (Permissions, Media, Settings) │ -└──────────────────────────────────────┘ -``` - ---- - -## Getting Started - -Ready to dive in? Here's your path: - -1. **[Quick Start](quick-start.md)** - Get running in 5 minutes -2. **[Installation](installation.md)** - Detailed setup guide -3. **[Project Structure](project-structure.md)** - Understand the codebase -4. **[Module System](core/modules-system.md)** - Learn the killer feature - ---- - -## Demo & Resources - -### Live Demo -**Website:** https://www.laracorekit.com/ - **UI Showcase:** https://www.laracorekit.com/ui-showcase/ - **Admin Panel:** https://www.laracorekit.com/admin - -### GitHub - **Repository:** https://github.com/ProgrammerNomad/LaraCoreKit - **Star the repo** if you find it useful! - -### Support - **Issues:** [GitHub Issues](https://github.com/ProgrammerNomad/LaraCoreKit/issues) - ---- - -## License - -LaraCoreKit is open-source software licensed under the **MIT License**. You are free to use it in commercial projects. - ---- - -## Next Steps - -**[Quick Start Guide →](quick-start.md)** - -Learn how to install and run LaraCoreKit in 5 minutes. +The first standalone Packagist release is pending. You can install directly from its GitHub VCS repository using Composer. There is no mandatory account or installation telemetry. API tokens, enforced email verification, billing and tenancy need additional implementation. diff --git a/docs/maintenance-and-distribution-audit.md b/docs/maintenance-and-distribution-audit.md new file mode 100644 index 0000000..07ba279 --- /dev/null +++ b/docs/maintenance-and-distribution-audit.md @@ -0,0 +1,81 @@ +# Initial maintenance and distribution audit + +**Historical findings:** this snapshot preceded the package extraction and remediation. See the current README, changelog, package release guide and implementation report for the resulting architecture and validation. Package identity is now `programmernomad/laracorekit`; earlier proposed names below are superseded. + +Reviewed 19 October 2026. This is a repository and dependency review, not a complete security assessment. Versions and advisory counts are a point-in-time snapshot. + +## Release blockers + +1. **Dependency advisories:** `composer audit --locked --format=json` reports advisories against 21 package names, including Laravel, Filament, Livewire, Guzzle and Symfony components. `npm audit --json` reports 13 affected packages: 2 critical, 8 high and 3 moderate. These counts describe dependency advisories, not confirmed exploitable application vulnerabilities. Update compatible dependencies first, then assess remaining advisories individually; do not suppress audit failures to publish. +2. **Predictable seeded accounts:** `database/seeders/DatabaseSeeder.php` always calls `UserSeeder`, which creates privileged demo accounts with known passwords, including a literal `password` for the editor. Move demo users/content into an explicitly enabled demo seeder. Production setup should create its administrator interactively with a unique password. Test that default production seeding creates no demo accounts. +3. **Authentication protection:** `modules/Auth/src/Http/Livewire/Login.php` calls `Auth::attempt` without visible attempt throttling. Add server-side rate limiting to the Livewire action and tests for repeated failures and successful-login reset. Review registration and password recovery similarly. Remove routine email/role debug logging or document its retention. +4. **Insufficient regression coverage:** only two example tests were found in `tests`, and no module `*Test.php` files were found. Cover login, password reset, authorization, uploads, blog publication, module enable/disable behavior and demo restrictions before broad upgrades. +5. **Broken static-analysis prerequisites:** `phpstan.neon.dist` includes Larastan, but neither Larastan nor PHPStan is required in `composer.json`. Select compatible tooling, update obsolete configuration options, then make `composer review` pass. + +## Dependency currency + +Registry checks reported the following examples: + +| Dependency | Locked/installed | Latest reported | +| --- | --- | --- | +| Laravel framework | 13.5.0 | 13.37.0 | +| Filament | 5.5.2 | 5.10.2 | +| Livewire | 4.2.4 | 4.4.7 | +| Media Library | 11.21.0 | 11.23.9 | +| Filament language switch | 4.3.0 | 5.0.0 | +| Spatie Permission | 6.25.0 | 8.3.0 | +| Vite | 6.4.1 | 8.3.4 | +| Laravel Vite plugin | 1.3.0 | 3.2.0 | +| Axios | 1.13.2 | 1.20.0 | + +Latest does not automatically mean compatible. Use separate changes for major upgrades, verify PHP/Node requirements and peer dependencies, and regenerate lockfiles through the package managers. Re-run audit, tests and production asset build after updates. + +## Other confirmed gaps + +- Composer still identifies the project as `laravel/laravel` with Laravel's skeleton description. Give it its own vendor/package name before Packagist submission. +- README says Vite 5 while `package.json` requests Vite 6. README advertises Sanctum API tokens, but Sanctum is not in the root requirements and no implementation references were found outside documentation navigation. Verify the feature or correct the claim. +- README says every module ships tests; the repository scan did not find them. +- Module providers are registered directly in `bootstrap/providers.php`, while a separate configuration-driven loader exists. Establish a single registration contract and test that disabling a module actually disables it; consider how dependent modules behave. +- Test CI runs `composer update`, whereas quality CI installs the lockfile. Add an explicit locked-dependency lane and retain a separately named compatibility lane. +- SQLite test isolation is commented out in `phpunit.xml`. Set a dedicated test database before adding database-mutating tests. +- CI covers PHP 8.3 and SQLite only. Add supported PHP versions and database coverage according to an explicit support policy. +- `minimum-stability: dev` is broader than necessary unless an identified dependency requires it. Prefer stable dependencies after verifying resolution. + +## Recommended Composer distribution + +Start by publishing this repository as a **project** package, for example `programmernomad/laracorekit` (proposed name; availability and ownership must be checked). After publishing, installation becomes: + +```sh +composer create-project programmernomad/laracorekit my-app +``` + +Keep the clone installation documented until the package is available and clean installation is verified. Register the GitHub repository on Packagist once, configure its GitHub update integration, and publish semantic version tags only after release checks pass. Composer derives versions from tags; do not add a manually maintained version field. + +Next, extract reusable functionality into `programmernomad/laracorekit-core`, a library required by the starter project. This is an architectural migration, not a rename: move namespaces, providers, config, views, routes and migrations into a package, define publishable customization points, and test installation into a clean Laravel application. Existing apps need migration/upgrade instructions. Keep demo tooling and showcase content optional. Build on the existing separate demo-module package. + +A project installed by `create-project` is a starting snapshot; future starter changes do not automatically upgrade the generated application. A core library installed with `require` can receive Composer updates. This maintainability benefit is the main reason to extract core. + +## Adoption measurement + +Packagist exposes total, monthly and daily downloads. These are adoption signals, not unique new projects, active sites or developer identities. CI, reinstalls, upgrades and caching affect counts. Core and starter downloads overlap: never sum them as unique users. Existing Git clones are not retroactively counted. + +Recommended initial dashboard: starter downloads, core downloads, GitHub stars/forks, issue response time, release cadence and voluntarily submitted showcase projects. Keep download series separate. Use an optional community/showcase submission for developers who want to identify themselves. Avoid mandatory registration or hidden installation callbacks. + +If active-installation measurement becomes necessary, design a separately reviewed, explicit opt-in telemetry feature: random installation identifier, limited version/environment fields, disclosed retention, disable/delete support, and a documented sampling policy. Do not send domains, emails, source code or secrets by default. Cloned deployments and disabled telemetry still prevent exact counting. + +## Automation rollout + +1. Added `.github/dependabot.yml` proposes weekly Composer, npm and GitHub Actions updates after this change reaches GitHub's default branch. Enable Dependabot security updates and vulnerability alerts in repository settings as well. No automatic merging is configured. +2. Add CI gates for Composer validation, dependency audits, working static analysis, focused tests and frontend build. Use deterministic installs with lockfiles and a separate compatibility-update job. +3. Add a clean-install smoke test that creates a fresh project, uses an isolated database, migrates, builds assets and checks representative public/admin routes. +4. Use a release PR workflow to update changelog/version tags after checks pass; connect tags to Packagist indexing. Keep a human release decision until regression coverage is meaningful. +5. After packages exist, collect Packagist statistics once daily using a scheduled GitHub Action or existing site scheduler. Store dated snapshots in durable storage with deduplication, timeouts and retry limits. A missing package or network failure must not become a zero-download datapoint. Do not create recurring Codex reminders for this application workflow. + +## Sources + +- [Composer create-project and CLI](https://getcomposer.org/doc/03-cli.md#create-project) +- [Composer library publishing and tags](https://getcomposer.org/doc/02-libraries.md) +- [Packagist setup and update integration](https://packagist.org/about) +- [Packagist download statistics API](https://packagist.org/apidoc#package-stats) + +No dependencies were upgraded, package published, telemetry installed, or remote repository settings changed as part of this audit. The Dependabot configuration prepares update proposals; it does not establish that the application is up to date. diff --git a/docs/modules/best-practices.md b/docs/modules/best-practices.md index 3e5881d..a513e8c 100644 --- a/docs/modules/best-practices.md +++ b/docs/modules/best-practices.md @@ -1,207 +1,9 @@ -# Module Best Practices +# Module best practices ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Estimated Time:** 8 minutes -**Source Files:** [Module examples](../../modules/) ---- +Keep application-specific code outside vendor. Use unique namespaces, route names and view namespaces for addons. Declare dependencies explicitly and avoid references to demo-host classes or filesystem paths. -Building good modules isn't just about making them work - it's about making them maintainable, testable, and enjoyable for other developers (including future you). +Authorize mutations on the server, validate uploads, rate-limit abuse-sensitive actions and avoid sensitive logs. Preserve migration history and document data changes. Tests should cover clean installation, disabled-module behavior, permissions and upgrades. ---- +Do not assume configuration disables installed dependencies or deletes data. Keep public feature claims aligned with tested behavior. Use release notes and clear support constraints rather than promising every Laravel/database version. -## Do These - -### 1. One Responsibility Per Module - -Each module should handle **one feature domain** only. - -``` - Newsletter module → email subscriptions - Blog module → content management -❌ BlogNewsletter → mixing two concerns -``` - ---- - -### 2. Prefix ALL Database Tables - -```php -// Good - prefix with module name -Schema::create('blog_posts', function (Blueprint $table) { ... }); -Schema::create('blog_categories', function (Blueprint $table) { ... }); - -// ❌ Bad - generic names cause conflicts -Schema::create('posts', ...); -Schema::create('categories', ...); -``` - ---- - -### 3. Always Use Module View Namespaces - -```blade -{{-- Good - explicit namespace --}} -@extends('blog::layouts.base') -@include('blog::partials.card') - -{{-- ❌ Bad - implicit, breaks when moved --}} -@extends('layouts.app') -``` - ---- - -### 4. Put Business Logic in Services - -```php -// Good -class SubscribeController extends Controller -{ - public function __construct(private NewsletterService $newsletter) {} - - public function store(Request $request): JsonResponse - { - $this->newsletter->subscribe($request->email); - return response()->json(['message' => 'Subscribed!']); - } -} - -// ❌ Bad - business logic inside controller -public function store(Request $request) -{ - Subscriber::create(['email' => $request->email]); - Mail::to($request->email)->send(new ConfirmationMail()); - // ... more logic -} -``` - ---- - -### 5. Use `__DIR__` for All Paths - -```php -// Good - relative, portable -$this->loadMigrationsFrom(__DIR__ . '/../database/migrations'); -$this->loadViewsFrom(__DIR__ . '/../views', 'newsletter'); - -// ❌ Bad - absolute path, breaks on different machines -$this->loadMigrationsFrom('/var/www/app/modules/Newsletter/database/migrations'); -``` - ---- - -### 6. Write Tests for Every Module - -``` -tests/ -└── Modules/ - └── Newsletter/ - ├── Unit/ - │ └── SubscriberModelTest.php - └── Feature/ - ├── SubscribeFormTest.php - └── UnsubscribeTest.php -``` - ---- - -### 7. Provide a Seeder for Demo Data - -```php -php artisan db:seed --class=Modules\\Blog\\Database\\Seeders\\BlogSeeder -``` - ---- - -### 8. Document Your Module - -Every module should have a `README.md`: -- What it does -- Installation -- Configuration -- Usage examples -- Available blade components / Livewire components - ---- - -## ❌ Avoid These - -### Don't Import Cross-Module Classes Directly - -```php -// ❌ Bad - tight coupling between modules -use Modules\User\Models\User; -use Modules\Blog\Models\Post; - -class Newsletter extends Model -{ - public function sendToAllBlogReaders() - { - User::whereHas('posts')->each(fn($u) => ...); - } -} -``` - -Instead, use **events** or **contracts**: - -```php -// Good - loose coupling via events -event(new NewPostPublished($post)); - -// In Newsletter module's listener: -class SendNewsletterOnNewPost -{ - public function handle(NewPostPublished $event): void - { - // notify subscribers - } -} -``` - ---- - -### Don't Hardcode Config Values - -```php -// ❌ Bad -$perPage = 12; - -// Good -$perPage = config('blog.posts_per_page', 12); -``` - ---- - -### Don't Skip Validation - -Every user-facing input must be validated: - -```php -// Always validate -$validated = $request->validate([ - 'email' => 'required|email|max:255', -]); -``` - ---- - -## Code Quality Checklist - -Before shipping a module: - -- [ ] Tables are prefixed with module name -- [ ] All views use the module namespace -- [ ] Business logic is in Services, not controllers -- [ ] Tests cover happy paths and edge cases -- [ ] Config values are not hardcoded -- [ ] ServiceProvider uses `__DIR__` relative paths -- [ ] Module has a README -- [ ] Module is listed in `config/modules.php` -- [ ] Namespace added to `composer.json` autoload - ---- - -## Next Steps - -**[Production Setup →](../deployment/production)** +See [installation](/docs/installation) and [package architecture](/docs/core/architecture). diff --git a/docs/modules/create-module.md b/docs/modules/create-module.md index cf18e85..bb2d362 100644 --- a/docs/modules/create-module.md +++ b/docs/modules/create-module.md @@ -1,335 +1,9 @@ -# Create a Module +# Create an addon module ---- -**Supported Stack:** Laravel 13 / Filament 5 / Livewire 4 / Tailwind 4 -**Last Updated:** April 22, 2026 -**Estimated Time:** 15 minutes -**Source Files:** [ServiceProvider example](../../modules/Blog/src/BlogServiceProvider.php) ---- +For an independently reusable addon, create a normal Composer library with its own namespace, service provider, routes, migrations, views, tests and README. The existing laracorekit-demo-module repository is an example of independent distribution. -This guide walks you through creating a complete custom module in LaraCoreKit from scratch. We'll build a **Newsletter** module as the real-world example. +Declare runtime dependencies in require, PSR-4 mappings in autoload and the provider in extra.laravel.providers. Use a Composer path repository during local development. Register admin resources in a custom panel or a documented Filament plugin. ---- +The bundled module switch is for the known modules inside LaraCoreKit. It is not an arbitrary marketplace loader. Do not add application-specific source under vendor or modify the package's composer.json after installation. -## Step 1: Create the Directory Structure - -```bash -mkdir -p modules/Newsletter/src/Http/Livewire -mkdir -p modules/Newsletter/src/Models -mkdir -p modules/Newsletter/src/Filament/Resources -mkdir -p modules/Newsletter/database/migrations -mkdir -p modules/Newsletter/database/seeders -mkdir -p modules/Newsletter/views/newsletter -mkdir -p modules/Newsletter/routes -``` - -Final structure: - -``` -modules/Newsletter/ -├── src/ -│ ├── NewsletterServiceProvider.php -│ ├── Models/ -│ │ └── Subscriber.php -│ └── Http/ -│ └── Livewire/ -│ └── Subscribe.php -├── database/ -│ └── migrations/ -│ └── 2024_01_01_create_subscribers_table.php -├── views/ -│ └── newsletter/ -│ └── subscribe.blade.php -└── routes/ - └── web.php -``` - ---- - -## Step 2: Create the Service Provider - -```php -loadMigrationsFrom(__DIR__ . '/../database/migrations'); - $this->loadViewsFrom(__DIR__ . '/../views', 'newsletter'); - - Livewire::component('newsletter.subscribe', \Modules\Newsletter\Http\Livewire\Subscribe::class); - - $this->loadRoutesFrom(__DIR__ . '/../routes/web.php'); - } -} -``` - ---- - -## Step 3: Create the Migration - -```php -id(); - $table->string('email')->unique(); - $table->string('name')->nullable(); - $table->boolean('is_active')->default(true); - $table->timestamp('confirmed_at')->nullable(); - $table->timestamps(); - }); - } - - public function down(): void - { - Schema::dropIfExists('newsletter_subscribers'); - } -}; -``` - ---- - -## Step 4: Create the Model - -```php - 'boolean', - 'confirmed_at' => 'datetime', - ]; - - public function scopeActive($query) - { - return $query->where('is_active', true); - } - - public function isConfirmed(): bool - { - return $this->confirmed_at !== null; - } -} -``` - ---- - -## Step 5: Create the Livewire Component - -```php -validate([ - 'email' => 'required|email|max:255', - 'name' => 'nullable|string|max:100', - ]); - - try { - Subscriber::firstOrCreate( - ['email' => $this->email], - ['name' => $this->name, 'is_active' => true] - ); - - $this->success = true; - $this->reset(['email', 'name']); - } catch (\Exception $e) { - $this->error = 'Something went wrong. Please try again.'; - } - } - - public function render() - { - return view('newsletter::newsletter.subscribe'); - } -} -``` - ---- - -## Step 6: Create the View - -```blade -{{-- modules/Newsletter/views/newsletter/subscribe.blade.php --}} - -