From 9a6190e8efed2e901ede5126a5683b61d0440b49 Mon Sep 17 00:00:00 2001 From: Iliyan Angelov Date: Fri, 21 Nov 2025 15:01:24 +0200 Subject: [PATCH] updates --- Backend/add_accountant_role.py | 57 +++ .../alembic/__pycache__/env.cpython-312.pyc | Bin 2705 -> 2705 bytes ...31_add_mfa_fields_to_users.cpython-312.pyc | Bin 1439 -> 1439 bytes ...erms_refunds_to_page_type_.cpython-312.pyc | Bin 1208 -> 1208 bytes ...tle_fields_to_page_content.cpython-312.pyc | Bin 21992 -> 21992 bytes ...e93_add_page_content_table.cpython-312.pyc | Bin 5897 -> 5897 bytes ...ry_section_fields_to_page_.cpython-312.pyc | Bin 2142 -> 2142 bytes ...gration_create_all_tables_.cpython-312.pyc | Bin 24795 -> 24795 bytes ...ty_room_size_view_to_rooms.cpython-312.pyc | Bin 1421 -> 1421 bytes ..._add_system_settings_table.cpython-312.pyc | Bin 3450 -> 3450 bytes ...tion_accessibility_faq_to_.cpython-312.pyc | Bin 1266 -> 1266 bytes .../add_about_page_fields.cpython-312.pyc | Bin 2044 -> 2044 bytes ...add_badges_to_page_content.cpython-312.pyc | Bin 902 -> 902 bytes ...right_text_to_page_content.cpython-312.pyc | Bin 907 -> 907 bytes .../add_stripe_payment_method.cpython-312.pyc | Bin 1336 -> 1336 bytes ...omotion_fields_to_bookings.cpython-312.pyc | Bin 1794 -> 1794 bytes ...ry_content_fields_to_page_.cpython-312.pyc | Bin 4154 -> 4154 bytes ...dd_map_url_to_page_content.cpython-312.pyc | Bin 928 -> 928 bytes ..._add_paypal_payment_method.cpython-312.pyc | Bin 1356 -> 1356 bytes ...dd_is_proforma_to_invoices.cpython-312.pyc | Bin 929 -> 929 bytes ...y_sections_to_page_content.cpython-312.pyc | Bin 2805 -> 2805 bytes Backend/seed_about_page.py | 3 +- Backend/seed_initial_data.py | 156 ++++++ Backend/seed_users.py | 165 ++++++ .../src/__pycache__/__init__.cpython-312.pyc | Bin 152 -> 152 bytes Backend/src/__pycache__/main.cpython-312.pyc | Bin 16348 -> 16348 bytes .../__pycache__/database.cpython-312.pyc | Bin 2337 -> 2337 bytes .../logging_config.cpython-312.pyc | Bin 3448 -> 3448 bytes .../__pycache__/settings.cpython-312.pyc | Bin 6981 -> 6981 bytes .../__pycache__/auth.cpython-312.pyc | Bin 4456 -> 4456 bytes .../cookie_consent.cpython-312.pyc | Bin 3619 -> 3619 bytes .../__pycache__/error_handler.cpython-312.pyc | Bin 4825 -> 4825 bytes .../__pycache__/request_id.cpython-312.pyc | Bin 2773 -> 2773 bytes .../__pycache__/security.cpython-312.pyc | Bin 1893 -> 1893 bytes .../__pycache__/timeout.cpython-312.pyc | Bin 1948 -> 1948 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1642 -> 1642 bytes .../__pycache__/audit_log.cpython-312.pyc | Bin 1616 -> 1616 bytes .../models/__pycache__/banner.cpython-312.pyc | Bin 1945 -> 1945 bytes .../__pycache__/booking.cpython-312.pyc | Bin 2754 -> 2754 bytes .../models/__pycache__/chat.cpython-312.pyc | Bin 2783 -> 2783 bytes .../checkin_checkout.cpython-312.pyc | Bin 1862 -> 1862 bytes .../cookie_integration_config.cpython-312.pyc | Bin 1300 -> 1300 bytes .../__pycache__/cookie_policy.cpython-312.pyc | Bin 1303 -> 1303 bytes .../__pycache__/favorite.cpython-312.pyc | Bin 1201 -> 1201 bytes .../__pycache__/invoice.cpython-312.pyc | Bin 4890 -> 4890 bytes .../__pycache__/page_content.cpython-312.pyc | Bin 5785 -> 5785 bytes .../password_reset_token.cpython-312.pyc | Bin 1314 -> 1314 bytes .../__pycache__/payment.cpython-312.pyc | Bin 2848 -> 2848 bytes .../__pycache__/promotion.cpython-312.pyc | Bin 3366 -> 3366 bytes .../__pycache__/refresh_token.cpython-312.pyc | Bin 1133 -> 1133 bytes .../models/__pycache__/review.cpython-312.pyc | Bin 1703 -> 1703 bytes .../models/__pycache__/role.cpython-312.pyc | Bin 1157 -> 1157 bytes .../models/__pycache__/room.cpython-312.pyc | Bin 2380 -> 2380 bytes .../__pycache__/room_type.cpython-312.pyc | Bin 1371 -> 1371 bytes .../__pycache__/service.cpython-312.pyc | Bin 1399 -> 1399 bytes .../service_booking.cpython-312.pyc | Bin 4371 -> 4371 bytes .../__pycache__/service_usage.cpython-312.pyc | Bin 1599 -> 1599 bytes .../system_settings.cpython-312.pyc | Bin 1242 -> 1242 bytes .../models/__pycache__/user.cpython-312.pyc | Bin 2554 -> 2554 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 159 -> 159 bytes .../__pycache__/about_routes.cpython-312.pyc | Bin 4537 -> 4537 bytes .../accessibility_routes.cpython-312.pyc | Bin 3372 -> 3372 bytes .../admin_privacy_routes.cpython-312.pyc | Bin 3913 -> 3913 bytes .../__pycache__/audit_routes.cpython-312.pyc | Bin 10934 -> 10934 bytes .../__pycache__/auth_routes.cpython-312.pyc | Bin 18519 -> 18519 bytes .../__pycache__/banner_routes.cpython-312.pyc | Bin 14020 -> 14020 bytes .../booking_routes.cpython-312.pyc | Bin 76322 -> 76607 bytes .../cancellation_routes.cpython-312.pyc | Bin 3371 -> 3371 bytes .../__pycache__/chat_routes.cpython-312.pyc | Bin 29956 -> 29956 bytes .../contact_content_routes.cpython-312.pyc | Bin 3690 -> 3690 bytes .../contact_routes.cpython-312.pyc | Bin 4146 -> 4146 bytes .../__pycache__/faq_routes.cpython-312.pyc | Bin 3271 -> 3271 bytes .../favorite_routes.cpython-312.pyc | Bin 8843 -> 9825 bytes .../__pycache__/footer_routes.cpython-312.pyc | Bin 3304 -> 3304 bytes .../__pycache__/home_routes.cpython-312.pyc | Bin 8380 -> 8380 bytes .../invoice_routes.cpython-312.pyc | Bin 10366 -> 10413 bytes .../page_content_routes.cpython-312.pyc | Bin 41626 -> 41626 bytes .../payment_routes.cpython-312.pyc | Bin 50901 -> 50943 bytes .../privacy_routes.cpython-312.pyc | Bin 7091 -> 7091 bytes .../promotion_routes.cpython-312.pyc | Bin 17411 -> 17411 bytes .../refunds_routes.cpython-312.pyc | Bin 3339 -> 3339 bytes .../__pycache__/report_routes.cpython-312.pyc | Bin 26862 -> 26905 bytes .../__pycache__/review_routes.cpython-312.pyc | Bin 10683 -> 10683 bytes .../__pycache__/room_routes.cpython-312.pyc | Bin 40163 -> 40163 bytes .../service_booking_routes.cpython-312.pyc | Bin 16209 -> 16209 bytes .../service_routes.cpython-312.pyc | Bin 11879 -> 11879 bytes .../system_settings_routes.cpython-312.pyc | Bin 56625 -> 56625 bytes .../__pycache__/terms_routes.cpython-312.pyc | Bin 3321 -> 3321 bytes .../__pycache__/user_routes.cpython-312.pyc | Bin 14385 -> 14424 bytes Backend/src/routes/booking_routes.py | 6 +- Backend/src/routes/favorite_routes.py | 19 +- Backend/src/routes/invoice_routes.py | 12 +- Backend/src/routes/payment_routes.py | 8 +- Backend/src/routes/report_routes.py | 6 +- Backend/src/routes/user_routes.py | 6 +- .../__pycache__/admin_privacy.cpython-312.pyc | Bin 2683 -> 2683 bytes .../schemas/__pycache__/auth.cpython-312.pyc | Bin 6596 -> 6596 bytes .../__pycache__/privacy.cpython-312.pyc | Bin 2348 -> 2348 bytes .../__pycache__/auth_service.cpython-312.pyc | Bin 21539 -> 21539 bytes .../invoice_service.cpython-312.pyc | Bin 20753 -> 20753 bytes .../__pycache__/mfa_service.cpython-312.pyc | Bin 8723 -> 8723 bytes .../paypal_service.cpython-312.pyc | Bin 24302 -> 24302 bytes .../privacy_admin_service.cpython-312.pyc | Bin 4578 -> 4578 bytes .../__pycache__/room_service.cpython-312.pyc | Bin 12968 -> 12968 bytes .../stripe_service.cpython-312.pyc | Bin 24604 -> 24604 bytes .../email_templates.cpython-312.pyc | Bin 24904 -> 24904 bytes .../utils/__pycache__/mailer.cpython-312.pyc | Bin 6361 -> 6361 bytes .../PIL/__pycache__/ExifTags.cpython-312.pyc | Bin 11499 -> 11499 bytes .../PIL/__pycache__/Image.cpython-312.pyc | Bin 157821 -> 157821 bytes .../__pycache__/ImageColor.cpython-312.pyc | Bin 12021 -> 12021 bytes .../PIL/__pycache__/ImageDraw.cpython-312.pyc | Bin 36999 -> 36999 bytes .../PIL/__pycache__/ImageMode.cpython-312.pyc | Bin 2793 -> 2793 bytes .../PIL/__pycache__/TiffTags.cpython-312.pyc | Bin 17684 -> 17684 bytes .../PIL/__pycache__/__init__.cpython-312.pyc | Bin 1983 -> 1983 bytes .../PIL/__pycache__/_binary.cpython-312.pyc | Bin 3035 -> 3035 bytes .../PIL/__pycache__/_util.cpython-312.pyc | Bin 1237 -> 1237 bytes .../PIL/__pycache__/_version.cpython-312.pyc | Bin 213 -> 213 bytes .../__pycache__/png.cpython-312.pyc | Bin 87963 -> 87963 bytes .../typing_extensions.cpython-312.pyc | Bin 163758 -> 163758 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 528 -> 528 bytes .../aiofiles/__pycache__/base.cpython-312.pyc | Bin 6432 -> 6432 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 8390 -> 8390 bytes .../__pycache__/temptypes.cpython-312.pyc | Bin 3754 -> 3754 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4579 -> 4579 bytes .../__pycache__/binary.cpython-312.pyc | Bin 2896 -> 2896 bytes .../__pycache__/text.cpython-312.pyc | Bin 1542 -> 1542 bytes .../__pycache__/utils.cpython-312.pyc | Bin 3931 -> 3931 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1360 -> 1360 bytes .../__pycache__/api.cpython-312.pyc | Bin 6939 -> 6939 bytes .../__pycache__/auth.cpython-312.pyc | Bin 2733 -> 2733 bytes .../__pycache__/email.cpython-312.pyc | Bin 7419 -> 7419 bytes .../__pycache__/errors.cpython-312.pyc | Bin 5246 -> 5246 bytes .../__pycache__/esmtp.cpython-312.pyc | Bin 2560 -> 2560 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 17934 -> 17934 bytes .../__pycache__/response.cpython-312.pyc | Bin 1386 -> 1386 bytes .../__pycache__/smtp.cpython-312.pyc | Bin 61624 -> 61624 bytes .../__pycache__/typing.cpython-312.pyc | Bin 2107 -> 2107 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 302 -> 302 bytes .../__pycache__/command.cpython-312.pyc | Bin 27371 -> 27371 bytes .../__pycache__/config.cpython-312.pyc | Bin 23070 -> 23070 bytes .../__pycache__/context.cpython-312.pyc | Bin 381 -> 381 bytes .../alembic/__pycache__/op.cpython-312.pyc | Bin 363 -> 363 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 629 -> 629 bytes .../__pycache__/api.cpython-312.pyc | Bin 22246 -> 22246 bytes .../__pycache__/compare.cpython-312.pyc | Bin 48838 -> 48838 bytes .../__pycache__/render.cpython-312.pyc | Bin 44953 -> 44953 bytes .../__pycache__/rewriter.cpython-312.pyc | Bin 9177 -> 9177 bytes .../ddl/__pycache__/__init__.cpython-312.pyc | Bin 391 -> 391 bytes .../ddl/__pycache__/base.cpython-312.pyc | Bin 15542 -> 15542 bytes .../ddl/__pycache__/impl.cpython-312.pyc | Bin 30495 -> 30495 bytes .../ddl/__pycache__/mssql.cpython-312.pyc | Bin 16070 -> 16070 bytes .../ddl/__pycache__/mysql.cpython-312.pyc | Bin 15902 -> 15902 bytes .../ddl/__pycache__/oracle.cpython-312.pyc | Bin 8520 -> 8520 bytes .../__pycache__/postgresql.cpython-312.pyc | Bin 31178 -> 31178 bytes .../ddl/__pycache__/sqlite.cpython-312.pyc | Bin 7514 -> 7514 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 491 -> 491 bytes .../__pycache__/base.cpython-312.pyc | Bin 76001 -> 76001 bytes .../__pycache__/batch.cpython-312.pyc | Bin 31473 -> 31473 bytes .../__pycache__/ops.cpython-312.pyc | Bin 108712 -> 108712 bytes .../__pycache__/schemaobj.cpython-312.pyc | Bin 11872 -> 11872 bytes .../__pycache__/toimpl.cpython-312.pyc | Bin 11157 -> 11157 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 198 bytes .../__pycache__/environment.cpython-312.pyc | Bin 43648 -> 43648 bytes .../__pycache__/migration.cpython-312.pyc | Bin 58805 -> 58805 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 311 -> 311 bytes .../script/__pycache__/base.cpython-312.pyc | Bin 43592 -> 43592 bytes .../__pycache__/revision.cpython-312.pyc | Bin 61907 -> 61907 bytes .../__pycache__/write_hooks.cpython-312.pyc | Bin 6589 -> 6589 bytes .../util/__pycache__/__init__.cpython-312.pyc | Bin 1446 -> 1446 bytes .../util/__pycache__/compat.cpython-312.pyc | Bin 3233 -> 3233 bytes .../util/__pycache__/editor.cpython-312.pyc | Bin 3245 -> 3245 bytes .../util/__pycache__/exc.cpython-312.pyc | Bin 535 -> 535 bytes .../__pycache__/langhelpers.cpython-312.pyc | Bin 12473 -> 12473 bytes .../__pycache__/messaging.cpython-312.pyc | Bin 4840 -> 4840 bytes .../util/__pycache__/pyfiles.cpython-312.pyc | Bin 5142 -> 5142 bytes .../__pycache__/sqla_compat.cpython-312.pyc | Bin 24767 -> 24767 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 18629 -> 18629 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3526 -> 3526 bytes .../__pycache__/from_thread.cpython-312.pyc | Bin 22868 -> 22868 bytes .../__pycache__/lowlevel.cpython-312.pyc | Bin 7272 -> 7272 bytes .../__pycache__/to_thread.cpython-312.pyc | Bin 2819 -> 2819 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 198 bytes .../__pycache__/_asyncio.cpython-312.pyc | Bin 101195 -> 101195 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 194 bytes .../_core/__pycache__/_compat.cpython-312.pyc | Bin 9852 -> 9852 bytes .../__pycache__/_eventloop.cpython-312.pyc | Bin 5914 -> 5914 bytes .../__pycache__/_exceptions.cpython-312.pyc | Bin 5540 -> 5540 bytes .../_core/__pycache__/_fileio.cpython-312.pyc | Bin 34894 -> 34894 bytes .../__pycache__/_resources.cpython-312.pyc | Bin 947 -> 947 bytes .../__pycache__/_signals.cpython-312.pyc | Bin 1231 -> 1231 bytes .../__pycache__/_sockets.cpython-312.pyc | Bin 24454 -> 24454 bytes .../__pycache__/_streams.cpython-312.pyc | Bin 2064 -> 2064 bytes .../__pycache__/_subprocesses.cpython-312.pyc | Bin 6617 -> 6617 bytes .../_synchronization.cpython-312.pyc | Bin 25208 -> 25208 bytes .../_core/__pycache__/_tasks.cpython-312.pyc | Bin 7789 -> 7789 bytes .../__pycache__/_testing.cpython-312.pyc | Bin 3741 -> 3741 bytes .../__pycache__/_typedattr.cpython-312.pyc | Bin 3894 -> 3894 bytes .../abc/__pycache__/__init__.cpython-312.pyc | Bin 2087 -> 2087 bytes .../__pycache__/_resources.cpython-312.pyc | Bin 1614 -> 1614 bytes .../abc/__pycache__/_sockets.cpython-312.pyc | Bin 8146 -> 8146 bytes .../abc/__pycache__/_streams.cpython-312.pyc | Bin 8417 -> 8417 bytes .../__pycache__/_subprocesses.cpython-312.pyc | Bin 3249 -> 3249 bytes .../abc/__pycache__/_tasks.cpython-312.pyc | Bin 4874 -> 4874 bytes .../abc/__pycache__/_testing.cpython-312.pyc | Bin 3033 -> 3033 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 196 bytes .../__pycache__/memory.cpython-312.pyc | Bin 12922 -> 12922 bytes .../__pycache__/stapled.cpython-312.pyc | Bin 7524 -> 7524 bytes .../streams/__pycache__/tls.cpython-312.pyc | Bin 16939 -> 16939 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 583 -> 583 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 317 -> 317 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 2064 -> 2064 bytes .../cffi/__pycache__/__init__.cpython-312.pyc | Bin 555 -> 555 bytes .../cffi/__pycache__/api.cpython-312.pyc | Bin 50314 -> 50314 bytes .../cffi/__pycache__/error.cpython-312.pyc | Bin 1897 -> 1897 bytes .../cffi/__pycache__/lock.cpython-312.pyc | Bin 527 -> 527 bytes .../cffi/__pycache__/model.cpython-312.pyc | Bin 30162 -> 30162 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1783 -> 1783 bytes .../__pycache__/api.cpython-312.pyc | Bin 18194 -> 18194 bytes .../__pycache__/cd.cpython-312.pyc | Bin 13299 -> 13299 bytes .../__pycache__/constant.cpython-312.pyc | Bin 40813 -> 40813 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 3013 -> 3013 bytes .../__pycache__/models.cpython-312.pyc | Bin 17130 -> 17130 bytes .../__pycache__/utils.cpython-312.pyc | Bin 13759 -> 13759 bytes .../__pycache__/version.cpython-312.pyc | Bin 385 -> 385 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4074 -> 4074 bytes .../click/__pycache__/_compat.cpython-312.pyc | Bin 24196 -> 24196 bytes .../click/__pycache__/_utils.cpython-312.pyc | Bin 1202 -> 1202 bytes .../click/__pycache__/core.cpython-312.pyc | Bin 134668 -> 134668 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 22139 -> 22139 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 14778 -> 14778 bytes .../__pycache__/formatting.cpython-312.pyc | Bin 13674 -> 13674 bytes .../click/__pycache__/globals.cpython-312.pyc | Bin 2967 -> 2967 bytes .../click/__pycache__/parser.cpython-312.pyc | Bin 20444 -> 20444 bytes .../click/__pycache__/termui.cpython-312.pyc | Bin 34653 -> 34653 bytes .../click/__pycache__/types.cpython-312.pyc | Bin 50040 -> 50040 bytes .../click/__pycache__/utils.cpython-312.pyc | Bin 24881 -> 24881 bytes .../__pycache__/__about__.cpython-312.pyc | Bin 467 -> 467 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 377 -> 377 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2391 -> 2391 bytes .../__pycache__/utils.cpython-312.pyc | Bin 6567 -> 6567 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 258 -> 258 bytes .../hazmat/__pycache__/_oid.cpython-312.pyc | Bin 21048 -> 21048 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 508 -> 508 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 374 -> 374 bytes .../__pycache__/backend.cpython-312.pyc | Bin 13516 -> 13516 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 211 -> 211 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 219 -> 219 bytes .../__pycache__/_conditional.cpython-312.pyc | Bin 5795 -> 5795 bytes .../__pycache__/binding.cpython-312.pyc | Bin 5620 -> 5620 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 262 -> 262 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 270 -> 270 bytes .../__pycache__/algorithms.cpython-312.pyc | Bin 4802 -> 4802 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 213 -> 213 bytes .../__pycache__/_asymmetric.cpython-312.pyc | Bin 819 -> 819 bytes .../_cipheralgorithm.cpython-312.pyc | Bin 2499 -> 2499 bytes .../_serialization.cpython-312.pyc | Bin 7043 -> 7043 bytes .../__pycache__/constant_time.cpython-312.pyc | Bin 679 -> 679 bytes .../__pycache__/hashes.cpython-312.pyc | Bin 8283 -> 8283 bytes .../__pycache__/hmac.cpython-312.pyc | Bin 600 -> 600 bytes .../__pycache__/keywrap.cpython-312.pyc | Bin 7477 -> 7477 bytes .../__pycache__/padding.cpython-312.pyc | Bin 3264 -> 3264 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 224 -> 224 bytes .../asymmetric/__pycache__/dh.cpython-312.pyc | Bin 6086 -> 6086 bytes .../__pycache__/dsa.cpython-312.pyc | Bin 6932 -> 6932 bytes .../asymmetric/__pycache__/ec.cpython-312.pyc | Bin 17840 -> 17840 bytes .../__pycache__/ed25519.cpython-312.pyc | Bin 5620 -> 5620 bytes .../__pycache__/ed448.cpython-312.pyc | Bin 5663 -> 5663 bytes .../__pycache__/padding.cpython-312.pyc | Bin 4834 -> 4834 bytes .../__pycache__/rsa.cpython-312.pyc | Bin 10449 -> 10449 bytes .../__pycache__/types.cpython-312.pyc | Bin 3173 -> 3173 bytes .../__pycache__/utils.cpython-312.pyc | Bin 1338 -> 1338 bytes .../__pycache__/x25519.cpython-312.pyc | Bin 5417 -> 5417 bytes .../__pycache__/x448.cpython-312.pyc | Bin 5458 -> 5458 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 652 -> 652 bytes .../ciphers/__pycache__/aead.cpython-312.pyc | Bin 842 -> 842 bytes .../__pycache__/algorithms.cpython-312.pyc | Bin 4918 -> 4918 bytes .../ciphers/__pycache__/base.cpython-312.pyc | Bin 7099 -> 7099 bytes .../ciphers/__pycache__/modes.cpython-312.pyc | Bin 11811 -> 11811 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1392 -> 1392 bytes .../__pycache__/base.cpython-312.pyc | Bin 857 -> 857 bytes .../__pycache__/ssh.cpython-312.pyc | Bin 67207 -> 67207 bytes .../x509/__pycache__/__init__.cpython-312.pyc | Bin 8455 -> 8455 bytes .../x509/__pycache__/base.cpython-312.pyc | Bin 33525 -> 33525 bytes .../certificate_transparency.cpython-312.pyc | Bin 1421 -> 1421 bytes .../__pycache__/extensions.cpython-312.pyc | Bin 112578 -> 112578 bytes .../__pycache__/general_name.cpython-312.pyc | Bin 13100 -> 13100 bytes .../x509/__pycache__/name.cpython-312.pyc | Bin 23233 -> 23233 bytes .../x509/__pycache__/oid.cpython-312.pyc | Bin 774 -> 774 bytes .../__pycache__/verification.cpython-312.pyc | Bin 1020 -> 1020 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 633 -> 633 bytes .../__pycache__/classic.cpython-312.pyc | Bin 12058 -> 12058 bytes .../__pycache__/params.cpython-312.pyc | Bin 4195 -> 4195 bytes .../__pycache__/sphinx.cpython-312.pyc | Bin 11566 -> 11566 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1698 -> 1698 bytes .../dotenv/__pycache__/main.cpython-312.pyc | Bin 16171 -> 16171 bytes .../dotenv/__pycache__/parser.cpython-312.pyc | Bin 10004 -> 10004 bytes .../__pycache__/variables.cpython-312.pyc | Bin 5035 -> 5035 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1004 -> 1004 bytes .../exceptions_types.cpython-312.pyc | Bin 6145 -> 6145 bytes .../__pycache__/rfc_constants.cpython-312.pyc | Bin 1778 -> 1778 bytes .../__pycache__/syntax.cpython-312.pyc | Bin 16441 -> 16441 bytes .../validate_email.cpython-312.pyc | Bin 4752 -> 4752 bytes .../__pycache__/version.cpython-312.pyc | Bin 223 -> 223 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1105 -> 1105 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 26244 -> 26244 bytes .../__pycache__/applications.cpython-312.pyc | Bin 85278 -> 85278 bytes .../__pycache__/background.cpython-312.pyc | Bin 2378 -> 2378 bytes .../__pycache__/concurrency.cpython-312.pyc | Bin 1660 -> 1660 bytes .../datastructures.cpython-312.pyc | Bin 8151 -> 8151 bytes .../__pycache__/encoders.cpython-312.pyc | Bin 10856 -> 10856 bytes .../exception_handlers.cpython-312.pyc | Bin 2080 -> 2080 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7171 -> 7171 bytes .../__pycache__/logger.cpython-312.pyc | Bin 292 -> 292 bytes .../param_functions.cpython-312.pyc | Bin 34957 -> 34957 bytes .../__pycache__/params.cpython-312.pyc | Bin 25391 -> 25391 bytes .../__pycache__/requests.cpython-312.pyc | Bin 281 -> 281 bytes .../__pycache__/responses.cpython-312.pyc | Bin 2409 -> 2409 bytes .../__pycache__/routing.cpython-312.pyc | Bin 78470 -> 78470 bytes .../__pycache__/staticfiles.cpython-312.pyc | Bin 253 -> 253 bytes .../fastapi/__pycache__/types.cpython-312.pyc | Bin 805 -> 805 bytes .../fastapi/__pycache__/utils.cpython-312.pyc | Bin 8752 -> 8752 bytes .../__pycache__/websockets.cpython-312.pyc | Bin 330 -> 330 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 203 -> 203 bytes .../__pycache__/models.cpython-312.pyc | Bin 3168 -> 3168 bytes .../__pycache__/utils.cpython-312.pyc | Bin 33243 -> 33243 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 259 -> 259 bytes .../asyncexitstack.cpython-312.pyc | Bin 1719 -> 1719 bytes .../__pycache__/cors.cpython-312.pyc | Bin 264 -> 264 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 198 bytes .../__pycache__/constants.cpython-312.pyc | Bin 368 -> 368 bytes .../openapi/__pycache__/docs.cpython-312.pyc | Bin 10833 -> 10833 bytes .../__pycache__/models.cpython-312.pyc | Bin 26976 -> 26976 bytes .../openapi/__pycache__/utils.cpython-312.pyc | Bin 19717 -> 19717 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 855 -> 855 bytes .../__pycache__/api_key.cpython-312.pyc | Bin 9447 -> 9447 bytes .../security/__pycache__/base.cpython-312.pyc | Bin 517 -> 517 bytes .../security/__pycache__/http.cpython-312.pyc | Bin 13747 -> 13747 bytes .../__pycache__/oauth2.cpython-312.pyc | Bin 18265 -> 18265 bytes .../open_id_connect_url.cpython-312.pyc | Bin 3228 -> 3228 bytes .../__pycache__/utils.cpython-312.pyc | Bin 610 -> 610 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1077 -> 1077 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 343 -> 343 bytes .../__pycache__/_version.cpython-312.pyc | Bin 220 -> 220 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 433 -> 433 bytes .../parser/__pycache__/errors.cpython-312.pyc | Bin 1217 -> 1217 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 1821 -> 1821 bytes .../idna/__pycache__/__init__.cpython-312.pyc | Bin 885 -> 885 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 16197 -> 16197 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 100914 -> 100914 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 2637 -> 2637 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 216 -> 216 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 161844 -> 161844 bytes .../jose/__pycache__/__init__.cpython-312.pyc | Bin 491 -> 491 bytes .../__pycache__/constants.cpython-312.pyc | Bin 3133 -> 3133 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2284 -> 2284 bytes .../jose/__pycache__/jwk.cpython-312.pyc | Bin 2494 -> 2494 bytes .../jose/__pycache__/jws.cpython-312.pyc | Bin 9644 -> 9644 bytes .../jose/__pycache__/jwt.cpython-312.pyc | Bin 19809 -> 19809 bytes .../jose/__pycache__/utils.cpython-312.pyc | Bin 4836 -> 4836 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1238 -> 1238 bytes .../backends/__pycache__/base.cpython-312.pyc | Bin 3606 -> 3606 bytes .../cryptography_backend.cpython-312.pyc | Bin 33420 -> 33420 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 877 -> 877 bytes .../__pycache__/_version.cpython-312.pyc | Bin 797 -> 797 bytes .../limits/__pycache__/errors.cpython-312.pyc | Bin 1599 -> 1599 bytes .../limits/__pycache__/limits.cpython-312.pyc | Bin 7825 -> 7825 bytes .../__pycache__/strategies.cpython-312.pyc | Bin 11720 -> 11720 bytes .../limits/__pycache__/typing.cpython-312.pyc | Bin 5816 -> 5816 bytes .../limits/__pycache__/util.cpython-312.pyc | Bin 8202 -> 8202 bytes .../aio/__pycache__/__init__.cpython-312.pyc | Bin 343 -> 343 bytes .../__pycache__/strategies.cpython-312.pyc | Bin 12982 -> 12982 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 813 -> 813 bytes .../storage/__pycache__/base.cpython-312.pyc | Bin 9293 -> 9293 bytes .../__pycache__/memory.cpython-312.pyc | Bin 16536 -> 16536 bytes .../__pycache__/mongodb.cpython-312.pyc | Bin 17244 -> 17244 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 9176 -> 9176 bytes .../__pycache__/bridge.cpython-312.pyc | Bin 4226 -> 4226 bytes .../__pycache__/emcache.cpython-312.pyc | Bin 7538 -> 7538 bytes .../__pycache__/memcachio.cpython-312.pyc | Bin 6913 -> 6913 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 18691 -> 18691 bytes .../redis/__pycache__/bridge.cpython-312.pyc | Bin 6094 -> 6094 bytes .../redis/__pycache__/coredis.cpython-312.pyc | Bin 12866 -> 12866 bytes .../redis/__pycache__/redispy.cpython-312.pyc | Bin 13662 -> 13662 bytes .../redis/__pycache__/valkey.cpython-312.pyc | Bin 796 -> 796 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3088 -> 3088 bytes .../storage/__pycache__/base.cpython-312.pyc | Bin 9964 -> 9964 bytes .../__pycache__/memcached.cpython-312.pyc | Bin 13420 -> 13420 bytes .../__pycache__/memory.cpython-312.pyc | Bin 14035 -> 14035 bytes .../__pycache__/mongodb.cpython-312.pyc | Bin 15922 -> 15922 bytes .../storage/__pycache__/redis.cpython-312.pyc | Bin 14364 -> 14364 bytes .../__pycache__/redis_cluster.cpython-312.pyc | Bin 6151 -> 6151 bytes .../redis_sentinel.cpython-312.pyc | Bin 5910 -> 5910 bytes .../__pycache__/registry.cpython-312.pyc | Bin 1217 -> 1217 bytes .../mako/__pycache__/__init__.cpython-312.pyc | Bin 216 -> 216 bytes .../__pycache__/_ast_util.cpython-312.pyc | Bin 36426 -> 36426 bytes .../mako/__pycache__/ast.cpython-312.pyc | Bin 7500 -> 7500 bytes .../mako/__pycache__/cache.cpython-312.pyc | Bin 8499 -> 8499 bytes .../mako/__pycache__/codegen.cpython-312.pyc | Bin 59074 -> 59074 bytes .../mako/__pycache__/compat.cpython-312.pyc | Bin 3076 -> 3076 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 14787 -> 14787 bytes .../mako/__pycache__/filters.cpython-312.pyc | Bin 6708 -> 6708 bytes .../mako/__pycache__/lexer.cpython-312.pyc | Bin 20347 -> 20347 bytes .../__pycache__/parsetree.cpython-312.pyc | Bin 29974 -> 29974 bytes .../mako/__pycache__/pygen.cpython-312.pyc | Bin 11056 -> 11056 bytes .../mako/__pycache__/pyparser.cpython-312.pyc | Bin 12290 -> 12290 bytes .../mako/__pycache__/runtime.cpython-312.pyc | Bin 39115 -> 39115 bytes .../mako/__pycache__/template.cpython-312.pyc | Bin 26801 -> 26801 bytes .../mako/__pycache__/util.cpython-312.pyc | Bin 20381 -> 20381 bytes .../ext/__pycache__/__init__.cpython-312.pyc | Bin 191 -> 191 bytes .../__pycache__/pygmentplugin.cpython-312.pyc | Bin 5921 -> 5921 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 20968 -> 20968 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 542 -> 542 bytes .../__pycache__/decoders.cpython-312.pyc | Bin 7569 -> 7569 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 1926 -> 1926 bytes .../__pycache__/multipart.cpython-312.pyc | Bin 61988 -> 61988 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 557 -> 557 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3240 -> 3240 bytes .../__pycache__/version.cpython-312.pyc | Bin 20467 -> 20467 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 280 -> 280 bytes .../__pycache__/config.cpython-312.pyc | Bin 925 -> 925 bytes .../core/__pycache__/__init__.cpython-312.pyc | Bin 526 -> 526 bytes .../__pycache__/access_token.cpython-312.pyc | Bin 1262 -> 1262 bytes .../access_token_request.cpython-312.pyc | Bin 1016 -> 1016 bytes .../__pycache__/environment.cpython-312.pyc | Bin 2446 -> 2446 bytes .../paypal_http_client.cpython-312.pyc | Bin 3052 -> 3052 bytes .../refresh_token_request.cpython-312.pyc | Bin 903 -> 903 bytes .../core/__pycache__/util.cpython-312.pyc | Bin 430 -> 430 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 582 -> 582 bytes .../orders_authorize_request.cpython-312.pyc | Bin 2098 -> 2098 bytes .../orders_capture_request.cpython-312.pyc | Bin 2040 -> 2040 bytes .../orders_create_request.cpython-312.pyc | Bin 1617 -> 1617 bytes .../orders_get_request.cpython-312.pyc | Bin 1106 -> 1106 bytes .../orders_patch_request.cpython-312.pyc | Bin 2423 -> 2423 bytes .../orders_validate_request.cpython-312.pyc | Bin 1640 -> 1640 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 689 -> 689 bytes ...orizations_capture_request.cpython-312.pyc | Bin 1863 -> 1863 bytes ...authorizations_get_request.cpython-312.pyc | Bin 1186 -> 1186 bytes ...ations_reauthorize_request.cpython-312.pyc | Bin 2565 -> 2565 bytes ...uthorizations_void_request.cpython-312.pyc | Bin 1272 -> 1272 bytes .../captures_get_request.cpython-312.pyc | Bin 1133 -> 1133 bytes .../captures_refund_request.cpython-312.pyc | Bin 1939 -> 1939 bytes .../refunds_get_request.cpython-312.pyc | Bin 1115 -> 1115 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 517 -> 517 bytes .../__pycache__/encoder.cpython-312.pyc | Bin 2775 -> 2775 bytes .../__pycache__/environment.cpython-312.pyc | Bin 533 -> 533 bytes .../__pycache__/file.cpython-312.pyc | Bin 1858 -> 1858 bytes .../__pycache__/http_client.cpython-312.pyc | Bin 4778 -> 4778 bytes .../__pycache__/http_error.cpython-312.pyc | Bin 823 -> 823 bytes .../__pycache__/http_response.cpython-312.pyc | Bin 3003 -> 3003 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 570 -> 570 bytes .../form_encoded_serializer.cpython-312.pyc | Bin 1370 -> 1370 bytes .../__pycache__/form_part.cpython-312.pyc | Bin 1046 -> 1046 bytes .../json_serializer.cpython-312.pyc | Bin 935 -> 935 bytes .../multipart_serializer.cpython-312.pyc | Bin 5512 -> 5512 bytes .../text_serializer.cpython-312.pyc | Bin 841 -> 841 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 8954 -> 8954 bytes .../__pycache__/_migration.cpython-312.pyc | Bin 10887 -> 10887 bytes .../annotated_handlers.cpython-312.pyc | Bin 5552 -> 5552 bytes .../__pycache__/color.cpython-312.pyc | Bin 30188 -> 30188 bytes .../__pycache__/config.cpython-312.pyc | Bin 3387 -> 3387 bytes .../__pycache__/errors.cpython-312.pyc | Bin 6029 -> 6029 bytes .../__pycache__/fields.cpython-312.pyc | Bin 50481 -> 50481 bytes .../__pycache__/json_schema.cpython-312.pyc | Bin 100955 -> 100955 bytes .../pydantic/__pycache__/main.cpython-312.pyc | Bin 63573 -> 63573 bytes .../__pycache__/networks.cpython-312.pyc | Bin 17602 -> 17602 bytes .../__pycache__/type_adapter.cpython-312.pyc | Bin 19492 -> 19492 bytes .../__pycache__/types.cpython-312.pyc | Bin 81154 -> 81154 bytes .../__pycache__/version.cpython-312.pyc | Bin 3484 -> 3484 bytes .../__pycache__/warnings.cpython-312.pyc | Bin 3359 -> 3359 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 201 bytes .../__pycache__/_config.cpython-312.pyc | Bin 13726 -> 13726 bytes .../_core_metadata.cpython-312.pyc | Bin 3912 -> 3912 bytes .../__pycache__/_core_utils.cpython-312.pyc | Bin 27174 -> 27174 bytes .../__pycache__/_decorators.cpython-312.pyc | Bin 34570 -> 34570 bytes .../_decorators_v1.cpython-312.pyc | Bin 8622 -> 8622 bytes .../_discriminated_union.cpython-312.pyc | Bin 22270 -> 22270 bytes .../__pycache__/_fields.cpython-312.pyc | Bin 11960 -> 11960 bytes .../__pycache__/_forward_ref.cpython-312.pyc | Bin 1310 -> 1310 bytes .../_generate_schema.cpython-312.pyc | Bin 102251 -> 102251 bytes .../__pycache__/_generics.cpython-312.pyc | Bin 23429 -> 23429 bytes .../_internal_dataclass.cpython-312.pyc | Bin 476 -> 476 bytes .../_known_annotated_metadata.cpython-312.pyc | Bin 16963 -> 16963 bytes .../__pycache__/_mock_val_ser.cpython-312.pyc | Bin 5716 -> 5716 bytes .../_model_construction.cpython-312.pyc | Bin 26423 -> 26423 bytes .../__pycache__/_repr.cpython-312.pyc | Bin 6808 -> 6808 bytes .../_schema_generation_shared.cpython-312.pyc | Bin 6385 -> 6385 bytes .../_std_types_schema.cpython-312.pyc | Bin 34175 -> 34175 bytes .../__pycache__/_typing_extra.cpython-312.pyc | Bin 18842 -> 18842 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 14766 -> 14766 bytes .../_validate_call.cpython-312.pyc | Bin 6871 -> 6871 bytes .../__pycache__/_validators.cpython-312.pyc | Bin 11655 -> 11655 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 202 bytes .../class_validators.cpython-312.pyc | Bin 11580 -> 11580 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 7677 -> 7677 bytes .../__pycache__/_loader.cpython-312.pyc | Bin 2239 -> 2239 bytes .../_schema_validator.cpython-312.pyc | Bin 6875 -> 6875 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3072 -> 3072 bytes .../__pycache__/core_schema.cpython-312.pyc | Bin 135553 -> 135553 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 587 -> 587 bytes .../__pycache__/main.cpython-312.pyc | Bin 6523 -> 6523 bytes .../__pycache__/sources.cpython-312.pyc | Bin 29763 -> 29763 bytes .../__pycache__/utils.cpython-312.pyc | Bin 974 -> 974 bytes .../__pycache__/version.cpython-312.pyc | Bin 221 -> 221 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 5103 -> 5103 bytes .../pymysql/__pycache__/_auth.cpython-312.pyc | Bin 9654 -> 9654 bytes .../__pycache__/charset.cpython-312.pyc | Bin 16797 -> 16797 bytes .../__pycache__/connections.cpython-312.pyc | Bin 59209 -> 59209 bytes .../__pycache__/converters.cpython-312.pyc | Bin 13703 -> 13703 bytes .../__pycache__/cursors.cpython-312.pyc | Bin 22425 -> 22425 bytes .../pymysql/__pycache__/err.cpython-312.pyc | Bin 6448 -> 6448 bytes .../__pycache__/optionfile.cpython-312.pyc | Bin 1602 -> 1602 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 18710 -> 18710 bytes .../pymysql/__pycache__/times.cpython-312.pyc | Bin 930 -> 930 bytes .../__pycache__/CLIENT.cpython-312.pyc | Bin 1044 -> 1044 bytes .../__pycache__/COMMAND.cpython-312.pyc | Bin 1139 -> 1139 bytes .../constants/__pycache__/CR.cpython-312.pyc | Bin 3141 -> 3141 bytes .../constants/__pycache__/ER.cpython-312.pyc | Bin 17441 -> 17441 bytes .../__pycache__/FIELD_TYPE.cpython-312.pyc | Bin 853 -> 853 bytes .../__pycache__/SERVER_STATUS.cpython-312.pyc | Bin 643 -> 643 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 200 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4294 -> 4294 bytes .../pyotp/__pycache__/compat.cpython-312.pyc | Bin 350 -> 350 bytes .../pyotp/__pycache__/hotp.cpython-312.pyc | Bin 3750 -> 3750 bytes .../pyotp/__pycache__/otp.cpython-312.pyc | Bin 3454 -> 3454 bytes .../pyotp/__pycache__/totp.cpython-312.pyc | Bin 5970 -> 5970 bytes .../pyotp/__pycache__/utils.cpython-312.pyc | Bin 3725 -> 3725 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 234 -> 234 bytes .../contrib/__pycache__/steam.cpython-312.pyc | Bin 2171 -> 2171 bytes .../qrcode/__pycache__/LUT.cpython-312.pyc | Bin 1729 -> 1729 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1082 -> 1082 bytes .../qrcode/__pycache__/base.cpython-312.pyc | Bin 9420 -> 9420 bytes .../__pycache__/constants.cpython-312.pyc | Bin 311 -> 311 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 385 -> 385 bytes .../qrcode/__pycache__/main.cpython-312.pyc | Bin 23067 -> 23067 bytes .../qrcode/__pycache__/util.cpython-312.pyc | Bin 22825 -> 22825 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 196 bytes .../compat/__pycache__/pil.cpython-312.pyc | Bin 424 -> 424 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 195 bytes .../image/__pycache__/base.cpython-312.pyc | Bin 7861 -> 7861 bytes .../image/__pycache__/pure.cpython-312.pyc | Bin 3033 -> 3033 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 202 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 556 -> 556 bytes .../__pycache__/base.cpython-312.pyc | Bin 1829 -> 1829 bytes .../__pycache__/pil.cpython-312.pyc | Bin 16590 -> 16590 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 5420 -> 5420 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 584 -> 584 bytes .../_internal_utils.cpython-312.pyc | Bin 2024 -> 2024 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 27811 -> 27811 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 7204 -> 7204 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 13923 -> 13923 bytes .../__pycache__/certs.cpython-312.pyc | Bin 666 -> 666 bytes .../__pycache__/compat.cpython-312.pyc | Bin 2380 -> 2380 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 25276 -> 25276 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7585 -> 7585 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 1052 -> 1052 bytes .../__pycache__/models.cpython-312.pyc | Bin 35501 -> 35501 bytes .../__pycache__/packages.cpython-312.pyc | Bin 1139 -> 1139 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 27890 -> 27890 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 6031 -> 6031 bytes .../__pycache__/structures.cpython-312.pyc | Bin 5617 -> 5617 bytes .../__pycache__/utils.cpython-312.pyc | Bin 36178 -> 36178 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 311 -> 311 bytes .../__pycache__/errors.cpython-312.pyc | Bin 1249 -> 1249 bytes .../__pycache__/extension.cpython-312.pyc | Bin 36356 -> 36356 bytes .../slowapi/__pycache__/util.cpython-312.pyc | Bin 1324 -> 1324 bytes .../__pycache__/wrappers.cpython-312.pyc | Bin 5333 -> 5333 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 466 -> 466 bytes .../sniffio/__pycache__/_impl.cpython-312.pyc | Bin 3177 -> 3177 bytes .../__pycache__/_version.cpython-312.pyc | Bin 218 -> 218 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 9478 -> 9478 bytes .../__pycache__/events.cpython-312.pyc | Bin 566 -> 566 bytes .../__pycache__/exc.cpython-312.pyc | Bin 31228 -> 31228 bytes .../__pycache__/inspection.cpython-312.pyc | Bin 6629 -> 6629 bytes .../__pycache__/log.cpython-312.pyc | Bin 11627 -> 11627 bytes .../__pycache__/schema.cpython-312.pyc | Bin 2345 -> 2345 bytes .../__pycache__/types.cpython-312.pyc | Bin 2293 -> 2293 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 605 -> 605 bytes .../__pycache__/pyodbc.cpython-312.pyc | Bin 9382 -> 9382 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 205 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1894 -> 1894 bytes .../__pycache__/_typing.cpython-312.pyc | Bin 903 -> 903 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1966 -> 1966 bytes .../__pycache__/aiomysql.cpython-312.pyc | Bin 16177 -> 16177 bytes .../mysql/__pycache__/asyncmy.cpython-312.pyc | Bin 16663 -> 16663 bytes .../mysql/__pycache__/base.cpython-312.pyc | Bin 136794 -> 136794 bytes .../mysql/__pycache__/cymysql.cpython-312.pyc | Bin 3148 -> 3148 bytes .../mysql/__pycache__/dml.cpython-312.pyc | Bin 8221 -> 8221 bytes .../__pycache__/enumerated.cpython-312.pyc | Bin 10199 -> 10199 bytes .../__pycache__/expression.cpython-312.pyc | Bin 5027 -> 5027 bytes .../mysql/__pycache__/json.cpython-312.pyc | Bin 3452 -> 3452 bytes .../mariadbconnector.cpython-312.pyc | Bin 11908 -> 11908 bytes .../mysqlconnector.cpython-312.pyc | Bin 9094 -> 9094 bytes .../mysql/__pycache__/mysqldb.cpython-312.pyc | Bin 12083 -> 12083 bytes .../mysql/__pycache__/pymysql.cpython-312.pyc | Bin 5274 -> 5274 bytes .../mysql/__pycache__/pyodbc.cpython-312.pyc | Bin 5270 -> 5270 bytes .../__pycache__/reflection.cpython-312.pyc | Bin 23948 -> 23948 bytes .../reserved_words.cpython-312.pyc | Bin 4378 -> 4378 bytes .../mysql/__pycache__/types.cpython-312.pyc | Bin 30402 -> 30402 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3341 -> 3341 bytes .../_psycopg_common.cpython-312.pyc | Bin 7709 -> 7709 bytes .../__pycache__/array.cpython-312.pyc | Bin 16588 -> 16588 bytes .../__pycache__/asyncpg.cpython-312.pyc | Bin 56603 -> 56603 bytes .../__pycache__/base.cpython-312.pyc | Bin 200794 -> 200794 bytes .../__pycache__/dml.cpython-312.pyc | Bin 11617 -> 11617 bytes .../__pycache__/ext.cpython-312.pyc | Bin 19254 -> 19254 bytes .../__pycache__/hstore.cpython-312.pyc | Bin 15368 -> 15368 bytes .../__pycache__/json.cpython-312.pyc | Bin 13561 -> 13561 bytes .../__pycache__/named_types.cpython-312.pyc | Bin 22272 -> 22272 bytes .../__pycache__/operators.cpython-312.pyc | Bin 2166 -> 2166 bytes .../__pycache__/pg8000.cpython-312.pyc | Bin 30067 -> 30067 bytes .../__pycache__/pg_catalog.cpython-312.pyc | Bin 10466 -> 10466 bytes .../__pycache__/psycopg.cpython-312.pyc | Bin 35921 -> 35921 bytes .../__pycache__/psycopg2.cpython-312.pyc | Bin 35693 -> 35693 bytes .../__pycache__/psycopg2cffi.cpython-312.pyc | Bin 2173 -> 2173 bytes .../__pycache__/ranges.cpython-312.pyc | Bin 31586 -> 31586 bytes .../__pycache__/types.cpython-312.pyc | Bin 11055 -> 11055 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2284 -> 2284 bytes .../_py_processors.cpython-312.pyc | Bin 4507 -> 4507 bytes .../engine/__pycache__/base.cpython-312.pyc | Bin 129679 -> 129679 bytes .../characteristics.cpython-312.pyc | Bin 3751 -> 3751 bytes .../engine/__pycache__/create.cpython-312.pyc | Bin 33701 -> 33701 bytes .../engine/__pycache__/cursor.cpython-312.pyc | Bin 77372 -> 77372 bytes .../__pycache__/default.cpython-312.pyc | Bin 86726 -> 86726 bytes .../engine/__pycache__/events.cpython-312.pyc | Bin 39917 -> 39917 bytes .../__pycache__/interfaces.cpython-312.pyc | Bin 99386 -> 99386 bytes .../engine/__pycache__/mock.cpython-312.pyc | Bin 5707 -> 5707 bytes .../__pycache__/processors.cpython-312.pyc | Bin 1298 -> 1298 bytes .../__pycache__/reflection.cpython-312.pyc | Bin 80323 -> 80323 bytes .../engine/__pycache__/result.cpython-312.pyc | Bin 91275 -> 91275 bytes .../engine/__pycache__/row.cpython-312.pyc | Bin 17440 -> 17440 bytes .../__pycache__/strategies.cpython-312.pyc | Bin 567 -> 567 bytes .../engine/__pycache__/url.cpython-312.pyc | Bin 34316 -> 34316 bytes .../engine/__pycache__/util.cpython-312.pyc | Bin 6624 -> 6624 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 847 -> 847 bytes .../event/__pycache__/api.cpython-312.pyc | Bin 9205 -> 9205 bytes .../event/__pycache__/attr.cpython-312.pyc | Bin 29895 -> 29895 bytes .../event/__pycache__/base.cpython-312.pyc | Bin 19614 -> 19614 bytes .../event/__pycache__/legacy.cpython-312.pyc | Bin 9394 -> 9394 bytes .../__pycache__/registry.cpython-312.pyc | Bin 12622 -> 12622 bytes .../ext/__pycache__/__init__.cpython-312.pyc | Bin 360 -> 360 bytes .../ext/__pycache__/compiler.cpython-312.pyc | Bin 20657 -> 20657 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2019 -> 2019 bytes .../__pycache__/extensions.cpython-312.pyc | Bin 21302 -> 21302 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 470 -> 470 bytes .../future/__pycache__/engine.cpython-312.pyc | Bin 403 -> 403 bytes .../orm/__pycache__/__init__.cpython-312.pyc | Bin 6351 -> 6351 bytes .../_orm_constructors.cpython-312.pyc | Bin 101643 -> 101643 bytes .../orm/__pycache__/_typing.cpython-312.pyc | Bin 6722 -> 6722 bytes .../__pycache__/attributes.cpython-312.pyc | Bin 99788 -> 99788 bytes .../orm/__pycache__/base.cpython-312.pyc | Bin 30177 -> 30177 bytes .../bulk_persistence.cpython-312.pyc | Bin 63261 -> 63261 bytes .../__pycache__/clsregistry.cpython-312.pyc | Bin 23820 -> 23820 bytes .../__pycache__/collections.cpython-312.pyc | Bin 61894 -> 61894 bytes .../orm/__pycache__/context.cpython-312.pyc | Bin 100377 -> 100377 bytes .../orm/__pycache__/decl_api.cpython-312.pyc | Bin 66298 -> 66298 bytes .../orm/__pycache__/decl_base.cpython-312.pyc | Bin 68143 -> 68143 bytes .../__pycache__/dependency.cpython-312.pyc | Bin 43351 -> 43351 bytes .../descriptor_props.cpython-312.pyc | Bin 48905 -> 48905 bytes .../orm/__pycache__/dynamic.cpython-312.pyc | Bin 12916 -> 12916 bytes .../orm/__pycache__/evaluator.cpython-312.pyc | Bin 16184 -> 16184 bytes .../orm/__pycache__/events.cpython-312.pyc | Bin 136703 -> 136703 bytes .../orm/__pycache__/exc.cpython-312.pyc | Bin 9853 -> 9853 bytes .../orm/__pycache__/identity.cpython-312.pyc | Bin 12633 -> 12633 bytes .../instrumentation.cpython-312.pyc | Bin 31230 -> 31230 bytes .../__pycache__/interfaces.cpython-312.pyc | Bin 53668 -> 53668 bytes .../orm/__pycache__/loading.cpython-312.pyc | Bin 46539 -> 46539 bytes .../mapped_collection.cpython-312.pyc | Bin 21913 -> 21913 bytes .../orm/__pycache__/mapper.cpython-312.pyc | Bin 168320 -> 168320 bytes .../__pycache__/path_registry.cpython-312.pyc | Bin 31466 -> 31466 bytes .../__pycache__/persistence.cpython-312.pyc | Bin 48324 -> 48324 bytes .../__pycache__/properties.cpython-312.pyc | Bin 32862 -> 32862 bytes .../orm/__pycache__/query.cpython-312.pyc | Bin 127584 -> 127584 bytes .../__pycache__/relationships.cpython-312.pyc | Bin 128823 -> 128823 bytes .../orm/__pycache__/scoping.cpython-312.pyc | Bin 83570 -> 83570 bytes .../orm/__pycache__/session.cpython-312.pyc | Bin 200966 -> 200966 bytes .../orm/__pycache__/state.cpython-312.pyc | Bin 45130 -> 45130 bytes .../__pycache__/state_changes.cpython-312.pyc | Bin 7032 -> 7032 bytes .../__pycache__/strategies.cpython-312.pyc | Bin 103067 -> 103067 bytes .../strategy_options.cpython-312.pyc | Bin 86429 -> 86429 bytes .../orm/__pycache__/sync.cpython-312.pyc | Bin 6573 -> 6573 bytes .../__pycache__/unitofwork.cpython-312.pyc | Bin 34104 -> 34104 bytes .../orm/__pycache__/util.cpython-312.pyc | Bin 85057 -> 85057 bytes .../orm/__pycache__/writeonly.cpython-312.pyc | Bin 28842 -> 28842 bytes .../pool/__pycache__/__init__.cpython-312.pyc | Bin 1521 -> 1521 bytes .../pool/__pycache__/base.cpython-312.pyc | Bin 56269 -> 56269 bytes .../pool/__pycache__/events.cpython-312.pyc | Bin 14278 -> 14278 bytes .../pool/__pycache__/impl.cpython-312.pyc | Bin 24706 -> 24706 bytes .../sql/__pycache__/__init__.cpython-312.pyc | Bin 4694 -> 4694 bytes .../_dml_constructors.cpython-312.pyc | Bin 4102 -> 4102 bytes .../_elements_constructors.cpython-312.pyc | Bin 65674 -> 65674 bytes .../__pycache__/_orm_types.cpython-312.pyc | Bin 634 -> 634 bytes .../_selectable_constructors.cpython-312.pyc | Bin 21383 -> 21383 bytes .../sql/__pycache__/_typing.cpython-312.pyc | Bin 13831 -> 13831 bytes .../__pycache__/annotation.cpython-312.pyc | Bin 21327 -> 21327 bytes .../sql/__pycache__/base.cpython-312.pyc | Bin 97514 -> 97514 bytes .../sql/__pycache__/cache_key.cpython-312.pyc | Bin 35351 -> 35351 bytes .../sql/__pycache__/coercions.cpython-312.pyc | Bin 48534 -> 48534 bytes .../sql/__pycache__/compiler.cpython-312.pyc | Bin 268766 -> 268766 bytes .../sql/__pycache__/crud.cpython-312.pyc | Bin 45474 -> 45474 bytes .../sql/__pycache__/ddl.cpython-312.pyc | Bin 56128 -> 56128 bytes .../default_comparator.cpython-312.pyc | Bin 19485 -> 19485 bytes .../sql/__pycache__/dml.cpython-312.pyc | Bin 73414 -> 73414 bytes .../sql/__pycache__/elements.cpython-312.pyc | Bin 203082 -> 203082 bytes .../sql/__pycache__/events.cpython-312.pyc | Bin 19221 -> 19221 bytes .../__pycache__/expression.cpython-312.pyc | Bin 5156 -> 5156 bytes .../sql/__pycache__/functions.cpython-312.pyc | Bin 68588 -> 68588 bytes .../sql/__pycache__/lambdas.cpython-312.pyc | Bin 54948 -> 54948 bytes .../sql/__pycache__/naming.cpython-312.pyc | Bin 8483 -> 8483 bytes .../sql/__pycache__/operators.cpython-312.pyc | Bin 88952 -> 88952 bytes .../sql/__pycache__/roles.cpython-312.pyc | Bin 12259 -> 12259 bytes .../sql/__pycache__/schema.cpython-312.pyc | Bin 244039 -> 244039 bytes .../__pycache__/selectable.cpython-312.pyc | Bin 255996 -> 255996 bytes .../sql/__pycache__/sqltypes.cpython-312.pyc | Bin 149145 -> 149145 bytes .../__pycache__/traversals.cpython-312.pyc | Bin 42415 -> 42415 bytes .../sql/__pycache__/type_api.cpython-312.pyc | Bin 85060 -> 85060 bytes .../sql/__pycache__/util.cpython-312.pyc | Bin 54390 -> 54390 bytes .../sql/__pycache__/visitors.cpython-312.pyc | Bin 35994 -> 35994 bytes .../util/__pycache__/__init__.cpython-312.pyc | Bin 5641 -> 5641 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 31611 -> 31611 bytes .../_concurrency_py3k.cpython-312.pyc | Bin 8997 -> 8997 bytes .../util/__pycache__/_has_cy.cpython-312.pyc | Bin 1099 -> 1099 bytes .../util/__pycache__/compat.cpython-312.pyc | Bin 13019 -> 13019 bytes .../__pycache__/concurrency.cpython-312.pyc | Bin 2083 -> 2083 bytes .../__pycache__/deprecations.cpython-312.pyc | Bin 13628 -> 13628 bytes .../__pycache__/langhelpers.cpython-312.pyc | Bin 84148 -> 84148 bytes .../__pycache__/preloaded.cpython-312.pyc | Bin 5900 -> 5900 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 14641 -> 14641 bytes .../__pycache__/topological.cpython-312.pyc | Bin 3946 -> 3946 bytes .../util/__pycache__/typing.cpython-312.pyc | Bin 18983 -> 18983 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 219 -> 219 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 929 -> 929 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 4280 -> 4280 bytes .../__pycache__/applications.cpython-312.pyc | Bin 13868 -> 13868 bytes .../__pycache__/background.cpython-312.pyc | Bin 2982 -> 2982 bytes .../__pycache__/concurrency.cpython-312.pyc | Bin 3485 -> 3485 bytes .../__pycache__/config.cpython-312.pyc | Bin 8190 -> 8190 bytes .../__pycache__/convertors.cpython-312.pyc | Bin 4886 -> 4886 bytes .../datastructures.cpython-312.pyc | Bin 42797 -> 42797 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 3178 -> 3178 bytes .../__pycache__/formparsers.cpython-312.pyc | Bin 14067 -> 14067 bytes .../__pycache__/requests.cpython-312.pyc | Bin 16346 -> 16346 bytes .../__pycache__/responses.cpython-312.pyc | Bin 19188 -> 19188 bytes .../__pycache__/routing.cpython-312.pyc | Bin 46020 -> 46020 bytes .../__pycache__/staticfiles.cpython-312.pyc | Bin 11582 -> 11582 bytes .../__pycache__/status.cpython-312.pyc | Bin 5119 -> 5119 bytes .../__pycache__/types.cpython-312.pyc | Bin 1238 -> 1238 bytes .../__pycache__/websockets.cpython-312.pyc | Bin 10755 -> 10755 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1578 -> 1578 bytes .../__pycache__/base.cpython-312.pyc | Bin 9366 -> 9366 bytes .../__pycache__/cors.cpython-312.pyc | Bin 7639 -> 7639 bytes .../__pycache__/errors.cpython-312.pyc | Bin 9993 -> 9993 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 5918 -> 5918 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 33748 -> 33748 bytes .../__pycache__/_api_mode.cpython-312.pyc | Bin 283 -> 283 bytes .../__pycache__/_api_version.cpython-312.pyc | Bin 432 -> 432 bytes .../__pycache__/_app_info.cpython-312.pyc | Bin 611 -> 611 bytes .../__pycache__/_base_address.cpython-312.pyc | Bin 785 -> 785 bytes .../__pycache__/_encode.cpython-312.pyc | Bin 2983 -> 2983 bytes .../stripe/__pycache__/_error.cpython-312.pyc | Bin 7288 -> 7288 bytes .../__pycache__/_error_object.cpython-312.pyc | Bin 3305 -> 3305 bytes .../__pycache__/_http_client.cpython-312.pyc | Bin 56906 -> 56906 bytes .../_request_metrics.cpython-312.pyc | Bin 1058 -> 1058 bytes .../_request_options.cpython-312.pyc | Bin 3077 -> 3077 bytes .../_requestor_options.cpython-312.pyc | Bin 4143 -> 4143 bytes .../_stripe_object.cpython-312.pyc | Bin 22976 -> 22976 bytes .../_stripe_response.cpython-312.pyc | Bin 3859 -> 3859 bytes .../stripe/__pycache__/_util.cpython-312.pyc | Bin 15711 -> 15711 bytes .../__pycache__/_version.cpython-312.pyc | Bin 212 -> 212 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 7315 -> 7315 bytes .../_base_connection.cpython-312.pyc | Bin 6853 -> 6853 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 22574 -> 22574 bytes .../_request_methods.cpython-312.pyc | Bin 10607 -> 10607 bytes .../__pycache__/_version.cpython-312.pyc | Bin 651 -> 651 bytes .../__pycache__/connection.cpython-312.pyc | Bin 38418 -> 38418 bytes .../connectionpool.cpython-312.pyc | Bin 39740 -> 39740 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 16616 -> 16616 bytes .../__pycache__/fields.cpython-312.pyc | Bin 12027 -> 12027 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 3494 -> 3494 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 24408 -> 24408 bytes .../__pycache__/response.cpython-312.pyc | Bin 52718 -> 52718 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 198 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 8176 -> 8176 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1751 -> 1751 bytes .../http2/__pycache__/probe.cpython-312.pyc | Bin 3702 -> 3702 bytes .../util/__pycache__/__init__.cpython-312.pyc | Bin 1011 -> 1011 bytes .../__pycache__/connection.cpython-312.pyc | Bin 4701 -> 4701 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 1223 -> 1223 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 8323 -> 8323 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 2879 -> 2879 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 20292 -> 20292 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 17175 -> 17175 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 5563 -> 5563 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 13330 -> 13330 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 11695 -> 11695 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 16232 -> 16232 bytes .../util/__pycache__/util.cpython-312.pyc | Bin 2000 -> 2000 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 3446 -> 3446 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 388 -> 388 bytes .../__pycache__/_subprocess.cpython-312.pyc | Bin 2769 -> 2769 bytes .../__pycache__/_types.cpython-312.pyc | Bin 11610 -> 11610 bytes .../__pycache__/config.cpython-312.pyc | Bin 25237 -> 25237 bytes .../__pycache__/importer.cpython-312.pyc | Bin 1792 -> 1792 bytes .../__pycache__/logging.cpython-312.pyc | Bin 8003 -> 8003 bytes .../uvicorn/__pycache__/main.cpython-312.pyc | Bin 20339 -> 20339 bytes .../__pycache__/server.cpython-312.pyc | Bin 16129 -> 16129 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 199 -> 199 bytes .../lifespan/__pycache__/on.cpython-312.pyc | Bin 7940 -> 7940 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 196 bytes .../loops/__pycache__/auto.cpython-312.pyc | Bin 663 -> 663 bytes .../loops/__pycache__/uvloop.cpython-312.pyc | Bin 549 -> 549 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 201 bytes .../__pycache__/asgi2.cpython-312.pyc | Bin 1061 -> 1061 bytes .../message_logger.cpython-312.pyc | Bin 4407 -> 4407 bytes .../__pycache__/proxy_headers.cpython-312.pyc | Bin 3707 -> 3707 bytes .../__pycache__/wsgi.cpython-312.pyc | Bin 9844 -> 9844 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 200 bytes .../__pycache__/utils.cpython-312.pyc | Bin 2985 -> 2985 bytes .../http/__pycache__/__init__.cpython-312.pyc | Bin 205 -> 205 bytes .../http/__pycache__/auto.cpython-312.pyc | Bin 628 -> 628 bytes .../__pycache__/flow_control.cpython-312.pyc | Bin 3157 -> 3157 bytes .../httptools_impl.cpython-312.pyc | Bin 29000 -> 29000 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 211 -> 211 bytes .../__pycache__/auto.cpython-312.pyc | Bin 845 -> 845 bytes .../websockets_impl.cpython-312.pyc | Bin 18376 -> 18376 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 893 -> 893 bytes .../__pycache__/basereload.cpython-312.pyc | Bin 6947 -> 6947 bytes .../__pycache__/multiprocess.cpython-312.pyc | Bin 4093 -> 4093 bytes .../watchfilesreload.cpython-312.pyc | Bin 4512 -> 4512 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 10334 -> 10334 bytes .../uvloop/__pycache__/_noop.cpython-312.pyc | Bin 346 -> 346 bytes .../__pycache__/_version.cpython-312.pyc | Bin 218 -> 218 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 613 -> 613 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 552 -> 552 bytes .../__pycache__/filters.cpython-312.pyc | Bin 7219 -> 7219 bytes .../__pycache__/main.cpython-312.pyc | Bin 17149 -> 17149 bytes .../__pycache__/run.cpython-312.pyc | Bin 19508 -> 19508 bytes .../__pycache__/version.cpython-312.pyc | Bin 286 -> 286 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4494 -> 4494 bytes .../datastructures.cpython-312.pyc | Bin 8906 -> 8906 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 17939 -> 17939 bytes .../__pycache__/frames.cpython-312.pyc | Bin 16025 -> 16025 bytes .../__pycache__/headers.cpython-312.pyc | Bin 18151 -> 18151 bytes .../__pycache__/http11.cpython-312.pyc | Bin 15493 -> 15493 bytes .../__pycache__/imports.cpython-312.pyc | Bin 3417 -> 3417 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 25404 -> 25404 bytes .../__pycache__/server.cpython-312.pyc | Bin 23067 -> 23067 bytes .../__pycache__/streams.cpython-312.pyc | Bin 5456 -> 5456 bytes .../__pycache__/typing.cpython-312.pyc | Bin 1263 -> 1263 bytes .../__pycache__/utils.cpython-312.pyc | Bin 2239 -> 2239 bytes .../__pycache__/version.cpython-312.pyc | Bin 2986 -> 2986 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 201 bytes .../__pycache__/compatibility.cpython-312.pyc | Bin 1077 -> 1077 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 316 -> 316 bytes .../__pycache__/base.cpython-312.pyc | Bin 3930 -> 3930 bytes .../permessage_deflate.cpython-312.pyc | Bin 19444 -> 19444 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 486 -> 486 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 3334 -> 3334 bytes .../__pycache__/framing.cpython-312.pyc | Bin 8203 -> 8203 bytes .../__pycache__/handshake.cpython-312.pyc | Bin 6320 -> 6320 bytes .../legacy/__pycache__/http.cpython-312.pyc | Bin 7708 -> 7708 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 64131 -> 64131 bytes .../legacy/__pycache__/server.cpython-312.pyc | Bin 46724 -> 46724 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1464 -> 1464 bytes .../__pycache__/__wrapt__.cpython-312.pyc | Bin 1328 -> 1328 bytes .../__pycache__/arguments.cpython-312.pyc | Bin 3959 -> 3959 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 14603 -> 14603 bytes .../__pycache__/importer.cpython-312.pyc | Bin 10580 -> 10580 bytes .../wrapt/__pycache__/patches.cpython-312.pyc | Bin 10764 -> 10764 bytes .../wrapt/__pycache__/proxies.cpython-312.pyc | Bin 12802 -> 12802 bytes .../__pycache__/weakrefs.cpython-312.pyc | Bin 3631 -> 3631 bytes .../__pycache__/wrappers.cpython-312.pyc | Bin 35447 -> 35447 bytes Frontend/src/App.tsx | 33 ++ .../src/components/auth/AccountantRoute.tsx | 57 +++ .../src/components/auth/CustomerRoute.tsx | 4 +- Frontend/src/components/auth/index.ts | 1 + .../src/components/common/ExportButton.tsx | 186 +++++++ Frontend/src/components/common/index.ts | 1 + Frontend/src/components/layout/Header.tsx | 18 +- .../components/layout/SidebarAccountant.tsx | 284 +++++++++++ Frontend/src/components/layout/index.ts | 1 + .../src/components/rooms/FavoriteButton.tsx | 2 +- Frontend/src/pages/AccountantLayout.tsx | 22 + .../src/pages/accountant/DashboardPage.tsx | 478 ++++++++++++++++++ .../pages/admin/AnalyticsDashboardPage.tsx | 43 +- .../src/pages/admin/InvoiceManagementPage.tsx | 38 +- .../src/pages/admin/PaymentManagementPage.tsx | 44 +- .../src/pages/admin/UserManagementPage.tsx | 1 + Frontend/src/pages/customer/BookingPage.tsx | 8 +- Frontend/src/utils/exportUtils.ts | 310 ++++++++++++ 889 files changed, 1912 insertions(+), 57 deletions(-) create mode 100644 Backend/add_accountant_role.py create mode 100644 Backend/seed_initial_data.py create mode 100644 Backend/seed_users.py create mode 100644 Frontend/src/components/auth/AccountantRoute.tsx create mode 100644 Frontend/src/components/common/ExportButton.tsx create mode 100644 Frontend/src/components/layout/SidebarAccountant.tsx create mode 100644 Frontend/src/pages/AccountantLayout.tsx create mode 100644 Frontend/src/pages/accountant/DashboardPage.tsx create mode 100644 Frontend/src/utils/exportUtils.ts diff --git a/Backend/add_accountant_role.py b/Backend/add_accountant_role.py new file mode 100644 index 00000000..3a0a0139 --- /dev/null +++ b/Backend/add_accountant_role.py @@ -0,0 +1,57 @@ +#!/usr/bin/env python3 +""" +Script to add the 'accountant' role to the database. +Run this script once to create the accountant role if it doesn't exist. +""" + +import sys +from pathlib import Path + +# Add the Backend directory to the path +backend_dir = Path(__file__).parent +sys.path.insert(0, str(backend_dir)) + +from src.config.database import SessionLocal +from src.models.role import Role + +def add_accountant_role(): + """Add the accountant role to the database if it doesn't exist.""" + db = SessionLocal() + try: + # Check if accountant role already exists + existing_role = db.query(Role).filter(Role.name == 'accountant').first() + + if existing_role: + print("✓ Accountant role already exists in the database.") + print(f" Role ID: {existing_role.id}") + print(f" Role Name: {existing_role.name}") + return + + # Create the accountant role + accountant_role = Role( + name='accountant', + description='Accountant role with access to financial data, payments, and invoices' + ) + db.add(accountant_role) + db.commit() + db.refresh(accountant_role) + + print("✓ Accountant role created successfully!") + print(f" Role ID: {accountant_role.id}") + print(f" Role Name: {accountant_role.name}") + print(f" Description: {accountant_role.description}") + + except Exception as e: + db.rollback() + print(f"✗ Error creating accountant role: {e}") + sys.exit(1) + finally: + db.close() + +if __name__ == '__main__': + print("Adding accountant role to the database...") + print("-" * 50) + add_accountant_role() + print("-" * 50) + print("Done!") + diff --git a/Backend/alembic/__pycache__/env.cpython-312.pyc b/Backend/alembic/__pycache__/env.cpython-312.pyc index 7bea133b2ef00c44e4504ae5be67bdc808569556..47cf6f85417a90a278241d1d1ae6e1d098c5cf61 100644 GIT binary patch delta 20 acmbOzI#HDSG%qg~0}wokP}s=b#svT~;RNph delta 20 acmbOzI#HDSG%qg~0}$j*mEXwS#svT}5CpXV diff --git a/Backend/alembic/versions/__pycache__/08e2f866e131_add_mfa_fields_to_users.cpython-312.pyc b/Backend/alembic/versions/__pycache__/08e2f866e131_add_mfa_fields_to_users.cpython-312.pyc index cc807098ff88028e43c02f4f83735da8ed6e1da5..7f2fe532521a187e9887dd0f13af457e429a56c7 100644 GIT binary patch delta 20 acmbQwJ)fKVG%qg~0}wokP}s;lg%toaqy+!~ delta 20 acmbQwJ)fKVG%qg~0}$j*mEXucg%toY(*(u< diff --git a/Backend/alembic/versions/__pycache__/0e2dc5df18c3_add_privacy_terms_refunds_to_page_type_.cpython-312.pyc b/Backend/alembic/versions/__pycache__/0e2dc5df18c3_add_privacy_terms_refunds_to_page_type_.cpython-312.pyc index cd5b9465ec65f3721111e1fd48dba2bb70c054f0..5a6478e103a5686d594992ffd112d7877cba7811 100644 GIT binary patch delta 19 ZcmdnNxr3AIG%qg~0}wok*vPex1pqVJ1tkCg delta 19 ZcmdnNxr3AIG%qg~0}x0mZRA?V0st-w1S9|e diff --git a/Backend/alembic/versions/__pycache__/1444eb61188e_add_section_title_fields_to_page_content.cpython-312.pyc b/Backend/alembic/versions/__pycache__/1444eb61188e_add_section_title_fields_to_page_content.cpython-312.pyc index 0fa0dbbee64b337cce0fc8793e8cf0368a58fdfd..4bcfed31f3ef7f43c58ce95b066494e68add80e3 100644 GIT binary patch delta 22 ccmaE{n(@VIM()$Ryj%=G@FYTEBlq1<09(8VZ2$lO delta 22 ccmaE{n(@VIM()$Ryj%=GkT+F+Blq1<09oq?GXMYp diff --git a/Backend/alembic/versions/__pycache__/163657e72e93_add_page_content_table.cpython-312.pyc b/Backend/alembic/versions/__pycache__/163657e72e93_add_page_content_table.cpython-312.pyc index 953fc19d84164fc31c60c15bb28cae4acc052885..fbc1ce4ecf201dc1102749c95138cf8725fffd8e 100644 GIT binary patch delta 20 acmeCw>(t{u&CAQh00d7W6gG1I69WJ@F$I+X delta 20 acmeCw>(t{u&CAQh00encU_09^71eE_09zpkLjV8( diff --git a/Backend/alembic/versions/__pycache__/6a126cc5b23c_add_capacity_room_size_view_to_rooms.cpython-312.pyc b/Backend/alembic/versions/__pycache__/6a126cc5b23c_add_capacity_room_size_view_to_rooms.cpython-312.pyc index fadc4c165d9175f3f5f9c29a4dcf27406b37428c..a1dd61210eb67796f9aff7f28396897ae39f211a 100644 GIT binary patch delta 20 acmeC>?&an_&CAQh00d7W6gF}t@w)C9@^ delta 20 acmeC>?&an_&CAQh00enct@v0|bx& diff --git a/Backend/alembic/versions/__pycache__/96c23dad405d_add_system_settings_table.cpython-312.pyc b/Backend/alembic/versions/__pycache__/96c23dad405d_add_system_settings_table.cpython-312.pyc index caae082935d3892f815baf2f5a7f62b3ea9b1f72..578a5ab183dbef3cd6a97f7de1e67dc2541d98e0 100644 GIT binary patch delta 20 acmew*^-GHTG%qg~0}wokP}s(l delta 20 acmZo;Z)4{^&CAQh00enc`jO delta 20 acmZ21vsi}vG%qg~0}$j*mEXuM!3O{|-~@dD diff --git a/Backend/src/middleware/__pycache__/error_handler.cpython-312.pyc b/Backend/src/middleware/__pycache__/error_handler.cpython-312.pyc index e6a65c78387223ea022a9232fb147fe66f9a3171..0d3a2bd51a98f85e7f7754046d1a0c573e0b877a 100644 GIT binary patch delta 20 acmcbqdQ+AAG%qg~0}wokP}sJ0tH$C delta 20 acmaFL_mq$OG%qg~0}$j*mEXu6#SQ>HF$Ew1 diff --git a/Backend/src/middleware/__pycache__/timeout.cpython-312.pyc b/Backend/src/middleware/__pycache__/timeout.cpython-312.pyc index 5dfa254a4371f93037762cd0b31a2748ba1b1b96..b3a70c52f1315875aeb83321636b30d8b3f08677 100644 GIT binary patch delta 20 acmbQkKZl?DG%qg~0}wokP}s;lksSauz6AjQ delta 20 acmbQkKZl?DG%qg~0}$j*mEXucksSas?F7dF diff --git a/Backend/src/models/__pycache__/__init__.cpython-312.pyc b/Backend/src/models/__pycache__/__init__.cpython-312.pyc index bba21412d25e0d27ecc9c149190b05b7e4cec6b4..76f051e0d6fe92eeed8565f5e4c46126f7ab407a 100644 GIT binary patch delta 20 acmaFG^NNT2G%qg~0}wokP}s;F&jtWLfdym$ delta 20 acmaFG^NNT2G%qg~0}$j*mEXu6&jtWJumvgr diff --git a/Backend/src/models/__pycache__/audit_log.cpython-312.pyc b/Backend/src/models/__pycache__/audit_log.cpython-312.pyc index a546ed92deb5a43bb030d2f878eb423f73b0af72..5aa70c07d202f167e8976047c111b4f59799dc06 100644 GIT binary patch delta 20 acmcb>bAgBZG%qg~0}wokP}s=r$_4;CaRn9t delta 20 acmcb>bAgBZG%qg~0}$j*mEXwi$_4;Apak3i diff --git a/Backend/src/models/__pycache__/banner.cpython-312.pyc b/Backend/src/models/__pycache__/banner.cpython-312.pyc index 972877be63778548cae8cc3c50b9b5e07da72a52..6f1a725931018f7f20f38dd5783aae61e80293e1 100644 GIT binary patch delta 20 acmbQqKa-#PG%qg~0}wokP}s=b#|{8AMg;f( delta 20 acmbQqKa-#PG%qg~0}$j*mEXwS#|{88bp*Zu diff --git a/Backend/src/models/__pycache__/booking.cpython-312.pyc b/Backend/src/models/__pycache__/booking.cpython-312.pyc index eceb116602f31577ad6d3589cd19627617650195..bb456b05acb3f7df26d5e9c4fc802d8b8c54e24a 100644 GIT binary patch delta 20 acmX>kdPtP}G%qg~0}wokP}s=5oeKavi3NfH delta 20 acmX>kdPtP}G%qg~0}$j*mEXv{oeKatxCKZ6 diff --git a/Backend/src/models/__pycache__/chat.cpython-312.pyc b/Backend/src/models/__pycache__/chat.cpython-312.pyc index 2851278083b3fba0c36da13e71d1b5a3e6e3a1d2..0f02ac490a8a4addfd875a87f7358b4a1ee955d5 100644 GIT binary patch delta 20 acmcaFdS8_LG%qg~0}wokP}sc5e3-* delta 20 acmcaFdS8_LG%qg~0}$j*mEXvHg$n>aKn0%w diff --git a/Backend/src/models/__pycache__/checkin_checkout.cpython-312.pyc b/Backend/src/models/__pycache__/checkin_checkout.cpython-312.pyc index c77b351dcbcc5370005ace8fbef2cd4fb86d6044..d5dfef8c0a88fc7e7d1f67204a5638b636400824 100644 GIT binary patch delta 20 acmX@ccZ`qwG%qg~0}wokP}srX diff --git a/Backend/src/models/__pycache__/cookie_integration_config.cpython-312.pyc b/Backend/src/models/__pycache__/cookie_integration_config.cpython-312.pyc index b8036457ed14f120c8cac2627785934a382b59d5..9a756060f7d084f27c7e4b4609525924a3dd996e 100644 GIT binary patch delta 20 acmbQjHHC}&G%qg~0}wokP}s=L$qE25$OK&g delta 20 acmbQjHHC}&G%qg~0}$j*mEXwC$qE23_XHyV diff --git a/Backend/src/models/__pycache__/cookie_policy.cpython-312.pyc b/Backend/src/models/__pycache__/cookie_policy.cpython-312.pyc index 2499489233bbbf673cbc23538619489e9185da0c..a76538844b9f29467ed67e1df3472c6b88c37160 100644 GIT binary patch delta 20 acmbQvHJyw5G%qg~0}wokP}s=L!wLX0Km=w0 delta 20 acmbQvHJyw5G%qg~0}$j*mEXwC!wLW}Zv-p= diff --git a/Backend/src/models/__pycache__/favorite.cpython-312.pyc b/Backend/src/models/__pycache__/favorite.cpython-312.pyc index 8d47a002d9edb171b696fcbddc6555d7fedaf057..9e4ba738eb175734423790adf5dd24e80e088713 100644 GIT binary patch delta 20 acmdnUxsj9mG%qg~0}wokP}s=5j0FHUD+MtC delta 20 acmdnUxsj9mG%qg~0}$j*mEXv{j0FHSS_Jn1 diff --git a/Backend/src/models/__pycache__/invoice.cpython-312.pyc b/Backend/src/models/__pycache__/invoice.cpython-312.pyc index e0a6bd0d87dd7e6df698eb92da2b39adf77bb0e3..7d68a5367beba2bd7f6bf789637467d8ae5ec836 100644 GIT binary patch delta 20 acmbQGHcO5BG%qg~0}wokP}s=LFAM-Swgj~R delta 20 acmbQGHcO5BG%qg~0}$j*mEXwCFAM-Q2 delta 20 acmZ1=wm^*gG%qg~0}$j*mEXuM$_)TBjRa)? diff --git a/Backend/src/models/__pycache__/promotion.cpython-312.pyc b/Backend/src/models/__pycache__/promotion.cpython-312.pyc index d21d56d08323bcaab15943beeda5ca89122308d6..eaeaa1437784133780e2af38a2c398c51bea0cff 100644 GIT binary patch delta 20 acmZ1`wM>fpG%qg~0}wokP}s;V%?kiF-~_t> delta 20 acmZ1`wM>fpG%qg~0}$j*mEXuM%?kiE4+Mb# diff --git a/Backend/src/models/__pycache__/refresh_token.cpython-312.pyc b/Backend/src/models/__pycache__/refresh_token.cpython-312.pyc index e929ee9d795140c9784fe3bf468a9256f9378722..34942cff3445db45c1ec6c1186466e60083e6ffa 100644 GIT binary patch delta 20 acmaFM@s@-8G%qg~0}wokP}sb%tO9ZU| delta 20 acmZqWY~|!W&CAQh00encb%rdIWO- diff --git a/Backend/src/models/__pycache__/room.cpython-312.pyc b/Backend/src/models/__pycache__/room.cpython-312.pyc index ed213aa82c8db7d9ce2e8fe44497995d487e3901..bbcffa218041fbee143c0e2fea2e363dbc28c58f 100644 GIT binary patch delta 20 acmX>jbVi8#G%qg~0}wokP}s=r$O!;DtOXeW delta 20 acmX>jbVi8#G%qg~0}$j*mEXwi$O!;B+XUYL diff --git a/Backend/src/models/__pycache__/room_type.cpython-312.pyc b/Backend/src/models/__pycache__/room_type.cpython-312.pyc index 4aa1eea64ba1874c6e7cc070a5551b276943dbea..40fcfa38d2753aa2a9e49acf3d525f48fd356d78 100644 GIT binary patch delta 20 acmcc3b(@R(G%qg~0}wokP}s;FzzP67-~}=O delta 20 acmcc3b(@R(G%qg~0}$j*mEXu6zzP664+QuC diff --git a/Backend/src/models/__pycache__/service.cpython-312.pyc b/Backend/src/models/__pycache__/service.cpython-312.pyc index 4ccff8d4ffe9ab2abbd162578a61ff3130bf737a..0620cd105449f2b6a3e1ed6a9cea0ab27680d898 100644 GIT binary patch delta 20 acmey)^_`3RG%qg~0}wokP}sX delta 20 acmey)^_`3RG%qg~0}$j*mEXvn!wLXDZv{*M diff --git a/Backend/src/models/__pycache__/service_booking.cpython-312.pyc b/Backend/src/models/__pycache__/service_booking.cpython-312.pyc index 0a4d0b92763247aeb38a3835d74b5cb145cce0f9..e06b7fba452c0a2f9679fecce9dbdffe648f55ec 100644 GIT binary patch delta 20 acmbQNG+BxJG%qg~0}wokP}s=LAqW69300t!h delta 20 acmew*{7aboG%qg~0}$j*mEXwyo)Z8UGG%qg~0}wokP?*R)1pqDZ1jhgX delta 19 ZcmbQwIG>UGG%qg~0}$j*m7mBx1pq8r1dRXy diff --git a/Backend/src/routes/__pycache__/about_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/about_routes.cpython-312.pyc index e520c5dda4ba1305c3cefdbcff4e116c3879c6f0..091c832d296ceaed98a8040c3d9a90877ca7539f 100644 GIT binary patch delta 20 acmdm~yi=L`G%qg~0}wokP}s=5P7nY*AO(s5 delta 20 acmdm~yi=L`G%qg~0}$j*mEXv{P7nY(PX$l_ diff --git a/Backend/src/routes/__pycache__/accessibility_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/accessibility_routes.cpython-312.pyc index b400e32f7805b0f80fc41fde7a739f0a88883afe..38f88c556c6fd6234f1756e4590aabd51c6b76e6 100644 GIT binary patch delta 19 ZcmZ1@wML5TG%qg~0}wok*vO^C3ji}+1gro6 delta 19 ZcmZ1@wML5TG%qg~0}#Aa+sLKF3ji{K1b+Yk diff --git a/Backend/src/routes/__pycache__/admin_privacy_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/admin_privacy_routes.cpython-312.pyc index 89b7165246f4642b4b98c0d2fb445a2dde3b0ddd..e66585c7cd4f307ce74e638bba62aef51fea8bb3 100644 GIT binary patch delta 20 acmX>pcT$e~G%qg~0}wokP}sIE(U delta 20 acmX>pcT$e~G%qg~0}$j*mEXv1#}5EI83gnI diff --git a/Backend/src/routes/__pycache__/audit_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/audit_routes.cpython-312.pyc index 28a69f3e1f3d5eedab69322b67755bf3cc13ae4a..0b0003ed83b9dfbe1b9e5e913dc531df501501d8 100644 GIT binary patch delta 20 acmdlMx-FFZG%qg~0}wokP}s=5S_=R|$p!uZ delta 20 acmdlMx-FFZG%qg~0}$j*mEXv{S_=R`_yxoO diff --git a/Backend/src/routes/__pycache__/auth_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/auth_routes.cpython-312.pyc index c21a5078bc0f94d461f02e910ec93785e35b0914..cd0d76ddd41b12731f7062d47cd5c04d889330fd 100644 GIT binary patch delta 22 ccmcaUf${nTM()$Ryj%=G@FYTEBe#zS08_UHcK`qY delta 22 ccmcaUf${nTM()$Ryj%=GkT+F+Be#zS08!=!Jpcdz diff --git a/Backend/src/routes/__pycache__/banner_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/banner_routes.cpython-312.pyc index b245cb19b945982ffb0f6b113710b653fbe56a09..76a96a60278b390addfd984de7292706d06185c8 100644 GIT binary patch delta 20 acmX?-dnA|pG%qg~0}wokP}s=5(+mJeWd>vb delta 20 acmX?-dnA|pG%qg~0}$j*mEXv{(+mJclm;pQ diff --git a/Backend/src/routes/__pycache__/booking_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/booking_routes.cpython-312.pyc index 3e9ed556620aa5eb57a40d5309c0bba93ed0fc03..41c4675d864e614bccae38efd177a7786fc6a563 100644 GIT binary patch delta 13804 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 HLG^zDGOKRU delta 13892 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 diff --git a/Backend/src/routes/__pycache__/cancellation_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/cancellation_routes.cpython-312.pyc index 01b707ee21a929e28ea9365c795f598d1bc726ff..5a2bcdfae5a13a9f9e51b604e6d1b771417c2c64 100644 GIT binary patch delta 19 ZcmZ22wOWenG%qg~0}wok*vO^G3ji}W1gQW3 delta 19 ZcmZ22wOWenG%qg~0}wn_+sLKJ3ji`h1b6@d diff --git a/Backend/src/routes/__pycache__/chat_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/chat_routes.cpython-312.pyc index 91bf1545d419bf9b5bc978a59e47fdee69e1ef83..fa57a241234efa8509b161759660d7a24c726517 100644 GIT binary patch delta 22 ccmZp9#n|$Sk^3|+FBbz4Jc&@)$o;bf09B|5UH||9 delta 22 ccmZp9#n|$Sk^3|+FBbz4In*{Cv delta 20 acmdm_ut|aYG%qg~0}$j*mEXv%E&u>G$^^6k diff --git a/Backend/src/routes/__pycache__/faq_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/faq_routes.cpython-312.pyc index 470c55a27624fc211dba5dedc4ffe082a0f5ad05..b9765f7e9401a2573653bcfa21dca0341f25bce5 100644 GIT binary patch delta 19 ZcmX>ud0dj~G%qg~0}wok*vPe)2LL!c1$qDg delta 19 ZcmX>ud0dj~G%qg~0}#AZ+sL(-2LLyI1yTS2 diff --git a/Backend/src/routes/__pycache__/favorite_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/favorite_routes.cpython-312.pyc index cd1a9e469918e5015dbd036f1699f2c78adc1460..35cb6d1924f4d913a20895f22bb0c28b409f8820 100644 GIT binary patch literal 9825 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 diff --git a/Backend/src/routes/__pycache__/footer_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/footer_routes.cpython-312.pyc index 4d36e4b4386891a05c762708e7c79c03e8efb886..551f92fc1b420e58b34c8ef88f50ab59e892f736 100644 GIT binary patch delta 20 acmaDM`9hNWG%qg~0}wokP}s}_@mxC_>XwuE+fNlWSls4ZYa*=%5us&T@k93vJ%MQvnS2%vWIi0<&QV0U#aiEH{6+!blwDL+-# zgjs}k$&eU8vt&;E$h^wq20G&RpvxXqWvV(UfjddR(N`Vbd9r&YcsqBuaHl{@ z#!JT~>U$N%CA4%p&T)6as&M9bP^g$a@fM-dB7z+hD8C>^U&$&raE$zEY(UMV&Xnh8 z5m`2UX>ErSLI4s;n`>($)YOdGso6p{qhc8xZRB;c_f!8a3oUEPQv39IWx8+_pe-QMp3b=|6nlY~yi|LnDd<^_;;NfH!j*?rhUKAt0 zyZUT!X?A_tg3prk?q{Qi7lt}w7iNG@&`-^t!D_msrVhe6K`L&aVSdLNEC1kL6{Xu~5EWGfy6+X-+LfF)?0 zX!Xq_SK#|lu~GM(1@@l_(;PF?3YDom*2ywxq%-#~#BPK0uryyDXjtH%m;{@p{5n`U zfC%}nQC|F)R#smiST^BNm{mhTtIenJ;FX+6&-1)Xq+x0`7=j z*J1cE1|KfJ({zJ(9tkY45fW^XTZh49;{Gp?Q!NcAq24tUF6468(wRv;q`j0oTH`Rq zuBbWnNVez7n=JxD>tw~dPD-tH&~k6K{<6rVB;n}8=6hVjGOvfV8T`YnLP-zW3cHgv!dAB@X&1KbBDJ?`grtYW zf@l)rSKL6>xferks4Lb0S7lx(JiCx8&9XG(gBv9y(7%^biy095;L^yOG7{$c9L z7nGTt+KZPd2S4YcL*TeQ8gBG}>-(1LyU+RWbB*P5JoG^%*0$>dL=)U?j1M(UfEtrERTC4fF9u>76Jr|hxr2aBon*dy?m6e4 z`R@6dPX-?LTW(iYnmGDo-V>AV+67BBx^^QR=lNxxWcU^oB8$A=6<$W*!*M*P@btCH z0XfJ#{MLx#l|71Gu2b|E4YEWmf`S@IUhtzs^P&(Q5# zhC8hd@Etcmkiu_--m`3cE{n&KvaDoqh$_qaWM(>>Oei=EeiC`xSa-S+L$-bgYG1js zHn%#rA)O+Frh%XZ%}3qQdahW9Vir`acf`y>vDq2Z2_>DD$|bW9vlMQde$}{WBH_Dc zfFl4$0UF31>q*o`+_o=_F;K)Qkh``B(b+HBPJyNmpdTPauGoD6puZ$w9bL-$w35q> zjw=|Fk0r2hk{vgalD!ihCdkoM2{~ZdkW9FfoObj!?cE<*jNPAsngmM%E2DYk-#lQM zeBjdq8%T~5dP0Ey=yi1SOQBOU0?!hjBUxlLpkki~( z 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 MoPL8y#cZ$t099{p1ONa4 delta 3693 zcmbuB3viUx7035}-|pr`mb@Qi^MJhAgv2CJ@*q#tkbvY-TLNean|vFxB&s!3h_m|m5#^&p@*uPoKAq7r@ z;SdY_UB%ugplUTnIi%21HGOKKW44yzNYG*(AsxY55e=*9Y&JzG*;D7-8`q$jPZN>qdXbL+coMUU|Njhe&L?l-$TIy??9 z*D$5pySup)mZ_uLZTI>^ogSylNn3TdoT z$LFb-sbsLLV4qi_nse0iF*T9Rnd*g1lNemcQJeGh+{{md>IU(y#|5sC5S%}x*3H|T zn&xovRq%8IYk_ot1NDFxNCVaZKKfB!hWTlj8)-}4j3v*&M85cDU@L$O@gZOs_#YB8 z59<PcB-Rsi$ozru|^DhARJGVToe8t3R$4WBR%hSrVY{YYR;JY6YQL2GT zKxXg(Sb+lz%Vy@Kn22zI8NkHhy`{6*9@<~}ct9|$?2?jM#x~WP>O&1@Ls)$oI~y8R zU#yMBudLljvzBP1X)F-^Z1i=n2vH0GwYb&aVq(xkAS!_$G7utw>_y4k5O!ko<8 z8Q@te&<3 z6Y`bvDGP>GfSaQ23vGcY7*C#Gb{v_6BsdlUU9{O=kT)Vszv}5-6R6)&c%Ux7sfRmV zUVc*8w&;M!-l31}iz7~9$!Xwsz)`AhYY=^YN84u+%tudpo{E)>B;CZzemwbKUo+qs!Z7`Qtqf z{)DsL;mP-SxwFU7Ix*%Sk!Rg>^B5uz(NESD2TBu>{Sn-;w%5rWo>tA#4ntg;`!hq=j)Q;y+1Z44R{-M-D^59+gXm(#V1%k-sSKDM1Z>|RG}kDZ$O!^33m zrO>ZZXTR0D0r8M$TO|Jw_M{F!qJ90bW+~v)G}`}g#8vn|2bKtUBB^;ehPJ1gDQ6%> zxnTZj3yU;0jC*&WcUW43Bb{9QT(22yKbPjMyG#M zOjk$el504Qne}Ie9||^~K!iaW-x(*gb9rZVyllRKzKggPegi8)sex{Fz`1WTGw{D)_%Vg-Z7I30_Tjz^{1x~ca0U1j_zd_v?b+)~ zmLd+rPY$7YuhZ?~3D{mD@DD27w@6gW;J%8mBuvP=I8LYbHDt+>$-k>)dhGo@_U=0+ z6NmNjRJwoe?YfDqOJ4mnUM#<6|Aci3_ztDQZz8~ApaEzEq-sW~&>l@w4@9q*S0u}1 z1H4i{xG`G{kHH=%t0b^xG3O6y?{i!fe#=gnE`!>~J_ z7~4|$7^Y3YTtKF*1eV;{YFKdseska!{!5oB!}@#rQU&Jb0}ld;2I@O(jgoaI^^G)& zug{D0+Tn#POTTvbH=+4f>`?ANo-9Tj*TKJWE$vhHdd^JP9W5kh`=Xza<&CAQh00d7WHgYlY0st;|1W5n@ delta 19 ZcmeB{>Xza<&CAQh00g(yHgYlY0st*X1P%ZI diff --git a/Backend/src/routes/__pycache__/report_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/report_routes.cpython-312.pyc index 446096683027d04d42eac50549327481c1fc61c9..4234b0a17b2b6f6e957464700f0d7ae1b89ad536 100644 GIT binary patch delta 1995 zcmZvcTWk|Y6oz+pZ70NaAcT;_v6GaL#7nq@Kq#SxxVZq1^FSyi6e=9YyK!8{-gI_N z8Wn12sS2eRr9-bT^d^-Mgj89o)X>W#4^<^7m0E4p7vAzxL3wLcsq>G)xCl%6_MhW3 zv&ZwFlRs~ekA5beA3dH5iGR)gMbS-#4h{0+&z#xfZc4#zhT8r$X$S_d=G1De3hKa zUus;eI@E=*%%M8yCg@IJGl%U?C*#yG^|+DI=oTJXD&v?ZwnK}}nzWZM)N&f)4|{nm zZY7WD(Q(5_B{K<=-_Ez4&7_b0(YY}f<{5Mdh;XQlbU*Ye;1KXMAj*$I)o|El(|ShZ zC($v4V!$%sFt8dp0vrHpfoFi{01t=l%3AS^F+)crDJN0%FdYTzfJ)#XFbPn=2_!gF z&pl%h2m!AHFvoUV2LI_%(~41xo>cioL!Jjj?J#($5zE)0FjA_+ zR(OG>MzR&*Rm))20kw>V*oN>cxxLu)z>jWmV}(n3;EXWkC^AI_Fv>1Bv*U$^e3TdB zl0}WM(I)Xny7RWgd$8a(j4oLF9@P8581NRLbJ$AEjMEI36To?v9BRm6wy3xxVc&;X zif;b^3ioEaV$*1#!bPPKamOe1cuLozM%F@C6#Bt-Qa<$B!!6(~X#u!bxSSBq@nq{v zK9|Ktzkr~ER{MlCMEvAa))VO>pRuV(hJ4O`k8E^(fdg`E`EUz4$+iryAy@MUhgY~= zCgN6pYV_Z-T^-Qt0d#}yvKD(Y~?KyWM4)Dxi=Ac;Of08 z6Qd%$d}vg}&)SDQ#mgv}Ffm-1CcAPvHk;NnRy3_!lZHmeu|)%fBhN#j&M`4Og@F>) z!as_uFZeePbrC3zn_5K+cYtUBPyzIy?G!U+D=<;~U;Lh38EYipv7g48d&T)bAUDTh zR&kV$m(cVikJ>8}x)r7RF+G#j`E%Ofb9*hnJ~ra)!K~9$z#MQDxW+Lr-Q|?T{=dtE zX+z6S>AUD}Jcbc7!|dycch}vPq-Paf;i)t71RjQ*Q0_=lRynTl?@lQF4j#-Z0}hr- z3@d5HVvC6m_4<*-&7R4do0B(YUgl{bdAH2dUL2S z$QYC@JWh}-Pn7zVA-p7_jNr}v%6@ibGEn!D+^75{Rg>UdMUw08$XwB1dBy($0iwBI delta 1912 zcmZvcZA@EL7{`0=r3I-)-d_qWjKbPVV2q7Pr2=!Hyd{n~WrNI8dM|B(_QGik5;wZ& zqRy9OdYon-e3^c53w~MpWs*tuX)!S|OcISZCVn&FgF4(d7ZcC_TviC#{qVd0^Yon4 zr_cX+dgUkb*Ii=!!Dh=h@h5({HhS{|TNU~3hTBJ^6^Y%J98G4WN_|{ysNx$GdsbCv zRgGGvIMm#!e8tJWAudwO)=BC1VVk5p{5VIcW5tq->|;kHw{<64&mxjbcC8TBLn_z+ zsW6V#9%#sZLt|DwJeH^IzhGWL&ionkER}fOnF9GZ$xP?mEVCZsL3$WyXU%qxrCqGq zxZQ7g8nTmpYOf=mY|Va_bg|Cr2c&~NRntfgu`@M;`A7H`U5YBy$8OXdCVuuuO?_Dd z&NTx20XN`b4o8Qz8?qDVVH1v0>ru#OfnzM~XteK22Eksy0*taXN1L?+(g*ah2ae`K zKjbrjNcB0^;e3Of&)jmZ7M(hXu*Bibp)Jq{fL0FO8jFUgmQX`lT%m0|vYE?qo#;7A za4A8%_`;h3NCNHdvj;Y*A4%;pQh;ist_q3T4zS!8!DkQMXw{tf7b+no*U2mP(>YjP}sY zR7>%Fdpg3tt0Q2hQ5@0uwp3+8r8|B987`O6d7rc9AqV+_4Gp!Ct895FPQGM+4z*am z!UfB0->{3MS>JFySlh927nnO1ywPbLXiXVzmrDFcCaOIT@ zE&iBbEAN<2_HDqEei!?8T-_eJazurfdnQNxtQYWUwivry6|;un(hKH-OEEQ`48+uA zL{n%GM?!#bBnpK*C&Vln^Chwsjfc`3{#}Fm8pzh#TSSc-AnFD@zzBzK79*$2FcFhT zzhk#2oa7e!eWI>V+`oqCGDo6_^*BqbX&UE>!)h`>)de-4Qu%vM<8yl_(-j;s`!MVD zJa7qE1@3TMH{ItniSz&F`D2=rnpL~#FFb}3OSH1@r#^J?J&V#QnZGpYw7g|9h2^+> zkFVquf?;_-1_|DM)cJ!QvvZ`>%E89dN9J=k&E^G zSf4Z{@z*&LmiUz^>8!-BJSQE)l_{y0{TlI9#-yb5kEw+C@5?5sa!cZh{>&5mA5X`w AtpET3 diff --git a/Backend/src/routes/__pycache__/review_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/review_routes.cpython-312.pyc index d59b28bf294dcbd68fbfb55062ad1099548f12fc..ba7186179a78ce4ddaccd36d41f0ef333c81848a 100644 GIT binary patch delta 20 acmdlTygQitG%qg~0}wokP}s=5K@$K&NCpT1 delta 20 acmdlTygQitG%qg~0}$j*mEXv{K@$K$cLmM> diff --git a/Backend/src/routes/__pycache__/room_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/room_routes.cpython-312.pyc index 9ff4a27c31e015fa11681e6a9373aa4aba496468..1d3079960d2b26cd1b0d85943f4fc1d9ea2df3c9 100644 GIT binary patch delta 22 ccmaF7lj-qJChpU`yj%=G@FYTEBlnFt09|tj!vFvP delta 22 ccmaF7lj-qJChpU`yj%=GkT+F+BlnFt09&F5i2wiq diff --git a/Backend/src/routes/__pycache__/service_booking_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/service_booking_routes.cpython-312.pyc index 4bd1096f4d41843a7e2cd06d6970a41475605353..5446b4cd214656b4c847911c2088f360f56b7a80 100644 GIT binary patch delta 19 Zcmcaucd?G^G%qg~0}wok*vRE>4**701{DAR delta 19 Zcmcaucd?G^G%qg~0}!m>*~sN?4*)}P1&sgz diff --git a/Backend/src/routes/__pycache__/service_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/service_routes.cpython-312.pyc index 9efd9383022bf568ec3ba442b310de8436456f1a..e9f8915a157ba9a9d086cd7e955baf3e6c4b19cc 100644 GIT binary patch delta 20 acmaDJ^E`(8G%qg~0}wokP}s;FqXz&=aRws* delta 20 acmaDJ^E`(8G%qg~0}$j*mEXu6qXz&;patmw diff --git a/Backend/src/routes/__pycache__/system_settings_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/system_settings_routes.cpython-312.pyc index c66283f434fb353e3995c7afc04d4b5da706117e..e78b85b6b18fa6eb41c7c4ceec05c5d8152ad35a 100644 GIT binary patch delta 21 bcmdnEi+STNX0Fq`yj%=G@FZd*m-<}*PS*y} delta 21 bcmdnEi+STNX0Fq`yj%=G;3K|~OZ_eYN&*G= diff --git a/Backend/src/routes/__pycache__/terms_routes.cpython-312.pyc b/Backend/src/routes/__pycache__/terms_routes.cpython-312.pyc index a7756169b7b1c953b0872cb9d94c9f86bf5e6e3a..485b306c93664439f32a1abf2161330bd754eeda 100644 GIT binary patch delta 19 Zcmew<`BReXG%qg~0}wok*vR#s2LL~)1`q%M delta 19 Zcmew<`BReXG%qg~0}xzM+sO5v2LL`!1Z*CEoyqwXKOcjFFg zI+;>gFPN+kVLt*^V8~*l;m9$nvhj&oc7VGo8{9n@um@o;@2=cR4)W2;BXvh{hlAzP z>Uc)Uiv;X>40?rsU-_YH3``IFv;{uk`9@wou@*jFdgysj(bY{Z4a$Qq%Zif>c9RvC zbFfod34{jY(n?%LyHf)H1-WZ3N#|Kl>5=c496JoD)@4lJg|G{u6QLWS10Zf?J$xn< zu^qq*FaJDLcg8FlBg8IzNM=J2&m2VyquD_K!!eP|rIOhxjrF7N4TKjFUIK_m89p%c zA`Bq(aC^Av^&vDxj$>$TMHog9{372b$>mCpqfb;)F5*@6oj|}!*gJeK+%h_X=1G9K zgNYWjqGKC^s7(ROAQS8qdQJmq4uI(6#ool*Ra2@yUeH80$CH#zmHr9;Dv>(AT>qz) zdO+T{8t%$f)O*v%GmS08&#yMl0FtIQQqAK{>z)7&-ayg8Dth^e_8PvsIpnWdbj+AlIf_DW~xGGqw4vjrfUo(upt-p$(?)SHk03J%uy!!sglbgS#qEd zrbYY9x3R$&BBQ`dGy!MmDvfG|L_*cH$wE3kEBIZKM0JKe18!wXWry%Ep@mvQ0$w)@ zLUeqB{}&yY674G2C0brS9UCj&ob-f}NSQ6JW@j;dxy2$|`T5Gc3H^>@@P2-)rOz$2 zU}}K>)l%Oe`tCL#OSGOXKrp7$9K3Z)T3+_A1%^s|%hzPUO)ed^9d%poyU@Pxt{!km z_ZwpalC&(zU@to)@F%RW`N_hOc@cgOe}K1f$U-ciS)3MrH5Ms-+PX$;sHu57|2Y=m z@5K%`dW+V!`nHBi0XUX>6+p#qDcr+v>*{T8+aNB5~e{MFS$s zUdR&Q7uz!aptybwu7kK^x`n^r8Xz^irhNwRa{HPTpdmgM@AHR2r*2wHBebsQ2A$UP zui_)5f&UxtTWA~>b2Z69a)$Frj!h&fRkK28>_6jQ$+KnzYuZJGbFWA(9quXjil z+amBO2@XaqE45@OLRKQxLm_EpM{LM1t@>rKS3}ZJq_o=kdqqvTp*Tla1wxA7?cPcH z`FeM3R~{XL>)_@WTd*z|7S#JOGQnTy=}irSY1pWmR&|vLvNlmRx4 zesBa8C>xWC#~he>O%AS<9`xKJMB~?Y&y9*kV+#x^nbp}C7Bq#I)_hLW4J%D1bn(_3 qQof)w&e(7q%;abxtv=7bENOjrDy(0?t^WbDIR*Lv delta 2266 zcmZuyUu;uV81LzAyW89Kf4kmo9qk5mD`RX>Dq}F5L}7G@{K*i4TDqM(DBIfZ^cH06 zG80J%@dZ6GCb}m{R3eF4>We<7^WE=! z_xt_M*Ix=N1?Q^MshGsbeHh6utTB}H|;7@G+4-{W_bJ?K{BBGLxOw*mhyE1i&D`F4(b7=1V!f zCg&N|SbE|z+s!+g!;S%PNCLdTUvAz=hWPpB18uLs8#2q!XzAHZ0RynT;55eXG+$Fr z3)3l{;vzre{6e}H+E z0Kfnbhc=u%1SZBvfwd9fFaYvU&!?WstFViytYsmlM_}zW0LX;B#jl4tM~;DcTtHkl zK5-K)YzDyG(!#2d33d`zUKdc51w_{dJH?-b0z|9W)So4y@(1k?ZOhW4y=>=4!vTIj ze8cLbu3K(?rK6L0_-7q+0@V%O#LGuEJd%9W&$mXB-oUcF=%GQ{LPKRwmQamIRJV9;(R0;$$&7P zSxfp<-(cKk)bc#+)(g6>?z(htuGOib^msA~p#IJt{#`Ue#`$m2Kx_m8Bgbk@I;ZK4 zL}R$KysdNe9Nw6E4oGD^C=iA>XJ#TZIc-qqV^a{mP8~+8e@neAsOS^mJjm~MCLPGJ z!7aCUwTDkZbjKvqGP;&76~!G`6f1Dki#9&eH6z{g4^>vWJ|)8nxpL5YP%+)MlTn4- zR(zvP((Q0;)GXaGTZMh6NfPUm7V+xy0iE$(@jU&ya(&ZZ#3Pi_M4e@F(ZrN8p-%o$ zY^=kzK6kYW-?Al*4HaUDmiA9F(~09`K>wX~C-S1cGr;A4VAzQGNVI z_pHN@^W$Rf=j}bMB*2qBa{@o_xhGT@jJ=k1P9Xwi6R%MPSg$3H4T2)p=Q8> z9x>lKUgSS*Q4b+kv#^Xh3LCu_)q>rvp>>=E&pZHTRTtDQ-rw80gl86Ddk%mB6ajPq zOy(k3mjFVY&c-a!X(@afKhA6)h)3xkF@Hs3VSsujj5GC zxBY4k)(Jws%#cNv|GvGC?BSjrv4I>cU{M2&_Y%u{7WT2mUa&HJYDZ#eRG2jz)n+tZ zV_2$&0@?nrq1N1)Nj-Z}ORxVAU?D&YMj_TJV8k`9;Co^d%2!MX_5ES``yJC`i>sn0 zRtTBn)tw9D$TE;pld?ITofa0;U}`Dki+asMvy(br{dz6S4I#7nj$c diff --git a/Backend/src/routes/booking_routes.py b/Backend/src/routes/booking_routes.py index ebdde817..d63a1de2 100644 --- a/Backend/src/routes/booking_routes.py +++ b/Backend/src/routes/booking_routes.py @@ -9,6 +9,7 @@ from ..config.database import get_db from ..config.settings import settings from ..middleware.auth import get_current_user, authorize_roles from ..models.user import User +from ..models.role import Role from ..models.booking import Booking, BookingStatus from ..models.room import Room, RoomStatus from ..models.room_type import RoomType @@ -142,8 +143,9 @@ async def get_my_bookings(request: Request, current_user: User=Depends(get_curre @router.post('/') async def create_booking(booking_data: dict, current_user: User=Depends(get_current_user), db: Session=Depends(get_db)): - if current_user.role in ['admin', 'staff']: - raise HTTPException(status_code=403, detail='Admin and staff users cannot create bookings') + role = db.query(Role).filter(Role.id == current_user.role_id).first() + if role and role.name in ['admin', 'staff', 'accountant']: + raise HTTPException(status_code=403, detail='Admin, staff, and accountant users cannot create bookings') try: import logging logger = logging.getLogger(__name__) diff --git a/Backend/src/routes/favorite_routes.py b/Backend/src/routes/favorite_routes.py index fc9bba62..48ec57be 100644 --- a/Backend/src/routes/favorite_routes.py +++ b/Backend/src/routes/favorite_routes.py @@ -4,6 +4,7 @@ from sqlalchemy import func from ..config.database import get_db from ..middleware.auth import get_current_user from ..models.user import User +from ..models.role import Role from ..models.favorite import Favorite from ..models.room import Room from ..models.room_type import RoomType @@ -12,8 +13,9 @@ router = APIRouter(prefix='/favorites', tags=['favorites']) @router.get('/') async def get_favorites(current_user: User=Depends(get_current_user), db: Session=Depends(get_db)): - if current_user.role in ['admin', 'staff']: - raise HTTPException(status_code=403, detail='Admin and staff users cannot have favorites') + role = db.query(Role).filter(Role.id == current_user.role_id).first() + if role and role.name in ['admin', 'staff', 'accountant']: + raise HTTPException(status_code=403, detail='Admin, staff, and accountant users cannot have favorites') try: favorites = db.query(Favorite).filter(Favorite.user_id == current_user.id).order_by(Favorite.created_at.desc()).all() result = [] @@ -33,8 +35,9 @@ async def get_favorites(current_user: User=Depends(get_current_user), db: Sessio @router.post('/{room_id}') async def add_favorite(room_id: int, current_user: User=Depends(get_current_user), db: Session=Depends(get_db)): - if current_user.role in ['admin', 'staff']: - raise HTTPException(status_code=403, detail='Admin and staff users cannot add favorites') + role = db.query(Role).filter(Role.id == current_user.role_id).first() + if role and role.name in ['admin', 'staff', 'accountant']: + raise HTTPException(status_code=403, detail='Admin, staff, and accountant users cannot add favorites') try: room = db.query(Room).filter(Room.id == room_id).first() if not room: @@ -55,8 +58,9 @@ async def add_favorite(room_id: int, current_user: User=Depends(get_current_user @router.delete('/{room_id}') async def remove_favorite(room_id: int, current_user: User=Depends(get_current_user), db: Session=Depends(get_db)): - if current_user.role in ['admin', 'staff']: - raise HTTPException(status_code=403, detail='Admin and staff users cannot remove favorites') + role = db.query(Role).filter(Role.id == current_user.role_id).first() + if role and role.name in ['admin', 'staff', 'accountant']: + raise HTTPException(status_code=403, detail='Admin, staff, and accountant users cannot remove favorites') try: favorite = db.query(Favorite).filter(Favorite.user_id == current_user.id, Favorite.room_id == room_id).first() if not favorite: @@ -72,7 +76,8 @@ async def remove_favorite(room_id: int, current_user: User=Depends(get_current_u @router.get('/check/{room_id}') async def check_favorite(room_id: int, current_user: User=Depends(get_current_user), db: Session=Depends(get_db)): - if current_user.role in ['admin', 'staff']: + role = db.query(Role).filter(Role.id == current_user.role_id).first() + if role and role.name in ['admin', 'staff', 'accountant']: return {'status': 'success', 'data': {'isFavorited': False}} try: favorite = db.query(Favorite).filter(Favorite.user_id == current_user.id, Favorite.room_id == room_id).first() diff --git a/Backend/src/routes/invoice_routes.py b/Backend/src/routes/invoice_routes.py index 8fea1dae..baafc62a 100644 --- a/Backend/src/routes/invoice_routes.py +++ b/Backend/src/routes/invoice_routes.py @@ -13,7 +13,7 @@ router = APIRouter(prefix='/invoices', tags=['invoices']) @router.get('/') async def get_invoices(booking_id: Optional[int]=Query(None), status_filter: Optional[str]=Query(None, alias='status'), page: int=Query(1, ge=1), limit: int=Query(10, ge=1, le=100), current_user: User=Depends(get_current_user), db: Session=Depends(get_db)): try: - user_id = None if current_user.role_id == 1 else current_user.id + user_id = None if current_user.role_id in [1, 4] else current_user.id # admin and accountant can see all invoices result = InvoiceService.get_invoices(db=db, user_id=user_id, booking_id=booking_id, status=status_filter, page=page, limit=limit) return {'status': 'success', 'data': result} except Exception as e: @@ -25,7 +25,7 @@ async def get_invoice_by_id(id: int, current_user: User=Depends(get_current_user invoice = InvoiceService.get_invoice(id, db) if not invoice: raise HTTPException(status_code=404, detail='Invoice not found') - if current_user.role_id != 1 and invoice['user_id'] != current_user.id: + if current_user.role_id not in [1, 4] and invoice['user_id'] != current_user.id: # admin and accountant can see all invoices raise HTTPException(status_code=403, detail='Forbidden') return {'status': 'success', 'data': {'invoice': invoice}} except HTTPException: @@ -36,7 +36,7 @@ async def get_invoice_by_id(id: int, current_user: User=Depends(get_current_user @router.post('/') async def create_invoice(invoice_data: dict, current_user: User=Depends(get_current_user), db: Session=Depends(get_db)): try: - if current_user.role_id not in [1, 2]: + if current_user.role_id not in [1, 2, 4]: # admin, staff, and accountant can create invoices raise HTTPException(status_code=403, detail='Forbidden') booking_id = invoice_data.get('booking_id') if not booking_id: @@ -64,7 +64,7 @@ async def create_invoice(invoice_data: dict, current_user: User=Depends(get_curr raise HTTPException(status_code=500, detail=str(e)) @router.put('/{id}') -async def update_invoice(id: int, invoice_data: dict, current_user: User=Depends(authorize_roles('admin', 'staff')), db: Session=Depends(get_db)): +async def update_invoice(id: int, invoice_data: dict, current_user: User=Depends(authorize_roles('admin', 'staff', 'accountant')), db: Session=Depends(get_db)): try: invoice = db.query(Invoice).filter(Invoice.id == id).first() if not invoice: @@ -79,7 +79,7 @@ async def update_invoice(id: int, invoice_data: dict, current_user: User=Depends raise HTTPException(status_code=500, detail=str(e)) @router.post('/{id}/mark-paid') -async def mark_invoice_as_paid(id: int, payment_data: dict, current_user: User=Depends(authorize_roles('admin', 'staff')), db: Session=Depends(get_db)): +async def mark_invoice_as_paid(id: int, payment_data: dict, current_user: User=Depends(authorize_roles('admin', 'staff', 'accountant')), db: Session=Depends(get_db)): try: amount = payment_data.get('amount') updated_invoice = InvoiceService.mark_invoice_as_paid(invoice_id=id, db=db, amount=amount, updated_by_id=current_user.id) @@ -112,7 +112,7 @@ async def get_invoices_by_booking(booking_id: int, current_user: User=Depends(ge booking = db.query(Booking).filter(Booking.id == booking_id).first() if not booking: raise HTTPException(status_code=404, detail='Booking not found') - if current_user.role_id != 1 and booking.user_id != current_user.id: + if current_user.role_id not in [1, 4] and booking.user_id != current_user.id: # admin and accountant can see all invoices raise HTTPException(status_code=403, detail='Forbidden') result = InvoiceService.get_invoices(db=db, booking_id=booking_id) return {'status': 'success', 'data': result} diff --git a/Backend/src/routes/payment_routes.py b/Backend/src/routes/payment_routes.py index 1fd7cd2f..ed1e86f7 100644 --- a/Backend/src/routes/payment_routes.py +++ b/Backend/src/routes/payment_routes.py @@ -54,7 +54,7 @@ async def get_payments(booking_id: Optional[int]=Query(None), status_filter: Opt query = query.filter(Payment.payment_status == PaymentStatus(status_filter)) except ValueError: pass - if current_user.role_id != 1: + if current_user.role_id not in [1, 4]: # admin and accountant can see all payments query = query.join(Booking).filter(Booking.user_id == current_user.id) total = query.count() query = query.options(selectinload(Payment.booking).selectinload(Booking.user)) @@ -106,7 +106,7 @@ async def get_payment_by_id(id: int, current_user: User=Depends(get_current_user payment = db.query(Payment).filter(Payment.id == id).first() if not payment: raise HTTPException(status_code=404, detail='Payment not found') - if current_user.role_id != 1: + if current_user.role_id not in [1, 4]: # admin and accountant can see all payments if payment.booking and payment.booking.user_id != current_user.id: raise HTTPException(status_code=403, detail='Forbidden') payment_dict = {'id': payment.id, 'booking_id': payment.booking_id, 'amount': float(payment.amount) if payment.amount else 0.0, 'payment_method': payment.payment_method.value if isinstance(payment.payment_method, PaymentMethod) else payment.payment_method, 'payment_type': payment.payment_type.value if isinstance(payment.payment_type, PaymentType) else payment.payment_type, 'deposit_percentage': payment.deposit_percentage, 'related_payment_id': payment.related_payment_id, 'payment_status': payment.payment_status.value if isinstance(payment.payment_status, PaymentStatus) else payment.payment_status, 'transaction_id': payment.transaction_id, 'payment_date': payment.payment_date.isoformat() if payment.payment_date else None, 'notes': payment.notes, 'created_at': payment.created_at.isoformat() if payment.created_at else None} @@ -159,8 +159,8 @@ async def create_payment(payment_data: dict, current_user: User=Depends(get_curr db.rollback() raise HTTPException(status_code=500, detail=str(e)) -@router.put('/{id}/status', dependencies=[Depends(authorize_roles('admin', 'staff'))]) -async def update_payment_status(id: int, status_data: dict, current_user: User=Depends(authorize_roles('admin', 'staff')), db: Session=Depends(get_db)): +@router.put('/{id}/status', dependencies=[Depends(authorize_roles('admin', 'staff', 'accountant'))]) +async def update_payment_status(id: int, status_data: dict, current_user: User=Depends(authorize_roles('admin', 'staff', 'accountant')), db: Session=Depends(get_db)): try: payment = db.query(Payment).filter(Payment.id == id).first() if not payment: diff --git a/Backend/src/routes/report_routes.py b/Backend/src/routes/report_routes.py index 4f9feb49..7e7d6df4 100644 --- a/Backend/src/routes/report_routes.py +++ b/Backend/src/routes/report_routes.py @@ -14,7 +14,7 @@ from ..models.service import Service router = APIRouter(prefix='/reports', tags=['reports']) @router.get('') -async def get_reports(from_date: Optional[str]=Query(None, alias='from'), to_date: Optional[str]=Query(None, alias='to'), type: Optional[str]=Query(None), current_user: User=Depends(authorize_roles('admin', 'staff')), db: Session=Depends(get_db)): +async def get_reports(from_date: Optional[str]=Query(None, alias='from'), to_date: Optional[str]=Query(None, alias='to'), type: Optional[str]=Query(None), current_user: User=Depends(authorize_roles('admin', 'staff', 'accountant')), db: Session=Depends(get_db)): try: start_date = None end_date = None @@ -83,7 +83,7 @@ async def get_reports(from_date: Optional[str]=Query(None, alias='from'), to_dat raise HTTPException(status_code=500, detail=str(e)) @router.get('/dashboard') -async def get_dashboard_stats(current_user: User=Depends(authorize_roles('admin', 'staff')), db: Session=Depends(get_db)): +async def get_dashboard_stats(current_user: User=Depends(authorize_roles('admin', 'staff', 'accountant')), db: Session=Depends(get_db)): try: total_bookings = db.query(Booking).count() active_bookings = db.query(Booking).filter(Booking.status.in_([BookingStatus.pending, BookingStatus.confirmed, BookingStatus.checked_in])).count() @@ -150,7 +150,7 @@ async def get_customer_dashboard_stats(current_user: User=Depends(get_current_us raise HTTPException(status_code=500, detail=str(e)) @router.get('/revenue') -async def get_revenue_report(start_date: Optional[str]=Query(None), end_date: Optional[str]=Query(None), current_user: User=Depends(authorize_roles('admin', 'staff')), db: Session=Depends(get_db)): +async def get_revenue_report(start_date: Optional[str]=Query(None), end_date: Optional[str]=Query(None), current_user: User=Depends(authorize_roles('admin', 'staff', 'accountant')), db: Session=Depends(get_db)): try: query = db.query(Payment).filter(Payment.payment_status == PaymentStatus.completed) if start_date: diff --git a/Backend/src/routes/user_routes.py b/Backend/src/routes/user_routes.py index 3ceb586e..7c4ae2ed 100644 --- a/Backend/src/routes/user_routes.py +++ b/Backend/src/routes/user_routes.py @@ -17,7 +17,7 @@ async def get_users(search: Optional[str]=Query(None), role: Optional[str]=Query if search: query = query.filter(or_(User.full_name.like(f'%{search}%'), User.email.like(f'%{search}%'), User.phone.like(f'%{search}%'))) if role: - role_map = {'admin': 1, 'staff': 2, 'customer': 3} + role_map = {'admin': 1, 'staff': 2, 'customer': 3, 'accountant': 4} if role in role_map: query = query.filter(User.role_id == role_map[role]) if status_filter: @@ -57,7 +57,7 @@ async def create_user(user_data: dict, current_user: User=Depends(authorize_role phone_number = user_data.get('phone_number') role = user_data.get('role', 'customer') status = user_data.get('status', 'active') - role_map = {'admin': 1, 'staff': 2, 'customer': 3} + role_map = {'admin': 1, 'staff': 2, 'customer': 3, 'accountant': 4} role_id = role_map.get(role, 3) existing = db.query(User).filter(User.email == email).first() if existing: @@ -90,7 +90,7 @@ async def update_user(id: int, user_data: dict, current_user: User=Depends(get_c existing = db.query(User).filter(User.email == email).first() if existing: raise HTTPException(status_code=400, detail='Email already exists') - role_map = {'admin': 1, 'staff': 2, 'customer': 3} + role_map = {'admin': 1, 'staff': 2, 'customer': 3, 'accountant': 4} if 'full_name' in user_data: user.full_name = user_data['full_name'] if 'email' in user_data and current_user.role_id == 1: diff --git a/Backend/src/schemas/__pycache__/admin_privacy.cpython-312.pyc b/Backend/src/schemas/__pycache__/admin_privacy.cpython-312.pyc index 0e07fa520ea38f73b0a7fedcabc43be949f2f9b2..94961e71bcd4c12fdfb27c227a0b487d57f7aca9 100644 GIT binary patch delta 20 acmew@@>_)aG%qg~0}wokP}s;_zy$z9O$Dm} delta 20 acmew@@>_)aG%qg~0}$j*mEXu+zy$z7dgG%qg~0}wokP}s<=$O!;8tOU6L delta 20 acmZ1@v_^>gG%qg~0}$j*mEXv%$O!;6+XR0A diff --git a/Backend/src/services/__pycache__/auth_service.cpython-312.pyc b/Backend/src/services/__pycache__/auth_service.cpython-312.pyc index 85c102acc253f020ee69cacc085da1cdb74ea932..febaf1cd7399cca56bd8b2b8fb3f0bf67e0e65a3 100644 GIT binary patch delta 21 bcmZ3yf^qQ*My}Jmyj%=G@FZd*mt+V4NiYTW delta 21 bcmZ3yf^qQ*My}Jmyj%=GaEp5*mt+V4M{@h delta 20 acmbR2GTDXuG%qg~0}$j*mEXwCp#%Up6a=vV diff --git a/Backend/src/services/__pycache__/paypal_service.cpython-312.pyc b/Backend/src/services/__pycache__/paypal_service.cpython-312.pyc index 93fb7555ac1f71efa1a0714992d485bd5d1a3f9e..18ebf6f07844954709e315cef1be409329a45c1c 100644 GIT binary patch delta 22 ccmaF2m+{?RM()$Ryj%=G@FYTEBlqJt0AGa%tN;K2 delta 22 ccmaF2m+{?RM()$Ryj%=GkT+F+BlqJt09~{PasU7T diff --git a/Backend/src/services/__pycache__/privacy_admin_service.cpython-312.pyc b/Backend/src/services/__pycache__/privacy_admin_service.cpython-312.pyc index 930fa71724c03f8b29e89d06147d4636bfd0d8c6..50e0fc60504e05e3b01a6b28bd1ea864c9606353 100644 GIT binary patch delta 20 acmaE){79MmG%qg~0}wokP}s+a{vGU delta 22 ccmZo)$ke`&iTgA!FBbz4R9=(Z$Xzo507@?ge*gdg diff --git a/Backend/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageMode.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageMode.cpython-312.pyc index 2a4f3b8066be684679f39808ad417f23169e61a0..04ed2e9da3c530e3859a6861566f5c41a9b221ac 100644 GIT binary patch delta 20 acmaDU`cjnpG%qg~0}wokP}sFs{jB1 diff --git a/Backend/venv/lib/python3.12/site-packages/PIL/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/PIL/__pycache__/__init__.cpython-312.pyc index f729fb98b279a111c8025a89206e7d6c87249cd1..77575b97021c2434c35ad20051bc9ecdb3010d07 100644 GIT binary patch delta 20 acmdnbzn`D`G%qg~0}wokP}s=5g&hDoHU(+` delta 20 acmdnbzn`D`G%qg~0}xbRlibL?g&hDo8U=O$ diff --git a/Backend/venv/lib/python3.12/site-packages/PIL/__pycache__/_binary.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/PIL/__pycache__/_binary.cpython-312.pyc index 21a17b6ab3e208fd84e7856bfa356e2913761da4..debb3d45823d089e7a6afa818e1d4725aafe7a81 100644 GIT binary patch delta 20 acmcaDep{UTG%qg~0}wokP}slG diff --git a/Backend/venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/__pycache__/typing_extensions.cpython-312.pyc index 44aa92807d8ad45ebb9469366ee56e9d36ea957a..c808b902175ba203c59784228321a171cb98050b 100644 GIT binary patch delta 28 icmZ4YpL5-RPVUpZyj%=G@H9f9k-L?faVs~|;(7p$c?iV- delta 28 icmZ4YpL5-RPVUpZyj%=GPqa delta 20 acmcaDcUzA8G%qg~0}xbQlibK1zz+aFr3G;S diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/__init__.cpython-312.pyc index a209007b8b251186a681a0aaa46d7a0f7667caf8..731e8e184eb6bcd26d750c6e233ac6de1fb2496c 100644 GIT binary patch delta 20 acmcb>b%BffG%qg~0}wokP}s=r$_fBGCb%BffG%qg~0}xbQlibMd$_fBG69pas diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/api.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/api.cpython-312.pyc index 4968bd82ba283b6a792f3e6d7c62cece4e7b3a00..cc272f607411098e843f603f177d74f67438081b 100644 GIT binary patch delta 20 acmbPjHrtH*G%qg~0}wokP}s;VAPoRHCIsLB delta 20 acmbPjHrtH*G%qg~0}xbQlibKHAPoRH5d`f3 diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/auth.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/auth.cpython-312.pyc index 083e860ad3a63873a7239a8c4f3c7d5237251e44..a5406ee771f5c87b51a5fe95933fc367c1783bfb 100644 GIT binary patch delta 20 acmZ20x>l6?G%qg~0}wokP}s=5hzkHXK?Oqq delta 20 acmZ20x>l6?G%qg~0}xbQlibL?hzkHXECo;i diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/email.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/email.cpython-312.pyc index f205197d712697d27bd6cb78a0eeda18c542e80f..a7bcae01002c5dbf90df0f356f32943ef4bc5cf3 100644 GIT binary patch delta 20 acmexu`P-8FG%qg~0}wokP}s=*K?VRxlLm(X delta 20 acmexu`P-8FG%qg~0}xbQlibMtK?VRxeg>2P diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/errors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/errors.cpython-312.pyc index 841826f1021e7e239dfd59157b3f760ee6599b13..f71076a108b3505eeaa9af6742fab6cb635c8ad5 100644 GIT binary patch delta 20 acmeyT@lS*MG%qg~0}wokP}s;_ECK*Vp9SUs delta 20 acmeyT@lS*MG%qg~0}xbQlibK%ECK*ViUsok diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/esmtp.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/esmtp.cpython-312.pyc index 6de050036f9d9574606000d33bc96b7ea9ec3c14..571fd853a5cdd42fb0b7feace3526044f0379c44 100644 GIT binary patch delta 20 acmZn=X%OK)&CAQh00d7W6gF~y diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/protocol.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/protocol.cpython-312.pyc index 1d40b2811424fa8cf983e675c8013d58d2f5f1da..1440bfebdae5452b16c7bc9d3e04d44e2a813021 100644 GIT binary patch delta 22 ccmeC{VeIQ+# diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/smtp.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/smtp.cpython-312.pyc index a053db930e98e41421611239612bb72ec7ca6d55..b29df119fc140ab74fbefdf1eb5dd806f0c9660c 100644 GIT binary patch delta 22 ccmdn-ka@>LX71Cxyj%=G@FYTEBlp@509?xl=l}o! delta 22 ccmdn-ka@>LX71Cxyj%=GP<2gmBlp@509>{Q^#A|> diff --git a/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/typing.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/aiosmtplib/__pycache__/typing.cpython-312.pyc index 0f77b05414502c18ed588378757128db1ee50567..cd3ea2f42277aae7e27e8b138d7a442b53497085 100644 GIT binary patch delta 20 acmdljuv>upG%qg~0}wokP}supG%qg~0}xbQlibK{zySa_rUdQ) diff --git a/Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/__init__.cpython-312.pyc index f81453feb53c56543a540b414d46e2bf8b07044a..7c40d44c653cc3dab07fa7a38f6678b567e1d1b9 100644 GIT binary patch delta 20 acmZ3-w2q1UG%qg~0}wokP}s<=%m@H9v;>y` delta 20 acmZ3-w2q1UG%qg~0}#|+libLy%m@H9v;?OB diff --git a/Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/command.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/alembic/__pycache__/command.cpython-312.pyc index 4d187d60d882aa4a4e8d8ea782f194c81d3ddee8..0be5582aa44c78bc649915d067815b32be63dfca 100644 GIT binary patch delta 22 ccmaETmGSjeM()$Ryj%=G@FYTEBlm+W0AjcY-v9sr delta 22 ccmaETmGSjeM()$Ryj%=GPl{%M()$Ryj%=G@FYTEBe!rA08g?8CIA2c delta 22 ccmbQYg>l{%M()$Ryj%=GPG%qg~0}wokP}s=5+6Dke>jqc= delta 20 acmdm1xvi4>G%qg~0}#|+libL?+6Dke>jr25 diff --git a/Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/impl.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/alembic/ddl/__pycache__/impl.cpython-312.pyc index 12d23aab37601fe5157079bd4f7ca34f68aa6a97..0e5c598f6b58e02ea7e77ff2583d0827f528e188 100644 GIT binary patch delta 22 ccmbRLj&c4wM()$Ryj%=G@FYTEBezI709eolx&QzG delta 22 ccmbRLj&c4wM()$Ryj%=GP%k<7Vgu$yj%=G@FYT^k$WpQ<24Ncc7O;D delta 25 fcmaEOk>%k<7Vgu$yj%=GPz>% delta 22 ccmezPmGR?OM()$Ryj%=GPCG%qg~0}wokP}s=br40Z*>II+x delta 20 acmbOlJ~f>CG%qg~0}#|+libMNr40Z*>IJX> diff --git a/Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/__init__.cpython-312.pyc index 2a20d3a1c6d168b7a70ed026368fafc850c108d9..4ee5fcc6c3891337aa68ec4b0cc2f3691db52075 100644 GIT binary patch delta 19 ZcmX@cc#M(zG%qg~0}wokP?*TQ8vrwt1v~%% delta 19 ZcmX@cc#M(zG%qg~0}#|+lbp!C8vrwd1xx?{ diff --git a/Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/environment.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/environment.cpython-312.pyc index 05e777471ed163eb52b7a0db28f6720c5e189ea2..91ca0ba5fe3ef04906e38827d81abf4e645e4fdc 100644 GIT binary patch delta 22 ccmZp;%G7X`iTgA!FBbz4Jc&@)$X&V$08u0c-~a#s delta 22 ccmZp;%G7X`iTgA!FBbz4)LxU^$X&V$08u0c@Bjb+ diff --git a/Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/migration.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/alembic/runtime/__pycache__/migration.cpython-312.pyc index e050d35b6f9287c7215055f6439b33bdc36036df..e4f90bb9984fe4dc38366bff6258d2bd67d3ba46 100644 GIT binary patch delta 22 ccmdmbntAJKX71Cxyj%=G@FYTEBloJO09fS*r~m)} delta 22 ccmdmbntAJKX71Cxyj%=GP)k@4t6M()$Ryj%=G@FYTEBlj*308!Wm!vFvP delta 22 ccmX>)k@4t6M()$Ryj%=GP<2gmBlj*308zsR&;S4c diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/__init__.cpython-312.pyc index eaa3cc519fab84d4de67a9e4a26e46f2954c0b55..17ad12029732250322c677db85f9e2ba5a199aae 100644 GIT binary patch delta 20 acmX>meN3ABG%qg~0}wokP}s=5n->5*1O=S{ delta 20 acmX>meN3ABG%qg~0}#|)libL?n->5){RON5 diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/from_thread.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/from_thread.cpython-312.pyc index e12918a50e535c96c6ea9e1f238bcff59cef10e2..3855481dcfa5d7d463463cec5e332fed08cbd355 100644 GIT binary patch delta 22 ccmcbziSf!NM()$Ryj%=G@FYTEBe!QH09bVf!vFvP delta 22 ccmcbziSf!NM()$Ryj%=GP;*UkBe!QH09bAY(f|Me diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/lowlevel.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/lowlevel.cpython-312.pyc index 9418957ab3ed85f3097ed194aca0880d2654fa92..34cf225ea8beb70b6009725405c6c3f03fad7449 100644 GIT binary patch delta 20 acmaE1@xp@pG%qg~0}wokP}s;FD+2&UcLmG< delta 20 acmaE1@xp@pG%qg~0}#|)libK1D+2&Ua0S}{ diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/to_thread.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/__pycache__/to_thread.cpython-312.pyc index 76bae3953abdde5b6345e22ca5b348d6083b7cf8..da4466ec019699e93df5e4dd9e1404508f0f30ab 100644 GIT binary patch delta 20 acmZn`YZl`^&CAQh00d7W6gG1I-~s?L)dfcY delta 20 acmZn`YZl`^&CAQh00cGHBsX&Z-~s?L&IMKg diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/__init__.cpython-312.pyc index e01157fa32b3cffa5b208345268124fda41e4186..88d4ad55a10c675bebdfa61626a9fb9b4d479a83 100644 GIT binary patch delta 19 ZcmX@cc#M(zG%qg~0}wokP?*TQ8vrwt1v~%% delta 19 ZcmX@cc#M(zG%qg~0}#|)lbp!C8vrwX1xo+` diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/_asyncio.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_backends/__pycache__/_asyncio.cpython-312.pyc index 8ca20e2789babe7a80f5f6f6977e64bf0a7e4a15..19f93f91fe802d2fa8c3f6c20283c6f91f7b9cc7 100644 GIT binary patch delta 25 fcmX>-jqUU_Hty5Byj%=G@FYT^k$WpQqeC|UXQT%` delta 25 fcmX>-jqUU_Hty5Byj%=GP;*VPk$WpQqeC|UXUYdm diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/__init__.cpython-312.pyc index 7fd6528b5e068a7eaff0213ee6c7b84af0c576a9..fa6a3f8f9785295002003ce9e9502c10f722ee7b 100644 GIT binary patch delta 19 ZcmX@ac!-hvG%qg~0}wokP?*TQ9RM=_1uy^r delta 19 ZcmX@ac!-hvG%qg~0}#|)lbp!C9RM=v1wQ}) diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_compat.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_compat.cpython-312.pyc index b299ac70f9032060a772eedf9cf599ef61008e47..14389ba2cc23ed6d658a3d52063db7583a1dfbe4 100644 GIT binary patch delta 20 acmez4^T&t#G%qg~0}wokP}s;_s0IK_aRxd7 delta 20 acmez4^T&t#G%qg~0}#|)libK%s0IK_Y6eLF diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_eventloop.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_eventloop.cpython-312.pyc index 69b794daa21f7d843040c0e40df05fe1e13a421c..8e54324500c9a9015cb45d90ddea2ae4d8ebdfb8 100644 GIT binary patch delta 20 acmbQGH%pKEG%qg~0}wokP}s=LFAe}V+62h} delta 20 acmbQGH%pKEG%qg~0}#|)libM7FAe}V(*)Q6 diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_exceptions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_exceptions.cpython-312.pyc index e7ad85966a9fafc0a945a24229a73ddd2700654f..8665bb5c9dd31114adc2582ba7168d68f0ee83ef 100644 GIT binary patch delta 20 acmZ3Yy+oV)G%qg~0}wokP}s;lQxpI>`~_bC delta 20 acmZ3Yy+oV)G%qg~0}#|)libKXQxpI>^#yJK diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_fileio.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_fileio.cpython-312.pyc index d4c12e35db60e1f96ef0a817229a9570634a3434..278cac6bbae1c56fd718d0bed3ff2823438d5251 100644 GIT binary patch delta 22 ccmX>%f$7`?ChpU`yj%=G@FYTEBe!!008*I-o&W#< delta 22 ccmX>%f$7`?ChpU`yj%=GP;*UkBe!!008)|$tpET3 diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_resources.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_resources.cpython-312.pyc index 93f3ab4b261aeb5e5e73d59db3171d41fbc29172..170979ddb73f6a169e60944294774c8708af3e2b 100644 GIT binary patch delta 20 acmdnYzL}l-G%qg~0}wokP}s=5f*AleG6gaK delta 20 acmdnYzL}l-G%qg~0}#|)libL?f*AleD+NIS diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_signals.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_signals.cpython-312.pyc index a345a26389be41bd214c4c5506a95622711617ec..4bc28dfc60a33b99f86d5edd9281b753eb22266a 100644 GIT binary patch delta 20 acmX@ld7hK|G%qg~0}wokP}sn+a delta 22 ccmZqM&)Bw~k^3|+FBbz4)LfI?$Xy)|08Ui~hyVZp diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_streams.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_streams.cpython-312.pyc index d90b4e4fd3e4595f37a0cf44d73678987c19d7a8..4e43f2ec4bad589fff376619c5594f97c9ac06c4 100644 GIT binary patch delta 20 acmbOrFhPL(G%qg~0}wokP}s=L$^if}0|a0I delta 20 acmbOrFhPL(G%qg~0}#|)libM7$^if|`~+_R diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_subprocesses.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/_core/__pycache__/_subprocesses.cpython-312.pyc index 46bad2e83a7c5944eb78e6ca569ddbf0eab9f4cb..db0365ecaec9b3e1309eec75dda6cc60a17101d1 100644 GIT binary patch delta 20 acmcajeY= diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/__init__.cpython-312.pyc index 996a0ff2ae73bcc35b182393e98f9dc3281fd51a..39c30784739ecb34cd12e8a8ecb910ac34830115 100644 GIT binary patch delta 20 acmZ23uv~!qG%qg~0}wokP}s;V!vO#_n*^l* delta 20 acmZ23uv~!qG%qg~0}#|)libKH!vO#_lmxT@ diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_resources.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_resources.cpython-312.pyc index 19e9b749e5a056bfb16437207be01cf0ff6ef39e..994e724ed27de1f05777efc0ccbc555b334a394d 100644 GIT binary patch delta 20 acmX@dbB>4mG%qg~0}wokP}s=r%mx5EAq5Zs delta 20 acmX@dbB>4mG%qg~0}#|)libMd%mx5E8U-H! diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_sockets.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_sockets.cpython-312.pyc index 3eed92b4b35d3e7b87a54e12fda591b3182ba1b9..36bdc863ef086d0f8c391a230f0f63e202bc7273 100644 GIT binary patch delta 20 acmca)f61QvG%qg~0}wokP}sK1_m1d delta 20 acmca)f61QvG%qg~0}#|)libLCTpj>J{{|`m diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_streams.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_streams.cpython-312.pyc index 1c6c35ac84154df243eb30edd5ee575c9696daf4..e2e8cde3cb9bce6a08daa5648b75b76a8cb9828c 100644 GIT binary patch delta 20 acmaFp_|TF2G%qg~0}wokP}sr&%B&CAQh00d7W6gG1I7Xkn_H3ftK delta 20 acmeBD>r&%B&CAQh00cGHBsX&Z7Xkn_E(MbS diff --git a/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_testing.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/anyio/abc/__pycache__/_testing.cpython-312.pyc index 921672139c4aca848e4b8a31cd5ac33757ff1d93..0736c2ca5e427c7104e2eb9beb683a52c5741d99 100644 GIT binary patch delta 20 acmca9ep8(LG%qg~0}wokP}s1W|S&CAQh00d7W6gG0RFaZECB?LbJ delta 20 acmeBY>1W|S&CAQh00cGHBsX%iFaZEC9t2JR diff --git a/Backend/venv/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cffi/__pycache__/model.cpython-312.pyc index bf6bf35b5fa04f923a09343a5449eea0b20e49b0..8cc7838ae72b5072e8a8b7553b73d78ea044affc 100644 GIT binary patch delta 29 jcmccgn(@+WM()$Ryj%=G@FYTEBe!HB9 diff --git a/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc index 5dc81ec5c16ac656ffd27425feb8d8eb6f400bd4..450be934e940704e20227f2b945872797b00d967 100644 GIT binary patch delta 20 acmey)`<<8jG%qg~0}wokP}s=*h7ABhtp*JM delta 20 acmey)`<<8jG%qg~0}$kVliJArh7ABh`vxrl diff --git a/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc index 385a2f99b012e23df8bd58a489009dcbc4fac888..f8058d54708f74e6d99e989b0a464c26fd30f1d9 100644 GIT binary patch delta 22 ccmbQ#$2h5vk^3|+FBbz4Jc&@)$j$B!07uaUqW}N^ delta 22 ccmbQ#$2h5vk^3|+FBbz4GyBX`n#0ADo+jsO4v diff --git a/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc index 7a7ec61352452fc08f2045bce74ec215cf71c967..3a66e51eaca68f3d7e24ee2321db40a81becbb02 100644 GIT binary patch delta 20 acmX>qepHqepH@*s_$d~m{|(} diff --git a/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc index a7e11a3459bb1ebbe0f3137c4950733eca816236..9d1aafc767d0d09b1b739f488ea628afba7b527f 100644 GIT binary patch delta 49 zcmdm=y+51#G%qg~0}wooP}s@&CAQh00d7X6gF~~F#-TC*94OQ delta 20 acmZo@&CAQh00cSTq&9MwF#-TD9t5%g diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc index a39f5956c48985c807d90535b58c7dafcf38131a..d32cbd45a5ab5cfb1bfa9b5603a61e5ca562c1c9 100644 GIT binary patch delta 20 acmaDQ|4N?wG%qg~0}wooP}sdjJ3c diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/_utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/_utils.cpython-312.pyc index facb09f47a353a18544b8ad5f1290590501c4346..5303a25a0b328dfe508f0c29a6c91caa72a34dd8 100644 GIT binary patch delta 20 acmdnQxrvkeG%qg~0}wooP}s=5oCN?kS_L%# delta 20 acmdnQxrvkeG%qg~0}xbQlibL?oCN?kJ_SJl diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc index 91fee54fae9fbce3720587e17e5cc5404a45b95d..f0890920071d5841bcfd056b6e09b32e992ca3ab 100644 GIT binary patch delta 28 icmeB~!_hN`gZnfuFBbz4JdIFja<0A3siDgXcg delta 22 ccmeyphVl0rM()$Ryj%=GP<2gmBX>a<0A2tGHUIzs diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc index a261c10726ceeb545fc9c27141f60ace0f84a3e9..ce303a28e6526666a49e9c9d95b87814f76ba9b5 100644 GIT binary patch delta 20 acmdm0ysMb|G%qg~0}wooP}s=5-Vy*uw+2=K delta 20 acmdm0ysMb|G%qg~0}xbQlibL?-Vy*un+9S4 diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc index c294396353f96f933cd836c79691e331d21a8543..73fbb11c1b9c54e3e5f2c8df7b5f4b2d2291717d 100644 GIT binary patch delta 20 acmaEr^(u?|G%qg~0}wooP}s;FZwdfR?*>o+ delta 20 acmaEr^(u?|G%qg~0}xbQlibK1ZwdfR(*|4s diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc index eed6b381a82a7574976a1703bc69118a022c0fe7..89b635e74525f83e4db662b9973a91eac12750ab 100644 GIT binary patch delta 20 acmbO(K3$yqG%qg~0}wooP}s=b!wmp6Aq58j delta 20 acmbO(K3$yqG%qg~0}xbQlibMN!wmp61qBlT diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc index fe551f48f2db8634788f67501c5127a45a5a421a..5627c80d4a8cabf5fe434310e7d290be05deb330 100644 GIT binary patch delta 22 ccmcaJpYhIoM()$Ryj%=G@H9eUBlksr09WM)EC2ui delta 22 ccmcaJpYhIoM()$Ryj%=GP<2gmBlksr09VNeH~;_u diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc index 6398c5bc50cf2effe86b5975bb480b95c7a3d442..1c77cb4c972b5e927a2adc401c4bbe077878aa96 100644 GIT binary patch delta 22 ccmccH$8@)kiTgA!FBbz4JdIG;$Q{%U094in#{d8T delta 22 ccmccH$8@)kiTgA!FBbz4R9%zY$Q{%U093jL(*OVf diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc index f7ae641f930e46d44835e360efd4048dedf1d756..50cebef4964f71cc08e1fb90e99f07edf3674290 100644 GIT binary patch delta 22 ccmey-#{8p=nfo*^FBbz4JdIG;$enu_09c3zMgRZ+ delta 22 ccmey-#{8p=nfo*^FBbz4R9%zY$enu_09b4XQUCw| diff --git a/Backend/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc index 107b79fefc0cb358743b776ca7c8594fce495f07..76bf5f63994a9aaf74e954712c908cce7f3822f0 100644 GIT binary patch delta 22 ccmdmZh;ic~M()$Ryj%=G@H9eUBez;2096wPg8%>k delta 22 ccmdmZh;ic~M()$Ryj%=GP<2gmBez;2095w|j{pDw diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/__pycache__/__about__.cpython-312.pyc index 8d19f948f912667a8fe9d5c639a5064c5adfd82c..20e2ee20a0754b4bb76da711b090d088c0ba4e7c 100644 GIT binary patch delta 20 acmcc2e3_a1G%qg~0}wooP}sSMLI#%r diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/__pycache__/__init__.cpython-312.pyc index 1aa532b1d748d781e4de562f5533e092a2bafcb9..37c376dfbac6a8a0d6e017580f137f8d9505cc3c 100644 GIT binary patch delta 19 ZcmZo;YGdL)&CAQh00d7X6ee>21^_Di1pfd4 delta 19 ZcmZo;YGdL)&CAQh00iGB$WG+`4FD{21x5e> diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/__init__.cpython-312.pyc index b02bfacef1cbba86f9847b1aaf893b4d9282e739..8d696a25974df3051921cd5f35165c4ca51e7b40 100644 GIT binary patch delta 20 acmeBU>SN+Q&CAQh00d7X6gF}*GXelFy977@ delta 20 acmeBU>SN+Q&CAQh00iGB$Zq6jW&{8+dIWy} diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/decrepit/ciphers/__pycache__/algorithms.cpython-312.pyc index a488c7d0a955c4e57e62ae764f7b1a3b271ef78e..f7acfa3faacfb8bb3c651bcd0768c56820340f6c 100644 GIT binary patch delta 20 acmX@4dPtS~G%qg~0}wooP}s=5T?ha@*afQq delta 20 acmX@4dPtS~G%qg~0}ysd{~(KG%qg~0}wooP}s=5gA)KdZv}w> delta 20 acmX>sd{~(KG%qg~0}yjs<`K diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/__pycache__/padding.cpython-312.pyc index 7728cbcbdd28600940fb85e6f68a8afaad39e965..3e1651aa2566d903032b4d52502104bf07825dfd 100644 GIT binary patch delta 20 acmX>gc|el;G%qg~0}wooP}s=5l?MPj(glYA delta 20 acmX>gc|el;G%qg~0}ySVnqy`rN diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/dsa.cpython-312.pyc index 6691fe078a8678954df46a64fb4bcee2b7d99ad2..dc11d5e29396b400521b53d98e8281b4691c7a37 100644 GIT binary patch delta 20 acmbPYHpPtlG%qg~0}wooP}s=LDGdNP6$H!x delta 20 acmbPYHpPtlG%qg~0}ySMLI#%r diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/ed448.cpython-312.pyc index 2243c091f1f472c2cc4fb2573ab8fa10cfdc5da5..a103a52a7791e50c02b9cb1cd5af9e7f943f8093 100644 GIT binary patch delta 20 acmbQQGhc`MG%qg~0}wooP}s;VA_f3BU diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/asymmetric/__pycache__/utils.cpython-312.pyc index 737a604e9427a055a5c5a58976eacf7bf872cc90..0d96b94ff75726d2f0f4f943ba6df02f5ed43dd8 100644 GIT binary patch delta 20 acmdnRwTp}UG%qg~0}wooP}s<=&k6uHzXZ?# delta 20 acmdnRwTp}UG%qg~0}yq diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/hazmat/primitives/serialization/__pycache__/ssh.cpython-312.pyc index 3778f557405161146163a56f0b0555ecd1ed2553..7c0a70f24246d130f8ea13c5edece2cf412048d7 100644 GIT binary patch delta 25 fcmZqgWohqa;XcjF%f$c$Pa_l>xwmpN*02EpSvm$+ delta 25 fcmZqgWohqa;XcjF%f$c$-zUg6a&P5ktYHHHTh0ca diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/__init__.cpython-312.pyc index 6d8137058ed83afb4221139816baf6370c9e7910..3c9f74e5f1ede982bc836959bb1e434def11a533 100644 GIT binary patch delta 20 acmZp7YIov3&CAQh00d7X6gG1IQ2+or!Ue(r delta 20 acmZp7YIov3&CAQh00iGB$Zq8RqW}Oqfd&Zx diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/base.cpython-312.pyc index 4b88d6e751d18a36b4d2fb5bf260e2878f990049..36245790e7cc5d2fd1630964cb92ee782dc2c8e0 100644 GIT binary patch delta 22 ccmey`%Jj9BiTgA!FBbz4JdIG;$o;Ab09bklcmMzZ delta 22 ccmey`%Jj9BiTgA!FBbz4e4ik@k^5B>09rW*zW@LL diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/certificate_transparency.cpython-312.pyc index 3d0bddbea67bd505f53a6461a9f94526d90399c5..37327060ee151646774ef152de7d9933e5c7bfdd 100644 GIT binary patch delta 20 acmeC>?&an_&CAQh00d7X6gF}t@w+XTx1 delta 20 acmeC>?&an_&CAQh00iGB$Zq6rVg&#*ngtR7 diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/extensions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/extensions.cpython-312.pyc index 92e5e036441f22074f2b88c3202dd4051423a1bf..4550b4597837187f7905ca0e4b23311b363f24c2 100644 GIT binary patch delta 25 fcmX@~p6$?kHty5Byj%=G@H9f9k$WpQCtp$t# delta 20 acmZ3JwkD1HG%qg~0}y)24%LQ-% diff --git a/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/verification.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/cryptography/x509/__pycache__/verification.cpython-312.pyc index 95e235c84130d7765422ab7996b5c1518289a7c2..5099e2da9876f033fd1bad426b7a4b7961de13a2 100644 GIT binary patch delta 20 acmeyv{)e6WG%qg~0}wooP}s=*kr@C&p#}~B delta 20 acmeyv{)e6WG%qg~0}yXCyaj#$ delta 20 acmey#@{@)8G%qg~0}#|)libLi#{>XCt_6$$ diff --git a/Backend/venv/lib/python3.12/site-packages/deprecated/__pycache__/classic.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/deprecated/__pycache__/classic.cpython-312.pyc index e95c3a6276cbca753a17bc829ac75ce0213752b5..b7b805faeed10263bc2d7a35a65e726dddacc0de 100644 GIT binary patch delta 20 acmbOgH!F_&G%qg~0}wooP}s=LuMYq|xdlQ1 delta 20 acmbOgH!F_&G%qg~0}#|)libM7uMYq|s|8R1 diff --git a/Backend/venv/lib/python3.12/site-packages/deprecated/__pycache__/params.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/deprecated/__pycache__/params.cpython-312.pyc index 0bc24cc8a7c5f5227805663aa6470256d025393e..126f50852ffa455c4e731168503a9b2c2b9b9bd7 100644 GIT binary patch delta 20 acmaE?@K}NSG%qg~0}wooP}s;FApihDN(F)d delta 20 acmaE?@K}NSG%qg~0}#|)libK1ApihDJOz*d diff --git a/Backend/venv/lib/python3.12/site-packages/deprecated/__pycache__/sphinx.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/deprecated/__pycache__/sphinx.cpython-312.pyc index b61611aa25704f1026c98864f7ba29a081facfaa..7b1edb631c603b4c19615fb4d7c397a954742210 100644 GIT binary patch delta 20 acmZ1%wJwVLG%qg~0}wooP}s<=tP21^M+I~M delta 20 acmZ1%wJwVLG%qg~0}#|)libLytP21^IR%0M diff --git a/Backend/venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc index f2bc688030f5cc90b0403b5c0ce007585709518f..9b08bf6dc93a96b48f004181011b372084325b13 100644 GIT binary patch delta 20 acmZ3)yNH+jG%qg~0}wooP}s;loecmrYy}Sh delta 20 acmZ3)yNH+jG%qg~0}xbRlibKXoecmrNd+1J diff --git a/Backend/venv/lib/python3.12/site-packages/dotenv/__pycache__/main.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/dotenv/__pycache__/main.cpython-312.pyc index 9da4816a08c899cd8e4baacd40c93b563f55597b..2cff714931fa909e1b1a0d7a13d031d5345a69cc 100644 GIT binary patch delta 20 acmZ2ox4Mq|G%qg~0}wooP}s<=U=ILA@dd>I delta 20 acmZ2ox4Mq|G%qg~0}xbRlibLyU=ILA&IQl_ diff --git a/Backend/venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc index 33d16f4a0773531f400a274d16d466d45f258332..2bfa895327c9da6ec3c0258000ec661fabdabc91 100644 GIT binary patch delta 20 acmbQ@H^qV delta 20 acmZoPXf)tH&CAQh00cGHBsX$@69)h`GX;?V diff --git a/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/rfc_constants.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/rfc_constants.cpython-312.pyc index 2f34287b5be8e4338d744859e89338eb85b03a61..afdef37fb9b7f1d8ef713b20f07248516d3da7b6 100644 GIT binary patch delta 20 acmeyw`-zwPG%qg~0}wooP}s=*oDBd$>;?Y- delta 20 acmeyw`-zwPG%qg~0}#|)libMtoDBd$-UbZ- diff --git a/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/syntax.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/syntax.cpython-312.pyc index d2b3b9d86ace7cc889d03fa4dcd7a56ad730734e..ca955e878329c21ead81bc0ceec677faa2244043 100644 GIT binary patch delta 22 ccmdnlz__!4k^3|+FBbz4JdIG;$gSr908Bgu_5c6? delta 22 ccmdnlz__!4k^3|+FBbz4)LfI?$gSr908B0h1ONa4 diff --git a/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/validate_email.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/validate_email.cpython-312.pyc index f2107d3795ec8da86f56ccdb20ef2f3d204de265..942703cce469ff40f8bced96f6cb2863fef6ff19 100644 GIT binary patch delta 20 acmbQBIzg5DG%qg~0}wooP}s=bDg*#F2n7`Y delta 20 acmbQBIzg5DG%qg~0}#|)libMNDg*#E`UN8Z diff --git a/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/version.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/email_validator/__pycache__/version.cpython-312.pyc index 47803cb398c05a838a3e5d89dd1086d6419e0e4a..35fbde4e6cd5bc87c560f1ed1abfd21b02901d2f 100644 GIT binary patch delta 19 Zcmcc5c%PB`G%qg~0}wooP?*Sl1pqfT1&9Cu delta 19 Zcmcc5c%PB`G%qg~0}#|)lbpzX1pqf11(pB+ diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/__init__.cpython-312.pyc index 0d239fe3d3b82ff8b5b8edd3546a140cd379778b..19ac2e58f48e027fd3376d3c363cad5f3aae5841 100644 GIT binary patch delta 20 acmcb}agl@jG%qg~0}wooP}s=r#sUC44h0YZ delta 20 acmcb}agl@jG%qg~0}#|+libMd#sUC42L&Gh diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/_compat.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/_compat.cpython-312.pyc index 6260b9ace04779d315dce4c50be011d14aff52cd..13e79d4e54574555ccbef186c5e79b83511f01bd 100644 GIT binary patch delta 22 ccmZoU%h+<3k^3|+FBbz4JdIG;$X%HR08lmtmjD0& delta 22 ccmZoU%h+<3k^3|+FBbz4)LxU^$X%HR08lRmrT_o{ diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/applications.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/applications.cpython-312.pyc index 1b0d8dcde2e872df30b07cb1c05e4c76ecb45cf5..6d4fdfc1aa5c61abced3c82572b25ebc759ccef4 100644 GIT binary patch delta 25 fcmbO?i*?>CR_@chyj%=G@H9f9k$WpQqp&XkUt9)% delta 25 fcmbO?i*?>CR_@chyj%=GPlbV`W(G%qg~0}wooP}slbV`W(G%qg~0}#|+libK{&j|oKTm>Tl diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/concurrency.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/concurrency.cpython-312.pyc index 303bf3a4aee66efa67bffe913c7c4097bcdf2d95..2c35c6ee88ec9603af2ae6152bea6be1b26159ed 100644 GIT binary patch delta 20 acmeyv^M{A~G%qg~0}wooP}s;_$OZsHSOuE^ delta 20 acmeyv^M{A~G%qg~0}#|+libK%$OZsHQ3a|1 diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/datastructures.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/datastructures.cpython-312.pyc index 90e3874fce2edeb46dd3d520836257dd46e4c99d..63d2983c7affa76e138e60b7929a185697b67b28 100644 GIT binary patch delta 20 acmca^f8Cz@G%qg~0}wooP}s5D+GD~ delta 20 acmZ3&w1kQKG%qg~0}#|+libKH$p`>5Bm{{7 diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/param_functions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/param_functions.cpython-312.pyc index 5fc1f676641990a585df7d3aa95eb9a035931aed..b07cb7e32978fdcd96bf7b8a9054b43e3b9f8d54 100644 GIT binary patch delta 22 ccmeC3$kaQLiTgA!FBbz4JdIG;$lcTd07%>hUH||9 delta 22 ccmeC3$kaQLiTgA!FBbz4)LxU^$lcTd07%saZ2$lO diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/params.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/params.cpython-312.pyc index eb75824e41785795165f6a5c685017002682d57c..359df0f5c944746ecd89387581bb71cc2ccae4a6 100644 GIT binary patch delta 22 ccmZ2~jB))jM()$Ryj%=G@H9eUBezO2099KChX4Qo delta 22 ccmZ2~jB))jM()$Ryj%=GP?5c1>yhz delta 19 Zcmey%_?MCUG%qg~0}#|+lbp!?2>?5G1@Qm? diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/types.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/types.cpython-312.pyc index c4151ce8285eefdcbb0abeaa53e18ab863bf5395..1d3e02334419fb8ec2d9c931148adffe07aab61a 100644 GIT binary patch delta 20 acmZ3=wv>(gG%qg~0}wooP}s;V#S8#5(gG%qg~0}#|+libKH#S8#5-UOBa diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/utils.cpython-312.pyc index 912d889514f6384b24aac0b2020bda158816dc7c..52a8a04ca600526b1df702ada1a3fea771612c3f 100644 GIT binary patch delta 20 acmdnsvcZM>G%qg~0}wooP}s<=sssQ&bOl2I delta 20 acmdnsvcZM>G%qg~0}#|+libLysssQ&Z3R*Q diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/websockets.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/__pycache__/websockets.cpython-312.pyc index 5ed86cc0107c859f07b9e34f1575ee3b076e5fbd..58b11da63558767da5ca70cb7d32bfb1f30d70cc 100644 GIT binary patch delta 20 acmX@bbc%`lG%qg~0}wooP}sG%qg~0}wooP?*Sl001;n1xx?{ delta 19 ZcmX@jc$$&>G%qg~0}#|+lbpzX001;R1zP|B diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/models.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/models.cpython-312.pyc index 5d10b9992f0ef04ba7d519822d0e9dcace5b1cf0..3fcb798738ec786d7696e3017fadfbf9b4c4eaf4 100644 GIT binary patch delta 20 acmaDL@j!z6G%qg~0}wooP}s;F$^!sDt_5WP delta 20 acmaDL@j!z6G%qg~0}#|+libK1$^!sDrv-EX diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/dependencies/__pycache__/utils.cpython-312.pyc index 9ea4554bd68efa38b37442ebe1e3dc67e6455248..6e113790f5423fed221434576fdc09ba46eb8169 100644 GIT binary patch delta 22 ccmccJ%yhe%iTgA!FBbz4JdIG;$bF#^08`BeB>(^b delta 22 ccmccJ%yhe%iTgA!FBbz4)LxU^$bF#^08_>XGynhq diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/__init__.cpython-312.pyc index 93017d1fee9c150afb134631c907877a50ff9cc3..a71e4fa085a06f5380734373673454bfef500d57 100644 GIT binary patch delta 19 ZcmZo>YG&d-&CAQh00d7X6ee>2001hC1oi*` delta 19 ZcmZo>YG&d-&CAQh00gzyBqwtJ001g>1qA>A diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/asyncexitstack.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/asyncexitstack.cpython-312.pyc index dde04f3a0ef206b354c090383121365528a66aee..3e8a80f8f53688b8047f04bee5f89ce6e586092f 100644 GIT binary patch delta 20 acmdnayPcQ&G%qg~0}wooP}s=5h7ABXv;|H8 delta 20 acmdnayPcQ&G%qg~0}#|+libL?h7ABXtp!~G diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/cors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/middleware/__pycache__/cors.cpython-312.pyc index a1b9f33cb97498e2dbe3cf9bd01df2d5a23bd2b5..a0e03f944e2984324f8989a90d3d681de39224ad 100644 GIT binary patch delta 19 ZcmeBR>R{qN&CAQh00d7X6ee>21pq5W1qA>A delta 19 ZcmeBR>R{qN&CAQh00gzyBqwtJ1pq5A1rz`P diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/__init__.cpython-312.pyc index 2e382baa9b5d535d3d0cfbded2a0b4ce9de29457..82fee2c473f8a8606fa21b73a110895a7458ca40 100644 GIT binary patch delta 19 ZcmX@cc#M(zG%qg~0}wooP?*TQ8vrwz1w8-& delta 19 ZcmX@cc#M(zG%qg~0}#|+lbp!C8vrwd1xx?{ diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/constants.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/openapi/__pycache__/constants.cpython-312.pyc index 7a731266b90e4320d07dd61abca671ae3f154fd4..5d18a877d4629576e09abb3a6b02eb363b169a93 100644 GIT binary patch delta 20 acmeys^nr={G%qg~0}wooP}s@~ diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/__init__.cpython-312.pyc index 92a7a1d8689a3764be0f595a8ee1dd37ff539e84..57a09b74dae5fb83db8b584cc90872806cc18b5d 100644 GIT binary patch delta 20 acmcc4cAbs;G%qg~0}wooP}s=r!wdjBwFMmj delta 20 acmcc4cAbs;G%qg~0}#|+libMd!wdjBt_3Ur diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/api_key.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/api_key.cpython-312.pyc index 4901fca7ea795956470b5f1e1a02dc91fd51f341..f4717924a13d9d0d026df78b7585dab2ef7927ed 100644 GIT binary patch delta 20 acmaFv`P`HHG%qg~0}wooP}s#!Ul8z delta 20 acmaFv`P`HHG%qg~0}#|+libLCM+E>#y9R>* diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/base.cpython-312.pyc index f278d59b22ec211f2d3e6eddadfc90bb02364b2b..484fa80153c270a3c567a3c698b9bf13dcc650a7 100644 GIT binary patch delta 20 acmZo=X=UL)&CAQh00d7X6gG1IVgvv%n*|{N delta 20 acmZo=X=UL)&CAQh00gzyBsX&ZVgvv%lm##V diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/http.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/http.cpython-312.pyc index 22bfa08ff400de51c5a5594347961d256dd20cdb..f2c35eb3b572e339304221f0ff683339fdc37423 100644 GIT binary patch delta 20 acmdm-y*ZovG%qg~0}wooP}s=5!V~~Sdj>54 delta 20 acmdm-y*ZovG%qg~0}#|+libL?!V~~SbOt;C diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/oauth2.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/oauth2.cpython-312.pyc index 655536995b9640765c6b6e23f31f4b2c89f1ffc8..d6a02e4cd147251b48383b9a8b267b0cfa4e9580 100644 GIT binary patch delta 22 ccmccF$9S`kk^3|+FBbz4JdIG;$nED208_;Vc>n+a delta 22 ccmccF$9S`kk^3|+FBbz4)LxU^$nED208_pOhyVZp diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/open_id_connect_url.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/open_id_connect_url.cpython-312.pyc index f6166ada141d3fcb3a12e04d923cba563dc67515..e8de984caaefc73d48467157cb8d626fa9eb1789 100644 GIT binary patch delta 20 acmbOuIY*NFG%qg~0}wooP}s;lkp}=aG6fp| delta 20 acmbOuIY*NFG%qg~0}#|+libKXkp}=aD+MY5 diff --git a/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/fastapi/security/__pycache__/utils.cpython-312.pyc index 7d6c7ed778dce30b0972da6c4a896eb6b8a54e8b..ba1b8f9345099fee8ee4d898b6b4b87949b6cab2 100644 GIT binary patch delta 20 acmaFF@`#1|G%qg~0}wooP}s;F&IABGBn3GD delta 20 acmaFF@`#1|G%qg~0}#|+libK1&IABG9R)}L diff --git a/Backend/venv/lib/python3.12/site-packages/greenlet/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/greenlet/__pycache__/__init__.cpython-312.pyc index f26e9fe323363fdd2c1a1c92234acfc2e4c83bf7..62fab2c1b4e67741a417cf84b20e464677b98993 100644 GIT binary patch delta 20 acmdnWv6X}SG%qg~0}wooP}s<=#R32}t^~XQ delta 20 acmdnWv6X}SG%qg~0}xbQlibLy#R32}k_5;A diff --git a/Backend/venv/lib/python3.12/site-packages/httptools/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/httptools/__pycache__/__init__.cpython-312.pyc index f5b9333785eff761ebdb46295f53fe5deb7a557f..0c473e8b2ce53aabb3c710c08425018ce694dfdd 100644 GIT binary patch delta 20 acmcc4be)O&G%qg~0}wooP}s=r!w3L7BLx!x delta 20 acmcc4be)O&G%qg~0}xbQlibMd!w3L72L&Gh diff --git a/Backend/venv/lib/python3.12/site-packages/httptools/__pycache__/_version.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/httptools/__pycache__/_version.cpython-312.pyc index 1160de72b6b33b7ba647717b262bbcd878f42caf..959fc73e942602493ac6c682fb3f92849e597898 100644 GIT binary patch delta 19 Zcmcb^c!!buG%qg~0}wooP?*Sl5db#F1%Chl delta 19 Zcmcb^c!!buG%qg~0}xbQlbpzX5db!y1&aUx diff --git a/Backend/venv/lib/python3.12/site-packages/httptools/parser/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/httptools/parser/__pycache__/__init__.cpython-312.pyc index c6b0b51859673c23502220e0906f799afc0152c8..4e93220d53e68de0cd8014813952688a418f3a29 100644 GIT binary patch delta 20 acmdnUypfsvG%qg~0}wooP}s=5j1d4fR|O*g delta 20 acmdnUypfsvG%qg~0}xbQlibL?j1d4fI|VNQ diff --git a/Backend/venv/lib/python3.12/site-packages/httptools/parser/__pycache__/errors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/httptools/parser/__pycache__/errors.cpython-312.pyc index 4278900902736a8ca16f0e0783cf98932c296760..b5a73483cc54206c8f2e3bc1a9f504105b758db9 100644 GIT binary patch delta 20 acmX@ed61L)G%qg~0}wooP}s=5jRgQXvISxQ delta 20 acmX@ed61L)G%qg~0}xbQlibL?jRgQXmIZDA diff --git a/Backend/venv/lib/python3.12/site-packages/httptools/parser/__pycache__/protocol.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/httptools/parser/__pycache__/protocol.cpython-312.pyc index 61c97ff7aa56c5133deed9a94fe39ebae3322c31..0070ee078242d4d6d631c9135e1b454ae1b4b141 100644 GIT binary patch delta 20 acmbQsHBOmHty5Byj%=G@H9f9k$WpQqk0zrVu}Xt delta 25 fcmdlqg>BOmHty5Byj%=GP<2hRk$WpQqk0zrVv+{> diff --git a/Backend/venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc index dc15540c7ceb33c49d0db20b7a315b79e386876d..095fb11a5eebedb0edeab67a556f02cc5c9c488e 100644 GIT binary patch delta 20 acmX>ra#n= delta 20 acmX>ra#n=G%qg~0}wooP}s=5nG*myrv-8V delta 20 acmdldyib_>G%qg~0}#|)libL?nG*mynFW9V diff --git a/Backend/venv/lib/python3.12/site-packages/jose/__pycache__/jws.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/jose/__pycache__/jws.cpython-312.pyc index 9e915ba688d344e1b8f33971ddd50bdfbc931ae5..6107b9afce02f35dfd985e1ba5c14250e90832cf 100644 GIT binary patch delta 20 acmZ4Ey~dmSG%qg~0}wooP}s=5P!#|_(*?)? delta 20 acmZ4Ey~dmSG%qg~0}#|)libL?P!#|_#Rb*? diff --git a/Backend/venv/lib/python3.12/site-packages/jose/__pycache__/jwt.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/jose/__pycache__/jwt.cpython-312.pyc index 3ce56945ae8889480ab47b2e3e30cf4e6e26ad5c..eb8e631323d2d319e076fc9c88fb7f41c92884f9 100644 GIT binary patch delta 22 ccmaDji}B$sM()$Ryj%=G@H9eUBX^iD09N+~uK)l5 delta 22 ccmaDji}B$sM()$Ryj%=GP;*UkBX^iD09NS+y#N3J diff --git a/Backend/venv/lib/python3.12/site-packages/jose/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/jose/__pycache__/utils.cpython-312.pyc index 917e315d4129b975c0a3c1496d637e4eae62e5a6..e38b8d48374d7d25705f908d1c1a2604bdcff55e 100644 GIT binary patch delta 20 acmaE&`b3rcG%qg~0}wooP}s;s07lmaJpcdz delta 22 ccmeBaW$I~V;y%sG%f$c$HP<9JayK>s07l6MO8@`> diff --git a/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/__init__.cpython-312.pyc index b18f31c675fbb7664f6f6f887b0e9d69ba5ebd9e..d158c2369b07767a60f2354f8ee5a6271a4f37cb 100644 GIT binary patch delta 20 acmaFM_LhzNG%qg~0}wooP}s delta 20 acmbPeJJFW=G%qg~0}#|)libMNCI diff --git a/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/strategies.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/strategies.cpython-312.pyc index 02f2c50a50bb6533930b45193b79280f15aca5df..5066e3b12e02f47e476ea74b07d01b6fa6ba1eff 100644 GIT binary patch delta 20 acmX>ReIlCsG%qg~0}wooP}s=5R~G=R delta 20 acmX>ReIlCsG%qg~0}#|)libL?R~GR diff --git a/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/typing.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/typing.cpython-312.pyc index 202054271f77be6b9ca8d11fc4bcf041b5ba3f5e..4aa0ee7f45e62877778ace669e4482e8cc88f158 100644 GIT binary patch delta 20 acmdm?yF-`zG%qg~0}wooP}s=5Rtx|=Yz3hJ delta 20 acmdm?yF-`zG%qg~0}#|)libL?Rtx|=UIniJ diff --git a/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/util.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/__pycache__/util.cpython-312.pyc index 464439cef7bd77333c57c6ea92b4df7c78b06770..551e0cc1deda4a3fd0ba285ead5a9073d248562f 100644 GIT binary patch delta 20 acmeBj=yKpb&CAQh00d7X6gG1Imj?hj@dd^J delta 20 acmeBj=yKpb&CAQh00cGHBsX&Zmj?hj;|0_J diff --git a/Backend/venv/lib/python3.12/site-packages/limits/aio/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/aio/__pycache__/__init__.cpython-312.pyc index 1603e2cd01ea90f8d8d757b464359c88df4a9a78..7439a880b8af3d52257375a657ff89848566c5c1 100644 GIT binary patch delta 20 acmcc4be)O&G%qg~0}wooP}s=r!w3L7BLx!x delta 20 acmcc4be)O&G%qg~0}#|)libMd!w3L76$K#x diff --git a/Backend/venv/lib/python3.12/site-packages/limits/aio/__pycache__/strategies.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/aio/__pycache__/strategies.cpython-312.pyc index fd2c667156d0b6bb0876003dd7120633123c5caa..291ae1d88ba1614f7aacfa4f250832c9e09e973d 100644 GIT binary patch delta 20 acmdm%x-FIaG%qg~0}wooP}s=5+6Vwe7zQT* delta 20 acmdm%x-FIaG%qg~0}#|)libL?+6Vwe3I;U* diff --git a/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/__init__.cpython-312.pyc index f0b102ce0dc90a98f8caf9d967c143e7d83e877c..12ff1e6c230b1deffa48a50c0d068bc1789bf4a8 100644 GIT binary patch delta 20 acmZ3>ww8_iG%qg~0}wooP}s<=#0&s6B?O-U delta 20 acmZ3>ww8_iG%qg~0}#|)libLy#0&s67X+;U diff --git a/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/base.cpython-312.pyc index db0d0a72e3693fb3232806177de6bdc948df5e88..1265a57b2e44a732075ca71b12c2668131e2633c 100644 GIT binary patch delta 20 acmX@>an^(TG%qg~0}wooP}s=rqyhj#js>Iu delta 20 acmX@>an^(TG%qg~0}#|)libMdqyhj#fCaJu diff --git a/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/memory.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/memory.cpython-312.pyc index 67bfd2dbf71ff019e3ab0b0b0fc489da0bb3a646..1718b1a83cc697796314827701ff80dea611bb02 100644 GIT binary patch delta 22 ccmbQy$T*{sk^3|+FBbz4JdIG;$ldDz07uvc6#xJL delta 22 ccmbQy$T*{sk^3|+FBbz4)LfI?$ldDz07uFOBLDyZ diff --git a/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/mongodb.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/__pycache__/mongodb.cpython-312.pyc index 9293297694fa09e0c4511c611998ded44871d0bc..c368616114e36ccfc85d1d54481c64130131f3df 100644 GIT binary patch delta 22 ccmcc9#(1ZVk^3|+FBbz4JdIG;$Q|em08tKG%qg~0}wooP}stKG%qg~0}#|)libLCSR4RB7X|hJ diff --git a/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/redis/__pycache__/coredis.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/limits/aio/storage/redis/__pycache__/coredis.cpython-312.pyc index eaeeb07433bf08cb692e3c5f7e7d685ccaa99e30..9a27f2ce795bb7e68469342ea5b29cb31f4843f7 100644 GIT binary patch delta 20 acmX?#hw0QDChpU`yj%=G@H9eUBe#7Y08`Eeu>b%7 delta 22 ccmX>#hw0QDChpU`yj%=GP<>5uBe#7Y08_aJz5oCK diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/ast.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/ast.cpython-312.pyc index f2a726aaf615b8f01932c7741507f233d0617fdd..34dfe8f835c38b29199025e1a743dcb7138b7935 100644 GIT binary patch delta 20 acmX?Ob;gSOG%qg~0}wooP}s=rC<_2VX9a!$ delta 20 acmX?Ob;gSOG%qg~0}xbSlibMdC<_2VQU!|u diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/cache.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/cache.cpython-312.pyc index 24b5eb3067f43992a52729cffee88244ef1680b6..01b753a00de786b1506654aeb0c3ac1986436349 100644 GIT binary patch delta 20 acmdn&wAqRKG%qg~0}wooP}s<=p$GszqXkC* delta 20 acmdn&wAqRKG%qg~0}xbSlibLyp$Gszjs;Wz diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/codegen.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/codegen.cpython-312.pyc index 58b44baf38fcdf2ffdfcb171cec90b62171b1352..3f80a0d9d18785c046288b1ad3c051f5cafd1396 100644 GIT binary patch delta 22 ccmX?fmif?GX71Cxyj%=G@H9eUBlq@a09$GY)c^nh delta 22 ccmX?fmif?GX71Cxyj%=GP<>5uBlq@a09#cD;s5{u diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/compat.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/compat.cpython-312.pyc index 4624b83b44ae25ea2345e950f48ed344b4d9ab44..b74742c2c79c3fbe8cd7c1cc120e686e6f4e2637 100644 GIT binary patch delta 20 acmZpXXp!JP&CAQh00d7X6gG1I5uBX@y609)P%6aWAK diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/parsetree.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/parsetree.cpython-312.pyc index 01ff68c368f1658dd67a800b4b5259f2150276b0..d474b5d4a4fa1707dd4959fb3531cca9feae58b9 100644 GIT binary patch delta 22 ccmbRCigDU2M()$Ryj%=G@H9eUBR6*`09LjJmH+?% delta 22 ccmbRCigDU2M()$Ryj%=GP<>5uBR6*`09K&}qW}N^ diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/pygen.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/pygen.cpython-312.pyc index 596691be184b2b053c4b3745fc4cd021008a1a9d..f7a909ad54146d4aae4a0d2279f05cd233b60343 100644 GIT binary patch delta 20 acmdlGwjqrBG%qg~0}wooP}s<=sto`^1qE;b delta 20 acmdlGwjqrBG%qg~0}xbSlibLysto`@@CAJU diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/pyparser.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/pyparser.cpython-312.pyc index 11d8475bbb0063acc75d152404890bf3c16a962a..7de206c1b0d63493b65d8506b0f0fd34628a78aa 100644 GIT binary patch delta 20 acmZolXiDHd&CAQh00d7X6gF~y*9QPSK?VK* delta 20 acmZolXiDHd&CAQh00h<7BsX$@*9QPSECvez diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/runtime.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/runtime.cpython-312.pyc index 07a4aaa9d0432a6e1fdb22218cc96843f4cc32db..260e76ff3f8af724515f5c2e623251c51167c506 100644 GIT binary patch delta 22 ccmX@Tk?HhCChpU`yj%=G@H9eUBlm$B09ZB$XaE2J delta 22 ccmX@Tk?HhCChpU`yj%=GP<>5uBlm$B09YXhbpQYW diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/template.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/template.cpython-312.pyc index ac1d0fa3bb39533448f54f89273f99a585a1453e..ded10a55fba22b98171247bcf7cb3f21ae38a539 100644 GIT binary patch delta 22 ccmdmZk#XZiM()$Ryj%=G@H9eUBlofl09a!OC;$Ke delta 22 ccmdmZk#XZiM()$Ryj%=GP<>5uBlofl09Z~3H2?qr diff --git a/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/util.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/__pycache__/util.cpython-312.pyc index 523cd3ddaae9b7fb3e14d86dd19d6a88f7892956..55d898e0444b12b20bb49dd142baeb5621307d3c 100644 GIT binary patch delta 22 ccmbO`pK5uBljeK08Kjvd;kCd diff --git a/Backend/venv/lib/python3.12/site-packages/mako/ext/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/mako/ext/__pycache__/__init__.cpython-312.pyc index 537fe04a0e40281e34da132633118446179e91e7..fcb82f069c32bb942cd5b2b22c734689543ade5e 100644 GIT binary patch delta 19 ZcmdnbxSx^xG%qg~0}wooP?*TQ1pqRZ1t delta 20 acmbQoGLMD(G%qg~0}xbRlibKH%me^3VFY*p diff --git a/Backend/venv/lib/python3.12/site-packages/multipart/__pycache__/decoders.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/multipart/__pycache__/decoders.cpython-312.pyc index a0d4d0abae75e2a95bc90e29d8962cc7b00e110b..42c5b9aca7b2bffd8ba3383325b431657cc8c2f9 100644 GIT binary patch delta 20 acmbPeJ<*!`G%qg~0}wooP}s=bCJO*LQw2`| delta 20 acmbPeJ<*!`G%qg~0}xbRlibMNCJO*LFa=rw diff --git a/Backend/venv/lib/python3.12/site-packages/multipart/__pycache__/exceptions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/multipart/__pycache__/exceptions.cpython-312.pyc index cea27851e3c8d1f12ebb7e6480fd906298b79b88..2607d2b389246ad7ef9ad5241afd09d0eab97f99 100644 GIT binary patch delta 20 acmZqUZ{z1a&CAQh00d7X6gF~KvjYGzRRq8Q delta 20 acmZqUZ{z1a&CAQh00foSBsX$bvjYGzG6c&2 diff --git a/Backend/venv/lib/python3.12/site-packages/multipart/__pycache__/multipart.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/multipart/__pycache__/multipart.cpython-312.pyc index 8df3ea82245159164909944bf3378d25f0020a57..e87f3c65e33972b3be929546e68a11247023677b 100644 GIT binary patch delta 22 ccmZ4Tgn7vmX71Cxyj%=G@H9eUBe&!y09fq@H2?qr delta 22 ccmZ4Tgn7vmX71Cxyj%=GPvX+JWG%qg~0}wooP}s<=!~_5|+yt5c delta 20 acmZ3>vX+JWG%qg~0}xbRlibLy!~_5|xdf#E diff --git a/Backend/venv/lib/python3.12/site-packages/packaging/__pycache__/_structures.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/packaging/__pycache__/_structures.cpython-312.pyc index c9ba74dffbe5b17c8452aac2c06fde16c8089da6..4aa32fe43305cd37cee4a9a90c01dd71d23eee37 100644 GIT binary patch delta 20 acmZ1>xk8frG%qg~0}wooP}s;lmj?hi5(Pg1 delta 20 acmZ1>xk8frG%qg~0}xbRlibKXmj?hh?*&Q# diff --git a/Backend/venv/lib/python3.12/site-packages/packaging/__pycache__/version.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/packaging/__pycache__/version.cpython-312.pyc index 32db7a2339d539b6a087e5e415a8ef67061e0e50..eff75247ca1dee0ed6f905b99421cbb2e9354397 100644 GIT binary patch delta 22 ccmex7pYij2M()$Ryj%=G@H9eUBlin`09(QbaR2}S delta 22 ccmex7pYij2M()$Ryj%=GP0{wO&CAQh00d7X6gF}*GXVfF1Oz<* delta 20 acmeBU>0{wO&CAQh00iGB$Zq6jW&!{)!vur? diff --git a/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/core/__pycache__/access_token.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/core/__pycache__/access_token.cpython-312.pyc index 4d2ec5bf3f7b1d19b4847b8b9aaffd8ce220b6fc..899516db526ca62d9c0ce00642a3e46a666a1e4d 100644 GIT binary patch delta 20 acmaFI`HqwOG%qg~0}wooP}s=*m<0epx&`R~ delta 20 acmaFI`HqwOG%qg~0}yS}Cj{aE delta 20 acmeAZ?i1!d&CAQh00iGB$Zq6r<^%vV<^?GL diff --git a/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/core/__pycache__/paypal_http_client.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/core/__pycache__/paypal_http_client.cpython-312.pyc index 97267bba250c1cba21b458d805f38586e6cd1e7b..bb7ec43fc7686ee1d660a2908d471c20562342d7 100644 GIT binary patch delta 20 acmaDO{zjbpG%qg~0}wooP}s=*kQ)F(X$A%W delta 20 acmaDO{zjbpG%qg~0}y)2A#02F4 delta 20 acmX@ca*T!hG%qg~0}y; diff --git a/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/orders/__pycache__/orders_create_request.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/orders/__pycache__/orders_create_request.cpython-312.pyc index 439d9e5c84fda432b7b76baa86626fa4064780ab..ca2b3c45bf10f1df74fcc680eefcecc877bf719f 100644 GIT binary patch delta 20 acmcb}bCHMpG%qg~0}wooP}s=r#s&a8pamKL delta 20 acmcb}bCHMpG%qg~0}ybEd{Fp diff --git a/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/payments/__pycache__/captures_refund_request.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/paypalcheckoutsdk/payments/__pycache__/captures_refund_request.cpython-312.pyc index a758fc963229ccb9f676d42a70316606a4d62b6f..e4aca8739236b146d92ee19ff0b9c2a03e8fb0f6 100644 GIT binary patch delta 20 acmbQtKbfEVG%qg~0}wooP}s=b!43d3T?FR< delta 20 acmbQtKbfEVG%qg~0}y(JG%qg~0}wooP}s delta 20 acmcaEdR>(JG%qg~0}yN@Emj(#{ diff --git a/Backend/venv/lib/python3.12/site-packages/paypalhttp/__pycache__/environment.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/paypalhttp/__pycache__/environment.cpython-312.pyc index 1485f853d73f975a1a4b54dc78b8a0ab577858d8..d4d6e52cebabb7dcb6c9f7c91d39cb104fe7a5be 100644 GIT binary patch delta 20 acmbQrGL?n;P%12Z8_q diff --git a/Backend/venv/lib/python3.12/site-packages/paypalhttp/serializers/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/paypalhttp/serializers/__pycache__/__init__.cpython-312.pyc index 4c8cef5ee757f48241798c541fe24a232f90c45f..ee95ea3aa355478d9f3e1b6f0ea6aee6821ebc52 100644 GIT binary patch delta 20 acmdnRvWtcLG%qg~0}wooP}s<=&jbKA&CAQh00d7X6gG0#XaN8_cm;9* delta 20 acmZn&CAQh00cGHBsX%`XaN8_Y6XA* diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/annotated_handlers.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/annotated_handlers.cpython-312.pyc index d9f2d9ec4b9186da63979339b3454fd006ebea71..aa52cd2acda42d44d4933e4c5589a41b767060ce 100644 GIT binary patch delta 20 acmdm>y+ND%G%qg~0}wooP}s=5R1^R^;{}8O delta 20 acmdm>y+ND%G%qg~0}#|)libL?R1^R^)di9O diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/color.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/color.cpython-312.pyc index fe8c6498633c115b2f62aa5cb42bca5092ed6ecf..c79348431f119bdf7d69f177a40df038ecd37fc5 100644 GIT binary patch delta 22 ccmaF!n(@tRM()$Ryj%=G@H9eUBlp8n0A^1J8UO$Q delta 22 ccmaF!n(@tRM()$Ryj%=GP;*UkBlp8n0A@i5C;$Ke diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/config.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/config.cpython-312.pyc index e96827796451e929ef5e40fecd5c199250b34113..78b3671a3633187cbbce421c93fdfadda7c4d119 100644 GIT binary patch delta 20 acmdljwOfk&G%qg~0}wooP}s delta 20 acmbOuJx7}RG%qg~0}#|)libKXkrx0qZ3Qj> diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/warnings.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/__pycache__/warnings.cpython-312.pyc index 658f078b5eba8ccfcdd18475a76b9ff11b535301..3367d57941e0d7add6afb12b8d322a5ed982ae4a 100644 GIT binary patch delta 20 acmbO)HD8MRG%qg~0}wooP}s;V!V3U3&jhCc delta 20 acmbO)HD8MRG%qg~0}#|)libKH!V3U3!34Dc diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/__init__.cpython-312.pyc index efbddde62acd188592c0250103e573df6fa7c26c..6ea746e66f64dbb72b6fc290450164bed33114db 100644 GIT binary patch delta 19 ZcmX@fc#@I(G%qg~0}wooP?*TQ4*)a>1x5e> delta 19 ZcmX@fc#@I(G%qg~0}#|)lbp!C4*)al1yle4 diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_config.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_config.cpython-312.pyc index ea709205595a881c29bf3253c4148ea6579f006e..4a294e3cf20849ca4c7e09bdfef6c15edc6e195a 100644 GIT binary patch delta 20 acmbQ2JujR4G%qg~0}wooP}s;l*%SamGX?Gd delta 20 acmbQ2JujR4G%qg~0}#|)libKX*%SamB?bHd diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_core_metadata.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_core_metadata.cpython-312.pyc index 9a17ed0329d7df84eec61a2a64064195a01f8c3b..b4778199eb166e26deb6664e60d41bf9982d24b3 100644 GIT binary patch delta 20 acmX>hcS4T)G%qg~0}wooP}shcS4T)G%qg~0}#|)libK{%MSoNy9GJ` diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_core_utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_core_utils.cpython-312.pyc index 1f8b204337e922dee6468a9e9149335ad68f536a..e9df91fd2ecc5c02485b625c443f80ad8d062f09 100644 GIT binary patch delta 22 ccmZ2>g>l&xM()$Ryj%=G@H9eUBe!%G09FA8j{pDw delta 22 ccmZ2>g>l&xM()$Ryj%=GP;*UkBe!%G09Eq_od5s; diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_decorators.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_decorators.cpython-312.pyc index 6a88efc381821cac883fb33955acb4bba9dc6475..c6cd95eace04151c66c847e3446aa253c74da0d3 100644 GIT binary patch delta 22 ccmeC`W9sT-;y%sG%f$c$Pa_mIa{q4w07&Ep%>V!Z delta 22 ccmeC`W9sT-;y%sG%f$c$HP<9Ja{q4w07%vb+W-In diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_decorators_v1.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_decorators_v1.cpython-312.pyc index da68e7aa903d8985c13b2c6087dc697bc97f07d5..891f51c8d4759abdd4929a53edb8b87fdfafd3fc 100644 GIT binary patch delta 20 acmZ4Iyv~{XG%qg~0}wooP}s=5SP=j|{{^}L delta 20 acmZ4Iyv~{XG%qg~0}#|)libL?SP=j|@dd~L diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_discriminated_union.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_discriminated_union.cpython-312.pyc index 9cccbdb076375a4f65d79eca47895f98c5746396..7cc5eea4a38956235a3e193c0aed123d944e64d3 100644 GIT binary patch delta 22 ccmeyjmhsS08WSo9smFU delta 22 ccmX@y!g#oak^3|+FBbz4)LfI?$Zg>S08V-aEC2ui diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_mock_val_ser.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_mock_val_ser.cpython-312.pyc index ba255a8486ae267425af00fa2b3514019d6f9ec9..e949844e5fa7eecc3fa515dbe50ed0d2a7a6d3d9 100644 GIT binary patch delta 20 acmcbjb47>yG%qg~0}wooP}s=rDFy&Qs0DKX delta 20 acmcbjb47>yG%qg~0}#|)libMdDFy&QngxLX diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_model_construction.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_model_construction.cpython-312.pyc index 9b3f71d27013fbb8fef99fd8da55065985ff3f4d..7af1d8cba16fa15000dc07ffcd476312e4f1fc34 100644 GIT binary patch delta 22 ccmdmfj&b`rM()$Ryj%=G@H9eUBezaE09Wq@vj6}9 delta 22 ccmdmfj&b`rM()$Ryj%=GP;*UkBezaE09WA#!2kdN diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_repr.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_repr.cpython-312.pyc index e12e76eba1363bb3b7fd64826b4a8d80965b6021..edd03c7df57a37742ef41e2416df65a6410a3e25 100644 GIT binary patch delta 20 acmbPXI>VIvG%qg~0}wooP}s=bD+K^KkOfr$ delta 20 acmbPXI>VIvG%qg~0}#|)libMND+K^Kf(2s$ diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_schema_generation_shared.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_schema_generation_shared.cpython-312.pyc index 84fc48514c1edc30787c4479b2cee64a4abec51a..68a0639a82e9336a886bd3f761562681ed09b204 100644 GIT binary patch delta 20 acmexp_|cI2G%qg~0}wooP}s=*OacH#<_1;( delta 20 acmexp_|cI2G%qg~0}#|)libMtOacH#*al<( diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_std_types_schema.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_std_types_schema.cpython-312.pyc index 5f142343656b1847a60142298b05dacf3d4154b3..5a0e408061cb0bf0a38d1f263e92a1f3c8a5cc7a 100644 GIT binary patch delta 22 ccmez0#q__6iTgA!FBbz4JdIG;$X(J309oz_BLDyZ delta 22 ccmez0#q__6iTgA!FBbz4)LfI?$X(J309oJ%F#rGn diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_typing_extra.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_typing_extra.cpython-312.pyc index 409928a68dd4b882fd98c760fa97f771f528ea77..09ba755d9eb35365b1173d61dbb6181590b85bef 100644 GIT binary patch delta 22 ccmbO=nQ_)+M()$Ryj%=G@H9eUBX_?i07~@+NB{r; delta 22 ccmbO=nQ_)+M()$Ryj%=GP;*UkBX_?i07~ZuRsaA1 diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_utils.cpython-312.pyc index 9f7668020fc4b0ebabcb6ab3e800d4eda52e864e..62466e23c1f2e1f4d37728957ed3a75128acc1ff 100644 GIT binary patch delta 20 acmZ2iysnu0G%qg~0}wooP}s=5*b)Fm*9I~G delta 20 acmZ2iysnu0G%qg~0}#|)libL?*b)Fm$p%0G diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_validate_call.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic/_internal/__pycache__/_validate_call.cpython-312.pyc index a0bb7d5741ef3808944f4f8e18b9862a4c300680..65ad5c3354edb51f4ffe81cddf1e8f600ae8dcd9 100644 GIT binary patch delta 20 acmca^dfk-!G%qg~0}wooP}sVCI|p<+Xof^ delta 28 icmZo%%+a`*gZnfuFBbz4R9};9VCI|p=6bB;! diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/__init__.cpython-312.pyc index 19433396a08bbab95a921dc0ae6e6e2a067fba3d..0a78465f9184cfddfc174fb9090647cd3051b547 100644 GIT binary patch delta 20 acmX@ja+-zvG%qg~0}wooP}s=rzyts}j0E%m delta 20 acmX@ja+-zvG%qg~0}#|+libMdzyts}g#`lu diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/main.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/main.cpython-312.pyc index 5c4d9b543a057c0fcd46eb7df77da0138cfb4811..87d11f37d6aaa72842e826eb16fe987ae54c15a2 100644 GIT binary patch delta 20 acmexu^xKI0G%qg~0}wooP}s;_APE3Rn+5j( delta 20 acmexu^xKI0G%qg~0}#|+libK%APE3Rlm-R> diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/sources.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/sources.cpython-312.pyc index 1b52a5551841a20b3b1170f187162273c0c0b467..c714ac4145901c4b10f789a414346f22cbdc62ac 100644 GIT binary patch delta 22 ccmX^7g7NSRM()$Ryj%=G@H9eUBez8f0A2P67ytkO delta 22 ccmX^7g7NSRM()$Ryj%=GPB>&aRr0` delta 20 acmX@devX~{G%qg~0}#|+libLCm>B>&Y6X)3 diff --git a/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/version.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pydantic_settings/__pycache__/version.cpython-312.pyc index 4dfde5e64a9e5debb49b00a72ca07d37becfcf8e..c081c9d05119ec267fa65b4dd94626e7b3d3e138 100644 GIT binary patch delta 19 Zcmcc1c$bm;G%qg~0}wooP?*Sl2>>?i1%dzo delta 19 Zcmcc1c$bm;G%qg~0}#|+lbpzX2>>?M1(5&% diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/__init__.cpython-312.pyc index 573044ae6ed09ffab2118f95d860dfb607b60d7e..765257ebd6fb21c643b91782d120c6fe3d8b0638 100644 GIT binary patch delta 20 acmaE_{$8E?G%qg~0}wooP}s=*L>K@?DF!zH delta 20 acmaE_{$8E?G%qg~0}xbRlibMtL>K@?1_nX^ diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/_auth.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/_auth.cpython-312.pyc index 81e1c0f11635989c410f2f81093ae33bcaede2e8..d1bcb5efafe4d081aa171a4773029a45a1b47413 100644 GIT binary patch delta 20 acmdnyz0I5ZG%qg~0}wooP}s=5S``36V+G~_ delta 20 acmdnyz0I5ZG%qg~0}xbRlibL?S``36Kn3vt diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/charset.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/charset.cpython-312.pyc index 31efce45bcd02fd7f61f2a0be5f6ba4f529365e9..0b8e034ef6ca9e244b2e4ac2af2d42389c21dd8e 100644 GIT binary patch delta 22 ccmbQ+%s981k^3|+FBbz4JdIG;$UVss07(7@DF6Tf delta 22 ccmbQ+%s981k^3|+FBbz4R9=(Z$UVss07%;gGynhq diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/connections.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/connections.cpython-312.pyc index f8fa9c651d46ea1aece687bca510e5659656c2c8..f34b4726672e7871a8f4f4acfacc7cabc591d935 100644 GIT binary patch delta 22 ccmX?kj``#{X71Cxyj%=G@H9eUBe&gi09(HYZ2$lO delta 22 ccmX?kj``#{X71Cxyj%=GPiE-K_M()$Ryj%=G@H9eUBR97v07)VRx&QzG delta 22 ccmbO>iE-K_M()$Ryj%=GPR diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/times.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/__pycache__/times.cpython-312.pyc index 550479e8ea32f9d60dd7da55a88e63689e5b7827..4fbdb8d024dd9e99dbd867ac4967858b16b5eabe 100644 GIT binary patch delta 20 acmZ3)zKEUsG%qg~0}wooP}s;lof!Z$kp%z% delta 20 acmZ3)zKEUsG%qg~0}xbRlibKXof!Z$ZUqYf diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/CLIENT.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/CLIENT.cpython-312.pyc index 64ca5a98e027e5a053bd667c93b14127a08e7b42..2350b0d1e4043cc78fc534613e0a352b4579de0b 100644 GIT binary patch delta 20 acmbQjF@=NsG%qg~0}wooP}s=L$pQc|h6Gsv delta 20 acmbQjF@=NsG%qg~0}xbRlibM7$pQc|V+3RX diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/COMMAND.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/COMMAND.cpython-312.pyc index 85f2885bbf70653ed547d6d63bfca6a7ed7c9b84..e8d4c9f575bcda28d78fef52e1128789f080109b 100644 GIT binary patch delta 20 acmey&@tK4BG%qg~0}wooP}sqaa4l)G%qg~0}wooP}sqaa4l)G%qg~0}xbRlibK{#RC94Qw1LY diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/ER.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/ER.cpython-312.pyc index 90aa2d62c8b6c66b07da12a0f711142f1551ffb0..467c7272fd43f2bce3b01e17ac3ebf04a4a6f888 100644 GIT binary patch delta 22 ccmZ43!ML!4k^3|+FBbz4JdIG;$Svjq07-BK!T+%>V!Z diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/FIELD_TYPE.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/FIELD_TYPE.cpython-312.pyc index 921aa9c4ad36f88987caebef97a0e3ac0e1b943f..1bbeed1e04fed06325d3106e0757af217d1f6219 100644 GIT binary patch delta 20 acmcc0c9o6$G%qg~0}wooP}s=r#S8#DWd#=i delta 20 acmcc0c9o6$G%qg~0}xbRlibMd#S8#DLIolK diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/SERVER_STATUS.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/SERVER_STATUS.cpython-312.pyc index 27f8eb4517d251ad8708578750f5fc1edcfac302..efa1ea8bddeee2ba3d8fbb3a6f5784e48f040e64 100644 GIT binary patch delta 20 acmZo>ZD!>@&CAQh00d7X6gF~KFaZEBa0H$J delta 20 acmZo>ZD!>@&CAQh00foSBsX$bFaZEBO$4a` diff --git a/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pymysql/constants/__pycache__/__init__.cpython-312.pyc index b5a37a264fb71fc69ca28bb9036190d7db608c3f..4dd23781097b28426cc5ddb3a5db346b5e55e9fa 100644 GIT binary patch delta 19 ZcmX@Xc!H7pG%qg~0}wooP?*TQ7XUNk1w#M; delta 19 ZcmX@Xc!H7pG%qg~0}xbRlbp!C7XUN01x^3} diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/__init__.cpython-312.pyc index e5b24c86bfb767c165d747f0fd66ad2559532df4..995dc8ae3d9af9fa1f4f55782c478ea99526df89 100644 GIT binary patch delta 20 acmX@6cubM|G%qg~0}wooP}s=5TL1t(<^`<) delta 20 acmX@6cubM|G%qg~0}y0)%WmY}EdT&Jvjt-S diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/compat.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/compat.cpython-312.pyc index 2e3e0d74d6704016428c8073e6ffd67d1a93da6e..525cb08872234bcd5450c084b09f01ad27747719 100644 GIT binary patch delta 20 acmcb|bdQPqG%qg~0}wooP}s;F%m@HHI|V2J delta 20 acmcb|bdQPqG%qg~0}y0)%WmWjW&{8_2n5~$ diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/hotp.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/hotp.cpython-312.pyc index 19adacb8357a6bac9f61a1e365174963dce22db2..4b9be98580e3a90f7f54f5ee75dda768560dee36 100644 GIT binary patch delta 20 acmZ1`yG)k*G%qg~0}wooP}s;ln-2guR0Tr- delta 20 acmZ1`yG)k*G%qg~0}y0)%WmYJ%?AKBAq4pV diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/otp.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/otp.cpython-312.pyc index 984d32d70d7acf8aae483ae62de2e5bd68494dce..3345a265df689d77100c09924dbaf71efb6e44b1 100644 GIT binary patch delta 20 acmew-^-qfXG%qg~0}wooP}s;_%nJZSrv=0S delta 20 acmew-^-qfXG%qg~0}y0)%WmW@<^=#kbOm|< diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/totp.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/totp.cpython-312.pyc index ebc4e4d7aac98baa2b7a40737ff4a8d4c98a5618..a80630f685e2ad65c021e48867412d5d2d153c77 100644 GIT binary patch delta 20 acmcblcS(=?G%qg~0}wooP}s=rE)D=dp#^dP delta 20 acmcblcS(=?G%qg~0}y0)%WmX$7Y6`7ZUra+ diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/__pycache__/utils.cpython-312.pyc index cd05b9d9b8e2766223579f33163bdcd05f31ab13..20c5771f17d8874f060cf0c419acc45c38a09fdd 100644 GIT binary patch delta 20 acmeB`?Um&|&CAQh00d7X6gF}<@c{rdYy|iK delta 20 ZcmeB`?Um&|&CAQh00i0HvKzUZ_y96F1g-!8 diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/contrib/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/contrib/__pycache__/__init__.cpython-312.pyc index 13cd747292ec8835c92fb67cc99ff3bc8975fb91..67a4daac2c0a61b3b1b32e348228e66c8099d40f 100644 GIT binary patch delta 19 ZcmaFG_==JHG%qg~0}wooP?*Sl9{@Pb1*rf4 delta 19 ZcmaFG_==JHG%qg~0}y0)%TDCJ4*)jg1z!LF diff --git a/Backend/venv/lib/python3.12/site-packages/pyotp/contrib/__pycache__/steam.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/pyotp/contrib/__pycache__/steam.cpython-312.pyc index c1ecddfb89301eb497caf9e783916b7ecbe6385f..3e71e64d9aa8bccd6070f479fb6b63d659d68122 100644 GIT binary patch delta 20 acmew@@LPcUG%qg~0}wooP}s;_zySb4!UduL delta 20 acmew@@LPcUG%qg~0}y0)%WmW@-~a$Xj|Er& diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/LUT.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/LUT.cpython-312.pyc index 38ed49ee87a0bf944887a4728dd96774a03142b3..83a218b65c96df8fa8c7f0f4024d3997494985c3 100644 GIT binary patch delta 20 acmX@edytp=G%qg~0}wooP}s=5jST=gLX8`~;Lj-{U diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/base.cpython-312.pyc index d0525638a59069d9e2a4bf78884482f830826e94..909ffaaf44b36b41a346abf9439d7d220a8f0486 100644 GIT binary patch delta 20 acmX@(dB&6bG%qg~0}wooP}sVFUm(@C0c9 diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/exceptions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/exceptions.cpython-312.pyc index 560797d2e5e6aa3a8ef5f2d043668adb897e624b..58ac6c54c688bc58f9e070eb16dd695e1d1c9163 100644 GIT binary patch delta 20 acmZo@&CAQh00d7X6gF~~F#-TC*94OQ delta 20 ZcmZo@&CAQh00i0HvKzU}7y&G#1W5n@ diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/main.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/main.cpython-312.pyc index 1e3984228d3baa35c5a537bc03e181d6a925c5e3..1cac8e7d529642b0bb26031c1eb81a0e83278aa9 100644 GIT binary patch delta 22 ccmbQeg>m*4M()$Ryj%=G@H9eUBey^l08cmu9smFU delta 22 ccmbQeg>m*4M()$Ryj%=Gklii2ky{`N08Ir2)Bpeg diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/util.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/__pycache__/util.cpython-312.pyc index 0f2446f05d7bb4cd869c119a531200b0f2c4c356..7f871d8bcea236918414b28abac96fe13f6cdfe2 100644 GIT binary patch delta 22 ccmZ3viE-s7M()$Ryj%=G@H9eUBez^608v8*LjV8( delta 22 ccmZ3viE-s7M()$Ryj%=Gklii2ky|bj08bDF`2YX_ diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/compat/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/compat/__pycache__/__init__.cpython-312.pyc index 3e86aa1e881c955d1faff86be88bfa7ffc68f595..3e3c199b8cbd624cf6856ce84671aa553aee45a3 100644 GIT binary patch delta 19 ZcmX@Yc!ZJrG%qg~0}wooP?*TQ696+$1vdZy delta 19 ZcmX@Yc!ZJrG%qg~0}y0)%TDCp2>>x>1nmF- diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/compat/__pycache__/pil.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/compat/__pycache__/pil.cpython-312.pyc index 53fcfdad7855829d9e9cc375ed34f9c8daca8d0e..7cbcb6ed9e2dceeb1e9c9b4852dd3e4e777274a7 100644 GIT binary patch delta 20 acmZ3%yn>ngG%qg~0}wooP}s;lmk|Io?*#|| delta 20 acmZ3%yn>ngG%qg~0}y0)%WmYJ%Lo86yac`g diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/image/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/image/__pycache__/__init__.cpython-312.pyc index e664d8e8f954e95f6791d306dc45529eee8d24e1..890ab71694be3e069af2aaef32fb2e9dff15a229 100644 GIT binary patch delta 19 ZcmX@ic$ksy` delta 20 acmZ3(vWA8GG%qg~0}y0)%WmXWWC8#(fdowe diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/image/styles/moduledrawers/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/image/styles/moduledrawers/__pycache__/base.cpython-312.pyc index abb28557675e18f2da884c676fe5427fcb7285c6..9cb98b87556c396a5e34f2e7e0cdb1f027483264 100644 GIT binary patch delta 20 acmZ3=x0H|jG%qg~0}wooP}s;V#SQ>92?Uz} delta 20 acmZ3=x0H|jG%qg~0}y0)%WmYBVg~>+)&x-i diff --git a/Backend/venv/lib/python3.12/site-packages/qrcode/image/styles/moduledrawers/__pycache__/pil.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/qrcode/image/styles/moduledrawers/__pycache__/pil.cpython-312.pyc index 498d7d6865bce1ed28e5fac973551a5ebc07d027..9f2ca9dc14f995bc25d56beae930a36958006ea5 100644 GIT binary patch delta 22 ccmX@t$at=ik^3|+FBbz4JdIG;$bHxW08r`%w*UYD delta 22 ccmX@t$at=ik^3|+FBbz4WOvJM;?q@ diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc index 999a49582335d6484f0b7cbc1276800598ed175d..b2e03b3ce2a75a08276de599d90fc16d2e4ddf6f 100644 GIT binary patch delta 22 ccmZ2{lX3A)M()$Ryj%=G@H9eUBlnCP09Qo^5&!@I delta 22 ccmZ2{lX3A)M()$Ryj%=Gkn>GyBlnCP09T9$F#rGn diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc index a07a0b45ee2ce7fc97aaa0cbfc051338d7f2b127..d55b49e853e0f2aba8759054dbf992dfe8d6726e 100644 GIT binary patch delta 20 acmZ2tvBZM=G%qg~0}wooP}s;VDFXmH-UR^w delta 20 acmZ2tvBZM=G%qg~0}$kVliJ8FDFXmIB?TY= diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc index bc7525b7c4ee1afddd5d94202c04acf633d09130..6f1412fade36ce2a553faa32a0517e6b78f5d445 100644 GIT binary patch delta 27 hcmaEy^Eik5G%qg~0}wooP}sN`310vJ delta 27 hcmaEy^Eik5G%qg~0}$kVliJ9guE6+fbFsn)Q2>To37!A| diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc index affe608af8312241547bd06c0050f68cf11646b4..0909afb685085a1a0b2c8decab64e335df6dfcb1 100644 GIT binary patch delta 20 acmbQmI*XP2G%qg~0}wooP}s=b&jbK72n6E* delta 20 acmbQmI*XP2G%qg~0}$kVliJAL&jbK7PXz)1 diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc index 7db2e77edafe1a9dbced395b150d67f9dc3dc907..da2c2ad2a0ab054d7edc3b62b654c0c4f3f2033a 100644 GIT binary patch delta 20 acmX>jbVi8#G%qg~0}wooP}s=r$O!;DvjrLe delta 20 acmX>jbVi8#G%qg~0}$kVliJAb$O!;D`UN=v diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc index 42b4c0eb6781f988d830ffa89ed600066f6f9d2e..59df728567f411ac621d14c506f54630da8bd892 100644 GIT binary patch delta 22 ccmdmUlyT2dM()$Ryj%=G@H9eUBlpH609axND*ylh delta 22 ccmdmUlyT2dM()$Ryj%=Gkn>GyBlpH609dI9N&o-= diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc index 31a19b0839e15a94029a074e3786af04124036bd..44fc5e35813efc2cdd0aa1ae5c46b27fc2c65e23 100644 GIT binary patch delta 20 acmZ2zz0jKbG%qg~0}wooP}s;lO%?z<(*=J3 delta 20 acmZ2zz0jKbG%qg~0}$kVliJ8VO%?z=8U>yJ diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc index 3f5a16806f8a62786011e417d8087a38c3abb0f8..0a8b9cbf8169638fdaa3a1ca3d0b0b94570cfea9 100644 GIT binary patch delta 20 acmbQkF^7ZuG%qg~0}wooP}s;V$N~T|#sqNy delta 20 acmbQkF^7ZuG%qg~0}$kVliJ8F$N~T}4Fr$? diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc index 7d364658599378580d0cb5068448453021f574b4..03fbd80237d877a0c62f0497c7f6425e56469c04 100644 GIT binary patch delta 29 kcmZ2Gm1*r%ChpU`yj%=G@H9eUBli||##@^Yu)l2r0Eq7j8vpGyBli||#$THcu)l2r0E*8FS^xk5 diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc index 0df0291cb5e8517637c3abf5a9c88fb611eb961c..41fca48e4d346c83ff654a1db9ca3572ed533d28 100644 GIT binary patch delta 20 acmey&@tK4BG%qg~0}wooP}s{{R30 delta 22 ccmex#lkw9{M()$Ryj%=Gkn>GyBlq(h0A$e!9smFU diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc index 64a9d48da64f632800db02788ae0c0d268b5ca69..2ff50836a564821416c4ca827300dd2ebdbf759f 100644 GIT binary patch delta 27 hcmeCz@7L!(&CAQh00d7X6gG0J3Nqf>Y$zDV1^{AC2KoR1 delta 27 hcmeCz@7L!(&CAQh00cSTq&9M^3NrrMY$zDV1^{F(2RQ%$ diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc index b870e984a37a4297deb019c7ba70b69299344d7b..092d11cc5632d7c1c63ad0cb60dccf6f8f3025d6 100644 GIT binary patch delta 20 acmeyU{ZX6yG%qg~0}wooP}s=*OcVe{3kF93 delta 20 acmeyU{ZX6yG%qg~0}$kVliJArOcVe{QU+!K diff --git a/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc index b3842540a340cef5c98ac0d694c136bf7b569fe6..dd06de27b45ae1a72707716b1b8fa212efe604b0 100644 GIT binary patch delta 58 zcmcaKi|NuVChpU`yj%=G@H9eUBR2~tmxHo7^z~ JQWmLF8USq?7WV)E delta 58 zcmcaKi|NuVChpU`yj%=Gkn>GyBR2~tmxHo7^z~ JQWmLF8UTKM7q$QZ diff --git a/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/__init__.cpython-312.pyc index 24469d88926741aa7d3e2b232f4f26a258e04105..bc13765ed72f3a013d3a5e50392aa2e0098e1233 100644 GIT binary patch delta 20 acmdnaw4I6jG%qg~0}wooP}s<=!w3L2BLuSm delta 20 acmdnaw4I6jG%qg~0}#|+libLy!w3L290bAu diff --git a/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/errors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/errors.cpython-312.pyc index 7f7c94b71b5082095dd34ee4ed0838eae8a3bab8..f50c16318ca759eb2acce9ece33e60f9f3685bb2 100644 GIT binary patch delta 20 acmaFJ`H++QG%qg~0}wooP}sj diff --git a/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/extension.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/extension.cpython-312.pyc index 52aa55830eadf6c0d76866437ea39885afa93a23..651ddcb9bf3e705c0572a803f0726c122ac3ba0d 100644 GIT binary patch delta 22 ccmZpf!_+c|iTgA!FBbz4JdIG;$o;by07?r6-T(jq delta 22 ccmZpf!_+c|iTgA!FBbz4)LxU^$o;by07?V~?EnA( diff --git a/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/util.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/util.cpython-312.pyc index b46c50ada82db5c461ee4d29cb075543b585e120..9006d7e61129deff8b6a0f88777fff92ca4776dc 100644 GIT binary patch delta 20 acmZ3(wT6rPG%qg~0}wooP}s<=$O-^8j|8Rw delta 20 acmZ3(wT6rPG%qg~0}#|+libLy$O-^8hy=9& diff --git a/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/wrappers.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/slowapi/__pycache__/wrappers.cpython-312.pyc index b6a30d6310d87593f0df2d79176b39e6d63022d4..bb9bd85c26eeeb440f6361219c15ed945edcfc4b 100644 GIT binary patch delta 20 acmcbrc~z79G%qg~0}wooP}sF1 delta 20 acmcbrc~z79G%qg~0}#|+libLCN(2BwTLt|9 diff --git a/Backend/venv/lib/python3.12/site-packages/sniffio/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sniffio/__pycache__/__init__.cpython-312.pyc index 86e2147c073469d74702fcdde04385e8e0e772c9..c7c10d9af762190ff25d9186d709d3303c068a9d 100644 GIT binary patch delta 20 acmcb_e2JO+G%qg~0}wooP}s)28L)28C&ju?1 delta 20 acmaDI^*W0CG%qg~0}xbQlibLipbG#>vj#T+ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/__pycache__/schema.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/__pycache__/schema.cpython-312.pyc index b77a64bfdb534f64ef77d59cc48295ee9c411de6..c0e0daff1bdc158c7312fff65b7d931e43f2051a 100644 GIT binary patch delta 20 acmZ1}v{H!sG%qg~0}wooP}s;V#|Z#7I|Q)+ delta 20 acmZ1}v{H!sG%qg~0}xbQlibKH#|Z#79|XMs diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/__pycache__/types.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/__pycache__/types.cpython-312.pyc index 8e640b6ff75210d9afdc54e0a64efab6c08b8928..d7b6386700175b15a8600296b4b5bc37f374ffa8 100644 GIT binary patch delta 20 acmew=_*IbmG%qg~0}wooP}s=*iUR;b_68CF delta 20 acmew=_*IbmG%qg~0}xbQlibMtiUR;b+6Eo~ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/connectors/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/connectors/__pycache__/__init__.cpython-312.pyc index 179d082c2fdbc351e7bc13add8ab08d55139d1c8..fc86b14d282ba9eee6f6a2eb8506ce74b0184eb0 100644 GIT binary patch delta 20 acmcc1a+ihsG%qg~0}wooP}s;F!~_65Tm>os delta 20 acmcc1a+ihsG%qg~0}xbQlibK1!~_65Km|4c diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/connectors/__pycache__/pyodbc.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/connectors/__pycache__/pyodbc.cpython-312.pyc index fbc968fb9e0ab771c88889163f8edf07bff97ad0..1b5c088af489ea2c47e0f2f89a2807c6155a40be 100644 GIT binary patch delta 20 acmZ4Hxy+OMG%qg~0}wooP}s;lTLl0mE&l?6Be delta 20 acmZ3-zmA{#G%qg~0}xbQlibL?m>mE&c?CoO diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/aiomysql.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/aiomysql.cpython-312.pyc index 0000f01a4322ccca879fed4fc15b45d0cd98c1c4..a0ad56806e57aab7580aeb1e034a0a56f467b782 100644 GIT binary patch delta 20 acmdm3x3P}H;RV+K delta 20 acmdm3x3P}H#RcO4 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/asyncmy.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/asyncmy.cpython-312.pyc index c4cdd563f381f7d50992c92ebb3b3a38e726392c..826a783467f7679663af70dc78c794751fcc099f 100644 GIT binary patch delta 22 ccmbQ<#5lc)k^3|+FBbz4JdIG;$j##j07lgXl>h($ delta 22 ccmbQ<#5lc)k^3|+FBbz4R9%zY$j##j07kh5p#T5? diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/base.cpython-312.pyc index e1c5dd4e9b57641cb409741286896b526cc0d041..59dd73839f07237cbf7fb1db165fb5fb37257804 100644 GIT binary patch delta 28 icmcb$hU3;64(`*uyj%=G@H9f9k-L?faVs~IzZd|7$_Kar delta 28 icmcb$hU3;64(`*uyj%=GP<2hRk-L?faVs~IzZd|7_6NiO diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/cymysql.cpython-312.pyc index c243473d7ea022d5503e83ff802e70210eec5926..55a421f1343c102ba9237b40c1171d27a2a1f066 100644 GIT binary patch delta 20 acmX>jaYlmsG%qg~0}wooP}s=r$O8a8js+jaYlmsG%qg~0}xbQlibMd$O8a8as@R2 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/dml.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/dml.cpython-312.pyc index a82d245a7c8fd82850dca29a8f0d9f7cabbdc3ea..6643f6b7ec94f948b94551a101ed21dad5e7476d 100644 GIT binary patch delta 20 acmbR1FxP?mG%qg~0}wooP}s;VqyPXq>IDD* delta 20 acmbR1FxP?mG%qg~0}xbQlibKHqyPXq&IJqr diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/enumerated.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/enumerated.cpython-312.pyc index c6527b58327b18df710514716a188d1377108f5c..c3410ad0563ad86f7f143c343abf59904eda31a2 100644 GIT binary patch delta 20 acmccaf8C$^G%qg~0}wooP}sHz>eBn5o{ delta 20 acmZpPZHeVR&CAQh00dRnBsX$b>Hz>e2nC4% diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/mysqlconnector.cpython-312.pyc index 40e4bc4bbcdc8e236f7989052766fe1a9e0bb117..6d23c1cbc108f9c8db7c503a5cc15d727aa8deae 100644 GIT binary patch delta 20 acmZp3Z*%89&CAQh00d7X6gF~KD+2&IQ3Xr@ delta 20 acmZp3Z*%89&CAQh00dRnBsX$bD+2&IH3e7z diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/mysqldb.cpython-312.pyc index e07020f05ee61deb675baf82bf1d86d3e9aec7f1..9a948292b492b35f6e8df6fa58267ae1789177dd 100644 GIT binary patch delta 20 acmdlSw>ggcG%qg~0}wooP}s<=p$`B;p#_Zq delta 20 acmdlSw>ggcG%qg~0}xbQlibLyp$`B;g$0=a diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/pymysql.cpython-312.pyc index 7d49ca5cc33910a2d388666e3786cd7fc9ff2878..71641cc1f4028125f9e6231bc9828f3cfb70427d 100644 GIT binary patch delta 20 acmbQGIZKoKG%qg~0}wooP}s=bF9HBKDg`|N delta 20 acmbQGIZKoKG%qg~0}xbQlibMNF9HBK4h2a7 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/pyodbc.cpython-312.pyc index 5dff7289f2158595e6e2433041b1d079dbcf2c47..87fbe3f329aa9be7dafc97fc98fc32bdc3cefeb8 100644 GIT binary patch delta 20 acmbQHIZc!MG%qg~0}wooP}s=bEdl^HiUlzM delta 20 acmbQHIZc!MG%qg~0}xbQlibMNEdl^HZUsF6 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/reflection.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/reflection.cpython-312.pyc index 1371ef76e0b838dfec2ae11311b5550473e5697b..688f8caa87ca5994d3e8a668fff45928737a0213 100644 GIT binary patch delta 22 ccmeC#&DgV>k^3|+FBbz4JdIG;$lVwV08YmSf&c&j delta 22 ccmeC#&DgV>k^3|+FBbz4R9%zY$lVwV08Xn0jsO4v diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/reserved_words.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/reserved_words.cpython-312.pyc index ce5518cd1f1952cb4883b1130301ded1bed7c8c9..06618b9f8dad080eda2ea3a5030bc90e27d1bf39 100644 GIT binary patch delta 20 acmbQGG)sy5G%qg~0}wooP}s=LF9-lOD+H_n delta 20 acmbQGG)sy5G%qg~0}xbQlibM7F9-lO4+OXX diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/types.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/mysql/__pycache__/types.cpython-312.pyc index c50b86881458a6dd89235de6d27532d8ffe62c03..a9982b2a40fe08a42688e63ccb811ee32d1f5d47 100644 GIT binary patch delta 22 ccmX@~mhsSAM()$Ryj%=G@H9eUBlq?)0AG*?p#T5? delta 22 ccmX@~mhsSAM()$Ryj%=GP<2gmBlq?)0AF+mtpET3 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/__init__.cpython-312.pyc index 414e4b9ee685014eb3d1c8952da3f84d7923ee70..21727b7df91000aa731f638f9b5bbe1f6ed0ddf3 100644 GIT binary patch delta 20 acmeB`>XqU?&CAQh00d7X6gF}*@d5xc{{(RW delta 20 acmeB`>XqU?&CAQh00dRnBsX$1@d5xc;{<&G diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/_psycopg_common.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/_psycopg_common.cpython-312.pyc index 2bf086dbddf861515b67470abf7eb5540dbcc742..f99bf7f346d43f75da5a7d5cb42b0f1aa3ea2679 100644 GIT binary patch delta 20 acmbPhGuMXuG%qg~0}wooP}s;VBnJRGSOoR} delta 20 acmbPhGuMXuG%qg~0}xbQlibKHBnJRGJOu&( diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/array.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/array.cpython-312.pyc index 75a71236d6892f1012c979066d3d124b7be0eee1..abe336da0b892700df1b21f789f0715c212694aa 100644 GIT binary patch delta 22 ccmX@p$atoak^3|+FBbz4JdIG;$bHZO08o?$u>b%7 delta 22 ccmX@p$atoak^3|+FBbz4R9%zY$bHZO08n@ay#N3J diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/asyncpg.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/asyncpg.cpython-312.pyc index e82843239688c42d1c48aefe9071861e8de6158b..d9f850ec111947c2c0162dac8910fb80e7a02af7 100644 GIT binary patch delta 22 ccmbQei+T1gX71Cxyj%=G@H9eUBe%d^08sA+u>b%7 delta 22 ccmbQei+T1gX71Cxyj%=GP<2gmBe%d^08rBgy#N3J diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/base.cpython-312.pyc index d79c9825c39e2c83c66236c5d7fe63bd6291407d..9e8b68ce9a828370c3025601b53158e5bcfa4c85 100644 GIT binary patch delta 31 lcmcb$falf%9`4h;yj%=G@H9f9k-L?fv6Y)?D>t*h005gS2sHoz delta 31 lcmcb$falf%9`4h;yj%=GP<2hRk-L?fv6Y)?D>t*h005hN2tfb< diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/dml.cpython-312.pyc index 28ca7b7245711592f8cf40e6f29e9d118fff31c8..33cbb614ba0b9a5c2c77808f182b5496aa8244f3 100644 GIT binary patch delta 20 acmaDD^)QP2G%qg~0}wooP}s;FrV9W`KL!l| delta 20 acmaDD^)QP2G%qg~0}xbQlibK1rV9W`BL*1& diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/ext.cpython-312.pyc index 3237ea78a11dc19ec377b690a09eb848365a7168..ec06bd933d0112a79b967ff4876ea6d781a35269 100644 GIT binary patch delta 22 ccmdlsjd9yFM()$Ryj%=G@H9eUBe%9U08bzWBme*a delta 22 ccmdlsjd9yFM()$Ryj%=GP<2gmBe%9U08a!4FaQ7m diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/hstore.cpython-312.pyc index 237fc7ccf1b6ffd48c1441fd58704486d6f188e1..c1cdec7bbb024cd1a12ffd24c9e24ee1f9a087aa 100644 GIT binary patch delta 20 acmeCE=&0a6&CAQh00d7X6gG1IwFUq|od!$* delta 20 acmeCE=&0a6&CAQh00dRnBsX&ZwFUq|fd*Ir diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/json.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/json.cpython-312.pyc index 88d40f95eecc7e18ddaf89520c33e0a891cf2d61..4e4040d3fdbb1c9e5253dc168d70fd8c8a0a90c4 100644 GIT binary patch delta 20 acmeyF`7@LIG%qg~0}wooP}s=*&IABZA_n>Z delta 20 acmeyF`7@LIG%qg~0}xbQlibMt&IABZ1_uTJ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/named_types.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/named_types.cpython-312.pyc index a1d680e33e5ecbc7d5ecb7b4a7f0016e02787422..d58ccdf8ec0f6511e8fcbb35bc0c1602df8c6576 100644 GIT binary patch delta 22 ccmZoz$Jnrrk^3|+FBbz4JdIG;$o(}8087CJy#N3J delta 22 ccmZoz$Jnrrk^3|+FBbz4R9%zY$o(}8086C?$p8QV diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/operators.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/operators.cpython-312.pyc index 410cf9009e11aeb2978f35bd6b8cd34c9a6c951d..12f75f8f7698dbfe7660e5071006f992b47a3007 100644 GIT binary patch delta 27 hcmew+@J)dGG%qg~0}wooP}sqA0A^JOtpET3 delta 22 ccmezTit+O+M()$Ryj%=GP<2gmBX>qA0A@J{xc~qF diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/pg_catalog.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/pg_catalog.cpython-312.pyc index 610e5b6cce9299dab13ffa5329faee86c5ab194e..8e6c85a1f0306118ef038a557346776671b3cea0 100644 GIT binary patch delta 20 acmaD9_$ZM3G%qg~0}wooP}s}6~9tL>; delta 20 acmaD9_$ZM3G%qg~0}xbQlibLCT>}6~0tSTu diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg.cpython-312.pyc index 012ec032c667d42f2cca84fe1f25b2626142cf58..8e22fc2c5b9a906ed28b2791ac4420f553f2d7d8 100644 GIT binary patch delta 22 ccmcaOgX!W7ChpU`yj%=G@H9eUBez=*090KDyZ`_I delta 22 ccmcaOgX!W7ChpU`yj%=GP<2gmBez=*08~K+$N&HU diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg2.cpython-312.pyc index a6bc4c8b8202287f57de1bbf7eb617fb58da0189..daf14422c02185d418096edb1baea9bbe44ad3f0 100644 GIT binary patch delta 22 ccmaDmjp^+)ChpU`yj%=G@H9eUBX?3a09e8Y3jhEB delta 22 ccmaDmjp^+)ChpU`yj%=GP<2gmBX?3a09d967XSbN diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/psycopg2cffi.cpython-312.pyc index 11413ca1baa9e6276d0a01692d0809d5a6d026c2..4a14ae8cafc2313e918d353f935a3c82b2a8003e 100644 GIT binary patch delta 20 acmew>@K=EQG%qg~0}wooP}s;_!~p<95(TIL delta 20 acmew>@K=EQG%qg~0}xbQlibK%!~p<8_64*6 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/ranges.cpython-312.pyc index e9994058420f6ce5a926f47d013aecba1ad3a968..3920e1195721224e9b1e7ec8b13b19e8f0c5b04b 100644 GIT binary patch delta 22 ccmaF#jq%YpM()$Ryj%=G@H9eUBX@W;0A*AMm;e9( delta 22 ccmaF#jq%YpM()$Ryj%=GP<2gmBX@W;0A)A_qyPW_ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/types.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/dialects/postgresql/__pycache__/types.cpython-312.pyc index 2c7156649b873ef785f797e4c18015328ffc0415..f35e1613428d08447f77508efffb34321d96f1a5 100644 GIT binary patch delta 20 acmZ1Go diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/engine/__pycache__/default.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/engine/__pycache__/default.cpython-312.pyc index 5942f5b6b2fc2e60a427c622b2b27313bf357e4b..ac20e3fb674150d260044b864b63d35e85eeaf68 100644 GIT binary patch delta 25 fcmX@Ml=awBR_@chyj%=G@H9f9k$WpQPx# diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/engine/__pycache__/interfaces.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/engine/__pycache__/interfaces.cpython-312.pyc index 21d547d6964568fd33f391d401138a02925baec6..675d5d866b805f2428b6cdb6b94e1dfc9f2f11ec 100644 GIT binary patch delta 25 fcmdnh!M3Y|jr%k&FBbz4JdIFj~WJ delta 24 ecmeC4#nwHGjr%k&FBbz4R9%y7#`HG%qg~0}wooP}s#`HG%qg~0}xbQlibK{E(HKS;00X( diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/attributes.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/attributes.cpython-312.pyc index 95777f792282baab02be5f2bfe42fb316931baa6..7a82000dba0863b84566f5c5eba9849ca14692a1 100644 GIT binary patch delta 25 fcmX@p&32}njr%k&FBbz4JdIFj%JQp~h5IxwFBbz4JdIFjZP5pu delta 25 fcmey>%JQp~h5IxwFBbz4R9%y7ZP^E? diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/decl_base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/decl_base.cpython-312.pyc index 3638d73fd23b6e07e7aafbe65f7b1e27325013e3..2fa48d8606f7c8db12d4987c10f3a52239c91fb8 100644 GIT binary patch delta 25 fcmZ2Kg=PH|7Vgu$yj%=G@H9f9k$WpQqY4)QVIc-# delta 25 fcmZ2Kg=PH|7Vgu$yj%=GP<2hRk$WpQqY4)QVJQY} diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/dependency.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/dependency.cpython-312.pyc index 4ff77d3f7aca669e3ac9377875b2114cf065d0b9..05c9a0b54f14404b8ef1684fb3829dd0428641df 100644 GIT binary patch delta 22 ccmcb9iRti3p?s delta 28 icmeyrn&ba!4(`*uyj%=GP<2hRk-L?faVs~|7f}F>wFs~P diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/exc.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/exc.cpython-312.pyc index 2c087a31fb0b0543bdddd62cbc40c0b65fdf8df3..9e008261804fac223fb73fa13b71a4930a4bd593 100644 GIT binary patch delta 20 acmezC^Vf&_G%qg~0}wooP}s;_qy_*>pawnw delta 20 acmezC^Vf&_G%qg~0}xbQlibK%qy_*>ga%3g diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/identity.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/identity.cpython-312.pyc index 62f86eb3dff079ef4bf60a560754a1beac1fd4f7..48eac4c6e5cbe50605d97b88c1c9c3a257bbd064 100644 GIT binary patch delta 20 acmcbabTf(jG%qg~0}wooP}s=rX9xgEBL)co delta 20 acmcbabTf(jG%qg~0}xbQlibMdX9xgE2L=@Y diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/instrumentation.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/instrumentation.cpython-312.pyc index a73f349c88a70c8d31568106205b09b6d54118cd..4290fa7ed941ec07aaa3b4e8fb2bd34c975e9f84 100644 GIT binary patch delta 22 ccmezOnepFeM()$Ryj%=G@H9eUBlqV@0BVs4WB>pF delta 22 ccmezOnepFeM()$Ryj%=GP<2gmBlqV@0BUszZ~y=R diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/interfaces.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/interfaces.cpython-312.pyc index 171298f27b29d7761a8c6b4cf698ce3d3f107717..b08156ddfaeafce6885b1404cba7a042a1420660 100644 GIT binary patch delta 22 ccmZ3on0d)!X71Cxyj%=G@H9eUBlpaU08ixy5&!@I delta 22 ccmZ3on0d)!X71Cxyj%=GP<2gmBlpaU08hyW9smFU diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/loading.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/loading.cpython-312.pyc index 402244de2270b0b0158d00f1f9c6007a8d128993..fd57fb5e35a42017713cdc5d54b0cec3db7882c7 100644 GIT binary patch delta 22 ccmX^8n(6dwChpU`yj%=G@H9eUBlm%=0AVQy`2YX_ delta 22 ccmX^8n(6dwChpU`yj%=GP<2gmBlm%=0AURX1poj5 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/mapped_collection.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/mapped_collection.cpython-312.pyc index 832c78b9d9321da2c82fda730bde9b772e8b67fc..fb04eb191bb8ad1f738a34200844006f25b1d44d 100644 GIT binary patch delta 22 ccmbQansMf8M()$Ryj%=G@H9eUBX?gY08V}efdBvi delta 22 ccmbQansMf8M()$Ryj%=GP<2gmBX?gY08U~CjQ{`u diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/mapper.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/mapper.cpython-312.pyc index 53007a23a36d1cec8ebbc6520a9e0c27b1097140..958476e07d552258dc3d5302ee7acf068f256c2a 100644 GIT binary patch delta 28 icmZoz%+;`%i~BS$FBbz4JdIFjVIuQVIh6k4b delta 28 icmZoz%+;`%i~BS$FBbz4R9%y7VIuQVIvInC8 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/path_registry.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/path_registry.cpython-312.pyc index fca7279d7670d45f4623024d05a65dc12319d8e0..57ff2e85471f15e0b93da441370f4bded0886b7f 100644 GIT binary patch delta 22 ccmaF$mGRYAM()$Ryj%=G@H9eUBlrC(0B3{yj%=G@H9f9k$WpQW9TOUdHV>0 delta 25 fcmaFxg#E!2cJ9->yj%=GP<2hRk$WpQW9TOUdIJcK diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/relationships.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/relationships.cpython-312.pyc index 38fbc9eb6e83315438327d878a2162f206992c11..5af4483a574206a9dc3063e155ab6e8f2a8dcc62 100644 GIT binary patch delta 25 fcmdn~j(z((cJ9->yj%=G@H9f9k$WpQqt15#bLj{m delta 25 fcmdn~j(z((cJ9->yj%=GP<2hRk$WpQqt15#bMXi) diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/scoping.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/scoping.cpython-312.pyc index 158027e65146d3b33626df5bae6266730ddfdd76..ad5b9b528db12d9ddd2b03a0b5ea5dabce8da52e 100644 GIT binary patch delta 25 fcmey=!}_U*mHRX=FBbz4JdIFjU2uT0{ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/state.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/state.cpython-312.pyc index 1d68eae05b87904c6dc2c3f034e075ab001b5ca5..ba8c4ccf3b415441000583c91bbd4c5277422ffa 100644 GIT binary patch delta 22 ccmX^0fa%l&ChpU`yj%=G@H9eUBe(qq0A5T7TL1t6 delta 22 ccmX^0fa%l&ChpU`yj%=GP<2gmBe(qq0A4T$X8-^I diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/state_changes.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/state_changes.cpython-312.pyc index 42f4972e15cb9551a5080944abb73a615acdd375..b55eeb09591c1c357e51ec9c1d93a4b015ef3f68 100644 GIT binary patch delta 20 acmexi_QQ<(G%qg~0}wooP}sHty5Byj%=G@H9f9k$WpQHty5Byj%=GP<2hRk$WpQ&gZ1DHR_@chyj%=G@H9f9k$WpQqnQr?WwZw4 delta 25 fcmX>&gZ1DHR_@chyj%=GP<2hRk$WpQqnQr?WxNLO diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/writeonly.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/orm/__pycache__/writeonly.cpython-312.pyc index 55026c3d495dbd578a8b2e46242b2623c1b9b8e8..36a5e20dd6e9bad6bad1762795417c2394c74aad 100644 GIT binary patch delta 22 ccmZ4Wka5*RM()$Ryj%=G@H9eUBlr9Q09mdFI{*Lx delta 22 ccmZ4Wka5*RM()$Ryj%=GP<2gmBlr9Q09ld;M*si- diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/__init__.cpython-312.pyc index 6ef71063d021d02a859ae3e0f8670d9a6752abe5..1de55a9f869585ac25638de1f5dba13b9a61c0dd 100644 GIT binary patch delta 20 acmey!{gIpdG%qg~0}wooP}s=*j1>SudjSuUj_pJ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/base.cpython-312.pyc index 37481bcbd2da452b8c116ec42d34e28ac54d342a..e61ba4b456266faabafe30ba0bfa8ae08b4cf073 100644 GIT binary patch delta 22 ccmX@Ro%!r`X71Cxyj%=G@H9eUBln@(09oD#zW@LL delta 22 ccmX@Ro%!r`X71Cxyj%=GP<2gmBln@(09nEZ%K!iX diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/events.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/events.cpython-312.pyc index f03165005201cfaf7878477e4dbb3a3a8f270787..e1951a5ffedd97634ab7ad23a203c1786de23295 100644 GIT binary patch delta 20 acmX?>e=MK-G%qg~0}wooP}s=5+Z+H%1qN^c delta 20 acmX?>e=MK-G%qg~0}xbQlibL?+Z+H$=>~iN diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/impl.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/pool/__pycache__/impl.cpython-312.pyc index 8bad146d9d2c41307c9b94313db08f6e45a3b845..509a41b036108e8a8facea0f6c403af9ef79db41 100644 GIT binary patch delta 22 ccmZoV$k=p{k^3|+FBbz4JdIG;$X%WQ08R!5a{vGU delta 22 ccmZoV$k=p{k^3|+FBbz4R9%zY$X%WQ08Q!!e*gdg diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/__init__.cpython-312.pyc index 362e4183324f03ab15779fce1ec55a3272a58532..1ee5ae5c6bb830a6e55eef636100257e4b52bd18 100644 GIT binary patch delta 20 acmcbna!rN%G%qg~0}wooP}s=rEd&5R)CFY# delta 20 acmcbna!rN%G%qg~0}xbQlibMdEd&5RxCLY!3Amn delta 20 acmZouXj9-m&CAQh00dRnBsX&Z<_7>Yr3H2X diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/_elements_constructors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/_elements_constructors.cpython-312.pyc index d951e9d0b7b94e1b8ff46eb640228db87814869f..97dd5cdb50edea503939b4b2694a7e393dad9a0d 100644 GIT binary patch delta 24 ecmeBbWa(;T;XcjF%f$c$Pa_l>xu{SI delta 24 ecmeBbWa(;T;XcjF%f$c$Ro5gNxuz>% delta 22 ccmZo)&e*=3k^3|+FBbz4R9%zY$Xyc*07||FO#lD@ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/_typing.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/_typing.cpython-312.pyc index 890bc85c2cf455bfa9a74e217811af8b08165a1f..6666fe95f320f9c611101683681aa0ce8b315eb9 100644 GIT binary patch delta 20 acmZqAY0u$4&CAQh00d7X6gG1IF$DlWzXmG+ delta 20 acmZqAY0u$4&CAQh00dRnBsX&ZF$DlWqXsts diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/annotation.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/annotation.cpython-312.pyc index ba183996b6adf2d8a13cf77cfd913b43bc4a34b0..ababa4971e8feaf7bfa64c695e3ac3970d1911db 100644 GIT binary patch delta 22 ccmX@VjPd+3M()$Ryj%=G@H9eUBezR109DHdmjD0& delta 22 ccmX@VjPd+3M()$Ryj%=GP<2gmBezR109CIBqW}N^ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/base.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/base.cpython-312.pyc index ebaebe3592eaa0709f4ea6cf240c2547be9cf39d..81050f3b99560cbeeabf8a9c56cc2a35807cc95a 100644 GIT binary patch delta 25 fcmaF$ll9e4R_@chyj%=G@H9f9k$WpQNr5C8xG diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/coercions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/coercions.cpython-312.pyc index 26700bcb98d965aef07d62794cd7f785417e52dd..8f1e311451788defc002ffe6ddce4f39189b16b5 100644 GIT binary patch delta 22 ccmbRCn`zo_ChpU`yj%=G@H9eUBX{>+09v{Sf&c&j delta 22 ccmbRCn`zo_ChpU`yj%=GP<2gmBX{>+09u|0jsO4v diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/compiler.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/compiler.cpython-312.pyc index ad43add6180d999fb9cbc405c55c2fbea0a79e12..a2d716a1265f10398cca5e403313420095ef6e2c 100644 GIT binary patch delta 41 ucmcb&S>WDg0q)bhyj%=G@H9eUBX^H9WDg0q)bhyj%=GP<2gmBX^H9keW7 diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/crud.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/crud.cpython-312.pyc index 5581b7a409758e498e1a364e2da2a0ac8a090d6b..e3a89ff16820091ccedd0ec9617a14980a545244 100644 GIT binary patch delta 22 ccmZ4Vm}${tChpU`yj%=G@H9eUBlq-;09gtLY5)KL delta 22 ccmZ4Vm}${tChpU`yj%=GP<2gmBlq-;09ft^b^rhX diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/ddl.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/ddl.cpython-312.pyc index b6a846c2a48f0b8e978adae2be5b9d7f3329034b..e334c0c47ebfd4e1240d8b563e63d2aa05759020 100644 GIT binary patch delta 22 ccmX@GjrqVfX71Cxyj%=G@H9eUBe&^o09J?x761SM delta 22 ccmX@GjrqVfX71Cxyj%=GP<2gmBe&^o09I@VA^-pY diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/default_comparator.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/default_comparator.cpython-312.pyc index 5b3747a672c96393857dbbd5113a0190466f999f..608341dd91ae2711b3214eeb2f63731eaba4ee10 100644 GIT binary patch delta 22 ccmbO`gK_Q*M()$Ryj%=G@H9eUBe#$b082at-T(jq delta 22 ccmbO`gK_Q*M()$Ryj%=GP<2gmBe#$b081bR>Hq)$ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/dml.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/dml.cpython-312.pyc index d05ec93e86fb0660c283abb9f1883035dd5c2f27..066f2c321305e9dc752de2bb7e39213dc8631265 100644 GIT binary patch delta 25 fcmX@Mm*v=A7Vgu$yj%=G@H9f9k$WpQ<8Ct*fBmkRc2r>Ww delta 31 lcmX@LiRaWN9`4h;yj%=GP<2hRk-L?fv6Y)?D>t*fBmkSX2tEJ+ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/events.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/events.cpython-312.pyc index 9adbfff050904e145c40a52d8fcbbb334d35ea0c..1c0d0593b5847fde88ff346d5d9352fc534ef9d0 100644 GIT binary patch delta 22 ccmbO_jdAKUM()$Ryj%=G@H9eUBR7{f07;bv!2kdN delta 22 ccmbO_jdAKUM()$Ryj%=GP<2gmBR7{f07-cT%>V!Z diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/expression.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/expression.cpython-312.pyc index 386876154f8a505d12f73152a7e9866fa7eb1a2a..b37ac5f49ff0c205bc91e1e7e49e8e461ceaf4dd 100644 GIT binary patch delta 20 acmZ3Yu|$LWG%qg~0}wooP}s;VDFOgEmIT=V delta 20 acmZ3Yu|$LWG%qg~0}xbQlibKHDFOgEdIaSF diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/functions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/functions.cpython-312.pyc index cafce911518c011153121945beac74d292396b19..dd0b746c63ac35d931a65e0b66abbcdbcd58284b 100644 GIT binary patch delta 25 fcmaDeo#oAR7Vgu$yj%=G@H9f9k$WpQ<3nx$ZdM1M delta 25 fcmaDeo#oAR7Vgu$yj%=GP<2hRk$WpQ<3nx$Ze9ng diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/lambdas.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/lambdas.cpython-312.pyc index 27973c43f3b2316a4c4d576ce072b67f2fa25f4c..73b5a12c4f7ac1b88c4927530e1fd78e56a6d8ce 100644 GIT binary patch delta 22 ccmZ3omU+oqX71Cxyj%=G@H9eUBlpZ}08wxUD*ylh delta 22 ccmZ3omU+oqX71Cxyj%=GP<2gmBlpZ}08vy2Hvj+t diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/naming.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/naming.cpython-312.pyc index a0ea859a4b1c7af7f0d16dd357684fb8afff8749..9b476e0d8010525f743d076c577932f1219c5e68 100644 GIT binary patch delta 20 acmZ4NwAhLJG%qg~0}wooP}s;Vp$GsxBLx=# delta 20 acmZ4NwAhLJG%qg~0}xbQlibKHp$Gsx2L&Sl diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/operators.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/operators.cpython-312.pyc index 409efdc586a6e365c94e7d1ba0cac537d0b2d122..0888880dd0c59c1f2e4f4fe212d3216da12cd2df 100644 GIT binary patch delta 25 fcmeydjrGSiR_@chyj%=G@H9f9k$WpQV{SA6b&vt*vP5`O>2~7Y1 delta 31 lcmX^9iSPI)KJL@Jyj%=GP<2hRk-L?fv6Y)?D>t*vP5`P+30VLD diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/selectable.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/selectable.cpython-312.pyc index a8e24dec555a5a96544a98f9a5c79fe83fe585fc..0d84d0ab62ebb683e2c5409dbb71b4e9919ca8eb 100644 GIT binary patch delta 31 lcmex!p8wBze(uw}yj%=G@H9f9k-L?fv6Y)?D>w7U=K!!c3RVCB delta 31 lcmex!p8wBze(uw}yj%=GP<2hRk-L?fv6Y)?D>w7U=K!#X3Ss~N diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/sqltypes.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/sqltypes.cpython-312.pyc index 995076960b7e5e0177cb35dce193564c22620600..635fa7796f2345e01b539fdd5e3195414943b6be 100644 GIT binary patch delta 28 icmbQ)%Q>@`llwF;FBbz4JdIFj@`llwF;FBbz4R9%y7ygZ0P^R_@chyj%=G@H9f9k$WpQqoof3W=96> delta 25 fcmX>ygZ0P^R_@chyj%=GP<2hRk$WpQqoof3W={tA diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/util.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/util.cpython-312.pyc index c964becd8130a44fcd317bbf8e111a8674d0d0bc..63b37d1fde3e897b1e1a83be05b948250c7cdd2f 100644 GIT binary patch delta 22 ccmeyig8ADDX71Cxyj%=G@H9eUBX{-{09|nhl>h($ delta 22 ccmeyig8ADDX71Cxyj%=GP<2gmBX{-{09{oFp#T5? diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/visitors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/sql/__pycache__/visitors.cpython-312.pyc index 45bd636fac6f8926fdfda67c1901a9d2bef9dc4a..dbf1f8d6235753f9b5aca9c4ff728875ab7cda9d 100644 GIT binary patch delta 22 ccmbO=lWEpWChpU`yj%=G@H9eUBX@rf08B>)nE(I) delta 22 ccmbO=lWEpWChpU`yj%=GP<2gmBX@rf08A?er2qf` diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/__init__.cpython-312.pyc index 8d40d24004ad1f77edbd41d7594a99e00f035aa8..9586dbf6369b8857790272eb6872832bd2661cf1 100644 GIT binary patch delta 20 acmeCw>D1vq&CAQh00d7X6gG1I69oV^?*)+n delta 20 acmeCw>D1vq&CAQh00dRnBsX&Z69oV^(*>OX diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/_collections.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/_collections.cpython-312.pyc index 777028530d1143758fcad275da7108130b85dd67..629e708a246333c55f20e9ff9c661ce4aad8dab2 100644 GIT binary patch delta 22 ccmezUjq&$4M()$Ryj%=G@H9eUBX>bH0BMH@;{X5v delta 22 ccmezUjq&$4M()$Ryj%=GP<2gmBX>bH0BLIn?*IS* diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/_concurrency_py3k.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/_concurrency_py3k.cpython-312.pyc index d7d84b40c8e76e89e13c79ae8d20a6d3283072f8..a2bdb2f0d609a36ab3aff088e2ba04fe24ce544e 100644 GIT binary patch delta 20 acmZ4Lw$zRLG%qg~0}wooP}s;Vr3?T)1qCMn delta 20 acmZ4Lw$zRLG%qg~0}xbQlibKHr3?T(=>; delta 20 acmZ21uvmcmG%qg~0}xbQlibKH!2tj?<^-ky diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/deprecations.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/deprecations.cpython-312.pyc index 53c9568b35508c575bf73e14963cf7830c7468bb..887081bcc9596216cd673710512a03a5d43147ff 100644 GIT binary patch delta 20 acmdm!wI_@FG%qg~0}wooP}s diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/preloaded.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/preloaded.cpython-312.pyc index 4cffaba9b075743c4657c8776aa4097653836dd5..ea90949f1b5603b3e1d0e6641dc755709feb27b5 100644 GIT binary patch delta 20 acmeCt>(S#r&CAQh00d7X6gF}*iUR;Ou>_z1 delta 20 acmeCt>(S#r&CAQh00dRnBsX$1iUR;Ol?1E+ diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/queue.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/queue.cpython-312.pyc index ff913145a38cceba1ed22c96ccda82b32d177c09..a2ce8d1134c5586b1795108da1860eae0800ec3f 100644 GIT binary patch delta 20 acmdm3w6Tc$G%qg~0}wooP}s<=W(fdAD+Rd# delta 20 acmdm3w6Tc$G%qg~0}xbQlibLyW(fdA4+X^l diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/topological.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/topological.cpython-312.pyc index f259a056bb0cf0b278ecbcaefcc77a2292596d99..9bc44435900c7f82ab48264a05a3a5c5586bb969 100644 GIT binary patch delta 20 acmaDQ_ezfYG%qg~0}wooP}s;F&kq1X83mF6 delta 20 acmaDQ_ezfYG%qg~0}xbQlibK1&kq1W{RN%? diff --git a/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/typing.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/sqlalchemy/util/__pycache__/typing.cpython-312.pyc index 653cf8b12e1145a486063affa39418ae1a844efd..2c63bef4a4cfd5bdc6142b3f4c1d9812eab325bf 100644 GIT binary patch delta 22 ccmZ2Jg>m^5M()$Ryj%=G@H9eUBe#qf08C5;@&Et; delta 22 ccmZ2Jg>m^5M()$Ryj%=GP<2gmBe#qf08B6i{r~^~ diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/__init__.cpython-312.pyc index d31dc3f2a0a8f9e0265bb2b04184ed2c69eb8177..6cfaf23d7d0187bfce777f85c8c0eaa3a8537a62 100644 GIT binary patch delta 19 Zcmcc3c$<;?G%qg~0}wooP?*Sl0RT3l1$+Pi delta 19 Zcmcc3c$<;?G%qg~0}#|)lbpzX0RT3J1&ROw diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/_compat.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/_compat.cpython-312.pyc index d6095d0e07a716501e2ce18293f63fd53cf0b249..3ebf80beb4114077d559a833c58a046a22416f16 100644 GIT binary patch delta 20 acmZ3;zL1^!G%qg~0}wooP}s;ljTrzmX$1WM delta 20 acmZ3;zL1^!G%qg~0}#|)libKXjTrzmTLlXM diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/_utils.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/_utils.cpython-312.pyc index 13fba2eff1e79ec1823e7296a38ce93cac1f15c1..3cd91596c82fa24af311261d1c8db97b9941987a 100644 GIT binary patch delta 20 acmdm?xI>ZqG%qg~0}wooP}s=5RsaAywgrO# delta 20 acmdm?xI>ZqG%qg~0}#|)libL?RsaAys0EP# diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/applications.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/applications.cpython-312.pyc index 231e9e7029ed7c05e79ba03f2955480eeac88ea6..eda77be7c5459fd8ea11eaddd549de9f2fe44916 100644 GIT binary patch delta 20 acmZ3JvnGf8G%qg~0}wooP}s<=Xa)d7hy|Mf delta 20 acmZ3JvnGf8G%qg~0}#|)libLyXa)d7dIhNf diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/background.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/background.cpython-312.pyc index db63e0dbc6ff9e9b0461a36a4c8539dca0264b0a..752ccb7c46c22fe27b644d0b4e7d9760f8fca1fb 100644 GIT binary patch delta 20 acmZ1`zD%6^G%qg~0}wooP}s;ln;QT(c?C28 delta 20 acmZ1`zD%6^G%qg~0}#|)libKXn;QT(YXw38 diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/concurrency.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/concurrency.cpython-312.pyc index 5bdf21dee8f060d144777c21676a4e7f3aa4e38d..b403f43092daded938993aff3420f7c6fa35c5b2 100644 GIT binary patch delta 20 acmbO$Jy)9hG%qg~0}wooP}s;li5CDiqXi=X delta 20 acmbO$Jy)9hG%qg~0}#|)libKXi5CDil?5>X diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/config.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/config.cpython-312.pyc index fe7beacf6756dd2176f1fde520b0232f6b0eae99..6d60db7170537f0ed11ce60c16af6c0009b7ae38 100644 GIT binary patch delta 20 acmexo|IeQLG%qg~0}wooP}s=*SsnmN?FOI# delta 20 acmexo|IeQLG%qg~0}#|)libMtSsnmN-v+J# diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/convertors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/convertors.cpython-312.pyc index 4f6d49ba7f4b4bc9ef5a47d8b8b07e902bf2f3f6..7effcaf640fb21d6d8231d7b7165bfe7cb0f7802 100644 GIT binary patch delta 20 acmbQHHcgHDG%qg~0}wooP}s=LEerrQ9R#WX delta 20 acmbQHHcgHDG%qg~0}#|)libM7EerrQ4+OXX diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/datastructures.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/datastructures.cpython-312.pyc index 18dc7453ef8991cf95556c090a1700f44d15c1c7..e207851fe5e5ec5507162f8b0264ba246c6f4e6c 100644 GIT binary patch delta 22 ccmZ2`j%n>VChpU`yj%=G@H9eUBe&9W09K|3*8l(j delta 22 ccmZ2`j%n>VChpU`yj%=GP;*UkBe&9W09Kd=Z3ff; delta 20 acmcarf2*GRG%qg~0}#|)libLC-W~u>Uk2g; diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/responses.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/responses.cpython-312.pyc index d48da85ef7904bde667e7221dba30420d3d62400..dd6e9d8236239fc29828217d990a3b80fa96840e 100644 GIT binary patch delta 22 ccmew|mGR3|M()$Ryj%=G@H9eUBlk-$09s-PTL1t6 delta 22 ccmew|mGR3|M()$Ryj%=GP;*UkBlk-$09sTBX#fBK diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/routing.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/routing.cpython-312.pyc index d0be6627752772b3d58554f8ba42616b2896ef2b..6d78cedc9e5d500da089d05fabafdcc5242489ee 100644 GIT binary patch delta 22 ccmX@|oaxAOChpU`yj%=G@H9eUBlphD0AF4Q+5i9m delta 22 ccmX@|oaxAOChpU`yj%=GP;*UkBlphD0AElC=l}o! diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/staticfiles.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/__pycache__/staticfiles.cpython-312.pyc index c123c6e0bcaca245ef084a93aa568eeaf6cfc7d2..db09ce9fea9fae355293d01d24262a4180b7ef9b 100644 GIT binary patch delta 20 acmdlNwJ(bMG%qg~0}wooP}s; delta 20 acmbQ{In9&%G%qg~0}#|)libMNtpWf%3 diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/cors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/cors.cpython-312.pyc index 89aeedbc8e45f57b5d30affe05667ec3dbc3c65f..3f3cc1425987a985ee3c16619523cf4045d84663 100644 GIT binary patch delta 20 acmca^echV-G%qg~0}wooP}sLk1xL delta 20 acmca^echV-G%qg~0}#|)libLCMiu}>H3lyL diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/errors.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/errors.cpython-312.pyc index 46dc149a485d8e73dac019b2ede2314339ce1ae6..86c4e767a6f09a5fc2e8bce57d141c6241dadc54 100644 GIT binary patch delta 20 acmeD5>-6J3&CAQh00d7X6gG1IQv(1y$OYyA delta 20 acmeD5>-6J3&CAQh00cGHBsX&ZQv(1yx&`zA diff --git a/Backend/venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/exceptions.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/starlette/middleware/__pycache__/exceptions.cpython-312.pyc index 2471c4b465061c7f84024504836955ffd9624e8d..5c88689a69850a5f28574f7c67ee551d5daa2682 100644 GIT binary patch delta 20 acmbQIH&2iIG%qg~0}wooP}s;VEDiuTfdtk7 delta 20 acmbQIH&2iIG%qg~0}#|)libKHEDiuTa|Gl7 diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/__init__.cpython-312.pyc index 16b8aef989cae73abe0239c21445062174f530c5..41816b2b2ff3b86c41aba978a1291507a95a6a35 100644 GIT binary patch delta 22 ccmcc8&UB@niTgA!FBbz4JdIG;$bGUI08>5(8UO$Q delta 22 ccmcc8&UB@niTgA!FBbz46n~T2$bGUI08_RHKmY&$ diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_api_mode.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_api_mode.cpython-312.pyc index 37cadc68536b1c37eb3cf540fdf8546d35974899..4d55c1949f3c265a2a435580bfe188b9c1316c7e 100644 GIT binary patch delta 20 acmbQuG@FV0G%qg~0}wooP}s;Vzz6^_!vtRd delta 20 acmbQuG@FV0G%qg~0}vE{liJ8Fzz6^`I|PLQ diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_api_version.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_api_version.cpython-312.pyc index 48a69fbea51c9ea59b213378441c89d5eda22dbe..d1d8f78e6d30384417fa5b82ed908c432aebf952 100644 GIT binary patch delta 20 acmdnMyn&hfG%qg~0}wooP}s=5lo0?nF9jd~ delta 20 acmdnMyn&hfG%qg~0}vE{liJ9=lo0?nrv*j; diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_app_info.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_app_info.cpython-312.pyc index 88e0db2ea35c1af91d4c5f4fe3787d9fbdb1daea..ce4e3329835378571332df8899f242cb59837fae 100644 GIT binary patch delta 20 acmaFN@|cDDG%qg~0}wooP}s;F!2|$3Oa(ju delta 20 acmaFN@|cDDG%qg~0}vE{liJ7~!2|$3#06pi diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_base_address.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_base_address.cpython-312.pyc index 7e1b11232d65eda9ae12b2de2afcf0a101d73e1c..48c12cd5ec04e11b23b8a708f8446314fd56519d 100644 GIT binary patch delta 20 acmbQpHj$0{G%qg~0}wooP}s=L#tZ;3#RN+L delta 20 acmbQpHj$0{G%qg~0}vE{liJA5#tZ;4Jp^$8 diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_encode.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_encode.cpython-312.pyc index d27446e78d017750c9d88547d6691ef5f6bab0af..bac465f390c100478f2d9a8e3f9caa242dcb174e 100644 GIT binary patch delta 20 acmZ23zFeI9G%qg~0}wooP}s;lhZ_Jlp#?Vp delta 20 acmZ23zFeI9G%qg~0}vE{liJ8VhZ_Jm83kPc diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_error.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_error.cpython-312.pyc index b77cf486c3aad8211c30a4a38d16ad0cc46f4251..3e24de705e76cd0b8fe12d6fb9f648dfdf9d6a3f 100644 GIT binary patch delta 20 acmexi@xy}qG%qg~0}wooP}sL delta 20 acmZ3luwH@tG%qg~0}vE{liJ9wA^-q6q6G{9 diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_stripe_object.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_stripe_object.cpython-312.pyc index c89124e5627b3d8a13face27ad2cf5171dce3513..7c711cb7035718a32712c2a36d12b3c5a4e2b0a0 100644 GIT binary patch delta 22 ccmX@Gneo78M()$Ryj%=G@H9eUBlp%w09Ho_3IG5A delta 22 ccmX@Gneo78M()$Ryj%=GQ2b45Blp%w09L;TFaQ7m diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_stripe_response.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_stripe_response.cpython-312.pyc index c53482b258c2b4271e2aab4e4ef74c721a139438..abb3c8640c2352d5e2206dab93461a2482a03209 100644 GIT binary patch delta 20 acmbO%H(8GRG%qg~0}wooP}s=L!4Cj5fdq{J delta 20 acmbO%H(8GRG%qg~0}vE{liJA5!4Cj5`2@27 diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_util.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_util.cpython-312.pyc index 82d54020c54cb42febc1282c81cbada8d2aac406..280867a67620865964025f738ecf988263090362 100644 GIT binary patch delta 20 acmca#b-#-HG%qg~0}wooP}s;FVhaFGe+E|o delta 20 acmca#b-#-HG%qg~0}vE{liJ7~VhaFG_Xd3c diff --git a/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_version.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/stripe/__pycache__/_version.cpython-312.pyc index bc62981839c28cc0c3b92d40022b827cd88ba9ff..6ac829a7e6dbf521924420896dfe30e9072b8c6a 100644 GIT binary patch delta 19 Zcmcb@c!iPsG%qg~0}wooP?*Sl5&$)y1!n*N delta 19 Zcmcb@c!iPsG%qg~0}vE{lbXnV5&$*v1&sgz diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc index 4fe77f0c1f240d2670940a2009ae7ad17da47b36..8091b7b9e662d15a60395d8f184eff691f62fb22 100644 GIT binary patch delta 20 acmbPiIoXo?G%qg~0}wooP}s=bAp-z8S_M!5 delta 20 acmbPiIoXo?G%qg~0}y0?liJALAp-z8ngwnE diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc index 88301fbc1973b95022bfe3ab699ca3ffa3a3fe53..9a97adbe320cb7aa95248f36bfa273e3314ab509 100644 GIT binary patch delta 20 acmX?VdeoHrG%qg~0}wooP}s=5O9}u$m<8Mb delta 20 acmX?VdeoHrG%qg~0}y0?liJ9=O9}u$*ai9k diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc index 4ed983093c1fc8381a74266a40d87afb31874080..bf3d45fc5ce8afab38ebaf02dfb265f6faa35007 100644 GIT binary patch delta 22 ccmZ3tfpOgiM()$Ryj%=G@H9eUBe!w{08z^ZO#lD@ delta 22 ccmZ3tfpOgiM()$Ryj%=Gko`?+Be!w{08$GEYXATM diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc index ab4c91d7e0678319422c1e5ba50279ab7bd96780..929e9d0a359d54cd25a9414112418d99609f18f7 100644 GIT binary patch delta 27 hcmaDK^gf9DG%qg~0}wooP}s<=CdPPcvyqssFaUhB2lxO0 delta 27 hcmaDK^gf9DG%qg~0}y0?liJ9wCdT+{vyqssFaUmq2sQu! diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc index e762511e63dc0a5eeb9d7b6a9ff1956fa18520ad..bc4b158c86a1e0634e19f554b30a1fa714fbcf1a 100644 GIT binary patch delta 20 acmeBX?PldZ&CAQh00d7X6gF}k^3|+FBbz4JdIG;$bHuV098l_1poj5 delta 22 ccmaFS$oQg>k^3|+FBbz4WPg*|$bHuV09A+wBLDyZ diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc index 0a62069a417e6d852b59fe2d70e5e509d016df60..ed1b2b75c8549a972be27aeaa88031ca0be57429 100644 GIT binary patch delta 20 acmewz`#YBVG%qg~0}wooP}s=*K@R{G%qg~0}wooP}s;ln->5$3k5y^ delta 20 acmZ1`y-b?>G%qg~0}y0?liJ8Vn->5$O9fm2 diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc index f28a9cff640975cf95ce6545addcad8be3dce669..b016ace9507f48e3b58b8f4f9c99e17461466064 100644 GIT binary patch delta 22 ccmcbykMYJnM()$Ryj%=G@H9eUBe!on09yhE?f?J) delta 22 ccmcbykMYJnM()$Ryj%=Gko`?+Be!on09!%_3;+NC diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc index 8573f03c70bcfcd4e5424e9f7655fa656280eea3..87f22365aba4e7d1cd2c260ff280d9b68ff51490 100644 GIT binary patch delta 22 ccmaDioB7>rX71Cxyj%=G@H9eUBlqL809zLa+yDRo delta 22 ccmaDioB7>rX71Cxyj%=Gko`?+BlqL809#iF`Tzg` diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc index 55ff06980acb4e6450528314ce920416698c9199..7ee35c9f195b61e274dcd8631338624f8f74fc47 100644 GIT binary patch delta 19 ZcmX@cc#M(zG%qg~0}wooP?*TQ8vrwz1w8-& delta 19 ZcmX@cc#M(zG%qg~0}y0?lbXoA8vrxA1zP|B diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc index aba5004bdc7921b75a3913523fb43433d3f555b9..52910834ea330c8c028491162b001cdb139aea89 100644 GIT binary patch delta 20 acmexh|G}R7G%qg~0}wooP}s=*R2~3Gy#{sw delta 20 acmexh|G}R7G%qg~0}y0?liJArR2~3G{RWf( diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc index 1f1bf1a528f9a31f11fa102c16111510942c17cb..4f5eaeb1e9d92c533004029e2ac769cdf93108b5 100644 GIT binary patch delta 20 acmcc4d!3j2G%qg~0}wooP}sG%qg~0}wooP}s;FBm@9J>;-xN delta 20 acmcbsa#w}>G%qg~0}y0?liJ7~Bm@9KECrYV diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc index 6f7d326c146019ac90e79123173aae7f37556aec..c562a2efd808cbca0e195e066e42e2f38dc35111 100644 GIT binary patch delta 20 acmX@kd7P8`G%qg~0}wooP}s=5hXnvSq6KsS delta 20 acmX@kd7P8`G%qg~0}y0?liJ9=hXnvS;sufb diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc index 2d581052bcee7a065f07619c819cb1a14478defd..a2b6e9b79ae20ec785ccf29e145e211b1646a77b 100644 GIT binary patch delta 20 acmZp6Y6&CAQh00d7X6gF~KC;$LA{slAu delta 20 acmZp6Y6&CAQh00i0Jq&9L_C;$LBJ_S+$ diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc index 8f7c5ef9324172bb9920a8497ef69bb873ed39b5..73b2a5cfaa3dec159e8030236a1a2173407cf04f 100644 GIT binary patch delta 20 acmdllwqK0ykMYPnM()$Ryj%=G@H9eUBe$hL08+LFVgLXD delta 22 ccmX>ykMYPnM()$Ryj%=Gko`?+Be$hL08;h_fB*mh diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc index 1a376dfaefeb348436eb35f30c06635979d910f7..7a1e23f8cb666c3f8a896305a1b611f9a92aa3ca 100644 GIT binary patch delta 22 ccmbQ<#yGu=k^3|+FBbz4JdIG;$j##n07r8Lp8x;= delta 22 ccmbQ<#yGu=k^3|+FBbz4WPg*|$j##n07tV0y#N3J diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc index 9b0022dd43764d78a18dfc34808b9151a437c736..a422f053339e1b6603c4a679938c9c6e62bb571a 100644 GIT binary patch delta 20 acmdn3y<406G%qg~0}wooP}s=5K@B-;lLh$z delta 20 acmZ1B-;(*_p+ diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc index 2710625817796d220b473e4843a3308b03ad2d9f..aacd18d794be6a38b8a5526c2cafa648995bbc09 100644 GIT binary patch delta 27 hcmaD+_o9ybG%qg~0}wooP}s;lhm-Nv<`tX=OaY2^3Aq3O delta 27 hcmaD+_o9ybG%qg~0}y0?liJ8Vhm-Nw<`tX=OaY8Y3HJa1 diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc index 0642ed630f86578698243359096eb584baadb7cc..1ec28fc5055d5b7556e1d4a8a8acbacf19a53db0 100644 GIT binary patch delta 20 acmcb>e}SL-G%qg~0}wooP}se}SL-G%qg~0}y0?liJ9AlpO#)B?Y_y diff --git a/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc index e529c1518984a242c77af34a7c05ae05c7046938..c34930525fab1e7df3f31e737cf0ac0ed47f39a6 100644 GIT binary patch delta 20 acmew+^-YTVG%qg~0}wooP}sB09u;{?*IS* delta 22 ccmex7kMZ+7M()$Ryj%=GP<2gmBX@>B09tJ diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/__init__.cpython-312.pyc index bf2bf7ba7dedf785a2cd00d1677f13f6c86ef76d..21f4a33fbc7f9607bf2c00f70c45baf6db6f57c1 100644 GIT binary patch delta 19 ZcmX@fc#@I(G%qg~0}wooP?*TQ4*)a>1x5e> delta 19 ZcmX@fc#@I(G%qg~0}xbQlbp!C4*)aZ1yTS2 diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/asgi2.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/asgi2.cpython-312.pyc index f880235c8ffaf53c957adff85dcfd76617cda337..b1155b8e5d789e013084eff1da7a81f261038f1b 100644 GIT binary patch delta 20 acmZ3=v6O@RG%qg~0}wooP}s;V#R32{E(DAK delta 20 acmZ3=v6O@RG%qg~0}xbQlibKH#R32{5(Jn4 diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/message_logger.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/message_logger.cpython-312.pyc index 7f8cf9b9bc429d8c0d4385fab5af55d649158b65..63d82a011838c274cec021f1d703392bbf217544 100644 GIT binary patch delta 20 acmdn4v|Wk&G%qg~0}wooP}s<=BM1OGvjqbH delta 20 acmdn4v|Wk&G%qg~0}xbQlibLyBM1OGmjw?1 diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/proxy_headers.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/middleware/__pycache__/proxy_headers.cpython-312.pyc index 8a080498ee1466a6a49179f7f9786b9fb7a12c15..0ef96fe3744c73826cbc6c0d39b0c685840c32b5 100644 GIT binary patch delta 20 acmew@^IL}dG%qg~0}wooP}s;_zy|Grk^3|+FBbz4JdIG;$i3Gc08$YK$N&HU delta 22 ccmX@n&v>Grk^3|+FBbz4R9%zY$i3Gc08#Y@)Bpeg diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/__init__.cpython-312.pyc index b1f4348c69c0104136e41e9b6358e4c9d4a1f71f..9f84e6146c1b8426a5661e4fe4fda7826f408aea 100644 GIT binary patch delta 20 acmey%_Lq(OG%qg~0}wooP}s;_#0&sIr3H@w delta 20 acmey%_Lq(OG%qg~0}xbQlibK%#0&sIi3OVg diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/basereload.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/basereload.cpython-312.pyc index 6b4f1941924d707db7ce38dc4fc219b9a25c962f..685ee8630614fd5a3eae778120ee34e09a99b11f 100644 GIT binary patch delta 20 acmZ2%w%CmOG%qg~0}wooP}s;VAq@aJZ3OuM delta 20 acmZ2%w%CmOG%qg~0}xbQlibKHAq@aJQ3VA6 diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/multiprocess.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/multiprocess.cpython-312.pyc index 554932916e190dd7f5b334177d2e9f9c5a003ef8..f8d344a9a648eb54a224ab198a13cfdf3df350a3 100644 GIT binary patch delta 20 acmew>|5u*-G%qg~0}wooP}s=*i5~z)H3m%p delta 20 acmew>|5u*-G%qg~0}xbQlibMti5~z)83tJZ diff --git a/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/watchfilesreload.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvicorn/supervisors/__pycache__/watchfilesreload.cpython-312.pyc index 4d8827a3f0e72a009ca135c662937d0c0f8da6b9..593420caad7f2c08f5e19ae6f8f50d6514645037 100644 GIT binary patch delta 20 acmZ3Wyg-@zG%qg~0}wooP}s;lRS*C;KLtPl delta 20 acmZ3Wyg-@zG%qg~0}xbQlibKXRS*C;BLz$V diff --git a/Backend/venv/lib/python3.12/site-packages/uvloop/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvloop/__pycache__/__init__.cpython-312.pyc index 41647634d2ac9ad145c5ebb12176301003297bbb..89497c3108670baa889a6275b0b191f1486c9a66 100644 GIT binary patch delta 20 acmcZ?a4&%SG%qg~0}wooP}s;FtN{Q=S_SI> delta 20 acmcZ?a4&%SG%qg~0}xbRlibK1tN{Q=HwE?p diff --git a/Backend/venv/lib/python3.12/site-packages/uvloop/__pycache__/_noop.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/uvloop/__pycache__/_noop.cpython-312.pyc index 30e169fab2c78cc976d18f799b355a9a5dc42ed3..dc0f28b15220b8dfd1d7254fc1bd4a74cf162800 100644 GIT binary patch delta 20 acmcb`bc>1mG%qg~0}wooP}s=r&j1mG%qg~0}xbRlibMd&j?h?h} diff --git a/Backend/venv/lib/python3.12/site-packages/websockets/__pycache__/imports.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/websockets/__pycache__/imports.cpython-312.pyc index b83f744929cccc1db12c0d61ee0c31d709535655..a96f1e439e54dc103da808c332eec94f65f9fcbb 100644 GIT binary patch delta 20 acmca9byJG_G%qg~0}wooP}s=r#|r>H-vw0w delta 20 acmca9byJG_G%qg~0}xbRlibMd#|r>HyaiwY diff --git a/Backend/venv/lib/python3.12/site-packages/websockets/__pycache__/protocol.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/websockets/__pycache__/protocol.cpython-312.pyc index ccbae7f42f86cc7fefcbfb9bdbf2d11183158324..647356c9130ba10f1a7c785218bfdcdc34bd2941 100644 GIT binary patch delta 22 ccmdmUjB(E~M()$Ryj%=G@H9eUBe!8P09T3zt^fc4 delta 22 ccmdmUjB(E~M()$Ryj%=GPm*4M()$Ryj%=G@H9eUBey^l08cmu9smFU delta 22 ccmbQeg>m*4M()$Ryj%=GP1x5e> delta 19 ZcmX@fc#@I(G%qg~0}xbRlbp!C4*)aT1yKM1 diff --git a/Backend/venv/lib/python3.12/site-packages/websockets/asyncio/__pycache__/compatibility.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/websockets/asyncio/__pycache__/compatibility.cpython-312.pyc index d200007229e87ed130e6e2053d4a0d5ecf397a7a..d22ae148624165b51ce9241d5b8ece6d4886e155 100644 GIT binary patch delta 20 acmdnWv6X}SG%qg~0}wooP}s<=#R32}t^~XQ delta 20 acmdnWv6X}SG%qg~0}xbRlibLy#R32}iv-62 diff --git a/Backend/venv/lib/python3.12/site-packages/websockets/extensions/__pycache__/__init__.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/websockets/extensions/__pycache__/__init__.cpython-312.pyc index 007fc9880125ac6d690bfd242508a73668ebe9d2..46d6015e6418d615997bc76527b9fbfb39608ab7 100644 GIT binary patch delta 20 acmdnPw1jc68 delta 20 acmdnPw1f&CAQh00d7X6c%zT001*U1iAnK delta 19 ZcmeBn=yu>f&CAQh00foSBo}fk001)*1jPUV diff --git a/Backend/venv/lib/python3.12/site-packages/websockets/legacy/__pycache__/handshake.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/websockets/legacy/__pycache__/handshake.cpython-312.pyc index 7fd14833992e7cd5100bd018a218ed2c5886b3c7..78630a77bea77513583f5fff4bae6d411fbe0a9a 100644 GIT binary patch delta 20 acmdmBxWSP7G%qg~0}wooP}s=5R004zz6Fy2 delta 20 acmdmBxWSP7G%qg~0}xbRlibL?R004zn+2W# diff --git a/Backend/venv/lib/python3.12/site-packages/websockets/legacy/__pycache__/http.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/websockets/legacy/__pycache__/http.cpython-312.pyc index 4e6322ff41811f777c909063c00ff49533555084..8cc2bf25fd1d4f7bc8f131127b14636ae446f25b 100644 GIT binary patch delta 20 acmbPZGslMeG%qg~0}wooP}s;VCMr6w&CAQh00d7X6c%z@0suMv1vdZy delta 19 ZcmeA!>Mr6w&CAQh00foSBo}g90suMB1wsG- diff --git a/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/importer.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/importer.cpython-312.pyc index 43ad637e847ade7737359bb826ce8ae72fdb1f4d..80682b89d6dc81489d2a32593a6adb7852123be5 100644 GIT binary patch delta 20 acmcZ-bR~%UG%qg~0}wooP}s=rsR;l^69v)$ delta 20 acmcZ-bR~%UG%qg~0}xbRlibMdsR;l@@CDrf diff --git a/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/patches.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/patches.cpython-312.pyc index 367b6bcea3f4f3dd510c42470b59e755cd6cace5..047f2eb61a003ce038e451afa9cfe3bad9775d9a 100644 GIT binary patch delta 20 acmeAP=?URJ&CAQh00d7X6gF}*Y5@Q{90dOW delta 20 acmeAP=?URJ&CAQh00foSBsX$1Y5@Q``2`99 diff --git a/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/proxies.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/proxies.cpython-312.pyc index cd5e298fdb790b9833d32da41180c53667c87424..097c27ad764c62f7b3c14c8e509835492b1b9482 100644 GIT binary patch delta 20 acmZolX-eTf&CAQh00d7X6gF~yHv|AZ(*_6t delta 20 acmZolX-eTf&CAQh00foSBsX$@Hv|AZum%$V diff --git a/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/weakrefs.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/weakrefs.cpython-312.pyc index d0e28ec7ed9f03252ae9b74420a096d1cf7f7254..e98213d669e577c56ee57219407e1eabce9440ea 100644 GIT binary patch delta 20 acmZ24vtEY#G%qg~0}wooP}s<=!Uq62m;~Ga delta 20 acmZ24vtEY#G%qg~0}xbRlibLy!Uq62bp+=C diff --git a/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/wrappers.cpython-312.pyc b/Backend/venv/lib/python3.12/site-packages/wrapt/__pycache__/wrappers.cpython-312.pyc index 10868e5bec60676b26d31ebcd6bed3b0cf7447bd..49d3e9fbe7bc475d12befe8d9481aae0f30e2a0d 100644 GIT binary patch delta 22 ccmex9h3WegChpU`yj%=G@H9eUBX>?009qjjBme*a delta 22 ccmex9h3WegChpU`yj%=GP?009pPAF8}}l diff --git a/Frontend/src/App.tsx b/Frontend/src/App.tsx index f8f7cc68..9086bfd0 100644 --- a/Frontend/src/App.tsx +++ b/Frontend/src/App.tsx @@ -31,6 +31,7 @@ import { ProtectedRoute, AdminRoute, StaffRoute, + AccountantRoute, CustomerRoute } from './components/auth'; @@ -75,6 +76,10 @@ const ReceptionDashboardPage = lazy(() => import('./pages/admin/ReceptionDashboa const StaffDashboardPage = lazy(() => import('./pages/staff/DashboardPage')); const ChatManagementPage = lazy(() => import('./pages/staff/ChatManagementPage')); const StaffLayout = lazy(() => import('./pages/StaffLayout')); + +const AccountantDashboardPage = lazy(() => import('./pages/accountant/DashboardPage')); +const AccountantLayout = lazy(() => import('./pages/AccountantLayout')); + const NotFoundPage = lazy(() => import('./pages/NotFoundPage')); function App() { @@ -389,6 +394,34 @@ function App() { /> + {/* Accountant Routes */} + + + + } + > + } + /> + } /> + } + /> + } + /> + } + /> + + {} = ({ + children +}) => { + const { isAuthenticated, userInfo, isLoading } = useAuthStore(); + const { openModal } = useAuthModal(); + + // Open login modal if not authenticated + useEffect(() => { + if (!isLoading && !isAuthenticated) { + openModal('login'); + } + }, [isLoading, isAuthenticated, openModal]); + + if (isLoading) { + return ( +
+
+
+

+ Authenticating... +

+
+
+ ); + } + + // Don't render children if not authenticated (modal will be shown) + if (!isAuthenticated) { + return null; // Modal will be shown by AuthModalManager + } + + // Check if user is accountant + const isAccountant = userInfo?.role === 'accountant'; + if (!isAccountant) { + return ; + } + + return <>{children}; +}; + +export default AccountantRoute; + diff --git a/Frontend/src/components/auth/CustomerRoute.tsx b/Frontend/src/components/auth/CustomerRoute.tsx index f461d259..3c2b86c9 100644 --- a/Frontend/src/components/auth/CustomerRoute.tsx +++ b/Frontend/src/components/auth/CustomerRoute.tsx @@ -45,12 +45,14 @@ const CustomerRoute: React.FC = ({ } - const isCustomer = userInfo?.role !== 'admin' && userInfo?.role !== 'staff'; + const isCustomer = userInfo?.role !== 'admin' && userInfo?.role !== 'staff' && userInfo?.role !== 'accountant'; if (!isCustomer) { if (userInfo?.role === 'admin') { return ; } else if (userInfo?.role === 'staff') { return ; + } else if (userInfo?.role === 'accountant') { + return ; } return ; } diff --git a/Frontend/src/components/auth/index.ts b/Frontend/src/components/auth/index.ts index f8103870..262c8385 100644 --- a/Frontend/src/components/auth/index.ts +++ b/Frontend/src/components/auth/index.ts @@ -1,4 +1,5 @@ export { default as ProtectedRoute } from './ProtectedRoute'; export { default as AdminRoute } from './AdminRoute'; export { default as StaffRoute } from './StaffRoute'; +export { default as AccountantRoute } from './AccountantRoute'; export { default as CustomerRoute } from './CustomerRoute'; diff --git a/Frontend/src/components/common/ExportButton.tsx b/Frontend/src/components/common/ExportButton.tsx new file mode 100644 index 00000000..b2bbc248 --- /dev/null +++ b/Frontend/src/components/common/ExportButton.tsx @@ -0,0 +1,186 @@ +import React, { useState, useRef, useEffect } from 'react'; +import { Download, FileText, FileJson, FileSpreadsheet, File, ChevronDown, Check } from 'lucide-react'; +import { exportData, formatDataForExport, ExportFormat } from '../../utils/exportUtils'; +import { toast } from 'react-toastify'; + +interface ExportButtonProps { + data: any[]; + filename: string; + title?: string; + customHeaders?: Record; + className?: string; + disabled?: boolean; +} + +const ExportButton: React.FC = ({ + data, + filename, + title, + customHeaders, + className = '', + disabled = false +}) => { + const [isOpen, setIsOpen] = useState(false); + const dropdownRef = useRef(null); + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { + setIsOpen(false); + } + }; + + if (isOpen) { + document.addEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [isOpen]); + + const handleExport = async (format: ExportFormat) => { + try { + if (!data || data.length === 0) { + toast.error('No data available to export'); + return; + } + + const { headers, formattedData } = formatDataForExport(data, customHeaders); + + exportData({ + format, + filename, + title: title || filename, + headers, + data: formattedData + }); + + toast.success(`Data exported successfully as ${format.toUpperCase()}!`); + setIsOpen(false); + } catch (error: any) { + toast.error(error.message || 'Failed to export data'); + } + }; + + const exportOptions = [ + { + format: 'csv' as ExportFormat, + label: 'CSV', + icon: FileText, + description: 'Comma-separated values', + color: 'from-blue-500 to-blue-600' + }, + { + format: 'xlsx' as ExportFormat, + label: 'Excel', + icon: FileSpreadsheet, + description: 'Microsoft Excel format', + color: 'from-emerald-500 to-emerald-600' + }, + { + format: 'pdf' as ExportFormat, + label: 'PDF', + icon: File, + description: 'Portable Document Format', + color: 'from-rose-500 to-rose-600' + }, + { + format: 'json' as ExportFormat, + label: 'JSON', + icon: FileJson, + description: 'JavaScript Object Notation', + color: 'from-purple-500 to-purple-600' + } + ]; + + return ( +
+ + + {isOpen && ( + <> +
setIsOpen(false)} + /> +
+
+

+ Export Format +

+

+ Choose your preferred format +

+
+
+ {exportOptions.map((option, index) => { + const Icon = option.icon; + return ( + + ); + })} +
+
+

+ {data?.length || 0} records available +

+
+
+ + )} +
+ ); +}; + +export default ExportButton; + diff --git a/Frontend/src/components/common/index.ts b/Frontend/src/components/common/index.ts index d82110b9..9f08e1d0 100644 --- a/Frontend/src/components/common/index.ts +++ b/Frontend/src/components/common/index.ts @@ -10,4 +10,5 @@ export { default as GlobalLoading } from './GlobalLoading'; export { default as OfflineIndicator } from './OfflineIndicator'; export { default as Skeleton } from './Skeleton'; export { default as ScrollToTop } from './ScrollToTop'; +export { default as ExportButton } from './ExportButton'; diff --git a/Frontend/src/components/layout/Header.tsx b/Frontend/src/components/layout/Header.tsx index baef7757..3c9e411f 100644 --- a/Frontend/src/components/layout/Header.tsx +++ b/Frontend/src/components/layout/Header.tsx @@ -254,7 +254,7 @@ const Header: React.FC = ({ Profile - {userInfo?.role !== 'admin' && userInfo?.role !== 'staff' && ( + {userInfo?.role !== 'admin' && userInfo?.role !== 'staff' && userInfo?.role !== 'accountant' && ( <> = ({ Staff Dashboard )} + {userInfo?.role === 'accountant' && ( + + setIsUserMenuOpen(false) + } + className="flex items-center + space-x-3 px-4 py-2.5 text-white/90 + hover:bg-[#d4af37]/10 hover:text-[#d4af37] + transition-all duration-300 border-l-2 border-transparent + hover:border-[#d4af37]" + > + + Accountant Dashboard + + )}
+ )} + + {/* Mobile overlay */} + {isMobile && isMobileOpen && ( +
+ )} + + {/* Sidebar */} + + + ); +}; + +export default SidebarAccountant; + diff --git a/Frontend/src/components/layout/index.ts b/Frontend/src/components/layout/index.ts index 9de04b38..8af7503a 100644 --- a/Frontend/src/components/layout/index.ts +++ b/Frontend/src/components/layout/index.ts @@ -2,4 +2,5 @@ export { default as Header } from './Header'; export { default as Footer } from './Footer'; export { default as SidebarAdmin } from './SidebarAdmin'; export { default as SidebarStaff } from './SidebarStaff'; +export { default as SidebarAccountant } from './SidebarAccountant'; export { default as LayoutMain } from './LayoutMain'; diff --git a/Frontend/src/components/rooms/FavoriteButton.tsx b/Frontend/src/components/rooms/FavoriteButton.tsx index 72aba4ab..836b2501 100644 --- a/Frontend/src/components/rooms/FavoriteButton.tsx +++ b/Frontend/src/components/rooms/FavoriteButton.tsx @@ -26,7 +26,7 @@ const FavoriteButton: React.FC = ({ const [showTooltipText, setShowTooltipText] = useState(false); - if (userInfo?.role === 'admin' || userInfo?.role === 'staff') { + if (userInfo?.role === 'admin' || userInfo?.role === 'staff' || userInfo?.role === 'accountant') { return null; } diff --git a/Frontend/src/pages/AccountantLayout.tsx b/Frontend/src/pages/AccountantLayout.tsx new file mode 100644 index 00000000..d23d8208 --- /dev/null +++ b/Frontend/src/pages/AccountantLayout.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { Outlet } from 'react-router-dom'; +import { SidebarAccountant } from '../components/layout'; + +const AccountantLayout: React.FC = () => { + return ( +
+ {/* Sidebar */} + + + {/* Main Content */} +
+
+ +
+
+
+ ); +}; + +export default AccountantLayout; + diff --git a/Frontend/src/pages/accountant/DashboardPage.tsx b/Frontend/src/pages/accountant/DashboardPage.tsx new file mode 100644 index 00000000..7c77c586 --- /dev/null +++ b/Frontend/src/pages/accountant/DashboardPage.tsx @@ -0,0 +1,478 @@ +import React, { useEffect, useState } from 'react'; +import { + BarChart3, + CreditCard, + Receipt, + TrendingUp, + RefreshCw, + DollarSign, + FileText, + Calendar, + AlertCircle +} from 'lucide-react'; +import { reportService, ReportData, paymentService, invoiceService } from '../../services/api'; +import type { Payment } from '../../services/api/paymentService'; +import type { Invoice } from '../../services/api/invoiceService'; +import { toast } from 'react-toastify'; +import { Loading, EmptyState, ExportButton } from '../../components/common'; +import CurrencyIcon from '../../components/common/CurrencyIcon'; +import { formatDate } from '../../utils/format'; +import { useFormatCurrency } from '../../hooks/useFormatCurrency'; +import { useAsync } from '../../hooks/useAsync'; +import { useNavigate } from 'react-router-dom'; + +const AccountantDashboardPage: React.FC = () => { + const { formatCurrency } = useFormatCurrency(); + const navigate = useNavigate(); + const [dateRange, setDateRange] = useState({ + from: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString().split('T')[0], + to: new Date().toISOString().split('T')[0], + }); + const [recentPayments, setRecentPayments] = useState([]); + const [recentInvoices, setRecentInvoices] = useState([]); + const [loadingPayments, setLoadingPayments] = useState(false); + const [loadingInvoices, setLoadingInvoices] = useState(false); + const [financialSummary, setFinancialSummary] = useState({ + totalRevenue: 0, + totalPayments: 0, + totalInvoices: 0, + pendingPayments: 0, + overdueInvoices: 0, + paidInvoices: 0, + }); + + const fetchDashboardData = async () => { + const response = await reportService.getReports({ + from: dateRange.from, + to: dateRange.to, + }); + return response.data; + }; + + const { data: stats, loading, error, execute } = useAsync( + fetchDashboardData, + { + immediate: true, + onError: (error: any) => { + toast.error(error.message || 'Unable to load dashboard data'); + } + } + ); + + useEffect(() => { + execute(); + }, [dateRange]); + + useEffect(() => { + const fetchPayments = async () => { + try { + setLoadingPayments(true); + const response = await paymentService.getPayments({ page: 1, limit: 10 }); + if (response.success && response.data?.payments) { + setRecentPayments(response.data.payments); + // Calculate financial summary + const completedPayments = response.data.payments.filter((p: Payment) => p.payment_status === 'completed'); + const pendingPayments = response.data.payments.filter((p: Payment) => p.payment_status === 'pending'); + const totalRevenue = completedPayments.reduce((sum: number, p: Payment) => sum + (p.amount || 0), 0); + + setFinancialSummary(prev => ({ + ...prev, + totalRevenue, + totalPayments: response.data.payments.length, + pendingPayments: pendingPayments.length, + })); + } + } catch (err: any) { + console.error('Error fetching payments:', err); + } finally { + setLoadingPayments(false); + } + }; + fetchPayments(); + }, []); + + useEffect(() => { + const fetchInvoices = async () => { + try { + setLoadingInvoices(true); + const response = await invoiceService.getInvoices({ page: 1, limit: 10 }); + if (response.status === 'success' && response.data?.invoices) { + setRecentInvoices(response.data.invoices); + // Calculate invoice summary + const paidInvoices = response.data.invoices.filter((inv: Invoice) => inv.status === 'paid'); + const overdueInvoices = response.data.invoices.filter((inv: Invoice) => inv.status === 'overdue'); + + setFinancialSummary(prev => ({ + ...prev, + totalInvoices: response.data.invoices.length, + paidInvoices: paidInvoices.length, + overdueInvoices: overdueInvoices.length, + })); + } + } catch (err: any) { + console.error('Error fetching invoices:', err); + } finally { + setLoadingInvoices(false); + } + }; + fetchInvoices(); + }, []); + + const handleRefresh = () => { + execute(); + }; + + const getPaymentStatusColor = (status: string) => { + switch (status) { + case 'completed': + return 'bg-gradient-to-r from-emerald-50 to-green-50 text-emerald-800 border-emerald-200'; + case 'pending': + return 'bg-gradient-to-r from-amber-50 to-yellow-50 text-amber-800 border-amber-200'; + case 'failed': + return 'bg-gradient-to-r from-rose-50 to-red-50 text-rose-800 border-rose-200'; + case 'refunded': + return 'bg-gradient-to-r from-slate-50 to-gray-50 text-slate-700 border-slate-200'; + default: + return 'bg-gradient-to-r from-slate-50 to-gray-50 text-slate-700 border-slate-200'; + } + }; + + const getInvoiceStatusColor = (status: string) => { + switch (status) { + case 'paid': + return 'bg-gradient-to-r from-emerald-50 to-green-50 text-emerald-800 border-emerald-200'; + case 'sent': + return 'bg-gradient-to-r from-blue-50 to-indigo-50 text-blue-800 border-blue-200'; + case 'overdue': + return 'bg-gradient-to-r from-rose-50 to-red-50 text-rose-800 border-rose-200'; + case 'draft': + return 'bg-gradient-to-r from-slate-50 to-gray-50 text-slate-700 border-slate-200'; + default: + return 'bg-gradient-to-r from-slate-50 to-gray-50 text-slate-700 border-slate-200'; + } + }; + + if (loading) { + return ; + } + + if (error || !stats) { + return ( +
+ +
+ ); + } + + return ( +
+ {/* Header */} +
+
+
+
+

+ Financial Dashboard +

+
+

Comprehensive financial overview and analytics

+
+ + {/* Date Range & Actions */} +
+
+ setDateRange({ ...dateRange, from: e.target.value })} + className="px-4 py-2.5 bg-white border-2 border-slate-200 rounded-xl focus:border-emerald-400 focus:ring-4 focus:ring-emerald-100 transition-all duration-200 text-slate-700 font-medium shadow-sm hover:shadow-md" + /> + to + setDateRange({ ...dateRange, to: e.target.value })} + className="px-4 py-2.5 bg-white border-2 border-slate-200 rounded-xl focus:border-emerald-400 focus:ring-4 focus:ring-emerald-100 transition-all duration-200 text-slate-700 font-medium shadow-sm hover:shadow-md" + /> +
+
+ ({ + 'Type': 'Payment', + 'Transaction ID': p.transaction_id || `PAY-${p.id}`, + 'Amount': formatCurrency(p.amount || 0), + 'Status': p.payment_status, + 'Method': p.payment_method, + 'Date': p.payment_date ? formatDate(p.payment_date) : 'N/A', + 'Booking': p.booking?.booking_number || 'N/A' + }))), + ...(recentInvoices.map(i => ({ + 'Type': 'Invoice', + 'Invoice Number': i.invoice_number, + 'Customer': i.customer_name, + 'Total Amount': formatCurrency(i.total_amount), + 'Amount Due': formatCurrency(i.amount_due), + 'Status': i.status, + 'Due Date': i.due_date ? formatDate(i.due_date) : 'N/A', + 'Issue Date': i.issue_date ? formatDate(i.issue_date) : 'N/A' + }))) + ]} + filename="accountant-dashboard" + title="Accountant Financial Dashboard Report" + /> + +
+
+
+ + {/* Financial Summary Cards */} +
+ {/* Total Revenue */} +
+
+
+

Total Revenue

+

+ {formatCurrency(financialSummary.totalRevenue || stats?.total_revenue || 0)} +

+
+
+ +
+
+
+ + Active + All time revenue +
+
+ + {/* Total Payments */} +
+
+
+

Total Payments

+

+ {financialSummary.totalPayments} +

+
+
+ +
+
+
+ + {financialSummary.pendingPayments} pending payments + +
+
+ + {/* Total Invoices */} +
+
+
+

Total Invoices

+

+ {financialSummary.totalInvoices} +

+
+
+ +
+
+
+ + {financialSummary.paidInvoices} paid • {financialSummary.overdueInvoices} overdue + +
+
+
+ + {/* Recent Payments and Invoices */} +
+ {/* Recent Payments */} +
+
+

+ + Recent Payments +

+ +
+ {loadingPayments ? ( +
+ +
+ ) : recentPayments && recentPayments.length > 0 ? ( +
+ {recentPayments.slice(0, 5).map((payment) => ( +
navigate(`/accountant/payments`)} + > +
+
+ +
+
+

+ {formatCurrency(payment.amount)} +

+
+

+ {payment.payment_method || 'N/A'} +

+ {payment.payment_date && ( + + • {formatDate(payment.payment_date, 'short')} + + )} +
+
+
+ + {payment.payment_status.charAt(0).toUpperCase() + payment.payment_status.slice(1)} + +
+ ))} +
+ ) : ( + navigate('/accountant/payments') + }} + /> + )} +
+ + {/* Recent Invoices */} +
+
+

+ + Recent Invoices +

+ +
+ {loadingInvoices ? ( +
+ +
+ ) : recentInvoices && recentInvoices.length > 0 ? ( +
+ {recentInvoices.slice(0, 5).map((invoice) => ( +
navigate(`/accountant/invoices`)} + > +
+
+ +
+
+

+ {invoice.invoice_number} +

+
+

+ {formatCurrency(invoice.total_amount || 0)} +

+ {invoice.issue_date && ( + + • {formatDate(invoice.issue_date, 'short')} + + )} +
+
+
+ + {invoice.status.charAt(0).toUpperCase() + invoice.status.slice(1)} + +
+ ))} +
+ ) : ( + navigate('/accountant/invoices') + }} + /> + )} +
+
+ + {/* Alerts Section */} + {(financialSummary.overdueInvoices > 0 || financialSummary.pendingPayments > 0) && ( +
+
+ +

Financial Alerts

+
+
+ {financialSummary.overdueInvoices > 0 && ( +
+

+ ⚠️ {financialSummary.overdueInvoices} overdue invoice{financialSummary.overdueInvoices !== 1 ? 's' : ''} require attention +

+
+ )} + {financialSummary.pendingPayments > 0 && ( +
+

+ ⏳ {financialSummary.pendingPayments} pending payment{financialSummary.pendingPayments !== 1 ? 's' : ''} awaiting processing +

+
+ )} +
+
+ )} +
+ ); +}; + +export default AccountantDashboardPage; + diff --git a/Frontend/src/pages/admin/AnalyticsDashboardPage.tsx b/Frontend/src/pages/admin/AnalyticsDashboardPage.tsx index a32ea0c3..de866a5b 100644 --- a/Frontend/src/pages/admin/AnalyticsDashboardPage.tsx +++ b/Frontend/src/pages/admin/AnalyticsDashboardPage.tsx @@ -23,7 +23,7 @@ import { Star } from 'lucide-react'; import { toast } from 'react-toastify'; -import { Loading, EmptyState } from '../../components/common'; +import { Loading, EmptyState, ExportButton } from '../../components/common'; import Pagination from '../../components/common/Pagination'; import CurrencyIcon from '../../components/common/CurrencyIcon'; import { useAsync } from '../../hooks/useAsync'; @@ -478,16 +478,37 @@ const AnalyticsDashboardPage: React.FC = () => { View comprehensive reports and statistics for bookings, revenue, and performance

- + ({ + 'Date': r.date, + 'Revenue': r.revenue, + 'Bookings': r.bookings + })) || []), + ...(reportData.top_rooms?.map(r => ({ + 'Room ID': r.room_id, + 'Room Number': r.room_number, + 'Bookings': r.bookings, + 'Revenue': r.revenue + })) || []), + ...(reportData.service_usage?.map(s => ({ + 'Service ID': s.service_id, + 'Service Name': s.service_name, + 'Usage Count': s.usage_count, + 'Total Revenue': s.total_revenue + })) || []) + ] : []} + filename="financial-reports" + title="Financial Reports & Analytics" + />
diff --git a/Frontend/src/pages/admin/InvoiceManagementPage.tsx b/Frontend/src/pages/admin/InvoiceManagementPage.tsx index 1e98ee6d..04cbb988 100644 --- a/Frontend/src/pages/admin/InvoiceManagementPage.tsx +++ b/Frontend/src/pages/admin/InvoiceManagementPage.tsx @@ -4,6 +4,7 @@ import { invoiceService, Invoice } from '../../services/api'; import { toast } from 'react-toastify'; import Loading from '../../components/common/Loading'; import Pagination from '../../components/common/Pagination'; +import { ExportButton } from '../../components/common'; import { useFormatCurrency } from '../../hooks/useFormatCurrency'; import { useNavigate } from 'react-router-dom'; import { formatDate } from '../../utils/format'; @@ -130,13 +131,36 @@ const InvoiceManagementPage: React.FC = () => {

Manage and track all invoices

- +
+ ({ + 'Invoice Number': i.invoice_number, + 'Customer Name': i.customer_name, + 'Customer Email': i.customer_email, + 'Booking ID': i.booking_id || 'N/A', + 'Subtotal': formatCurrency(i.subtotal), + 'Tax Amount': formatCurrency(i.tax_amount), + 'Discount Amount': formatCurrency(i.discount_amount), + 'Total Amount': formatCurrency(i.total_amount), + 'Amount Paid': formatCurrency(i.amount_paid), + 'Balance Due': formatCurrency(i.balance_due), + 'Status': i.status, + 'Issue Date': i.issue_date ? formatDate(i.issue_date) : 'N/A', + 'Due Date': i.due_date ? formatDate(i.due_date) : 'N/A', + 'Paid Date': i.paid_date ? formatDate(i.paid_date) : 'N/A', + 'Is Proforma': i.is_proforma ? 'Yes' : 'No' + }))} + filename="invoices" + title="Invoice Management Report" + /> + +
{} diff --git a/Frontend/src/pages/admin/PaymentManagementPage.tsx b/Frontend/src/pages/admin/PaymentManagementPage.tsx index 7ede8a3e..50e94ed8 100644 --- a/Frontend/src/pages/admin/PaymentManagementPage.tsx +++ b/Frontend/src/pages/admin/PaymentManagementPage.tsx @@ -5,7 +5,9 @@ import type { Payment } from '../../services/api/paymentService'; import { toast } from 'react-toastify'; import Loading from '../../components/common/Loading'; import Pagination from '../../components/common/Pagination'; +import { ExportButton } from '../../components/common'; import { useFormatCurrency } from '../../hooks/useFormatCurrency'; +import { formatDate } from '../../utils/format'; const PaymentManagementPage: React.FC = () => { const { formatCurrency } = useFormatCurrency(); @@ -134,13 +136,43 @@ const PaymentManagementPage: React.FC = () => {
{}
-
-
-

- Payment Management -

+
+
+
+
+

+ Payment Management +

+
+

Track payment transactions

+
+ ({ + 'Transaction ID': p.transaction_id || `PAY-${p.id}`, + 'Booking Number': p.booking?.booking_number || 'N/A', + 'Customer': p.booking?.user?.full_name || p.booking?.user?.email || 'N/A', + 'Payment Method': p.payment_method || 'N/A', + 'Payment Type': p.payment_type || 'N/A', + 'Amount': formatCurrency(p.amount || 0), + 'Status': p.payment_status, + 'Payment Date': p.payment_date ? formatDate(p.payment_date) : 'N/A', + 'Created At': p.created_at ? formatDate(p.created_at) : 'N/A' + }))} + filename="payments" + title="Payment Transactions Report" + customHeaders={{ + 'Transaction ID': 'Transaction ID', + 'Booking Number': 'Booking Number', + 'Customer': 'Customer', + 'Payment Method': 'Payment Method', + 'Payment Type': 'Payment Type', + 'Amount': 'Amount', + 'Status': 'Status', + 'Payment Date': 'Payment Date', + 'Created At': 'Created At' + }} + />
-

Track payment transactions

{} diff --git a/Frontend/src/pages/admin/UserManagementPage.tsx b/Frontend/src/pages/admin/UserManagementPage.tsx index 505342ff..748d6c3d 100644 --- a/Frontend/src/pages/admin/UserManagementPage.tsx +++ b/Frontend/src/pages/admin/UserManagementPage.tsx @@ -417,6 +417,7 @@ const UserManagementPage: React.FC = () => { > +
diff --git a/Frontend/src/pages/customer/BookingPage.tsx b/Frontend/src/pages/customer/BookingPage.tsx index 11e0c6cf..60ce451c 100644 --- a/Frontend/src/pages/customer/BookingPage.tsx +++ b/Frontend/src/pages/customer/BookingPage.tsx @@ -74,12 +74,14 @@ const BookingPage: React.FC = () => { 'Please login to make a booking' ); openModal('login'); - } else if (userInfo?.role === 'admin' || userInfo?.role === 'staff') { - toast.error('Admin and staff users cannot make bookings'); + } else if (userInfo?.role === 'admin' || userInfo?.role === 'staff' || userInfo?.role === 'accountant') { + toast.error('Admin, staff, and accountant users cannot make bookings'); if (userInfo?.role === 'admin') { navigate('/admin/dashboard', { replace: true }); - } else { + } else if (userInfo?.role === 'staff') { navigate('/staff/dashboard', { replace: true }); + } else if (userInfo?.role === 'accountant') { + navigate('/accountant/dashboard', { replace: true }); } } }, [isAuthenticated, userInfo, navigate, id]); diff --git a/Frontend/src/utils/exportUtils.ts b/Frontend/src/utils/exportUtils.ts new file mode 100644 index 00000000..bb48a1e4 --- /dev/null +++ b/Frontend/src/utils/exportUtils.ts @@ -0,0 +1,310 @@ +/** + * Luxury Export Utilities + * Provides beautiful export functionality for financial data in multiple formats + */ + +export type ExportFormat = 'csv' | 'json' | 'pdf' | 'xlsx'; + +interface ExportOptions { + filename?: string; + title?: string; + headers?: string[]; + data: any[]; + format: ExportFormat; +} + +/** + * Export data to CSV format + */ +export const exportToCSV = (options: ExportOptions): void => { + const { filename = 'export', data, headers } = options; + + if (!data || data.length === 0) { + throw new Error('No data to export'); + } + + // Get headers from first object if not provided + const csvHeaders = headers || Object.keys(data[0]); + + // Create CSV content + const csvContent = [ + csvHeaders.join(','), + ...data.map(row => + csvHeaders.map(header => { + const value = row[header] ?? ''; + // Escape commas and quotes + if (typeof value === 'string' && (value.includes(',') || value.includes('"') || value.includes('\n'))) { + return `"${value.replace(/"/g, '""')}"`; + } + return value; + }).join(',') + ) + ].join('\n'); + + // Create blob and download + const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }); + const link = document.createElement('a'); + const url = URL.createObjectURL(blob); + link.setAttribute('href', url); + link.setAttribute('download', `${filename}-${new Date().toISOString().split('T')[0]}.csv`); + link.style.visibility = 'hidden'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + URL.revokeObjectURL(url); +}; + +/** + * Export data to JSON format + */ +export const exportToJSON = (options: ExportOptions): void => { + const { filename = 'export', data } = options; + + if (!data || data.length === 0) { + throw new Error('No data to export'); + } + + const jsonContent = JSON.stringify(data, null, 2); + const blob = new Blob([jsonContent], { type: 'application/json;charset=utf-8;' }); + const link = document.createElement('a'); + const url = URL.createObjectURL(blob); + link.setAttribute('href', url); + link.setAttribute('download', `${filename}-${new Date().toISOString().split('T')[0]}.json`); + link.style.visibility = 'hidden'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + URL.revokeObjectURL(url); +}; + +/** + * Export data to PDF format (using browser print functionality with styling) + */ +export const exportToPDF = (options: ExportOptions): void => { + const { filename = 'export', data, title, headers } = options; + + if (!data || data.length === 0) { + throw new Error('No data to export'); + } + + const pdfHeaders = headers || Object.keys(data[0]); + + // Create a styled HTML table for PDF + const htmlContent = ` + + + + + ${title || filename} + + + +
+

${title || 'Financial Report'}

+

Generated on ${new Date().toLocaleDateString('en-US', { + year: 'numeric', + month: 'long', + day: 'numeric', + hour: '2-digit', + minute: '2-digit' + })}

+
+ + + + ${pdfHeaders.map(header => ``).join('')} + + + + ${data.map(row => ` + + ${pdfHeaders.map(header => ``).join('')} + + `).join('')} + +
${header.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase())}
${row[header] ?? ''}
+ + + + `; + + // Open in new window and trigger print + const printWindow = window.open('', '_blank'); + if (printWindow) { + printWindow.document.write(htmlContent); + printWindow.document.close(); + printWindow.onload = () => { + setTimeout(() => { + printWindow.print(); + }, 250); + }; + } +}; + +/** + * Export data to Excel format (XLSX) - using CSV as fallback with .xlsx extension + * Note: For true Excel format, you would need a library like xlsx + */ +export const exportToXLSX = (options: ExportOptions): void => { + const { filename = 'export', data, headers } = options; + + if (!data || data.length === 0) { + throw new Error('No data to export'); + } + + // For now, we'll use CSV format but with .xlsx extension + // Excel can open CSV files, and this works without additional dependencies + const csvHeaders = headers || Object.keys(data[0]); + + const csvContent = [ + csvHeaders.join(','), + ...data.map(row => + csvHeaders.map(header => { + const value = row[header] ?? ''; + if (typeof value === 'string' && (value.includes(',') || value.includes('"') || value.includes('\n'))) { + return `"${value.replace(/"/g, '""')}"`; + } + return value; + }).join(',') + ) + ].join('\n'); + + // Create blob with Excel-compatible MIME type + const blob = new Blob(['\ufeff' + csvContent], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8;' }); + const link = document.createElement('a'); + const url = URL.createObjectURL(blob); + link.setAttribute('href', url); + link.setAttribute('download', `${filename}-${new Date().toISOString().split('T')[0]}.xlsx`); + link.style.visibility = 'hidden'; + document.body.appendChild(link); + link.click(); + document.body.removeChild(link); + URL.revokeObjectURL(url); +}; + +/** + * Main export function that routes to the appropriate format + */ +export const exportData = (options: ExportOptions): void => { + try { + switch (options.format) { + case 'csv': + exportToCSV(options); + break; + case 'json': + exportToJSON(options); + break; + case 'pdf': + exportToPDF(options); + break; + case 'xlsx': + exportToXLSX(options); + break; + default: + throw new Error(`Unsupported export format: ${options.format}`); + } + } catch (error: any) { + throw new Error(`Export failed: ${error.message}`); + } +}; + +/** + * Helper to format data for export + */ +export const formatDataForExport = (data: any[], customHeaders?: Record): { headers: string[], formattedData: any[] } => { + if (!data || data.length === 0) { + return { headers: [], formattedData: [] }; + } + + const headers = customHeaders ? Object.keys(customHeaders) : Object.keys(data[0]); + const formattedData = data.map(row => { + const formatted: any = {}; + headers.forEach(header => { + const value = row[header]; + // Format dates + if (value && typeof value === 'string' && /^\d{4}-\d{2}-\d{2}/.test(value)) { + formatted[header] = new Date(value).toLocaleDateString(); + } else { + formatted[header] = value ?? ''; + } + }); + return formatted; + }); + + const displayHeaders = customHeaders + ? headers.map(h => customHeaders[h] || h) + : headers.map(h => h.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase())); + + return { headers: displayHeaders, formattedData }; +}; +