From 3f5bcfad683da626e1c162699b07f3df3405421f Mon Sep 17 00:00:00 2001 From: Iliyan Angelov Date: Fri, 26 Sep 2025 00:45:31 +0300 Subject: [PATCH] update --- gnx-react/app/layout.tsx | 5 +- .../gnx/__pycache__/settings.cpython-312.pyc | Bin 5560 -> 5568 bytes gnx-react/backend/logs/django.log | 323 + .../components/pages/about/AboutBanner.tsx | 4 +- .../shared/layout/LayoutWrapper.tsx | 17 + .../components/shared/layout/Preloader.tsx | 387 + .../shared/layout/README-Preloader.md | 106 + .../shared/layout/header/OffcanvasMenu.tsx | 2 +- gnx-react/lib/api/aboutService.ts | 4 +- gnx-react/venv/bin/activate | 4 +- gnx-react/venv/bin/activate.csh | 2 +- gnx-react/venv/bin/activate.fish | 2 +- gnx-react/venv/bin/celery | 2 +- gnx-react/venv/bin/django-admin | 2 +- gnx-react/venv/bin/normalizer | 8 - gnx-react/venv/bin/pip | 2 +- gnx-react/venv/bin/pip3 | 2 +- gnx-react/venv/bin/pip3.12 | 2 +- gnx-react/venv/bin/sqlformat | 2 +- .../Django-4.2.7.dist-info/RECORD | 2 +- .../__pycache__/BdfFontFile.cpython-312.pyc | Bin 4134 -> 4142 bytes .../BlpImagePlugin.cpython-312.pyc | Bin 22834 -> 22842 bytes .../BmpImagePlugin.cpython-312.pyc | Bin 16213 -> 16221 bytes .../BufrStubImagePlugin.cpython-312.pyc | Bin 2419 -> 2427 bytes .../__pycache__/ContainerIO.cpython-312.pyc | Bin 3936 -> 3944 bytes .../CurImagePlugin.cpython-312.pyc | Bin 2188 -> 2196 bytes .../DcxImagePlugin.cpython-312.pyc | Bin 2553 -> 2561 bytes .../DdsImagePlugin.cpython-312.pyc | Bin 11266 -> 11274 bytes .../EpsImagePlugin.cpython-312.pyc | Bin 15991 -> 15999 bytes .../PIL/__pycache__/ExifTags.cpython-312.pyc | Bin 11487 -> 11495 bytes .../FitsImagePlugin.cpython-312.pyc | Bin 2715 -> 2723 bytes .../FliImagePlugin.cpython-312.pyc | Bin 6291 -> 6299 bytes .../PIL/__pycache__/FontFile.cpython-312.pyc | Bin 3880 -> 3888 bytes .../FpxImagePlugin.cpython-312.pyc | Bin 6929 -> 6937 bytes .../FtexImagePlugin.cpython-312.pyc | Bin 5070 -> 5078 bytes .../GbrImagePlugin.cpython-312.pyc | Bin 3545 -> 3553 bytes .../__pycache__/GdImageFile.cpython-312.pyc | Bin 3115 -> 3123 bytes .../GifImagePlugin.cpython-312.pyc | Bin 37637 -> 37645 bytes .../GimpGradientFile.cpython-312.pyc | Bin 5036 -> 5044 bytes .../GimpPaletteFile.cpython-312.pyc | Bin 2010 -> 2018 bytes .../GribStubImagePlugin.cpython-312.pyc | Bin 2417 -> 2425 bytes .../Hdf5StubImagePlugin.cpython-312.pyc | Bin 2392 -> 2400 bytes .../IcnsImagePlugin.cpython-312.pyc | Bin 16488 -> 16496 bytes .../IcoImagePlugin.cpython-312.pyc | Bin 13854 -> 13862 bytes .../__pycache__/ImImagePlugin.cpython-312.pyc | Bin 12013 -> 12021 bytes .../PIL/__pycache__/Image.cpython-312.pyc | Bin 157809 -> 157817 bytes .../__pycache__/ImageChops.cpython-312.pyc | Bin 10657 -> 10665 bytes .../PIL/__pycache__/ImageCms.cpython-312.pyc | Bin 39618 -> 39626 bytes .../__pycache__/ImageColor.cpython-312.pyc | Bin 12009 -> 12017 bytes .../PIL/__pycache__/ImageDraw.cpython-312.pyc | Bin 36987 -> 36995 bytes .../__pycache__/ImageDraw2.cpython-312.pyc | Bin 7939 -> 7947 bytes .../__pycache__/ImageEnhance.cpython-312.pyc | Bin 4825 -> 4833 bytes .../PIL/__pycache__/ImageFile.cpython-312.pyc | Bin 27657 -> 27665 bytes .../__pycache__/ImageFilter.cpython-312.pyc | Bin 21266 -> 21274 bytes .../PIL/__pycache__/ImageFont.cpython-312.pyc | Bin 63397 -> 63405 bytes .../PIL/__pycache__/ImageGrab.cpython-312.pyc | Bin 6718 -> 6726 bytes .../PIL/__pycache__/ImageMath.cpython-312.pyc | Bin 12518 -> 12526 bytes .../PIL/__pycache__/ImageMode.cpython-312.pyc | Bin 2781 -> 2789 bytes .../__pycache__/ImageMorph.cpython-312.pyc | Bin 10731 -> 10739 bytes .../PIL/__pycache__/ImageOps.cpython-312.pyc | Bin 26382 -> 26390 bytes .../__pycache__/ImagePalette.cpython-312.pyc | Bin 10858 -> 10866 bytes .../PIL/__pycache__/ImagePath.cpython-312.pyc | Bin 285 -> 293 bytes .../PIL/__pycache__/ImageQt.cpython-312.pyc | Bin 7162 -> 7170 bytes .../__pycache__/ImageSequence.cpython-312.pyc | Bin 2903 -> 2911 bytes .../PIL/__pycache__/ImageShow.cpython-312.pyc | Bin 11491 -> 11499 bytes .../PIL/__pycache__/ImageStat.cpython-312.pyc | Bin 6045 -> 6053 bytes .../PIL/__pycache__/ImageTk.cpython-312.pyc | Bin 10330 -> 10338 bytes .../ImageTransform.cpython-312.pyc | Bin 4051 -> 4059 bytes .../PIL/__pycache__/ImageWin.cpython-312.pyc | Bin 10662 -> 10670 bytes .../ImtImagePlugin.cpython-312.pyc | Bin 2385 -> 2393 bytes .../IptcImagePlugin.cpython-312.pyc | Bin 7983 -> 7991 bytes .../Jpeg2KImagePlugin.cpython-312.pyc | Bin 15300 -> 15308 bytes .../JpegImagePlugin.cpython-312.pyc | Bin 30818 -> 30826 bytes .../__pycache__/JpegPresets.cpython-312.pyc | Bin 8067 -> 8075 bytes .../McIdasImagePlugin.cpython-312.pyc | Bin 2026 -> 2034 bytes .../MicImagePlugin.cpython-312.pyc | Bin 3458 -> 3466 bytes .../MpegImagePlugin.cpython-312.pyc | Bin 3226 -> 3234 bytes .../MpoImagePlugin.cpython-312.pyc | Bin 8193 -> 8201 bytes .../MspImagePlugin.cpython-312.pyc | Bin 5472 -> 5480 bytes .../PIL/__pycache__/PSDraw.cpython-312.pyc | Bin 7568 -> 7576 bytes .../__pycache__/PaletteFile.cpython-312.pyc | Bin 1775 -> 1783 bytes .../PalmImagePlugin.cpython-312.pyc | Bin 9415 -> 9423 bytes .../PcdImagePlugin.cpython-312.pyc | Bin 1860 -> 1868 bytes .../__pycache__/PcfFontFile.cpython-312.pyc | Bin 9427 -> 9435 bytes .../PcxImagePlugin.cpython-312.pyc | Bin 7036 -> 7044 bytes .../PdfImagePlugin.cpython-312.pyc | Bin 9103 -> 9111 bytes .../PIL/__pycache__/PdfParser.cpython-312.pyc | Bin 49369 -> 49377 bytes .../PixarImagePlugin.cpython-312.pyc | Bin 1759 -> 1767 bytes .../PngImagePlugin.cpython-312.pyc | Bin 56341 -> 56349 bytes .../PpmImagePlugin.cpython-312.pyc | Bin 12724 -> 12732 bytes .../PsdImagePlugin.cpython-312.pyc | Bin 8992 -> 9000 bytes .../PIL/__pycache__/PyAccess.cpython-312.pyc | Bin 16115 -> 16123 bytes .../QoiImagePlugin.cpython-312.pyc | Bin 6227 -> 6235 bytes .../SgiImagePlugin.cpython-312.pyc | Bin 7898 -> 7906 bytes .../SpiderImagePlugin.cpython-312.pyc | Bin 11426 -> 11434 bytes .../SunImagePlugin.cpython-312.pyc | Bin 3161 -> 3169 bytes .../PIL/__pycache__/TarIO.cpython-312.pyc | Bin 2255 -> 2263 bytes .../TgaImagePlugin.cpython-312.pyc | Bin 7514 -> 7522 bytes .../TiffImagePlugin.cpython-312.pyc | Bin 92048 -> 92056 bytes .../PIL/__pycache__/TiffTags.cpython-312.pyc | Bin 17672 -> 17680 bytes .../__pycache__/WalImageFile.cpython-312.pyc | Bin 3832 -> 3840 bytes .../WebPImagePlugin.cpython-312.pyc | Bin 14281 -> 14289 bytes .../WmfImagePlugin.cpython-312.pyc | Bin 5732 -> 5740 bytes .../XVThumbImagePlugin.cpython-312.pyc | Bin 2413 -> 2421 bytes .../XbmImagePlugin.cpython-312.pyc | Bin 3748 -> 3756 bytes .../XpmImagePlugin.cpython-312.pyc | Bin 4071 -> 4079 bytes .../PIL/__pycache__/__init__.cpython-312.pyc | Bin 1971 -> 1979 bytes .../PIL/__pycache__/__main__.cpython-312.pyc | Bin 236 -> 244 bytes .../PIL/__pycache__/_binary.cpython-312.pyc | Bin 3023 -> 3031 bytes .../__pycache__/_deprecate.cpython-312.pyc | Bin 2458 -> 2466 bytes .../_tkinter_finder.cpython-312.pyc | Bin 688 -> 696 bytes .../PIL/__pycache__/_util.cpython-312.pyc | Bin 1225 -> 1233 bytes .../PIL/__pycache__/_version.cpython-312.pyc | Bin 201 -> 209 bytes .../PIL/__pycache__/features.cpython-312.pyc | Bin 12259 -> 12267 bytes .../__pycache__/click_plugins.cpython-312.pyc | Bin 7133 -> 7141 bytes .../__pycache__/decouple.cpython-312.pyc | Bin 14808 -> 14816 bytes .../__pycache__/inflection.cpython-312.pyc | Bin 15035 -> 15043 bytes .../__pycache__/six.cpython-312.pyc | Bin 41401 -> 41409 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 10599 -> 10607 bytes .../__pycache__/override.cpython-312.pyc | Bin 287 -> 295 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 858 -> 866 bytes .../amqp/__pycache__/__init__.cpython-312.pyc | Bin 2129 -> 2137 bytes .../abstract_channel.cpython-312.pyc | Bin 6145 -> 6153 bytes .../__pycache__/basic_message.cpython-312.pyc | Bin 3300 -> 3308 bytes .../amqp/__pycache__/channel.cpython-312.pyc | Bin 75226 -> 75234 bytes .../__pycache__/connection.cpython-312.pyc | Bin 30114 -> 30122 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 11022 -> 11030 bytes .../method_framing.cpython-312.pyc | Bin 6593 -> 6601 bytes .../amqp/__pycache__/platform.cpython-312.pyc | Bin 2821 -> 2829 bytes .../amqp/__pycache__/protocol.cpython-312.pyc | Bin 471 -> 479 bytes .../amqp/__pycache__/sasl.cpython-312.pyc | Bin 8390 -> 8398 bytes .../__pycache__/serialization.cpython-312.pyc | Bin 20312 -> 20320 bytes .../amqp/__pycache__/spec.cpython-312.pyc | Bin 3699 -> 3707 bytes .../__pycache__/transport.cpython-312.pyc | Bin 25450 -> 25458 bytes .../amqp/__pycache__/utils.cpython-312.pyc | Bin 2466 -> 2474 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 204 -> 212 bytes .../__pycache__/compatibility.cpython-312.pyc | Bin 1788 -> 1796 bytes .../current_thread_executor.cpython-312.pyc | Bin 5848 -> 5856 bytes .../asgiref/__pycache__/local.cpython-312.pyc | Bin 5969 -> 5977 bytes .../__pycache__/server.cpython-312.pyc | Bin 8699 -> 8707 bytes .../asgiref/__pycache__/sync.cpython-312.pyc | Bin 20573 -> 20581 bytes .../__pycache__/testing.cpython-312.pyc | Bin 7212 -> 7220 bytes .../__pycache__/timeout.cpython-312.pyc | Bin 4887 -> 4895 bytes .../__pycache__/typing.cpython-312.pyc | Bin 9905 -> 9913 bytes .../asgiref/__pycache__/wsgi.cpython-312.pyc | Bin 7314 -> 7322 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1684 -> 1692 bytes .../billiard/__pycache__/_ext.cpython-312.pyc | Bin 1224 -> 1232 bytes .../billiard/__pycache__/_win.cpython-312.pyc | Bin 4014 -> 4022 bytes .../__pycache__/common.cpython-312.pyc | Bin 5404 -> 5412 bytes .../__pycache__/compat.cpython-312.pyc | Bin 11894 -> 11902 bytes .../__pycache__/connection.cpython-312.pyc | Bin 45443 -> 45451 bytes .../__pycache__/context.cpython-312.pyc | Bin 18016 -> 18024 bytes .../__pycache__/einfo.cpython-312.pyc | Bin 9053 -> 9061 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2679 -> 2687 bytes .../__pycache__/forkserver.cpython-312.pyc | Bin 12016 -> 12024 bytes .../billiard/__pycache__/heap.cpython-312.pyc | Bin 12606 -> 12614 bytes .../__pycache__/managers.cpython-312.pyc | Bin 54767 -> 54775 bytes .../billiard/__pycache__/pool.cpython-312.pyc | Bin 96241 -> 96249 bytes .../__pycache__/popen_fork.cpython-312.pyc | Bin 4199 -> 4207 bytes .../popen_forkserver.cpython-312.pyc | Bin 3662 -> 3670 bytes .../popen_spawn_posix.cpython-312.pyc | Bin 3764 -> 3772 bytes .../popen_spawn_win32.cpython-312.pyc | Bin 5645 -> 5653 bytes .../__pycache__/process.cpython-312.pyc | Bin 16928 -> 16936 bytes .../__pycache__/queues.cpython-312.pyc | Bin 19649 -> 19657 bytes .../__pycache__/reduction.cpython-312.pyc | Bin 14481 -> 14489 bytes .../resource_sharer.cpython-312.pyc | Bin 9004 -> 9012 bytes .../semaphore_tracker.cpython-312.pyc | Bin 6739 -> 6747 bytes .../__pycache__/sharedctypes.cpython-312.pyc | Bin 11496 -> 11504 bytes .../__pycache__/spawn.cpython-312.pyc | Bin 15361 -> 15369 bytes .../__pycache__/synchronize.cpython-312.pyc | Bin 21908 -> 21916 bytes .../billiard/__pycache__/util.cpython-312.pyc | Bin 8836 -> 8844 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 5933 -> 5941 bytes .../__pycache__/connection.cpython-312.pyc | Bin 3320 -> 3328 bytes .../celery-5.3.4.dist-info/RECORD | 2 +- .../__pycache__/__init__.cpython-312.pyc | Bin 6172 -> 6180 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 790 -> 798 bytes .../celery/__pycache__/_state.cpython-312.pyc | Bin 6172 -> 6180 bytes .../celery/__pycache__/beat.cpython-312.pyc | Bin 36462 -> 36470 bytes .../__pycache__/bootsteps.cpython-312.pyc | Bin 20820 -> 20828 bytes .../celery/__pycache__/canvas.cpython-312.pyc | Bin 99188 -> 99196 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 13887 -> 13895 bytes .../celery/__pycache__/local.cpython-312.pyc | Bin 25141 -> 25149 bytes .../__pycache__/platforms.cpython-312.pyc | Bin 35902 -> 35910 bytes .../celery/__pycache__/result.cpython-312.pyc | Bin 52464 -> 52472 bytes .../__pycache__/schedules.cpython-312.pyc | Bin 40027 -> 40035 bytes .../__pycache__/signals.cpython-312.pyc | Bin 3366 -> 3374 bytes .../celery/__pycache__/states.cpython-312.pyc | Bin 3603 -> 3611 bytes .../app/__pycache__/__init__.cpython-312.pyc | Bin 3556 -> 3564 bytes .../app/__pycache__/amqp.cpython-312.pyc | Bin 25406 -> 25414 bytes .../__pycache__/annotations.cpython-312.pyc | Bin 2556 -> 2564 bytes .../app/__pycache__/autoretry.cpython-312.pyc | Bin 2698 -> 2706 bytes .../app/__pycache__/backends.cpython-312.pyc | Bin 3605 -> 3613 bytes .../app/__pycache__/base.cpython-312.pyc | Bin 60407 -> 60415 bytes .../app/__pycache__/builtins.cpython-312.pyc | Bin 9757 -> 9765 bytes .../app/__pycache__/control.cpython-312.pyc | Bin 33116 -> 33124 bytes .../app/__pycache__/defaults.cpython-312.pyc | Bin 18035 -> 18043 bytes .../app/__pycache__/events.cpython-312.pyc | Bin 2533 -> 2541 bytes .../app/__pycache__/log.cpython-312.pyc | Bin 11598 -> 11606 bytes .../app/__pycache__/registry.cpython-312.pyc | Bin 3445 -> 3453 bytes .../app/__pycache__/routes.cpython-312.pyc | Bin 5975 -> 5983 bytes .../app/__pycache__/task.cpython-312.pyc | Bin 43718 -> 43726 bytes .../app/__pycache__/trace.cpython-312.pyc | Bin 29895 -> 29903 bytes .../app/__pycache__/utils.cpython-312.pyc | Bin 18161 -> 18169 bytes .../apps/__pycache__/__init__.cpython-312.pyc | Bin 182 -> 190 bytes .../apps/__pycache__/beat.cpython-312.pyc | Bin 8727 -> 8735 bytes .../apps/__pycache__/multi.cpython-312.pyc | Bin 25857 -> 25865 bytes .../apps/__pycache__/worker.cpython-312.pyc | Bin 19409 -> 19417 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 217 -> 225 bytes .../__pycache__/arangodb.cpython-312.pyc | Bin 7586 -> 7594 bytes .../__pycache__/asynchronous.cpython-312.pyc | Bin 17239 -> 17247 bytes .../azureblockblob.cpython-312.pyc | Bin 7106 -> 7114 bytes .../backends/__pycache__/base.cpython-312.pyc | Bin 50756 -> 50764 bytes .../__pycache__/cache.cpython-312.pyc | Bin 8436 -> 8444 bytes .../__pycache__/cassandra.cpython-312.pyc | Bin 10403 -> 10411 bytes .../__pycache__/consul.cpython-312.pyc | Bin 5292 -> 5300 bytes .../__pycache__/cosmosdbsql.cpython-312.pyc | Bin 9243 -> 9251 bytes .../__pycache__/couchbase.cpython-312.pyc | Bin 5172 -> 5180 bytes .../__pycache__/couchdb.cpython-312.pyc | Bin 4989 -> 4997 bytes .../__pycache__/dynamodb.cpython-312.pyc | Bin 16737 -> 16745 bytes .../__pycache__/elasticsearch.cpython-312.pyc | Bin 10710 -> 10718 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 6432 -> 6440 bytes .../__pycache__/mongodb.cpython-312.pyc | Bin 13627 -> 13635 bytes .../__pycache__/redis.cpython-312.pyc | Bin 33794 -> 33802 bytes .../backends/__pycache__/rpc.cpython-312.pyc | Bin 16342 -> 16350 bytes .../backends/__pycache__/s3.cpython-312.pyc | Bin 4533 -> 4541 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 12039 -> 12047 bytes .../__pycache__/models.cpython-312.pyc | Bin 5850 -> 5858 bytes .../__pycache__/session.cpython-312.pyc | Bin 3897 -> 3905 bytes .../bin/__pycache__/__init__.cpython-312.pyc | Bin 181 -> 189 bytes .../bin/__pycache__/amqp.cpython-312.pyc | Bin 13847 -> 13855 bytes .../bin/__pycache__/base.cpython-312.pyc | Bin 14733 -> 14741 bytes .../bin/__pycache__/beat.cpython-312.pyc | Bin 3420 -> 3428 bytes .../bin/__pycache__/call.cpython-312.pyc | Bin 2534 -> 2542 bytes .../bin/__pycache__/celery.cpython-312.pyc | Bin 10651 -> 10659 bytes .../bin/__pycache__/control.cpython-312.pyc | Bin 8256 -> 8264 bytes .../bin/__pycache__/events.cpython-312.pyc | Bin 3699 -> 3707 bytes .../bin/__pycache__/graph.cpython-312.pyc | Bin 11268 -> 11276 bytes .../bin/__pycache__/list.cpython-312.pyc | Bin 2174 -> 2182 bytes .../bin/__pycache__/logtool.cpython-312.pyc | Bin 8417 -> 8425 bytes .../bin/__pycache__/migrate.cpython-312.pyc | Bin 2567 -> 2575 bytes .../bin/__pycache__/multi.cpython-312.pyc | Bin 25331 -> 25339 bytes .../bin/__pycache__/purge.cpython-312.pyc | Bin 3654 -> 3662 bytes .../bin/__pycache__/result.cpython-312.pyc | Bin 1566 -> 1574 bytes .../bin/__pycache__/shell.cpython-312.pyc | Bin 6861 -> 6869 bytes .../bin/__pycache__/upgrade.cpython-312.pyc | Bin 4886 -> 4894 bytes .../bin/__pycache__/worker.cpython-312.pyc | Bin 14217 -> 14225 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1469 -> 1477 bytes .../__pycache__/asynpool.cpython-312.pyc | Bin 56841 -> 56849 bytes .../__pycache__/base.cpython-312.pyc | Bin 7640 -> 7648 bytes .../__pycache__/eventlet.cpython-312.pyc | Bin 9090 -> 9098 bytes .../__pycache__/gevent.cpython-312.pyc | Bin 5997 -> 6005 bytes .../__pycache__/prefork.cpython-312.pyc | Bin 8816 -> 8824 bytes .../__pycache__/solo.cpython-312.pyc | Bin 1526 -> 1534 bytes .../__pycache__/thread.cpython-312.pyc | Bin 3319 -> 3327 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 185 -> 193 bytes .../__pycache__/abortable.cpython-312.pyc | Bin 5752 -> 5760 bytes .../__pycache__/migrate.cpython-312.pyc | Bin 18582 -> 18590 bytes .../__pycache__/pytest.cpython-312.pyc | Bin 7585 -> 7593 bytes .../contrib/__pycache__/rdb.cpython-312.pyc | Bin 8153 -> 8161 bytes .../__pycache__/sphinx.cpython-312.pyc | Bin 4549 -> 4557 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../testing/__pycache__/app.cpython-312.pyc | Bin 4850 -> 4858 bytes .../__pycache__/manager.cpython-312.pyc | Bin 12626 -> 12634 bytes .../testing/__pycache__/mocks.cpython-312.pyc | Bin 5143 -> 5151 bytes .../testing/__pycache__/tasks.cpython-312.pyc | Bin 498 -> 506 bytes .../__pycache__/worker.cpython-312.pyc | Bin 9350 -> 9358 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 676 -> 684 bytes .../__pycache__/cursesmon.cpython-312.pyc | Bin 29685 -> 29693 bytes .../__pycache__/dispatcher.cpython-312.pyc | Bin 11681 -> 11689 bytes .../events/__pycache__/dumper.cpython-312.pyc | Bin 5795 -> 5803 bytes .../events/__pycache__/event.cpython-312.pyc | Bin 2127 -> 2135 bytes .../__pycache__/receiver.cpython-312.pyc | Bin 7025 -> 7033 bytes .../__pycache__/snapshot.cpython-312.pyc | Bin 6039 -> 6047 bytes .../events/__pycache__/state.cpython-312.pyc | Bin 33474 -> 33482 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../fixups/__pycache__/django.cpython-312.pyc | Bin 11739 -> 11747 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 791 -> 799 bytes .../loaders/__pycache__/app.cpython-312.pyc | Bin 549 -> 557 bytes .../loaders/__pycache__/base.cpython-312.pyc | Bin 12391 -> 12399 bytes .../__pycache__/default.cpython-312.pyc | Bin 2174 -> 2182 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3075 -> 3083 bytes .../__pycache__/certificate.cpython-312.pyc | Bin 7459 -> 7467 bytes .../security/__pycache__/key.cpython-312.pyc | Bin 2191 -> 2199 bytes .../__pycache__/serialization.cpython-312.pyc | Bin 5255 -> 5263 bytes .../__pycache__/utils.cpython-312.pyc | Bin 1476 -> 1484 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 969 -> 977 bytes .../__pycache__/abstract.cpython-312.pyc | Bin 6289 -> 6297 bytes .../__pycache__/collections.cpython-312.pyc | Bin 39190 -> 39198 bytes .../utils/__pycache__/debug.cpython-312.pyc | Bin 7104 -> 7112 bytes .../__pycache__/deprecated.cpython-312.pyc | Bin 5450 -> 5458 bytes .../__pycache__/functional.cpython-312.pyc | Bin 18165 -> 18173 bytes .../utils/__pycache__/graph.cpython-312.pyc | Bin 16545 -> 16553 bytes .../utils/__pycache__/imports.cpython-312.pyc | Bin 6855 -> 6863 bytes .../utils/__pycache__/iso8601.cpython-312.pyc | Bin 3544 -> 3552 bytes .../utils/__pycache__/log.cpython-312.pyc | Bin 11827 -> 11835 bytes .../__pycache__/nodenames.cpython-312.pyc | Bin 3923 -> 3931 bytes .../utils/__pycache__/objects.cpython-312.pyc | Bin 6121 -> 6129 bytes .../__pycache__/saferepr.cpython-312.pyc | Bin 9683 -> 9691 bytes .../__pycache__/serialization.cpython-312.pyc | Bin 10858 -> 10866 bytes .../utils/__pycache__/sysinfo.cpython-312.pyc | Bin 2814 -> 2822 bytes .../utils/__pycache__/term.cpython-312.pyc | Bin 9696 -> 9704 bytes .../utils/__pycache__/text.cpython-312.pyc | Bin 9859 -> 9867 bytes .../utils/__pycache__/threads.cpython-312.pyc | Bin 14920 -> 14928 bytes .../utils/__pycache__/time.cpython-312.pyc | Bin 21971 -> 21979 bytes .../utils/__pycache__/timer2.cpython-312.pyc | Bin 7878 -> 7886 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 285 -> 293 bytes .../__pycache__/signal.cpython-312.pyc | Bin 14748 -> 14756 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 820 -> 828 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 290 -> 298 bytes .../__pycache__/autoscale.cpython-312.pyc | Bin 8331 -> 8339 bytes .../__pycache__/components.cpython-312.pyc | Bin 12260 -> 12268 bytes .../__pycache__/control.cpython-312.pyc | Bin 28131 -> 28139 bytes .../__pycache__/heartbeat.cpython-312.pyc | Bin 3270 -> 3278 bytes .../worker/__pycache__/loops.cpython-312.pyc | Bin 5632 -> 5640 bytes .../worker/__pycache__/pidbox.cpython-312.pyc | Bin 7320 -> 7328 bytes .../__pycache__/request.cpython-312.pyc | Bin 35078 -> 35086 bytes .../worker/__pycache__/state.cpython-312.pyc | Bin 12115 -> 12123 bytes .../__pycache__/strategy.cpython-312.pyc | Bin 9240 -> 9248 bytes .../worker/__pycache__/worker.cpython-312.pyc | Bin 21218 -> 21226 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 646 -> 654 bytes .../__pycache__/agent.cpython-312.pyc | Bin 1345 -> 1353 bytes .../__pycache__/connection.cpython-312.pyc | Bin 1976 -> 1984 bytes .../__pycache__/consumer.cpython-312.pyc | Bin 36266 -> 36274 bytes .../__pycache__/control.cpython-312.pyc | Bin 2051 -> 2059 bytes .../__pycache__/events.cpython-312.pyc | Bin 2911 -> 2919 bytes .../__pycache__/gossip.cpython-312.pyc | Bin 11185 -> 11193 bytes .../__pycache__/heart.cpython-312.pyc | Bin 1854 -> 1862 bytes .../__pycache__/mingle.cpython-312.pyc | Bin 4974 -> 4982 bytes .../__pycache__/tasks.cpython-312.pyc | Bin 3276 -> 3284 bytes .../certifi-2025.8.3.dist-info/METADATA | 77 - .../certifi-2025.8.3.dist-info/RECORD | 14 - .../certifi-2025.8.3.dist-info/WHEEL | 5 - .../licenses/LICENSE | 20 - .../certifi-2025.8.3.dist-info/top_level.txt | 1 - .../site-packages/certifi/__init__.py | 4 - .../site-packages/certifi/__main__.py | 12 - .../__pycache__/__init__.cpython-312.pyc | Bin 305 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 620 -> 0 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 2052 -> 0 bytes .../python3.12/site-packages/certifi/core.py | 83 - .../python3.12/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 - .../METADATA | 750 -- .../charset_normalizer-3.4.3.dist-info/RECORD | 35 - .../charset_normalizer-3.4.3.dist-info/WHEEL | 7 - .../entry_points.txt | 2 - .../licenses/LICENSE | 21 - .../top_level.txt | 1 - .../charset_normalizer/__init__.py | 48 - .../charset_normalizer/__main__.py | 6 - .../__pycache__/__init__.cpython-312.pyc | Bin 1771 -> 0 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 346 -> 0 bytes .../__pycache__/api.cpython-312.pyc | Bin 18182 -> 0 bytes .../__pycache__/cd.cpython-312.pyc | Bin 13287 -> 0 bytes .../__pycache__/constant.cpython-312.pyc | Bin 40801 -> 0 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 3001 -> 0 bytes .../__pycache__/md.cpython-312.pyc | Bin 24338 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 17118 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 13747 -> 0 bytes .../__pycache__/version.cpython-312.pyc | Bin 373 -> 0 bytes .../site-packages/charset_normalizer/api.py | 669 -- .../site-packages/charset_normalizer/cd.py | 395 - .../charset_normalizer/cli/__init__.py | 8 - .../charset_normalizer/cli/__main__.py | 381 - .../cli/__pycache__/__init__.cpython-312.pyc | Bin 334 -> 0 bytes .../cli/__pycache__/__main__.cpython-312.pyc | Bin 14395 -> 0 bytes .../charset_normalizer/constant.py | 2015 ---- .../charset_normalizer/legacy.py | 80 - .../md.cpython-312-x86_64-linux-gnu.so | Bin 15912 -> 0 bytes .../site-packages/charset_normalizer/md.py | 635 -- .../md__mypyc.cpython-312-x86_64-linux-gnu.so | Bin 289536 -> 0 bytes .../charset_normalizer/models.py | 360 - .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 414 - .../charset_normalizer/version.py | 8 - .../__pycache__/__init__.cpython-312.pyc | Bin 4062 -> 4070 bytes .../click/__pycache__/_compat.cpython-312.pyc | Bin 24184 -> 24192 bytes .../__pycache__/_termui_impl.cpython-312.pyc | Bin 31601 -> 31609 bytes .../__pycache__/_textwrap.cpython-312.pyc | Bin 2415 -> 2423 bytes .../click/__pycache__/_utils.cpython-312.pyc | Bin 1190 -> 1198 bytes .../__pycache__/_winconsole.cpython-312.pyc | Bin 11760 -> 11768 bytes .../click/__pycache__/core.cpython-312.pyc | Bin 133421 -> 133429 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 22127 -> 22135 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 14766 -> 14774 bytes .../__pycache__/formatting.cpython-312.pyc | Bin 13662 -> 13670 bytes .../click/__pycache__/globals.cpython-312.pyc | Bin 2955 -> 2963 bytes .../click/__pycache__/parser.cpython-312.pyc | Bin 20432 -> 20440 bytes .../shell_completion.cpython-312.pyc | Bin 23327 -> 23335 bytes .../click/__pycache__/termui.cpython-312.pyc | Bin 34513 -> 34521 bytes .../click/__pycache__/testing.cpython-312.pyc | Bin 27399 -> 27407 bytes .../click/__pycache__/types.cpython-312.pyc | Bin 50028 -> 50036 bytes .../click/__pycache__/utils.cpython-312.pyc | Bin 24869 -> 24877 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3508 -> 3516 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2499 -> 2507 bytes .../__pycache__/core.cpython-312.pyc | Bin 3699 -> 3707 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 520 -> 528 bytes .../__pycache__/_completer.cpython-312.pyc | Bin 10782 -> 10790 bytes .../__pycache__/_repl.cpython-312.pyc | Bin 4979 -> 4987 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 1148 -> 1156 bytes .../__pycache__/utils.cpython-312.pyc | Bin 7526 -> 7534 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 182 -> 190 bytes .../__pycache__/apps.cpython-312.pyc | Bin 922 -> 930 bytes .../__pycache__/checks.cpython-312.pyc | Bin 5856 -> 5864 bytes .../__pycache__/conf.cpython-312.pyc | Bin 3622 -> 3630 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 411 -> 419 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 8504 -> 8512 bytes .../__pycache__/signals.cpython-312.pyc | Bin 324 -> 332 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1125 -> 1133 bytes .../__pycache__/_common.cpython-312.pyc | Bin 1922 -> 1930 bytes .../__pycache__/_version.cpython-312.pyc | Bin 301 -> 309 bytes .../__pycache__/easter.cpython-312.pyc | Bin 2845 -> 2853 bytes .../__pycache__/relativedelta.cpython-312.pyc | Bin 28358 -> 28366 bytes .../__pycache__/rrule.cpython-312.pyc | Bin 69218 -> 69226 bytes .../__pycache__/tzwin.cpython-312.pyc | Bin 204 -> 212 bytes .../__pycache__/utils.cpython-312.pyc | Bin 2557 -> 2565 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2651 -> 2659 bytes .../__pycache__/_parser.cpython-312.pyc | Bin 61844 -> 61852 bytes .../__pycache__/isoparser.cpython-312.pyc | Bin 15577 -> 15585 bytes .../tz/__pycache__/__init__.cpython-312.pyc | Bin 704 -> 712 bytes .../tz/__pycache__/_common.cpython-312.pyc | Bin 14157 -> 14165 bytes .../tz/__pycache__/_factories.cpython-312.pyc | Bin 4590 -> 4598 bytes .../tz/__pycache__/tz.cpython-312.pyc | Bin 66004 -> 66012 bytes .../tz/__pycache__/win.cpython-312.pyc | Bin 17260 -> 17268 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 7427 -> 7435 bytes .../__pycache__/rebuild.cpython-312.pyc | Bin 3953 -> 3961 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1217 -> 1225 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 466 -> 474 bytes .../__pycache__/shortcuts.cpython-312.pyc | Bin 5742 -> 5750 bytes .../apps/__pycache__/__init__.cpython-312.pyc | Bin 300 -> 308 bytes .../apps/__pycache__/config.cpython-312.pyc | Bin 9208 -> 9216 bytes .../apps/__pycache__/registry.cpython-312.pyc | Bin 18704 -> 18712 bytes .../conf/__pycache__/__init__.cpython-312.pyc | Bin 18249 -> 18257 bytes .../global_settings.cpython-312.pyc | Bin 12689 -> 12697 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 8490 -> 8498 bytes .../ar/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ar/__pycache__/formats.cpython-312.pyc | Bin 432 -> 440 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../ar_DZ/__pycache__/formats.cpython-312.pyc | Bin 740 -> 748 bytes .../az/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../az/__pycache__/formats.cpython-312.pyc | Bin 787 -> 795 bytes .../bg/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../bg/__pycache__/formats.cpython-312.pyc | Bin 388 -> 396 bytes .../bn/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../bn/__pycache__/formats.cpython-312.pyc | Bin 676 -> 684 bytes .../bs/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../bs/__pycache__/formats.cpython-312.pyc | Bin 462 -> 470 bytes .../ca/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ca/__pycache__/formats.cpython-312.pyc | Bin 809 -> 817 bytes .../ckb/__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../ckb/__pycache__/formats.cpython-312.pyc | Bin 560 -> 568 bytes .../cs/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../cs/__pycache__/formats.cpython-312.pyc | Bin 925 -> 933 bytes .../cy/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../cy/__pycache__/formats.cpython-312.pyc | Bin 834 -> 842 bytes .../da/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../da/__pycache__/formats.cpython-312.pyc | Bin 713 -> 721 bytes .../de/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../de/__pycache__/formats.cpython-312.pyc | Bin 728 -> 736 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../de_CH/__pycache__/formats.cpython-312.pyc | Bin 735 -> 743 bytes .../el/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../el/__pycache__/formats.cpython-312.pyc | Bin 821 -> 829 bytes .../en/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../en/__pycache__/formats.cpython-312.pyc | Bin 996 -> 1004 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../en_AU/__pycache__/formats.cpython-312.pyc | Bin 837 -> 845 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../en_GB/__pycache__/formats.cpython-312.pyc | Bin 837 -> 845 bytes .../eo/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../eo/__pycache__/formats.cpython-312.pyc | Bin 996 -> 1004 bytes .../es/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../es/__pycache__/formats.cpython-312.pyc | Bin 826 -> 834 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../es_AR/__pycache__/formats.cpython-312.pyc | Bin 790 -> 798 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../es_CO/__pycache__/formats.cpython-312.pyc | Bin 827 -> 835 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../es_MX/__pycache__/formats.cpython-312.pyc | Bin 827 -> 835 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../es_NI/__pycache__/formats.cpython-312.pyc | Bin 827 -> 835 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../es_PR/__pycache__/formats.cpython-312.pyc | Bin 825 -> 833 bytes .../et/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../et/__pycache__/formats.cpython-312.pyc | Bin 390 -> 398 bytes .../eu/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../eu/__pycache__/formats.cpython-312.pyc | Bin 587 -> 595 bytes .../fa/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../fa/__pycache__/formats.cpython-312.pyc | Bin 553 -> 561 bytes .../fi/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../fi/__pycache__/formats.cpython-312.pyc | Bin 868 -> 876 bytes .../fr/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../fr/__pycache__/formats.cpython-312.pyc | Bin 800 -> 808 bytes .../fy/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../fy/__pycache__/formats.cpython-312.pyc | Bin 191 -> 199 bytes .../ga/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ga/__pycache__/formats.cpython-312.pyc | Bin 384 -> 392 bytes .../gd/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../gd/__pycache__/formats.cpython-312.pyc | Bin 500 -> 508 bytes .../gl/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../gl/__pycache__/formats.cpython-312.pyc | Bin 571 -> 579 bytes .../he/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../he/__pycache__/formats.cpython-312.pyc | Bin 512 -> 520 bytes .../hi/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../hi/__pycache__/formats.cpython-312.pyc | Bin 386 -> 394 bytes .../hr/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../hr/__pycache__/formats.cpython-312.pyc | Bin 1017 -> 1025 bytes .../hu/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../hu/__pycache__/formats.cpython-312.pyc | Bin 787 -> 795 bytes .../id/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../id/__pycache__/formats.cpython-312.pyc | Bin 1012 -> 1020 bytes .../ig/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ig/__pycache__/formats.cpython-312.pyc | Bin 788 -> 796 bytes .../is/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../is/__pycache__/formats.cpython-312.pyc | Bin 449 -> 457 bytes .../it/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../it/__pycache__/formats.cpython-312.pyc | Bin 989 -> 997 bytes .../ja/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ja/__pycache__/formats.cpython-312.pyc | Bin 532 -> 540 bytes .../ka/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ka/__pycache__/formats.cpython-312.pyc | Bin 987 -> 995 bytes .../km/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../km/__pycache__/formats.cpython-312.pyc | Bin 517 -> 525 bytes .../kn/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../kn/__pycache__/formats.cpython-312.pyc | Bin 319 -> 327 bytes .../ko/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ko/__pycache__/formats.cpython-312.pyc | Bin 1058 -> 1066 bytes .../ky/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ky/__pycache__/formats.cpython-312.pyc | Bin 817 -> 825 bytes .../lt/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../lt/__pycache__/formats.cpython-312.pyc | Bin 1023 -> 1031 bytes .../lv/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../lv/__pycache__/formats.cpython-312.pyc | Bin 1031 -> 1039 bytes .../mk/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../mk/__pycache__/formats.cpython-312.pyc | Bin 928 -> 936 bytes .../ml/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ml/__pycache__/formats.cpython-312.pyc | Bin 840 -> 848 bytes .../mn/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../mn/__pycache__/formats.cpython-312.pyc | Bin 286 -> 294 bytes .../ms/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ms/__pycache__/formats.cpython-312.pyc | Bin 880 -> 888 bytes .../nb/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../nb/__pycache__/formats.cpython-312.pyc | Bin 850 -> 858 bytes .../nl/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../nl/__pycache__/formats.cpython-312.pyc | Bin 1361 -> 1369 bytes .../nn/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../nn/__pycache__/formats.cpython-312.pyc | Bin 850 -> 858 bytes .../pl/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../pl/__pycache__/formats.cpython-312.pyc | Bin 734 -> 742 bytes .../pt/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../pt/__pycache__/formats.cpython-312.pyc | Bin 881 -> 889 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../pt_BR/__pycache__/formats.cpython-312.pyc | Bin 823 -> 831 bytes .../ro/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ro/__pycache__/formats.cpython-312.pyc | Bin 830 -> 838 bytes .../ru/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ru/__pycache__/formats.cpython-312.pyc | Bin 807 -> 815 bytes .../sk/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../sk/__pycache__/formats.cpython-312.pyc | Bin 736 -> 744 bytes .../sl/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../sl/__pycache__/formats.cpython-312.pyc | Bin 1000 -> 1008 bytes .../sq/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../sq/__pycache__/formats.cpython-312.pyc | Bin 418 -> 426 bytes .../sr/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../sr/__pycache__/formats.cpython-312.pyc | Bin 950 -> 958 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/formats.cpython-312.pyc | Bin 955 -> 963 bytes .../sv/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../sv/__pycache__/formats.cpython-312.pyc | Bin 847 -> 855 bytes .../ta/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../ta/__pycache__/formats.cpython-312.pyc | Bin 321 -> 329 bytes .../te/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../te/__pycache__/formats.cpython-312.pyc | Bin 319 -> 327 bytes .../tg/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../tg/__pycache__/formats.cpython-312.pyc | Bin 817 -> 825 bytes .../th/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../th/__pycache__/formats.cpython-312.pyc | Bin 799 -> 807 bytes .../tk/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../tk/__pycache__/formats.cpython-312.pyc | Bin 817 -> 825 bytes .../tr/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../tr/__pycache__/formats.cpython-312.pyc | Bin 729 -> 737 bytes .../uk/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../uk/__pycache__/formats.cpython-312.pyc | Bin 868 -> 876 bytes .../uz/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../uz/__pycache__/formats.cpython-312.pyc | Bin 829 -> 837 bytes .../vi/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../vi/__pycache__/formats.cpython-312.pyc | Bin 557 -> 565 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/formats.cpython-312.pyc | Bin 973 -> 981 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/formats.cpython-312.pyc | Bin 973 -> 981 bytes .../urls/__pycache__/__init__.cpython-312.pyc | Bin 578 -> 586 bytes .../urls/__pycache__/i18n.cpython-312.pyc | Bin 1732 -> 1740 bytes .../urls/__pycache__/static.cpython-312.pyc | Bin 1292 -> 1300 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 185 -> 193 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1275 -> 1283 bytes .../admin/__pycache__/actions.cpython-312.pyc | Bin 3495 -> 3503 bytes .../admin/__pycache__/apps.cpython-312.pyc | Bin 1866 -> 1874 bytes .../admin/__pycache__/checks.cpython-312.pyc | Bin 55602 -> 55610 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 3932 -> 3940 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 770 -> 778 bytes .../admin/__pycache__/filters.cpython-312.pyc | Bin 27271 -> 27279 bytes .../admin/__pycache__/forms.cpython-312.pyc | Bin 1700 -> 1708 bytes .../admin/__pycache__/helpers.cpython-312.pyc | Bin 25961 -> 25969 bytes .../admin/__pycache__/models.cpython-312.pyc | Bin 8368 -> 8376 bytes .../admin/__pycache__/options.cpython-312.pyc | Bin 106133 -> 106141 bytes .../admin/__pycache__/sites.cpython-312.pyc | Bin 25176 -> 25184 bytes .../admin/__pycache__/tests.cpython-312.pyc | Bin 12031 -> 12039 bytes .../admin/__pycache__/utils.cpython-312.pyc | Bin 25771 -> 25779 bytes .../admin/__pycache__/widgets.cpython-312.pyc | Bin 28745 -> 28753 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 2440 -> 2448 bytes ...2_logentry_remove_auto_add.cpython-312.pyc | Bin 907 -> 915 bytes ...ry_add_action_flag_choices.cpython-312.pyc | Bin 903 -> 911 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 210 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 204 -> 212 bytes .../__pycache__/admin_list.cpython-312.pyc | Bin 20634 -> 20642 bytes .../__pycache__/admin_modify.cpython-312.pyc | Bin 5417 -> 5425 bytes .../__pycache__/admin_urls.cpython-312.pyc | Bin 2782 -> 2790 bytes .../__pycache__/base.cpython-312.pyc | Bin 2129 -> 2137 bytes .../__pycache__/log.cpython-312.pyc | Bin 3413 -> 3421 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/autocomplete.cpython-312.pyc | Bin 6001 -> 6009 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 997 -> 1005 bytes .../views/__pycache__/main.cpython-312.pyc | Bin 23512 -> 23520 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../__pycache__/apps.cpython-312.pyc | Bin 602 -> 610 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 1977 -> 1985 bytes .../__pycache__/urls.cpython-312.pyc | Bin 1892 -> 1900 bytes .../__pycache__/utils.cpython-312.pyc | Bin 9032 -> 9040 bytes .../__pycache__/views.cpython-312.pyc | Bin 20190 -> 20198 bytes .../auth/__pycache__/__init__.cpython-312.pyc | Bin 9843 -> 9851 bytes .../auth/__pycache__/admin.cpython-312.pyc | Bin 10058 -> 10066 bytes .../auth/__pycache__/apps.cpython-312.pyc | Bin 1903 -> 1911 bytes .../auth/__pycache__/backends.cpython-312.pyc | Bin 12731 -> 12739 bytes .../__pycache__/base_user.cpython-312.pyc | Bin 8318 -> 8326 bytes .../auth/__pycache__/checks.cpython-312.pyc | Bin 8158 -> 8166 bytes .../context_processors.cpython-312.pyc | Bin 3383 -> 3391 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 3404 -> 3412 bytes .../auth/__pycache__/forms.cpython-312.pyc | Bin 23433 -> 23441 bytes .../auth/__pycache__/hashers.cpython-312.pyc | Bin 38583 -> 38591 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 5828 -> 5836 bytes .../auth/__pycache__/mixins.cpython-312.pyc | Bin 7002 -> 7010 bytes .../auth/__pycache__/models.cpython-312.pyc | Bin 23255 -> 23263 bytes .../password_validation.cpython-312.pyc | Bin 12562 -> 12570 bytes .../auth/__pycache__/signals.cpython-312.pyc | Bin 354 -> 362 bytes .../auth/__pycache__/tokens.cpython-312.pyc | Bin 5870 -> 5878 bytes .../auth/__pycache__/urls.cpython-312.pyc | Bin 1553 -> 1561 bytes .../__pycache__/validators.cpython-312.pyc | Bin 1309 -> 1317 bytes .../auth/__pycache__/views.cpython-312.pyc | Bin 18941 -> 18949 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 199 -> 207 bytes .../__pycache__/modwsgi.cpython-312.pyc | Bin 2348 -> 2356 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 6043 -> 6051 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 210 -> 218 bytes .../changepassword.cpython-312.pyc | Bin 3635 -> 3643 bytes .../createsuperuser.cpython-312.pyc | Bin 14330 -> 14338 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 4800 -> 4808 bytes ...permission_name_max_length.cpython-312.pyc | Bin 798 -> 806 bytes ...lter_user_email_max_length.cpython-312.pyc | Bin 845 -> 853 bytes ...4_alter_user_username_opts.cpython-312.pyc | Bin 1139 -> 1147 bytes ...alter_user_last_login_null.cpython-312.pyc | Bin 830 -> 838 bytes ..._require_contenttypes_0002.cpython-312.pyc | Bin 617 -> 625 bytes ...idators_add_error_messages.cpython-312.pyc | Bin 1148 -> 1156 bytes ...r_user_username_max_length.cpython-312.pyc | Bin 1154 -> 1162 bytes ..._user_last_name_max_length.cpython-312.pyc | Bin 846 -> 854 bytes ...lter_group_name_max_length.cpython-312.pyc | Bin 825 -> 833 bytes ...1_update_proxy_permissions.cpython-312.pyc | Bin 3971 -> 3979 bytes ...user_first_name_max_length.cpython-312.pyc | Bin 843 -> 851 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 209 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 206 bytes .../__pycache__/admin.cpython-312.pyc | Bin 5903 -> 5911 bytes .../__pycache__/apps.cpython-312.pyc | Bin 1599 -> 1607 bytes .../__pycache__/checks.cpython-312.pyc | Bin 2454 -> 2462 bytes .../__pycache__/fields.cpython-312.pyc | Bin 39609 -> 39617 bytes .../__pycache__/forms.cpython-312.pyc | Bin 5312 -> 5320 bytes .../__pycache__/models.cpython-312.pyc | Bin 10130 -> 10138 bytes .../__pycache__/views.cpython-312.pyc | Bin 3470 -> 3478 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 6259 -> 6267 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 218 -> 226 bytes .../remove_stale_contenttypes.cpython-312.pyc | Bin 5050 -> 5058 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 1676 -> 1684 bytes ...2_remove_content_type_name.cpython-312.pyc | Bin 2028 -> 2036 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 209 -> 217 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../__pycache__/admin.cpython-312.pyc | Bin 1071 -> 1079 bytes .../__pycache__/apps.cpython-312.pyc | Bin 640 -> 648 bytes .../__pycache__/forms.cpython-312.pyc | Bin 3928 -> 3936 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 1119 -> 1127 bytes .../__pycache__/models.cpython-312.pyc | Bin 3025 -> 3033 bytes .../__pycache__/sitemaps.cpython-312.pyc | Bin 1212 -> 1220 bytes .../__pycache__/urls.cpython-312.pyc | Bin 443 -> 451 bytes .../__pycache__/views.cpython-312.pyc | Bin 2809 -> 2817 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 2074 -> 2082 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 208 -> 216 bytes .../__pycache__/flatpages.cpython-312.pyc | Bin 4149 -> 4157 bytes .../gis/__pycache__/__init__.cpython-312.pyc | Bin 189 -> 197 bytes .../gis/__pycache__/apps.cpython-312.pyc | Bin 950 -> 958 bytes .../gis/__pycache__/feeds.cpython-312.pyc | Bin 7575 -> 7583 bytes .../gis/__pycache__/geometry.cpython-312.pyc | Bin 706 -> 714 bytes .../gis/__pycache__/measure.cpython-312.pyc | Bin 14488 -> 14496 bytes .../gis/__pycache__/ptr.cpython-312.pyc | Bin 1885 -> 1893 bytes .../gis/__pycache__/shortcuts.cpython-312.pyc | Bin 1892 -> 1900 bytes .../gis/__pycache__/views.cpython-312.pyc | Bin 1251 -> 1259 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 768 -> 776 bytes .../admin/__pycache__/options.cpython-312.pyc | Bin 8149 -> 8157 bytes .../admin/__pycache__/widgets.cpython-312.pyc | Bin 5117 -> 5125 bytes .../db/__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 209 bytes .../__pycache__/utils.cpython-312.pyc | Bin 1515 -> 1523 bytes .../base/__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../base/__pycache__/adapter.cpython-312.pyc | Bin 1601 -> 1609 bytes .../base/__pycache__/features.cpython-312.pyc | Bin 4977 -> 4985 bytes .../base/__pycache__/models.cpython-312.pyc | Bin 6247 -> 6255 bytes .../__pycache__/operations.cpython-312.pyc | Bin 8232 -> 8240 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 207 -> 215 bytes .../mysql/__pycache__/base.cpython-312.pyc | Bin 802 -> 810 bytes .../__pycache__/features.cpython-312.pyc | Bin 1298 -> 1306 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 1963 -> 1971 bytes .../__pycache__/operations.cpython-312.pyc | Bin 5584 -> 5592 bytes .../mysql/__pycache__/schema.cpython-312.pyc | Bin 5113 -> 5121 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 208 -> 216 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 3707 -> 3715 bytes .../oracle/__pycache__/base.cpython-312.pyc | Bin 808 -> 816 bytes .../__pycache__/features.cpython-312.pyc | Bin 1454 -> 1462 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 2163 -> 2171 bytes .../oracle/__pycache__/models.cpython-312.pyc | Bin 3461 -> 3469 bytes .../__pycache__/operations.cpython-312.pyc | Bin 10412 -> 10420 bytes .../oracle/__pycache__/schema.cpython-312.pyc | Bin 6292 -> 6300 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 209 -> 217 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 3125 -> 3133 bytes .../postgis/__pycache__/base.cpython-312.pyc | Bin 8173 -> 8181 bytes .../postgis/__pycache__/const.cpython-312.pyc | Bin 794 -> 802 bytes .../__pycache__/features.cpython-312.pyc | Bin 779 -> 787 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 3536 -> 3544 bytes .../__pycache__/models.cpython-312.pyc | Bin 3565 -> 3573 bytes .../__pycache__/operations.cpython-312.pyc | Bin 18666 -> 18674 bytes .../__pycache__/pgraster.cpython-312.pyc | Bin 4252 -> 4260 bytes .../__pycache__/schema.cpython-312.pyc | Bin 3743 -> 3751 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 212 -> 220 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 849 -> 857 bytes .../__pycache__/base.cpython-312.pyc | Bin 3517 -> 3525 bytes .../__pycache__/client.cpython-312.pyc | Bin 505 -> 513 bytes .../__pycache__/features.cpython-312.pyc | Bin 1525 -> 1533 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 3226 -> 3234 bytes .../__pycache__/models.cpython-312.pyc | Bin 3528 -> 3536 bytes .../__pycache__/operations.cpython-312.pyc | Bin 10723 -> 10731 bytes .../__pycache__/schema.cpython-312.pyc | Bin 7970 -> 7978 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 821 -> 829 bytes .../__pycache__/aggregates.cpython-312.pyc | Bin 4836 -> 4844 bytes .../models/__pycache__/fields.cpython-312.pyc | Bin 17761 -> 17769 bytes .../__pycache__/functions.cpython-312.pyc | Bin 28452 -> 28460 bytes .../__pycache__/lookups.cpython-312.pyc | Bin 17852 -> 17860 bytes .../models/__pycache__/proxy.cpython-312.pyc | Bin 3406 -> 3414 bytes .../sql/__pycache__/__init__.cpython-312.pyc | Bin 349 -> 357 bytes .../__pycache__/conversion.cpython-312.pyc | Bin 3839 -> 3847 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 584 -> 592 bytes .../forms/__pycache__/fields.cpython-312.pyc | Bin 5985 -> 5993 bytes .../forms/__pycache__/widgets.cpython-312.pyc | Bin 6259 -> 6267 bytes .../gdal/__pycache__/__init__.cpython-312.pyc | Bin 1993 -> 2001 bytes .../gis/gdal/__pycache__/base.cpython-312.pyc | Bin 535 -> 543 bytes .../__pycache__/datasource.cpython-312.pyc | Bin 5614 -> 5622 bytes .../gdal/__pycache__/driver.cpython-312.pyc | Bin 3715 -> 3723 bytes .../gdal/__pycache__/envelope.cpython-312.pyc | Bin 9313 -> 9321 bytes .../gdal/__pycache__/error.cpython-312.pyc | Bin 1850 -> 1858 bytes .../gdal/__pycache__/feature.cpython-312.pyc | Bin 6366 -> 6374 bytes .../gdal/__pycache__/field.cpython-312.pyc | Bin 11136 -> 11144 bytes .../__pycache__/geometries.cpython-312.pyc | Bin 36605 -> 36613 bytes .../gdal/__pycache__/geomtype.cpython-312.pyc | Bin 4361 -> 4369 bytes .../gdal/__pycache__/layer.cpython-312.pyc | Bin 12416 -> 12424 bytes .../gdal/__pycache__/libgdal.cpython-312.pyc | Bin 3900 -> 3908 bytes .../gis/gdal/__pycache__/srs.cpython-312.pyc | Bin 19134 -> 19142 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 213 bytes .../prototypes/__pycache__/ds.cpython-312.pyc | Bin 5915 -> 5923 bytes .../__pycache__/errcheck.cpython-312.pyc | Bin 4883 -> 4891 bytes .../__pycache__/generation.cpython-312.pyc | Bin 5781 -> 5789 bytes .../__pycache__/geom.cpython-312.pyc | Bin 6746 -> 6754 bytes .../__pycache__/raster.cpython-312.pyc | Bin 5830 -> 5838 bytes .../__pycache__/srs.cpython-312.pyc | Bin 4432 -> 4440 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 209 bytes .../raster/__pycache__/band.cpython-312.pyc | Bin 11381 -> 11389 bytes .../raster/__pycache__/base.cpython-312.pyc | Bin 2777 -> 2785 bytes .../raster/__pycache__/const.cpython-312.pyc | Bin 1878 -> 1886 bytes .../raster/__pycache__/source.cpython-312.pyc | Bin 23285 -> 23293 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1078 -> 1086 bytes .../geoip2/__pycache__/base.cpython-312.pyc | Bin 10034 -> 10042 bytes .../__pycache__/resources.cpython-312.pyc | Bin 1560 -> 1568 bytes .../geos/__pycache__/__init__.cpython-312.pyc | Bin 980 -> 988 bytes .../gis/geos/__pycache__/base.cpython-312.pyc | Bin 535 -> 543 bytes .../__pycache__/collections.cpython-312.pyc | Bin 5700 -> 5708 bytes .../geos/__pycache__/coordseq.cpython-312.pyc | Bin 12553 -> 12561 bytes .../geos/__pycache__/error.cpython-312.pyc | Bin 455 -> 463 bytes .../geos/__pycache__/factory.cpython-312.pyc | Bin 1477 -> 1485 bytes .../geos/__pycache__/geometry.cpython-312.pyc | Bin 39710 -> 39718 bytes .../gis/geos/__pycache__/io.cpython-312.pyc | Bin 1464 -> 1472 bytes .../geos/__pycache__/libgeos.cpython-312.pyc | Bin 5799 -> 5807 bytes .../__pycache__/linestring.cpython-312.pyc | Bin 8404 -> 8412 bytes .../__pycache__/mutable_list.cpython-312.pyc | Bin 13926 -> 13934 bytes .../geos/__pycache__/point.cpython-312.pyc | Bin 7769 -> 7777 bytes .../geos/__pycache__/polygon.cpython-312.pyc | Bin 8867 -> 8875 bytes .../geos/__pycache__/prepared.cpython-312.pyc | Bin 3443 -> 3451 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1920 -> 1928 bytes .../__pycache__/coordseq.cpython-312.pyc | Bin 3718 -> 3726 bytes .../__pycache__/errcheck.cpython-312.pyc | Bin 3074 -> 3082 bytes .../__pycache__/geom.cpython-312.pyc | Bin 3261 -> 3269 bytes .../prototypes/__pycache__/io.cpython-312.pyc | Bin 15254 -> 15262 bytes .../__pycache__/misc.cpython-312.pyc | Bin 1496 -> 1504 bytes .../__pycache__/predicates.cpython-312.pyc | Bin 2162 -> 2170 bytes .../__pycache__/prepared.cpython-312.pyc | Bin 1545 -> 1553 bytes .../__pycache__/threadsafe.cpython-312.pyc | Bin 3600 -> 3608 bytes .../__pycache__/topology.cpython-312.pyc | Bin 2588 -> 2596 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 208 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 209 -> 217 bytes .../__pycache__/inspectdb.cpython-312.pyc | Bin 1102 -> 1110 bytes .../__pycache__/ogrinspect.cpython-312.pyc | Bin 6809 -> 6817 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 209 bytes .../__pycache__/geojson.cpython-312.pyc | Bin 4921 -> 4929 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 325 -> 333 bytes .../sitemaps/__pycache__/kml.cpython-312.pyc | Bin 3513 -> 3521 bytes .../__pycache__/views.cpython-312.pyc | Bin 2967 -> 2975 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 730 -> 738 bytes .../__pycache__/layermapping.cpython-312.pyc | Bin 25338 -> 25346 bytes .../utils/__pycache__/ogrinfo.cpython-312.pyc | Bin 2637 -> 2645 bytes .../__pycache__/ogrinspect.cpython-312.pyc | Bin 8897 -> 8905 bytes .../gis/utils/__pycache__/srs.cpython-312.pyc | Bin 3305 -> 3313 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../humanize/__pycache__/apps.cpython-312.pyc | Bin 577 -> 585 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 207 -> 215 bytes .../__pycache__/humanize.cpython-312.pyc | Bin 11954 -> 11962 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 291 -> 299 bytes .../messages/__pycache__/api.cpython-312.pyc | Bin 3744 -> 3752 bytes .../messages/__pycache__/apps.cpython-312.pyc | Bin 1197 -> 1205 bytes .../__pycache__/constants.cpython-312.pyc | Bin 493 -> 501 bytes .../context_processors.cpython-312.pyc | Bin 639 -> 647 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 1469 -> 1477 bytes .../__pycache__/utils.cpython-312.pyc | Bin 596 -> 604 bytes .../__pycache__/views.cpython-312.pyc | Bin 1211 -> 1219 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 742 -> 750 bytes .../storage/__pycache__/base.cpython-312.pyc | Bin 8889 -> 8897 bytes .../__pycache__/cookie.cpython-312.pyc | Bin 8831 -> 8839 bytes .../__pycache__/fallback.cpython-312.pyc | Bin 2588 -> 2596 bytes .../__pycache__/session.cpython-312.pyc | Bin 2908 -> 2916 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../postgres/__pycache__/apps.cpython-312.pyc | Bin 4718 -> 4726 bytes .../__pycache__/constraints.cpython-312.pyc | Bin 13615 -> 13623 bytes .../__pycache__/expressions.cpython-312.pyc | Bin 1102 -> 1110 bytes .../__pycache__/functions.cpython-312.pyc | Bin 767 -> 775 bytes .../__pycache__/indexes.cpython-312.pyc | Bin 12054 -> 12062 bytes .../__pycache__/lookups.cpython-312.pyc | Bin 3946 -> 3954 bytes .../__pycache__/operations.cpython-312.pyc | Bin 19682 -> 19690 bytes .../__pycache__/search.cpython-312.pyc | Bin 17276 -> 17284 bytes .../__pycache__/serializers.cpython-312.pyc | Bin 851 -> 859 bytes .../__pycache__/signals.cpython-312.pyc | Bin 3382 -> 3390 bytes .../__pycache__/utils.cpython-312.pyc | Bin 1466 -> 1474 bytes .../__pycache__/validators.cpython-312.pyc | Bin 4204 -> 4212 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 259 -> 267 bytes .../__pycache__/general.cpython-312.pyc | Bin 6845 -> 6853 bytes .../__pycache__/mixins.cpython-312.pyc | Bin 2387 -> 2395 bytes .../__pycache__/statistics.cpython-312.pyc | Bin 3181 -> 3189 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 311 -> 319 bytes .../fields/__pycache__/array.cpython-312.pyc | Bin 18972 -> 18980 bytes .../fields/__pycache__/citext.cpython-312.pyc | Bin 3559 -> 3567 bytes .../fields/__pycache__/hstore.cpython-312.pyc | Bin 5949 -> 5957 bytes .../fields/__pycache__/jsonb.cpython-312.pyc | Bin 688 -> 696 bytes .../fields/__pycache__/ranges.cpython-312.pyc | Bin 19422 -> 19430 bytes .../fields/__pycache__/utils.cpython-312.pyc | Bin 556 -> 564 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 269 -> 277 bytes .../forms/__pycache__/array.cpython-312.pyc | Bin 12757 -> 12765 bytes .../forms/__pycache__/hstore.cpython-312.pyc | Bin 2379 -> 2387 bytes .../forms/__pycache__/ranges.cpython-312.pyc | Bin 5563 -> 5571 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../__pycache__/admin.cpython-312.pyc | Bin 774 -> 782 bytes .../__pycache__/apps.cpython-312.pyc | Bin 639 -> 647 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 2652 -> 2660 bytes .../__pycache__/models.cpython-312.pyc | Bin 1854 -> 1862 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 1702 -> 1710 bytes ...edirect_new_path_help_text.cpython-312.pyc | Bin 975 -> 983 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../sessions/__pycache__/apps.cpython-312.pyc | Bin 577 -> 585 bytes .../__pycache__/base_session.cpython-312.pyc | Bin 3037 -> 3045 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 910 -> 918 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 4172 -> 4180 bytes .../__pycache__/models.cpython-312.pyc | Bin 1999 -> 2007 bytes .../__pycache__/serializers.cpython-312.pyc | Bin 389 -> 397 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 203 -> 211 bytes .../backends/__pycache__/base.cpython-312.pyc | Bin 16244 -> 16252 bytes .../__pycache__/cache.cpython-312.pyc | Bin 3847 -> 3855 bytes .../__pycache__/cached_db.cpython-312.pyc | Bin 3591 -> 3599 bytes .../backends/__pycache__/db.cpython-312.pyc | Bin 6098 -> 6106 bytes .../backends/__pycache__/file.cpython-312.pyc | Bin 9152 -> 9160 bytes .../signed_cookies.cpython-312.pyc | Bin 3622 -> 3630 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 213 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 214 -> 222 bytes .../__pycache__/clearsessions.cpython-312.pyc | Bin 1246 -> 1254 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 1412 -> 1420 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 213 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 10825 -> 10833 bytes .../sitemaps/__pycache__/apps.cpython-312.pyc | Bin 636 -> 644 bytes .../__pycache__/views.cpython-312.pyc | Bin 5739 -> 5747 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 213 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 214 -> 222 bytes .../__pycache__/ping_google.cpython-312.pyc | Bin 1177 -> 1185 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 191 -> 199 bytes .../sites/__pycache__/admin.cpython-312.pyc | Bin 646 -> 654 bytes .../sites/__pycache__/apps.cpython-312.pyc | Bin 1223 -> 1231 bytes .../sites/__pycache__/checks.cpython-312.pyc | Bin 732 -> 740 bytes .../__pycache__/management.cpython-312.pyc | Bin 1902 -> 1910 bytes .../__pycache__/managers.cpython-312.pyc | Bin 3337 -> 3345 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 796 -> 804 bytes .../sites/__pycache__/models.cpython-312.pyc | Bin 5804 -> 5812 bytes .../__pycache__/requests.cpython-312.pyc | Bin 1431 -> 1439 bytes .../__pycache__/shortcuts.cpython-312.pyc | Bin 823 -> 831 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 1499 -> 1507 bytes .../0002_alter_domain_unique.cpython-312.pyc | Bin 1037 -> 1045 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 210 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/apps.cpython-312.pyc | Bin 1035 -> 1043 bytes .../__pycache__/checks.cpython-312.pyc | Bin 740 -> 748 bytes .../__pycache__/finders.cpython-312.pyc | Bin 14203 -> 14211 bytes .../__pycache__/handlers.cpython-312.pyc | Bin 6645 -> 6653 bytes .../__pycache__/storage.cpython-312.pyc | Bin 21117 -> 21125 bytes .../__pycache__/testing.cpython-312.pyc | Bin 822 -> 830 bytes .../__pycache__/urls.cpython-312.pyc | Bin 804 -> 812 bytes .../__pycache__/utils.cpython-312.pyc | Bin 3030 -> 3038 bytes .../__pycache__/views.cpython-312.pyc | Bin 1845 -> 1853 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 208 -> 216 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 217 -> 225 bytes .../__pycache__/collectstatic.cpython-312.pyc | Bin 15656 -> 15664 bytes .../__pycache__/findstatic.cpython-312.pyc | Bin 2525 -> 2533 bytes .../__pycache__/runserver.cpython-312.pyc | Bin 1892 -> 1900 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/apps.cpython-312.pyc | Bin 590 -> 598 bytes .../__pycache__/views.cpython-312.pyc | Bin 10448 -> 10456 bytes .../core/__pycache__/__init__.cpython-312.pyc | Bin 182 -> 190 bytes .../core/__pycache__/asgi.cpython-312.pyc | Bin 708 -> 716 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 10550 -> 10558 bytes .../__pycache__/paginator.cpython-312.pyc | Bin 11764 -> 11772 bytes .../core/__pycache__/signals.cpython-312.pyc | Bin 391 -> 399 bytes .../core/__pycache__/signing.cpython-312.pyc | Bin 12877 -> 12885 bytes .../__pycache__/validators.cpython-312.pyc | Bin 25031 -> 25039 bytes .../core/__pycache__/wsgi.cpython-312.pyc | Bin 710 -> 718 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2492 -> 2500 bytes .../cache/__pycache__/utils.cpython-312.pyc | Bin 823 -> 831 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../backends/__pycache__/base.cpython-312.pyc | Bin 18591 -> 18599 bytes .../backends/__pycache__/db.cpython-312.pyc | Bin 13467 -> 13475 bytes .../__pycache__/dummy.cpython-312.pyc | Bin 2042 -> 2050 bytes .../__pycache__/filebased.cpython-312.pyc | Bin 9663 -> 9671 bytes .../__pycache__/locmem.cpython-312.pyc | Bin 7508 -> 7516 bytes .../__pycache__/memcached.cpython-312.pyc | Bin 9548 -> 9556 bytes .../__pycache__/redis.cpython-312.pyc | Bin 13378 -> 13386 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1160 -> 1168 bytes .../__pycache__/async_checks.cpython-312.pyc | Bin 855 -> 863 bytes .../checks/__pycache__/caches.cpython-312.pyc | Bin 4101 -> 4109 bytes .../__pycache__/database.cpython-312.pyc | Bin 776 -> 784 bytes .../checks/__pycache__/files.cpython-312.pyc | Bin 921 -> 929 bytes .../__pycache__/messages.cpython-312.pyc | Bin 4932 -> 4940 bytes .../__pycache__/model_checks.cpython-312.pyc | Bin 10579 -> 10587 bytes .../__pycache__/registry.cpython-312.pyc | Bin 4821 -> 4829 bytes .../__pycache__/templates.cpython-312.pyc | Bin 3972 -> 3980 bytes .../__pycache__/translation.cpython-312.pyc | Bin 3460 -> 3468 bytes .../checks/__pycache__/urls.cpython-312.pyc | Bin 4501 -> 4509 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 203 -> 211 bytes .../__pycache__/django_4_0.cpython-312.pyc | Bin 994 -> 1002 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 206 bytes .../security/__pycache__/base.cpython-312.pyc | Bin 11663 -> 11671 bytes .../security/__pycache__/csrf.cpython-312.pyc | Bin 3051 -> 3059 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 3514 -> 3522 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 269 -> 277 bytes .../files/__pycache__/base.cpython-312.pyc | Bin 7825 -> 7833 bytes .../files/__pycache__/images.cpython-312.pyc | Bin 3266 -> 3274 bytes .../files/__pycache__/locks.cpython-312.pyc | Bin 4526 -> 4534 bytes .../files/__pycache__/move.cpython-312.pyc | Bin 3723 -> 3731 bytes .../files/__pycache__/temp.cpython-312.pyc | Bin 3473 -> 3481 bytes .../__pycache__/uploadedfile.cpython-312.pyc | Bin 6181 -> 6189 bytes .../__pycache__/uploadhandler.cpython-312.pyc | Bin 9764 -> 9772 bytes .../files/__pycache__/utils.cpython-312.pyc | Bin 5721 -> 5729 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1743 -> 1751 bytes .../storage/__pycache__/base.cpython-312.pyc | Bin 8204 -> 8212 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 10942 -> 10950 bytes .../__pycache__/handler.cpython-312.pyc | Bin 3023 -> 3031 bytes .../__pycache__/memory.cpython-312.pyc | Bin 15325 -> 15333 bytes .../__pycache__/mixins.cpython-312.pyc | Bin 1429 -> 1437 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 191 -> 199 bytes .../handlers/__pycache__/asgi.cpython-312.pyc | Bin 14709 -> 14717 bytes .../handlers/__pycache__/base.cpython-312.pyc | Bin 13611 -> 13619 bytes .../__pycache__/exception.cpython-312.pyc | Bin 6641 -> 6649 bytes .../handlers/__pycache__/wsgi.cpython-312.pyc | Bin 9529 -> 9537 bytes .../mail/__pycache__/__init__.cpython-312.pyc | Bin 5695 -> 5703 bytes .../mail/__pycache__/message.cpython-312.pyc | Bin 21782 -> 21790 bytes .../mail/__pycache__/utils.cpython-312.pyc | Bin 1024 -> 1032 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 204 bytes .../backends/__pycache__/base.cpython-312.pyc | Bin 2638 -> 2646 bytes .../__pycache__/console.cpython-312.pyc | Bin 2686 -> 2694 bytes .../__pycache__/dummy.cpython-312.pyc | Bin 719 -> 727 bytes .../__pycache__/filebased.cpython-312.pyc | Bin 3774 -> 3782 bytes .../__pycache__/locmem.cpython-312.pyc | Bin 1566 -> 1574 bytes .../backends/__pycache__/smtp.cpython-312.pyc | Bin 7157 -> 7165 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 20747 -> 20755 bytes .../__pycache__/base.cpython-312.pyc | Bin 31057 -> 31065 bytes .../__pycache__/color.cpython-312.pyc | Bin 3997 -> 4005 bytes .../__pycache__/sql.cpython-312.pyc | Bin 2340 -> 2348 bytes .../__pycache__/templates.cpython-312.pyc | Bin 18411 -> 18419 bytes .../__pycache__/utils.cpython-312.pyc | Bin 8081 -> 8089 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 210 bytes .../__pycache__/check.cpython-312.pyc | Bin 3218 -> 3226 bytes .../compilemessages.cpython-312.pyc | Bin 8956 -> 8964 bytes .../createcachetable.cpython-312.pyc | Bin 5854 -> 5862 bytes .../__pycache__/dbshell.cpython-312.pyc | Bin 2167 -> 2175 bytes .../__pycache__/diffsettings.cpython-312.pyc | Bin 4324 -> 4332 bytes .../__pycache__/dumpdata.cpython-312.pyc | Bin 10649 -> 10657 bytes .../__pycache__/flush.cpython-312.pyc | Bin 3649 -> 3657 bytes .../__pycache__/inspectdb.cpython-312.pyc | Bin 15370 -> 15378 bytes .../__pycache__/loaddata.cpython-312.pyc | Bin 18821 -> 18829 bytes .../__pycache__/makemessages.cpython-312.pyc | Bin 34826 -> 34834 bytes .../makemigrations.cpython-312.pyc | Bin 23029 -> 23037 bytes .../__pycache__/migrate.cpython-312.pyc | Bin 22939 -> 22947 bytes .../optimizemigration.cpython-312.pyc | Bin 5864 -> 5872 bytes .../__pycache__/runserver.cpython-312.pyc | Bin 8020 -> 8028 bytes .../__pycache__/sendtestemail.cpython-312.pyc | Bin 2117 -> 2125 bytes .../__pycache__/shell.cpython-312.pyc | Bin 4844 -> 4852 bytes .../showmigrations.cpython-312.pyc | Bin 7575 -> 7583 bytes .../__pycache__/sqlflush.cpython-312.pyc | Bin 1675 -> 1683 bytes .../__pycache__/sqlmigrate.cpython-312.pyc | Bin 3627 -> 3635 bytes .../sqlsequencereset.cpython-312.pyc | Bin 1829 -> 1837 bytes .../squashmigrations.cpython-312.pyc | Bin 10640 -> 10648 bytes .../__pycache__/startapp.cpython-312.pyc | Bin 1055 -> 1063 bytes .../__pycache__/startproject.cpython-312.pyc | Bin 1297 -> 1305 bytes .../commands/__pycache__/test.cpython-312.pyc | Bin 3420 -> 3428 bytes .../__pycache__/testserver.cpython-312.pyc | Bin 2380 -> 2388 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 9442 -> 9450 bytes .../__pycache__/base.cpython-312.pyc | Bin 17762 -> 17770 bytes .../__pycache__/json.cpython-312.pyc | Bin 5881 -> 5889 bytes .../__pycache__/jsonl.cpython-312.pyc | Bin 3315 -> 3323 bytes .../__pycache__/python.cpython-312.pyc | Bin 9742 -> 9750 bytes .../__pycache__/pyyaml.cpython-312.pyc | Bin 4160 -> 4168 bytes .../xml_serializer.cpython-312.pyc | Bin 25093 -> 25101 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 198 bytes .../__pycache__/basehttp.cpython-312.pyc | Bin 12055 -> 12063 bytes .../db/__pycache__/__init__.cpython-312.pyc | Bin 1748 -> 1756 bytes .../__pycache__/transaction.cpython-312.pyc | Bin 12060 -> 12068 bytes .../db/__pycache__/utils.cpython-312.pyc | Bin 11534 -> 11542 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 189 -> 197 bytes .../ddl_references.cpython-312.pyc | Bin 14642 -> 14650 bytes .../__pycache__/signals.cpython-312.pyc | Bin 279 -> 287 bytes .../__pycache__/utils.cpython-312.pyc | Bin 14692 -> 14700 bytes .../base/__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../base/__pycache__/base.cpython-312.pyc | Bin 34981 -> 34989 bytes .../base/__pycache__/client.cpython-312.pyc | Bin 1530 -> 1538 bytes .../base/__pycache__/creation.cpython-312.pyc | Bin 17090 -> 17098 bytes .../base/__pycache__/features.cpython-312.pyc | Bin 8139 -> 8147 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 11107 -> 11115 bytes .../__pycache__/operations.cpython-312.pyc | Bin 37142 -> 37150 bytes .../base/__pycache__/schema.cpython-312.pyc | Bin 77095 -> 77103 bytes .../__pycache__/validation.cpython-312.pyc | Bin 1799 -> 1807 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../dummy/__pycache__/base.cpython-312.pyc | Bin 2911 -> 2919 bytes .../__pycache__/features.cpython-312.pyc | Bin 523 -> 531 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../mysql/__pycache__/base.cpython-312.pyc | Bin 17440 -> 17448 bytes .../mysql/__pycache__/client.cpython-312.pyc | Bin 3356 -> 3364 bytes .../__pycache__/compiler.cpython-312.pyc | Bin 4640 -> 4648 bytes .../__pycache__/creation.cpython-312.pyc | Bin 4704 -> 4712 bytes .../__pycache__/features.cpython-312.pyc | Bin 14785 -> 14793 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 15337 -> 15345 bytes .../__pycache__/operations.cpython-312.pyc | Bin 20672 -> 20680 bytes .../mysql/__pycache__/schema.cpython-312.pyc | Bin 11842 -> 11850 bytes .../__pycache__/validation.cpython-312.pyc | Bin 3592 -> 3600 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 204 bytes .../oracle/__pycache__/base.cpython-312.pyc | Bin 25505 -> 25513 bytes .../oracle/__pycache__/client.cpython-312.pyc | Bin 1421 -> 1429 bytes .../__pycache__/creation.cpython-312.pyc | Bin 22953 -> 22961 bytes .../__pycache__/features.cpython-312.pyc | Bin 6312 -> 6320 bytes .../__pycache__/functions.cpython-312.pyc | Bin 1555 -> 1563 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 15878 -> 15886 bytes .../__pycache__/operations.cpython-312.pyc | Bin 31353 -> 31361 bytes .../oracle/__pycache__/schema.cpython-312.pyc | Bin 12399 -> 12407 bytes .../oracle/__pycache__/utils.cpython-312.pyc | Bin 4058 -> 4066 bytes .../__pycache__/validation.cpython-312.pyc | Bin 1262 -> 1270 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 208 bytes .../__pycache__/base.cpython-312.pyc | Bin 20090 -> 20098 bytes .../__pycache__/client.cpython-312.pyc | Bin 2996 -> 3004 bytes .../__pycache__/creation.cpython-312.pyc | Bin 4811 -> 4819 bytes .../__pycache__/features.cpython-312.pyc | Bin 5945 -> 5953 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 11780 -> 11788 bytes .../__pycache__/operations.cpython-312.pyc | Bin 18301 -> 18309 bytes .../__pycache__/psycopg_any.cpython-312.pyc | Bin 5314 -> 5322 bytes .../__pycache__/schema.cpython-312.pyc | Bin 14219 -> 14227 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/_functions.cpython-312.pyc | Bin 19355 -> 19363 bytes .../sqlite3/__pycache__/base.cpython-312.pyc | Bin 14370 -> 14378 bytes .../__pycache__/client.cpython-312.pyc | Bin 802 -> 810 bytes .../__pycache__/creation.cpython-312.pyc | Bin 8076 -> 8084 bytes .../__pycache__/features.cpython-312.pyc | Bin 7160 -> 7168 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 16935 -> 16943 bytes .../__pycache__/operations.cpython-312.pyc | Bin 21782 -> 21790 bytes .../__pycache__/schema.cpython-312.pyc | Bin 24551 -> 24559 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 298 -> 306 bytes .../__pycache__/autodetector.cpython-312.pyc | Bin 71999 -> 72007 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2766 -> 2774 bytes .../__pycache__/executor.cpython-312.pyc | Bin 19080 -> 19088 bytes .../__pycache__/graph.cpython-312.pyc | Bin 17914 -> 17922 bytes .../__pycache__/loader.cpython-312.pyc | Bin 17312 -> 17320 bytes .../__pycache__/migration.cpython-312.pyc | Bin 10026 -> 10034 bytes .../__pycache__/optimizer.cpython-312.pyc | Bin 3485 -> 3493 bytes .../__pycache__/questioner.cpython-312.pyc | Bin 15499 -> 15507 bytes .../__pycache__/recorder.cpython-312.pyc | Bin 5951 -> 5959 bytes .../__pycache__/serializer.cpython-312.pyc | Bin 22911 -> 22919 bytes .../__pycache__/state.cpython-312.pyc | Bin 45967 -> 45975 bytes .../__pycache__/utils.cpython-312.pyc | Bin 4930 -> 4938 bytes .../__pycache__/writer.cpython-312.pyc | Bin 14123 -> 14131 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 980 -> 988 bytes .../__pycache__/base.cpython-312.pyc | Bin 6351 -> 6359 bytes .../__pycache__/fields.cpython-312.pyc | Bin 17973 -> 17981 bytes .../__pycache__/models.cpython-312.pyc | Bin 58388 -> 58396 bytes .../__pycache__/special.cpython-312.pyc | Bin 9589 -> 9597 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2462 -> 2470 bytes .../__pycache__/aggregates.cpython-312.pyc | Bin 9967 -> 9975 bytes .../models/__pycache__/base.cpython-312.pyc | Bin 100880 -> 100888 bytes .../__pycache__/constants.cpython-312.pyc | Bin 542 -> 550 bytes .../__pycache__/constraints.cpython-312.pyc | Bin 20685 -> 20693 bytes .../__pycache__/deletion.cpython-312.pyc | Bin 25357 -> 25365 bytes .../models/__pycache__/enums.cpython-312.pyc | Bin 5428 -> 5436 bytes .../__pycache__/expressions.cpython-312.pyc | Bin 91783 -> 91791 bytes .../__pycache__/indexes.cpython-312.pyc | Bin 15351 -> 15359 bytes .../__pycache__/lookups.cpython-312.pyc | Bin 36006 -> 36014 bytes .../__pycache__/manager.cpython-312.pyc | Bin 9217 -> 9225 bytes .../__pycache__/options.cpython-312.pyc | Bin 39416 -> 39424 bytes .../models/__pycache__/query.cpython-312.pyc | Bin 116688 -> 116696 bytes .../__pycache__/query_utils.cpython-312.pyc | Bin 19865 -> 19873 bytes .../__pycache__/signals.cpython-312.pyc | Bin 2249 -> 2257 bytes .../models/__pycache__/utils.cpython-312.pyc | Bin 3439 -> 3447 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 111825 -> 111833 bytes .../fields/__pycache__/files.cpython-312.pyc | Bin 20302 -> 20310 bytes .../fields/__pycache__/json.cpython-312.pyc | Bin 31311 -> 31319 bytes .../fields/__pycache__/mixins.cpython-312.pyc | Bin 3243 -> 3251 bytes .../fields/__pycache__/proxy.cpython-312.pyc | Bin 1066 -> 1074 bytes .../__pycache__/related.cpython-312.pyc | Bin 82329 -> 82337 bytes .../related_descriptors.cpython-312.pyc | Bin 71808 -> 71816 bytes .../related_lookups.cpython-312.pyc | Bin 10415 -> 10423 bytes .../reverse_related.cpython-312.pyc | Bin 16110 -> 16118 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2498 -> 2506 bytes .../__pycache__/comparison.cpython-312.pyc | Bin 11389 -> 11397 bytes .../__pycache__/datetime.cpython-312.pyc | Bin 17353 -> 17361 bytes .../__pycache__/math.cpython-312.pyc | Bin 9075 -> 9083 bytes .../__pycache__/mixins.cpython-312.pyc | Bin 3915 -> 3923 bytes .../__pycache__/text.cpython-312.pyc | Bin 15973 -> 15981 bytes .../__pycache__/window.cpython-312.pyc | Bin 4785 -> 4793 bytes .../sql/__pycache__/__init__.cpython-312.pyc | Bin 443 -> 451 bytes .../sql/__pycache__/compiler.cpython-312.pyc | Bin 92424 -> 92432 bytes .../sql/__pycache__/constants.cpython-312.pyc | Bin 543 -> 551 bytes .../datastructures.cpython-312.pyc | Bin 9313 -> 9321 bytes .../sql/__pycache__/query.cpython-312.pyc | Bin 110769 -> 110777 bytes .../__pycache__/subqueries.cpython-312.pyc | Bin 8876 -> 8884 bytes .../sql/__pycache__/where.cpython-312.pyc | Bin 16512 -> 16520 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 504 -> 512 bytes .../__pycache__/dispatcher.cpython-312.pyc | Bin 11630 -> 11638 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 528 -> 536 bytes .../__pycache__/boundfield.cpython-312.pyc | Bin 17864 -> 17872 bytes .../forms/__pycache__/fields.cpython-312.pyc | Bin 59930 -> 59938 bytes .../forms/__pycache__/forms.cpython-312.pyc | Bin 22503 -> 22511 bytes .../__pycache__/formsets.cpython-312.pyc | Bin 23983 -> 23991 bytes .../forms/__pycache__/models.cpython-312.pyc | Bin 62975 -> 62983 bytes .../__pycache__/renderers.cpython-312.pyc | Bin 4410 -> 4418 bytes .../forms/__pycache__/utils.cpython-312.pyc | Bin 12073 -> 12081 bytes .../forms/__pycache__/widgets.cpython-312.pyc | Bin 52009 -> 52017 bytes .../http/__pycache__/__init__.cpython-312.pyc | Bin 1093 -> 1101 bytes .../http/__pycache__/cookie.cpython-312.pyc | Bin 876 -> 884 bytes .../multipartparser.cpython-312.pyc | Bin 26056 -> 26064 bytes .../http/__pycache__/request.cpython-312.pyc | Bin 34609 -> 34617 bytes .../http/__pycache__/response.cpython-312.pyc | Bin 34047 -> 34055 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 188 -> 196 bytes .../__pycache__/cache.cpython-312.pyc | Bin 8417 -> 8425 bytes .../__pycache__/clickjacking.cpython-312.pyc | Bin 2209 -> 2217 bytes .../__pycache__/common.cpython-312.pyc | Bin 8431 -> 8439 bytes .../__pycache__/csrf.cpython-312.pyc | Bin 20403 -> 20411 bytes .../__pycache__/gzip.cpython-312.pyc | Bin 2949 -> 2957 bytes .../__pycache__/http.cpython-312.pyc | Bin 2224 -> 2232 bytes .../__pycache__/locale.cpython-312.pyc | Bin 3470 -> 3478 bytes .../__pycache__/security.cpython-312.pyc | Bin 4120 -> 4128 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1865 -> 1873 bytes .../__pycache__/autoreload.cpython-312.pyc | Bin 3052 -> 3060 bytes .../template/__pycache__/base.cpython-312.pyc | Bin 45416 -> 45424 bytes .../__pycache__/context.cpython-312.pyc | Bin 13653 -> 13661 bytes .../context_processors.cpython-312.pyc | Bin 3577 -> 3585 bytes .../defaultfilters.cpython-312.pyc | Bin 37582 -> 37590 bytes .../__pycache__/defaulttags.cpython-312.pyc | Bin 58748 -> 58756 bytes .../__pycache__/engine.cpython-312.pyc | Bin 9378 -> 9386 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 1932 -> 1940 bytes .../__pycache__/library.cpython-312.pyc | Bin 14143 -> 14151 bytes .../__pycache__/loader.cpython-312.pyc | Bin 2696 -> 2704 bytes .../__pycache__/loader_tags.cpython-312.pyc | Bin 16713 -> 16721 bytes .../__pycache__/response.cpython-312.pyc | Bin 6265 -> 6273 bytes .../__pycache__/smartif.cpython-312.pyc | Bin 10799 -> 10807 bytes .../__pycache__/utils.cpython-312.pyc | Bin 4707 -> 4715 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../backends/__pycache__/base.cpython-312.pyc | Bin 3478 -> 3486 bytes .../__pycache__/django.cpython-312.pyc | Bin 7274 -> 7282 bytes .../__pycache__/dummy.cpython-312.pyc | Bin 2996 -> 3004 bytes .../__pycache__/jinja2.cpython-312.pyc | Bin 6325 -> 6333 bytes .../__pycache__/utils.cpython-312.pyc | Bin 763 -> 771 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../app_directories.cpython-312.pyc | Bin 769 -> 777 bytes .../loaders/__pycache__/base.cpython-312.pyc | Bin 2243 -> 2251 bytes .../__pycache__/cached.cpython-312.pyc | Bin 5553 -> 5561 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 2454 -> 2462 bytes .../__pycache__/locmem.cpython-312.pyc | Bin 1396 -> 1404 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 198 bytes .../__pycache__/cache.cpython-312.pyc | Bin 4520 -> 4528 bytes .../__pycache__/i18n.cpython-312.pyc | Bin 25746 -> 25754 bytes .../__pycache__/l10n.cpython-312.pyc | Bin 3064 -> 3072 bytes .../__pycache__/static.cpython-312.pyc | Bin 7118 -> 7126 bytes .../__pycache__/tz.cpython-312.pyc | Bin 8681 -> 8689 bytes .../test/__pycache__/__init__.cpython-312.pyc | Bin 871 -> 879 bytes .../test/__pycache__/client.cpython-312.pyc | Bin 45536 -> 45544 bytes .../test/__pycache__/html.cpython-312.pyc | Bin 11999 -> 12007 bytes .../test/__pycache__/runner.cpython-312.pyc | Bin 53549 -> 53557 bytes .../test/__pycache__/selenium.cpython-312.pyc | Bin 6782 -> 6790 bytes .../test/__pycache__/signals.cpython-312.pyc | Bin 9399 -> 9407 bytes .../__pycache__/testcases.cpython-312.pyc | Bin 84623 -> 84631 bytes .../test/__pycache__/utils.cpython-312.pyc | Bin 44689 -> 44697 bytes .../urls/__pycache__/__init__.cpython-312.pyc | Bin 1081 -> 1089 bytes .../urls/__pycache__/base.cpython-312.pyc | Bin 6579 -> 6587 bytes .../urls/__pycache__/conf.cpython-312.pyc | Bin 3321 -> 3329 bytes .../__pycache__/converters.cpython-312.pyc | Bin 2815 -> 2823 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 566 -> 574 bytes .../__pycache__/resolvers.cpython-312.pyc | Bin 36574 -> 36582 bytes .../urls/__pycache__/utils.cpython-312.pyc | Bin 2369 -> 2377 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 183 -> 191 bytes .../utils/__pycache__/_os.cpython-312.pyc | Bin 2838 -> 2846 bytes .../utils/__pycache__/archive.cpython-312.pyc | Bin 12341 -> 12349 bytes .../utils/__pycache__/asyncio.cpython-312.pyc | Bin 2598 -> 2606 bytes .../__pycache__/autoreload.cpython-312.pyc | Bin 32379 -> 32387 bytes .../__pycache__/baseconv.cpython-312.pyc | Bin 3757 -> 3765 bytes .../utils/__pycache__/cache.cpython-312.pyc | Bin 16864 -> 16872 bytes .../__pycache__/connection.cpython-312.pyc | Bin 5304 -> 5312 bytes .../utils/__pycache__/crypto.cpython-312.pyc | Bin 4083 -> 4091 bytes .../datastructures.cpython-312.pyc | Bin 17322 -> 17330 bytes .../__pycache__/dateformat.cpython-312.pyc | Bin 16177 -> 16185 bytes .../__pycache__/dateparse.cpython-312.pyc | Bin 6542 -> 6550 bytes .../utils/__pycache__/dates.cpython-312.pyc | Bin 2335 -> 2343 bytes .../__pycache__/datetime_safe.cpython-312.pyc | Bin 4614 -> 4622 bytes .../__pycache__/deconstruct.cpython-312.pyc | Bin 2466 -> 2474 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 7379 -> 7387 bytes .../__pycache__/deprecation.cpython-312.pyc | Bin 6954 -> 6962 bytes .../__pycache__/duration.cpython-312.pyc | Bin 1894 -> 1902 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 9369 -> 9377 bytes .../__pycache__/feedgenerator.cpython-312.pyc | Bin 19180 -> 19188 bytes .../utils/__pycache__/formats.cpython-312.pyc | Bin 11234 -> 11242 bytes .../__pycache__/functional.cpython-312.pyc | Bin 20087 -> 20095 bytes .../__pycache__/hashable.cpython-312.pyc | Bin 1061 -> 1069 bytes .../utils/__pycache__/html.cpython-312.pyc | Bin 17671 -> 17679 bytes .../utils/__pycache__/http.cpython-312.pyc | Bin 17128 -> 17136 bytes .../utils/__pycache__/inspect.cpython-312.pyc | Bin 4410 -> 4418 bytes .../utils/__pycache__/ipv6.cpython-312.pyc | Bin 1948 -> 1956 bytes .../__pycache__/itercompat.cpython-312.pyc | Bin 465 -> 473 bytes .../utils/__pycache__/jslex.cpython-312.pyc | Bin 9040 -> 9048 bytes .../utils/__pycache__/log.cpython-312.pyc | Bin 9511 -> 9519 bytes .../__pycache__/lorem_ipsum.cpython-312.pyc | Bin 5419 -> 5427 bytes .../module_loading.cpython-312.pyc | Bin 4042 -> 4050 bytes .../__pycache__/numberformat.cpython-312.pyc | Bin 3474 -> 3482 bytes .../__pycache__/regex_helper.cpython-312.pyc | Bin 11171 -> 11179 bytes .../__pycache__/safestring.cpython-312.pyc | Bin 3028 -> 3036 bytes .../__pycache__/termcolors.cpython-312.pyc | Bin 7449 -> 7457 bytes .../utils/__pycache__/text.cpython-312.pyc | Bin 17670 -> 17678 bytes .../__pycache__/timesince.cpython-312.pyc | Bin 5811 -> 5819 bytes .../__pycache__/timezone.cpython-312.pyc | Bin 12146 -> 12154 bytes .../topological_sort.cpython-312.pyc | Bin 2119 -> 2127 bytes .../utils/__pycache__/tree.cpython-312.pyc | Bin 5866 -> 5874 bytes .../utils/__pycache__/version.cpython-312.pyc | Bin 4813 -> 4821 bytes .../__pycache__/xmlutils.cpython-312.pyc | Bin 1916 -> 1924 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 12262 -> 12270 bytes .../__pycache__/reloader.cpython-312.pyc | Bin 2160 -> 2168 bytes .../__pycache__/template.cpython-312.pyc | Bin 9480 -> 9488 bytes .../__pycache__/trans_null.cpython-312.pyc | Bin 2282 -> 2290 bytes .../__pycache__/trans_real.cpython-312.pyc | Bin 27582 -> 27590 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 267 -> 275 bytes .../views/__pycache__/csrf.cpython-312.pyc | Bin 6006 -> 6014 bytes .../views/__pycache__/debug.cpython-312.pyc | Bin 28676 -> 28684 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 4700 -> 4708 bytes .../views/__pycache__/i18n.cpython-312.pyc | Bin 14098 -> 14106 bytes .../views/__pycache__/static.cpython-312.pyc | Bin 5586 -> 5594 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../__pycache__/cache.cpython-312.pyc | Bin 2944 -> 2952 bytes .../__pycache__/clickjacking.cpython-312.pyc | Bin 2248 -> 2256 bytes .../__pycache__/common.cpython-312.pyc | Bin 749 -> 757 bytes .../__pycache__/csrf.cpython-312.pyc | Bin 2642 -> 2650 bytes .../__pycache__/debug.cpython-312.pyc | Bin 3781 -> 3789 bytes .../__pycache__/gzip.cpython-312.pyc | Bin 461 -> 469 bytes .../__pycache__/http.cpython-312.pyc | Bin 5573 -> 5581 bytes .../__pycache__/vary.cpython-312.pyc | Bin 1784 -> 1792 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1135 -> 1143 bytes .../generic/__pycache__/base.cpython-312.pyc | Bin 12159 -> 12167 bytes .../generic/__pycache__/dates.cpython-312.pyc | Bin 31556 -> 31564 bytes .../__pycache__/detail.cpython-312.pyc | Bin 7776 -> 7784 bytes .../generic/__pycache__/edit.cpython-312.pyc | Bin 13657 -> 13665 bytes .../generic/__pycache__/list.cpython-312.pyc | Bin 9302 -> 9310 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1308 -> 1316 bytes .../__pycache__/compat.cpython-312.pyc | Bin 1099 -> 1107 bytes .../__pycache__/conf.cpython-312.pyc | Bin 3859 -> 3867 bytes .../__pycache__/constants.cpython-312.pyc | Bin 266 -> 274 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 748 -> 756 bytes .../__pycache__/fields.cpython-312.pyc | Bin 16248 -> 16256 bytes .../__pycache__/filters.cpython-312.pyc | Bin 38071 -> 38079 bytes .../__pycache__/filterset.cpython-312.pyc | Bin 20262 -> 20270 bytes .../__pycache__/utils.cpython-312.pyc | Bin 14331 -> 14339 bytes .../__pycache__/views.cpython-312.pyc | Bin 5659 -> 5667 bytes .../__pycache__/widgets.cpython-312.pyc | Bin 14707 -> 14715 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 326 -> 334 bytes .../__pycache__/backends.cpython-312.pyc | Bin 7419 -> 7427 bytes .../__pycache__/filters.cpython-312.pyc | Bin 895 -> 903 bytes .../__pycache__/filterset.cpython-312.pyc | Bin 1919 -> 1927 bytes .../INSTALLER | 0 .../LICENSE.rst | 0 .../METADATA | 88 +- .../RECORD | 30 +- .../REQUESTED | 0 .../WHEEL | 2 +- .../top_level.txt | 0 .../drf_yasg-1.21.7.dist-info/INSTALLER | 1 - .../drf_yasg-1.21.7.dist-info/WHEEL | 5 - .../site-packages/drf_yasg/__init__.py | 14 +- .../__pycache__/__init__.cpython-312.pyc | Bin 478 -> 637 bytes .../__pycache__/app_settings.cpython-312.pyc | Bin 4274 -> 4748 bytes .../__pycache__/codecs.cpython-312.pyc | Bin 11047 -> 11055 bytes .../__pycache__/errors.cpython-312.pyc | Bin 1073 -> 1081 bytes .../__pycache__/generators.cpython-312.pyc | Bin 29295 -> 29303 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 1524 -> 1532 bytes .../__pycache__/openapi.cpython-312.pyc | Bin 39098 -> 39102 bytes .../__pycache__/renderers.cpython-312.pyc | Bin 11230 -> 11466 bytes .../__pycache__/utils.cpython-312.pyc | Bin 26810 -> 27177 bytes .../__pycache__/views.cpython-312.pyc | Bin 8310 -> 9282 bytes .../site-packages/drf_yasg/app_settings.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 1541 -> 1549 bytes .../__pycache__/base.cpython-312.pyc | Bin 24614 -> 24622 bytes .../__pycache__/field.cpython-312.pyc | Bin 40770 -> 40798 bytes .../__pycache__/query.cpython-312.pyc | Bin 7548 -> 7556 bytes .../__pycache__/view.cpython-312.pyc | Bin 22591 -> 22599 bytes .../drf_yasg/inspectors/field.py | 75 +- .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 198 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 199 -> 207 bytes .../generate_swagger.cpython-312.pyc | Bin 7278 -> 7286 bytes .../site-packages/drf_yasg/openapi.py | 4 +- .../site-packages/drf_yasg/renderers.py | 7 +- .../static/drf-yasg/swagger-ui-init.js | 17 +- .../site-packages/drf_yasg/utils.py | 16 +- .../site-packages/drf_yasg/views.py | 16 + .../__pycache__/__init__.cpython-312.pyc | Bin 1094 -> 1102 bytes .../__pycache__/compat.cpython-312.pyc | Bin 2004 -> 2012 bytes .../__pycache__/environ.cpython-312.pyc | Bin 43971 -> 43979 bytes .../fileaware_mapping.cpython-312.pyc | Bin 4123 -> 4131 bytes .../idna-3.10.dist-info/INSTALLER | 1 - .../idna-3.10.dist-info/LICENSE.md | 31 - .../idna-3.10.dist-info/METADATA | 250 - .../site-packages/idna-3.10.dist-info/RECORD | 22 - .../site-packages/idna-3.10.dist-info/WHEEL | 4 - .../python3.12/site-packages/idna/__init__.py | 45 - .../idna/__pycache__/__init__.cpython-312.pyc | Bin 873 -> 0 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 4973 -> 0 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 877 -> 0 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 16163 -> 0 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 99463 -> 0 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 2625 -> 0 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 204 -> 0 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 158833 -> 0 bytes .../python3.12/site-packages/idna/codec.py | 122 - .../python3.12/site-packages/idna/compat.py | 15 - .../lib/python3.12/site-packages/idna/core.py | 437 - .../python3.12/site-packages/idna/idnadata.py | 4243 -------- .../site-packages/idna/intranges.py | 57 - .../site-packages/idna/package_data.py | 1 - .../python3.12/site-packages/idna/py.typed | 0 .../site-packages/idna/uts46data.py | 8681 ----------------- .../__pycache__/__init__.cpython-312.pyc | Bin 15044 -> 15052 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4334 -> 4342 bytes .../__pycache__/abstract.cpython-312.pyc | Bin 7041 -> 7049 bytes .../kombu/__pycache__/clocks.cpython-312.pyc | Bin 7043 -> 7051 bytes .../kombu/__pycache__/common.cpython-312.pyc | Bin 17651 -> 17659 bytes .../kombu/__pycache__/compat.cpython-312.pyc | Bin 9897 -> 9905 bytes .../__pycache__/compression.cpython-312.pyc | Bin 4232 -> 4240 bytes .../__pycache__/connection.cpython-312.pyc | Bin 49860 -> 49868 bytes .../kombu/__pycache__/entity.cpython-312.pyc | Bin 38102 -> 38110 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 4967 -> 4975 bytes .../kombu/__pycache__/log.cpython-312.pyc | Bin 7942 -> 7950 bytes .../kombu/__pycache__/matcher.cpython-312.pyc | Bin 4449 -> 4457 bytes .../kombu/__pycache__/message.cpython-312.pyc | Bin 10126 -> 10134 bytes .../__pycache__/messaging.cpython-312.pyc | Bin 27005 -> 27013 bytes .../kombu/__pycache__/mixins.cpython-312.pyc | Bin 13460 -> 13468 bytes .../kombu/__pycache__/pidbox.cpython-312.pyc | Bin 17520 -> 17528 bytes .../kombu/__pycache__/pools.cpython-312.pyc | Bin 7393 -> 7401 bytes .../__pycache__/resource.cpython-312.pyc | Bin 11700 -> 11708 bytes .../__pycache__/serialization.cpython-312.pyc | Bin 18525 -> 18533 bytes .../kombu/__pycache__/simple.cpython-312.pyc | Bin 6892 -> 6900 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 489 -> 497 bytes .../__pycache__/debug.cpython-312.pyc | Bin 3521 -> 3529 bytes .../__pycache__/hub.cpython-312.pyc | Bin 16472 -> 16480 bytes .../__pycache__/semaphore.cpython-312.pyc | Bin 5615 -> 5623 bytes .../__pycache__/timer.cpython-312.pyc | Bin 11039 -> 11047 bytes .../aws/__pycache__/__init__.cpython-312.pyc | Bin 768 -> 776 bytes .../__pycache__/connection.cpython-312.pyc | Bin 13830 -> 13838 bytes .../aws/__pycache__/ext.cpython-312.pyc | Bin 1076 -> 1084 bytes .../sqs/__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/connection.cpython-312.pyc | Bin 14352 -> 14360 bytes .../aws/sqs/__pycache__/ext.cpython-312.pyc | Bin 384 -> 392 bytes .../sqs/__pycache__/message.cpython-312.pyc | Bin 1779 -> 1787 bytes .../aws/sqs/__pycache__/queue.cpython-312.pyc | Bin 6545 -> 6553 bytes .../http/__pycache__/__init__.cpython-312.pyc | Bin 1232 -> 1240 bytes .../http/__pycache__/base.cpython-312.pyc | Bin 12984 -> 12992 bytes .../urllib3_client.cpython-312.pyc | Bin 8850 -> 8858 bytes .../__pycache__/SLMQ.cpython-312.pyc | Bin 10372 -> 10380 bytes .../transport/__pycache__/SQS.cpython-312.pyc | Bin 42537 -> 42545 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3744 -> 3752 bytes .../azureservicebus.cpython-312.pyc | Bin 22716 -> 22724 bytes .../azurestoragequeues.cpython-312.pyc | Bin 11325 -> 11333 bytes .../__pycache__/base.cpython-312.pyc | Bin 11725 -> 11733 bytes .../confluentkafka.cpython-312.pyc | Bin 17861 -> 17869 bytes .../__pycache__/consul.cpython-312.pyc | Bin 14825 -> 14833 bytes .../__pycache__/etcd.cpython-312.pyc | Bin 13584 -> 13592 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 14812 -> 14820 bytes .../__pycache__/gcpubsub.cpython-312.pyc | Bin 35995 -> 36003 bytes .../__pycache__/librabbitmq.cpython-312.pyc | Bin 8935 -> 8943 bytes .../__pycache__/memory.cpython-312.pyc | Bin 4897 -> 4905 bytes .../__pycache__/mongodb.cpython-312.pyc | Bin 21178 -> 21186 bytes .../native_delayed_delivery.cpython-312.pyc | Bin 5777 -> 5785 bytes .../__pycache__/pyamqp.cpython-312.pyc | Bin 10774 -> 10782 bytes .../__pycache__/pyro.cpython-312.pyc | Bin 10458 -> 10466 bytes .../__pycache__/qpid.cpython-312.pyc | Bin 77883 -> 77891 bytes .../__pycache__/redis.cpython-312.pyc | Bin 65602 -> 65610 bytes .../__pycache__/zookeeper.cpython-312.pyc | Bin 9767 -> 9775 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 11939 -> 11947 bytes .../__pycache__/models.cpython-312.pyc | Bin 3541 -> 3549 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 657 -> 665 bytes .../virtual/__pycache__/base.cpython-312.pyc | Bin 45396 -> 45404 bytes .../__pycache__/exchange.cpython-312.pyc | Bin 7336 -> 7344 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 866 -> 874 bytes .../__pycache__/amq_manager.cpython-312.pyc | Bin 1193 -> 1201 bytes .../__pycache__/collections.cpython-312.pyc | Bin 2294 -> 2302 bytes .../utils/__pycache__/compat.cpython-312.pyc | Bin 4947 -> 4955 bytes .../utils/__pycache__/debug.cpython-312.pyc | Bin 3778 -> 3786 bytes .../utils/__pycache__/div.cpython-312.pyc | Bin 1622 -> 1630 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 3638 -> 3646 bytes .../utils/__pycache__/eventio.cpython-312.pyc | Bin 15611 -> 15619 bytes .../__pycache__/functional.cpython-312.pyc | Bin 17008 -> 17016 bytes .../utils/__pycache__/imports.cpython-312.pyc | Bin 2503 -> 2511 bytes .../utils/__pycache__/json.cpython-312.pyc | Bin 6520 -> 6528 bytes .../utils/__pycache__/limits.cpython-312.pyc | Bin 3749 -> 3757 bytes .../utils/__pycache__/objects.cpython-312.pyc | Bin 3123 -> 3131 bytes .../__pycache__/scheduling.cpython-312.pyc | Bin 5012 -> 5020 bytes .../utils/__pycache__/text.cpython-312.pyc | Bin 3605 -> 3613 bytes .../utils/__pycache__/time.cpython-312.pyc | Bin 598 -> 606 bytes .../utils/__pycache__/url.cpython-312.pyc | Bin 5440 -> 5448 bytes .../utils/__pycache__/uuid.cpython-312.pyc | Bin 666 -> 674 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 545 -> 553 bytes .../__pycache__/_elffile.cpython-312.pyc | Bin 5010 -> 5018 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 9738 -> 9746 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 4556 -> 4564 bytes .../__pycache__/_parser.cpython-312.pyc | Bin 13985 -> 13993 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3228 -> 3236 bytes .../__pycache__/_tokenizer.cpython-312.pyc | Bin 7935 -> 7943 bytes .../__pycache__/markers.cpython-312.pyc | Bin 12752 -> 12760 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 27237 -> 27245 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 4397 -> 4405 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 39027 -> 39035 bytes .../__pycache__/tags.cpython-312.pyc | Bin 24803 -> 24811 bytes .../__pycache__/utils.cpython-312.pyc | Bin 6622 -> 6630 bytes .../__pycache__/version.cpython-312.pyc | Bin 20455 -> 20463 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4104 -> 4112 bytes .../__pycache__/_spdx.cpython-312.pyc | Bin 47351 -> 47359 bytes .../site-packages/pip-24.0.dist-info/RECORD | 6 +- .../pip/__pycache__/__init__.cpython-312.pyc | Bin 683 -> 691 bytes .../pip/__pycache__/__main__.cpython-312.pyc | Bin 839 -> 847 bytes .../__pip-runner__.cpython-312.pyc | Bin 2202 -> 2210 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 785 -> 793 bytes .../__pycache__/build_env.cpython-312.pyc | Bin 14292 -> 14300 bytes .../__pycache__/cache.cpython-312.pyc | Bin 12663 -> 12671 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 17664 -> 17672 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 33282 -> 33290 bytes .../__pycache__/main.cpython-312.pyc | Bin 668 -> 676 bytes .../__pycache__/pyproject.cpython-312.pyc | Bin 4969 -> 4977 bytes .../self_outdated_check.cpython-312.pyc | Bin 10550 -> 10558 bytes .../__pycache__/wheel_builder.cpython-312.pyc | Bin 13647 -> 13655 bytes .../cli/__pycache__/__init__.cpython-312.pyc | Bin 276 -> 284 bytes .../autocompletion.cpython-312.pyc | Bin 8463 -> 8471 bytes .../__pycache__/base_command.cpython-312.pyc | Bin 10453 -> 10461 bytes .../__pycache__/cmdoptions.cpython-312.pyc | Bin 30372 -> 30380 bytes .../command_context.cpython-312.pyc | Bin 1779 -> 1787 bytes .../cli/__pycache__/main.cpython-312.pyc | Bin 2296 -> 2304 bytes .../__pycache__/main_parser.cpython-312.pyc | Bin 4903 -> 4911 bytes .../cli/__pycache__/parser.cpython-312.pyc | Bin 15020 -> 15028 bytes .../__pycache__/progress_bars.cpython-312.pyc | Bin 2618 -> 2626 bytes .../__pycache__/req_command.cpython-312.pyc | Bin 18850 -> 18858 bytes .../cli/__pycache__/spinners.cpython-312.pyc | Bin 7838 -> 7846 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 373 -> 381 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4000 -> 4008 bytes .../__pycache__/cache.cpython-312.pyc | Bin 9709 -> 9717 bytes .../__pycache__/check.cpython-312.pyc | Bin 2088 -> 2096 bytes .../__pycache__/completion.cpython-312.pyc | Bin 5190 -> 5198 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 13210 -> 13218 bytes .../__pycache__/debug.cpython-312.pyc | Bin 10159 -> 10167 bytes .../__pycache__/download.cpython-312.pyc | Bin 7587 -> 7595 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 4414 -> 4422 bytes .../commands/__pycache__/hash.cpython-312.pyc | Bin 2981 -> 2989 bytes .../commands/__pycache__/help.cpython-312.pyc | Bin 1671 -> 1679 bytes .../__pycache__/index.cpython-312.pyc | Bin 6718 -> 6726 bytes .../__pycache__/inspect.cpython-312.pyc | Bin 3973 -> 3981 bytes .../__pycache__/install.cpython-312.pyc | Bin 28911 -> 28919 bytes .../commands/__pycache__/list.cpython-312.pyc | Bin 15654 -> 15662 bytes .../__pycache__/search.cpython-312.pyc | Bin 7619 -> 7627 bytes .../commands/__pycache__/show.cpython-312.pyc | Bin 9726 -> 9734 bytes .../__pycache__/uninstall.cpython-312.pyc | Bin 4724 -> 4732 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 8954 -> 8962 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 939 -> 947 bytes .../__pycache__/base.cpython-312.pyc | Bin 2860 -> 2868 bytes .../__pycache__/installed.cpython-312.pyc | Bin 1698 -> 1706 bytes .../__pycache__/sdist.cpython-312.pyc | Bin 8486 -> 8494 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 2246 -> 2254 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 230 -> 238 bytes .../__pycache__/collector.cpython-312.pyc | Bin 21884 -> 21892 bytes .../package_finder.cpython-312.pyc | Bin 40733 -> 40741 bytes .../index/__pycache__/sources.cpython-312.pyc | Bin 12602 -> 12610 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 16774 -> 16782 bytes .../__pycache__/_distutils.cpython-312.pyc | Bin 6854 -> 6862 bytes .../__pycache__/_sysconfig.cpython-312.pyc | Bin 8009 -> 8017 bytes .../__pycache__/base.cpython-312.pyc | Bin 3779 -> 3787 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 5880 -> 5888 bytes .../__pycache__/_json.cpython-312.pyc | Bin 2873 -> 2881 bytes .../metadata/__pycache__/base.cpython-312.pyc | Bin 35710 -> 35718 bytes .../__pycache__/pkg_resources.cpython-312.pyc | Bin 15788 -> 15796 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 356 -> 364 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 3331 -> 3339 bytes .../__pycache__/_dists.cpython-312.pyc | Bin 13423 -> 13431 bytes .../__pycache__/_envs.cpython-312.pyc | Bin 11178 -> 11186 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 264 -> 272 bytes .../__pycache__/candidate.cpython-312.pyc | Bin 1903 -> 1911 bytes .../__pycache__/direct_url.cpython-312.pyc | Bin 11197 -> 11205 bytes .../format_control.cpython-312.pyc | Bin 4225 -> 4233 bytes .../models/__pycache__/index.cpython-312.pyc | Bin 1692 -> 1700 bytes .../installation_report.cpython-312.pyc | Bin 2270 -> 2278 bytes .../models/__pycache__/link.cpython-312.pyc | Bin 26000 -> 26008 bytes .../models/__pycache__/scheme.cpython-312.pyc | Bin 1167 -> 1175 bytes .../__pycache__/search_scope.cpython-312.pyc | Bin 5086 -> 5094 bytes .../selection_prefs.cpython-312.pyc | Bin 1849 -> 1857 bytes .../__pycache__/target_python.cpython-312.pyc | Bin 4952 -> 4960 bytes .../models/__pycache__/wheel.cpython-312.pyc | Bin 5778 -> 5786 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 252 -> 260 bytes .../network/__pycache__/auth.cpython-312.pyc | Bin 21994 -> 22002 bytes .../network/__pycache__/cache.cpython-312.pyc | Bin 6516 -> 6524 bytes .../__pycache__/download.cpython-312.pyc | Bin 8551 -> 8559 bytes .../__pycache__/lazy_wheel.cpython-312.pyc | Bin 11661 -> 11669 bytes .../__pycache__/session.cpython-312.pyc | Bin 18772 -> 18780 bytes .../network/__pycache__/utils.cpython-312.pyc | Bin 2251 -> 2259 bytes .../__pycache__/xmlrpc.cpython-312.pyc | Bin 2947 -> 2955 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../__pycache__/check.cpython-312.pyc | Bin 7577 -> 7585 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 10115 -> 10123 bytes .../__pycache__/prepare.cpython-312.pyc | Bin 25745 -> 25753 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 209 bytes .../__pycache__/build_tracker.cpython-312.pyc | Bin 7821 -> 7829 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 1878 -> 1886 bytes .../metadata_editable.cpython-312.pyc | Bin 1912 -> 1920 bytes .../metadata_legacy.cpython-312.pyc | Bin 3063 -> 3071 bytes .../build/__pycache__/wheel.cpython-312.pyc | Bin 1682 -> 1690 bytes .../wheel_editable.cpython-312.pyc | Bin 2023 -> 2031 bytes .../__pycache__/wheel_legacy.cpython-312.pyc | Bin 3927 -> 3935 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 264 -> 272 bytes .../editable_legacy.cpython-312.pyc | Bin 1815 -> 1823 bytes .../install/__pycache__/wheel.cpython-312.pyc | Bin 33857 -> 33865 bytes .../req/__pycache__/__init__.cpython-312.pyc | Bin 3741 -> 3749 bytes .../__pycache__/constructors.cpython-312.pyc | Bin 21580 -> 21588 bytes .../req/__pycache__/req_file.cpython-312.pyc | Bin 21459 -> 21467 bytes .../__pycache__/req_install.cpython-312.pyc | Bin 38412 -> 38420 bytes .../req/__pycache__/req_set.cpython-312.pyc | Bin 7216 -> 7224 bytes .../__pycache__/req_uninstall.cpython-312.pyc | Bin 32975 -> 32983 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../__pycache__/base.cpython-312.pyc | Bin 1183 -> 1191 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 210 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 22437 -> 22445 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../__pycache__/base.cpython-312.pyc | Bin 8335 -> 8343 bytes .../__pycache__/candidates.cpython-312.pyc | Bin 30396 -> 30404 bytes .../__pycache__/factory.cpython-312.pyc | Bin 32112 -> 32120 bytes .../found_candidates.cpython-312.pyc | Bin 6206 -> 6214 bytes .../__pycache__/provider.cpython-312.pyc | Bin 10376 -> 10384 bytes .../__pycache__/reporter.cpython-312.pyc | Bin 4933 -> 4941 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 11427 -> 11435 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 12349 -> 12357 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 198 bytes .../__pycache__/_jaraco_text.cpython-312.pyc | Bin 4531 -> 4539 bytes .../utils/__pycache__/_log.cpython-312.pyc | Bin 1861 -> 1869 bytes .../utils/__pycache__/appdirs.cpython-312.pyc | Bin 2405 -> 2413 bytes .../utils/__pycache__/compat.cpython-312.pyc | Bin 2208 -> 2216 bytes .../compatibility_tags.cpython-312.pyc | Bin 5556 -> 5564 bytes .../__pycache__/datetime.cpython-312.pyc | Bin 679 -> 687 bytes .../__pycache__/deprecation.cpython-312.pyc | Bin 4181 -> 4189 bytes .../direct_url_helpers.cpython-312.pyc | Bin 3558 -> 3566 bytes .../__pycache__/egg_link.cpython-312.pyc | Bin 3221 -> 3229 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 2153 -> 2161 bytes .../__pycache__/entrypoints.cpython-312.pyc | Bin 3988 -> 3996 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 7453 -> 7461 bytes .../__pycache__/filetypes.cpython-312.pyc | Bin 1159 -> 1167 bytes .../utils/__pycache__/glibc.cpython-312.pyc | Bin 2337 -> 2345 bytes .../utils/__pycache__/hashes.cpython-312.pyc | Bin 7549 -> 7557 bytes .../utils/__pycache__/logging.cpython-312.pyc | Bin 13552 -> 13560 bytes .../utils/__pycache__/misc.cpython-312.pyc | Bin 34116 -> 34124 bytes .../utils/__pycache__/models.cpython-312.pyc | Bin 2707 -> 2715 bytes .../__pycache__/packaging.cpython-312.pyc | Bin 2578 -> 2586 bytes .../setuptools_build.cpython-312.pyc | Bin 4545 -> 4553 bytes .../__pycache__/subprocess.cpython-312.pyc | Bin 8713 -> 8721 bytes .../__pycache__/temp_dir.cpython-312.pyc | Bin 12057 -> 12065 bytes .../__pycache__/unpacking.cpython-312.pyc | Bin 11103 -> 11111 bytes .../utils/__pycache__/urls.cpython-312.pyc | Bin 2400 -> 2408 bytes .../__pycache__/virtualenv.cpython-312.pyc | Bin 4475 -> 4483 bytes .../utils/__pycache__/wheel.cpython-312.pyc | Bin 5921 -> 5929 bytes .../vcs/__pycache__/__init__.cpython-312.pyc | Bin 529 -> 537 bytes .../vcs/__pycache__/bazaar.cpython-312.pyc | Bin 5021 -> 5029 bytes .../vcs/__pycache__/git.cpython-312.pyc | Bin 18990 -> 18998 bytes .../vcs/__pycache__/mercurial.cpython-312.pyc | Bin 7610 -> 7618 bytes .../__pycache__/subversion.cpython-312.pyc | Bin 12482 -> 12490 bytes .../versioncontrol.cpython-312.pyc | Bin 29008 -> 29016 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4691 -> 4699 bytes .../_vendor/__pycache__/six.cpython-312.pyc | Bin 41268 -> 41276 bytes .../typing_extensions.cpython-312.pyc | Bin 122048 -> 122056 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 901 -> 909 bytes .../__pycache__/_cmd.cpython-312.pyc | Bin 2645 -> 2653 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 6463 -> 6471 bytes .../__pycache__/cache.cpython-312.pyc | Bin 3808 -> 3816 bytes .../__pycache__/controller.cpython-312.pyc | Bin 16166 -> 16174 bytes .../__pycache__/filewrapper.cpython-312.pyc | Bin 4346 -> 4354 bytes .../__pycache__/heuristics.cpython-312.pyc | Bin 6693 -> 6701 bytes .../__pycache__/serialize.cpython-312.pyc | Bin 6404 -> 6412 bytes .../__pycache__/wrapper.cpython-312.pyc | Bin 1673 -> 1681 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 434 -> 442 bytes .../__pycache__/file_cache.cpython-312.pyc | Bin 7709 -> 7717 bytes .../__pycache__/redis_cache.cpython-312.pyc | Bin 2737 -> 2745 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 317 -> 325 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 644 -> 652 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 3326 -> 3334 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4567 -> 4575 bytes .../__pycache__/big5freq.cpython-312.pyc | Bin 27198 -> 27206 bytes .../__pycache__/big5prober.cpython-312.pyc | Bin 1386 -> 1394 bytes .../chardistribution.cpython-312.pyc | Bin 9637 -> 9645 bytes .../charsetgroupprober.cpython-312.pyc | Bin 4121 -> 4129 bytes .../__pycache__/charsetprober.cpython-312.pyc | Bin 5017 -> 5025 bytes .../codingstatemachine.cpython-312.pyc | Bin 3877 -> 3885 bytes .../codingstatemachinedict.cpython-312.pyc | Bin 788 -> 796 bytes .../__pycache__/cp949prober.cpython-312.pyc | Bin 1395 -> 1403 bytes .../chardet/__pycache__/enums.cpython-312.pyc | Bin 2995 -> 3003 bytes .../__pycache__/escprober.cpython-312.pyc | Bin 4565 -> 4573 bytes .../chardet/__pycache__/escsm.cpython-312.pyc | Bin 15309 -> 15317 bytes .../__pycache__/eucjpprober.cpython-312.pyc | Bin 4382 -> 4390 bytes .../__pycache__/euckrfreq.cpython-312.pyc | Bin 12081 -> 12089 bytes .../__pycache__/euckrprober.cpython-312.pyc | Bin 1389 -> 1397 bytes .../__pycache__/euctwfreq.cpython-312.pyc | Bin 27203 -> 27211 bytes .../__pycache__/euctwprober.cpython-312.pyc | Bin 1389 -> 1397 bytes .../__pycache__/gb2312freq.cpython-312.pyc | Bin 19125 -> 19133 bytes .../__pycache__/gb2312prober.cpython-312.pyc | Bin 1402 -> 1410 bytes .../__pycache__/hebrewprober.cpython-312.pyc | Bin 5821 -> 5829 bytes .../__pycache__/jisfreq.cpython-312.pyc | Bin 22154 -> 22162 bytes .../__pycache__/johabfreq.cpython-312.pyc | Bin 83002 -> 83010 bytes .../__pycache__/johabprober.cpython-312.pyc | Bin 1393 -> 1401 bytes .../__pycache__/jpcntx.cpython-312.pyc | Bin 39548 -> 39556 bytes .../langbulgarianmodel.cpython-312.pyc | Bin 83121 -> 83129 bytes .../langgreekmodel.cpython-312.pyc | Bin 76987 -> 76995 bytes .../langhebrewmodel.cpython-312.pyc | Bin 77498 -> 77506 bytes .../langhungarianmodel.cpython-312.pyc | Bin 83075 -> 83083 bytes .../langrussianmodel.cpython-312.pyc | Bin 105250 -> 105258 bytes .../__pycache__/langthaimodel.cpython-312.pyc | Bin 77676 -> 77684 bytes .../langturkishmodel.cpython-312.pyc | Bin 77515 -> 77523 bytes .../__pycache__/latin1prober.cpython-312.pyc | Bin 7001 -> 7009 bytes .../macromanprober.cpython-312.pyc | Bin 7181 -> 7189 bytes .../mbcharsetprober.cpython-312.pyc | Bin 3902 -> 3910 bytes .../mbcsgroupprober.cpython-312.pyc | Bin 1587 -> 1595 bytes .../__pycache__/mbcssm.cpython-312.pyc | Bin 38644 -> 38652 bytes .../__pycache__/resultdict.cpython-312.pyc | Bin 631 -> 639 bytes .../sbcharsetprober.cpython-312.pyc | Bin 6386 -> 6394 bytes .../sbcsgroupprober.cpython-312.pyc | Bin 2356 -> 2364 bytes .../__pycache__/sjisprober.cpython-312.pyc | Bin 4494 -> 4502 bytes .../universaldetector.cpython-312.pyc | Bin 12268 -> 12276 bytes .../__pycache__/utf1632prober.cpython-312.pyc | Bin 9978 -> 9986 bytes .../__pycache__/utf8prober.cpython-312.pyc | Bin 3174 -> 3182 bytes .../__pycache__/version.cpython-312.pyc | Bin 487 -> 495 bytes .../cli/__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../__pycache__/chardetect.cpython-312.pyc | Bin 4011 -> 4019 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 199 -> 207 bytes .../__pycache__/languages.cpython-312.pyc | Bin 9754 -> 9762 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 491 -> 499 bytes .../colorama/__pycache__/ansi.cpython-312.pyc | Bin 3949 -> 3957 bytes .../__pycache__/ansitowin32.cpython-312.pyc | Bin 16420 -> 16428 bytes .../__pycache__/initialise.cpython-312.pyc | Bin 3549 -> 3557 bytes .../__pycache__/win32.cpython-312.pyc | Bin 8125 -> 8133 bytes .../__pycache__/winterm.cpython-312.pyc | Bin 9087 -> 9095 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/ansi_test.cpython-312.pyc | Bin 5466 -> 5474 bytes .../ansitowin32_test.cpython-312.pyc | Bin 18102 -> 18110 bytes .../initialise_test.cpython-312.pyc | Bin 11747 -> 11755 bytes .../__pycache__/isatty_test.cpython-312.pyc | Bin 4903 -> 4911 bytes .../tests/__pycache__/utils.cpython-312.pyc | Bin 2487 -> 2495 bytes .../__pycache__/winterm_test.cpython-312.pyc | Bin 6611 -> 6619 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1268 -> 1276 bytes .../__pycache__/compat.cpython-312.pyc | Bin 45604 -> 45612 bytes .../__pycache__/database.cpython-312.pyc | Bin 66026 -> 66034 bytes .../distlib/__pycache__/index.cpython-312.pyc | Bin 24365 -> 24373 bytes .../__pycache__/locators.cpython-312.pyc | Bin 60157 -> 60165 bytes .../__pycache__/manifest.cpython-312.pyc | Bin 15124 -> 15132 bytes .../__pycache__/markers.cpython-312.pyc | Bin 7681 -> 7689 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 41798 -> 41806 bytes .../__pycache__/resources.cpython-312.pyc | Bin 17324 -> 17332 bytes .../__pycache__/scripts.cpython-312.pyc | Bin 19579 -> 19587 bytes .../distlib/__pycache__/util.cpython-312.pyc | Bin 88255 -> 88263 bytes .../__pycache__/version.cpython-312.pyc | Bin 30365 -> 30373 bytes .../distlib/__pycache__/wheel.cpython-312.pyc | Bin 51860 -> 51868 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 959 -> 967 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 291 -> 299 bytes .../distro/__pycache__/distro.cpython-312.pyc | Bin 53753 -> 53761 bytes .../idna/__pycache__/__init__.cpython-312.pyc | Bin 880 -> 888 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 4632 -> 4640 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 886 -> 894 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 16022 -> 16030 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 99496 -> 99504 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 2637 -> 2645 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 215 -> 223 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 158869 -> 158877 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1830 -> 1838 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2024 -> 2032 bytes .../msgpack/__pycache__/ext.cpython-312.pyc | Bin 8667 -> 8675 bytes .../__pycache__/fallback.cpython-312.pyc | Bin 43575 -> 43583 bytes .../__pycache__/__about__.cpython-312.pyc | Bin 629 -> 637 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 465 -> 473 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 12075 -> 12083 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 6909 -> 6917 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3240 -> 3248 bytes .../__pycache__/markers.cpython-312.pyc | Bin 14057 -> 14065 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 6945 -> 6953 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 31246 -> 31254 bytes .../__pycache__/tags.cpython-312.pyc | Bin 18955 -> 18963 bytes .../__pycache__/utils.cpython-312.pyc | Bin 5867 -> 5875 bytes .../__pycache__/version.cpython-312.pyc | Bin 19938 -> 19946 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 146473 -> 146481 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 18028 -> 18036 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 1945 -> 1953 bytes .../__pycache__/android.cpython-312.pyc | Bin 9443 -> 9451 bytes .../__pycache__/api.cpython-312.pyc | Bin 9671 -> 9679 bytes .../__pycache__/macos.cpython-312.pyc | Bin 5636 -> 5644 bytes .../__pycache__/unix.cpython-312.pyc | Bin 12440 -> 12448 bytes .../__pycache__/version.cpython-312.pyc | Bin 310 -> 318 bytes .../__pycache__/windows.cpython-312.pyc | Bin 12998 -> 13006 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3488 -> 3496 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 734 -> 742 bytes .../__pycache__/cmdline.cpython-312.pyc | Bin 26605 -> 26613 bytes .../__pycache__/console.cpython-312.pyc | Bin 2626 -> 2634 bytes .../__pycache__/filter.cpython-312.pyc | Bin 3232 -> 3240 bytes .../__pycache__/formatter.cpython-312.pyc | Bin 4569 -> 4577 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 38329 -> 38337 bytes .../__pycache__/modeline.cpython-312.pyc | Bin 1568 -> 1576 bytes .../__pycache__/plugin.cpython-312.pyc | Bin 3396 -> 3404 bytes .../__pycache__/regexopt.cpython-312.pyc | Bin 4081 -> 4089 bytes .../__pycache__/scanner.cpython-312.pyc | Bin 4756 -> 4764 bytes .../__pycache__/sphinxext.cpython-312.pyc | Bin 11046 -> 11054 bytes .../__pycache__/style.cpython-312.pyc | Bin 6674 -> 6682 bytes .../__pycache__/token.cpython-312.pyc | Bin 8142 -> 8150 bytes .../__pycache__/unistring.cpython-312.pyc | Bin 32988 -> 32996 bytes .../pygments/__pycache__/util.cpython-312.pyc | Bin 13981 -> 13989 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 37936 -> 37944 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 6926 -> 6934 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 4215 -> 4223 bytes .../__pycache__/bbcode.cpython-312.pyc | Bin 4194 -> 4202 bytes .../__pycache__/groff.cpython-312.pyc | Bin 7264 -> 7272 bytes .../__pycache__/html.cpython-312.pyc | Bin 40572 -> 40580 bytes .../__pycache__/img.cpython-312.pyc | Bin 27043 -> 27051 bytes .../__pycache__/irc.cpython-312.pyc | Bin 6065 -> 6073 bytes .../__pycache__/latex.cpython-312.pyc | Bin 19954 -> 19962 bytes .../__pycache__/other.cpython-312.pyc | Bin 6884 -> 6892 bytes .../__pycache__/pangomarkup.cpython-312.pyc | Bin 2930 -> 2938 bytes .../__pycache__/rtf.cpython-312.pyc | Bin 6126 -> 6134 bytes .../__pycache__/svg.cpython-312.pyc | Bin 9066 -> 9074 bytes .../__pycache__/terminal.cpython-312.pyc | Bin 5829 -> 5837 bytes .../__pycache__/terminal256.cpython-312.pyc | Bin 15157 -> 15165 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 14652 -> 14660 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 64404 -> 64412 bytes .../lexers/__pycache__/python.cpython-312.pyc | Bin 42639 -> 42647 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4448 -> 4456 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 7911 -> 7919 bytes .../__pycache__/actions.cpython-312.pyc | Bin 8395 -> 8403 bytes .../__pycache__/common.cpython-312.pyc | Bin 13414 -> 13422 bytes .../__pycache__/core.cpython-312.pyc | Bin 267708 -> 267716 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 12994 -> 13002 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 48501 -> 48509 bytes .../__pycache__/results.cpython-312.pyc | Bin 34110 -> 34118 bytes .../__pycache__/testing.cpython-312.pyc | Bin 17188 -> 17196 bytes .../__pycache__/unicode.cpython-312.pyc | Bin 13184 -> 13192 bytes .../__pycache__/util.cpython-312.pyc | Bin 14904 -> 14912 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 26813 -> 26821 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 613 -> 621 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 374 -> 382 bytes .../__pycache__/_impl.cpython-312.pyc | Bin 14725 -> 14733 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1080 -> 1088 bytes .../__pycache__/_in_process.cpython-312.pyc | Bin 14397 -> 14405 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 5453 -> 5461 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 584 -> 592 bytes .../_internal_utils.cpython-312.pyc | Bin 2024 -> 2032 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 21280 -> 21288 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 7204 -> 7212 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 13923 -> 13931 bytes .../__pycache__/certs.cpython-312.pyc | Bin 922 -> 930 bytes .../__pycache__/compat.cpython-312.pyc | Bin 1507 -> 1515 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 25246 -> 25254 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7047 -> 7055 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 4312 -> 4320 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 1052 -> 1060 bytes .../__pycache__/models.cpython-312.pyc | Bin 35448 -> 35456 bytes .../__pycache__/packages.cpython-312.pyc | Bin 772 -> 780 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 27757 -> 27765 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 5959 -> 5967 bytes .../__pycache__/structures.cpython-312.pyc | Bin 5617 -> 5625 bytes .../__pycache__/utils.cpython-312.pyc | Bin 36075 -> 36083 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 634 -> 642 bytes .../__pycache__/providers.cpython-312.pyc | Bin 6851 -> 6859 bytes .../__pycache__/reporters.cpython-312.pyc | Bin 2654 -> 2662 bytes .../__pycache__/resolvers.cpython-312.pyc | Bin 25897 -> 25905 bytes .../__pycache__/structs.cpython-312.pyc | Bin 10506 -> 10514 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 200 -> 208 bytes .../collections_abc.cpython-312.pyc | Bin 420 -> 428 bytes .../rich/__pycache__/__init__.cpython-312.pyc | Bin 7015 -> 7023 bytes .../rich/__pycache__/__main__.cpython-312.pyc | Bin 10304 -> 10312 bytes .../__pycache__/_cell_widths.cpython-312.pyc | Bin 7821 -> 7829 bytes .../__pycache__/_emoji_codes.cpython-312.pyc | Bin 205976 -> 205984 bytes .../_emoji_replace.cpython-312.pyc | Bin 1729 -> 1737 bytes .../_export_format.cpython-312.pyc | Bin 2321 -> 2329 bytes .../__pycache__/_extension.cpython-312.pyc | Bin 537 -> 545 bytes .../rich/__pycache__/_fileno.cpython-312.pyc | Bin 855 -> 863 bytes .../rich/__pycache__/_inspect.cpython-312.pyc | Bin 12077 -> 12085 bytes .../__pycache__/_log_render.cpython-312.pyc | Bin 4147 -> 4155 bytes .../rich/__pycache__/_loop.cpython-312.pyc | Bin 1885 -> 1893 bytes .../__pycache__/_null_file.cpython-312.pyc | Bin 3620 -> 3628 bytes .../__pycache__/_palettes.cpython-312.pyc | Bin 5160 -> 5168 bytes .../rich/__pycache__/_pick.cpython-312.pyc | Bin 726 -> 734 bytes .../rich/__pycache__/_ratio.cpython-312.pyc | Bin 6579 -> 6587 bytes .../__pycache__/_spinners.cpython-312.pyc | Bin 13179 -> 13187 bytes .../rich/__pycache__/_stack.cpython-312.pyc | Bin 965 -> 973 bytes .../rich/__pycache__/_timer.cpython-312.pyc | Bin 865 -> 873 bytes .../_win32_console.cpython-312.pyc | Bin 28976 -> 28984 bytes .../rich/__pycache__/_windows.cpython-312.pyc | Bin 2490 -> 2498 bytes .../_windows_renderer.cpython-312.pyc | Bin 3573 -> 3581 bytes .../rich/__pycache__/_wrap.cpython-312.pyc | Bin 2360 -> 2368 bytes .../rich/__pycache__/abc.cpython-312.pyc | Bin 1608 -> 1616 bytes .../rich/__pycache__/align.cpython-312.pyc | Bin 12322 -> 12330 bytes .../rich/__pycache__/ansi.cpython-312.pyc | Bin 9106 -> 9114 bytes .../rich/__pycache__/bar.cpython-312.pyc | Bin 4272 -> 4280 bytes .../rich/__pycache__/box.cpython-312.pyc | Bin 11858 -> 11866 bytes .../rich/__pycache__/cells.cpython-312.pyc | Bin 5618 -> 5626 bytes .../rich/__pycache__/color.cpython-312.pyc | Bin 26570 -> 26578 bytes .../__pycache__/color_triplet.cpython-312.pyc | Bin 1701 -> 1709 bytes .../rich/__pycache__/columns.cpython-312.pyc | Bin 8587 -> 8595 bytes .../rich/__pycache__/console.cpython-312.pyc | Bin 113793 -> 113801 bytes .../__pycache__/constrain.cpython-312.pyc | Bin 2258 -> 2266 bytes .../__pycache__/containers.cpython-312.pyc | Bin 9226 -> 9234 bytes .../rich/__pycache__/control.cpython-312.pyc | Bin 10929 -> 10937 bytes .../default_styles.cpython-312.pyc | Bin 10373 -> 10381 bytes .../rich/__pycache__/diagnose.cpython-312.pyc | Bin 1487 -> 1495 bytes .../rich/__pycache__/emoji.cpython-312.pyc | Bin 4209 -> 4217 bytes .../rich/__pycache__/errors.cpython-312.pyc | Bin 1845 -> 1853 bytes .../__pycache__/file_proxy.cpython-312.pyc | Bin 3577 -> 3585 bytes .../rich/__pycache__/filesize.cpython-312.pyc | Bin 3082 -> 3090 bytes .../__pycache__/highlighter.cpython-312.pyc | Bin 9898 -> 9906 bytes .../rich/__pycache__/json.cpython-312.pyc | Bin 6035 -> 6043 bytes .../rich/__pycache__/jupyter.cpython-312.pyc | Bin 5209 -> 5217 bytes .../rich/__pycache__/layout.cpython-312.pyc | Bin 20220 -> 20228 bytes .../rich/__pycache__/live.cpython-312.pyc | Bin 19143 -> 19151 bytes .../__pycache__/live_render.cpython-312.pyc | Bin 4894 -> 4902 bytes .../rich/__pycache__/logging.cpython-312.pyc | Bin 13554 -> 13562 bytes .../rich/__pycache__/markup.cpython-312.pyc | Bin 9298 -> 9306 bytes .../rich/__pycache__/measure.cpython-312.pyc | Bin 6376 -> 6384 bytes .../rich/__pycache__/padding.cpython-312.pyc | Bin 7134 -> 7142 bytes .../rich/__pycache__/pager.cpython-312.pyc | Bin 1820 -> 1828 bytes .../rich/__pycache__/palette.cpython-312.pyc | Bin 5314 -> 5322 bytes .../rich/__pycache__/panel.cpython-312.pyc | Bin 12097 -> 12105 bytes .../rich/__pycache__/pretty.cpython-312.pyc | Bin 40056 -> 40064 bytes .../rich/__pycache__/progress.cpython-312.pyc | Bin 75078 -> 75086 bytes .../__pycache__/progress_bar.cpython-312.pyc | Bin 10389 -> 10397 bytes .../rich/__pycache__/prompt.cpython-312.pyc | Bin 14781 -> 14789 bytes .../rich/__pycache__/protocol.cpython-312.pyc | Bin 1792 -> 1800 bytes .../rich/__pycache__/region.cpython-312.pyc | Bin 567 -> 575 bytes .../rich/__pycache__/repr.cpython-312.pyc | Bin 6626 -> 6634 bytes .../rich/__pycache__/rule.cpython-312.pyc | Bin 6568 -> 6576 bytes .../rich/__pycache__/scope.cpython-312.pyc | Bin 3830 -> 3838 bytes .../rich/__pycache__/screen.cpython-312.pyc | Bin 2484 -> 2492 bytes .../rich/__pycache__/segment.cpython-312.pyc | Bin 28161 -> 28169 bytes .../rich/__pycache__/spinner.cpython-312.pyc | Bin 6064 -> 6072 bytes .../rich/__pycache__/status.cpython-312.pyc | Bin 6068 -> 6076 bytes .../rich/__pycache__/style.cpython-312.pyc | Bin 33514 -> 33522 bytes .../rich/__pycache__/styled.cpython-312.pyc | Bin 2139 -> 2147 bytes .../rich/__pycache__/syntax.cpython-312.pyc | Bin 39612 -> 39620 bytes .../rich/__pycache__/table.cpython-312.pyc | Bin 43584 -> 43592 bytes .../terminal_theme.cpython-312.pyc | Bin 3348 -> 3356 bytes .../rich/__pycache__/text.cpython-312.pyc | Bin 58963 -> 58971 bytes .../rich/__pycache__/theme.cpython-312.pyc | Bin 6340 -> 6348 bytes .../rich/__pycache__/themes.cpython-312.pyc | Bin 314 -> 322 bytes .../__pycache__/traceback.cpython-312.pyc | Bin 31548 -> 31556 bytes .../rich/__pycache__/tree.cpython-312.pyc | Bin 11439 -> 11447 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 27086 -> 27094 bytes .../__pycache__/_asyncio.cpython-312.pyc | Bin 4806 -> 4814 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 2315 -> 2323 bytes .../__pycache__/after.cpython-312.pyc | Bin 1624 -> 1632 bytes .../__pycache__/before.cpython-312.pyc | Bin 1464 -> 1472 bytes .../__pycache__/before_sleep.cpython-312.pyc | Bin 2302 -> 2310 bytes .../tenacity/__pycache__/nap.cpython-312.pyc | Bin 1412 -> 1420 bytes .../__pycache__/retry.cpython-312.pyc | Bin 14281 -> 14289 bytes .../tenacity/__pycache__/stop.cpython-312.pyc | Bin 5568 -> 5576 bytes .../__pycache__/tornadoweb.cpython-312.pyc | Bin 2586 -> 2594 bytes .../tenacity/__pycache__/wait.cpython-312.pyc | Bin 12413 -> 12421 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 384 -> 392 bytes .../tomli/__pycache__/_parser.cpython-312.pyc | Bin 26927 -> 26935 bytes .../tomli/__pycache__/_re.cpython-312.pyc | Bin 3908 -> 3916 bytes .../tomli/__pycache__/_types.cpython-312.pyc | Bin 366 -> 374 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 618 -> 626 bytes .../__pycache__/_api.cpython-312.pyc | Bin 15797 -> 15805 bytes .../__pycache__/_macos.cpython-312.pyc | Bin 16662 -> 16670 bytes .../__pycache__/_openssl.cpython-312.pyc | Bin 2215 -> 2223 bytes .../_ssl_constants.cpython-312.pyc | Bin 1099 -> 1107 bytes .../__pycache__/_windows.cpython-312.pyc | Bin 15506 -> 15514 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3405 -> 3413 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 16488 -> 16496 bytes .../__pycache__/_version.cpython-312.pyc | Bin 218 -> 226 bytes .../__pycache__/connection.cpython-312.pyc | Bin 20407 -> 20415 bytes .../connectionpool.cpython-312.pyc | Bin 36442 -> 36450 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 13493 -> 13501 bytes .../__pycache__/fields.cpython-312.pyc | Bin 10413 -> 10421 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 4018 -> 4026 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 20800 -> 20808 bytes .../__pycache__/request.cpython-312.pyc | Bin 7294 -> 7302 bytes .../__pycache__/response.cpython-312.pyc | Bin 33968 -> 33976 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 206 bytes .../_appengine_environ.cpython-312.pyc | Bin 1848 -> 1856 bytes .../__pycache__/appengine.cpython-312.pyc | Bin 11564 -> 11572 bytes .../__pycache__/ntlmpool.cpython-312.pyc | Bin 5719 -> 5727 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 24450 -> 24458 bytes .../securetransport.cpython-312.pyc | Bin 35556 -> 35564 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 7511 -> 7519 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 215 -> 223 bytes .../__pycache__/bindings.cpython-312.pyc | Bin 17427 -> 17435 bytes .../__pycache__/low_level.cpython-312.pyc | Bin 14801 -> 14809 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 199 -> 207 bytes .../packages/__pycache__/six.cpython-312.pyc | Bin 41319 -> 41327 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 209 -> 217 bytes .../__pycache__/makefile.cpython-312.pyc | Bin 1825 -> 1833 bytes .../weakref_finalize.cpython-312.pyc | Bin 7331 -> 7339 bytes .../util/__pycache__/__init__.cpython-312.pyc | Bin 1146 -> 1154 bytes .../__pycache__/connection.cpython-312.pyc | Bin 4756 -> 4764 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 1552 -> 1560 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 1352 -> 1360 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 4183 -> 4191 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 2989 -> 2997 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 21718 -> 21726 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 15103 -> 15111 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 5071 -> 5079 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 10772 -> 10780 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 11139 -> 11147 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 15795 -> 15803 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 4403 -> 4411 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 12001 -> 12009 bytes .../__pycache__/labels.cpython-312.pyc | Bin 7132 -> 7140 bytes .../__pycache__/mklabels.cpython-312.pyc | Bin 2699 -> 2707 bytes .../__pycache__/tests.cpython-312.pyc | Bin 9251 -> 9259 bytes .../x_user_defined.cpython-312.pyc | Bin 3295 -> 3303 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 164699 -> 164707 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 190 -> 198 bytes .../test_find_distributions.cpython-312.pyc | Bin 3291 -> 3299 bytes ...integration_zope_interface.cpython-312.pyc | Bin 2000 -> 2008 bytes .../__pycache__/test_markers.cpython-312.pyc | Bin 627 -> 635 bytes .../test_pkg_resources.cpython-312.pyc | Bin 25259 -> 25267 bytes .../test_resources.cpython-312.pyc | Bin 47614 -> 47622 bytes .../test_working_set.cpython-312.pyc | Bin 10522 -> 10530 bytes .../__pycache__/setup.cpython-312.pyc | Bin 364 -> 372 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1764 -> 1772 bytes .../__pycache__/auto_suggest.cpython-312.pyc | Bin 8349 -> 8357 bytes .../__pycache__/buffer.cpython-312.pyc | Bin 77364 -> 77372 bytes .../__pycache__/cache.cpython-312.pyc | Bin 5228 -> 5236 bytes .../__pycache__/cursor_shapes.cpython-312.pyc | Bin 4664 -> 4672 bytes .../data_structures.cpython-312.pyc | Bin 735 -> 743 bytes .../__pycache__/document.cpython-312.pyc | Bin 47834 -> 47842 bytes .../__pycache__/enums.cpython-312.pyc | Bin 575 -> 583 bytes .../__pycache__/history.cpython-312.pyc | Bin 13146 -> 13154 bytes .../__pycache__/keys.cpython-312.pyc | Bin 5317 -> 5325 bytes .../__pycache__/log.cpython-312.pyc | Bin 415 -> 423 bytes .../__pycache__/mouse_events.cpython-312.pyc | Bin 2897 -> 2905 bytes .../__pycache__/patch_stdout.cpython-312.pyc | Bin 11759 -> 11767 bytes .../__pycache__/renderer.cpython-312.pyc | Bin 29540 -> 29548 bytes .../__pycache__/search.cpython-312.pyc | Bin 7733 -> 7741 bytes .../__pycache__/selection.cpython-312.pyc | Bin 2093 -> 2101 bytes .../__pycache__/token.cpython-312.pyc | Bin 329 -> 337 bytes .../__pycache__/utils.cpython-312.pyc | Bin 11342 -> 11350 bytes .../__pycache__/validation.cpython-312.pyc | Bin 8921 -> 8929 bytes .../__pycache__/win32_types.cpython-312.pyc | Bin 7173 -> 7181 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 700 -> 708 bytes .../__pycache__/application.cpython-312.pyc | Bin 67928 -> 67936 bytes .../__pycache__/current.cpython-312.pyc | Bin 7154 -> 7162 bytes .../__pycache__/dummy.cpython-312.pyc | Bin 2775 -> 2783 bytes .../run_in_terminal.cpython-312.pyc | Bin 5179 -> 5187 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 470 -> 478 bytes .../__pycache__/base.cpython-312.pyc | Bin 4807 -> 4815 bytes .../__pycache__/in_memory.cpython-312.pyc | Bin 2179 -> 2187 bytes .../__pycache__/pyperclip.cpython-312.pyc | Bin 1741 -> 1749 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 949 -> 957 bytes .../__pycache__/base.cpython-312.pyc | Bin 18711 -> 18719 bytes .../__pycache__/deduplicate.cpython-312.pyc | Bin 1959 -> 1967 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 5432 -> 5440 bytes .../fuzzy_completer.cpython-312.pyc | Bin 9608 -> 9616 bytes .../__pycache__/nested.cpython-312.pyc | Bin 4820 -> 4828 bytes .../word_completer.cpython-312.pyc | Bin 4262 -> 4270 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 333 -> 341 bytes .../__pycache__/system.cpython-312.pyc | Bin 2680 -> 2688 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3541 -> 3549 bytes .../__pycache__/compiler.cpython-312.pyc | Bin 25535 -> 25543 bytes .../__pycache__/completion.cpython-312.pyc | Bin 4497 -> 4505 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 4386 -> 4394 bytes .../__pycache__/regex_parser.cpython-312.pyc | Bin 11223 -> 11231 bytes .../__pycache__/validation.cpython-312.pyc | Bin 2584 -> 2592 bytes .../ssh/__pycache__/__init__.cpython-312.pyc | Bin 381 -> 389 bytes .../ssh/__pycache__/server.cpython-312.pyc | Bin 9174 -> 9182 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 330 -> 338 bytes .../telnet/__pycache__/log.cpython-312.pyc | Bin 442 -> 450 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 7661 -> 7669 bytes .../telnet/__pycache__/server.cpython-312.pyc | Bin 20355 -> 20363 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 731 -> 739 bytes .../async_generator.cpython-312.pyc | Bin 4266 -> 4274 bytes .../__pycache__/inputhook.cpython-312.pyc | Bin 7585 -> 7593 bytes .../__pycache__/utils.cpython-312.pyc | Bin 3609 -> 3617 bytes .../__pycache__/win32.cpython-312.pyc | Bin 2712 -> 2720 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2044 -> 2052 bytes .../filters/__pycache__/app.cpython-312.pyc | Bin 15763 -> 15771 bytes .../filters/__pycache__/base.cpython-312.pyc | Bin 10802 -> 10810 bytes .../filters/__pycache__/cli.cpython-312.pyc | Bin 3723 -> 3731 bytes .../filters/__pycache__/utils.cpython-312.pyc | Bin 1325 -> 1333 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1523 -> 1531 bytes .../__pycache__/ansi.cpython-312.pyc | Bin 9746 -> 9754 bytes .../__pycache__/base.cpython-312.pyc | Bin 6450 -> 6458 bytes .../__pycache__/html.cpython-312.pyc | Bin 5903 -> 5911 bytes .../__pycache__/pygments.cpython-312.pyc | Bin 1413 -> 1421 bytes .../__pycache__/utils.cpython-312.pyc | Bin 4017 -> 4025 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 449 -> 457 bytes .../ansi_escape_sequences.cpython-312.pyc | Bin 17757 -> 17765 bytes .../input/__pycache__/base.cpython-312.pyc | Bin 5891 -> 5899 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 2662 -> 2670 bytes .../__pycache__/posix_pipe.cpython-312.pyc | Bin 5674 -> 5682 bytes .../__pycache__/posix_utils.cpython-312.pyc | Bin 3075 -> 3083 bytes .../__pycache__/typeahead.cpython-312.pyc | Bin 3119 -> 3127 bytes .../input/__pycache__/vt100.cpython-312.pyc | Bin 12163 -> 12171 bytes .../__pycache__/vt100_parser.cpython-312.pyc | Bin 8796 -> 8804 bytes .../input/__pycache__/win32.cpython-312.pyc | Bin 35297 -> 35305 bytes .../__pycache__/win32_pipe.cpython-312.pyc | Bin 6791 -> 6799 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 558 -> 566 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 1760 -> 1768 bytes .../__pycache__/digraphs.cpython-312.pyc | Bin 56636 -> 56644 bytes .../__pycache__/emacs_state.cpython-312.pyc | Bin 1568 -> 1576 bytes .../__pycache__/key_bindings.cpython-312.pyc | Bin 24910 -> 24918 bytes .../__pycache__/key_processor.cpython-312.pyc | Bin 21091 -> 21099 bytes .../__pycache__/vi_state.cpython-312.pyc | Bin 3246 -> 3254 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../__pycache__/auto_suggest.cpython-312.pyc | Bin 3185 -> 3193 bytes .../__pycache__/basic.cpython-312.pyc | Bin 11594 -> 11602 bytes .../__pycache__/completion.cpython-312.pyc | Bin 9446 -> 9454 bytes .../bindings/__pycache__/cpr.cpython-312.pyc | Bin 1452 -> 1460 bytes .../__pycache__/emacs.cpython-312.pyc | Bin 27195 -> 27203 bytes .../__pycache__/focus.cpython-312.pyc | Bin 1014 -> 1022 bytes .../__pycache__/mouse.cpython-312.pyc | Bin 12122 -> 12130 bytes .../named_commands.cpython-312.pyc | Bin 28408 -> 28416 bytes .../open_in_editor.cpython-312.pyc | Bin 1814 -> 1822 bytes .../page_navigation.cpython-312.pyc | Bin 2741 -> 2749 bytes .../__pycache__/scroll.cpython-312.pyc | Bin 7178 -> 7186 bytes .../__pycache__/search.cpython-312.pyc | Bin 4049 -> 4057 bytes .../bindings/__pycache__/vi.cpython-312.pyc | Bin 103247 -> 103255 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3382 -> 3390 bytes .../__pycache__/containers.cpython-312.pyc | Bin 101336 -> 101344 bytes .../__pycache__/controls.cpython-312.pyc | Bin 36718 -> 36726 bytes .../__pycache__/dimension.cpython-312.pyc | Bin 8343 -> 8351 bytes .../layout/__pycache__/dummy.cpython-312.pyc | Bin 1737 -> 1745 bytes .../layout/__pycache__/layout.cpython-312.pyc | Bin 16099 -> 16107 bytes .../__pycache__/margins.cpython-312.pyc | Bin 11657 -> 11665 bytes .../layout/__pycache__/menus.cpython-312.pyc | Bin 30481 -> 30489 bytes .../mouse_handlers.cpython-312.pyc | Bin 2317 -> 2325 bytes .../__pycache__/processors.cpython-312.pyc | Bin 39025 -> 39033 bytes .../layout/__pycache__/screen.cpython-312.pyc | Bin 11675 -> 11683 bytes .../scrollable_pane.cpython-312.pyc | Bin 19517 -> 19525 bytes .../layout/__pycache__/utils.cpython-312.pyc | Bin 3557 -> 3565 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 595 -> 603 bytes .../lexers/__pycache__/base.cpython-312.pyc | Bin 3869 -> 3877 bytes .../__pycache__/pygments.cpython-312.pyc | Bin 11711 -> 11719 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 444 -> 452 bytes .../output/__pycache__/base.cpython-312.pyc | Bin 14450 -> 14458 bytes .../__pycache__/color_depth.cpython-312.pyc | Bin 2072 -> 2080 bytes .../output/__pycache__/conemu.cpython-312.pyc | Bin 2706 -> 2714 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 3047 -> 3055 bytes .../__pycache__/flush_stdout.cpython-312.pyc | Bin 2330 -> 2338 bytes .../__pycache__/plain_text.cpython-312.pyc | Bin 7505 -> 7513 bytes .../output/__pycache__/vt100.cpython-312.pyc | Bin 27701 -> 27709 bytes .../output/__pycache__/win32.cpython-312.pyc | Bin 29558 -> 29566 bytes .../__pycache__/windows10.cpython-312.pyc | Bin 5055 -> 5063 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 989 -> 997 bytes .../__pycache__/choice_input.cpython-312.pyc | Bin 12231 -> 12239 bytes .../__pycache__/dialogs.cpython-312.pyc | Bin 12147 -> 12155 bytes .../__pycache__/prompt.cpython-312.pyc | Bin 58888 -> 58896 bytes .../__pycache__/utils.cpython-312.pyc | Bin 8251 -> 8259 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 683 -> 691 bytes .../__pycache__/base.cpython-312.pyc | Bin 19077 -> 19085 bytes .../__pycache__/formatters.cpython-312.pyc | Bin 17175 -> 17183 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1397 -> 1405 bytes .../styles/__pycache__/base.cpython-312.pyc | Bin 5640 -> 5648 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 6725 -> 6733 bytes .../__pycache__/named_colors.cpython-312.pyc | Bin 6318 -> 6326 bytes .../__pycache__/pygments.cpython-312.pyc | Bin 2500 -> 2508 bytes .../styles/__pycache__/style.cpython-312.pyc | Bin 15584 -> 15592 bytes .../style_transformation.cpython-312.pyc | Bin 16355 -> 16363 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1262 -> 1270 bytes .../widgets/__pycache__/base.cpython-312.pyc | Bin 43426 -> 43434 bytes .../__pycache__/dialogs.cpython-312.pyc | Bin 4069 -> 4077 bytes .../widgets/__pycache__/menus.cpython-312.pyc | Bin 17841 -> 17849 bytes .../__pycache__/toolbars.cpython-312.pyc | Bin 16467 -> 16475 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3747 -> 3755 bytes .../__pycache__/_ipaddress.cpython-312.pyc | Bin 2623 -> 2631 bytes .../__pycache__/_json.cpython-312.pyc | Bin 7472 -> 7480 bytes .../__pycache__/_range.cpython-312.pyc | Bin 21043 -> 21051 bytes .../__pycache__/errorcodes.cpython-312.pyc | Bin 14394 -> 14402 bytes .../__pycache__/errors.cpython-312.pyc | Bin 531 -> 539 bytes .../__pycache__/extensions.cpython-312.pyc | Bin 7457 -> 7465 bytes .../__pycache__/extras.cpython-312.pyc | Bin 60541 -> 60549 bytes .../psycopg2/__pycache__/pool.cpython-312.pyc | Bin 7827 -> 7835 bytes .../psycopg2/__pycache__/sql.cpython-312.pyc | Bin 18931 -> 18939 bytes .../psycopg2/__pycache__/tz.cpython-312.pyc | Bin 6193 -> 6201 bytes .../pytz/__pycache__/__init__.cpython-312.pyc | Bin 30525 -> 30533 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 2300 -> 2308 bytes .../pytz/__pycache__/lazy.cpython-312.pyc | Bin 7693 -> 7701 bytes .../__pycache__/reference.cpython-312.pyc | Bin 5533 -> 5541 bytes .../pytz/__pycache__/tzfile.cpython-312.pyc | Bin 5270 -> 5278 bytes .../pytz/__pycache__/tzinfo.cpython-312.pyc | Bin 19285 -> 19293 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2319 -> 2327 bytes .../redis/__pycache__/backoff.cpython-312.pyc | Bin 5342 -> 5350 bytes .../redis/__pycache__/client.cpython-312.pyc | Bin 64786 -> 64794 bytes .../redis/__pycache__/cluster.cpython-312.pyc | Bin 90484 -> 90492 bytes .../redis/__pycache__/compat.cpython-312.pyc | Bin 401 -> 409 bytes .../__pycache__/connection.cpython-312.pyc | Bin 53244 -> 53252 bytes .../redis/__pycache__/crc.cpython-312.pyc | Bin 979 -> 987 bytes .../__pycache__/credentials.cpython-312.pyc | Bin 1691 -> 1699 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 8778 -> 8786 bytes .../redis/__pycache__/lock.cpython-312.pyc | Bin 13366 -> 13374 bytes .../redis/__pycache__/ocsp.cpython-312.pyc | Bin 15060 -> 15068 bytes .../redis/__pycache__/retry.cpython-312.pyc | Bin 2560 -> 2568 bytes .../__pycache__/sentinel.cpython-312.pyc | Bin 18313 -> 18321 bytes .../redis/__pycache__/typing.cpython-312.pyc | Bin 2400 -> 2408 bytes .../redis/__pycache__/utils.cpython-312.pyc | Bin 5818 -> 5826 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 671 -> 679 bytes .../_parsers/__pycache__/base.cpython-312.pyc | Bin 10598 -> 10606 bytes .../__pycache__/commands.cpython-312.pyc | Bin 11067 -> 11075 bytes .../__pycache__/encoders.cpython-312.pyc | Bin 2286 -> 2294 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 37954 -> 37962 bytes .../__pycache__/hiredis.cpython-312.pyc | Bin 9885 -> 9893 bytes .../__pycache__/resp2.cpython-312.pyc | Bin 5039 -> 5047 bytes .../__pycache__/resp3.cpython-312.pyc | Bin 9520 -> 9528 bytes .../__pycache__/socket.cpython-312.pyc | Bin 7180 -> 7188 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1367 -> 1375 bytes .../__pycache__/client.cpython-312.pyc | Bin 70084 -> 70092 bytes .../__pycache__/cluster.cpython-312.pyc | Bin 68729 -> 68737 bytes .../__pycache__/connection.cpython-312.pyc | Bin 56500 -> 56508 bytes .../asyncio/__pycache__/lock.cpython-312.pyc | Bin 14434 -> 14442 bytes .../asyncio/__pycache__/retry.cpython-312.pyc | Bin 3199 -> 3207 bytes .../__pycache__/sentinel.cpython-312.pyc | Bin 18778 -> 18786 bytes .../asyncio/__pycache__/utils.cpython-312.pyc | Bin 1563 -> 1571 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 668 -> 676 bytes .../__pycache__/cluster.cpython-312.pyc | Bin 35404 -> 35412 bytes .../commands/__pycache__/core.cpython-312.pyc | Bin 257896 -> 257904 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 7280 -> 7288 bytes .../__pycache__/redismodules.cpython-312.pyc | Bin 3595 -> 3603 bytes .../__pycache__/sentinel.cpython-312.pyc | Bin 6043 -> 6051 bytes .../bf/__pycache__/__init__.cpython-312.pyc | Bin 9423 -> 9431 bytes .../bf/__pycache__/commands.cpython-312.pyc | Bin 26711 -> 26719 bytes .../bf/__pycache__/info.cpython-312.pyc | Bin 5622 -> 5630 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 11182 -> 11190 bytes .../__pycache__/commands.cpython-312.pyc | Bin 12269 -> 12277 bytes .../graph/__pycache__/edge.cpython-312.pyc | Bin 3478 -> 3486 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 558 -> 566 bytes .../execution_plan.cpython-312.pyc | Bin 8724 -> 8732 bytes .../graph/__pycache__/node.cpython-312.pyc | Bin 3636 -> 3644 bytes .../graph/__pycache__/path.cpython-312.pyc | Bin 4291 -> 4299 bytes .../__pycache__/query_result.cpython-312.pyc | Bin 23050 -> 23058 bytes .../json/__pycache__/__init__.cpython-312.pyc | Bin 6892 -> 6900 bytes .../json/__pycache__/_util.cpython-312.pyc | Bin 383 -> 391 bytes .../json/__pycache__/commands.cpython-312.pyc | Bin 19864 -> 19872 bytes .../json/__pycache__/decoders.cpython-312.pyc | Bin 2442 -> 2450 bytes .../json/__pycache__/path.cpython-312.pyc | Bin 987 -> 995 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 7212 -> 7220 bytes .../search/__pycache__/_util.cpython-312.pyc | Bin 485 -> 493 bytes .../__pycache__/aggregation.cpython-312.pyc | Bin 15360 -> 15368 bytes .../__pycache__/commands.cpython-312.pyc | Bin 41620 -> 41628 bytes .../__pycache__/document.cpython-312.pyc | Bin 1135 -> 1143 bytes .../search/__pycache__/field.cpython-312.pyc | Bin 7044 -> 7052 bytes .../indexDefinition.cpython-312.pyc | Bin 4284 -> 4292 bytes .../search/__pycache__/query.cpython-312.pyc | Bin 15743 -> 15751 bytes .../__pycache__/querystring.cpython-312.pyc | Bin 14083 -> 14091 bytes .../__pycache__/reducers.cpython-312.pyc | Bin 7676 -> 7684 bytes .../search/__pycache__/result.cpython-312.pyc | Bin 2513 -> 2521 bytes .../__pycache__/suggestion.cpython-312.pyc | Bin 2854 -> 2862 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4656 -> 4664 bytes .../__pycache__/commands.cpython-312.pyc | Bin 36144 -> 36152 bytes .../__pycache__/info.cpython-312.pyc | Bin 4147 -> 4155 bytes .../__pycache__/utils.cpython-312.pyc | Bin 2637 -> 2645 bytes .../requests-2.32.5.dist-info/INSTALLER | 1 - .../requests-2.32.5.dist-info/METADATA | 133 - .../requests-2.32.5.dist-info/RECORD | 43 - .../requests-2.32.5.dist-info/REQUESTED | 0 .../licenses/LICENSE | 175 - .../requests-2.32.5.dist-info/top_level.txt | 1 - .../site-packages/requests/__init__.py | 184 - .../__pycache__/__init__.cpython-312.pyc | Bin 5408 -> 0 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 572 -> 0 bytes .../_internal_utils.cpython-312.pyc | Bin 2012 -> 0 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 27799 -> 0 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 7192 -> 0 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 13911 -> 0 bytes .../__pycache__/certs.cpython-312.pyc | Bin 654 -> 0 bytes .../__pycache__/compat.cpython-312.pyc | Bin 2368 -> 0 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 25264 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 7573 -> 0 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 4315 -> 0 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 1040 -> 0 bytes .../__pycache__/models.cpython-312.pyc | Bin 35489 -> 0 bytes .../__pycache__/packages.cpython-312.pyc | Bin 1127 -> 0 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 27878 -> 0 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 6019 -> 0 bytes .../__pycache__/structures.cpython-312.pyc | Bin 5605 -> 0 bytes .../__pycache__/utils.cpython-312.pyc | Bin 36166 -> 0 bytes .../site-packages/requests/__version__.py | 14 - .../site-packages/requests/_internal_utils.py | 50 - .../site-packages/requests/adapters.py | 696 -- .../python3.12/site-packages/requests/api.py | 157 - .../python3.12/site-packages/requests/auth.py | 314 - .../site-packages/requests/certs.py | 17 - .../site-packages/requests/compat.py | 106 - .../site-packages/requests/cookies.py | 561 -- .../site-packages/requests/exceptions.py | 151 - .../python3.12/site-packages/requests/help.py | 134 - .../site-packages/requests/hooks.py | 33 - .../site-packages/requests/models.py | 1039 -- .../site-packages/requests/packages.py | 23 - .../site-packages/requests/sessions.py | 831 -- .../site-packages/requests/status_codes.py | 128 - .../site-packages/requests/structures.py | 99 - .../site-packages/requests/utils.py | 1086 --- .../__pycache__/__init__.cpython-312.pyc | Bin 1310 -> 1318 bytes .../__pycache__/apps.cpython-312.pyc | Bin 677 -> 685 bytes .../authentication.cpython-312.pyc | Bin 10632 -> 10640 bytes .../__pycache__/checks.cpython-312.pyc | Bin 1182 -> 1190 bytes .../__pycache__/compat.cpython-312.pyc | Bin 6510 -> 6518 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 9791 -> 9799 bytes .../__pycache__/documentation.cpython-312.pyc | Bin 2261 -> 2269 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 12374 -> 12382 bytes .../__pycache__/fields.cpython-312.pyc | Bin 85625 -> 85633 bytes .../__pycache__/filters.cpython-312.pyc | Bin 14922 -> 14930 bytes .../__pycache__/generics.cpython-312.pyc | Bin 13034 -> 13042 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 7522 -> 7530 bytes .../__pycache__/mixins.cpython-312.pyc | Bin 5405 -> 5413 bytes .../__pycache__/negotiation.cpython-312.pyc | Bin 4764 -> 4772 bytes .../__pycache__/pagination.cpython-312.pyc | Bin 35210 -> 35218 bytes .../__pycache__/parsers.cpython-312.pyc | Bin 9442 -> 9450 bytes .../__pycache__/permissions.cpython-312.pyc | Bin 13408 -> 13416 bytes .../__pycache__/relations.cpython-312.pyc | Bin 27139 -> 27147 bytes .../__pycache__/renderers.cpython-312.pyc | Bin 45753 -> 45761 bytes .../__pycache__/request.cpython-312.pyc | Bin 20634 -> 20642 bytes .../__pycache__/response.cpython-312.pyc | Bin 4096 -> 4104 bytes .../__pycache__/reverse.cpython-312.pyc | Bin 2427 -> 2435 bytes .../__pycache__/routers.cpython-312.pyc | Bin 13921 -> 13929 bytes .../__pycache__/serializers.cpython-312.pyc | Bin 67242 -> 67250 bytes .../__pycache__/settings.cpython-312.pyc | Bin 8514 -> 8522 bytes .../__pycache__/status.cpython-312.pyc | Bin 3838 -> 3846 bytes .../__pycache__/test.cpython-312.pyc | Bin 20625 -> 20633 bytes .../__pycache__/throttling.cpython-312.pyc | Bin 11156 -> 11164 bytes .../__pycache__/urlpatterns.cpython-312.pyc | Bin 4719 -> 4727 bytes .../__pycache__/urls.cpython-312.pyc | Bin 1001 -> 1009 bytes .../__pycache__/validators.cpython-312.pyc | Bin 13543 -> 13551 bytes .../__pycache__/versioning.cpython-312.pyc | Bin 9240 -> 9248 bytes .../__pycache__/views.cpython-312.pyc | Bin 22829 -> 22837 bytes .../__pycache__/viewsets.cpython-312.pyc | Bin 9607 -> 9615 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 363 -> 371 bytes .../__pycache__/admin.cpython-312.pyc | Bin 3297 -> 3305 bytes .../__pycache__/apps.cpython-312.pyc | Bin 582 -> 590 bytes .../__pycache__/models.cpython-312.pyc | Bin 3032 -> 3040 bytes .../__pycache__/serializers.cpython-312.pyc | Bin 1834 -> 1842 bytes .../__pycache__/views.cpython-312.pyc | Bin 3067 -> 3075 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 215 -> 223 bytes .../drf_create_token.cpython-312.pyc | Bin 2404 -> 2412 bytes .../__pycache__/0001_initial.cpython-312.pyc | Bin 1297 -> 1305 bytes .../0002_auto_20160226_1747.cpython-312.pyc | Bin 1502 -> 1510 bytes .../0003_tokenproxy.cpython-312.pyc | Bin 792 -> 800 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 206 -> 214 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 204 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 213 bytes .../generateschema.cpython-312.pyc | Bin 4200 -> 4208 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1927 -> 1935 bytes .../__pycache__/coreapi.cpython-312.pyc | Bin 24999 -> 25007 bytes .../__pycache__/generators.cpython-312.pyc | Bin 9874 -> 9882 bytes .../__pycache__/inspectors.cpython-312.pyc | Bin 5802 -> 5810 bytes .../__pycache__/openapi.cpython-312.pyc | Bin 28420 -> 28428 bytes .../schemas/__pycache__/utils.cpython-312.pyc | Bin 1779 -> 1787 bytes .../schemas/__pycache__/views.cpython-312.pyc | Bin 2752 -> 2760 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 198 -> 206 bytes .../rest_framework.cpython-312.pyc | Bin 14835 -> 14843 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 191 -> 199 bytes .../__pycache__/breadcrumbs.cpython-312.pyc | Bin 2162 -> 2170 bytes .../__pycache__/encoders.cpython-312.pyc | Bin 3483 -> 3491 bytes .../__pycache__/field_mapping.cpython-312.pyc | Bin 12418 -> 12426 bytes .../__pycache__/formatting.cpython-312.pyc | Bin 4781 -> 4789 bytes .../utils/__pycache__/html.cpython-312.pyc | Bin 2978 -> 2986 bytes .../humanize_datetime.cpython-312.pyc | Bin 1776 -> 1784 bytes .../utils/__pycache__/json.cpython-312.pyc | Bin 2126 -> 2134 bytes .../__pycache__/mediatypes.cpython-312.pyc | Bin 3988 -> 3996 bytes .../__pycache__/model_meta.cpython-312.pyc | Bin 6208 -> 6216 bytes .../representation.cpython-312.pyc | Bin 4228 -> 4236 bytes .../serializer_helpers.cpython-312.pyc | Bin 10263 -> 10271 bytes .../utils/__pycache__/urls.cpython-312.pyc | Bin 1871 -> 1879 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 12067 -> 12075 bytes .../_core_metadata.cpython-312.pyc | Bin 14950 -> 14958 bytes .../__pycache__/_discovery.cpython-312.pyc | Bin 1713 -> 1721 bytes .../__pycache__/_entry_points.cpython-312.pyc | Bin 4842 -> 4850 bytes .../__pycache__/_imp.cpython-312.pyc | Bin 3613 -> 3621 bytes .../__pycache__/_importlib.cpython-312.pyc | Bin 398 -> 406 bytes .../__pycache__/_itertools.cpython-312.pyc | Bin 1059 -> 1067 bytes .../_normalization.cpython-312.pyc | Bin 7415 -> 7423 bytes .../__pycache__/_path.cpython-312.pyc | Bin 4614 -> 4622 bytes .../__pycache__/_reqs.cpython-312.pyc | Bin 1906 -> 1914 bytes .../__pycache__/_scripts.cpython-312.pyc | Bin 16797 -> 16805 bytes .../__pycache__/_shutil.cpython-312.pyc | Bin 2586 -> 2594 bytes .../__pycache__/_static.cpython-312.pyc | Bin 6060 -> 6068 bytes .../__pycache__/archive_util.cpython-312.pyc | Bin 9257 -> 9265 bytes .../__pycache__/build_meta.cpython-312.pyc | Bin 24785 -> 24793 bytes .../__pycache__/depends.cpython-312.pyc | Bin 7621 -> 7629 bytes .../__pycache__/discovery.cpython-312.pyc | Bin 28703 -> 28711 bytes .../__pycache__/dist.cpython-312.pyc | Bin 52245 -> 52253 bytes .../__pycache__/errors.cpython-312.pyc | Bin 3494 -> 3502 bytes .../__pycache__/extension.cpython-312.pyc | Bin 6906 -> 6914 bytes .../__pycache__/glob.cpython-312.pyc | Bin 7442 -> 7450 bytes .../__pycache__/installer.cpython-312.pyc | Bin 7817 -> 7825 bytes .../__pycache__/launch.cpython-312.pyc | Bin 1322 -> 1330 bytes .../__pycache__/logging.cpython-312.pyc | Bin 2098 -> 2106 bytes .../__pycache__/modified.cpython-312.pyc | Bin 497 -> 505 bytes .../__pycache__/monkey.cpython-312.pyc | Bin 5191 -> 5199 bytes .../__pycache__/msvc.cpython-312.pyc | Bin 58785 -> 58793 bytes .../__pycache__/namespaces.cpython-312.pyc | Bin 5308 -> 5316 bytes .../__pycache__/unicode_utils.cpython-312.pyc | Bin 4330 -> 4338 bytes .../__pycache__/version.cpython-312.pyc | Bin 420 -> 428 bytes .../__pycache__/warnings.cpython-312.pyc | Bin 5138 -> 5146 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 15217 -> 15225 bytes .../windows_support.cpython-312.pyc | Bin 1455 -> 1463 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 528 -> 536 bytes .../__pycache__/_log.cpython-312.pyc | Bin 276 -> 284 bytes .../__pycache__/_macos_compat.cpython-312.pyc | Bin 565 -> 573 bytes .../__pycache__/_modified.cpython-312.pyc | Bin 4790 -> 4798 bytes .../__pycache__/_msvccompiler.cpython-312.pyc | Bin 723 -> 731 bytes .../__pycache__/archive_util.cpython-312.pyc | Bin 10840 -> 10848 bytes .../__pycache__/ccompiler.cpython-312.pyc | Bin 692 -> 700 bytes .../__pycache__/cmd.cpython-312.pyc | Bin 22599 -> 22607 bytes .../__pycache__/core.cpython-312.pyc | Bin 9115 -> 9123 bytes .../cygwinccompiler.cpython-312.pyc | Bin 656 -> 664 bytes .../__pycache__/debug.cpython-312.pyc | Bin 319 -> 327 bytes .../__pycache__/dep_util.cpython-312.pyc | Bin 713 -> 721 bytes .../__pycache__/dir_util.cpython-312.pyc | Bin 10362 -> 10370 bytes .../__pycache__/dist.cpython-312.pyc | Bin 56308 -> 56316 bytes .../__pycache__/errors.cpython-312.pyc | Bin 4528 -> 4536 bytes .../__pycache__/extension.cpython-312.pyc | Bin 10251 -> 10259 bytes .../__pycache__/fancy_getopt.cpython-312.pyc | Bin 15822 -> 15830 bytes .../__pycache__/file_util.cpython-312.pyc | Bin 9492 -> 9500 bytes .../__pycache__/filelist.cpython-312.pyc | Bin 17941 -> 17949 bytes .../__pycache__/log.cpython-312.pyc | Bin 2614 -> 2622 bytes .../__pycache__/spawn.cpython-312.pyc | Bin 5645 -> 5653 bytes .../__pycache__/sysconfig.cpython-312.pyc | Bin 23109 -> 23117 bytes .../__pycache__/text_file.cpython-312.pyc | Bin 10838 -> 10846 bytes .../__pycache__/unixccompiler.cpython-312.pyc | Bin 416 -> 424 bytes .../__pycache__/util.cpython-312.pyc | Bin 19481 -> 19489 bytes .../__pycache__/version.cpython-312.pyc | Bin 10631 -> 10639 bytes .../versionpredicate.cpython-312.pyc | Bin 6899 -> 6907 bytes .../__pycache__/zosccompiler.cpython-312.pyc | Bin 295 -> 303 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 511 -> 519 bytes .../_framework_compat.cpython-312.pyc | Bin 2615 -> 2623 bytes .../command/__pycache__/bdist.cpython-312.pyc | Bin 6464 -> 6472 bytes .../__pycache__/bdist_dumb.cpython-312.pyc | Bin 5584 -> 5592 bytes .../__pycache__/bdist_rpm.cpython-312.pyc | Bin 21656 -> 21664 bytes .../command/__pycache__/build.cpython-312.pyc | Bin 6277 -> 6285 bytes .../__pycache__/build_clib.cpython-312.pyc | Bin 7617 -> 7625 bytes .../__pycache__/build_ext.cpython-312.pyc | Bin 30224 -> 30232 bytes .../__pycache__/build_py.cpython-312.pyc | Bin 16293 -> 16301 bytes .../__pycache__/build_scripts.cpython-312.pyc | Bin 6806 -> 6814 bytes .../command/__pycache__/check.cpython-312.pyc | Bin 7171 -> 7179 bytes .../command/__pycache__/clean.cpython-312.pyc | Bin 3138 -> 3146 bytes .../__pycache__/config.cpython-312.pyc | Bin 15178 -> 15186 bytes .../__pycache__/install.cpython-312.pyc | Bin 26994 -> 27002 bytes .../__pycache__/install_data.cpython-312.pyc | Bin 4354 -> 4362 bytes .../install_egg_info.cpython-312.pyc | Bin 5169 -> 5177 bytes .../install_headers.cpython-312.pyc | Bin 2423 -> 2431 bytes .../__pycache__/install_lib.cpython-312.pyc | Bin 8321 -> 8329 bytes .../install_scripts.cpython-312.pyc | Bin 3082 -> 3090 bytes .../command/__pycache__/sdist.cpython-312.pyc | Bin 22552 -> 22560 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1308 -> 1316 bytes .../compat/__pycache__/numpy.cpython-312.pyc | Bin 286 -> 294 bytes .../compat/__pycache__/py39.cpython-312.pyc | Bin 2697 -> 2705 bytes .../C/__pycache__/base.cpython-312.pyc | Bin 52389 -> 52397 bytes .../C/__pycache__/cygwin.cpython-312.pyc | Bin 11801 -> 11809 bytes .../C/__pycache__/errors.cpython-312.pyc | Bin 1511 -> 1519 bytes .../C/__pycache__/msvc.cpython-312.pyc | Bin 24818 -> 24826 bytes .../C/__pycache__/unix.cpython-312.pyc | Bin 15951 -> 15959 bytes .../C/__pycache__/zos.cpython-312.pyc | Bin 6254 -> 6262 bytes .../__pycache__/test_base.cpython-312.pyc | Bin 4045 -> 4053 bytes .../__pycache__/test_cygwin.cpython-312.pyc | Bin 4560 -> 4568 bytes .../__pycache__/test_mingw.cpython-312.pyc | Bin 3887 -> 3895 bytes .../__pycache__/test_msvc.cpython-312.pyc | Bin 7475 -> 7483 bytes .../__pycache__/test_unix.cpython-312.pyc | Bin 19549 -> 19557 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1912 -> 1920 bytes .../tests/__pycache__/support.cpython-312.pyc | Bin 6398 -> 6406 bytes .../test_archive_util.cpython-312.pyc | Bin 20762 -> 20770 bytes .../__pycache__/test_bdist.cpython-312.pyc | Bin 1897 -> 1905 bytes .../test_bdist_dumb.cpython-312.pyc | Bin 3844 -> 3852 bytes .../test_bdist_rpm.cpython-312.pyc | Bin 5626 -> 5634 bytes .../__pycache__/test_build.cpython-312.pyc | Bin 2782 -> 2790 bytes .../test_build_clib.cpython-312.pyc | Bin 6632 -> 6640 bytes .../test_build_ext.cpython-312.pyc | Bin 29333 -> 29341 bytes .../__pycache__/test_build_py.cpython-312.pyc | Bin 9854 -> 9862 bytes .../test_build_scripts.cpython-312.pyc | Bin 4697 -> 4705 bytes .../__pycache__/test_check.cpython-312.pyc | Bin 7143 -> 7151 bytes .../__pycache__/test_clean.cpython-312.pyc | Bin 1920 -> 1928 bytes .../__pycache__/test_cmd.cpython-312.pyc | Bin 6346 -> 6354 bytes .../test_config_cmd.cpython-312.pyc | Bin 5131 -> 5139 bytes .../__pycache__/test_core.cpython-312.pyc | Bin 6182 -> 6190 bytes .../__pycache__/test_dir_util.cpython-312.pyc | Bin 8576 -> 8584 bytes .../__pycache__/test_dist.cpython-312.pyc | Bin 26853 -> 26861 bytes .../test_extension.cpython-312.pyc | Bin 4193 -> 4201 bytes .../test_file_util.cpython-312.pyc | Bin 6926 -> 6934 bytes .../__pycache__/test_filelist.cpython-312.pyc | Bin 14322 -> 14330 bytes .../__pycache__/test_install.cpython-312.pyc | Bin 14079 -> 14087 bytes .../test_install_data.cpython-312.pyc | Bin 4795 -> 4803 bytes .../test_install_headers.cpython-312.pyc | Bin 1884 -> 1892 bytes .../test_install_lib.cpython-312.pyc | Bin 6119 -> 6127 bytes .../test_install_scripts.cpython-312.pyc | Bin 2704 -> 2712 bytes .../__pycache__/test_log.cpython-312.pyc | Bin 956 -> 964 bytes .../__pycache__/test_modified.cpython-312.pyc | Bin 7210 -> 7218 bytes .../__pycache__/test_sdist.cpython-312.pyc | Bin 20592 -> 20600 bytes .../__pycache__/test_spawn.cpython-312.pyc | Bin 6785 -> 6793 bytes .../test_sysconfig.cpython-312.pyc | Bin 18177 -> 18185 bytes .../test_text_file.cpython-312.pyc | Bin 3335 -> 3343 bytes .../__pycache__/test_util.cpython-312.pyc | Bin 13469 -> 13477 bytes .../__pycache__/test_version.cpython-312.pyc | Bin 3849 -> 3857 bytes .../test_versionpredicate.cpython-312.pyc | Bin 211 -> 219 bytes .../__pycache__/unix_compat.cpython-312.pyc | Bin 789 -> 797 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 205 -> 213 bytes .../compat/__pycache__/py39.cpython-312.pyc | Bin 689 -> 697 bytes .../typing_extensions.cpython-312.pyc | Bin 139503 -> 139511 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 431 -> 439 bytes .../__pycache__/autoasync.cpython-312.pyc | Bin 5012 -> 5020 bytes .../__pycache__/autocommand.cpython-312.pyc | Bin 1293 -> 1301 bytes .../__pycache__/automain.cpython-312.pyc | Bin 1865 -> 1873 bytes .../__pycache__/autoparse.cpython-312.pyc | Bin 11054 -> 11062 bytes .../__pycache__/errors.cpython-312.pyc | Bin 447 -> 455 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 321 -> 329 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 121266 -> 121274 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 305 -> 313 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 214 -> 222 bytes .../compat/__pycache__/py38.cpython-312.pyc | Bin 1060 -> 1068 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 53243 -> 53251 bytes .../__pycache__/_adapters.cpython-312.pyc | Bin 3787 -> 3795 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 1944 -> 1952 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 2283 -> 2291 bytes .../__pycache__/_functools.cpython-312.pyc | Bin 3502 -> 3510 bytes .../__pycache__/_itertools.cpython-312.pyc | Bin 2426 -> 2434 bytes .../__pycache__/_meta.cpython-312.pyc | Bin 3650 -> 3658 bytes .../__pycache__/_text.cpython-312.pyc | Bin 3903 -> 3911 bytes .../__pycache__/diagnose.cpython-312.pyc | Bin 1211 -> 1219 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 215 -> 223 bytes .../compat/__pycache__/py311.cpython-312.pyc | Bin 1284 -> 1292 bytes .../compat/__pycache__/py39.cpython-312.pyc | Bin 1658 -> 1666 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 113081 -> 113089 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 204 -> 212 bytes .../compat/__pycache__/py38.cpython-312.pyc | Bin 367 -> 375 bytes .../__pycache__/context.cpython-312.pyc | Bin 14341 -> 14349 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 39827 -> 39835 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 22918 -> 22926 bytes .../text/__pycache__/__init__.cpython-312.pyc | Bin 25501 -> 25509 bytes .../text/__pycache__/layouts.cpython-312.pyc | Bin 1119 -> 1127 bytes .../__pycache__/show-newlines.cpython-312.pyc | Bin 1491 -> 1499 bytes .../__pycache__/strip-prefix.cpython-312.pyc | Bin 915 -> 923 bytes .../__pycache__/to-dvorak.cpython-312.pyc | Bin 455 -> 463 bytes .../__pycache__/to-qwerty.cpython-312.pyc | Bin 455 -> 463 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 358 -> 366 bytes .../__pycache__/more.cpython-312.pyc | Bin 174206 -> 174214 bytes .../__pycache__/recipes.cpython-312.pyc | Bin 36335 -> 36343 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 564 -> 572 bytes .../__pycache__/_elffile.cpython-312.pyc | Bin 5036 -> 5044 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 9762 -> 9770 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 4575 -> 4583 bytes .../__pycache__/_parser.cpython-312.pyc | Bin 14006 -> 14014 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3247 -> 3255 bytes .../__pycache__/_tokenizer.cpython-312.pyc | Bin 7917 -> 7925 bytes .../__pycache__/markers.cpython-312.pyc | Bin 11382 -> 11390 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 27260 -> 27268 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 4416 -> 4424 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 39049 -> 39057 bytes .../__pycache__/tags.cpython-312.pyc | Bin 23149 -> 23157 bytes .../__pycache__/utils.cpython-312.pyc | Bin 6641 -> 6649 bytes .../__pycache__/version.cpython-312.pyc | Bin 20474 -> 20482 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 4123 -> 4131 bytes .../__pycache__/_spdx.cpython-312.pyc | Bin 47370 -> 47378 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 19787 -> 19795 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 1962 -> 1970 bytes .../__pycache__/android.cpython-312.pyc | Bin 10713 -> 10721 bytes .../__pycache__/api.cpython-312.pyc | Bin 12937 -> 12945 bytes .../__pycache__/macos.cpython-312.pyc | Bin 8013 -> 8021 bytes .../__pycache__/unix.cpython-312.pyc | Bin 15038 -> 15046 bytes .../__pycache__/version.cpython-312.pyc | Bin 603 -> 611 bytes .../__pycache__/windows.cpython-312.pyc | Bin 13679 -> 13687 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 391 -> 399 bytes .../tomli/__pycache__/_parser.cpython-312.pyc | Bin 26934 -> 26942 bytes .../tomli/__pycache__/_re.cpython-312.pyc | Bin 3915 -> 3923 bytes .../tomli/__pycache__/_types.cpython-312.pyc | Bin 373 -> 381 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2086 -> 2094 bytes .../__pycache__/_checkers.cpython-312.pyc | Bin 34966 -> 34974 bytes .../__pycache__/_config.cpython-312.pyc | Bin 3860 -> 3868 bytes .../__pycache__/_decorators.cpython-312.pyc | Bin 10589 -> 10597 bytes .../__pycache__/_exceptions.cpython-312.pyc | Bin 2767 -> 2775 bytes .../__pycache__/_functions.cpython-312.pyc | Bin 12273 -> 12281 bytes .../__pycache__/_importhook.cpython-312.pyc | Bin 9166 -> 9174 bytes .../__pycache__/_memo.cpython-312.pyc | Bin 1754 -> 1762 bytes .../_pytest_plugin.cpython-312.pyc | Bin 5548 -> 5556 bytes .../__pycache__/_suppression.cpython-312.pyc | Bin 3452 -> 3460 bytes .../__pycache__/_transformer.cpython-312.pyc | Bin 51955 -> 51963 bytes .../_union_transformer.cpython-312.pyc | Bin 2412 -> 2420 bytes .../__pycache__/_utils.cpython-312.pyc | Bin 7699 -> 7707 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 274 -> 282 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 1009 -> 1017 bytes .../__pycache__/_bdist_wheel.cpython-312.pyc | Bin 26054 -> 26062 bytes .../_setuptools_logging.cpython-312.pyc | Bin 1420 -> 1428 bytes .../__pycache__/bdist_wheel.cpython-312.pyc | Bin 786 -> 794 bytes .../macosx_libfile.cpython-312.pyc | Bin 16250 -> 16258 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 8686 -> 8694 bytes .../wheel/__pycache__/util.cpython-312.pyc | Bin 962 -> 970 bytes .../__pycache__/wheelfile.cpython-312.pyc | Bin 11503 -> 11511 bytes .../cli/__pycache__/__init__.cpython-312.pyc | Bin 6942 -> 6950 bytes .../cli/__pycache__/convert.cpython-312.pyc | Bin 16179 -> 16187 bytes .../cli/__pycache__/pack.cpython-312.pyc | Bin 4470 -> 4478 bytes .../cli/__pycache__/tags.cpython-312.pyc | Bin 6760 -> 6768 bytes .../cli/__pycache__/unpack.cpython-312.pyc | Bin 1544 -> 1552 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 204 -> 212 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 214 -> 222 bytes .../__pycache__/_elffile.cpython-312.pyc | Bin 5047 -> 5055 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 9912 -> 9920 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 4595 -> 4603 bytes .../__pycache__/_parser.cpython-312.pyc | Bin 14085 -> 14093 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 3262 -> 3270 bytes .../__pycache__/_tokenizer.cpython-312.pyc | Bin 7958 -> 7966 bytes .../__pycache__/markers.cpython-312.pyc | Bin 10535 -> 10543 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 4475 -> 4483 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 39570 -> 39578 bytes .../__pycache__/tags.cpython-312.pyc | Bin 21782 -> 21790 bytes .../__pycache__/utils.cpython-312.pyc | Bin 7305 -> 7313 bytes .../__pycache__/version.cpython-312.pyc | Bin 20018 -> 20026 bytes .../zipp/__pycache__/__init__.cpython-312.pyc | Bin 22767 -> 22775 bytes .../zipp/__pycache__/glob.cpython-312.pyc | Bin 5264 -> 5272 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 201 -> 209 bytes .../compat/__pycache__/py310.cpython-312.pyc | Bin 512 -> 520 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 653 -> 661 bytes .../__pycache__/_requirestxt.cpython-312.pyc | Bin 6591 -> 6599 bytes .../command/__pycache__/alias.cpython-312.pyc | Bin 3547 -> 3555 bytes .../__pycache__/bdist_egg.cpython-312.pyc | Bin 24431 -> 24439 bytes .../__pycache__/bdist_rpm.cpython-312.pyc | Bin 2092 -> 2100 bytes .../__pycache__/bdist_wheel.cpython-312.pyc | Bin 26215 -> 26223 bytes .../command/__pycache__/build.cpython-312.pyc | Bin 5439 -> 5447 bytes .../__pycache__/build_clib.cpython-312.pyc | Bin 3834 -> 3842 bytes .../__pycache__/build_ext.cpython-312.pyc | Bin 23358 -> 23366 bytes .../__pycache__/build_py.cpython-312.pyc | Bin 21949 -> 21957 bytes .../__pycache__/develop.cpython-312.pyc | Bin 2696 -> 2704 bytes .../__pycache__/dist_info.cpython-312.pyc | Bin 5166 -> 5174 bytes .../__pycache__/easy_install.cpython-312.pyc | Bin 1526 -> 1534 bytes .../editable_wheel.cpython-312.pyc | Bin 48185 -> 48193 bytes .../__pycache__/egg_info.cpython-312.pyc | Bin 34407 -> 34415 bytes .../__pycache__/install.cpython-312.pyc | Bin 5901 -> 5909 bytes .../install_egg_info.cpython-312.pyc | Bin 3764 -> 3772 bytes .../__pycache__/install_lib.cpython-312.pyc | Bin 6113 -> 6121 bytes .../install_scripts.cpython-312.pyc | Bin 3819 -> 3827 bytes .../__pycache__/rotate.cpython-312.pyc | Bin 3726 -> 3734 bytes .../__pycache__/saveopts.cpython-312.pyc | Bin 1273 -> 1281 bytes .../command/__pycache__/sdist.cpython-312.pyc | Bin 12079 -> 12087 bytes .../__pycache__/setopt.cpython-312.pyc | Bin 7060 -> 7068 bytes .../command/__pycache__/test.cpython-312.pyc | Bin 1890 -> 1898 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 188 -> 196 bytes .../compat/__pycache__/py310.cpython-312.pyc | Bin 788 -> 796 bytes .../compat/__pycache__/py311.cpython-312.pyc | Bin 1431 -> 1439 bytes .../compat/__pycache__/py312.cpython-312.pyc | Bin 471 -> 479 bytes .../compat/__pycache__/py39.cpython-312.pyc | Bin 317 -> 325 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 2013 -> 2021 bytes .../_apply_pyprojecttoml.cpython-312.pyc | Bin 25310 -> 25318 bytes .../config/__pycache__/expand.cpython-312.pyc | Bin 24567 -> 24575 bytes .../__pycache__/pyprojecttoml.cpython-312.pyc | Bin 23364 -> 23372 bytes .../__pycache__/setupcfg.cpython-312.pyc | Bin 33158 -> 33166 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1870 -> 1878 bytes .../error_reporting.cpython-312.pyc | Bin 18374 -> 18382 bytes .../extra_validations.cpython-312.pyc | Bin 3144 -> 3152 bytes .../fastjsonschema_exceptions.cpython-312.pyc | Bin 2842 -> 2850 bytes ...fastjsonschema_validations.cpython-312.pyc | Bin 233674 -> 233682 bytes .../__pycache__/formats.cpython-312.pyc | Bin 18470 -> 18478 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 696 -> 704 bytes .../__pycache__/contexts.cpython-312.pyc | Bin 6604 -> 6612 bytes .../__pycache__/environment.cpython-312.pyc | Bin 3553 -> 3561 bytes .../__pycache__/fixtures.cpython-312.pyc | Bin 15417 -> 15425 bytes .../mod_with_constant.cpython-312.pyc | Bin 222 -> 230 bytes .../__pycache__/namespaces.cpython-312.pyc | Bin 4212 -> 4220 bytes .../script-with-bom.cpython-312.pyc | Bin 216 -> 224 bytes .../test_archive_util.cpython-312.pyc | Bin 1884 -> 1892 bytes .../test_bdist_deprecations.cpython-312.pyc | Bin 1578 -> 1586 bytes .../test_bdist_egg.cpython-312.pyc | Bin 4165 -> 4173 bytes .../test_bdist_wheel.cpython-312.pyc | Bin 33561 -> 33569 bytes .../__pycache__/test_build.cpython-312.pyc | Bin 1601 -> 1609 bytes .../test_build_clib.cpython-312.pyc | Bin 4174 -> 4182 bytes .../test_build_ext.cpython-312.pyc | Bin 13402 -> 13410 bytes .../test_build_meta.cpython-312.pyc | Bin 43297 -> 43305 bytes .../__pycache__/test_build_py.cpython-312.pyc | Bin 17020 -> 17028 bytes .../test_config_discovery.cpython-312.pyc | Bin 30635 -> 30643 bytes .../test_core_metadata.cpython-312.pyc | Bin 23164 -> 23172 bytes .../__pycache__/test_depends.cpython-312.pyc | Bin 929 -> 937 bytes .../__pycache__/test_develop.cpython-312.pyc | Bin 5395 -> 5403 bytes .../__pycache__/test_dist.cpython-312.pyc | Bin 10963 -> 10971 bytes .../test_dist_info.cpython-312.pyc | Bin 7772 -> 7780 bytes .../test_distutils_adoption.cpython-312.pyc | Bin 8227 -> 8235 bytes .../test_editable_install.cpython-312.pyc | Bin 57299 -> 57307 bytes .../__pycache__/test_egg_info.cpython-312.pyc | Bin 48143 -> 48151 bytes .../__pycache__/test_extern.cpython-312.pyc | Bin 844 -> 852 bytes .../test_find_packages.cpython-312.pyc | Bin 12186 -> 12194 bytes .../test_find_py_modules.cpython-312.pyc | Bin 3802 -> 3810 bytes .../__pycache__/test_glob.cpython-312.pyc | Bin 1257 -> 1265 bytes .../test_install_scripts.cpython-312.pyc | Bin 6211 -> 6219 bytes .../__pycache__/test_logging.cpython-312.pyc | Bin 3188 -> 3196 bytes .../__pycache__/test_manifest.cpython-312.pyc | Bin 26764 -> 26772 bytes .../test_namespaces.cpython-312.pyc | Bin 5559 -> 5567 bytes .../__pycache__/test_scripts.cpython-312.pyc | Bin 1004 -> 1012 bytes .../__pycache__/test_sdist.cpython-312.pyc | Bin 46412 -> 46420 bytes .../__pycache__/test_setopt.cpython-312.pyc | Bin 2878 -> 2886 bytes .../test_setuptools.cpython-312.pyc | Bin 17687 -> 17695 bytes .../test_shutil_wrapper.cpython-312.pyc | Bin 1351 -> 1359 bytes .../test_unicode_utils.cpython-312.pyc | Bin 805 -> 813 bytes .../test_virtualenv.cpython-312.pyc | Bin 4454 -> 4462 bytes .../__pycache__/test_warnings.cpython-312.pyc | Bin 4148 -> 4156 bytes .../__pycache__/test_wheel.cpython-312.pyc | Bin 18340 -> 18348 bytes .../test_windows_wrappers.cpython-312.pyc | Bin 10534 -> 10542 bytes .../tests/__pycache__/text.cpython-312.pyc | Bin 523 -> 531 bytes .../__pycache__/textwrap.cpython-312.pyc | Bin 439 -> 447 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../compat/__pycache__/py39.cpython-312.pyc | Bin 361 -> 369 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../test_apply_pyprojecttoml.cpython-312.pyc | Bin 40241 -> 40249 bytes .../__pycache__/test_expand.cpython-312.pyc | Bin 11696 -> 11704 bytes .../test_pyprojecttoml.cpython-312.pyc | Bin 15863 -> 15871 bytes ...pyprojecttoml_dynamic_deps.cpython-312.pyc | Bin 4259 -> 4267 bytes .../__pycache__/test_setupcfg.cpython-312.pyc | Bin 43677 -> 43685 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 3122 -> 3130 bytes .../__pycache__/preload.cpython-312.pyc | Bin 792 -> 800 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 199 -> 207 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 4642 -> 4650 bytes .../__pycache__/test_pbr.cpython-312.pyc | Bin 849 -> 857 bytes .../test_pip_install_sdist.cpython-312.pyc | Bin 9130 -> 9138 bytes .../sqlparse-0.5.3.dist-info/RECORD | 2 +- .../__pycache__/__init__.cpython-312.pyc | Bin 3087 -> 3095 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 649 -> 657 bytes .../sqlparse/__pycache__/cli.cpython-312.pyc | Bin 7416 -> 7424 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 475 -> 483 bytes .../__pycache__/formatter.cpython-312.pyc | Bin 8354 -> 8362 bytes .../__pycache__/keywords.cpython-312.pyc | Bin 51126 -> 51134 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 6780 -> 6788 bytes .../sqlparse/__pycache__/sql.cpython-312.pyc | Bin 31821 -> 31829 bytes .../__pycache__/tokens.cpython-312.pyc | Bin 2270 -> 2278 bytes .../__pycache__/utils.cpython-312.pyc | Bin 4585 -> 4593 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 422 -> 430 bytes .../__pycache__/filter_stack.cpython-312.pyc | Bin 2244 -> 2252 bytes .../__pycache__/grouping.cpython-312.pyc | Bin 25104 -> 25112 bytes .../statement_splitter.cpython-312.pyc | Bin 3987 -> 3995 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1012 -> 1020 bytes .../aligned_indent.cpython-312.pyc | Bin 7958 -> 7966 bytes .../__pycache__/others.cpython-312.pyc | Bin 9969 -> 9977 bytes .../__pycache__/output.cpython-312.pyc | Bin 6517 -> 6525 bytes .../__pycache__/reindent.cpython-312.pyc | Bin 15666 -> 15674 bytes .../__pycache__/right_margin.cpython-312.pyc | Bin 2210 -> 2218 bytes .../__pycache__/tokens.cpython-312.pyc | Bin 2921 -> 2929 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 238 -> 246 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 204 -> 212 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 202 -> 210 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 203 -> 211 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 207 -> 215 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 197 -> 205 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../Asia/__pycache__/__init__.cpython-312.pyc | Bin 191 -> 199 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 195 -> 203 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 196 -> 204 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 192 -> 200 bytes .../Etc/__pycache__/__init__.cpython-312.pyc | Bin 190 -> 198 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 193 -> 201 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 194 -> 202 bytes .../US/__pycache__/__init__.cpython-312.pyc | Bin 189 -> 197 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 186 -> 194 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 1354 -> 1362 bytes .../__pycache__/api.cpython-312.pyc | Bin 3011 -> 3019 bytes .../__pycache__/orderedset.cpython-312.pyc | Bin 4948 -> 4956 bytes .../__pycache__/template.cpython-312.pyc | Bin 6950 -> 6958 bytes .../__pycache__/variable.cpython-312.pyc | Bin 23474 -> 23482 bytes .../urllib3-2.5.0.dist-info/INSTALLER | 1 - .../urllib3-2.5.0.dist-info/METADATA | 154 - .../urllib3-2.5.0.dist-info/RECORD | 79 - .../urllib3-2.5.0.dist-info/WHEEL | 4 - .../licenses/LICENSE.txt | 21 - .../site-packages/urllib3/__init__.py | 211 - .../__pycache__/__init__.cpython-312.pyc | Bin 7303 -> 0 bytes .../_base_connection.cpython-312.pyc | Bin 6841 -> 0 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 22562 -> 0 bytes .../_request_methods.cpython-312.pyc | Bin 10595 -> 0 bytes .../__pycache__/_version.cpython-312.pyc | Bin 639 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 38406 -> 0 bytes .../connectionpool.cpython-312.pyc | Bin 39728 -> 0 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 16604 -> 0 bytes .../__pycache__/fields.cpython-312.pyc | Bin 12015 -> 0 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 3482 -> 0 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 24396 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 52706 -> 0 bytes .../site-packages/urllib3/_base_connection.py | 165 - .../site-packages/urllib3/_collections.py | 479 - .../site-packages/urllib3/_request_methods.py | 278 - .../site-packages/urllib3/_version.py | 21 - .../site-packages/urllib3/connection.py | 1093 --- .../site-packages/urllib3/connectionpool.py | 1178 --- .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 186 -> 0 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 28209 -> 0 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 8164 -> 0 bytes .../urllib3/contrib/emscripten/__init__.py | 16 - .../__pycache__/__init__.cpython-312.pyc | Bin 894 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 10235 -> 0 bytes .../__pycache__/fetch.cpython-312.pyc | Bin 28625 -> 0 bytes .../__pycache__/request.cpython-312.pyc | Bin 1414 -> 0 bytes .../__pycache__/response.cpython-312.pyc | Bin 12208 -> 0 bytes .../urllib3/contrib/emscripten/connection.py | 255 - .../emscripten/emscripten_fetch_worker.js | 110 - .../urllib3/contrib/emscripten/fetch.py | 728 -- .../urllib3/contrib/emscripten/request.py | 22 - .../urllib3/contrib/emscripten/response.py | 277 - .../urllib3/contrib/pyopenssl.py | 564 -- .../site-packages/urllib3/contrib/socks.py | 228 - .../site-packages/urllib3/exceptions.py | 335 - .../site-packages/urllib3/fields.py | 341 - .../site-packages/urllib3/filepost.py | 89 - .../site-packages/urllib3/http2/__init__.py | 53 - .../__pycache__/__init__.cpython-312.pyc | Bin 1739 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 17046 -> 0 bytes .../http2/__pycache__/probe.cpython-312.pyc | Bin 3690 -> 0 bytes .../site-packages/urllib3/http2/connection.py | 356 - .../site-packages/urllib3/http2/probe.py | 87 - .../site-packages/urllib3/poolmanager.py | 653 -- .../python3.12/site-packages/urllib3/py.typed | 2 - .../site-packages/urllib3/response.py | 1307 --- .../site-packages/urllib3/util/__init__.py | 42 - .../util/__pycache__/__init__.cpython-312.pyc | Bin 999 -> 0 bytes .../__pycache__/connection.cpython-312.pyc | Bin 4689 -> 0 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 1211 -> 0 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 8311 -> 0 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 2867 -> 0 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 20280 -> 0 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 17163 -> 0 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 5551 -> 0 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 13318 -> 0 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 11683 -> 0 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 16220 -> 0 bytes .../util/__pycache__/util.cpython-312.pyc | Bin 1988 -> 0 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 3434 -> 0 bytes .../site-packages/urllib3/util/connection.py | 137 - .../site-packages/urllib3/util/proxy.py | 43 - .../site-packages/urllib3/util/request.py | 266 - .../site-packages/urllib3/util/response.py | 101 - .../site-packages/urllib3/util/retry.py | 533 - .../site-packages/urllib3/util/ssl_.py | 524 - .../urllib3/util/ssl_match_hostname.py | 159 - .../urllib3/util/ssltransport.py | 271 - .../site-packages/urllib3/util/timeout.py | 275 - .../site-packages/urllib3/util/url.py | 469 - .../site-packages/urllib3/util/util.py | 42 - .../site-packages/urllib3/util/wait.py | 124 - .../vine/__pycache__/__init__.cpython-312.pyc | Bin 1322 -> 1330 bytes .../vine/__pycache__/abstract.cpython-312.pyc | Bin 3932 -> 3940 bytes .../vine/__pycache__/funtools.cpython-312.pyc | Bin 4134 -> 4142 bytes .../vine/__pycache__/promises.cpython-312.pyc | Bin 9197 -> 9205 bytes .../synchronization.cpython-312.pyc | Bin 4461 -> 4469 bytes .../vine/__pycache__/utils.cpython-312.pyc | Bin 1206 -> 1214 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 572 -> 580 bytes .../__pycache__/table_vs15.cpython-312.pyc | Bin 1506 -> 1514 bytes .../__pycache__/table_vs16.cpython-312.pyc | Bin 1770 -> 1778 bytes .../__pycache__/table_wide.cpython-312.pyc | Bin 9728 -> 9736 bytes .../__pycache__/table_zero.cpython-312.pyc | Bin 26855 -> 26863 bytes .../unicode_versions.cpython-312.pyc | Bin 936 -> 944 bytes .../__pycache__/wcwidth.cpython-312.pyc | Bin 10965 -> 10973 bytes .../yaml/__pycache__/__init__.cpython-312.pyc | Bin 15612 -> 15620 bytes .../yaml/__pycache__/composer.cpython-312.pyc | Bin 6521 -> 6529 bytes .../__pycache__/constructor.cpython-312.pyc | Bin 34914 -> 34922 bytes .../yaml/__pycache__/cyaml.cpython-312.pyc | Bin 4622 -> 4630 bytes .../yaml/__pycache__/dumper.cpython-312.pyc | Bin 2458 -> 2466 bytes .../yaml/__pycache__/emitter.cpython-312.pyc | Bin 50162 -> 50170 bytes .../yaml/__pycache__/error.cpython-312.pyc | Bin 4264 -> 4272 bytes .../yaml/__pycache__/events.cpython-312.pyc | Bin 4706 -> 4714 bytes .../yaml/__pycache__/loader.cpython-312.pyc | Bin 3520 -> 3528 bytes .../yaml/__pycache__/nodes.cpython-312.pyc | Bin 2205 -> 2213 bytes .../yaml/__pycache__/parser.cpython-312.pyc | Bin 24710 -> 24718 bytes .../yaml/__pycache__/reader.cpython-312.pyc | Bin 8840 -> 8848 bytes .../__pycache__/representer.cpython-312.pyc | Bin 16913 -> 16921 bytes .../yaml/__pycache__/resolver.cpython-312.pyc | Bin 9057 -> 9065 bytes .../yaml/__pycache__/scanner.cpython-312.pyc | Bin 49848 -> 49856 bytes .../__pycache__/serializer.cpython-312.pyc | Bin 6195 -> 6203 bytes .../yaml/__pycache__/tokens.cpython-312.pyc | Bin 5775 -> 5783 bytes gnx-react/venv/pyvenv.cfg | 2 +- 2821 files changed, 1043 insertions(+), 38155 deletions(-) create mode 100644 gnx-react/components/shared/layout/LayoutWrapper.tsx create mode 100644 gnx-react/components/shared/layout/Preloader.tsx create mode 100644 gnx-react/components/shared/layout/README-Preloader.md delete mode 100755 gnx-react/venv/bin/normalizer delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/METADATA delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/RECORD delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/WHEEL delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/licenses/LICENSE delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/top_level.txt delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi/__main__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi/core.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/certifi/py.typed delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/INSTALLER delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/METADATA delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/RECORD delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/WHEEL delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/entry_points.txt delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/licenses/LICENSE delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/top_level.txt delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__main__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/api.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cd.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/constant.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py delete mode 100755 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md.py delete mode 100755 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/models.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/py.typed delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/utils.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/version.py rename gnx-react/venv/lib/python3.12/site-packages/{certifi-2025.8.3.dist-info => drf_yasg-1.21.10.dist-info}/INSTALLER (100%) rename gnx-react/venv/lib/python3.12/site-packages/{drf_yasg-1.21.7.dist-info => drf_yasg-1.21.10.dist-info}/LICENSE.rst (100%) rename gnx-react/venv/lib/python3.12/site-packages/{drf_yasg-1.21.7.dist-info => drf_yasg-1.21.10.dist-info}/METADATA (86%) rename gnx-react/venv/lib/python3.12/site-packages/{drf_yasg-1.21.7.dist-info => drf_yasg-1.21.10.dist-info}/RECORD (81%) rename gnx-react/venv/lib/python3.12/site-packages/{drf_yasg-1.21.7.dist-info => drf_yasg-1.21.10.dist-info}/REQUESTED (100%) rename gnx-react/venv/lib/python3.12/site-packages/{requests-2.32.5.dist-info => drf_yasg-1.21.10.dist-info}/WHEEL (65%) rename gnx-react/venv/lib/python3.12/site-packages/{drf_yasg-1.21.7.dist-info => drf_yasg-1.21.10.dist-info}/top_level.txt (100%) delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/INSTALLER delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/WHEEL delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/codec.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/compat.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/core.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/idnadata.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/intranges.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/package_data.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/py.typed delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/idna/uts46data.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/INSTALLER delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/METADATA delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/RECORD delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/REQUESTED delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/licenses/LICENSE delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/top_level.txt delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/__version__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/_internal_utils.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/adapters.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/api.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/auth.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/certs.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/compat.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/cookies.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/exceptions.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/help.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/hooks.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/models.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/packages.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/sessions.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/status_codes.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/structures.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/requests/utils.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/INSTALLER delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/METADATA delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/RECORD delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/WHEEL delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/licenses/LICENSE.txt delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/_base_connection.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/_collections.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/_request_methods.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/_version.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/connection.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/connectionpool.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/connection.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/socks.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/exceptions.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/fields.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/filepost.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/connection.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/probe.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/connection.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/probe.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/poolmanager.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/py.typed delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/response.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__init__.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/connection.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/proxy.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/request.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/response.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/retry.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/timeout.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/url.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/util.py delete mode 100644 gnx-react/venv/lib/python3.12/site-packages/urllib3/util/wait.py diff --git a/gnx-react/app/layout.tsx b/gnx-react/app/layout.tsx index 7d5dec82..9850daf7 100644 --- a/gnx-react/app/layout.tsx +++ b/gnx-react/app/layout.tsx @@ -3,6 +3,7 @@ import { Inter, Montserrat } from "next/font/google"; import "@/public/styles/main.scss"; import { CookieConsentProvider } from "@/components/shared/layout/CookieConsentContext"; import { CookieConsent } from "@/components/shared/layout/CookieConsent"; +import LayoutWrapper from "@/components/shared/layout/LayoutWrapper"; const montserrat = Montserrat({ subsets: ["latin"], @@ -77,7 +78,9 @@ export default function RootLayout({ showPrivacyNotice: true, }} > - {children} + + {children} + diff --git a/gnx-react/backend/gnx/__pycache__/settings.cpython-312.pyc b/gnx-react/backend/gnx/__pycache__/settings.cpython-312.pyc index 318bc20a83816e3ef023236a4782ad96c2a771ff..65b961f41fb4bb1cab736843ad91a128a30f3c81 100644 GIT binary patch delta 51 zcmdm?eL$P*G%qg~0}$kI-^gXgDrK#ok)NBYpPpBt?~+=aU6Nm*@9r0&8}90~Ifyk) F004ng4?O?? delta 43 xcmX@0y+fPpG%qg~0}wP9Zsam!6*AV($j?pHPtU8+cS$YIF3B(09L1U@000Sy4BP+! diff --git a/gnx-react/backend/logs/django.log b/gnx-react/backend/logs/django.log index 5669f401..58ad7731 100644 --- a/gnx-react/backend/logs/django.log +++ b/gnx-react/backend/logs/django.log @@ -15473,3 +15473,326 @@ INFO 2025-09-25 21:11:40,916 basehttp 148000 128298896062144 "GET /api/about/pag INFO 2025-09-25 21:11:40,960 basehttp 148000 128298606986944 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913 INFO 2025-09-25 21:11:41,454 basehttp 148000 128298606986944 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913 INFO 2025-09-25 21:11:43,226 basehttp 148000 128298606986944 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:23:51,595 autoreload 206771 123548285056448 Watching for file changes with StatReloader +INFO 2025-09-25 21:24:33,336 autoreload 207144 139579352450496 Watching for file changes with StatReloader +INFO 2025-09-25 21:25:23,082 autoreload 208578 137170627704256 Watching for file changes with StatReloader +INFO 2025-09-25 21:25:23,885 autoreload 208601 136258742597056 Watching for file changes with StatReloader +INFO 2025-09-25 21:25:26,509 basehttp 208578 137170532693696 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0 +INFO 2025-09-25 21:25:26,522 basehttp 208578 137170450904768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:25:26,537 basehttp 208578 137170450904768 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:25:37,197 autoreload 208887 130267259327936 Watching for file changes with StatReloader +INFO 2025-09-25 21:26:04,252 autoreload 209138 127109705283008 Watching for file changes with StatReloader +INFO 2025-09-25 21:26:07,928 basehttp 209138 127109536151232 "OPTIONS /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 0 +INFO 2025-09-25 21:26:07,928 basehttp 209138 127109527758528 "OPTIONS /api/about/page/ HTTP/1.1" 200 0 +INFO 2025-09-25 21:26:07,974 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:26:07,997 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:26:08,054 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:26:08,119 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:26:08,177 basehttp 209138 127109519365824 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:26:11,551 basehttp 209138 127109519365824 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:26:12,886 basehttp 209138 127109519365824 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:26:18,714 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:26:18,726 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:26:18,776 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:26:18,825 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:40,639 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:40,964 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:40,974 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:41,041 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:41,092 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:46,422 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:46,431 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:46,486 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:46,491 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:48,468 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:48,485 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:48,485 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:48,503 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:48,564 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:48,638 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:48,641 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:48,657 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:49,746 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:49,767 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:49,769 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:49,788 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:49,867 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:49,870 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:49,899 basehttp 209138 127109502580416 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:28:49,945 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:49,947 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:28:52,862 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:52,875 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:54,328 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:54,342 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:56,851 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:56,863 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:56,940 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:56,949 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:58,057 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:58,067 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:58,137 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:28:58,148 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:29:00,791 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:29:00,800 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:29:00,807 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:29:00,823 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:29:00,883 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:29:00,959 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:29:00,961 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:29:00,981 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:31:58,271 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:31:58,279 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:31:58,330 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:31:58,381 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:00,489 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:00,510 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:00,515 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:00,537 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:00,596 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:00,654 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:00,715 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:00,770 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:02,053 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:02,062 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:02,077 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:02,095 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:02,151 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:02,206 basehttp 209138 127109510973120 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:32:02,228 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:02,234 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:02,249 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:03,629 basehttp 209138 127109510973120 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:32:04,496 basehttp 209138 127109510973120 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:32:08,768 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:08,777 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:10,344 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:10,353 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:12,359 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:12,371 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:12,451 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:12,501 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:14,052 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:14,063 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:14,117 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:14,167 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:19,972 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:19,987 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:20,049 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:20,099 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:26,456 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:26,506 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:26,555 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:26,603 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:31,527 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:31,536 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:31,628 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:31,637 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:37,253 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:37,262 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:37,359 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:37,370 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:39,466 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:39,483 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:39,489 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:39,503 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:39,566 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:39,636 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:39,643 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:39,659 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:42,409 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:42,425 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:32:42,429 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:42,460 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:42,464 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:42,483 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:42,530 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:32:42,535 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:18,633 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:33:18,652 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:18,661 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:33:18,681 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:18,700 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:18,759 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:18,777 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:18,838 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:23,651 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:33:23,666 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:23,672 basehttp 209138 127109536151232 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:33:23,691 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:23,709 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:23,786 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:23,795 basehttp 209138 127109536151232 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:33:23,812 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:37:27,632 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:37:27,640 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:37:27,696 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:37:27,746 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:37:37,981 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:37:37,995 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:37:38,008 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:37:38,022 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:37:38,096 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:37:38,098 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:37:38,184 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:37:38,184 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:37:38,190 basehttp 209138 127109502580416 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:37:39,495 basehttp 209138 127109502580416 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:37:42,387 basehttp 209138 127109502580416 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:39:29,259 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:29,282 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:29,289 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:29,314 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:29,373 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:29,447 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:29,449 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:29,472 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:29,510 basehttp 209138 127109536151232 "GET /media/about/services/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:39:35,048 basehttp 209138 127109536151232 "GET /media/about/process/5106554_2658378.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:39:36,079 basehttp 209138 127109536151232 "GET /media/about/journey/5106554_2658378_z7vMnMV.jpg HTTP/1.1" 200 512913 +INFO 2025-09-25 21:39:38,954 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:38,964 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:39,017 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:39,065 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:39,304 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:39,313 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:39,365 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:39,421 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:46,110 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:46,122 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:46,426 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:46,440 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:49,439 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:49,505 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:49,854 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:49,920 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:51,115 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:51,128 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:51,441 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:51,450 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:53,247 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:53,263 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:53,266 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,285 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,356 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,360 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,434 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,436 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,554 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:53,572 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:53,579 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,597 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,658 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,728 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,730 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:53,752 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:39:56,951 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:56,962 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:57,040 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:57,089 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:57,352 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:57,360 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:57,443 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:39:57,492 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:16,238 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:16,256 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:16,258 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,286 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,288 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,305 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,362 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,366 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,550 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:16,568 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:16,573 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,587 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,605 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,664 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,730 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:16,788 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:17,699 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:17,714 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:17,791 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:17,840 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:18,125 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:18,133 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:18,233 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:18,242 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:19,853 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:19,866 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:19,872 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:19,887 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:19,915 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:19,921 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:19,985 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:20,001 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:20,157 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:20,180 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:20,181 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:20,205 basehttp 209138 127109510973120 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:20,219 basehttp 209138 127109519365824 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:20,283 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:20,302 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:20,361 basehttp 209138 127109527758528 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:40:25,071 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:25,082 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:25,199 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:25,211 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:25,531 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:25,539 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:25,667 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:25,676 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:27,269 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:27,291 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:27,564 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:40:27,577 basehttp 209138 127109527758528 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:42:34,240 autoreload 209138 127109705283008 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading. +INFO 2025-09-25 21:42:34,701 autoreload 217666 133732046808512 Watching for file changes with StatReloader +INFO 2025-09-25 21:42:41,170 autoreload 217666 133732046808512 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading. +INFO 2025-09-25 21:42:41,614 autoreload 217753 135985857697216 Watching for file changes with StatReloader +INFO 2025-09-25 21:42:50,954 autoreload 217753 135985857697216 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading. +INFO 2025-09-25 21:42:51,357 autoreload 217811 132547578885568 Watching for file changes with StatReloader +INFO 2025-09-25 21:43:02,725 autoreload 217811 132547578885568 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading. +INFO 2025-09-25 21:43:03,100 autoreload 217980 130293534139840 Watching for file changes with StatReloader +INFO 2025-09-25 21:43:10,410 autoreload 217980 130293534139840 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading. +INFO 2025-09-25 21:43:10,757 autoreload 218046 127324681201088 Watching for file changes with StatReloader +INFO 2025-09-25 21:43:12,006 autoreload 218046 127324681201088 /home/gnx/Desktop/GNX-WEB/gnx-react/backend/gnx/settings.py changed, reloading. +INFO 2025-09-25 21:43:12,399 autoreload 218049 129657340978624 Watching for file changes with StatReloader +INFO 2025-09-25 21:43:23,115 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:23,126 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:23,301 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:23,309 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:23,667 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:23,678 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:23,850 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:23,858 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:26,868 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:26,881 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:26,892 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:26,910 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:26,966 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,025 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,100 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,114 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,175 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:27,187 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,200 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,226 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:27,265 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,334 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,347 basehttp 218049 129657164785344 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:27,367 basehttp 218049 129657173178048 "GET /api/about/page/ HTTP/1.1" 200 5073 +INFO 2025-09-25 21:43:32,103 basehttp 218049 129657156392640 "GET /api/services/ HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:32,213 basehttp 218049 129656942491328 "GET /api/services/cloud-migration-devops/ HTTP/1.1" 200 3459 +INFO 2025-09-25 21:43:32,538 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:32,565 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:32,927 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:32,960 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,143 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,152 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,354 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,365 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,782 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,798 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,971 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 +INFO 2025-09-25 21:43:57,983 basehttp 218049 129657173178048 "GET /api/services/?ordering=display_order&page=1 HTTP/1.1" 200 6882 diff --git a/gnx-react/components/pages/about/AboutBanner.tsx b/gnx-react/components/pages/about/AboutBanner.tsx index 40ab35a2..d62d885b 100644 --- a/gnx-react/components/pages/about/AboutBanner.tsx +++ b/gnx-react/components/pages/about/AboutBanner.tsx @@ -75,10 +75,10 @@ const AboutBanner = () => { {/* Animated Code Lines */}
- const enterprise = 'mission-critical'; + const enterprise = 'mission-critical';
- if (security.level === 'enterprise') { + if (security.level === 'enterprise') {
  deploy(); diff --git a/gnx-react/components/shared/layout/LayoutWrapper.tsx b/gnx-react/components/shared/layout/LayoutWrapper.tsx new file mode 100644 index 00000000..97113cf3 --- /dev/null +++ b/gnx-react/components/shared/layout/LayoutWrapper.tsx @@ -0,0 +1,17 @@ +"use client"; +import { ReactNode } from "react"; +import Preloader from "./Preloader"; + +interface LayoutWrapperProps { + children: ReactNode; +} + +const LayoutWrapper = ({ children }: LayoutWrapperProps) => { + return ( + + {children} + + ); +}; + +export default LayoutWrapper; diff --git a/gnx-react/components/shared/layout/Preloader.tsx b/gnx-react/components/shared/layout/Preloader.tsx new file mode 100644 index 00000000..777ca789 --- /dev/null +++ b/gnx-react/components/shared/layout/Preloader.tsx @@ -0,0 +1,387 @@ +"use client"; +import { useState, useEffect } from "react"; +import { usePathname } from "next/navigation"; +import Image from "next/image"; + +interface PreloaderProps { + children: React.ReactNode; +} + +const Preloader = ({ children }: PreloaderProps) => { + const [isLoading, setIsLoading] = useState(true); + const [progress, setProgress] = useState(0); + const [currentPath, setCurrentPath] = useState(""); + const pathname = usePathname(); + + // Debug mode - set to true to see console logs + const DEBUG = false; + + // Skip preloader for faster development/testing (set to true to disable preloader) + const SKIP_PRELOADER = false; + + // Fast mode - set to true for even faster loading (200ms total) + const FAST_MODE = true; + + useEffect(() => { + // Only show preloader if path has changed or it's initial load + if (currentPath !== pathname) { + if (DEBUG) console.log('Preloader: Starting transition from', currentPath, 'to', pathname); + setIsLoading(true); + setProgress(0); + + // Simulate loading progress - faster and more responsive + const progressInterval = setInterval(() => { + setProgress((prev) => { + if (prev >= 85) { + clearInterval(progressInterval); + return 85; + } + return prev + Math.random() * 25 + 10; // Faster progress increments + }); + }, 50); // Reduced interval from 100ms to 50ms for smoother animation + + // Complete loading much faster - adjust timing based on FAST_MODE + const loadingDuration = FAST_MODE ? 200 : 400; + const fadeOutDuration = FAST_MODE ? 50 : 100; + + const completeTimer = setTimeout(() => { + setProgress(100); + setTimeout(() => { + if (DEBUG) console.log('Preloader: Transition complete'); + setIsLoading(false); + setCurrentPath(pathname); + }, fadeOutDuration); + }, loadingDuration); + + // Fallback: Force complete after reasonable time + const fallbackDuration = FAST_MODE ? 800 : 1500; + const fallbackTimer = setTimeout(() => { + if (DEBUG) console.log('Preloader: Fallback triggered - force completing'); + setIsLoading(false); + setCurrentPath(pathname); + setProgress(100); + }, fallbackDuration); + + return () => { + clearInterval(progressInterval); + clearTimeout(completeTimer); + clearTimeout(fallbackTimer); + }; + } + }, [pathname, currentPath, DEBUG, FAST_MODE]); + + // Skip preloader entirely if SKIP_PRELOADER is true + if (SKIP_PRELOADER) { + return <>{children}; + } + + // Don't show preloader if not loading + if (!isLoading) { + return <>{children}; + } + + return ( + <> +
+
+ {/* Logo with shine effect */} +
+
+ GNX Logo +
+
+
+ + {/* Progress bar */} +
+
+
+
+
{Math.round(progress)}%
+
+ + {/* Loading text */} +
+ + . + . + . + +
+ + {/* Enterprise tagline */} +
+ Enterprise Solutions + Excellence in Every Project +
+
+
+ + + + ); +}; + +export default Preloader; diff --git a/gnx-react/components/shared/layout/README-Preloader.md b/gnx-react/components/shared/layout/README-Preloader.md new file mode 100644 index 00000000..18f6bc33 --- /dev/null +++ b/gnx-react/components/shared/layout/README-Preloader.md @@ -0,0 +1,106 @@ +# Preloader Component Documentation + +## Overview +The Preloader component provides a sophisticated, enterprise-grade loading experience for the GNX React application. It features a compact design with the company logo, shine effects, and smooth animations that activate during page transitions. + +## Features + +### 🎨 Enterprise Design +- **Compact Layout**: Minimal, professional design that doesn't overwhelm users +- **Company Logo**: Features the GNX logo with floating animation +- **Shine Effect**: Animated shine effect that sweeps across the logo periodically +- **Dark Theme**: Professional dark gradient background with subtle transparency + +### ⚡ Smart Loading Logic +- **Initial Load**: Shows for 1.5 seconds on first page load +- **Page Transitions**: Activates automatically when navigating between pages +- **Progress Bar**: Realistic loading progress with gradient colors +- **Smooth Transitions**: Fade-in/out animations for seamless user experience + +### 📱 Responsive Design +- **Mobile Optimized**: Scales appropriately on all device sizes +- **Touch Friendly**: Optimized for mobile interactions +- **Performance**: Lightweight animations that don't impact performance + +## Components + +### 1. Preloader.tsx +Main preloader component that handles the loading UI and animations. + +**Key Features:** +- Logo with shine effect animation +- Progress bar with gradient fill +- Loading dots animation +- Enterprise tagline +- Responsive design + +### 2. LayoutWrapper.tsx +Wrapper component that integrates the preloader with the main layout. + +### 3. usePageTransition.ts +Custom hook that manages page transition states and progress. + +**Hook Methods:** +- `isTransitioning`: Boolean indicating if a transition is active +- `progress`: Current loading progress (0-100) +- `startTransition()`: Initiates a new page transition +- `updateProgress()`: Updates the loading progress +- `completeTransition()`: Marks transition as complete + +## Usage + +The preloader is automatically integrated into the main layout and requires no additional setup. It will: + +1. **Show on initial page load** for 1.5 seconds +2. **Activate on page navigation** with realistic loading simulation +3. **Display progress** with animated progress bar +4. **Hide smoothly** when loading is complete + +## Customization + +### Logo +To change the logo, update the image path in the Preloader component: +```tsx +GNX Logo +``` + +### Colors +The preloader uses CSS custom properties that can be customized: +- Background gradient colors +- Progress bar gradient +- Text colors and opacity + +### Timing +Adjust timing in the usePageTransition hook: +- Initial load duration: 1500ms +- Transition duration: 600-1000ms (randomized) +- Progress update interval: 100ms + +## Performance Considerations + +- **Optimized Animations**: Uses CSS transforms and opacity for smooth performance +- **Minimal DOM**: Lightweight component structure +- **Smart Loading**: Only shows when necessary (transitions) +- **Memory Efficient**: Proper cleanup of timers and intervals + +## Browser Support + +- **Modern Browsers**: Full support for Chrome, Firefox, Safari, Edge +- **Mobile Browsers**: Optimized for iOS Safari and Chrome Mobile +- **Fallbacks**: Graceful degradation for older browsers + +## Future Enhancements + +Potential improvements for future versions: +- Custom loading messages per page +- Brand-specific color themes +- Loading state indicators for API calls +- Accessibility improvements (reduced motion support) +- Analytics integration for loading performance diff --git a/gnx-react/components/shared/layout/header/OffcanvasMenu.tsx b/gnx-react/components/shared/layout/header/OffcanvasMenu.tsx index 18c6b7b6..b46e98fc 100644 --- a/gnx-react/components/shared/layout/header/OffcanvasMenu.tsx +++ b/gnx-react/components/shared/layout/header/OffcanvasMenu.tsx @@ -110,7 +110,7 @@ const OffcanvasMenu = ({ Failed to load services ) : ( - item.submenu.map((subItem, subIndex) => ( + item.submenu.map((subItem: any, subIndex: number) => (
  • $PU GH7)?4GZ1nB delta 44 ycmZ3duuOsbG%qg~0}#}{xw4Vlm{ll1KO;XkRX;tiLf<8|IJ+djU~>fPH7)=wvJP(m diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-312.pyc index 0b5a943553a8e3999107ae8dc85231522dd6e9e5..8b6993589b92891dfc6b24c0478b87db3bc9b733 100644 GIT binary patch delta 54 zcmdnAiE-B^M()$Ryj%=G(6#C6Ms5`jsc8L-{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IjvOBY0O6?-`~Uy| delta 46 zcmdnBiE+~=M()$Ryj%=GQ2XY}Ms5`jp{ A`2YX_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-312.pyc index 9c0ca3ef87bdb70d369cff09f570a92750be7db7..e203ae3f5d8e0973f1c3a207ac20a8eb6cafa74b 100644 GIT binary patch delta 52 zcmcawcejrFG%qg~0}ym=y1J2Dheaw{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pE_ Gk2L_*aS-MJ delta 44 ycmcaxceRfDG%qg~0}#}{xw4U4heaq@KO;XkRX;tiLf<8|IJ+djU~?b~k2L^UNDkuw diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-312.pyc index 3a98b63fd0d89426addcdf5f37d8fe54304d95f0..229965028cc8bdc594a86854f6870b51d20fbb18 100644 GIT binary patch delta 51 zcmew?^jnDgG%qg~0}ym=y1J43F{4z1enx(7s(yN2g}zH_adt_5fxf$6gl@R2((055K&MwI>(0BKX&<%HW+T0>i GCk_CyNf6io delta 44 ycmeB*Xo}!I&CAQh00gyfu59E^7ZD29&&bbB)lbi>(055K&MwI>*xVyhCk_BQSPs( G(=7q{vl86^ delta 44 ycmexg^Sy@qG%qg~0}#}{xw4V_FpE&Ienx(7s(yN2g}zH_adt_5!R8k%(=7pZ(h%AJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ExifTags.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ExifTags.cpython-312.pyc index c6ce7fbe01c2ed931855e0851582cdc383e8a03f..faf8e8d59139b0eeb7c59c17f7e052f1c16537d6 100644 GIT binary patch delta 52 zcmcZ~`8<;QG%qg~0}ym=y1J43xQtY&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;2K Gzxe^?Qxekv delta 44 ycmaDJc|Vf-G%qg~0}#}{xw4V_xQvjmenx(7s(yN2g}zH_adt_5!R9wIzxe@XauCn} diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-312.pyc index b9c29a4d22c96c80cab1f6d9bb7013efff84bd14..02086ed33230d9881b086a94760bdf9011695a68 100644 GIT binary patch delta 52 zcmbO&x>%I^G%qg~0}ym=y1J1&f>A0)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%!~ G8Ycjojt|=a delta 44 ycmZ21I$M9_$KO;XkRX;tiLf<8|IJ+djU~?^_8YciKMGe>h diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/FliImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/FliImagePlugin.cpython-312.pyc index b4f0fe6b152c37dc663b3411b87a34b77b7727bc..fab6356ec65bee80d766f7ec0ccda3bd19a8e06f 100644 GIT binary patch delta 52 zcmbPiINOl>G%qg~0}ym=y1J2Dm`N&HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n-S GvKRoFoDakR delta 44 ycmbPjIN6Zw?U5kG%qg~0}ym=y1J3Om{BTJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zfe G8N2|fQ4p*E delta 44 ycmdlWw?dBlG%qg~0}#}{xw4VFm{G`AKO;XkRX;tiLf<8|IJ+djVDk*d8N2{92o9+L diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-312.pyc index 8cab091236b46377d157acc1d8cf8e941e834a1a..485670c571d584c796358a5abec5c84546045ea3 100644 GIT binary patch delta 52 zcmbPeHq(szG%qg~0}ym=y1J1&mPsmFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%3R GbO`{aDiD+a delta 44 ycmbPfHqngxG%qg~0}#}{xw4TvmPsgBKO;XkRX;tiLf<8|IJ+djU~?1GbO``4Ne+$dW Gi68)~H4s1m delta 44 ycmdm@zDAwbLi68(plny-r diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-312.pyc index fd326df284ff633390ad5fb4d24b3c34e027d887..4b072955cbf7beaa77db008bf5690842fa812853 100644 GIT binary patch delta 52 zcmcb`|A?RaG%qg~0}ym=y1J2j8jDnnenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@@A G>dXMU>=4QT delta 44 ycmaFFe~X{{G%qg~0}#}{xw4Ua8jDbfenx(7s(yN2g}zH_adt_5!RFm8>dXK`3l7Hs diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-312.pyc index 5164fb7c89f992960be4a3a8466dfef4e9580557..2c3583a825271ccd01245a8fd295d273253cd262 100644 GIT binary patch delta 51 zcmew;^izoYG%qg~0}ym=y1J43F{4z1enx(7s(yN2g}zH_adt_5fxf$6gl@R2(!w{YT delta 44 ycmaDLbVG>yG%qg~0}#}{xw4V_Iipa7enx(7s(yN2g}zH_adt_5!Db$&5Ox4bLJpe% diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-312.pyc index 5bf2e4a4047c79355f6d5f592e9ca3aa9e857ba0..ec6759be99f12490c78a985cacb5848dfdd9d715 100644 GIT binary patch delta 54 zcmaFS!1$qok^3|+FBbz4bZxr2k^3`?RE&N`er~FMdR~RTOKNd;Nq&L8yI+KExU17< I0oDj>0Q|NQ?f?J) delta 46 zcmey+!1$tpk^3|+FBbz4)V{g0k^3`?P>6m;er~FMdR~RTOKNd;Nq)g*3DyW}0C@Ee A>i_@% diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-312.pyc index 1b89981be2332e36d20b47df30d5b9cb6791e397..1cb739082e5eb8ede1f6974a52ac5e2125008a10 100644 GIT binary patch delta 52 zcmbQ2vn+@EG%qg~0}ym=y1J2Dh*v6FKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|q1> Gdkp}$nh^p3 delta 44 ycmZ3MGcSkxG%qg~0}#}{xw4U4h*v0BKO;XkRX;tiLf<8|IJ+djV6!>zdkp|Ui4Ok& diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImImagePlugin.cpython-312.pyc index fb94385de3867d12a9b61a9ad88e096c3cbecd8b..8176119034f647fed5989c94f35ac478b0e96c02 100644 GIT binary patch delta 52 zcmaDG`!$yPG%qg~0}ym=y1J43DVtQ3enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F|2 G*XjW4X%ZCx delta 44 ycmeww`!<&QG%qg~0}#}{xw4V_DVtD`enx(7s(yN2g}zH_adt_5!DcS@*XjUj01y%Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/Image.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/Image.cpython-312.pyc index aa2fa3b8ca9499b9f3a5c56bdf0cd1c7edaa03fb..6f349ff2aa3297259f733fa5d6578837a29a556c 100644 GIT binary patch delta 62 zcmex(f%E4DPVUpZyj%=G(6#C6M(&*)QbGC|`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 R*Erg*aWHPb#=$f@9stLr7Ht3k delta 54 zcmex)f%D@9PVUpZyj%=GQ2XY}M(&*)LSFhA`MIh3>3J3UE~&-YCHV!-_c+?`aWHPb J$H6o^9sn>a6nX#v diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageChops.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageChops.cpython-312.pyc index 20f73436974650a96df8a3e65380ac34c46fbfbf..57aad57b892fe6389513f568cffc20cd76c12a32 100644 GIT binary patch delta 52 zcmZ1&yfT>kG%qg~0}ym=y1J2j1*25Benx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?a$ GchmvG`4Q3p delta 44 ycmZ1(yfB#iG%qg~0}#}{xw4Ua1*4F^enx(7s(yN2g}zH_adt_5!RE7!chmt%7!S_? diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageCms.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageCms.cpython-312.pyc index bd553e98993a8f3b743d05eb814d42923469437d..417d0873fec26a4f1577a715cee7b12bd3b216b7 100644 GIT binary patch delta 54 zcmX@KmFd)0ChpU`yj%=G(6#C6M(#jfsZjll{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IdAuRL0PlVhA^-pY delta 46 zcmX@LmFdt{ChpU`yj%=GQ2XY}M(#jfAz%HB{M=Oi^t=jvm(=3ylKg_rWxOH10B^kz A9{>OV diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageColor.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageColor.cpython-312.pyc index dbbeae153f18b46c26ce1fb8b146ed3109a2a9a8..de271b87e69f1ba39c983b1160658ee1c6f57dd8 100644 GIT binary patch delta 52 zcmaDE`!SaLG%qg~0}ym=y1J2DNKh(VKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|ulI GE?EH2KM_6v delta 44 ycmewu`!bgMG%qg~0}#}{xw4U4NKnXMKO;XkRX;tiLf<8|IJ+djV6(a4E?EFnZVx*E diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageDraw.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageDraw.cpython-312.pyc index 987c5f61197a3c2eada1ba05be1236b6e2938112..c56fb3ddbd17ea2c687d2af5ef4b8a51290e1c1c 100644 GIT binary patch delta 54 zcmeypfT?*Q6ZdIeUM>b8=-PC3BX>2sRG5B7er~FMdR~RTOKNd;Nq&L8yI+KExU19V I8SIZc0PDIEz5oCK delta 46 zcmZo($n<*w6ZdIeUM>b8sC{!~BX>2ske_}=er~FMdR~RTOKNd;Nq)iR1?-PI0BZ~o Ay8r+H diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageDraw2.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageDraw2.cpython-312.pyc index 63eb48d7915c50c9e3c3ea238374cc5b392a83fd..a6892790063c9806e04df85bf4fcd2608de96fed 100644 GIT binary patch delta 52 zcmZp+>$c-Q&CAQh00do|u5RQuWReQk&&bbB)lbi>(055K&MwI>(0BKX&<%HW+U&=) GRR#c@@(@k{ delta 44 ycmeCSYqsM)&CAQh00gyfu59EsWD@e%&&bbB)lbi>(055K&MwI>*c`^RRR#bl@eWG> diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageEnhance.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageEnhance.cpython-312.pyc index b3ae473e96e2063dcc7e93e5e0fedfb4d0c3f21d..af315a222dd3a9f32c5ef7e155d0f57533ca9454 100644 GIT binary patch delta 52 zcmcbq`cReoG%qg~0}ym=y1J1&i&-jCKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Vs G5I+FDcM#41 delta 44 ycmaE;dQ+AAG%qg~0}#}{xw4Tvi&-d8KO;XkRX;tiLf<8|IJ+djU~@ln5I+D!#tzE> diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageFile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageFile.cpython-312.pyc index b26bd52ee6db4cf61ea1aeffe26951d9d66562b6..0667262aa597f09df3d89b3e0ac1c5893aecc725 100644 GIT binary patch delta 54 zcmeCY!8q{-Bll@uUM>b8=-PC3Bey%VRG5B7er~FMdR~RTOKNd;Nq&L8yI+KExU19V I6y~KF0ON%b`2YX_ delta 46 zcmbPugR%1lBll@uUM>b8sC{!~Bey%Vke_}=er~FMdR~RTOKNd;Nq)iR9Ok7N0AqsR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I%bBtR0Nj`n+W-In delta 46 zcmbQWjB(O3M()$Ryj%=GQ2XY}M(!>qp#c4i{M=Oi^t=jvm(=3ylKg_r>zT3x0AEiJ A*Z=?k diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageFont.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageFont.cpython-312.pyc index 2503c2f87b5d2487d997a9152f29647214ae7547..b6714a57aa45ef7a3f70fa8aadc1caeac55554b6 100644 GIT binary patch delta 53 zcmZ4bo_XziX71Cxyj%=G(6#C6LT)ChF#U}D+*JMayb67n)Z*-t`~rPb4 GT*?6BsS(lu delta 44 ycmewy{5qKXG%qg~0}#}{xw4V_2%C_&~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageOps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageOps.cpython-312.pyc index a19ae32f00d81fc3eb79185805bec77d4cc5666f..db95d3cdb9bdf445cb2ca462effe816a1eb59494 100644 GIT binary patch delta 54 zcmeA>$2jdABll@uUM>b8=-PC3Bey2ARH%MNer~FMdR~RTOKNd;Nq&L8yI+KExU17< IH|7(`0Npwf&;S4c delta 46 zcmbPsjb8sC{!~Bey2AkgtA5er~FMdR~RTOKNd;Nq)g*Kjst30AR@v A%>V!Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImagePalette.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImagePalette.cpython-312.pyc index e290383a8052aec0a824aa0e46c549d6cee0cfc4..ba11d005a8751ffafa2c44051b72cfb87cb25d8a 100644 GIT binary patch delta 52 zcmaDA@+pM-G%qg~0}ym=y1J2@n?)*8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o24 GlNtcXnh==) delta 44 ycmewq@+yS;G%qg~0}#}{xw4U)n?)#4KO;XkRX;tiLf<8|IJ+djV6y>>lNta{*$$Qf diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImagePath.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImagePath.cpython-312.pyc index acf96d85a2cf4bce5377a73ed5c628ba6a8d3b50..692fabe66633563f4faa362f39dfbbb74505fc38 100644 GIT binary patch delta 49 zcmbQsw3LbaG%qg~0}ym=x;l}&Un)#LBR@A)KRvHP-zBv;yClCr-`y`lH{8`};+jGL Da#Ii= delta 41 vcmZ3=G?$6{G%qg~0}#}{xiXQvU&v2CBR@A)KRvHP-zBv;yClD0;+8@H19T1? diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageQt.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageQt.cpython-312.pyc index 63f75e47c91e50036a2d62ce3158cbb6ac9de1ab..b48b40c91a17d4cdcf7edb687010de957d622e12 100644 GIT binary patch delta 52 zcmexm-ekdjnwOW00SLM_UERp7#3U7>pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAr3% Gwbenx(7s(yN2g}zH_adt_5!REhANgM!7CJ&7O diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageShow.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageShow.cpython-312.pyc index 5d2bbb5af5b6180cd25fd99bc1d75a13dc78538b..fff4665b6964964b800e8112d721a6df49242c2b 100644 GIT binary patch delta 52 zcmaDH`8tyOG%qg~0}ym=y1J3Om|ZGNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zg3 GU{wIuWD$4( delta 44 ycmaDI`8bmMG%qg~0}#}{xw4VFm|e(EKO;XkRX;tiLf<8|IJ+djVDk+2U{wHGgAa88 diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageStat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageStat.cpython-312.pyc index f4e5a496d9ca7a985c98499486ba6f5ff300b30e..5794cc64db4b35884a6e87422cb6ea4c20f3cca4 100644 GIT binary patch delta 52 zcmbQMzf_<5G%qg~0}ym=y1J4343kutenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>~< GTSNf3OA(L& delta 44 ycmZ3gKUbgoG%qg~0}#}{xw4V_43m(benx(7s(yN2g}zH_adt_5!RC)lTSNdq$`6eI diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageTk.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageTk.cpython-312.pyc index 707b65e96a81a80e37576d620e25c27727e10b4c..48ef97b136697c4cf93a7f5745162da47eabebb3 100644 GIT binary patch delta 52 zcmcZ=@F;-$G%qg~0}ym=y1J3ulu0T?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$-0 GhZ+FIj}U?Y delta 44 ycmaD9a4UfOG%qg~0}#}{xw4Vllu5`(KO;XkRX;tiLf<8|IJ+djU~?1`hZ+D&_6~ml diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageTransform.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageTransform.cpython-312.pyc index 491588ddee4203899d11e28d4012442f8f41baa6..232c9eacb32ab116ba24d1ebb18e6d404e9285a0 100644 GIT binary patch delta 52 zcmcaCe_NjWG%qg~0}ym=y1J1&h*2t9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&ef G3LgNqL=cq# delta 44 ycmcaDe_5XUG%qg~0}#}{xw4Tvh*2n5KO;XkRX;tiLf<8|IJ+djU~@TR3LgMI6AqF9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageWin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImageWin.cpython-312.pyc index 082232f2348175cdde2752137f6565eb26ace0c1..3932ee1bea237fc921c3d55c98c5fb664056dc2c 100644 GIT binary patch delta 52 zcmZ1$ye^pgG%qg~0}ym=y1J435~Eb8enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_Y# G+tmTes}czS delta 44 ycmZ1%yeydeG%qg~0}#}{xw4V_5~Gl>enx(7s(yN2g}zH_adt_5!RGIb+tmS2IuHf` diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-312.pyc index d862323d71a68b4d6b9f7397db1b9f6a7c5c989e..ceeced54c3c9afdde544f8257bfd5d2b9944bef2 100644 GIT binary patch delta 52 zcmca8bW@1?G%qg~0}ym=y1J436{}RVenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`I%y GFJ=J3NDzwv delta 44 ycmca9bWw==G%qg~0}#}{xw4V_6{}FNenx(7s(yN2g}zH_adt_5!DfCoFJ=HoCk}`J diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-312.pyc index 6e3fecf9b38ccab2e904032a004fd004e3457c5f..66a41e4e7c3da1318346bcad526ee515afc7598a 100644 GIT binary patch delta 52 zcmZ2)x808WG%qg~0}ym=y1J2@g-I$#KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o~| GpDX~U8V{=g delta 44 ycmdmPx89EXG%qg~0}#}{xw4U)g-IwxKO;XkRX;tiLf<8|IJ+djV6!F@pDX|}nGL7_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-312.pyc index 3a41d015a6fceb77fdba84ba98c1ae82976efc77..2a0db99e69c86da85c30d63f3d91748ecaf465b9 100644 GIT binary patch delta 52 zcmX?7ex{uJG%qg~0}ym=y1J1&lvyfHKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$>C GkOctJ#}P~b delta 44 ycmX?8ex#iHG%qg~0}#}{xw4TvlvyZDKO;XkRX;tiLf<8|IJ+djU~?67kOcr%#t%sV diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-312.pyc index 718af2a891981d23cbd1e806dcab346e359caf50..ae32332434d9582fe12e7c119140777ebf4b15ac 100644 GIT binary patch delta 54 zcmaF#f$`M`M()$Ryj%=G(6#C6M($m#QZf1&`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jud{X+0RSVX6T1Ka delta 46 zcmaF$f$`A?M()$Ryj%=GQ2XY}M($m#LLvGY`MIh3>3J3UE~&-YCHV!L@3VFn0RWo! B5x4*V diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/JpegPresets.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/JpegPresets.cpython-312.pyc index b025eac419c833d7df47950daad7a13b183d1f00..81d3f65b8b2b2dfd4b2f3b3c17ef6438be626e7c 100644 GIT binary patch delta 52 zcmZp+@3!YY&CAQh00do|u5RRJmXnIm&&bbB)lbi>(055K&MwI>(0BKX&<%HW+N>a# G%m@IP(htA@ delta 44 ycmeCSZ?@+?&CAQh00gyfu59FHmJ(055K&MwI>*sLL!%m@G{Ne#UK diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-312.pyc index ed01fa90ec85ec76b2c606bcb71640be80066c4a..cd2201d03853c9e997bc4896d13252a2f4144878 100644 GIT binary patch delta 52 zcmaFG|B0XbG%qg~0}ym=y1J2DoKY%HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oCA GHZ}mTWe|D* delta 44 ycmeyw|B9dcG%qg~0}#}{xw4U4oKYxDKO;XkRX;tiLf<8|IJ+djV6zS5HZ}k{gbsHA diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MicImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MicImagePlugin.cpython-312.pyc index d58327c97b452e24dbde43e4ba1ff93f89e75fd4..ccff14dfafb44586a018570517cdb10953facbb8 100644 GIT binary patch delta 52 zcmZpY?vmy{&CAQh00do|u5RS6W|WH7&&bbB)lbi>(055K&MwI>(0BKX&<%HW+B}2t G6*mByjS#>9 delta 44 ycmeB@Zj$Cc&CAQh00gyfu59G4W)uq6&&bbB)lbi>(055K&MwI>*t~%86*mAUWDdOm diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-312.pyc index c8183424aecfb89657c2781a869395aa645f0639..7855016d33df17b0e32e360c17f1915cf765795d 100644 GIT binary patch delta 52 zcmbOwxk!@xG%qg~0}ym=y1J2DmPsl`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|okm G0v7<3j}NE- delta 44 ycmZ1^IZKlJG%qg~0}#}{xw4U4mPsf?KO;XkRX;tiLf<8|IJ+djV6zib0v7-x<_)C) diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-312.pyc index b35c7530a8a069b422a2bb21430441a49f8ce088..83a126bbb58d82d4ae02528e05f787204bb3a4bd 100644 GIT binary patch delta 52 zcmZp4=yc#d&CAQh00do|u5RS6WRi;3&&bbB)lbi>(055K&MwI>(0BKX&<%HW+B}UZ GTNVJPhY*(055K&MwI>*gTIZTNVH^CJvSW diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MspImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/MspImagePlugin.cpython-312.pyc index 6e2b8b98e9d17de94a63f6808a40628305e8e239..466b6e9ca1999b6fe7546cd02979f68375a5bd10 100644 GIT binary patch delta 52 zcmaE$^+JpLG%qg~0}ym=y1J2DmPsmFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|olR GnlJ#ijSwUN delta 44 ycmaE%^+1dJG%qg~0}#}{xw4U4mPsgBKO;XkRX;tiLf<8|IJ+djV6zjGnlJ!Ad=4Q1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PSDraw.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PSDraw.cpython-312.pyc index 916a36947a30d43b360c71b72cb985241f872502..634351a85e20d25753072782298ee842b3bd35b3 100644 GIT binary patch delta 52 zcmbPWJ;R#&G%qg~0}ym=y1J1&nMo>GKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$XU GfHVN6nGhTR delta 44 ycmbPXJ;9p$G%qg~0}#}{xw4TvnMuf7KO;XkRX;tiLf<8|IJ+djU~>nPfHVLxhz=P5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PaletteFile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PaletteFile.cpython-312.pyc index 5d1aa01ef36fed70419b0d8a5b967f9365adeec3..49b26757dabc4524404a2f6a07c4c4d1313420dd 100644 GIT binary patch delta 52 zcmaFQ`<<8jG%qg~0}ym=y1J2jH?vfPenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-q@ G;>-ZZKoKMW delta 44 ycmey)`<|EkG%qg~0}#}{xw4UaH?vTHenx(7s(yN2g}zH_adt_5!R80d;>-X|FApIA diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-312.pyc index 0c29db99afb2281d9665716671d76a7bb9140207..3357edb8656f43ad5cd9b25a20cf016424ea567e 100644 GIT binary patch delta 52 zcmX@^dES%zG%qg~0}ym=y1J43xR6wgenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;2a Gj|BnM#u8uv delta 44 ycmX@_dEArxG%qg~0}#}{xw4V_xR6kYenx(7s(yN2g}zH_adt_5!R9wYj|Bl(eGpv$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-312.pyc index 2fdda711f73b60704e320d41f2328e7e952d11ed..46591aa778f2eca87861cb8c777e7e063e669173 100644 GIT binary patch delta 52 zcmX@YcZQGqG%qg~0}ym=y1J3Ogjp(DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4b$p G&CCFPW GLdpQp>=8`> delta 44 ycmccZdD)ZuG%qg~0}#}{xw4Ua38PSeenx(7s(yN2g}zH_adt_5!RC{ULdpPCqYp{| diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-312.pyc index a26caf293fe931290cbd6ce55395abac22bdba7a..23e0cd10f0b26b24aae5904364c5b788b4b2e0cd 100644 GIT binary patch delta 52 zcmexk)?&_mnwOW00SLM_UERoC%On-8pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0RcO GBMAV#QxSFm delta 44 ycmZoM|6|5|nwOW00SIc}T-nH7%On)6pOK%Ns-K=$q3@DfoL!P%uz3;FBMAUQybp5# diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-312.pyc index 016c564e176a6c3a15c148eb15fbf1f2fdac055b..20635ce0dd958f58296957027432b8d67d5fd0f6 100644 GIT binary patch delta 52 zcmeBopYG0mnwOW00SLM_UERoinNccQKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zoh G`HBF&dl9Vw delta 44 ycmbR4-tW$RnwOW00SIc}T-nHdnNcWMKO;XkRX;tiLf<8|IJ+djVDk^g`HBEU0uQPH diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PdfParser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PdfParser.cpython-312.pyc index 6ea399f4d6a50a6dc2a0f9f6c6f404beaefc2362..6c4c375097c3042ddaae0340579fef80608b05f3 100644 GIT binary patch delta 54 zcmccF$o#O8nfo*^FBbz4bZxr2kz0^iDoj5kKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb I9`owG0NQ&I-T(jq delta 46 zcmaFZ$b7Srnfo*^FBbz4)V{g0kz0^i$WK2bKQ~oBJ+DIFCAB!aB)?#@8T0DB0A9im A+W-In diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-312.pyc index 2e6c69928889a0255aa9ad074905f4f3423e3cbd..1fccbf7416aa37959d1e41b6cc690e1febab3691 100644 GIT binary patch delta 52 zcmcc5`<$2iG%qg~0}ym=y1J1&l2IyFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%E4 GCMy86O%Rm; delta 44 ycmaFPd!Lv4G%qg~0}#}{xw4Tvl2IsBKO;XkRX;tiLf<8|IJ+djU~?T~CMy6vG!Bvg diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PngImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PngImagePlugin.cpython-312.pyc index f8cf6f5bb0c75f7c06e916cd9f85ebaf49166ae2..779c9a41bde553d7e86ec4a81ddc96249ced1459 100644 GIT binary patch delta 54 zcmbQbgL&=_X71Cxyj%=G(6#C6M($Z`QqlSu`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jx3k4v1pw)j6086K delta 46 zcmbQcgL&!>X71Cxyj%=GQ2XY}M($Z`Lc#hO`MIh3>3J3UE~&-YCHV!L_p`-a1psOy B5UBtF diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-312.pyc index b833c7a394845dc1d6b4ebecb3f113dd3265ad09..687e18cae767cac6f456e1cd2a04e1cb97a199fa 100644 GIT binary patch delta 52 zcmdmzyeFCaG%qg~0}ym=y1J1&oLMSbKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$p) GgB}3HSP(#gB}1%pAO~# diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-312.pyc index c58402d061aecaa2fa733c98eb77a0e8d5f89082..a2a298e0903f79a2fde3709b0d3bfba0dcfed2a4 100644 GIT binary patch delta 52 zcmZ4Bw!)43G%qg~0}ym=y1J43D3esQenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8Jenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GjI Gx8?x)UJ`Zy delta 44 ycmexe`?;3;G%qg~0}#}{xw4V_C7Y11enx(7s(yN2g}zH_adt_5!Dc@8x8?wLoe*;X diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-312.pyc index 9065e154c4929af1e6e1504c1ccee20569afcbd8..15f016ce8415e9dfc65a8c7f51c0bee7ed5c3b3a 100644 GIT binary patch delta 52 zcmca?aNB_UG%qg~0}ym=y1J43B%@Tcenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=Q4 Gxncm#tP!>V delta 44 ycmca@aM^(SG%qg~0}#}{xw4V_B%@HUenx(7s(yN2g}zH_adt_5!RB|2xnclOvk$WX diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-312.pyc index cad7e344ce77db3ac0d3abca67df51b92f81399c..beab7f84d3e2aee5ee4dcdd23402c49325f1471c 100644 GIT binary patch delta 52 zcmca*`^c92G%qg~0}ym=y1J2jI+Ikienx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;Kq GYBB)Lx)D17 delta 44 ycmaE4d&`#lG%qg~0}#}{xw4UaI+IYaenx(7s(yN2g}zH_adt_5!R9?oYBB&)2@f~` diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-312.pyc index ee60c4f485f39d5cb141805d279caf6f0ba1d214..2a558faed131e3044a7b4f8e31b45303ec3a354a 100644 GIT binary patch delta 52 zcmZ1!xhj(TG%qg~0}ym=y1J2Dl~pQEKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oe+ Gf;s@Qwh(Oq delta 44 ycmZ1#xhRtRG%qg~0}#}{xw4U4l~pKAKO;XkRX;tiLf<8|IJ+djV6zu%f;s>^B@Su; diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/SunImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/SunImagePlugin.cpython-312.pyc index a562a80c9f03560751967a0378ac145b8bf72de3..16cc782ee6b8c78f10d51481245bdf75522662cf 100644 GIT binary patch delta 52 zcmca9@lb;MG%qg~0}ym=y1J2jE~8Ymenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<`_ G^SJ=PfDvE- delta 44 ycmaDTaZ`f(G%qg~0}#}{xw4UaE~8Meenx(7s(yN2g}zH_adt_5!RAAZ^SJ;=2M=8U diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TarIO.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TarIO.cpython-312.pyc index 0568fe64fb026ce4feefea7ea6d36f157264d282..094d91771a15b6847930fc4d838c414ef6148b0f 100644 GIT binary patch delta 52 zcmX>vcwLbDG%qg~0}ym=y1J439E((tenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^MK GPnZF~<`LTf delta 44 ycmcaEcwUhEG%qg~0}#}{xw4V_9E*^benx(7s(yN2g}zH_adt_5!RF5_PnZEmB@fsD diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-312.pyc index f256ea6cfa9d8f1801f32de5a7252b16dfb2a25f..0507211e92a13c59290d1fbce2001c1203dda2fc 100644 GIT binary patch delta 52 zcmca*^~j3*G%qg~0}ym=y1J43371r~enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H8Q GNFe~#dl3l$ delta 44 ycmaE4b<2wTG%qg~0}#}{xw4V_371f?enx(7s(yN2g}zH_adt_5!DdeGNFe}MQV#|I diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-312.pyc index 7ca992f8837591050c3cebe55ede580fdf3ac4ea..fd682f5b4f99f0e45ebb2d8bef02a63b46487125 100644 GIT binary patch delta 58 zcmbPmo^{4~R_@chyj%=G(6#C6Ms9U6sTlo?{M=Oi^t=jvm(=3ylKcXFcfSbTa95{h M7qRUwVvIh404e?wTL1t6 delta 50 zcmbPno^`@`R_@chyj%=GQ2XY}Ms9U6p%DFy{M=Oi^t=jvm(=3ylKg^ZAF=H|VvIh4 E0HkUVU;qFB diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TiffTags.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/TiffTags.cpython-312.pyc index d0a22df4b4f84b34291a2eeff73994b84d2a5956..7eec8e191059233f70001a05e5d377a0ad56cf58 100644 GIT binary patch delta 54 zcmeC^Vw}*$$bFiZmx}=ix;9r4-7i8n+|_CG I7d{a)0NFDU%>V!Z delta 46 zcmbQx#n{os$bFiZmx}=iYTsPh$bFqp$X7ojKQ~oBJ+DIFCAB!aB)?$uA3hN?09%?5 A$^ZZW diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/WalImageFile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/WalImageFile.cpython-312.pyc index b91211ca8eae0c17c0f694ea9522abe4188a40ab..411422358e485b9428d815e38d1ea097223b4a94 100644 GIT binary patch delta 52 zcmew%+aSk%nwOW00SLM_UERp7#wr!5pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq<; GD<=S?(hybv delta 44 ycmZpW`ytDHnwOW00SIc}T-nI2#wrx3pOK%Ns-K=$q3@DfoL!P%u-Th+D<=RiyAD$T diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-312.pyc index 9a95899c50279cb26a4e8e8042f665f97eafc754..24204e6f2b92cf9f4acacdfe403f1a093be3e8df 100644 GIT binary patch delta 52 zcmX?^e=(o?G%qg~0}ym=y1J43KC@Jeenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;?S GXN>{o)Dq4B delta 44 ycmcbZe=?u@G%qg~0}#}{xw4V_KC@7Wenx(7s(yN2g}zH_adt_5!Dbegv&H~o#t+N@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-312.pyc index ef28b4f76042d53fcdae6f6964db21553540f6f1..2218eb6e79fc7693d7eddb2300abaf2a9456a599 100644 GIT binary patch delta 52 zcmaE&^G1jJG%qg~0}ym=y1J3Onn@~JKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z%G GGr|DKEfJCc delta 44 ycmaE(^F)XHG%qg~0}#}{xw4VFnn@^FKO;XkRX;tiLf<8|IJ+djVDkc|Gr|B(%ny$M diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-312.pyc index 8ab7b4274d82e95754aec6eabc3b0dc517b3e571..c9d543101895f6aa58f1d387618e6d5be822fa47 100644 GIT binary patch delta 52 zcmaDW^i_!aG%qg~0}ym=y1J2Dh)F75KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|q0) G9XkNASr7;S delta 44 ycmew=^j3)bG%qg~0}#}{xw4U4h)F11KO;XkRX;tiLf<8|IJ+djV6!=s9XkL!Fb)L( diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-312.pyc index da09758371e262fff2ed51ab92b66ab700e67bca..28f5f700fed33d9f4a7db7ee14ed253329f77cff 100644 GIT binary patch delta 52 zcmZ1?yGEA#G%qg~0}ym=y1J2@omnbcKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oD* G12+Jd9S^zy delta 44 ycmZ1@yF`}zG%qg~0}#}{xw4U)omnVYKO;XkRX;tiLf<8|IJ+djV6zT$12+IAL=Cq9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-312.pyc index 4fa1abcc4fdba045bcdb9b0bd66468ee363bca7e..14390eb05151edbab15e09216964ed9cf17419e5 100644 GIT binary patch delta 52 zcmaDZ|6ZQ^G%qg~0}ym=y1J2@iAgG2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p`j G30?rQM-YMl delta 44 ycmaDa|6HE?G%qg~0}#}{xw4U)iAg9}KO;XkRX;tiLf<8|IJ+djV6!^Y30?p^P7Z$n diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/__init__.cpython-312.pyc index 9b7deb515ee1455afbdd22c3cad8482cb8694f94..0d3f132f181f457901de4e6823b83ea95cd96e99 100644 GIT binary patch delta 51 zcmdnYznh=?G%qg~0}ym=y1J2j9-CCCenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8yT3 FKLDJ`5jOw; delta 43 xcmdnZznP!=G%qg~0}#}{xw4Ua9-EM_enx(7s(yN2g}zH_adt_5!Q{hiKL9904>SM( diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/__main__.cpython-312.pyc index fb1c693106102e5406c39494e7258f4790591a74..438e6e8f0e2e2c9b1d681357ac59c694c60a5b4b 100644 GIT binary patch delta 49 zcmaFE_=S=CG%qg~0}ym=x;l|NQz}$HBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vp|#j DiiZ$m delta 41 vcmeyu_=b`DG%qg~0}#}{xiXPEQ^;38BR@A)KRvHP-zBv;yClD0VqY2n7yu4n diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_binary.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_binary.cpython-312.pyc index a45112891209e17598a6303556a6032c46a2dd30..74495eefb094fc91b7a997d2c0e836f0eb7b9996 100644 GIT binary patch delta 52 zcmX>veqEgVG%qg~0}ym=y1J3ui%}{>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Sb G1{VOXhY)4} delta 44 ycmcaEeqNmWG%qg~0}#}{xw4Vli&4l&KO;XkRX;tiLf<8|IJ+djU~@iW1{VN0jt*l0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_deprecate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_deprecate.cpython-312.pyc index be3229da23b2d46f31450116d48073a681de3d28..684465260af6b2efdf03325f127882d2a362bda2 100644 GIT binary patch delta 52 zcmbOwyhxb)G%qg~0}ym=y1J3um|ZGdKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$O( G7ZU)LU=ObV delta 44 ycmZ1^JWH7SG%qg~0}#}{xw4Vlm|e(UKO;XkRX;tiLf<8|IJ+djU~>e!7ZU&@XAP_X diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_tkinter_finder.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_tkinter_finder.cpython-312.pyc index a5c7ee6d1a960627ec5a1acee4cda67d7901ab13..e26e763d302527630e8ec961cb51aefaf051f0a6 100644 GIT binary patch delta 51 zcmdnMx`UPbG%qg~0}ym=y1J2jFQZh9enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8t!> F*8rR=5jFq- delta 43 xcmdnNx`CDZG%qg~0}#}{xw4UaFQZV1enx(7s(yN2g}zH_adt_5!Q@Ab*8nGN4>JG& diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_util.cpython-312.pyc index 6e29dd50c9f250a17211af655db4280182dd28ef..3354c8ab535ad82a5d0facc20aed717e6f60e248 100644 GIT binary patch delta 51 zcmX@fd6AR*G%qg~0}ym=x;l~jxm1vTMt*LpetKSozDsIxc1eDLzPn$9Zn&${W){Yy F%mA;F5UT(H delta 43 xcmcb}d6JX+G%qg~0}#}{xiXRaxsaEBMt*LpetKSozDsIxc1eE0W*)|)%m6ms4yXVC diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/_version.cpython-312.pyc index 5f09ba35168cc791b5a837a412ddd7606096a1a9..8d3e13979faf33cc7ad42169893179821771cbea 100644 GIT binary patch delta 49 zcmX@fc#)C&G%qg~0}ym=x;l~DQz}$HBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vp=i) Dc|;G| delta 41 vcmcb}c#@I(G%qg~0}#}{xiXR4Q^;38BR@A)KRvHP-zBv;yClD0VqP);3GEHn diff --git a/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/features.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/PIL/__pycache__/features.cpython-312.pyc index d736c635764b70216c44efed2dd6f05b936df625..8ac64ac80d3774df6d039b0c2e4dfbd6ffa768db 100644 GIT binary patch delta 52 zcmaDH|2m%gG%qg~0}ym=y1J3ui$y9_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&SD GjWz(&a}inq delta 44 ycmaDI|2UreG%qg~0}#}{xw4Vli$%y+KO;XkRX;tiLf<8|IJ+djU~@i8jWz&Rnh#e1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/__pycache__/click_plugins.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/__pycache__/click_plugins.cpython-312.pyc index 932aa34c1fa9fb17b370ba95933255ed183a2e2c..2c848b72bb53cb651f5d632f85da4bf5f87239a6 100644 GIT binary patch delta 52 zcmca>{?wfNG%qg~0}%9Vy1J2jH?LHfenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-qz Gtb72{+Yw;^ delta 44 ycmaEAe%GA)G%qg~0}wR4xw4UaH?NSNenx(7s(yN2g}zH_adt_5!R80Ntb71g84q6o diff --git a/gnx-react/venv/lib/python3.12/site-packages/__pycache__/decouple.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/__pycache__/decouple.cpython-312.pyc index c4d319773a50b3758ed0c64303569b7dec164161..5d1c3e854bc4a753d1597271492df852f02e574a 100644 GIT binary patch delta 52 zcmcan{GgcoG%qg~0}ym>y1J2jFOyWDenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<=D G|I7gB7ZTP0 delta 44 ycmaD*e508AG%qg~0}#}_xw4UaFO!g`enx(7s(yN2g}zH_adt_5!RALy|I7erP7u=o diff --git a/gnx-react/venv/lib/python3.12/site-packages/__pycache__/inflection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/__pycache__/inflection.cpython-312.pyc index 6ae610cd7a5faa61b623ffd7870ad9527dfeac1e..21acc64831188d25e28c496decc46f7af96d0c25 100644 GIT binary patch delta 52 zcmdm8dbpJPG%qg~0}ym=y1J3uNI)uBKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|umT GjursP+z|@^ delta 44 ycmX?Hy1SJ7G%qg~0}#x7du1cHk${l5enx(7s(yN2g}zH_adt_5!RBy*94!D-6%Qo< diff --git a/gnx-react/venv/lib/python3.12/site-packages/__pycache__/six.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/__pycache__/six.cpython-312.pyc index 44cabbf4f9f793993caf1673ef80ebf46e28364e..c8c4113a5966bdcb19ac85d47174bc4316656646 100644 GIT binary patch delta 54 zcmdmanCakQChpU`yj%=G(7EaAM(&F;Qa<__`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J-^rYA0RRR;6RrRN delta 46 zcmX?jm}%!>ChpU`yj%=GQ2XY}M(&F;LN59l`MIh3>3J3UE~&-YCHV!Lzsa0#0RVy+ B5v%|J diff --git a/gnx-react/venv/lib/python3.12/site-packages/_distutils_hack/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/_distutils_hack/__pycache__/__init__.cpython-312.pyc index 078a65e7174ab13c93e78d2e038fd2b9b0e498d0..837107a2713f13a51838613414a273e896a812c7 100644 GIT binary patch delta 52 zcmaDJ^gf9DG%qg~0}%Y$baf;5HfE_r{fzwFRQ>e43VoN<;_QFt|@`)0x delta 44 zcmaDK^gM|BG%qg~0}z~jdu1c{HfEtn{fzwFRQ>e43VoN<;_QFt|Y(@}@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/_distutils_hack/__pycache__/override.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/_distutils_hack/__pycache__/override.cpython-312.pyc index 6399b784abc39f9581102636e9f06f77a4269ebe..6b5f306a0f4bb2d9c208653fe3af3c2b48027ee3 100644 GIT binary patch delta 49 zcmbQww490iG%qg~0}%Y$baf(kn^dBHMt*LpetKSozDsIxc1eDLzPn$9Zn&${#KkoL Dg7grV delta 41 vcmZ3^G@pt4G%qg~0}z~jdu1Ybn^2^FMt*LpetKSozDsIxc1eE0#MLzb4FC>x diff --git a/gnx-react/venv/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/_yaml/__pycache__/__init__.cpython-312.pyc index 10ced6c426d8c397c20088c167c57e5aa192e788..b994e71fe5cce22d98bbd5c1e1e5f0485747bc4e 100644 GIT binary patch delta 51 zcmcb`_K1!9G%qg~0}ym=y1J3Ol1VCDKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4S9t FBLJe`5bpp0 delta 43 xcmaFFc8iVsG%qg~0}#x7du1bcC6kc9enx(7s(yN2g}zH_adt_5!Q^>NM*uMv4+#JO diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/__init__.cpython-312.pyc index 49156e999315fd56c32e1d09b52ceb6b2a2672a8..5ce6974bf7257ac82912aa42e7d2e77857acbe8b 100644 GIT binary patch delta 52 zcmca8a8rQ$G%qg~0}%9Vy1J433!7A!enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G?- G2SxzGy%3H7 delta 44 ycmca9a8ZE!G%qg~0}wR4xw4V_3!9Lienx(7s(yN2g}zH_adt_5!DdNz2Sxx#n+}Ws diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/abstract_channel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/abstract_channel.cpython-312.pyc index 4f0d88d91841e15fdad35b1fe764a8dd32c0a765..ba1f0b20e8cc815c0da6d552f2adba85f1baf087 100644 GIT binary patch delta 52 zcmZoP=rrIy&CAQh00cdou5RQ`Vv&l|&&bbB)lbi>(055K&MwI>(0BKX&<%HW+FZ}l GBn$wa^blbH delta 44 ycmeA)Xf)tH&CAQh00a$hu59E^Vi5|{&&bbB)lbi>(055K&MwI>*xb(2Bn$v6G7et= diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/basic_message.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/basic_message.cpython-312.pyc index d62d6a471fd7d5c7e41f106df9fbd81e2b252243..7fd727f7320b08f1b67cc4a680feef80e56275dd 100644 GIT binary patch delta 52 zcmaDN`9_laG%qg~0}%9Vy1J2DgHtM6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pTm Gd}aW(PY{^^ delta 44 ycmaDO`9zZYG%qg~0}wR4xw4U4gHtG2KO;XkRX;tiLf<8|IJ+djV6!jhd}aVXjSiOp diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/channel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/channel.cpython-312.pyc index 7b7c74fee6285f58e12c440c2bf03b9161e33a85..84e66d4b0f14a108aafeb2b799ad356d7df47be6 100644 GIT binary patch delta 58 zcmcb0n&r`H7Vgu$yj%=G(6j04M($foQla`8`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 N-3J3UE~&-YCHV!-|CzS`XJUM; F1OVDM6Dt4! diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/connection.cpython-312.pyc index d20b25c5328da344aaa542c2d3e814eda09309d2..2f7a46608c6ccceebabda9e65d39d91e7f6a9b12 100644 GIT binary patch delta 54 zcmZ4VnsL=@M()$Ryj%=G(6j04M(zq`sR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IQ<-^-0Q?scDF6Tf delta 46 zcmZ4WnsL!nwOW00SJ0FUERo?&n^|ApOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7G}9 GNf`jNsu1x2 delta 44 ycmbOh))&TonwOW00SFr2T-nH-&n^_8pOK%Ns-K=$q3@DfoL!P%uz3o5lQIB3Xb$fH diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/method_framing.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/method_framing.cpython-312.pyc index 088677a69334253411b3eee55e2651c6becf5483..2da37e4af7202908d64ff51305f5dffac00b8ae6 100644 GIT binary patch delta 52 zcmX?TeA1ZvG%qg~0}%9Vy1J43Fq2e_enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8+?E G55)k;K@tT3 delta 44 ycmX?Ue9)NtG%qg~0}wR4xw4V_Fq2S-enx(7s(yN2g}zH_adt_5!R8lC55)jYXAlDb diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/platform.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/platform.cpython-312.pyc index c12cabad90f106667f79e750ebc7e3922c830e39..a7e02e47c10086d21554b54337082de3e80e10c5 100644 GIT binary patch delta 51 zcmZn_>lNcZ&CAQh00cdou5RRh!6Fr=pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w3wBZ F4FHr~51Rl0 delta 43 xcmeAbYZc=@&CAQh00a$hu59Ff!6M|RpOK%Ns-K=$q3@DfoL!P%u$Y&X4FDhw4VeG{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/protocol.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/protocol.cpython-312.pyc index ea86b5e6985e784664c48841e262b783e5e9092e..7769f4bf5b83eb116bcc2347b90d09570c65674a 100644 GIT binary patch delta 51 zcmcc4e4m;7G%qg~0}%9Vy1J3uh*2s`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g|K F2LP5~5EuXe delta 43 xcmcc5e4Uy5G%qg~0}wR4xw4Vlh*8K-KO;XkRX;tiLf<8|IJ+djU~)KP2LL1K4i*3a diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/sasl.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/sasl.cpython-312.pyc index f789d0119b072f37dc83d031baf7889a28184662..01ce2ae3a87b87d77c5048c7a831287ee44f752a 100644 GIT binary patch delta 52 zcmX@+c+QdgG%qg~0}%9Vy1J3Ol1VB^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bED G133V~D-h%W delta 44 ycmX@-c+8ReG%qg~0}wR4xw4VFl1a!*KO;XkRX;tiLf<8|IJ+djVDmgC133Ul!4Bd8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/serialization.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/serialization.cpython-312.pyc index 4b9ca5ec2c0a2b4b9f6ed943992e8231db4260d8..d913335ea6c60acd957b2d314d5186dc9ba8a338 100644 GIT binary patch delta 53 zcmcaHkMY4gM()$Ryj%=G(6j04LT+xUX#I@*+*JMayb67n)Z*-t`~rPz9smFU delta 46 zcmex#jPcbmM()$Ryj%=G(D3HUM(!dOA%Fdh{M=Oi^t=jvm(=3ylKg_r(^+oE0RV?% B5gY&j diff --git a/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/amqp/__pycache__/utils.cpython-312.pyc index 6a4d109d7e49110911e44b8c8992f941f626e98e..e8aabb4d0fa8c59c55e857579d33708d5bf9e287 100644 GIT binary patch delta 52 zcmZ1^yh@n+G%qg~0}%9Vy1J43ER$5Qenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8%NN Gl`sIjKoG?M delta 44 ycmaE$dqbD|G%qg~0}#}`xw4Vlky$7~KO;XkRX;tiLf<8|IJ+djU~?LCl`sHA4i3Wr diff --git a/gnx-react/venv/lib/python3.12/site-packages/asgiref/__pycache__/local.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/asgiref/__pycache__/local.cpython-312.pyc index deaf5994babb387f66ca05df709987611a9b47b8..1aaf0f8527e6e07bd36d14c5f87cbffda2f3d612 100644 GIT binary patch delta 52 zcmcbpcTG%qg~0}ym=y1J2jI+Ij{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;Kq G6_NnCwhenx(7s(yN2g}zH_adt_5!RGCZkEH-O$>? G5;FjmE)TB& delta 44 ycmbQkJB63~G%qg~0}#}`xw4TvlvyZ9KO;XkRX;tiLf<8|IJ+djU~?6-5;FiJ3=ORS diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/_ext.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/_ext.cpython-312.pyc index c75bc8447025d8bfcd3cba2be97fc5381bc429de..087e9eea0acd3689bcd1133c29a3c8abc7e9754c 100644 GIT binary patch delta 52 zcmX@Xd4ZGrG%qg~0}ym=y1J1&no%lDKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$c* G05brn(hxxa delta 44 ycmcb>d4iMsG%qg~0}#}`xw4Tvno-D4KO;XkRX;tiLf<8|IJ+djU~>aw05bqHuns=} diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/_win.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/_win.cpython-312.pyc index a6a07ab744ddc84cec414d0ab7e8044093c88a34..ba65da78d718d79305f1c7d1984564a590811aff 100644 GIT binary patch delta 52 zcmZ1{zfGR|G%qg~0}ym=y1J2Dgjp&~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o}7 GEe`;lFAwDa delta 44 ycmdlczfPX}G%qg~0}#}`xw4U4gjvW>KO;XkRX;tiLf<8|IJ+djV6!E2Ee`-Hbq(VH diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/common.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/common.cpython-312.pyc index 4054440c2ff5a523721cb61937a4d7361ecc5b16..c04b60d6acb1a1114c76b56bb795b25e1be621cb 100644 GIT binary patch delta 52 zcmbQEwM2{iG%qg~0}ym=y1J3OhFK~?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c3x GWE7 G6seKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw IEgRcv0O`UJ=Kufz delta 46 zcmeBv%+&mtiTgA!FBbz4)V;Z~kvoA+C`3OaKQ~oBJ+DIFCAB!aB)?#DD;wKt0BX1o Ar4-7i8n+|_Bb IEt|3f0OE5IAOHXW delta 46 zcmaFS!}y?wk^3|+FBbz4)V;Z~kz0XHC{RBmKQ~oBJ+DIFCAB!aB)?#@E1R+d0A(=` A9smFU diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/einfo.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/einfo.cpython-312.pyc index e735b6486ad08f801517a0c7412e9b8b700fcd21..4a4d76f2017f0bfa81c07fd5cd269be753ae5af4 100644 GIT binary patch delta 52 zcmccX_SB90G%qg~0}ym=y1J2j0gF_)enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@S_ G3*-RQh!Noc delta 44 ycmaFrcGr#jG%qg~0}#}`xw4Ua0gI5oenx(7s(yN2g}zH_adt_5!RDhZ3*-P-{tw>( diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/exceptions.cpython-312.pyc index 22146f64ff5d770a28b92a0d91918d4590cdc4d0..190f9f20d87fcfa4754b4e9230a8a933cd0fd5fa 100644 GIT binary patch delta 52 zcmew^@?V7eG%qg~0}ym=y1J43Dx*}4enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8| diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/forkserver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/forkserver.cpython-312.pyc index 8237b7e58ac442b5dd827ce956c78b87a0e139e9..14cf32dec5a8c7bf6a83c323d7f11c2de9531ee4 100644 GIT binary patch delta 52 zcmewm`y-b7G%qg~0}ym=y1J2j1G7|&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@0x G%Gvv@ePKG%qg~0}#}`xw4V_1dEWLenx(7s(yN2g}zH_adt_5!REItkvafc-4E{o diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/managers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/managers.cpython-312.pyc index 06fb2183ec45dd450c3730497ed63b82126b6ab0..a3d8067dc3b538ca0e2bdfb7519ae5ffe3280e77 100644 GIT binary patch delta 54 zcmaFAn)&-`X71Cxyj%=G(6#C6Ms5yHsVM!7{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Js+_0J008u|5{du- delta 46 zcmeyqn)&@|X71Cxyj%=GQ1|A_Ms5yHp&nb4`Z(G%qg~0}ym=y1J3On^7uBKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zxk GWjp}8>k&Qx delta 44 ycmca6b54f)G%qg~0}#}`xw4VFn^7oAKO;XkRX;tiLf<8|IJ+djVDkpXWjp{wSr0q_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/popen_spawn_posix.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/popen_spawn_posix.cpython-312.pyc index 8c311e241e1de30ee4dc669d87f3014ba45b9341..5a0af6c04293a4d06f6ba2554dc656c418128deb 100644 GIT binary patch delta 52 zcmdlYyGNG$G%qg~0}ym=y1J3Ok5MXFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d7E GPF?`9OAvPe delta 44 ycmdlZyG54!G%qg~0}#}`xw4VFk5MREKO;XkRX;tiLf<8|IJ+djVDn~1PF?^yDGqf2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/popen_spawn_win32.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/popen_spawn_win32.cpython-312.pyc index 8004555d994295b3dd430dde48a5a3d5f836af7e..9912135bca1a5bc86ccac1a99887cb981ee021d6 100644 GIT binary patch delta 52 zcmeCxnX1EmnwOW00SLM_UERoC%OsVopOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Ra& Gu`mFp6%dyI delta 44 ycmbQL)2qXMnwOW00SM~eT-nH7%On)7pOK%Ns-K=$q3@DfoL!P%uz3+vu`mEI^A42& diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/process.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/process.cpython-312.pyc index d4c75ada120ca3aeb2dbbbbd6b1ce999794cad42..18144a17c4fd53b112e01fe8b91bcb6474d8f0b5 100644 GIT binary patch delta 54 zcmZ3`!nmS^k^3|+FBbz4bZxr2k^3c+RHS}Jer~FMdR~RTOKNd;Nq&L8yI+KExU17< IHfAY%0NybX5dZ)H delta 46 zcmZ3{!nmM?k^3|+FBbz4)V;Z~k^3c+P@sNBer~FMdR~RTOKNd;Nq)g*K4vL<0AEKB A4*&oF diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/queues.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/queues.cpython-312.pyc index dd386a413355d5d009a5eb7f64fdab3784e0d3d8..de9a2f820f513f65c623318f77a48814fcaebf20 100644 GIT binary patch delta 54 zcmX>&lkwzCM()$Ryj%=G(6#C6M(#2;sR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IliBp#0Oz<7xBvhE delta 46 zcmX>(lkwn8M()$Ryj%=GQ1|A_M(#2;p#c4i{M=Oi^t=jvm(=3ylKg_rv)T0A0BG(H Awg3PC diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/reduction.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/reduction.cpython-312.pyc index 5fabb6abe3f0a0504129e57b3c12b856a82d20d5..f8ec6736e5671f03b337e5d9c162cf1b0d6717ac 100644 GIT binary patch delta 52 zcmbPOIJ1!ZG%qg~0}ym=y1J1&m`y5LKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Ra Gq7eYQco3oh delta 44 ycmbPPII)oXG%qg~0}#}`xw4Tvm`x~HKO;XkRX;tiLf<8|IJ+djU~>hVq7eW?HV&Ww diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/resource_sharer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/resource_sharer.cpython-312.pyc index 284727c5e42bd00d3f22afe6005de7e1746cd7ee..86c53729367fe1f6f0e1f8d48f658cda2dd53422 100644 GIT binary patch delta 52 zcmZ4Ew#AM6G%qg~0}ym=y1J43HIr1Lenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F84 G6$Jpu9}uDd delta 44 ycmdnuw#JS7G%qg~0}#}`xw4V_HIq=Jenx(7s(yN2g}zH_adt_5!Dazw6$JoH4Gy3H diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/semaphore_tracker.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/semaphore_tracker.cpython-312.pyc index 28830524915ef243d49de2bd12d873dfb4b8680a..5edb206e48decba63c610daf42cee32e845c4e6c 100644 GIT binary patch delta 52 zcmca?a@&OaG%qg~0}ym=y1J1&l}RdDKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$|P GMR5SaNfBiL delta 44 ycmca@a@mCYG%qg~0}#}`xw4Tvl}RXCKO;XkRX;tiLf<8|IJ+djU~?DKMR5R02M=Qa diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/sharedctypes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/sharedctypes.cpython-312.pyc index b7919cdab5bdfa83b9590c660fd84210fb0e1dff..7fee02fbb0c399a6d65ce8fae0416be4d4a7e822 100644 GIT binary patch delta 52 zcmaD6`5}_~G%qg~0}ym=y1J436SGvDenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`J5_ Gn;HP=wh{^e delta 44 ycmewm`6810G%qg~0}#}`xw4V_6SGj5enx(7s(yN2g}zH_adt_5!Dexmn;HOUj1UL_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/spawn.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/spawn.cpython-312.pyc index 5693dfeb81741d1e2448f9a0053122fdaa26241e..3c6dfe7740cbf625d0ae3a4aa745f56dfec98914 100644 GIT binary patch delta 52 zcmZpy=&ayA&CAQh00do|u5RRh&LS1ApOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w3&tV GuNeT!#}SbL delta 44 ycmeCIXsqBq&CAQh00eb!u59Ff&LZTmpOK%Ns-K=$q3@DfoL!P%u$hPTuNeSNr4Nq) diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/synchronize.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/synchronize.cpython-312.pyc index 97b649c3cb3d1a7352f80fa8e71721ab91e60e12..3d1267b4da414122f9e8d441b0bdb50fed65e712 100644 GIT binary patch delta 54 zcmbQTnsLr*M()$Ryj%=G(6#C6M($*0saXAt{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I4a_1z0NJ(?O#lD@ delta 46 zcmbQUnsLf%M()$Ryj%=GQ1|A_M($*0p-}yd{M=Oi^t=jvm(=3ylKg_r9n2y@09_;x AO8@`> diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/__pycache__/util.cpython-312.pyc index 0c078a54d905be1d6690ec05599d8403f528cc4e..bc093c363a298733077cfc0d33c2fecf6211cf46 100644 GIT binary patch delta 52 zcmZp1?Q!Kk&CAQh00do|u5RRZVUY^c&&bbB)lbi>(055K&MwI>(0BKX&<%HW+MLLu GEC&Fg?GN_= delta 44 ycmeBiZE@v3&CAQh00eb!u59FXVG;7v&&bbB)lbi>(055K&MwI>*qq6tEC&EB>kah) diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/dummy/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/dummy/__pycache__/__init__.cpython-312.pyc index 83b6164e9ea58c003ec2c8b0eca9e17425d37097..d70f9c74a7c18335373dc4d213125fb0b69d3c17 100644 GIT binary patch delta 52 zcmZ3hw^fh(G%qg~0}ym=y1J1&pG7J`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$+D GLLmUL&k*eZ delta 44 ycmdn0w^on)G%qg~0}#}`xw4TvpG7D_KO;XkRX;tiLf<8|IJ+djVDl7~g+c&31rF-~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/billiard/dummy/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/billiard/dummy/__pycache__/connection.cpython-312.pyc index ea2800852693cf652122d0be3f280d923de0ec19..0ff7924e9c9613c85f23570876c0265daddc8b9e 100644 GIT binary patch delta 52 zcmew%*&xMznwOW00SLM_UERpt#weAfpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0SXO GC^rDHOAxUD delta 44 ycmZpW`XR}EnwOW00SM~eT-nIo#wZk}pOK%Ns-K=$q3@DfoL!P%uz59OC^rB(YYwjf diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery-5.3.4.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/celery-5.3.4.dist-info/RECORD index bebb9604..31f29c93 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/celery-5.3.4.dist-info/RECORD +++ b/gnx-react/venv/lib/python3.12/site-packages/celery-5.3.4.dist-info/RECORD @@ -1,4 +1,4 @@ -../../../bin/celery,sha256=H4YtuwhzEfSlz2sN10Sk_qTENZg229Q0kn8-pDuPdgw,242 +../../../bin/celery,sha256=BnCgCpFDMj3bWDoA2MwFirqWdmgK8lfwd6OjW19pv3E,250 celery-5.3.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 celery-5.3.4.dist-info/LICENSE,sha256=w1jN938ou6tQ1KdU4SMRgznBUjA0noK_Zkic7OOsCTo,2717 celery-5.3.4.dist-info/METADATA,sha256=VwAVQZ0Kl2NxLaXXqYf8PcnptX9fakvtAmI2xHeTqdo,21051 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/__init__.cpython-312.pyc index 40fdaf8ec9e9371d793ca3406900fdaaee25432c..259cb80585bee6b8f049877819b019f8e91765f3 100644 GIT binary patch delta 52 zcmbPZu*87-G%qg~0}%9Xy1J2jC7V=)enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=Dr GVS)g&n-KN@ delta 44 ycmZ2tFvo!VG%qg~0}wR6xw4UaC7V!yenx(7s(yN2g}zH_adt_5!RB*pVS)fW2@doC diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/__main__.cpython-312.pyc index 42420a0ca0b5acc99a26f0ccef9a6f3e9868488b..f0fb047d66a478008ffadee685a5300a42b8f29b 100644 GIT binary patch delta 52 zcmbQnHjj<_G%qg~0}%9Xy1J4338Pemenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H5{ GQAPlyP7ksG delta 44 ycmbQoHjRz@G%qg~0}wR6xw4V_38PSeenx(7s(yN2g}zH_adt_5!Ddb-QAPkR3=OaV diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/_state.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/_state.cpython-312.pyc index ee92a39234639d71cbaa1a2de75497f55f39e2a3..3bfdf5804a47005287208f9bb07a159d309c41b6 100644 GIT binary patch delta 52 zcmbPZu*87-G%qg~0}%9Xy1J1&nMEp0KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Y1 G9AN;dKMn{9AN-6{SK-C diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/beat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/beat.cpython-312.pyc index 3ed494e1e651ebc657130ffba74811b386fb9fe5..5d861a327554df9dd9c77eb79f67468a24b1ffea 100644 GIT binary patch delta 54 zcmaDihw0lKChpU`yj%=G(7WmCM(%o6sSy2){M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Jb678R0091c6Au6Y delta 46 zcmex1hw0rMChpU`yj%=G(D>%cM(%o6As_vW{M=Oi^t=jvm(=3ylKg_rOIR;;004Yy B5e)zU diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/bootsteps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/bootsteps.cpython-312.pyc index 22fbd91a4fea30029840160584c6bbca589d9a6f..e14580b5bad61e501d41b9176165ff0166b5042f 100644 GIT binary patch delta 54 zcmcbzi1E%MM()$Ryj%=G(7WmCM((#vQjz)@`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b IxtP8D00ANq{{R30 delta 46 zcmcb!i1ErIM()$Ryj%=G(D>%cM((#vLV@}j`MIh3>3J3UE~&-YCHV!Lg_ynk0DRF8 A{Qv*} diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/canvas.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/canvas.cpython-312.pyc index ac8b14792100960376cb29c3183a3f1101bc602a..e67cbad3a07dd36d4791e9b0d31751010244c511 100644 GIT binary patch delta 58 zcmey;#`dR;jr%k&FBbz4^lrMkk=uzwDoj5kKQ~oBJ+DIFCAB!aB)>r4-7i8n+|{W$ Mo@0AF2cu{;067#AssI20 delta 50 zcmey<#`dL+jr%k&FBbz4G`_jAk=uzw$WK2bKQ~oBJ+DIFCAB!aB)_0Jonw1C2cu{; E0I`!0umAu6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/exceptions.cpython-312.pyc index 058fce2a583ce686d2d467d85f62026964b6a4a6..2038f73c67b259cc65c7b762ff8d53900113c64d 100644 GIT binary patch delta 52 zcmdm=b3BLpG%qg~0}%9Xy1J2jGrv@nenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-5O G`Dy^%LJ|r9 delta 44 ycmX?}vp3J3UE~&-YCHV#V?tT%v;jT`b JZ!pKk0RaAa62Slf delta 46 zcmdmcgmLQ;M()$Ryj%=G(D>%cM(*9rLcaPL`MIh3>3J3UE~&-YCHV!LA27$p0RVfi B5WfHb diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/platforms.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/platforms.cpython-312.pyc index f16f9517bb36aa8a97c527ae61dad0f33be4c56e..62ce8f0a391716c0548e3ffeae41d2980df3df20 100644 GIT binary patch delta 54 zcmdltgX!1|ChpU`yj%=G(7WmCM(*jnQjz)@`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JxA1n=0RZjc5}E)2 delta 46 zcmX>$gK6IkChpU`yj%=G(D>%cM(*jnLV@}j`MIh3>3J3UE~&-YCHV!L_waVr0RV01 B5SRb} diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/result.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/result.cpython-312.pyc index 4c066909a3da3094afd8292282f916d3ab6ab65f..738ed3c49b21f62ebede3927d239c45f66096e8c 100644 GIT binary patch delta 54 zcmew`lljL?X71Cxyj%=G(7WmCM(#~4QepZT`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J&$B3=000FS69fPN delta 46 zcmew{llj9;X71Cxyj%=G(D>%cM(#~4LVo%g`MIh3>3J3UE~&-YCHV!Lud^tg004nj B5dr`J diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/schedules.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/schedules.cpython-312.pyc index daa1136424663d46b05cfc45b0d518712cde44f3..628943014814b5e4e748590f4d3bef6b81d43672 100644 GIT binary patch delta 54 zcmcb;gX!@OChpU`yj%=G(7WmCM(zu&Qjz)@`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J-?HXS0{{){6LJ6m delta 46 zcmaF7gX#7TChpU`yj%=G(D>%cM(zu&LV@}j`MIh3>3J3UE~&-YCHV!Lzp~~{0|1DM B5pVzi diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/signals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/signals.cpython-312.pyc index 87cbc5649331da5c0c2eaeddf9aa6e14eadc6bbe..16a6548aed223cc2365d66de2c4ff34f97427387 100644 GIT binary patch delta 52 zcmZ1`wN8rrG%qg~0}%9Xy1J1&iAyS6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&c- GawY(!c@UWZ delta 44 ycmZ1{wM>fpG%qg~0}wR6xw4TviA%^|KO;XkRX;tiLf<8|IJ+djU~@ayawY&U#}1bO diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/states.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/__pycache__/states.cpython-312.pyc index 77a9bead672e7b19494b6e305a43c945b74df314..09cf19186c5b301a10c96ef0c253f2bf55aba54b 100644 GIT binary patch delta 52 zcmbO%Gh2rHG%qg~0}%9Xy1J43IIC2cenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;3v G`WyhO@DRiR delta 44 ycmbO&Gg*fFG%qg~0}wR6xw4V_IIEDKenx(7s(yN2g}zH_adt_5!R9xt`Wyf?Rt~}d diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/__init__.cpython-312.pyc index ce3dfec8d29032b83f90d633d50b43e0a574af86..02dbf0f32f9dd386edb3aed48c48b41aad44e49d 100644 GIT binary patch delta 52 zcmaDN{YIMmG%qg~0}%9Xy1J433Zqnvenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>zi GpSc0gbrM4W delta 44 ycmaDO{Y0AkG%qg~0}wR6xw4V_3Zqbnenx(7s(yN2g}zH_adt_5!RDWgpSb~3V-P_A diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/amqp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/amqp.cpython-312.pyc index 3200014f9e8a64bc049fdbd6ac774f63f7ae241c..0cd5f576282384aa7742b4a8235d0ae711a3b34d 100644 GIT binary patch delta 54 zcmdmYjPckpM()$Ryj%=G(7WmCMs6M!sR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Ink=I60O;@$Hvj+t delta 46 zcmX?hjB(#FM()$Ryj%=G(D>%cMs6M!p#c4i{M=Oi^t=jvm(=3ylKg_rhAg7-0BX(; AH2?qr diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/annotations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/annotations.cpython-312.pyc index ce56063a9ce02f0e8433e6307cfca88eca729286..a7d3f11119dbf6035d11c5ddd5cee7d18fa3697c 100644 GIT binary patch delta 52 zcmew(+#`6JAInwOW00SFr3T-nGylSwFCKO;XkRX;tiLf<8|IJ+djVDmmEH+BF!7Y@Jx diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/autoretry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/autoretry.cpython-312.pyc index 353b6cdd1778ae4ef12566c02f0acfd8fe8fd23e..afb46cb9ea4adfe1f1e202ce1301eddec5970a2c 100644 GIT binary patch delta 52 zcmeAYog~VAnwOW00SJ0GUERpt$0il4pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Sk# GeP#fkfDq;Y delta 44 ycmbOv+9k?;nwOW00SFr3T-nIo$0ii2pOK%Ns-K=$q3@DfoL!P%uz54veP#eFZVu!C diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/backends.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/backends.cpython-312.pyc index 2255283f1eac47f43eee080e494e572b60143466..92c475bbdfd41cae38550d14c0ecfecec9408c0c 100644 GIT binary patch delta 52 zcmbO#GgpTDG%qg~0}%9Xy1J2@pHnJEKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oRJ GOBMi>CJ-C| delta 44 ycmbO$GgXHBG%qg~0}wR6xw4U)pHnDAKO;XkRX;tiLf<8|IJ+djV6zG5OBMhk+zuK5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/base.cpython-312.pyc index 823fbe8e19e80781240d857d8c86cdff34f8015a..351ceb1ce04791ec610141c7ada6b08e4a86f2f5 100644 GIT binary patch delta 54 zcmex%cM(!d`p#c4i{M=Oi^t=jvm(=3ylKg_r(>XI90RWP@ B5qSUr diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/builtins.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/builtins.cpython-312.pyc index e32a6f674ecc28302287a0d3ffe2cc7eaaba829b..253302dc262d037cbe37c62db8bfb786efccf48a 100644 GIT binary patch delta 52 zcmbR1v($(CG%qg~0}%9Xy1J3uhgm8{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%s? G79{|(01)E< delta 44 ycmZ4LGuMavG%qg~0}wR6xw4Vlhgm2@KO;XkRX;tiLf<8|IJ+djU~?h!79{{Xeh%RP diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/control.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/control.cpython-312.pyc index a3690cd08dd6ec29c6e114ff3f30e0c675cbc633..573c54e32e413bec84bbb55e7af2f277ad854759 100644 GIT binary patch delta 54 zcmcc9#Ppr4-7i8n+|_Aw I0sEUu0Ow*7bpQYW delta 46 zcmaFT#B`^LiTgA!FBbz4G`_jAkvo`OC|ExuKQ~oBJ+DIFCAB!aB)?#D1^b&y0BI-? Aa{vGU diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/defaults.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/defaults.cpython-312.pyc index 1fd5017e07f847c7449ab93bd29855107e29cf1c..3058105551f7325e51d9c9c3fd5c0071978c1c03 100644 GIT binary patch delta 54 zcmey|!}z<0k^3|+FBbz4^lrMkk^7m5RE&N`er~FMdR~RTOKNd;Nq&L8yI+KExU17< IX3+ve00#*YGXMYp delta 46 zcmey}!}z&}k^3|+FBbz4G`_jAk^7m5P>6m;er~FMdR~RTOKNd;Nq)g*ZqWim0D-s= AF#rGn diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/events.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/events.cpython-312.pyc index 7890478098efc58e63b4a10b3a0714a97531c0d1..af5ca098202316f7c2775de9ac0dda6224369136 100644 GIT binary patch delta 52 zcmaDV{8pIzG%qg~0}%9Xy1J2@i%BXXbuEhfG%qg~0}%9Xy1J43IIC2+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;3v GS?U1XUJ?-i delta 44 ycmcZ>buNngG%qg~0}wR6xw4V_IIEDqenx(7s(yN2g}zH_adt_5!R9xtS?T~@ED#R> diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/registry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/registry.cpython-312.pyc index 207142370342dbc80c3730f39a3f0abbb55aad44..0ee802ae90647695cd64f7f045d70e23016f1c26 100644 GIT binary patch delta 52 zcmew=^;e4fG%qg~0}%9Xy1J43Gow_Denx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Est GRBiy(SP>Ke delta 44 ycmew>^;L@dG%qg~0}wR6xw4V_Gow(5enx(7s(yN2g}zH_adt_5!Db1jRBixQP7e|Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/routes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/routes.cpython-312.pyc index 979b3bf1622fc230499a8d36d558555be5bcc67d..4ceb20539edeb47408112aa905f42675cded0e1c 100644 GIT binary patch delta 52 zcmcbvcVCbDG%qg~0}%9Xy1J1&kVPs=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%US GOCbQhVi8IJ delta 44 ycmcbwcU_PBG%qg~0}wR6xw4TvkVPm+KO;XkRX;tiLf<8|IJ+djU~?JEOCbP801rq2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/task.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/task.cpython-312.pyc index 5c1fc18c645057b128eddfef631023a344f4f232..05505d8a1b9be02d80c5a0a9fc0b8a4b533bf53b 100644 GIT binary patch delta 54 zcmX?hmFe77ChpU`yj%=G(7WmCM(!k5sR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I^{nno0RTr5jQ{`u delta 46 zcmX?imFd`3ChpU`yj%=G(D>%cM(!k5p#c4i{M=Oi^t=jvm(=3ylKg_r?X2!g0e#*O AivR!s diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/trace.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/trace.cpython-312.pyc index 6cc5e069012fe16608fd9b02bbcd077101008f71..fd66adc2f08284a9f74c7459080d15c3c3c7fe25 100644 GIT binary patch delta 54 zcmX^9lJWdYM()$Ryj%=G(7WmCM(!qVsYv~d{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I^SL!L0S%NArvLx| delta 46 zcmX^AlJWRUM()$Ryj%=G(D>%cM(!qVp+NnN{M=Oi^t=jvm(=3ylKg_r%egf&0f@5@ Ar2qf` diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/app/__pycache__/utils.cpython-312.pyc index ca6e6c042cbb0bb181e19d2ca59c39e0e6362a7b..128e7dc06353f0c5c3f00ac42b6141aa07ec2140 100644 GIT binary patch delta 54 zcmey^%lNaGk^3|+FBbz4^lrMkkz0aYDpEfqKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IDf=FK0P1ZK(EtDd delta 46 zcmey_%lNUEk^3|+FBbz4G`_jAkz0aYC{RBmKQ~oBJ+DIFCAB!aB)?#@E&CpO0BkD{ A&j0`b diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/__init__.cpython-312.pyc index 422d4608f7c9ce398f2e8297280d3780cebcfda2..c54734db5f89e67157951898186a8fd36ef7361b 100644 GIT binary patch delta 49 zcmdnSxQ~(hG%qg~0}%9Xx;l~DSSnUOBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7-I DaHS8H delta 41 vcmdnTxQ&tfG%qg~0}wR6xiXR4SSVCKBR@A)KRvHP-zBv;yClD0VniAM0`d)% diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/beat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/beat.cpython-312.pyc index a4163741f463b7083d8b57eadd3f5df866084a22..29c9b8fc0785a969c6ab122efeed79c5ed6f1805 100644 GIT binary patch delta 52 zcmbR4GT(*!G%qg~0}%9Xy1J3OjzcO^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dE3 G8c6`N#t`uU delta 44 ycmbR5GTnvyG%qg~0}wR6xw4VFjzcI=KO;XkRX;tiLf<8|IJ+djVDn;*8c6^=gbwcj diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/multi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/multi.cpython-312.pyc index 9b3cd4a29496864da1fda4a415ccff8f5eb62b82..502ee76ac488d75fcc4e439f279602479f9e98c4 100644 GIT binary patch delta 54 zcmZoX#n^d@k^3|+FBbz4^lrMkk^2IZRFr;3er~FMdR~RTOKNd;Nq&L8yI+KExU19V Iw@e~Q0PdC&O#lD@ delta 46 zcmeA?#n^a?k^3|+FBbz4G`_jAk^2IZP>_B`er~FMdR~RTOKNd;Nq)iRuS_CI0Bz(D AO8@`> diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/worker.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/apps/__pycache__/worker.cpython-312.pyc index afc2cbae029c1ecb4a5e71caf279c1e76c741137..24ef4218f3f1a41cedf73c56d75ba868c6ff3bf6 100644 GIT binary patch delta 54 zcmcaOo$=;$M()$Ryj%=G(7WmCMs5~%sc8L-{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IitHO)0N#cXcmMzZ delta 46 zcmcaPo$=yyM()$Ryj%=G(D>%cMs5~%phtNG%qg~0}%9Xx;l~DUn)^QBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Voojq Df!q)u delta 41 vcmaFJc$1O)G%qg~0}wR6xiXR4Uno*PBR@A)KRvHP-zBv;yClD0Vo5Fl5cv)r diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/arangodb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/arangodb.cpython-312.pyc index 7b28f9c357c2c717e709ff13a461d120fc1b6d6c..7492e45df33c9d504e59e17b01c5b98eaf8fc90a 100644 GIT binary patch delta 52 zcmZ2vy~>*VG%qg~0}%9Xy1J2Dgj*_6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o}B Gp%4J3FAyC7 delta 44 ycmZ2wy~vvTG%qg~0}wR6xw4U4gj*<5KO;XkRX;tiLf<8|IJ+djV6!E6p%4Hu#SR+) diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/asynchronous.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/asynchronous.cpython-312.pyc index 39ddd5f080e59d1c85ca5d3f439f9302671c60ca..af1d986fd786e3ff6100f115e98d03b4a6a6f403 100644 GIT binary patch delta 54 zcmccK#(2Mtk^3|+FBbz4^lrMkkz0saDpfxtKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IKC^}c0NcwD^Z)<= delta 46 zcmccL#(2Grk^3|+FBbz4G`_jAkz0saC{{lsKQ~oBJ+DIFCAB!aB)?#@IkScX0AGm? A@&Et; diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/azureblockblob.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/azureblockblob.cpython-312.pyc index 95e44e7ae3273d0367ad0be78e3ed1a0650104e0..0e8200204da3b063935af39dce437ce8ed4965a0 100644 GIT binary patch delta 52 zcmX?Pe#)HtG%qg~0}%9Xy1J43C#zJtenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GTY GHKG8|yAfCb delta 44 ycmX?Qe#o5rG%qg~0}wR6xw4V_C#z7renx(7s(yN2g}zH_adt_5!DczOHKG7gX%AKa diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/base.cpython-312.pyc index d6b3216b7b7648a6090eb4fea4b8a58b97d707c3..7a529c3ac55b11290eeec70988b308a21ed0b659 100644 GIT binary patch delta 54 zcmX@o!+fTPnfo*^FBbz4^lrMkk=u_$Dpo%uKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw IHpk7q0O7Y1h5!Hn delta 46 zcmX@p!+fNNnfo*^FBbz4G`_jAk=u_$C{#ZqKQ~oBJ+DIFCAB!aB)?#DF~`ll0AyVd Aga7~l diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/cache.cpython-312.pyc index 2cd2d81ec8370fc9983ff447277e51e16f6dd8c4..d382e9a3193efe4522c6ca70c79f8f8859ab47d4 100644 GIT binary patch delta 52 zcmez3_{Wj^G%qg~0}%9Xy1J3OlUXWGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4b8> GKUo0S*%6EY delta 44 ycmez4_{EX?G%qg~0}wR6xw4VFlUXQCKO;XkRX;tiLf<8|IJ+djVDma=KUn}eMIKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oM$ Gx-tN;6A)bh delta 44 ycmZ1-xHypeG%qg~0}wR6xw4U4o>eGHKO;XkRX;tiLf<8|IJ+djV6zKrx-tMd2@YET diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/consul.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/consul.cpython-312.pyc index f5cc1f0e58056197671cfcc2c5c1e347fafeebbd..f2d8463c240bce82fc8bb7852a4676dc1669ed2d 100644 GIT binary patch delta 52 zcmZ3ZxkZ!vG%qg~0}%9Xy1J2DiA5@2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p{` Gt^fd|^AHmN delta 44 ycmdm@xki)wG%qg~0}wR6xw4U4iA5+}KO;XkRX;tiLf<8|IJ+djV6!_*t^fcp;SLc1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/cosmosdbsql.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/cosmosdbsql.cpython-312.pyc index e87008a218d0799dfa565754316417b05874718e..4497ef4c0404b995a3bb0d4f604eeb74706000cf 100644 GIT binary patch delta 52 zcmbR3vDkzAG%qg~0}%9Xy1J3unO!PHKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Vm GZW#ct-VoLR delta 44 ycmZ4NG24UtG%qg~0}wR6xw4VlnO!JGKO;XkRX;tiLf<8|IJ+djU~>lhZW#bMqz=>o diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/couchbase.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/couchbase.cpython-312.pyc index d859e650a1d3d177a37d3de5f1a139843cfd53e4..60cb677670eaef2d59e4d7ec2fb86d17bca6a038 100644 GIT binary patch delta 52 zcmdm@u}6dZG%qg~0}%9Xy1J2jIlEMnenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-@W G1v~(|ND(st delta 44 ycmdm^u|r4-7i8n+|_Aw IJ@+G10PHprTL1t6 delta 46 zcmaFa#Q3m@k^3|+FBbz4G`_jAkvoZ7C{jNoKQ~oBJ+DIFCAB!aB)?#DJNF|~0BrOS ASpWb4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/elasticsearch.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/elasticsearch.cpython-312.pyc index 6e9b9cbdc42d5bd6cc712f9c59535684f7611a86..9b07ee72e64a2a1c7b556654de64f391a5262579 100644 GIT binary patch delta 52 zcmcZ>d@q>$G%qg~0}%9Xy1J1&j6*6-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&10 GvLXP^H4!-g delta 44 ycmcZ?d@Y#!G%qg~0}wR6xw4Tvj6*0+KO;XkRX;tiLf<8|IJ+djU~@G`vLXOd>kl^o diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/filesystem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/filesystem.cpython-312.pyc index a9ec70943de655a3ec5d6a879196df196aca47be..ca6d947b0acd4105a085975f5d94abfcb0242186 100644 GIT binary patch delta 52 zcmZ2rw8Dt{G%qg~0}%9Xy1J433!7B3enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G?- Gejxz8=n!52 delta 44 ycmZ2sw7`h_G%qg~0}wR6xw4V_3!6~1enx(7s(yN2g}zH_adt_5!DdNzejxxuMh;v6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/mongodb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/mongodb.cpython-312.pyc index d436a04508addfb6a200abd3457442c04dc620e7..d0d32c3a5595afe4fc0e98f057689b5799a8f7bc 100644 GIT binary patch delta 52 zcmdm;bvTRrG%qg~0}%9Xy1J1&fk`SsKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%>p GJ|h6lAQ7Jc delta 44 ycmX?{wL6RZG%qg~0}wR6xw4Tvfk`MrKO;XkRX;tiLf<8|IJ+djU~?FX AV*mgE diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/rpc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/rpc.cpython-312.pyc index d47edcb88343efb87aee91801f29f1a9ea6604da..97165e20c2e61491aeda93ebfed05ea6f982fe11 100644 GIT binary patch delta 52 zcmcasf3KeVG%qg~0}%9Xy1J2jAG1`9enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^aE GzpVl8H4^^- delta 44 ycmcatf32STG%qg~0}wR6xw4UaAG1)1enx(7s(yN2g}zH_adt_5!RE)zzpVjnV-WoS diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/s3.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/__pycache__/s3.cpython-312.pyc index b74fe0af5606fb82633cef07e402d14fb2d58f74..21e02d1c08a1f9a0302cd6b26ebfb7eb02b04146 100644 GIT binary patch delta 52 zcmdn0yjPj~G%qg~0}%9Xy1J2DflVq}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pX` G1vdbs!Vnt( delta 44 ycmdn1yj7X|G%qg~0}wR6xw4U4flVk_KO;XkRX;tiLf<8|IJ+djV6!V*1vdaNpbi-T diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/database/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/database/__pycache__/__init__.cpython-312.pyc index 596b965aef80a51fcb76764b5728c57e2e3699b4..677a339cc70bf8aa8da79096d1a3469d7eab172d 100644 GIT binary patch delta 52 zcmZpV>yP6;&CAQh00h08u5RS+VwTF%&&bbB)lbi>(055K&MwI>(0BKX&<%HW+Ps`O GK^p+NixC(055K&MwI>*u0)OK^p);=?@qH diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/database/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/database/__pycache__/models.cpython-312.pyc index 65bfafa2c9494a0953d8f9d6a39a716b392669b6..25904ae716dbb35bc7076b80241af7f02a5c45f5 100644 GIT binary patch delta 52 zcmcbm`$(7jG%qg~0}%9Xy1J3OgheVtKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4b!D GPay!r)DZ#z delta 44 ycmaE)drO!5G%qg~0}wR6xw4VFghePpKO;XkRX;tiLf<8|IJ+djVDn5CPayzG$`1el diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/backends/database/__pycache__/session.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/backends/database/__pycache__/session.cpython-312.pyc index fc661914d8ec229345efc26fe9fca12a69b4168c..f5948646c7f58a9bbc4e33b5434bdb7ff75c7f63 100644 GIT binary patch delta 52 zcmdlfcTkS|G%qg~0}%9Xy1J437o$|Benx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Iod GC0+o*84!K| delta 44 ycmX>ow^NS$G%qg~0}wR6xw4V_7o$+3enx(7s(yN2g}zH_adt_5!De|TC0+nU?+$zb diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/__init__.cpython-312.pyc index 7b1bf463d7a303558ae711d28436db85eae52300..82eb435fd6ddebf6eaeec3f6a7e0274f7a80465e 100644 GIT binary patch delta 49 zcmdnWxR;UpG%qg~0}%9Xx;l~DSSm(8BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8YY Da3>Fv delta 41 vcmdnXxRsInG%qg~0}wR6xiXR4SSUn4BR@A)KRvHP-zBv;yClD0Vniwc0*noi diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/amqp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/amqp.cpython-312.pyc index 738661d12087a07df147858c5d27ef16c8ab3c52..eec714954cdbff24a7cf927745ff185ce4bfd776 100644 GIT binary patch delta 52 zcmbQ9Ge3v>G%qg~0}%9Xy1J2j5vNpyenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_r0 G5jp_KjuCkP delta 44 ycmbQAGd+jyenx(7s(yN2g}zH_adt_5!Dd00U`_x{%nrT) diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/call.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/call.cpython-312.pyc index e02c67c8ee8553b94aa5eafcd205e939fe85b973..7af3377069e4a67c89f40a7db766be8de4b03102 100644 GIT binary patch delta 52 zcmaDR{7#trG%qg~0}%9Xy1J43BAZl%enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=<< GKbQc_=n^vk delta 44 ycmaDS{7jhpG%qg~0}wR6xw4V_BAZZvenx(7s(yN2g}zH_adt_5!RBvlKbQbfMi4Oo diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/celery.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/celery.cpython-312.pyc index ae358c2d53b5e0d67c50c2b149e16a60fe5ddfab..91311f077e7c8abe218007e31b48d2be1fad484b 100644 GIT binary patch delta 52 zcmbOoyf~QqG%qg~0}%9Xy1J2j4xdz%enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?Ig GkE8&>auLS> delta 44 ycmZ1+JUf{CG%qg~0}wR6xw4Ua4xdnvenx(7s(yN2g}zH_adt_5!RCW}kE8%c*bl`3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/control.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/control.cpython-312.pyc index ae65ce5d1f6949eb855e54f862ab66fa9b292caf..755f10456ba6d842928d6650d4d40c703327507f 100644 GIT binary patch delta 52 zcmX@$aKeH6G%qg~0}%9Xy1J1&h(jt`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&fu GMR5SU>Jc~q delta 44 ycmX@%aKM54G%qg~0}wR6xw4Tvh(jn?KO;XkRX;tiLf<8|IJ+djU~@UgMR5Q`s1G&( diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/events.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/events.cpython-312.pyc index 565337bd4059713c9cd20795ab1491e9c4813c82..271ee3c97aeadfa721fb4788457b78a55d43acb2 100644 GIT binary patch delta 52 zcmew?^IL}dG%qg~0}%9Xy1J2j2eVX^enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?zp G^SA)f3K7=; delta 44 ycmew@^I3-bG%qg~0}wR6xw4Ua2eVL+enx(7s(yN2g}zH_adt_5!REWn^SA(1*bmhJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/graph.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/graph.cpython-312.pyc index 9a1b45b605c6f3d30ea9198675f349b06ca3247a..6d762dc7acd9ae216db4695ada7ac7a22fc22ced 100644 GIT binary patch delta 52 zcmZpP=!xJy&CAQh00h08u5RR(V3LZ|&&bbB)lbi>(055K&MwI>(0BKX&<%HW+HA^n GUK0SMz7T!@ delta 44 ycmeB)Xo=uH&CAQh00fP1u59F%U=j+{&&bbB)lbi>(055K&MwI>*lf#mUK0Q?%np12 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/list.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/list.cpython-312.pyc index 811a77b589c387bc7ee24f9c98aa9e9dd29175bc..e1e46dfdd170857c3f0695af1c3b8cbc2bc7f288 100644 GIT binary patch delta 52 zcmew-&?d-znwOW00SJ0GUERq2k5MW@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|ps_ GG8+KBR1ls3 delta 44 ycmZn@{3pPDnwOW00SFr3T-nI|k5MQP0 G3Q_>n`4Mga delta 44 ycmaFq_|TF2G%qg~0}wR6xw4Ua37b%`enx(7s(yN2g}zH_adt_5!RC`}3Q_=A7Y}Rz diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/migrate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/migrate.cpython-312.pyc index 9eb0e2c711d8c8780c0d020f77502e80fb818715..ec441ce27f51d64a623a406666c5adafe29cf05f 100644 GIT binary patch delta 52 zcmZn{=@;QX&CAQh00h08u5RR>!X_21pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0R?2 G7&8E!eh^;( delta 44 ycmeAdX&2!>&CAQh00fP1u59F3J3UE~&-YCHV#V?tT%v;jT`b JuZqa|0RS336A%CZ delta 46 zcmex;l=1UXM()$Ryj%=G(D>%cM(!OVLV@}j`MIh3>3J3UE~&-YCHV!L?~2Iz0RWQZ B5e@(V diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/purge.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/purge.cpython-312.pyc index 7d1b065ab0e91867d77cf0897a8c643d03cc79ed..a34e35734a643ac2c7f73278962363096d4b0395 100644 GIT binary patch delta 52 zcmX>mb54f)G%qg~0}%9Xy1J1&h(jt;KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&fu Gbyfhd`Vj5_ delta 44 ycmX>nb4-T&G%qg~0}wR6xw4Tvh(jn)KO;XkRX;tiLf<8|IJ+djU~@Ugbyfg6s1ED^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/result.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/result.cpython-312.pyc index d4f3f65cdc1a34916cbaa09e64338d7bbc8d2d3d..b922552a8866223fff2de7b0ae798d184e1836fd 100644 GIT binary patch delta 52 zcmbQovy6xPG%qg~0}%9Xy1J2Do<%B3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oN> GBSrv{*$@~2 delta 44 ycmZ3+GmnS+G%qg~0}wR6xw4U4o<%4~KO;XkRX;tiLf<8|IJ+djV6zL$BSrurw+%n@ Gh!_C9e-Ow3 delta 44 ycmca=de)TtG%qg~0}wR6xw4TvhD9h)KO;XkRX;tiLf<8|IJ+djU~?l&h!_Aw{SL+e diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/upgrade.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/upgrade.cpython-312.pyc index 5e028cd3b7cce30f425f194b8c430c6af153fd55..47a9356a5ab93cf172ba1a8cff1c62690649356e 100644 GIT binary patch delta 52 zcmbQHHcyTFG%qg~0}%9Xy1J439+OnGenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^ky G(gFaqgAo4! delta 44 ycmbQIHcgHDG%qg~0}wR6xw4V_9+Ob8enx(7s(yN2g}zH_adt_5!DeP=X#oH@R1N+B diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/worker.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/bin/__pycache__/worker.cpython-312.pyc index 4a1d5db0adda0b2ac3c44590b23f15019ee9a30b..d453ccbbdc91ad5ccfcd1d0ade4762192c3e0ae8 100644 GIT binary patch delta 52 zcmeCopP0{mnwOW00SJ0GUERpt%Ow@1pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0RZR GeH{S8coD<^ delta 44 ycmbQ3-b8=-qU6BljkDsTBQ;{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J=h>~U0RZbf61M;V delta 46 zcmbQZhq-ePGxup;UM>b8Xnb>JBljkDp&0#){M=Oi^t=jvm(=3ylKg_r*V(PE0RU@4 B5VZgR diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/base.cpython-312.pyc index 85b2d8471410dbbe00ec1918986f5ea49dd004b1..70b26ee297c0fb64a3855f6c20fc6db522d5e802 100644 GIT binary patch delta 52 zcmca%{lJ?0G%qg~0}%9Xy1J3OhD9ntKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c1L Gdr1Jvs}Uan delta 44 ycmaE0eZ!jjG%qg~0}wR6xw4VFhD9hsKO;XkRX;tiLf<8|IJ+djVDmy2dr1IJ;SU`E diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/eventlet.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/eventlet.cpython-312.pyc index 8e26c45ea13c8ed608cfa76166073b7630808f8d..e06dd8cc45309266ee4d5c463f3c1b081b0fd6e1 100644 GIT binary patch delta 52 zcmZp2?{eop&CAQh00h08u5RQ$z$BHTpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD~U6 GQUw6FHW7dT delta 44 ycmeBjZ*u28&CAQh00fP1u59E!z$6r-pOK%Ns-K=$q3@DfoL!P%u=y#|QUw4$+z);L diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/gevent.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/gevent.cpython-312.pyc index cf5cb85a3364c47c98d63ae7a48bb338af051fc4..5f7fbcd500b31f476fcfcfa8abb4e9f927f044fd 100644 GIT binary patch delta 52 zcmaE>_f?PkG%qg~0}%9Xy1J2j8k1C#enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@@g GyF>udxDnR? delta 44 ycmeyW_g0VlG%qg~0}wR6xw4Ua8k10zenx(7s(yN2g}zH_adt_5!RFmeyF>t0o)6Uk diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/prefork.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/prefork.cpython-312.pyc index c7fe3ca1e63bdc4d4794e21a1818c8780f7ecd48..6d0be795664cb2ec2bf7d7adef9fa27be2cd5e8f 100644 GIT binary patch delta 52 zcmez1^23GuG%qg~0}%9Xy1J2@hg&LHKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pD` GyEp*Hh7gzl delta 44 ycmez2^1+4sG%qg~0}wR6xw4U)hg&FGKO;XkRX;tiLf<8|IJ+djV6!2&yEp(%+zyri diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/solo.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/solo.cpython-312.pyc index 214acc6a760f8fd9f6e2c53bb600decde988cb71..c49a5592e1d29086281b1caf7c410963e9fbce85 100644 GIT binary patch delta 52 zcmeyy{g0dbG%qg~0}%9Xy1J1&gGnkuKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%)6 GAu|BK?GWn# delta 44 ycmeyz{f(RZG%qg~0}wR6xw4TvgGnetKO;XkRX;tiLf<8|IJ+djU~?~1Au|9*^A70% diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/thread.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/concurrency/__pycache__/thread.cpython-312.pyc index 3ab81fecb425a9735ac651b55b636fe330e2e0bb..4dbfa9aee205f9a7c31c38edca3e58f9d82c3876 100644 GIT binary patch delta 52 zcmew^`CpRzG%qg~0}%9Xy1J3Oj7cgJ G6fOYB3K1ay delta 44 ycmew_`CXFxG%qg~0}wR6xw4VFj7ca;KO;XkRX;tiLf<8|IJ+djVDoII6fOWwpbsAa diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/__init__.cpython-312.pyc index 84e94e10f2c8970622c2f2ce4f4b6e91bafdaebd..a4ed9c9815d786a8657edba46cf9e606d1cfea04 100644 GIT binary patch delta 49 zcmdnVc#x6%G%qg~0}%9Xx;l~DSSmq3BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8MU Davu+( delta 41 vcmX@exRa6lG%qg~0}wR6xiXR4SSUh2BR@A)KRvHP-zBv;yClD0VnikY1SAch diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/abortable.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/abortable.cpython-312.pyc index 6bb30e84b5395f2152be73e381ea676f154e0642..c496d07b80a111e5ec806f934cd8ecae215e1f95 100644 GIT binary patch delta 52 zcmeyN)1b?JnwOW00SJ0GUERpNnp-MSKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zv0 G4O{@gs1cC> delta 44 ycmZqB{h`BsnwOW00SFr3T-nIInp-GRKO;XkRX;tiLf<8|IJ+djVDkm;4O{?55D$+4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/migrate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/migrate.cpython-312.pyc index 71bab77b8be475b7d7aeb15bf918d433bf6ff1eb..68a905cacd2372853c61fdf27fd5487d87ce8ecb 100644 GIT binary patch delta 54 zcmbO>k#XKcM()$Ryj%=G(7WmCM(*FtQt|p3`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b IC0OcQ0OTGKuK)l5 delta 46 zcmbO?k#X8YM()$Ryj%=G(D>%cM(*FtLgD%u`MIh3>3J3UE~&-YCHV!L6`%*AVCc delta 44 ycmZ2!z0jKbG%qg~0}wR6xw4V_4U15ienx(7s(yN2g}zH_adt_5!Dd0$84>_S4G!i2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/rdb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/rdb.cpython-312.pyc index bbb11a9d6bc567abc60bdb504550b9f9311a732d..5a388f3caa30856997d4adf97e0830c7566ceb3d 100644 GIT binary patch delta 52 zcmca<|InWMG%qg~0}%9Xy1J3uiCZdKKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Yx Gl?VXC*AVmo delta 44 ycmaE8f771(G%qg~0}wR6xw4VliCZXGKO;XkRX;tiLf<8|IJ+djU~@Wml?VVzeGc*f diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/sphinx.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/__pycache__/sphinx.cpython-312.pyc index ea435582c58c46e004d2916a4b22b2ce2662cf9a..a2a2c0257584f178517d5fb801fb586caeb6ba96 100644 GIT binary patch delta 52 zcmX@Ad{&wJG%qg~0}%9Xy1J2jKC4umenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;*_ GoIC)%SP;wr delta 44 ycmX@Bd{mkHG%qg~0}wR6xw4UaKC4ieenx(7s(yN2g}zH_adt_5!R8~ZoIC(TE)L27 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/testing/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/testing/__pycache__/__init__.cpython-312.pyc index c689eb603809a0d02d519f49606180bbaebd11e7..374fe57c4b431f5202db68516bd4a06c14c95094 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}%9Xx;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db`KB2 delta 41 vcmX@fc#x6%G%qg~0}wR6xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2UHEf diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/testing/__pycache__/app.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/testing/__pycache__/app.cpython-312.pyc index 1efc9344874a4e99e47c701a0a39c2a22f2ac2c9..9f02ec5d6bfb9c2404a93e84f72e88019509ca98 100644 GIT binary patch delta 52 zcmeyQ`b(AjG%qg~0}%9Xy1J43IOV diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/testing/__pycache__/worker.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/contrib/testing/__pycache__/worker.cpython-312.pyc index e6c4e606dc05815d4f4fb787b8fc20ebe87dda69..05dfff0fc0a6f8b258262b0883f6f9e1c0c70560 100644 GIT binary patch delta 52 zcmZqk?DOP4&CAQh00h08u5RSkVV6qN&&bbB)lbi>(055K&MwI>(0BKX&<%HW+U&`0 GD+>Uly$}Te delta 44 ycmeD4Z1dzk&CAQh00fP1u59GiVHb+i&&bbB)lbi>(055K&MwI>*c`}iD+>TGYYqbd diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/__init__.cpython-312.pyc index 2046e3a28e1cbbabefdefa46e2767510e471cef9..d4cc80864445661fbf784a383b7906b594e37559 100644 GIT binary patch delta 51 zcmZ3&x`vheG%qg~0}%9Xy1J2@l}RdIKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fVi F699fS4`KiS delta 43 xcmZ3(x`dVcG%qg~0}wR6xw4U)l}RXEKO;XkRX;tiLf<8|IJ+djV6qld695n04PXEO diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/cursesmon.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/cursesmon.cpython-312.pyc index dc28b30814f0fb107d1e3cf053a2a104fd59bfd0..8ef45c63f05aee4111b8efeea29d635dec2265d5 100644 GIT binary patch delta 54 zcmezRobm5-M()$Ryj%=G(7WmCMs62&sRaFu{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IiR@Ey02h=J@c;k- delta 46 zcmezSobl^(M()$Ryj%=G(D>%cMs62&p$Pqq{M=Oi^t=jvm(=3ylKg_rne0%E` GwgLdWQ4p~J delta 44 ycmZ1(y)c^lG%qg~0}wR6xw4Tvl2<5FKO;XkRX;tiLf<8|IJ+djU~?U>wgLb{zYebe diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/dumper.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/dumper.cpython-312.pyc index 290f7274f2955b97af5dffa1bf089b370108cb7c..66bfe7382d5d75d03fb50206dfa88b9809cb2021 100644 GIT binary patch delta 52 zcmZ3iyIPm~G%qg~0}%9Xy1J3ui&-jGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&TW GjW7VG91te} delta 44 ycmZ3jyI7a|G%qg~0}wR6xw4Vli&-dCKO;XkRX;tiLf<8|IJ+djU~@jRjW7T*G7cpG diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/event.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/event.cpython-312.pyc index 534de41bacc73da61cb5249037ec350ec515daa7..2d199ec5dcfd4bfcde59f27015c3831518d45a43 100644 GIT binary patch delta 52 zcmX>va9x1=G%qg~0}%9Xy1J433X@cfenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>y% GajXErzY%Hx delta 44 ycmcaEa9)7>G%qg~0}wR6xw4V_3X@QXenx(7s(yN2g}zH_adt_5!RDV#ajXDGr4MKT diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/receiver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/receiver.cpython-312.pyc index 9e2318f18340bd1c9b3fe0ceca5d6bfe0c98d951..4c76b7a43a4fa254edd84b2b8ab87bebec182d03 100644 GIT binary patch delta 52 zcmexp_S1~}G%qg~0}%9Xy1J3uno}xXKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$ap Gq!0keNf4m` delta 44 ycmexq_R);{G%qg~0}wR6xw4Vlno}rTKO;XkRX;tiLf<8|IJ+djU~>Yeq!0j3Ck~$g diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/snapshot.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/events/__pycache__/snapshot.cpython-312.pyc index ecef8afd6005cf411be428dff43973173b434956..e396b79274289fa1e647b5fcf5411ab733094fce 100644 GIT binary patch delta 52 zcmbQPKVP5wG%qg~0}%9Xy1J2DlT|8SKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o$^ Gpb!9_6m;er~FMdR~RTOKNd;Nq)g*0j^yY0B+zA ANB{r; diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/fixups/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/fixups/__pycache__/__init__.cpython-312.pyc index 5cc050b3b292b13f96b51af7d6bb6060bf93bfdd..fafc96e1ce969a78e9793dad60d882b1fe0cd5c0 100644 GIT binary patch delta 49 zcmX@dc#V delta 44 ycmaDHeLI@_G%qg~0}wR6xw4U4m{}-PKO;XkRX;tiLf<8|IJ+djV6z4DYApaxoev2B diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/loaders/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/loaders/__pycache__/__init__.cpython-312.pyc index 2c27e8820a8769b245c254519ef10d8dbc701f34..1d1bed9d991e0ded58e0296553dcb0ed29a9e82c 100644 GIT binary patch delta 52 zcmbQvHlL0AG%qg~0}%9Xy1J432cuMienx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Hd7 GCPo0Leh<+A delta 44 ycmbQwHl2<8G%qg~0}wR6xw4V_2cuAgenx(7s(yN2g}zH_adt_5!Dd+|CPn};ObyQf diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/loaders/__pycache__/app.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/loaders/__pycache__/app.cpython-312.pyc index b122283b9b9b04f01e35a027df9ddd72e2e1ee48..255677746cbbde00ecb20163cbbbeb9e2edda392 100644 GIT binary patch delta 51 zcmZ3=vX+JWG%qg~0}%9Xy1J3uno%lRKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tVP FSpbEA5EB3Z delta 43 xcmZ3>vXq7UG%qg~0}wR6xw4Vlno%fNKO;XkRX;tiLf<8|IJ+djU~&TESpXHF4iNwV diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/loaders/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/loaders/__pycache__/base.cpython-312.pyc index 6593d4beaa2afd8bb51f0eaa6a80237e1c7edfb2..cd24eee3d48416e2ab4bb6ba44cfca04a854f7c1 100644 GIT binary patch delta 52 zcmaE!@IHb2G%qg~0}%9Xy1J2j8mm-{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@^r GTeJY;m=Zq# delta 44 ycmaE#@H~P0G%qg~0}wR6xw4Ua8mmx(055K&MwI>(0BKX&<%HW+8oBQ GmKgw%q!0=K delta 44 ycmeB{XqMnU&CAQh00fP1u59GC(055K&MwI>*c`{PmKgvbN)8AB diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/security/__pycache__/certificate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/security/__pycache__/certificate.cpython-312.pyc index bfb0088ce920a9aba06b707da79508d2d0bbbc85..42a7370a936c8f18b9c2a104a47eecf84b68d885 100644 GIT binary patch delta 52 zcmZ2%wc3jNG%qg~0}%9Xy1J2Dg;gp=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p5i GBXIzz{Sc}E delta 44 ycmZ2&wb+XLG%qg~0}wR6xw4U4g;gj(055K&MwI>(0BKX&<%HW+FZ;m GA_xGS@eker delta 44 ycmeCzY}e#I&CAQh00fP1u59EEV-||j&&bbB)lbi>(055K&MwI>*j&vlA_xE}Uk%&< diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/security/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/security/__pycache__/utils.cpython-312.pyc index 67ad7babc02168924f81e1e48895c4fb45ff95b1..4f1faba7af6d4e2cc3abe23cb03517ceb9b55b92 100644 GIT binary patch delta 52 zcmX@YeTJL+G%qg~0}%9Xy1J435u;R`enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_w- GN0|Y>V-d>$ delta 44 ycmX@ZeT19)G%qg~0}wR6xw4V_5u;F;enx(7s(yN2g}zH_adt_5!De=*qs#z6)DFr3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/__init__.cpython-312.pyc index 9a54a1f038593bd6dca97036d303f71a77616394..75122dc5d12978d51660d0bf21d895c583c5f9ce 100644 GIT binary patch delta 51 zcmX@fevzH~G%qg~0}%9Xy1J2@pIItSKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fLU FTmX*r58wa* delta 43 xcmcb}ev+O0G%qg~0}wR6xw4U)pIInOKO;XkRX;tiLf<8|IJ+djV6qAGTmT*14c-6% diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/abstract.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/abstract.cpython-312.pyc index b9dbc65e2f48136091c2176da66e808312a33a33..c8eb01b39aa9c2361abc54274e1627673d17fc73 100644 GIT binary patch delta 52 zcmbPeIMa~(G%qg~0}%9Xy1J43Jfl>cenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;pf GOT_@S>Jfeb delta 44 ycmbPfIMI;%G%qg~0}wR6xw4V_Jfl#Uenx(7s(yN2g}zH_adt_5!R9ZFOT_>^zz=)? diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/collections.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/collections.cpython-312.pyc index 4a5c58d34459ab4529a53d4a9ec32e9731896c12..2692e9787127f7abb66f61c22ee024b7a6089515 100644 GIT binary patch delta 54 zcmbQXiD}*@ChpU`yj%=G(7WmCMs8UasYLyZ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JRxEd>007oO5$FH_ delta 46 zcmbQYiD}v%cMs8Uap-BCV{M=Oi^t=jvm(=3ylKg_rPAqq(003J5 B59R;> diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/debug.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/debug.cpython-312.pyc index c857f4746321f127fbbe22833c816bd17e7841c8..5a429b991fb7109a41fe1a98fc4aa8caa4c4abb8 100644 GIT binary patch delta 52 zcmX?Le!`slG%qg~0}%9Xy1J2@jae#MKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|po( GTnPZJ0}xRF delta 44 ycmX?Me!!gjG%qg~0}wR6xw4U)jaevIKO;XkRX;tiLf<8|IJ+djV6!&!TnPX-*$z(t diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/deprecated.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/deprecated.cpython-312.pyc index 2ad50848f9e14fd027a547623714f976ec4b463e..dba9c4107bde99e0b1794191b4226b8e06865e16 100644 GIT binary patch delta 52 zcmX@5bxDi+G%qg~0}%9Xy1J2j6|+==enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^yM G&4K{LqY-xi delta 44 ycmcblbxMo-G%qg~0}wR6xw4Ua6|+!;enx(7s(yN2g}zH_adt_5!RGVK&4K_*VGnfx diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/functional.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/functional.cpython-312.pyc index 8fee842240bd4cf4a256d3bda8a68ae7d416db67..428b06e0920e7a936ac0bed53c5d83824d2ffab4 100644 GIT binary patch delta 54 zcmey`%lNmKk^3|+FBbz4^lrMkk$VHPRDym+er~FMdR~RTOKNd;Nq&L8yI+KExU19V Iv&^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/iso8601.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/iso8601.cpython-312.pyc index 094df1e60bdd33dd4ee23276a236e1a23ba79df5..3bdb3ce838c2a1123f336c8bc98d5404d14b238e 100644 GIT binary patch delta 52 zcmca1{Xm-gG%qg~0}%9Xy1J1&f?Fz9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%!e GG7|u}qY$qE delta 44 ycmaDLeM6f2G%qg~0}wR6xw4Tvf?Ft5KO;XkRX;tiLf<8|IJ+djU~?^ZG7|tm*$%A$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/log.cpython-312.pyc index bb62ef48e940958c2ecced14646bc341685952ee..b00956f0835639eca97d8a62eff9cae1df414601 100644 GIT binary patch delta 52 zcmdlSvpa_SG%qg~0}%9Xy1J3OhFL07KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c3x GSy}+cn-O{d delta 44 ycmdlTvpI(QG%qg~0}wR6xw4VFhFK_3KO;XkRX;tiLf<8|IJ+djVDm!eSy}*1Q4e?k diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/nodenames.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/nodenames.cpython-312.pyc index b62493189cbf8b139c72429e0d0d41399f839992..2b0a92456314a301177fa6941e2ae1bba7f29460 100644 GIT binary patch delta 52 zcmcaCcUzA8G%qg~0}%9Xy1J2Dk3}k8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p#A G2R8t)Di8Sp delta 44 ycmcaDcUg}6G%qg~0}wR6xw4U4k3}e4KO;XkRX;tiLf<8|IJ+djU~@1F2R8sY_zm{} diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/objects.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/objects.cpython-312.pyc index 9a80f50277962d337ae9411b669e6b6ca532c006..7112a843dc7a3389f65ba5d20b92a33fc4941db7 100644 GIT binary patch delta 52 zcmaE<|52a&G%qg~0}%9Xy1J438KYFJenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`II- GXQBYu0TGx0 delta 44 ycmeyU|5Bg(G%qg~0}wR6xw4V_8KY3Benx(7s(yN2g}zH_adt_5!DeozXQBXE#}AeO diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/saferepr.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/saferepr.cpython-312.pyc index 5b6a67cec8a41218cd41846720a5b3c34b1969c4..abd839841154cf9418d3ab8f58ad2bf3406137a9 100644 GIT binary patch delta 52 zcmccYecPM+G%qg~0}%9Xy1J2jCYw~8enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=h# Gvho1Z2N6{O delta 44 ycmccZec7A)G%qg~0}wR6xw4UaCYw;0enx(7s(yN2g}zH_adt_5!RCEzvhn~`r4Lg8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/serialization.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/serialization.cpython-312.pyc index 774d269afbf3615e62bd3224701966bacfaa6a58..07a37411acb997462cdd24b408ff7498f272794c 100644 GIT binary patch delta 52 zcmaDA@+pM-G%qg~0}%9Xy1J43JhN1?enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;qK Gb!q_Tu@Yzi delta 44 ycmewq@+yS;G%qg~0}wR6xw4V_JhM==enx(7s(yN2g}zH_adt_5!R9Z_b!q@-j}T@6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/sysinfo.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/sysinfo.cpython-312.pyc index 06b4558260b153bfe95ec507522691da6df34a27..d11a41ad3eb483c826915e1e2b7b1a0a7ccbc898 100644 GIT binary patch delta 52 zcmew-+9t+*nwOW00SJ0GUERoif>A0~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cM? GNlpN}OAz@0 delta 44 ycmZn@`zOkMnwOW00SFr3T-nHdf>9_`KO;XkRX;tiLf<8|IJ+djVDno>NlpMkOAhw{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/term.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/term.cpython-312.pyc index 58520e45995c9f1e0e735d1ba1b1bf4a2cf8ee39..0444bf614099876d67910101eab08c51d608dba6 100644 GIT binary patch delta 52 zcmaFh{lc63G%qg~0}%9Xy1J1&gGnk%KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%)6 Gv@!tCV-Z6D delta 44 ycmaFi{lJ_1G%qg~0}wR6xw4TvgGnezKO;XkRX;tiLf<8|IJ+djU~?~1v@!rw`42$= diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/text.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/text.cpython-312.pyc index e307663b6a18c52f88ab12ecbf9f67e87668eba8..2aa0b8ef9909d7928cada6f070285182289d8e80 100644 GIT binary patch delta 52 zcmZqn?e^t9&CAQh00h08u5RQmVv&l{&&bbB)lbi>(055K&MwI>(0BKX&<%HW+T73b GMG*k55fMB9 delta 44 ycmeD7ZT96p&CAQh00fP1u59EkVi5|`&&bbB)lbi>(055K&MwI>*gT!(iy{Cw_YXP% diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/threads.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/threads.cpython-312.pyc index 5eebb7eaf53207cf27a0357b77f85b433c8f176b..5cd145f31c6fd23e2a0ae84d33ed47b97bbe0f69 100644 GIT binary patch delta 52 zcmX?6a-oF#G%qg~0}%9Xy1J43KeJS3J3UE~&-YCHV#V?tT%v;jT`b J53&jc008}s5={UA delta 46 zcmcb;n(^{#M()$Ryj%=G(D>%cM(!o7LP7c&`MIh3>3J3UE~&-YCHV!LPqGRH004UP B5K906 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/timer2.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/__pycache__/timer2.cpython-312.pyc index 1bca50149b9a6ed1bd74df577d5f01c9f04f0df9..397a190a3933bb9391162789d4fb51e613d445b7 100644 GIT binary patch delta 52 zcmX?Rd(M{oG%qg~0}%9Xy1J1&mqjW@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%8g GjT8XDj1b!Z delta 44 ycmX?Sd(4*mG%qg~0}wR6xw4TvmqjQG%qg~0}%9Xy1J2@m02oPKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|ob@ Gl^FoH0}zA& delta 44 ycmZ2dJg1oZG%qg~0}wR6xw4U)m02iOKO;XkRX;tiLf<8|IJ+djV6zr;l^Fm)5e|X? diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/utils/static/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/utils/static/__pycache__/__init__.cpython-312.pyc index 2512667279ebd151a1be1e827a4b9044ff592a12..bebfe70791e82412d75e7e8e078a9f9f64a1ec41 100644 GIT binary patch delta 52 zcmdnOwug=TG%qg~0}%9Xy1J3OgHb9~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cLX GentSP9uT|$ delta 44 ycmdnPwuO!RG%qg~0}wR6xw4VFgHb3}KO;XkRX;tiLf<8|IJ+djVDnnWentQ@bPl=z diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/__init__.cpython-312.pyc index c9a40243da9f6bd84e62259ed155b84eb74dcdf8..3c4806e24b32c77584331c9d36e84fd9d370ec9b 100644 GIT binary patch delta 49 zcmZ3)w2F!QG%qg~0}%9Xx;l}2l2p8YMt*LpetKSozDsIxc1eDLzPn$9Zn&${#P!7h Db_ozY delta 41 vcmZ3*w1|oOG%qg~0}wR6xiXP^l2EvQMt*LpetKSozDsIxc1eE0#O=iZ27V4Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/autoscale.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/autoscale.cpython-312.pyc index 7c886b971e487369be17893ee1575f1690ac528b..5000a7dd22fe605db471a398e20294713379756c 100644 GIT binary patch delta 52 zcmeBnob1SbnwOW00SJ0GUERoS#UhoUpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^ku` GL< delta 44 ycmaD8|0JIKG%qg~0}wR6xw4U)i%lp}KO;XkRX;tiLf<8|IJ+djV6#5kUQGZ}xDPA< diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/control.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/control.cpython-312.pyc index 96e13aa03cab65d7ca6a4976e6b73453e9141049..307f4b7650a697e2113e1c07338a6c6f8d445261 100644 GIT binary patch delta 54 zcmaESoALE+M()$Ryj%=G(7WmCM((rhQgQkj`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JU$Os81ppv96e9ot delta 46 zcmaEToAL2&M()$Ryj%=G(D>%cM((rhLSgzD`MIh3>3J3UE~&-YCHV!LKe7Kz1pt^B B5+MKp diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/heartbeat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/heartbeat.cpython-312.pyc index 0e76950c1845f728d71da7c36cbafcd37ad27d44..37573f359407ca7bff47c31bfdb150b48eaed66f 100644 GIT binary patch delta 52 zcmX>mc}|l1G%qg~0}%9Xy1J2DomDD9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oG! G6FUH@F%Uoi delta 44 ycmX>nc}$Y~G%qg~0}wR6xw4U4omD78KO;XkRX;tiLf<8|IJ+djV6zWv6FUGjM-Dy! diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/loops.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/loops.cpython-312.pyc index b7baa51614db7347c8f69bcabb2fc659feb16d39..ba3ae05ebcae93a5a2c402d90610f21b763df3f3 100644 GIT binary patch delta 52 zcmZqB>CoXm&CAQh00h08u5RQGXOfE1&&bbB)lbi>(055K&MwI>(0BKX&<%HW+FZia GBMbnW5fDZI delta 44 ycmeCsY0%+5&CAQh00fP1u59EEXA%n0&&bbB)lbi>(055K&MwI>*j&TZBMbm24-P~C diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/pidbox.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/pidbox.cpython-312.pyc index 3bdf77eb3b5bdda2622f61cf22fedaf931f449cf..d7e5fa1610d3a9d0c8956776f341241e14fb654b 100644 GIT binary patch delta 52 zcmbPXxxkY9G%qg~0}%9Xy1J435{p!Do#HmKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw IC0lP30Lx|(rT_o{ delta 46 zcmeC1#MCy4iTgA!FBbz4G`_jAkvoP>C`>;iKQ~oBJ+DIFCAB!aB)?#DBU^7108um# AqyPW_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/state.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/state.cpython-312.pyc index bee3ab9944ad4870ab95a63e680aac56ed58c47d..e27f75c428fe403f427bf52dcf49112b8a87f496 100644 GIT binary patch delta 52 zcmcZ{cRP;zG%qg~0}%9Xy1J2@l~XE4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oci Gp&9_g*bs66 delta 44 ycmcZ|cR7yxG%qg~0}wR6xw4U)l~X80KO;XkRX;tiLf<8|IJ+djV6zsdp&9^6-VSg8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/strategy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/strategy.cpython-312.pyc index c444e376165a7b6f3b4574eb9cd6da1ad00a1e2e..08ea928d10e61ca4aa9703427b9d7546139cdc21 100644 GIT binary patch delta 52 zcmbQ?vA~1-G%qg~0}%9Xy1J2j8M{=xenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@nM Gp)vrw_Yo@q delta 44 ycmZ4BF~fuVG%qg~0}wR6xw4Ua8M{!penx(7s(yN2g}zH_adt_5!RFKKp)vqM{SPSs diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/worker.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/__pycache__/worker.cpython-312.pyc index cfe177b25aa0a4774ef41ec58abc4157b0889f2d..b88110fa4cd0d75bc9eabc252bc67d1c67846b7e 100644 GIT binary patch delta 54 zcmaE~l=0P4M()$Ryj%=G(7WmCMs80|saXAt{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IX`D5l0QG_r7XSbN delta 46 zcmaF0l=0D0M()$Ryj%=G(D>%cMs80|p-}yd{M=Oi^t=jvm(=3ylKg_rd7L$#0Ce~e A6#xJL diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/__init__.cpython-312.pyc index 959f35b6baba86a1ab679b2b88756294b5fd6f6d..d12c16e59d402979e8eae9030962a897e1850fe3 100644 GIT binary patch delta 51 zcmZo;?PKLW&CAQh00h08u5RSM%qW$ipOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%H2DML FGysrw5ZwR( delta 43 xcmeBUZDZv=&CAQh00fP1u59GK%qWzgpOK%Ns-K=$q3@DfoL!P%F!=}LGyok<4%+|# diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/agent.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/agent.cpython-312.pyc index c39f00a286bda34e54038be513bfe5994496c6f3..91ccb16f7f03c13e5aacab1dcca35251e8451418 100644 GIT binary patch delta 52 zcmX@eb&`wwG%qg~0}%9Xy1J3unn@~EKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$bA GOC|uNM-ZU^ delta 44 ycmX@fb&!kuG%qg~0}wR6xw4Vlnn@^DKO;XkRX;tiLf<8|IJ+djU~>Y~OC|s??GB#+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/connection.cpython-312.pyc index a372cee1dc2c05fceb295715603003dabe96ea73..0458c4f478ba4c1d71b4c6a98037282eaf9400fc 100644 GIT binary patch delta 52 zcmdnNe}JF+G%qg~0}%9Xy1J2Dok=Q7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oGc G2`d1gVGslW delta 44 ycmX@Wzk{FqG%qg~0}wR6xw4U4ok=K3KO;XkRX;tiLf<8|IJ+djV6zWX2`d0BzYYQb diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/consumer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/consumer.cpython-312.pyc index ac386d4b3fd9346da835fdfa71ff4e01c46d2b82..a0b0089a30f26f84afb371b3fdabf16871318a46 100644 GIT binary patch delta 54 zcmZ2An`zT*ChpU`yj%=G(7WmCM($2tsSN#${M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I%XnED0Oget=Kufz delta 46 zcmdlqn`zZ-ChpU`yj%=G(D>%cM($2tp#=Sm{M=Oi^t=jvm(=3ylKg_r>v&lj0A`~P A(055K&MwI>(0BKX&<%HW+HA>k GiWvZknh)Cm delta 44 ycmeAcXcpi;&CAQh00fP1u59F%VG)Yg&&bbB)lbi>(055K&MwI>*zCx1iWvYJm<`zg diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/events.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/events.cpython-312.pyc index df51d98e5822ac62481bdc32257b3875ce4bb500..7cc356d794b1a007006320d4eb20d222cc13d781 100644 GIT binary patch delta 52 zcmcaF_FRnnG%qg~0}%9Xy1J43Ka*6Nenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FfF GXAS_(-w@vb delta 44 ycmaDZc3+J9G%qg~0}wR6xw4V_Ka)_Lenx(7s(yN2g}zH_adt_5!Dba^XAS^Ry$;;~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/gossip.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/gossip.cpython-312.pyc index d39176fe69281a7f2d5fcb97c537720239f94412..f62dc79d36c14523c34dc9864e312487ba20527d 100644 GIT binary patch delta 52 zcmdlOzB8QrG%qg~0}%9Xy1J2jGpAIVenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-4D G4;2B=^%5}v delta 44 ycmdlPzA>EpG%qg~0}wR6xw4UaGpA6Tenx(7s(yN2g}zH_adt_5!R8yB4;2AZ%MdRB diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/heart.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/heart.cpython-312.pyc index f8ffc5c8c74ec96a9db9d1ecb5185711ea64235e..493aab51aeaa8b4ed35fb2a1b81c4fb7a6238e9b 100644 GIT binary patch delta 52 zcmdnTcZ`qwG%qg~0}%9Xy1J43Dw9;Ienx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-+%As}ZjN delta 44 ycmeyS_D+raG%qg~0}wR6xw4VFidiU5KO;XkRX;tiLf<8|IJ+djVDo(D>-+#vxeu)X diff --git a/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/tasks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/celery/worker/consumer/__pycache__/tasks.cpython-312.pyc index 9324d03cfab59a693fbfe2a014008f7f16ca93b3..de8e9648c97548966bd4cc1465de4faaae21199d 100644 GIT binary patch delta 52 zcmX>jc}0@@G%qg~0}%9Xy1J1&j!7z2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&DG GAQu3$j}VIh delta 44 ycmca2c}9}^G%qg~0}wR6xw4Tvj!7t1KO;XkRX;tiLf<8|IJ+djU~@B5AQu2UeGZ8L diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/METADATA b/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/METADATA deleted file mode 100644 index 3a7ea22e..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/METADATA +++ /dev/null @@ -1,77 +0,0 @@ -Metadata-Version: 2.4 -Name: certifi -Version: 2025.8.3 -Summary: Python package for providing Mozilla's CA Bundle. -Home-page: https://github.com/certifi/python-certifi -Author: Kenneth Reitz -Author-email: me@kennethreitz.com -License: MPL-2.0 -Project-URL: Source, https://github.com/certifi/python-certifi -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) -Classifier: Natural Language :: English -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Requires-Python: >=3.7 -License-File: LICENSE -Dynamic: author -Dynamic: author-email -Dynamic: classifier -Dynamic: description -Dynamic: home-page -Dynamic: license -Dynamic: license-file -Dynamic: project-url -Dynamic: requires-python -Dynamic: summary - -Certifi: Python SSL Certificates -================================ - -Certifi provides Mozilla's carefully curated collection of Root Certificates for -validating the trustworthiness of SSL certificates while verifying the identity -of TLS hosts. It has been extracted from the `Requests`_ project. - -Installation ------------- - -``certifi`` is available on PyPI. Simply install it with ``pip``:: - - $ pip install certifi - -Usage ------ - -To reference the installed certificate authority (CA) bundle, you can use the -built-in function:: - - >>> import certifi - - >>> certifi.where() - '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem' - -Or from the command line:: - - $ python -m certifi - /usr/local/lib/python3.7/site-packages/certifi/cacert.pem - -Enjoy! - -.. _`Requests`: https://requests.readthedocs.io/en/master/ - -Addition/Removal of Certificates --------------------------------- - -Certifi does not support any addition/removal or other modification of the -CA trust store content. This project is intended to provide a reliable and -highly portable root of trust to python deployments. Look to upstream projects -for methods to use alternate trust. diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/RECORD deleted file mode 100644 index 64c2430e..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/RECORD +++ /dev/null @@ -1,14 +0,0 @@ -certifi-2025.8.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -certifi-2025.8.3.dist-info/METADATA,sha256=z4sG3fosbP3nviub_TUpSb71z0bPmsp3Xa6ZIatGUe4,2422 -certifi-2025.8.3.dist-info/RECORD,, -certifi-2025.8.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91 -certifi-2025.8.3.dist-info/licenses/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 -certifi-2025.8.3.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 -certifi/__init__.py,sha256=0a5ro4KTYep37Oo0Z8TycCPXaDlOEtvuj2pNWZ_1t8Y,94 -certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 -certifi/__pycache__/__init__.cpython-312.pyc,, -certifi/__pycache__/__main__.cpython-312.pyc,, -certifi/__pycache__/core.cpython-312.pyc,, -certifi/cacert.pem,sha256=kQLmo2RKBxumzb1KU2mPKRxKZLGEUKCLwEZUi221zIs,287634 -certifi/core.py,sha256=XFXycndG5pf37ayeF8N32HUuDafsyhkVMbO4BAPWHa0,3394 -certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/WHEEL b/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/WHEEL deleted file mode 100644 index e7fa31b6..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: setuptools (80.9.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/licenses/LICENSE b/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/licenses/LICENSE deleted file mode 100644 index 62b076cd..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/licenses/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -This package contains a modified version of ca-bundle.crt: - -ca-bundle.crt -- Bundle of CA Root Certificates - -This is a bundle of X.509 certificates of public Certificate Authorities -(CA). These were automatically extracted from Mozilla's root certificates -file (certdata.txt). This file can be found in the mozilla source tree: -https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt -It contains the certificates in PEM format and therefore -can be directly used with curl / libcurl / php_curl, or with -an Apache+mod_ssl webserver for SSL client authentication. -Just configure this file as the SSLCACertificateFile.# - -***** BEGIN LICENSE BLOCK ***** -This Source Code Form is subject to the terms of the Mozilla Public License, -v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain -one at http://mozilla.org/MPL/2.0/. - -***** END LICENSE BLOCK ***** -@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/top_level.txt b/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/top_level.txt deleted file mode 100644 index 963eac53..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -certifi diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/certifi/__init__.py deleted file mode 100644 index fe2a8916..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/certifi/__init__.py +++ /dev/null @@ -1,4 +0,0 @@ -from .core import contents, where - -__all__ = ["contents", "where"] -__version__ = "2025.08.03" diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi/__main__.py b/gnx-react/venv/lib/python3.12/site-packages/certifi/__main__.py deleted file mode 100644 index 8945b5da..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/certifi/__main__.py +++ /dev/null @@ -1,12 +0,0 @@ -import argparse - -from certifi import contents, where - -parser = argparse.ArgumentParser() -parser.add_argument("-c", "--contents", action="store_true") -args = parser.parse_args() - -if args.contents: - print(contents()) -else: - print(where()) diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 9396a2e59d9df1ccb58b4b6fee2740fedcc8615b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmX@j%ge<81e))zWW)jK#~=<2FhLog6@ZNC3@HpLj5!Rsj8TlaOi@gX3@J=0%;`)~ z%qc8UES0R9Y%dvs$~2j7aU|#Gm89mC6yIVk&qyswEn)_W7qI||DlQ`fBU3#C3q1p4 zKTXzKEXn!E(zn>-;}dgo;^S{|$H$kY78Pga=f%gbWcUo!%J3^tKO;XkRX;tiLf<8| zIJ+dj0L0cUN=-~I(JxEQE7Q-(Owuo?EXl~vGuAUS(l5>|N!2Y#OwLYBPc7C@PAw|Q zOv}`dkI&4@EQycTE2#X%VUwGmQks)$SHump0p$E*aUk)5nURt4K7--|ZqW(l7r5jb O*l+MjHF6hm0_6Y*cTx8M diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc deleted file mode 100644 index b73b33a004331e055c05cda34b862c5a891c7b79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 620 zcmZuu&ubGw6n?Y6cQI`-2*FcOL|5Dn>a`Vwo{Qcjmu203CYxq|FgvNHcqoFX^x{qb z1SS3_UJQ+-j+crD@ghQRJvozRn~MW8@0;)Y-kUcwpBoJi1k;(I>)+VxAVc?+GVj-7;bo3Oh!|((UgTQm%_D9yugy&Ro78(EPI2Y8QNlqaa?svgPZuTBX0 z4y(W5>ap8?-I}@WiQ7JOuk2e#V9lU8f#%z-_qRSg{{qb^Y#iB*ncbS$twa0rzHzME euQp$7ely%RHx6!oH7@;-=-R>cm)mSj7XJq&w3l4~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc deleted file mode 100644 index 872278e19a128c5b109fedc383c53967db71341a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2052 zcmbVN-%le|6u$GLboy%t0ikR+w5d_4x@~01t_C&if{6-(0b<<7WHQcN=#+M*xpQGb z6T^cK>yx}K4;#aS4{Y!c*gwIqaxBdov(03&W(JL*WJF!+Xn#y*{*Kjpsk&Hp@jAoe>o7B!nPucq|IDPGnw9eZi6oLl zGMnu&9RStQp|`@JZIt5{a=a5$X70|syR@RrtbF1~ih{QcswhuTi}hc8SSVRlTv#)= z3bWW=r&f*SHwjiXTG+(qW}#wyR;X>$l4ah?zdlj04T^8pRBc^d!*;;~sGwN{14@qU z?%sY~MWb7Useui92;2@j5#^?stc%ILp*_04^0W8~VLa#fQ+Dptn43Fc)mB!G3U)%w z+ZxOU7GUxWrn)iNxlaRBD64W!=MK4cRt|epT|wvlRX?gCWruK$1`;fTlzZ*an+Q4) zmHnD>zn^s?9q@C%gX>~+89fmeoUn)IMYN-sT-1sC6n=Dfxq_Sn0HI!n#5aN|<0W3i^X2d=)51r zlSi@i`7lalzkBf@(#TFUvs3l#)YJJ!_Wj274<62)q{be9(M(U))02(#?MCX(!}*i= zz&DFuFFsy8j=%PYoH~+H?k`!@>tk@hpvMn_kAaWOmHH02DhKSs2A=7{_oCko zScVqJbFe}f=1xepHN(hpj)YCk(hYMhC%6C-CQ2s)V%HUbiuOVy`L~p$p)e1_ehD1N zSRUHF-;mQydAu%sBr*uWk=8I( z0?iR788Xb=2y;p1*nRJT(v_F%-hf5>ZE#&0OQO^Z`)?jp8rP@(x2l5g0z>+;s&w8} z2SXcd8Icr(97kAX?>QOKF563x*i1u=?d0C*{`}KB$MVdPG~*FV*nSJSekZIbx~0K= z6YOof4Ff~KiEmM8kIHD!Uih1-OkUyN&KKNQPxu z=B_yIh4fbYZ|EH|4khd+*<0Yw1dikW=0lv=iX$%eD@wFPj(hb?LSncn4AzCg-3LDj zV}FVhzYPrU%>6PrvNL}sj)ZRP-fAHTXA@j#ncLOQ5sUvsQD~a$u1vNoA)HNep;@nT ImUE%`7bF~ None: - _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] - - -if sys.version_info >= (3, 11): - - from importlib.resources import as_file, files - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the file - # in cases where we're inside of a zipimport situation until someone - # actually calls where(), but we don't want to re-extract the file - # on every call of where(), so we'll do it once then store it in a - # global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you to - # manage the cleanup of this file, so it doesn't actually return a - # path, it returns a context manager that will give you the path - # when you enter it and will do any cleanup when you leave it. In - # the common case of not needing a temporary file, it will just - # return the file system location and the __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - atexit.register(exit_cacert_ctx) - - return _CACERT_PATH - - def contents() -> str: - return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") - -else: - - from importlib.resources import path as get_path, read_text - - _CACERT_CTX = None - _CACERT_PATH = None - - def where() -> str: - # This is slightly terrible, but we want to delay extracting the - # file in cases where we're inside of a zipimport situation until - # someone actually calls where(), but we don't want to re-extract - # the file on every call of where(), so we'll do it once then store - # it in a global variable. - global _CACERT_CTX - global _CACERT_PATH - if _CACERT_PATH is None: - # This is slightly janky, the importlib.resources API wants you - # to manage the cleanup of this file, so it doesn't actually - # return a path, it returns a context manager that will give - # you the path when you enter it and will do any cleanup when - # you leave it. In the common case of not needing a temporary - # file, it will just return the file system location and the - # __exit__() is a no-op. - # - # We also have to hold onto the actual context manager, because - # it will do the cleanup whenever it gets garbage collected, so - # we will also store that at the global level as well. - _CACERT_CTX = get_path("certifi", "cacert.pem") - _CACERT_PATH = str(_CACERT_CTX.__enter__()) - atexit.register(exit_cacert_ctx) - - return _CACERT_PATH - - def contents() -> str: - return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi/py.typed b/gnx-react/venv/lib/python3.12/site-packages/certifi/py.typed deleted file mode 100644 index e69de29b..00000000 diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/INSTALLER b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/METADATA b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/METADATA deleted file mode 100644 index 65b5577f..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/METADATA +++ /dev/null @@ -1,750 +0,0 @@ -Metadata-Version: 2.4 -Name: charset-normalizer -Version: 3.4.3 -Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. -Author-email: "Ahmed R. TAHRI" -Maintainer-email: "Ahmed R. TAHRI" -License: MIT -Project-URL: Changelog, https://github.com/jawah/charset_normalizer/blob/master/CHANGELOG.md -Project-URL: Documentation, https://charset-normalizer.readthedocs.io/ -Project-URL: Code, https://github.com/jawah/charset_normalizer -Project-URL: Issue tracker, https://github.com/jawah/charset_normalizer/issues -Keywords: encoding,charset,charset-detector,detector,normalization,unicode,chardet,detect -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: 3.14 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Text Processing :: Linguistic -Classifier: Topic :: Utilities -Classifier: Typing :: Typed -Requires-Python: >=3.7 -Description-Content-Type: text/markdown -License-File: LICENSE -Provides-Extra: unicode-backport -Dynamic: license-file - -

    Charset Detection, for Everyone 👋

    - -

    - The Real First Universal Charset Detector
    - - - - - Download Count Total - - - - -

    -

    - Featured Packages
    - - Static Badge - - - Static Badge - -

    -

    - In other language (unofficial port - by the community)
    - - Static Badge - -

    - -> A library that helps you read text from an unknown charset encoding.
    Motivated by `chardet`, -> I'm trying to resolve the issue by taking a new approach. -> All IANA character set names for which the Python core library provides codecs are supported. - -

    - >>>>> 👉 Try Me Online Now, Then Adopt Me 👈 <<<<< -

    - -This project offers you an alternative to **Universal Charset Encoding Detector**, also known as **Chardet**. - -| Feature | [Chardet](https://github.com/chardet/chardet) | Charset Normalizer | [cChardet](https://github.com/PyYoshi/cChardet) | -|--------------------------------------------------|:---------------------------------------------:|:--------------------------------------------------------------------------------------------------:|:-----------------------------------------------:| -| `Fast` | ❌ | ✅ | ✅ | -| `Universal**` | ❌ | ✅ | ❌ | -| `Reliable` **without** distinguishable standards | ❌ | ✅ | ✅ | -| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | -| `License` | LGPL-2.1
    _restrictive_ | MIT | MPL-1.1
    _restrictive_ | -| `Native Python` | ✅ | ✅ | ❌ | -| `Detect spoken language` | ❌ | ✅ | N/A | -| `UnicodeDecodeError Safety` | ❌ | ✅ | ❌ | -| `Whl Size (min)` | 193.6 kB | 42 kB | ~200 kB | -| `Supported Encoding` | 33 | 🎉 [99](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 | - -

    -Reading Normalized TextCat Reading Text -

    - -*\*\* : They are clearly using specific code for a specific encoding even if covering most of used one*
    - -## ⚡ Performance - -This package offer better performance than its counterpart Chardet. Here are some numbers. - -| Package | Accuracy | Mean per file (ms) | File per sec (est) | -|-----------------------------------------------|:--------:|:------------------:|:------------------:| -| [chardet](https://github.com/chardet/chardet) | 86 % | 63 ms | 16 file/sec | -| charset-normalizer | **98 %** | **10 ms** | 100 file/sec | - -| Package | 99th percentile | 95th percentile | 50th percentile | -|-----------------------------------------------|:---------------:|:---------------:|:---------------:| -| [chardet](https://github.com/chardet/chardet) | 265 ms | 71 ms | 7 ms | -| charset-normalizer | 100 ms | 50 ms | 5 ms | - -_updated as of december 2024 using CPython 3.12_ - -Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload. - -> Stats are generated using 400+ files using default parameters. More details on used files, see GHA workflows. -> And yes, these results might change at any time. The dataset can be updated to include more files. -> The actual delays heavily depends on your CPU capabilities. The factors should remain the same. -> Keep in mind that the stats are generous and that Chardet accuracy vs our is measured using Chardet initial capability -> (e.g. Supported Encoding) Challenge-them if you want. - -## ✨ Installation - -Using pip: - -```sh -pip install charset-normalizer -U -``` - -## 🚀 Basic Usage - -### CLI -This package comes with a CLI. - -``` -usage: normalizer [-h] [-v] [-a] [-n] [-m] [-r] [-f] [-t THRESHOLD] - file [file ...] - -The Real First Universal Charset Detector. Discover originating encoding used -on text file. Normalize text to unicode. - -positional arguments: - files File(s) to be analysed - -optional arguments: - -h, --help show this help message and exit - -v, --verbose Display complementary information about file if any. - Stdout will contain logs about the detection process. - -a, --with-alternative - Output complementary possibilities if any. Top-level - JSON WILL be a list. - -n, --normalize Permit to normalize input file. If not set, program - does not write anything. - -m, --minimal Only output the charset detected to STDOUT. Disabling - JSON output. - -r, --replace Replace file when trying to normalize it instead of - creating a new one. - -f, --force Replace file without asking if you are sure, use this - flag with caution. - -t THRESHOLD, --threshold THRESHOLD - Define a custom maximum amount of chaos allowed in - decoded content. 0. <= chaos <= 1. - --version Show version information and exit. -``` - -```bash -normalizer ./data/sample.1.fr.srt -``` - -or - -```bash -python -m charset_normalizer ./data/sample.1.fr.srt -``` - -🎉 Since version 1.4.0 the CLI produce easily usable stdout result in JSON format. - -```json -{ - "path": "/home/default/projects/charset_normalizer/data/sample.1.fr.srt", - "encoding": "cp1252", - "encoding_aliases": [ - "1252", - "windows_1252" - ], - "alternative_encodings": [ - "cp1254", - "cp1256", - "cp1258", - "iso8859_14", - "iso8859_15", - "iso8859_16", - "iso8859_3", - "iso8859_9", - "latin_1", - "mbcs" - ], - "language": "French", - "alphabets": [ - "Basic Latin", - "Latin-1 Supplement" - ], - "has_sig_or_bom": false, - "chaos": 0.149, - "coherence": 97.152, - "unicode_path": null, - "is_preferred": true -} -``` - -### Python -*Just print out normalized text* -```python -from charset_normalizer import from_path - -results = from_path('./my_subtitle.srt') - -print(str(results.best())) -``` - -*Upgrade your code without effort* -```python -from charset_normalizer import detect -``` - -The above code will behave the same as **chardet**. We ensure that we offer the best (reasonable) BC result possible. - -See the docs for advanced usage : [readthedocs.io](https://charset-normalizer.readthedocs.io/en/latest/) - -## 😇 Why - -When I started using Chardet, I noticed that it was not suited to my expectations, and I wanted to propose a -reliable alternative using a completely different method. Also! I never back down on a good challenge! - -I **don't care** about the **originating charset** encoding, because **two different tables** can -produce **two identical rendered string.** -What I want is to get readable text, the best I can. - -In a way, **I'm brute forcing text decoding.** How cool is that ? 😎 - -Don't confuse package **ftfy** with charset-normalizer or chardet. ftfy goal is to repair Unicode string whereas charset-normalizer to convert raw file in unknown encoding to unicode. - -## 🍰 How - - - Discard all charset encoding table that could not fit the binary content. - - Measure noise, or the mess once opened (by chunks) with a corresponding charset encoding. - - Extract matches with the lowest mess detected. - - Additionally, we measure coherence / probe for a language. - -**Wait a minute**, what is noise/mess and coherence according to **YOU ?** - -*Noise :* I opened hundred of text files, **written by humans**, with the wrong encoding table. **I observed**, then -**I established** some ground rules about **what is obvious** when **it seems like** a mess (aka. defining noise in rendered text). - I know that my interpretation of what is noise is probably incomplete, feel free to contribute in order to - improve or rewrite it. - -*Coherence :* For each language there is on earth, we have computed ranked letter appearance occurrences (the best we can). So I thought -that intel is worth something here. So I use those records against decoded text to check if I can detect intelligent design. - -## ⚡ Known limitations - - - Language detection is unreliable when text contains two or more languages sharing identical letters. (eg. HTML (english tags) + Turkish content (Sharing Latin characters)) - - Every charset detector heavily depends on sufficient content. In common cases, do not bother run detection on very tiny content. - -## ⚠️ About Python EOLs - -**If you are running:** - -- Python >=2.7,<3.5: Unsupported -- Python 3.5: charset-normalizer < 2.1 -- Python 3.6: charset-normalizer < 3.1 -- Python 3.7: charset-normalizer < 4.0 - -Upgrade your Python interpreter as soon as possible. - -## 👤 Contributing - -Contributions, issues and feature requests are very much welcome.
    -Feel free to check [issues page](https://github.com/ousret/charset_normalizer/issues) if you want to contribute. - -## 📝 License - -Copyright © [Ahmed TAHRI @Ousret](https://github.com/Ousret).
    -This project is [MIT](https://github.com/Ousret/charset_normalizer/blob/master/LICENSE) licensed. - -Characters frequencies used in this project © 2012 [Denny Vrandečić](http://simia.net/letters/) - -## 💼 For Enterprise - -Professional support for charset-normalizer is available as part of the [Tidelift -Subscription][1]. Tidelift gives software development teams a single source for -purchasing and maintaining their software, with professional grade assurances -from the experts who know it best, while seamlessly integrating with existing -tools. - -[1]: https://tidelift.com/subscription/pkg/pypi-charset-normalizer?utm_source=pypi-charset-normalizer&utm_medium=readme - -[![OpenSSF Best Practices](https://www.bestpractices.dev/projects/7297/badge)](https://www.bestpractices.dev/projects/7297) - -# Changelog -All notable changes to charset-normalizer will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - -## [3.4.3](https://github.com/Ousret/charset_normalizer/compare/3.4.2...3.4.3) (2025-08-09) - -### Changed -- mypy(c) is no longer a required dependency at build time if `CHARSET_NORMALIZER_USE_MYPYC` isn't set to `1`. (#595) (#583) -- automatically lower confidence on small bytes samples that are not Unicode in `detect` output legacy function. (#391) - -### Added -- Custom build backend to overcome inability to mark mypy as an optional dependency in the build phase. -- Support for Python 3.14 - -### Fixed -- sdist archive contained useless directories. -- automatically fallback on valid UTF-16 or UTF-32 even if the md says it's noisy. (#633) - -### Misc -- SBOM are automatically published to the relevant GitHub release to comply with regulatory changes. - Each published wheel comes with its SBOM. We choose CycloneDX as the format. -- Prebuilt optimized wheel are no longer distributed by default for CPython 3.7 due to a change in cibuildwheel. - -## [3.4.2](https://github.com/Ousret/charset_normalizer/compare/3.4.1...3.4.2) (2025-05-02) - -### Fixed -- Addressed the DeprecationWarning in our CLI regarding `argparse.FileType` by backporting the target class into the package. (#591) -- Improved the overall reliability of the detector with CJK Ideographs. (#605) (#587) - -### Changed -- Optional mypyc compilation upgraded to version 1.15 for Python >= 3.8 - -## [3.4.1](https://github.com/Ousret/charset_normalizer/compare/3.4.0...3.4.1) (2024-12-24) - -### Changed -- Project metadata are now stored using `pyproject.toml` instead of `setup.cfg` using setuptools as the build backend. -- Enforce annotation delayed loading for a simpler and consistent types in the project. -- Optional mypyc compilation upgraded to version 1.14 for Python >= 3.8 - -### Added -- pre-commit configuration. -- noxfile. - -### Removed -- `build-requirements.txt` as per using `pyproject.toml` native build configuration. -- `bin/integration.py` and `bin/serve.py` in favor of downstream integration test (see noxfile). -- `setup.cfg` in favor of `pyproject.toml` metadata configuration. -- Unused `utils.range_scan` function. - -### Fixed -- Converting content to Unicode bytes may insert `utf_8` instead of preferred `utf-8`. (#572) -- Deprecation warning "'count' is passed as positional argument" when converting to Unicode bytes on Python 3.13+ - -## [3.4.0](https://github.com/Ousret/charset_normalizer/compare/3.3.2...3.4.0) (2024-10-08) - -### Added -- Argument `--no-preemptive` in the CLI to prevent the detector to search for hints. -- Support for Python 3.13 (#512) - -### Fixed -- Relax the TypeError exception thrown when trying to compare a CharsetMatch with anything else than a CharsetMatch. -- Improved the general reliability of the detector based on user feedbacks. (#520) (#509) (#498) (#407) (#537) -- Declared charset in content (preemptive detection) not changed when converting to utf-8 bytes. (#381) - -## [3.3.2](https://github.com/Ousret/charset_normalizer/compare/3.3.1...3.3.2) (2023-10-31) - -### Fixed -- Unintentional memory usage regression when using large payload that match several encoding (#376) -- Regression on some detection case showcased in the documentation (#371) - -### Added -- Noise (md) probe that identify malformed arabic representation due to the presence of letters in isolated form (credit to my wife) - -## [3.3.1](https://github.com/Ousret/charset_normalizer/compare/3.3.0...3.3.1) (2023-10-22) - -### Changed -- Optional mypyc compilation upgraded to version 1.6.1 for Python >= 3.8 -- Improved the general detection reliability based on reports from the community - -## [3.3.0](https://github.com/Ousret/charset_normalizer/compare/3.2.0...3.3.0) (2023-09-30) - -### Added -- Allow to execute the CLI (e.g. normalizer) through `python -m charset_normalizer.cli` or `python -m charset_normalizer` -- Support for 9 forgotten encoding that are supported by Python but unlisted in `encoding.aliases` as they have no alias (#323) - -### Removed -- (internal) Redundant utils.is_ascii function and unused function is_private_use_only -- (internal) charset_normalizer.assets is moved inside charset_normalizer.constant - -### Changed -- (internal) Unicode code blocks in constants are updated using the latest v15.0.0 definition to improve detection -- Optional mypyc compilation upgraded to version 1.5.1 for Python >= 3.8 - -### Fixed -- Unable to properly sort CharsetMatch when both chaos/noise and coherence were close due to an unreachable condition in \_\_lt\_\_ (#350) - -## [3.2.0](https://github.com/Ousret/charset_normalizer/compare/3.1.0...3.2.0) (2023-06-07) - -### Changed -- Typehint for function `from_path` no longer enforce `PathLike` as its first argument -- Minor improvement over the global detection reliability - -### Added -- Introduce function `is_binary` that relies on main capabilities, and optimized to detect binaries -- Propagate `enable_fallback` argument throughout `from_bytes`, `from_path`, and `from_fp` that allow a deeper control over the detection (default True) -- Explicit support for Python 3.12 - -### Fixed -- Edge case detection failure where a file would contain 'very-long' camel cased word (Issue #289) - -## [3.1.0](https://github.com/Ousret/charset_normalizer/compare/3.0.1...3.1.0) (2023-03-06) - -### Added -- Argument `should_rename_legacy` for legacy function `detect` and disregard any new arguments without errors (PR #262) - -### Removed -- Support for Python 3.6 (PR #260) - -### Changed -- Optional speedup provided by mypy/c 1.0.1 - -## [3.0.1](https://github.com/Ousret/charset_normalizer/compare/3.0.0...3.0.1) (2022-11-18) - -### Fixed -- Multi-bytes cutter/chunk generator did not always cut correctly (PR #233) - -### Changed -- Speedup provided by mypy/c 0.990 on Python >= 3.7 - -## [3.0.0](https://github.com/Ousret/charset_normalizer/compare/2.1.1...3.0.0) (2022-10-20) - -### Added -- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results -- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES -- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio -- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) - -### Changed -- Build with static metadata using 'build' frontend -- Make the language detection stricter -- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 - -### Fixed -- CLI with opt --normalize fail when using full path for files -- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it -- Sphinx warnings when generating the documentation - -### Removed -- Coherence detector no longer return 'Simple English' instead return 'English' -- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' -- Breaking: Method `first()` and `best()` from CharsetMatch -- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) -- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches -- Breaking: Top-level function `normalize` -- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch -- Support for the backport `unicodedata2` - -## [3.0.0rc1](https://github.com/Ousret/charset_normalizer/compare/3.0.0b2...3.0.0rc1) (2022-10-18) - -### Added -- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results -- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES -- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio - -### Changed -- Build with static metadata using 'build' frontend -- Make the language detection stricter - -### Fixed -- CLI with opt --normalize fail when using full path for files -- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it - -### Removed -- Coherence detector no longer return 'Simple English' instead return 'English' -- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' - -## [3.0.0b2](https://github.com/Ousret/charset_normalizer/compare/3.0.0b1...3.0.0b2) (2022-08-21) - -### Added -- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) - -### Removed -- Breaking: Method `first()` and `best()` from CharsetMatch -- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) - -### Fixed -- Sphinx warnings when generating the documentation - -## [3.0.0b1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...3.0.0b1) (2022-08-15) - -### Changed -- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 - -### Removed -- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches -- Breaking: Top-level function `normalize` -- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch -- Support for the backport `unicodedata2` - -## [2.1.1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...2.1.1) (2022-08-19) - -### Deprecated -- Function `normalize` scheduled for removal in 3.0 - -### Changed -- Removed useless call to decode in fn is_unprintable (#206) - -### Fixed -- Third-party library (i18n xgettext) crashing not recognizing utf_8 (PEP 263) with underscore from [@aleksandernovikov](https://github.com/aleksandernovikov) (#204) - -## [2.1.0](https://github.com/Ousret/charset_normalizer/compare/2.0.12...2.1.0) (2022-06-19) - -### Added -- Output the Unicode table version when running the CLI with `--version` (PR #194) - -### Changed -- Re-use decoded buffer for single byte character sets from [@nijel](https://github.com/nijel) (PR #175) -- Fixing some performance bottlenecks from [@deedy5](https://github.com/deedy5) (PR #183) - -### Fixed -- Workaround potential bug in cpython with Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space (PR #175) -- CLI default threshold aligned with the API threshold from [@oleksandr-kuzmenko](https://github.com/oleksandr-kuzmenko) (PR #181) - -### Removed -- Support for Python 3.5 (PR #192) - -### Deprecated -- Use of backport unicodedata from `unicodedata2` as Python is quickly catching up, scheduled for removal in 3.0 (PR #194) - -## [2.0.12](https://github.com/Ousret/charset_normalizer/compare/2.0.11...2.0.12) (2022-02-12) - -### Fixed -- ASCII miss-detection on rare cases (PR #170) - -## [2.0.11](https://github.com/Ousret/charset_normalizer/compare/2.0.10...2.0.11) (2022-01-30) - -### Added -- Explicit support for Python 3.11 (PR #164) - -### Changed -- The logging behavior have been completely reviewed, now using only TRACE and DEBUG levels (PR #163 #165) - -## [2.0.10](https://github.com/Ousret/charset_normalizer/compare/2.0.9...2.0.10) (2022-01-04) - -### Fixed -- Fallback match entries might lead to UnicodeDecodeError for large bytes sequence (PR #154) - -### Changed -- Skipping the language-detection (CD) on ASCII (PR #155) - -## [2.0.9](https://github.com/Ousret/charset_normalizer/compare/2.0.8...2.0.9) (2021-12-03) - -### Changed -- Moderating the logging impact (since 2.0.8) for specific environments (PR #147) - -### Fixed -- Wrong logging level applied when setting kwarg `explain` to True (PR #146) - -## [2.0.8](https://github.com/Ousret/charset_normalizer/compare/2.0.7...2.0.8) (2021-11-24) -### Changed -- Improvement over Vietnamese detection (PR #126) -- MD improvement on trailing data and long foreign (non-pure latin) data (PR #124) -- Efficiency improvements in cd/alphabet_languages from [@adbar](https://github.com/adbar) (PR #122) -- call sum() without an intermediary list following PEP 289 recommendations from [@adbar](https://github.com/adbar) (PR #129) -- Code style as refactored by Sourcery-AI (PR #131) -- Minor adjustment on the MD around european words (PR #133) -- Remove and replace SRTs from assets / tests (PR #139) -- Initialize the library logger with a `NullHandler` by default from [@nmaynes](https://github.com/nmaynes) (PR #135) -- Setting kwarg `explain` to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135) - -### Fixed -- Fix large (misleading) sequence giving UnicodeDecodeError (PR #137) -- Avoid using too insignificant chunk (PR #137) - -### Added -- Add and expose function `set_logging_handler` to configure a specific StreamHandler from [@nmaynes](https://github.com/nmaynes) (PR #135) -- Add `CHANGELOG.md` entries, format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) (PR #141) - -## [2.0.7](https://github.com/Ousret/charset_normalizer/compare/2.0.6...2.0.7) (2021-10-11) -### Added -- Add support for Kazakh (Cyrillic) language detection (PR #109) - -### Changed -- Further, improve inferring the language from a given single-byte code page (PR #112) -- Vainly trying to leverage PEP263 when PEP3120 is not supported (PR #116) -- Refactoring for potential performance improvements in loops from [@adbar](https://github.com/adbar) (PR #113) -- Various detection improvement (MD+CD) (PR #117) - -### Removed -- Remove redundant logging entry about detected language(s) (PR #115) - -### Fixed -- Fix a minor inconsistency between Python 3.5 and other versions regarding language detection (PR #117 #102) - -## [2.0.6](https://github.com/Ousret/charset_normalizer/compare/2.0.5...2.0.6) (2021-09-18) -### Fixed -- Unforeseen regression with the loss of the backward-compatibility with some older minor of Python 3.5.x (PR #100) -- Fix CLI crash when using --minimal output in certain cases (PR #103) - -### Changed -- Minor improvement to the detection efficiency (less than 1%) (PR #106 #101) - -## [2.0.5](https://github.com/Ousret/charset_normalizer/compare/2.0.4...2.0.5) (2021-09-14) -### Changed -- The project now comply with: flake8, mypy, isort and black to ensure a better overall quality (PR #81) -- The BC-support with v1.x was improved, the old staticmethods are restored (PR #82) -- The Unicode detection is slightly improved (PR #93) -- Add syntax sugar \_\_bool\_\_ for results CharsetMatches list-container (PR #91) - -### Removed -- The project no longer raise warning on tiny content given for detection, will be simply logged as warning instead (PR #92) - -### Fixed -- In some rare case, the chunks extractor could cut in the middle of a multi-byte character and could mislead the mess detection (PR #95) -- Some rare 'space' characters could trip up the UnprintablePlugin/Mess detection (PR #96) -- The MANIFEST.in was not exhaustive (PR #78) - -## [2.0.4](https://github.com/Ousret/charset_normalizer/compare/2.0.3...2.0.4) (2021-07-30) -### Fixed -- The CLI no longer raise an unexpected exception when no encoding has been found (PR #70) -- Fix accessing the 'alphabets' property when the payload contains surrogate characters (PR #68) -- The logger could mislead (explain=True) on detected languages and the impact of one MBCS match (PR #72) -- Submatch factoring could be wrong in rare edge cases (PR #72) -- Multiple files given to the CLI were ignored when publishing results to STDOUT. (After the first path) (PR #72) -- Fix line endings from CRLF to LF for certain project files (PR #67) - -### Changed -- Adjust the MD to lower the sensitivity, thus improving the global detection reliability (PR #69 #76) -- Allow fallback on specified encoding if any (PR #71) - -## [2.0.3](https://github.com/Ousret/charset_normalizer/compare/2.0.2...2.0.3) (2021-07-16) -### Changed -- Part of the detection mechanism has been improved to be less sensitive, resulting in more accurate detection results. Especially ASCII. (PR #63) -- According to the community wishes, the detection will fall back on ASCII or UTF-8 in a last-resort case. (PR #64) - -## [2.0.2](https://github.com/Ousret/charset_normalizer/compare/2.0.1...2.0.2) (2021-07-15) -### Fixed -- Empty/Too small JSON payload miss-detection fixed. Report from [@tseaver](https://github.com/tseaver) (PR #59) - -### Changed -- Don't inject unicodedata2 into sys.modules from [@akx](https://github.com/akx) (PR #57) - -## [2.0.1](https://github.com/Ousret/charset_normalizer/compare/2.0.0...2.0.1) (2021-07-13) -### Fixed -- Make it work where there isn't a filesystem available, dropping assets frequencies.json. Report from [@sethmlarson](https://github.com/sethmlarson). (PR #55) -- Using explain=False permanently disable the verbose output in the current runtime (PR #47) -- One log entry (language target preemptive) was not show in logs when using explain=True (PR #47) -- Fix undesired exception (ValueError) on getitem of instance CharsetMatches (PR #52) - -### Changed -- Public function normalize default args values were not aligned with from_bytes (PR #53) - -### Added -- You may now use charset aliases in cp_isolation and cp_exclusion arguments (PR #47) - -## [2.0.0](https://github.com/Ousret/charset_normalizer/compare/1.4.1...2.0.0) (2021-07-02) -### Changed -- 4x to 5 times faster than the previous 1.4.0 release. At least 2x faster than Chardet. -- Accent has been made on UTF-8 detection, should perform rather instantaneous. -- The backward compatibility with Chardet has been greatly improved. The legacy detect function returns an identical charset name whenever possible. -- The detection mechanism has been slightly improved, now Turkish content is detected correctly (most of the time) -- The program has been rewritten to ease the readability and maintainability. (+Using static typing)+ -- utf_7 detection has been reinstated. - -### Removed -- This package no longer require anything when used with Python 3.5 (Dropped cached_property) -- Removed support for these languages: Catalan, Esperanto, Kazakh, Baque, Volapük, Azeri, Galician, Nynorsk, Macedonian, and Serbocroatian. -- The exception hook on UnicodeDecodeError has been removed. - -### Deprecated -- Methods coherence_non_latin, w_counter, chaos_secondary_pass of the class CharsetMatch are now deprecated and scheduled for removal in v3.0 - -### Fixed -- The CLI output used the relative path of the file(s). Should be absolute. - -## [1.4.1](https://github.com/Ousret/charset_normalizer/compare/1.4.0...1.4.1) (2021-05-28) -### Fixed -- Logger configuration/usage no longer conflict with others (PR #44) - -## [1.4.0](https://github.com/Ousret/charset_normalizer/compare/1.3.9...1.4.0) (2021-05-21) -### Removed -- Using standard logging instead of using the package loguru. -- Dropping nose test framework in favor of the maintained pytest. -- Choose to not use dragonmapper package to help with gibberish Chinese/CJK text. -- Require cached_property only for Python 3.5 due to constraint. Dropping for every other interpreter version. -- Stop support for UTF-7 that does not contain a SIG. -- Dropping PrettyTable, replaced with pure JSON output in CLI. - -### Fixed -- BOM marker in a CharsetNormalizerMatch instance could be False in rare cases even if obviously present. Due to the sub-match factoring process. -- Not searching properly for the BOM when trying utf32/16 parent codec. - -### Changed -- Improving the package final size by compressing frequencies.json. -- Huge improvement over the larges payload. - -### Added -- CLI now produces JSON consumable output. -- Return ASCII if given sequences fit. Given reasonable confidence. - -## [1.3.9](https://github.com/Ousret/charset_normalizer/compare/1.3.8...1.3.9) (2021-05-13) - -### Fixed -- In some very rare cases, you may end up getting encode/decode errors due to a bad bytes payload (PR #40) - -## [1.3.8](https://github.com/Ousret/charset_normalizer/compare/1.3.7...1.3.8) (2021-05-12) - -### Fixed -- Empty given payload for detection may cause an exception if trying to access the `alphabets` property. (PR #39) - -## [1.3.7](https://github.com/Ousret/charset_normalizer/compare/1.3.6...1.3.7) (2021-05-12) - -### Fixed -- The legacy detect function should return UTF-8-SIG if sig is present in the payload. (PR #38) - -## [1.3.6](https://github.com/Ousret/charset_normalizer/compare/1.3.5...1.3.6) (2021-02-09) - -### Changed -- Amend the previous release to allow prettytable 2.0 (PR #35) - -## [1.3.5](https://github.com/Ousret/charset_normalizer/compare/1.3.4...1.3.5) (2021-02-08) - -### Fixed -- Fix error while using the package with a python pre-release interpreter (PR #33) - -### Changed -- Dependencies refactoring, constraints revised. - -### Added -- Add python 3.9 and 3.10 to the supported interpreters - -MIT License - -Copyright (c) 2025 TAHRI Ahmed R. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/RECORD deleted file mode 100644 index f55fbcbf..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/RECORD +++ /dev/null @@ -1,35 +0,0 @@ -../../../bin/normalizer,sha256=6_6EhxdV-NLHEO62bwZ8CF0jBOrhOap2MlA9I0DgZj4,261 -charset_normalizer-3.4.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -charset_normalizer-3.4.3.dist-info/METADATA,sha256=nBNOskPUtcqHtaSPPaJafjXrlicPcPIgLFzpJQTgvaA,36700 -charset_normalizer-3.4.3.dist-info/RECORD,, -charset_normalizer-3.4.3.dist-info/WHEEL,sha256=DxRnWQz-Kp9-4a4hdDHsSv0KUC3H7sN9Nbef3-8RjXU,190 -charset_normalizer-3.4.3.dist-info/entry_points.txt,sha256=ADSTKrkXZ3hhdOVFi6DcUEHQRS0xfxDIE_pEz4wLIXA,65 -charset_normalizer-3.4.3.dist-info/licenses/LICENSE,sha256=bQ1Bv-FwrGx9wkjJpj4lTQ-0WmDVCoJX0K-SxuJJuIc,1071 -charset_normalizer-3.4.3.dist-info/top_level.txt,sha256=7ASyzePr8_xuZWJsnqJjIBtyV8vhEo0wBCv1MPRRi3Q,19 -charset_normalizer/__init__.py,sha256=OKRxRv2Zhnqk00tqkN0c1BtJjm165fWXLydE52IKuHc,1590 -charset_normalizer/__main__.py,sha256=yzYxMR-IhKRHYwcSlavEv8oGdwxsR89mr2X09qXGdps,109 -charset_normalizer/__pycache__/__init__.cpython-312.pyc,, -charset_normalizer/__pycache__/__main__.cpython-312.pyc,, -charset_normalizer/__pycache__/api.cpython-312.pyc,, -charset_normalizer/__pycache__/cd.cpython-312.pyc,, -charset_normalizer/__pycache__/constant.cpython-312.pyc,, -charset_normalizer/__pycache__/legacy.cpython-312.pyc,, -charset_normalizer/__pycache__/md.cpython-312.pyc,, -charset_normalizer/__pycache__/models.cpython-312.pyc,, -charset_normalizer/__pycache__/utils.cpython-312.pyc,, -charset_normalizer/__pycache__/version.cpython-312.pyc,, -charset_normalizer/api.py,sha256=V07i8aVeCD8T2fSia3C-fn0i9t8qQguEBhsqszg32Ns,22668 -charset_normalizer/cd.py,sha256=WKTo1HDb-H9HfCDc3Bfwq5jzS25Ziy9SE2a74SgTq88,12522 -charset_normalizer/cli/__init__.py,sha256=D8I86lFk2-py45JvqxniTirSj_sFyE6sjaY_0-G1shc,136 -charset_normalizer/cli/__main__.py,sha256=dMaXG6IJXRvqq8z2tig7Qb83-BpWTln55ooiku5_uvg,12646 -charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc,, -charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc,, -charset_normalizer/constant.py,sha256=7UVY4ldYhmQMHUdgQ_sgZmzcQ0xxYxpBunqSZ-XJZ8U,42713 -charset_normalizer/legacy.py,sha256=sYBzSpzsRrg_wF4LP536pG64BItw7Tqtc3SMQAHvFLM,2731 -charset_normalizer/md.cpython-312-x86_64-linux-gnu.so,sha256=sZ7umtJLjKfA83NFJ7npkiDyr06zDT8cWtl6uIx2MsM,15912 -charset_normalizer/md.py,sha256=-_oN3h3_X99nkFfqamD3yu45DC_wfk5odH0Tr_CQiXs,20145 -charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so,sha256=froFxeWX3QD-u-6lU-1gyOZmEo6pgm3i-HdUWz2J8ro,289536 -charset_normalizer/models.py,sha256=lKXhOnIPtiakbK3i__J9wpOfzx3JDTKj7Dn3Rg0VaRI,12394 -charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -charset_normalizer/utils.py,sha256=sTejPgrdlNsKNucZfJCxJ95lMTLA0ShHLLE3n5wpT9Q,12170 -charset_normalizer/version.py,sha256=hBN3id1io4HMVPtyDn9IIRVShbBM0kgVs3haVtppZOE,115 diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/WHEEL b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/WHEEL deleted file mode 100644 index f3e8a970..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/WHEEL +++ /dev/null @@ -1,7 +0,0 @@ -Wheel-Version: 1.0 -Generator: setuptools (80.9.0) -Root-Is-Purelib: false -Tag: cp312-cp312-manylinux_2_17_x86_64 -Tag: cp312-cp312-manylinux2014_x86_64 -Tag: cp312-cp312-manylinux_2_28_x86_64 - diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/entry_points.txt b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/entry_points.txt deleted file mode 100644 index 65619e73..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/entry_points.txt +++ /dev/null @@ -1,2 +0,0 @@ -[console_scripts] -normalizer = charset_normalizer.cli:cli_detect diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/licenses/LICENSE b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/licenses/LICENSE deleted file mode 100644 index 9725772c..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/licenses/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2025 TAHRI Ahmed R. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/top_level.txt b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/top_level.txt deleted file mode 100644 index 66958f0a..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer-3.4.3.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -charset_normalizer diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py deleted file mode 100644 index 0d3a3799..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py +++ /dev/null @@ -1,48 +0,0 @@ -""" -Charset-Normalizer -~~~~~~~~~~~~~~ -The Real First Universal Charset Detector. -A library that helps you read text from an unknown charset encoding. -Motivated by chardet, This package is trying to resolve the issue by taking a new approach. -All IANA character set names for which the Python core library provides codecs are supported. - -Basic usage: - >>> from charset_normalizer import from_bytes - >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8')) - >>> best_guess = results.best() - >>> str(best_guess) - 'Bсеки човек има право на образование. Oбразованието!' - -Others methods and usages are available - see the full documentation -at . -:copyright: (c) 2021 by Ahmed TAHRI -:license: MIT, see LICENSE for more details. -""" - -from __future__ import annotations - -import logging - -from .api import from_bytes, from_fp, from_path, is_binary -from .legacy import detect -from .models import CharsetMatch, CharsetMatches -from .utils import set_logging_handler -from .version import VERSION, __version__ - -__all__ = ( - "from_fp", - "from_path", - "from_bytes", - "is_binary", - "detect", - "CharsetMatch", - "CharsetMatches", - "__version__", - "VERSION", - "set_logging_handler", -) - -# Attach a NullHandler to the top level logger by default -# https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library - -logging.getLogger("charset_normalizer").addHandler(logging.NullHandler()) diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__main__.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__main__.py deleted file mode 100644 index e0e76f7b..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__main__.py +++ /dev/null @@ -1,6 +0,0 @@ -from __future__ import annotations - -from .cli import cli_detect - -if __name__ == "__main__": - cli_detect() diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 5681c0708912dd64b4d45a8e1f0c695f7f9169f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1771 zcmcIkPiq@T6rYu3$y(V?Z66AS(kX>lYHca8p)DdcIEjq~v0M_Tho!KLc1PNcXa6uW zD@Q#PHmz?@$SF%!)YxnT>y_tFM{odc- zXJ>T;U+wQdoR5nLJypW^D`brJA_nF=WFrIFnw?{smosvj;`1zTQ9Tri9@wmkWvS`fi_c0rE%{-=vaSGT?Q612eb72_InT5Q!biLV*WCggGTP zmh`^FT^@Lt_&D^xCF!8Sgo+z#*~rNsnS+ zB_F_RECaAD0@kPCQeB9MDm_W|)iuFBJ-{Rkc|a@&05XPK8|{tMF0mx#7=p(>@uqT3y>rE>N2i)yB zvWcr!4X<8Vy{Z~+!||YF_cpd~xAZ1+E$R!}#5=9M(I$)wpEsk(5%t8z$wH35j%)vMbDv>%+u>g(BF5L9FGH znbBzO5NSEd+^Z55@NyBF-ef_q2Qy+ikUK^>sFl9hynUy&+fFK`sb(BfWSTXd!(v3d zq{x&a(~6W8QM;2@6q!?GR*@MX$-?WotG%6+OcU~Nnu%_j-AG29nkI)Ogp$$-Op+&| zn|YZyRsND9qdj5`Qol*jgZX1(;y;;+BxEylUK(M~@F--;GhqxomwQy+g1{+HbYk1v zS?o!r4b3qUzDF-W1-<;T;RGIS^!)pcn^f$}AXNMctTIbB`qb|?VA(aobWN<)udX(P zE9uH;MTs|bPs21_-<76W4+k%&uR#nEqwD-VaHh&F?gBZ_Ynt{vx2P5V`4DLzJVkSV zq2?)SK1T06L02B5%TG}4yilp+4ol}4X$yy?Gc-R$^YOyvQ?zu3R)=UcUfVkQ z4+KFh(nug(D))$a#msv%Zvg~*`F+on@87N1BG?eJI``xmBuG+#B11wz29g$m zqC-jmLm7^b0c;!q(%1iM0(DeJ$h3#`0`^)1VcLN?M5>$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc deleted file mode 100644 index d9603db0a9d68036bbccd6242a4fb2eb80ec5483..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18182 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 bX~2->iock?#Ko$W4TC diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc deleted file mode 100644 index ae9b3d43f2e65718d50e1160170c803e80abe758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13287 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc deleted file mode 100644 index d29a5cdd8ec9094c693772f7d1470ac4c720ad2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40801 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%0AQwLV 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 A0{{R3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc deleted file mode 100644 index 61f8ef2f74bc7882848742d2be1968613c0ac026..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3001 zcmZ`*O>7&-6`tiT$t6Wnf0iu8vN5)sL_{pIi4n&&(kQM(#f}rn)lXY94HhfzkX&hh zsM(<;vJ{{cE}$epqqYYte?SgBI8cGQy`;w$DbN;e0m&9nVj-gj+M) zm=#SaD|utl2%4d62xv(Q8evn;${rmuB4#ujHQTan0wN;q1lh0=GvnE~fCA_>q{-Kj z79sIX(YKdPM35GXphrI~u0^j0v+b3(Wa2B%mK5AJ)v|1+GTpYEWWbG2U%Q%7MlNMW zu3R2}%@r?N6=0H1~L z^u&ZR_2$Jl-cY78-=5)fpeQn3DG_Z{&#|2Err$Sx7WU4-_y!^4oN!g7~5~pl1uCp3-7{xU_Zd=5aiIuZ8-72^u%(}9nT7|M&Ak|pj zuvOM#i{@-AuWP_e#*>mOD~hF>L{Z$RqL{W;HaHzql!dZtG*{XcR(=D{r|ohz!; zAxyDsYO01_B{Xf2f|{$ON);Lh1761oryIH-p?cTA9eJSM)$@M5egyBxm>z9$MhFGjcvqX!^2R57DJ4ab(YgUsO-?i6jsHN>=^y$GKekeRyb4wd- zW9^4EtRU8Ncy^8>`B-c1Z$+$$@5E~2T;F31Fth|MxFW&&F<5`<@VXY7e+dG~rJt}0 z(&3dLNVjV;a10!luR?Y4Y=ml|cT%;G7McG(=u6flExIVsr$Oq(VJWSxjOfuv;(mZ1 z!!7Q4z?=p_W2_2$UkQO1y`VKdKM3=kPu2_kl9s4KO2VE6&q`-aVy9X<7ZHs-9Mz%&6d5IAl=6w4t1BmY~?p8YJbZ&NPbz=4Tr(>4t$# zmF0?fr0I>lWZ@;MGf<6}io_y|gyNFzIGzqXIBqj+TMzy6^pq{9Tq@a=5pbe{b(Zvu zO&4_s=gU@(S6d9UMoN_ARL-Va+9Ph49hhP^HuVC9Wn8h#V3pc)90#I0x=}fUp>pxc z=i#8)xw1(tzmVg+O+AD8G6m2m)-9NUeSz5&R7ZwOPz^0G0n?Zg(_U1KRMZo>P*SOC zdWb53=mj1bJPpYE7?XuEFO}RkvaFiA)x@zW<^!)#;+0B2lAvPBkH-=LV;(@w7`LM7 zc&0s5|F;8+uos;|NGXr2Mkv6(P}aeB*tj$7>8K7i%jnR~{BU^!;pjP5viLorl}=Z}Q1)`Q#n>^yaan$tUWu-i_0@W5?^UBaMLA5xp-;@n|E8;)xG3?`GC#-W}hKwXe(XzqvDzx*bd1 z121yha{pSiAtO1my0X#t*>`XEpSjifMbEE$>T<{W*tY!CntU&OY@@s#{@TsHofofc zC$H>wCvOgJcb{F88zIzlynbY$-iz;trC6weq+rN<2aG3$v7}7-i;6zOyCLXYY1Xz4 zn&M-A#k(O&SeaVh(<0fyA3gapOu(au@&|z%f{cOEN2LP^nZE^L%JH*NR7<*_Q8KSb zkc7-j9WRO8PG4Lh%ZykKe`8X9`}@xso(Hs-ciy{&=g0&3W&hFj3jGEQ`Rl})gsve9 zf^Zj|`Zs#|F6#dmI`((;>irOsI`2x)?Mq_t92j%S&3;+NC diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc deleted file mode 100644 index 840a445d654bfc4ec924292087ca582861194f90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24338 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 K&8v!VbmI>%s%9Gi diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/api.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/api.py deleted file mode 100644 index ebd96390..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/api.py +++ /dev/null @@ -1,669 +0,0 @@ -from __future__ import annotations - -import logging -from os import PathLike -from typing import BinaryIO - -from .cd import ( - coherence_ratio, - encoding_languages, - mb_encoding_languages, - merge_coherence_ratios, -) -from .constant import IANA_SUPPORTED, TOO_BIG_SEQUENCE, TOO_SMALL_SEQUENCE, TRACE -from .md import mess_ratio -from .models import CharsetMatch, CharsetMatches -from .utils import ( - any_specified_encoding, - cut_sequence_chunks, - iana_name, - identify_sig_or_bom, - is_cp_similar, - is_multi_byte_encoding, - should_strip_sig_or_bom, -) - -logger = logging.getLogger("charset_normalizer") -explain_handler = logging.StreamHandler() -explain_handler.setFormatter( - logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") -) - - -def from_bytes( - sequences: bytes | bytearray, - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.2, - cp_isolation: list[str] | None = None, - cp_exclusion: list[str] | None = None, - preemptive_behaviour: bool = True, - explain: bool = False, - language_threshold: float = 0.1, - enable_fallback: bool = True, -) -> CharsetMatches: - """ - Given a raw bytes sequence, return the best possibles charset usable to render str objects. - If there is no results, it is a strong indicator that the source is binary/not text. - By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence. - And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will. - - The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page - but never take it for granted. Can improve the performance. - - You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that - purpose. - - This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32. - By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain' - toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging. - Custom logging format and handler can be set manually. - """ - - if not isinstance(sequences, (bytearray, bytes)): - raise TypeError( - "Expected object of type bytes or bytearray, got: {}".format( - type(sequences) - ) - ) - - if explain: - previous_logger_level: int = logger.level - logger.addHandler(explain_handler) - logger.setLevel(TRACE) - - length: int = len(sequences) - - if length == 0: - logger.debug("Encoding detection on empty bytes, assuming utf_8 intention.") - if explain: # Defensive: ensure exit path clean handler - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level or logging.WARNING) - return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) - - if cp_isolation is not None: - logger.log( - TRACE, - "cp_isolation is set. use this flag for debugging purpose. " - "limited list of encoding allowed : %s.", - ", ".join(cp_isolation), - ) - cp_isolation = [iana_name(cp, False) for cp in cp_isolation] - else: - cp_isolation = [] - - if cp_exclusion is not None: - logger.log( - TRACE, - "cp_exclusion is set. use this flag for debugging purpose. " - "limited list of encoding excluded : %s.", - ", ".join(cp_exclusion), - ) - cp_exclusion = [iana_name(cp, False) for cp in cp_exclusion] - else: - cp_exclusion = [] - - if length <= (chunk_size * steps): - logger.log( - TRACE, - "override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.", - steps, - chunk_size, - length, - ) - steps = 1 - chunk_size = length - - if steps > 1 and length / steps < chunk_size: - chunk_size = int(length / steps) - - is_too_small_sequence: bool = len(sequences) < TOO_SMALL_SEQUENCE - is_too_large_sequence: bool = len(sequences) >= TOO_BIG_SEQUENCE - - if is_too_small_sequence: - logger.log( - TRACE, - "Trying to detect encoding from a tiny portion of ({}) byte(s).".format( - length - ), - ) - elif is_too_large_sequence: - logger.log( - TRACE, - "Using lazy str decoding because the payload is quite large, ({}) byte(s).".format( - length - ), - ) - - prioritized_encodings: list[str] = [] - - specified_encoding: str | None = ( - any_specified_encoding(sequences) if preemptive_behaviour else None - ) - - if specified_encoding is not None: - prioritized_encodings.append(specified_encoding) - logger.log( - TRACE, - "Detected declarative mark in sequence. Priority +1 given for %s.", - specified_encoding, - ) - - tested: set[str] = set() - tested_but_hard_failure: list[str] = [] - tested_but_soft_failure: list[str] = [] - - fallback_ascii: CharsetMatch | None = None - fallback_u8: CharsetMatch | None = None - fallback_specified: CharsetMatch | None = None - - results: CharsetMatches = CharsetMatches() - - early_stop_results: CharsetMatches = CharsetMatches() - - sig_encoding, sig_payload = identify_sig_or_bom(sequences) - - if sig_encoding is not None: - prioritized_encodings.append(sig_encoding) - logger.log( - TRACE, - "Detected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.", - len(sig_payload), - sig_encoding, - ) - - prioritized_encodings.append("ascii") - - if "utf_8" not in prioritized_encodings: - prioritized_encodings.append("utf_8") - - for encoding_iana in prioritized_encodings + IANA_SUPPORTED: - if cp_isolation and encoding_iana not in cp_isolation: - continue - - if cp_exclusion and encoding_iana in cp_exclusion: - continue - - if encoding_iana in tested: - continue - - tested.add(encoding_iana) - - decoded_payload: str | None = None - bom_or_sig_available: bool = sig_encoding == encoding_iana - strip_sig_or_bom: bool = bom_or_sig_available and should_strip_sig_or_bom( - encoding_iana - ) - - if encoding_iana in {"utf_16", "utf_32"} and not bom_or_sig_available: - logger.log( - TRACE, - "Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.", - encoding_iana, - ) - continue - if encoding_iana in {"utf_7"} and not bom_or_sig_available: - logger.log( - TRACE, - "Encoding %s won't be tested as-is because detection is unreliable without BOM/SIG.", - encoding_iana, - ) - continue - - try: - is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) - except (ModuleNotFoundError, ImportError): - logger.log( - TRACE, - "Encoding %s does not provide an IncrementalDecoder", - encoding_iana, - ) - continue - - try: - if is_too_large_sequence and is_multi_byte_decoder is False: - str( - ( - sequences[: int(50e4)] - if strip_sig_or_bom is False - else sequences[len(sig_payload) : int(50e4)] - ), - encoding=encoding_iana, - ) - else: - decoded_payload = str( - ( - sequences - if strip_sig_or_bom is False - else sequences[len(sig_payload) :] - ), - encoding=encoding_iana, - ) - except (UnicodeDecodeError, LookupError) as e: - if not isinstance(e, LookupError): - logger.log( - TRACE, - "Code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - tested_but_hard_failure.append(encoding_iana) - continue - - similar_soft_failure_test: bool = False - - for encoding_soft_failed in tested_but_soft_failure: - if is_cp_similar(encoding_iana, encoding_soft_failed): - similar_soft_failure_test = True - break - - if similar_soft_failure_test: - logger.log( - TRACE, - "%s is deemed too similar to code page %s and was consider unsuited already. Continuing!", - encoding_iana, - encoding_soft_failed, - ) - continue - - r_ = range( - 0 if not bom_or_sig_available else len(sig_payload), - length, - int(length / steps), - ) - - multi_byte_bonus: bool = ( - is_multi_byte_decoder - and decoded_payload is not None - and len(decoded_payload) < length - ) - - if multi_byte_bonus: - logger.log( - TRACE, - "Code page %s is a multi byte encoding table and it appear that at least one character " - "was encoded using n-bytes.", - encoding_iana, - ) - - max_chunk_gave_up: int = int(len(r_) / 4) - - max_chunk_gave_up = max(max_chunk_gave_up, 2) - early_stop_count: int = 0 - lazy_str_hard_failure = False - - md_chunks: list[str] = [] - md_ratios = [] - - try: - for chunk in cut_sequence_chunks( - sequences, - encoding_iana, - r_, - chunk_size, - bom_or_sig_available, - strip_sig_or_bom, - sig_payload, - is_multi_byte_decoder, - decoded_payload, - ): - md_chunks.append(chunk) - - md_ratios.append( - mess_ratio( - chunk, - threshold, - explain is True and 1 <= len(cp_isolation) <= 2, - ) - ) - - if md_ratios[-1] >= threshold: - early_stop_count += 1 - - if (early_stop_count >= max_chunk_gave_up) or ( - bom_or_sig_available and strip_sig_or_bom is False - ): - break - except ( - UnicodeDecodeError - ) as e: # Lazy str loading may have missed something there - logger.log( - TRACE, - "LazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - early_stop_count = max_chunk_gave_up - lazy_str_hard_failure = True - - # We might want to check the sequence again with the whole content - # Only if initial MD tests passes - if ( - not lazy_str_hard_failure - and is_too_large_sequence - and not is_multi_byte_decoder - ): - try: - sequences[int(50e3) :].decode(encoding_iana, errors="strict") - except UnicodeDecodeError as e: - logger.log( - TRACE, - "LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %s", - encoding_iana, - str(e), - ) - tested_but_hard_failure.append(encoding_iana) - continue - - mean_mess_ratio: float = sum(md_ratios) / len(md_ratios) if md_ratios else 0.0 - if mean_mess_ratio >= threshold or early_stop_count >= max_chunk_gave_up: - tested_but_soft_failure.append(encoding_iana) - logger.log( - TRACE, - "%s was excluded because of initial chaos probing. Gave up %i time(s). " - "Computed mean chaos is %f %%.", - encoding_iana, - early_stop_count, - round(mean_mess_ratio * 100, ndigits=3), - ) - # Preparing those fallbacks in case we got nothing. - if ( - enable_fallback - and encoding_iana - in ["ascii", "utf_8", specified_encoding, "utf_16", "utf_32"] - and not lazy_str_hard_failure - ): - fallback_entry = CharsetMatch( - sequences, - encoding_iana, - threshold, - bom_or_sig_available, - [], - decoded_payload, - preemptive_declaration=specified_encoding, - ) - if encoding_iana == specified_encoding: - fallback_specified = fallback_entry - elif encoding_iana == "ascii": - fallback_ascii = fallback_entry - else: - fallback_u8 = fallback_entry - continue - - logger.log( - TRACE, - "%s passed initial chaos probing. Mean measured chaos is %f %%", - encoding_iana, - round(mean_mess_ratio * 100, ndigits=3), - ) - - if not is_multi_byte_decoder: - target_languages: list[str] = encoding_languages(encoding_iana) - else: - target_languages = mb_encoding_languages(encoding_iana) - - if target_languages: - logger.log( - TRACE, - "{} should target any language(s) of {}".format( - encoding_iana, str(target_languages) - ), - ) - - cd_ratios = [] - - # We shall skip the CD when its about ASCII - # Most of the time its not relevant to run "language-detection" on it. - if encoding_iana != "ascii": - for chunk in md_chunks: - chunk_languages = coherence_ratio( - chunk, - language_threshold, - ",".join(target_languages) if target_languages else None, - ) - - cd_ratios.append(chunk_languages) - - cd_ratios_merged = merge_coherence_ratios(cd_ratios) - - if cd_ratios_merged: - logger.log( - TRACE, - "We detected language {} using {}".format( - cd_ratios_merged, encoding_iana - ), - ) - - current_match = CharsetMatch( - sequences, - encoding_iana, - mean_mess_ratio, - bom_or_sig_available, - cd_ratios_merged, - ( - decoded_payload - if ( - is_too_large_sequence is False - or encoding_iana in [specified_encoding, "ascii", "utf_8"] - ) - else None - ), - preemptive_declaration=specified_encoding, - ) - - results.append(current_match) - - if ( - encoding_iana in [specified_encoding, "ascii", "utf_8"] - and mean_mess_ratio < 0.1 - ): - # If md says nothing to worry about, then... stop immediately! - if mean_mess_ratio == 0.0: - logger.debug( - "Encoding detection: %s is most likely the one.", - current_match.encoding, - ) - if explain: # Defensive: ensure exit path clean handler - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - return CharsetMatches([current_match]) - - early_stop_results.append(current_match) - - if ( - len(early_stop_results) - and (specified_encoding is None or specified_encoding in tested) - and "ascii" in tested - and "utf_8" in tested - ): - probable_result: CharsetMatch = early_stop_results.best() # type: ignore[assignment] - logger.debug( - "Encoding detection: %s is most likely the one.", - probable_result.encoding, - ) - if explain: # Defensive: ensure exit path clean handler - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - - return CharsetMatches([probable_result]) - - if encoding_iana == sig_encoding: - logger.debug( - "Encoding detection: %s is most likely the one as we detected a BOM or SIG within " - "the beginning of the sequence.", - encoding_iana, - ) - if explain: # Defensive: ensure exit path clean handler - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - return CharsetMatches([results[encoding_iana]]) - - if len(results) == 0: - if fallback_u8 or fallback_ascii or fallback_specified: - logger.log( - TRACE, - "Nothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.", - ) - - if fallback_specified: - logger.debug( - "Encoding detection: %s will be used as a fallback match", - fallback_specified.encoding, - ) - results.append(fallback_specified) - elif ( - (fallback_u8 and fallback_ascii is None) - or ( - fallback_u8 - and fallback_ascii - and fallback_u8.fingerprint != fallback_ascii.fingerprint - ) - or (fallback_u8 is not None) - ): - logger.debug("Encoding detection: utf_8 will be used as a fallback match") - results.append(fallback_u8) - elif fallback_ascii: - logger.debug("Encoding detection: ascii will be used as a fallback match") - results.append(fallback_ascii) - - if results: - logger.debug( - "Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.", - results.best().encoding, # type: ignore - len(results) - 1, - ) - else: - logger.debug("Encoding detection: Unable to determine any suitable charset.") - - if explain: - logger.removeHandler(explain_handler) - logger.setLevel(previous_logger_level) - - return results - - -def from_fp( - fp: BinaryIO, - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: list[str] | None = None, - cp_exclusion: list[str] | None = None, - preemptive_behaviour: bool = True, - explain: bool = False, - language_threshold: float = 0.1, - enable_fallback: bool = True, -) -> CharsetMatches: - """ - Same thing than the function from_bytes but using a file pointer that is already ready. - Will not close the file pointer. - """ - return from_bytes( - fp.read(), - steps, - chunk_size, - threshold, - cp_isolation, - cp_exclusion, - preemptive_behaviour, - explain, - language_threshold, - enable_fallback, - ) - - -def from_path( - path: str | bytes | PathLike, # type: ignore[type-arg] - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: list[str] | None = None, - cp_exclusion: list[str] | None = None, - preemptive_behaviour: bool = True, - explain: bool = False, - language_threshold: float = 0.1, - enable_fallback: bool = True, -) -> CharsetMatches: - """ - Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode. - Can raise IOError. - """ - with open(path, "rb") as fp: - return from_fp( - fp, - steps, - chunk_size, - threshold, - cp_isolation, - cp_exclusion, - preemptive_behaviour, - explain, - language_threshold, - enable_fallback, - ) - - -def is_binary( - fp_or_path_or_payload: PathLike | str | BinaryIO | bytes, # type: ignore[type-arg] - steps: int = 5, - chunk_size: int = 512, - threshold: float = 0.20, - cp_isolation: list[str] | None = None, - cp_exclusion: list[str] | None = None, - preemptive_behaviour: bool = True, - explain: bool = False, - language_threshold: float = 0.1, - enable_fallback: bool = False, -) -> bool: - """ - Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string. - Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match - are disabled to be stricter around ASCII-compatible but unlikely to be a string. - """ - if isinstance(fp_or_path_or_payload, (str, PathLike)): - guesses = from_path( - fp_or_path_or_payload, - steps=steps, - chunk_size=chunk_size, - threshold=threshold, - cp_isolation=cp_isolation, - cp_exclusion=cp_exclusion, - preemptive_behaviour=preemptive_behaviour, - explain=explain, - language_threshold=language_threshold, - enable_fallback=enable_fallback, - ) - elif isinstance( - fp_or_path_or_payload, - ( - bytes, - bytearray, - ), - ): - guesses = from_bytes( - fp_or_path_or_payload, - steps=steps, - chunk_size=chunk_size, - threshold=threshold, - cp_isolation=cp_isolation, - cp_exclusion=cp_exclusion, - preemptive_behaviour=preemptive_behaviour, - explain=explain, - language_threshold=language_threshold, - enable_fallback=enable_fallback, - ) - else: - guesses = from_fp( - fp_or_path_or_payload, - steps=steps, - chunk_size=chunk_size, - threshold=threshold, - cp_isolation=cp_isolation, - cp_exclusion=cp_exclusion, - preemptive_behaviour=preemptive_behaviour, - explain=explain, - language_threshold=language_threshold, - enable_fallback=enable_fallback, - ) - - return not guesses diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cd.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cd.py deleted file mode 100644 index 71a3ed51..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cd.py +++ /dev/null @@ -1,395 +0,0 @@ -from __future__ import annotations - -import importlib -from codecs import IncrementalDecoder -from collections import Counter -from functools import lru_cache -from typing import Counter as TypeCounter - -from .constant import ( - FREQUENCIES, - KO_NAMES, - LANGUAGE_SUPPORTED_COUNT, - TOO_SMALL_SEQUENCE, - ZH_NAMES, -) -from .md import is_suspiciously_successive_range -from .models import CoherenceMatches -from .utils import ( - is_accentuated, - is_latin, - is_multi_byte_encoding, - is_unicode_range_secondary, - unicode_range, -) - - -def encoding_unicode_range(iana_name: str) -> list[str]: - """ - Return associated unicode ranges in a single byte code page. - """ - if is_multi_byte_encoding(iana_name): - raise OSError("Function not supported on multi-byte code page") - - decoder = importlib.import_module(f"encodings.{iana_name}").IncrementalDecoder - - p: IncrementalDecoder = decoder(errors="ignore") - seen_ranges: dict[str, int] = {} - character_count: int = 0 - - for i in range(0x40, 0xFF): - chunk: str = p.decode(bytes([i])) - - if chunk: - character_range: str | None = unicode_range(chunk) - - if character_range is None: - continue - - if is_unicode_range_secondary(character_range) is False: - if character_range not in seen_ranges: - seen_ranges[character_range] = 0 - seen_ranges[character_range] += 1 - character_count += 1 - - return sorted( - [ - character_range - for character_range in seen_ranges - if seen_ranges[character_range] / character_count >= 0.15 - ] - ) - - -def unicode_range_languages(primary_range: str) -> list[str]: - """ - Return inferred languages used with a unicode range. - """ - languages: list[str] = [] - - for language, characters in FREQUENCIES.items(): - for character in characters: - if unicode_range(character) == primary_range: - languages.append(language) - break - - return languages - - -@lru_cache() -def encoding_languages(iana_name: str) -> list[str]: - """ - Single-byte encoding language association. Some code page are heavily linked to particular language(s). - This function does the correspondence. - """ - unicode_ranges: list[str] = encoding_unicode_range(iana_name) - primary_range: str | None = None - - for specified_range in unicode_ranges: - if "Latin" not in specified_range: - primary_range = specified_range - break - - if primary_range is None: - return ["Latin Based"] - - return unicode_range_languages(primary_range) - - -@lru_cache() -def mb_encoding_languages(iana_name: str) -> list[str]: - """ - Multi-byte encoding language association. Some code page are heavily linked to particular language(s). - This function does the correspondence. - """ - if ( - iana_name.startswith("shift_") - or iana_name.startswith("iso2022_jp") - or iana_name.startswith("euc_j") - or iana_name == "cp932" - ): - return ["Japanese"] - if iana_name.startswith("gb") or iana_name in ZH_NAMES: - return ["Chinese"] - if iana_name.startswith("iso2022_kr") or iana_name in KO_NAMES: - return ["Korean"] - - return [] - - -@lru_cache(maxsize=LANGUAGE_SUPPORTED_COUNT) -def get_target_features(language: str) -> tuple[bool, bool]: - """ - Determine main aspects from a supported language if it contains accents and if is pure Latin. - """ - target_have_accents: bool = False - target_pure_latin: bool = True - - for character in FREQUENCIES[language]: - if not target_have_accents and is_accentuated(character): - target_have_accents = True - if target_pure_latin and is_latin(character) is False: - target_pure_latin = False - - return target_have_accents, target_pure_latin - - -def alphabet_languages( - characters: list[str], ignore_non_latin: bool = False -) -> list[str]: - """ - Return associated languages associated to given characters. - """ - languages: list[tuple[str, float]] = [] - - source_have_accents = any(is_accentuated(character) for character in characters) - - for language, language_characters in FREQUENCIES.items(): - target_have_accents, target_pure_latin = get_target_features(language) - - if ignore_non_latin and target_pure_latin is False: - continue - - if target_have_accents is False and source_have_accents: - continue - - character_count: int = len(language_characters) - - character_match_count: int = len( - [c for c in language_characters if c in characters] - ) - - ratio: float = character_match_count / character_count - - if ratio >= 0.2: - languages.append((language, ratio)) - - languages = sorted(languages, key=lambda x: x[1], reverse=True) - - return [compatible_language[0] for compatible_language in languages] - - -def characters_popularity_compare( - language: str, ordered_characters: list[str] -) -> float: - """ - Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language. - The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit). - Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.) - """ - if language not in FREQUENCIES: - raise ValueError(f"{language} not available") - - character_approved_count: int = 0 - FREQUENCIES_language_set = set(FREQUENCIES[language]) - - ordered_characters_count: int = len(ordered_characters) - target_language_characters_count: int = len(FREQUENCIES[language]) - - large_alphabet: bool = target_language_characters_count > 26 - - for character, character_rank in zip( - ordered_characters, range(0, ordered_characters_count) - ): - if character not in FREQUENCIES_language_set: - continue - - character_rank_in_language: int = FREQUENCIES[language].index(character) - expected_projection_ratio: float = ( - target_language_characters_count / ordered_characters_count - ) - character_rank_projection: int = int(character_rank * expected_projection_ratio) - - if ( - large_alphabet is False - and abs(character_rank_projection - character_rank_in_language) > 4 - ): - continue - - if ( - large_alphabet is True - and abs(character_rank_projection - character_rank_in_language) - < target_language_characters_count / 3 - ): - character_approved_count += 1 - continue - - characters_before_source: list[str] = FREQUENCIES[language][ - 0:character_rank_in_language - ] - characters_after_source: list[str] = FREQUENCIES[language][ - character_rank_in_language: - ] - characters_before: list[str] = ordered_characters[0:character_rank] - characters_after: list[str] = ordered_characters[character_rank:] - - before_match_count: int = len( - set(characters_before) & set(characters_before_source) - ) - - after_match_count: int = len( - set(characters_after) & set(characters_after_source) - ) - - if len(characters_before_source) == 0 and before_match_count <= 4: - character_approved_count += 1 - continue - - if len(characters_after_source) == 0 and after_match_count <= 4: - character_approved_count += 1 - continue - - if ( - before_match_count / len(characters_before_source) >= 0.4 - or after_match_count / len(characters_after_source) >= 0.4 - ): - character_approved_count += 1 - continue - - return character_approved_count / len(ordered_characters) - - -def alpha_unicode_split(decoded_sequence: str) -> list[str]: - """ - Given a decoded text sequence, return a list of str. Unicode range / alphabet separation. - Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list; - One containing the latin letters and the other hebrew. - """ - layers: dict[str, str] = {} - - for character in decoded_sequence: - if character.isalpha() is False: - continue - - character_range: str | None = unicode_range(character) - - if character_range is None: - continue - - layer_target_range: str | None = None - - for discovered_range in layers: - if ( - is_suspiciously_successive_range(discovered_range, character_range) - is False - ): - layer_target_range = discovered_range - break - - if layer_target_range is None: - layer_target_range = character_range - - if layer_target_range not in layers: - layers[layer_target_range] = character.lower() - continue - - layers[layer_target_range] += character.lower() - - return list(layers.values()) - - -def merge_coherence_ratios(results: list[CoherenceMatches]) -> CoherenceMatches: - """ - This function merge results previously given by the function coherence_ratio. - The return type is the same as coherence_ratio. - """ - per_language_ratios: dict[str, list[float]] = {} - for result in results: - for sub_result in result: - language, ratio = sub_result - if language not in per_language_ratios: - per_language_ratios[language] = [ratio] - continue - per_language_ratios[language].append(ratio) - - merge = [ - ( - language, - round( - sum(per_language_ratios[language]) / len(per_language_ratios[language]), - 4, - ), - ) - for language in per_language_ratios - ] - - return sorted(merge, key=lambda x: x[1], reverse=True) - - -def filter_alt_coherence_matches(results: CoherenceMatches) -> CoherenceMatches: - """ - We shall NOT return "English—" in CoherenceMatches because it is an alternative - of "English". This function only keeps the best match and remove the em-dash in it. - """ - index_results: dict[str, list[float]] = dict() - - for result in results: - language, ratio = result - no_em_name: str = language.replace("—", "") - - if no_em_name not in index_results: - index_results[no_em_name] = [] - - index_results[no_em_name].append(ratio) - - if any(len(index_results[e]) > 1 for e in index_results): - filtered_results: CoherenceMatches = [] - - for language in index_results: - filtered_results.append((language, max(index_results[language]))) - - return filtered_results - - return results - - -@lru_cache(maxsize=2048) -def coherence_ratio( - decoded_sequence: str, threshold: float = 0.1, lg_inclusion: str | None = None -) -> CoherenceMatches: - """ - Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers. - A layer = Character extraction by alphabets/ranges. - """ - - results: list[tuple[str, float]] = [] - ignore_non_latin: bool = False - - sufficient_match_count: int = 0 - - lg_inclusion_list = lg_inclusion.split(",") if lg_inclusion is not None else [] - if "Latin Based" in lg_inclusion_list: - ignore_non_latin = True - lg_inclusion_list.remove("Latin Based") - - for layer in alpha_unicode_split(decoded_sequence): - sequence_frequencies: TypeCounter[str] = Counter(layer) - most_common = sequence_frequencies.most_common() - - character_count: int = sum(o for c, o in most_common) - - if character_count <= TOO_SMALL_SEQUENCE: - continue - - popular_character_ordered: list[str] = [c for c, o in most_common] - - for language in lg_inclusion_list or alphabet_languages( - popular_character_ordered, ignore_non_latin - ): - ratio: float = characters_popularity_compare( - language, popular_character_ordered - ) - - if ratio < threshold: - continue - elif ratio >= 0.8: - sufficient_match_count += 1 - - results.append((language, round(ratio, 4))) - - if sufficient_match_count >= 3: - break - - return sorted( - filter_alt_coherence_matches(results), key=lambda x: x[1], reverse=True - ) diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py deleted file mode 100644 index 543a5a4d..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py +++ /dev/null @@ -1,8 +0,0 @@ -from __future__ import annotations - -from .__main__ import cli_detect, query_yes_no - -__all__ = ( - "cli_detect", - "query_yes_no", -) diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py deleted file mode 100644 index cb64156a..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py +++ /dev/null @@ -1,381 +0,0 @@ -from __future__ import annotations - -import argparse -import sys -import typing -from json import dumps -from os.path import abspath, basename, dirname, join, realpath -from platform import python_version -from unicodedata import unidata_version - -import charset_normalizer.md as md_module -from charset_normalizer import from_fp -from charset_normalizer.models import CliDetectionResult -from charset_normalizer.version import __version__ - - -def query_yes_no(question: str, default: str = "yes") -> bool: - """Ask a yes/no question via input() and return their answer. - - "question" is a string that is presented to the user. - "default" is the presumed answer if the user just hits . - It must be "yes" (the default), "no" or None (meaning - an answer is required of the user). - - The "answer" return value is True for "yes" or False for "no". - - Credit goes to (c) https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input - """ - valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} - if default is None: - prompt = " [y/n] " - elif default == "yes": - prompt = " [Y/n] " - elif default == "no": - prompt = " [y/N] " - else: - raise ValueError("invalid default answer: '%s'" % default) - - while True: - sys.stdout.write(question + prompt) - choice = input().lower() - if default is not None and choice == "": - return valid[default] - elif choice in valid: - return valid[choice] - else: - sys.stdout.write("Please respond with 'yes' or 'no' (or 'y' or 'n').\n") - - -class FileType: - """Factory for creating file object types - - Instances of FileType are typically passed as type= arguments to the - ArgumentParser add_argument() method. - - Keyword Arguments: - - mode -- A string indicating how the file is to be opened. Accepts the - same values as the builtin open() function. - - bufsize -- The file's desired buffer size. Accepts the same values as - the builtin open() function. - - encoding -- The file's encoding. Accepts the same values as the - builtin open() function. - - errors -- A string indicating how encoding and decoding errors are to - be handled. Accepts the same value as the builtin open() function. - - Backported from CPython 3.12 - """ - - def __init__( - self, - mode: str = "r", - bufsize: int = -1, - encoding: str | None = None, - errors: str | None = None, - ): - self._mode = mode - self._bufsize = bufsize - self._encoding = encoding - self._errors = errors - - def __call__(self, string: str) -> typing.IO: # type: ignore[type-arg] - # the special argument "-" means sys.std{in,out} - if string == "-": - if "r" in self._mode: - return sys.stdin.buffer if "b" in self._mode else sys.stdin - elif any(c in self._mode for c in "wax"): - return sys.stdout.buffer if "b" in self._mode else sys.stdout - else: - msg = f'argument "-" with mode {self._mode}' - raise ValueError(msg) - - # all other arguments are used as file names - try: - return open(string, self._mode, self._bufsize, self._encoding, self._errors) - except OSError as e: - message = f"can't open '{string}': {e}" - raise argparse.ArgumentTypeError(message) - - def __repr__(self) -> str: - args = self._mode, self._bufsize - kwargs = [("encoding", self._encoding), ("errors", self._errors)] - args_str = ", ".join( - [repr(arg) for arg in args if arg != -1] - + [f"{kw}={arg!r}" for kw, arg in kwargs if arg is not None] - ) - return f"{type(self).__name__}({args_str})" - - -def cli_detect(argv: list[str] | None = None) -> int: - """ - CLI assistant using ARGV and ArgumentParser - :param argv: - :return: 0 if everything is fine, anything else equal trouble - """ - parser = argparse.ArgumentParser( - description="The Real First Universal Charset Detector. " - "Discover originating encoding used on text file. " - "Normalize text to unicode." - ) - - parser.add_argument( - "files", type=FileType("rb"), nargs="+", help="File(s) to be analysed" - ) - parser.add_argument( - "-v", - "--verbose", - action="store_true", - default=False, - dest="verbose", - help="Display complementary information about file if any. " - "Stdout will contain logs about the detection process.", - ) - parser.add_argument( - "-a", - "--with-alternative", - action="store_true", - default=False, - dest="alternatives", - help="Output complementary possibilities if any. Top-level JSON WILL be a list.", - ) - parser.add_argument( - "-n", - "--normalize", - action="store_true", - default=False, - dest="normalize", - help="Permit to normalize input file. If not set, program does not write anything.", - ) - parser.add_argument( - "-m", - "--minimal", - action="store_true", - default=False, - dest="minimal", - help="Only output the charset detected to STDOUT. Disabling JSON output.", - ) - parser.add_argument( - "-r", - "--replace", - action="store_true", - default=False, - dest="replace", - help="Replace file when trying to normalize it instead of creating a new one.", - ) - parser.add_argument( - "-f", - "--force", - action="store_true", - default=False, - dest="force", - help="Replace file without asking if you are sure, use this flag with caution.", - ) - parser.add_argument( - "-i", - "--no-preemptive", - action="store_true", - default=False, - dest="no_preemptive", - help="Disable looking at a charset declaration to hint the detector.", - ) - parser.add_argument( - "-t", - "--threshold", - action="store", - default=0.2, - type=float, - dest="threshold", - help="Define a custom maximum amount of noise allowed in decoded content. 0. <= noise <= 1.", - ) - parser.add_argument( - "--version", - action="version", - version="Charset-Normalizer {} - Python {} - Unicode {} - SpeedUp {}".format( - __version__, - python_version(), - unidata_version, - "OFF" if md_module.__file__.lower().endswith(".py") else "ON", - ), - help="Show version information and exit.", - ) - - args = parser.parse_args(argv) - - if args.replace is True and args.normalize is False: - if args.files: - for my_file in args.files: - my_file.close() - print("Use --replace in addition of --normalize only.", file=sys.stderr) - return 1 - - if args.force is True and args.replace is False: - if args.files: - for my_file in args.files: - my_file.close() - print("Use --force in addition of --replace only.", file=sys.stderr) - return 1 - - if args.threshold < 0.0 or args.threshold > 1.0: - if args.files: - for my_file in args.files: - my_file.close() - print("--threshold VALUE should be between 0. AND 1.", file=sys.stderr) - return 1 - - x_ = [] - - for my_file in args.files: - matches = from_fp( - my_file, - threshold=args.threshold, - explain=args.verbose, - preemptive_behaviour=args.no_preemptive is False, - ) - - best_guess = matches.best() - - if best_guess is None: - print( - 'Unable to identify originating encoding for "{}". {}'.format( - my_file.name, - ( - "Maybe try increasing maximum amount of chaos." - if args.threshold < 1.0 - else "" - ), - ), - file=sys.stderr, - ) - x_.append( - CliDetectionResult( - abspath(my_file.name), - None, - [], - [], - "Unknown", - [], - False, - 1.0, - 0.0, - None, - True, - ) - ) - else: - x_.append( - CliDetectionResult( - abspath(my_file.name), - best_guess.encoding, - best_guess.encoding_aliases, - [ - cp - for cp in best_guess.could_be_from_charset - if cp != best_guess.encoding - ], - best_guess.language, - best_guess.alphabets, - best_guess.bom, - best_guess.percent_chaos, - best_guess.percent_coherence, - None, - True, - ) - ) - - if len(matches) > 1 and args.alternatives: - for el in matches: - if el != best_guess: - x_.append( - CliDetectionResult( - abspath(my_file.name), - el.encoding, - el.encoding_aliases, - [ - cp - for cp in el.could_be_from_charset - if cp != el.encoding - ], - el.language, - el.alphabets, - el.bom, - el.percent_chaos, - el.percent_coherence, - None, - False, - ) - ) - - if args.normalize is True: - if best_guess.encoding.startswith("utf") is True: - print( - '"{}" file does not need to be normalized, as it already came from unicode.'.format( - my_file.name - ), - file=sys.stderr, - ) - if my_file.closed is False: - my_file.close() - continue - - dir_path = dirname(realpath(my_file.name)) - file_name = basename(realpath(my_file.name)) - - o_: list[str] = file_name.split(".") - - if args.replace is False: - o_.insert(-1, best_guess.encoding) - if my_file.closed is False: - my_file.close() - elif ( - args.force is False - and query_yes_no( - 'Are you sure to normalize "{}" by replacing it ?'.format( - my_file.name - ), - "no", - ) - is False - ): - if my_file.closed is False: - my_file.close() - continue - - try: - x_[0].unicode_path = join(dir_path, ".".join(o_)) - - with open(x_[0].unicode_path, "wb") as fp: - fp.write(best_guess.output()) - except OSError as e: - print(str(e), file=sys.stderr) - if my_file.closed is False: - my_file.close() - return 2 - - if my_file.closed is False: - my_file.close() - - if args.minimal is False: - print( - dumps( - [el.__dict__ for el in x_] if len(x_) > 1 else x_[0].__dict__, - ensure_ascii=True, - indent=4, - ) - ) - else: - for my_file in args.files: - print( - ", ".join( - [ - el.encoding or "undefined" - for el in x_ - if el.path == abspath(my_file.name) - ] - ) - ) - - return 0 - - -if __name__ == "__main__": - cli_detect() diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 76364baec4a95753770f2e19c7a561558484d2f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 334 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", - "=", - ":", - "/", - "&", - ";", - "{", - "}", - "[", - "]", - ",", - "|", - '"', - "-", - "(", - ")", -} - -# Sample character sets — replace with full lists if needed -COMMON_CHINESE_CHARACTERS = "的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严龙飞" - -COMMON_JAPANESE_CHARACTERS = "日一国年大十二本中長出三時行見月分後前生五間上東四今金九入学高円子外八六下来気小七山話女北午百書先名川千水半男西電校語土木聞食車何南万毎白天母火右読友左休父雨" - -COMMON_KOREAN_CHARACTERS = "一二三四五六七八九十百千萬上下左右中人女子大小山川日月火水木金土父母天地國名年時文校學生" - -# Combine all into a set -COMMON_CJK_CHARACTERS = set( - "".join( - [ - COMMON_CHINESE_CHARACTERS, - COMMON_JAPANESE_CHARACTERS, - COMMON_KOREAN_CHARACTERS, - ] - ) -) - -KO_NAMES: set[str] = {"johab", "cp949", "euc_kr"} -ZH_NAMES: set[str] = {"big5", "cp950", "big5hkscs", "hz"} - -# Logging LEVEL below DEBUG -TRACE: int = 5 - - -# Language label that contain the em dash "—" -# character are to be considered alternative seq to origin -FREQUENCIES: dict[str, list[str]] = { - "English": [ - "e", - "a", - "t", - "i", - "o", - "n", - "s", - "r", - "h", - "l", - "d", - "c", - "u", - "m", - "f", - "p", - "g", - "w", - "y", - "b", - "v", - "k", - "x", - "j", - "z", - "q", - ], - "English—": [ - "e", - "a", - "t", - "i", - "o", - "n", - "s", - "r", - "h", - "l", - "d", - "c", - "m", - "u", - "f", - "p", - "g", - "w", - "b", - "y", - "v", - "k", - "j", - "x", - "z", - "q", - ], - "German": [ - "e", - "n", - "i", - "r", - "s", - "t", - "a", - "d", - "h", - "u", - "l", - "g", - "o", - "c", - "m", - "b", - "f", - "k", - "w", - "z", - "p", - "v", - "ü", - "ä", - "ö", - "j", - ], - "French": [ - "e", - "a", - "s", - "n", - "i", - "t", - "r", - "l", - "u", - "o", - "d", - "c", - "p", - "m", - "é", - "v", - "g", - "f", - "b", - "h", - "q", - "à", - "x", - "è", - "y", - "j", - ], - "Dutch": [ - "e", - "n", - "a", - "i", - "r", - "t", - "o", - "d", - "s", - "l", - "g", - "h", - "v", - "m", - "u", - "k", - "c", - "p", - "b", - "w", - "j", - "z", - "f", - "y", - "x", - "ë", - ], - "Italian": [ - "e", - "i", - "a", - "o", - "n", - "l", - "t", - "r", - "s", - "c", - "d", - "u", - "p", - "m", - "g", - "v", - "f", - "b", - "z", - "h", - "q", - "è", - "à", - "k", - "y", - "ò", - ], - "Polish": [ - "a", - "i", - "o", - "e", - "n", - "r", - "z", - "w", - "s", - "c", - "t", - "k", - "y", - "d", - "p", - "m", - "u", - "l", - "j", - "ł", - "g", - "b", - "h", - "ą", - "ę", - "ó", - ], - "Spanish": [ - "e", - "a", - "o", - "n", - "s", - "r", - "i", - "l", - "d", - "t", - "c", - "u", - "m", - "p", - "b", - "g", - "v", - "f", - "y", - "ó", - "h", - "q", - "í", - "j", - "z", - "á", - ], - "Russian": [ - "о", - "а", - "е", - "и", - "н", - "с", - "т", - "р", - "в", - "л", - "к", - "м", - "д", - "п", - "у", - "г", - "я", - "ы", - "з", - "б", - "й", - "ь", - "ч", - "х", - "ж", - "ц", - ], - # Jap-Kanji - "Japanese": [ - "人", - "一", - "大", - "亅", - "丁", - "丨", - "竹", - "笑", - "口", - "日", - "今", - "二", - "彳", - "行", - "十", - "土", - "丶", - "寸", - "寺", - "時", - "乙", - "丿", - "乂", - "气", - "気", - "冂", - "巾", - "亠", - "市", - "目", - "儿", - "見", - "八", - "小", - "凵", - "県", - "月", - "彐", - "門", - "間", - "木", - "東", - "山", - "出", - "本", - "中", - "刀", - "分", - "耳", - "又", - "取", - "最", - "言", - "田", - "心", - "思", - "刂", - "前", - "京", - "尹", - "事", - "生", - "厶", - "云", - "会", - "未", - "来", - "白", - "冫", - "楽", - "灬", - "馬", - "尸", - "尺", - "駅", - "明", - "耂", - "者", - "了", - "阝", - "都", - "高", - "卜", - "占", - "厂", - "广", - "店", - "子", - "申", - "奄", - "亻", - "俺", - "上", - "方", - "冖", - "学", - "衣", - "艮", - "食", - "自", - ], - # Jap-Katakana - "Japanese—": [ - "ー", - "ン", - "ス", - "・", - "ル", - "ト", - "リ", - "イ", - "ア", - "ラ", - "ッ", - "ク", - "ド", - "シ", - "レ", - "ジ", - "タ", - "フ", - "ロ", - "カ", - "テ", - "マ", - "ィ", - "グ", - "バ", - "ム", - "プ", - "オ", - "コ", - "デ", - "ニ", - "ウ", - "メ", - "サ", - "ビ", - "ナ", - "ブ", - "ャ", - "エ", - "ュ", - "チ", - "キ", - "ズ", - "ダ", - "パ", - "ミ", - "ェ", - "ョ", - "ハ", - "セ", - "ベ", - "ガ", - "モ", - "ツ", - "ネ", - "ボ", - "ソ", - "ノ", - "ァ", - "ヴ", - "ワ", - "ポ", - "ペ", - "ピ", - "ケ", - "ゴ", - "ギ", - "ザ", - "ホ", - "ゲ", - "ォ", - "ヤ", - "ヒ", - "ユ", - "ヨ", - "ヘ", - "ゼ", - "ヌ", - "ゥ", - "ゾ", - "ヶ", - "ヂ", - "ヲ", - "ヅ", - "ヵ", - "ヱ", - "ヰ", - "ヮ", - "ヽ", - "゠", - "ヾ", - "ヷ", - "ヿ", - "ヸ", - "ヹ", - "ヺ", - ], - # Jap-Hiragana - "Japanese——": [ - "の", - "に", - "る", - "た", - "と", - "は", - "し", - "い", - "を", - "で", - "て", - "が", - "な", - "れ", - "か", - "ら", - "さ", - "っ", - "り", - "す", - "あ", - "も", - "こ", - "ま", - "う", - "く", - "よ", - "き", - "ん", - "め", - "お", - "け", - "そ", - "つ", - "だ", - "や", - "え", - "ど", - "わ", - "ち", - "み", - "せ", - "じ", - "ば", - "へ", - "び", - "ず", - "ろ", - "ほ", - "げ", - "む", - "べ", - "ひ", - "ょ", - "ゆ", - "ぶ", - "ご", - "ゃ", - "ね", - "ふ", - "ぐ", - "ぎ", - "ぼ", - "ゅ", - "づ", - "ざ", - "ぞ", - "ぬ", - "ぜ", - "ぱ", - "ぽ", - "ぷ", - "ぴ", - "ぃ", - "ぁ", - "ぇ", - "ぺ", - "ゞ", - "ぢ", - "ぉ", - "ぅ", - "ゐ", - "ゝ", - "ゑ", - "゛", - "゜", - "ゎ", - "ゔ", - "゚", - "ゟ", - "゙", - "ゕ", - "ゖ", - ], - "Portuguese": [ - "a", - "e", - "o", - "s", - "i", - "r", - "d", - "n", - "t", - "m", - "u", - "c", - "l", - "p", - "g", - "v", - "b", - "f", - "h", - "ã", - "q", - "é", - "ç", - "á", - "z", - "í", - ], - "Swedish": [ - "e", - "a", - "n", - "r", - "t", - "s", - "i", - "l", - "d", - "o", - "m", - "k", - "g", - "v", - "h", - "f", - "u", - "p", - "ä", - "c", - "b", - "ö", - "å", - "y", - "j", - "x", - ], - "Chinese": [ - "的", - "一", - "是", - "不", - "了", - "在", - "人", - "有", - "我", - "他", - "这", - "个", - "们", - "中", - "来", - "上", - "大", - "为", - "和", - "国", - "地", - "到", - "以", - "说", - "时", - "要", - "就", - "出", - "会", - "可", - "也", - "你", - "对", - "生", - "能", - "而", - "子", - "那", - "得", - "于", - "着", - "下", - "自", - "之", - "年", - "过", - "发", - "后", - "作", - "里", - "用", - "道", - "行", - "所", - "然", - "家", - "种", - "事", - "成", - "方", - "多", - "经", - "么", - "去", - "法", - "学", - "如", - "都", - "同", - "现", - "当", - "没", - "动", - "面", - "起", - "看", - "定", - "天", - "分", - "还", - "进", - "好", - "小", - "部", - "其", - "些", - "主", - "样", - "理", - "心", - "她", - "本", - "前", - "开", - "但", - "因", - "只", - "从", - "想", - "实", - ], - "Ukrainian": [ - "о", - "а", - "н", - "і", - "и", - "р", - "в", - "т", - "е", - "с", - "к", - "л", - "у", - "д", - "м", - "п", - "з", - "я", - "ь", - "б", - "г", - "й", - "ч", - "х", - "ц", - "ї", - ], - "Norwegian": [ - "e", - "r", - "n", - "t", - "a", - "s", - "i", - "o", - "l", - "d", - "g", - "k", - "m", - "v", - "f", - "p", - "u", - "b", - "h", - "å", - "y", - "j", - "ø", - "c", - "æ", - "w", - ], - "Finnish": [ - "a", - "i", - "n", - "t", - "e", - "s", - "l", - "o", - "u", - "k", - "ä", - "m", - "r", - "v", - "j", - "h", - "p", - "y", - "d", - "ö", - "g", - "c", - "b", - "f", - "w", - "z", - ], - "Vietnamese": [ - "n", - "h", - "t", - "i", - "c", - "g", - "a", - "o", - "u", - "m", - "l", - "r", - "à", - "đ", - "s", - "e", - "v", - "p", - "b", - "y", - "ư", - "d", - "á", - "k", - "ộ", - "ế", - ], - "Czech": [ - "o", - "e", - "a", - "n", - "t", - "s", - "i", - "l", - "v", - "r", - "k", - "d", - "u", - "m", - "p", - "í", - "c", - "h", - "z", - "á", - "y", - "j", - "b", - "ě", - "é", - "ř", - ], - "Hungarian": [ - "e", - "a", - "t", - "l", - "s", - "n", - "k", - "r", - "i", - "o", - "z", - "á", - "é", - "g", - "m", - "b", - "y", - "v", - "d", - "h", - "u", - "p", - "j", - "ö", - "f", - "c", - ], - "Korean": [ - "이", - "다", - "에", - "의", - "는", - "로", - "하", - "을", - "가", - "고", - "지", - "서", - "한", - "은", - "기", - "으", - "년", - "대", - "사", - "시", - "를", - "리", - "도", - "인", - "스", - "일", - ], - "Indonesian": [ - "a", - "n", - "e", - "i", - "r", - "t", - "u", - "s", - "d", - "k", - "m", - "l", - "g", - "p", - "b", - "o", - "h", - "y", - "j", - "c", - "w", - "f", - "v", - "z", - "x", - "q", - ], - "Turkish": [ - "a", - "e", - "i", - "n", - "r", - "l", - "ı", - "k", - "d", - "t", - "s", - "m", - "y", - "u", - "o", - "b", - "ü", - "ş", - "v", - "g", - "z", - "h", - "c", - "p", - "ç", - "ğ", - ], - "Romanian": [ - "e", - "i", - "a", - "r", - "n", - "t", - "u", - "l", - "o", - "c", - "s", - "d", - "p", - "m", - "ă", - "f", - "v", - "î", - "g", - "b", - "ș", - "ț", - "z", - "h", - "â", - "j", - ], - "Farsi": [ - "ا", - "ی", - "ر", - "د", - "ن", - "ه", - "و", - "م", - "ت", - "ب", - "س", - "ل", - "ک", - "ش", - "ز", - "ف", - "گ", - "ع", - "خ", - "ق", - "ج", - "آ", - "پ", - "ح", - "ط", - "ص", - ], - "Arabic": [ - "ا", - "ل", - "ي", - "م", - "و", - "ن", - "ر", - "ت", - "ب", - "ة", - "ع", - "د", - "س", - "ف", - "ه", - "ك", - "ق", - "أ", - "ح", - "ج", - "ش", - "ط", - "ص", - "ى", - "خ", - "إ", - ], - "Danish": [ - "e", - "r", - "n", - "t", - "a", - "i", - "s", - "d", - "l", - "o", - "g", - "m", - "k", - "f", - "v", - "u", - "b", - "h", - "p", - "å", - "y", - "ø", - "æ", - "c", - "j", - "w", - ], - "Serbian": [ - "а", - "и", - "о", - "е", - "н", - "р", - "с", - "у", - "т", - "к", - "ј", - "в", - "д", - "м", - "п", - "л", - "г", - "з", - "б", - "a", - "i", - "e", - "o", - "n", - "ц", - "ш", - ], - "Lithuanian": [ - "i", - "a", - "s", - "o", - "r", - "e", - "t", - "n", - "u", - "k", - "m", - "l", - "p", - "v", - "d", - "j", - "g", - "ė", - "b", - "y", - "ų", - "š", - "ž", - "c", - "ą", - "į", - ], - "Slovene": [ - "e", - "a", - "i", - "o", - "n", - "r", - "s", - "l", - "t", - "j", - "v", - "k", - "d", - "p", - "m", - "u", - "z", - "b", - "g", - "h", - "č", - "c", - "š", - "ž", - "f", - "y", - ], - "Slovak": [ - "o", - "a", - "e", - "n", - "i", - "r", - "v", - "t", - "s", - "l", - "k", - "d", - "m", - "p", - "u", - "c", - "h", - "j", - "b", - "z", - "á", - "y", - "ý", - "í", - "č", - "é", - ], - "Hebrew": [ - "י", - "ו", - "ה", - "ל", - "ר", - "ב", - "ת", - "מ", - "א", - "ש", - "נ", - "ע", - "ם", - "ד", - "ק", - "ח", - "פ", - "ס", - "כ", - "ג", - "ט", - "צ", - "ן", - "ז", - "ך", - ], - "Bulgarian": [ - "а", - "и", - "о", - "е", - "н", - "т", - "р", - "с", - "в", - "л", - "к", - "д", - "п", - "м", - "з", - "г", - "я", - "ъ", - "у", - "б", - "ч", - "ц", - "й", - "ж", - "щ", - "х", - ], - "Croatian": [ - "a", - "i", - "o", - "e", - "n", - "r", - "j", - "s", - "t", - "u", - "k", - "l", - "v", - "d", - "m", - "p", - "g", - "z", - "b", - "c", - "č", - "h", - "š", - "ž", - "ć", - "f", - ], - "Hindi": [ - "क", - "र", - "स", - "न", - "त", - "म", - "ह", - "प", - "य", - "ल", - "व", - "ज", - "द", - "ग", - "ब", - "श", - "ट", - "अ", - "ए", - "थ", - "भ", - "ड", - "च", - "ध", - "ष", - "इ", - ], - "Estonian": [ - "a", - "i", - "e", - "s", - "t", - "l", - "u", - "n", - "o", - "k", - "r", - "d", - "m", - "v", - "g", - "p", - "j", - "h", - "ä", - "b", - "õ", - "ü", - "f", - "c", - "ö", - "y", - ], - "Thai": [ - "า", - "น", - "ร", - "อ", - "ก", - "เ", - "ง", - "ม", - "ย", - "ล", - "ว", - "ด", - "ท", - "ส", - "ต", - "ะ", - "ป", - "บ", - "ค", - "ห", - "แ", - "จ", - "พ", - "ช", - "ข", - "ใ", - ], - "Greek": [ - "α", - "τ", - "ο", - "ι", - "ε", - "ν", - "ρ", - "σ", - "κ", - "η", - "π", - "ς", - "υ", - "μ", - "λ", - "ί", - "ό", - "ά", - "γ", - "έ", - "δ", - "ή", - "ω", - "χ", - "θ", - "ύ", - ], - "Tamil": [ - "க", - "த", - "ப", - "ட", - "ர", - "ம", - "ல", - "ன", - "வ", - "ற", - "ய", - "ள", - "ச", - "ந", - "இ", - "ண", - "அ", - "ஆ", - "ழ", - "ங", - "எ", - "உ", - "ஒ", - "ஸ", - ], - "Kazakh": [ - "а", - "ы", - "е", - "н", - "т", - "р", - "л", - "і", - "д", - "с", - "м", - "қ", - "к", - "о", - "б", - "и", - "у", - "ғ", - "ж", - "ң", - "з", - "ш", - "й", - "п", - "г", - "ө", - ], -} - -LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES) diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py deleted file mode 100644 index 360a3107..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py +++ /dev/null @@ -1,80 +0,0 @@ -from __future__ import annotations - -from typing import TYPE_CHECKING, Any -from warnings import warn - -from .api import from_bytes -from .constant import CHARDET_CORRESPONDENCE, TOO_SMALL_SEQUENCE - -# TODO: remove this check when dropping Python 3.7 support -if TYPE_CHECKING: - from typing_extensions import TypedDict - - class ResultDict(TypedDict): - encoding: str | None - language: str - confidence: float | None - - -def detect( - byte_str: bytes, should_rename_legacy: bool = False, **kwargs: Any -) -> ResultDict: - """ - chardet legacy method - Detect the encoding of the given byte string. It should be mostly backward-compatible. - Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it) - This function is deprecated and should be used to migrate your project easily, consult the documentation for - further information. Not planned for removal. - - :param byte_str: The byte sequence to examine. - :param should_rename_legacy: Should we rename legacy encodings - to their more modern equivalents? - """ - if len(kwargs): - warn( - f"charset-normalizer disregard arguments '{','.join(list(kwargs.keys()))}' in legacy function detect()" - ) - - if not isinstance(byte_str, (bytearray, bytes)): - raise TypeError( # pragma: nocover - f"Expected object of type bytes or bytearray, got: {type(byte_str)}" - ) - - if isinstance(byte_str, bytearray): - byte_str = bytes(byte_str) - - r = from_bytes(byte_str).best() - - encoding = r.encoding if r is not None else None - language = r.language if r is not None and r.language != "Unknown" else "" - confidence = 1.0 - r.chaos if r is not None else None - - # automatically lower confidence - # on small bytes samples. - # https://github.com/jawah/charset_normalizer/issues/391 - if ( - confidence is not None - and confidence >= 0.9 - and encoding - not in { - "utf_8", - "ascii", - } - and r.bom is False # type: ignore[union-attr] - and len(byte_str) < TOO_SMALL_SEQUENCE - ): - confidence -= 0.2 - - # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process - # but chardet does return 'utf-8-sig' and it is a valid codec name. - if r is not None and encoding == "utf_8" and r.bom: - encoding += "_sig" - - if should_rename_legacy is False and encoding in CHARDET_CORRESPONDENCE: - encoding = CHARDET_CORRESPONDENCE[encoding] - - return { - "encoding": encoding, - "language": language, - "confidence": confidence, - } diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so deleted file mode 100755 index 857d7474b7a5a0c5b81989346cf9d845174eed68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15912 zcmeHOYit}>6~4QU>E?m$LY@oYG8fH%?PpH|zK{20L*b8?}nUc)T;Vx7vp_ zJDb`eKqMy>CXHA{LZ}r#0^~&LRv*U3__xR5SCETnl^2!0!op{a?ZWy ztjCjenjZ)um}~8vbH4MsbLP(Y&hEWm?iuKfMk0b+m3Ts|NJ7L((fkNoAht)WhvQb! zC~eoRsBYnk)e2%N>XeK*q>5z5nbt>@9aF~9Pv+BMFr zKkVn7HZJ=xClVVaZaY{txamg||OF#AUa zP1|vu$z;xR+>ybqR5s&`SmP;2=_+f?#EfN5Br{ejdDIa@v;CQ*XQplB($iUptjJ*2 z&O@M~*#qOxI0?_}bG%N^a}RoMGBXKqmo=RO1H^~2$qaNrm_xH>w_~MJ*#yTm%_N35 zMJhQy?M=CkW$U@D-hy%hx!s~~pnqSN*`~MY?RdJ8Rew<_sXCzMm%#Eh$!|%*@QI4w zE4ASJmhZDT)wM|XCF6qd>j9kQH}MAg@=SNPA+)S(xNeUDRxm-rqq4~;L`SAz_E5) z95|GxP`A8Pg0}rNlyM5ZyeQ?Lpo~-AfdJQZ6(CkxnyB5@z2cAOf4pNm_=^0eMvb|SD_|*%`K#V02>mN~-77u~ z-74B}xLo~DP(}_z?s9(gUw#&p)SprCI$tBiK`3fN@tvD+M$qpG<8=EE05#@cH|8%E ze~j?_&y7=6Cl_Yc8*{~oF<<5FGEQFe9tTVGH|F0hE~43~QE~FOGaHP#zkt!G@N|r~ z87@%6p~I!6f-(Qc;*894Eq@8o)`dfdFHY#S+fHDaFpe?b-4rVxl)->|>t_=y>ca9N zz`?FO4$4wGYDU0$LEso@OtO6~HQMy85`Z}8;4_mFGK(Uxsvf%~5o5{A4 z4Ufe-8k3c5I7dIN2d-pO&1|BT~yj)>SSTH*@faoZ*Fy9M93N-M-Oz+m3;^Mn*fq++snE+)5_0?L^eI0ay-X|T>}*@a5F>Fv|QJkHJyy-&WZ`wN;{^VPp4%{9@l0J=im1j&$xD=z)OvW#?_TYpk)$!oQ&+u=!)H-5UKXyE){> z3*LWGdBX|Ihi`9uRQO#Qr?5Vj6?{85`zB zmi>9Y69)`qvp>(%nBsHM-zZ!eGJwN568rPKi0NjsfAQ`|>|b1s&7-o;cS|6uvpc06xnTJZVT10VFC0Ss%x^V;&mpZ*E({F%bYzA}## z2cq9!BR{6oeq-QCU8Y|O`1AaMX+Chl*q_6m2>A2=U8ekg!1h>cfBPy3n4*nAjToXw z87Ip1<8GY+9C^Ne$24Wgv`LBOV=(_&(D?n&YRZ&pL5bxf=V#z0U~rDb_6w{`OWnY@#lEI1_s9-`|~`A_qFo=RjwQ7 z<#F&P`1Te z=8?VyAIwkY2+79&_I>1=QG3!MEJMsOGUtCXyU)Rnj6U u@x2+}Rr$R6`HSzLeD2Ca9f$A-PH3+O@&`mY{jcPI?{4M4A>a@Y#lHYyFIRj3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md.py deleted file mode 100644 index 12ce024b..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md.py +++ /dev/null @@ -1,635 +0,0 @@ -from __future__ import annotations - -from functools import lru_cache -from logging import getLogger - -from .constant import ( - COMMON_SAFE_ASCII_CHARACTERS, - TRACE, - UNICODE_SECONDARY_RANGE_KEYWORD, -) -from .utils import ( - is_accentuated, - is_arabic, - is_arabic_isolated_form, - is_case_variable, - is_cjk, - is_emoticon, - is_hangul, - is_hiragana, - is_katakana, - is_latin, - is_punctuation, - is_separator, - is_symbol, - is_thai, - is_unprintable, - remove_accent, - unicode_range, - is_cjk_uncommon, -) - - -class MessDetectorPlugin: - """ - Base abstract class used for mess detection plugins. - All detectors MUST extend and implement given methods. - """ - - def eligible(self, character: str) -> bool: - """ - Determine if given character should be fed in. - """ - raise NotImplementedError # pragma: nocover - - def feed(self, character: str) -> None: - """ - The main routine to be executed upon character. - Insert the logic in witch the text would be considered chaotic. - """ - raise NotImplementedError # pragma: nocover - - def reset(self) -> None: # pragma: no cover - """ - Permit to reset the plugin to the initial state. - """ - raise NotImplementedError - - @property - def ratio(self) -> float: - """ - Compute the chaos ratio based on what your feed() has seen. - Must NOT be lower than 0.; No restriction gt 0. - """ - raise NotImplementedError # pragma: nocover - - -class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._punctuation_count: int = 0 - self._symbol_count: int = 0 - self._character_count: int = 0 - - self._last_printable_char: str | None = None - self._frenzy_symbol_in_word: bool = False - - def eligible(self, character: str) -> bool: - return character.isprintable() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if ( - character != self._last_printable_char - and character not in COMMON_SAFE_ASCII_CHARACTERS - ): - if is_punctuation(character): - self._punctuation_count += 1 - elif ( - character.isdigit() is False - and is_symbol(character) - and is_emoticon(character) is False - ): - self._symbol_count += 2 - - self._last_printable_char = character - - def reset(self) -> None: # Abstract - self._punctuation_count = 0 - self._character_count = 0 - self._symbol_count = 0 - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - ratio_of_punctuation: float = ( - self._punctuation_count + self._symbol_count - ) / self._character_count - - return ratio_of_punctuation if ratio_of_punctuation >= 0.3 else 0.0 - - -class TooManyAccentuatedPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._character_count: int = 0 - self._accentuated_count: int = 0 - - def eligible(self, character: str) -> bool: - return character.isalpha() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if is_accentuated(character): - self._accentuated_count += 1 - - def reset(self) -> None: # Abstract - self._character_count = 0 - self._accentuated_count = 0 - - @property - def ratio(self) -> float: - if self._character_count < 8: - return 0.0 - - ratio_of_accentuation: float = self._accentuated_count / self._character_count - return ratio_of_accentuation if ratio_of_accentuation >= 0.35 else 0.0 - - -class UnprintablePlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._unprintable_count: int = 0 - self._character_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if is_unprintable(character): - self._unprintable_count += 1 - self._character_count += 1 - - def reset(self) -> None: # Abstract - self._unprintable_count = 0 - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return (self._unprintable_count * 8) / self._character_count - - -class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._successive_count: int = 0 - self._character_count: int = 0 - - self._last_latin_character: str | None = None - - def eligible(self, character: str) -> bool: - return character.isalpha() and is_latin(character) - - def feed(self, character: str) -> None: - self._character_count += 1 - if ( - self._last_latin_character is not None - and is_accentuated(character) - and is_accentuated(self._last_latin_character) - ): - if character.isupper() and self._last_latin_character.isupper(): - self._successive_count += 1 - # Worse if its the same char duplicated with different accent. - if remove_accent(character) == remove_accent(self._last_latin_character): - self._successive_count += 1 - self._last_latin_character = character - - def reset(self) -> None: # Abstract - self._successive_count = 0 - self._character_count = 0 - self._last_latin_character = None - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return (self._successive_count * 2) / self._character_count - - -class SuspiciousRange(MessDetectorPlugin): - def __init__(self) -> None: - self._suspicious_successive_range_count: int = 0 - self._character_count: int = 0 - self._last_printable_seen: str | None = None - - def eligible(self, character: str) -> bool: - return character.isprintable() - - def feed(self, character: str) -> None: - self._character_count += 1 - - if ( - character.isspace() - or is_punctuation(character) - or character in COMMON_SAFE_ASCII_CHARACTERS - ): - self._last_printable_seen = None - return - - if self._last_printable_seen is None: - self._last_printable_seen = character - return - - unicode_range_a: str | None = unicode_range(self._last_printable_seen) - unicode_range_b: str | None = unicode_range(character) - - if is_suspiciously_successive_range(unicode_range_a, unicode_range_b): - self._suspicious_successive_range_count += 1 - - self._last_printable_seen = character - - def reset(self) -> None: # Abstract - self._character_count = 0 - self._suspicious_successive_range_count = 0 - self._last_printable_seen = None - - @property - def ratio(self) -> float: - if self._character_count <= 13: - return 0.0 - - ratio_of_suspicious_range_usage: float = ( - self._suspicious_successive_range_count * 2 - ) / self._character_count - - return ratio_of_suspicious_range_usage - - -class SuperWeirdWordPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._word_count: int = 0 - self._bad_word_count: int = 0 - self._foreign_long_count: int = 0 - - self._is_current_word_bad: bool = False - self._foreign_long_watch: bool = False - - self._character_count: int = 0 - self._bad_character_count: int = 0 - - self._buffer: str = "" - self._buffer_accent_count: int = 0 - self._buffer_glyph_count: int = 0 - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - if character.isalpha(): - self._buffer += character - if is_accentuated(character): - self._buffer_accent_count += 1 - if ( - self._foreign_long_watch is False - and (is_latin(character) is False or is_accentuated(character)) - and is_cjk(character) is False - and is_hangul(character) is False - and is_katakana(character) is False - and is_hiragana(character) is False - and is_thai(character) is False - ): - self._foreign_long_watch = True - if ( - is_cjk(character) - or is_hangul(character) - or is_katakana(character) - or is_hiragana(character) - or is_thai(character) - ): - self._buffer_glyph_count += 1 - return - if not self._buffer: - return - if ( - character.isspace() or is_punctuation(character) or is_separator(character) - ) and self._buffer: - self._word_count += 1 - buffer_length: int = len(self._buffer) - - self._character_count += buffer_length - - if buffer_length >= 4: - if self._buffer_accent_count / buffer_length >= 0.5: - self._is_current_word_bad = True - # Word/Buffer ending with an upper case accentuated letter are so rare, - # that we will consider them all as suspicious. Same weight as foreign_long suspicious. - elif ( - is_accentuated(self._buffer[-1]) - and self._buffer[-1].isupper() - and all(_.isupper() for _ in self._buffer) is False - ): - self._foreign_long_count += 1 - self._is_current_word_bad = True - elif self._buffer_glyph_count == 1: - self._is_current_word_bad = True - self._foreign_long_count += 1 - if buffer_length >= 24 and self._foreign_long_watch: - camel_case_dst = [ - i - for c, i in zip(self._buffer, range(0, buffer_length)) - if c.isupper() - ] - probable_camel_cased: bool = False - - if camel_case_dst and (len(camel_case_dst) / buffer_length <= 0.3): - probable_camel_cased = True - - if not probable_camel_cased: - self._foreign_long_count += 1 - self._is_current_word_bad = True - - if self._is_current_word_bad: - self._bad_word_count += 1 - self._bad_character_count += len(self._buffer) - self._is_current_word_bad = False - - self._foreign_long_watch = False - self._buffer = "" - self._buffer_accent_count = 0 - self._buffer_glyph_count = 0 - elif ( - character not in {"<", ">", "-", "=", "~", "|", "_"} - and character.isdigit() is False - and is_symbol(character) - ): - self._is_current_word_bad = True - self._buffer += character - - def reset(self) -> None: # Abstract - self._buffer = "" - self._is_current_word_bad = False - self._foreign_long_watch = False - self._bad_word_count = 0 - self._word_count = 0 - self._character_count = 0 - self._bad_character_count = 0 - self._foreign_long_count = 0 - - @property - def ratio(self) -> float: - if self._word_count <= 10 and self._foreign_long_count == 0: - return 0.0 - - return self._bad_character_count / self._character_count - - -class CjkUncommonPlugin(MessDetectorPlugin): - """ - Detect messy CJK text that probably means nothing. - """ - - def __init__(self) -> None: - self._character_count: int = 0 - self._uncommon_count: int = 0 - - def eligible(self, character: str) -> bool: - return is_cjk(character) - - def feed(self, character: str) -> None: - self._character_count += 1 - - if is_cjk_uncommon(character): - self._uncommon_count += 1 - return - - def reset(self) -> None: # Abstract - self._character_count = 0 - self._uncommon_count = 0 - - @property - def ratio(self) -> float: - if self._character_count < 8: - return 0.0 - - uncommon_form_usage: float = self._uncommon_count / self._character_count - - # we can be pretty sure it's garbage when uncommon characters are widely - # used. otherwise it could just be traditional chinese for example. - return uncommon_form_usage / 10 if uncommon_form_usage > 0.5 else 0.0 - - -class ArchaicUpperLowerPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._buf: bool = False - - self._character_count_since_last_sep: int = 0 - - self._successive_upper_lower_count: int = 0 - self._successive_upper_lower_count_final: int = 0 - - self._character_count: int = 0 - - self._last_alpha_seen: str | None = None - self._current_ascii_only: bool = True - - def eligible(self, character: str) -> bool: - return True - - def feed(self, character: str) -> None: - is_concerned = character.isalpha() and is_case_variable(character) - chunk_sep = is_concerned is False - - if chunk_sep and self._character_count_since_last_sep > 0: - if ( - self._character_count_since_last_sep <= 64 - and character.isdigit() is False - and self._current_ascii_only is False - ): - self._successive_upper_lower_count_final += ( - self._successive_upper_lower_count - ) - - self._successive_upper_lower_count = 0 - self._character_count_since_last_sep = 0 - self._last_alpha_seen = None - self._buf = False - self._character_count += 1 - self._current_ascii_only = True - - return - - if self._current_ascii_only is True and character.isascii() is False: - self._current_ascii_only = False - - if self._last_alpha_seen is not None: - if (character.isupper() and self._last_alpha_seen.islower()) or ( - character.islower() and self._last_alpha_seen.isupper() - ): - if self._buf is True: - self._successive_upper_lower_count += 2 - self._buf = False - else: - self._buf = True - else: - self._buf = False - - self._character_count += 1 - self._character_count_since_last_sep += 1 - self._last_alpha_seen = character - - def reset(self) -> None: # Abstract - self._character_count = 0 - self._character_count_since_last_sep = 0 - self._successive_upper_lower_count = 0 - self._successive_upper_lower_count_final = 0 - self._last_alpha_seen = None - self._buf = False - self._current_ascii_only = True - - @property - def ratio(self) -> float: - if self._character_count == 0: - return 0.0 - - return self._successive_upper_lower_count_final / self._character_count - - -class ArabicIsolatedFormPlugin(MessDetectorPlugin): - def __init__(self) -> None: - self._character_count: int = 0 - self._isolated_form_count: int = 0 - - def reset(self) -> None: # Abstract - self._character_count = 0 - self._isolated_form_count = 0 - - def eligible(self, character: str) -> bool: - return is_arabic(character) - - def feed(self, character: str) -> None: - self._character_count += 1 - - if is_arabic_isolated_form(character): - self._isolated_form_count += 1 - - @property - def ratio(self) -> float: - if self._character_count < 8: - return 0.0 - - isolated_form_usage: float = self._isolated_form_count / self._character_count - - return isolated_form_usage - - -@lru_cache(maxsize=1024) -def is_suspiciously_successive_range( - unicode_range_a: str | None, unicode_range_b: str | None -) -> bool: - """ - Determine if two Unicode range seen next to each other can be considered as suspicious. - """ - if unicode_range_a is None or unicode_range_b is None: - return True - - if unicode_range_a == unicode_range_b: - return False - - if "Latin" in unicode_range_a and "Latin" in unicode_range_b: - return False - - if "Emoticons" in unicode_range_a or "Emoticons" in unicode_range_b: - return False - - # Latin characters can be accompanied with a combining diacritical mark - # eg. Vietnamese. - if ("Latin" in unicode_range_a or "Latin" in unicode_range_b) and ( - "Combining" in unicode_range_a or "Combining" in unicode_range_b - ): - return False - - keywords_range_a, keywords_range_b = ( - unicode_range_a.split(" "), - unicode_range_b.split(" "), - ) - - for el in keywords_range_a: - if el in UNICODE_SECONDARY_RANGE_KEYWORD: - continue - if el in keywords_range_b: - return False - - # Japanese Exception - range_a_jp_chars, range_b_jp_chars = ( - unicode_range_a - in ( - "Hiragana", - "Katakana", - ), - unicode_range_b in ("Hiragana", "Katakana"), - ) - if (range_a_jp_chars or range_b_jp_chars) and ( - "CJK" in unicode_range_a or "CJK" in unicode_range_b - ): - return False - if range_a_jp_chars and range_b_jp_chars: - return False - - if "Hangul" in unicode_range_a or "Hangul" in unicode_range_b: - if "CJK" in unicode_range_a or "CJK" in unicode_range_b: - return False - if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": - return False - - # Chinese/Japanese use dedicated range for punctuation and/or separators. - if ("CJK" in unicode_range_a or "CJK" in unicode_range_b) or ( - unicode_range_a in ["Katakana", "Hiragana"] - and unicode_range_b in ["Katakana", "Hiragana"] - ): - if "Punctuation" in unicode_range_a or "Punctuation" in unicode_range_b: - return False - if "Forms" in unicode_range_a or "Forms" in unicode_range_b: - return False - if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": - return False - - return True - - -@lru_cache(maxsize=2048) -def mess_ratio( - decoded_sequence: str, maximum_threshold: float = 0.2, debug: bool = False -) -> float: - """ - Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier. - """ - - detectors: list[MessDetectorPlugin] = [ - md_class() for md_class in MessDetectorPlugin.__subclasses__() - ] - - length: int = len(decoded_sequence) + 1 - - mean_mess_ratio: float = 0.0 - - if length < 512: - intermediary_mean_mess_ratio_calc: int = 32 - elif length <= 1024: - intermediary_mean_mess_ratio_calc = 64 - else: - intermediary_mean_mess_ratio_calc = 128 - - for character, index in zip(decoded_sequence + "\n", range(length)): - for detector in detectors: - if detector.eligible(character): - detector.feed(character) - - if ( - index > 0 and index % intermediary_mean_mess_ratio_calc == 0 - ) or index == length - 1: - mean_mess_ratio = sum(dt.ratio for dt in detectors) - - if mean_mess_ratio >= maximum_threshold: - break - - if debug: - logger = getLogger("charset_normalizer") - - logger.log( - TRACE, - "Mess-detector extended-analysis start. " - f"intermediary_mean_mess_ratio_calc={intermediary_mean_mess_ratio_calc} mean_mess_ratio={mean_mess_ratio} " - f"maximum_threshold={maximum_threshold}", - ) - - if len(decoded_sequence) > 16: - logger.log(TRACE, f"Starting with: {decoded_sequence[:16]}") - logger.log(TRACE, f"Ending with: {decoded_sequence[-16::]}") - - for dt in detectors: - logger.log(TRACE, f"{dt.__class__}: {dt.ratio}") - - return round(mean_mess_ratio, 3) diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so deleted file mode 100755 index d5091af73cad757a944ce9aa10a8c4415403bccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 289536 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

    0%pXj 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ɟL4Py)Kxm$#rc_ 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 z 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 b-|h836Xfu312^^mqa*46=tPH!$Kd|~T_KC7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/models.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/models.py deleted file mode 100644 index 1042758f..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/models.py +++ /dev/null @@ -1,360 +0,0 @@ -from __future__ import annotations - -from encodings.aliases import aliases -from hashlib import sha256 -from json import dumps -from re import sub -from typing import Any, Iterator, List, Tuple - -from .constant import RE_POSSIBLE_ENCODING_INDICATION, TOO_BIG_SEQUENCE -from .utils import iana_name, is_multi_byte_encoding, unicode_range - - -class CharsetMatch: - def __init__( - self, - payload: bytes, - guessed_encoding: str, - mean_mess_ratio: float, - has_sig_or_bom: bool, - languages: CoherenceMatches, - decoded_payload: str | None = None, - preemptive_declaration: str | None = None, - ): - self._payload: bytes = payload - - self._encoding: str = guessed_encoding - self._mean_mess_ratio: float = mean_mess_ratio - self._languages: CoherenceMatches = languages - self._has_sig_or_bom: bool = has_sig_or_bom - self._unicode_ranges: list[str] | None = None - - self._leaves: list[CharsetMatch] = [] - self._mean_coherence_ratio: float = 0.0 - - self._output_payload: bytes | None = None - self._output_encoding: str | None = None - - self._string: str | None = decoded_payload - - self._preemptive_declaration: str | None = preemptive_declaration - - def __eq__(self, other: object) -> bool: - if not isinstance(other, CharsetMatch): - if isinstance(other, str): - return iana_name(other) == self.encoding - return False - return self.encoding == other.encoding and self.fingerprint == other.fingerprint - - def __lt__(self, other: object) -> bool: - """ - Implemented to make sorted available upon CharsetMatches items. - """ - if not isinstance(other, CharsetMatch): - raise ValueError - - chaos_difference: float = abs(self.chaos - other.chaos) - coherence_difference: float = abs(self.coherence - other.coherence) - - # Below 1% difference --> Use Coherence - if chaos_difference < 0.01 and coherence_difference > 0.02: - return self.coherence > other.coherence - elif chaos_difference < 0.01 and coherence_difference <= 0.02: - # When having a difficult decision, use the result that decoded as many multi-byte as possible. - # preserve RAM usage! - if len(self._payload) >= TOO_BIG_SEQUENCE: - return self.chaos < other.chaos - return self.multi_byte_usage > other.multi_byte_usage - - return self.chaos < other.chaos - - @property - def multi_byte_usage(self) -> float: - return 1.0 - (len(str(self)) / len(self.raw)) - - def __str__(self) -> str: - # Lazy Str Loading - if self._string is None: - self._string = str(self._payload, self._encoding, "strict") - return self._string - - def __repr__(self) -> str: - return f"" - - def add_submatch(self, other: CharsetMatch) -> None: - if not isinstance(other, CharsetMatch) or other == self: - raise ValueError( - "Unable to add instance <{}> as a submatch of a CharsetMatch".format( - other.__class__ - ) - ) - - other._string = None # Unload RAM usage; dirty trick. - self._leaves.append(other) - - @property - def encoding(self) -> str: - return self._encoding - - @property - def encoding_aliases(self) -> list[str]: - """ - Encoding name are known by many name, using this could help when searching for IBM855 when it's listed as CP855. - """ - also_known_as: list[str] = [] - for u, p in aliases.items(): - if self.encoding == u: - also_known_as.append(p) - elif self.encoding == p: - also_known_as.append(u) - return also_known_as - - @property - def bom(self) -> bool: - return self._has_sig_or_bom - - @property - def byte_order_mark(self) -> bool: - return self._has_sig_or_bom - - @property - def languages(self) -> list[str]: - """ - Return the complete list of possible languages found in decoded sequence. - Usually not really useful. Returned list may be empty even if 'language' property return something != 'Unknown'. - """ - return [e[0] for e in self._languages] - - @property - def language(self) -> str: - """ - Most probable language found in decoded sequence. If none were detected or inferred, the property will return - "Unknown". - """ - if not self._languages: - # Trying to infer the language based on the given encoding - # Its either English or we should not pronounce ourselves in certain cases. - if "ascii" in self.could_be_from_charset: - return "English" - - # doing it there to avoid circular import - from charset_normalizer.cd import encoding_languages, mb_encoding_languages - - languages = ( - mb_encoding_languages(self.encoding) - if is_multi_byte_encoding(self.encoding) - else encoding_languages(self.encoding) - ) - - if len(languages) == 0 or "Latin Based" in languages: - return "Unknown" - - return languages[0] - - return self._languages[0][0] - - @property - def chaos(self) -> float: - return self._mean_mess_ratio - - @property - def coherence(self) -> float: - if not self._languages: - return 0.0 - return self._languages[0][1] - - @property - def percent_chaos(self) -> float: - return round(self.chaos * 100, ndigits=3) - - @property - def percent_coherence(self) -> float: - return round(self.coherence * 100, ndigits=3) - - @property - def raw(self) -> bytes: - """ - Original untouched bytes. - """ - return self._payload - - @property - def submatch(self) -> list[CharsetMatch]: - return self._leaves - - @property - def has_submatch(self) -> bool: - return len(self._leaves) > 0 - - @property - def alphabets(self) -> list[str]: - if self._unicode_ranges is not None: - return self._unicode_ranges - # list detected ranges - detected_ranges: list[str | None] = [unicode_range(char) for char in str(self)] - # filter and sort - self._unicode_ranges = sorted(list({r for r in detected_ranges if r})) - return self._unicode_ranges - - @property - def could_be_from_charset(self) -> list[str]: - """ - The complete list of encoding that output the exact SAME str result and therefore could be the originating - encoding. - This list does include the encoding available in property 'encoding'. - """ - return [self._encoding] + [m.encoding for m in self._leaves] - - def output(self, encoding: str = "utf_8") -> bytes: - """ - Method to get re-encoded bytes payload using given target encoding. Default to UTF-8. - Any errors will be simply ignored by the encoder NOT replaced. - """ - if self._output_encoding is None or self._output_encoding != encoding: - self._output_encoding = encoding - decoded_string = str(self) - if ( - self._preemptive_declaration is not None - and self._preemptive_declaration.lower() - not in ["utf-8", "utf8", "utf_8"] - ): - patched_header = sub( - RE_POSSIBLE_ENCODING_INDICATION, - lambda m: m.string[m.span()[0] : m.span()[1]].replace( - m.groups()[0], - iana_name(self._output_encoding).replace("_", "-"), # type: ignore[arg-type] - ), - decoded_string[:8192], - count=1, - ) - - decoded_string = patched_header + decoded_string[8192:] - - self._output_payload = decoded_string.encode(encoding, "replace") - - return self._output_payload # type: ignore - - @property - def fingerprint(self) -> str: - """ - Retrieve the unique SHA256 computed using the transformed (re-encoded) payload. Not the original one. - """ - return sha256(self.output()).hexdigest() - - -class CharsetMatches: - """ - Container with every CharsetMatch items ordered by default from most probable to the less one. - Act like a list(iterable) but does not implements all related methods. - """ - - def __init__(self, results: list[CharsetMatch] | None = None): - self._results: list[CharsetMatch] = sorted(results) if results else [] - - def __iter__(self) -> Iterator[CharsetMatch]: - yield from self._results - - def __getitem__(self, item: int | str) -> CharsetMatch: - """ - Retrieve a single item either by its position or encoding name (alias may be used here). - Raise KeyError upon invalid index or encoding not present in results. - """ - if isinstance(item, int): - return self._results[item] - if isinstance(item, str): - item = iana_name(item, False) - for result in self._results: - if item in result.could_be_from_charset: - return result - raise KeyError - - def __len__(self) -> int: - return len(self._results) - - def __bool__(self) -> bool: - return len(self._results) > 0 - - def append(self, item: CharsetMatch) -> None: - """ - Insert a single match. Will be inserted accordingly to preserve sort. - Can be inserted as a submatch. - """ - if not isinstance(item, CharsetMatch): - raise ValueError( - "Cannot append instance '{}' to CharsetMatches".format( - str(item.__class__) - ) - ) - # We should disable the submatch factoring when the input file is too heavy (conserve RAM usage) - if len(item.raw) < TOO_BIG_SEQUENCE: - for match in self._results: - if match.fingerprint == item.fingerprint and match.chaos == item.chaos: - match.add_submatch(item) - return - self._results.append(item) - self._results = sorted(self._results) - - def best(self) -> CharsetMatch | None: - """ - Simply return the first match. Strict equivalent to matches[0]. - """ - if not self._results: - return None - return self._results[0] - - def first(self) -> CharsetMatch | None: - """ - Redundant method, call the method best(). Kept for BC reasons. - """ - return self.best() - - -CoherenceMatch = Tuple[str, float] -CoherenceMatches = List[CoherenceMatch] - - -class CliDetectionResult: - def __init__( - self, - path: str, - encoding: str | None, - encoding_aliases: list[str], - alternative_encodings: list[str], - language: str, - alphabets: list[str], - has_sig_or_bom: bool, - chaos: float, - coherence: float, - unicode_path: str | None, - is_preferred: bool, - ): - self.path: str = path - self.unicode_path: str | None = unicode_path - self.encoding: str | None = encoding - self.encoding_aliases: list[str] = encoding_aliases - self.alternative_encodings: list[str] = alternative_encodings - self.language: str = language - self.alphabets: list[str] = alphabets - self.has_sig_or_bom: bool = has_sig_or_bom - self.chaos: float = chaos - self.coherence: float = coherence - self.is_preferred: bool = is_preferred - - @property - def __dict__(self) -> dict[str, Any]: # type: ignore - return { - "path": self.path, - "encoding": self.encoding, - "encoding_aliases": self.encoding_aliases, - "alternative_encodings": self.alternative_encodings, - "language": self.language, - "alphabets": self.alphabets, - "has_sig_or_bom": self.has_sig_or_bom, - "chaos": self.chaos, - "coherence": self.coherence, - "unicode_path": self.unicode_path, - "is_preferred": self.is_preferred, - } - - def to_json(self) -> str: - return dumps(self.__dict__, ensure_ascii=True, indent=4) diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/py.typed b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/py.typed deleted file mode 100644 index e69de29b..00000000 diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/utils.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/utils.py deleted file mode 100644 index 6bf0384c..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/utils.py +++ /dev/null @@ -1,414 +0,0 @@ -from __future__ import annotations - -import importlib -import logging -import unicodedata -from codecs import IncrementalDecoder -from encodings.aliases import aliases -from functools import lru_cache -from re import findall -from typing import Generator - -from _multibytecodec import ( # type: ignore[import-not-found,import] - MultibyteIncrementalDecoder, -) - -from .constant import ( - ENCODING_MARKS, - IANA_SUPPORTED_SIMILAR, - RE_POSSIBLE_ENCODING_INDICATION, - UNICODE_RANGES_COMBINED, - UNICODE_SECONDARY_RANGE_KEYWORD, - UTF8_MAXIMAL_ALLOCATION, - COMMON_CJK_CHARACTERS, -) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_accentuated(character: str) -> bool: - try: - description: str = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - return ( - "WITH GRAVE" in description - or "WITH ACUTE" in description - or "WITH CEDILLA" in description - or "WITH DIAERESIS" in description - or "WITH CIRCUMFLEX" in description - or "WITH TILDE" in description - or "WITH MACRON" in description - or "WITH RING ABOVE" in description - ) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def remove_accent(character: str) -> str: - decomposed: str = unicodedata.decomposition(character) - if not decomposed: - return character - - codes: list[str] = decomposed.split(" ") - - return chr(int(codes[0], 16)) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def unicode_range(character: str) -> str | None: - """ - Retrieve the Unicode range official name from a single character. - """ - character_ord: int = ord(character) - - for range_name, ord_range in UNICODE_RANGES_COMBINED.items(): - if character_ord in ord_range: - return range_name - - return None - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_latin(character: str) -> bool: - try: - description: str = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - return "LATIN" in description - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_punctuation(character: str) -> bool: - character_category: str = unicodedata.category(character) - - if "P" in character_category: - return True - - character_range: str | None = unicode_range(character) - - if character_range is None: - return False - - return "Punctuation" in character_range - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_symbol(character: str) -> bool: - character_category: str = unicodedata.category(character) - - if "S" in character_category or "N" in character_category: - return True - - character_range: str | None = unicode_range(character) - - if character_range is None: - return False - - return "Forms" in character_range and character_category != "Lo" - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_emoticon(character: str) -> bool: - character_range: str | None = unicode_range(character) - - if character_range is None: - return False - - return "Emoticons" in character_range or "Pictographs" in character_range - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_separator(character: str) -> bool: - if character.isspace() or character in {"|", "+", "<", ">"}: - return True - - character_category: str = unicodedata.category(character) - - return "Z" in character_category or character_category in {"Po", "Pd", "Pc"} - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_case_variable(character: str) -> bool: - return character.islower() != character.isupper() - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_cjk(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - - return "CJK" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_hiragana(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - - return "HIRAGANA" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_katakana(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - - return "KATAKANA" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_hangul(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - - return "HANGUL" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_thai(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - - return "THAI" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_arabic(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - - return "ARABIC" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_arabic_isolated_form(character: str) -> bool: - try: - character_name = unicodedata.name(character) - except ValueError: # Defensive: unicode database outdated? - return False - - return "ARABIC" in character_name and "ISOLATED FORM" in character_name - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_cjk_uncommon(character: str) -> bool: - return character not in COMMON_CJK_CHARACTERS - - -@lru_cache(maxsize=len(UNICODE_RANGES_COMBINED)) -def is_unicode_range_secondary(range_name: str) -> bool: - return any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD) - - -@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) -def is_unprintable(character: str) -> bool: - return ( - character.isspace() is False # includes \n \t \r \v - and character.isprintable() is False - and character != "\x1a" # Why? Its the ASCII substitute character. - and character != "\ufeff" # bug discovered in Python, - # Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space. - ) - - -def any_specified_encoding(sequence: bytes, search_zone: int = 8192) -> str | None: - """ - Extract using ASCII-only decoder any specified encoding in the first n-bytes. - """ - if not isinstance(sequence, bytes): - raise TypeError - - seq_len: int = len(sequence) - - results: list[str] = findall( - RE_POSSIBLE_ENCODING_INDICATION, - sequence[: min(seq_len, search_zone)].decode("ascii", errors="ignore"), - ) - - if len(results) == 0: - return None - - for specified_encoding in results: - specified_encoding = specified_encoding.lower().replace("-", "_") - - encoding_alias: str - encoding_iana: str - - for encoding_alias, encoding_iana in aliases.items(): - if encoding_alias == specified_encoding: - return encoding_iana - if encoding_iana == specified_encoding: - return encoding_iana - - return None - - -@lru_cache(maxsize=128) -def is_multi_byte_encoding(name: str) -> bool: - """ - Verify is a specific encoding is a multi byte one based on it IANA name - """ - return name in { - "utf_8", - "utf_8_sig", - "utf_16", - "utf_16_be", - "utf_16_le", - "utf_32", - "utf_32_le", - "utf_32_be", - "utf_7", - } or issubclass( - importlib.import_module(f"encodings.{name}").IncrementalDecoder, - MultibyteIncrementalDecoder, - ) - - -def identify_sig_or_bom(sequence: bytes) -> tuple[str | None, bytes]: - """ - Identify and extract SIG/BOM in given sequence. - """ - - for iana_encoding in ENCODING_MARKS: - marks: bytes | list[bytes] = ENCODING_MARKS[iana_encoding] - - if isinstance(marks, bytes): - marks = [marks] - - for mark in marks: - if sequence.startswith(mark): - return iana_encoding, mark - - return None, b"" - - -def should_strip_sig_or_bom(iana_encoding: str) -> bool: - return iana_encoding not in {"utf_16", "utf_32"} - - -def iana_name(cp_name: str, strict: bool = True) -> str: - """Returns the Python normalized encoding name (Not the IANA official name).""" - cp_name = cp_name.lower().replace("-", "_") - - encoding_alias: str - encoding_iana: str - - for encoding_alias, encoding_iana in aliases.items(): - if cp_name in [encoding_alias, encoding_iana]: - return encoding_iana - - if strict: - raise ValueError(f"Unable to retrieve IANA for '{cp_name}'") - - return cp_name - - -def cp_similarity(iana_name_a: str, iana_name_b: str) -> float: - if is_multi_byte_encoding(iana_name_a) or is_multi_byte_encoding(iana_name_b): - return 0.0 - - decoder_a = importlib.import_module(f"encodings.{iana_name_a}").IncrementalDecoder - decoder_b = importlib.import_module(f"encodings.{iana_name_b}").IncrementalDecoder - - id_a: IncrementalDecoder = decoder_a(errors="ignore") - id_b: IncrementalDecoder = decoder_b(errors="ignore") - - character_match_count: int = 0 - - for i in range(255): - to_be_decoded: bytes = bytes([i]) - if id_a.decode(to_be_decoded) == id_b.decode(to_be_decoded): - character_match_count += 1 - - return character_match_count / 254 - - -def is_cp_similar(iana_name_a: str, iana_name_b: str) -> bool: - """ - Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using - the function cp_similarity. - """ - return ( - iana_name_a in IANA_SUPPORTED_SIMILAR - and iana_name_b in IANA_SUPPORTED_SIMILAR[iana_name_a] - ) - - -def set_logging_handler( - name: str = "charset_normalizer", - level: int = logging.INFO, - format_string: str = "%(asctime)s | %(levelname)s | %(message)s", -) -> None: - logger = logging.getLogger(name) - logger.setLevel(level) - - handler = logging.StreamHandler() - handler.setFormatter(logging.Formatter(format_string)) - logger.addHandler(handler) - - -def cut_sequence_chunks( - sequences: bytes, - encoding_iana: str, - offsets: range, - chunk_size: int, - bom_or_sig_available: bool, - strip_sig_or_bom: bool, - sig_payload: bytes, - is_multi_byte_decoder: bool, - decoded_payload: str | None = None, -) -> Generator[str, None, None]: - if decoded_payload and is_multi_byte_decoder is False: - for i in offsets: - chunk = decoded_payload[i : i + chunk_size] - if not chunk: - break - yield chunk - else: - for i in offsets: - chunk_end = i + chunk_size - if chunk_end > len(sequences) + 8: - continue - - cut_sequence = sequences[i : i + chunk_size] - - if bom_or_sig_available and strip_sig_or_bom is False: - cut_sequence = sig_payload + cut_sequence - - chunk = cut_sequence.decode( - encoding_iana, - errors="ignore" if is_multi_byte_decoder else "strict", - ) - - # multi-byte bad cutting detector and adjustment - # not the cleanest way to perform that fix but clever enough for now. - if is_multi_byte_decoder and i > 0: - chunk_partial_size_chk: int = min(chunk_size, 16) - - if ( - decoded_payload - and chunk[:chunk_partial_size_chk] not in decoded_payload - ): - for j in range(i, i - 4, -1): - cut_sequence = sequences[j:chunk_end] - - if bom_or_sig_available and strip_sig_or_bom is False: - cut_sequence = sig_payload + cut_sequence - - chunk = cut_sequence.decode(encoding_iana, errors="ignore") - - if chunk[:chunk_partial_size_chk] in decoded_payload: - break - - yield chunk diff --git a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/version.py b/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/version.py deleted file mode 100644 index 71350e5a..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/charset_normalizer/version.py +++ /dev/null @@ -1,8 +0,0 @@ -""" -Expose version -""" - -from __future__ import annotations - -__version__ = "3.4.3" -VERSION = __version__.split(".") diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc index 4a782e7b18c44beb1e8a7f429e0c310d1d349d99..50add5227988da870283d694827908d8f85ce1de 100644 GIT binary patch delta 52 zcmca7|4g3yG%qg~0}ym=y1J43EVop+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<#) GUzh>S=@K>o delta 44 ycmaDRe@~wKG%qg~0}#}{xw4V_EVq!qenx(7s(yN2g}zH_adt_5!RAlgUzh<>01z_( diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc index 826800b013f7421aa6ef2154c5c3d611f62ae95b..90d13044d9bc965b07361569dfcb0686e1b46eee 100644 GIT binary patch delta 54 zcmeydhp}NVBll@uUM>b8=-PC3Blk{LsWAPF{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J*H{-t008}%67>K8 delta 46 zcmZqJ%lKmtBll@uUM>b8sC{!~Blk{LAwT_${M=Oi^t=jvm(=3ylKg_r_gEK2004Q4 B5b^*3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc index b844d7d86e58f3ed7ce629b1f71d0cd314c1ce28..4bbabfa72a0b7dcfb8a172b2c6997818b926e7c0 100644 GIT binary patch delta 54 zcmezPjq&F3J3UE~&-YCHV#V?tT%v;jT`b J|8W%;001&&6e0is delta 46 zcmezQjq&3*M()$Ryj%=GQ2XY}M(&4PLc#hO`MIh3>3J3UE~&-YCHV!L*|>`f0HY8Q AAOHXW diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc index aaf157c15ef3d584b5a289efdd0bc5898fa24876..0122cd92bd39fa5352376d0f20dc2f60ef9d5bde 100644 GIT binary patch delta 52 zcmaDa^j(PiG%qg~0}ym=y1J3OiAgF#KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d!h G3v2+x4-s|% delta 44 ycmew^^j?VjG%qg~0}#}{xw4VFiAg9xKO;XkRX;tiLf<8|IJ+djVDoaO3v2*Meh+g1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_utils.cpython-312.pyc index df18910598ea745eec5b6ca43a8e05c869204276..de13823eec46d9eea358ee19145e4319ce2f5691 100644 GIT binary patch delta 52 zcmZ3+xsH?jG%qg~0}ym=y1J1&he;|_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%u& GEE52oY7guH delta 44 ycmZ3-xr~$hG%qg~0}#}{xw4Tvhe^m+KO;XkRX;tiLf<8|IJ+djVDm&KStbA}!42sE diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc index fae84b2e78e27a9a3c1eca5c18e885129bf6ea0d..67d6f56bffce2e0c82c68e4a2374bdece7bca965 100644 GIT binary patch delta 52 zcmewm{Ue(DG%qg~0}ym=y1J2Dfn6#}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pZ+ GW;FoPMG;j1 delta 44 ycmewn{UMtBG%qg~0}#}{xw4U4fn6v_KO;XkRX;tiLf<8|IJ+djV6!XxW;Fm-><>}^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc index 979a570de620de1ff955ccf07d521c2a777afec8..763cb1068352459e6f427336faa95441cbb85932 100644 GIT binary patch delta 61 zcmZ2GiDT;|4(`*uyj%=G(6#C6M((p5Qo;He`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 QuQ=LYaWGDQ#lhqZ0C@lu;Q#;t delta 53 zcmdlwiDT^~4(`*uyj%=GQ2XY}M((p5Lf-lr`MIh3>3J3UE~&-YCHV!-pE%k-aWGE* I#KGhY0P6D+?f?J) diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc index 4f03a851ecf6964c5db312b43d5f008e46937230..8ac26ebedb1657d9b2eda0ac8987822fd1334e03 100644 GIT binary patch delta 54 zcmaFAhVlCvM()$Ryj%=G(6#C6M($WPsYv~d{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IRcv4V0RT!8*#H0l delta 46 zcmeyqhVlIxM()$Ryj%=GQ2XY}M($WPp+NnN{M=Oi^t=jvm(=3ylKg_rO>AHN0e%7y A)&Kwi diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc index 8a4031bd96e53e0ba928437b73347ee4898ff990..1cc56f762b67c4592810d7ebccbbb9e03a5932c4 100644 GIT binary patch delta 52 zcmZ2iysen~G%qg~0}ym=y1J3uiCHRAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&ZY GzZn3;{t)N@ delta 44 ycmdm1ysnu0G%qg~0}#}{xw4VliCHL6KO;XkRX;tiLf<8|IJ+djU~@XNzZn2aT@K{{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc index 24356d9ccd485904c8e82061167057bfaef7c2cc..eea9585cbc8eee475aa90e68b6104390a7302e61 100644 GIT binary patch delta 52 zcmcbY^(>3~G%qg~0}ym=y1J2j0h3guenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@TQ G3ylEd3KBj5 delta 44 ycmaEsbuWwiG%qg~0}#}{xw4Ua0h3Umenx(7s(yN2g}zH_adt_5!RDh(3ylC|5fD27 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc index 02d14281bf751a43068e3b8be194201b57edc473..94c08a0b727798032055d66616e6efaf78bed3a5 100644 GIT binary patch delta 52 zcmeAcpDfOOnwOW00SLM_UERp-%P1A5pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^k4W GkqZEmkq@5$ delta 44 ycmbO%-Yw33nwOW00SIc}T-nI&%P8chpOK%Ns-K=$q3@DfoL!P%u(^m)kqZDJunn95 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc index d890c761b736f07af6fc3c6b578f9e2c8dfac95b..57abbaead94a589e45c3594d757d9c9663831d97 100644 GIT binary patch delta 54 zcmcaGpYg_gM()$Ryj%=G(6#C6M($=VsZjll{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I3%Cqi0rG7U0ssI2 delta 46 zcmcaHpYg(cM()$Ryj%=GQ2XY}M($=VAz%HB{M=Oi^t=jvm(=3ylKg_rE4U0?0dd3+ A{{R30 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/shell_completion.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/shell_completion.cpython-312.pyc index 73ab809c246b731ddb4097052debca447d4c644c..f32bd24944786cb0cc69d2ee20ed99ae7f6b76f7 100644 GIT binary patch delta 54 zcmbQgjdA%lM()$Ryj%=G(6#C6Ms901sd)X2{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I5p2gp0N%(E<^TWy delta 46 zcmZ3!jdA`qM()$Ryj%=GQ2XY}Ms901p>X|-{M=Oi^t=jvm(=3ylKg_r32eth0AbG$ A;{X5v diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc index 5c78b1c930a4e46c7988b5c5aa6109ba109376d8..a5f256ef209492ae9c59f602632dd1ba8ec13e69 100644 GIT binary patch delta 54 zcmccE%XG7siTgA!FBbz4bZxr2k=ur4-7i8n+|_Aw IGDlt=0OMQ{+W-In delta 46 zcmccF%XG1qiTgA!FBbz4)V{g0k=ur4-7i8n+|_Aw IJ#$Ao0OhO_2><{9 delta 46 zcmeCb#@K$1k^3|+FBbz4)V{g0kvoZ5$WK2bKQ~oBJ+DIFCAB!aB)?#DJ99@m0B2he A1^@s6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc index 1db20cabea3404661b1665c5f6ae3a88d09260b5..a67d4d7ec70480ca1543fb9b089982921b31ebb8 100644 GIT binary patch delta 54 zcmaFU#{8v?nfo*^FBbz4bZxr2k$W4LRET~?er~FMdR~RTOKNd;Nq&L8yI+KExU19V J%Um;e008}56HNdB delta 46 zcmey;#{8y@nfo*^FBbz4)V{g0k$W4LkdJ;wer~FMdR~RTOKNd;Nq)iR+gvku004T^ B5lR36 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc index 86471f037cb6b6a5770ae84e84603fee9832de6c..5110b12a76b0f29d93e5e5ddd528ce4fb7ea4767 100644 GIT binary patch delta 54 zcmZ2_h;i*9M()$Ryj%=G(6#C6M(z|AsSy2){M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IjVw!I0P0N=G5`Po delta 46 zcmZ2`h;iv5M()$Ryj%=GQ2XY}M(z|AAs_vW{M=Oi^t=jvm(=3ylKg_roh(aY0Bckb AF8}}l diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_didyoumean/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_didyoumean/__pycache__/__init__.cpython-312.pyc index bec4ac6f913e6d80cc0e85ed6c1431db88bb1919..7d874d5f4333e51894433a55c3acbadd47f0a2bf 100644 GIT binary patch delta 52 zcmdlYy+@k+G%qg~0}%9Vy1J2Dj72I*KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pj) GBPRf$IuHH; delta 44 ycmdlZy+xY)G%qg~0}wR4xw4U4j72C)KO;XkRX;tiLf<8|IJ+djV6!z#BPReX*bV#u diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_plugins/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_plugins/__pycache__/__init__.cpython-312.pyc index e35ea312347b3a1a5dff3d7a6651e1e4120890ba..5ac8ca858bbdd2c3dea1ec8a113afa19bdb69426 100644 GIT binary patch delta 51 zcmX>sd|H_MG%qg~0}%9Vy1J2DoKq@ZKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|f4t FKLC>o5BdNA delta 43 xcmX>td{~(KG%qg~0}wR4xw4U4oKq-VKO;XkRX;tiLf<8|IJ+djV6qKoKL8;j4fp^6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_plugins/__pycache__/core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_plugins/__pycache__/core.cpython-312.pyc index dc5d7e95a4d0542b361b7f3a54d420144274457e..0fd7778fb7c7b6c5de0e9acdcde20859cad44479 100644 GIT binary patch delta 52 zcmew?^IL}dG%qg~0}%9Vy1J3ugheV^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Zp G5*GlxmJn3{ delta 44 ycmew@^I3-bG%qg~0}wR4xw4VlgheP=KO;XkRX;tiLf<8|IJ+djU~?pk5*GkOd=66p diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/__init__.cpython-312.pyc index 2f398677c807ced5e4a9e2b737b86b6bc6e3302f..87129f01709fcfad13b14d4b3ca1dbe8e8a3844e 100644 GIT binary patch delta 51 zcmeBRnZUw*nwOW00SJ0GUERo?!6+4@pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%G`W?r F832G(59$B_ delta 43 xcmbQh(!s)gnwOW00SFr3T-nH-!6+1>pOK%Ns-K=$q3@DfoL!P%Fu9kp82}K}4d?&> diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/_completer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/_completer.cpython-312.pyc index 07fd5c3863b5b68dbd4fc6eb82f9c594ef344a99..22084778d3b4132a38714d0e559266d725590cbd 100644 GIT binary patch delta 52 zcmbOivMhxAG%qg~0}%9Xy1J4338Pe;enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H5{ GSq%Wj=Ma+s delta 44 ycmZ1$GB1StG%qg~0}wR6xw4V_38PS$enx(7s(yN2g}zH_adt_5!Ddb-Sq%V76%LUA diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/_repl.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/_repl.cpython-312.pyc index ef3e20f97d1d48c58faa133dab633af9627ceb78..a24c6c20ddc247182e2622228c7ce61956922642 100644 GIT binary patch delta 52 zcmeyY_FIknG%qg~0}%9Xy1J2Dhgm98KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pG@ GmH+_1DG+1; delta 44 ycmeyZ_F0YlG%qg~0}wR6xw4U4hgm34KO;XkRX;tiLf<8|IJ+djU~?d|mH+@ozYbym diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/exceptions.cpython-312.pyc index a8eaee2aa0e4002212b300c44f43d43bf837a7bd..8f08d8667d84f4dd517a5fcef4f3dd5e9650d680 100644 GIT binary patch delta 52 zcmeyv(Zb1nnwOW00SJ0GUERp7!zdM}pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAqu< Gm>B?`kPo;3 delta 44 ycmZqS{KLV0nwOW00SFr3T-nI2!zdJ{pOK%Ns-K=$q3@DfoL!P%usM*?m>B>nSPixS diff --git a/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/click_repl/__pycache__/utils.cpython-312.pyc index b48218d6ba85574dcc42ec050a7f78b14c5021dd..0f47139661a6d0808fab21a2343415fd19824576 100644 GIT binary patch delta 52 zcmaE6_0Ed>G%qg~0}%9Xy1J3Oj7=(1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c>Z G%VGe|ixIm3 delta 44 ycmaE7^~{RCn G8r%T4L=hJN delta 44 ycmZ1{vrLBjG%qg~0}wR6xw4V_A(K#`enx(7s(yN2g}zH_adt_5!DcpQ4Q>EBtqv9d diff --git a/gnx-react/venv/lib/python3.12/site-packages/corsheaders/__pycache__/defaults.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/corsheaders/__pycache__/defaults.cpython-312.pyc index 5fa41dc7155a90900cdd511103fe9302115f9932..f4726208984804740a06545c82937a534a8d0bf5 100644 GIT binary patch delta 51 zcmbQuyqKB$G%qg~0}%9Xy1J2@olz=QKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|f7q FIRJUg4?zF` delta 43 xcmZ3?Je!&OG%qg~0}wR6xw4U)olz)MKO;XkRX;tiLf<8|IJ+djV6qNlIRFeS4L<+? diff --git a/gnx-react/venv/lib/python3.12/site-packages/corsheaders/__pycache__/middleware.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/corsheaders/__pycache__/middleware.cpython-312.pyc index 183ce4a4bad78a1507bf1f348d04b1ea43429147..88c76bd550b4ff3cde6411875e80138aeb90451f 100644 GIT binary patch delta 52 zcmdntbij%GG%qg~0}%9Xy1J1&nnfyJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$e3 G0T}?hrx7jy delta 44 ycmX@$w8M$}G%qg~0}wR6xw4TvnnfsFKO;XkRX;tiLf<8|IJ+djU~>b@0T}>8eGe=E diff --git a/gnx-react/venv/lib/python3.12/site-packages/corsheaders/__pycache__/signals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/corsheaders/__pycache__/signals.cpython-312.pyc index 12fd220a3290638828b01515f181c3b9e0e8ae52..7ea20fa082c3c8b4e391889fe1daf193b81c2212 100644 GIT binary patch delta 49 zcmX@YbcTuhG%qg~0}%9Xx;l}2lT?g;Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#Pg*9 DhLjM% delta 41 vcmX@ZbcBifG%qg~0}wR6xiXP^lTe6$Mt*LpetKSozDsIxc1eE0#OtL16afyt diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/__init__.cpython-312.pyc index eb3474b0e73cf9bc66757b002326aa69eee62c0b..d949cb81cbb58153d205f0ea948fd767d5c691ae 100644 GIT binary patch delta 52 zcmaFL@s@-8G%qg~0}ym=y1J433!_w&enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G@Y G5GDY}I1sY{ delta 44 ycmaFM@sxx6G%qg~0}#}`xw4V_3!_kwenx(7s(yN2g}zH_adt_5!DdOO5GDXiZVs^k diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/_common.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/_common.cpython-312.pyc index 6523b40877ede2507e78197ba5457c07d8960fc2..dcdf685c9ddb47b8fe13afd1c169a5a397b67e3b 100644 GIT binary patch delta 52 zcmZqT@8ah^&CAQh00do|u5RSkXOxQ6&&bbB)lbi>(055K&MwI>(0BKX&<%HW+U&z< G#s&b0>JL=_ delta 44 ycmeC;Z{p`Z&CAQh00eb!u59GiXA}z5&&bbB)lbi>(055K&MwI>*c`%W#s&Zx5DilR diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/_version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/_version.cpython-312.pyc index bf5adc3913c83f962ca35bbe12f4880e4b78673e..bedcfc55606a5980db9a910a0912edee20c656ad 100644 GIT binary patch delta 49 zcmZ3>w3UhbG%qg~0}ym=x;l}2npBj2Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#LZOz DdAAT+ delta 41 vcmdnWw3dncG%qg~0}#}`xiXP^noy8_Mt*LpetKSozDsIxc1eE0#NAZ@37igC diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/easter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/easter.cpython-312.pyc index b6f810bf5a1d0679c24ed54754d3e6f8c1a2693b..d2f30f603330693c0524cbc463c7e025b4d10c56 100644 GIT binary patch delta 52 zcmbO$wp5J!G%qg~0}ym=y1J3OkwYp%KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bde GdL{s){}7J= delta 44 ycmZ1~Hdl=MG%qg~0}#}`xw4VFkwYjzKO;XkRX;tiLf<8|IJ+djVDmDLdL{rbMGlPs diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/relativedelta.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/relativedelta.cpython-312.pyc index 0c2b9a6a7bacfb657b73f6014b16867b13e3fa88..29aa3fad64486c8b2902e7ec7671c33a071bf936 100644 GIT binary patch delta 54 zcmX?hm+{YybcN delta 46 zcmX?im+{zLM()$Ryj%=GQ1|A_M(%t@p>X|-{M=Oi^t=jvm(=3ylKg_rQy8ss0f9*n AY5)KL diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/rrule.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/rrule.cpython-312.pyc index 9ff7e1112ee07b2f3a2889091f7d6b1bf9bdc76c..c7f0eeb0db05642a9fee8ca39d92c41768dde20b 100644 GIT binary patch delta 58 zcmaDfhvn5A7Vgu$yj%=G(6#C6M(!INQsMd;`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 NUpcma3J3UE~&-YCHV!-e>t}Q@~J diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/tzwin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/tzwin.cpython-312.pyc index 088d780f99dd5dfc13c137c244c5acb01f23c57f..bda7a30c291c2654b5c11ab58a13e768ef35c775 100644 GIT binary patch delta 49 zcmX@Zc!iPsG%qg~0}ym=x;l~DM=D%DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}VrDV` DdjSvV delta 41 vcmcb@c!rVtG%qg~0}#}`xiXR4N6244BR@A)KRvHP-zBv;yClD0Vqr1>3vLbO diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/__pycache__/utils.cpython-312.pyc index 68b5b224673a2bad223a64b2b3bebda4d941245e..4c683ffcf226d10472fe081c4c292a17b0a3535b 100644 GIT binary patch delta 52 zcmew>+$zF-nwOW00SLM_UERpd$}APGpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v{{My GHX8t)#SkX| delta 44 ycmZn_`76wQnwOW00SM~eT-nIY$}HrspOK%Ns-K=$q3@DfoL!P%uvv@wHX8scMGhqZ diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/parser/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/parser/__pycache__/__init__.cpython-312.pyc index 02c0b34d87c9e9f8589e6ab2e15b898c93d16169..68f0a51ef6232e463a701049794e9d03c7128ae4 100644 GIT binary patch delta 52 zcmcaD@>qoXG%qg~0}ym=y1J1&m02oLKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$|v GO*R0y-VrPS delta 44 ycmaDXa$AJ^G%qg~0}#}`xw4Tvm02iKKO;XkRX;tiLf<8|IJ+djU~?DqO*Q~QBo8V8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/parser/__pycache__/_parser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/parser/__pycache__/_parser.cpython-312.pyc index 9db7497db6801a8b14ad1b660ef9efc0105c75c9..9ac4c2a06442cb48a4daba50aa52f7a40b3c1cf4 100644 GIT binary patch delta 54 zcmbR8n0d})X71Cxyj%=G(6#C6M(!(IQVIGQ`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JKXNU81^@);6W0I$ delta 46 zcmbR9n0d-$X71Cxyj%=GQ1|A_M(!(ILJ|5I`MIh3>3J3UE~&-YCHV!Le{wB;1^|H1 B5!C$*= GuO$HBJQ1z{ delta 44 ycmaD@d9#xHG%qg~0}#}`xw4TvpIInMKO;XkRX;tiLf<8|IJ+djVDl7aUrPXC`VXuC diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/__init__.cpython-312.pyc index 08aae77c309ae39afac4d0b163a6e2c1be0dd10e..71dde2201f1d842171553066a8074fe567bcc315 100644 GIT binary patch delta 51 zcmX@WdV-bvG%qg~0}ym=y1J43ETdGcenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8to- F*8rr+5qAIp delta 43 xcmX@XdVrPtG%qg~0}#}`xw4V_ETd4Uenx(7s(yN2g}zH_adt_5!Q@Yj*8nb|4|M8&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=zb G^(Fw|brLB6 delta 44 ycmcbbcQ%jvG%qg~0}#}`xw4UaBa={wenx(7s(yN2g}zH_adt_5!RBjB^(Fve%Md33 diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/_factories.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/_factories.cpython-312.pyc index acb25da7e472d5332cc27908309c49c7fa7ad0c8..6b86874a2063282af6d99b870fbb3fc88ae162f0 100644 GIT binary patch delta 52 zcmaE-{7sqrG%qg~0}ym=y1J43CZklmenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=oC GKllOHMG|@d delta 44 ycmeyS{7#wsG%qg~0}#}`xw4V_CZkZeenx(7s(yN2g}zH_adt_5!RCLAKllMz>kxPV diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/tz.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/tz.cpython-312.pyc index 476fdb090df72f922099cd9aa34b0f12b5087507..372bd84de8491bda1a9fb783107bd14aeb04e278 100644 GIT binary patch delta 54 zcmcc8%yOrhh5IxwFBbz4bZxr2kz1WhDqKG!KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb I3)h720Nw-=Gynhq delta 46 zcmcc9%yOlfh5IxwFBbz4)V;Z~kz1Wh$X`DrKQ~oBJ+DIFCAB!aB)?#@57&h60AZRC AG5`Po diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/win.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/tz/__pycache__/win.cpython-312.pyc index 3490fa03ea177ed9ded87a9a6e874a6b962711b7..07bc2b267bd9a105d1257d11aea6ec24389f5075 100644 GIT binary patch delta 54 zcmaFU#`vX;k^3|+FBbz4bZxr2k^4D|RD^y;er~FMdR~RTOKNd;Nq&L8yI+KExU17< I7S;?q0RE#9`2YX_ delta 46 zcmey;#`vabBxO&CAQh00do|u5RRh$S9SppOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}(+ Gt26+$aS;Ci delta 44 ycmeCSYPRA&&CAQh00eb!u59Ff$S4%8pOK%Ns-K=$q3@DfoL!P%u$hgCRT=;|`VIa7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/dateutil/zoneinfo/__pycache__/rebuild.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/dateutil/zoneinfo/__pycache__/rebuild.cpython-312.pyc index bff870bc0551bfece1d1a85e64e92294ed434d69..11f60fc55edaaf1831e17628481a062d0a343427 100644 GIT binary patch delta 52 zcmew;_fwAhG%qg~0}ym=y1J43Ih$0Henx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FX- GTn+%#ju8$3 delta 44 ycmew<_fd}fG%qg~0}#}`xw4V_Ih#$*= GDI)->br3}W delta 44 ycmX@fd61L)G%qg~0}#}`xw4TvpIInCKO;XkRX;tiLf<8|IJ+djVDl7aQ$_$Y+zvtj diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/__pycache__/__main__.cpython-312.pyc index 88d53bbbdb5dc904659befbf804199b07a0a57b6..d782ecc688189408101a0675fadead4a17c3a606 100644 GIT binary patch delta 51 zcmcb_e2ba;G%qg~0}ym?y1J2DpHV78KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fMv F8vv9Q5C;GN delta 43 xcmcb`e2JO+G%qg~0}#}`xw4U4pHV14KO;XkRX;tiLf<8|IJ+djU~&j!8vr5S4g>%I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/__pycache__/shortcuts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/__pycache__/shortcuts.cpython-312.pyc index 074213bd1a31c7be255ed3dea7f7c590a210294d..b924f14af354ae1d4df1abefdda3297ea147057a 100644 GIT binary patch delta 52 zcmaE-^G%2QG%qg~0}ym?y1J1&lvyfLKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$?t GA0Yt7@ezsu delta 44 ycmeyS^G=8RG%qg~0}#}`xw4TvlvyZHKO;XkRX;tiLf<8|IJ+djU~?7oA0YruAPG|3DOQ* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/apps/__pycache__/config.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/apps/__pycache__/config.cpython-312.pyc index e1be400ed3344dadfd58607e8543cf8cd764c75d..c17352337be090963d685c89b6123ed6de526ccf 100644 GIT binary patch delta 52 zcmez2-r&J~nwOW00SLM`UERoC#Ud50pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Sy9 GqC5b>VG$Jo delta 44 ycmZqh_~FidnwOW00SM~eT-nH7#Ud1}pOK%Ns-K=$q3@DfoL!P%uz5a9qC5ab`VSHS diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/apps/__pycache__/registry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/apps/__pycache__/registry.cpython-312.pyc index cbc782a9d886292d84404806929008503de2f4d3..4aa813b5f3dbaf5f7469b628eb2eee2e0224678d 100644 GIT binary patch delta 54 zcmbO*iE+jxM()$Ryj%=G(7oyEM(&BMQnC6O`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J*Rdu!0|3?25widQ delta 46 zcmbO+iE+XtM()$Ryj%=GQ1|A_M(&BMLZSK@`MIh3>3J3UE~&-YCHV!Lx3MNU0{~fS B53m3L diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/__pycache__/__init__.cpython-312.pyc index 0b4b6081f598a1921eb5e422ef2d009bdfbe9cfd..ff17ff71ef305df7b66c56a605038ab883272eb5 100644 GIT binary patch delta 54 zcmX@v$9S=ik^3|+FBbz4bZ@%4k^3;4RIGkRer~FMdR~RTOKNd;Nq&L8yI+KExU19V I2W*)R0P`~vhX4Qo delta 46 zcmccE$9S@jk^3|+FBbz4)V;Z~k^3;4P^f-Jer~FMdR~RTOKNd;Nq)iR7i^gh0CD0F Aga7~l diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/__pycache__/global_settings.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/__pycache__/global_settings.cpython-312.pyc index 0ea26dfad6003994e4fc9ef38b5979f6dbb19a9e..e96a60fce1a4db467d115a5ec928d3595b816c5b 100644 GIT binary patch delta 52 zcmbQ3JTsa5G%qg~0}ym?y1J3ukXtH6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o@< Gvl;-i9uRB* delta 44 ycmbQ4JTaO3G%qg~0}#}`xw4VlkXtB5KO;XkRX;tiLf<8|IJ+djU~?F^vl;+AH4bS2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/__pycache__/__init__.cpython-312.pyc index d62f1a0c6d99b1c8b6462b1b0f7f26bb780fbdfd..8d262ea3afe1cf5df3fbd4721c712251f46fc3dc 100644 GIT binary patch delta 52 zcmZ4Gw8@G4G%qg~0}ym?y1J3OOGGL~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dWC GW*z{)5D`WI delta 44 ycmdnww91M5G%qg~0}#}`xw4VFOGGF}KO;XkRX;tiLf<8|IJ+djVDoyBW*z`Vmk&b# diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ar/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ar/__pycache__/__init__.cpython-312.pyc index 62b5e07e4a011173b36789979fa246ff1c796308..e1ee88715f8bdde6fb18cd69c3ee09ef8692aa39 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ar/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ar/__pycache__/formats.cpython-312.pyc index 8ef6f06e5c5719d2f71ed8de59058adde92c18bb..219fa024b009ce6e543e83fe80fef352efd4906b 100644 GIT binary patch delta 50 zcmdnMyn~thG%qg~0}ym?x;l~jhg6z=Mt*LpetKSozDsIxc1eDLzPn$9Zn&${WKqW1 E0GB%uR{#J2 delta 42 wcmdnNyn&hfG%qg~0}#}`xiXRahfth;Mt*LpetKSozDsIxc1eE0WLd`903k^ZQ~&?~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ar_DZ/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ar_DZ/__pycache__/__init__.cpython-312.pyc index 7d76386df3dd23f9eae2489f8ee41af6a1c1b440..2ce6f1de577b22c54b503172ec2ab198c21d7459 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbAeE+{k)NBYpPpBt?~+=aU6Nm*@9r0&8}8~f@$GZ~ DbIcH^ delta 41 vcmeBSZeiv=&CAQh00eb!u1w^G%qg~0}#}`xw4U4kWna3KO;XkRX;tiLf<8|IJ+djV6qwG0stPB4d?&> diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ca/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ca/__pycache__/__init__.cpython-312.pyc index 1112589ce72264518b03f0ce267b783a9c623608..7e063688c0e6515ffb08b99df94d951a05648ee0 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ca/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ca/__pycache__/formats.cpython-312.pyc index bc99d6894053bfcddda539f5d049143d712d7e52..0b3887fbfa3259e14ae2d914310412aecbf86481 100644 GIT binary patch delta 51 zcmZ35KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tP7 FNdSrv5HDG%qg~0}ym?y1J1&jZrFHKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>v2; FS^$vL5NQAa delta 43 xcmdnNvVn#BG%qg~0}#}`xw4TvjZr9GKO;XkRX;tiLf<8|IJ+djU~)I(S^yq?4rTxV diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cs/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cs/__pycache__/__init__.cpython-312.pyc index c2c5bb2e8b4a8cf45d56e8256a56972987674e17..0d5b62af472e5d6b16b27627e35c3c0ab3f8b8d1 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cs/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cs/__pycache__/formats.cpython-312.pyc index 9d8056ea7d7c3a18d4919fe3a353208d5e10a1d9..241f0860740f06c5397cce6e49f92304d495d3c1 100644 GIT binary patch delta 51 zcmbQszLcH&G%qg~0}ym?y1J2jJCjtJenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8s2m FCjpic5eNVP delta 43 xcmZ3=K9`;QG%qg~0}#}`xw4UaJCjhHenx(7s(yN2g}zH_adt_5!Q?wkCjlZf4+Q`K diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cy/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cy/__pycache__/__init__.cpython-312.pyc index f4322785cbe630704719b62f040cae5904b4d806..e98f1ece7ae2da7f20c83baa37fe9be857447612 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cy/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/cy/__pycache__/formats.cpython-312.pyc index 32115cf8f992504695334766e3601dc3dbf7a5c5..ad2997bc742a276e29f65c4a1e07c5288f520dd0 100644 GIT binary patch delta 51 zcmX@ac8ZPrG%qg~0}ym?y1J1&hDj<-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>ujg FNdT8v5Sjo0 delta 43 xcmX@bc8HDpG%qg~0}#}`xw4TvhDj(+KO;XkRX;tiLf<8|IJ+djU~(hVNdP1g4wnD` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/da/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/da/__pycache__/__init__.cpython-312.pyc index f84b87abf1a13d84ba983bf2e69af5e1596b60a8..1ed8f09aa6079f6c3b7211de0d2dfffbb0f6f9fe 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/da/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/da/__pycache__/formats.cpython-312.pyc index 98fdca44565dbee8dd270cc66465d5efad1ab99f..a21a0fcbdd6760853e9d0c1e9968c914d2785e0a 100644 GIT binary patch delta 51 zcmX@fdXbg;G%qg~0}ym?y1J438KYF1enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`06* FV*si55VimS delta 43 xcmcb}dXkmG%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEb3XFenx(7s(yN2g}zH_adt_5fxf$6gl@R2(_~?$ FGXS+O5eonS delta 43 xcmaFPdY_g1G%qg~0}#}`xw4V_8>3L7enx(7s(yN2g}zH_adt_5!DMNsGXOhD4+sDN diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/el/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/el/__pycache__/__init__.cpython-312.pyc index c8d2113de1b0d56b45312bc431aa4c9d102d189d..0e6993e6dcdcb34c85266fde9ec6a1aea301f170 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/el/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/el/__pycache__/formats.cpython-312.pyc index 4c6d5f33704afca821f7bc059b19f662900d73f5..c72d576b4aa2431386cbc55e1be9bd16020ecb24 100644 GIT binary patch delta 51 zcmdnWwwI0jG%qg~0}ym?y1J1&oJlH8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tkE FK>(465N-ef delta 43 xcmdnXwv~!~*4r>4a diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/en/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/en/__pycache__/__init__.cpython-312.pyc index 03758e89b715d20e2513df989d29c2981d100193..67a39a2372cf7d0a2d5cc2a699204a8302d8a4c4 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/en/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/en/__pycache__/formats.cpython-312.pyc index 1fc4ef7fcda6092ada458d9d95c5db2c5495ec1c..567e552a2dafdd49cf169e813151eebaef1e1b23 100644 GIT binary patch delta 51 zcmaFD{)V0VG%qg~0}ym?y1J437n4+)enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`0ex FvjDh25g`Bo delta 43 xcmaFE{)CG%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbujg F8335!5T*bC delta 43 xcmX@hc9f0#G%qg~0}#}`xw4TvhDj(G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbujg F8335!5T*bC delta 43 xcmX@hc9f0#G%qg~0}#}`xw4TvhDj(uXc FNdS`=5PARr delta 43 xcmX@awu_DXG%qg~0}#}`xw4Tvgh?n)KO;XkRX;tiLf<8|IJ+djU~(nXNdO>{4tD?m diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_AR/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_AR/__pycache__/__init__.cpython-312.pyc index a05657f27d4b1231b945974d1ee898b45cb7af36..cbbd7d4a4afebfa944757eeeeac947f1801ceedf 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbG%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbvK! F5df5_5QYE% delta 43 xcmX@iwwsOnG%qg~0}#}`xw4Tvib*I@KO;XkRX;tiLf<8|IJ+djU~)av5da~}4ub#y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_MX/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_MX/__pycache__/__init__.cpython-312.pyc index 4b5fb1fc850520095be3797444cacc4a6fcafd1d..ad679b3d3eb2505d6202a80e92b2df41104e90e6 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbvK! F5df5_5QYE% delta 43 xcmX@iwwsOnG%qg~0}#}`xw4Tvib*I@KO;XkRX;tiLf<8|IJ+djU~)av5da~}4ub#y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_NI/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_NI/__pycache__/__init__.cpython-312.pyc index 954bab0809119c15b2da3747916efb918ae52cbb..39c2379d049397d2fe321cadb61abce9dcd7e2b8 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbvK! F5df5_5QYE% delta 43 xcmX@iwwsOnG%qg~0}#}`xw4Tvib*I@KO;XkRX;tiLf<8|IJ+djU~)av5da~}4ub#y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_PR/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/es_PR/__pycache__/__init__.cpython-312.pyc index 7a61dd0b9d294daf56d691e45eefc92c6130e2bc..a2c5cf1abb3734fa4d9f1116894284256f5dca52 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbu;p F832-j5Ox3n delta 43 xcmX@ewv&zfG%qg~0}#}`xw4TvfJrD(KO;XkRX;tiLf<8|IJ+djU~(zb82}&?4s!qi diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/et/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/et/__pycache__/__init__.cpython-312.pyc index 2b94f2d9216f566e78433b3c73d34fde42847015..be443f5505eb0b8ebc371cd81a614074e02d2eb8 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/et/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/et/__pycache__/formats.cpython-312.pyc index 484b4a72192648171cb9ce2939136299e33fd22f..dd130e581d8a4f70f8ee95669b89437421abb51e 100644 GIT binary patch delta 49 zcmZo;?qlXY&CAQh00iBeu1@5>B$cM0k)NBYpPpBt?~+=aU6Nm*@9r0&8}8~f@%?lF Dbj}d4 delta 41 vcmeBUZe!*?&CAQh00eb!u1w^u*& F8UT$U5KRC8 delta 43 xcmdnUvXX`SG%qg~0}#}`xw4Tvfl(+vT% FK>&te5E=jg delta 43 xcmZ3%wt$WMG%qg~0}#}`xw4VliAg9!vC4i^9b diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/fy/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/fy/__pycache__/__init__.cpython-312.pyc index d53bf59acdee45fabb1f7e4b13e9c993670eba6c..5706af3008419af8fc42568410886ddc477c128e 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/fy/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/fy/__pycache__/formats.cpython-312.pyc index 31795b7140831ba27c05ffbdfaf0c3337a1b2bf8..4a14c95989a4daf777f3256d339369c3dedda3cd 100644 GIT binary patch delta 49 zcmdnbc$|^@G%qg~0}ym?x;l~DSSn3FBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn99s DbjuI8 delta 41 vcmX@kxSx^xG%qg~0}#}`xiXR4SSU_EBR@A)KRvHP-zBv;yClD0VnjXw1~d(| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ga/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ga/__pycache__/__init__.cpython-312.pyc index 7a8a81a3edf64998aa0ae2f21ac89c3fe3084cb5..4e0b521212812e9353fefd04eed093bd4b06bb45 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ga/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ga/__pycache__/formats.cpython-312.pyc index 2a5b00224c8e61d384d517a98137944cfce8d15a..0df7884cd780ee4636475c4e07805f2843f225e6 100644 GIT binary patch delta 49 zcmZo*?qKFV&CAQh00iBeu1@4WBbBC~k)NBYpPpBt?~+=aU6Nm*@9r0&8}8~f@#S;? DamWyu delta 41 vcmeBRZeZp<&CAQh00eb!u1w@UBNV5fk)NBYpPpBt?~+=aU6Nlg@#Ay=0yz$q diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gd/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gd/__pycache__/__init__.cpython-312.pyc index 9cc85e1ff2f6ad6922358f11f7ab885f4041ceae..c7824b869b99137bf4835d1dc950e3f7f850394c 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gd/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gd/__pycache__/formats.cpython-312.pyc index 12edf587a36b9102dfba983aaa80335d88009ebf..cad40d4793efe281f3cff0d892398c7e93b5c798 100644 GIT binary patch delta 51 zcmeyu{D+zQG%qg~0}ym?y1J3ukWng4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|f;V FG617#5Pbju delta 43 xcmeyv{DqnOG%qg~0}#}`xw4VlkWna3KO;XkRX;tiLf<8|IJ+djU~(AaG5{`<4tf9p diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gl/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gl/__pycache__/__init__.cpython-312.pyc index c90e2359097ba2780369ff62bde1d19d975087f8..e4c8310f42f8c3d4da2001532bf97dae16db4a12 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gl/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/gl/__pycache__/formats.cpython-312.pyc index 34ab4f1d2d71dacb4f2450bdffbdbe43bb4cfa74..2163e74ba1ef6feb5e977b28c5354d417ca8ccf8 100644 GIT binary patch delta 51 zcmdnZa+rntG%qg~0}ym?y1J3Oh*2s{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>vc~ F8UU8D5S0J` delta 43 xcmX@ivYUnbG%qg~0}#}`xw4VFh*2m`KO;XkRX;tiLf<8|IJ+djVDfavH2@=14w3)> diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/he/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/he/__pycache__/__init__.cpython-312.pyc index 8bbc8e1617dfd5f2b539b5a41128d65c469815f7..4d73b4b85672aa127cbd8139514f79d351c7eb9e 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/he/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/he/__pycache__/formats.cpython-312.pyc index c1a16e3aecf314ea798fd5134ff4e237644e23b9..7ca570559ec304d6162e73488d58830bea3d8c47 100644 GIT binary patch delta 51 zcmZo*>0seL&CAQh00iBeu5RSEWt2+O&&bbB)lbi>(055K&MwI>(0BKX&<%HWnjFQr F3;=j553c|K delta 43 xcmeBRX<*?#&CAQh00eb!u59GCWfY3j&&bbB)lbi>(055K&MwI>n4HA83;+rx4XgkF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hi/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hi/__pycache__/__init__.cpython-312.pyc index bf65908c0facab5fa7d87ec3f6b0f80f49c3cd9f..d1cb69767a0ee622a6fe40cd338c06667fd23f60 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hi/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hi/__pycache__/formats.cpython-312.pyc index 3e616dfdb50786f957abd16b0239aae17a6e4363..ade171b8e7c22c1c7614bd6991a7c59ff8795de9 100644 GIT binary patch delta 49 zcmZo-?qcRX&CAQh00iBeu1@4WCzYn3k)NBYpPpBt?~+=aU6Nm*@9r0&8}8~f@%3~7 Da>@{( delta 41 vcmeBTZer#>&CAQh00eb!u1w@UClsfjk)NBYpPpBt?~+=aU6Nlg@$+;50}BqF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hr/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hr/__pycache__/__init__.cpython-312.pyc index f0657df925fef087b596a7151c86a4d448963824..5f4f2c4623ced10c06938949270e1fca49079b36 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hr/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hr/__pycache__/formats.cpython-312.pyc index 19df39a13717f24299612077d7bdd51d77f81bd5..192c94271634f5f41ded926997c7896c054c4a76 100644 GIT binary patch delta 51 zcmey#-pIjynwOW00SLM`UERnn%`BCspOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%G}(gr FAOMTp5CZ@J delta 43 xcmZqV_{q+FnwOW00SM~eT-nGi%`6nBpOK%Ns-K=$q3@DfoL!P%Fxi3mAOIQ=4gdfE diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hu/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hu/__pycache__/__init__.cpython-312.pyc index de5cc8540f82a0d5620436effc471fe8e15a71d9..54e4ab47a0dd34f9e89042ad42ec0fb16d6bb0b2 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hu/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/hu/__pycache__/formats.cpython-312.pyc index 3cedfc939f40d8cf7d867975fac1d66e434350d2..ccb06dd3706a10b0c90265677a349d7fc7fbd7e6 100644 GIT binary patch delta 51 zcmbQtHk*z6G%qg~0}ym?y1J2Dfk`S&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|gTT FH2{2>577Vs delta 43 xcmbQuHkpn4G%qg~0}#}`xw4U4fk`M%KO;XkRX;tiLf<8|IJ+djV6rRIH2@AH4bA`n diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/id/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/id/__pycache__/__init__.cpython-312.pyc index 6a92eda68b2018eb9ad692646753db37d42cfa6d..83e441c9b34594006663f03821071ed16514c509 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/id/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/id/__pycache__/formats.cpython-312.pyc index f12356b6e49df33fcd32c62f1868ba2b043349df..5c4d7aba1c021468ff0dad6d9684b3d69d908219 100644 GIT binary patch delta 51 zcmeyu{)e6WG%qg~0}ym?y1J2@jae#9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|gi& FMF5{v5MBTP delta 43 xcmeyv{)L_UG%qg~0}#}`xw4U)jaev8KO;XkRX;tiLf<8|IJ+djV6ryzMF1;?4qE^K diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ig/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ig/__pycache__/__init__.cpython-312.pyc index 5aa9603de33f7a7a01b2e35a8993cb993befabeb..ff1af719ef2afe2cbe9f92069323185c7cee9814 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ig/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ig/__pycache__/formats.cpython-312.pyc index 6c79c6d10f0ded1289105ca723357e69f06aab3a..fb646596ac14b306ced2ed6c226d2b685d58c57b 100644 GIT binary patch delta 51 zcmbQjHiwP-G%qg~0}ym?y1J2Dk4Y*`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|gxd FNdSK658?m- delta 43 xcmbQkHieD*G%qg~0}#}`xw4U4k4Y#_KO;XkRX;tiLf<8|IJ+djU~(|iNdOP>4c`C& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/is/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/is/__pycache__/__init__.cpython-312.pyc index a9d08bd5205f168b2e620e0bd5e89268cd1134f3..9e5a6a5ae19e7cab6e1cf5b8359bff5caae75827 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/is/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/is/__pycache__/formats.cpython-312.pyc index 1060514f2eee469052018f511539902ec1673d6e..9f5e84129cd376290b2486268acf3a9628935387 100644 GIT binary patch delta 51 zcmX@ee3F^_G%qg~0}ym?y1J2@g;6R^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|f{Y F0sx6454QjS delta 43 xcmX@fe2|&@G%qg~0}#}`xw4U)g;6L@KO;XkRX;tiLf<8|IJ+djV6rCT0st804YU9N diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/it/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/it/__pycache__/__init__.cpython-312.pyc index ec62fc88acc75aa5148b4074681ed42da6865b7c..5bda2d7f9931fa70ebc275aaf9d684f7694e2109 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/it/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/it/__pycache__/formats.cpython-312.pyc index 9919c648f58de3f0d91727891d2a19acec99b1cf..a46549d0f6cbe3a5fcce2e4d7380642087d11c8a 100644 GIT binary patch delta 51 zcmcc1{*;~jG%qg~0}ym?y1J43Ka*6Nenx(7s(yN2g}zH_adt_5fxf$6gl@R2(_|Uu Fg8;TH5fK0Y delta 43 xcmaFLewUs5G%qg~0}#}`xw4V_Ka)_Lenx(7s(yN2g}zH_adt_5!DJQYg8)1Z4-NnT diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ja/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ja/__pycache__/__init__.cpython-312.pyc index 69a79e23c652b0ff32bbfb5ba224c6a0e593f6e0..b1194751ab55bcb15ecad6189e57855a71e8e14a 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ja/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ja/__pycache__/formats.cpython-312.pyc index 2e9c8a17482342a42f1021b97fdb587fa131e0f8..edf887bc6d390c0dd8c4eac47390cca5dcc4cee9 100644 GIT binary patch delta 51 zcmbQjGKYoxG%qg~0}ym?y1J1&kWng4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>uOp FG5~_h5B~rF delta 43 xcmbQkGKGcvG%qg~0}#}`xw4TvkWna3KO;XkRX;tiLf<8|IJ+djU~(DbG5`|g4g3HA diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ka/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ka/__pycache__/__init__.cpython-312.pyc index 236c0ae3c60cc6f094043fb48423347743335ede..d6b503038ffc7a1c6dcecb52cdfd87966a98d901 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ka/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ka/__pycache__/formats.cpython-312.pyc index 1dac4a9ffa9aeddb470803afb0cda25d8ee2fb6a..7749db5d9a30dc6e50eebb38c6fc6af5b5f77572 100644 GIT binary patch delta 51 zcmcc3{+ONnG%qg~0}ym?y1J43FOyW7enx(7s(yN2g}zH_adt_5fxf$6gl@R2(_|^; Fg8;Q05eWbQ delta 43 xcmaFNew&^9G%qg~0}#}`xw4V_FOyK5enx(7s(yN2g}zH_adt_5!DJ=og8(}&4+a1L diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/km/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/km/__pycache__/__init__.cpython-312.pyc index 7358c904457300e0bd14141c71b23f7a77de547c..d20580107e9db691a0c32d14cb7275a0889e321c 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/km/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/km/__pycache__/formats.cpython-312.pyc index c9fc2469c690bb4c63d10019c8ac632191ea588c..7e9f312bcfe9f96fcbcfb3f994b86118af704ea6 100644 GIT binary patch delta 51 zcmZo=>1E+Q&CAQh00iBeu5RS^V3bPJ&&bbB)lbi>(055K&MwI>(0BKX&<%HWnw-kG F004WX56J)k delta 43 xcmeBWX=UL)&CAQh00eb!u59G?U=)he&&bbB)lbi>(055K&MwI>n4HVF000d44aNWf diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/kn/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/kn/__pycache__/__init__.cpython-312.pyc index 940156bdce52fea31e16f37772a7fa7859d86574..3ca4aaee5d7694995066bdf8406b5600788adcab 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/kn/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/kn/__pycache__/formats.cpython-312.pyc index 8c42f1a90a066f8e67c1ec4ef7ccab8d8dd98d71..d6fccf0fe56eee4083c25aff07f37e091000d2a4 100644 GIT binary patch delta 49 zcmdnbbexI%G%qg~0}ym?x;l}2rc|1KMt*LpetKSozDsIxc1eDLzPn$9Zn&${#BH4b Df@u(- delta 41 vcmX@kw4aIlG%qg~0}#}`xiXP^rcj)IMt*LpetKSozDsIxc1eE0#C@Fr5Rwj^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ko/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ko/__pycache__/__init__.cpython-312.pyc index 5837745741cf7b86feafdc04f6cbbd4671c0a2a4..d23bbf20eadc134306e77885165582fefe5be39a 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ko/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ko/__pycache__/formats.cpython-312.pyc index 0425f4d8cbb019c4994e062e746800949fd6b04b..9482cf1b93f0d7cf6200d4f004e7861138ce2586 100644 GIT binary patch delta 51 zcmZ3)v5JHHG%qg~0}ym?y1J3uiCHR5KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>vUC FVE~8_5GDWs delta 43 xcmZ3*v515FG%qg~0}#}`xw4VliCHL4KO;XkRX;tiLf<8|IJ+djU~)S1VE`9$4kG{n diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ky/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ky/__pycache__/__init__.cpython-312.pyc index 7c8f0573d94f25737ef521d3fa61415c7e65d2a7..0cdf4f1039342e8bdaca1b077483ca23784e3152 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ky/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ky/__pycache__/formats.cpython-312.pyc index a8d740f3e1f9477615d8a50e187b31c52c61bbfd..78807d5465f558ae824ece075487a8fe306f3779 100644 GIT binary patch delta 51 zcmdnUwv&zfG%qg~0}ym?y1J3un@K87KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tbB FNdS&e5LN&H delta 43 xcmdnVwvmndG%qg~0}#}`xw4Vln@K26KO;XkRX;tiLf<8|IJ+djU~&P|NdO$84pRUC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lt/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lt/__pycache__/__init__.cpython-312.pyc index 6ade9aaead76013ade985a80968dc50ecc61f530..f82d1bc72a42874816b5fd330b5a0a6234fd8737 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lt/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lt/__pycache__/formats.cpython-312.pyc index 989df64557291630b4ecb2f1e9330fa83742c21b..386e14fe70f796f9e23114c9715ecc5c7a735a57 100644 GIT binary patch delta 51 zcmey*-p;{&nwOW00SLM`UERnn$t;zopOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%G}(;# FBmj-{5EB3Z delta 43 xcmZqY_|MLLnwOW00SM~eT-nGi$t)D7pOK%Ns-K=$q3@DfoL!P%FxigzBmf)O4iEqU diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lv/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lv/__pycache__/__init__.cpython-312.pyc index 4311bc2d4d622bf78fc11ea3f6a81bca269a223f..7833fdbae96565de55a20a5f9a6c6cd708dccf14 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lv/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/lv/__pycache__/formats.cpython-312.pyc index da8e95e0be883b582fde7095c1484110d252e1d2..6f4ef588b95cbbcb789659a06b4d2ce016389a31 100644 GIT binary patch delta 51 zcmZqY=;z=*&CAQh00iBeu5RR3WR^(055K&MwI>(0BKX&<%HWnrz2> F5&(GS53~RP delta 43 xcmeC@Xy@QQ&CAQh00eb!u59F1WEP6k&&bbB)lbi>(055K&MwI>nC!-U5&#PT4Y2?K diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mk/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mk/__pycache__/__init__.cpython-312.pyc index c415e6f1031ebbe50171ac63707268d2e1a8d884..c290c6e562fe1971cf917ddd497d3187b1cf2a99 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mk/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mk/__pycache__/formats.cpython-312.pyc index e6f207cde14ddfcfb4caf4e26294611a4df5253b..267ed1c74a4a0d07f8eb06e920aed48027903ba5 100644 GIT binary patch delta 51 zcmZ3$zJi_mG%qg~0}ym?y1J435R+7zenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8zY1 F2LYJE5gY&j delta 43 xcmZ3%zJQ(kG%qg~0}#}`xw4V_5R*`xenx(7s(yN2g}zH_adt_5!Q|&m2LU8p4;cUe diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ml/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ml/__pycache__/__init__.cpython-312.pyc index ef88630ba45cd40b0f4eea83fb9adebe992ac39b..34b60be6a55c883df486651fe7509a84e8644d0f 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ml/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ml/__pycache__/formats.cpython-312.pyc index 2317b90e0c396c36293ddcdb2e0a3e76cb3448c0..aec26ada3b34563bd71dc5264d8fde2756202c8b 100644 GIT binary patch delta 51 zcmX@Xc7cuiG%qg~0}ym?y1J1&i%BX?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>vQ$ FK>(Ye5V`;W delta 43 xcmcb>c7l!jG%qg~0}#}`xw4Tvi%BR>KO;XkRX;tiLf<8|IJ+djU~)gxK>#O;4z~aR diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mn/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mn/__pycache__/__init__.cpython-312.pyc index 91c0465f7ebe3a7cbd888a4f6137cca2b3561a3f..c7f8d47ceb8c42d98d6fcdbc8675aa9d99ce44a5 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mn/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/mn/__pycache__/formats.cpython-312.pyc index cf017be01e2970ef4e91ccbaee890d216bdde20c..d0a2cedc27cf2ff1b5517b9b5181d6de9bf909c9 100644 GIT binary patch delta 49 zcmbQow2X=SG%qg~0}ym?x;l}&PAW}5BR@A)KRvHP-zBv;yClCr-`y`lH{8`};_PMs Da)=Nj delta 41 vcmZ3+G>?h4_5#H diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nb/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nb/__pycache__/__init__.cpython-312.pyc index 4e5f6fab2ef2b2b034a2d24df0a50a581fb64823..ac42d105274c69bbc5e6137aeaa6ce0a30045cf3 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nb/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nb/__pycache__/formats.cpython-312.pyc index a54c5ceda05d98894c10015a98c602dbf06d1e68..563aef42b967f076d026cf537cb26cdee73cb62a 100644 GIT binary patch delta 51 zcmcb_c8iVsG%qg~0}ym?y1J3Ogh?t*KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Sv- Fg8-oL5aIv; delta 43 xcmcb`c8QJqG%qg~0}#}`xw4VFgh?n)KO;XkRX;tiLf<8|IJ+djVDe0+g8(b)4&ML( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nl/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nl/__pycache__/__init__.cpython-312.pyc index a8a5f952c8f528ae065fac70f65df6a6984b610e..984879b89b6c7626523c999a0d0c01e799003421 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nl/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nl/__pycache__/formats.cpython-312.pyc index d502af2b23adc7794f68c8a468481a9ef88dff20..2f92e4abf46a8d0ba254653f93eeefeed5c29617 100644 GIT binary patch delta 51 zcmcb}b(4$xG%qg~0}ym?y1J1&i$y9;KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>vQu FDFC4P5a9p- delta 43 xcmcb~b&-qvG%qg~0}#}`xw4Tvi$y3-KO;XkRX;tiLf<8|IJ+djU~)gpDF7@34&DF& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nn/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nn/__pycache__/__init__.cpython-312.pyc index 8008d59b7f91320a9311b3b5005a95676ce6025c..6d59086149d0bea670b1df99bdf9576774924b3d 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nn/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/nn/__pycache__/formats.cpython-312.pyc index 17fd1eff5756cdf0ccbcbe57579262c8b7b8b082..8be65f8a79f7fe4ce424164eb8fca5013f262954 100644 GIT binary patch delta 51 zcmcb_c8iVsG%qg~0}ym?y1J3Ogh?t*KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Sv- Fg8-oL5aIv; delta 43 xcmcb`c8QJqG%qg~0}#}`xw4VFgh?n)KO;XkRX;tiLf<8|IJ+djVDe0+g8(b)4&ML( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pl/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pl/__pycache__/__init__.cpython-312.pyc index 3a2fc1cfc24ca41bd2360622527b758be15edf51..9b570d45ae870d63096c7021bde3b5bef80fcfa2 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pl/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pl/__pycache__/formats.cpython-312.pyc index 5eb0c10334c702b569010b8c17cb0960951f66ef..27ac83d84348ceac1bd6170ecf9b5884ee092f65 100644 GIT binary patch delta 50 zcmcb|`izzPG%qg~0}ym?y1I~?Nh(c0BR@A)KRvHP-zBv;yClCr-`y`lH{8`}vMkd< E0F5^g00000 delta 42 wcmaFHdXJU+G%qg~0}#}`xw4R(NhnS~BR@A)KRvHP-zBv;yClD0vMSR-02_4;{Qv*} diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pt/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pt/__pycache__/__init__.cpython-312.pyc index 662fdfaa97c2941397aa8f58d2f0bd4a5fcc8491..e12c91764f0d4c8ed951790d6bb77a1e50cf8032 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pt/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pt/__pycache__/formats.cpython-312.pyc index 0b0934337f1b5d7c528789d10d8b9432531d0081..ff3a9643e291d9eefdca8a938fc9b002cdef1a56 100644 GIT binary patch delta 51 zcmey!_LGhKG%qg~0}ym?y1J2jGLuxAenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8q|I F2LZ8Y5nccQ delta 43 xcmey#_K}VIG%qg~0}#}`xw4UaGLul8enx(7s(yN2g}zH_adt_5!Q>rG2LU;H4_g2L diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pt_BR/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/pt_BR/__pycache__/__init__.cpython-312.pyc index 891ba816f4f977ba590822113af5debaf26a67e1..bc9bf90dcca6fd1dbfad9d70befa46accfe35ed3 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbvBx F832)S5N-ef delta 43 xcmdnbww;apG%qg~0}#}`xw4Vlk4Y#|KO;XkRX;tiLf<8|IJ+djU~)0j82}$M4r>4a diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ro/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ro/__pycache__/__init__.cpython-312.pyc index 5b857d644ad5604a4611badee2fbc65698a19ee3..e81b28c62d0eb1fa6991af63f2c7300591d619e9 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ro/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/ro/__pycache__/formats.cpython-312.pyc index ba6ecb4a03abe9c1e65af509feb99edba5e325a7..2fcca38f83f5a9018d3e772afdc43291946a124c 100644 GIT binary patch delta 51 zcmdnTc8rbtG%qg~0}ym?y1J1&f=Mb(KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>uvk FNdT2N5Q+c* delta 43 xcmX@cwvUbbG%qg~0}#}`xw4Tvf=MV&KO;XkRX;tiLf<8|IJ+djU~(uIX FNdSoe5H0`! delta 43 xcmZ3_ww#UoG%qg~0}#}`xw4Vlkx3{{KO;XkRX;tiLf<8|IJ+djU~(GMNdOo^4l4iv diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sk/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sk/__pycache__/__init__.cpython-312.pyc index b40474ca02b6ec17b39bfe2fce26406c2dcb237d..1112a5168aafb3439d1f95294572912d29f3a17b 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sk/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sk/__pycache__/formats.cpython-312.pyc index 4b63befc6a8f583657db5ce020d7dec3be4804cd..915aeaa80a1d44bb279ab5978ff094963d8fe60d 100644 GIT binary patch delta 51 zcmaFB`hu1FG%qg~0}ym?y1J2@iAgF=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g=i FK>(Hh5EuXe delta 43 xcmaFC`hb=DG%qg~0}#}`xw4U)iAg9#DT4ix|Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sl/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sl/__pycache__/__init__.cpython-312.pyc index cd0ead8fc7943305bfc9a289bdacdb82b9d8606a..e3d82c9926c3a9cda5641941975018885b962e19 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sl/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sl/__pycache__/formats.cpython-312.pyc index 39fb455d5aa5f2939d86ef93f610938ad3e4a29c..c8eb43fe8f7d37edefc908babeb6b27746020dc7 100644 GIT binary patch delta 51 zcmaFC{(+tQG%qg~0}ym?y1J2@i&-j7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g)= FK>(X15Iz6^ delta 43 xcmeys{(_zRG%qg~0}#}`xw4U)i&-d6KO;XkRX;tiLf<8|IJ+djV6r~*K>#QA4m$t< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sq/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sq/__pycache__/__init__.cpython-312.pyc index 99dee89c9cf88595b167ab3170f07fe9dec69af2..2e63011439fc66907361c78e63e39dfe6af265f4 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sq/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sq/__pycache__/formats.cpython-312.pyc index 0916e93dd61a51bf307ea43c2cc75ae7b3df32d7..28baaabdc8633aa8a8302474c83432924d59cb4a 100644 GIT binary patch delta 50 zcmZ3)yo#CoG%qg~0}ym?x;l~jl~kI3Mt*LpetKSozDsIxc1eDLzPn$9Zn&${WOl~c E0FU($9{>OV delta 42 wcmZ3*yoj0mG%qg~0}#}`xiXRal~A01Mt*LpetKSozDsIxc1eE0WPZlk02@;d8~^|S diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr/__pycache__/__init__.cpython-312.pyc index 23a4feb95f2b2515c7131f2f30fd718d17b71bbd..c2188b818e05ed382e3c0fdb624dade756575b40 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr/__pycache__/formats.cpython-312.pyc index 5de140a6eb881f3adde1892f1fefa2f77a46eb62..95c2fa80a101325960cf0e154c57c53e2ec2bc15 100644 GIT binary patch delta 51 zcmdnSzK@;zG%qg~0}ym?y1J4329s2penx(7s(yN2g}zH_adt_5fxf$6gl@R2)8wyA F2LYsV5p)0m delta 43 xcmdnTzKxyxG%qg~0}#}`xw4V_29r>nenx(7s(yN2g}zH_adt_5!Q{V82LUbo4{-nh diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr_Latn/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr_Latn/__pycache__/__init__.cpython-312.pyc index 01c600b87e0b9cdae73959b5045fb62f77243c5a..ec33306152a10fbe26855cf8263d832b924474a8 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}ym?x;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcfSwN delta 41 vcmX@hc$AU*G%qg~0}#}`xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2$&7c diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr_Latn/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sr_Latn/__pycache__/formats.cpython-312.pyc index 74f372677d7f20c22918f6138224ca2021ba919b..3bfc51a8ddb854c2b6205fa9610c28d8add66793 100644 GIT binary patch delta 51 zcmdnZewdy6G%qg~0}ym?y1J4329s2_enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8wyA F#{j1R5r_Z) delta 43 xcmX@izMGx-enx(7s(yN2g}zH_adt_5!Q{V8#{e)B4}|~# diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sv/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sv/__pycache__/__init__.cpython-312.pyc index ade674caf889fd85482e313b9b78b44fbad8179c..553bbf5bc9c0c1cb7c7b1a7829b310f8c7ca2712 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sv/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/sv/__pycache__/formats.cpython-312.pyc index f5ef89967eea4a61ac909f28e964ab7ea294b3c8..a47086b0bf0f9c3e6082ea95094290bfb647c86e 100644 GIT binary patch delta 51 zcmX@lcAbs;G%qg~0}ym?y1J3OkVz^{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>uRa FK>(jv5Y_+y delta 43 xcmcc4cAkylG5o8Xf diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/te/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/te/__pycache__/__init__.cpython-312.pyc index f3991498a8a7f4f421d6068b30708f02d13a1db4..2a4c24015fcb29e52ea46583a4f072472695e357 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/te/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/te/__pycache__/formats.cpython-312.pyc index 92135ac2fd4a63cf32712f4192e8a4867d10fa8f..234e95f712c627b7c0b4fe0d0162676f662d3b99 100644 GIT binary patch delta 49 zcmdnbbexI%G%qg~0}ym?x;l}2rc|1KMt*LpetKSozDsIxc1eDLzPn$9Zn&${#BH4b Df@u(- delta 41 vcmX@kw4aIlG%qg~0}#}`xiXP^rcj)IMt*LpetKSozDsIxc1eE0#C@Fr5Rwj^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tg/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tg/__pycache__/__init__.cpython-312.pyc index dca808c7b222efa73ad8866c1783294b0c24a71e..756de6c0979618047a526effd0502b374b4c803d 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tg/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tg/__pycache__/formats.cpython-312.pyc index c3aaffa5a70a98428e262e579ab8ff93af5e5cef..66ecbdd59d831efad179a30fff8e84567e62053c 100644 GIT binary patch delta 51 zcmdnUwv&zfG%qg~0}ym?y1J3un@K87KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tbB FNdS&e5LN&H delta 43 xcmdnVwvmndG%qg~0}#}`xw4Vln@K26KO;XkRX;tiLf<8|IJ+djU~&P|NdO$84pRUC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/th/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/th/__pycache__/__init__.cpython-312.pyc index 4bb72fd0a67dd4ee21f8e914e6516d05c549121a..08e39fce6ea15b91468b73c0462a1e0a7fe71289 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/th/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/th/__pycache__/formats.cpython-312.pyc index 8a0416ef5fc657c2d4022f65bd3661de320b2f2a..a9f1b8f7431dc17159f2459ed5ae62869ae68917 100644 GIT binary patch delta 51 zcmbQwww#UoG%qg~0}ym?y1J3ul1VB}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>u6T FNdSbv5DowU delta 43 xcmZ3^HlL0AG%qg~0}#}`xw4Vll1V5|KO;XkRX;tiLf<8|IJ+djU~(MONdOeW4hsMP diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tk/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tk/__pycache__/__init__.cpython-312.pyc index 2321fb867b0ea99155b7f8aa52c1e11553f6a64e..5b53f1cd3e49324b9557f2ae184d798caafec2fd 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tk/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tk/__pycache__/formats.cpython-312.pyc index 8ccb88d83ad2b8e26cdd827cf492aedfa772a87f..92e79a13cdfcce7a36403feaa8e15ee4ba45958c 100644 GIT binary patch delta 51 zcmdnUwv&zfG%qg~0}ym?y1J3un@K87KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tbB FNdS&e5LN&H delta 43 xcmdnVwvmndG%qg~0}#}`xw4Vln@K26KO;XkRX;tiLf<8|IJ+djU~&P|NdO$84pRUC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tr/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tr/__pycache__/__init__.cpython-312.pyc index 7a8ada011c8031190d068e4ae7e33c8540ae53b9..eb6f70a0ad77bcf9a0ff3687f14b0bb023f5cf5e 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tr/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/tr/__pycache__/formats.cpython-312.pyc index 11b354133ccc7d24f5a43906d70ef695f4c8b860..0fb46d5975639d74bd8c255f5b0f6ab16dd43731 100644 GIT binary patch delta 51 zcmcb~`jD0TG%qg~0}ym?y1J43H=|UVenx(7s(yN2g}zH_adt_5fxf$6gl@R2(_{&z Fg8;K85c>cC delta 43 xcmaFJdXts=G%qg~0}#}`xw4V_H=|ITenx(7s(yN2g}zH_adt_5!DI!dg8(^@4)_27 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uk/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uk/__pycache__/__init__.cpython-312.pyc index b0af4df81faa2ff6c7b5f54166887b9832082967..4dd04f6fb0c72c8be337542dd1f5b748ba282357 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uk/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uk/__pycache__/formats.cpython-312.pyc index 464aa39201e005aabbe980a72eaa7a467c939ac5..6e141f7e283f2aaf8c8e2b8751f340aac77cf545 100644 GIT binary patch delta 51 zcmaFD_J)o7G%qg~0}ym?y1J3Oj7cg@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4T*I FivXxl5gGsh delta 43 xcmaFE_Joc5G%qg~0}#}`xw4VFj7ca?KO;XkRX;tiLf<8|IJ+djVDfCHivThj4;KIc diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uz/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uz/__pycache__/__init__.cpython-312.pyc index c9c3cd45b2b95ba49006653a3d2deaa3ecaccd3c..71d55ef613b03a51e1b4642af979a81f18ec2aa2 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uz/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/uz/__pycache__/formats.cpython-312.pyc index a0b6f0b81d9aaa0c7afd491654b97be6cb04aae0..7bc918dce0d15f7b065928c23fd8d7030ed86aa8 100644 GIT binary patch delta 51 zcmdnXc9f0#G%qg~0}ym?y1J1&oJlH8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tkE FNdT0v5QYE% delta 43 xcmX@gwwI0jG%qg~0}#}`xw4TvoJlB7KO;XkRX;tiLf<8|IJ+djU~&!9NdO_@4ub#y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/vi/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/vi/__pycache__/__init__.cpython-312.pyc index 6622948ca800ae0dad0144e5028c34cf9b9b2886..11cb4b0e20a70a02e15d71250de3833209275697 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}`xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2AU1I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/vi/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/vi/__pycache__/formats.cpython-312.pyc index ecca482626abeea921f6d329bcac74240d7c06f1..3fb684188ed3086589078fc33040d199c4d3047c 100644 GIT binary patch delta 51 zcmZ3>vXzDVG%qg~0}ym?y1J1&i%}{~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>vQ` FG60Yh5MuxU delta 43 xcmdnWvX+JWG%qg~0}#}`xw4Tvi%}>}KO;XkRX;tiLf<8|IJ+djU~)g>G5{Ub4qyNP diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hans/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hans/__pycache__/__init__.cpython-312.pyc index d10c611916c92b6a87a8c074fa6895f7f8e8df99..a3ec6049886bf7e0dfdecb416533f4f4f07c1dae 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}ym?x;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcfSwN delta 41 vcmX@hc$AU*G%qg~0}#}`xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2$&7c diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hans/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hans/__pycache__/formats.cpython-312.pyc index 970a783b7ba2272243e9655632535fbe7c435f30..e674af817d4b4a8cc62ed81a1b634be8dcf8a50d 100644 GIT binary patch delta 51 zcmX@hewCg3G%qg~0}ym?y1J435tCH5enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8zk5 F=K!yH5y$`l delta 43 xcmcc0ewLm4G%qg~0}#}`xw4V_5tC4|enx(7s(yN2g}zH_adt_5!DM#ka{x3Q4#ofg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hant/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hant/__pycache__/__init__.cpython-312.pyc index 2908d8a57a255143d2a03d3859c3333625b6640b..119d3ce51c59646a5a430498cd33a557f3bb5fe0 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}ym?x;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcfSwN delta 41 vcmX@hc$AU*G%qg~0}#}`xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2$&7c diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hant/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/locale/zh_Hant/__pycache__/formats.cpython-312.pyc index dfadec56d86c29ef5929bbdd89d2b8ed859aa588..86ba6a808fac6ff5e770a23db278ac20809c6355 100644 GIT binary patch delta 51 zcmX@hewCg3G%qg~0}ym?y1J435tCH5enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8zk5 F=K!yH5y$`l delta 43 xcmcc0ewLm4G%qg~0}#}`xw4V_5tC4|enx(7s(yN2g}zH_adt_5!DM#ka{x3Q4#ofg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/urls/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/urls/__pycache__/__init__.cpython-312.pyc index 8f5e0be33e7717c84f1899930f9938f03d25eadb..eb171147606a79b051ec7af84fd6e26f591b6147 100644 GIT binary patch delta 51 zcmX@aa*BofG%qg~0}ym?y1J3OnNcc9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4QTb FMF5*m5VrsT delta 43 xcmX@ba)^cdG%qg~0}#}`xw4VFnNcW8KO;XkRX;tiLf<8|IJ+djVDbvaMF1xm4zvIO diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/conf/urls/__pycache__/i18n.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/conf/urls/__pycache__/i18n.cpython-312.pyc index ff09c4064544a7956f05d4b1cee3497a1e636274..198b8907a1ac1e4b2b5113a4d5d517ecdb2bef2e 100644 GIT binary patch delta 52 zcmX@Ydxn?$G%qg~0}ym?y1J2j8k1CnwOW00SLM`UERo?%Pf_kpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7HA9 Gi4g#n0T3<# delta 44 ycmbQj)x*VonwOW00SM~eT-nH-%PbV3pOK%Ns-K=$q3@DfoL!P%uz3=56C(g4cn&K7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/__pycache__/__init__.cpython-312.pyc index 89555f9c3cadf19b940d1b63eb2d415598c8d0cc..d2a3539849d6db9274f2109a656f946b3c0b3bb7 100644 GIT binary patch delta 49 zcmdnVc#x6%G%qg~0}ym?x;l~DSSmq3BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8MU Dan}!^ delta 41 vcmX@exRa6lG%qg~0}#}`xiXR4SSUh2BR@A)KRvHP-zBv;yClD0VnikY1JDhf diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/__init__.cpython-312.pyc index cda766610557bd0b7f0ab9ef2dd604c31c2655b2..a6dce3c74c3db8304f9f0a4aa2a8a1afa8ed2fb3 100644 GIT binary patch delta 52 zcmey(+04a#nwOW00SLM`UERq2lSwK~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|ovf GQ$_&0FA)m> delta 44 ycmZqX`pwCGnwOW00SM~eT-nI|lSwE}KO;XkRX;tiLf<8|IJ+djV6z- delta 44 ycmcb_cZ!euG%qg~0}#}`xw4V_7n4wwenx(7s(yN2g}zH_adt_5!De}8V-^5KoDO~f diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/checks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/checks.cpython-312.pyc index 615a1493b9ab94765333c5777db5e6ae5364d8c4..1cb068d475e188ba1bcc36ec41cf557592bb2a13 100644 GIT binary patch delta 54 zcmdnAiFwy1X71Cxyj%=G(7oyEMs77`sTBQ;{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J&dl$x0s!O65{Cc) delta 46 zcmdnBiFwl|X71Cxyj%=GQ1|A_Ms77`p&0#){M=Oi^t=jvm(=3ylKg_r-puc>0sv-F B5QG2# diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/decorators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/decorators.cpython-312.pyc index 032ae58c4c09d160320fad2ac443c6404011775b..10b2aeebeb7a4bf8fa4ae409ed60508d5e335db3 100644 GIT binary patch delta 52 zcmca3_e75SG%qg~0}ym?y1J43II~oSenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;44 G72E*J`w_AL delta 44 ycmaDNcSnxtf?R&CAQh00iBeu5RQuW0cC!&&bbB)lbi>(055K&MwI>(0BKX&<%HW+8oTd Go)G|vRS(qw delta 44 ycmeBTYhvR*&CAQh00eb!u59EsV-!lz&&bbB)lbi>(055K&MwI>*c{Eco)G{UG!4=K diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/filters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/filters.cpython-312.pyc index 9ef052b6653db8690a8723dcc63832b0abbc22cd..b7e6de9534f8e4e42f3877f67f8ec6b17359c076 100644 GIT binary patch delta 54 zcmZp_%GiIEk^3|+FBbz4bZ@%4k-LUfDpfxtKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_CG IOxAZP0PHFfvH$=8 delta 46 zcmeCb%GiFDk^3|+FBbz4)V;Z~k-LUfC{{lsKQ~oBJ+DIFCAB!aB)?$uLe_UF0Bng6 AuK)l5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/forms.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/forms.cpython-312.pyc index 9cccadbdb9437e45c29bd94dd1225babf6ff3858..82d43aa937077f43979ecbc4042712900e1789b6 100644 GIT binary patch delta 52 zcmZ3&yM~whG%qg~0}ym?y1J3OmRTxUKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a>* GE@l9tj1Un3 delta 44 ycmZ3(yM&kfG%qg~0}#}`xw4VFmRTrTKO;XkRX;tiLf<8|IJ+djVDlnoE@l8NyABQj diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/helpers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/helpers.cpython-312.pyc index 8023c72a7a7703fc4e4cc1181e9490150e129107..ea7bc310509f36e7933c5bee061511a7d98b7866 100644 GIT binary patch delta 54 zcmaEPit*zqM()$Ryj%=G(7oyEM($TEQmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b I*;$hk02>t&s{jB1 delta 46 zcmex(it*(sM()$Ryj%=GQ1|A_M($TELb3W8`MIh3>3J3UE~&-YCHV!L`B{?^0FsRm Ar~m)} diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/models.cpython-312.pyc index 97d41b0463c0e3d7b2397f3304f1f262f0da77cf..61e0094e2f04d367275c2b76d3b3960f1f1ae198 100644 GIT binary patch delta 52 zcmdnsxWkeAG%qg~0}ym?y1J43JhN1aenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;qK GM`QrWd=d!& delta 44 ycmdntxWSS8G%qg~0}#}`xw4V_JhM=Yenx(7s(yN2g}zH_adt_5!R9Z_M`Qp_6A%Uf diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/options.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/options.cpython-312.pyc index c19d8515d774c1107bc02068c1939ccbaa593a29..9c3291384844870b1e8ac6e63b84756e45a81e91 100644 GIT binary patch delta 58 zcmbQbmu>D|Hty5Byj%=G(7oyEM(!D0QmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 NTe-Gx1^Hty5Byj%=GQ1|A_M(!D0Lb3W8`MIh3>3J3UE~&-YCHV!-d%3pn=3J3UE~&-YCHV#V?tT%v;jT`b I`B=Q-01_w?Z2$lO delta 46 zcmaEGgz?4^M()$Ryj%=GQ1|A_M(&TyLecse`MIh3>3J3UE~&-YCHV!L#aO)J0E+Ms AY5)KL diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/tests.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/tests.cpython-312.pyc index 4c339d150018584a2665250b61813ee6a5a3c59d..e4806fe27e161ca4962ddb657d0b8ea91519f24c 100644 GIT binary patch delta 52 zcmew#+aAY#nwOW00SLM`UERp-!X%ZfpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kM! Go(=%T_7O1v delta 44 ycmZpV`yb1FnwOW00SM~eT-nI&!Xy-}pOK%Ns-K=$q3@DfoL!P%usM@yo(=#@KMyVd diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/utils.cpython-312.pyc index 8aecafd23a31a9cd353a76a8714677eea88e114d..43dda3557da90c6d6f2a9809f48df8c919f9fe4a 100644 GIT binary patch delta 54 zcmZ2|l5z7%M()$Ryj%=G(7oyEM(!#Wsbu|({M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I(^*6k0Q0mF`~Uy| delta 46 zcmdmdl5zD(M()$Ryj%=GQ1|A_M(!#Wp=kY#{M=Oi^t=jvm(=3ylKg_r^I1d^0CKwz A`2YX_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/widgets.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/__pycache__/widgets.cpython-312.pyc index 657c099afe7107bca0e185c10dcd423f9eda0946..995020b72c29eea02ebab0ca96195c7aa6abf419 100644 GIT binary patch delta 54 zcmX^4fbrr3M()$Ryj%=G(7oyEMs5RksZ{-p{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IzU+T8007t$$^ZZW delta 46 zcmcckfbrx5M()$Ryj%=GQ1|A_Ms5Rkp;-Nl{M=Oi^t=jvm(=3ylKg_rq3nM$0DhM9nwOW00SLM`UERpNlTE5rKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bI< GO-ul$jS(CG delta 44 ycmbOr+#$?;nwOW00SM~eT-nIIlT9dBKO;XkRX;tiLf<8|IJ+djVDmk;O-ukVln)sI diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/migrations/__pycache__/0002_logentry_remove_auto_add.cpython-312.pyc index 886a9f4308a38f4766309a161e0e09e6240f06d2..2befee4d86acea14eca63b30fc928ebb87b2bd19 100644 GIT binary patch delta 52 zcmeBXpUlpEnwOW00SLM`UERp7%p}#OpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq2l Gn-Ktwdk=pA delta 44 ycmbQt-p$T^nwOW00SM~eT-nI2%p_E&pOK%Ns-K=$q3@DfoL!P%u-Svjn-KsUS`B;v diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/migrations/__pycache__/0003_logentry_add_action_flag_choices.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/migrations/__pycache__/0003_logentry_add_action_flag_choices.cpython-312.pyc index e4d461d46b0d2bebc15ba1c2460b4f8172da67ed..04db6e54fb1b722ae858ce2c0baabe207ec89abf 100644 GIT binary patch delta 52 zcmZo??`P*e&CAQh00iBeu5RQuVUp_8&&bbB)lbi>(055K&MwI>(0BKX&<%HW+8oGa G#s~n9HxG;e delta 44 ycmeBYZ)fK|&CAQh00eb!u59EsVG?T7&&bbB)lbi>(055K&MwI>*c{1Z#s~l%jtz+b diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/migrations/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/migrations/__pycache__/__init__.cpython-312.pyc index 3de55cd1bbf310f22998e3606f37970689b37233..00480018b863638f334a8df97b207067b7bf4213 100644 GIT binary patch delta 49 zcmX@bc!`nwG%qg~0}ym?x;l~DSgKGzBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7uD DdNmK^ delta 41 vcmcb_c#4txG%qg~0}#}`xiXR4SSV9JBR@A)KRvHP-zBv;yClD0Vnh`H3YHDw diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/__init__.cpython-312.pyc index bd433ece6910ac384275b3740557597be3648fc7..6b822ae085edc61cf8ea13b1875ff8d179102077 100644 GIT binary patch delta 49 zcmX@Zc!iPsG%qg~0}ym?x;l~DSgKe*BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7W5 Ddod5} delta 41 vcmcb@c!rVtG%qg~0}#}`xiXR4SSVXRBR@A)KRvHP-zBv;yClD0Vnhu93t|oF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/admin_list.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/admin_list.cpython-312.pyc index ec399c7739873dd644eb05a4cd0be6633d25d887..c37efa08389be08f4a0369b83c956d31f4f7fe20 100644 GIT binary patch delta 54 zcmbQWka5vMM()$Ryj%=G(7oyEM(*uwQl3J3UE~&-YCHV#V?tT%v;jT`b Judp5S1OVxD614yT delta 46 zcmZ3qka5;RM()$Ryj%=GQ1|A_M(*uwLb>`G`MIh3>3J3UE~&-YCHV!L@30;71ORD+ B5V8OO diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/admin_modify.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/admin_modify.cpython-312.pyc index ce4a22d11a5ab1dad00ac1c6d3406c9f2b4c7995..5a6d4380e06310e55f7d9aa84921da25ea92baec 100644 GIT binary patch delta 52 zcmZ3fwNZ=vG%qg~0}ym?y1J2DicP9qKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p-o GCq4kB-w>Pt delta 44 ycmdm}wNi`wG%qg~0}#}`xw4U4icKhAKO;XkRX;tiLf<8|IJ+djV6#2jCq4i%P7av> diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/admin_urls.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/admin_urls.cpython-312.pyc index d205454fe1dd6aa1f18345c404b7275b4380e7f9..a28a5c9eeb228ade78e74a2ce2b6ce3ffe430030 100644 GIT binary patch delta 52 zcmca7`b?DjG%qg~0}ym?y1J2DjY+ChKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pra GYz_dk4-kz2 delta 44 ycmaDRdQX)5G%qg~0}#}`xw4U4jY%k1KO;XkRX;tiLf<8|IJ+djV6!*VYz_cCP7aCy diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/base.cpython-312.pyc index 44a1f4457701d4e63fc2bfc4c0a35a3767df2569..e0c4f6aa76e3ecf3d6ecb4672d53a30c77fd248f 100644 GIT binary patch delta 52 zcmca8a8rQ$G%qg~0}ym?y1J2DfmteFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pY} G2rB@oVh_&% delta 44 ycmca9a8ZE!G%qg~0}#}`xw4U4fmtYBKO;XkRX;tiLf<8|IJ+djV6!W;2rB?I84b(; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/templatetags/__pycache__/log.cpython-312.pyc index d4e4089e04857dd6e5dbf4bdd50ab95323aebc27..ab7ce85924725495f6eaf2c66f884900e8627668 100644 GIT binary patch delta 52 zcmcaAbyte}G%qg~0}ym?y1J2j2BTD-enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?&= G3%CKnX%T1u delta 44 ycmcaBbybS{G%qg~0}#}`xw4Ua2BT1#enx(7s(yN2g}zH_adt_5!REb;3%CJCm=9$D diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/views/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/views/__pycache__/__init__.cpython-312.pyc index 4faafa61ea7bda657a9e2ef2f7dee493c3219a21..4c2e8218d8c68433fd5094778240d289fbc4e7ce 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}ym?x;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcfSwN delta 41 vcmX@hc$AU*G%qg~0}#}`xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2$&7c diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/views/__pycache__/autocomplete.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admin/views/__pycache__/autocomplete.cpython-312.pyc index 10365ed69729fac72c20221aa17bd60680fba56d..7a22a13d6d910a7f2aabf3cf17375f90c8067b04 100644 GIT binary patch delta 52 zcmeyU_fwDiG%qg~0}ym?y1J43G>cS$enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-c} Gok9TIb`mB4 delta 44 ycmeyV_fe1gG%qg~0}#}`xw4V_G>cG%enx(7s(yN2g}zH_adt_5!R8Mvok9Rz3J3UE~&-YCHV#V?tT%v;jT`b J&#>@>0{{nF5|97@ delta 46 zcmaE`o$3J3UE~&-YCHV!Ludwih0|0{3 B5RCu; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/__init__.cpython-312.pyc index 9d5e978bb2f088b77672816ca575017f265bf092..bc22e347174bf5feee7814b16d47bac6ae8a64d4 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbu&% FUjUpI5WoNc delta 43 xcmaFFa*KugG%qg~0}#}`xw4Vlfl(+%T{ GHxmG-3J^2^ delta 44 ycmX@ezmuQ)G%qg~0}#}`xw4TvkX0x}KO;XkRX;tiLf<8|IJ+djU~?I(HxmFc(GD>H diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/urls.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/urls.cpython-312.pyc index 5b14fbf8c2e527bd26d478cbdc2d3021f61c85d4..a002f81bb74e74682324c3f49b83d8d517603300 100644 GIT binary patch delta 52 zcmaFD_lA%AG%qg~0}ym?y1J2j60202enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_T8 GTNwethY@W6 delta 44 ycmaFE_k@r8G%qg~0}#}`xw4Ua601<0enx(7s(yN2g}zH_adt_5!RGC(TNwdI)(>g` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/utils.cpython-312.pyc index 73e903f9c13a6ec4c5e23f7d6e9bda0f97dde1f3..6b35dc2f765f585a5f87d9bf47af0de2a6a7b86a 100644 GIT binary patch delta 52 zcmX@%cEOGNG%qg~0}ym?y1J2@l|?FDKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|ocG GnmhouOb{6W delta 44 ycmccMcEXMOG%qg~0}#}`xw4U)l|?9CKO;XkRX;tiLf<8|IJ+djV6zsBnmhnMLk<=I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/admindocs/__pycache__/views.cpython-312.pyc index 8eb5f104d6aa9d763b9ba2f0660746d26ccfc16f..93d43678d19ba50b7219d936e3b908513603a005 100644 GIT binary patch delta 54 zcmcaNm+{$LM()$Ryj%=G(7oyEM($)bsdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I4Qz290QA8U761SM delta 46 zcmaDhm+{_QM()$Ryj%=GQ1|A_M($)bp?Lj_{M=Oi^t=jvm(=3ylKg_r9c*zP0CV6F A6951J diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/__init__.cpython-312.pyc index 9e1ac0829ac045ef08fd4dd80b0e4c76f4b84a83..6b7b0a231b8e8b53ba69e53e073f1a864a86caf1 100644 GIT binary patch delta 52 zcmezD^V^5}G%qg~0}ym?y1J3OgGnk?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cL1 GbIJhT1`;O# delta 44 ycmezE^Vx^{G%qg~0}#}`xw4VFgGne>KO;XkRX;tiLf<8|IJ+djVDnn0bIJf;^$;Wg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/admin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/admin.cpython-312.pyc index a379527d254f322e2edc8e77e19c51fdf7dff0e8..a20ad3b5410b2896a1d2f66f8a50553ae8294fa7 100644 GIT binary patch delta 52 zcmX@*cgc_YG%qg~0}ym?y1J3Oid8B}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dc} G&58ibI}xJ* delta 44 ycmccQcgm0ZG%qg~0}#}`xw4VFid85|KO;XkRX;tiLf<8|IJ+djVDo&|&58g~3J;(F diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/apps.cpython-312.pyc index d0899f208e3830c517fbf26fa6d4098c9f32f4f3..1bd28e87ae337ca08b2c49cfe8b563374f10bb56 100644 GIT binary patch delta 52 zcmaFQ_nnXXG%qg~0}ym?y1J2j4U1Hwenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>;b G%a{Pj=@Fs; delta 44 ycmey)_nwdYG%qg~0}#}`xw4Ua4U15uenx(7s(yN2g}zH_adt_5!RCuB%a{O7=ntO& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/backends.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/backends.cpython-312.pyc index 573f7f1a1e8381cd16169e6a98112fbbf906c5a1..c9d30ad82c68f6395489782d5c916f731bdce11c 100644 GIT binary patch delta 52 zcmdm;d^nl=G%qg~0}ym?y1J2@l}Rd9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|od3 GOnm^n;t;j~ delta 44 ycmX?{ygQluG%qg~0}#}`xw4U)l}RX8KO;XkRX;tiLf<8|IJ+djV6zs}Onm@E`3|!H diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/base_user.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/base_user.cpython-312.pyc index 3dc37a080f69c3ae8e147c83726f6e4255a16ea7..1686cccc2964635f19797267f6ffca9cbd4948a3 100644 GIT binary patch delta 52 zcmez8(B{Z}nwOW00SLM`UERoimsu)JKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4b1U G78wB1FA@R( delta 44 ycmZp3{O7=ZnwOW00SM~eT-nHdmsu!IKO;XkRX;tiLf<8|IJ+djU^5d-iwpoya}NLj diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/checks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/checks.cpython-312.pyc index 5386682eaaedb90191bbcb01203b633a463afc71..c618938e522605bfce1b57702fbc435754a2e36b 100644 GIT binary patch delta 52 zcmca-|ID8IG%qg~0}ym?y1J3ughMJ>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Y) GuQ&k2C=mDn delta 44 ycmaE6f6t!#G%qg~0}#}`xw4VlghMD=KO;XkRX;tiLf<8|IJ+djU~?o#uQ&iow+{6H diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/context_processors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/context_processors.cpython-312.pyc index 1819e13c25999dac1d121ad2bf1fe3cc08575a55..9cc511113444a6e7adb90e81a79a2d08d3b88f09 100644 GIT binary patch delta 52 zcmdlkwO@++G%qg~0}ym?y1J2Dj8Q6IKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pjS G3l9LH5f6?4 delta 44 ycmdllwOxw)G%qg~0}#}`xw4U4j8Q0EKO;XkRX;tiLf<8|IJ+djV6!zN3l9J-C=H7M diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/decorators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/decorators.cpython-312.pyc index 3e41b3be46411968368d32acf4b5ca4cfeab992c..fc06d894fac987c1764b7f46011b4c3c5e4ccb2d 100644 GIT binary patch delta 52 zcmX>jbw!H%G%qg~0}ym?y1J43D~nXRenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F%7 GD-Hn0Xb`6W delta 44 ycmca2bw-N&G%qg~0}#}`xw4V_D~nLPenx(7s(yN2g}zH_adt_5!DcB|D-HlkUk;=I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/forms.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/forms.cpython-312.pyc index 0059cc7a6313ebb410bbdef5d7b7fae567ec426a..05701b17c7dbff56e098bc5d51806c055ba9a01b 100644 GIT binary patch delta 54 zcmeC&&Ny*9Bll@uUM>b8=-za7BXb8sC#o|BXoypEv+SXAVjL diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/models.cpython-312.pyc index 2cc9ccefb361c8217bc434fb25e1c9e948caa1cf..fa0791bb5e29f0e5ba3aa4e72948a9c3d4ae37ac 100644 GIT binary patch delta 54 zcmcbJBJ`tb* delta 44 ycmbQ0G%1PuG%qg~0}#}`xw4V_5tC4cenx(7s(yN2g}zH_adt_5!De=5VLbp$xDK8G diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/signals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/signals.cpython-312.pyc index dedac34d962af4ba19464f0826607a4120e2b1df..1e1744e57ef02f8a804774a2d1cac9d92744ce7f 100644 GIT binary patch delta 49 zcmaFF^ooi5G%qg~0}ym?x;l}2zf_8TMt*LpetKSozDsIxc1eDLzPn$9Zn&${#5-*O Dlrj-5 delta 41 vcmaFG^oWW3G%qg~0}#}`xiXP^zfg>RMt*LpetKSozDsIxc1eE0#3yY49}5pE diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/tokens.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/tokens.cpython-312.pyc index d8338dd31cca277615c5633d5ea87e0bb3492710..ab9812698390a07799ac30054c8c86ac8ff489fc 100644 GIT binary patch delta 52 zcmaE-`%RboG%qg~0}ym?y1J2j4U<%|enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>;* Gsv-c>r4ela delta 44 ycmeyS`%ahpG%qg~0}#}`xw4Ua4U&T$ GHYNa=vk*i8 delta 44 ycmZ3=HJ6L~G%qg~0}#}`xw4Vli%BS6KO;XkRX;tiLf<8|IJ+djU~@jxHYNZj0uDg{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/__pycache__/views.cpython-312.pyc index e0ca4f11553a5a181c2f38919eab622fcb3beda8..02a856a3f81c2a193b89b1e0caefa1b9e700df3e 100644 GIT binary patch delta 54 zcmex6nXz>WBll@uUM>b8=-za7Bli(jsU-c3{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I4_Reg0P#Z-HUIzs delta 46 zcmZpj!uWSGBll@uUM>b8sC#o|Bli(jp(y=~{M=Oi^t=jvm(=3ylKg_rFIi<=0B*Gq AGXMYp diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/handlers/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/handlers/__pycache__/__init__.cpython-312.pyc index 830c6571828d8bd82dbc3692806903953561ad88..722f54aaf1043555133efc9d45317bc10b676982 100644 GIT binary patch delta 49 zcmX@kc%G5_G%qg~0}ym?x;l~DSSn9HBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8_n Dc)JhS delta 41 vcmX@lc$|^@G%qg~0}#}`xiXR4SSU?DBR@A)KRvHP-zBv;yClD0VnjIr31kh` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/handlers/__pycache__/modwsgi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/handlers/__pycache__/modwsgi.cpython-312.pyc index 1c340392976ad495ac2cf956ac6b050a6fb99d50..01a19789f2e1790d1c6e036500548c01dc2700c0 100644 GIT binary patch delta 52 zcmZ1@v_**fG%qg~0}ym?y1J3OgIOw9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cL% Gc2)qZgb>OA delta 44 ycmdlYv_^>gG%qg~0}#}`xw4VFgIOq5KO;XkRX;tiLf<8|IJ+djVDnn$c2)p2I}XPH diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/management/__pycache__/__init__.cpython-312.pyc index fb5acfa84aa799a87d4974c1cd7446563462c616..5a884fa1a08e814ef4a7a08d9eb8feff541d1835 100644 GIT binary patch delta 52 zcmbQOzgVC9G%qg~0}ym?y1J2DgGs7DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pR+ Gm?!|Dxex*X delta 44 ycmZ3iKU<&sG%qg~0}#}|xw4U4gGneuKO;XkRX;tiLf<8|IJ+djV6!h%m?!`(zYYKZ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/management/commands/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/management/commands/__pycache__/__init__.cpython-312.pyc index ba24ec4d7cfd69c76c247b68e144f42ebc4362da..d772f93c52297d0782db4c683aa28eeafcd28754 100644 GIT binary patch delta 49 zcmcb_c#DzyG%qg~0}ym?x;l~DSgKM#BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7oB DekBkD delta 41 vcmcb`c!`nwG%qg~0}#}|xiXR4Sg24xBR@A)KRvHP-zBv;yClD0Vnh=F4dM<0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/management/commands/__pycache__/changepassword.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/management/commands/__pycache__/changepassword.cpython-312.pyc index 7aab8091417f318aea089169015c436b910a2073..cbe771d5219b46b18bd427552c3a6e556c69f73f 100644 GIT binary patch delta 52 zcmdlivs;GyG%qg~0}ym?y1J2Dhe@hlKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pHO GD{cU%WDuvB> FKLDqz5gPyi delta 43 xcmey!@{)!7G%qg~0}#}|xw4Vlk5Q;jKO;XkRX;tiLf<8|IJ+djU~)0zKL9bS4;cUe diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0007_alter_validators_add_error_messages.cpython-312.pyc index e23e24ff1c0d729052ca0978ceb6c10509b73e30..4159f58df51d21bc39bef2f9a9b1a9ca8e82c951 100644 GIT binary patch delta 52 zcmeyv(Zb1nnwOW00SLM`UERq2j7e&Oenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`IJo GN=5*@oe-k{ delta 44 ycmZqS{KLV0nwOW00SM~fT-nI|j7g|NKO;XkRX;tiLf<8|IJ+djU^6#!B_jYq4Gy6I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0008_alter_user_username_max_length.cpython-312.pyc index 00ff2a20205af928a5df0ef72c03ea4373124086..3d1ca47775a0d36cd25cb47f29fd3c8fa64735e8 100644 GIT binary patch delta 52 zcmZqT?Be7;&CAQh00iBeu5RT1$RyRRpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w3&~& Ggb@IyF%Uce delta 44 ycmeC;Y~tiT&CAQh00i}Ku59G~$RyOPpOK%Ns-K=$q3@DfoL!P%uvv_`gb@HQ2M#&_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0009_alter_user_last_name_max_length.cpython-312.pyc index 2765724656af3372b5186582beb07630e3e0112b..225104985c348e169facfbd02d9e75a28d73e5d0 100644 GIT binary patch delta 52 zcmX@dc8!huG%qg~0}ym?y1J4352I9%enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HE~ GQ$_&9Y!IXX delta 44 ycmcb{c8-nvG%qg~0}#}|xw4V_52H|venx(7s(yN2g}zH_adt_5!DdA!Q$_$tS`MNB diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0010_alter_group_name_max_length.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0010_alter_group_name_max_length.cpython-312.pyc index 6b6b89b87793b73c79acf3253e50356f4cc8901d..2f899a429ab5642e852196b0f1b513effa68e04f 100644 GIT binary patch delta 52 zcmdnVc94zxG%qg~0}ym?y1J439ivo-enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Ifa GJw^bza1c`f delta 44 ycmX@ewv&zfG%qg~0}#}|xw4V_9ivc#enx(7s(yN2g}zH_adt_5!DeA5Jw^aOJ`Pa; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0011_update_proxy_permissions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0011_update_proxy_permissions.cpython-312.pyc index fa4c2dbb765233a04daf42db7eac736bfe1dde4a..b084304155f8db8f45f7e7422629ee4256a71dab 100644 GIT binary patch delta 52 zcmZpc@0RC2&CAQh00iBeu5RSk(055K&MwI>(0BKX&<%HW+U(6~ G!3F@92@kXY delta 44 ycmeB{Z(055K&MwI>*c{Ah!3F>$e+{w# diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0012_alter_user_first_name_max_length.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/0012_alter_user_first_name_max_length.cpython-312.pyc index 37c4e89ee6cdc8a37d753a2c5d1bb3ddf6382c9c..ffe562546e3586fd579741d842de72826e9830d8 100644 GIT binary patch delta 52 zcmX@jcA1U)G%qg~0}ym?y1J432cuN4enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Hd7 GGe!Wy!w{GN delta 44 ycmcc2cAAa*G%qg~0}#}|xw4V_2cuA{enx(7s(yN2g}zH_adt_5!Dd+|Ge!VL`3{x< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/auth/migrations/__pycache__/__init__.cpython-312.pyc index 23882e77e08a3cb0703143d591a878a52e322879..cebd0487f7d33ebd8dc7d012f993a0425a144fcf 100644 GIT binary patch delta 49 zcmX@fc#)C&G%qg~0}ym?x;l~DSgJrjBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8JT DdAASX delta 41 vcmcb}c#@I(G%qg~0}#}|xiXR4SSUk3BR@A)KRvHP-zBv;yClD0VnihX3QP^& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/__init__.cpython-312.pyc index 6e604eaeadf599770fb9d903913c294784fdc9fb..c154e650634a49b2e49d23e401e36bdddad8e852 100644 GIT binary patch delta 49 zcmX@cc#e_#G%qg~0}ym?x;l~DSSnXPBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7)H Dcs&o) delta 41 vcmX@dc#M(zG%qg~0}#}|xiXR4SSVFLBR@A)KRvHP-zBv;yClD0Vni7L2^tO3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/admin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/admin.cpython-312.pyc index 11e6287d9a96df06b142bf01053bc6ba7b2db545..6e29aebe5001fcf2755266ee7f5b8b9eca383772 100644 GIT binary patch delta 52 zcmeCzo36)wnwOW00SLM`UERoC&LowkpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0R0s GwFm&G))1rs delta 44 ycmbQP*RRKYnwOW00SM~fT-nH7&LotipOK%Ns-K=$q3@DfoL!P%uz3zswFm$*WDcSL diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/apps.cpython-312.pyc index 2b3b9f6d914d1954fabe97963355c57fd97150ce..a071dbdb2cfe2e865fcbed0cfbc732dfa4c9e949 100644 GIT binary patch delta 52 zcmdnbbDW3!G%qg~0}ym?y1J2jDYI0jenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<3W GwM+oCc@Yf& delta 44 ycmX@kv!93iG%qg~0}#}|xw4UaDYH{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Jt62G`0s!^o5>fyF delta 46 zcmX@Om1*ZzChpU`yj%=GQ2*x2M($o#p=AAx{M=Oi^t=jvm(=3ylKg_rn^^g$0swS+ B5KsUB diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/forms.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/forms.cpython-312.pyc index 913d17cd6b7c5ef75a68d1ae7f0913f8db88c599..920b0adc95f64a2a761b49b8fc396dc2d708a4da 100644 GIT binary patch delta 52 zcmX@0c|w!>G%qg~0}ym?y1J2@g-t3;KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p2R Gd_DlFC=fgV delta 44 ycmX@1c|eoKO;XkRX;tiLf<8|IJ+djV6!Pxswx07Bn}t= diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/__pycache__/views.cpython-312.pyc index 62226f38d1c112dbb6115b3cc4a286fb4357d067..cb4834aff9cf3e285e8064e817f1f21d9dfdacc9 100644 GIT binary patch delta 52 zcmeB^o+izGnwOW00SLM`UERoS$0?PipOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kp7 Gm<0fr>JPvG delta 44 ycmbOx-6zd`nwOW00SM~fT-nHN$0?MgpOK%Ns-K=$q3@DfoL!P%usNC2m<0eONDaOK diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/management/__pycache__/__init__.cpython-312.pyc index 14a07a339143b4da5445a65961fcfcde9ecb6898..90408fb27d29db9536f29535f9b091b4b5cabf31 100644 GIT binary patch delta 52 zcmext@Y{g$Y9 GXHfvqAra32 delta 44 ycmexu@Y#U-G%qg~0}#}|xw4TvnMtTXKO;XkRX;tiLf<8|IJ+djU~>o4XHfuDe-F(7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/management/commands/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/management/commands/__pycache__/__init__.cpython-312.pyc index 05a905d9910b8d04e69740e8c78f29e081fe9e64..101dd3313621e7c9f8fb3ab3cbf253df68ec89f9 100644 GIT binary patch delta 49 zcmcb`_=u7FG%qg~0}ym?x;l~DSgKJ!BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7!F Df)x-X delta 41 vcmaFFc#DzyG%qg~0}#}|xiXR4Sg2AzBR@A)KRvHP-zBv;yClD0Vni1J5fTm} diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/contenttypes/management/commands/__pycache__/remove_stale_contenttypes.cpython-312.pyc index 66fb662dd6069f05487c81b24acf5cef4664426c..9afad8119ddef1e8833dc85063b15e4755a59069 100644 GIT binary patch delta 52 zcmdm`en_4BG%qg~0}ym?y1J3Omsx6(enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEb&2t G9!3D5>JWhd delta 44 ycmdnav7UqbG%qg~0}#}|xw4Tvj7cb7KO;XkRX;tiLf<8|IJ+djU~@Io9!3Bx_zr&n diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/apps.cpython-312.pyc index 27e7a87e6c3f6ab0e82c77c3452ae696eebc87c1..9db769d6a4a1bc7d1d8161b4e297c9250fbfb055 100644 GIT binary patch delta 52 zcmZo*?O^3T&CAQh00iBeu5RQ`Vw6hL&&bbB)lbi>(055K&MwI>(0BKX&<%HW+FZ}b G$Or(96AyO) delta 44 ycmeBRZD8d-&CAQh00i}Ku59E^Vibzg&&bbB)lbi>(055K&MwI>*xb&@$Or%%@eOqV diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/forms.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/forms.cpython-312.pyc index 471364dc6757444b12290b54ff09b4c6378135cb..75b196988497778cb6b09da3c6c162b162b8ddf4 100644 GIT binary patch delta 52 zcmca1_dt&OG%qg~0}ym?y1J3uhgm9JKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%s? Gdu{-@@DVBi delta 44 ycmaDLcSDZ*G%qg~0}#}|xw4Vlhgm3IKO;XkRX;tiLf<8|IJ+djU~?h!du{+hRu3ou diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/middleware.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/middleware.cpython-312.pyc index 7da8b35de0b12d1d8ba78c9422db04435595baea..363c185ac3d95f8f4946ebcff8f32f1b823c98ea 100644 GIT binary patch delta 52 zcmcc5@tlMEG%qg~0}ym?y1J2Do=GZ4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oNJ GG7|u+N)O-w delta 44 ycmaFPai4?xG%qg~0}#}|xw4U4o=GT0KO;XkRX;tiLf<8|IJ+djV6zL8G7|tb=ndWg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/models.cpython-312.pyc index 067b8fc0969df87e79ba447b5e8c85c3b0ec0984..5d895d61b5ce2d33acd772f468e15244c079be7b 100644 GIT binary patch delta 52 zcmca8ep8(LG%qg~0}ym?y1J1&kX0%}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%TH GG8+K1auAFF delta 44 ycmca9eo>tJG%qg~0}#}|xw4TvkX0x_KO;XkRX;tiLf<8|IJ+djU~?I3G8+Iqcn*pH diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/sitemaps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/sitemaps.cpython-312.pyc index 7b2ca83b07c078ebbb181181d1f720e6b2158f9e..a8319a0402f7fab4f8b10f9a91cff820c4ed7140 100644 GIT binary patch delta 52 zcmdnPd4!YuG%qg~0}ym?y1J432$NKnenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>av Gw;2JqYZ03O delta 44 ycmX@YxrdYcG%qg~0}#}|xw4V_2$N8fenx(7s(yN2g}zH_adt_5!RD7tw;2IH5f7OF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/urls.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/urls.cpython-312.pyc index 98c492525db6540d59a37f117f18a2f55fc73331..5cd2c129e5460196872b55a0cb52643e42847997 100644 GIT binary patch delta 51 zcmdnZe3+U0G%qg~0}ym?y1J2@pHV7JKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fJu FKLChE53m3L delta 43 xcmX@iyqlT(G%qg~0}#}|xw4U)pHV1IKO;XkRX;tiLf<8|IJ+djV6q8gKL8jm4XywH diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/__pycache__/views.cpython-312.pyc index e30bbad0ecc9c660dda4adeabb3d75d93e3027bc..7e6201ac97538e7c353f3b83a40a82e1b36fad83 100644 GIT binary patch delta 52 zcmew<+9<|-nwOW00SLM`UERpNl0_SS`I1ttV delta 44 ycmZn^`zgwOnwOW00SM~fT-nIIl0_(9KO;XkRX;tiLf<8|IJ+djVDmW^V>SRiC=S#B diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/migrations/__pycache__/0001_initial.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/flatpages/migrations/__pycache__/0001_initial.cpython-312.pyc index ab4ae4d10f7827986e4fc5ad97147cefb0c47b8c..f316ae1d9621037a6f55fcc5b4ed47c3a284018a 100644 GIT binary patch delta 52 zcmbOwutc!QDqG%qg~0}ym?x;l~DSgKq%FV GeqI2tK@j5r delta 44 ycmdn1uvLNkG%qg~0}#}|xw4Tvl1ZpQKO;XkRX;tiLf<8|IJ+djU~?VQeqI1L&ko@L diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/__init__.cpython-312.pyc index 7d5508c2349b8779b819b1840d2719390cadeb16..97fcc0283d18a6487cd99bfc740b972f6c75c708 100644 GIT binary patch delta 49 zcmdnXc$AU*G%qg~0}ym?x;l~DSSm$7BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8kc DbI%X3 delta 41 vcmX@gxR;UpG%qg~0}#}|xiXR4SSUt6BR@A)KRvHP-zBv;yClD0Vni+g1%wT* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/apps.cpython-312.pyc index 0829495c03fef51c26a9806eba5991e9a0536684..522b1016377c6ab7f6c647e805a58a1aa8c35386 100644 GIT binary patch delta 52 zcmdnSzK@;zG%qg~0}ym?y1J43KBH8Eenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;>n GyBGnsr4f_> delta 44 ycmdnTzKxyxG%qg~0}#}|xw4V_KBG{Cenx(7s(yN2g}zH_adt_5!DbewU5o%aP7ad* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/feeds.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/feeds.cpython-312.pyc index e3af21585fc0e369834f858054a62a0caea69947..5b23fcd20f3d34560e019c0fa670612eecb59b38 100644 GIT binary patch delta 52 zcmbPkJ>Q!9G%qg~0}ym?y1J3uky$EHKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%O2 Gr4#_Br4Szg delta 44 ycmbPlJ>8o7G%qg~0}#}|xw4Vlky$8GKO;XkRX;tiLf<8|IJ+djU~?L?r4#@$(+(W~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/geometry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/geometry.cpython-312.pyc index 63f656be8e7544971ae6fa8be617126f454da341..ded65d853e1ab4fc04871b635a9dbba908991cf2 100644 GIT binary patch delta 51 zcmX@adWx0%G%qg~0}ym?y1J43E2C73enx(7s(yN2g}zH_adt_5fxf$6gl@R2(_|s0 F4FIVH5Uv0K delta 43 xcmX@bdWe<#G%qg~0}#}|xw4V_E2B`1enx(7s(yN2g}zH_adt_5!DK0>4FEAc4y*tG diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/measure.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/measure.cpython-312.pyc index dbd5dccfec1476ff2297d5c7f86e25b9b1757695..ddcab097a67cd264066d7e3282b55da2c1a4e026 100644 GIT binary patch delta 52 zcmbPHxS){xG%qg~0}ym?y1J2jJ(E&Q# GGZp}~jS&_A delta 44 ycmaFLcbAX*G%qg~0}#}|xw4Tvib*J3KO;XkRX;tiLf<8|IJ+djU~@gwGZp|odk+)< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/shortcuts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/shortcuts.cpython-312.pyc index c06285be3838cfaa4f40d41dec400c9c1ee83094..2d39653bc5344d436e00200e6303a4a6b6af9692 100644 GIT binary patch delta 52 zcmaFD_lA%AG%qg~0}ym?y1J43B$HICenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=PP Gbu0kLyAhxO delta 44 ycmaFE_k@r8G%qg~0}#}|xw4V_B$H6Aenx(7s(yN2g}zH_adt_5!RB{Nbu0i)kq@2# diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/__pycache__/views.cpython-312.pyc index f0bdf527709d0fc914a992b4303c08a827178d1a..ef644a1e7a72f15969c5fb85a30223682b3abbd0 100644 GIT binary patch delta 52 zcmaFN`I?jaG%qg~0}ym?y1J2DhFL06KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pBs GDntN$P&CAQh00iBeu5RS^WRl9#&&bbB)lbi>(055K&MwI>(0BKX&<%HWnw-Wo F3jlj955)ig delta 43 xcmeBRYhdF(&CAQh00i}Ku59G?WD-i!&&bbB)lbi>(055K&MwI>n4HHn3jhqA4Z{Ec diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/admin/__pycache__/options.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/admin/__pycache__/options.cpython-312.pyc index e5b39e844861ca1a0532baf95e6e63e8294089fd..0d12e38c9f98a41c8cccaaefec100489e602b995 100644 GIT binary patch delta 52 zcmca=f7hP-G%qg~0}ym?y1J3Omsu)PKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a*( GZ5aT~4-q#2 delta 44 ycmca>f7PD*G%qg~0}#}|xw4VFmsu!LKO;XkRX;tiLf<8|IJ+djVDlzsZ5aSjeGfGN diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/admin/__pycache__/widgets.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/admin/__pycache__/widgets.cpython-312.pyc index 4506335b876c6695fcc6432cba2f48f5a68740b3..b1ac2b2b3516c01cdb703d6e2589631c592f965f 100644 GIT binary patch delta 52 zcmeyX-m1ZUnwOW00SLM`UERnn%Pf_tpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAqUJ GumAw7R1ky! delta 44 ycmZqG_^Zx+nwOW00SM~fT-nGi%Pf?rpOK%Ns-K=$q3@DfoL!P%u-S?EumAuxJPv{Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/__pycache__/__init__.cpython-312.pyc index e8758bd94c521201d05ba0b84a1f3840be0cc89c..30154f134d5a9bdf50c08b7accbc20f50291ac01 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym?x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbx9Ar delta 41 vcmX@Xcz}`nG%qg~0}#}|xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|2DS~l diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/__pycache__/__init__.cpython-312.pyc index 5d97e9ac4048cf80808fe87fabe43fa0a5dc4665..778476a8e88bf87f6d1d96d9d7859fdabd1258d3 100644 GIT binary patch delta 49 zcmX@fc#)C&G%qg~0}ym?x;l~DSgJrjBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8JT DdAASX delta 41 vcmcb}c#@I(G%qg~0}#}|xiXR4SSUk3BR@A)KRvHP-zBv;yClD0VnihX3QP^& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/__pycache__/utils.cpython-312.pyc index 97c9b8a3bf7eb0b8d4540f931684b323a381fd67..da1fe0a5bb00609153c9ba7139ec24872ef34196 100644 GIT binary patch delta 52 zcmaFO{h6ElG%qg~0}ym?y1J2j6{A$Henx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^xh GDl7oS-w_r7 delta 44 ycmey&{hFKmG%qg~0}#}|xw4Ua6{Aq9enx(7s(yN2g}zH_adt_5!RGUfDl7m?H4hX3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/base/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/base/__pycache__/__init__.cpython-312.pyc index e690eeb8ac10c66911324f946f27355b13b596b0..ea19d962fa2e4d741128da10cc788d836bbb9690 100644 GIT binary patch delta 49 zcmX@dc#Vp Gbu0j{yb$dG delta 44 ycmX@fbC8GoG%qg~0}#}|xw4VFj8P~@KO;XkRX;tiLf<8|IJ+djVDoIobu0im3J&W4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/base/__pycache__/features.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/base/__pycache__/features.cpython-312.pyc index 3cc397b12bed747439f5ee02c62cd13447c92466..907adc587498e0fd356fd46b8fe8a9ca58707fc3 100644 GIT binary patch delta 52 zcmeyU_EU}fG%qg~0}ym?y1J3ui%F_fKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Rg GmmmPegbIvkq_o diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/mysql/__pycache__/introspection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/mysql/__pycache__/introspection.cpython-312.pyc index 8089a43b6bb637eab1672ecca4ea03399cc98894..500f24d0ca360ba661da27a07e13d5732a684e82 100644 GIT binary patch delta 52 zcmZ3@znP!=G%qg~0}ym?y1J2j2D4PPenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?(r G-G%qg~0}#}|xw4Ua2D4DHenx(7s(yN2g}zH_adt_5!REcp-c!QDqG%qg~0}ym?x;l~DSgKq$#e G5izT5iJh>K delta 44 ycmew@@L7QSG%qg~0}#}|xw4UaF{4n4enx(7s(yN2g}zH_adt_5!R8Z;o7n(SFb}{0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/oracle/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/oracle/__pycache__/models.cpython-312.pyc index deaf78029c65e30de89a978a536d82fd79b93447..5c8ae8d8081eb025b30db970ea4282501d89e3b5 100644 GIT binary patch delta 52 zcmZpb?v>^~&CAQh00iBeu5RQuW05M=&&bbB)lbi>(055K&MwI>(0BKX&<%HW+8oSc G#0dbC$Pc3c delta 44 ycmeB`Zk6Uf&CAQh00i}Ku59EsV-d>L&&bbB)lbi>(055K&MwI>*c{Db#0dZ)#toqW diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/oracle/__pycache__/operations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/oracle/__pycache__/operations.cpython-312.pyc index 0c9fce64ceb14a3f49b63400b665fb4dad3132d0..85ea5b739e84cdf3d203a8d5def6437ae5646388 100644 GIT binary patch delta 52 zcmZ1zxFwMLG%qg~0}ym?y1J2jDYI0ienx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<3W GuT%ia#}W_# delta 44 ycmdlIxF(SMG%qg~0}#}|xw4UaDYH4qz^~{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/base.cpython-312.pyc index a8462d23660c23bd1ab699fa52b4fd999116fdd7..3c7b189e1fde7d53f5a67b1786c381af648ae8ff 100644 GIT binary patch delta 52 zcmaEB|J9!RG%qg~0}ym?y1J2j9g|dvenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^Am GO0odlr4gzC delta 44 ycmexr|JI)SG%qg~0}#}|xw4Ua9g|Rwenx(7s(yN2g}zH_adt_5!RE_MO0oc6I}fM; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/const.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/const.cpython-312.pyc index bae08d01b03f0de27ff4cd4b334186bdef36c169..b41feb6be68f36baf6a4029e833e141a18313ee5 100644 GIT binary patch delta 51 zcmbQmwup`UG%qg~0}ym?y1J2DnMtZtKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|e;; FEdYUs5BLB8 delta 43 xcmZ3)Hj9n>G%qg~0}#}|xw4U4nMo*DKO;XkRX;tiLf<8|IJ+djV6q3(EdUZP4fX&4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/features.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/features.cpython-312.pyc index 83afaff3f1cf4842c6e6755c39440f1f148ac8e0..e8a0bf122e5f4f1afc3973f55f6bb55a4df5c68a 100644 GIT binary patch delta 52 zcmeBXo6N?2nwOW00SLM`UERpt!6;RspOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0S9G G8Y2Ljbr4bj delta 44 ycmbQt*3HI!nwOW00SM~fT-nIo!6;OqpOK%Ns-K=$q3@DfoL!P%uz4+G8Y2KE(+*Go diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/introspection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/postgis/__pycache__/introspection.cpython-312.pyc index 1f1b49653ecda89c0bb1f86c2a20d11ca4494a1f..161bdf26df6a1a80437db37f2245cc7b6a2e3964 100644 GIT binary patch delta 52 zcmca0eM6f2G%qg~0}ym?y1J3Olv%1)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4apz GJ1zjb@es-Y delta 44 ycmca1eL$+b GQAPl>pAiiJ delta 44 ycmcb~c9D(yG%qg~0}#}|xw4TvpHZktKO;XkRX;tiLf<8|IJ+djVDl8lql^GNRSydQ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/base.cpython-312.pyc index 004d87807012a9f199e2df3adb650aa5e4c3db87..4323203d64fe18b540b99df661fcd87c8083047b 100644 GIT binary patch delta 52 zcmdlheN>wJG%qg~0}ym?y1J3unpvt`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Z~ GDi;8&R}fJE delta 44 ycmX>qy;qw1G%qg~0}#}|xw4Vlnpr4cKO;XkRX;tiLf<8|IJ+djU~>XhG%qg~0}#}|xw4Ua7o$+Ienx(7s(yN2g}zH_adt_5!RGsnax4H*rw>p7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/introspection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/introspection.cpython-312.pyc index ef4a8253f65b6393a5093b9629d051db9e0690dc..1f62b443bb95544027bcbe4ba23a0a3880939e04 100644 GIT binary patch delta 52 zcmbOwxk!@xG%qg~0}ym?y1J1&f=Q}DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%!) GDi;8uUJwWX delta 44 ycmZ1^IZKlJG%qg~0}#}|xw4Tvf=Q@CKO;XkRX;tiLf<8|IJ+djU~?^#Di;7O)D8v! diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/models.cpython-312.pyc index b4331b88d8b75e46b163175217a0bec330357723..711498c6277e17f5c71a162b57b6ef4c49243a8c 100644 GIT binary patch delta 52 zcmX>heL&Yt Giy8pZc@bOy delta 44 ycmaDI{5Y8VG%qg~0}#}|xw4VliCL&rKO;XkRX;tiLf<8|IJ+djU~@Wiiy8n{e-By! diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/schema.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/spatialite/__pycache__/schema.cpython-312.pyc index f168d11846465762d53620c4e2e60d07755421a2..8d62686599a8fcf337e14dd992613c0edf3ae1ba 100644 GIT binary patch delta 52 zcmZ2vx5|$DG%qg~0}ym?y1J2DltrpiKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oZ_ G2PpumB@na# delta 44 ycmZ2wx5$qBG%qg~0}#}|xw4U4ltrjeKO;XkRX;tiLf<8|IJ+djV6zp=2PptG3l6dX diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/__init__.cpython-312.pyc index 81316d9dbef640315cdf46ca7cefe0a6463ab2c7..065b34fdc4c4ff838147bf585f3d8d446b2a6fb6 100644 GIT binary patch delta 51 zcmdnWwwI0jG%qg~0}ym?y1J1&l}Rd3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>t?O FW&o685QG2# delta 43 xcmdnXwv~y% GpZNjRqY`fb delta 44 ycmaE(`b3rcG%qg~0}#}|xw4V_3X@QVenx(7s(yN2g}zH_adt_5!RDV#pZNh;SrBai diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/fields.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/fields.cpython-312.pyc index 227e3bc10a479544114942240ccc20eda5b4d8b4..59a68f6b80744ad77d3c8254e78bb8e91f261aa1 100644 GIT binary patch delta 54 zcmaFZ#rU#|k^3|+FBbz4bZ@%4k-LvgDn~yfKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_CG IYPM~50QLG3p8x;= delta 46 zcmaFa#rUv`k^3|+FBbz4)W5m1k-LvgC`CUbKQ~oBJ+DIFCAB!aB)?$uX0~m10Cczz Aod5s; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/functions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/functions.cpython-312.pyc index c4a1833c5a69bb8a282e835d6816bc5e46628a90..984f3bec8f470b261a0dde66069e6f0f6b9964ff 100644 GIT binary patch delta 54 zcmZ2-k8#aCM()$Ryj%=G(7oyEM()|1Qu+EB`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JcW~yU0ssLT63qYr delta 46 zcmZ2;k8#O8M()$Ryj%=GQ2*x2M()|1Lh1S$`MIh3>3J3UE~&-YCHV!L4{+wB0swu% B5X%4n diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/lookups.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/lookups.cpython-312.pyc index 760e38c6feba116273759fa552580d2c11101272..7fbcf30de139ad7ba0f4fcd71b26f02d65cec0c3 100644 GIT binary patch delta 54 zcmdnf&3L4nk^3|+FBbz4bZ@%4kz0;KDpx-vKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IHAkZ@0M?KZMgRZ+ delta 46 zcmX@o&A6wVk^3|+FBbz4)W5m1kz0;KC{;frKQ~oBJ+DIFCAB!aB)?#@Ge@H>09y7B AL;wH) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/proxy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/__pycache__/proxy.cpython-312.pyc index 6eab2bb71e57ddb35c2e435f0c3208cb2241a82f..5a22357c2fc1a82b81229086bfb010bfd671844a 100644 GIT binary patch delta 52 zcmX>nbxn%krQW delta 44 ycmca6bxw-=G%qg~0}#}|xw4U4gjpzAKO;XkRX;tiLf<8|IJ+djV6!E&EEfPY(GAT2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/sql/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/db/models/sql/__pycache__/__init__.cpython-312.pyc index 0e985c2867cbd6cacb1c956327d66cd2fb738e21..7011f539b544915597345dcb89a288efc686b26c 100644 GIT binary patch delta 49 zcmcc1^puJFG%qg~0}ym?x;l}2vs96OMt*LpetKSozDsIxc1eDLzPn$9Zn&${#0$Lu Dl4B7d delta 41 vcmaFLbeD diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/forms/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/forms/__pycache__/__init__.cpython-312.pyc index 18f09252c554140ce69d22603f5b2f117e655b38..b3a1629b91363a74ca2bfc37b5e3173a5f039d58 100644 GIT binary patch delta 51 zcmX@Xa)E{WG%qg~0}ym?y1J2jE~8YIenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8t)@ FeE^~>5bFQ{ delta 43 xcmcb>a)O2XG%qg~0}#}|xw4UaE~8MAenx(7s(yN2g}zH_adt_5!Q?}XeE=+@4(R{@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/forms/__pycache__/fields.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/forms/__pycache__/fields.cpython-312.pyc index c4c088b9e595185c960457f9883f708ae18fd26e..9b1ae6a215a006f7accbd26083afb154d744b21c 100644 GIT binary patch delta 52 zcmaE;_fn7hG%qg~0}ym?y1J3ul~pQ3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$_m Ge?b7kNfBuP delta 44 ycmaE<_fU`fG%qg~0}#}|xw4Vll~pJ~KO;XkRX;tiLf<8|IJ+djU~?Ahe?b6AKM!XB diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/forms/__pycache__/widgets.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/forms/__pycache__/widgets.cpython-312.pyc index 27792b36bfabbde4af47305cf5e332a2b7beceaa..424942b43cd68e9019f0db78e1aef7ecb8beed2c 100644 GIT binary patch delta 52 zcmext@Y{gl@GK4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/driver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/driver.cpython-312.pyc index bc5be7f30f26c69825c6d6edc1179a45561f1fe4..83691fea8c9cecd655bb4a33adab37d8e63fe3b6 100644 GIT binary patch delta 52 zcmZpc?Uv;}&CAQh00iBeu5RS^Ws^$R&&bbB)lbi>(055K&MwI>(0BKX&<%HW+MLBE G$pHYBkq@l^ delta 44 ycmeB{ZI(055K&MwI>*j&UW$pHW(Hw~)* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/envelope.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/envelope.cpython-312.pyc index 8316e8db9129d70d0d1881b36d0ae4f992f7cc57..4aeb43055f39593bfdfada2957cd32b4c942bda9 100644 GIT binary patch delta 52 zcmaFp@zR6)G%qg~0}ym?y1J1&j9DsEKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&32 GI|TsFyAiqo delta 44 ycmaFq@z8_&G%qg~0}#}|xw4Tvj9DmAKO;XkRX;tiLf<8|IJ+djU~@I|I|Tq!kq@{4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/error.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/error.cpython-312.pyc index 7ff636c271f798e59a7f674fabafe79652744422..628c7eed0ee2b2b7ab3e920228751f4c763f77f8 100644 GIT binary patch delta 52 zcmdnRcZiSsG%qg~0}ym?y1J43BBNBAenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8==K GKCA$^#}O(3 delta 44 ycmX@aw~LSaG%qg~0}#}|xw4V_BBM~8enx(7s(yN2g}zH_adt_5!RBv_KCA#g{SPPr diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/feature.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/feature.cpython-312.pyc index 1eb898d03e108263aa433bd96baed3a7b674e604..c4fdc2379d6daffeb6c356aac1893eafc941c3de 100644 GIT binary patch delta 52 zcmca-_{@;|G%qg~0}ym?y1J1&oLMSEKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$p4 GmM8$jfe`or delta 44 ycmaE6c+ZggG%qg~0}#}|xw4TvoLMMAKO;XkRX;tiLf<8|IJ+djU~>&~mM8#8_YU>| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/field.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/field.cpython-312.pyc index d37642a2567dd20ed7d0f224c91c8eb2a0d3969b..e694144c6b624ce78cd14adaf88d50cd667e786b 100644 GIT binary patch delta 52 zcmZn&?+E8U&CAQh00iBeu5RRB!YY-fpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}b8=-za7Be#=?RJMLber~FMdR~RTOKNd;Nq&L8yI+KExU19V Ic#(Nk0OrpUCjbBd delta 46 zcmZpj$MknD6ZdIeUM>b8sDE>1Be#=?P_lkTer~FMdR~RTOKNd;Nq)iRbdh;g0A~OY AB>(^b diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/geomtype.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/geomtype.cpython-312.pyc index 9597de2b77e0ae7c6b0164ba614ad66293f05030..fd957466f22c9c406c7768c287bdc33185f36988 100644 GIT binary patch delta 51 zcmeBFnyAEmnwOW00SLM`UERq2m{lrMKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX%ibK FHvpVq58?m- delta 44 ycmbQJ)TzXMnwOW00SM~fT-nI|m{llIKO;XkRX;tiLf<8|IJ+djU^53BCpQ2zYYpK5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/layer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/layer.cpython-312.pyc index 36311ceab5e5b589949e7455d8bb5e692932fe0f..682230e73068c7beed73dd2f744c070483baafcf 100644 GIT binary patch delta 52 zcmZoj>`3H3&CAQh00iBeu5RRJWs^$N&&bbB)lbi>(055K&MwI>(0BKX&<%HW+N{JD Grv(6{%n$_t delta 44 ycmeB3Y)Irj&CAQh00i}Ku59FHWfO|i&&bbB)lbi>(055K&MwI>*sR4Crv(5ostyAH diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/libgdal.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/libgdal.cpython-312.pyc index d05e244aa0c7aa12873d54035094eb2fb10b1573..d8373b9329df2aa514c1b69cba6addb937f799a3 100644 GIT binary patch delta 52 zcmdlZcSMf+G%qg~0}ym?y1J43EUQ$8enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<#K GL7V`<84+3l delta 44 ycmX>iw?~fqG%qg~0}#}|xw4V_EUQq0enx(7s(yN2g}zH_adt_5!RAk_L7V_a9}idn diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/srs.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/__pycache__/srs.cpython-312.pyc index 49835bddc38c7ad8c3af321e016c32415bc87118..08047ae635ae32b3fd1fcd2438586e368740f9af 100644 GIT binary patch delta 54 zcmdltmGRhAM()$Ryj%=G(7oyEMs90XsTBQ;{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I5v*yh0Nw==b^rhX delta 46 zcmX>$m2uxxM()$Ryj%=GQ2*x2Ms90Xp&0#){M=Oi^t=jvm(=3ylKg_r39M- GE>-}%)(}|$ delta 44 ycmZ3iH(QVUG%qg~0}#}|xw4V_i=a@Nenx(7s(yN2g}zH_adt_5!DdMzE>-|SBo0>q diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/errcheck.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/errcheck.cpython-312.pyc index bd72f0f1d84a186b9ad6fa7e8c0ee2fa20ab74c7..3388f4baf81ad9ec069b7689b686fcaafd388a5c 100644 GIT binary patch delta 52 zcmbQNHd~GRG%qg~0}ym?y1J2@iAkzNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p`j G7Xbj56c8~0 delta 44 ycmbQOHd&4PG%qg~0}#}|xw4U)iAg9&KO;XkRX;tiLf<8|IJ+djV6!^Y7XbhzIu0)Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/generation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/generation.cpython-312.pyc index f32cbb77611fc1391db074376ff426ed79e3d3e8..66f41a17060ed968a66da895969e36c1fbffcee3 100644 GIT binary patch delta 52 zcmbQLJ6D(cG%qg~0}ym?y1J3Omr1HjKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a+k G*TMj=Z4p%f delta 44 ycmbQMJ5`taG%qg~0}#}|xw4VFmq{p3KO;XkRX;tiLf<8|IJ+djVDl!X*TMien-5a} diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/geom.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/geom.cpython-312.pyc index e3202f1f71e37fc16c58efebb6f0637563511f48..0eec089aeb5ed1ee829a6ac06d7edc4130e4b09d 100644 GIT binary patch delta 52 zcmca*^2mhyG%qg~0}ym?y1J3Ol}oBXKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4akk G9sB^ya}lrr delta 44 ycmaE4a?6DKG%qg~0}#}|xw4VFl}ji?KO;XkRX;tiLf<8|IJ+djVDl=j9sB@M5f82a diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/raster.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/prototypes/__pycache__/raster.cpython-312.pyc index f6057318e98f1bf74fa91a9c54cf48c2dd3879cb..3c7ee28d2d4f6e4d7457db04213c272004bb1678 100644 GIT binary patch delta 52 zcmX@6drp`8G%qg~0}ym?y1J2js(@6Henx(7s(yN2g}zH_adt_5fxf$6gl@R2)8&OH GPfh@~J`olG delta 44 ycmcbibU}&xG%qg~0}#}|xw4Vlid`sOKO;XkRX;tiLf<8|IJ+djU~@eCPfh?o6b}>t diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/__init__.cpython-312.pyc index b192bbfc59de6a127c4000f3790f6b28ba1463a0..5ef7010804c73ea688a535a54ad5180a928395b5 100644 GIT binary patch delta 49 zcmX@fc#)C&G%qg~0}ym?x;l~DSgJrjBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8JT DdAASX delta 41 vcmcb}c#@I(G%qg~0}#}|xiXR4SSUk3BR@A)KRvHP-zBv;yClD0VnihX3QP^& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/band.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/band.cpython-312.pyc index 16bae58fba2236aa385a37f1085c714dfd83e9d5..f891ef7a48bc14eb8cf7e6851d18e97405f7b7ac 100644 GIT binary patch delta 52 zcmeww@i&6|G%qg~0}ym?y1J2jDYI0Lenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<3W Gn>7IFoDy&V delta 44 ycmewx@il_`G%qg~0}#}|xw4UaDYH7Gvq7ZHX diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/base.cpython-312.pyc index e4042180df6e45df26e10bc86889a6cea5e1b198..5633fa50f44d0b4dd592a2d4f3adf1a986d06468 100644 GIT binary patch delta 52 zcmca9`cRbnG%qg~0}ym?y1J2@pH(VHKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oRN GT2=t99S~sv delta 44 ycmaDTdQ+79G%qg~0}#}|xw4U)pH(PDKO;XkRX;tiLf<8|IJ+djV6zG9T2=rzvkqSX diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/const.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/const.cpython-312.pyc index b7622a51b8f9e8781a2ef02336aec23006010bfc..5ad3e8e68e294500ad89c705ef67503c17bac150 100644 GIT binary patch delta 52 zcmcb{caM+zG%qg~0}ym?y1J3uf>kP4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%wm GBNG6w2@mlA delta 44 ycmcb|ca4wxG%qg~0}#}|xw4Vlf>kJ0KO;XkRX;tiLf<8|IJ+djU~?=hBNG5O?+xz& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/source.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/raster/__pycache__/source.cpython-312.pyc index 8328c0b400c480c5e149a339e6be7497067a03ad..5a3aab3c5150e78f14fb3b77fd801b6f7209f433 100644 GIT binary patch delta 54 zcmeymmGSRZM()$Ryj%=G(7oyEMs6lnsXYCR{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I@~qcF0sABpJOBUy delta 46 zcmeynmGSFVM()$Ryj%=GQ2*x2Ms6lnp)~!B{M=Oi^t=jvm(=3ylKg_r>a5p70eVUh AIsgCw diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geoip2/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geoip2/__pycache__/__init__.cpython-312.pyc index 4a993edd7dcf4147ff9d4ba501bd27ff5efa44fe..e0a49161d052e65ea7862f7c1c053b093e091f96 100644 GIT binary patch delta 51 zcmdnSv5$lMG%qg~0}ym?y1J1&m{}@YKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tMc FF#wX?5O@Fp delta 43 xcmdnTv5kZKG%qg~0}#}|xw4Tvm{}-UKO;XkRX;tiLf<8|IJ+djU~&cXF#sTK4t4+l diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geoip2/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geoip2/__pycache__/base.cpython-312.pyc index fceb8586dbc518db90da7a72bd3ce013a475c144..d4c8b69ff89b9df5f15f457af29a9b0b7f298842 100644 GIT binary patch delta 52 zcmdnwx66| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geoip2/__pycache__/resources.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geoip2/__pycache__/resources.cpython-312.pyc index 87329250261731fe8be92a960eae5907d1067c5a..b980bbe5b0d61f86551875f6a4ebb541536bf832 100644 GIT binary patch delta 52 zcmbQivw(;DG%qg~0}ym?y1J2j60=l}enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_Te GnM?qpQV@s$ delta 44 ycmZ3$GlPfwG%qg~0}#}|xw4Ua60=Z>enx(7s(yN2g}zH_adt_5!RGDEnM?pJfDVQL diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/__init__.cpython-312.pyc index ad1c11f86d0c4f3f5f9dc08675ca27f4bb33f686..7a410d968657b09a5ac35b56b679ba7291549a6a 100644 GIT binary patch delta 51 zcmcb@eutg=G%qg~0}ym?y1J2Dj9DsEKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|gf% FLI9OM5D@?X delta 43 xcmcb^eubU;G%qg~0}#}|xw4U4j9DmAKO;XkRX;tiLf<8|IJ+djV6rvyLI5K64i5kT diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/base.cpython-312.pyc index 1aea23b273ca5f82b5568d72446629db41cb4995..cb0369be8fb12769410e5813ca6e1ed6b1ad4051 100644 GIT binary patch delta 50 zcmbQvGM|O}G%qg~0}ym?x;l~juT-jjMt*LpetKSozDsIxc1eDLzPn$9Zn&${WGTkK E0FL|+k^lez delta 42 wcmbQwGM$C{G%qg~0}#}|xiXRauTZRhMt*LpetKSozDsIxc1eE0WF^MG02+r5kN^Mx diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/collections.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/collections.cpython-312.pyc index cf6bd4cd5c0b2add1bae0243000f75a18e3b9209..f0973073e5725a7671378846cfd3c4326e8965a0 100644 GIT binary patch delta 52 zcmX@2b4G{zG%qg~0}ym?y1J2jDvMN(enx(7s(yN2g}zH_adt_5fxf$6gl@R2)83J3UE~&-YCHV#V?tT%v;jT`b JPjH4!1OV`e5~BbB delta 46 zcmZ3sjcMLCChpU`yj%=GQ2*x2M()*|LW%kr`MIh3>3J3UE~&-YCHV!LFK~uU1ORWo B5TO77 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/io.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/io.cpython-312.pyc index 53048ad78a4decb3f233dec0962a321d44d468b8..fbd5412104bace86246b293222057881ec7b7c69 100644 GIT binary patch delta 52 zcmdnNeSn+$G%qg~0}ym?y1J3Ook=QLKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z{$ G5oQ3ZC=gKq delta 44 ycmX@Wy@Q+kG%qg~0}#}|xw4VFok=KKKO;XkRX;tiLf<8|IJ+djVDlO#5oQ224h~NM diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/libgeos.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/libgeos.cpython-312.pyc index 94b3a2ab8446a1ef50897baa50661c79ac65f8ca..3c3c1cf256c93d7b75e62e72c90a67015e17ed62 100644 GIT binary patch delta 52 zcmZ3kyIz<3G%qg~0}ym?y1J1&lwB%AKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$>~ GDL(+K+Yn0t delta 44 ycmZ3lyIhz1G%qg~0}#}|xw4TvlwBx6KO;XkRX;tiLf<8|IJ+djU~?6_DL();@eWA< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/linestring.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/linestring.cpython-312.pyc index d448ac2391d51136c2f892f0426cdde9109d4a81..87dfe755276710778e50f9832c1efe0043efc900 100644 GIT binary patch delta 52 zcmccOc*l|ZG%qg~0}ym?y1J430GCv@enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@Ne G-$en}&JuJ0 delta 44 ycmccPc*T+XG%qg~0}#}|xw4V_0GCj*enx(7s(yN2g}zH_adt_5!RDu2-$emhOb~Ja diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/mutable_list.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/__pycache__/mutable_list.cpython-312.pyc index 5e42517cc0b3e5ff652756e4be86106857b1a091..ed5ef05964467afeec34f64b654f4042ec56d99d 100644 GIT binary patch delta 52 zcmaEs^Dc+`G%qg~0}ym?y1J1&g;Oe5KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%jz GQyl=}D-t^Z delta 44 ycmaEt^DKw^G%qg~0}#}|xw4Tvg;OY1KO;XkRX;tiLf<8|IJ+djU~?zuQyl(055K&MwI>(0BKX&<%HWn!J+j FIsl3M5Uc(055K&MwI>n7ongIsh0{4yphE diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/coordseq.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/coordseq.cpython-312.pyc index be146cc3b9a9c99bf036be484f2c2902dff21357..b4330b1c21c4eef69b133f4c971b036465e42553 100644 GIT binary patch delta 52 zcmZpZ?UUs`&CAQh00iBeu5RR(XO=3_&&bbB)lbi>(055K&MwI>(0BKX&<%HW+HAw@ G#SH+Fdk>NT delta 44 ycmeB^ZIk6b&CAQh00i}Ku59F%XBNuQ&&bbB)lbi>(055K&MwI>*zCgW#SH);5e<+4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/errcheck.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/errcheck.cpython-312.pyc index b029e28523de79aff2094cb347d2fc590f192d1d..54c4eeb521fdb04b43e111635d2d0bfed8c37136 100644 GIT binary patch delta 52 zcmZpY=#t<*&CAQh00iBeu5RQ$!zfjvpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD~2Y GBo_dt@(`o| delta 44 ycmeB@Xp-PQ&CAQh00i}Ku59E!!zh%apOK%Ns-K=$q3@DfoL!P%u=yjSBo_cMzz(7S diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/geom.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/geom.cpython-312.pyc index 4fd7b12bc612ec8a0c588b7d12f2680ee9a6784a..c1c4a145a1bc52e93e925554346377f4318382a7 100644 GIT binary patch delta 52 zcmdlhc~p}7G%qg~0}ym?y1J3OmszSnKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a*( GVNL+GJrI`w delta 44 ycmX>qxmS|=G%qg~0}#}|xw4VFmsu!7KO;XkRX;tiLf<8|IJ+djVDlzsVNL)&Qx25? diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/io.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/io.cpython-312.pyc index be55599e6c8fcbb802ce882a4fdc357b1fc496cc..b5b86ba4baa2da6d8699aeec5278308881d7af25 100644 GIT binary patch delta 52 zcmbPMKChhnG%qg~0}ym?y1J3OgH%TP G783xnMi7Yr delta 44 ycmaFBeS@3(G%qg~0}#}|xw4TvkXa~0KO;XkRX;tiLf<8|IJ+djU~?IB783wFYz~J2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/predicates.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/predicates.cpython-312.pyc index 5c3ceaef5e8ed3227b67192be86c91e01b57b05a..66ab0674607c948743394ae41f9eba0d914bdce9 100644 GIT binary patch delta 52 zcmew)@JoREG%qg~0}ym?y1J1&iCL;lKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&dE GXBGg$>JfSX delta 44 ycmew*@JWFCG%qg~0}#}|xw4TviCHL5KO;XkRX;tiLf<8|IJ+djU~@b3XBGfSXb*S* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/prepared.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/prepared.cpython-312.pyc index fd3fe73a0e1eb14d7a7250f50451d84198d1ec3a..ae8518da591d29bf9f34f0cd9993c138125d88ac 100644 GIT binary patch delta 52 zcmeC=naIO^nwOW00SLM`UERoC$Rt&wpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7HL| Gni&9?YY;&I delta 44 ycmbQp)5*hqnwOW00SM~fT-nH7$Rw1bpOK%Ns-K=$q3@DfoL!P%uz4C&H8TJuSq?t{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/threadsafe.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/threadsafe.cpython-312.pyc index 69801b9096692158c5edef4bd0771b694a7511d4..4e8064741ff2fcbd394d9e22a1066700c6f366ee 100644 GIT binary patch delta 52 zcmbOrGed^^G%qg~0}ym?y1J2@lS!&fKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o#B GD{cUjDG(R{ delta 44 ycmbOsGeL&?G%qg~0}#}|xw4U)lSwE~KO;XkRX;tiLf<8|IJ+djV6z_6D{cTG*A5l{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/topology.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/geos/prototypes/__pycache__/topology.cpython-312.pyc index 3a9237b2f96348965b25c4a931dbba525dd5a95e..5d7c57d8431ac364f3a373720b7479e21f8ba53b 100644 GIT binary patch delta 52 zcmbOuvP6XYG%qg~0}ym?y1J2@kwvORKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o*5 GKUM&f%@7~} delta 44 ycmZ1?GDn2_G%qg~0}#}|xw4U)kwqv+KO;XkRX;tiLf<8|IJ+djV6z&_KUM%Ddk!7| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/__pycache__/__init__.cpython-312.pyc index 6ca5309f0f0ce00126dd3ddeb07be28880a85a04..a5cea57370fd754937abe942fa94504e015479a9 100644 GIT binary patch delta 49 zcmX@Xc!81oG%qg~0}ym?x;l~DSSnvXBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn77| Dc{vZ< delta 41 vcmcb>c!H7pG%qg~0}#}|xiXR4SSVdTBR@A)KRvHP-zBv;yClD0VnhW13FZyj diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/commands/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/commands/__pycache__/__init__.cpython-312.pyc index 2929d153d60ddc651445df6ef0e7e6ae095f0394..dd000b37bd6f291da64af91e54d1394c438c2534 100644 GIT binary patch delta 49 zcmcb}c$1O)G%qg~0}ym?x;l~DSgJxlBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8DR DeWwrr delta 41 vcmcb~c#)C&G%qg~0}#}|xiXR4Sg1fhBR@A)KRvHP-zBv;yClD0VnibV4SWs$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/commands/__pycache__/inspectdb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/commands/__pycache__/inspectdb.cpython-312.pyc index d877cdfc810c2fc7ac3509bc98a5603cf3bdbacb..8acf24692fa40a025644cc3899df5f1633f6c368 100644 GIT binary patch delta 52 zcmX@dagBrfG%qg~0}ym?y1J3ugh{GWKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%ac GUq%3`=n&2T delta 44 ycmcb{agKxgG%qg~0}#}|xw4Vlgh{ASKO;XkRX;tiLf<8|IJ+djU~?qXUq%2mh7QaC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/commands/__pycache__/ogrinspect.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/management/commands/__pycache__/ogrinspect.cpython-312.pyc index 5ab4d86e370b2f76e93671efdbba60c51a578c62..6cb792b82c1227ddec415a29dbee7e609d9b526d 100644 GIT binary patch delta 52 zcmbPfy3mySG%qg~0}ym?y1J43G?P@7enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-dU G8^r;=Wf8Xk delta 44 ycmZ2zI@6Toy;GX|G%qg~0}#}|xw4V_DWgz=enx(7s(yN2g}zH_adt_5!DcR|?c4xEP!8Mx diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/sitemaps/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/sitemaps/__pycache__/views.cpython-312.pyc index 224e1b61ea181e5e12c019a6fa669fa2057c8c8d..bf06e6ae702489150eab111cfb4e9160d05b7140 100644 GIT binary patch delta 52 zcmbO(K3|;sG%qg~0}ym?y1J2Did`y8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p+d G0t*0?st>CG delta 44 ycmbO)K3$yqG%qg~0}#}|xw4U4id`s4KO;XkRX;tiLf<8|IJ+djV6#1Y0t)~l=nbg= diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/__init__.cpython-312.pyc index 475ce8b3bc875964e0d0d624ec56aebcabe2ca5a..d24aad2565e748995ec92251bdc9c3b74791adca 100644 GIT binary patch delta 51 zcmcb``iPbLG%qg~0}ym?y1J2@gGnk&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|gKQ FRsfXh5D)+W delta 43 xcmaFFdW)6&G%qg~0}#}|xw4U)gGne!KO;XkRX;tiLf<8|IJ+djV6raLRsbT>4h{eS diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/layermapping.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/layermapping.cpython-312.pyc index 16e351bc10f2c882ed5a5db0d9e3bc7a854d76d8..58f49fea2fd41bccc2b6aeb90567b3cc957ab5c6 100644 GIT binary patch delta 54 zcmex$l(Fd;Bll@uUM>b8=-za7Bew#JRGxlDer~FMdR~RTOKNd;Nq&L8yI+KExU17< ITb8|X0PcDc5dZ)H delta 46 zcmZoV#`xb8sDE>1Bew#JP?~;5er~FMdR~RTOKNd;Nq)g*SC+kT0Bz$C A4*&oF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/ogrinfo.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/ogrinfo.cpython-312.pyc index f7dea3aad6ea165c22ceca1f912d6ee04b386e41..ae2f8b0377bcdb4f9565a6b2b6153d64e2abd70d 100644 GIT binary patch delta 52 zcmX>ra#e);G%qg~0}ym?y1J3Oj9n^IKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c?E GT}%MCJrN)P delta 44 ycmcaAa#n= diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/ogrinspect.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/gis/utils/__pycache__/ogrinspect.cpython-312.pyc index a4b1f839ec1cc1b311dc2dcc6cb74f4d8f58aceb..284a8e6d62c6e148ff81ac6d5e67769cc57bd5f4 100644 GIT binary patch delta 52 zcmX@;deW8qG%qg~0}ym?y1J434y#m-enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?P7 GCu9KC2ohZY delta 44 ycmX@%mk G1SSBxSrEnm delta 44 ycmew;`BIYmG%qg~0}#}|xw4VlhD#_`KO;XkRX;tiLf<8|IJ+djU~?kZ1SSAOR}RDg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/__pycache__/__init__.cpython-312.pyc index d7673fa3e475722df09675dd670723ca74421ffe..dbbec11aceaa85ad980d94efdc05f73d3bf656be 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}ym?x;l~DSSnLLBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7i9 Dc0~`w delta 41 vcmX@bc!-hvG%qg~0}#}|xiXR4SSV3HBR@A)KRvHP-zBv;yClD0Vnh)D2Z9a4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/__pycache__/apps.cpython-312.pyc index 5c95824a75475535900030182c3471c9cec9ec67..4b7361174dec1c33bf36bfc589b504ed4a54651c 100644 GIT binary patch delta 51 zcmX@ea*~DnG%qg~0}ym?y1J2Di%}|7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g-x FF944j5MBTP delta 43 xcmX@fa*&1lG%qg~0}#}|xw4U4i%}?6KO;XkRX;tiLf<8|IJ+djV6s2sF903E4qN~L diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/templatetags/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/templatetags/__pycache__/__init__.cpython-312.pyc index d07ad929a52d77f44b31b81a36517242356b40ee..8749e7889b630854611f42467e9032d9b8965833 100644 GIT binary patch delta 49 zcmX@lc%6~^G%qg~0}ym?x;l~DSgK4vBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn96r De5()m delta 41 vcmcc4c%G5_G%qg~0}#}|xiXR4SSU|FBR@A)KRvHP-zBv;yClD0VnjUv46qIM diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/templatetags/__pycache__/humanize.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/humanize/templatetags/__pycache__/humanize.cpython-312.pyc index cd58d7b69199005875fed8fe0ee9f8181078283e..228719df69155519ef7a4a942be17a0ba18ca492 100644 GIT binary patch delta 52 zcmdlKyDOIaG%qg~0}ym?y1J2j37b@zenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>P0 GAJqZT)e=7d delta 44 ycmdlLyD66YG%qg~0}#}|xw4Ua37b%!enx(7s(yN2g}zH_adt_5!RC`}AJqX>TM#_} diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/__init__.cpython-312.pyc index bf64c1a9e0ca444b2c60cf9d71a163a1886111b2..188f1510b50cfa2e05615e07a38cf7e7b0340163 100644 GIT binary patch delta 49 zcmZ3?w3>B diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/api.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/api.cpython-312.pyc index 8e79469816ffc89ce8979003f9d8115742fac14e..8f47b235f5fc605737db6cb6daaf352b84440419 100644 GIT binary patch delta 51 zcmZ1=yF!-xG%qg~0}ym?y1J3OnNcc5KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4HL^ FUI3SX5F!8o delta 43 xcmZ1>yFixvG%qg~0}#}|xw4VFnNcW4KO;XkRX;tiLf<8|IJ+djVDSn@UH~KL4j=#k diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/apps.cpython-312.pyc index 1a0e029a53ff921da24b7bda2ad703d4f3d304ba..0a4da19be1ddc79572d897c8875b36513840e168 100644 GIT binary patch delta 52 zcmZ3>xs{XqG%qg~0}ym?y1J1&fl(?|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%>3 G0W$!gh7bh+ delta 44 ycmdnWxt5drG%qg~0}#}|xw4Tvfl(+{KO;XkRX;tiLf<8|IJ+djU~?;@0W$zBYz_ke diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/constants.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/constants.cpython-312.pyc index 9da5683380b6ef8f114a7ac57c8b86c8bc0a999b..e8e5f7e576709a915dc67ca13444a1a6b6e1f307 100644 GIT binary patch delta 51 zcmaFM{FRyeG%qg~0}ym?y1J2@i%}{|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g)w FF#wy%5Jdn0 delta 43 xcmey${Fa&fG%qg~0}#}|xw4U)i%}>^KO;XkRX;tiLf<8|IJ+djV6r~rF#sr;4nqI{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/context_processors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/context_processors.cpython-312.pyc index d8466f7128e68d9179fe0de6c970673527972312..77169a592891b0e260431d6f3427f2b28cbabd76 100644 GIT binary patch delta 52 zcmey*($30#nwOW00SLM`UERp-!zfj(pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kSe Gj1d5&^AG9( delta 44 ycmZo?{m;UEnwOW00SM~fT-nI&!zh%kpOK%Ns-K=$q3@DfoL!P%u(^;?j1d4YGY#kf diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/middleware.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/middleware.cpython-312.pyc index e839f413f9766effd54f41b638c706c7db57be17..b8fe82442fe1b910de7717d6c4e4d7682e50fbc7 100644 GIT binary patch delta 52 zcmdnXeUzK~G%qg~0}ym?y1J3Og;6S7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bux G85RJonGj?E delta 44 ycmX@gy_cK&G%qg~0}#}|xw4VFg;6M3KO;XkRX;tiLf<8|IJ+djVDm~w85RIH4-R4g diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/utils.cpython-312.pyc index 3fe4c504e21609cf7de3cd32bfd0bfac45357c0f..477930a0c14fc332e6fbeae9275cc4b9e7039540 100644 GIT binary patch delta 52 zcmcb@a)*WcG%qg~0}ym?y1J2DgHb9?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pRM GKO+F8rw_LP delta 44 ycmcb^a)pKaG%qg~0}#}|xw4U4gHb3>KO;XkRX;tiLf<8|IJ+djV6!hHKO+D!B@MLz diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/__pycache__/views.cpython-312.pyc index 7e0881a59521a462e1a5a09dd350bbb663bdf631..cf8d3919fd3606c5f73e96543939199784dd32e3 100644 GIT binary patch delta 52 zcmdnZd6<*?G%qg~0}ym?y1J3ufk`S&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%-7 G91{Sc_z)2Q delta 44 ycmX@ixto*wG%qg~0}#}|xw4Vlfk`M%KO;XkRX;tiLf<8|IJ+djU~?){91{R7?hX$C diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/__init__.cpython-312.pyc index a800ba66bfd6a7d1ce585c71526003aa5aef9539..424e802ebc4c0efc1b9e4166fbef7a7fac494788 100644 GIT binary patch delta 52 zcmaFH`i_-z)(;E- diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/base.cpython-312.pyc index 8a73354ca2ee995cb5711bc1b6d482c9b407f170..8f06c52753d5e1878b5becf1b3e52d9811c18694 100644 GIT binary patch delta 52 zcmdn#deD{oG%qg~0}ym?y1J3Ogh?t_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4b!T G4Fv$e-w@mY delta 44 ycmX@;y3>{WG%qg~0}#}|xw4VFgh?n>KO;XkRX;tiLf<8|IJ+djVDn5S4Fv#4T@Km+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/cookie.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/cookie.cpython-312.pyc index 4e9ac33e8dde9b663f19c4acdfa5170e1fdefedd..2b7ebc895622b226d5d2ab5c055fdabd2a884b5d 100644 GIT binary patch delta 52 zcmezG((cNAnwOW00SLM`UERoimRTxaKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a=Q Gsd50)01^lQ delta 44 ycmZp7{qMqknwOW00SM~fT-nHdmRTrWKO;XkRX;tiLf<8|IJ+djVDl&Dsd4~RNDu}9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/fallback.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/fallback.cpython-312.pyc index 2475a303b3f06bc4ae6d16c135666dab6131ccc1..a5cd68776c99ce29ec923a7e797772c63c96a4bb 100644 GIT binary patch delta 52 zcmbOuvP6XYG%qg~0}ym?y1J2jA(K?0enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>6l GaqIx8st~&X delta 44 ycmZ1?GDn2_G%qg~0}#}|xw4UaA(K$1enx(7s(yN2g}zH_adt_5!RBL3aqIvyfDX9; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/session.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/messages/storage/__pycache__/session.cpython-312.pyc index a612f58915dd8010de47b58e82a13c7b4de9e309..8f38142317b000046679e8867caecf8676d68148 100644 GIT binary patch delta 52 zcmca3_C$>PG%qg~0}ym?y1J43HIr05Ssu1 delta 44 ycmbOiH!Y6)G%qg~0}#}|xw4V_F_Tb&enx(7s(yN2g}zH_adt_5!DbF-F&zL*Ne-F- diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/lookups.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/lookups.cpython-312.pyc index a72b820758e32f9a9567e17eb5d431c4f199f590..07383c9f0235df63badea5f781f368d5839ff56c 100644 GIT binary patch delta 52 zcmaDQ_eqZXG%qg~0}ym?y1J1&ib*O%KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Q# GXC45;G!bq9 delta 44 ycmew)_ezfYG%qg~0}#}|xw4Tvib*IzKO;XkRX;tiLf<8|IJ+djU~@gwXC44a3J+`m diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/operations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/operations.cpython-312.pyc index 92799529de7b3b52e2e2595fd790e57e46433ece..536eaf9941ae474d1ac815c1b056ae514fdd683c 100644 GIT binary patch delta 54 zcmaDflkwF|M()$Ryj%=G(7oyEM(#jnscij>{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IdCVoA0P0CFG@ A1poj5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/search.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/search.cpython-312.pyc index ddf4416c64da4eafdd404f2392a61497a35877e3..ad5c31ba3f4cba410a903d649c3c2c2af3dbd9a8 100644 GIT binary patch delta 54 zcmey<#@N!%$bFiZmx}=ix;I_j$Suz*m9C$WpPQ!sol3JWyl3$?j?iZmO?&`GJ IhSk9i0Mq^u^8f$< delta 46 zcmZo^XZ+K~$bFiZmx}=i>fc=1$Suz*6tAC=pPQ!sol3JWyl3%ddh1J0h09S7g A@c;k- diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/serializers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/serializers.cpython-312.pyc index 211e71396f1fdd72358d40ca36144ede120111b6..1f930ae320569d4ab4a6de8ff3dc1b5489eacaab 100644 GIT binary patch delta 52 zcmcc2cAJg+G%qg~0}ym?y1J2j38Pewenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>PW GlNbTIF%dcd delta 44 ycmcc3cA1U)G%qg~0}#}|xw4Ua38PSoenx(7s(yN2g}zH_adt_5!RC{UlNbR(j}JHi diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/signals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/signals.cpython-312.pyc index e054ebce2c1bef813eea713a06b61e57e33687b3..c41446a31796cd8dda638b7e50c45bcd744b3cf7 100644 GIT binary patch delta 52 zcmdlcwNHxsG%qg~0}ym?y1J43Ig?a|enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FWC GBQ5~DSrAqL delta 44 ycmdldwM~lqG%qg~0}#}|xw4V_Ig?O=enx(7s(yN2g}zH_adt_5!Db$2BQ5|zM-Ef~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/utils.cpython-312.pyc index ce3642f59b040700055725c22e7972c5bbb7bbe6..2ba3345181d74af49fa8cef5378ec335ae707dd1 100644 GIT binary patch delta 52 zcmdnReTbX;G%qg~0}ym?y1J3Oo=GZAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aQ= GIc5N>H4st& delta 44 ycmX@ay^EXsG%qg~0}#}|xw4VFo=GT9KO;XkRX;tiLf<8|IJ+djVDl0tIc5MgBMwji diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/validators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/__pycache__/validators.cpython-312.pyc index e4230fe07cdbd90a557eba5f3020883a23e8425e..1e82bda0842990923455f10133e8459aa783f89c 100644 GIT binary patch delta 52 zcmaE(@I`_9G%qg~0}ym?y1J43IFnSienx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;2k G9lQY3ei7*a delta 44 ycmeyO@J50AG%qg~0}#}|xw4V_IFnGaenx(7s(yN2g}zH_adt_5!R9wi9lQWmln>_s diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/aggregates/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/aggregates/__pycache__/__init__.cpython-312.pyc index 6d0ab5e449ca4a07e42996b6fe68421b0d292317..ca17138702eaedf79b9e93105f68b459c7f2c9c5 100644 GIT binary patch delta 49 zcmZo>>Sp3T&CAQh00iBeu1@4mmMYQD$j?pHPtU8+cS$YIF3B&@clV3X4R>{#*w73B DW`hsJ delta 41 vcmeBXYG&d-&CAQh00i}Ku1w@k7Ru4j$j?pHPtU8+cS$YIF3B&L*wG9C`MC|k diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/aggregates/__pycache__/general.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/aggregates/__pycache__/general.cpython-312.pyc index 6e3c9aa93e615739f9a863160b96bb62141e8441..9844bff2de6cd892c343c48309fa011e7d62391b 100644 GIT binary patch delta 52 zcmdmMdeoHrG%qg~0}ym?y1J2jDYI0uenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<3W Gzr_H>_YwC1 delta 44 ycmX?Vy4RHZG%qg~0}#}|xw4UaDYH+ delta 44 ycmcaDbXkb|G%qg~0}#}|xw4V_FQZVFenx(7s(yN2g}zH_adt_5!Db~UOLhQD&JMN! diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/aggregates/__pycache__/statistics.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/aggregates/__pycache__/statistics.cpython-312.pyc index b81aece68426cdf8ad06b5d9d5fa3c97f82dd356..6f9e4c990518102194927f4694202ad011488a19 100644 GIT binary patch delta 52 zcmaDW@l}HRG%qg~0}ym?y1J3uo>{6)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$y- GASVF58xUOp delta 44 ycmew=@m7NSG%qg~0}#}|xw4Vlo>?eQKO;XkRX;tiLf<8|IJ+djU~>wyASVDsfeu>$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/__init__.cpython-312.pyc index abe0b1ae3e033683af74954ef1fe0eaaf4ae11e0..8e699636ef761908678aa1df4292af89282718d7 100644 GIT binary patch delta 49 zcmdnaw4aIlG%qg~0}ym?x;l}2l2n0yMt*LpetKSozDsIxc1eDLzPn$9Zn&${#PuBj Df1?nK delta 41 vcmdnbw4I6jG%qg~0}#}|xiXP^l2C?zMt*LpetKSozDsIxc1eE0#O)mb4p0t> diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/array.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/array.cpython-312.pyc index e8b10d17e645804b4d2abcfbc65fe3d83b617582..26d1ff2e54754fe4871ea725c28d3867c360c170 100644 GIT binary patch delta 54 zcmbO;g>lIgM()$Ryj%=G(7oyEM($pAsa*Yx{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z ItJsU20NqRx>Hq)$ delta 46 zcmZ27g>lXlM()$Ryj%=GQ2*x2M($pAp;Y~h{M=Oi^t=jvm(=3ylKg_ro7jt-0AI2X A=l}o! diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/citext.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/citext.cpython-312.pyc index c6733f8280d870295ec6ea9ee4537c046bd7638e..6fadfeabde0db4dd6c387bdd734036fa0e1579d7 100644 GIT binary patch delta 52 zcmaDZ{a%{;G%qg~0}ym?y1J2j6O&Y)enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_L` G65IgG=@C2t delta 44 ycmaDa{al*+G%qg~0}#}|xw4Ua6O&Myenx(7s(yN2g}zH_adt_5!RG5s65Ie#FAq8Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/hstore.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/hstore.cpython-312.pyc index 35b7b884969d09b011f9f2db00078aa23425e53d..c8a8b511c7f9e351adbf33c1fe05c00bd104b83f 100644 GIT binary patch delta 52 zcmdn1cT|u2G%qg~0}ym?y1J2Do<%B8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oLr Gqc8xh=?~oi delta 44 ycmX@Aw^xt*G%qg~0}#}|xw4U4o<%54KO;XkRX;tiLf<8|IJ+djV6zJgqc8wBCk@*G diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/jsonb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/jsonb.cpython-312.pyc index 7648669b193057508ec34d32d4ae6816d74ded35..97e1d417ec1b866122d8e5910107e8275c72247a 100644 GIT binary patch delta 51 zcmdnMx`UPbG%qg~0}ym?y1J2jGNV+kenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8Y+` Fi~yI?5HA1# delta 43 xcmdnNx`CDZG%qg~0}#}|xw4UaGNVwcenx(7s(yN2g}zH_adt_5!Qvf^i~u9@4lMux diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/ranges.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/ranges.cpython-312.pyc index 249064a782a8f2b31ef6bd289f10887435006532..18b3e1fb7fd3e08d722c2a0e8a9c77d831dd6d7f 100644 GIT binary patch delta 54 zcmcaNo$=XpM()$Ryj%=G(7oyEM((E^QhE9r`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JnK3J3UE~&-YCHV!Lxj64Q0RVpk B5Rd=> diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/fields/__pycache__/utils.cpython-312.pyc index 3e57293c00729e492df44c5c4ad6e3ecb2a34c0a..ec3e701367de2cd8eed3a587d2e9f30184f0970c 100644 GIT binary patch delta 50 zcmZ3(vW12FG%qg~0}ym?x;l~jj#RFGMt*LpetKSozDsIxc1eDLzPn$9Zn&${#-GNF E0G3k_)&Kwi delta 43 xcmdnOvWA8GG%qg~0}#}|xiXRaj!>$8Mt*LpetKSozDsIxc1eE0W=2M1MgS}W4c7nw diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/__init__.cpython-312.pyc index c4a8dc4f8dfa5e830cec932a1b4face160e50543..ea9496b73f48c5c87b6867397e948d4028a7c898 100644 GIT binary patch delta 49 zcmeBWn##m|nwOW00SLM`U7g6CFO{#Kk)NBYpPpBt?~+=aU6Nm*@9r0&8}8~fv8NFL DYdjC> delta 41 vcmbQr)XT(unwOW00SM~fT$#w7FO;sIk)NBYpPpBt?~+=aU6NlgaY`cq{hAHu diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/array.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/array.cpython-312.pyc index aaa7de50777aba9c4207a25917f8c220d90d1e13..3171ad7a27031ee77e7e6153dfc5c55dbfab8091 100644 GIT binary patch delta 52 zcmcbbd^ef&G9 GmM#F&)e%+z delta 44 ycmcbcd^MT-G%qg~0}#}|xw4Vlk3}d&KO;XkRX;tiLf<8|IJ+djU~@4`mM#ER+YeL# diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/hstore.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/hstore.cpython-312.pyc index 2861520444d1436a5d184b70b127cad0c5ce7fd7..ba879ae5368f39b3bdeeef0d5a45b8dfcf3a3861 100644 GIT binary patch delta 52 zcmX>tbXkb|G%qg~0}ym?y1J2jGLuxUenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-9K Gv)KT-g%L3T delta 44 ycmcaCbXth}G%qg~0}#}|xw4UaGLulMenx(7s(yN2g}zH_adt_5!R8%Iv)KSa8xJo4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/ranges.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/postgres/forms/__pycache__/ranges.cpython-312.pyc index 1ae9057e172889292e542a547960fad0cdb58471..a8050921ba673d4049ef291536d403fed18bb9b5 100644 GIT binary patch delta 52 zcmdn3eOR0OG%qg~0}ym?y1J43Gm})Venx(7s(yN2g}zH_adt_5fxf$6gl@R2(`EtY G)j|NrSP>uq delta 44 ycmX@Cy<406G%qg~0}#}|xw4V_Gm}uNenx(7s(yN2g}zH_adt_5!Db2O)j|MEUJo7s diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/redirects/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/redirects/__pycache__/__init__.cpython-312.pyc index 89a66d0a5e265bbf055bb0b32868b09842905126..26f65f524b3e6223ce0b7b7d33970a5273a7a6b8 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbto|S&CAQh00iBeu5RRB%qW$vpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD|y| G8zTUkDiBQo delta 44 ycmeBUYh&X+&CAQh00i}Ku59F9%qSGEpOK%Ns-K=$q3@DfoL!P%u=xa|8zTTFhz?5t diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/redirects/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/redirects/__pycache__/apps.cpython-312.pyc index d9b97ef426cdafa4d53905ba8b2cc3b341d5199d..2ac278ea9c49bbd309cec426d07745edb4222066 100644 GIT binary patch delta 52 zcmey*($30#nwOW00SLM`UERo?$S9SjpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7HIv Gkr4oL(enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8%Xb GK3)L2W)U+0 delta 44 ycmcbja7KaqG%qg~0}#}|xw4VFkVz<6KO;XkRX;tiLf<8|IJ+djVDmJleY^ldEDtdN diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/__pycache__/models.cpython-312.pyc index 54889993221d5f77451c2f4d077870e1f7f24d4f..c569e9db6938a8de30fe01d1504de985c3161628 100644 GIT binary patch delta 52 zcmX@lf1RKEG%qg~0}ym?y1J2DfKe)4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pcl GA~pb}uMjK% delta 44 ycmcc4f1aQFG%qg~0}#}|xw4U4fKe!3KO;XkRX;tiLf<8|IJ+djV6!RXA~paqg$^nJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/__pycache__/serializers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/__pycache__/serializers.cpython-312.pyc index b3533b323f30e2d402cfaa7740d729dd344a41ca..0fd70a7646f27001ae20af74914136f34cd661b4 100644 GIT binary patch delta 49 zcmZo=?q%ja&CAQh00iBeu1@5BB$cC|k)NBYpPpBt?~+=aU6Nm*@9r0&8}8~f@qZft DcN-AH delta 42 wcmeBWZe`{^&CAQh00i}Ku1w^9B$T3`k)NBYpPpBt?~+=aU6NlgnVqo>01>?n!~g&Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/__init__.cpython-312.pyc index fb69485a95066dd88c777fa52536a280e1396f05..96792e6a216ebd4fc9f290ca7981b23d329014ae 100644 GIT binary patch delta 49 zcmX@jc$ty=G%qg~0}ym?x;l~DSgJ@rBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8(j Ddb1Dc delta 41 vcmcc2c$$&>G%qg~0}#}|xiXR4SSU+BBR@A)KRvHP-zBv;yClD0Vnj6n3m6UN diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/base.cpython-312.pyc index a85479aae0cd1a0e38c5fe9b94298518db5cc6ff..bace494ae2f6daa9ac86fe16df82baefe541d3cb 100644 GIT binary patch delta 52 zcmexT_ot5gG%qg~0}ym?y1J1&m`N&6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$P+ Gi!A`@vk`m% delta 44 ycmexU_oa^eG%qg~0}#}|xw4Tvm`Ny2KO;XkRX;tiLf<8|IJ+djU~>f%i!A_Y@eg_c diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/cache.cpython-312.pyc index d2cc9513c791f4991759a5c3cf80e163f8e10cb9..042cd2067411ec42211c9fca3e13879be9dc50e4 100644 GIT binary patch delta 52 zcmZpd>zCs`&CAQh00iBeu5RQ`W0K0(&&bbB)lbi>(055K&MwI>(0BKX&<%HW+T6_4 G!UF)Dg%DT( delta 44 ycmeB|YnS6b&CAQh00i}Ku59E^V-iZ&&&bbB)lbi>(055K&MwI>*xb$3!UF&(^A1)3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/cached_db.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/cached_db.cpython-312.pyc index 3424b987925d538d9f49a2da4f6b4a11b2226556..d6ff544569479472cce6c7939f0e44b4bdb97231 100644 GIT binary patch delta 52 zcmZpd>6hU?&CAQh00iBeu5RQmVUjA=&&bbB)lbi>(055K&MwI>(0BKX&<%HW+B}h| Gj2i%+Fc4(` delta 44 ycmeB|X_w(X&CAQh00i}Ku59EkVG_#L&&bbB)lbi>(055K&MwI>*gTV|j2i$dE)HV= diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/db.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/db.cpython-312.pyc index 6218a89c6cf7dbacf93d7fc084456b6b7b4d7381..5f9210d73e4c49f47c3f66ba806f867900466bd2 100644 GIT binary patch delta 52 zcmcble@mbHG%qg~0}ym?y1J3Og-I$$KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4buR GLs0<4g%JM$ delta 44 ycmcbme@UPFG%qg~0}#}|xw4VFg-IwyKO;XkRX;tiLf<8|IJ+djVDm~QLs0-qTMqpI diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/file.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sessions/backends/__pycache__/file.cpython-312.pyc index 26ac3995fdbd2f4e7261a2e1518dd701035225cc..95b121d53ff7fa4a55b5f5bcbf9668eb296b8706 100644 GIT binary patch delta 52 zcmX@$e!`vmG%qg~0}ym?y1J2Dm02oJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oe^ GodN*4rVyzB delta 44 ycmX@%e!!jkG%qg~0}#}|xw4U4m02iFKO;XkRX;tiLf<8|IJ+djV6zu&CAQh00iBeu5RRB#w=B#pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD~ae GK}GZaxsMaG%qg~0}ym?y1J2Di%BX|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p>M GlLi36Ul3#f delta 44 ycmcZ@ax#SbG%qg~0}#}|xw4U4i%BR^KO;XkRX;tiLf<8|IJ+djV6#6HlLi1tT@GRZ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sitemaps/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sitemaps/__pycache__/apps.cpython-312.pyc index 13176b0cc9efdb5e4ada99f4c1b65099a4db9edf..26c913dbb76471c4d0dd6e058f3b9f09144ee5d9 100644 GIT binary patch delta 51 zcmeyv(!$DpnwOW00SLM`UERnX&nT6upOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w77$a# GurL6@r4V%h delta 44 ycmeyY^IC`dG%qg~0}#}|xw4Vlnpr4LKO;XkRX;tiLf<8|IJ+djU~>YqurL5fiw<)D diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sitemaps/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sitemaps/management/__pycache__/__init__.cpython-312.pyc index c03d55c0d6fedbff09101a12d9bc58dbc98eeb8c..7f4dc282fb33b40c143b13f2ded3e2fe382cd06f 100644 GIT binary patch delta 49 zcmX@hc$Ja+G%qg~0}ym?x;l~DSgJ%nBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8hb Dd#?}h delta 41 vcmcc0c$Sg-G%qg~0}#}|xiXR4SSUw7BR@A)KRvHP-zBv;yClD0Vni(f3*-&% diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sitemaps/management/commands/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sitemaps/management/commands/__pycache__/__init__.cpython-312.pyc index 575e1dff43c4e21bf0f56e4d9d754eadc39aef9b..76e908b67ae12daa76bad7c46f11dfe128df1277 100644 GIT binary patch delta 49 zcmcb{c#o0$G%qg~0}ym?x;l~DSgKY(BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7=J DfE^GN delta 41 vcmcb|c#V(055K&MwI>(0BKX&<%HW+8oWO G%?JRB77t(055K&MwI>*qqF$%?JP)%ne`w diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/apps.cpython-312.pyc index 5d8ebf8b68be8d1af0163011c2c96734a84eb157..98a5af78f997fd3da34f0aba51f4d16792cd6df3 100644 GIT binary patch delta 52 zcmX@kd7hK|G%qg~0}ym?y1J3OiAgF+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dz0 G4JH7uq!4oe delta 44 ycmX@ld7P8`G%qg~0}#}|xw4VFiAg9*KO;XkRX;tiLf<8|IJ+djVDoY&4JH6M>JD)L diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/checks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/checks.cpython-312.pyc index 3a8ae990d9c025bd4fc9eacd61898188932b50cd..c725c8fffd54458cebd903abb84a26a232d93e86 100644 GIT binary patch delta 52 zcmcb^`h=DHG%qg~0}ym?y1J2jA){1^enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>7Q Ga*P1G5fI1# delta 44 ycmaFDdWV(!G%qg~0}#}|xw4UaA)`=?enx(7s(yN2g}zH_adt_5!RBL(a*O~%M-IjS diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/management.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/management.cpython-312.pyc index 9848812bd3de4eba17fe6266eb558dba86c4761e..3297500db8e777b597e1b83793b386713aa96daf 100644 GIT binary patch delta 52 zcmaFI_l=MHG%qg~0}ym?y1J439E((jenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^MK G%}fB!A`!>{ delta 44 ycmeyy_l}SIG%qg~0}#}|xw4V_9E(tbenx(7s(yN2g}zH_adt_5!RF5_%}fAN2oJ^p diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/managers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/managers.cpython-312.pyc index 4e0af42d8001193f9778e3f416ab6ddc4d720432..7345bd00225aa9626f47e1991cfce754d0a702de 100644 GIT binary patch delta 52 zcmeB_nkdD6nwOW00SLM`UERp7$Rw4fpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAqg7 GG#3Dn_z(sF delta 44 ycmbOz)hWe&nwOW00SM~fT-nI2$Rre}pOK%Ns-K=$q3@DfoL!P%u-T32G#3CL_6`I9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/middleware.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/middleware.cpython-312.pyc index b2e8f19e355781a060528a757fcccc2ad809b5dc..d0702af0cc2d91e2ef22c4ef50d9e0edd31624c8 100644 GIT binary patch delta 52 zcmbQkwuFuQG%qg~0}ym?y1J3Of>A0%KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cRZ Gc18f5Ef8e@ delta 44 ycmZ3&HiwP-G%qg~0}#}|xw4VFf>9_zKO;XkRX;tiLf<8|IJ+djVDntYc18dxdk$j& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/models.cpython-312.pyc index a7650b36311d964af6e64e46f643c5d2c0bcb3de..60288c0fd9413a3aae6befca527455386888aab5 100644 GIT binary patch delta 52 zcmZ3ZyG57#G%qg~0}ym?y1J43Et6D=enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GK_ GMZy5U8W8CK delta 44 ycmdm@yGED$G%qg~0}#}|xw4V_Et61;enx(7s(yN2g}zH_adt_5!Db=mMZy3@Xb$H9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/requests.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/requests.cpython-312.pyc index 22fed80def3654d872f867154d550cf88351b6b7..57fd008cd8a62853b72d61d0b6912e1dfb08459d 100644 GIT binary patch delta 52 zcmbQvJ)fKVG%qg~0}ym?y1J2Dl1VB}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|owq GA~OJvr4NGu delta 44 ycmbQwJ)N8TG%qg~0}#}|xw4U4l1V5|KO;XkRX;tiLf<8|IJ+djV6z=lA~OIT^9_Lj diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/shortcuts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/__pycache__/shortcuts.cpython-312.pyc index 000732acb7c205c0896b851addb997c6915b2bed..3053c908a403896957ea97011bdbb361e0e5eea3 100644 GIT binary patch delta 52 zcmdnawx5mrG%qg~0}ym?y1J2@pGhiRKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oO! GHzNR-W)DsP delta 44 ycmdnbww;apG%qg~0}#}|xw4U)pGhcQKO;XkRX;tiLf<8|IJ+djV6zDmHzNQgObtu` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/migrations/__pycache__/0001_initial.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/migrations/__pycache__/0001_initial.cpython-312.pyc index fd93fb9e6906896d894f08a644b60f6ab37b018f..5a277b42ceb8aa8f6927c806dc9a9692df4a3c70 100644 GIT binary patch delta 52 zcmcc3{g|8kG%qg~0}ym?y1J435wldOenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_xo GcNhW6d=e)B delta 44 ycmaFNeVd#6G%qg~0}#}|xw4V_5wlRPenx(7s(yN2g}zH_adt_5!De=rJB$EI#SbO` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/migrations/__pycache__/0002_alter_domain_unique.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/migrations/__pycache__/0002_alter_domain_unique.cpython-312.pyc index 0fe47efb1fe136f5a42557cb6c96621223cb7299..1f17e7e10a131462370d1205b72ac907a900a206 100644 GIT binary patch delta 52 zcmeC>n99L@nwOW00SLM`UERpt!X(wGpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0R*@ G4kG}ZxDaCi delta 44 ycmbQr(aXVonwOW00SM~fT-nIo!X#9wpOK%Ns-K=$q3@DfoL!P%uz4j@4kG|4rVe2M diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/migrations/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/sites/migrations/__pycache__/__init__.cpython-312.pyc index c5406b47206336da547864545dcdbe70b88f609e..3d34c27a898932021f73288ffe5de1b0ad092443 100644 GIT binary patch delta 49 zcmX@bc!`nwG%qg~0}ym?x;l~DSgKGzBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7uD DdNmK^ delta 41 vcmcb_c#4txG%qg~0}#}|xiXR4SSV9JBR@A)KRvHP-zBv;yClD0Vnh`H3bGC2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/__init__.cpython-312.pyc index a2400c3a1f32dd90890b106173331898218ce295..6af42c07be12ef1a6764e973e45b6b4d4515cef9 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}ym?x;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcfSwN delta 41 vcmX@hc$AU*G%qg~0}#}|xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2(%5( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/apps.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/apps.cpython-312.pyc index f3f710a02786e62255f79f4d9efc5358e64108c7..6bdb1211fd5a0cbe7450aff495195daa5869dcad 100644 GIT binary patch delta 52 zcmeC?n9RX_nwOW00SLM`UERq2n^7u5KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n{= GXGQ?0d=R<- delta 44 ycmbQt(aphqnwOW00SM~fT-nI|n^7o1KO;XkRX;tiLf<8|IJ+djV6y_#XGQ=pq7JwK diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/checks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/checks.cpython-312.pyc index 82eed4e691eb2abe1c2d033edbfefa762d146650..0eed6ff2cc1d5fce76841c89fd4df3030984dd69 100644 GIT binary patch delta 52 zcmaFD`i7PJG%qg~0}ym?y1J3On^7uDKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zw3 G8%6-T^AOMg delta 44 ycmaFE`h=DHG%qg~0}#}|xw4VFn^7o9KO;XkRX;tiLf<8|IJ+djVDkn>8%6*_DGts6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/finders.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/finders.cpython-312.pyc index 5492ce04e39ffd1d7972bbf98d1b06eefa04e3b0..6f57294dd61524882c21bb2628772d5af4fa7fdf 100644 GIT binary patch delta 52 zcmeyJ*PPFNnwOW00SLM`UERo?&McL!pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7G@( GyD$ux Gp*R50I}ud? delta 44 ycmexs{MDHIG%qg~0}#}|xw4Tvok=J~KO;XkRX;tiLf<8|IJ+djU~>;sp*R3ki4Ri% diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/storage.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/storage.cpython-312.pyc index 07202d525314fe875594d3e458ba21bf61df98ad..210e448371eb8c95296ed1caa1f9dacb9a137ff5 100644 GIT binary patch delta 54 zcmeyngt2ugBll@uUM>b8=-za7BX>NDRJMLber~FMdR~RTOKNd;Nq&L8yI+KExU19V I8Wu)B0O{iqga7~l delta 46 zcmZo&%J_E)Bll@uUM>b8sDE>1BX>NDP_lkTer~FMdR~RTOKNd;Nq)iR78XW70BKAQ Af&c&j diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/testing.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/testing.cpython-312.pyc index 2ff42210f265552c4ce6f7ab180be2cd3ab5a3b9..9e09fff0044f90a483133481d1643e9463619426 100644 GIT binary patch delta 52 zcmdnSwvUbbG%qg~0}ym?y1J2Dgh?t}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o{{ GDenx(7s(yN2g}zH_adt_5!RB3zMT`J1XAYPE diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/utils.cpython-312.pyc index bf1baf329558ac061959b456335d20ff99129e34..fb16b8833489472b7abf9eb25ee7c0f4c2b008d3 100644 GIT binary patch delta 52 zcmca6eovhHG%qg~0}ym?y1J43AEQ*Jenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`IR= G-JAf+V-ZCF delta 44 ycmca7eodVFG%qg~0}#}|xw4V_AEQvBenx(7s(yN2g}zH_adt_5!DeNq-JAeU$qz#S diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/__pycache__/views.cpython-312.pyc index 463ea65361e3111a08f3e4463dc2193239965f74..d96cbe3961ac2da7c3644d8147633627334f0eff 100644 GIT binary patch delta 52 zcmdnWx0jFmG%qg~0}ym?y1J3upH(VTKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$(i GNk#yrU=W}H delta 44 ycmdnXx0R3kG%qg~0}#}|xw4VlpH(PPKO;XkRX;tiLf<8|IJ+djU~>uUNk#xLz7C!M diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/management/__pycache__/__init__.cpython-312.pyc index 2fe7575d2ecfa90ca94a3a8397ab046b8555fbae..17fa045919ef50ae17ec6c94438f3b3e7016abd6 100644 GIT binary patch delta 49 zcmcb>c!QDqG%qg~0}ym?x;l~DSgKqhtNG%qg~0}ym?x;l~DSgJukBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8PV DftL^< delta 41 vcmaFJc$1O)G%qg~0}#}|xiXR4Sg1ljBR@A)KRvHP-zBv;yClD0VninZ5UdU! diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/management/commands/__pycache__/collectstatic.cpython-312.pyc index 7ee58fb10b0c09a0d7577f93e867fd0f9cf411f4..d2b531fbf476bc94c59bba24d244a3a9b6094489 100644 GIT binary patch delta 52 zcmZ2cwV{gpG%qg~0}ym?y1J432(whHenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>cF G?v?=F5E2#u delta 44 ycmdl`wW5mqG%qg~0}#}|xw4V_2(wVFenx(7s(yN2g}zH_adt_5!RD9D?v?;w1`reg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/management/commands/__pycache__/findstatic.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/staticfiles/management/commands/__pycache__/findstatic.cpython-312.pyc index c8a3302853357d4eb9aff4035cf8829e4edfc188..404351645bef0f08d9ba46213e49b770cee5e398 100644 GIT binary patch delta 52 zcmcaB{8X6xG%qg~0}ym?y1J2Di%F_UKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p@i GGA0T7k| delta 44 ycmaDVd{>zJG%qg~0}#}|xw4U4i%FtJL FKLC}_5Rm`? delta 43 xcmcb{a*l=jG%qg~0}#}|xw4Vlm{BM}KO;XkRX;tiLf<8|IJ+djU~&ZGKL8^~4vzo; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/contrib/syndication/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/contrib/syndication/__pycache__/views.cpython-312.pyc index bae0b8bc950e18279610b0bcde39bccf5a949b18..d3e419c2bcfa06d73da33d2c95924aa9acbe2735 100644 GIT binary patch delta 52 zcmcZ*cq5SeG%qg~0}ym?y1J2DmRTxOKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|omc GG*tk?SPbk)NBYpPpBt?~+=aU6Nm*@9r0&8}8~fnUS## E0E3JVz5oCK delta 42 wcmeBYZfE8`&CAQh00i}Ku1w^9A{3&Zk)NBYpPpBt?~+=aU6NlgnUk>%01-D0yZ`_I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/__pycache__/signing.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/__pycache__/signing.cpython-312.pyc index 2ff6d83300874361dbcf454d0c672181d5296f03..334e39246588e3fc10769e4e591ab8acee7ce607 100644 GIT binary patch delta 52 zcmX?`ay5nfG%qg~0}ym?y1J3uhC?bwKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%mU G7fk@o4H2RM delta 44 ycmcbbayEtgG%qg~0}#}|xw4VlhC?VsKO;XkRX;tiLf<8|IJ+djU~?kJ7fk?Ca}S^Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/__pycache__/validators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/__pycache__/validators.cpython-312.pyc index 3b61abfc880b4e7069a5e31eaeb92d9771400680..99fd4879695e431022ebc4fc56e4124218be18cd 100644 GIT binary patch delta 54 zcmX?pnDP8!M()$Ryj%=G(7oyEM($QNsd)X2{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Ii`Z170sc`EN&o-= delta 46 zcmX?qnDO{wM()$Ryj%=GQ2*x2M($QNp>X|-{M=Oi^t=jvm(=3ylKg_rtJqYd0ejC7 ANB{r; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/__pycache__/wsgi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/__pycache__/wsgi.cpython-312.pyc index ca6b8798680b211be7e50768894225a0214972ae..71d6fbc4f6ee769551aa0bb9380c85857b0587e7 100644 GIT binary patch delta 51 zcmX@cdXAO*G%qg~0}ym?y1J430Hai-enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8xC1 FF9D?v5qSUr delta 43 xcmX@ddW@C(G%qg~0}#}|xw4V_0HaW#enx(7s(yN2g}zH_adt_5!Q`imF99zG4|f0n diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/__pycache__/__init__.cpython-312.pyc index fc3e3ba2b2a2dc87308697cb1dd24498ad974c9a..86fab94e9ee114678d576082a5fd98e0fa40cbfd 100644 GIT binary patch delta 52 zcmdlZd_Dy G`iyhoV(G%qg~0}#}|xw4V_A*)cdenx(7s(yN2g}zH_adt_5!DcqLearwsJr2wO diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/__pycache__/utils.cpython-312.pyc index e5190c7fc15b8155ae556eb29ba5a36eec403dda..bfcc7e0cacead2c3b62973575c62cea8b29afcc8 100644 GIT binary patch delta 52 zcmdnawx5mrG%qg~0}ym?y1J43KBH8Eenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;>n G){FqPsSy3J3UE~&-YCHV#V?tT%v;jT`b JcQ8J80|4IP5^ewh delta 46 zcmZ2Jk#YV+M()$Ryj%=GQ2*x2M(){+LJ9gA`MIh3>3J3UE~&-YCHV!L4=_G=0{~$! B5NrSd diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/db.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/db.cpython-312.pyc index 2020d749637b82390ff899d5807d094e4b271f37..f227701b85bd5fb7b04b3ada1f4afce72f44d86b 100644 GIT binary patch delta 52 zcmbQ8xj2*iG%qg~0}ym?y1J2jIkQxnenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-@0 G*9`#6MiK}B delta 44 ycmZ3SIXjd4G%qg~0}#}|xw4UaIkQllenx(7s(yN2g}zH_adt_5!R9l}*9`zq{165J diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/dummy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/dummy.cpython-312.pyc index 6095674fc7b3ccdfed07b4ec707eea4b45e3224f..6849ce84de675bf9dd00e4fe404dd2c409d95384 100644 GIT binary patch delta 52 zcmeyx-z30&nwOW00SLM`UERn%l~F2FKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4avV G4>ka?N)WXG delta 44 ycmZn?_{GnCnwOW00SM~fT-nGyl~E{BKO;XkRX;tiLf<8|IJ+djVDm0U4>kZfG7hr< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/filebased.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/filebased.cpython-312.pyc index 4bc547c1ebcc83cec9c315c088a496be80e5d081..f461274b3840eee55bf8ec13a2fb5707f5f9993e 100644 GIT binary patch delta 52 zcmdn*ecYS-G%qg~0}ym?y1J433zJl?enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G^D GbxHu$tPy5KO;XkRX;tiLf<8|IJ+djU~@1trxXB0G7d-p diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/memcached.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/cache/backends/__pycache__/memcached.cpython-312.pyc index ba559e8ec994898cd17f6c80fc3c371e4b5fd5d2..d45c844cafa0e4a50b80fb9a4fd63a8b7472456f 100644 GIT binary patch delta 52 zcmX@(b;XPOG%qg~0}ym?y1J43BePVlenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G&v GJ4FE5M-d(055K&MwI>(0BKX&<%HW+T6(0 G!V3VJqYy{{ delta 44 ycmeBGXjR}o&CAQh00i}Ku59E^VG@ec&&bbB)lbi>(055K&MwI>*xbp~!V3T=i4H~p diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/database.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/database.cpython-312.pyc index b961f112a24b1aafc07fa6c89c5958f8732e7b8c..61d222b035445700741ca959dc6e61af9408def4 100644 GIT binary patch delta 52 zcmeBRo503>nwOW00SLM`UERn%mr*K3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a{d GKSltV#SlsW delta 44 ycmbQh*1^VonwOW00SM~fT-nGymr*E2KO;XkRX;tiLf<8|IJ+djVDlkHKSls1OAbf? diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/files.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/files.cpython-312.pyc index e40ca5cdd0e474060588150d19e4f1bbc6371408..327bd39ef6c5dcb22b6c63683aa83db599829c39 100644 GIT binary patch delta 52 zcmbQqzL1^!G%qg~0}ym?y1J2Dj7cg{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pj? G8Y2LV+z)pE delta 44 ycmZ3;K9imMG%qg~0}#}|xw4U4j7ca`KO;XkRX;tiLf<8|IJ+djV6!z-8Y2K4iVbxD diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/messages.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/messages.cpython-312.pyc index 6444335d32f8bca747b23d950c0085f5ebfcbbcc..ac8f1e021a1f15711f6baaa560362d52affebabb 100644 GIT binary patch delta 52 zcmX@2c1Df+G%qg~0}ym?y1J1&mPsl_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%3R GDFFbr*bxr^ delta 44 ycmX@3c0`T)G%qg~0}#}|xw4TvmPsf^KO;XkRX;tiLf<8|IJ+djU~?1GDFFaJmJba8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/model_checks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/model_checks.cpython-312.pyc index 0c1ee442367395b35c0e1a6c7867e08a40ce322f..f71548af5a6c0aacd6d695f3331465821201fa56 100644 GIT binary patch delta 52 zcmcZ{bUTRqG%qg~0}ym?y1J43Cx=vqenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GSF GTLl2%cM(wl delta 44 ycmcZ|bUBFoG%qg~0}#}|xw4V_Cx=jienx(7s(yN2g}zH_adt_5!Dcy5TLl1MRS!=9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/registry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/registry.cpython-312.pyc index 1e656df48d92f3112f8334731fe276f971a405dd..813aacfff258bd617cfbf0e583aa56d717527cdc 100644 GIT binary patch delta 52 zcmcbrdRLYEG%qg~0}ym?y1J2j4wF=henx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?H_ GG6Dd^I1v8; delta 44 ycmcbsdR3MCG%qg~0}#}|xw4Ua4wF!fenx(7s(yN2g}zH_adt_5!RCWZG6Dce{to>B diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/templates.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/templates.cpython-312.pyc index 4d6e9a4dcf164c0745cc329a59ac88b95265f1db..0d9d6a6a0a8c6ced808ab9f5a84d2619a59e4c58 100644 GIT binary patch delta 52 zcmZpX?~&&|&CAQh00iBeu5RS!V3A7I&&bbB)lbi>(055K&MwI>(0BKX&<%HW+N{bF G&kX>KiVti6 delta 44 ycmeB?Z;|Id&CAQh00i}Ku59GyU=fPd&&bbB)lbi>(055K&MwI>*sRME&kX<^NDXQL diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/translation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/translation.cpython-312.pyc index 0736391245bc789d8f6642128efb1cfa17e472cd..084eaeea5b7f41eb09cfbd0d33184cc485e07d03 100644 GIT binary patch delta 52 zcmZpX?vds`&CAQh00iBeu5RS!WR*(S&&bbB)lbi>(055K&MwI>(0BKX&<%HW+N{PJ G#{mF~eGg^; delta 44 ycmeB?Zjt6b&CAQh00i}Ku59GyWEG0n&&bbB)lbi>(055K&MwI>*sRAI#{mEvTMc9Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/urls.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/__pycache__/urls.cpython-312.pyc index a498e9af8212128980e037b2fae9441e541d8cea..6cc043b69dbccf65e912b7f9ee38ad24348de448 100644 GIT binary patch delta 52 zcmbQLJXe|fG%qg~0}ym?y1J3uhDj%l# G4L<;za}U-4 delta 44 ycmbQMJXM+dG%qg~0}#}|xw4VlhDj(wKO;XkRX;tiLf<8|IJ+djU~?jq4L<-Vc@5M6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/compatibility/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/compatibility/__pycache__/__init__.cpython-312.pyc index 0311ecd1c34ffa061408aa10d7195293e2cacf7a..08d06eeb974d6c4bb6b606f8d09a44e0a7f4b252 100644 GIT binary patch delta 49 zcmX@jc$ty=G%qg~0}ym?x;l~DSgJ@rBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8(j Ddb1Dc delta 41 vcmcc2c$$&>G%qg~0}#}|xiXR4SSU+BBR@A)KRvHP-zBv;yClD0Vnj6n3m6UN diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/compatibility/__pycache__/django_4_0.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/compatibility/__pycache__/django_4_0.cpython-312.pyc index c592b8c4058ade8ac3d4786e4c3be39b37633642..fbdf3245d96716e70087d01d7eb4428e940ba111 100644 GIT binary patch delta 52 zcmaFF{)(OZG%qg~0}ym?y1J1&oJp!gKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$ov G9wPv?^$?~2 delta 44 ycmaFG{)nCXG%qg~0}#}|xw4TvoJlB0KO;XkRX;tiLf<8|IJ+djU~>&q9wPuga}J~c diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/security/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/security/__pycache__/__init__.cpython-312.pyc index 56d1b3db3406c8e033df4dfeffa2fc66cd884ac0..9b686841c4de021531b0fad66f301bc1cadf1059 100644 GIT binary patch delta 49 zcmX@cc#e_#G%qg~0}ym?x;l~DSSnXPBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7)H Dcs&o) delta 41 vcmX@dc#M(zG%qg~0}#}|xiXR4SSVFLBR@A)KRvHP-zBv;yClD0Vni7L2^tO3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/security/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/checks/security/__pycache__/base.cpython-312.pyc index da527cfb52c9b983906c74d1c81f2f7291b568c4..2fb254c35ccc458d820d68092328880ca8755f26 100644 GIT binary patch delta 52 zcmeB=o*vD8nwOW00SLM`UERq2Sx72VKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|sTE Gy%Ye-1Q8$r delta 44 ycmbOp-5&7^ GIX3{V(hz6> delta 44 ycmX>ky-S+=G%qg~0}#}|xw4TvjY%j~KO;XkRX;tiLf<8|IJ+djU~@N$t` GuM7aG^$;}x delta 44 ycmbPfJJFW=G%qg~0}#}|xw4Tvok=KMKO;XkRX;tiLf<8|IJ+djU~>->uM7Y*OAa#t diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/images.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/images.cpython-312.pyc index b3c00f576b96fd9050891e3410020df9001b3488..944b5b6badcfb9c5dac17f831d0ebe66fe95a3ab 100644 GIT binary patch delta 52 zcmX>kc}kM|G%qg~0}ym?y1J2Dm`N&8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n;- GBrX7?DG(e0 delta 44 ycmX>lc}SA`G%qg~0}#}|xw4U4m`Ny7KO;XkRX;tiLf<8|IJ+djV6z3&BrX6jKMooI diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/locks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/locks.cpython-312.pyc index 03786ce7bc869e64fcc5919498b5d0cd3f8d8333..dbc2f77060f590857dfd718a9b384ab0974b2c18 100644 GIT binary patch delta 52 zcmZ3dyiJ+=G%qg~0}ym?y1J43Agfe@enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>1u G7q|hsw-KlS delta 44 ycmdm{yiS?>G%qg~0}#}|xw4V_AgfS>enx(7s(yN2g}zH_adt_5!RBYI7q|gI?GL5^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/move.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/move.cpython-312.pyc index 7b0162893d1bf31e9cf025fb6e14657337eb78e9..3baf23efcea8120d32278e8b5125b03a74c938a7 100644 GIT binary patch delta 52 zcmeB{oh-|JnwOW00SLM`UERoS#4HuBpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAr88 Gh8qBrqz|6} delta 44 ycmbO%+bzp|nwOW00SM~fT-nHN#4Hr9pOK%Ns-K=$q3@DfoL!P%usNLBh8qAO`VE}` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/temp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/temp.cpython-312.pyc index e8ee200f0bff9e13d7e7e19558f66ddf8fba61f6..2e1784122408401180e572444e8ffcff373ce2bd 100644 GIT binary patch delta 52 zcmbOzJyV+dG%qg~0}ym?y1J2Dja@2UKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|prC G9~%IaCl90m delta 44 ycmbO!JyDwbG%qg~0}#}|xw4U4ja?{QKO;XkRX;tiLf<8|IJ+djV6!*79~%H7eGQ@j diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/uploadedfile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/uploadedfile.cpython-312.pyc index 854e9eebccbf4273bf1ca14a3404bd1ef23b5fbb..b28cd9fa4d39d878f3cf793666486c655a70aba8 100644 GIT binary patch delta 52 zcmZ2#u-1V4G%qg~0}ym?y1J2DfJG`@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pcN G4`BeJ{1Afx delta 44 ycmZ2$u+)J2G%qg~0}#}|xw4U4fJG=?KO;XkRX;tiLf<8|IJ+djV6!R94`Bc=N)CYl diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/uploadhandler.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/uploadhandler.cpython-312.pyc index 5a6d6b1445a5eb7f8d06edfca793f0f1e9145eb0..ee3d8e6de1c3fb7386c5cc69d2a88fe2d135844f 100644 GIT binary patch delta 52 zcmZ4Dv&M(}G%qg~0}ym?y1J436_Zqkenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`I&N GS!Dpo77(BS delta 44 ycmZ4Ev&4t{G%qg~0}#}|xw4V_6_Zecenx(7s(yN2g}zH_adt_5!DfDDS!DoA><*p) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/__pycache__/utils.cpython-312.pyc index f6faec7e9b7ff56e091dee5d780e4c66bbcce4a7..c4d22e5b106a249e7f980d1ac0ba28c2bf65700c 100644 GIT binary patch delta 52 zcmcbq^H7KTG%qg~0}ym?y1J4336oTUenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H8I G2w?!vJ`mvm delta 44 ycmaE;b5n==G%qg~0}#}|xw4V_36oHSenx(7s(yN2g}zH_adt_5!Dde82w?zHG!EYY diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/__init__.cpython-312.pyc index 3aadc7475a75d3a2355bbb0fb46c549304720312..6f1d9486fa7abf9959964c5e39cbd18827fee964 100644 GIT binary patch delta 52 zcmX@ld!3j2G%qg~0}ym?y1J3Oo>?keKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aRr GV`c!gL=c<+ delta 44 ycmcc4d!Cp3G%qg~0}#}|xw4VFo>?eaKO;XkRX;tiLf<8|IJ+djVDl1YV`cz7k`9^x diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/base.cpython-312.pyc index f4dbb64a7a591237533da788d436ba7b0bc86c6f..0fe9f5dbccf20bc3de876db0a942ae666d7b0bde 100644 GIT binary patch delta 52 zcmeBinBu^FnwOW00SLM`UERpNm`N&KKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4ZUl GA6Wpif)Mcl delta 44 ycmbQ@(Br^;nwOW00SM~fT-nIIm`NyJKO;XkRX;tiLf<8|IJ+djVDkwkA6Wo9*beUi diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/filesystem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/filesystem.cpython-312.pyc index 108abebdc1fa41f96fe2c5c432b78aa43b28ed1d..8e83f03f9470860967096cb3c2fe8b6abfec5673 100644 GIT binary patch delta 52 zcmdlNdMuRtG%qg~0}ym?y1J43EsIpHenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GK# GEvf+6dl8NR delta 44 ycmX>Wx-XRbG%qg~0}#}|xw4V_EsId9enx(7s(yN2g}zH_adt_5!Db=WEvf)n(GQFO diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/handler.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/handler.cpython-312.pyc index 1e4272d3f3ef51f7b8a05d12a3124515e61818ee..cc83c7050f2104515c07e6f9b51d115de8eff00d 100644 GIT binary patch delta 52 zcmX>veqEgVG%qg~0}ym?y1J3Oh*2s_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&iL G0~Y|c_zKO;XkRX;tiLf<8|IJ+djVDofF2QC0VCJv(j diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/memory.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/files/storage/__pycache__/memory.cpython-312.pyc index a7eea12462839af2783fb4bc565576c0e1dac1d3..1492bbecb8c3109ba849a1fdaf07562368e77eb1 100644 GIT binary patch delta 52 zcmcax{* GXA1!23lYlz delta 44 ycmaD_ez%Dy GpM?S8kP^TE delta 44 ycmexq{Lz^EG%qg~0}#}|xw4V_A*)clenx(7s(yN2g}zH_adt_5!DcqL&%yv+VGq9m diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/handlers/__pycache__/wsgi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/handlers/__pycache__/wsgi.cpython-312.pyc index 66e895a40bc3f401a2d634477f383aed95847ae3..9c6dbf667e922e63fffea1e4bd9aef27441a0ff7 100644 GIT binary patch delta 52 zcmdn#b(055K&MwI>(0BKX&<%HW+MK~S Gg9!kOD-YlR delta 44 ycmeC+XyD*J&CAQh00i}Ku59G?W)uq7&&bbB)lbi>(055K&MwI>*j&Ikg9!i{$qn8B diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/__init__.cpython-312.pyc index 74f359682f25e6e39099fe3023984ccbb9743a93..bf01b748b86b71a7b3a7b7b8a2155ac783212f25 100644 GIT binary patch delta 49 zcmX@Yc!rVtG%qg~0}ym?x;l~DSSnjTBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7K1 DcR>%# delta 41 vcmX@Zc!ZJrG%qg~0}#}|xiXR4SSVRPBR@A)KRvHP-zBv;yClD0Vnhi52u=;k diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/base.cpython-312.pyc index 8c39c49ac65664109a3fa0aa71fbeba64c1c9dd1..01f7b322fbc5dd1b25c5f29c50a46505097c7c4f 100644 GIT binary patch delta 52 zcmX>na!rK$G%qg~0}ym?y1J1&h)F74KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&f) GeRcq`s1W!7 delta 44 ycmca6a!!Q%G%qg~0}#}|xw4Tvh)F13KO;XkRX;tiLf<8|IJ+djU~@UseRcplCJy!h diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/console.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/console.cpython-312.pyc index b8be9540a96c19be02f72103a4f1f3192f23f28a..e08c34c2079939a4a4ca0ea5d0731de58fec79fd 100644 GIT binary patch delta 52 zcmew-(k9A%nwOW00SLM`UERp-#w3-cpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kkc Gngal-2M_@O delta 44 ycmZn@{U^eGnwOW00SM~fT-nI&#w3)apOK%Ns-K=$q3@DfoL!P%usNGangakb#|{4g diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/dummy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/dummy.cpython-312.pyc index fdfc2084a3e00346dfa3afd0347699b1f888efce..e3042ec0280af5745ca81c7620985ad0cb31419a 100644 GIT binary patch delta 52 zcmX@ldYzT~G%qg~0}ym?y1J3uj!`N@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&AV G2_pcgSr9@1 delta 44 ycmcc4dY+a0G%qg~0}#}|xw4Vlj!`HeMGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oM$ G6DI(ti4ZgZ delta 44 ycmX>myHA$;G%qg~0}#}|xw4U4o>eGCKO;XkRX;tiLf<8|IJ+djV6zKr6DI&N&kiyG diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/locmem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/locmem.cpython-312.pyc index 34f485aabae15526a950570b993d3585365aa372..b74585e5c7e70ae83686b0bc32a284f9a4dba447 100644 GIT binary patch delta 52 zcmbQovy6xPG%qg~0}ym?y1J2j6O&Y?enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_L` G{>%WV!VtCq delta 44 ycmZ3+GmnS+G%qg~0}#}|xw4Ua6O&M)enx(7s(yN2g}zH_adt_5!RG5s{>%U}unx2U diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/smtp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/mail/backends/__pycache__/smtp.cpython-312.pyc index 41b5b3047123776c1addadd28ba86ccb072cf411..fd092d453a39690dc0023d35eab618e28bbba89a 100644 GIT binary patch delta 52 zcmexr{@0xQG%qg~0}ym?y1J1&mrW{NKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%7_ GwkQD7mJwtC delta 44 ycmexs{?(lOG%qg~0}#}|xw4TvmrW>MKO;XkRX;tiLf<8|IJ+djVDlulY*7GKd=Fv( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/__init__.cpython-312.pyc index 64fdb7f0c386f5a239113794416e32d7a687ecd9..e41bcebca44c299339be0088592dea7acfd007b3 100644 GIT binary patch delta 54 zcmeBP#5j2oBll@uUM>b8=-za7BexcdREB;=er~FMdR~RTOKNd;Nq&L8yI+KExU17< Ica|eQ0Lb8sDE>1BexcdP=bC&er~FMdR~RTOKNd;Nq)g*f0iRY08-cw AZ2$lO diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/base.cpython-312.pyc index 3b228f8e7633f54a2d3b449f4104528c4263750b..edf013b77dacbf0b087b9e92dc06202088ea8cef 100644 GIT binary patch delta 54 zcmcckiSgzqM()$Ryj%=G(7oyEM(!+DsTBQ;{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I?X0JY0TVhCMgRZ+ delta 46 zcmccliSgnmM()$Ryj%=GQ2*x2M(!+Dp&0#){M=Oi^t=jvm(=3ylKg_r{j8^o0gcfS AL;wH) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/color.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/color.cpython-312.pyc index b543bb2db358b14093f797a89f24c8071c72eb41..928407fae410fbaffd63a3811248737739ba19ab 100644 GIT binary patch delta 52 zcmbO$zf_+4G%qg~0}ym?y1J2Dn^h`RKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o4w GC>H>m!4KO2 delta 44 ycmZ1~KUbdnG%qg~0}#}|xw4U4n^h=QKO;XkRX;tiLf<8|IJ+djU~>R#C>H=I&kflC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/sql.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/sql.cpython-312.pyc index a5db5160b288cfe35e21deb9e28fbb31383cb8bb..b3ccd8fc70103c4fee76a7f9cb9fc395ad644f55 100644 GIT binary patch delta 52 zcmZ1?v_^>gG%qg~0}ym?y1J43FQZhlenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G3q GE_ML3KM))M delta 44 ycmZ1@v_y#eG%qg~0}#}|xw4V_FQZVjenx(7s(yN2g}zH_adt_5!Db~UE_MJqO%56W diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/templates.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/templates.cpython-312.pyc index 6884ce9d37e0a316a4727b82f56ed66a4369e35b..bb28ee680b4ff65c208da5a32becc5c9046251d5 100644 GIT binary patch delta 54 zcmaFe&-l5Yk^3|+FBbz4bZ@%4k=uzwDpNlrKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw IJV%c`0PtrK{Qv*} delta 46 zcmey|&-l8Zk^3|+FBbz4)W5m1k=uzwC{aHnKQ~oBJ+DIFCAB!aB)?#DI!BK^0C1fT A`v3p{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/__pycache__/utils.cpython-312.pyc index bede180e95532fa0e24c62bdb90642bfc3cb96cf..8940583ad7714d91ebb06d377d2ea3aed13c7020 100644 GIT binary patch delta 52 zcmbPeKhvK3G%qg~0}ym?y1J2j1G7}Benx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@0x GN2CF_-Vuoa delta 44 ycmbPfKhd81G%qg~0}#}|xw4Ua1G7-9enx(7s(yN2g}zH_adt_5!RD*XN2CEiln;jh diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/__init__.cpython-312.pyc index 01c5c0353cc65bb35f6a8f5e74da1efa84e517e7..298cb5b966aab91773262b10e3540c94819bfbea 100644 GIT binary patch delta 49 zcmX@bc!`nwG%qg~0}ym?x;l~DSgKGzBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7uD DdNmK^ delta 41 vcmcb_c#4txG%qg~0}#}|xiXR4SSV9JBR@A)KRvHP-zBv;yClD0Vnh`H3bGC2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/check.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/check.cpython-312.pyc index 7187b8ab0ac7c37d950b880a28b50ba75668091d..1d2557fec041856cf36ad6bb12c3b53fdf671d7e 100644 GIT binary patch delta 52 zcmbOvIZKlJG%qg~0}ym?y1J3upG7K9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$&X G8V3NH@(tJ8V3L;unpA! diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/compilemessages.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/compilemessages.cpython-312.pyc index a9ba5812f905dc84278f5242b31a92d9e0bf0081..5416d71248d44828f8f9f49115b1679f1faf0c08 100644 GIT binary patch delta 52 zcmez4+TzB2nwOW00SLM`UERo?#w1mtpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7Hq7 GQUL(Mr4b_l delta 44 ycmZp1`{T-enwOW00SM~fT-nH-#w1jrpOK%Ns-K=$q3@DfoL!P%u(_M5QUL%+1rH$r diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/createcachetable.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/createcachetable.cpython-312.pyc index bfc6f61885b8b31df3394d4d541afb70d3293a49..5a05a437181e136e3539848a137286bbdde7b5de 100644 GIT binary patch delta 52 zcmcbo`%IVnG%qg~0}ym?y1J431+!G8enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Htd Gn?eBAWD$@6 delta 44 ycmaE+drz19G%qg~0}#}|xw4V_1+!40enx(7s(yN2g}zH_adt_5!De2Tn?e9s3J;C| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/dbshell.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/dbshell.cpython-312.pyc index 56f0a834d66b781063ef0862e10709ce06cfdf5d..879d6acfdfafdbcc803bf9cc25f9aadaf87638f4 100644 GIT binary patch delta 52 zcmew^@Lz!YG%qg~0}ym?y1J435|dPcenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_X~ G9jpM;)e-Ul delta 44 ycmew_@LhoWG%qg~0}#}|xw4V_5|dDdenx(7s(yN2g}zH_adt_5!RGHw9jpLWyASXH diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/diffsettings.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/diffsettings.cpython-312.pyc index 5035b6ec828a6ce12d43282f0a41de3f28b23750..4626a6bccd409616912ab4a7af86756ba03fe2dd 100644 GIT binary patch delta 51 zcmaE&_(qZYG%qg~0}ym?x;l~ji&Uw8Mt*LpetKSozDsIxc1eDLzPn$9Zn&${Wob5e%;G%qg~0}ym?y1J2jKC@Jwenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;+Q Gty}=RR1rD= delta 44 ycmX>pb5Mr+G%qg~0}#}|xw4UaKC@7oenx(7s(yN2g}zH_adt_5!R8~(ty};?dJi}N diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/inspectdb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/inspectdb.cpython-312.pyc index 66d994c6c80d3bb66f7ffbc8af090744385272e7..cc9b0876546af09f61ea83f1b0addd1bd6afcd0b 100644 GIT binary patch delta 52 zcmeCGm{h@inwOW00SLM`UERpd$RbswpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v{{bj GjX40bfe_*V delta 44 ycmbPK(N)2HnwOW00SM~fT-nIY$Rd=bpOK%Ns-K=$q3@DfoL!P%uvv}ejX3~49}eIE diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/loaddata.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/loaddata.cpython-312.pyc index 338e273170792a14fc8fb1f2e9cff3d888dedb93..bf71037ce93eb9b468c642103f073286624e84f8 100644 GIT binary patch delta 54 zcmZpj%-B1bk^3|+FBbz4bZ@%4k-LLks!%^8KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_CG IQuYUq0Mri>ApigX delta 46 zcmeC3%-A}ak^3|+FBbz4)W5m1k-LLkC{sTpKQ~oBJ+DIFCAB!aB)?$uTJ{Hy09XAG A9{>OV diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/makemessages.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/makemessages.cpython-312.pyc index 66ff1cb8de22772a7b989efb82c5b45436052538..777cba3b9177c2afa1f95384fc233cdf2d74f7d8 100644 GIT binary patch delta 54 zcmeC0z%*$B6ZdIeUM>b8=-za7BlmY^sZ#xn{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IA}rsU0pcSPS^xk5 delta 46 zcmbOb8sDE>1BlmY^p3J3UE~&-YCHV#V?tT%v;jT`b JSvWri000^q6DR-x delta 46 zcmeynnepppM()$Ryj%=GQ2*x2M(*bvLizd``MIh3>3J3UE~&-YCHV!Lc{o1?005E6 B5heft diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/migrate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/migrate.cpython-312.pyc index c5ba78f5b5ca55fd33de11bad973892909e42005..8fdcee43e637bc7c2d3235b276a09df6a0b820d1 100644 GIT binary patch delta 54 zcmbQenQ`%EM()$Ryj%=G(7oyEM($WnsRI3s{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IRh)_e0OCy%iU0rr delta 46 zcmZ3ynQ``JM()$Ryj%=GQ2*x2M($Wnp$z?u{M=Oi^t=jvm(=3ylKg_rO`M7W0Awo< AhyVZp diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/optimizemigration.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/optimizemigration.cpython-312.pyc index 6e3164537dfa9cd500f590ec0d49f55ecfc96ebf..33edc668f5f4a904984657f10eab4b22f654ed7a 100644 GIT binary patch delta 52 zcmaE%`$3ocG%qg~0}ym?y1J3OmszSxKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a*( GJ7ECN#Sv5h delta 44 ycmeyM`$CudG%qg~0}#}|xw4VFmszMtKO;XkRX;tiLf<8|IJ+djVDlzsJ7EA*n-5X| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/runserver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/runserver.cpython-312.pyc index d7b34c5f7bae38f5f04f129930cbb2aecffa528f..6fd1fb84bec55045eba1c7546ec7783bb4f490aa 100644 GIT binary patch delta 52 zcmca&cgK$VG%qg~0}ym?y1J43469U;enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?0~ G*^&U)dlCBp delta 44 ycmca(cg2qTG%qg~0}#}|xw4V_469Iqa8`i(G%qg~0}ym?y1J1&hFPjiKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%p> G85RJq$`I`U delta 44 ycmX>ra8!W%G%qg~0}#}|xw4TvhFK_2KO;XkRX;tiLf<8|IJ+djU~?n$85RIJNDk`& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/shell.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/shell.cpython-312.pyc index ec2ca6b1e6cf76d37b8dfe83e7040229837e4ff7..f9eb81f264c9787cb4f54378d47dbc0a3c1b3e02 100644 GIT binary patch delta 52 zcmaE(`bCxdG%qg~0}ym?y1J2@l|?E~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oc` GDLw$X&=9!* delta 44 ycmeyO`bL%eG%qg~0}#}|xw4U)l|?8`KO;XkRX;tiLf<8|IJ+djV6zs>DLw!~eh#+) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/showmigrations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/showmigrations.cpython-312.pyc index 6dd3236ce4792b9ab0b1eab12cb93a0b21cf4251..2c2c591d682613cece47c9504c041891d656302c 100644 GIT binary patch delta 52 zcmbPkJ>Q!9G%qg~0}ym?y1J3uhgGUvKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%s4 Go&*4^ArL|U delta 44 ycmbPlJ>8o7G%qg~0}#}|xw4VlhgB$FKO;XkRX;tiLf<8|IJ+djU~?g>o&*3jHx57m diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/sqlflush.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/sqlflush.cpython-312.pyc index e1a8c35366997935139ef6ca89e57dca1d839c13..3c1313a9b45282b4c26d49f8cfe46b4fcc8dd34b 100644 GIT binary patch delta 52 zcmeC?oy^O9nwOW00SLM`UERpNiAkzZKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dre GJoJ GQCtAE^AQpN delta 44 ycmdlivs#AxG%qg~0}#}|xw4Ua3$swRenx(7s(yN2g}zH_adt_5!RDLHQCt8$sSgkU diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/sqlsequencereset.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/sqlsequencereset.cpython-312.pyc index 874b90604e2cfe5c042ecd6e76cfa00c41294d84..4929760781e1890bdb1244f44bb45334fa81d2c6 100644 GIT binary patch delta 52 zcmZ3=x0a9lG%qg~0}ym?y1J1&f=Q}UKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%#l G1{MIJs}P0& delta 44 ycmZ3>x0H|jG%qg~0}#}|xw4Tvf=Q@QKO;XkRX;tiLf<8|IJ+djU~?_g1{MG$~t GnKA&c`Vd_J delta 44 ycmbOcJRz9-G%qg~0}#}|xw4VlmQAQoKO;XkRX;tiLf<8|IJ+djU~>|inKA%5U=CXV diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/startapp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/startapp.cpython-312.pyc index 7d24e1641e66eea07bd8e62c3399976eb8598f6c..2d85217b16bbfd909758646a83496c260de2fbef 100644 GIT binary patch delta 52 zcmbQwv7CeZG%qg~0}ym?y1J3ukx8mhKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%OY GK}Gnb`8M* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/test.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/test.cpython-312.pyc index c2345baf059cb9c4878cedcc2a72b86a034e6b98..e99453f5c6ace4f15c29bda552dbf38f304d4545 100644 GIT binary patch delta 52 zcmca3^+byMG%qg~0}ym?y1J2Dky$ENKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o-( G92Wqwtq=$R delta 44 ycmaDNbw`T(G%qg~0}#}|xw4U4ky$8JKO;XkRX;tiLf<8|IJ+djV6z*u92WpPI}Qc_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/testserver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/management/commands/__pycache__/testserver.cpython-312.pyc index 8e658bfa9b324d6f7f5e157badc8c2f76286a54d..69143980741427cc6c7cfd97016c2d6859c9c367 100644 GIT binary patch delta 52 zcmX>jbVZ2!G%qg~0}ym?y1J3Om07A-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4alH GRjdHG(h)5H delta 44 ycmca2bVi8#G%qg~0}#}|xw4VFm02iTKO;XkRX;tiLf<8|IJ+djVDl>GRjdF&kPj;W diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/__init__.cpython-312.pyc index 777a3e3854692dab36edf00288c5dda98dad439f..148d7193181cc47d62f2cf5ef6316f1816559206 100644 GIT binary patch delta 52 zcmaFl`O1^~G%qg~0}ym?y1J2Dm{lrMKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|nD%)nwOW00SM~fT-nI2&LR}6pOK%Ns-K=$q3@DfoL!P%u-S)Ys}KM-t`3X< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/jsonl.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/jsonl.cpython-312.pyc index ea2c3ecedc02ff4d44629b0bf480e2e1e2dc2f61..b47ae0f956a76c6bc11a710100b423aba1ffc5f5 100644 GIT binary patch delta 52 zcmew?`CF3vG%qg~0}ym?y1J2jC9_nTenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=E$ Gx|{&b=MhT) delta 44 ycmew@`B{?tG%qg~0}#}|xw4UaC9_bRenx(7s(yN2g}zH_adt_5!RB+!x|{$~4G&2G diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/python.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/python.cpython-312.pyc index 2f0d0d67c8fc0763e2f32ea9e4fcb5c50a625657..7d069406d8a1eae945182bf5e0a8cde0f946b073 100644 GIT binary patch delta 52 zcmeD4ndZZNnwOW00SLM`UERpNj!7zAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d3& GXJr7olo22R delta 44 ycmbQ{)91r|nwOW00SM~fT-nIIj!7t9KO;XkRX;tiLf<8|IJ+djVDn`rXJr6EvJV~r diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/pyyaml.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/pyyaml.cpython-312.pyc index 7e78124477f920255be5055a7d55e5dc08ec3645..faee56331ceba79a1e2351b45102ba2730d308ba 100644 GIT binary patch delta 52 zcmX@0a6*CmG%qg~0}ym?y1J3Oi&-jNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dXC GnLGfvu@NNz delta 44 ycmX@1a6p0kG%qg~0}#}|xw4VFi&-dMKO;XkRX;tiLf<8|IJ+djVDozBnLGeMhYuqF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/xml_serializer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/serializers/__pycache__/xml_serializer.cpython-312.pyc index a9e0d9fa74c60e641beb399ecc0a991a04ba4c97..22c0cf6d496efe8442b1391fe8fb96cb936c2cc9 100644 GIT binary patch delta 54 zcmZoY!q|I+k^3|+FBbz4bZ@%4k^2_2RK9*jer~FMdR~RTOKNd;Nq&L8yI+KExU19V I@63F00P&p?XaE2J delta 46 zcmeA@!q|F*k^3|+FBbz4)W5m1k^2_2P`Z9ber~FMdR~RTOKNd;Nq)iR|IB=G0B{=+ AW&i*H diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/servers/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/servers/__pycache__/__init__.cpython-312.pyc index 5b4374e15fecb08a086f12ae94f365da9b3733a2..5034dca0989fa7e3d8008904940551321b2ab45f 100644 GIT binary patch delta 49 zcmdnTc#M(zG%qg~0}ym?x;l~DSSnRNBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7}M DbWIPm delta 41 vcmX@cxQ~(hG%qg~0}#}|xiXR4SSVIMBR@A)KRvHP-zBv;yClD0VniMQ1?mm5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/core/servers/__pycache__/basehttp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/core/servers/__pycache__/basehttp.cpython-312.pyc index 34fb21ac7e7d0d7de05f91e9c7fa30c2b9eec3e2..f6ee3dc9261a10e319f9729f4924476a9bed56f6 100644 GIT binary patch delta 52 zcmbOpH$RU1G%qg~0}ym?y1J3ugk36CKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%a^ GF?9g6mJsm( delta 44 ycmbOqH$9H~G%qg~0}#}|xw4Vlgk30BKO;XkRX;tiLf<8|IJ+djU~?qR1m2E delta 44 ycmcb^dxe+#G%qg~0}#}|xw4VFmsu!SKO;XkRX;tiLf<8|IJ+djVDlzsEoJ~eVh*PO diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/__pycache__/transaction.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/__pycache__/transaction.cpython-312.pyc index 42a4153ca123eb4f34473df1a259c89d196f7b7f..95bab8553d81c5c7fdce0f88098a0900024bf035 100644 GIT binary patch delta 52 zcmbOew6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n^< G9UTC&vJm3{ delta 44 ycmZ1yHz$t!G%qg~0}#}|xw4U4nMo*2KO;XkRX;tiLf<8|IJ+djV6z9)9UTBXa1P-B diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/__pycache__/utils.cpython-312.pyc index 8477a13e6787986ce81bfacbaf59cfd46e5da69b..0b2ed7998a4bd95bb579f40b75fd416190c3f13e 100644 GIT binary patch delta 52 zcmeB+nij=h91kG? diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/__init__.cpython-312.pyc index 533384efc72a3cc11e60b19f3c5c3e9691f5d647..23024dc5fcef78203b52d18537c92b8f9af29dfa 100644 GIT binary patch delta 49 zcmdnXc$AU*G%qg~0}ym?x;l~DSSm$7BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8kc DbI%X3 delta 41 vcmX@gxR;UpG%qg~0}#}|xiXR4SSUt6BR@A)KRvHP-zBv;yClD0Vni+g1%wT* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/ddl_references.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/ddl_references.cpython-312.pyc index 421c7ceb33e46c9453b13ad9d485e6dbfa732d55..0cc2341f3baab6b3df2ea3f1425343fa5b0b56b1 100644 GIT binary patch delta 52 zcmdl~w5y2wG%qg~0}ym?y1J2j1(Q^kenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?a0 Gxn=;@q!H)< delta 44 ycmdm0w5f>uG%qg~0}#}|xw4Ua1(Q&cenx(7s(yN2g}zH_adt_5!RE6}xn=-bIuGUm diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/signals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/signals.cpython-312.pyc index ddfd3bdb4d547acb94daf01ab9d2c99f29024997..f597c1a1b47f0763099875268377ec7b36f887be 100644 GIT binary patch delta 49 zcmbQvG@pt4G%qg~0}ym?x;l}&St?mSBR@A)KRvHP-zBv;yClCr-`y`lH{8`};(~Gj Da4HZF delta 41 vcmbQwG@Xh2G%qg~0}#}|xiXQvStwdRBR@A)KRvHP-zBv;yClD0;)-$r0k;kf diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/__pycache__/utils.cpython-312.pyc index d948b8ba74e16bb3b9e4dffb7555823ddfd699e0..7d869d4589b6eab988d8ccd229902b273a9d4cf8 100644 GIT binary patch delta 52 zcmaD-^rndWG%qg~0}ym?y1J1&fk`S+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%>p Gb29+oy%H?| delta 44 ycmaD;^rVRUG%qg~0}#}|xw4Tvfk`M*KO;XkRX;tiLf<8|IJ+djU~?3J3UE~&-YCHV#V?tT%v;jT`b JuQ8u*0RZMH65jv- delta 46 zcmZ2Gk!k5fChpU`yj%=GQ2*x2M(&-=Lb3W8`MIh3>3J3UE~&-YCHV!L?=hcm0RU$o B5ZwR( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/client.cpython-312.pyc index ddfde2b677861a124b3a025b17345bad436d9bca..ceed2224a13a4bb5428d15e3a67c8d802fec46b5 100644 GIT binary patch delta 52 zcmeyx-NeIvnwOW00SLM`UERp-!YGxlpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kM+ GCJO+h77$nf delta 44 ycmZqT`NhqBnwOW00SM~fT-nI&!YCB4pOK%Ns-K=$q3@DfoL!P%usM@)CJO*A)(%zx diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/creation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/creation.cpython-312.pyc index 46e92a9e0b370df19a9ec3a15f3dbe8c813713ae..8c29a6ed8ffb622cb3c674ebedf9a25d356cb6ad 100644 GIT binary patch delta 54 zcmX@q%6O`kk^3|+FBbz4bZ@%4k$WSIv?c&jg$}y_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/operations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/operations.cpython-312.pyc index 59c4164758a1eb060fe55041332baf7fb845d95a..cc5c9ea87c80502ddb459ed193801a6e1ae100e4 100644 GIT binary patch delta 54 zcmbQXh-uy;ChpU`yj%=G(7oyEMs7(qscij>{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IW^50-0MKU<#sB~S delta 46 zcmbQYh-um)ChpU`yj%=GQ2*x2Ms7(qp=AAx{M=Oi^t=jvm(=3ylKg_rc5Dy209Ex5 A!~g&Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/schema.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/base/__pycache__/schema.cpython-312.pyc index c4410a05009533aee3f07c9cc78c23eb7142520b..3f90b3c4425e75328721a2701aeec5cfe5c42db9 100644 GIT binary patch delta 58 zcmZ2}i)H;S7Vgu$yj%=G(7oyEM(&x+QtA2``MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 N+nBd+V`ePW1OQEO6T<)i delta 50 zcmZ2~i)HyO7Vgu$yj%=GQ2*x2M(&x+Lh3J3UE~&-YCHV!-`*wP>&CAQh00iBeu5RS!W|Yd-&&bbB)lbi>(055K&MwI>(0BKX&<%HW+N{BN GpA`Uz(htx8 delta 44 ycmeC@Yv(055K&MwI>*lfUfpA`TZKn>0S diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/dummy/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/dummy/__pycache__/__init__.cpython-312.pyc index 52c14b079537fe36ed470c01fc4b80b7224ff6bb..5b6b879287c615a7f118e8772f3446e959bb0989 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEb$_u GUv>bui4h|J delta 44 ycmaDZc3+J9G%qg~0}#}|xw4Vlm02iGKO;XkRX;tiLf<8|IJ+djU~?ApUv>aMKMx@Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/dummy/__pycache__/features.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/dummy/__pycache__/features.cpython-312.pyc index 58f46d891136a0fc6cdb1e214165f62cdfcee3ae..4e77436c4862ed59bbb5e6e50f45b82fd1ffaef4 100644 GIT binary patch delta 51 zcmeBXnasj{nwOW00SLM`UERpd%qW$mpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%G+BZ1 FH2`%C51Ie~ delta 43 xcmbQt(#^tsnwOW00SM~fT-nIY%qWzkpOK%Ns-K=$q3@DfoL!P%Fj<4~H2?@C4VVA` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/__init__.cpython-312.pyc index cd6bcd1e32114f85444d9999dbb1b1dcacdc0e05..14a6279ef88e10eba0f10465553464214d3d579a 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEbk^3|+FBbz4bZ@%4kz0>VDosBlKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IH``TP0L#V^aR2}S delta 46 zcmZ3{!MLDVC{8~kKQ~oBJ+DIFCAB!aB)?#DFxypI08!)* AZvX%Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/client.cpython-312.pyc index 7f2401f27e26ec37a3d2ee83acb938ff18c1252f..2301f22c40db69f11d9ce0ece0192e14e266f03f 100644 GIT binary patch delta 52 zcmbOuwM2^hG%qg~0}ym?y1J1&l1(Z@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Fd GGByCAS`d8z delta 44 ycmZ1?HAjm3G%qg~0}#}|xw4Tvl1(T8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/introspection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/introspection.cpython-312.pyc index a106643e9f786723c41047c323ba839bc28b8bcc..dc992fdded408e75e07cb9ff98154a91b9d1ceaf 100644 GIT binary patch delta 52 zcmaD^{;{0 delta 44 ycmexZ{<56=G%qg~0}#}|xw4U4pIsrjToV9chYzU$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/operations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/operations.cpython-312.pyc index 2ab56db550d378e7694c0bcfd6c9c96a6650ef9c..12af503168e78d0a4dc4128300d3beb82c3c4f34 100644 GIT binary patch delta 54 zcmX@GknzMqM()$Ryj%=G(7oyEM(*ouQaSn=`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jzp$P01OWWM6FvX{ delta 46 zcmX@HknzAmM()$Ryj%=GQ2*x2M(*ouLMi$g`MIh3>3J3UE~&-YCHV!L|FE6$1OR!} B5j+3@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/schema.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/schema.cpython-312.pyc index 045e95bb046d9cf8b8584a27670b83af5f5afe1c..01995d6bdcad4e95f4ee576411de4868f096648a 100644 GIT binary patch delta 52 zcmX>Ub1H`WG%qg~0}ym?y1J43Dyvk6enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8Vb0~)UG%qg~0}#}|xw4V_DyvX}enx(7s(yN2g}zH_adt_5!RBAA0U7{Zh7b(^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/validation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/mysql/__pycache__/validation.cpython-312.pyc index ec654fdd30e7c4b19c33de558c55623746528220..34553b2d2170a9883cb9c05f13dc5afd914575b4 100644 GIT binary patch delta 52 zcmeB>nIOY`nwOW00SLM`UERoinNcc7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zn0 G2_68d_z=GU delta 44 ycmbOr(;>rsnwOW00SM~fT-nHdnNcW3KO;XkRX;tiLf<8|IJ+djVDk?~2_676E)Kl_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/__init__.cpython-312.pyc index 2bf8f65cff99399057d111778d799ab200da7a3c..17a046f8711f486925c81cabda8cba48aa393fe3 100644 GIT binary patch delta 49 zcmX@Yc!rVtG%qg~0}ym?x;l~DSSnjTBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7K1 DcR>%# delta 41 vcmX@Zc!ZJrG%qg~0}#}|xiXR4SSVRPBR@A)KRvHP-zBv;yClD0Vnhi52u=;k diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/base.cpython-312.pyc index 6ba1c244f989766bc4dc3375d6a6ef5afd060c3d..99ab2f633c5fd8af53cc831b2c36143a11d997e2 100644 GIT binary patch delta 53 zcmZ2@oN?uGM()$Ryj%=G(7oyEM(!3?sdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|r H3t8g;-t-aJ delta 45 zcmZ2^oN?iCM()$Ryj%=GQ2*x2M(!3?p?Lj_{M=Oi^t=jvm(=3ylKg_jD_P?JU}O*0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/client.cpython-312.pyc index fd20a71dbb0eada06833f38a755471735636e846..3b16600ed809d6f153eb20c7f6113ea9ea9435f5 100644 GIT binary patch delta 52 zcmeC>p32RAnwOW00SLM`UERn%mr*KHKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a|| G%gg|uUJ&X4 delta 44 ycmbQr-OJ5=nwOW00SM~fT-nGymr*EDKO;XkRX;tiLf<8|IJ+djVDlly%gg{P91iFJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/creation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/creation.cpython-312.pyc index 40f52f7fbec0739d2ba8b77a1abd5e65347f2d1f..f466753089f1e1440a3c709224c024316e56bc7c 100644 GIT binary patch delta 54 zcmZ3vnQ`N0M()$Ryj%=G(7oyEMs5pMscij>{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Ip{yYx0O8CLh5!Hn delta 46 zcmdnEnQ`T2M()$Ryj%=GQ2*x2Ms5pMp=AAx{M=Oi^t=jvm(=3ylKg_rv8*8>0AxB3 Aga7~l diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/features.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/features.cpython-312.pyc index 108abb7be8aecdceb37c893a416a79841dfe385f..5620253b67d24c7cfa9456525c78044d9fe2c7e7 100644 GIT binary patch delta 52 zcmZ2sxWSP7G%qg~0}ym?y1J431h-VSenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?n# Ghj{?N=@HQY delta 44 ycmdmBxWbV8G%qg~0}#}|xw4V_1h-JKenx(7s(yN2g}zH_adt_5!REKzhj{=--w)3K diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/functions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/functions.cpython-312.pyc index 8d54fc731ccdf3c95048a9f839dd8fda8193c2fe..26a8a0406a666125dcc7dc383cc07d9dd2371e2e 100644 GIT binary patch delta 52 zcmbQtGn$)# GJ2L>AI}lX> delta 44 ycmbQuGnt3`G%qg~0}#}|xw4TvpGhc1KO;XkRX;tiLf<8|IJ+djVDl8Fc4h!4*$z_x diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/introspection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/introspection.cpython-312.pyc index 9e724897c6529ac324f33b295694a08eb72ec2c4..b29f72b1f8216896ff5cdfe83ed88d37b6911073 100644 GIT binary patch delta 52 zcmZpx>8s&B&CAQh00iBeu5RS^WtS?@&&bbB)lbi>(055K&MwI>(0BKX&<%HW+MLBc G#|!|zP7y5t delta 44 ycmeCHX{+Hr&CAQh00i}Ku59G?Wf#iO&&bbB)lbi>(055K&MwI>*j&Uu#|!{PgbynK diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/operations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/operations.cpython-312.pyc index 08ef7319cc1c87c9b049e419119341a0b23f8619..6c2519a12f89bb8f317c58f485e89a946891a8a0 100644 GIT binary patch delta 54 zcmezQg|YD~Bll@uUM>b8=-za7BlihTsa*Yx{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JPdTR)000_J6R!XO delta 46 zcmZqt%J}mOBll@uUM>b8sDE>1BlihTp;Y~h{M=Oi^t=jvm(=3ylKg_rZ#kzF005C_ B5v>3K diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/schema.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/schema.cpython-312.pyc index 1566b243f81f22e9cc096920a15429439b3c8066..fd288e31d2e4b0d64508fe608e594e2ccb0a12ba 100644 GIT binary patch delta 52 zcmaE#@I8V1G%qg~0}ym?y1J2@i%lw1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p<; GhZX?Qkr3Db delta 44 ycmeyK@IHb2G%qg~0}#}|xw4U)i%lp|KO;XkRX;tiLf<8|IJ+djV6#4(hZX=PYHk2KH4b?I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/validation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/oracle/__pycache__/validation.cpython-312.pyc index 9ee8b638ee2f79d7b467f3eac679db2a4ac1d5b1..6327f43c49da049ec159a03cd10d738fb202f611 100644 GIT binary patch delta 52 zcmaFI`HhqNG%qg~0}ym?y1J438c!H7pG%qg~0}#}|xiXR4SSVdTBR@A)KRvHP-zBv;yClD0VnhW13FZyj diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/base.cpython-312.pyc index b8475f8bdcf7fce41305cb1ad3b911d7ad215179..f6d2c2af8522fcb2bdbff7a5ae9afca0a32c4522 100644 GIT binary patch delta 54 zcmex0hp}lcBll@uUM>b8=-za7BlkQuscij>{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JyV>@;0|4-c5~lzF delta 46 zcmZpg%lK;!Bll@uUM>b8sDE>1BlkQup=AAx{M=Oi^t=jvm(=3ylKg_rhuQYK0|0KA B5TyVB diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/client.cpython-312.pyc index 0d12519703a9a2842d9349b3ff3aa90f20f27090..327e80e77a6b95b3fb80043b97bd76e79b0ca231 100644 GIT binary patch delta 52 zcmdlYzDJz#utPz6% delta 44 ycmdlZzD1n-G%qg~0}#}|xw4UaHmgvoenx(7s(yN2g}zH_adt_5!R7<3e^>!M3J-w* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/creation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/creation.cpython-312.pyc index a81d88c19c4f1ad90e61243666b427c9b2634481..e8458c742b4b22c74ae1efdde5d3f797462dcfa3 100644 GIT binary patch delta 52 zcmX@DdRdkGG%qg~0}ym?y1J43BBNBkenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8==K GcLe~-%@Q8~ delta 44 ycmcbtdRmqHG%qg~0}#}|xw4V_BBM~cenx(7s(yN2g}zH_adt_5!RBv_cLe}XI}jZJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/features.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/features.cpython-312.pyc index 0107604561479cba3e441b39ba401669ab79b781..4f195571c7ae2e2e537291a37e55d125e3173708 100644 GIT binary patch delta 52 zcmdm~cTkV}G%qg~0}ym?y1J3uo?R+mKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$zw GU48(vP!RM0 delta 44 ycmX@8w^NV%G%qg~0}#}|xw4Vlo?R$iKO;XkRX;tiLf<8|IJ+djU~>xlU48&Nt`715 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/introspection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/introspection.cpython-312.pyc index f43441d77109b1f69cc61aac078d8b29a5ac7329..6424ae65d6ab07ca9d76566c8902424066209836 100644 GIT binary patch delta 52 zcmZpP>51V!&CAQh00iBeu5RRh$|6;wpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w3&&O GNfQ9VWDs!x delta 44 ycmeB)X^G)J&CAQh00i}Ku59Ff$|97bpOK%Ns-K=$q3@DfoL!P%u$haMNfQ7@@(ynR diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/operations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/operations.cpython-312.pyc index 61c8e531980e6861fc8ae4e6da86c759bbcc570f..eea80de24c41bc635e31bf2b3c1319eb92c30117 100644 GIT binary patch delta 54 zcmey{$JpA>$bFiZmx}=ix;I_j$j!kdRj8klpPQ!sol3JWyl3$?j?iZmO?&`Ez Il_|m%0M#}S`Tzg` delta 46 zcmZqeXZ+j8$bFiZmx}=i>fc=1$j!kdl&PPQpPQ!sol3JWyl3%b{mnp&(09cm} A_y7O^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/psycopg_any.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/psycopg_any.cpython-312.pyc index 468fea5b293d85edddd604884c21864ab1f48ffe..7cc9cf421ca2beb06f5e014d7d9fa3ba7c0bc109 100644 GIT binary patch delta 52 zcmX@4c}kP}G%qg~0}ym?y1J2jC9_nKenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=E$ Ge*^%-x)JLD delta 44 ycmX@5c}SD{G%qg~0}#}|xw4UaC9_bLenx(7s(yN2g}zH_adt_5!RB+!e*^$YkPqnq diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/schema.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/postgresql/__pycache__/schema.cpython-312.pyc index ae435b0d40e59fa5edbf6ee95e34495d9f6f7f4e..122d617ac492df6ad5851e388638b56d0ccd684a 100644 GIT binary patch delta 52 zcmeCqpPbKqnwOW00SLM`UERoihE*z8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c0g GMTP*)bP^Q+ delta 44 ycmbQ7-<{8WnwOW00SM~fT-nHdhE*t4KO;XkRX;tiLf<8|IJ+djVDm@TMTP)TS`ZTe diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/__init__.cpython-312.pyc index c2e498f48933e2a7e9645249ecf595d73f11bf3d..935fd41c60784f09a7d18cf4f1ce92c73113e6ef 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}ym?x;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcfSwN delta 41 vcmX@hc$AU*G%qg~0}#}|xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2(%5( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/_functions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/_functions.cpython-312.pyc index 19240a0801ca71a5c1a5de3befcbbee7ec5c86cd..788a91bea643e22ca795524004829d8b449eb93e 100644 GIT binary patch delta 54 zcmbO|opJGWM()$Ryj%=G(7oyEMs8*SsXYCR{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I3If&E0Luyx?*IS* delta 46 zcmZ2HopJVbM()$Ryj%=GQ2*x2Ms8*Sp)~!B{M=Oi^t=jvm(=3ylKg_r8UoeU08vm5 A?EnA( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/base.cpython-312.pyc index f44d02c2d2aec4a8ea392876d4dca77b11a6f11d..0356efe65ec2f3e4af04fbc60889482b1932511e 100644 GIT binary patch delta 52 zcmZ2fu&RLjG%qg~0}ym?y1J2j2CGztenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?(L GxkdoaMiHa{ delta 44 ycmZ2gu&99hG%qg~0}#}|xw4Ua2CGnlenx(7s(yN2g}zH_adt_5!REcJxkdm|bPu8c diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/client.cpython-312.pyc index 5fbc2ae23d81671c5f792aa1a4b20050dfbeff93..661f160caa02ae4bc723b007de9d92e4d2b1db8d 100644 GIT binary patch delta 52 zcmZ3)wu+7WG%qg~0}ym?y1J3upHV7HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$(a GHbwxN7Z6YY delta 44 ycmZ3*wup`UG%qg~0}#}|xw4VlpHV1DKO;XkRX;tiLf<8|IJ+djU~>uMHbwv^Jq}I) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/creation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/creation.cpython-312.pyc index 85021a582130c3c2953d89febde4521e3cb4e89a..883e5874bfdda878f09bb8a6d410392387dc9018 100644 GIT binary patch delta 52 zcmeCNpJLB_nwOW00SLM`UERoiolz=BKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aDx G8L|Mor4-7i8n+|_CG IGNwj*0NSb%-T(jq delta 46 zcmZ4A!nnMJk^3|+FBbz4)W5m1k-L*gC{sTpKQ~oBJ+DIFCAB!aB)?$uI;KW@09}X= A+yDRo diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/operations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/operations.cpython-312.pyc index 87501181c157254abce5f83eca8a13edcec172b2..498d978c13f2c5535135428911f84c7113909991 100644 GIT binary patch delta 54 zcmbQXigDg5M()$Ryj%=G(7oyEM(#dVsXYCR{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z It68)C0pqL^4*&oF delta 46 zcmbQYigDU1M()$Ryj%=GQ2*x2M(#dVp)~!B{M=Oi^t=jvm(=3ylKg_rn_08{0c8>p A4FCWD diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/schema.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/backends/sqlite3/__pycache__/schema.cpython-312.pyc index 97da5514fbf61708f6757b6aeec7f14817cd72cc..4aa9e8132fe85bd6662840b03603ef372c29fe26 100644 GIT binary patch delta 54 zcmaF9pYi>EM()$Ryj%=G(7oyEM(%qoQd#;L`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jf3v)a0stAb6afGL delta 46 zcmaFApYi#AM()$Ryj%=GQ2*x2M(%qoLP`1=`MIh3>3J3UE~&-YCHV!LnOWaN0RWCx B5dZ)H diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/__init__.cpython-312.pyc index 434e9811949684214285e1bfa75a5e29cacd9c5f..761c2a110db67ae4a06947920323a50b885f052e 100644 GIT binary patch delta 49 zcmZ3*w26uPG%qg~0}ym?x;l}2hE$qndQFu3G%qg~0}ym?y1J2jBcoJ?enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8ccC FoB*v<5Xt}m delta 43 xcmca6dQO!4G%qg~0}#}|xw4UaBco7)enx(7s(yN2g}zH_adt_5!QyL-oB%b<4#)ri diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/executor.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/executor.cpython-312.pyc index 8b8841cffbf378a4a6fbed083548061ebf49bfc8..33044120bce969aad1a1eb5266213c244ff878f4 100644 GIT binary patch delta 54 zcmeB}$~a*vBll@uUM>b8=-za7BlmwMsWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IGR!&d0N~mYmjD0& delta 46 zcmbO*m9b+gBll@uUM>b8sDE>1BlmwMp*a1F{M=Oi^t=jvm(=3ylKg_rD$F_V0AWB6 Al>h($ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/graph.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/graph.cpython-312.pyc index 2676dfb1344d9e9a9a20a8793608133af69f2fe2..f0f975a800447ee41f9c0115525a6c909c368a32 100644 GIT binary patch delta 54 zcmey>&Dhk#$bFiZmx}=ix;I_j$eqC?m8_qUpPQ!sol3JWyl3$?j?iZmO?&`F; Im8sMj0N;!ey8r+H delta 46 zcmZqbVf@w2$bFiZmx}=i>fc=1$eqC?6s@0;pPQ!sol3JWyl3%d7m#Nel0ARfj Axc~qF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/loader.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/loader.cpython-312.pyc index 3b2fa27b43e8a5c2885b070992bc219ece48e5b5..db6cb8ce31e1cea46b690f0b7a9396d1eea25e23 100644 GIT binary patch delta 54 zcmZ3`&bXqTk^3|+FBbz4bZ@%4k$Wn;REmB^er~FMdR~RTOKNd;Nq&L8yI+KExU19V IP3-Ti0ouP3Q~&?~ delta 46 zcmZ3{&bXkRk^3|+FBbz4)W5m1k$Wn;P>g;?er~FMdR~RTOKNd;Nq)iRUF`3y0bRWi AQUCw| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/migration.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/migration.cpython-312.pyc index f1028fdb449cd038979c84c7b1cf7432bae1f4ed..d1d7a63ad9498e17d5f151cc6cad4fd9808ae0b5 100644 GIT binary patch delta 52 zcmZ4Gx5b8=-za7BXb8sDE>1BXb8=-za7BX>HBRI+|Xer~FMdR~RTOKNd;Nq&L8yI+KExU19V I78dUH0P-3VA^-pY delta 46 zcmbRKoT>jg6ZdIeUM>b8sDE>1BX>HBP_%wVer~FMdR~RTOKNd;Nq)iR9v1HP0CA`g AAOHXW diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/utils.cpython-312.pyc index 2d04a63f810e138ebf832ee73aad6bf4ea921c34..84aefc69e5058a6225bb5b5134d9465adfd2736a 100644 GIT binary patch delta 52 zcmX@4c1n%=G%qg~0}ym?y1J43Eu&Pjenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GIv G3qb(I2@se7 delta 44 ycmX@5c1Vr;G%qg~0}#}|xw4V_Eu&Dhenx(7s(yN2g}zH_adt_5!Db;Q3qb%$cMg^S diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/writer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/__pycache__/writer.cpython-312.pyc index 5d4c6091bae5eea49e8d96d6d98c5e5b057f5dc9..1b4d2f76aa9fc925a48bb2e70e4ddc21c1acc84a 100644 GIT binary patch delta 52 zcmZ3Tw>gjdG%qg~0}ym?y1J3Oh)F6%KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&i* G91{S_=n;(o delta 44 ycmdm-w>ppeG%qg~0}#}|xw4VFh)F0$KO;XkRX;tiLf<8|IJ+djVDogQIVJ#54iAd} diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/__init__.cpython-312.pyc index 28b3a2a9d99319a4aeb1d309044aee2e8cb17287..e482cec468a0bfbdeb9e657f6492f38b8bc46833 100644 GIT binary patch delta 51 zcmcb@eutg=G%qg~0}ym?y1J2@k6EfvKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|gu+ FN&uA>5D@?X delta 43 xcmcb^eubU;G%qg~0}#}|xw4U)k69>FKO;XkRX;tiLf<8|IJ+djV6rjuN&q6x4i5kT diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/base.cpython-312.pyc index cfa58bd38540a269ea0adb05cbc3cfd3ec8bab4e..3bcb8ce649bb46d494a614019fce0a989a81c74b 100644 GIT binary patch delta 52 zcmX?ac-@fuG%qg~0}ym?y1J43G_zE$enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-e< G&qV;xQxZb} delta 44 ycmca^c;1lvG%qg~0}#}|xw4V_G_z2uenx(7s(yN2g}zH_adt_5!R8Ol&qV-J@en}( diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/fields.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/fields.cpython-312.pyc index 14dda9c221b2c3e50d868cb70b326584edcbaa88..8ee4ebf4ccaeb3ca640d78535721edd18f7fec85 100644 GIT binary patch delta 54 zcmdnm!??GHk^3|+FBbz4bZ@%4kz0vLDqlY%KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IJ<~U50M!N&vj6}9 delta 46 zcmdnn!??AFk^3|+FBbz4)W5m1kz0vLC|y4zKQ~oBJ+DIFCAB!aB)?#@JJUC309nir Au>b%7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/migrations/operations/__pycache__/models.cpython-312.pyc index 04cfc1d638de2b10e47b994ca2afa199a6c15ee7..5181b35fb4e9916640b6735577e822468dd2a409 100644 GIT binary patch delta 53 zcmbPof_csfX71Cxyj%=G(7oyELT(nReEp34+*JMayb67n)Z*-t`~rP%`! GAR_>wGY|y; delta 44 ycmZ1`JWrVWG%qg~0}#}|xw4VFfI}!sKO;XkRX;tiLf<8|IJ+djVDnTCK}G;9$qoYm diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/aggregates.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/aggregates.cpython-312.pyc index e82a8229889a403c01f9c2bcf82ea3cc90415a2f..69d82bb2f0abedd7136c5abf57c1497463ad44de 100644 GIT binary patch delta 52 zcmaFw``wrOG%qg~0}ym?y1J3Of>kO-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cRp GC`AC-)e(>Y delta 44 ycmezF``(xPG%qg~0}#}|xw4VFf>kI+KO;XkRX;tiLf<8|IJ+djVDntoC`ABVgAa}X diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/base.cpython-312.pyc index 7d419cf6dab6ff19449884e053ed706844bada74..3cc73436690840969c696b864c486b5e345fb9c1 100644 GIT binary patch delta 58 zcmbO*g>A+ZHty5Byj%=G(7oyEM()F`QgQkj`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 N4_LQ9U}ZFD0RSx~6QTeB delta 50 zcmbO+g>AwVHty5Byj%=GQ2*x2M()F`LSgzD`MIh3>3J3UE~&-YCHV!-FIcy~U}ZFD F0RX1u5vTwF diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/constants.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/constants.cpython-312.pyc index f50a862485d19a48f5748bb397888831d461645f..5a998e7ac07a95db4d47f84cf9f7cfb989568380 100644 GIT binary patch delta 51 zcmbQovW$iMG%qg~0}ym?y1J2Df>A12KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|gHf FO8|bD58(g+ delta 43 xcmZ3+GLMD(G%qg~0}#}|xw4U4f>9`1KO;XkRX;tiLf<8|IJ+djV6rXaO8^iM4c`C& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/constraints.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/constraints.cpython-312.pyc index 89644316e466c0eba68aaa917eef28e4ec5436e4..32158b6887a8d04bfac3c187a6968fdcca385954 100644 GIT binary patch delta 54 zcmX@Rkn!q5M()$Ryj%=G(7oyEM(!eJsZ{-p{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I{mgd00PwjH_W%F@ delta 46 zcmcb*kn!w7M()$Ryj%=GQ2*x2M(!eJp;-Nl{M=Oi^t=jvm(=3ylKg_r)0ypj0dRK@ A^#A|> diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/deletion.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/deletion.cpython-312.pyc index 99d666bdb33f38921ec74085ba479b50131d5d02..b8e085c620e0e9c24c730812bb74fed33cedc328 100644 GIT binary patch delta 54 zcmeA@#yIsDBll@uUM>b8=-za7BlkQesU-c3{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IyP1L#0PCI-I{*Lx delta 46 zcmbPwjIs9^Bll@uUM>b8sDE>1BlkQep(y=~{M=Oi^t=jvm(=3ylKg_rhna#B0Bg(; AIRF3v diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/enums.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/enums.cpython-312.pyc index 977a9510fde4c2ed015f6705477c3975d6a5474e..b6cd10361c4bb898171fa06817c4fdefa04bf149 100644 GIT binary patch delta 52 zcmdm@wMUElG%qg~0}ym?y1J3ukyR>QKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Ow GHGTlB$Pmi_ delta 44 ycmdm^wMC2jG%qg~0}#}|xw4VlkyR*MKO;XkRX;tiLf<8|IJ+djU~?MlHGTj$HV(-E diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/expressions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/expressions.cpython-312.pyc index 40c9f9fac8c985faea9bf1e501f92d36c5cb015c..feccd90e188bd972798a3edd47689099b8219d50 100644 GIT binary patch delta 58 zcmZoa%i4dImHRX=FBbz4bZ@%4k-Jb(DpfxtKQ~oBJ+DIFCAB!aB)>r4-7i8n+|{YM MPjGvmAmh&v05!N1&Hw-a delta 50 zcmeA_%i4aHmHRX=FBbz4)W5m1k-Jb(C{{lsKQ~oBJ+DIFCAB!aB)_0}n&9?nf{Z^y E0Iq)#)Bpeg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/indexes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/indexes.cpython-312.pyc index 98f896cde1c4dd9b4b9a7f1047084e7976e87fb4..af62d1c09c554e7451469b1bd38412c9d4dcd6f3 100644 GIT binary patch delta 52 zcmexf{=c02G%qg~0}ym?y1J3OibE<z$BHZpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0SL4 Gh#~;4$Pmi_ delta 44 ycmeD5X!PJd&CAQh00i}Ku59Fb8=-za7BX=X4RHA-Her~FMdR~RTOKNd;Nq&L8yI+KExU19V Id2CUW0rOcBb^rhX delta 46 zcmZqJ!t`S^6ZdIeUM>b8sDE>1BX=X4P^5lFer~FMdR~RTOKNd;Nq)iRWo%KC0dYbQ AbN~PV diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/query.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/query.cpython-312.pyc index 81a9b6b913a22f308236253a30aeee6f1b553112..3b48a8040ae0826247402ccdca0016aaf7a58564 100644 GIT binary patch delta 57 zcmcc6&wityo%=K|FBbz4bZ@%4k$W?%RJ?vher~FMdR~RTOKNd;Nq&L8yI+KExT{n1 M1=i&kSQ!ri05I|s=>Px# delta 49 zcmcc7&winwo%=K|FBbz4)W5m1k$W?%P`G|Zer~FMdR~RTOKNd;Nq#}|4c6s1SQ!ri E0I6dU?*IS* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/query_utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/query_utils.cpython-312.pyc index 27e10f915f46d5b0633c76b6db067b694f27b35d..ad0071fe94115f8231d3fb68bfb655fd3b0e6240 100644 GIT binary patch delta 54 zcmbO^n{nZ6M()$Ryj%=G(7oyEM(z{LQmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JpE7Up1OVoz5}^P9 delta 46 zcmZ2Dn{noBM()$Ryj%=GQ2*x2M(z{LLb3W8`MIh3>3J3UE~&-YCHV!L-!gCU1OR7M B5T5`5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/signals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/signals.cpython-312.pyc index 567fa8b48a0f4090ad0fa0d38b86009c23def5f1..a2e006643863276ad74744fbd1b1d86be16e9dfe 100644 GIT binary patch delta 52 zcmX>pcu|o1G%qg~0}ym?y1J2j0kc%1enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@U* GJgfk>)DWux delta 44 ycmca8cv6u2G%qg~0}#}|xw4Ua0kcq~enx(7s(yN2g}zH_adt_5!RDjPJgfjeiVmp& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/__pycache__/utils.cpython-312.pyc index b32758851e1ef0268d8b68613cd5fc09c8b35d4d..bc07991f4a4c4398606127ed7805b7e4717686dd 100644 GIT binary patch delta 52 zcmaDa^<9elG%qg~0}ym?y1J43C9_n#enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Gi7 GOilpN)e!pt delta 44 ycmew^^|Oiln)V-EQM diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/__init__.cpython-312.pyc index 2b5fc688da70188cadf74c210dc00fe4a2d8f9a0..e2dc4189e27c928252b263da7e44fdbf09a74c4e 100644 GIT binary patch delta 58 zcmccklI`Y8Hty5Byj%=G(7oyEM((*BQknW0`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 NyEwM*;$ReC0|03!6n_8! delta 50 zcmccllI`M4Hty5Byj%=GQ2*x2M((*BLW%kr`MIh3>3J3UE~&-YCHV!-hd8z$;$ReC F0|44a5`_Q& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/files.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/files.cpython-312.pyc index c8b3a5e194df1a2562da2dfab4b884b0459b1692..d25a2be7873dca7d50d1d0d724e9f9a7d4caf6d0 100644 GIT binary patch delta 54 zcmX>%kMY_(M()$Ryj%=G(7oyEM(!`nQfc}b`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b I1zBvp0smJK_5c6? delta 46 zcmcaMkMZ0*M()$Ryj%=GQ2*x2M(!`nLUH;T`MIh3>3J3UE~&-YCHV!LC0T5}0ec+} A^Z)<= diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/json.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/json.cpython-312.pyc index 72c753b8574ed258735155e70786e1f1b9d73128..c18b0a4e04f37831339189cd8205b1b978e7b360 100644 GIT binary patch delta 54 zcmX^Ah4K0qM()$Ryj%=G(7oyEM(#u0QmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J?{gRA0RSL`6QlqD delta 46 zcmccqh4K6sM()$Ryj%=GQ2*x2M(#u0Lb3W8`MIh3>3J3UE~&-YCHV!LpK}-F0RWgI B5uyM9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/mixins.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/mixins.cpython-312.pyc index afcb157b1c483a7adca39f0bd5549ea0da105fee..d32712af5a6d7ac88b6caa0f6ddb6ce3c2976e39 100644 GIT binary patch delta 52 zcmZ22xml9?G%qg~0}ym?y1J1&olz=XKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$vs GIyV5PI1n%Z delta 44 ycmdlixmuF@G%qg~0}#}|xw4Tvolz)WKO;XkRX;tiLf<8|IJ+djU~>&i* GY(@a0vk;8{ delta 44 ycmdnQv5JHHG%qg~0}#}|xw4VFh)F0;KO;XkRX;tiLf<8|IJ+djVDogQ*^B@#ISz{e diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/related.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/related.cpython-312.pyc index 7c50fcff5f5a87f1cdf74675ecae1d4e54ffaca1..6d4322a152ee6ab4c064655edd8e5efa06717ee9 100644 GIT binary patch delta 58 zcmbQ)%(}3dmHRX=FBbz4bZ@%4kvot>DnmabKQ~oBJ+DIFCAB!aB)>r4-7i8n+|{W$ Mk7Iit2cxzn02DS6{Qv*} delta 50 zcmZ43%sR7~mHRX=FBbz4)W5m1kvot>C_z6XKQ~oBJ+DIFCAB!aB)_1!jAMHl2cxzn E0FkW_0{{R3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/related_descriptors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/related_descriptors.cpython-312.pyc index 5d4d037ce5a0eddc064043db9f56514ab4b5c5b5..923d0e20c19d21df162fb05064c53ffc6ae7108d 100644 GIT binary patch delta 58 zcmZqJ$kMTqh5IxwFBbz4bZ@%4k^2>&REd5@er~FMdR~RTOKNd;Nq&L8yI+KExT{k$ MJO6fee#S~p05ND1E&u=k delta 50 zcmeC!$kMQph5IxwFBbz4)W5m1k^2>&P>y~^er~FMdR~RTOKNd;Nq#{yKmT@qe#S~p E0H{Y0Gynhq diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/related_lookups.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/related_lookups.cpython-312.pyc index 65524d1b6136d66d19a66ce9e5e74a992e79cf13..baeb179f7431b1059f8d0f21de027e65d37f76fc 100644 GIT binary patch delta 52 zcmZ1enx(7s(yN2g}zH_adt_5!6xSIssKX;4?_R| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/reverse_related.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/fields/__pycache__/reverse_related.cpython-312.pyc index eba75bd61a7435ff8035d9f977d1e88c54167130..7756cb42ea4b72bc245833e3634fd9e9cdfe0a82 100644 GIT binary patch delta 52 zcmaD?`>mGyG%qg~0}ym?y1J3unoX)eKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$bI GGz$RbNDvMzG%qg~0}#}|xw4VlnoTG}KO;XkRX;tiLf<8|IJ+djU~>Z7Gz$P`h7Z#K diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/__init__.cpython-312.pyc index c98403d773834c00421eb04935031d75a20fe151..de0bb9deb5ab9bc31a1e9ad3c3a4e00d837026b9 100644 GIT binary patch delta 52 zcmX>kd`g)6G%qg~0}ym?y1J2j5rld`Ou4G%qg~0}#}|xw4Ua5rr4-7i8n+|_CG I3JyhU0O^(y&j0`b delta 46 zcmccE&Umt&k^3|+FBbz4)W5m1k-M8iC`CUbKQ~oBJ+DIFCAB!aB)?$u1`b7Q0BQ^m A%>V!Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/math.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/math.cpython-312.pyc index fe84599f2fffb1bc5685835a3bd7b3e34cb6761a..8ceeb98e8f159e6baa19fe0424cfd19e680c39a2 100644 GIT binary patch delta 52 zcmezD_S=p7G%qg~0}ym?y1J2jDzj9Eenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8tcUg}6G%qg~0}ym?y1J1&idia4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&RA G6>b2v{Sg!Z delta 44 ycmcaCcUq47G%qg~0}#}|xw4TvidiU0KO;XkRX;tiLf<8|IJ+djU~@h56>b1Ns}B+Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/text.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/text.cpython-312.pyc index 59849ed1cb15a09311e73a0c4e18541bf128e789..5ac58bff3db5ef7dad5b121d0ad9969e781c36e8 100644 GIT binary patch delta 52 zcmaD_^R|ZjG%qg~0}ym?y1J2jI*U|>enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;KK G8!Z9t?GlLq delta 44 ycmaD`^R$NhG%qg~0}#}|xw4UaI*U+(enx(7s(yN2g}zH_adt_5!R9?I8!Z8CI}nEe diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/window.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/functions/__pycache__/window.cpython-312.pyc index 62d9c48057790412c57f9b031a0e2ee73ed00deb..98c32c1100a08e19288a51615985a2be3d29926d 100644 GIT binary patch delta 52 zcmdm}x>J?=G%qg~0}ym?y1J2j0+Uphenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@5I GECK+uq7aP$ delta 44 ycmdm~x>1$;G%qg~0}#}|xw4Ua0+UdZenx(7s(yN2g}zH_adt_5!RD<@ECK*L*ba*T diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/__init__.cpython-312.pyc index aa2a8fb7f95733969f307873ab28f4addf0ddbbb..1feefc0b5e22746cb608994764f035e7204830fb 100644 GIT binary patch delta 51 zcmdnZe3+U0G%qg~0}ym?y1J2Dno%lEKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|e@l FGXRO|54->X delta 43 xcmX@iyqlT(G%qg~0}#}|xw4U4no%fDKO;XkRX;tiLf<8|IJ+djV6p>aGXNQK4Y~jT diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/compiler.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/compiler.cpython-312.pyc index 47f5273da77a1b263845913c7b3b508dc0edd51c..ff3034641c0cfa9efc34b32b81d5b752721fd5fe 100644 GIT binary patch delta 58 zcmeCU#5&;;EB9$$UM>b8=-za7BeyAwRGNN9er~FMdR~RTOKNd;Nq&L8yI+KExT{lh M5X<%;7RGHU04bdk%>V!Z delta 50 zcmbPmiM8VrEB9$$UM>b8sDE>1BeyAwP@H~7er~FMdR~RTOKNd;Nq#|d6wCG~7RGHU E0Hj0^(*OVf diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/constants.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/constants.cpython-312.pyc index 85395a45162433cf3dc57a638dfe0b82938ec31f..8969bcc53b1d5781f67a9568d84c0027a2486d38 100644 GIT binary patch delta 51 zcmbQwvYdtcG%qg~0}ym?y1J1&gi$J8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>uXs FIsk{M5F`Kq delta 43 xcmZ3^GM|O}G%qg~0}#}|xw4Tvgi$D7KO;XkRX;tiLf<8|IJ+djU~(nnIsg|D4k7>m diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/datastructures.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/datastructures.cpython-312.pyc index b153d6e4b0fbbc9db231f35c64ec612c78d583ca..bab9a0457aa17bcea1e2255f22e4d98052e1643c 100644 GIT binary patch delta 52 zcmaFp@zR6)G%qg~0}ym?y1J3Og-I$$KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bv+ G1Bw9EZ4v4K delta 44 ycmaFq@z8_&G%qg~0}#}|xw4VFg-IwyKO;XkRX;tiLf<8|IJ+djVDn0*1Bw7x!w={H diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/query.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/query.cpython-312.pyc index 5c6c71c46ae2637389cd0609cb0836e62ccbcf8d..72ca7a0edaf7f154ad0b7748e7b41a40b92a43e5 100644 GIT binary patch delta 58 zcmdn^kZtEfHty5Byj%=G(7oyEMs8bnsbu|({M=Oi^t=jvm(=3ylKcXFcfSbTa95}1 MDE949?2O?n0YmB&LjV8( delta 50 zcmdn_kZt2bHty5Byj%=GQ2*x2Ms8bnp=kY#{M=Oi^t=jvm(=3ylKg_^B=+q|?2O?n E0lL8vNdN!< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/subqueries.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/subqueries.cpython-312.pyc index cdbc3ba7fe7a000be99dff59ff18aa0e0106bc18..db1127807fb7334dfbc768c040096a263e0ec2ea 100644 GIT binary patch delta 52 zcmZ4Ey2X|IG%qg~0}ym?y1J1&j9Dr}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&2N Gr91$(=Ma+s delta 44 ycmdnuy2h3JG%qg~0}#}|xw4Tvj9Dl_KO;XkRX;tiLf<8|IJ+djU~@IIr91#XMGlbw diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/where.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/db/models/sql/__pycache__/where.cpython-312.pyc index a3db66aac41f6192edd64ae9df0269950ed9f75f..b125247095bdee88bc067078947ab086e2145404 100644 GIT binary patch delta 54 zcmZo@Wb9~U!sol3JWyl3$?j?iZmO?&`F8 IJNHQw0L&8+?EnA( delta 46 zcmeBZWNc_;40h!sol3JWyl3%cSKle!!08udy A>i_@% diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/dispatch/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/dispatch/__pycache__/__init__.cpython-312.pyc index eb2f647402d683b6eb50cacfa47ae4bcd54a052c..07337aea1925cddf295575093db2b3672ca79da2 100644 GIT binary patch delta 51 zcmeyt+`z(pnwOW00SLM`UERo?!YGxfpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%G`W$n F8~~FL5I6t; delta 43 xcmZo*`N7P6nwOW00SM~fT-nH-!YCA}pOK%Ns-K=$q3@DfoL!P%Fu9Yl8~`7p4mJP) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/dispatch/__pycache__/dispatcher.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/dispatch/__pycache__/dispatcher.cpython-312.pyc index 8d47bffe375b23d418e2dc00d93181f317d76ac4..641d73b2e8c045152599cdda8a1877e3f412f319 100644 GIT binary patch delta 52 zcmaDC^(~6~G%qg~0}ym?y1J2jGow_penx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-3| G^RxlyC=z1; delta 44 ycmews^)8D0G%qg~0}#}|xw4UaGow(nenx(7s(yN2g}zH_adt_5!R8x`^RxkHW)NWj diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/__init__.cpython-312.pyc index 59a6caef8e48177950b96c2e867da95180f4c67e..6c7ad5b3bdb82b6ceb883b19e1c8f7456c8a9733 100644 GIT binary patch delta 51 zcmbQhGJ}QtG%qg~0}ym?y1J3OfKe(=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>u=P FGXR8y5DEYQ delta 43 xcmbQiGJ%ErG%qg~0}#}|xw4VFfKez+KO;XkRX;tiLf<8|IJ+djVDePPW&jjK4hR4M diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/boundfield.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/boundfield.cpython-312.pyc index c75e5adaafcec30d4b3c731e8a838c45ce978303..a2b5b41b01670ebf7cfad5a01265a23fc4534574 100644 GIT binary patch delta 54 zcmX@n&3K`kk^3|+FBbz4bZ@%4k^2gZRDym+er~FMdR~RTOKNd;Nq&L8yI+KExU19V Ik1W?60QC$L4gdfE delta 46 zcmcc6&3K}lk^3|+FBbz4)W5m1k^2gZP=tO)er~FMdR~RTOKNd;Nq)iRpDfoM0CS2F A3;+NC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/fields.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/fields.cpython-312.pyc index cb8290db9883db1cfeaaf340801c22978b1a06ef..3edddf3a623812b800461c86d6ed8433217f7036 100644 GIT binary patch delta 54 zcmbPrg?Z5xX71Cxyj%=G(7oyEM(!uPQZf1&`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J8Tlmd0091?5>)^I delta 46 zcmZ23J3UE~&-YCHV!LIr${-004TZ B5K{mE diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/forms.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/forms.cpython-312.pyc index ea272a855614e6e1b33f1d1a64a4e3f90829fffa..0d108d7da473d2f4a0fcf832cb037230550f829c 100644 GIT binary patch delta 54 zcmaF9p7H&9M()$Ryj%=G(7oyEM(#(fQqlSu`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J|Fgab1OO5q6VCtu delta 46 zcmaFAp7Hs5M()$Ryj%=GQ2*x2M(#(fLc#hO`MIh3>3J3UE~&-YCHV!L+1XwM0sx2* B5Y7Mq diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/formsets.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/formsets.cpython-312.pyc index 226d89c449d2089be55d1e9da0d98bdae0075955..932b3c4720aa7ea75cd1aaabdf2b8bd4d7ce1ef3 100644 GIT binary patch delta 54 zcmZ3#n{oSYM()$Ryj%=G(7oyEM()onQgQkj`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J1z6`t0090X5?KHM delta 46 zcmdnKn{oYaM()$Ryj%=GQ2*x2M()onLSgzD`MIh3>3J3UE~&-YCHV!LC0OT2004SO B5LW;I diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/models.cpython-312.pyc index ed5a430d1eb6521eb31a747a05f3a59ce5ad2dc2..8c763ab086e4035317df1a24ce8c22bf88e99bbb 100644 GIT binary patch delta 54 zcmezWnz{WAGxup;UM>b8=-za7BX=T~RE&N`er~FMdR~RTOKNd;Nq&L8yI+KExU19V IIGxup;UM>b8sDE>1BX=T~P>6m;er~FMdR~RTOKNd;Nq)iRHm=6k0E6)n AHUIzs diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/renderers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/renderers.cpython-312.pyc index 47bdfe1e79b7d13a9f2c37632147d2afad60a82b..880bba0e43af3d35ec03507fdb89f1bda89503a8 100644 GIT binary patch delta 52 zcmdm`bV!N&G%qg~0}ym?y1J2Dok=QQKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oH{ GH$DKU0}!kL delta 44 ycmX@4v`dNmG%qg~0}#}|xw4U4ok=KMKO;XkRX;tiLf<8|IJ+djV6zX?H$DI}c@C-o diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/utils.cpython-312.pyc index 225c575b3f7e21166593f7a5e190766cb7163f25..7afcf7a5299e9e3855384259a2fc3bd465093278 100644 GIT binary patch delta 52 zcmZ1(w=s_UG%qg~0}ym?y1J437?V`Aenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@xa GZaM(Yi4m#* delta 44 ycmdlOw=$0VG%qg~0}#}|xw4V_7?V)2enx(7s(yN2g}zH_adt_5!RFUYZaM%`cMqrl diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/widgets.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/forms/__pycache__/widgets.cpython-312.pyc index 563db10dbfb774fc9e53715048cae29354e5a3ae..c613c42d61cdc798661f56633222b6682a4d1762 100644 GIT binary patch delta 54 zcmZ2Ejd|lVX71Cxyj%=G(7oyEM(*=$QnC6O`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J->}&p0RZd?63YMp delta 46 zcmdlujd|rXX71Cxyj%=GQ2*x2M(*=$LZSK@`MIh3>3J3UE~&-YCHV!Lzp&XJ0RU^) B5Xk@l diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/__init__.cpython-312.pyc index 7360be7fa8cdd7b46fadc450999ddfa470970489..4c3bff314081e6625bbe26e4390cf7e8a356ad80 100644 GIT binary patch delta 51 zcmX@gah8MoG%qg~0}ym?y1J2jDzj9qenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8tLe FlL4SA5ZM3# delta 43 xcmX@hag>AmG%qg~0}#}|xw4UaDzi|ienx(7s(yN2g}zH_adt_5!Q@@clL0F#4%Ywx diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/cookie.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/cookie.cpython-312.pyc index 87404c16e3f1166d12930e0ff8a8cf1f486c4a59..37a6459550ce6002e92ac480c264f248b607fb91 100644 GIT binary patch delta 52 zcmaFE_Jxi6G%qg~0}ym?y1J2@n@K8KKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o2C G3nKuk>JQxj delta 44 ycmeyu_J)o7G%qg~0}#}|xw4U)n@K2GKO;XkRX;tiLf<8|IJ+djV6y>}3nKtF01ev! diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/multipartparser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/multipartparser.cpython-312.pyc index 101a9172e92b74bea1f2ded7f0071eabc2e8dc36..6974706d7f45ae7a14d986001050fe689cfdbf60 100644 GIT binary patch delta 54 zcmX?cn(@MEM()$Ryj%=G(7oyEM(#PxQYrcw`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JcQW%Q0RRPc5_$jt delta 46 zcmca`n(@SGM()$Ryj%=GQ2*x2M(#PxLNWRo`MIh3>3J3UE~&-YCHV!L4>I#70RVxF B5O@Fp diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/request.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/request.cpython-312.pyc index 8f9c1ae8606107867feabc994d5dff437847e627..b0aa948a928b3f57a48394d695013649e5ecab44 100644 GIT binary patch delta 54 zcmdnk$F#GLiTgA!FBbz4bZ@%4k(-4@Dn>seKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IB8xyX0L+jOzyJUM delta 46 zcmdnl$F#AJiTgA!FBbz4)W5m1k(-4@C`3OaKQ~oBJ+DIFCAB!aB)?#@CW}Bb08-u# Az5oCK diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/response.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/http/__pycache__/response.cpython-312.pyc index 7a583620a153f102bf08af63792e8bc35812316d..e43bb75cf06dda311ffea256ead39840b34b1a94 100644 GIT binary patch delta 54 zcmez0$<*G(#C@8Vmx}=ix;I_j$lb{*6|0|-pPQ!sol3JWyl3$?j?iZmO?&`F8 I8Ea%c0OiaQB>(^b delta 46 zcmZqgV*207#C@8Vmx}=i>fc=1$lb{*6sn(*pPQ!sol3JWyl3%cS9cyGg0A&Vw Glqdkr%@I5R delta 44 ycmaFq_|TF2G%qg~0}#}|xw4Tvi(4o{KO;XkRX;tiLf<8|IJ+djU~@lrlqdjFdk;DQ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/clickjacking.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/clickjacking.cpython-312.pyc index 3f37d330544e75f5878c2131c0ebed9d6f24c8c9..ff9dd8b449452bb5295a00ed07970d16385b5f35 100644 GIT binary patch delta 52 zcmZ1|xKfb&G%qg~0}ym?y1J2j8jDoAenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@@A G@0bCp2oWy; delta 44 ycmZ1}xKNP$G%qg~0}#}|xw4Ua8jDc8enx(7s(yN2g}zH_adt_5!RFm8@0bBIRu3%z diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/common.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/common.cpython-312.pyc index bfec12d72fecdfc8b58506da4e15c63034afba53..db441cb95a4b4bcb8c918e6cf099c24b2bfe465e 100644 GIT binary patch delta 52 zcmaFw_}!8FG%qg~0}ym?y1J1&oI@&6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$oj GwFCgrhY?W# delta 44 ycmezF_}-EGG%qg~0}#}|xw4TvoI@y5KO;XkRX;tiLf<8|IJ+djU~>&ewFCfE{SQw7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/csrf.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/csrf.cpython-312.pyc index 71ac4f918ef0aaceddefbedb317ecfcdddae3046..30de61d5885a714b1e094ddcad766011d3d8aea3 100644 GIT binary patch delta 54 zcmdlypKX|-{M=Oi^t=jvm(=3ylKg_r25jA)09y?Y AH~;_u diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/gzip.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/gzip.cpython-312.pyc index c1b9a87e816ac7d0e42cac8b1dddaa956fdb8135..99b4517ac675926c61e92d85f20856983b253037 100644 GIT binary patch delta 52 zcmZn_?-l1h&CAQh00iBeu5RRxW|NB7&&bbB)lbi>(055K&MwI>(0BKX&<%HW+FZfL G%L)LM1`nzL delta 44 ycmeAbZx!c0&CAQh00i}Ku59FvW)lk6&&bbB)lbi>(055K&MwI>*xbOz%L)J@ybY)T diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/http.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/http.cpython-312.pyc index 6af7912b0c928753faa40fa499bd248f535dd281..71521c110bee788c5874c1f8bde07428452d8cce 100644 GIT binary patch delta 52 zcmdlWxI>WpG%qg~0}ym?y1J43GP6{?enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-G% G2Uq~MnGuix delta 44 ycmdlXxIvKnG%qg~0}#}|xw4V_GP6*)enx(7s(yN2g}zH_adt_5!R8;#2Uq|;R}YQ= diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/locale.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/locale.cpython-312.pyc index 05d9236d73ef0a0483771aa5792be5a6d319ac6c..1ae418faa5ca77dc1fdfd1eaaaebd40c331fec53 100644 GIT binary patch delta 52 zcmeB^o+izGnwOW00SLM`UERq2ltn60KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX)_aR G4+j9Nq7YdC delta 44 ycmbOx-6zd`nwOW00SM~fT-nI|ltm~~KO;XkRX;tiLf<8|IJ+djU^5qM4+j7=I1X0; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/security.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/middleware/__pycache__/security.cpython-312.pyc index 349084ad9499145cc3621f7f4a4df979705f48d5..50a437cba2b54debe840251f6521190120ca426d 100644 GIT binary patch delta 52 zcmbQCut0(PG%qg~0}ym?y1J430gF_!enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@Y{ G(%b;FFcAO% delta 44 ycmZ3WFhha+G%qg~0}#}|xw4V_0gF(yenx(7s(yN2g}zH_adt_5!Dd!gX>I^F@eTg~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/__init__.cpython-312.pyc index 339f4d99cc94b836dd5da22451b76c60b25a4b8a..4d07622b2f1f1d5187ac6b3e085f7d40069ff929 100644 GIT binary patch delta 51 zcmX@fcae|#G%qg~0}ym?y1J3Ol1(a6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4S9- F%>bbk5Z?d* delta 43 xcmcb}cao3$G%qg~0}#}|xw4VFl1(U5KO;XkRX;tiLf<8|IJ+djVDdb+%>XPM4&49% diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/autoreload.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/autoreload.cpython-312.pyc index a0efac72df13bc65e3b687bbfff6098d129d2f39..fbcbcdc9a044ccb96228d9610d2d008c503b6fce 100644 GIT binary patch delta 52 zcmaDO{zaVoG%qg~0}ym?y1J1&nOQ1XKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$W} G4hI0h5fJDA delta 44 ycmew&{zjbpG%qg~0}#}|xw4TvnOP`WKO;XkRX;tiLf<8|IJ+djU~>m^4hH~74-V!4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/base.cpython-312.pyc index 1ea5b969e436f96472c4466df7497ea7e45f1374..bf160a523ba57f23b8a96ad4fdddd37457d5ca10 100644 GIT binary patch delta 54 zcmaFyi0Q*4ChpU`yj%=G(7oyEMs5#YsaXAt{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Isl3cf01$i6ChpU`yj%=GQ2*x2Ms5#Yp-}yd{M=Oi^t=jvm(=3ylKg_rxxCCv0E?Rt Ag8%>k diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/context.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/context.cpython-312.pyc index 78b7c32fd39595cc55fb06a8bf5e7c52b070655a..2a9d9943a6ade94a8ae244504a2f802c7a4d393f 100644 GIT binary patch delta 52 zcmcbbbvKLqG%qg~0}ym?y1J2j52I9qenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?Cu GHO2tsFA_!o delta 44 ycmcbcbv29oG%qg~0}#}|xw4Ua52H|oenx(7s(yN2g}zH_adt_5!RCjIHO2sB%@9NY diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/context_processors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/context_processors.cpython-312.pyc index c6dbaa841908341143c841db43efa365a38b831d..9d64bfb7c77963e0218dc874e1fa568362a7ec69 100644 GIT binary patch delta 52 zcmew<-6+F-nwOW00SLM`UERo?#w?YspOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7HqN Gj0*s-fDoks delta 44 ycmZpa`63J3UE~&-YCHV#V?tT%v;jT`b Jj|y@&0s#Fd5{v)< delta 46 zcmcb%l3J3UE~&-YCHV!L&kAxj0swkd B5Q+c* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/defaulttags.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/defaulttags.cpython-312.pyc index 89157ec4527d25025a87c49488156fdc7c8f6353..fa4e33e02065505844a17aef8f60cadb6a11b17e 100644 GIT binary patch delta 54 zcmex!in--9Gxup;UM>b8=-za7Blkv5sTBQ;{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J=Q!8h1^@?(6SDvS delta 46 zcmZoU&HU#SGxup;UM>b8sDE>1Blkv5p&0#){M=Oi^t=jvm(=3ylKg_r*ErYR1^|Ke B5wQRO diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/engine.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/engine.cpython-312.pyc index d7426eb03ff5b1180698db7a65cb694ab9d91886..b25671bb06ac4f72c1f98957e693f3792676c465 100644 GIT binary patch delta 52 zcmZ4FxyqCKG%qg~0}ym?y1J43E2~tzenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F&I G3333(_7N8V delta 44 ycmZ4GxyY0IG%qg~0}#}|xw4V_E2~hrenx(7s(yN2g}zH_adt_5!DcD83332S^bZvP diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/exceptions.cpython-312.pyc index e9f67db16911f67785d8f1caabd095c6563bf9b3..03f587ed73586da9df5f802a5f55bd05067709bf 100644 GIT binary patch delta 52 zcmeC-pTf_5nwOW00SLM`UERq2hD9n_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX)`Bl GGZO%(RuDb_ delta 44 ycmbQj-^0&+nwOW00SM~fT-nI|hD9h^KO;XkRX;tiLf<8|IJ+djV6z}=GZO$Xgbq9a diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/library.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/library.cpython-312.pyc index 80a4d4e89017d24f6344a5e50a7b8ff59eea61cb..d261a86d20f364b710e062a653c9bc6722016f8e 100644 GIT binary patch delta 52 zcmdm=cRY{#G%qg~0}ym?y1J2@jY%p&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pnu Gj41%YT@YFT delta 44 ycmX?}w?B{jG%qg~0}#}|xw4U)jY%j%KO;XkRX;tiLf<8|IJ+djV6!%pj41#}!wy&g diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/loader.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/loader.cpython-312.pyc index 89c4501eb54c7f785ba768256451b9ece624a89b..db1f125f23e570885b902f6ba7e4659a2dd2a0af 100644 GIT binary patch delta 52 zcmeAWogm76nwOW00SLM`UERoS$0QZ6pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^knd GmjeKh)ensT delta 44 ycmbOr+9Aq)nwOW00SM~fT-nHN$0QW4pOK%Ns-K=$q3@DfoL!P%usNAYmjeJFgAI!S diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/loader_tags.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/loader_tags.cpython-312.pyc index 9b29659350abfce3e5a449dd7d6dad8a3c52d968..5c37fd2dbdf364d65d9b99f5bd6fdaab96b75269 100644 GIT binary patch delta 54 zcmX@v#CWlZk^3|+FBbz4bZ@%4k$V@DREmB^er~FMdR~RTOKNd;Nq&L8yI+KExU19V I>r6#<0PSKDV*mgE delta 46 zcmccE#CWoak^3|+FBbz4)W5m1k$V@DP>g;?er~FMdR~RTOKNd;Nq)iR`%Fc40Bs-; AVE_OC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/response.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/response.cpython-312.pyc index ba89dcfce10a5a40436ae7bbb0fc9886f8052e22..41ec56f3a39f933db3476bbbef88bb15c8f98463 100644 GIT binary patch delta 52 zcmexq&}hhgnwOW00SLM`UERp7$0(JkpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq_c GPaFWPV-OYq delta 44 ycmZoP{As{_nwOW00SM~fT-nI2$0!u3pOK%Ns-K=$q3@DfoL!P%usN7fPaFU?!wwVx diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/smartif.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/__pycache__/smartif.cpython-312.pyc index e2cc036eebbe9ac6a2a311015969261343e52d4b..7dc8a69468f1cc5cb9ec5ae58f1fafb0b74bba3a 100644 GIT binary patch delta 52 zcmZ1+%aG%qg~0}ym?y1J2jHKSCVenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-S5 GvjqUl!V#_j delta 44 ycmaE@@>qrYG%qg~0}#}|xw4UaHKS0Nenx(7s(yN2g}zH_adt_5!R8B$vjqT9cn_=q diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/__init__.cpython-312.pyc index f026641a7e4a660710658a3533f935f0959bbe28..f1c74e7d465318fbb031ebf4f6f88f562cef9826 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym?x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf DcEb${^ G2p0gKSP%68 delta 44 ycmbOyJx!YXG%qg~0}#}|xw4Tvm02iGKO;XkRX;tiLf<8|IJ+djU~?C<2p0e=P7U(_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/django.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/django.cpython-312.pyc index a560cb8e05c7dd825bd6e9c598d9b41a0b64bcd4..50225ce267e5c1670d0c4d79e2282dd8adf57baf 100644 GIT binary patch delta 52 zcmaE5@yUYwG%qg~0}ym?y1J3Og+(euKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bvs Gli~o?kgKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oM; G1qT42JrDo@ delta 44 ycmdlZzD1n-G%qg~0}#}|xw4U4o>?efKO;XkRX;tiLf<8|IJ+djV6zKz1qT2uyAA#T diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/jinja2.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/jinja2.cpython-312.pyc index bbbaac4388a18d2ec25a8bafd8c72e4357cbef15..a33f83889d21c5302fef6aa6c6bbb2bc624e9ed9 100644 GIT binary patch delta 52 zcmdmLxYv;TG%qg~0}ym?y1J1&nN=!7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Xs GsW1Sv&k&0M delta 44 ycmdmMxYdyRG%qg~0}#}|xw4TvnN=u3KO;XkRX;tiLf<8|IJ+djU~>nnsW1RNWe$k| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/backends/__pycache__/utils.cpython-312.pyc index 06b2186ac9a351612956e82fbd661df386452720..2eaaeee6d09c4afb78d106a0514bdfe863914a59 100644 GIT binary patch delta 52 zcmey(+RVm%nwOW00SLM`UERnX!zh)mpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7HV8 Gi4g#$gAil@ delta 44 ycmZo>`_0OInwOW00SM~fT-nGS!zdK5pOK%Ns-K=$q3@DfoL!P%u(^@3i4g!V(+*+) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/__init__.cpython-312.pyc index 7d7232cdde3c0d0a9335a9ecb7f4ade151deb310..3db56864ffd6c1cdb49a3899233ca5bfc632990e 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}ym?x;l~DSSnLLBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7i9 Dc0~`w delta 41 vcmX@bc!-hvG%qg~0}#}|xiXR4SSV3HBR@A)KRvHP-zBv;yClD0Vnh)D2Z9a4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/app_directories.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/app_directories.cpython-312.pyc index ba12a98b510a7ec8a936fdc6b4fe736ea2246436..11df43b71b27bbbd39065755ad48d1caca7fd40f 100644 GIT binary patch delta 52 zcmZo<>ty3T&CAQh00iBeu5RQ`Wt1w=&&bbB)lbi>(055K&MwI>(0BKX&<%HW+T6rg G&jd-&CAQh00i}Ku59E^WfaQL&&bbB)lbi>(055K&MwI>*xbcf&j*A52& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/base.cpython-312.pyc index 724af8ba3f9e4dd85598e3ef8e95f3f6dc36adb7..8dacbb6b83ccb934f9f722934b83bbbe47820fc4 100644 GIT binary patch delta 52 zcmX>scv_JAG%qg~0}ym?y1J2@gHb9~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pQh GJazz}IuHW@ delta 44 ycmX>tcvz78G%qg~0}#}|xw4U)gHb3}KO;XkRX;tiLf<8|IJ+djV6!gcJazyr01g2F diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/cached.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/cached.cpython-312.pyc index e6eaaeba80897a8b1c41295a19947238f3d2d011..8b8191bab0abefa8f72fcbe0f5cf03ac82567e80 100644 GIT binary patch delta 52 zcmdm}y;Ga}G%qg~0}ym?y1J2jGLuxgenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-9K GjKTo73=o_E delta 44 ycmdm~y-}O{G%qg~0}#}|xw4UaGLuleenx(7s(yN2g}zH_adt_5!R8%IjKTmu;trYs diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/filesystem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/filesystem.cpython-312.pyc index 2f26ec4c89421d46d26a4406f002f35472f6895d..115fc196a10a6fd22274de5456a2aa5830a36b2d 100644 GIT binary patch delta 52 zcmbOxJWrVWG%qg~0}ym?y1J436{A$Penx(7s(yN2g}zH_adt_5fxf$6gl@R2(`I(2 Ges%z@KM-jE delta 44 ycmbOyJWZJUG%qg~0}#}|xw4V_6{AqHenx(7s(yN2g}zH_adt_5!DfD@es%ygbq;3$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/locmem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/template/loaders/__pycache__/locmem.cpython-312.pyc index ae3ee20bb42dc765193c33f06dd442a6933273af..ad309a6878a262091473c1ff5860fbf9de672bb3 100644 GIT binary patch delta 52 zcmeyu^@of5G%qg~0}ym?y1J2jBcoKhenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=!G G%a{SmWD&0b delta 44 ycmeyv^@WT3G%qg~0}#}|xw4UaBco8fenx(7s(yN2g}zH_adt_5!RBj>%a{RAG7qf) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/templatetags/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/templatetags/__pycache__/__init__.cpython-312.pyc index aee444e8e8a2978a798d8b24d09e1e6959f1bdba..ed3d2f4084fedd76cf727589702a3a731e1516fe 100644 GIT binary patch delta 49 zcmdnTc#M(zG%qg~0}ym?x;l~DSSnRNBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7}M DbWIPm delta 41 vcmX@cxQ~(hG%qg~0}#}|xiXR4SSVIMBR@A)KRvHP-zBv;yClD0VniMQ1?mm5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/templatetags/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/templatetags/__pycache__/cache.cpython-312.pyc index fcc0bbc2fd2fdfb4273f694a837e820d187c5932..d534452111cde898ba02a43eeef82c2ab7ee0952 100644 GIT binary patch delta 52 zcmZ3Xyg`}!G%qg~0}ym?y1J3uiAgF+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Z2 GCqDqBK@b-J delta 44 ycmdm>yh54#G%qg~0}#}|xw4VliAg9*KO;XkRX;tiLf<8|IJ+djU~@W?CqDo$*A5i` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/templatetags/__pycache__/i18n.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/templatetags/__pycache__/i18n.cpython-312.pyc index 40aa294a086ec903a5cb53a28cd86818df163402..7bdb8478e72043107491cc2cce28b612540fae5a 100644 GIT binary patch delta 54 zcmbPql5y5aM()$Ryj%=G(7oyEM(!6ZQi=K*`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b ISy_AI0rq_o9RL6T delta 46 zcmbPrl5x^WM()$Ryj%=GQ2*x2M(!6ZLXr9z`MIh3>3J3UE~&-YCHV!Ld0Bho0dvz3 A8vpz7gL5 delta 44 ycmez9{L-2GG%qg~0}#}|xw4V_7n4x9enx(7s(yN2g}zH_adt_5!De~pOL72WoDbaq diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/__init__.cpython-312.pyc index b883e5d792602ffa034bb69cc2705fffeaa93bb9..c596d3218c3576ca1d62f6687e0627e3e582d009 100644 GIT binary patch delta 51 zcmaFP_MVOVG%qg~0}ym?y1J2jH3J3UE~&-YCHV#V?tT%v;jT`b JkFiOu1^^oT6Gs35 delta 46 zcmaFynCZb|ChpU`yj%=GQ2*x2M(&ktLc#hO`MIh3>3J3UE~&-YCHV!L&#_6Z1^|=G B5k&w1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/html.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/html.cpython-312.pyc index ca65a115847039d01f8b26191ab2f335a4de5364..0865c1dd71666518f0a54221686febd3f8d61670 100644 GIT binary patch delta 52 zcmcZ~`#hHWG%qg~0}ym?y1J2jB9m04enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=(d GhB^S-V-b@8 delta 44 ycmaDJdq0-@G%qg~0}#}|xw4UaB9l;{enx(7s(yN2g}zH_adt_5!RBpDhB^RUxet*5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/runner.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/runner.cpython-312.pyc index 0794751f80af2a42d43b15a245edef35197fcd72..453843fc1836558a571468edd84f7d6982d1168a 100644 GIT binary patch delta 54 zcmZ3xhCP_0RUvT B5Ptvw diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/selenium.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/selenium.cpython-312.pyc index 2860e3d054e58ac767aa5622df3f5134f526a36d..ae4b09132354588aad97763920f55d0fd0c2f627 100644 GIT binary patch delta 52 zcmexo(q_tinwOW00SLM`UERpNmQ^ZNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a)8 GEg}HK=n<^| delta 44 ycmZoO{b#~`nwOW00SM~fT-nIImQ^TJKO;XkRX;tiLf<8|IJ+djVDlx`Eg}F(zz?ec diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/signals.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/signals.cpython-312.pyc index 15364c5a9395e9cd0e92d0614110bd22380c4cd9..13e55331b9d282725148202a98e30d6f8789bee9 100644 GIT binary patch delta 52 zcmdn)x!;rfG%qg~0}ym?y1J432#ZvVenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>aP G*W>}s7ZM-< delta 44 ycmdn*x!sfdG%qg~0}#}|xw4V_2#ZjNenx(7s(yN2g}zH_adt_5!RD7N*W>|FZ4e#+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/testcases.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/testcases.cpython-312.pyc index 2c09d45d4deba8738782f0a94351cf00958900aa..651ce0ffb60d866478bfb8344dd21db643798138 100644 GIT binary patch delta 58 zcmeC5$~t{2EB9$$UM>b8=-za7BliXlsW|8=EB9$$UM>b8sDE>1BliXlp)mc7{M=Oi^t=jvm(=3ylKg_^s~p>}axflp F1OTM25yb!i diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/test/__pycache__/utils.cpython-312.pyc index 54b37f710729629f3ccf987482d630a4c2b58ad4..58b1d6384519b0364edbba7f085d76703d26e997 100644 GIT binary patch delta 54 zcmbPumuco*ChpU`yj%=G(7oyEMs78BsVM!7{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I&g_260p$}B$N&HU delta 46 zcmbPvmucc%ChpU`yj%=GQ2*x2Ms78Bp&tJ65S{=4 delta 43 xcmX@ev6F-QG%qg~0}#}|xw4VFj#(&FKO;XkRX;tiLf<8|IJ+djVDe(-c>pBA4x9i0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/base.cpython-312.pyc index fd7a87e92f31ccf9925c76e016ba06deacd66cea..a4a8936026aaec16b3b1936e030079807a1db755 100644 GIT binary patch delta 52 zcmdmNyxW-jG%qg~0}ym?y1J3upGhiGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$&f GyEp)^z7S*p delta 44 ycmdmOyxExhG%qg~0}#}|xw4VlpGhcCKO;XkRX;tiLf<8|IJ+djU~>tRyEp(jgbrc= diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/conf.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/conf.cpython-312.pyc index d968431d1ceffab2972605695bd7b13785c43f8b..ad95299c1c3f29f7eee677bc85f545a8ac847c03 100644 GIT binary patch delta 52 zcmew<*(k+*nwOW00SLM`UERq2l2s~FKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX)_z! GXEp%6JrNTC delta 44 ycmZpa`YFkMnwOW00SM~fT-nI|l2s^BKO;XkRX;tiLf<8|IJ+djU^5@vXEp#rRSyvW diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/converters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/converters.cpython-312.pyc index 6b44083d67c41cad7c43e621397d67c65a2c2166..1db56f87469fb353d26892862c447952569e6954 100644 GIT binary patch delta 52 zcmew_+AhX@nwOW00SLM`UERoilu;^PKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4amS GSxx}EHxT&% delta 44 ycmZn{`!C9UnwOW00SM~fT-nHdlu;;LKO;XkRX;tiLf<8|IJ+djVDl?RSxx{!KMwZ* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/urls/__pycache__/exceptions.cpython-312.pyc index 0c524de53a9f22d670c28eb10866d07d8283943e..4b2b70945f181506d7ee2eea81753d10fac75395 100644 GIT binary patch delta 50 zcmdnSvX6!PG%qg~0}ym?x;l~jqEx(oMt*LpetKSozDsIxc1eDLzPn$9Zn&${#&;f! E0GBKf+W-In delta 42 wcmdnTvWobW(`>G%qg~0}ym?y1J3On^h`GKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zx! GnalvPaS;0e delta 44 ycmX>pbWn)cF GrtAQ!DiFE= delta 44 ycmbOyHcgECG%qg~0}#}|xw4V_2(wV2enx(7s(yN2g}zH_adt_5!RD9DrtAPS;10L| diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/archive.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/archive.cpython-312.pyc index c9e79117075b009421bdb2e6ba00245c8ea42fb5..a22e09a0fd259dda936b6d5944a954fa79cb71c3 100644 GIT binary patch delta 52 zcmdm*us4DGG%qg~0}ym?y1J3Oj7=(5KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c>Z GMVbJ~yb*~2 delta 44 ycmdm+ur-1EG%qg~0}#}|xw4VFj7=z1KO;XkRX;tiLf<8|IJ+djVDoIYMVbIl8V`p6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/asyncio.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/asyncio.cpython-312.pyc index d46e41e7c7148f3e16aff2b96fd50db738b62f1d..c5ba572f2cf3d041ad9e3be3f92c5dc37e8c08d2 100644 GIT binary patch delta 52 zcmZ1`vQC8iG%qg~0}ym?y1J3uomnbYKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$tm GAvOS>$q;M+ delta 44 ycmZ1{vP^{gG%qg~0}#}|xw4VlomnVUKO;XkRX;tiLf<8|IJ+djU~>-hAvORjXAWur diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/autoreload.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/autoreload.cpython-312.pyc index 96886f8be5c35807133561876a0aa01af0ad7a39..36dbb12b5134a35aa94bafa06c85d136fe47f318 100644 GIT binary patch delta 54 zcmezUhq3uDBll@uUM>b8=-za7Bll}&sRaFu{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I94y6E037NP+5i9m delta 46 zcmZqv%lP{bBll@uUM>b8sDE>1Bll}&p$Pqq{M=Oi^t=jvm(=3ylKg_r0xZQ<0FvYo A*Z=?k diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/baseconv.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/baseconv.cpython-312.pyc index ba585052db1abd15e1a53db301ceefcd0404caba..f0839e3e1ba4ec71084963ac7025b61cd9c8399a 100644 GIT binary patch delta 52 zcmZ20yH%F^G%qg~0}ym?y1J2@nN=!IKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n=r GFDC$+{}0yy delta 44 ycmdlgyH=L_G%qg~0}#}|xw4U)nN=uEKO;XkRX;tiLf<8|IJ+djV6z5mFDC#fr47{p diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/cache.cpython-312.pyc index 9024317d6276c5513bc93f70869344f055c2dc45..740d36f3a6dfecb778aeaa3b226342286fd75608 100644 GIT binary patch delta 54 zcmaFR%=n_2k^3|+FBbz4bZ@%4k^4KBRJ49Zer~FMdR~RTOKNd;Nq&L8yI+KExU17< I5$-c)0Q~+EX8-^I delta 46 zcmaFS%=n<0k^3|+FBbz4)W5m1k^4KBP_TYRer~FMdR~RTOKNd;Nq)g*8SXP?0C`*x AWdHyG diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/connection.cpython-312.pyc index 834234016864e418dfc83670db811cdf83db0e12..9f1e8c72dd4895da9d74b7cfa19a66620e571515 100644 GIT binary patch delta 52 zcmdm?c|eoG%qg~0}ym?y1J2DjY%p-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pra G23`QXeGtq5 delta 44 ycmew@|5={r4-7i8n+|_Bb I4pW^Y0Lf<%=l}o! delta 46 zcmdng&bX?bk^3|+FBbz4)W5m1k(-}MC`LacKQ~oBJ+DIFCAB!aB)?#@2~(XT08kwc A<^TWy diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/dateformat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/dateformat.cpython-312.pyc index 87c55b00238afb4d3b7d2adf6a8df47cef144895..ff3426ef8c803a71d5063ef3a3ba2cc781421e01 100644 GIT binary patch delta 52 zcmdm3x3iA>G%qg~0}ym?y1J2DlT9i?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o&K GYYPC$Y!Q9{ delta 44 ycmdm4x3P}KO;XkRX;tiLf<8|IJ+djV6z|FYYPBRdJlX6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/dateparse.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/dateparse.cpython-312.pyc index f151caf90d18fa1e461895911356976715a21b9d..7c41d38f0231d9c292ce2b9e73f5a71da52d692e 100644 GIT binary patch delta 52 zcmeA(o@UH_nwOW00SLM`UERoim`y5PKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4ZcN GbwU8NOA&Ga delta 44 ycmbPc+-J;vnwOW00SM~fT-nHdm`x~LKO;XkRX;tiLf<8|IJ+djVDk&MbwU6$|X GTqXdYix6=D delta 44 ycmZ23G+&7OG%qg~0}#}|xw4Tvl}#vEKO;XkRX;tiLf<8|IJ+djU~?DSTqXc3!47W# diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/datetime_safe.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/datetime_safe.cpython-312.pyc index 17466789e35163359d9cda23eb939a26e4292679..d00ba9bfd10f51a3cbfc57b14b8bd9d7391f8b49 100644 GIT binary patch delta 52 zcmZou=~Ll8&CAQh00iBeu5RS!W|B(Q&&bbB)lbi>(055K&MwI>(0BKX&<%HW+N{BJ Gj~@V#I1l{* delta 44 ycmeBEX;a}o&CAQh00i}Ku59GyW)h0l&&bbB)lbi>(055K&MwI>*lfUbj~@UZjt%<& diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/deconstruct.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/deconstruct.cpython-312.pyc index 2c24374b2fc452426650898f890fcb54d13884c6..00a8e6774a1ce08c7823c00d54bbc3a98d16cc16 100644 GIT binary patch delta 52 zcmZ1^yh@n+G%qg~0}ym?y1J1&ok=QDKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$vc G96JD@o)7^5 delta 44 ycmZ1_yhxb)G%qg~0}#}|xw4Tvok=KCKO;XkRX;tiLf<8|IJ+djU~>$T2 G8yf(#xDXit delta 44 ycmaFI_l%GGG%qg~0}#}|xw4VlnNcWAKO;XkRX;tiLf<8|IJ+djU~>i|8yf&T-VPT4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/encoding.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/encoding.cpython-312.pyc index 738632882aed14f65b6be0904b26a3f0c9e57f1e..e47995d91c773919a9b3f7a68edb070f1183215a 100644 GIT binary patch delta 52 zcmbQ~xzLmQG%qg~0}ym?y1J2jIVt`V95 delta 44 ycmZ4JIn$H-G%qg~0}#}|xw4UaI$dXP&0PqJ9d;kCd delta 46 zcmexAhw=LyM()$Ryj%=GQ2*x2Ms6-v6O@RG%qg~0}#}|xw4Ua8Iw?$enx(7s(yN2g}zH_adt_5!RFIUNsIt7c@C%m diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/html.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/html.cpython-312.pyc index c57a48707633a6f6ae1c189196bc546384160908..6125c87d9d741d8827ed09c1bea36de5a4fe02d6 100644 GIT binary patch delta 54 zcmZqgV(jl?!sol3JWyl3$?j?iZmO?&`Gp I604~_0MmyNr2qf` delta 46 zcmeD0Vr=hX40h!sol3JWyl3%d-7OSZ}09Qp1 AqW}N^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/http.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/http.cpython-312.pyc index d4b4c972bf13b2f8e372f77dc3e68cae0509bd2b..2afe9032766d9562f748f58c1dd381524462a0fc 100644 GIT binary patch delta 54 zcmaFS%J`v`k^3|+FBbz4bZ@%4k$W+RRFr;3er~FMdR~RTOKNd;Nq&L8yI+KExU19V I0~{Jw0QT+@EdT%j delta 46 zcmey+%J`y{k^3|+FBbz4)W5m1k$W+RP>_B`er~FMdR~RTOKNd;Nq)iR6C4^=0Ci*# AD*ylh diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/inspect.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/inspect.cpython-312.pyc index 2f65db48439dc6534b701c60a624278209ca9406..bb9139841570d744c7fe42f170ec694f30f1910c 100644 GIT binary patch delta 52 zcmdm`bV!N&G%qg~0}ym?y1J2j9-~yOenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^fb G_51+1UJ)Pw delta 44 ycmX@4v`dNmG%qg~0}#}|xw4Ua9-~mGenx(7s(yN2g}zH_adt_5!REt^_51)pG!GsC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/ipv6.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/ipv6.cpython-312.pyc index 33eeca03efc33a3116cba3fe1c953639b69d4def..600be44be296f786ee422de8b99bcbed9e53ebdb 100644 GIT binary patch delta 52 zcmbQkzl5LrG%qg~0}ym?y1J2j0gF_Wenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@S_ G_n82u3=tRr delta 44 ycmZ3&KZl?DG%qg~0}#}|xw4Ua0gF(Oenx(7s(yN2g}zH_adt_5!RDhZ_n81N;tv)8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/itercompat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/itercompat.cpython-312.pyc index 256b7065c72cb88720e27c18891e3ee8ff998170..cb88a6a3e4a3d7749364e0b5534ff04a1170bbc1 100644 GIT binary patch delta 49 zcmcb}e3O~`G%qg~0}ym?x;l~jzEpyKMt*LpetKSozDsIxc1eDLzPn$9Zn&${#6MR7 Dk}DCI delta 42 wcmcb~e36;^G%qg~0}#}|xiXRazEFgIMt*LpetKSozDsIxc1eE0WERG&04WO&nE(I) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/jslex.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/jslex.cpython-312.pyc index 3a5ae5f6bb621d59119d553b9f3d969421063b7a..e9a371e23babaa167a9fc5ecf0a471d7182206e7 100644 GIT binary patch delta 52 zcmccMcEgSPG%qg~0}ym?y1J2@nMo>IKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n>8 Gfg%96iVz_H delta 44 ycmccNcEOGNG%qg~0}#}|xw4U)nMo*EKO;XkRX;tiLf<8|IJ+djV6z63fg%7vpbj4Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/log.cpython-312.pyc index 41cb30619208612c8cb9cf29ebd09e0515802ba7..eb4d610ae1adee8703d16b27e4d8f04ae61020fd 100644 GIT binary patch delta 52 zcmZ4Pwcd;SG%qg~0}ym?y1J3OfK@6|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%{@ GEO`LA@(~>X delta 44 ycmZ4QwcLyQG%qg~0}#}|xw4VFfK@0^KO;XkRX;tiLf<8|IJ+djVDnVgS@Hlu=noqJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/lorem_ipsum.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/lorem_ipsum.cpython-312.pyc index ba796613d7d84b0d064a4a27085f0ecab5fab9a8..7dd0cc43a2862ba0fe562f1949eb951b5eb398e7 100644 GIT binary patch delta 52 zcmZ3jwONb%G%qg~0}ym?y1J2jDz{Xkenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8le@UMEG%qg~0}ym?y1J435~Ea#enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_Y# Gw|N1^*%AW) delta 44 ycmca4e@dSFG%qg~0}#}|xw4V_5~EOzenx(7s(yN2g}zH_adt_5!RGIbw|N0f2M_@O diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/numberformat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/numberformat.cpython-312.pyc index 6d7f6f59d6fa3d3728337f05772e6c7077a9bc39..4e7518ee5afa5de2792525df40a93b95ee1089e2 100644 GIT binary patch delta 52 zcmbOvJxiMVG%qg~0}ym?y1J2jHm6jQenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-wV Gx0nH^r4b+i delta 44 ycmbOwJxQATG%qg~0}#}|xw4UaHm6XOenx(7s(yN2g}zH_adt_5!R7;;x0nGk8xI}; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/regex_helper.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/regex_helper.cpython-312.pyc index 1349dc5d8da859dcaf01938ce317fe5d71aa0967..47434ae55b32a561d2fe2ccc495ace3c3427a7b3 100644 GIT binary patch delta 52 zcmZ1+zB-)yG%qg~0}ym?y1J435|dPtenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_X~ GTQmU7;u0AE delta 44 ycmZ1-zBruwG%qg~0}#}|xw4V_5|dDrenx(7s(yN2g}zH_adt_5!RGHwTQmSs2oM(l diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/safestring.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/safestring.cpython-312.pyc index d1c70d953504cadfc61c70ff4c8a8c7a5ffbb2ed..578890517170d82e6e0be9ddf9f661256212eaf2 100644 GIT binary patch delta 51 zcmca2en*`9G%qg~0}ym?y1I~?St>z4BR@A)KRvHP-zBv;yClCr-`y`lH{8`}vn=y= F4gjDr5Gnuw delta 43 xcmca3enp)7G%qg~0}#}|xw4R(Stvq3BR@A)KRvHP-zBv;yClD0vnum;4gf4N4k!Qs diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/termcolors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/termcolors.cpython-312.pyc index d284b0ed3787172576d031b1719550b534c10f3b..9777a2c9bee9cf48f13b3335c469dcc198718e62 100644 GIT binary patch delta 52 zcmbPfwa|+DG%qg~0}ym?y1J2Dky9!`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o;Y GZD9bULlB1m delta 44 ycmZ2zHPedwG%qg~0}#}|xw4U4ky9u_KO;XkRX;tiLf<8|IJ+djV6z+NZD9Z~ISz#Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/text.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/text.cpython-312.pyc index 56dfd819c2fc68c8585decb85e4927d80d923b3c..abbbcf2ae9b5f8ee67e3fda8145ec3d288278098 100644 GIT binary patch delta 54 zcmZqcV(jZ;!sol3JWyl3$?j?iZmO?&`Ez IjOBv^0NQ8~40h!sol3JWyl3%b{j^%>`09+;y A;s5{u diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/timesince.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/timesince.cpython-312.pyc index 5fcf8bc911d1fd3489433175712dcabfa85a53ec..f959216dc87ae5729e257034a442d9e71fc3308c 100644 GIT binary patch delta 52 zcmdn2yIYt0G%qg~0}ym?y1J3OOh77LKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cua9)7>G%qg~0}ym?x;l}2t5lkPMt*LpetKSozDsIxc1eDLzPn$9Zn&${#!IE_ E0H2Hz7XSbN delta 42 wcmX>va9n`I1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|q1_ GZeaksX%N2v delta 44 ycmeyQ`%0JlG%qg~0}#}|xw4U4h*>B|KO;XkRX;tiLf<8|IJ+djV6!>%ZeajJ_YS=P diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/__pycache__/version.cpython-312.pyc index e5f6d7a5e7a0086ce36578e83df645632d41a557..c50b39d80002d2d6c76d3c77e922e338681bf34a 100644 GIT binary patch delta 52 zcmX@BdR3MCG%qg~0}ym?y1J432D4PGenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?^cDG8WHdS delta 44 ycmaDC|16&SG%qg~0}#}|xw4V_5VKH{enx(7s(yN2g}zH_adt_5!RF`8>^cBv$PexS diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/reloader.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/reloader.cpython-312.pyc index ffae39e6bef01d9524230053f220188f8e279437..5623e81a3ac51fbb93dadd3012dce714ed125df1 100644 GIT binary patch delta 52 zcmew$@I!$6G%qg~0}ym?y1J43E|XN2enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=1H GWvl?v&k^DP delta 44 ycmew%@Iiq4G%qg~0}#}|xw4V_E|XA_enx(7s(yN2g}zH_adt_5!Dc4rGFAXl01n{* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/template.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/template.cpython-312.pyc index af43a8823d579d329f7a4a44374dd68ebc62f86c..2675c2e6860d974597eaa441eae5929d49aab7f7 100644 GIT binary patch delta 52 zcmeD1n&8EKnwOW00SLM`UERoS%_NnjpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^j!l GgAxFzj1ZXs delta 44 ycmbQ>)#1f`nwOW00SM~fT-nHN%_NkhpOK%Ns-K=$q3@DfoL!P%usMNggAxETst%U` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/trans_null.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/trans_null.cpython-312.pyc index aeb0605d5afc81aa3ed37072c9c56656b2c79628..f12e2a68064515a5ec6d60a4901f0e2e2c5a0e96 100644 GIT binary patch delta 50 zcmaDQ_(_oaG%qg~0}ym?x;l~jrc{o8Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#&2KP E0kiNDEC2ui delta 42 wcmew)_)3ubG%qg~0}#}|xiXRarcjE0Mt*LpetKSozDsIxc1eE0#(!Vf0Xkz4DgXcg diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/trans_real.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/utils/translation/__pycache__/trans_real.cpython-312.pyc index 364ed4c48d08de94aaf95747a2519dfaf075d77f..80f469d83c5370bebef13be7f16ca71b5866f483 100644 GIT binary patch delta 54 zcmdmYo$=UpM()$Ryj%=G(7oyEM(*WoQaSn=`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JkFfnp0RRgP6ORA@ delta 46 zcmX?hopIlFM()$Ryj%=GQ2*x2M(*WoLMi$g`MIh3>3J3UE~&-YCHV!L&#?VU0RVr4-7i8n+|_Bb IE6e_D0O2zc<^TWy delta 46 zcmeBqz}WJDk^3|+FBbz4)W5m1kz0dBC|ExuKQ~oBJ+DIFCAB!aB)?#@FU$UH0Awi- A$Yn G9WDUBoDo+5 delta 44 ycmaE&az};xG%qg~0}#}|xw4TvnO!JMKO;XkRX;tiLf<8|IJ+djU~>oi9WDSy(hpSt diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/__pycache__/i18n.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/__pycache__/i18n.cpython-312.pyc index f391067d1051446aafdff10152d87d2bf6605d4f..e5f4e46199fa15f84e42188991402d0b041d54e1 100644 GIT binary patch delta 52 zcmbP~H!F|(G%qg~0}ym?y1J2Dg;Od@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p5e GMO^^3hY;}q delta 44 ycmbQ0Hz|+%G%qg~0}#}|xw4U4g;OXSC+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pNk GTpj?j$Pj=4 delta 44 ycmcbmeMy`9G%qg~0}#}|xw4U4f>S6&KO;XkRX;tiLf<8|IJ+djV6!dfTpj>Ch7NuJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/__init__.cpython-312.pyc index 68d18d12b90b5b594012ba851c384900eef8fce5..c65aaf1f34ae5f61d785d8c6f96b45558611fd4f 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}ym?x;l~DSSnLLBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7i9 Dc0~`w delta 41 vcmX@bc!-hvG%qg~0}#}|xiXR4SSV3HBR@A)KRvHP-zBv;yClD0Vnh)D2Z9a4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/cache.cpython-312.pyc index f400fd137a95729e57335f0643fbe4febea55b05..5b436a6d01103135fc30efa2d4253a779a1c128b 100644 GIT binary patch delta 52 zcmZn=?-1uc&CAQh00iBeu5RSM$t;zopOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}uz G7drr_B@r9| delta 44 ycmeAWZxH7`&CAQh00i}Ku59GK$t)D7pOK%Ns-K=$q3@DfoL!P%u=yWz7drqk8xI-) diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/clickjacking.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/clickjacking.cpython-312.pyc index 42b46cc9a08521a7e9cbc43e1afde7a066b451bb..b093938cca3d2246a6d7abacc82bbbb5f13ee787 100644 GIT binary patch delta 52 zcmX>hctMc+G%qg~0}ym?y1J3uf=Mb@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%x3 GF&hA?9S}&1S G6(az*$`G>v delta 44 ycmey$`j(aZG%qg~0}#}|xw4Tvj8Q0FKO;XkRX;tiLf<8|IJ+djU~@HN6(ayZFb=T* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/csrf.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/csrf.cpython-312.pyc index 3e83f5ab6d1506d23af3e5e678cfad949d967b26..c3f3e3f0a2dc5e9cb0c17065ca2efe18c219c37c 100644 GIT binary patch delta 52 zcmca4a!Z8!G%qg~0}ym?y1J2jJ(Egb!T+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/debug.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/debug.cpython-312.pyc index c66eb95bfe67daaab097651de9c91b2d55bb0cfe..5d7cc9f936af7aa9c4e9a7183f4f2ea5426d7eb2 100644 GIT binary patch delta 52 zcmX>qdsdeFG%qg~0}ym?y1J2DfK@6@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pct G3{C*2ix4yb delta 44 ycmX>rdsLSDG%qg~0}#}|xw4U4fK@0?KO;XkRX;tiLf<8|IJ+djV6!Rf3{C(u2@Wy< diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/gzip.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/gzip.cpython-312.pyc index 21aaacf9bd0d81574e0878ba282c8b481b3ad2fa..0b8ec0a2d618a07ee5b663480a4b3e33a9579e0f 100644 GIT binary patch delta 51 zcmX@he3hB|G%qg~0}ym?y1J2Di%}|7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g+G F8vv5?5C8xG delta 43 xcmcc0e3qH}G%qg~0}#}|xw4U4i%}?6KO;XkRX;tiLf<8|IJ+djV6s1B8vr2d4gLTC diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/http.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/http.cpython-312.pyc index 36921d30e745c52e6a433b085148e1efd4139de0..92d3523df589cb094bacd9074288659c46613215 100644 GIT binary patch delta 52 zcmX@AeO8zKG%qg~0}#}|xw4U)iB%|8KO;XkRX;tiLf<8|IJ+djV6!^wG64WK2@Xa8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/vary.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/decorators/__pycache__/vary.cpython-312.pyc index f76fbd94d147fc28ce2bf81f2d8eae3b512935dd..24cbf69e74a5ca298b527457010e30ef1416452d 100644 GIT binary patch delta 52 zcmeyt+rY5KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4ZZ6 G^Naw&9}#T; delta 44 ycmey)@t%YGG%qg~0}#}|xw4VFnMo*4KO;XkRX;tiLf<8|IJ+djVDk#5^NavT%@1n; diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/base.cpython-312.pyc index 390d08349aaae64d8073860228b5e3c46aff0b6d..f93b6afa0733a5a6b3f5dff6ac17001a0f2302f1 100644 GIT binary patch delta 52 zcmew#*B;M(nwOW00SLM`UERoiky$E9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bbg GiP`|$G7>-l delta 44 ycmZpV{~yPFnwOW00SM~fT-nHdky$88KO;XkRX;tiLf<8|IJ+djVDmTTiP`{MA`m_R diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/dates.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/dates.cpython-312.pyc index 486baeae19e0ba8497b50b044b808cd9d94cc392..ae238ad202ea3bc7a6bf851eeae23e7169c7fbb3 100644 GIT binary patch delta 54 zcmX@|jq%JkM()$Ryj%=G(7oyEM(zhJQpx%m`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J|FXE30RSJr6P*A6 delta 46 zcmX@}jq%7gM()$Ryj%=GQ2*x2M(zhJLecse`MIh3>3J3UE~&-YCHV!LSy|o70Fy}& AoB#j- diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/detail.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/detail.cpython-312.pyc index 13ea36097419409e97ff4a3fe4b4f975845806b8..e069fdcce1e799e3fe137b339148da626865fedd 100644 GIT binary patch delta 52 zcmaE0^TLMvG%qg~0}ym?y1J436`NFwenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`I(| GNO1t#J`pSc delta 44 ycmaE1^T3AtG%qg~0}#}|xw4V_6`N3uenx(7s(yN2g}zH_adt_5!DfE;NO1sLR1Ycu diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/edit.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/edit.cpython-312.pyc index 684fbb53caf2f76b03f8dcf7e0dc7eb81de779a9..317893bc14a2cf97687995e2f75b2f8b7e4fa585 100644 GIT binary patch delta 52 zcmcba^)QS3G%qg~0}ym?y1J43KC@Jkenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;?S Gv4#NaKN5KW delta 44 ycmaEubu)|mG%qg~0}#}|xw4V_KC@7ienx(7s(yN2g}zH_adt_5!DbegSVI72Xb*S* diff --git a/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/list.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django/views/generic/__pycache__/list.cpython-312.pyc index bcda08b9912f3654392d8d096f2ca8fe8d996ed1..ebd4958ed25785862a179d49f227a61f3f750270 100644 GIT binary patch delta 52 zcmccSanFPMG%qg~0}ym?y1J437^_s0enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@yl G#c}}Ia1sOn delta 44 ycmccTam|DKG%qg~0}#}|xw4V_7^_f}enx(7s(yN2g}zH_adt_5!RFVj#c}{!o)7{6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/__init__.cpython-312.pyc index 28532f15e510dfffa50b4e96f25aac54144bd93a..8495527e4891f052cf040e0706f2e647fe205ade 100644 GIT binary patch delta 52 zcmbQkwS%V_ G9}@tbJP>05 delta 44 ycmZ3&HHVA)G%qg~0}#x7du1bcA(K#qenx(7s(yN2g}zH_adt_5!RBd9eM|r>unu|v diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/compat.cpython-312.pyc index df39641bf6d13f066284c5a592a24537961b508c..7048243b30355afb2ae97f5461197687d31d0f4c 100644 GIT binary patch delta 52 zcmX@jahZerG%qg~0}%9Xy1J2j2cuM+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?y; GWlR9MCJ`?H delta 44 ycmcc2ahiksG%qg~0}#x7du1c{4o0Cc{fzwFRQ>e43VoN<;_Q1P({wxjX diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/exceptions.cpython-312.pyc index 40331d0449bad8f0f3f279ca7071619be2ba7135..5b32eb61d4443c27fc802a40fd3a8432121f597c 100644 GIT binary patch delta 52 zcmaFE`h}JIG%qg~0}%9Xy1J1&gHb9;KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%)M GIwJtNoe;kO delta 44 ycmeyu`i7PJG%qg~0}#x7du1bc2BT1venx(7s(yN2g}zH_adt_5!RB7ZbVdL~p$^sn diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/fields.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/fields.cpython-312.pyc index 94832bde1e4e317689575121a6dd865cd06574df..da415f0ba329748619a1cefd4d913d0e7c7d524c 100644 GIT binary patch delta 52 zcmexS*HF)WnwOW00SJ0GUERn%fmJF_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cjv G)0P0+-V!3r!4_sOb}53 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/filters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/filters.cpython-312.pyc index 7802eab1b5a34bb377587091a4dc251aa1900235..fedf0c735b1d70a9b641825da11f6ed16a3eb746 100644 GIT binary patch delta 54 zcmdnKl4<`+ChpU`yj%=G(7WmCM($}`Qt|p3`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JH*>Lc0RZs<5;6b) delta 46 zcmdnLl4<)&ChpU`yj%=GF!Sw|joj0?gu?YR@^e%5)AK6yT~dp)OY#dg@8)9Z0swPe B5J><4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/filterset.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/filterset.cpython-312.pyc index 43c8fad7b647f6e569dfe5b9f34dc4d3e592aab9..a144549f53384aa39faf0dd48c2b98b92495b6b5 100644 GIT binary patch delta 54 zcmZ2Bk8#~RM()$Ryj%=G(7WmCM(&&JQi=K*`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jzp)#*0|4(25@P@W delta 46 zcmZ2Ck8#;NM()$Ryj%=GF!Sw|jodfcg(CGc@^e%5)AK6yT~dp)OY#dg|6@0B2LN#^ B5PARr diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/utils.cpython-312.pyc index ce222e3ed15e032f9e63c2421c0aa99a8def621e..59163504bffefde811f7cfdd1ec29f147719e3d0 100644 GIT binary patch delta 52 zcmeyJ-(0|bnwOW00SJ0GUERoifk`S>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4ckq GK2reRs}b4& delta 44 ycmZoJ_?^#vnwOW00SIQky|R(}0+Udvenx(7s(yN2g}zH_adt_5!RD__e5L?l`48~` diff --git a/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/django_filters/__pycache__/views.cpython-312.pyc index 203ac6ae3687577d85cc92a2254cf0ff2313730d..709c2c39e07abbf2c1350a8b7875584e58866f62 100644 GIT binary patch delta 52 zcmbQOvsj1wG%qg~0}%9Xy1J4346{_Menx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?1V GMnV9#zYz`q delta 44 ycmZ3iGh2uIG%qg~0}#x7du1c{8D^nS{fzwFRQ>e43VoN<;_Qe43VoN<;_Q Dh&>R` delta 41 vcmX@dbc~7nG%qg~0}#x7du1Z`3ZZoUjQreG{q(#FeV5eY?2`O~iDw%D7yS%%H!}b?1P&(v diff --git a/gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/INSTALLER b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/INSTALLER similarity index 100% rename from gnx-react/venv/lib/python3.12/site-packages/certifi-2025.8.3.dist-info/INSTALLER rename to gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/INSTALLER diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/LICENSE.rst b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/LICENSE.rst similarity index 100% rename from gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/LICENSE.rst rename to gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/LICENSE.rst diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/METADATA b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/METADATA similarity index 86% rename from gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/METADATA rename to gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/METADATA index 0bff4b7f..4a1b9492 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/METADATA +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/METADATA @@ -1,13 +1,12 @@ Metadata-Version: 2.1 Name: drf-yasg -Version: 1.21.7 +Version: 1.21.10 Summary: Automated generation of real Swagger/OpenAPI 2.0 schemas from Django Rest Framework code. Home-page: https://github.com/axnsan12/drf-yasg Author: Cristi V. Author-email: cristi@cvjd.me License: BSD License Keywords: drf django django-rest-framework schema swagger openapi codegen swagger-codegen documentation drf-yasg django-rest-swagger drf-openapi -Platform: UNKNOWN Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: BSD License Classifier: Development Status :: 5 - Production/Stable @@ -23,6 +22,7 @@ Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 Classifier: Framework :: Django Classifier: Framework :: Django :: 2.2 Classifier: Framework :: Django :: 3.0 @@ -30,20 +30,22 @@ Classifier: Framework :: Django :: 3.1 Classifier: Framework :: Django :: 3.2 Classifier: Framework :: Django :: 4.0 Classifier: Framework :: Django :: 4.1 +Classifier: Framework :: Django :: 4.2 Requires-Python: >=3.6 Description-Content-Type: text/x-rst -Requires-Dist: djangorestframework (>=3.10.3) -Requires-Dist: django (>=2.2.16) -Requires-Dist: pyyaml (>=5.1) -Requires-Dist: inflection (>=0.3.1) -Requires-Dist: packaging (>=21.0) -Requires-Dist: pytz (>=2021.1) -Requires-Dist: uritemplate (>=3.0.0) +License-File: LICENSE.rst +Requires-Dist: djangorestframework>=3.10.3 +Requires-Dist: django>=2.2.16 +Requires-Dist: pyyaml>=5.1 +Requires-Dist: inflection>=0.3.1 +Requires-Dist: packaging>=21.0 +Requires-Dist: pytz>=2021.1 +Requires-Dist: uritemplate>=3.0.0 Provides-Extra: coreapi -Requires-Dist: coreapi (>=2.3.3) ; extra == 'coreapi' -Requires-Dist: coreschema (>=0.0.4) ; extra == 'coreapi' +Requires-Dist: coreapi>=2.3.3; extra == "coreapi" +Requires-Dist: coreschema>=0.0.4; extra == "coreapi" Provides-Extra: validation -Requires-Dist: swagger-spec-validator (>=2.1.0) ; extra == 'validation' +Requires-Dist: swagger-spec-validator>=2.1.0; extra == "validation" .. role:: python(code) :language: python @@ -52,15 +54,15 @@ Requires-Dist: swagger-spec-validator (>=2.1.0) ; extra == 'validation' drf-yasg - Yet another Swagger generator ######################################## -|actions| |nbsp| |codecov| |nbsp| |rtd-badge| |nbsp| |pypi-version| +|actions| |nbsp| |codecov| |nbsp| |rtd-badge| |nbsp| |pypi-version| |nbsp| |gitter| Generate **real** Swagger/OpenAPI 2.0 specifications from a Django Rest Framework API. Compatible with - **Django Rest Framework**: 3.10, 3.11, 3.12, 3.13, 3.14 -- **Django**: 2.2, 3.0, 3.1, 3.2, 4.0, 4.1 -- **Python**: 3.6, 3.7, 3.8, 3.9, 3.10, 3.11 +- **Django**: 2.2, 3.0, 3.1, 3.2, 4.0, 4.1, 4.2 +- **Python**: 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12 Only the latest patch version of each ``major.minor`` series of Python, Django and Django REST Framework is supported. @@ -71,14 +73,14 @@ through a deprecation cycle of a few minor releases. Resources: -* **Source**: https://github.com/axnsan12/drf-yasg/ -* **Documentation**: https://drf-yasg.readthedocs.io/ -* **Changelog**: https://drf-yasg.readthedocs.io/en/stable/changelog.html -* **Live demo**: https://drf-yasg-demo.herokuapp.com/ +* `Sources `_ +* `Documentation `_ +* `Changelog `_ +* `Live demo `_ +* `Discussion `_ |heroku-button| - **************** OpenAPI 3.0 note **************** @@ -149,14 +151,14 @@ The preferred installation method is directly from pypi: .. code:: console - pip install -U drf-yasg + pip install --upgrade drf-yasg Additionally, if you want to use the built-in validation mechanisms (see `4. Validation`_), you need to install some extra requirements: .. code:: console - pip install -U drf-yasg[validation] + pip install --upgrade drf-yasg[validation] .. _readme-quickstart: @@ -200,7 +202,7 @@ In ``urls.py``: ) urlpatterns = [ - path('swagger/', schema_view.without_ui(cache_timeout=0), name='schema-json'), + path('swagger./', schema_view.without_ui(cache_timeout=0), name='schema-json'), path('swagger/', schema_view.with_ui('swagger', cache_timeout=0), name='schema-swagger-ui'), path('redoc/', schema_view.with_ui('redoc', cache_timeout=0), name='schema-redoc'), ... @@ -344,7 +346,7 @@ You can use the specification outputted by this library together with $ docker run --rm -v ${PWD}:/local swaggerapi/swagger-codegen-cli generate -i /local/tests/reference.yaml -l javascript -o /local/.codegen/js -See the github page linked above for more details. +See the GitHub page linked above for more details. .. _readme-testproj: @@ -360,8 +362,8 @@ For additional usage examples, you can take a look at the test project in the `` $ virtualenv venv $ source venv/bin/activate (venv) $ cd testproj - (venv) $ python -m pip install -U pip setuptools - (venv) $ pip install -U -r requirements.txt + (venv) $ python -m pip install --upgrade pip setuptools + (venv) $ pip install --upgrade -r requirements.txt (venv) $ python manage.py migrate (venv) $ python manage.py runserver (venv) $ firefox localhost:8000/swagger/ @@ -383,7 +385,7 @@ djangorestframework-recursive Integration with `djangorestframework-recursive `_ is provided out of the box - if you have ``djangorestframework-recursive`` installed. -.. |actions| image:: https://img.shields.io/github/workflow/status/axnsan12/drf-yasg/Review +.. |actions| image:: https://img.shields.io/github/actions/workflow/status/axnsan12/drf-yasg/review.yml?branch=master :target: https://github.com/axnsan12/drf-yasg/actions :alt: GitHub Workflow Status @@ -395,6 +397,10 @@ provided out of the box - if you have ``djangorestframework-recursive`` installe :target: https://pypi.org/project/drf-yasg/ :alt: PyPI +.. |gitter| image:: https://badges.gitter.im/drf-yasg.svg + :target: https://app.gitter.im/#/room/#drf-yasg:gitter.im + :alt: Gitter + .. |rtd-badge| image:: https://img.shields.io/readthedocs/drf-yasg.svg :target: https://drf-yasg.readthedocs.io/ :alt: ReadTheDocs @@ -434,4 +440,32 @@ for display the Base64 fields correctly. else: return 'pdf' +************ +Contributing +************ +This repository adheres to semantic versioning standards. For more +information on semantic versioning visit `SemVer `_. + +To keep our process simple we merge pull requests into the master branch we use +git tags for releases. We use labels to mark which issues are intended for each +version. For example: + +.. figure:: ./docs/images/flow.png + :width: 70% + :figwidth: image + :alt: Git flow + :align: center + +Labels +====== + +- New issues without a version are given a ``triage`` label. + +- Issues are labeled ``bug``, ``enhancement`` or ``question`` to describe their + content + +- Once given a version, an issue will either have an assignee or be given a + ``help wanted`` label + +- A question that hasn't been answered will be given an ``unanswered`` label diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/RECORD similarity index 81% rename from gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/RECORD rename to gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/RECORD index 9d782cf2..34506edf 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/RECORD +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/RECORD @@ -1,11 +1,11 @@ -drf_yasg-1.21.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -drf_yasg-1.21.7.dist-info/LICENSE.rst,sha256=UzGd4V_BWMNqAFaICyjIs1I5w3g0Snr-hNWw6YL-TWY,1639 -drf_yasg-1.21.7.dist-info/METADATA,sha256=7HoFKIQp0WdpRCYvWavnOg2a574ULG9AyGt3SlWaY3Y,16007 -drf_yasg-1.21.7.dist-info/RECORD,, -drf_yasg-1.21.7.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -drf_yasg-1.21.7.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92 -drf_yasg-1.21.7.dist-info/top_level.txt,sha256=GzwSSUdnwQRQ8b_CyQvPz0yYEhaZV8Hme8BrlYhkkug,9 -drf_yasg/__init__.py,sha256=ydQ7DqAOm38dXniI0dK4GVFkd-ubGq7BB3rbgtzfxY4,287 +drf_yasg-1.21.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +drf_yasg-1.21.10.dist-info/LICENSE.rst,sha256=UzGd4V_BWMNqAFaICyjIs1I5w3g0Snr-hNWw6YL-TWY,1639 +drf_yasg-1.21.10.dist-info/METADATA,sha256=O9LDGJQcHd0-h-O3mlmI4UuxcyyTb8ABv6dnQEXqLNk,17173 +drf_yasg-1.21.10.dist-info/RECORD,, +drf_yasg-1.21.10.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +drf_yasg-1.21.10.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92 +drf_yasg-1.21.10.dist-info/top_level.txt,sha256=GzwSSUdnwQRQ8b_CyQvPz0yYEhaZV8Hme8BrlYhkkug,9 +drf_yasg/__init__.py,sha256=Zk_2JkOxQoVVoLhz520V2ak9XUvjaB03MEXAicfHKos,435 drf_yasg/__pycache__/__init__.cpython-312.pyc,, drf_yasg/__pycache__/app_settings.cpython-312.pyc,, drf_yasg/__pycache__/codecs.cpython-312.pyc,, @@ -16,7 +16,7 @@ drf_yasg/__pycache__/openapi.cpython-312.pyc,, drf_yasg/__pycache__/renderers.cpython-312.pyc,, drf_yasg/__pycache__/utils.cpython-312.pyc,, drf_yasg/__pycache__/views.cpython-312.pyc,, -drf_yasg/app_settings.py,sha256=YFHfREt8eA-WobudHHV5BIitdgwVqgqd3ZunXzxx0hI,4251 +drf_yasg/app_settings.py,sha256=lXQopEFhN9hfEobuW9GdmP3Eq4N9hD24x2RuCX5ljaI,4438 drf_yasg/codecs.py,sha256=kJs-DuV66ecZxD1igt7XGDf1ZfKLtobsEfi6cFNVMBM,7802 drf_yasg/errors.py,sha256=sfDVvNLqKGkmDuoDViQDve4R3xhYDsf75gU6R2EP1ms,380 drf_yasg/generators.py,sha256=vcf3BFJxYvEb54lQha1GwuCnmURjzEi61XkmPtGmC8s,26364 @@ -27,7 +27,7 @@ drf_yasg/inspectors/__pycache__/field.cpython-312.pyc,, drf_yasg/inspectors/__pycache__/query.cpython-312.pyc,, drf_yasg/inspectors/__pycache__/view.cpython-312.pyc,, drf_yasg/inspectors/base.py,sha256=YISM68P55QQaT7rOxNZvbhxQ_-0Kt3EYgbuDbrK8iDg,21217 -drf_yasg/inspectors/field.py,sha256=UnOJc2VQGN9bl4O9lP_27pDuguLZDdDUpaYvUBh6vZ0,35003 +drf_yasg/inspectors/field.py,sha256=CZBgmZGn0NZFyiSjtTiGg_JT-Qyir6bjefiJs2kseuU,35309 drf_yasg/inspectors/query.py,sha256=WRdCOZ4Altfl1sPUwLab5MtJUkjGPA93Ohyba88Tq_c,4924 drf_yasg/inspectors/view.py,sha256=HGWIWMl1mZkp2tgD4PM3RyLYuGl_L_4EzTJkVXVGdxw,17639 drf_yasg/management/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 @@ -37,8 +37,8 @@ drf_yasg/management/commands/__pycache__/__init__.cpython-312.pyc,, drf_yasg/management/commands/__pycache__/generate_swagger.cpython-312.pyc,, drf_yasg/management/commands/generate_swagger.py,sha256=7XoTMZw0QF2QcjmPonc-Lm-43ANg1GFMj9M53bmpjsI,6523 drf_yasg/middleware.py,sha256=DUyfMffwybsZU5i7YlMPS9iy-6VXZA9J-I3bT57afzs,799 -drf_yasg/openapi.py,sha256=HwTb08RfIGcyozbK4tuvadBkH9t-1mFrfWHJ2NuR7uY,31035 -drf_yasg/renderers.py,sha256=N2v2iMruaC-E5AW6UcPkDQCpxTc28IbzhWBsI19vhVw,8107 +drf_yasg/openapi.py,sha256=850yFrSGwtrtPK7mr7ZcTSZqFWBOZjW4SqyKoJ_o1ag,31035 +drf_yasg/renderers.py,sha256=7ZVssC0KBEl0-8j1Y6eh2E-YQGDspq-d0GnwVS_kbaI,8310 drf_yasg/static/drf-yasg/README,sha256=6Maug8UcMmmohB2DFyqbkKMpteUUW-k8SbC1XDyZw3c,520 drf_yasg/static/drf-yasg/immutable.js,sha256=m1Jds09_KiSf-55aQe2m8SzLRdHVAdJmAMhDEHI2ATY,142352 drf_yasg/static/drf-yasg/immutable.min.js,sha256=-0IwgnFxUKpHZPXBhTQkuv-Dqy0eDno7myZB6OOjORA,56904 @@ -72,9 +72,9 @@ drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui-standalone-preset.js.map,sha drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui.css,sha256=RXm4uga517Y84t07A_Jg2Yo0YRCyZ-jGF00X2jw2YjQ,145206 drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui.css.map,sha256=VH4Fk6LbhMDyFx5JPt1N9FcPMqO7MfWIcZwBX0q307s,251096 drf_yasg/static/drf-yasg/swagger-ui-dist/swagger-ui.js.map,sha256=_RT15uSIUcwaFC2JWKETu81WyFSCKHLOzhQO6x0vIdI,304572 -drf_yasg/static/drf-yasg/swagger-ui-init.js,sha256=-SmJClN1g33RwVx4h_NSf6G3QyACZGUsk_0Bcaevlss,14964 +drf_yasg/static/drf-yasg/swagger-ui-init.js,sha256=WZCeIzIsgYbIOif8IFA4s1fcEchNndKvspe_ZUfol3s,15480 drf_yasg/templates/drf-yasg/redoc-old.html,sha256=3UhYrp8OnIitnSUPu0siNqfiIS8QiEiW6zxQex2CNyo,598 drf_yasg/templates/drf-yasg/redoc.html,sha256=43jrmXeRxhjOqqvlsTEiZySHNdzshgXm1K-o5-W5roU,1515 drf_yasg/templates/drf-yasg/swagger-ui.html,sha256=oaBGwOqZSCTn-o-WUPNQDc5GW78MFybFV6oMTp5z64E,3349 -drf_yasg/utils.py,sha256=2vvNPJP5xBTiWG5teQyJnj8BWww5T7ZYUMgGTg3efhQ,23681 -drf_yasg/views.py,sha256=SJy-NjDW0khcP8QJBhOjNv0Btd79fd60lailJvxiIhs,7068 +drf_yasg/utils.py,sha256=KFGHZTcCQx8j11hQf_kcuGRXtQrmkUpR-4Savib0_Yk,23930 +drf_yasg/views.py,sha256=ZvHpaOsb6KG9PnL8YQtk0Brca9mjIoRIDZJ855U5O7w,7860 diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/REQUESTED b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/REQUESTED similarity index 100% rename from gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/REQUESTED rename to gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/REQUESTED diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/WHEEL b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/WHEEL similarity index 65% rename from gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/WHEEL rename to gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/WHEEL index e7fa31b6..79d5c89a 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/WHEEL +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/WHEEL @@ -1,5 +1,5 @@ Wheel-Version: 1.0 -Generator: setuptools (80.9.0) +Generator: bdist_wheel (0.45.1) Root-Is-Purelib: true Tag: py3-none-any diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/top_level.txt b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/top_level.txt similarity index 100% rename from gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/top_level.txt rename to gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.10.dist-info/top_level.txt diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/INSTALLER b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/WHEEL b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/WHEEL deleted file mode 100644 index 1f37c02f..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg-1.21.7.dist-info/WHEEL +++ /dev/null @@ -1,5 +0,0 @@ -Wheel-Version: 1.0 -Generator: bdist_wheel (0.40.0) -Root-Is-Purelib: true -Tag: py3-none-any - diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__init__.py index 21c6d57e..0f8df57a 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__init__.py +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__init__.py @@ -1,11 +1,15 @@ # coding=utf-8 -from pkg_resources import DistributionNotFound, get_distribution __author__ = """Cristi V.""" __email__ = 'cristi@cvjd.me' try: - __version__ = get_distribution(__name__).version -except DistributionNotFound: # pragma: no cover - # package is not installed - pass + from importlib.metadata import version + __version__ = version(__name__) +except ImportError: # Python < 3.8 + try: + from pkg_resources import DistributionNotFound, get_distribution + __version__ = get_distribution(__name__).version + except DistributionNotFound: # pragma: no cover + # package is not installed + pass diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/__init__.cpython-312.pyc index fda01cbf3bff54c6d107e961a4e5873635258b81..c6ed555bab2f991381c9036eb2a0c71cf923fcac 100644 GIT binary patch literal 637 zcmYjOO=uHA6n?Y2lk6tlP=W>&MX@5LkgPuka}crG`h(D;nnf74*)iEB`@`%cO?s*q z4<5XUf)}siu?H`Lc=jYkOczAZleeY4l$?BZQ6wC3>{}^1e&-;bPa}T6V}LKt>)H^+ro>bclKd@z0{h*o2|jB zTle|jY+jWl`2iQP7Y0=&Ikt#e;jQ!~^5sz83HyPY%(l5??$MKKAt^BC^kpX$j3owR z+;_Yl!m{T_p^!aq1s$a0I?@p;`XoAIf#Y+O6d5~k%*g$zeo2T>BxclYGr{AqFIqen z8up3ob>G7-W|-JkC-k}14u;kukGnFAth>vPYmb(0WqUQjotCr)JQ!H$Z$%@#UU0R3 z`HB^LlGh@q)pgoDwp{U)jhwh`G3EuHWUL;ICi-OsPr;Npny- zy-^s?oZ2u_%^>DaZGO9a;?2da^4zlrd*gh02Xe$r6-v!t`n~PSg?GcP%B3Hb#@|yCIE&%;RkbNeIzJP}CA0=(C ANB{r; delta 351 zcmey%a*w(GG%qg~0}#x7dnH4jk%8echyw#GP{!v7AY(d13PTEG4nrcN@_zbe(SCD>2er~FMdR~RT zOKNd;Nq)iPg^WJod_Xyn%Zn|6#0O?ZM#kq14i9)`8n|xo$TV<%U}0h8yeXu#z~Zuy u&UGP^i$W%i-al@zOMhZuV&r_t!tsF>NdGDZdAd(XkzpaLCi4nLO=bW}^;fn4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/app_settings.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/app_settings.cpython-312.pyc index 647206b072fe00c773269c127dee85a4c9e851ef..9fbe2764a757be5bf4d5d127e10a656de71c6dd2 100644 GIT binary patch delta 1570 zcmZvaUrbw79LMiz?=81LJ6J0q|60Zv)~!?q+rUk>(tBx3p{;Exin0njSLi6T-j;3X zTp#9>Sz?!KOifHAOMEc%!N`+|i7!5Ae8DV6a+4({d-Clt-U{lQ|@B50z9a0hOCXypzA;TJV@ zofSC9IrMabr}?N#339q{H}1i`d6Y*$9_#|^eO}#*UH_@xhff$NFW`QNsUmz54?yTC zJP7tBW_`@QjN3pt%?h1i){lok2{7*~%sY(Ff--_f!JcEvc@}vgPe&SC5%Bl}80Ra5 zU&U>C_%1YH7aoN7BC~@T+=efGAuq@f`q~4uV7CZi0Z)7+;L8s!e4h)Au!}}~MQhOP z-vkf#vCzcSNliYYHgCCnp`B%PSIo|()m$hsn+#@hDK)OBDK(WgyVLW*a9B;{{@2?Q zN~fkEDG`gRxp;6^HMtT|gOJY@`N=4Uce|?IINRPs&jKFyH7?r0DXHzfQH2h6oG`kaTl2MelHJw4o%r9?N zG*#D&x;{-sIi_uKq*Lj1DxZ~=G)3CUwBA@MlxaJdRgW28Hv7<)@k_ITRAbRG5}08{ zN_w%R>6I;3Q=bFvYeAod51%MRSJbQ-KRSjcn1iC(a&T>FHIs?P!)fSE$I=ha$#kYv zB@xOU1~`n<&f%s64RTZSg0bj4k3z<$&QsO5sBqZ!nS2RuaI>II=o&ca36;NxpO07( zLXQRSW8o|j6Uc4Z6MJ?&F=D0bKSj@OUxY|>O=LmxJQW;$HezRdQjolR^2nY%N+jzE z8yR5g8A0lQDu@HND)BR6Optm&@Yu*WV+9FPS3O&g5EU^Y0)nfikSND#z_wb2#5l$Q z+v_4pa7@zd&%@i1-JzME@uTiEd7V2_EKdHTWB9j@VUk9PPC9euh&snZv&JXK+N<*% z-hqhjdWI}+bP^eU0d<}=&q$mp5t{u zS4|~r91DP+ZHcUN+@M$mE^;mb_tq=qJ&qN?j=Gy{a=Za}yf#X1a=ZoTu4Ty<$M*qg zrw=&Z2Be4gA;&v_z4e=<%JGUtkUHzbBxp&XIXIn3;GQ}rAz(m-xkri0aSD*`Da0{|K{`cBN%u7{&V@e07B0tydJ?+*Ps!NOj4D4A7x*+Qtz|fx2WfTZvRFo zGqv>s-%|Lmo^ON7O4BfV>S~M7mA~XA_}ALou8g18yr1(Y-ZSA)UcZpLQmHnkXYzWb zk=HL(i+oC}@t?IJ9OXOO8lKpy^eyA`dDzYJAcg{xgz>VLU2d(??9$rJY@QmQnyof} z)=%*&FYNiEl7p;_yXRe^=AvmbCabgerHPpilYv2!tRU?RAfH8Z?e-is&F0#YF}ZF~ z)-YZXemon^b44#q0xmTA6M*DBEPR&5YZw)l*~(J@<{p z6+`v`&9ef(<;&n3{IQSY9M27$$QI?vTAQ`nl$jg$nd~xn4-hNC%Tl+VWoP&BOHuX7&8c`Tr93aKC>FmwDNL8lU4|`o}is z<%T!KUTW{bpIcv{XW1ew$Okii2NiCN@eWGvpyNWR;IPY5;@gR`aLf3qlGsiag(_pA zAvLj!d?}CUvw0M$NlQCnX(xs19`=Z|?H)zy$SzXSo|-sj8)uLj2P5GT@7SEjNR4%C z-J;O3Z4|)>b@HO*;0J&QI;JQ)co8ttRm6;gm-sJ%$mV4S>aaH0t%?sF{0J~`JJLP) z{kuOZe*{m7tB$__esFtVS~MKK2JG)BV$s3tfZ@)p_}D=L80zSPI`|1jsWB^=wh|*x zqj4(~vG&J~SmCG@iCKv;D>i5i4O_8Vvllqj+j}-X(9gjRInUPwZPz$t8 GVKo4(BM`m- delta 44 ycmZ13J3UE~&-YCHV#V?tT%v;jT`b Jzp+&20stHx6OjM_ delta 46 zcmezVgz^0oM()$Ryj%=GF!Sw|jodd`ghKQ)@^e%5)AK6yT~dp)OY#dg|6{4l1puN) B5&QrE diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/middleware.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/middleware.cpython-312.pyc index 102d36fb95f734a242c3b34809215aea839b16de..6f5144dee314c000059a82bfd790c789f055aa65 100644 GIT binary patch delta 52 zcmeyu{fC?TG%qg~0}xnjzPgdyhfyj%rH GHwyr*!4Pl& delta 44 ycmeyv{e_$RG%qg~0}#x7du1cH52H|senx(7s(yN2g}zH_adt_5!RA87ZWaJV!VcR2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/openapi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/openapi.cpython-312.pyc index cf35f10277b610fc288679fb5c97d5298d367358..3ca16aa727c5acd936e5d2ed4a893b2310a574cc 100644 GIT binary patch delta 134 zcmdnBk!jyXChpU`yj%=GV6pk?M(#Q`sYv~d{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z zv)OhqbJYOVPGy|VP{J_zgSqJBA}&kD(#h+%&N5!yT*G}Mgv*W*MZP#eo4J&+c=O_f aXDoadg;g(bcwSKVybL6TH&0JhHU3J3UE~&-YCHV!L7qjhPW~`eW z!xhezt--)hBv`|c#Xb39nDFEYVVsk%bFE^$w7H47%Q6vt;A$4P9j6UT8r*58R8dz-J)rb(2LHi_ffsq;Y{r6Hi!GWM2yICivl zNcaTK4&_`Rp>^^ucZLTVe7bPUbU~vV zrS8HRVl)rx&Vcz0nKJj|Y4W<+Z<(MVS4PF{b_)&|jTXK#zgwnz0qi8R8E!ju=y*~Dso z{#cApEeL!vKO>|Cb*E=xQZ*IMP%O`_uJD4e2q;Q^Z5r~-fN21k1(yn;9qcX;h^1&D z9*;#Mgh`U^#!<4#-ZSVZhY6H?aqG+X#8&bN_Whsz3|KGah6gmL5S7lYaC(gI(yBYYx7gN9@jjh7PXg;XM+6=;6AhQiyf2<|A> z1gB%CS443EazBAQfSM0>F)n(?l@^Njyog544v6f)&yXZAc7}IGzGY9zY*=K&cgyZh z-)GNO{mxPE8``~2veEq9fLdB`V1y`0hDwo%$CK$qE|=uf>3IAjEaWK7(cgxKN+qV2 z#v<{zc=h)3x>D^e7G_%Ju}3W=6LsY(g=N|aH$l|3jbP1?M_$L6T1MJKWmNhM6gRyW zuI*n8^zD_V7(bd##`p|9p}f$U-mFs9%JMyqP@M@%#v+ct7TsN*!Z!9&Z>e}1H)8@cmkW+0h1=?}l freP1!ZtnuNV$XVX57BP#s0MTESN}w`Q7%g5XawhY$vt7Zv556U+cBA{#e(l3r&+KkScMTHi@?crAY}$V1>psZk(jr zH6Ja7Myimw01`u+Mzlu`ZPY4gCB&sC1X2S%thCiiIRIxQq!rDL3vbqZ6xhT6jec+5 zym_-TJ1_tElK*>-^APrJ{%S03rM~o!ID==(OKU6j^7++w$|vgTa%=6PR(FoNJ1@Hq zT~OCn;jX8jhT$jA%??K3lJ`{_)=ckX2OZb$`CoImkF#*fBm@E@?nyMKVKy*KXW)}S zJ|r`sb}$hHK}q87l=d+2d53!e?bqQ#Btz%5k0M7Yor7-KUaK7!zl}*ZT&QHMMt=(v$EY+QZwqy@+o6nMmGUm-^<#x}r1?O~G%` z(Znp8UX-)w(y5ftE~CisLM+N6Eyeoj6x@#e5OOh$&w28TgOClb5@Y{45-c7Y43g)-#duyTDSX^kW zDRW9w3Tu)uLGwx&x45%o^5luJ+3A_u+>ET8XG~=`vvRg8umazvkL>%H60%M#M-XTx zel^(b`Ps)C!eLXW=t9MEF<`j~7d2uHIN^L*yr%Xk?F?+0%OVw6z~mH{o(de$dQU^{e@+6+jjw zT;3=QnFU!d$W{nZm~efD*l&teU94IWLFo}0F! zh+>3G8<}U#%qcx{%8DaO{43WaBA#%(F_$o@uYM47*`kabbE`WX7q zxmSSq`(Am@Za@50$`r~9lU=S>JJ(!L)pPY`vsSx96@^iim7I*We}dgi4G4*%C+Z5f z`?H~qiAywXx1OK5N?l5mEy^Z}9ovW2EbL^HMZ58wPd6U!+1KCzu-RGvb9f+-3w)o__RH4|Gf7W9=L(B z!Q|;T+IgdV0bffJ-GuF~DEuyM@OH)iGnZQ!0p$T~7klZJ_ORGbyX|SUYh?%90QED$W diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/utils.cpython-312.pyc index f1e90c848964d3869118b6dd9164a3224d1293b9..fac58407945a7f91be137ae3b97ee259d9ebac35 100644 GIT binary patch delta 3296 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 aJnJP$`?5NMw%LG;bR$7JXhFIerT+$-jW1&W delta 2932 zcmZ`*eQaCR759Dq$am8uPMXAVZ6{6>=gT!sn>K}%q^)UbAX(EUYns$~_+2MX9NWF` zr72ZQ8_}_D0zo;jts4kJnV@t6Hm}mgrXrz<300jKtI&9215Id%KVX$W>OTJ2IoFOG zCibNKa_{**=bm$tOE=gXe`IT}m6a7+@VoH&jhUs1^J{9^i|1S38C5Kt&F&(`*FWBL znPn;Ce#LT+MJqpR(bn?j%hnuqgQQjoAg@m9@w)-oQ@suA0? z8pL*O9b$)8i`c2vA$Do?h(XPTxKZUc}8>v*tto7OfF) zJz5ju)(2T&!)FxM{Q+i{3<-@3uI+*j$&RRaO&Hvd}DBLS7)bE7Lw#CgPBN_-KZ#|v7D?s$TfyKN5Z)VK?fr~Xj z$k)Qw!y(^ZCNdX&N0l-^X_8jJDw@IP4>+X3R`9jvpEmciyY3`MiditD>Z)M~vtXJVbRg$> zn}x^Xd@&MD=-*`Sb$FoV1$RCe(T{51AXoAWGPjc;0JE)AU8I3eVo#(N`Pbdq{$J!7 z=m~t@vmF&pTLQB*OJeba!9^sQN^)6p)3K07Z7#wjWRDwsUKh3GbT=Gsb9LQIWUHD; znAQYO3YopfERp%mb7Ll@iLE5Pji3)+Y&&pz2Oakj3=rHy&_fU;Xd&24u!*1p!E|IT znFZP3y4XmpPJ%9iZi04#HiA0{LIhh7bPs|z|J@CX?bX;IkF{@MM>D@`@3KzH-l!Cl zq;Z5mMk7s0qZC8doAfJPO7k*c>FsvFG8Xci%_IUtK^MB43)b1Ekm`f)1>2ZA^UL5a z#{BTFjf2^4jKIE7h+TtIAy<=ZdKr`=I9ZAy=nBG=SN5G*2g9K{uZSV(E#j?3_~#kR zSCv+~?`E;3wEA6}Q@ArL-x> zC)l_7eddP7Eq^N|%Q|g3%mdc;xExD(zGZ<>PaoDK-Sd*tA-h-+W5_VA@nj^R$hk4? zX;rB6vI^d86+|oS>}_Yokm?;{2jTa- z9wLY#f^30~sfh)yqqj$pW)`KeFe0vTeYHokbe@Z89?6Cx9!1G==&oflTEkfvq_34(Bf)`m?BBH!yEk_P5UV@8)akKj0e+P z3?m^Mz1>(yC%8BWMFXyKxtZ=K9)Slo4LpqHU+SyNygTrPvPTXt*%E+oiJ8SZ7jZQa zKf%Sy+aSZNi={-AM{YAC@uY63$tV}g$Pa-dyp*%M96qG<{)kLoAowxCa|o-=IdKoJ zHWp2&x-KrF)K2K$`xut+t-Yrd_fJUo8G>gKOoy6I^Q0!S@xsJl$oXAjK8>K;5UBaE zmzD=>?JwhX46Y6?psnuv4k`{Jh-cyPp?YkOSBA!GWqXuTAkkD(Uzq2*_&LfXGY!La zR=Gd(eIkQ=ZI>FyOgi$VDH$X)HP(ot&W z0-ef@2nCQ9DQzK&0sIQ39?AF)v?^>r+&kL9!Z1A=#*OjnXpQ|%WIhe=jPAukSEzNF zjpFU%e8wawvzgqIG#Tp33?W=?Xlo5TpH z6E5}|oSJCD6qYBP#qS~S3XZ%!0B=q-*`A7izYjj0@VKNi+G#6a-q`^7Cc~@|W+pqW zB}NIHnRLRQ$ujuOPBPbW|?)aSi1fDBr|FteWW4tvm;e3)QgNj znOT8LLGZNTI<7F)h^La-_M*%MRot}45-HWdWNt=kpn9ssc~w%gD}rK{JvThnRQw@c z-lpu1!l|ikYtQZeq@d!7=4YJGc`kTv6a?UtsSfPM3iU5meAj1n<2<1?jiCi{)(`AA($1^Jh3=WXc3La)P;m0{*E#qW>h}FTK%MI zJz-xkVx3#VrbEXSA2kBo1dWwhkVs8WlZWeYE#_zM!_C-r_FK3*{jJkx5!xL@Hf}w+ zAY@36)C02|m#6&a&5I_)6hVxDR=c3}Emy1Dg>v7>1$CRCo{(wE z*m33>@lFjP2jt&{ch2K*BzT{=g*2?LMgP{!pLq}G1{ DljhFA diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/__pycache__/views.cpython-312.pyc index b78f1121e7a93f77b60997acb32fa786e5a19841..cd99fd9c9cc15af4583b927b1adbc4a87a591d97 100644 GIT binary patch delta 1989 zcmZuxS!`QH6n$eqJ6_^Ai{m7Y6HmIOrb*m|R^8InO`LR#TiGpXLtESNo7hggG4G{W zl#&SLqZO4POlk8`L4QEd2&s~b1YbxKWo_A0I8QD#=s=OvV9!n$$Js3U` zWZxn8bHho0|KY+t^dWK$_>#E{@g=eoz8)fvD!II`FLRF| z>uk~RRHq1R#^ydneM$}ZRT*)Vv=^hKQ=FyQBHtDS2^T69o2Cnbq@RO%kFdC6SVWpK zWn1=i-;Q8UzS~Py`9$0=qSrr+h=0cu+6_J z7$RATP(txKykg~LELmG+939TlOiYR5WK72KWGtH?5>|3Jn^SNq8&8i(1jlf+BZ~8s z45udAa6V09GQn~xO|o%5!=87;a zoc2R`k@7rl8YwG{69k3xMU`P)sh!lTl$EU0XoT-6uurS(GiVq|f`q`PzME2vHcr8i zLZxfELu{sJT??h$7GpS!BWauR}_`WJSmzY zk!&nOA`$8XBar$f?$bNtX<2151}5_*?Eq7&*w2*>((VMwl8HRsGYB@h7vMMH$*l0F zAhuZURo2|KH!Q5ajknz1y8o8vz-{}%WrJX=db{R|d)|Fbzi{>=(~Z@i>A$diZux%m zzFV!`cglMn=wazo*$7*`;V<)>QGC9tws6DRr$Y|*#MbX^0T12DfoEAX^9*QA$bedE+21wJ4LpJ#=FkrSbf_*CIb~%JcHh|yhgs^n5Mu}HT8;ca5*OK$!%=v%?vf4-Fzj+|QWqN4 z^ymhNc##1;!KWty)LN-W&%)WGt{v!o_JQm4`jtP^b_fYVGdcHyUOlbl>$FKF<)mf4 z#%#p)gczYp#8 z4ru=hTF%$owM5h$)NFVn+Qr(q*2!UrL!1LYlM)WY91o@J}S zjF-vwnfkV=gMI9AcjWlZPI2IjSJS0Oxu%w$zmjLB-I<&; fmL_}X>+GRtlcfyl9t!|V)vN<|nI{o)s?q-d5ii}t delta 1122 zcmY+DO-vI}5XblJ2Xra4&_W9>ZTV2iDhL>3{NO_)r4qGbD}E5jwzLZrXp3*F5(-^oVAi!NOtz|m zDrD=k?o~D!0tYKI8D6pu_{O~Dp!kS+PV~+f^G5GnVWoG(Fc(Y3Wq2>$V%tHN6YT-q zjkh8!^I%wC_t7=lv3h`JBl|aKcm&_EF-= z-1W!UGFbi@lo)LO!aQ*dYBK*%0|oYA43@L^M7U zO+*t(OI|4E3fvZ{s)%Tq_OBX#l7E+=*&CAQh00b7BuWsZPWtB?R&&bbB)lbi>(055K&MwI>(0BKX&<%HWnry^+ F831ef4_g2L delta 43 xcmeC>Y31QQ&CAQh00cANUfIYk$|@AApOK%Ns-K=$q3@DfoL!P%FxiUrG5`&~4aNWf diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/__pycache__/base.cpython-312.pyc index 51714465b1f02287169f12da317596f68352bc2c..4ff255bdb4732cf54d109095714c6132406095d7 100644 GIT binary patch delta 54 zcmZ2>fN|XcM()$Ryj%=GV6pk?M(#IEQi=K*`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b IIhkc+0qy}2a{vGU delta 46 zcmZ2?fN|LYM()$Ryj%=GF!Sw|jofdTgd+7b@^e%5)AK6yT~dp)OY#dg3o^^b0swki B58eO( diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/__pycache__/field.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/__pycache__/field.cpython-312.pyc index 98a114c15d3b882461ccb6f9c185b3506f80bed3..ddcce51519e1630ac423dba75e81a0103653304e 100644 GIT binary patch delta 10926 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 P5N4&eI@Q-o3BdmY`V$p0sq$vncH2?U&Uf+7Yj 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 B5KI67 diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/field.py b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/field.py index 9b767a8e..10be17ac 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/field.py +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/inspectors/field.py @@ -6,9 +6,7 @@ import uuid from contextlib import suppress from collections import OrderedDict from decimal import Decimal -from inspect import signature as inspect_signature -import pkg_resources import typing from django.core import validators from django.db import models @@ -23,7 +21,20 @@ from ..utils import ( decimal_as_float, field_value_to_representation, filter_none, get_serializer_class, get_serializer_ref_name ) -drf_version = pkg_resources.get_distribution("djangorestframework").version +try: + from importlib import metadata + drf_version = metadata.version("djangorestframework") +except ImportError: # Python < 3.8 + import pkg_resources + drf_version = pkg_resources.get_distribution("djangorestframework").version + +try: + from types import NoneType, UnionType + + UNION_TYPES = (typing.Union, UnionType) +except ImportError: # Python < 3.10 + NoneType = type(None) + UNION_TYPES = (typing.Union,) logger = logging.getLogger(__name__) @@ -189,7 +200,7 @@ def get_queryset_from_view(view, serializer=None): if queryset is not None and serializer is not None: # make sure the view is actually using *this* serializer - assert type(serializer) == call_view_method(view, 'get_serializer_class', 'serializer_class') + assert type(serializer) is call_view_method(view, 'get_serializer_class', 'serializer_class') return queryset except Exception: # pragma: no cover @@ -476,15 +487,6 @@ def decimal_return_type(): return openapi.TYPE_STRING if rest_framework_settings.COERCE_DECIMAL_TO_STRING else openapi.TYPE_NUMBER -def get_origin_type(hint_class): - return getattr(hint_class, '__origin__', None) or hint_class - - -def hint_class_issubclass(hint_class, check_class): - origin_type = get_origin_type(hint_class) - return inspect.isclass(origin_type) and issubclass(origin_type, check_class) - - hinting_type_info = [ (bool, (openapi.TYPE_BOOLEAN, None)), (int, (openapi.TYPE_INTEGER, None)), @@ -501,11 +503,15 @@ hinting_type_info = [ if hasattr(typing, 'get_args'): # python >=3.8 typing_get_args = typing.get_args + typing_get_origin = typing.get_origin else: # python <3.8 def typing_get_args(tp): return getattr(tp, '__args__', ()) + def typing_get_origin(tp): + return getattr(tp, '__origin__', None) + def inspect_collection_hint_class(hint_class): args = typing_get_args(hint_class) @@ -521,12 +527,6 @@ def inspect_collection_hint_class(hint_class): hinting_type_info.append(((typing.Sequence, typing.AbstractSet), inspect_collection_hint_class)) -def _get_union_types(hint_class): - origin_type = get_origin_type(hint_class) - if origin_type is typing.Union: - return hint_class.__args__ - - def get_basic_type_info_from_hint(hint_class): """Given a class (eg from a SerializerMethodField's return type hint, return its basic type information - ``type``, ``format``, ``pattern``, @@ -536,12 +536,12 @@ def get_basic_type_info_from_hint(hint_class): :return: the extracted attributes as a dictionary, or ``None`` if the field type is not known :rtype: OrderedDict """ - union_types = _get_union_types(hint_class) - if union_types: + if typing_get_origin(hint_class) in UNION_TYPES: # Optional is implemented as Union[T, None] - if len(union_types) == 2 and isinstance(None, union_types[1]): - result = get_basic_type_info_from_hint(union_types[0]) + filtered_types = [t for t in typing_get_args(hint_class) if t is not NoneType] + if len(filtered_types) == 1: + result = get_basic_type_info_from_hint(filtered_types[0]) if result: result['x-nullable'] = True @@ -549,8 +549,15 @@ def get_basic_type_info_from_hint(hint_class): return None + # resolve the origin class if the class is generic + resolved_class = typing_get_origin(hint_class) or hint_class + + # bail out early + if not inspect.isclass(resolved_class): + return None + for check_class, info in hinting_type_info: - if hint_class_issubclass(hint_class, check_class): + if issubclass(resolved_class, check_class): if callable(info): return info(hint_class) @@ -613,17 +620,19 @@ class SerializerMethodFieldInspector(FieldInspector): return self.probe_field_inspectors(serializer, swagger_object_type, use_references, read_only=True) else: # look for Python 3.5+ style type hinting of the return value - hint_class = inspect_signature(method).return_annotation + hint_class = typing.get_type_hints(method).get('return') - if not inspect.isclass(hint_class) and hasattr(hint_class, '__args__'): - hint_class = hint_class.__args__[0] - if inspect.isclass(hint_class) and not issubclass(hint_class, inspect._empty): - type_info = get_basic_type_info_from_hint(hint_class) + # annotations such as typing.Optional have an __instancecheck__ + # hook and will not look like classes, but `issubclass` needs + # a class as its first argument, so only in that case abort + if inspect.isclass(hint_class) and issubclass(hint_class, inspect._empty): + return NotHandled - if type_info is not None: - SwaggerType, ChildSwaggerType = self._get_partial_types(field, swagger_object_type, - use_references, **kwargs) - return SwaggerType(**type_info) + type_info = get_basic_type_info_from_hint(hint_class) + if type_info is not None: + SwaggerType, ChildSwaggerType = self._get_partial_types(field, swagger_object_type, + use_references, **kwargs) + return SwaggerType(**type_info) return NotHandled diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/management/__pycache__/__init__.cpython-312.pyc index 92c4b54a1527868332afd058163836939c68e07d..809fd663739f803e7eb9443075a777790b59c825 100644 GIT binary patch delta 49 zcmdnTc#M(zG%qg~0}xnjzB-ZHSSnRNBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7}M DXv7a< delta 41 vcmX@cxQ~(hG%qg~0}#x7du1ZGu~4jjMt*LpetKSozDsIxc1eE0#E3iq2;B|M diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/management/commands/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/management/commands/__pycache__/__init__.cpython-312.pyc index e72ef31093dbcc5f13089fd57bcc6d87c5eff85d..31e7fa96638c0b7be353179d78dc4eff312f6acb 100644 GIT binary patch delta 49 zcmX@kc%G5_G%qg~0}xnjzB-ZHSSn9HBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8_n DZ88sr delta 41 vcmX@lc$|^@G%qg~0}#x7du1ZGu~3?RMt*LpetKSozDsIxc1eE0#E5bL408?f diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/management/commands/__pycache__/generate_swagger.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/management/commands/__pycache__/generate_swagger.cpython-312.pyc index ddf41f7a6d2cd9b55f861bb823b4373a0b419ec8..8e7ba3560c9411cca8d8171feaf17453980e9e79 100644 GIT binary patch delta 52 zcmaE7@y&w!G%qg~0}xnjzPgc{i%Y6ZKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p<) GyAS}k6%a50 delta 44 ycmexn@y>$#G%qg~0}#x7du1ax7ne|;enx(7s(yN2g}zH_adt_5!Df9fcOd{xo(`J; diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/openapi.py b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/openapi.py index 0a2cfb8f..9679c80d 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/openapi.py +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/openapi.py @@ -88,7 +88,7 @@ class SwaggerDict(OrderedDict): def __init__(self, **attrs): super(SwaggerDict, self).__init__() self._extras__ = attrs - if type(self) == SwaggerDict: + if type(self) is SwaggerDict: self._insert_extras__() def __setattr__(self, key, value): @@ -516,7 +516,7 @@ class _Ref(SwaggerDict): :param bool ignore_unresolved: do not throw if the referenced object does not exist """ super(_Ref, self).__init__() - assert not type(self) == _Ref, "do not instantiate _Ref directly" + assert not type(self) is _Ref, "do not instantiate _Ref directly" ref_name = "#/{scope}/{name}".format(scope=scope, name=name) if not ignore_unresolved: obj = resolver.get(name, scope) diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/renderers.py b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/renderers.py index 7d79aaf6..6c7728fd 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/renderers.py +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/renderers.py @@ -46,14 +46,14 @@ class OpenAPIRenderer(_SpecRenderer): class SwaggerJSONRenderer(_SpecRenderer): """Renders the schema as a JSON document with the generic ``application/json`` mime type.""" media_type = 'application/json' - format = '.json' + format = 'json' codec_class = OpenAPICodecJson class SwaggerYAMLRenderer(_SpecRenderer): """Renders the schema as a YAML document.""" media_type = 'application/yaml' - format = '.yaml' + format = 'yaml' codec_class = OpenAPICodecYaml @@ -153,6 +153,9 @@ class SwaggerUIRenderer(_UIRenderer): 'refetchWithAuth': swagger_settings.REFETCH_SCHEMA_WITH_AUTH, 'refetchOnLogout': swagger_settings.REFETCH_SCHEMA_ON_LOGOUT, 'fetchSchemaWithQuery': swagger_settings.FETCH_SCHEMA_WITH_QUERY, + 'csrfCookie': swagger_settings.CSRF_COOKIE_NAME, + # remove HTTP_ and convert underscores to dashes + 'csrfHeader': swagger_settings.CSRF_HEADER_NAME[5:].replace('_', '-'), } data = filter_none(data) diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/static/drf-yasg/swagger-ui-init.js b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/static/drf-yasg/swagger-ui-init.js index 9606a3be..4ef2fd51 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/static/drf-yasg/swagger-ui-init.js +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/static/drf-yasg/swagger-ui-init.js @@ -36,11 +36,26 @@ var swaggerUiConfig = { ], layout: "StandaloneLayout", filter: true, + csrfCookie: 'csrftoken', + csrfHeader: 'X-CSRFToken', requestInterceptor: function (request) { var headers = request.headers || {}; var csrftoken = document.querySelector("[name=csrfmiddlewaretoken]"); if (csrftoken) { - headers["X-CSRFToken"] = csrftoken.value; + csrftoken = csrftoken.value; + } else { + var cookies = document.cookie.split(/;\s+/); + var name = swaggerUiConfig.csrfCookie; + for (var i = 0; i < cookies.length; i++) { + if (cookies[i].indexOf(name) === 0) { + csrftoken = cookies[i].slice(cookies[i].indexOf('=') + 1); + break; + } + } + } + + if (csrftoken) { + headers[swaggerUiConfig.csrfHeader] = csrftoken; } return request; diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/utils.py b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/utils.py index 494ce48c..dc0b509b 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/utils.py +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/utils.py @@ -17,6 +17,15 @@ from rest_framework.views import APIView from .app_settings import swagger_settings +try: + import zoneinfo +except ImportError: + try: + from backports import zoneinfo + except ImportError: + zoneinfo = None + + logger = logging.getLogger(__name__) @@ -442,7 +451,7 @@ def force_real_str(s, encoding='utf-8', strings_only=False, errors='strict'): """ if s is not None: s = force_str(s, encoding, strings_only, errors) - if type(s) != str: + if type(s) is not str: s = '' + s # Remove common indentation to get the correct Markdown rendering @@ -465,7 +474,10 @@ def field_value_to_representation(field, value): else: value = str(value) - if isinstance(value, pytz.BaseTzInfo): + elif isinstance(value, pytz.BaseTzInfo): + value = str(value) + + elif zoneinfo is not None and isinstance(value, zoneinfo.ZoneInfo): value = str(value) # JSON roundtrip ensures that the value is valid JSON; diff --git a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/views.py b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/views.py index 977f2f4a..5bca782f 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/views.py +++ b/gnx-react/venv/lib/python3.12/site-packages/drf_yasg/views.py @@ -13,7 +13,9 @@ from .app_settings import swagger_settings from .renderers import ( ReDocOldRenderer, ReDocRenderer, + SwaggerJSONRenderer, SwaggerUIRenderer, + SwaggerYAMLRenderer, _SpecRenderer, ) @@ -77,6 +79,20 @@ def get_schema_view(info=None, url=None, patterns=None, urlconf=None, public=Fal validators = validators or [] _spec_renderers = tuple(renderer.with_validators(validators) for renderer in SPEC_RENDERERS) + # optionally copy renderers with the validators that are configured above + if swagger_settings.USE_COMPAT_RENDERERS: + warnings.warn( + "SwaggerJSONRenderer & SwaggerYAMLRenderer's `format` has changed to not include a `.` prefix, " + "please silence this warning by setting `SWAGGER_USE_COMPAT_RENDERERS = False` " + "in your Django settings and ensure your application works " + "(check your URLCONF and swagger/redoc URLs).", + DeprecationWarning) + _spec_renderers += tuple( + type(cls.__name__, (cls,), {'format': '.' + cls.format}) + for cls in _spec_renderers + if issubclass(cls, (SwaggerJSONRenderer, SwaggerYAMLRenderer)) + ) + class SchemaView(APIView): _ignore_model_permissions = True schema = None # exclude from schema diff --git a/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/__init__.cpython-312.pyc index 0303eb848d17dbff04eaa76ca8410119f09f2864..cc65a90279c75b00f3bd68397b5207495e53012c 100644 GIT binary patch delta 51 zcmX@cagKxgG%qg~0}ym=y1J1&k69{GKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>vF7 FZUCB`5U>CM delta 43 xcmX@dag2leG%qg~0}#}{xw4Tvk69>CKO;XkRX;tiLf<8|IJ+djVDe<<-2f)e4y^zH diff --git a/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/compat.cpython-312.pyc index dc603bca9d4fa13404343aec60e3a0ebf3ef3498..c5b4b0d824dbb37a28664d6fd77f844872ab429b 100644 GIT binary patch delta 52 zcmcb@e}|v@G%qg~0}ym=y1J43C8Jchenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GiN GbF2WuCJ_Sw delta 44 ycmcb^e}$j>G%qg~0}#}{xw4V_C8LnPenx(7s(yN2g}zH_adt_5!Dc?DbF2VIO%DJ7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/environ.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/environ.cpython-312.pyc index 416a9e3ebd0f9f96306d02e6114d3ed7bd22ed8e..3f9a8b55018b2e476a2aa373522f3287326d1954 100644 GIT binary patch delta 54 zcmX?no$2&-ChpU`yj%=G(6#C6Ms5dYsR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IvCL^J0Qy4`VgLXD delta 46 zcmX?oo$2s(ChpU`yj%=GQ2XY}Ms5dYp#c4i{M=Oi^t=jvm(=3ylKg_rsmy6B0C^G+ AUjP6A diff --git a/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/fileaware_mapping.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/environ/__pycache__/fileaware_mapping.cpython-312.pyc index 7e3c69770aac0224f12d14d09a9abb16ac79302d..1d00639c641ed4033dbb9c5b24dff73ff4313042 100644 GIT binary patch delta 52 zcmbQOuvmfnG%qg~0}ym=y1J436pK`nenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^+a GCfoqB3J~!C delta 44 ycmZ3iFk6B9G%qg~0}#}{xw4V_6pK)lenx(7s(yN2g}zH_adt_5!RGfYCfoozIS%ds diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER b/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md b/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md deleted file mode 100644 index 19b6b452..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/LICENSE.md +++ /dev/null @@ -1,31 +0,0 @@ -BSD 3-Clause License - -Copyright (c) 2013-2024, Kim Davies and contributors. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the copyright holder nor the names of its - contributors may be used to endorse or promote products derived from - this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED -TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA b/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA deleted file mode 100644 index c42623e9..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/METADATA +++ /dev/null @@ -1,250 +0,0 @@ -Metadata-Version: 2.1 -Name: idna -Version: 3.10 -Summary: Internationalized Domain Names in Applications (IDNA) -Author-email: Kim Davies -Requires-Python: >=3.6 -Description-Content-Type: text/x-rst -Classifier: Development Status :: 5 - Production/Stable -Classifier: Intended Audience :: Developers -Classifier: Intended Audience :: System Administrators -Classifier: License :: OSI Approved :: BSD License -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.6 -Classifier: Programming Language :: Python :: 3.7 -Classifier: Programming Language :: Python :: 3.8 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Internet :: Name Service (DNS) -Classifier: Topic :: Software Development :: Libraries :: Python Modules -Classifier: Topic :: Utilities -Requires-Dist: ruff >= 0.6.2 ; extra == "all" -Requires-Dist: mypy >= 1.11.2 ; extra == "all" -Requires-Dist: pytest >= 8.3.2 ; extra == "all" -Requires-Dist: flake8 >= 7.1.1 ; extra == "all" -Project-URL: Changelog, https://github.com/kjd/idna/blob/master/HISTORY.rst -Project-URL: Issue tracker, https://github.com/kjd/idna/issues -Project-URL: Source, https://github.com/kjd/idna -Provides-Extra: all - -Internationalized Domain Names in Applications (IDNA) -===================================================== - -Support for the Internationalized Domain Names in -Applications (IDNA) protocol as specified in `RFC 5891 -`_. This is the latest version of -the protocol and is sometimes referred to as “IDNA 2008”. - -This library also provides support for Unicode Technical -Standard 46, `Unicode IDNA Compatibility Processing -`_. - -This acts as a suitable replacement for the “encodings.idna” -module that comes with the Python standard library, but which -only supports the older superseded IDNA specification (`RFC 3490 -`_). - -Basic functions are simply executed: - -.. code-block:: pycon - - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - - -Installation ------------- - -This package is available for installation from PyPI: - -.. code-block:: bash - - $ python3 -m pip install idna - - -Usage ------ - -For typical usage, the ``encode`` and ``decode`` functions will take a -domain name argument and perform a conversion to A-labels or U-labels -respectively. - -.. code-block:: pycon - - >>> import idna - >>> idna.encode('ドメイン.テスト') - b'xn--eckwd4c7c.xn--zckzah' - >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) - ドメイン.テスト - -You may use the codec encoding and decoding methods using the -``idna.codec`` module: - -.. code-block:: pycon - - >>> import idna.codec - >>> print('домен.испытание'.encode('idna2008')) - b'xn--d1acufc.xn--80akhbyknj4f' - >>> print(b'xn--d1acufc.xn--80akhbyknj4f'.decode('idna2008')) - домен.испытание - -Conversions can be applied at a per-label basis using the ``ulabel`` or -``alabel`` functions if necessary: - -.. code-block:: pycon - - >>> idna.alabel('测试') - b'xn--0zwm56d' - -Compatibility Mapping (UTS #46) -+++++++++++++++++++++++++++++++ - -As described in `RFC 5895 `_, the -IDNA specification does not normalize input from different potential -ways a user may input a domain name. This functionality, known as -a “mapping”, is considered by the specification to be a local -user-interface issue distinct from IDNA conversion functionality. - -This library provides one such mapping that was developed by the -Unicode Consortium. Known as `Unicode IDNA Compatibility Processing -`_, it provides for both a regular -mapping for typical applications, as well as a transitional mapping to -help migrate from older IDNA 2003 applications. Strings are -preprocessed according to Section 4.4 “Preprocessing for IDNA2008” -prior to the IDNA operations. - -For example, “Königsgäßchen” is not a permissible label as *LATIN -CAPITAL LETTER K* is not allowed (nor are capital letters in general). -UTS 46 will convert this into lower case prior to applying the IDNA -conversion. - -.. code-block:: pycon - - >>> import idna - >>> idna.encode('Königsgäßchen') - ... - idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed - >>> idna.encode('Königsgäßchen', uts46=True) - b'xn--knigsgchen-b4a3dun' - >>> print(idna.decode('xn--knigsgchen-b4a3dun')) - königsgäßchen - -Transitional processing provides conversions to help transition from -the older 2003 standard to the current standard. For example, in the -original IDNA specification, the *LATIN SMALL LETTER SHARP S* (ß) was -converted into two *LATIN SMALL LETTER S* (ss), whereas in the current -IDNA specification this conversion is not performed. - -.. code-block:: pycon - - >>> idna.encode('Königsgäßchen', uts46=True, transitional=True) - 'xn--knigsgsschen-lcb0w' - -Implementers should use transitional processing with caution, only in -rare cases where conversion from legacy labels to current labels must be -performed (i.e. IDNA implementations that pre-date 2008). For typical -applications that just need to convert labels, transitional processing -is unlikely to be beneficial and could produce unexpected incompatible -results. - -``encodings.idna`` Compatibility -++++++++++++++++++++++++++++++++ - -Function calls from the Python built-in ``encodings.idna`` module are -mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. -Simply substitute the ``import`` clause in your code to refer to the new -module name. - -Exceptions ----------- - -All errors raised during the conversion following the specification -should raise an exception derived from the ``idna.IDNAError`` base -class. - -More specific exceptions that may be generated as ``idna.IDNABidiError`` -when the error reflects an illegal combination of left-to-right and -right-to-left characters in a label; ``idna.InvalidCodepoint`` when -a specific codepoint is an illegal character in an IDN label (i.e. -INVALID); and ``idna.InvalidCodepointContext`` when the codepoint is -illegal based on its positional context (i.e. it is CONTEXTO or CONTEXTJ -but the contextual requirements are not satisfied.) - -Building and Diagnostics ------------------------- - -The IDNA and UTS 46 functionality relies upon pre-calculated lookup -tables for performance. These tables are derived from computing against -eligibility criteria in the respective standards. These tables are -computed using the command-line script ``tools/idna-data``. - -This tool will fetch relevant codepoint data from the Unicode repository -and perform the required calculations to identify eligibility. There are -three main modes: - -* ``idna-data make-libdata``. Generates ``idnadata.py`` and - ``uts46data.py``, the pre-calculated lookup tables used for IDNA and - UTS 46 conversions. Implementers who wish to track this library against - a different Unicode version may use this tool to manually generate a - different version of the ``idnadata.py`` and ``uts46data.py`` files. - -* ``idna-data make-table``. Generate a table of the IDNA disposition - (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix - B.1 of RFC 5892 and the pre-computed tables published by `IANA - `_. - -* ``idna-data U+0061``. Prints debugging output on the various - properties associated with an individual Unicode codepoint (in this - case, U+0061), that are used to assess the IDNA and UTS 46 status of a - codepoint. This is helpful in debugging or analysis. - -The tool accepts a number of arguments, described using ``idna-data --h``. Most notably, the ``--version`` argument allows the specification -of the version of Unicode to be used in computing the table data. For -example, ``idna-data --version 9.0.0 make-libdata`` will generate -library data against Unicode 9.0.0. - - -Additional Notes ----------------- - -* **Packages**. The latest tagged release version is published in the - `Python Package Index `_. - -* **Version support**. This library supports Python 3.6 and higher. - As this library serves as a low-level toolkit for a variety of - applications, many of which strive for broad compatibility with older - Python versions, there is no rush to remove older interpreter support. - Removing support for older versions should be well justified in that the - maintenance burden has become too high. - -* **Python 2**. Python 2 is supported by version 2.x of this library. - Use "idna<3" in your requirements file if you need this library for - a Python 2 application. Be advised that these versions are no longer - actively developed. - -* **Testing**. The library has a test suite based on each rule of the - IDNA specification, as well as tests that are provided as part of the - Unicode Technical Standard 46, `Unicode IDNA Compatibility Processing - `_. - -* **Emoji**. It is an occasional request to support emoji domains in - this library. Encoding of symbols like emoji is expressly prohibited by - the technical standard IDNA 2008 and emoji domains are broadly phased - out across the domain industry due to associated security risks. For - now, applications that need to support these non-compliant labels - may wish to consider trying the encode/decode operation in this library - first, and then falling back to using `encodings.idna`. See `the Github - project `_ for more discussion. - diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD deleted file mode 100644 index 9cfce7f9..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/RECORD +++ /dev/null @@ -1,22 +0,0 @@ -idna-3.10.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -idna-3.10.dist-info/LICENSE.md,sha256=pZ8LDvNjWHQQmkRhykT_enDVBpboFHZ7-vch1Mmw2w8,1541 -idna-3.10.dist-info/METADATA,sha256=URR5ZyDfQ1PCEGhkYoojqfi2Ra0tau2--lhwG4XSfjI,10158 -idna-3.10.dist-info/RECORD,, -idna-3.10.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 -idna/__init__.py,sha256=MPqNDLZbXqGaNdXxAFhiqFPKEQXju2jNQhCey6-5eJM,868 -idna/__pycache__/__init__.cpython-312.pyc,, -idna/__pycache__/codec.cpython-312.pyc,, -idna/__pycache__/compat.cpython-312.pyc,, -idna/__pycache__/core.cpython-312.pyc,, -idna/__pycache__/idnadata.cpython-312.pyc,, -idna/__pycache__/intranges.cpython-312.pyc,, -idna/__pycache__/package_data.cpython-312.pyc,, -idna/__pycache__/uts46data.cpython-312.pyc,, -idna/codec.py,sha256=PEew3ItwzjW4hymbasnty2N2OXvNcgHB-JjrBuxHPYY,3422 -idna/compat.py,sha256=RzLy6QQCdl9784aFhb2EX9EKGCJjg0P3PilGdeXXcx8,316 -idna/core.py,sha256=YJYyAMnwiQEPjVC4-Fqu_p4CJ6yKKuDGmppBNQNQpFs,13239 -idna/idnadata.py,sha256=W30GcIGvtOWYwAjZj4ZjuouUutC6ffgNuyjJy7fZ-lo,78306 -idna/intranges.py,sha256=amUtkdhYcQG8Zr-CoMM_kVRacxkivC1WgxN1b63KKdU,1898 -idna/package_data.py,sha256=q59S3OXsc5VI8j6vSD0sGBMyk6zZ4vWFREE88yCJYKs,21 -idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -idna/uts46data.py,sha256=rt90K9J40gUSwppDPCrhjgi5AA6pWM65dEGRSf6rIhM,239289 diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL b/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL deleted file mode 100644 index 3b5e64b5..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna-3.10.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: flit 3.9.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/idna/__init__.py deleted file mode 100644 index cfdc030a..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/__init__.py +++ /dev/null @@ -1,45 +0,0 @@ -from .core import ( - IDNABidiError, - IDNAError, - InvalidCodepoint, - InvalidCodepointContext, - alabel, - check_bidi, - check_hyphen_ok, - check_initial_combiner, - check_label, - check_nfc, - decode, - encode, - ulabel, - uts46_remap, - valid_contextj, - valid_contexto, - valid_label_length, - valid_string_length, -) -from .intranges import intranges_contain -from .package_data import __version__ - -__all__ = [ - "__version__", - "IDNABidiError", - "IDNAError", - "InvalidCodepoint", - "InvalidCodepointContext", - "alabel", - "check_bidi", - "check_hyphen_ok", - "check_initial_combiner", - "check_label", - "check_nfc", - "decode", - "encode", - "intranges_contain", - "ulabel", - "uts46_remap", - "valid_contextj", - "valid_contexto", - "valid_label_length", - "valid_string_length", -] diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index f6d11df355d929e7d8c5853b84e712f4d8efd167..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 873 zcmbu7J&)5c7{~3jO`E3gZ^wYxkjT)Bco7pqf;)y=`T@LHZekkK*p3{xx{iDbb~Zi> zE0ZNACKiM^p_6XHP71>zvEbpC|MMjNKacbHW53@8c17PlWoZL|FE04Kyra0%R=fi# zNMQ~*M38&P;|=UfpAXQ057Cg1(1?%G zm`~6IIzKO;@)?>{x{=TM0xclefVBA@qLV`_^1nh`I+~dN#rf*ROO~=%N=an`7uIrg zA@(F^>6uJvA(_zTGH`_tSBdi8B{G=v#OCdw_<4~_4{fk z&Z*ew%uMTCsTC8OV={tfY>%jj*wC`FBTU$2i1D7Pl1YJaG*b)v)0CYiP)&!HgYVFG z=r{xpZuBa2=sENq1`czFp~J{w>@abdI?OCq(H+xFq@w>-=bt4^@aL#iL#9`dWJ@*_ zr$m$Lkfx0>$#aZ9fGgV+xLL)Shu+(^x@&j*0@85o?EnA( diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc deleted file mode 100644 index f6192c1270be1b6c3c863d8439f8ec1936348446..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4973 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 OdM%(Q*6+$!Z}%I-%G8Y&EXkqTW)fAA+B3P_bg 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 S4}SP<|NXO9+#UkYp8bDQ@J>1a diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc deleted file mode 100644 index e670fc59429a73b99109ec806060ebb7ef6ff6d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2625 zcmZuyO>7&-6`uX0Xi}6!36|uaSR*S5v>195D_zX+5T>os>sZM58_ zXP2?4QjJ>VAhiZ6AOXzW=tBS*zA!f*a}1D+WElvtFw#SN@ugs*oN{sBn(yRot;>cxXRw=8q zszfZ6DNH*6dX~mirdhF~j9gK*`aV-N!&_- zWZ-2#V7CwK20@yr$@-AFPa-67-u{HS)TEB>2h=N4+YMNWaX&-Lrp0Krf{W90UWFB_ zj#JY?)i0ZlL)~imHsdIDJhw!7)%6p=6g<~wg=zq9U-DJ(%9U!sz?icNXFhWSGq61u z&4W2ciykj0rluXPs>~Ozj@~tW zxe&;(ZDV8m5y*ITJ;mLfcBmelnLqDQbRj$Wh^sjExMy$@9qBqIsLBKM@%h_0H4APHA{w+%P{ zD#9pS7l4Vu1-b=>NZ_VhV*YOv6h;>e#yjHnjdyn7U_|&Z5Fm(%4E3vpIk;;x*mL2+ zOApP|Rz;X$!Z885cex#~P_n~Rp~^XwUF5*W zzJzI}^q0%IIXGpmDj=I}|*v2W)pHAtJA&mKRK^TFk@idmR9 z;kI(N<(fIjbF^)?QVU0RIHSnDvIvWh!iN3u`Cq|rnfyFNMh-Oge|~KFLOV6Me6F1y zS$_XnYWR!%+F!OtrnXYA|3qTi*oxFn_OIMo{Y`iMNph+^c(8GN^{>rC>sMOohc`AS z^DT38^3;>TQ|+Pg_V`ru{Z{(HrPh_l>922WjQ?&W)s7GRE47;XqTIaLn%sQ-WUKtm zA2;7U|Lx@FyBD@bKX@9y*xo<7n&_lpKM1Qoy*B#K(;MpeHUvsSO<*Hb;1UYm8o+ge zw5a}JAnubowDm>c>(U}r7vNvM^qhj^Ay9lA2#&SnqZOrmKQ0XPen(M~hTk%2!|qpC zFEsL-$s-%;5k3a1p~Uy}9o$vyj4AEz4Alz}$cq4{q71t$m-r!&I;i*J(-)sAgdYY{ zm-uTi`G~qG3ILYHc7eqwK=LN4pmU5TwKlwZe(g@<;^x>}8_Bmf)VHIcRJde=W7K=n zf_N0c{Q$(?rf5mMCbA^&w!@EAP<&-ToYWU$k?x~&bG9j5gWo(IOC zAiYZ}v^cd6Q7y>x2f<3KYocY!H3gcM@=~MQX}>}~w%7Zw_>H08sJYgZnyPDyr_Zv0 z@v`kg{TJyiOvx=;gxAr>x6h*<2)Zv^R37;J+=|FsSyA^K8}IdVx+d@t#%|m2doz&S974f>1Ji%oJ8P41u;Vy<3#q@N0#d)J_zK6=tO{%m-n z8Eg6vl3T->)jlvXh0#A|K)szD60p*fVV_}GUcoRpmIWNLR)Ge~5mOwY5-NBQL}ye$ z2-r})?RkzkkAS&wC64_|e5UMKRfqkaXF(Bh;;+E3qeznUqpV5l_5hIv{!NZ_Vk6Rl zM$kO-WvxSiT))xEKUP}rJv6qF?PMfrqA}7TFg5dHTF-AI*NIC~X6+g-Wg0h{`E{lF l-j`qmY$rY_r5k5D1g7=<>wfFZ`ohBr!9KqJGp>qA{||8^o`3)V diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc deleted file mode 100644 index 31e6ba4ff310ff7944626d3415f2e11a582a0ae1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204 zcmX@j%ge<81e))zWQYRk#~=<2FhUuhIe?7m3@Hpz43&(UOjRt#dWHsmnvA!&E~o7=@(R% zWaQ@o%`wt1&MZmQEl5nxPE1cN*3V4IOVo$*;!_e!67>oye{tC4=BJeAq}mm+0j&Tz Ws~F_!56p~=j5qj18o7&DfLs8e#WzL( diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc deleted file mode 100644 index e904f53b5bd599a9e878174aca3d4248ea3748b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158833 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 aYkCg5^p5nEX7;B7S7((>cQ0n25dS~Okx|b8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/codec.py b/gnx-react/venv/lib/python3.12/site-packages/idna/codec.py deleted file mode 100644 index 913abfd6..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/codec.py +++ /dev/null @@ -1,122 +0,0 @@ -import codecs -import re -from typing import Any, Optional, Tuple - -from .core import IDNAError, alabel, decode, encode, ulabel - -_unicode_dots_re = re.compile("[\u002e\u3002\uff0e\uff61]") - - -class Codec(codecs.Codec): - def encode(self, data: str, errors: str = "strict") -> Tuple[bytes, int]: - if errors != "strict": - raise IDNAError('Unsupported error handling "{}"'.format(errors)) - - if not data: - return b"", 0 - - return encode(data), len(data) - - def decode(self, data: bytes, errors: str = "strict") -> Tuple[str, int]: - if errors != "strict": - raise IDNAError('Unsupported error handling "{}"'.format(errors)) - - if not data: - return "", 0 - - return decode(data), len(data) - - -class IncrementalEncoder(codecs.BufferedIncrementalEncoder): - def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[bytes, int]: - if errors != "strict": - raise IDNAError('Unsupported error handling "{}"'.format(errors)) - - if not data: - return b"", 0 - - labels = _unicode_dots_re.split(data) - trailing_dot = b"" - if labels: - if not labels[-1]: - trailing_dot = b"." - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = b"." - - result = [] - size = 0 - for label in labels: - result.append(alabel(label)) - if size: - size += 1 - size += len(label) - - # Join with U+002E - result_bytes = b".".join(result) + trailing_dot - size += len(trailing_dot) - return result_bytes, size - - -class IncrementalDecoder(codecs.BufferedIncrementalDecoder): - def _buffer_decode(self, data: Any, errors: str, final: bool) -> Tuple[str, int]: - if errors != "strict": - raise IDNAError('Unsupported error handling "{}"'.format(errors)) - - if not data: - return ("", 0) - - if not isinstance(data, str): - data = str(data, "ascii") - - labels = _unicode_dots_re.split(data) - trailing_dot = "" - if labels: - if not labels[-1]: - trailing_dot = "." - del labels[-1] - elif not final: - # Keep potentially unfinished label until the next call - del labels[-1] - if labels: - trailing_dot = "." - - result = [] - size = 0 - for label in labels: - result.append(ulabel(label)) - if size: - size += 1 - size += len(label) - - result_str = ".".join(result) + trailing_dot - size += len(trailing_dot) - return (result_str, size) - - -class StreamWriter(Codec, codecs.StreamWriter): - pass - - -class StreamReader(Codec, codecs.StreamReader): - pass - - -def search_function(name: str) -> Optional[codecs.CodecInfo]: - if name != "idna2008": - return None - return codecs.CodecInfo( - name=name, - encode=Codec().encode, - decode=Codec().decode, - incrementalencoder=IncrementalEncoder, - incrementaldecoder=IncrementalDecoder, - streamwriter=StreamWriter, - streamreader=StreamReader, - ) - - -codecs.register(search_function) diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/compat.py b/gnx-react/venv/lib/python3.12/site-packages/idna/compat.py deleted file mode 100644 index 1df9f2a7..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/compat.py +++ /dev/null @@ -1,15 +0,0 @@ -from typing import Any, Union - -from .core import decode, encode - - -def ToASCII(label: str) -> bytes: - return encode(label) - - -def ToUnicode(label: Union[bytes, bytearray]) -> str: - return decode(label) - - -def nameprep(s: Any) -> None: - raise NotImplementedError("IDNA 2008 does not utilise nameprep protocol") diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/core.py b/gnx-react/venv/lib/python3.12/site-packages/idna/core.py deleted file mode 100644 index 9115f123..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/core.py +++ /dev/null @@ -1,437 +0,0 @@ -import bisect -import re -import unicodedata -from typing import Optional, Union - -from . import idnadata -from .intranges import intranges_contain - -_virama_combining_class = 9 -_alabel_prefix = b"xn--" -_unicode_dots_re = re.compile("[\u002e\u3002\uff0e\uff61]") - - -class IDNAError(UnicodeError): - """Base exception for all IDNA-encoding related problems""" - - pass - - -class IDNABidiError(IDNAError): - """Exception when bidirectional requirements are not satisfied""" - - pass - - -class InvalidCodepoint(IDNAError): - """Exception when a disallowed or unallocated codepoint is used""" - - pass - - -class InvalidCodepointContext(IDNAError): - """Exception when the codepoint is not valid in the context it is used""" - - pass - - -def _combining_class(cp: int) -> int: - v = unicodedata.combining(chr(cp)) - if v == 0: - if not unicodedata.name(chr(cp)): - raise ValueError("Unknown character in unicodedata") - return v - - -def _is_script(cp: str, script: str) -> bool: - return intranges_contain(ord(cp), idnadata.scripts[script]) - - -def _punycode(s: str) -> bytes: - return s.encode("punycode") - - -def _unot(s: int) -> str: - return "U+{:04X}".format(s) - - -def valid_label_length(label: Union[bytes, str]) -> bool: - if len(label) > 63: - return False - return True - - -def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool: - if len(label) > (254 if trailing_dot else 253): - return False - return True - - -def check_bidi(label: str, check_ltr: bool = False) -> bool: - # Bidi rules should only be applied if string contains RTL characters - bidi_label = False - for idx, cp in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - if direction == "": - # String likely comes from a newer version of Unicode - raise IDNABidiError("Unknown directionality in label {} at position {}".format(repr(label), idx)) - if direction in ["R", "AL", "AN"]: - bidi_label = True - if not bidi_label and not check_ltr: - return True - - # Bidi rule 1 - direction = unicodedata.bidirectional(label[0]) - if direction in ["R", "AL"]: - rtl = True - elif direction == "L": - rtl = False - else: - raise IDNABidiError("First codepoint in label {} must be directionality L, R or AL".format(repr(label))) - - valid_ending = False - number_type: Optional[str] = None - for idx, cp in enumerate(label, 1): - direction = unicodedata.bidirectional(cp) - - if rtl: - # Bidi rule 2 - if direction not in [ - "R", - "AL", - "AN", - "EN", - "ES", - "CS", - "ET", - "ON", - "BN", - "NSM", - ]: - raise IDNABidiError("Invalid direction for codepoint at position {} in a right-to-left label".format(idx)) - # Bidi rule 3 - if direction in ["R", "AL", "EN", "AN"]: - valid_ending = True - elif direction != "NSM": - valid_ending = False - # Bidi rule 4 - if direction in ["AN", "EN"]: - if not number_type: - number_type = direction - else: - if number_type != direction: - raise IDNABidiError("Can not mix numeral types in a right-to-left label") - else: - # Bidi rule 5 - if direction not in ["L", "EN", "ES", "CS", "ET", "ON", "BN", "NSM"]: - raise IDNABidiError("Invalid direction for codepoint at position {} in a left-to-right label".format(idx)) - # Bidi rule 6 - if direction in ["L", "EN"]: - valid_ending = True - elif direction != "NSM": - valid_ending = False - - if not valid_ending: - raise IDNABidiError("Label ends with illegal codepoint directionality") - - return True - - -def check_initial_combiner(label: str) -> bool: - if unicodedata.category(label[0])[0] == "M": - raise IDNAError("Label begins with an illegal combining character") - return True - - -def check_hyphen_ok(label: str) -> bool: - if label[2:4] == "--": - raise IDNAError("Label has disallowed hyphens in 3rd and 4th position") - if label[0] == "-" or label[-1] == "-": - raise IDNAError("Label must not start or end with a hyphen") - return True - - -def check_nfc(label: str) -> None: - if unicodedata.normalize("NFC", label) != label: - raise IDNAError("Label must be in Normalization Form C") - - -def valid_contextj(label: str, pos: int) -> bool: - cp_value = ord(label[pos]) - - if cp_value == 0x200C: - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - - ok = False - for i in range(pos - 1, -1, -1): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord("T"): - continue - elif joining_type in [ord("L"), ord("D")]: - ok = True - break - else: - break - - if not ok: - return False - - ok = False - for i in range(pos + 1, len(label)): - joining_type = idnadata.joining_types.get(ord(label[i])) - if joining_type == ord("T"): - continue - elif joining_type in [ord("R"), ord("D")]: - ok = True - break - else: - break - return ok - - if cp_value == 0x200D: - if pos > 0: - if _combining_class(ord(label[pos - 1])) == _virama_combining_class: - return True - return False - - else: - return False - - -def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: - cp_value = ord(label[pos]) - - if cp_value == 0x00B7: - if 0 < pos < len(label) - 1: - if ord(label[pos - 1]) == 0x006C and ord(label[pos + 1]) == 0x006C: - return True - return False - - elif cp_value == 0x0375: - if pos < len(label) - 1 and len(label) > 1: - return _is_script(label[pos + 1], "Greek") - return False - - elif cp_value == 0x05F3 or cp_value == 0x05F4: - if pos > 0: - return _is_script(label[pos - 1], "Hebrew") - return False - - elif cp_value == 0x30FB: - for cp in label: - if cp == "\u30fb": - continue - if _is_script(cp, "Hiragana") or _is_script(cp, "Katakana") or _is_script(cp, "Han"): - return True - return False - - elif 0x660 <= cp_value <= 0x669: - for cp in label: - if 0x6F0 <= ord(cp) <= 0x06F9: - return False - return True - - elif 0x6F0 <= cp_value <= 0x6F9: - for cp in label: - if 0x660 <= ord(cp) <= 0x0669: - return False - return True - - return False - - -def check_label(label: Union[str, bytes, bytearray]) -> None: - if isinstance(label, (bytes, bytearray)): - label = label.decode("utf-8") - if len(label) == 0: - raise IDNAError("Empty Label") - - check_nfc(label) - check_hyphen_ok(label) - check_initial_combiner(label) - - for pos, cp in enumerate(label): - cp_value = ord(cp) - if intranges_contain(cp_value, idnadata.codepoint_classes["PVALID"]): - continue - elif intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTJ"]): - try: - if not valid_contextj(label, pos): - raise InvalidCodepointContext( - "Joiner {} not allowed at position {} in {}".format(_unot(cp_value), pos + 1, repr(label)) - ) - except ValueError: - raise IDNAError( - "Unknown codepoint adjacent to joiner {} at position {} in {}".format( - _unot(cp_value), pos + 1, repr(label) - ) - ) - elif intranges_contain(cp_value, idnadata.codepoint_classes["CONTEXTO"]): - if not valid_contexto(label, pos): - raise InvalidCodepointContext( - "Codepoint {} not allowed at position {} in {}".format(_unot(cp_value), pos + 1, repr(label)) - ) - else: - raise InvalidCodepoint( - "Codepoint {} at position {} of {} not allowed".format(_unot(cp_value), pos + 1, repr(label)) - ) - - check_bidi(label) - - -def alabel(label: str) -> bytes: - try: - label_bytes = label.encode("ascii") - ulabel(label_bytes) - if not valid_label_length(label_bytes): - raise IDNAError("Label too long") - return label_bytes - except UnicodeEncodeError: - pass - - check_label(label) - label_bytes = _alabel_prefix + _punycode(label) - - if not valid_label_length(label_bytes): - raise IDNAError("Label too long") - - return label_bytes - - -def ulabel(label: Union[str, bytes, bytearray]) -> str: - if not isinstance(label, (bytes, bytearray)): - try: - label_bytes = label.encode("ascii") - except UnicodeEncodeError: - check_label(label) - return label - else: - label_bytes = label - - label_bytes = label_bytes.lower() - if label_bytes.startswith(_alabel_prefix): - label_bytes = label_bytes[len(_alabel_prefix) :] - if not label_bytes: - raise IDNAError("Malformed A-label, no Punycode eligible content found") - if label_bytes.decode("ascii")[-1] == "-": - raise IDNAError("A-label must not end with a hyphen") - else: - check_label(label_bytes) - return label_bytes.decode("ascii") - - try: - label = label_bytes.decode("punycode") - except UnicodeError: - raise IDNAError("Invalid A-label") - check_label(label) - return label - - -def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: - """Re-map the characters in the string according to UTS46 processing.""" - from .uts46data import uts46data - - output = "" - - for pos, char in enumerate(domain): - code_point = ord(char) - try: - uts46row = uts46data[code_point if code_point < 256 else bisect.bisect_left(uts46data, (code_point, "Z")) - 1] - status = uts46row[1] - replacement: Optional[str] = None - if len(uts46row) == 3: - replacement = uts46row[2] - if ( - status == "V" - or (status == "D" and not transitional) - or (status == "3" and not std3_rules and replacement is None) - ): - output += char - elif replacement is not None and ( - status == "M" or (status == "3" and not std3_rules) or (status == "D" and transitional) - ): - output += replacement - elif status != "I": - raise IndexError() - except IndexError: - raise InvalidCodepoint( - "Codepoint {} not allowed at position {} in {}".format(_unot(code_point), pos + 1, repr(domain)) - ) - - return unicodedata.normalize("NFC", output) - - -def encode( - s: Union[str, bytes, bytearray], - strict: bool = False, - uts46: bool = False, - std3_rules: bool = False, - transitional: bool = False, -) -> bytes: - if not isinstance(s, str): - try: - s = str(s, "ascii") - except UnicodeDecodeError: - raise IDNAError("should pass a unicode string to the function rather than a byte string.") - if uts46: - s = uts46_remap(s, std3_rules, transitional) - trailing_dot = False - result = [] - if strict: - labels = s.split(".") - else: - labels = _unicode_dots_re.split(s) - if not labels or labels == [""]: - raise IDNAError("Empty domain") - if labels[-1] == "": - del labels[-1] - trailing_dot = True - for label in labels: - s = alabel(label) - if s: - result.append(s) - else: - raise IDNAError("Empty label") - if trailing_dot: - result.append(b"") - s = b".".join(result) - if not valid_string_length(s, trailing_dot): - raise IDNAError("Domain too long") - return s - - -def decode( - s: Union[str, bytes, bytearray], - strict: bool = False, - uts46: bool = False, - std3_rules: bool = False, -) -> str: - try: - if not isinstance(s, str): - s = str(s, "ascii") - except UnicodeDecodeError: - raise IDNAError("Invalid ASCII in A-label") - if uts46: - s = uts46_remap(s, std3_rules, False) - trailing_dot = False - result = [] - if not strict: - labels = _unicode_dots_re.split(s) - else: - labels = s.split(".") - if not labels or labels == [""]: - raise IDNAError("Empty domain") - if not labels[-1]: - del labels[-1] - trailing_dot = True - for label in labels: - s = ulabel(label) - if s: - result.append(s) - else: - raise IDNAError("Empty label") - if trailing_dot: - result.append("") - return ".".join(result) diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/idnadata.py b/gnx-react/venv/lib/python3.12/site-packages/idna/idnadata.py deleted file mode 100644 index 4be60046..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/idnadata.py +++ /dev/null @@ -1,4243 +0,0 @@ -# This file is automatically generated by tools/idna-data - -__version__ = "15.1.0" -scripts = { - "Greek": ( - 0x37000000374, - 0x37500000378, - 0x37A0000037E, - 0x37F00000380, - 0x38400000385, - 0x38600000387, - 0x3880000038B, - 0x38C0000038D, - 0x38E000003A2, - 0x3A3000003E2, - 0x3F000000400, - 0x1D2600001D2B, - 0x1D5D00001D62, - 0x1D6600001D6B, - 0x1DBF00001DC0, - 0x1F0000001F16, - 0x1F1800001F1E, - 0x1F2000001F46, - 0x1F4800001F4E, - 0x1F5000001F58, - 0x1F5900001F5A, - 0x1F5B00001F5C, - 0x1F5D00001F5E, - 0x1F5F00001F7E, - 0x1F8000001FB5, - 0x1FB600001FC5, - 0x1FC600001FD4, - 0x1FD600001FDC, - 0x1FDD00001FF0, - 0x1FF200001FF5, - 0x1FF600001FFF, - 0x212600002127, - 0xAB650000AB66, - 0x101400001018F, - 0x101A0000101A1, - 0x1D2000001D246, - ), - "Han": ( - 0x2E8000002E9A, - 0x2E9B00002EF4, - 0x2F0000002FD6, - 0x300500003006, - 0x300700003008, - 0x30210000302A, - 0x30380000303C, - 0x340000004DC0, - 0x4E000000A000, - 0xF9000000FA6E, - 0xFA700000FADA, - 0x16FE200016FE4, - 0x16FF000016FF2, - 0x200000002A6E0, - 0x2A7000002B73A, - 0x2B7400002B81E, - 0x2B8200002CEA2, - 0x2CEB00002EBE1, - 0x2EBF00002EE5E, - 0x2F8000002FA1E, - 0x300000003134B, - 0x31350000323B0, - ), - "Hebrew": ( - 0x591000005C8, - 0x5D0000005EB, - 0x5EF000005F5, - 0xFB1D0000FB37, - 0xFB380000FB3D, - 0xFB3E0000FB3F, - 0xFB400000FB42, - 0xFB430000FB45, - 0xFB460000FB50, - ), - "Hiragana": ( - 0x304100003097, - 0x309D000030A0, - 0x1B0010001B120, - 0x1B1320001B133, - 0x1B1500001B153, - 0x1F2000001F201, - ), - "Katakana": ( - 0x30A1000030FB, - 0x30FD00003100, - 0x31F000003200, - 0x32D0000032FF, - 0x330000003358, - 0xFF660000FF70, - 0xFF710000FF9E, - 0x1AFF00001AFF4, - 0x1AFF50001AFFC, - 0x1AFFD0001AFFF, - 0x1B0000001B001, - 0x1B1200001B123, - 0x1B1550001B156, - 0x1B1640001B168, - ), -} -joining_types = { - 0xAD: 84, - 0x300: 84, - 0x301: 84, - 0x302: 84, - 0x303: 84, - 0x304: 84, - 0x305: 84, - 0x306: 84, - 0x307: 84, - 0x308: 84, - 0x309: 84, - 0x30A: 84, - 0x30B: 84, - 0x30C: 84, - 0x30D: 84, - 0x30E: 84, - 0x30F: 84, - 0x310: 84, - 0x311: 84, - 0x312: 84, - 0x313: 84, - 0x314: 84, - 0x315: 84, - 0x316: 84, - 0x317: 84, - 0x318: 84, - 0x319: 84, - 0x31A: 84, - 0x31B: 84, - 0x31C: 84, - 0x31D: 84, - 0x31E: 84, - 0x31F: 84, - 0x320: 84, - 0x321: 84, - 0x322: 84, - 0x323: 84, - 0x324: 84, - 0x325: 84, - 0x326: 84, - 0x327: 84, - 0x328: 84, - 0x329: 84, - 0x32A: 84, - 0x32B: 84, - 0x32C: 84, - 0x32D: 84, - 0x32E: 84, - 0x32F: 84, - 0x330: 84, - 0x331: 84, - 0x332: 84, - 0x333: 84, - 0x334: 84, - 0x335: 84, - 0x336: 84, - 0x337: 84, - 0x338: 84, - 0x339: 84, - 0x33A: 84, - 0x33B: 84, - 0x33C: 84, - 0x33D: 84, - 0x33E: 84, - 0x33F: 84, - 0x340: 84, - 0x341: 84, - 0x342: 84, - 0x343: 84, - 0x344: 84, - 0x345: 84, - 0x346: 84, - 0x347: 84, - 0x348: 84, - 0x349: 84, - 0x34A: 84, - 0x34B: 84, - 0x34C: 84, - 0x34D: 84, - 0x34E: 84, - 0x34F: 84, - 0x350: 84, - 0x351: 84, - 0x352: 84, - 0x353: 84, - 0x354: 84, - 0x355: 84, - 0x356: 84, - 0x357: 84, - 0x358: 84, - 0x359: 84, - 0x35A: 84, - 0x35B: 84, - 0x35C: 84, - 0x35D: 84, - 0x35E: 84, - 0x35F: 84, - 0x360: 84, - 0x361: 84, - 0x362: 84, - 0x363: 84, - 0x364: 84, - 0x365: 84, - 0x366: 84, - 0x367: 84, - 0x368: 84, - 0x369: 84, - 0x36A: 84, - 0x36B: 84, - 0x36C: 84, - 0x36D: 84, - 0x36E: 84, - 0x36F: 84, - 0x483: 84, - 0x484: 84, - 0x485: 84, - 0x486: 84, - 0x487: 84, - 0x488: 84, - 0x489: 84, - 0x591: 84, - 0x592: 84, - 0x593: 84, - 0x594: 84, - 0x595: 84, - 0x596: 84, - 0x597: 84, - 0x598: 84, - 0x599: 84, - 0x59A: 84, - 0x59B: 84, - 0x59C: 84, - 0x59D: 84, - 0x59E: 84, - 0x59F: 84, - 0x5A0: 84, - 0x5A1: 84, - 0x5A2: 84, - 0x5A3: 84, - 0x5A4: 84, - 0x5A5: 84, - 0x5A6: 84, - 0x5A7: 84, - 0x5A8: 84, - 0x5A9: 84, - 0x5AA: 84, - 0x5AB: 84, - 0x5AC: 84, - 0x5AD: 84, - 0x5AE: 84, - 0x5AF: 84, - 0x5B0: 84, - 0x5B1: 84, - 0x5B2: 84, - 0x5B3: 84, - 0x5B4: 84, - 0x5B5: 84, - 0x5B6: 84, - 0x5B7: 84, - 0x5B8: 84, - 0x5B9: 84, - 0x5BA: 84, - 0x5BB: 84, - 0x5BC: 84, - 0x5BD: 84, - 0x5BF: 84, - 0x5C1: 84, - 0x5C2: 84, - 0x5C4: 84, - 0x5C5: 84, - 0x5C7: 84, - 0x610: 84, - 0x611: 84, - 0x612: 84, - 0x613: 84, - 0x614: 84, - 0x615: 84, - 0x616: 84, - 0x617: 84, - 0x618: 84, - 0x619: 84, - 0x61A: 84, - 0x61C: 84, - 0x620: 68, - 0x622: 82, - 0x623: 82, - 0x624: 82, - 0x625: 82, - 0x626: 68, - 0x627: 82, - 0x628: 68, - 0x629: 82, - 0x62A: 68, - 0x62B: 68, - 0x62C: 68, - 0x62D: 68, - 0x62E: 68, - 0x62F: 82, - 0x630: 82, - 0x631: 82, - 0x632: 82, - 0x633: 68, - 0x634: 68, - 0x635: 68, - 0x636: 68, - 0x637: 68, - 0x638: 68, - 0x639: 68, - 0x63A: 68, - 0x63B: 68, - 0x63C: 68, - 0x63D: 68, - 0x63E: 68, - 0x63F: 68, - 0x640: 67, - 0x641: 68, - 0x642: 68, - 0x643: 68, - 0x644: 68, - 0x645: 68, - 0x646: 68, - 0x647: 68, - 0x648: 82, - 0x649: 68, - 0x64A: 68, - 0x64B: 84, - 0x64C: 84, - 0x64D: 84, - 0x64E: 84, - 0x64F: 84, - 0x650: 84, - 0x651: 84, - 0x652: 84, - 0x653: 84, - 0x654: 84, - 0x655: 84, - 0x656: 84, - 0x657: 84, - 0x658: 84, - 0x659: 84, - 0x65A: 84, - 0x65B: 84, - 0x65C: 84, - 0x65D: 84, - 0x65E: 84, - 0x65F: 84, - 0x66E: 68, - 0x66F: 68, - 0x670: 84, - 0x671: 82, - 0x672: 82, - 0x673: 82, - 0x675: 82, - 0x676: 82, - 0x677: 82, - 0x678: 68, - 0x679: 68, - 0x67A: 68, - 0x67B: 68, - 0x67C: 68, - 0x67D: 68, - 0x67E: 68, - 0x67F: 68, - 0x680: 68, - 0x681: 68, - 0x682: 68, - 0x683: 68, - 0x684: 68, - 0x685: 68, - 0x686: 68, - 0x687: 68, - 0x688: 82, - 0x689: 82, - 0x68A: 82, - 0x68B: 82, - 0x68C: 82, - 0x68D: 82, - 0x68E: 82, - 0x68F: 82, - 0x690: 82, - 0x691: 82, - 0x692: 82, - 0x693: 82, - 0x694: 82, - 0x695: 82, - 0x696: 82, - 0x697: 82, - 0x698: 82, - 0x699: 82, - 0x69A: 68, - 0x69B: 68, - 0x69C: 68, - 0x69D: 68, - 0x69E: 68, - 0x69F: 68, - 0x6A0: 68, - 0x6A1: 68, - 0x6A2: 68, - 0x6A3: 68, - 0x6A4: 68, - 0x6A5: 68, - 0x6A6: 68, - 0x6A7: 68, - 0x6A8: 68, - 0x6A9: 68, - 0x6AA: 68, - 0x6AB: 68, - 0x6AC: 68, - 0x6AD: 68, - 0x6AE: 68, - 0x6AF: 68, - 0x6B0: 68, - 0x6B1: 68, - 0x6B2: 68, - 0x6B3: 68, - 0x6B4: 68, - 0x6B5: 68, - 0x6B6: 68, - 0x6B7: 68, - 0x6B8: 68, - 0x6B9: 68, - 0x6BA: 68, - 0x6BB: 68, - 0x6BC: 68, - 0x6BD: 68, - 0x6BE: 68, - 0x6BF: 68, - 0x6C0: 82, - 0x6C1: 68, - 0x6C2: 68, - 0x6C3: 82, - 0x6C4: 82, - 0x6C5: 82, - 0x6C6: 82, - 0x6C7: 82, - 0x6C8: 82, - 0x6C9: 82, - 0x6CA: 82, - 0x6CB: 82, - 0x6CC: 68, - 0x6CD: 82, - 0x6CE: 68, - 0x6CF: 82, - 0x6D0: 68, - 0x6D1: 68, - 0x6D2: 82, - 0x6D3: 82, - 0x6D5: 82, - 0x6D6: 84, - 0x6D7: 84, - 0x6D8: 84, - 0x6D9: 84, - 0x6DA: 84, - 0x6DB: 84, - 0x6DC: 84, - 0x6DF: 84, - 0x6E0: 84, - 0x6E1: 84, - 0x6E2: 84, - 0x6E3: 84, - 0x6E4: 84, - 0x6E7: 84, - 0x6E8: 84, - 0x6EA: 84, - 0x6EB: 84, - 0x6EC: 84, - 0x6ED: 84, - 0x6EE: 82, - 0x6EF: 82, - 0x6FA: 68, - 0x6FB: 68, - 0x6FC: 68, - 0x6FF: 68, - 0x70F: 84, - 0x710: 82, - 0x711: 84, - 0x712: 68, - 0x713: 68, - 0x714: 68, - 0x715: 82, - 0x716: 82, - 0x717: 82, - 0x718: 82, - 0x719: 82, - 0x71A: 68, - 0x71B: 68, - 0x71C: 68, - 0x71D: 68, - 0x71E: 82, - 0x71F: 68, - 0x720: 68, - 0x721: 68, - 0x722: 68, - 0x723: 68, - 0x724: 68, - 0x725: 68, - 0x726: 68, - 0x727: 68, - 0x728: 82, - 0x729: 68, - 0x72A: 82, - 0x72B: 68, - 0x72C: 82, - 0x72D: 68, - 0x72E: 68, - 0x72F: 82, - 0x730: 84, - 0x731: 84, - 0x732: 84, - 0x733: 84, - 0x734: 84, - 0x735: 84, - 0x736: 84, - 0x737: 84, - 0x738: 84, - 0x739: 84, - 0x73A: 84, - 0x73B: 84, - 0x73C: 84, - 0x73D: 84, - 0x73E: 84, - 0x73F: 84, - 0x740: 84, - 0x741: 84, - 0x742: 84, - 0x743: 84, - 0x744: 84, - 0x745: 84, - 0x746: 84, - 0x747: 84, - 0x748: 84, - 0x749: 84, - 0x74A: 84, - 0x74D: 82, - 0x74E: 68, - 0x74F: 68, - 0x750: 68, - 0x751: 68, - 0x752: 68, - 0x753: 68, - 0x754: 68, - 0x755: 68, - 0x756: 68, - 0x757: 68, - 0x758: 68, - 0x759: 82, - 0x75A: 82, - 0x75B: 82, - 0x75C: 68, - 0x75D: 68, - 0x75E: 68, - 0x75F: 68, - 0x760: 68, - 0x761: 68, - 0x762: 68, - 0x763: 68, - 0x764: 68, - 0x765: 68, - 0x766: 68, - 0x767: 68, - 0x768: 68, - 0x769: 68, - 0x76A: 68, - 0x76B: 82, - 0x76C: 82, - 0x76D: 68, - 0x76E: 68, - 0x76F: 68, - 0x770: 68, - 0x771: 82, - 0x772: 68, - 0x773: 82, - 0x774: 82, - 0x775: 68, - 0x776: 68, - 0x777: 68, - 0x778: 82, - 0x779: 82, - 0x77A: 68, - 0x77B: 68, - 0x77C: 68, - 0x77D: 68, - 0x77E: 68, - 0x77F: 68, - 0x7A6: 84, - 0x7A7: 84, - 0x7A8: 84, - 0x7A9: 84, - 0x7AA: 84, - 0x7AB: 84, - 0x7AC: 84, - 0x7AD: 84, - 0x7AE: 84, - 0x7AF: 84, - 0x7B0: 84, - 0x7CA: 68, - 0x7CB: 68, - 0x7CC: 68, - 0x7CD: 68, - 0x7CE: 68, - 0x7CF: 68, - 0x7D0: 68, - 0x7D1: 68, - 0x7D2: 68, - 0x7D3: 68, - 0x7D4: 68, - 0x7D5: 68, - 0x7D6: 68, - 0x7D7: 68, - 0x7D8: 68, - 0x7D9: 68, - 0x7DA: 68, - 0x7DB: 68, - 0x7DC: 68, - 0x7DD: 68, - 0x7DE: 68, - 0x7DF: 68, - 0x7E0: 68, - 0x7E1: 68, - 0x7E2: 68, - 0x7E3: 68, - 0x7E4: 68, - 0x7E5: 68, - 0x7E6: 68, - 0x7E7: 68, - 0x7E8: 68, - 0x7E9: 68, - 0x7EA: 68, - 0x7EB: 84, - 0x7EC: 84, - 0x7ED: 84, - 0x7EE: 84, - 0x7EF: 84, - 0x7F0: 84, - 0x7F1: 84, - 0x7F2: 84, - 0x7F3: 84, - 0x7FA: 67, - 0x7FD: 84, - 0x816: 84, - 0x817: 84, - 0x818: 84, - 0x819: 84, - 0x81B: 84, - 0x81C: 84, - 0x81D: 84, - 0x81E: 84, - 0x81F: 84, - 0x820: 84, - 0x821: 84, - 0x822: 84, - 0x823: 84, - 0x825: 84, - 0x826: 84, - 0x827: 84, - 0x829: 84, - 0x82A: 84, - 0x82B: 84, - 0x82C: 84, - 0x82D: 84, - 0x840: 82, - 0x841: 68, - 0x842: 68, - 0x843: 68, - 0x844: 68, - 0x845: 68, - 0x846: 82, - 0x847: 82, - 0x848: 68, - 0x849: 82, - 0x84A: 68, - 0x84B: 68, - 0x84C: 68, - 0x84D: 68, - 0x84E: 68, - 0x84F: 68, - 0x850: 68, - 0x851: 68, - 0x852: 68, - 0x853: 68, - 0x854: 82, - 0x855: 68, - 0x856: 82, - 0x857: 82, - 0x858: 82, - 0x859: 84, - 0x85A: 84, - 0x85B: 84, - 0x860: 68, - 0x862: 68, - 0x863: 68, - 0x864: 68, - 0x865: 68, - 0x867: 82, - 0x868: 68, - 0x869: 82, - 0x86A: 82, - 0x870: 82, - 0x871: 82, - 0x872: 82, - 0x873: 82, - 0x874: 82, - 0x875: 82, - 0x876: 82, - 0x877: 82, - 0x878: 82, - 0x879: 82, - 0x87A: 82, - 0x87B: 82, - 0x87C: 82, - 0x87D: 82, - 0x87E: 82, - 0x87F: 82, - 0x880: 82, - 0x881: 82, - 0x882: 82, - 0x883: 67, - 0x884: 67, - 0x885: 67, - 0x886: 68, - 0x889: 68, - 0x88A: 68, - 0x88B: 68, - 0x88C: 68, - 0x88D: 68, - 0x88E: 82, - 0x898: 84, - 0x899: 84, - 0x89A: 84, - 0x89B: 84, - 0x89C: 84, - 0x89D: 84, - 0x89E: 84, - 0x89F: 84, - 0x8A0: 68, - 0x8A1: 68, - 0x8A2: 68, - 0x8A3: 68, - 0x8A4: 68, - 0x8A5: 68, - 0x8A6: 68, - 0x8A7: 68, - 0x8A8: 68, - 0x8A9: 68, - 0x8AA: 82, - 0x8AB: 82, - 0x8AC: 82, - 0x8AE: 82, - 0x8AF: 68, - 0x8B0: 68, - 0x8B1: 82, - 0x8B2: 82, - 0x8B3: 68, - 0x8B4: 68, - 0x8B5: 68, - 0x8B6: 68, - 0x8B7: 68, - 0x8B8: 68, - 0x8B9: 82, - 0x8BA: 68, - 0x8BB: 68, - 0x8BC: 68, - 0x8BD: 68, - 0x8BE: 68, - 0x8BF: 68, - 0x8C0: 68, - 0x8C1: 68, - 0x8C2: 68, - 0x8C3: 68, - 0x8C4: 68, - 0x8C5: 68, - 0x8C6: 68, - 0x8C7: 68, - 0x8C8: 68, - 0x8CA: 84, - 0x8CB: 84, - 0x8CC: 84, - 0x8CD: 84, - 0x8CE: 84, - 0x8CF: 84, - 0x8D0: 84, - 0x8D1: 84, - 0x8D2: 84, - 0x8D3: 84, - 0x8D4: 84, - 0x8D5: 84, - 0x8D6: 84, - 0x8D7: 84, - 0x8D8: 84, - 0x8D9: 84, - 0x8DA: 84, - 0x8DB: 84, - 0x8DC: 84, - 0x8DD: 84, - 0x8DE: 84, - 0x8DF: 84, - 0x8E0: 84, - 0x8E1: 84, - 0x8E3: 84, - 0x8E4: 84, - 0x8E5: 84, - 0x8E6: 84, - 0x8E7: 84, - 0x8E8: 84, - 0x8E9: 84, - 0x8EA: 84, - 0x8EB: 84, - 0x8EC: 84, - 0x8ED: 84, - 0x8EE: 84, - 0x8EF: 84, - 0x8F0: 84, - 0x8F1: 84, - 0x8F2: 84, - 0x8F3: 84, - 0x8F4: 84, - 0x8F5: 84, - 0x8F6: 84, - 0x8F7: 84, - 0x8F8: 84, - 0x8F9: 84, - 0x8FA: 84, - 0x8FB: 84, - 0x8FC: 84, - 0x8FD: 84, - 0x8FE: 84, - 0x8FF: 84, - 0x900: 84, - 0x901: 84, - 0x902: 84, - 0x93A: 84, - 0x93C: 84, - 0x941: 84, - 0x942: 84, - 0x943: 84, - 0x944: 84, - 0x945: 84, - 0x946: 84, - 0x947: 84, - 0x948: 84, - 0x94D: 84, - 0x951: 84, - 0x952: 84, - 0x953: 84, - 0x954: 84, - 0x955: 84, - 0x956: 84, - 0x957: 84, - 0x962: 84, - 0x963: 84, - 0x981: 84, - 0x9BC: 84, - 0x9C1: 84, - 0x9C2: 84, - 0x9C3: 84, - 0x9C4: 84, - 0x9CD: 84, - 0x9E2: 84, - 0x9E3: 84, - 0x9FE: 84, - 0xA01: 84, - 0xA02: 84, - 0xA3C: 84, - 0xA41: 84, - 0xA42: 84, - 0xA47: 84, - 0xA48: 84, - 0xA4B: 84, - 0xA4C: 84, - 0xA4D: 84, - 0xA51: 84, - 0xA70: 84, - 0xA71: 84, - 0xA75: 84, - 0xA81: 84, - 0xA82: 84, - 0xABC: 84, - 0xAC1: 84, - 0xAC2: 84, - 0xAC3: 84, - 0xAC4: 84, - 0xAC5: 84, - 0xAC7: 84, - 0xAC8: 84, - 0xACD: 84, - 0xAE2: 84, - 0xAE3: 84, - 0xAFA: 84, - 0xAFB: 84, - 0xAFC: 84, - 0xAFD: 84, - 0xAFE: 84, - 0xAFF: 84, - 0xB01: 84, - 0xB3C: 84, - 0xB3F: 84, - 0xB41: 84, - 0xB42: 84, - 0xB43: 84, - 0xB44: 84, - 0xB4D: 84, - 0xB55: 84, - 0xB56: 84, - 0xB62: 84, - 0xB63: 84, - 0xB82: 84, - 0xBC0: 84, - 0xBCD: 84, - 0xC00: 84, - 0xC04: 84, - 0xC3C: 84, - 0xC3E: 84, - 0xC3F: 84, - 0xC40: 84, - 0xC46: 84, - 0xC47: 84, - 0xC48: 84, - 0xC4A: 84, - 0xC4B: 84, - 0xC4C: 84, - 0xC4D: 84, - 0xC55: 84, - 0xC56: 84, - 0xC62: 84, - 0xC63: 84, - 0xC81: 84, - 0xCBC: 84, - 0xCBF: 84, - 0xCC6: 84, - 0xCCC: 84, - 0xCCD: 84, - 0xCE2: 84, - 0xCE3: 84, - 0xD00: 84, - 0xD01: 84, - 0xD3B: 84, - 0xD3C: 84, - 0xD41: 84, - 0xD42: 84, - 0xD43: 84, - 0xD44: 84, - 0xD4D: 84, - 0xD62: 84, - 0xD63: 84, - 0xD81: 84, - 0xDCA: 84, - 0xDD2: 84, - 0xDD3: 84, - 0xDD4: 84, - 0xDD6: 84, - 0xE31: 84, - 0xE34: 84, - 0xE35: 84, - 0xE36: 84, - 0xE37: 84, - 0xE38: 84, - 0xE39: 84, - 0xE3A: 84, - 0xE47: 84, - 0xE48: 84, - 0xE49: 84, - 0xE4A: 84, - 0xE4B: 84, - 0xE4C: 84, - 0xE4D: 84, - 0xE4E: 84, - 0xEB1: 84, - 0xEB4: 84, - 0xEB5: 84, - 0xEB6: 84, - 0xEB7: 84, - 0xEB8: 84, - 0xEB9: 84, - 0xEBA: 84, - 0xEBB: 84, - 0xEBC: 84, - 0xEC8: 84, - 0xEC9: 84, - 0xECA: 84, - 0xECB: 84, - 0xECC: 84, - 0xECD: 84, - 0xECE: 84, - 0xF18: 84, - 0xF19: 84, - 0xF35: 84, - 0xF37: 84, - 0xF39: 84, - 0xF71: 84, - 0xF72: 84, - 0xF73: 84, - 0xF74: 84, - 0xF75: 84, - 0xF76: 84, - 0xF77: 84, - 0xF78: 84, - 0xF79: 84, - 0xF7A: 84, - 0xF7B: 84, - 0xF7C: 84, - 0xF7D: 84, - 0xF7E: 84, - 0xF80: 84, - 0xF81: 84, - 0xF82: 84, - 0xF83: 84, - 0xF84: 84, - 0xF86: 84, - 0xF87: 84, - 0xF8D: 84, - 0xF8E: 84, - 0xF8F: 84, - 0xF90: 84, - 0xF91: 84, - 0xF92: 84, - 0xF93: 84, - 0xF94: 84, - 0xF95: 84, - 0xF96: 84, - 0xF97: 84, - 0xF99: 84, - 0xF9A: 84, - 0xF9B: 84, - 0xF9C: 84, - 0xF9D: 84, - 0xF9E: 84, - 0xF9F: 84, - 0xFA0: 84, - 0xFA1: 84, - 0xFA2: 84, - 0xFA3: 84, - 0xFA4: 84, - 0xFA5: 84, - 0xFA6: 84, - 0xFA7: 84, - 0xFA8: 84, - 0xFA9: 84, - 0xFAA: 84, - 0xFAB: 84, - 0xFAC: 84, - 0xFAD: 84, - 0xFAE: 84, - 0xFAF: 84, - 0xFB0: 84, - 0xFB1: 84, - 0xFB2: 84, - 0xFB3: 84, - 0xFB4: 84, - 0xFB5: 84, - 0xFB6: 84, - 0xFB7: 84, - 0xFB8: 84, - 0xFB9: 84, - 0xFBA: 84, - 0xFBB: 84, - 0xFBC: 84, - 0xFC6: 84, - 0x102D: 84, - 0x102E: 84, - 0x102F: 84, - 0x1030: 84, - 0x1032: 84, - 0x1033: 84, - 0x1034: 84, - 0x1035: 84, - 0x1036: 84, - 0x1037: 84, - 0x1039: 84, - 0x103A: 84, - 0x103D: 84, - 0x103E: 84, - 0x1058: 84, - 0x1059: 84, - 0x105E: 84, - 0x105F: 84, - 0x1060: 84, - 0x1071: 84, - 0x1072: 84, - 0x1073: 84, - 0x1074: 84, - 0x1082: 84, - 0x1085: 84, - 0x1086: 84, - 0x108D: 84, - 0x109D: 84, - 0x135D: 84, - 0x135E: 84, - 0x135F: 84, - 0x1712: 84, - 0x1713: 84, - 0x1714: 84, - 0x1732: 84, - 0x1733: 84, - 0x1752: 84, - 0x1753: 84, - 0x1772: 84, - 0x1773: 84, - 0x17B4: 84, - 0x17B5: 84, - 0x17B7: 84, - 0x17B8: 84, - 0x17B9: 84, - 0x17BA: 84, - 0x17BB: 84, - 0x17BC: 84, - 0x17BD: 84, - 0x17C6: 84, - 0x17C9: 84, - 0x17CA: 84, - 0x17CB: 84, - 0x17CC: 84, - 0x17CD: 84, - 0x17CE: 84, - 0x17CF: 84, - 0x17D0: 84, - 0x17D1: 84, - 0x17D2: 84, - 0x17D3: 84, - 0x17DD: 84, - 0x1807: 68, - 0x180A: 67, - 0x180B: 84, - 0x180C: 84, - 0x180D: 84, - 0x180F: 84, - 0x1820: 68, - 0x1821: 68, - 0x1822: 68, - 0x1823: 68, - 0x1824: 68, - 0x1825: 68, - 0x1826: 68, - 0x1827: 68, - 0x1828: 68, - 0x1829: 68, - 0x182A: 68, - 0x182B: 68, - 0x182C: 68, - 0x182D: 68, - 0x182E: 68, - 0x182F: 68, - 0x1830: 68, - 0x1831: 68, - 0x1832: 68, - 0x1833: 68, - 0x1834: 68, - 0x1835: 68, - 0x1836: 68, - 0x1837: 68, - 0x1838: 68, - 0x1839: 68, - 0x183A: 68, - 0x183B: 68, - 0x183C: 68, - 0x183D: 68, - 0x183E: 68, - 0x183F: 68, - 0x1840: 68, - 0x1841: 68, - 0x1842: 68, - 0x1843: 68, - 0x1844: 68, - 0x1845: 68, - 0x1846: 68, - 0x1847: 68, - 0x1848: 68, - 0x1849: 68, - 0x184A: 68, - 0x184B: 68, - 0x184C: 68, - 0x184D: 68, - 0x184E: 68, - 0x184F: 68, - 0x1850: 68, - 0x1851: 68, - 0x1852: 68, - 0x1853: 68, - 0x1854: 68, - 0x1855: 68, - 0x1856: 68, - 0x1857: 68, - 0x1858: 68, - 0x1859: 68, - 0x185A: 68, - 0x185B: 68, - 0x185C: 68, - 0x185D: 68, - 0x185E: 68, - 0x185F: 68, - 0x1860: 68, - 0x1861: 68, - 0x1862: 68, - 0x1863: 68, - 0x1864: 68, - 0x1865: 68, - 0x1866: 68, - 0x1867: 68, - 0x1868: 68, - 0x1869: 68, - 0x186A: 68, - 0x186B: 68, - 0x186C: 68, - 0x186D: 68, - 0x186E: 68, - 0x186F: 68, - 0x1870: 68, - 0x1871: 68, - 0x1872: 68, - 0x1873: 68, - 0x1874: 68, - 0x1875: 68, - 0x1876: 68, - 0x1877: 68, - 0x1878: 68, - 0x1885: 84, - 0x1886: 84, - 0x1887: 68, - 0x1888: 68, - 0x1889: 68, - 0x188A: 68, - 0x188B: 68, - 0x188C: 68, - 0x188D: 68, - 0x188E: 68, - 0x188F: 68, - 0x1890: 68, - 0x1891: 68, - 0x1892: 68, - 0x1893: 68, - 0x1894: 68, - 0x1895: 68, - 0x1896: 68, - 0x1897: 68, - 0x1898: 68, - 0x1899: 68, - 0x189A: 68, - 0x189B: 68, - 0x189C: 68, - 0x189D: 68, - 0x189E: 68, - 0x189F: 68, - 0x18A0: 68, - 0x18A1: 68, - 0x18A2: 68, - 0x18A3: 68, - 0x18A4: 68, - 0x18A5: 68, - 0x18A6: 68, - 0x18A7: 68, - 0x18A8: 68, - 0x18A9: 84, - 0x18AA: 68, - 0x1920: 84, - 0x1921: 84, - 0x1922: 84, - 0x1927: 84, - 0x1928: 84, - 0x1932: 84, - 0x1939: 84, - 0x193A: 84, - 0x193B: 84, - 0x1A17: 84, - 0x1A18: 84, - 0x1A1B: 84, - 0x1A56: 84, - 0x1A58: 84, - 0x1A59: 84, - 0x1A5A: 84, - 0x1A5B: 84, - 0x1A5C: 84, - 0x1A5D: 84, - 0x1A5E: 84, - 0x1A60: 84, - 0x1A62: 84, - 0x1A65: 84, - 0x1A66: 84, - 0x1A67: 84, - 0x1A68: 84, - 0x1A69: 84, - 0x1A6A: 84, - 0x1A6B: 84, - 0x1A6C: 84, - 0x1A73: 84, - 0x1A74: 84, - 0x1A75: 84, - 0x1A76: 84, - 0x1A77: 84, - 0x1A78: 84, - 0x1A79: 84, - 0x1A7A: 84, - 0x1A7B: 84, - 0x1A7C: 84, - 0x1A7F: 84, - 0x1AB0: 84, - 0x1AB1: 84, - 0x1AB2: 84, - 0x1AB3: 84, - 0x1AB4: 84, - 0x1AB5: 84, - 0x1AB6: 84, - 0x1AB7: 84, - 0x1AB8: 84, - 0x1AB9: 84, - 0x1ABA: 84, - 0x1ABB: 84, - 0x1ABC: 84, - 0x1ABD: 84, - 0x1ABE: 84, - 0x1ABF: 84, - 0x1AC0: 84, - 0x1AC1: 84, - 0x1AC2: 84, - 0x1AC3: 84, - 0x1AC4: 84, - 0x1AC5: 84, - 0x1AC6: 84, - 0x1AC7: 84, - 0x1AC8: 84, - 0x1AC9: 84, - 0x1ACA: 84, - 0x1ACB: 84, - 0x1ACC: 84, - 0x1ACD: 84, - 0x1ACE: 84, - 0x1B00: 84, - 0x1B01: 84, - 0x1B02: 84, - 0x1B03: 84, - 0x1B34: 84, - 0x1B36: 84, - 0x1B37: 84, - 0x1B38: 84, - 0x1B39: 84, - 0x1B3A: 84, - 0x1B3C: 84, - 0x1B42: 84, - 0x1B6B: 84, - 0x1B6C: 84, - 0x1B6D: 84, - 0x1B6E: 84, - 0x1B6F: 84, - 0x1B70: 84, - 0x1B71: 84, - 0x1B72: 84, - 0x1B73: 84, - 0x1B80: 84, - 0x1B81: 84, - 0x1BA2: 84, - 0x1BA3: 84, - 0x1BA4: 84, - 0x1BA5: 84, - 0x1BA8: 84, - 0x1BA9: 84, - 0x1BAB: 84, - 0x1BAC: 84, - 0x1BAD: 84, - 0x1BE6: 84, - 0x1BE8: 84, - 0x1BE9: 84, - 0x1BED: 84, - 0x1BEF: 84, - 0x1BF0: 84, - 0x1BF1: 84, - 0x1C2C: 84, - 0x1C2D: 84, - 0x1C2E: 84, - 0x1C2F: 84, - 0x1C30: 84, - 0x1C31: 84, - 0x1C32: 84, - 0x1C33: 84, - 0x1C36: 84, - 0x1C37: 84, - 0x1CD0: 84, - 0x1CD1: 84, - 0x1CD2: 84, - 0x1CD4: 84, - 0x1CD5: 84, - 0x1CD6: 84, - 0x1CD7: 84, - 0x1CD8: 84, - 0x1CD9: 84, - 0x1CDA: 84, - 0x1CDB: 84, - 0x1CDC: 84, - 0x1CDD: 84, - 0x1CDE: 84, - 0x1CDF: 84, - 0x1CE0: 84, - 0x1CE2: 84, - 0x1CE3: 84, - 0x1CE4: 84, - 0x1CE5: 84, - 0x1CE6: 84, - 0x1CE7: 84, - 0x1CE8: 84, - 0x1CED: 84, - 0x1CF4: 84, - 0x1CF8: 84, - 0x1CF9: 84, - 0x1DC0: 84, - 0x1DC1: 84, - 0x1DC2: 84, - 0x1DC3: 84, - 0x1DC4: 84, - 0x1DC5: 84, - 0x1DC6: 84, - 0x1DC7: 84, - 0x1DC8: 84, - 0x1DC9: 84, - 0x1DCA: 84, - 0x1DCB: 84, - 0x1DCC: 84, - 0x1DCD: 84, - 0x1DCE: 84, - 0x1DCF: 84, - 0x1DD0: 84, - 0x1DD1: 84, - 0x1DD2: 84, - 0x1DD3: 84, - 0x1DD4: 84, - 0x1DD5: 84, - 0x1DD6: 84, - 0x1DD7: 84, - 0x1DD8: 84, - 0x1DD9: 84, - 0x1DDA: 84, - 0x1DDB: 84, - 0x1DDC: 84, - 0x1DDD: 84, - 0x1DDE: 84, - 0x1DDF: 84, - 0x1DE0: 84, - 0x1DE1: 84, - 0x1DE2: 84, - 0x1DE3: 84, - 0x1DE4: 84, - 0x1DE5: 84, - 0x1DE6: 84, - 0x1DE7: 84, - 0x1DE8: 84, - 0x1DE9: 84, - 0x1DEA: 84, - 0x1DEB: 84, - 0x1DEC: 84, - 0x1DED: 84, - 0x1DEE: 84, - 0x1DEF: 84, - 0x1DF0: 84, - 0x1DF1: 84, - 0x1DF2: 84, - 0x1DF3: 84, - 0x1DF4: 84, - 0x1DF5: 84, - 0x1DF6: 84, - 0x1DF7: 84, - 0x1DF8: 84, - 0x1DF9: 84, - 0x1DFA: 84, - 0x1DFB: 84, - 0x1DFC: 84, - 0x1DFD: 84, - 0x1DFE: 84, - 0x1DFF: 84, - 0x200B: 84, - 0x200D: 67, - 0x200E: 84, - 0x200F: 84, - 0x202A: 84, - 0x202B: 84, - 0x202C: 84, - 0x202D: 84, - 0x202E: 84, - 0x2060: 84, - 0x2061: 84, - 0x2062: 84, - 0x2063: 84, - 0x2064: 84, - 0x206A: 84, - 0x206B: 84, - 0x206C: 84, - 0x206D: 84, - 0x206E: 84, - 0x206F: 84, - 0x20D0: 84, - 0x20D1: 84, - 0x20D2: 84, - 0x20D3: 84, - 0x20D4: 84, - 0x20D5: 84, - 0x20D6: 84, - 0x20D7: 84, - 0x20D8: 84, - 0x20D9: 84, - 0x20DA: 84, - 0x20DB: 84, - 0x20DC: 84, - 0x20DD: 84, - 0x20DE: 84, - 0x20DF: 84, - 0x20E0: 84, - 0x20E1: 84, - 0x20E2: 84, - 0x20E3: 84, - 0x20E4: 84, - 0x20E5: 84, - 0x20E6: 84, - 0x20E7: 84, - 0x20E8: 84, - 0x20E9: 84, - 0x20EA: 84, - 0x20EB: 84, - 0x20EC: 84, - 0x20ED: 84, - 0x20EE: 84, - 0x20EF: 84, - 0x20F0: 84, - 0x2CEF: 84, - 0x2CF0: 84, - 0x2CF1: 84, - 0x2D7F: 84, - 0x2DE0: 84, - 0x2DE1: 84, - 0x2DE2: 84, - 0x2DE3: 84, - 0x2DE4: 84, - 0x2DE5: 84, - 0x2DE6: 84, - 0x2DE7: 84, - 0x2DE8: 84, - 0x2DE9: 84, - 0x2DEA: 84, - 0x2DEB: 84, - 0x2DEC: 84, - 0x2DED: 84, - 0x2DEE: 84, - 0x2DEF: 84, - 0x2DF0: 84, - 0x2DF1: 84, - 0x2DF2: 84, - 0x2DF3: 84, - 0x2DF4: 84, - 0x2DF5: 84, - 0x2DF6: 84, - 0x2DF7: 84, - 0x2DF8: 84, - 0x2DF9: 84, - 0x2DFA: 84, - 0x2DFB: 84, - 0x2DFC: 84, - 0x2DFD: 84, - 0x2DFE: 84, - 0x2DFF: 84, - 0x302A: 84, - 0x302B: 84, - 0x302C: 84, - 0x302D: 84, - 0x3099: 84, - 0x309A: 84, - 0xA66F: 84, - 0xA670: 84, - 0xA671: 84, - 0xA672: 84, - 0xA674: 84, - 0xA675: 84, - 0xA676: 84, - 0xA677: 84, - 0xA678: 84, - 0xA679: 84, - 0xA67A: 84, - 0xA67B: 84, - 0xA67C: 84, - 0xA67D: 84, - 0xA69E: 84, - 0xA69F: 84, - 0xA6F0: 84, - 0xA6F1: 84, - 0xA802: 84, - 0xA806: 84, - 0xA80B: 84, - 0xA825: 84, - 0xA826: 84, - 0xA82C: 84, - 0xA840: 68, - 0xA841: 68, - 0xA842: 68, - 0xA843: 68, - 0xA844: 68, - 0xA845: 68, - 0xA846: 68, - 0xA847: 68, - 0xA848: 68, - 0xA849: 68, - 0xA84A: 68, - 0xA84B: 68, - 0xA84C: 68, - 0xA84D: 68, - 0xA84E: 68, - 0xA84F: 68, - 0xA850: 68, - 0xA851: 68, - 0xA852: 68, - 0xA853: 68, - 0xA854: 68, - 0xA855: 68, - 0xA856: 68, - 0xA857: 68, - 0xA858: 68, - 0xA859: 68, - 0xA85A: 68, - 0xA85B: 68, - 0xA85C: 68, - 0xA85D: 68, - 0xA85E: 68, - 0xA85F: 68, - 0xA860: 68, - 0xA861: 68, - 0xA862: 68, - 0xA863: 68, - 0xA864: 68, - 0xA865: 68, - 0xA866: 68, - 0xA867: 68, - 0xA868: 68, - 0xA869: 68, - 0xA86A: 68, - 0xA86B: 68, - 0xA86C: 68, - 0xA86D: 68, - 0xA86E: 68, - 0xA86F: 68, - 0xA870: 68, - 0xA871: 68, - 0xA872: 76, - 0xA8C4: 84, - 0xA8C5: 84, - 0xA8E0: 84, - 0xA8E1: 84, - 0xA8E2: 84, - 0xA8E3: 84, - 0xA8E4: 84, - 0xA8E5: 84, - 0xA8E6: 84, - 0xA8E7: 84, - 0xA8E8: 84, - 0xA8E9: 84, - 0xA8EA: 84, - 0xA8EB: 84, - 0xA8EC: 84, - 0xA8ED: 84, - 0xA8EE: 84, - 0xA8EF: 84, - 0xA8F0: 84, - 0xA8F1: 84, - 0xA8FF: 84, - 0xA926: 84, - 0xA927: 84, - 0xA928: 84, - 0xA929: 84, - 0xA92A: 84, - 0xA92B: 84, - 0xA92C: 84, - 0xA92D: 84, - 0xA947: 84, - 0xA948: 84, - 0xA949: 84, - 0xA94A: 84, - 0xA94B: 84, - 0xA94C: 84, - 0xA94D: 84, - 0xA94E: 84, - 0xA94F: 84, - 0xA950: 84, - 0xA951: 84, - 0xA980: 84, - 0xA981: 84, - 0xA982: 84, - 0xA9B3: 84, - 0xA9B6: 84, - 0xA9B7: 84, - 0xA9B8: 84, - 0xA9B9: 84, - 0xA9BC: 84, - 0xA9BD: 84, - 0xA9E5: 84, - 0xAA29: 84, - 0xAA2A: 84, - 0xAA2B: 84, - 0xAA2C: 84, - 0xAA2D: 84, - 0xAA2E: 84, - 0xAA31: 84, - 0xAA32: 84, - 0xAA35: 84, - 0xAA36: 84, - 0xAA43: 84, - 0xAA4C: 84, - 0xAA7C: 84, - 0xAAB0: 84, - 0xAAB2: 84, - 0xAAB3: 84, - 0xAAB4: 84, - 0xAAB7: 84, - 0xAAB8: 84, - 0xAABE: 84, - 0xAABF: 84, - 0xAAC1: 84, - 0xAAEC: 84, - 0xAAED: 84, - 0xAAF6: 84, - 0xABE5: 84, - 0xABE8: 84, - 0xABED: 84, - 0xFB1E: 84, - 0xFE00: 84, - 0xFE01: 84, - 0xFE02: 84, - 0xFE03: 84, - 0xFE04: 84, - 0xFE05: 84, - 0xFE06: 84, - 0xFE07: 84, - 0xFE08: 84, - 0xFE09: 84, - 0xFE0A: 84, - 0xFE0B: 84, - 0xFE0C: 84, - 0xFE0D: 84, - 0xFE0E: 84, - 0xFE0F: 84, - 0xFE20: 84, - 0xFE21: 84, - 0xFE22: 84, - 0xFE23: 84, - 0xFE24: 84, - 0xFE25: 84, - 0xFE26: 84, - 0xFE27: 84, - 0xFE28: 84, - 0xFE29: 84, - 0xFE2A: 84, - 0xFE2B: 84, - 0xFE2C: 84, - 0xFE2D: 84, - 0xFE2E: 84, - 0xFE2F: 84, - 0xFEFF: 84, - 0xFFF9: 84, - 0xFFFA: 84, - 0xFFFB: 84, - 0x101FD: 84, - 0x102E0: 84, - 0x10376: 84, - 0x10377: 84, - 0x10378: 84, - 0x10379: 84, - 0x1037A: 84, - 0x10A01: 84, - 0x10A02: 84, - 0x10A03: 84, - 0x10A05: 84, - 0x10A06: 84, - 0x10A0C: 84, - 0x10A0D: 84, - 0x10A0E: 84, - 0x10A0F: 84, - 0x10A38: 84, - 0x10A39: 84, - 0x10A3A: 84, - 0x10A3F: 84, - 0x10AC0: 68, - 0x10AC1: 68, - 0x10AC2: 68, - 0x10AC3: 68, - 0x10AC4: 68, - 0x10AC5: 82, - 0x10AC7: 82, - 0x10AC9: 82, - 0x10ACA: 82, - 0x10ACD: 76, - 0x10ACE: 82, - 0x10ACF: 82, - 0x10AD0: 82, - 0x10AD1: 82, - 0x10AD2: 82, - 0x10AD3: 68, - 0x10AD4: 68, - 0x10AD5: 68, - 0x10AD6: 68, - 0x10AD7: 76, - 0x10AD8: 68, - 0x10AD9: 68, - 0x10ADA: 68, - 0x10ADB: 68, - 0x10ADC: 68, - 0x10ADD: 82, - 0x10ADE: 68, - 0x10ADF: 68, - 0x10AE0: 68, - 0x10AE1: 82, - 0x10AE4: 82, - 0x10AE5: 84, - 0x10AE6: 84, - 0x10AEB: 68, - 0x10AEC: 68, - 0x10AED: 68, - 0x10AEE: 68, - 0x10AEF: 82, - 0x10B80: 68, - 0x10B81: 82, - 0x10B82: 68, - 0x10B83: 82, - 0x10B84: 82, - 0x10B85: 82, - 0x10B86: 68, - 0x10B87: 68, - 0x10B88: 68, - 0x10B89: 82, - 0x10B8A: 68, - 0x10B8B: 68, - 0x10B8C: 82, - 0x10B8D: 68, - 0x10B8E: 82, - 0x10B8F: 82, - 0x10B90: 68, - 0x10B91: 82, - 0x10BA9: 82, - 0x10BAA: 82, - 0x10BAB: 82, - 0x10BAC: 82, - 0x10BAD: 68, - 0x10BAE: 68, - 0x10D00: 76, - 0x10D01: 68, - 0x10D02: 68, - 0x10D03: 68, - 0x10D04: 68, - 0x10D05: 68, - 0x10D06: 68, - 0x10D07: 68, - 0x10D08: 68, - 0x10D09: 68, - 0x10D0A: 68, - 0x10D0B: 68, - 0x10D0C: 68, - 0x10D0D: 68, - 0x10D0E: 68, - 0x10D0F: 68, - 0x10D10: 68, - 0x10D11: 68, - 0x10D12: 68, - 0x10D13: 68, - 0x10D14: 68, - 0x10D15: 68, - 0x10D16: 68, - 0x10D17: 68, - 0x10D18: 68, - 0x10D19: 68, - 0x10D1A: 68, - 0x10D1B: 68, - 0x10D1C: 68, - 0x10D1D: 68, - 0x10D1E: 68, - 0x10D1F: 68, - 0x10D20: 68, - 0x10D21: 68, - 0x10D22: 82, - 0x10D23: 68, - 0x10D24: 84, - 0x10D25: 84, - 0x10D26: 84, - 0x10D27: 84, - 0x10EAB: 84, - 0x10EAC: 84, - 0x10EFD: 84, - 0x10EFE: 84, - 0x10EFF: 84, - 0x10F30: 68, - 0x10F31: 68, - 0x10F32: 68, - 0x10F33: 82, - 0x10F34: 68, - 0x10F35: 68, - 0x10F36: 68, - 0x10F37: 68, - 0x10F38: 68, - 0x10F39: 68, - 0x10F3A: 68, - 0x10F3B: 68, - 0x10F3C: 68, - 0x10F3D: 68, - 0x10F3E: 68, - 0x10F3F: 68, - 0x10F40: 68, - 0x10F41: 68, - 0x10F42: 68, - 0x10F43: 68, - 0x10F44: 68, - 0x10F46: 84, - 0x10F47: 84, - 0x10F48: 84, - 0x10F49: 84, - 0x10F4A: 84, - 0x10F4B: 84, - 0x10F4C: 84, - 0x10F4D: 84, - 0x10F4E: 84, - 0x10F4F: 84, - 0x10F50: 84, - 0x10F51: 68, - 0x10F52: 68, - 0x10F53: 68, - 0x10F54: 82, - 0x10F70: 68, - 0x10F71: 68, - 0x10F72: 68, - 0x10F73: 68, - 0x10F74: 82, - 0x10F75: 82, - 0x10F76: 68, - 0x10F77: 68, - 0x10F78: 68, - 0x10F79: 68, - 0x10F7A: 68, - 0x10F7B: 68, - 0x10F7C: 68, - 0x10F7D: 68, - 0x10F7E: 68, - 0x10F7F: 68, - 0x10F80: 68, - 0x10F81: 68, - 0x10F82: 84, - 0x10F83: 84, - 0x10F84: 84, - 0x10F85: 84, - 0x10FB0: 68, - 0x10FB2: 68, - 0x10FB3: 68, - 0x10FB4: 82, - 0x10FB5: 82, - 0x10FB6: 82, - 0x10FB8: 68, - 0x10FB9: 82, - 0x10FBA: 82, - 0x10FBB: 68, - 0x10FBC: 68, - 0x10FBD: 82, - 0x10FBE: 68, - 0x10FBF: 68, - 0x10FC1: 68, - 0x10FC2: 82, - 0x10FC3: 82, - 0x10FC4: 68, - 0x10FC9: 82, - 0x10FCA: 68, - 0x10FCB: 76, - 0x11001: 84, - 0x11038: 84, - 0x11039: 84, - 0x1103A: 84, - 0x1103B: 84, - 0x1103C: 84, - 0x1103D: 84, - 0x1103E: 84, - 0x1103F: 84, - 0x11040: 84, - 0x11041: 84, - 0x11042: 84, - 0x11043: 84, - 0x11044: 84, - 0x11045: 84, - 0x11046: 84, - 0x11070: 84, - 0x11073: 84, - 0x11074: 84, - 0x1107F: 84, - 0x11080: 84, - 0x11081: 84, - 0x110B3: 84, - 0x110B4: 84, - 0x110B5: 84, - 0x110B6: 84, - 0x110B9: 84, - 0x110BA: 84, - 0x110C2: 84, - 0x11100: 84, - 0x11101: 84, - 0x11102: 84, - 0x11127: 84, - 0x11128: 84, - 0x11129: 84, - 0x1112A: 84, - 0x1112B: 84, - 0x1112D: 84, - 0x1112E: 84, - 0x1112F: 84, - 0x11130: 84, - 0x11131: 84, - 0x11132: 84, - 0x11133: 84, - 0x11134: 84, - 0x11173: 84, - 0x11180: 84, - 0x11181: 84, - 0x111B6: 84, - 0x111B7: 84, - 0x111B8: 84, - 0x111B9: 84, - 0x111BA: 84, - 0x111BB: 84, - 0x111BC: 84, - 0x111BD: 84, - 0x111BE: 84, - 0x111C9: 84, - 0x111CA: 84, - 0x111CB: 84, - 0x111CC: 84, - 0x111CF: 84, - 0x1122F: 84, - 0x11230: 84, - 0x11231: 84, - 0x11234: 84, - 0x11236: 84, - 0x11237: 84, - 0x1123E: 84, - 0x11241: 84, - 0x112DF: 84, - 0x112E3: 84, - 0x112E4: 84, - 0x112E5: 84, - 0x112E6: 84, - 0x112E7: 84, - 0x112E8: 84, - 0x112E9: 84, - 0x112EA: 84, - 0x11300: 84, - 0x11301: 84, - 0x1133B: 84, - 0x1133C: 84, - 0x11340: 84, - 0x11366: 84, - 0x11367: 84, - 0x11368: 84, - 0x11369: 84, - 0x1136A: 84, - 0x1136B: 84, - 0x1136C: 84, - 0x11370: 84, - 0x11371: 84, - 0x11372: 84, - 0x11373: 84, - 0x11374: 84, - 0x11438: 84, - 0x11439: 84, - 0x1143A: 84, - 0x1143B: 84, - 0x1143C: 84, - 0x1143D: 84, - 0x1143E: 84, - 0x1143F: 84, - 0x11442: 84, - 0x11443: 84, - 0x11444: 84, - 0x11446: 84, - 0x1145E: 84, - 0x114B3: 84, - 0x114B4: 84, - 0x114B5: 84, - 0x114B6: 84, - 0x114B7: 84, - 0x114B8: 84, - 0x114BA: 84, - 0x114BF: 84, - 0x114C0: 84, - 0x114C2: 84, - 0x114C3: 84, - 0x115B2: 84, - 0x115B3: 84, - 0x115B4: 84, - 0x115B5: 84, - 0x115BC: 84, - 0x115BD: 84, - 0x115BF: 84, - 0x115C0: 84, - 0x115DC: 84, - 0x115DD: 84, - 0x11633: 84, - 0x11634: 84, - 0x11635: 84, - 0x11636: 84, - 0x11637: 84, - 0x11638: 84, - 0x11639: 84, - 0x1163A: 84, - 0x1163D: 84, - 0x1163F: 84, - 0x11640: 84, - 0x116AB: 84, - 0x116AD: 84, - 0x116B0: 84, - 0x116B1: 84, - 0x116B2: 84, - 0x116B3: 84, - 0x116B4: 84, - 0x116B5: 84, - 0x116B7: 84, - 0x1171D: 84, - 0x1171E: 84, - 0x1171F: 84, - 0x11722: 84, - 0x11723: 84, - 0x11724: 84, - 0x11725: 84, - 0x11727: 84, - 0x11728: 84, - 0x11729: 84, - 0x1172A: 84, - 0x1172B: 84, - 0x1182F: 84, - 0x11830: 84, - 0x11831: 84, - 0x11832: 84, - 0x11833: 84, - 0x11834: 84, - 0x11835: 84, - 0x11836: 84, - 0x11837: 84, - 0x11839: 84, - 0x1183A: 84, - 0x1193B: 84, - 0x1193C: 84, - 0x1193E: 84, - 0x11943: 84, - 0x119D4: 84, - 0x119D5: 84, - 0x119D6: 84, - 0x119D7: 84, - 0x119DA: 84, - 0x119DB: 84, - 0x119E0: 84, - 0x11A01: 84, - 0x11A02: 84, - 0x11A03: 84, - 0x11A04: 84, - 0x11A05: 84, - 0x11A06: 84, - 0x11A07: 84, - 0x11A08: 84, - 0x11A09: 84, - 0x11A0A: 84, - 0x11A33: 84, - 0x11A34: 84, - 0x11A35: 84, - 0x11A36: 84, - 0x11A37: 84, - 0x11A38: 84, - 0x11A3B: 84, - 0x11A3C: 84, - 0x11A3D: 84, - 0x11A3E: 84, - 0x11A47: 84, - 0x11A51: 84, - 0x11A52: 84, - 0x11A53: 84, - 0x11A54: 84, - 0x11A55: 84, - 0x11A56: 84, - 0x11A59: 84, - 0x11A5A: 84, - 0x11A5B: 84, - 0x11A8A: 84, - 0x11A8B: 84, - 0x11A8C: 84, - 0x11A8D: 84, - 0x11A8E: 84, - 0x11A8F: 84, - 0x11A90: 84, - 0x11A91: 84, - 0x11A92: 84, - 0x11A93: 84, - 0x11A94: 84, - 0x11A95: 84, - 0x11A96: 84, - 0x11A98: 84, - 0x11A99: 84, - 0x11C30: 84, - 0x11C31: 84, - 0x11C32: 84, - 0x11C33: 84, - 0x11C34: 84, - 0x11C35: 84, - 0x11C36: 84, - 0x11C38: 84, - 0x11C39: 84, - 0x11C3A: 84, - 0x11C3B: 84, - 0x11C3C: 84, - 0x11C3D: 84, - 0x11C3F: 84, - 0x11C92: 84, - 0x11C93: 84, - 0x11C94: 84, - 0x11C95: 84, - 0x11C96: 84, - 0x11C97: 84, - 0x11C98: 84, - 0x11C99: 84, - 0x11C9A: 84, - 0x11C9B: 84, - 0x11C9C: 84, - 0x11C9D: 84, - 0x11C9E: 84, - 0x11C9F: 84, - 0x11CA0: 84, - 0x11CA1: 84, - 0x11CA2: 84, - 0x11CA3: 84, - 0x11CA4: 84, - 0x11CA5: 84, - 0x11CA6: 84, - 0x11CA7: 84, - 0x11CAA: 84, - 0x11CAB: 84, - 0x11CAC: 84, - 0x11CAD: 84, - 0x11CAE: 84, - 0x11CAF: 84, - 0x11CB0: 84, - 0x11CB2: 84, - 0x11CB3: 84, - 0x11CB5: 84, - 0x11CB6: 84, - 0x11D31: 84, - 0x11D32: 84, - 0x11D33: 84, - 0x11D34: 84, - 0x11D35: 84, - 0x11D36: 84, - 0x11D3A: 84, - 0x11D3C: 84, - 0x11D3D: 84, - 0x11D3F: 84, - 0x11D40: 84, - 0x11D41: 84, - 0x11D42: 84, - 0x11D43: 84, - 0x11D44: 84, - 0x11D45: 84, - 0x11D47: 84, - 0x11D90: 84, - 0x11D91: 84, - 0x11D95: 84, - 0x11D97: 84, - 0x11EF3: 84, - 0x11EF4: 84, - 0x11F00: 84, - 0x11F01: 84, - 0x11F36: 84, - 0x11F37: 84, - 0x11F38: 84, - 0x11F39: 84, - 0x11F3A: 84, - 0x11F40: 84, - 0x11F42: 84, - 0x13430: 84, - 0x13431: 84, - 0x13432: 84, - 0x13433: 84, - 0x13434: 84, - 0x13435: 84, - 0x13436: 84, - 0x13437: 84, - 0x13438: 84, - 0x13439: 84, - 0x1343A: 84, - 0x1343B: 84, - 0x1343C: 84, - 0x1343D: 84, - 0x1343E: 84, - 0x1343F: 84, - 0x13440: 84, - 0x13447: 84, - 0x13448: 84, - 0x13449: 84, - 0x1344A: 84, - 0x1344B: 84, - 0x1344C: 84, - 0x1344D: 84, - 0x1344E: 84, - 0x1344F: 84, - 0x13450: 84, - 0x13451: 84, - 0x13452: 84, - 0x13453: 84, - 0x13454: 84, - 0x13455: 84, - 0x16AF0: 84, - 0x16AF1: 84, - 0x16AF2: 84, - 0x16AF3: 84, - 0x16AF4: 84, - 0x16B30: 84, - 0x16B31: 84, - 0x16B32: 84, - 0x16B33: 84, - 0x16B34: 84, - 0x16B35: 84, - 0x16B36: 84, - 0x16F4F: 84, - 0x16F8F: 84, - 0x16F90: 84, - 0x16F91: 84, - 0x16F92: 84, - 0x16FE4: 84, - 0x1BC9D: 84, - 0x1BC9E: 84, - 0x1BCA0: 84, - 0x1BCA1: 84, - 0x1BCA2: 84, - 0x1BCA3: 84, - 0x1CF00: 84, - 0x1CF01: 84, - 0x1CF02: 84, - 0x1CF03: 84, - 0x1CF04: 84, - 0x1CF05: 84, - 0x1CF06: 84, - 0x1CF07: 84, - 0x1CF08: 84, - 0x1CF09: 84, - 0x1CF0A: 84, - 0x1CF0B: 84, - 0x1CF0C: 84, - 0x1CF0D: 84, - 0x1CF0E: 84, - 0x1CF0F: 84, - 0x1CF10: 84, - 0x1CF11: 84, - 0x1CF12: 84, - 0x1CF13: 84, - 0x1CF14: 84, - 0x1CF15: 84, - 0x1CF16: 84, - 0x1CF17: 84, - 0x1CF18: 84, - 0x1CF19: 84, - 0x1CF1A: 84, - 0x1CF1B: 84, - 0x1CF1C: 84, - 0x1CF1D: 84, - 0x1CF1E: 84, - 0x1CF1F: 84, - 0x1CF20: 84, - 0x1CF21: 84, - 0x1CF22: 84, - 0x1CF23: 84, - 0x1CF24: 84, - 0x1CF25: 84, - 0x1CF26: 84, - 0x1CF27: 84, - 0x1CF28: 84, - 0x1CF29: 84, - 0x1CF2A: 84, - 0x1CF2B: 84, - 0x1CF2C: 84, - 0x1CF2D: 84, - 0x1CF30: 84, - 0x1CF31: 84, - 0x1CF32: 84, - 0x1CF33: 84, - 0x1CF34: 84, - 0x1CF35: 84, - 0x1CF36: 84, - 0x1CF37: 84, - 0x1CF38: 84, - 0x1CF39: 84, - 0x1CF3A: 84, - 0x1CF3B: 84, - 0x1CF3C: 84, - 0x1CF3D: 84, - 0x1CF3E: 84, - 0x1CF3F: 84, - 0x1CF40: 84, - 0x1CF41: 84, - 0x1CF42: 84, - 0x1CF43: 84, - 0x1CF44: 84, - 0x1CF45: 84, - 0x1CF46: 84, - 0x1D167: 84, - 0x1D168: 84, - 0x1D169: 84, - 0x1D173: 84, - 0x1D174: 84, - 0x1D175: 84, - 0x1D176: 84, - 0x1D177: 84, - 0x1D178: 84, - 0x1D179: 84, - 0x1D17A: 84, - 0x1D17B: 84, - 0x1D17C: 84, - 0x1D17D: 84, - 0x1D17E: 84, - 0x1D17F: 84, - 0x1D180: 84, - 0x1D181: 84, - 0x1D182: 84, - 0x1D185: 84, - 0x1D186: 84, - 0x1D187: 84, - 0x1D188: 84, - 0x1D189: 84, - 0x1D18A: 84, - 0x1D18B: 84, - 0x1D1AA: 84, - 0x1D1AB: 84, - 0x1D1AC: 84, - 0x1D1AD: 84, - 0x1D242: 84, - 0x1D243: 84, - 0x1D244: 84, - 0x1DA00: 84, - 0x1DA01: 84, - 0x1DA02: 84, - 0x1DA03: 84, - 0x1DA04: 84, - 0x1DA05: 84, - 0x1DA06: 84, - 0x1DA07: 84, - 0x1DA08: 84, - 0x1DA09: 84, - 0x1DA0A: 84, - 0x1DA0B: 84, - 0x1DA0C: 84, - 0x1DA0D: 84, - 0x1DA0E: 84, - 0x1DA0F: 84, - 0x1DA10: 84, - 0x1DA11: 84, - 0x1DA12: 84, - 0x1DA13: 84, - 0x1DA14: 84, - 0x1DA15: 84, - 0x1DA16: 84, - 0x1DA17: 84, - 0x1DA18: 84, - 0x1DA19: 84, - 0x1DA1A: 84, - 0x1DA1B: 84, - 0x1DA1C: 84, - 0x1DA1D: 84, - 0x1DA1E: 84, - 0x1DA1F: 84, - 0x1DA20: 84, - 0x1DA21: 84, - 0x1DA22: 84, - 0x1DA23: 84, - 0x1DA24: 84, - 0x1DA25: 84, - 0x1DA26: 84, - 0x1DA27: 84, - 0x1DA28: 84, - 0x1DA29: 84, - 0x1DA2A: 84, - 0x1DA2B: 84, - 0x1DA2C: 84, - 0x1DA2D: 84, - 0x1DA2E: 84, - 0x1DA2F: 84, - 0x1DA30: 84, - 0x1DA31: 84, - 0x1DA32: 84, - 0x1DA33: 84, - 0x1DA34: 84, - 0x1DA35: 84, - 0x1DA36: 84, - 0x1DA3B: 84, - 0x1DA3C: 84, - 0x1DA3D: 84, - 0x1DA3E: 84, - 0x1DA3F: 84, - 0x1DA40: 84, - 0x1DA41: 84, - 0x1DA42: 84, - 0x1DA43: 84, - 0x1DA44: 84, - 0x1DA45: 84, - 0x1DA46: 84, - 0x1DA47: 84, - 0x1DA48: 84, - 0x1DA49: 84, - 0x1DA4A: 84, - 0x1DA4B: 84, - 0x1DA4C: 84, - 0x1DA4D: 84, - 0x1DA4E: 84, - 0x1DA4F: 84, - 0x1DA50: 84, - 0x1DA51: 84, - 0x1DA52: 84, - 0x1DA53: 84, - 0x1DA54: 84, - 0x1DA55: 84, - 0x1DA56: 84, - 0x1DA57: 84, - 0x1DA58: 84, - 0x1DA59: 84, - 0x1DA5A: 84, - 0x1DA5B: 84, - 0x1DA5C: 84, - 0x1DA5D: 84, - 0x1DA5E: 84, - 0x1DA5F: 84, - 0x1DA60: 84, - 0x1DA61: 84, - 0x1DA62: 84, - 0x1DA63: 84, - 0x1DA64: 84, - 0x1DA65: 84, - 0x1DA66: 84, - 0x1DA67: 84, - 0x1DA68: 84, - 0x1DA69: 84, - 0x1DA6A: 84, - 0x1DA6B: 84, - 0x1DA6C: 84, - 0x1DA75: 84, - 0x1DA84: 84, - 0x1DA9B: 84, - 0x1DA9C: 84, - 0x1DA9D: 84, - 0x1DA9E: 84, - 0x1DA9F: 84, - 0x1DAA1: 84, - 0x1DAA2: 84, - 0x1DAA3: 84, - 0x1DAA4: 84, - 0x1DAA5: 84, - 0x1DAA6: 84, - 0x1DAA7: 84, - 0x1DAA8: 84, - 0x1DAA9: 84, - 0x1DAAA: 84, - 0x1DAAB: 84, - 0x1DAAC: 84, - 0x1DAAD: 84, - 0x1DAAE: 84, - 0x1DAAF: 84, - 0x1E000: 84, - 0x1E001: 84, - 0x1E002: 84, - 0x1E003: 84, - 0x1E004: 84, - 0x1E005: 84, - 0x1E006: 84, - 0x1E008: 84, - 0x1E009: 84, - 0x1E00A: 84, - 0x1E00B: 84, - 0x1E00C: 84, - 0x1E00D: 84, - 0x1E00E: 84, - 0x1E00F: 84, - 0x1E010: 84, - 0x1E011: 84, - 0x1E012: 84, - 0x1E013: 84, - 0x1E014: 84, - 0x1E015: 84, - 0x1E016: 84, - 0x1E017: 84, - 0x1E018: 84, - 0x1E01B: 84, - 0x1E01C: 84, - 0x1E01D: 84, - 0x1E01E: 84, - 0x1E01F: 84, - 0x1E020: 84, - 0x1E021: 84, - 0x1E023: 84, - 0x1E024: 84, - 0x1E026: 84, - 0x1E027: 84, - 0x1E028: 84, - 0x1E029: 84, - 0x1E02A: 84, - 0x1E08F: 84, - 0x1E130: 84, - 0x1E131: 84, - 0x1E132: 84, - 0x1E133: 84, - 0x1E134: 84, - 0x1E135: 84, - 0x1E136: 84, - 0x1E2AE: 84, - 0x1E2EC: 84, - 0x1E2ED: 84, - 0x1E2EE: 84, - 0x1E2EF: 84, - 0x1E4EC: 84, - 0x1E4ED: 84, - 0x1E4EE: 84, - 0x1E4EF: 84, - 0x1E8D0: 84, - 0x1E8D1: 84, - 0x1E8D2: 84, - 0x1E8D3: 84, - 0x1E8D4: 84, - 0x1E8D5: 84, - 0x1E8D6: 84, - 0x1E900: 68, - 0x1E901: 68, - 0x1E902: 68, - 0x1E903: 68, - 0x1E904: 68, - 0x1E905: 68, - 0x1E906: 68, - 0x1E907: 68, - 0x1E908: 68, - 0x1E909: 68, - 0x1E90A: 68, - 0x1E90B: 68, - 0x1E90C: 68, - 0x1E90D: 68, - 0x1E90E: 68, - 0x1E90F: 68, - 0x1E910: 68, - 0x1E911: 68, - 0x1E912: 68, - 0x1E913: 68, - 0x1E914: 68, - 0x1E915: 68, - 0x1E916: 68, - 0x1E917: 68, - 0x1E918: 68, - 0x1E919: 68, - 0x1E91A: 68, - 0x1E91B: 68, - 0x1E91C: 68, - 0x1E91D: 68, - 0x1E91E: 68, - 0x1E91F: 68, - 0x1E920: 68, - 0x1E921: 68, - 0x1E922: 68, - 0x1E923: 68, - 0x1E924: 68, - 0x1E925: 68, - 0x1E926: 68, - 0x1E927: 68, - 0x1E928: 68, - 0x1E929: 68, - 0x1E92A: 68, - 0x1E92B: 68, - 0x1E92C: 68, - 0x1E92D: 68, - 0x1E92E: 68, - 0x1E92F: 68, - 0x1E930: 68, - 0x1E931: 68, - 0x1E932: 68, - 0x1E933: 68, - 0x1E934: 68, - 0x1E935: 68, - 0x1E936: 68, - 0x1E937: 68, - 0x1E938: 68, - 0x1E939: 68, - 0x1E93A: 68, - 0x1E93B: 68, - 0x1E93C: 68, - 0x1E93D: 68, - 0x1E93E: 68, - 0x1E93F: 68, - 0x1E940: 68, - 0x1E941: 68, - 0x1E942: 68, - 0x1E943: 68, - 0x1E944: 84, - 0x1E945: 84, - 0x1E946: 84, - 0x1E947: 84, - 0x1E948: 84, - 0x1E949: 84, - 0x1E94A: 84, - 0x1E94B: 84, - 0xE0001: 84, - 0xE0020: 84, - 0xE0021: 84, - 0xE0022: 84, - 0xE0023: 84, - 0xE0024: 84, - 0xE0025: 84, - 0xE0026: 84, - 0xE0027: 84, - 0xE0028: 84, - 0xE0029: 84, - 0xE002A: 84, - 0xE002B: 84, - 0xE002C: 84, - 0xE002D: 84, - 0xE002E: 84, - 0xE002F: 84, - 0xE0030: 84, - 0xE0031: 84, - 0xE0032: 84, - 0xE0033: 84, - 0xE0034: 84, - 0xE0035: 84, - 0xE0036: 84, - 0xE0037: 84, - 0xE0038: 84, - 0xE0039: 84, - 0xE003A: 84, - 0xE003B: 84, - 0xE003C: 84, - 0xE003D: 84, - 0xE003E: 84, - 0xE003F: 84, - 0xE0040: 84, - 0xE0041: 84, - 0xE0042: 84, - 0xE0043: 84, - 0xE0044: 84, - 0xE0045: 84, - 0xE0046: 84, - 0xE0047: 84, - 0xE0048: 84, - 0xE0049: 84, - 0xE004A: 84, - 0xE004B: 84, - 0xE004C: 84, - 0xE004D: 84, - 0xE004E: 84, - 0xE004F: 84, - 0xE0050: 84, - 0xE0051: 84, - 0xE0052: 84, - 0xE0053: 84, - 0xE0054: 84, - 0xE0055: 84, - 0xE0056: 84, - 0xE0057: 84, - 0xE0058: 84, - 0xE0059: 84, - 0xE005A: 84, - 0xE005B: 84, - 0xE005C: 84, - 0xE005D: 84, - 0xE005E: 84, - 0xE005F: 84, - 0xE0060: 84, - 0xE0061: 84, - 0xE0062: 84, - 0xE0063: 84, - 0xE0064: 84, - 0xE0065: 84, - 0xE0066: 84, - 0xE0067: 84, - 0xE0068: 84, - 0xE0069: 84, - 0xE006A: 84, - 0xE006B: 84, - 0xE006C: 84, - 0xE006D: 84, - 0xE006E: 84, - 0xE006F: 84, - 0xE0070: 84, - 0xE0071: 84, - 0xE0072: 84, - 0xE0073: 84, - 0xE0074: 84, - 0xE0075: 84, - 0xE0076: 84, - 0xE0077: 84, - 0xE0078: 84, - 0xE0079: 84, - 0xE007A: 84, - 0xE007B: 84, - 0xE007C: 84, - 0xE007D: 84, - 0xE007E: 84, - 0xE007F: 84, - 0xE0100: 84, - 0xE0101: 84, - 0xE0102: 84, - 0xE0103: 84, - 0xE0104: 84, - 0xE0105: 84, - 0xE0106: 84, - 0xE0107: 84, - 0xE0108: 84, - 0xE0109: 84, - 0xE010A: 84, - 0xE010B: 84, - 0xE010C: 84, - 0xE010D: 84, - 0xE010E: 84, - 0xE010F: 84, - 0xE0110: 84, - 0xE0111: 84, - 0xE0112: 84, - 0xE0113: 84, - 0xE0114: 84, - 0xE0115: 84, - 0xE0116: 84, - 0xE0117: 84, - 0xE0118: 84, - 0xE0119: 84, - 0xE011A: 84, - 0xE011B: 84, - 0xE011C: 84, - 0xE011D: 84, - 0xE011E: 84, - 0xE011F: 84, - 0xE0120: 84, - 0xE0121: 84, - 0xE0122: 84, - 0xE0123: 84, - 0xE0124: 84, - 0xE0125: 84, - 0xE0126: 84, - 0xE0127: 84, - 0xE0128: 84, - 0xE0129: 84, - 0xE012A: 84, - 0xE012B: 84, - 0xE012C: 84, - 0xE012D: 84, - 0xE012E: 84, - 0xE012F: 84, - 0xE0130: 84, - 0xE0131: 84, - 0xE0132: 84, - 0xE0133: 84, - 0xE0134: 84, - 0xE0135: 84, - 0xE0136: 84, - 0xE0137: 84, - 0xE0138: 84, - 0xE0139: 84, - 0xE013A: 84, - 0xE013B: 84, - 0xE013C: 84, - 0xE013D: 84, - 0xE013E: 84, - 0xE013F: 84, - 0xE0140: 84, - 0xE0141: 84, - 0xE0142: 84, - 0xE0143: 84, - 0xE0144: 84, - 0xE0145: 84, - 0xE0146: 84, - 0xE0147: 84, - 0xE0148: 84, - 0xE0149: 84, - 0xE014A: 84, - 0xE014B: 84, - 0xE014C: 84, - 0xE014D: 84, - 0xE014E: 84, - 0xE014F: 84, - 0xE0150: 84, - 0xE0151: 84, - 0xE0152: 84, - 0xE0153: 84, - 0xE0154: 84, - 0xE0155: 84, - 0xE0156: 84, - 0xE0157: 84, - 0xE0158: 84, - 0xE0159: 84, - 0xE015A: 84, - 0xE015B: 84, - 0xE015C: 84, - 0xE015D: 84, - 0xE015E: 84, - 0xE015F: 84, - 0xE0160: 84, - 0xE0161: 84, - 0xE0162: 84, - 0xE0163: 84, - 0xE0164: 84, - 0xE0165: 84, - 0xE0166: 84, - 0xE0167: 84, - 0xE0168: 84, - 0xE0169: 84, - 0xE016A: 84, - 0xE016B: 84, - 0xE016C: 84, - 0xE016D: 84, - 0xE016E: 84, - 0xE016F: 84, - 0xE0170: 84, - 0xE0171: 84, - 0xE0172: 84, - 0xE0173: 84, - 0xE0174: 84, - 0xE0175: 84, - 0xE0176: 84, - 0xE0177: 84, - 0xE0178: 84, - 0xE0179: 84, - 0xE017A: 84, - 0xE017B: 84, - 0xE017C: 84, - 0xE017D: 84, - 0xE017E: 84, - 0xE017F: 84, - 0xE0180: 84, - 0xE0181: 84, - 0xE0182: 84, - 0xE0183: 84, - 0xE0184: 84, - 0xE0185: 84, - 0xE0186: 84, - 0xE0187: 84, - 0xE0188: 84, - 0xE0189: 84, - 0xE018A: 84, - 0xE018B: 84, - 0xE018C: 84, - 0xE018D: 84, - 0xE018E: 84, - 0xE018F: 84, - 0xE0190: 84, - 0xE0191: 84, - 0xE0192: 84, - 0xE0193: 84, - 0xE0194: 84, - 0xE0195: 84, - 0xE0196: 84, - 0xE0197: 84, - 0xE0198: 84, - 0xE0199: 84, - 0xE019A: 84, - 0xE019B: 84, - 0xE019C: 84, - 0xE019D: 84, - 0xE019E: 84, - 0xE019F: 84, - 0xE01A0: 84, - 0xE01A1: 84, - 0xE01A2: 84, - 0xE01A3: 84, - 0xE01A4: 84, - 0xE01A5: 84, - 0xE01A6: 84, - 0xE01A7: 84, - 0xE01A8: 84, - 0xE01A9: 84, - 0xE01AA: 84, - 0xE01AB: 84, - 0xE01AC: 84, - 0xE01AD: 84, - 0xE01AE: 84, - 0xE01AF: 84, - 0xE01B0: 84, - 0xE01B1: 84, - 0xE01B2: 84, - 0xE01B3: 84, - 0xE01B4: 84, - 0xE01B5: 84, - 0xE01B6: 84, - 0xE01B7: 84, - 0xE01B8: 84, - 0xE01B9: 84, - 0xE01BA: 84, - 0xE01BB: 84, - 0xE01BC: 84, - 0xE01BD: 84, - 0xE01BE: 84, - 0xE01BF: 84, - 0xE01C0: 84, - 0xE01C1: 84, - 0xE01C2: 84, - 0xE01C3: 84, - 0xE01C4: 84, - 0xE01C5: 84, - 0xE01C6: 84, - 0xE01C7: 84, - 0xE01C8: 84, - 0xE01C9: 84, - 0xE01CA: 84, - 0xE01CB: 84, - 0xE01CC: 84, - 0xE01CD: 84, - 0xE01CE: 84, - 0xE01CF: 84, - 0xE01D0: 84, - 0xE01D1: 84, - 0xE01D2: 84, - 0xE01D3: 84, - 0xE01D4: 84, - 0xE01D5: 84, - 0xE01D6: 84, - 0xE01D7: 84, - 0xE01D8: 84, - 0xE01D9: 84, - 0xE01DA: 84, - 0xE01DB: 84, - 0xE01DC: 84, - 0xE01DD: 84, - 0xE01DE: 84, - 0xE01DF: 84, - 0xE01E0: 84, - 0xE01E1: 84, - 0xE01E2: 84, - 0xE01E3: 84, - 0xE01E4: 84, - 0xE01E5: 84, - 0xE01E6: 84, - 0xE01E7: 84, - 0xE01E8: 84, - 0xE01E9: 84, - 0xE01EA: 84, - 0xE01EB: 84, - 0xE01EC: 84, - 0xE01ED: 84, - 0xE01EE: 84, - 0xE01EF: 84, -} -codepoint_classes = { - "PVALID": ( - 0x2D0000002E, - 0x300000003A, - 0x610000007B, - 0xDF000000F7, - 0xF800000100, - 0x10100000102, - 0x10300000104, - 0x10500000106, - 0x10700000108, - 0x1090000010A, - 0x10B0000010C, - 0x10D0000010E, - 0x10F00000110, - 0x11100000112, - 0x11300000114, - 0x11500000116, - 0x11700000118, - 0x1190000011A, - 0x11B0000011C, - 0x11D0000011E, - 0x11F00000120, - 0x12100000122, - 0x12300000124, - 0x12500000126, - 0x12700000128, - 0x1290000012A, - 0x12B0000012C, - 0x12D0000012E, - 0x12F00000130, - 0x13100000132, - 0x13500000136, - 0x13700000139, - 0x13A0000013B, - 0x13C0000013D, - 0x13E0000013F, - 0x14200000143, - 0x14400000145, - 0x14600000147, - 0x14800000149, - 0x14B0000014C, - 0x14D0000014E, - 0x14F00000150, - 0x15100000152, - 0x15300000154, - 0x15500000156, - 0x15700000158, - 0x1590000015A, - 0x15B0000015C, - 0x15D0000015E, - 0x15F00000160, - 0x16100000162, - 0x16300000164, - 0x16500000166, - 0x16700000168, - 0x1690000016A, - 0x16B0000016C, - 0x16D0000016E, - 0x16F00000170, - 0x17100000172, - 0x17300000174, - 0x17500000176, - 0x17700000178, - 0x17A0000017B, - 0x17C0000017D, - 0x17E0000017F, - 0x18000000181, - 0x18300000184, - 0x18500000186, - 0x18800000189, - 0x18C0000018E, - 0x19200000193, - 0x19500000196, - 0x1990000019C, - 0x19E0000019F, - 0x1A1000001A2, - 0x1A3000001A4, - 0x1A5000001A6, - 0x1A8000001A9, - 0x1AA000001AC, - 0x1AD000001AE, - 0x1B0000001B1, - 0x1B4000001B5, - 0x1B6000001B7, - 0x1B9000001BC, - 0x1BD000001C4, - 0x1CE000001CF, - 0x1D0000001D1, - 0x1D2000001D3, - 0x1D4000001D5, - 0x1D6000001D7, - 0x1D8000001D9, - 0x1DA000001DB, - 0x1DC000001DE, - 0x1DF000001E0, - 0x1E1000001E2, - 0x1E3000001E4, - 0x1E5000001E6, - 0x1E7000001E8, - 0x1E9000001EA, - 0x1EB000001EC, - 0x1ED000001EE, - 0x1EF000001F1, - 0x1F5000001F6, - 0x1F9000001FA, - 0x1FB000001FC, - 0x1FD000001FE, - 0x1FF00000200, - 0x20100000202, - 0x20300000204, - 0x20500000206, - 0x20700000208, - 0x2090000020A, - 0x20B0000020C, - 0x20D0000020E, - 0x20F00000210, - 0x21100000212, - 0x21300000214, - 0x21500000216, - 0x21700000218, - 0x2190000021A, - 0x21B0000021C, - 0x21D0000021E, - 0x21F00000220, - 0x22100000222, - 0x22300000224, - 0x22500000226, - 0x22700000228, - 0x2290000022A, - 0x22B0000022C, - 0x22D0000022E, - 0x22F00000230, - 0x23100000232, - 0x2330000023A, - 0x23C0000023D, - 0x23F00000241, - 0x24200000243, - 0x24700000248, - 0x2490000024A, - 0x24B0000024C, - 0x24D0000024E, - 0x24F000002B0, - 0x2B9000002C2, - 0x2C6000002D2, - 0x2EC000002ED, - 0x2EE000002EF, - 0x30000000340, - 0x34200000343, - 0x3460000034F, - 0x35000000370, - 0x37100000372, - 0x37300000374, - 0x37700000378, - 0x37B0000037E, - 0x39000000391, - 0x3AC000003CF, - 0x3D7000003D8, - 0x3D9000003DA, - 0x3DB000003DC, - 0x3DD000003DE, - 0x3DF000003E0, - 0x3E1000003E2, - 0x3E3000003E4, - 0x3E5000003E6, - 0x3E7000003E8, - 0x3E9000003EA, - 0x3EB000003EC, - 0x3ED000003EE, - 0x3EF000003F0, - 0x3F3000003F4, - 0x3F8000003F9, - 0x3FB000003FD, - 0x43000000460, - 0x46100000462, - 0x46300000464, - 0x46500000466, - 0x46700000468, - 0x4690000046A, - 0x46B0000046C, - 0x46D0000046E, - 0x46F00000470, - 0x47100000472, - 0x47300000474, - 0x47500000476, - 0x47700000478, - 0x4790000047A, - 0x47B0000047C, - 0x47D0000047E, - 0x47F00000480, - 0x48100000482, - 0x48300000488, - 0x48B0000048C, - 0x48D0000048E, - 0x48F00000490, - 0x49100000492, - 0x49300000494, - 0x49500000496, - 0x49700000498, - 0x4990000049A, - 0x49B0000049C, - 0x49D0000049E, - 0x49F000004A0, - 0x4A1000004A2, - 0x4A3000004A4, - 0x4A5000004A6, - 0x4A7000004A8, - 0x4A9000004AA, - 0x4AB000004AC, - 0x4AD000004AE, - 0x4AF000004B0, - 0x4B1000004B2, - 0x4B3000004B4, - 0x4B5000004B6, - 0x4B7000004B8, - 0x4B9000004BA, - 0x4BB000004BC, - 0x4BD000004BE, - 0x4BF000004C0, - 0x4C2000004C3, - 0x4C4000004C5, - 0x4C6000004C7, - 0x4C8000004C9, - 0x4CA000004CB, - 0x4CC000004CD, - 0x4CE000004D0, - 0x4D1000004D2, - 0x4D3000004D4, - 0x4D5000004D6, - 0x4D7000004D8, - 0x4D9000004DA, - 0x4DB000004DC, - 0x4DD000004DE, - 0x4DF000004E0, - 0x4E1000004E2, - 0x4E3000004E4, - 0x4E5000004E6, - 0x4E7000004E8, - 0x4E9000004EA, - 0x4EB000004EC, - 0x4ED000004EE, - 0x4EF000004F0, - 0x4F1000004F2, - 0x4F3000004F4, - 0x4F5000004F6, - 0x4F7000004F8, - 0x4F9000004FA, - 0x4FB000004FC, - 0x4FD000004FE, - 0x4FF00000500, - 0x50100000502, - 0x50300000504, - 0x50500000506, - 0x50700000508, - 0x5090000050A, - 0x50B0000050C, - 0x50D0000050E, - 0x50F00000510, - 0x51100000512, - 0x51300000514, - 0x51500000516, - 0x51700000518, - 0x5190000051A, - 0x51B0000051C, - 0x51D0000051E, - 0x51F00000520, - 0x52100000522, - 0x52300000524, - 0x52500000526, - 0x52700000528, - 0x5290000052A, - 0x52B0000052C, - 0x52D0000052E, - 0x52F00000530, - 0x5590000055A, - 0x56000000587, - 0x58800000589, - 0x591000005BE, - 0x5BF000005C0, - 0x5C1000005C3, - 0x5C4000005C6, - 0x5C7000005C8, - 0x5D0000005EB, - 0x5EF000005F3, - 0x6100000061B, - 0x62000000640, - 0x64100000660, - 0x66E00000675, - 0x679000006D4, - 0x6D5000006DD, - 0x6DF000006E9, - 0x6EA000006F0, - 0x6FA00000700, - 0x7100000074B, - 0x74D000007B2, - 0x7C0000007F6, - 0x7FD000007FE, - 0x8000000082E, - 0x8400000085C, - 0x8600000086B, - 0x87000000888, - 0x8890000088F, - 0x898000008E2, - 0x8E300000958, - 0x96000000964, - 0x96600000970, - 0x97100000984, - 0x9850000098D, - 0x98F00000991, - 0x993000009A9, - 0x9AA000009B1, - 0x9B2000009B3, - 0x9B6000009BA, - 0x9BC000009C5, - 0x9C7000009C9, - 0x9CB000009CF, - 0x9D7000009D8, - 0x9E0000009E4, - 0x9E6000009F2, - 0x9FC000009FD, - 0x9FE000009FF, - 0xA0100000A04, - 0xA0500000A0B, - 0xA0F00000A11, - 0xA1300000A29, - 0xA2A00000A31, - 0xA3200000A33, - 0xA3500000A36, - 0xA3800000A3A, - 0xA3C00000A3D, - 0xA3E00000A43, - 0xA4700000A49, - 0xA4B00000A4E, - 0xA5100000A52, - 0xA5C00000A5D, - 0xA6600000A76, - 0xA8100000A84, - 0xA8500000A8E, - 0xA8F00000A92, - 0xA9300000AA9, - 0xAAA00000AB1, - 0xAB200000AB4, - 0xAB500000ABA, - 0xABC00000AC6, - 0xAC700000ACA, - 0xACB00000ACE, - 0xAD000000AD1, - 0xAE000000AE4, - 0xAE600000AF0, - 0xAF900000B00, - 0xB0100000B04, - 0xB0500000B0D, - 0xB0F00000B11, - 0xB1300000B29, - 0xB2A00000B31, - 0xB3200000B34, - 0xB3500000B3A, - 0xB3C00000B45, - 0xB4700000B49, - 0xB4B00000B4E, - 0xB5500000B58, - 0xB5F00000B64, - 0xB6600000B70, - 0xB7100000B72, - 0xB8200000B84, - 0xB8500000B8B, - 0xB8E00000B91, - 0xB9200000B96, - 0xB9900000B9B, - 0xB9C00000B9D, - 0xB9E00000BA0, - 0xBA300000BA5, - 0xBA800000BAB, - 0xBAE00000BBA, - 0xBBE00000BC3, - 0xBC600000BC9, - 0xBCA00000BCE, - 0xBD000000BD1, - 0xBD700000BD8, - 0xBE600000BF0, - 0xC0000000C0D, - 0xC0E00000C11, - 0xC1200000C29, - 0xC2A00000C3A, - 0xC3C00000C45, - 0xC4600000C49, - 0xC4A00000C4E, - 0xC5500000C57, - 0xC5800000C5B, - 0xC5D00000C5E, - 0xC6000000C64, - 0xC6600000C70, - 0xC8000000C84, - 0xC8500000C8D, - 0xC8E00000C91, - 0xC9200000CA9, - 0xCAA00000CB4, - 0xCB500000CBA, - 0xCBC00000CC5, - 0xCC600000CC9, - 0xCCA00000CCE, - 0xCD500000CD7, - 0xCDD00000CDF, - 0xCE000000CE4, - 0xCE600000CF0, - 0xCF100000CF4, - 0xD0000000D0D, - 0xD0E00000D11, - 0xD1200000D45, - 0xD4600000D49, - 0xD4A00000D4F, - 0xD5400000D58, - 0xD5F00000D64, - 0xD6600000D70, - 0xD7A00000D80, - 0xD8100000D84, - 0xD8500000D97, - 0xD9A00000DB2, - 0xDB300000DBC, - 0xDBD00000DBE, - 0xDC000000DC7, - 0xDCA00000DCB, - 0xDCF00000DD5, - 0xDD600000DD7, - 0xDD800000DE0, - 0xDE600000DF0, - 0xDF200000DF4, - 0xE0100000E33, - 0xE3400000E3B, - 0xE4000000E4F, - 0xE5000000E5A, - 0xE8100000E83, - 0xE8400000E85, - 0xE8600000E8B, - 0xE8C00000EA4, - 0xEA500000EA6, - 0xEA700000EB3, - 0xEB400000EBE, - 0xEC000000EC5, - 0xEC600000EC7, - 0xEC800000ECF, - 0xED000000EDA, - 0xEDE00000EE0, - 0xF0000000F01, - 0xF0B00000F0C, - 0xF1800000F1A, - 0xF2000000F2A, - 0xF3500000F36, - 0xF3700000F38, - 0xF3900000F3A, - 0xF3E00000F43, - 0xF4400000F48, - 0xF4900000F4D, - 0xF4E00000F52, - 0xF5300000F57, - 0xF5800000F5C, - 0xF5D00000F69, - 0xF6A00000F6D, - 0xF7100000F73, - 0xF7400000F75, - 0xF7A00000F81, - 0xF8200000F85, - 0xF8600000F93, - 0xF9400000F98, - 0xF9900000F9D, - 0xF9E00000FA2, - 0xFA300000FA7, - 0xFA800000FAC, - 0xFAD00000FB9, - 0xFBA00000FBD, - 0xFC600000FC7, - 0x10000000104A, - 0x10500000109E, - 0x10D0000010FB, - 0x10FD00001100, - 0x120000001249, - 0x124A0000124E, - 0x125000001257, - 0x125800001259, - 0x125A0000125E, - 0x126000001289, - 0x128A0000128E, - 0x1290000012B1, - 0x12B2000012B6, - 0x12B8000012BF, - 0x12C0000012C1, - 0x12C2000012C6, - 0x12C8000012D7, - 0x12D800001311, - 0x131200001316, - 0x13180000135B, - 0x135D00001360, - 0x138000001390, - 0x13A0000013F6, - 0x14010000166D, - 0x166F00001680, - 0x16810000169B, - 0x16A0000016EB, - 0x16F1000016F9, - 0x170000001716, - 0x171F00001735, - 0x174000001754, - 0x17600000176D, - 0x176E00001771, - 0x177200001774, - 0x1780000017B4, - 0x17B6000017D4, - 0x17D7000017D8, - 0x17DC000017DE, - 0x17E0000017EA, - 0x18100000181A, - 0x182000001879, - 0x1880000018AB, - 0x18B0000018F6, - 0x19000000191F, - 0x19200000192C, - 0x19300000193C, - 0x19460000196E, - 0x197000001975, - 0x1980000019AC, - 0x19B0000019CA, - 0x19D0000019DA, - 0x1A0000001A1C, - 0x1A2000001A5F, - 0x1A6000001A7D, - 0x1A7F00001A8A, - 0x1A9000001A9A, - 0x1AA700001AA8, - 0x1AB000001ABE, - 0x1ABF00001ACF, - 0x1B0000001B4D, - 0x1B5000001B5A, - 0x1B6B00001B74, - 0x1B8000001BF4, - 0x1C0000001C38, - 0x1C4000001C4A, - 0x1C4D00001C7E, - 0x1CD000001CD3, - 0x1CD400001CFB, - 0x1D0000001D2C, - 0x1D2F00001D30, - 0x1D3B00001D3C, - 0x1D4E00001D4F, - 0x1D6B00001D78, - 0x1D7900001D9B, - 0x1DC000001E00, - 0x1E0100001E02, - 0x1E0300001E04, - 0x1E0500001E06, - 0x1E0700001E08, - 0x1E0900001E0A, - 0x1E0B00001E0C, - 0x1E0D00001E0E, - 0x1E0F00001E10, - 0x1E1100001E12, - 0x1E1300001E14, - 0x1E1500001E16, - 0x1E1700001E18, - 0x1E1900001E1A, - 0x1E1B00001E1C, - 0x1E1D00001E1E, - 0x1E1F00001E20, - 0x1E2100001E22, - 0x1E2300001E24, - 0x1E2500001E26, - 0x1E2700001E28, - 0x1E2900001E2A, - 0x1E2B00001E2C, - 0x1E2D00001E2E, - 0x1E2F00001E30, - 0x1E3100001E32, - 0x1E3300001E34, - 0x1E3500001E36, - 0x1E3700001E38, - 0x1E3900001E3A, - 0x1E3B00001E3C, - 0x1E3D00001E3E, - 0x1E3F00001E40, - 0x1E4100001E42, - 0x1E4300001E44, - 0x1E4500001E46, - 0x1E4700001E48, - 0x1E4900001E4A, - 0x1E4B00001E4C, - 0x1E4D00001E4E, - 0x1E4F00001E50, - 0x1E5100001E52, - 0x1E5300001E54, - 0x1E5500001E56, - 0x1E5700001E58, - 0x1E5900001E5A, - 0x1E5B00001E5C, - 0x1E5D00001E5E, - 0x1E5F00001E60, - 0x1E6100001E62, - 0x1E6300001E64, - 0x1E6500001E66, - 0x1E6700001E68, - 0x1E6900001E6A, - 0x1E6B00001E6C, - 0x1E6D00001E6E, - 0x1E6F00001E70, - 0x1E7100001E72, - 0x1E7300001E74, - 0x1E7500001E76, - 0x1E7700001E78, - 0x1E7900001E7A, - 0x1E7B00001E7C, - 0x1E7D00001E7E, - 0x1E7F00001E80, - 0x1E8100001E82, - 0x1E8300001E84, - 0x1E8500001E86, - 0x1E8700001E88, - 0x1E8900001E8A, - 0x1E8B00001E8C, - 0x1E8D00001E8E, - 0x1E8F00001E90, - 0x1E9100001E92, - 0x1E9300001E94, - 0x1E9500001E9A, - 0x1E9C00001E9E, - 0x1E9F00001EA0, - 0x1EA100001EA2, - 0x1EA300001EA4, - 0x1EA500001EA6, - 0x1EA700001EA8, - 0x1EA900001EAA, - 0x1EAB00001EAC, - 0x1EAD00001EAE, - 0x1EAF00001EB0, - 0x1EB100001EB2, - 0x1EB300001EB4, - 0x1EB500001EB6, - 0x1EB700001EB8, - 0x1EB900001EBA, - 0x1EBB00001EBC, - 0x1EBD00001EBE, - 0x1EBF00001EC0, - 0x1EC100001EC2, - 0x1EC300001EC4, - 0x1EC500001EC6, - 0x1EC700001EC8, - 0x1EC900001ECA, - 0x1ECB00001ECC, - 0x1ECD00001ECE, - 0x1ECF00001ED0, - 0x1ED100001ED2, - 0x1ED300001ED4, - 0x1ED500001ED6, - 0x1ED700001ED8, - 0x1ED900001EDA, - 0x1EDB00001EDC, - 0x1EDD00001EDE, - 0x1EDF00001EE0, - 0x1EE100001EE2, - 0x1EE300001EE4, - 0x1EE500001EE6, - 0x1EE700001EE8, - 0x1EE900001EEA, - 0x1EEB00001EEC, - 0x1EED00001EEE, - 0x1EEF00001EF0, - 0x1EF100001EF2, - 0x1EF300001EF4, - 0x1EF500001EF6, - 0x1EF700001EF8, - 0x1EF900001EFA, - 0x1EFB00001EFC, - 0x1EFD00001EFE, - 0x1EFF00001F08, - 0x1F1000001F16, - 0x1F2000001F28, - 0x1F3000001F38, - 0x1F4000001F46, - 0x1F5000001F58, - 0x1F6000001F68, - 0x1F7000001F71, - 0x1F7200001F73, - 0x1F7400001F75, - 0x1F7600001F77, - 0x1F7800001F79, - 0x1F7A00001F7B, - 0x1F7C00001F7D, - 0x1FB000001FB2, - 0x1FB600001FB7, - 0x1FC600001FC7, - 0x1FD000001FD3, - 0x1FD600001FD8, - 0x1FE000001FE3, - 0x1FE400001FE8, - 0x1FF600001FF7, - 0x214E0000214F, - 0x218400002185, - 0x2C3000002C60, - 0x2C6100002C62, - 0x2C6500002C67, - 0x2C6800002C69, - 0x2C6A00002C6B, - 0x2C6C00002C6D, - 0x2C7100002C72, - 0x2C7300002C75, - 0x2C7600002C7C, - 0x2C8100002C82, - 0x2C8300002C84, - 0x2C8500002C86, - 0x2C8700002C88, - 0x2C8900002C8A, - 0x2C8B00002C8C, - 0x2C8D00002C8E, - 0x2C8F00002C90, - 0x2C9100002C92, - 0x2C9300002C94, - 0x2C9500002C96, - 0x2C9700002C98, - 0x2C9900002C9A, - 0x2C9B00002C9C, - 0x2C9D00002C9E, - 0x2C9F00002CA0, - 0x2CA100002CA2, - 0x2CA300002CA4, - 0x2CA500002CA6, - 0x2CA700002CA8, - 0x2CA900002CAA, - 0x2CAB00002CAC, - 0x2CAD00002CAE, - 0x2CAF00002CB0, - 0x2CB100002CB2, - 0x2CB300002CB4, - 0x2CB500002CB6, - 0x2CB700002CB8, - 0x2CB900002CBA, - 0x2CBB00002CBC, - 0x2CBD00002CBE, - 0x2CBF00002CC0, - 0x2CC100002CC2, - 0x2CC300002CC4, - 0x2CC500002CC6, - 0x2CC700002CC8, - 0x2CC900002CCA, - 0x2CCB00002CCC, - 0x2CCD00002CCE, - 0x2CCF00002CD0, - 0x2CD100002CD2, - 0x2CD300002CD4, - 0x2CD500002CD6, - 0x2CD700002CD8, - 0x2CD900002CDA, - 0x2CDB00002CDC, - 0x2CDD00002CDE, - 0x2CDF00002CE0, - 0x2CE100002CE2, - 0x2CE300002CE5, - 0x2CEC00002CED, - 0x2CEE00002CF2, - 0x2CF300002CF4, - 0x2D0000002D26, - 0x2D2700002D28, - 0x2D2D00002D2E, - 0x2D3000002D68, - 0x2D7F00002D97, - 0x2DA000002DA7, - 0x2DA800002DAF, - 0x2DB000002DB7, - 0x2DB800002DBF, - 0x2DC000002DC7, - 0x2DC800002DCF, - 0x2DD000002DD7, - 0x2DD800002DDF, - 0x2DE000002E00, - 0x2E2F00002E30, - 0x300500003008, - 0x302A0000302E, - 0x303C0000303D, - 0x304100003097, - 0x30990000309B, - 0x309D0000309F, - 0x30A1000030FB, - 0x30FC000030FF, - 0x310500003130, - 0x31A0000031C0, - 0x31F000003200, - 0x340000004DC0, - 0x4E000000A48D, - 0xA4D00000A4FE, - 0xA5000000A60D, - 0xA6100000A62C, - 0xA6410000A642, - 0xA6430000A644, - 0xA6450000A646, - 0xA6470000A648, - 0xA6490000A64A, - 0xA64B0000A64C, - 0xA64D0000A64E, - 0xA64F0000A650, - 0xA6510000A652, - 0xA6530000A654, - 0xA6550000A656, - 0xA6570000A658, - 0xA6590000A65A, - 0xA65B0000A65C, - 0xA65D0000A65E, - 0xA65F0000A660, - 0xA6610000A662, - 0xA6630000A664, - 0xA6650000A666, - 0xA6670000A668, - 0xA6690000A66A, - 0xA66B0000A66C, - 0xA66D0000A670, - 0xA6740000A67E, - 0xA67F0000A680, - 0xA6810000A682, - 0xA6830000A684, - 0xA6850000A686, - 0xA6870000A688, - 0xA6890000A68A, - 0xA68B0000A68C, - 0xA68D0000A68E, - 0xA68F0000A690, - 0xA6910000A692, - 0xA6930000A694, - 0xA6950000A696, - 0xA6970000A698, - 0xA6990000A69A, - 0xA69B0000A69C, - 0xA69E0000A6E6, - 0xA6F00000A6F2, - 0xA7170000A720, - 0xA7230000A724, - 0xA7250000A726, - 0xA7270000A728, - 0xA7290000A72A, - 0xA72B0000A72C, - 0xA72D0000A72E, - 0xA72F0000A732, - 0xA7330000A734, - 0xA7350000A736, - 0xA7370000A738, - 0xA7390000A73A, - 0xA73B0000A73C, - 0xA73D0000A73E, - 0xA73F0000A740, - 0xA7410000A742, - 0xA7430000A744, - 0xA7450000A746, - 0xA7470000A748, - 0xA7490000A74A, - 0xA74B0000A74C, - 0xA74D0000A74E, - 0xA74F0000A750, - 0xA7510000A752, - 0xA7530000A754, - 0xA7550000A756, - 0xA7570000A758, - 0xA7590000A75A, - 0xA75B0000A75C, - 0xA75D0000A75E, - 0xA75F0000A760, - 0xA7610000A762, - 0xA7630000A764, - 0xA7650000A766, - 0xA7670000A768, - 0xA7690000A76A, - 0xA76B0000A76C, - 0xA76D0000A76E, - 0xA76F0000A770, - 0xA7710000A779, - 0xA77A0000A77B, - 0xA77C0000A77D, - 0xA77F0000A780, - 0xA7810000A782, - 0xA7830000A784, - 0xA7850000A786, - 0xA7870000A789, - 0xA78C0000A78D, - 0xA78E0000A790, - 0xA7910000A792, - 0xA7930000A796, - 0xA7970000A798, - 0xA7990000A79A, - 0xA79B0000A79C, - 0xA79D0000A79E, - 0xA79F0000A7A0, - 0xA7A10000A7A2, - 0xA7A30000A7A4, - 0xA7A50000A7A6, - 0xA7A70000A7A8, - 0xA7A90000A7AA, - 0xA7AF0000A7B0, - 0xA7B50000A7B6, - 0xA7B70000A7B8, - 0xA7B90000A7BA, - 0xA7BB0000A7BC, - 0xA7BD0000A7BE, - 0xA7BF0000A7C0, - 0xA7C10000A7C2, - 0xA7C30000A7C4, - 0xA7C80000A7C9, - 0xA7CA0000A7CB, - 0xA7D10000A7D2, - 0xA7D30000A7D4, - 0xA7D50000A7D6, - 0xA7D70000A7D8, - 0xA7D90000A7DA, - 0xA7F60000A7F8, - 0xA7FA0000A828, - 0xA82C0000A82D, - 0xA8400000A874, - 0xA8800000A8C6, - 0xA8D00000A8DA, - 0xA8E00000A8F8, - 0xA8FB0000A8FC, - 0xA8FD0000A92E, - 0xA9300000A954, - 0xA9800000A9C1, - 0xA9CF0000A9DA, - 0xA9E00000A9FF, - 0xAA000000AA37, - 0xAA400000AA4E, - 0xAA500000AA5A, - 0xAA600000AA77, - 0xAA7A0000AAC3, - 0xAADB0000AADE, - 0xAAE00000AAF0, - 0xAAF20000AAF7, - 0xAB010000AB07, - 0xAB090000AB0F, - 0xAB110000AB17, - 0xAB200000AB27, - 0xAB280000AB2F, - 0xAB300000AB5B, - 0xAB600000AB69, - 0xABC00000ABEB, - 0xABEC0000ABEE, - 0xABF00000ABFA, - 0xAC000000D7A4, - 0xFA0E0000FA10, - 0xFA110000FA12, - 0xFA130000FA15, - 0xFA1F0000FA20, - 0xFA210000FA22, - 0xFA230000FA25, - 0xFA270000FA2A, - 0xFB1E0000FB1F, - 0xFE200000FE30, - 0xFE730000FE74, - 0x100000001000C, - 0x1000D00010027, - 0x100280001003B, - 0x1003C0001003E, - 0x1003F0001004E, - 0x100500001005E, - 0x10080000100FB, - 0x101FD000101FE, - 0x102800001029D, - 0x102A0000102D1, - 0x102E0000102E1, - 0x1030000010320, - 0x1032D00010341, - 0x103420001034A, - 0x103500001037B, - 0x103800001039E, - 0x103A0000103C4, - 0x103C8000103D0, - 0x104280001049E, - 0x104A0000104AA, - 0x104D8000104FC, - 0x1050000010528, - 0x1053000010564, - 0x10597000105A2, - 0x105A3000105B2, - 0x105B3000105BA, - 0x105BB000105BD, - 0x1060000010737, - 0x1074000010756, - 0x1076000010768, - 0x1078000010781, - 0x1080000010806, - 0x1080800010809, - 0x1080A00010836, - 0x1083700010839, - 0x1083C0001083D, - 0x1083F00010856, - 0x1086000010877, - 0x108800001089F, - 0x108E0000108F3, - 0x108F4000108F6, - 0x1090000010916, - 0x109200001093A, - 0x10980000109B8, - 0x109BE000109C0, - 0x10A0000010A04, - 0x10A0500010A07, - 0x10A0C00010A14, - 0x10A1500010A18, - 0x10A1900010A36, - 0x10A3800010A3B, - 0x10A3F00010A40, - 0x10A6000010A7D, - 0x10A8000010A9D, - 0x10AC000010AC8, - 0x10AC900010AE7, - 0x10B0000010B36, - 0x10B4000010B56, - 0x10B6000010B73, - 0x10B8000010B92, - 0x10C0000010C49, - 0x10CC000010CF3, - 0x10D0000010D28, - 0x10D3000010D3A, - 0x10E8000010EAA, - 0x10EAB00010EAD, - 0x10EB000010EB2, - 0x10EFD00010F1D, - 0x10F2700010F28, - 0x10F3000010F51, - 0x10F7000010F86, - 0x10FB000010FC5, - 0x10FE000010FF7, - 0x1100000011047, - 0x1106600011076, - 0x1107F000110BB, - 0x110C2000110C3, - 0x110D0000110E9, - 0x110F0000110FA, - 0x1110000011135, - 0x1113600011140, - 0x1114400011148, - 0x1115000011174, - 0x1117600011177, - 0x11180000111C5, - 0x111C9000111CD, - 0x111CE000111DB, - 0x111DC000111DD, - 0x1120000011212, - 0x1121300011238, - 0x1123E00011242, - 0x1128000011287, - 0x1128800011289, - 0x1128A0001128E, - 0x1128F0001129E, - 0x1129F000112A9, - 0x112B0000112EB, - 0x112F0000112FA, - 0x1130000011304, - 0x113050001130D, - 0x1130F00011311, - 0x1131300011329, - 0x1132A00011331, - 0x1133200011334, - 0x113350001133A, - 0x1133B00011345, - 0x1134700011349, - 0x1134B0001134E, - 0x1135000011351, - 0x1135700011358, - 0x1135D00011364, - 0x113660001136D, - 0x1137000011375, - 0x114000001144B, - 0x114500001145A, - 0x1145E00011462, - 0x11480000114C6, - 0x114C7000114C8, - 0x114D0000114DA, - 0x11580000115B6, - 0x115B8000115C1, - 0x115D8000115DE, - 0x1160000011641, - 0x1164400011645, - 0x116500001165A, - 0x11680000116B9, - 0x116C0000116CA, - 0x117000001171B, - 0x1171D0001172C, - 0x117300001173A, - 0x1174000011747, - 0x118000001183B, - 0x118C0000118EA, - 0x118FF00011907, - 0x119090001190A, - 0x1190C00011914, - 0x1191500011917, - 0x1191800011936, - 0x1193700011939, - 0x1193B00011944, - 0x119500001195A, - 0x119A0000119A8, - 0x119AA000119D8, - 0x119DA000119E2, - 0x119E3000119E5, - 0x11A0000011A3F, - 0x11A4700011A48, - 0x11A5000011A9A, - 0x11A9D00011A9E, - 0x11AB000011AF9, - 0x11C0000011C09, - 0x11C0A00011C37, - 0x11C3800011C41, - 0x11C5000011C5A, - 0x11C7200011C90, - 0x11C9200011CA8, - 0x11CA900011CB7, - 0x11D0000011D07, - 0x11D0800011D0A, - 0x11D0B00011D37, - 0x11D3A00011D3B, - 0x11D3C00011D3E, - 0x11D3F00011D48, - 0x11D5000011D5A, - 0x11D6000011D66, - 0x11D6700011D69, - 0x11D6A00011D8F, - 0x11D9000011D92, - 0x11D9300011D99, - 0x11DA000011DAA, - 0x11EE000011EF7, - 0x11F0000011F11, - 0x11F1200011F3B, - 0x11F3E00011F43, - 0x11F5000011F5A, - 0x11FB000011FB1, - 0x120000001239A, - 0x1248000012544, - 0x12F9000012FF1, - 0x1300000013430, - 0x1344000013456, - 0x1440000014647, - 0x1680000016A39, - 0x16A4000016A5F, - 0x16A6000016A6A, - 0x16A7000016ABF, - 0x16AC000016ACA, - 0x16AD000016AEE, - 0x16AF000016AF5, - 0x16B0000016B37, - 0x16B4000016B44, - 0x16B5000016B5A, - 0x16B6300016B78, - 0x16B7D00016B90, - 0x16E6000016E80, - 0x16F0000016F4B, - 0x16F4F00016F88, - 0x16F8F00016FA0, - 0x16FE000016FE2, - 0x16FE300016FE5, - 0x16FF000016FF2, - 0x17000000187F8, - 0x1880000018CD6, - 0x18D0000018D09, - 0x1AFF00001AFF4, - 0x1AFF50001AFFC, - 0x1AFFD0001AFFF, - 0x1B0000001B123, - 0x1B1320001B133, - 0x1B1500001B153, - 0x1B1550001B156, - 0x1B1640001B168, - 0x1B1700001B2FC, - 0x1BC000001BC6B, - 0x1BC700001BC7D, - 0x1BC800001BC89, - 0x1BC900001BC9A, - 0x1BC9D0001BC9F, - 0x1CF000001CF2E, - 0x1CF300001CF47, - 0x1DA000001DA37, - 0x1DA3B0001DA6D, - 0x1DA750001DA76, - 0x1DA840001DA85, - 0x1DA9B0001DAA0, - 0x1DAA10001DAB0, - 0x1DF000001DF1F, - 0x1DF250001DF2B, - 0x1E0000001E007, - 0x1E0080001E019, - 0x1E01B0001E022, - 0x1E0230001E025, - 0x1E0260001E02B, - 0x1E08F0001E090, - 0x1E1000001E12D, - 0x1E1300001E13E, - 0x1E1400001E14A, - 0x1E14E0001E14F, - 0x1E2900001E2AF, - 0x1E2C00001E2FA, - 0x1E4D00001E4FA, - 0x1E7E00001E7E7, - 0x1E7E80001E7EC, - 0x1E7ED0001E7EF, - 0x1E7F00001E7FF, - 0x1E8000001E8C5, - 0x1E8D00001E8D7, - 0x1E9220001E94C, - 0x1E9500001E95A, - 0x200000002A6E0, - 0x2A7000002B73A, - 0x2B7400002B81E, - 0x2B8200002CEA2, - 0x2CEB00002EBE1, - 0x2EBF00002EE5E, - 0x300000003134B, - 0x31350000323B0, - ), - "CONTEXTJ": (0x200C0000200E,), - "CONTEXTO": ( - 0xB7000000B8, - 0x37500000376, - 0x5F3000005F5, - 0x6600000066A, - 0x6F0000006FA, - 0x30FB000030FC, - ), -} diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/intranges.py b/gnx-react/venv/lib/python3.12/site-packages/idna/intranges.py deleted file mode 100644 index 7bfaa8d8..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/intranges.py +++ /dev/null @@ -1,57 +0,0 @@ -""" -Given a list of integers, made up of (hopefully) a small number of long runs -of consecutive integers, compute a representation of the form -((start1, end1), (start2, end2) ...). Then answer the question "was x present -in the original list?" in time O(log(# runs)). -""" - -import bisect -from typing import List, Tuple - - -def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: - """Represent a list of integers as a sequence of ranges: - ((start_0, end_0), (start_1, end_1), ...), such that the original - integers are exactly those x such that start_i <= x < end_i for some i. - - Ranges are encoded as single integers (start << 32 | end), not as tuples. - """ - - sorted_list = sorted(list_) - ranges = [] - last_write = -1 - for i in range(len(sorted_list)): - if i + 1 < len(sorted_list): - if sorted_list[i] == sorted_list[i + 1] - 1: - continue - current_range = sorted_list[last_write + 1 : i + 1] - ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) - last_write = i - - return tuple(ranges) - - -def _encode_range(start: int, end: int) -> int: - return (start << 32) | end - - -def _decode_range(r: int) -> Tuple[int, int]: - return (r >> 32), (r & ((1 << 32) - 1)) - - -def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool: - """Determine if `int_` falls into one of the ranges in `ranges`.""" - tuple_ = _encode_range(int_, 0) - pos = bisect.bisect_left(ranges, tuple_) - # we could be immediately ahead of a tuple (start, end) - # with start < int_ <= end - if pos > 0: - left, right = _decode_range(ranges[pos - 1]) - if left <= int_ < right: - return True - # or we could be immediately behind a tuple (int_, end) - if pos < len(ranges): - left, _ = _decode_range(ranges[pos]) - if left == int_: - return True - return False diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/package_data.py b/gnx-react/venv/lib/python3.12/site-packages/idna/package_data.py deleted file mode 100644 index 514ff7e2..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/package_data.py +++ /dev/null @@ -1 +0,0 @@ -__version__ = "3.10" diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/py.typed b/gnx-react/venv/lib/python3.12/site-packages/idna/py.typed deleted file mode 100644 index e69de29b..00000000 diff --git a/gnx-react/venv/lib/python3.12/site-packages/idna/uts46data.py b/gnx-react/venv/lib/python3.12/site-packages/idna/uts46data.py deleted file mode 100644 index eb894327..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/idna/uts46data.py +++ /dev/null @@ -1,8681 +0,0 @@ -# This file is automatically generated by tools/idna-data -# vim: set fileencoding=utf-8 : - -from typing import List, Tuple, Union - -"""IDNA Mapping Table from UTS46.""" - - -__version__ = "15.1.0" - - -def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x0, "3"), - (0x1, "3"), - (0x2, "3"), - (0x3, "3"), - (0x4, "3"), - (0x5, "3"), - (0x6, "3"), - (0x7, "3"), - (0x8, "3"), - (0x9, "3"), - (0xA, "3"), - (0xB, "3"), - (0xC, "3"), - (0xD, "3"), - (0xE, "3"), - (0xF, "3"), - (0x10, "3"), - (0x11, "3"), - (0x12, "3"), - (0x13, "3"), - (0x14, "3"), - (0x15, "3"), - (0x16, "3"), - (0x17, "3"), - (0x18, "3"), - (0x19, "3"), - (0x1A, "3"), - (0x1B, "3"), - (0x1C, "3"), - (0x1D, "3"), - (0x1E, "3"), - (0x1F, "3"), - (0x20, "3"), - (0x21, "3"), - (0x22, "3"), - (0x23, "3"), - (0x24, "3"), - (0x25, "3"), - (0x26, "3"), - (0x27, "3"), - (0x28, "3"), - (0x29, "3"), - (0x2A, "3"), - (0x2B, "3"), - (0x2C, "3"), - (0x2D, "V"), - (0x2E, "V"), - (0x2F, "3"), - (0x30, "V"), - (0x31, "V"), - (0x32, "V"), - (0x33, "V"), - (0x34, "V"), - (0x35, "V"), - (0x36, "V"), - (0x37, "V"), - (0x38, "V"), - (0x39, "V"), - (0x3A, "3"), - (0x3B, "3"), - (0x3C, "3"), - (0x3D, "3"), - (0x3E, "3"), - (0x3F, "3"), - (0x40, "3"), - (0x41, "M", "a"), - (0x42, "M", "b"), - (0x43, "M", "c"), - (0x44, "M", "d"), - (0x45, "M", "e"), - (0x46, "M", "f"), - (0x47, "M", "g"), - (0x48, "M", "h"), - (0x49, "M", "i"), - (0x4A, "M", "j"), - (0x4B, "M", "k"), - (0x4C, "M", "l"), - (0x4D, "M", "m"), - (0x4E, "M", "n"), - (0x4F, "M", "o"), - (0x50, "M", "p"), - (0x51, "M", "q"), - (0x52, "M", "r"), - (0x53, "M", "s"), - (0x54, "M", "t"), - (0x55, "M", "u"), - (0x56, "M", "v"), - (0x57, "M", "w"), - (0x58, "M", "x"), - (0x59, "M", "y"), - (0x5A, "M", "z"), - (0x5B, "3"), - (0x5C, "3"), - (0x5D, "3"), - (0x5E, "3"), - (0x5F, "3"), - (0x60, "3"), - (0x61, "V"), - (0x62, "V"), - (0x63, "V"), - ] - - -def _seg_1() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x64, "V"), - (0x65, "V"), - (0x66, "V"), - (0x67, "V"), - (0x68, "V"), - (0x69, "V"), - (0x6A, "V"), - (0x6B, "V"), - (0x6C, "V"), - (0x6D, "V"), - (0x6E, "V"), - (0x6F, "V"), - (0x70, "V"), - (0x71, "V"), - (0x72, "V"), - (0x73, "V"), - (0x74, "V"), - (0x75, "V"), - (0x76, "V"), - (0x77, "V"), - (0x78, "V"), - (0x79, "V"), - (0x7A, "V"), - (0x7B, "3"), - (0x7C, "3"), - (0x7D, "3"), - (0x7E, "3"), - (0x7F, "3"), - (0x80, "X"), - (0x81, "X"), - (0x82, "X"), - (0x83, "X"), - (0x84, "X"), - (0x85, "X"), - (0x86, "X"), - (0x87, "X"), - (0x88, "X"), - (0x89, "X"), - (0x8A, "X"), - (0x8B, "X"), - (0x8C, "X"), - (0x8D, "X"), - (0x8E, "X"), - (0x8F, "X"), - (0x90, "X"), - (0x91, "X"), - (0x92, "X"), - (0x93, "X"), - (0x94, "X"), - (0x95, "X"), - (0x96, "X"), - (0x97, "X"), - (0x98, "X"), - (0x99, "X"), - (0x9A, "X"), - (0x9B, "X"), - (0x9C, "X"), - (0x9D, "X"), - (0x9E, "X"), - (0x9F, "X"), - (0xA0, "3", " "), - (0xA1, "V"), - (0xA2, "V"), - (0xA3, "V"), - (0xA4, "V"), - (0xA5, "V"), - (0xA6, "V"), - (0xA7, "V"), - (0xA8, "3", " ̈"), - (0xA9, "V"), - (0xAA, "M", "a"), - (0xAB, "V"), - (0xAC, "V"), - (0xAD, "I"), - (0xAE, "V"), - (0xAF, "3", " ̄"), - (0xB0, "V"), - (0xB1, "V"), - (0xB2, "M", "2"), - (0xB3, "M", "3"), - (0xB4, "3", " ́"), - (0xB5, "M", "μ"), - (0xB6, "V"), - (0xB7, "V"), - (0xB8, "3", " ̧"), - (0xB9, "M", "1"), - (0xBA, "M", "o"), - (0xBB, "V"), - (0xBC, "M", "1⁄4"), - (0xBD, "M", "1⁄2"), - (0xBE, "M", "3⁄4"), - (0xBF, "V"), - (0xC0, "M", "à"), - (0xC1, "M", "á"), - (0xC2, "M", "â"), - (0xC3, "M", "ã"), - (0xC4, "M", "ä"), - (0xC5, "M", "å"), - (0xC6, "M", "æ"), - (0xC7, "M", "ç"), - ] - - -def _seg_2() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xC8, "M", "è"), - (0xC9, "M", "é"), - (0xCA, "M", "ê"), - (0xCB, "M", "ë"), - (0xCC, "M", "ì"), - (0xCD, "M", "í"), - (0xCE, "M", "î"), - (0xCF, "M", "ï"), - (0xD0, "M", "ð"), - (0xD1, "M", "ñ"), - (0xD2, "M", "ò"), - (0xD3, "M", "ó"), - (0xD4, "M", "ô"), - (0xD5, "M", "õ"), - (0xD6, "M", "ö"), - (0xD7, "V"), - (0xD8, "M", "ø"), - (0xD9, "M", "ù"), - (0xDA, "M", "ú"), - (0xDB, "M", "û"), - (0xDC, "M", "ü"), - (0xDD, "M", "ý"), - (0xDE, "M", "þ"), - (0xDF, "D", "ss"), - (0xE0, "V"), - (0xE1, "V"), - (0xE2, "V"), - (0xE3, "V"), - (0xE4, "V"), - (0xE5, "V"), - (0xE6, "V"), - (0xE7, "V"), - (0xE8, "V"), - (0xE9, "V"), - (0xEA, "V"), - (0xEB, "V"), - (0xEC, "V"), - (0xED, "V"), - (0xEE, "V"), - (0xEF, "V"), - (0xF0, "V"), - (0xF1, "V"), - (0xF2, "V"), - (0xF3, "V"), - (0xF4, "V"), - (0xF5, "V"), - (0xF6, "V"), - (0xF7, "V"), - (0xF8, "V"), - (0xF9, "V"), - (0xFA, "V"), - (0xFB, "V"), - (0xFC, "V"), - (0xFD, "V"), - (0xFE, "V"), - (0xFF, "V"), - (0x100, "M", "ā"), - (0x101, "V"), - (0x102, "M", "ă"), - (0x103, "V"), - (0x104, "M", "ą"), - (0x105, "V"), - (0x106, "M", "ć"), - (0x107, "V"), - (0x108, "M", "ĉ"), - (0x109, "V"), - (0x10A, "M", "ċ"), - (0x10B, "V"), - (0x10C, "M", "č"), - (0x10D, "V"), - (0x10E, "M", "ď"), - (0x10F, "V"), - (0x110, "M", "đ"), - (0x111, "V"), - (0x112, "M", "ē"), - (0x113, "V"), - (0x114, "M", "ĕ"), - (0x115, "V"), - (0x116, "M", "ė"), - (0x117, "V"), - (0x118, "M", "ę"), - (0x119, "V"), - (0x11A, "M", "ě"), - (0x11B, "V"), - (0x11C, "M", "ĝ"), - (0x11D, "V"), - (0x11E, "M", "ğ"), - (0x11F, "V"), - (0x120, "M", "ġ"), - (0x121, "V"), - (0x122, "M", "ģ"), - (0x123, "V"), - (0x124, "M", "ĥ"), - (0x125, "V"), - (0x126, "M", "ħ"), - (0x127, "V"), - (0x128, "M", "ĩ"), - (0x129, "V"), - (0x12A, "M", "ī"), - (0x12B, "V"), - ] - - -def _seg_3() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x12C, "M", "ĭ"), - (0x12D, "V"), - (0x12E, "M", "į"), - (0x12F, "V"), - (0x130, "M", "i̇"), - (0x131, "V"), - (0x132, "M", "ij"), - (0x134, "M", "ĵ"), - (0x135, "V"), - (0x136, "M", "ķ"), - (0x137, "V"), - (0x139, "M", "ĺ"), - (0x13A, "V"), - (0x13B, "M", "ļ"), - (0x13C, "V"), - (0x13D, "M", "ľ"), - (0x13E, "V"), - (0x13F, "M", "l·"), - (0x141, "M", "ł"), - (0x142, "V"), - (0x143, "M", "ń"), - (0x144, "V"), - (0x145, "M", "ņ"), - (0x146, "V"), - (0x147, "M", "ň"), - (0x148, "V"), - (0x149, "M", "ʼn"), - (0x14A, "M", "ŋ"), - (0x14B, "V"), - (0x14C, "M", "ō"), - (0x14D, "V"), - (0x14E, "M", "ŏ"), - (0x14F, "V"), - (0x150, "M", "ő"), - (0x151, "V"), - (0x152, "M", "œ"), - (0x153, "V"), - (0x154, "M", "ŕ"), - (0x155, "V"), - (0x156, "M", "ŗ"), - (0x157, "V"), - (0x158, "M", "ř"), - (0x159, "V"), - (0x15A, "M", "ś"), - (0x15B, "V"), - (0x15C, "M", "ŝ"), - (0x15D, "V"), - (0x15E, "M", "ş"), - (0x15F, "V"), - (0x160, "M", "š"), - (0x161, "V"), - (0x162, "M", "ţ"), - (0x163, "V"), - (0x164, "M", "ť"), - (0x165, "V"), - (0x166, "M", "ŧ"), - (0x167, "V"), - (0x168, "M", "ũ"), - (0x169, "V"), - (0x16A, "M", "ū"), - (0x16B, "V"), - (0x16C, "M", "ŭ"), - (0x16D, "V"), - (0x16E, "M", "ů"), - (0x16F, "V"), - (0x170, "M", "ű"), - (0x171, "V"), - (0x172, "M", "ų"), - (0x173, "V"), - (0x174, "M", "ŵ"), - (0x175, "V"), - (0x176, "M", "ŷ"), - (0x177, "V"), - (0x178, "M", "ÿ"), - (0x179, "M", "ź"), - (0x17A, "V"), - (0x17B, "M", "ż"), - (0x17C, "V"), - (0x17D, "M", "ž"), - (0x17E, "V"), - (0x17F, "M", "s"), - (0x180, "V"), - (0x181, "M", "ɓ"), - (0x182, "M", "ƃ"), - (0x183, "V"), - (0x184, "M", "ƅ"), - (0x185, "V"), - (0x186, "M", "ɔ"), - (0x187, "M", "ƈ"), - (0x188, "V"), - (0x189, "M", "ɖ"), - (0x18A, "M", "ɗ"), - (0x18B, "M", "ƌ"), - (0x18C, "V"), - (0x18E, "M", "ǝ"), - (0x18F, "M", "ə"), - (0x190, "M", "ɛ"), - (0x191, "M", "ƒ"), - (0x192, "V"), - (0x193, "M", "ɠ"), - ] - - -def _seg_4() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x194, "M", "ɣ"), - (0x195, "V"), - (0x196, "M", "ɩ"), - (0x197, "M", "ɨ"), - (0x198, "M", "ƙ"), - (0x199, "V"), - (0x19C, "M", "ɯ"), - (0x19D, "M", "ɲ"), - (0x19E, "V"), - (0x19F, "M", "ɵ"), - (0x1A0, "M", "ơ"), - (0x1A1, "V"), - (0x1A2, "M", "ƣ"), - (0x1A3, "V"), - (0x1A4, "M", "ƥ"), - (0x1A5, "V"), - (0x1A6, "M", "ʀ"), - (0x1A7, "M", "ƨ"), - (0x1A8, "V"), - (0x1A9, "M", "ʃ"), - (0x1AA, "V"), - (0x1AC, "M", "ƭ"), - (0x1AD, "V"), - (0x1AE, "M", "ʈ"), - (0x1AF, "M", "ư"), - (0x1B0, "V"), - (0x1B1, "M", "ʊ"), - (0x1B2, "M", "ʋ"), - (0x1B3, "M", "ƴ"), - (0x1B4, "V"), - (0x1B5, "M", "ƶ"), - (0x1B6, "V"), - (0x1B7, "M", "ʒ"), - (0x1B8, "M", "ƹ"), - (0x1B9, "V"), - (0x1BC, "M", "ƽ"), - (0x1BD, "V"), - (0x1C4, "M", "dž"), - (0x1C7, "M", "lj"), - (0x1CA, "M", "nj"), - (0x1CD, "M", "ǎ"), - (0x1CE, "V"), - (0x1CF, "M", "ǐ"), - (0x1D0, "V"), - (0x1D1, "M", "ǒ"), - (0x1D2, "V"), - (0x1D3, "M", "ǔ"), - (0x1D4, "V"), - (0x1D5, "M", "ǖ"), - (0x1D6, "V"), - (0x1D7, "M", "ǘ"), - (0x1D8, "V"), - (0x1D9, "M", "ǚ"), - (0x1DA, "V"), - (0x1DB, "M", "ǜ"), - (0x1DC, "V"), - (0x1DE, "M", "ǟ"), - (0x1DF, "V"), - (0x1E0, "M", "ǡ"), - (0x1E1, "V"), - (0x1E2, "M", "ǣ"), - (0x1E3, "V"), - (0x1E4, "M", "ǥ"), - (0x1E5, "V"), - (0x1E6, "M", "ǧ"), - (0x1E7, "V"), - (0x1E8, "M", "ǩ"), - (0x1E9, "V"), - (0x1EA, "M", "ǫ"), - (0x1EB, "V"), - (0x1EC, "M", "ǭ"), - (0x1ED, "V"), - (0x1EE, "M", "ǯ"), - (0x1EF, "V"), - (0x1F1, "M", "dz"), - (0x1F4, "M", "ǵ"), - (0x1F5, "V"), - (0x1F6, "M", "ƕ"), - (0x1F7, "M", "ƿ"), - (0x1F8, "M", "ǹ"), - (0x1F9, "V"), - (0x1FA, "M", "ǻ"), - (0x1FB, "V"), - (0x1FC, "M", "ǽ"), - (0x1FD, "V"), - (0x1FE, "M", "ǿ"), - (0x1FF, "V"), - (0x200, "M", "ȁ"), - (0x201, "V"), - (0x202, "M", "ȃ"), - (0x203, "V"), - (0x204, "M", "ȅ"), - (0x205, "V"), - (0x206, "M", "ȇ"), - (0x207, "V"), - (0x208, "M", "ȉ"), - (0x209, "V"), - (0x20A, "M", "ȋ"), - (0x20B, "V"), - (0x20C, "M", "ȍ"), - ] - - -def _seg_5() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x20D, "V"), - (0x20E, "M", "ȏ"), - (0x20F, "V"), - (0x210, "M", "ȑ"), - (0x211, "V"), - (0x212, "M", "ȓ"), - (0x213, "V"), - (0x214, "M", "ȕ"), - (0x215, "V"), - (0x216, "M", "ȗ"), - (0x217, "V"), - (0x218, "M", "ș"), - (0x219, "V"), - (0x21A, "M", "ț"), - (0x21B, "V"), - (0x21C, "M", "ȝ"), - (0x21D, "V"), - (0x21E, "M", "ȟ"), - (0x21F, "V"), - (0x220, "M", "ƞ"), - (0x221, "V"), - (0x222, "M", "ȣ"), - (0x223, "V"), - (0x224, "M", "ȥ"), - (0x225, "V"), - (0x226, "M", "ȧ"), - (0x227, "V"), - (0x228, "M", "ȩ"), - (0x229, "V"), - (0x22A, "M", "ȫ"), - (0x22B, "V"), - (0x22C, "M", "ȭ"), - (0x22D, "V"), - (0x22E, "M", "ȯ"), - (0x22F, "V"), - (0x230, "M", "ȱ"), - (0x231, "V"), - (0x232, "M", "ȳ"), - (0x233, "V"), - (0x23A, "M", "ⱥ"), - (0x23B, "M", "ȼ"), - (0x23C, "V"), - (0x23D, "M", "ƚ"), - (0x23E, "M", "ⱦ"), - (0x23F, "V"), - (0x241, "M", "ɂ"), - (0x242, "V"), - (0x243, "M", "ƀ"), - (0x244, "M", "ʉ"), - (0x245, "M", "ʌ"), - (0x246, "M", "ɇ"), - (0x247, "V"), - (0x248, "M", "ɉ"), - (0x249, "V"), - (0x24A, "M", "ɋ"), - (0x24B, "V"), - (0x24C, "M", "ɍ"), - (0x24D, "V"), - (0x24E, "M", "ɏ"), - (0x24F, "V"), - (0x2B0, "M", "h"), - (0x2B1, "M", "ɦ"), - (0x2B2, "M", "j"), - (0x2B3, "M", "r"), - (0x2B4, "M", "ɹ"), - (0x2B5, "M", "ɻ"), - (0x2B6, "M", "ʁ"), - (0x2B7, "M", "w"), - (0x2B8, "M", "y"), - (0x2B9, "V"), - (0x2D8, "3", " ̆"), - (0x2D9, "3", " ̇"), - (0x2DA, "3", " ̊"), - (0x2DB, "3", " ̨"), - (0x2DC, "3", " ̃"), - (0x2DD, "3", " ̋"), - (0x2DE, "V"), - (0x2E0, "M", "ɣ"), - (0x2E1, "M", "l"), - (0x2E2, "M", "s"), - (0x2E3, "M", "x"), - (0x2E4, "M", "ʕ"), - (0x2E5, "V"), - (0x340, "M", "̀"), - (0x341, "M", "́"), - (0x342, "V"), - (0x343, "M", "̓"), - (0x344, "M", "̈́"), - (0x345, "M", "ι"), - (0x346, "V"), - (0x34F, "I"), - (0x350, "V"), - (0x370, "M", "ͱ"), - (0x371, "V"), - (0x372, "M", "ͳ"), - (0x373, "V"), - (0x374, "M", "ʹ"), - (0x375, "V"), - (0x376, "M", "ͷ"), - (0x377, "V"), - ] - - -def _seg_6() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x378, "X"), - (0x37A, "3", " ι"), - (0x37B, "V"), - (0x37E, "3", ";"), - (0x37F, "M", "ϳ"), - (0x380, "X"), - (0x384, "3", " ́"), - (0x385, "3", " ̈́"), - (0x386, "M", "ά"), - (0x387, "M", "·"), - (0x388, "M", "έ"), - (0x389, "M", "ή"), - (0x38A, "M", "ί"), - (0x38B, "X"), - (0x38C, "M", "ό"), - (0x38D, "X"), - (0x38E, "M", "ύ"), - (0x38F, "M", "ώ"), - (0x390, "V"), - (0x391, "M", "α"), - (0x392, "M", "β"), - (0x393, "M", "γ"), - (0x394, "M", "δ"), - (0x395, "M", "ε"), - (0x396, "M", "ζ"), - (0x397, "M", "η"), - (0x398, "M", "θ"), - (0x399, "M", "ι"), - (0x39A, "M", "κ"), - (0x39B, "M", "λ"), - (0x39C, "M", "μ"), - (0x39D, "M", "ν"), - (0x39E, "M", "ξ"), - (0x39F, "M", "ο"), - (0x3A0, "M", "π"), - (0x3A1, "M", "ρ"), - (0x3A2, "X"), - (0x3A3, "M", "σ"), - (0x3A4, "M", "τ"), - (0x3A5, "M", "υ"), - (0x3A6, "M", "φ"), - (0x3A7, "M", "χ"), - (0x3A8, "M", "ψ"), - (0x3A9, "M", "ω"), - (0x3AA, "M", "ϊ"), - (0x3AB, "M", "ϋ"), - (0x3AC, "V"), - (0x3C2, "D", "σ"), - (0x3C3, "V"), - (0x3CF, "M", "ϗ"), - (0x3D0, "M", "β"), - (0x3D1, "M", "θ"), - (0x3D2, "M", "υ"), - (0x3D3, "M", "ύ"), - (0x3D4, "M", "ϋ"), - (0x3D5, "M", "φ"), - (0x3D6, "M", "π"), - (0x3D7, "V"), - (0x3D8, "M", "ϙ"), - (0x3D9, "V"), - (0x3DA, "M", "ϛ"), - (0x3DB, "V"), - (0x3DC, "M", "ϝ"), - (0x3DD, "V"), - (0x3DE, "M", "ϟ"), - (0x3DF, "V"), - (0x3E0, "M", "ϡ"), - (0x3E1, "V"), - (0x3E2, "M", "ϣ"), - (0x3E3, "V"), - (0x3E4, "M", "ϥ"), - (0x3E5, "V"), - (0x3E6, "M", "ϧ"), - (0x3E7, "V"), - (0x3E8, "M", "ϩ"), - (0x3E9, "V"), - (0x3EA, "M", "ϫ"), - (0x3EB, "V"), - (0x3EC, "M", "ϭ"), - (0x3ED, "V"), - (0x3EE, "M", "ϯ"), - (0x3EF, "V"), - (0x3F0, "M", "κ"), - (0x3F1, "M", "ρ"), - (0x3F2, "M", "σ"), - (0x3F3, "V"), - (0x3F4, "M", "θ"), - (0x3F5, "M", "ε"), - (0x3F6, "V"), - (0x3F7, "M", "ϸ"), - (0x3F8, "V"), - (0x3F9, "M", "σ"), - (0x3FA, "M", "ϻ"), - (0x3FB, "V"), - (0x3FD, "M", "ͻ"), - (0x3FE, "M", "ͼ"), - (0x3FF, "M", "ͽ"), - (0x400, "M", "ѐ"), - (0x401, "M", "ё"), - (0x402, "M", "ђ"), - ] - - -def _seg_7() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x403, "M", "ѓ"), - (0x404, "M", "є"), - (0x405, "M", "ѕ"), - (0x406, "M", "і"), - (0x407, "M", "ї"), - (0x408, "M", "ј"), - (0x409, "M", "љ"), - (0x40A, "M", "њ"), - (0x40B, "M", "ћ"), - (0x40C, "M", "ќ"), - (0x40D, "M", "ѝ"), - (0x40E, "M", "ў"), - (0x40F, "M", "џ"), - (0x410, "M", "а"), - (0x411, "M", "б"), - (0x412, "M", "в"), - (0x413, "M", "г"), - (0x414, "M", "д"), - (0x415, "M", "е"), - (0x416, "M", "ж"), - (0x417, "M", "з"), - (0x418, "M", "и"), - (0x419, "M", "й"), - (0x41A, "M", "к"), - (0x41B, "M", "л"), - (0x41C, "M", "м"), - (0x41D, "M", "н"), - (0x41E, "M", "о"), - (0x41F, "M", "п"), - (0x420, "M", "р"), - (0x421, "M", "с"), - (0x422, "M", "т"), - (0x423, "M", "у"), - (0x424, "M", "ф"), - (0x425, "M", "х"), - (0x426, "M", "ц"), - (0x427, "M", "ч"), - (0x428, "M", "ш"), - (0x429, "M", "щ"), - (0x42A, "M", "ъ"), - (0x42B, "M", "ы"), - (0x42C, "M", "ь"), - (0x42D, "M", "э"), - (0x42E, "M", "ю"), - (0x42F, "M", "я"), - (0x430, "V"), - (0x460, "M", "ѡ"), - (0x461, "V"), - (0x462, "M", "ѣ"), - (0x463, "V"), - (0x464, "M", "ѥ"), - (0x465, "V"), - (0x466, "M", "ѧ"), - (0x467, "V"), - (0x468, "M", "ѩ"), - (0x469, "V"), - (0x46A, "M", "ѫ"), - (0x46B, "V"), - (0x46C, "M", "ѭ"), - (0x46D, "V"), - (0x46E, "M", "ѯ"), - (0x46F, "V"), - (0x470, "M", "ѱ"), - (0x471, "V"), - (0x472, "M", "ѳ"), - (0x473, "V"), - (0x474, "M", "ѵ"), - (0x475, "V"), - (0x476, "M", "ѷ"), - (0x477, "V"), - (0x478, "M", "ѹ"), - (0x479, "V"), - (0x47A, "M", "ѻ"), - (0x47B, "V"), - (0x47C, "M", "ѽ"), - (0x47D, "V"), - (0x47E, "M", "ѿ"), - (0x47F, "V"), - (0x480, "M", "ҁ"), - (0x481, "V"), - (0x48A, "M", "ҋ"), - (0x48B, "V"), - (0x48C, "M", "ҍ"), - (0x48D, "V"), - (0x48E, "M", "ҏ"), - (0x48F, "V"), - (0x490, "M", "ґ"), - (0x491, "V"), - (0x492, "M", "ғ"), - (0x493, "V"), - (0x494, "M", "ҕ"), - (0x495, "V"), - (0x496, "M", "җ"), - (0x497, "V"), - (0x498, "M", "ҙ"), - (0x499, "V"), - (0x49A, "M", "қ"), - (0x49B, "V"), - (0x49C, "M", "ҝ"), - (0x49D, "V"), - ] - - -def _seg_8() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x49E, "M", "ҟ"), - (0x49F, "V"), - (0x4A0, "M", "ҡ"), - (0x4A1, "V"), - (0x4A2, "M", "ң"), - (0x4A3, "V"), - (0x4A4, "M", "ҥ"), - (0x4A5, "V"), - (0x4A6, "M", "ҧ"), - (0x4A7, "V"), - (0x4A8, "M", "ҩ"), - (0x4A9, "V"), - (0x4AA, "M", "ҫ"), - (0x4AB, "V"), - (0x4AC, "M", "ҭ"), - (0x4AD, "V"), - (0x4AE, "M", "ү"), - (0x4AF, "V"), - (0x4B0, "M", "ұ"), - (0x4B1, "V"), - (0x4B2, "M", "ҳ"), - (0x4B3, "V"), - (0x4B4, "M", "ҵ"), - (0x4B5, "V"), - (0x4B6, "M", "ҷ"), - (0x4B7, "V"), - (0x4B8, "M", "ҹ"), - (0x4B9, "V"), - (0x4BA, "M", "һ"), - (0x4BB, "V"), - (0x4BC, "M", "ҽ"), - (0x4BD, "V"), - (0x4BE, "M", "ҿ"), - (0x4BF, "V"), - (0x4C0, "X"), - (0x4C1, "M", "ӂ"), - (0x4C2, "V"), - (0x4C3, "M", "ӄ"), - (0x4C4, "V"), - (0x4C5, "M", "ӆ"), - (0x4C6, "V"), - (0x4C7, "M", "ӈ"), - (0x4C8, "V"), - (0x4C9, "M", "ӊ"), - (0x4CA, "V"), - (0x4CB, "M", "ӌ"), - (0x4CC, "V"), - (0x4CD, "M", "ӎ"), - (0x4CE, "V"), - (0x4D0, "M", "ӑ"), - (0x4D1, "V"), - (0x4D2, "M", "ӓ"), - (0x4D3, "V"), - (0x4D4, "M", "ӕ"), - (0x4D5, "V"), - (0x4D6, "M", "ӗ"), - (0x4D7, "V"), - (0x4D8, "M", "ә"), - (0x4D9, "V"), - (0x4DA, "M", "ӛ"), - (0x4DB, "V"), - (0x4DC, "M", "ӝ"), - (0x4DD, "V"), - (0x4DE, "M", "ӟ"), - (0x4DF, "V"), - (0x4E0, "M", "ӡ"), - (0x4E1, "V"), - (0x4E2, "M", "ӣ"), - (0x4E3, "V"), - (0x4E4, "M", "ӥ"), - (0x4E5, "V"), - (0x4E6, "M", "ӧ"), - (0x4E7, "V"), - (0x4E8, "M", "ө"), - (0x4E9, "V"), - (0x4EA, "M", "ӫ"), - (0x4EB, "V"), - (0x4EC, "M", "ӭ"), - (0x4ED, "V"), - (0x4EE, "M", "ӯ"), - (0x4EF, "V"), - (0x4F0, "M", "ӱ"), - (0x4F1, "V"), - (0x4F2, "M", "ӳ"), - (0x4F3, "V"), - (0x4F4, "M", "ӵ"), - (0x4F5, "V"), - (0x4F6, "M", "ӷ"), - (0x4F7, "V"), - (0x4F8, "M", "ӹ"), - (0x4F9, "V"), - (0x4FA, "M", "ӻ"), - (0x4FB, "V"), - (0x4FC, "M", "ӽ"), - (0x4FD, "V"), - (0x4FE, "M", "ӿ"), - (0x4FF, "V"), - (0x500, "M", "ԁ"), - (0x501, "V"), - (0x502, "M", "ԃ"), - ] - - -def _seg_9() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x503, "V"), - (0x504, "M", "ԅ"), - (0x505, "V"), - (0x506, "M", "ԇ"), - (0x507, "V"), - (0x508, "M", "ԉ"), - (0x509, "V"), - (0x50A, "M", "ԋ"), - (0x50B, "V"), - (0x50C, "M", "ԍ"), - (0x50D, "V"), - (0x50E, "M", "ԏ"), - (0x50F, "V"), - (0x510, "M", "ԑ"), - (0x511, "V"), - (0x512, "M", "ԓ"), - (0x513, "V"), - (0x514, "M", "ԕ"), - (0x515, "V"), - (0x516, "M", "ԗ"), - (0x517, "V"), - (0x518, "M", "ԙ"), - (0x519, "V"), - (0x51A, "M", "ԛ"), - (0x51B, "V"), - (0x51C, "M", "ԝ"), - (0x51D, "V"), - (0x51E, "M", "ԟ"), - (0x51F, "V"), - (0x520, "M", "ԡ"), - (0x521, "V"), - (0x522, "M", "ԣ"), - (0x523, "V"), - (0x524, "M", "ԥ"), - (0x525, "V"), - (0x526, "M", "ԧ"), - (0x527, "V"), - (0x528, "M", "ԩ"), - (0x529, "V"), - (0x52A, "M", "ԫ"), - (0x52B, "V"), - (0x52C, "M", "ԭ"), - (0x52D, "V"), - (0x52E, "M", "ԯ"), - (0x52F, "V"), - (0x530, "X"), - (0x531, "M", "ա"), - (0x532, "M", "բ"), - (0x533, "M", "գ"), - (0x534, "M", "դ"), - (0x535, "M", "ե"), - (0x536, "M", "զ"), - (0x537, "M", "է"), - (0x538, "M", "ը"), - (0x539, "M", "թ"), - (0x53A, "M", "ժ"), - (0x53B, "M", "ի"), - (0x53C, "M", "լ"), - (0x53D, "M", "խ"), - (0x53E, "M", "ծ"), - (0x53F, "M", "կ"), - (0x540, "M", "հ"), - (0x541, "M", "ձ"), - (0x542, "M", "ղ"), - (0x543, "M", "ճ"), - (0x544, "M", "մ"), - (0x545, "M", "յ"), - (0x546, "M", "ն"), - (0x547, "M", "շ"), - (0x548, "M", "ո"), - (0x549, "M", "չ"), - (0x54A, "M", "պ"), - (0x54B, "M", "ջ"), - (0x54C, "M", "ռ"), - (0x54D, "M", "ս"), - (0x54E, "M", "վ"), - (0x54F, "M", "տ"), - (0x550, "M", "ր"), - (0x551, "M", "ց"), - (0x552, "M", "ւ"), - (0x553, "M", "փ"), - (0x554, "M", "ք"), - (0x555, "M", "օ"), - (0x556, "M", "ֆ"), - (0x557, "X"), - (0x559, "V"), - (0x587, "M", "եւ"), - (0x588, "V"), - (0x58B, "X"), - (0x58D, "V"), - (0x590, "X"), - (0x591, "V"), - (0x5C8, "X"), - (0x5D0, "V"), - (0x5EB, "X"), - (0x5EF, "V"), - (0x5F5, "X"), - (0x606, "V"), - (0x61C, "X"), - (0x61D, "V"), - ] - - -def _seg_10() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x675, "M", "اٴ"), - (0x676, "M", "وٴ"), - (0x677, "M", "ۇٴ"), - (0x678, "M", "يٴ"), - (0x679, "V"), - (0x6DD, "X"), - (0x6DE, "V"), - (0x70E, "X"), - (0x710, "V"), - (0x74B, "X"), - (0x74D, "V"), - (0x7B2, "X"), - (0x7C0, "V"), - (0x7FB, "X"), - (0x7FD, "V"), - (0x82E, "X"), - (0x830, "V"), - (0x83F, "X"), - (0x840, "V"), - (0x85C, "X"), - (0x85E, "V"), - (0x85F, "X"), - (0x860, "V"), - (0x86B, "X"), - (0x870, "V"), - (0x88F, "X"), - (0x898, "V"), - (0x8E2, "X"), - (0x8E3, "V"), - (0x958, "M", "क़"), - (0x959, "M", "ख़"), - (0x95A, "M", "ग़"), - (0x95B, "M", "ज़"), - (0x95C, "M", "ड़"), - (0x95D, "M", "ढ़"), - (0x95E, "M", "फ़"), - (0x95F, "M", "य़"), - (0x960, "V"), - (0x984, "X"), - (0x985, "V"), - (0x98D, "X"), - (0x98F, "V"), - (0x991, "X"), - (0x993, "V"), - (0x9A9, "X"), - (0x9AA, "V"), - (0x9B1, "X"), - (0x9B2, "V"), - (0x9B3, "X"), - (0x9B6, "V"), - (0x9BA, "X"), - (0x9BC, "V"), - (0x9C5, "X"), - (0x9C7, "V"), - (0x9C9, "X"), - (0x9CB, "V"), - (0x9CF, "X"), - (0x9D7, "V"), - (0x9D8, "X"), - (0x9DC, "M", "ড়"), - (0x9DD, "M", "ঢ়"), - (0x9DE, "X"), - (0x9DF, "M", "য়"), - (0x9E0, "V"), - (0x9E4, "X"), - (0x9E6, "V"), - (0x9FF, "X"), - (0xA01, "V"), - (0xA04, "X"), - (0xA05, "V"), - (0xA0B, "X"), - (0xA0F, "V"), - (0xA11, "X"), - (0xA13, "V"), - (0xA29, "X"), - (0xA2A, "V"), - (0xA31, "X"), - (0xA32, "V"), - (0xA33, "M", "ਲ਼"), - (0xA34, "X"), - (0xA35, "V"), - (0xA36, "M", "ਸ਼"), - (0xA37, "X"), - (0xA38, "V"), - (0xA3A, "X"), - (0xA3C, "V"), - (0xA3D, "X"), - (0xA3E, "V"), - (0xA43, "X"), - (0xA47, "V"), - (0xA49, "X"), - (0xA4B, "V"), - (0xA4E, "X"), - (0xA51, "V"), - (0xA52, "X"), - (0xA59, "M", "ਖ਼"), - (0xA5A, "M", "ਗ਼"), - (0xA5B, "M", "ਜ਼"), - (0xA5C, "V"), - (0xA5D, "X"), - ] - - -def _seg_11() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA5E, "M", "ਫ਼"), - (0xA5F, "X"), - (0xA66, "V"), - (0xA77, "X"), - (0xA81, "V"), - (0xA84, "X"), - (0xA85, "V"), - (0xA8E, "X"), - (0xA8F, "V"), - (0xA92, "X"), - (0xA93, "V"), - (0xAA9, "X"), - (0xAAA, "V"), - (0xAB1, "X"), - (0xAB2, "V"), - (0xAB4, "X"), - (0xAB5, "V"), - (0xABA, "X"), - (0xABC, "V"), - (0xAC6, "X"), - (0xAC7, "V"), - (0xACA, "X"), - (0xACB, "V"), - (0xACE, "X"), - (0xAD0, "V"), - (0xAD1, "X"), - (0xAE0, "V"), - (0xAE4, "X"), - (0xAE6, "V"), - (0xAF2, "X"), - (0xAF9, "V"), - (0xB00, "X"), - (0xB01, "V"), - (0xB04, "X"), - (0xB05, "V"), - (0xB0D, "X"), - (0xB0F, "V"), - (0xB11, "X"), - (0xB13, "V"), - (0xB29, "X"), - (0xB2A, "V"), - (0xB31, "X"), - (0xB32, "V"), - (0xB34, "X"), - (0xB35, "V"), - (0xB3A, "X"), - (0xB3C, "V"), - (0xB45, "X"), - (0xB47, "V"), - (0xB49, "X"), - (0xB4B, "V"), - (0xB4E, "X"), - (0xB55, "V"), - (0xB58, "X"), - (0xB5C, "M", "ଡ଼"), - (0xB5D, "M", "ଢ଼"), - (0xB5E, "X"), - (0xB5F, "V"), - (0xB64, "X"), - (0xB66, "V"), - (0xB78, "X"), - (0xB82, "V"), - (0xB84, "X"), - (0xB85, "V"), - (0xB8B, "X"), - (0xB8E, "V"), - (0xB91, "X"), - (0xB92, "V"), - (0xB96, "X"), - (0xB99, "V"), - (0xB9B, "X"), - (0xB9C, "V"), - (0xB9D, "X"), - (0xB9E, "V"), - (0xBA0, "X"), - (0xBA3, "V"), - (0xBA5, "X"), - (0xBA8, "V"), - (0xBAB, "X"), - (0xBAE, "V"), - (0xBBA, "X"), - (0xBBE, "V"), - (0xBC3, "X"), - (0xBC6, "V"), - (0xBC9, "X"), - (0xBCA, "V"), - (0xBCE, "X"), - (0xBD0, "V"), - (0xBD1, "X"), - (0xBD7, "V"), - (0xBD8, "X"), - (0xBE6, "V"), - (0xBFB, "X"), - (0xC00, "V"), - (0xC0D, "X"), - (0xC0E, "V"), - (0xC11, "X"), - (0xC12, "V"), - (0xC29, "X"), - (0xC2A, "V"), - ] - - -def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xC3A, "X"), - (0xC3C, "V"), - (0xC45, "X"), - (0xC46, "V"), - (0xC49, "X"), - (0xC4A, "V"), - (0xC4E, "X"), - (0xC55, "V"), - (0xC57, "X"), - (0xC58, "V"), - (0xC5B, "X"), - (0xC5D, "V"), - (0xC5E, "X"), - (0xC60, "V"), - (0xC64, "X"), - (0xC66, "V"), - (0xC70, "X"), - (0xC77, "V"), - (0xC8D, "X"), - (0xC8E, "V"), - (0xC91, "X"), - (0xC92, "V"), - (0xCA9, "X"), - (0xCAA, "V"), - (0xCB4, "X"), - (0xCB5, "V"), - (0xCBA, "X"), - (0xCBC, "V"), - (0xCC5, "X"), - (0xCC6, "V"), - (0xCC9, "X"), - (0xCCA, "V"), - (0xCCE, "X"), - (0xCD5, "V"), - (0xCD7, "X"), - (0xCDD, "V"), - (0xCDF, "X"), - (0xCE0, "V"), - (0xCE4, "X"), - (0xCE6, "V"), - (0xCF0, "X"), - (0xCF1, "V"), - (0xCF4, "X"), - (0xD00, "V"), - (0xD0D, "X"), - (0xD0E, "V"), - (0xD11, "X"), - (0xD12, "V"), - (0xD45, "X"), - (0xD46, "V"), - (0xD49, "X"), - (0xD4A, "V"), - (0xD50, "X"), - (0xD54, "V"), - (0xD64, "X"), - (0xD66, "V"), - (0xD80, "X"), - (0xD81, "V"), - (0xD84, "X"), - (0xD85, "V"), - (0xD97, "X"), - (0xD9A, "V"), - (0xDB2, "X"), - (0xDB3, "V"), - (0xDBC, "X"), - (0xDBD, "V"), - (0xDBE, "X"), - (0xDC0, "V"), - (0xDC7, "X"), - (0xDCA, "V"), - (0xDCB, "X"), - (0xDCF, "V"), - (0xDD5, "X"), - (0xDD6, "V"), - (0xDD7, "X"), - (0xDD8, "V"), - (0xDE0, "X"), - (0xDE6, "V"), - (0xDF0, "X"), - (0xDF2, "V"), - (0xDF5, "X"), - (0xE01, "V"), - (0xE33, "M", "ํา"), - (0xE34, "V"), - (0xE3B, "X"), - (0xE3F, "V"), - (0xE5C, "X"), - (0xE81, "V"), - (0xE83, "X"), - (0xE84, "V"), - (0xE85, "X"), - (0xE86, "V"), - (0xE8B, "X"), - (0xE8C, "V"), - (0xEA4, "X"), - (0xEA5, "V"), - (0xEA6, "X"), - (0xEA7, "V"), - (0xEB3, "M", "ໍາ"), - (0xEB4, "V"), - ] - - -def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xEBE, "X"), - (0xEC0, "V"), - (0xEC5, "X"), - (0xEC6, "V"), - (0xEC7, "X"), - (0xEC8, "V"), - (0xECF, "X"), - (0xED0, "V"), - (0xEDA, "X"), - (0xEDC, "M", "ຫນ"), - (0xEDD, "M", "ຫມ"), - (0xEDE, "V"), - (0xEE0, "X"), - (0xF00, "V"), - (0xF0C, "M", "་"), - (0xF0D, "V"), - (0xF43, "M", "གྷ"), - (0xF44, "V"), - (0xF48, "X"), - (0xF49, "V"), - (0xF4D, "M", "ཌྷ"), - (0xF4E, "V"), - (0xF52, "M", "དྷ"), - (0xF53, "V"), - (0xF57, "M", "བྷ"), - (0xF58, "V"), - (0xF5C, "M", "ཛྷ"), - (0xF5D, "V"), - (0xF69, "M", "ཀྵ"), - (0xF6A, "V"), - (0xF6D, "X"), - (0xF71, "V"), - (0xF73, "M", "ཱི"), - (0xF74, "V"), - (0xF75, "M", "ཱུ"), - (0xF76, "M", "ྲྀ"), - (0xF77, "M", "ྲཱྀ"), - (0xF78, "M", "ླྀ"), - (0xF79, "M", "ླཱྀ"), - (0xF7A, "V"), - (0xF81, "M", "ཱྀ"), - (0xF82, "V"), - (0xF93, "M", "ྒྷ"), - (0xF94, "V"), - (0xF98, "X"), - (0xF99, "V"), - (0xF9D, "M", "ྜྷ"), - (0xF9E, "V"), - (0xFA2, "M", "ྡྷ"), - (0xFA3, "V"), - (0xFA7, "M", "ྦྷ"), - (0xFA8, "V"), - (0xFAC, "M", "ྫྷ"), - (0xFAD, "V"), - (0xFB9, "M", "ྐྵ"), - (0xFBA, "V"), - (0xFBD, "X"), - (0xFBE, "V"), - (0xFCD, "X"), - (0xFCE, "V"), - (0xFDB, "X"), - (0x1000, "V"), - (0x10A0, "X"), - (0x10C7, "M", "ⴧ"), - (0x10C8, "X"), - (0x10CD, "M", "ⴭ"), - (0x10CE, "X"), - (0x10D0, "V"), - (0x10FC, "M", "ნ"), - (0x10FD, "V"), - (0x115F, "X"), - (0x1161, "V"), - (0x1249, "X"), - (0x124A, "V"), - (0x124E, "X"), - (0x1250, "V"), - (0x1257, "X"), - (0x1258, "V"), - (0x1259, "X"), - (0x125A, "V"), - (0x125E, "X"), - (0x1260, "V"), - (0x1289, "X"), - (0x128A, "V"), - (0x128E, "X"), - (0x1290, "V"), - (0x12B1, "X"), - (0x12B2, "V"), - (0x12B6, "X"), - (0x12B8, "V"), - (0x12BF, "X"), - (0x12C0, "V"), - (0x12C1, "X"), - (0x12C2, "V"), - (0x12C6, "X"), - (0x12C8, "V"), - (0x12D7, "X"), - (0x12D8, "V"), - (0x1311, "X"), - (0x1312, "V"), - ] - - -def _seg_14() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1316, "X"), - (0x1318, "V"), - (0x135B, "X"), - (0x135D, "V"), - (0x137D, "X"), - (0x1380, "V"), - (0x139A, "X"), - (0x13A0, "V"), - (0x13F6, "X"), - (0x13F8, "M", "Ᏸ"), - (0x13F9, "M", "Ᏹ"), - (0x13FA, "M", "Ᏺ"), - (0x13FB, "M", "Ᏻ"), - (0x13FC, "M", "Ᏼ"), - (0x13FD, "M", "Ᏽ"), - (0x13FE, "X"), - (0x1400, "V"), - (0x1680, "X"), - (0x1681, "V"), - (0x169D, "X"), - (0x16A0, "V"), - (0x16F9, "X"), - (0x1700, "V"), - (0x1716, "X"), - (0x171F, "V"), - (0x1737, "X"), - (0x1740, "V"), - (0x1754, "X"), - (0x1760, "V"), - (0x176D, "X"), - (0x176E, "V"), - (0x1771, "X"), - (0x1772, "V"), - (0x1774, "X"), - (0x1780, "V"), - (0x17B4, "X"), - (0x17B6, "V"), - (0x17DE, "X"), - (0x17E0, "V"), - (0x17EA, "X"), - (0x17F0, "V"), - (0x17FA, "X"), - (0x1800, "V"), - (0x1806, "X"), - (0x1807, "V"), - (0x180B, "I"), - (0x180E, "X"), - (0x180F, "I"), - (0x1810, "V"), - (0x181A, "X"), - (0x1820, "V"), - (0x1879, "X"), - (0x1880, "V"), - (0x18AB, "X"), - (0x18B0, "V"), - (0x18F6, "X"), - (0x1900, "V"), - (0x191F, "X"), - (0x1920, "V"), - (0x192C, "X"), - (0x1930, "V"), - (0x193C, "X"), - (0x1940, "V"), - (0x1941, "X"), - (0x1944, "V"), - (0x196E, "X"), - (0x1970, "V"), - (0x1975, "X"), - (0x1980, "V"), - (0x19AC, "X"), - (0x19B0, "V"), - (0x19CA, "X"), - (0x19D0, "V"), - (0x19DB, "X"), - (0x19DE, "V"), - (0x1A1C, "X"), - (0x1A1E, "V"), - (0x1A5F, "X"), - (0x1A60, "V"), - (0x1A7D, "X"), - (0x1A7F, "V"), - (0x1A8A, "X"), - (0x1A90, "V"), - (0x1A9A, "X"), - (0x1AA0, "V"), - (0x1AAE, "X"), - (0x1AB0, "V"), - (0x1ACF, "X"), - (0x1B00, "V"), - (0x1B4D, "X"), - (0x1B50, "V"), - (0x1B7F, "X"), - (0x1B80, "V"), - (0x1BF4, "X"), - (0x1BFC, "V"), - (0x1C38, "X"), - (0x1C3B, "V"), - (0x1C4A, "X"), - (0x1C4D, "V"), - (0x1C80, "M", "в"), - ] - - -def _seg_15() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1C81, "M", "д"), - (0x1C82, "M", "о"), - (0x1C83, "M", "с"), - (0x1C84, "M", "т"), - (0x1C86, "M", "ъ"), - (0x1C87, "M", "ѣ"), - (0x1C88, "M", "ꙋ"), - (0x1C89, "X"), - (0x1C90, "M", "ა"), - (0x1C91, "M", "ბ"), - (0x1C92, "M", "გ"), - (0x1C93, "M", "დ"), - (0x1C94, "M", "ე"), - (0x1C95, "M", "ვ"), - (0x1C96, "M", "ზ"), - (0x1C97, "M", "თ"), - (0x1C98, "M", "ი"), - (0x1C99, "M", "კ"), - (0x1C9A, "M", "ლ"), - (0x1C9B, "M", "მ"), - (0x1C9C, "M", "ნ"), - (0x1C9D, "M", "ო"), - (0x1C9E, "M", "პ"), - (0x1C9F, "M", "ჟ"), - (0x1CA0, "M", "რ"), - (0x1CA1, "M", "ს"), - (0x1CA2, "M", "ტ"), - (0x1CA3, "M", "უ"), - (0x1CA4, "M", "ფ"), - (0x1CA5, "M", "ქ"), - (0x1CA6, "M", "ღ"), - (0x1CA7, "M", "ყ"), - (0x1CA8, "M", "შ"), - (0x1CA9, "M", "ჩ"), - (0x1CAA, "M", "ც"), - (0x1CAB, "M", "ძ"), - (0x1CAC, "M", "წ"), - (0x1CAD, "M", "ჭ"), - (0x1CAE, "M", "ხ"), - (0x1CAF, "M", "ჯ"), - (0x1CB0, "M", "ჰ"), - (0x1CB1, "M", "ჱ"), - (0x1CB2, "M", "ჲ"), - (0x1CB3, "M", "ჳ"), - (0x1CB4, "M", "ჴ"), - (0x1CB5, "M", "ჵ"), - (0x1CB6, "M", "ჶ"), - (0x1CB7, "M", "ჷ"), - (0x1CB8, "M", "ჸ"), - (0x1CB9, "M", "ჹ"), - (0x1CBA, "M", "ჺ"), - (0x1CBB, "X"), - (0x1CBD, "M", "ჽ"), - (0x1CBE, "M", "ჾ"), - (0x1CBF, "M", "ჿ"), - (0x1CC0, "V"), - (0x1CC8, "X"), - (0x1CD0, "V"), - (0x1CFB, "X"), - (0x1D00, "V"), - (0x1D2C, "M", "a"), - (0x1D2D, "M", "æ"), - (0x1D2E, "M", "b"), - (0x1D2F, "V"), - (0x1D30, "M", "d"), - (0x1D31, "M", "e"), - (0x1D32, "M", "ǝ"), - (0x1D33, "M", "g"), - (0x1D34, "M", "h"), - (0x1D35, "M", "i"), - (0x1D36, "M", "j"), - (0x1D37, "M", "k"), - (0x1D38, "M", "l"), - (0x1D39, "M", "m"), - (0x1D3A, "M", "n"), - (0x1D3B, "V"), - (0x1D3C, "M", "o"), - (0x1D3D, "M", "ȣ"), - (0x1D3E, "M", "p"), - (0x1D3F, "M", "r"), - (0x1D40, "M", "t"), - (0x1D41, "M", "u"), - (0x1D42, "M", "w"), - (0x1D43, "M", "a"), - (0x1D44, "M", "ɐ"), - (0x1D45, "M", "ɑ"), - (0x1D46, "M", "ᴂ"), - (0x1D47, "M", "b"), - (0x1D48, "M", "d"), - (0x1D49, "M", "e"), - (0x1D4A, "M", "ə"), - (0x1D4B, "M", "ɛ"), - (0x1D4C, "M", "ɜ"), - (0x1D4D, "M", "g"), - (0x1D4E, "V"), - (0x1D4F, "M", "k"), - (0x1D50, "M", "m"), - (0x1D51, "M", "ŋ"), - (0x1D52, "M", "o"), - (0x1D53, "M", "ɔ"), - ] - - -def _seg_16() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D54, "M", "ᴖ"), - (0x1D55, "M", "ᴗ"), - (0x1D56, "M", "p"), - (0x1D57, "M", "t"), - (0x1D58, "M", "u"), - (0x1D59, "M", "ᴝ"), - (0x1D5A, "M", "ɯ"), - (0x1D5B, "M", "v"), - (0x1D5C, "M", "ᴥ"), - (0x1D5D, "M", "β"), - (0x1D5E, "M", "γ"), - (0x1D5F, "M", "δ"), - (0x1D60, "M", "φ"), - (0x1D61, "M", "χ"), - (0x1D62, "M", "i"), - (0x1D63, "M", "r"), - (0x1D64, "M", "u"), - (0x1D65, "M", "v"), - (0x1D66, "M", "β"), - (0x1D67, "M", "γ"), - (0x1D68, "M", "ρ"), - (0x1D69, "M", "φ"), - (0x1D6A, "M", "χ"), - (0x1D6B, "V"), - (0x1D78, "M", "н"), - (0x1D79, "V"), - (0x1D9B, "M", "ɒ"), - (0x1D9C, "M", "c"), - (0x1D9D, "M", "ɕ"), - (0x1D9E, "M", "ð"), - (0x1D9F, "M", "ɜ"), - (0x1DA0, "M", "f"), - (0x1DA1, "M", "ɟ"), - (0x1DA2, "M", "ɡ"), - (0x1DA3, "M", "ɥ"), - (0x1DA4, "M", "ɨ"), - (0x1DA5, "M", "ɩ"), - (0x1DA6, "M", "ɪ"), - (0x1DA7, "M", "ᵻ"), - (0x1DA8, "M", "ʝ"), - (0x1DA9, "M", "ɭ"), - (0x1DAA, "M", "ᶅ"), - (0x1DAB, "M", "ʟ"), - (0x1DAC, "M", "ɱ"), - (0x1DAD, "M", "ɰ"), - (0x1DAE, "M", "ɲ"), - (0x1DAF, "M", "ɳ"), - (0x1DB0, "M", "ɴ"), - (0x1DB1, "M", "ɵ"), - (0x1DB2, "M", "ɸ"), - (0x1DB3, "M", "ʂ"), - (0x1DB4, "M", "ʃ"), - (0x1DB5, "M", "ƫ"), - (0x1DB6, "M", "ʉ"), - (0x1DB7, "M", "ʊ"), - (0x1DB8, "M", "ᴜ"), - (0x1DB9, "M", "ʋ"), - (0x1DBA, "M", "ʌ"), - (0x1DBB, "M", "z"), - (0x1DBC, "M", "ʐ"), - (0x1DBD, "M", "ʑ"), - (0x1DBE, "M", "ʒ"), - (0x1DBF, "M", "θ"), - (0x1DC0, "V"), - (0x1E00, "M", "ḁ"), - (0x1E01, "V"), - (0x1E02, "M", "ḃ"), - (0x1E03, "V"), - (0x1E04, "M", "ḅ"), - (0x1E05, "V"), - (0x1E06, "M", "ḇ"), - (0x1E07, "V"), - (0x1E08, "M", "ḉ"), - (0x1E09, "V"), - (0x1E0A, "M", "ḋ"), - (0x1E0B, "V"), - (0x1E0C, "M", "ḍ"), - (0x1E0D, "V"), - (0x1E0E, "M", "ḏ"), - (0x1E0F, "V"), - (0x1E10, "M", "ḑ"), - (0x1E11, "V"), - (0x1E12, "M", "ḓ"), - (0x1E13, "V"), - (0x1E14, "M", "ḕ"), - (0x1E15, "V"), - (0x1E16, "M", "ḗ"), - (0x1E17, "V"), - (0x1E18, "M", "ḙ"), - (0x1E19, "V"), - (0x1E1A, "M", "ḛ"), - (0x1E1B, "V"), - (0x1E1C, "M", "ḝ"), - (0x1E1D, "V"), - (0x1E1E, "M", "ḟ"), - (0x1E1F, "V"), - (0x1E20, "M", "ḡ"), - (0x1E21, "V"), - (0x1E22, "M", "ḣ"), - (0x1E23, "V"), - ] - - -def _seg_17() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E24, "M", "ḥ"), - (0x1E25, "V"), - (0x1E26, "M", "ḧ"), - (0x1E27, "V"), - (0x1E28, "M", "ḩ"), - (0x1E29, "V"), - (0x1E2A, "M", "ḫ"), - (0x1E2B, "V"), - (0x1E2C, "M", "ḭ"), - (0x1E2D, "V"), - (0x1E2E, "M", "ḯ"), - (0x1E2F, "V"), - (0x1E30, "M", "ḱ"), - (0x1E31, "V"), - (0x1E32, "M", "ḳ"), - (0x1E33, "V"), - (0x1E34, "M", "ḵ"), - (0x1E35, "V"), - (0x1E36, "M", "ḷ"), - (0x1E37, "V"), - (0x1E38, "M", "ḹ"), - (0x1E39, "V"), - (0x1E3A, "M", "ḻ"), - (0x1E3B, "V"), - (0x1E3C, "M", "ḽ"), - (0x1E3D, "V"), - (0x1E3E, "M", "ḿ"), - (0x1E3F, "V"), - (0x1E40, "M", "ṁ"), - (0x1E41, "V"), - (0x1E42, "M", "ṃ"), - (0x1E43, "V"), - (0x1E44, "M", "ṅ"), - (0x1E45, "V"), - (0x1E46, "M", "ṇ"), - (0x1E47, "V"), - (0x1E48, "M", "ṉ"), - (0x1E49, "V"), - (0x1E4A, "M", "ṋ"), - (0x1E4B, "V"), - (0x1E4C, "M", "ṍ"), - (0x1E4D, "V"), - (0x1E4E, "M", "ṏ"), - (0x1E4F, "V"), - (0x1E50, "M", "ṑ"), - (0x1E51, "V"), - (0x1E52, "M", "ṓ"), - (0x1E53, "V"), - (0x1E54, "M", "ṕ"), - (0x1E55, "V"), - (0x1E56, "M", "ṗ"), - (0x1E57, "V"), - (0x1E58, "M", "ṙ"), - (0x1E59, "V"), - (0x1E5A, "M", "ṛ"), - (0x1E5B, "V"), - (0x1E5C, "M", "ṝ"), - (0x1E5D, "V"), - (0x1E5E, "M", "ṟ"), - (0x1E5F, "V"), - (0x1E60, "M", "ṡ"), - (0x1E61, "V"), - (0x1E62, "M", "ṣ"), - (0x1E63, "V"), - (0x1E64, "M", "ṥ"), - (0x1E65, "V"), - (0x1E66, "M", "ṧ"), - (0x1E67, "V"), - (0x1E68, "M", "ṩ"), - (0x1E69, "V"), - (0x1E6A, "M", "ṫ"), - (0x1E6B, "V"), - (0x1E6C, "M", "ṭ"), - (0x1E6D, "V"), - (0x1E6E, "M", "ṯ"), - (0x1E6F, "V"), - (0x1E70, "M", "ṱ"), - (0x1E71, "V"), - (0x1E72, "M", "ṳ"), - (0x1E73, "V"), - (0x1E74, "M", "ṵ"), - (0x1E75, "V"), - (0x1E76, "M", "ṷ"), - (0x1E77, "V"), - (0x1E78, "M", "ṹ"), - (0x1E79, "V"), - (0x1E7A, "M", "ṻ"), - (0x1E7B, "V"), - (0x1E7C, "M", "ṽ"), - (0x1E7D, "V"), - (0x1E7E, "M", "ṿ"), - (0x1E7F, "V"), - (0x1E80, "M", "ẁ"), - (0x1E81, "V"), - (0x1E82, "M", "ẃ"), - (0x1E83, "V"), - (0x1E84, "M", "ẅ"), - (0x1E85, "V"), - (0x1E86, "M", "ẇ"), - (0x1E87, "V"), - ] - - -def _seg_18() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E88, "M", "ẉ"), - (0x1E89, "V"), - (0x1E8A, "M", "ẋ"), - (0x1E8B, "V"), - (0x1E8C, "M", "ẍ"), - (0x1E8D, "V"), - (0x1E8E, "M", "ẏ"), - (0x1E8F, "V"), - (0x1E90, "M", "ẑ"), - (0x1E91, "V"), - (0x1E92, "M", "ẓ"), - (0x1E93, "V"), - (0x1E94, "M", "ẕ"), - (0x1E95, "V"), - (0x1E9A, "M", "aʾ"), - (0x1E9B, "M", "ṡ"), - (0x1E9C, "V"), - (0x1E9E, "M", "ß"), - (0x1E9F, "V"), - (0x1EA0, "M", "ạ"), - (0x1EA1, "V"), - (0x1EA2, "M", "ả"), - (0x1EA3, "V"), - (0x1EA4, "M", "ấ"), - (0x1EA5, "V"), - (0x1EA6, "M", "ầ"), - (0x1EA7, "V"), - (0x1EA8, "M", "ẩ"), - (0x1EA9, "V"), - (0x1EAA, "M", "ẫ"), - (0x1EAB, "V"), - (0x1EAC, "M", "ậ"), - (0x1EAD, "V"), - (0x1EAE, "M", "ắ"), - (0x1EAF, "V"), - (0x1EB0, "M", "ằ"), - (0x1EB1, "V"), - (0x1EB2, "M", "ẳ"), - (0x1EB3, "V"), - (0x1EB4, "M", "ẵ"), - (0x1EB5, "V"), - (0x1EB6, "M", "ặ"), - (0x1EB7, "V"), - (0x1EB8, "M", "ẹ"), - (0x1EB9, "V"), - (0x1EBA, "M", "ẻ"), - (0x1EBB, "V"), - (0x1EBC, "M", "ẽ"), - (0x1EBD, "V"), - (0x1EBE, "M", "ế"), - (0x1EBF, "V"), - (0x1EC0, "M", "ề"), - (0x1EC1, "V"), - (0x1EC2, "M", "ể"), - (0x1EC3, "V"), - (0x1EC4, "M", "ễ"), - (0x1EC5, "V"), - (0x1EC6, "M", "ệ"), - (0x1EC7, "V"), - (0x1EC8, "M", "ỉ"), - (0x1EC9, "V"), - (0x1ECA, "M", "ị"), - (0x1ECB, "V"), - (0x1ECC, "M", "ọ"), - (0x1ECD, "V"), - (0x1ECE, "M", "ỏ"), - (0x1ECF, "V"), - (0x1ED0, "M", "ố"), - (0x1ED1, "V"), - (0x1ED2, "M", "ồ"), - (0x1ED3, "V"), - (0x1ED4, "M", "ổ"), - (0x1ED5, "V"), - (0x1ED6, "M", "ỗ"), - (0x1ED7, "V"), - (0x1ED8, "M", "ộ"), - (0x1ED9, "V"), - (0x1EDA, "M", "ớ"), - (0x1EDB, "V"), - (0x1EDC, "M", "ờ"), - (0x1EDD, "V"), - (0x1EDE, "M", "ở"), - (0x1EDF, "V"), - (0x1EE0, "M", "ỡ"), - (0x1EE1, "V"), - (0x1EE2, "M", "ợ"), - (0x1EE3, "V"), - (0x1EE4, "M", "ụ"), - (0x1EE5, "V"), - (0x1EE6, "M", "ủ"), - (0x1EE7, "V"), - (0x1EE8, "M", "ứ"), - (0x1EE9, "V"), - (0x1EEA, "M", "ừ"), - (0x1EEB, "V"), - (0x1EEC, "M", "ử"), - (0x1EED, "V"), - (0x1EEE, "M", "ữ"), - (0x1EEF, "V"), - (0x1EF0, "M", "ự"), - ] - - -def _seg_19() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EF1, "V"), - (0x1EF2, "M", "ỳ"), - (0x1EF3, "V"), - (0x1EF4, "M", "ỵ"), - (0x1EF5, "V"), - (0x1EF6, "M", "ỷ"), - (0x1EF7, "V"), - (0x1EF8, "M", "ỹ"), - (0x1EF9, "V"), - (0x1EFA, "M", "ỻ"), - (0x1EFB, "V"), - (0x1EFC, "M", "ỽ"), - (0x1EFD, "V"), - (0x1EFE, "M", "ỿ"), - (0x1EFF, "V"), - (0x1F08, "M", "ἀ"), - (0x1F09, "M", "ἁ"), - (0x1F0A, "M", "ἂ"), - (0x1F0B, "M", "ἃ"), - (0x1F0C, "M", "ἄ"), - (0x1F0D, "M", "ἅ"), - (0x1F0E, "M", "ἆ"), - (0x1F0F, "M", "ἇ"), - (0x1F10, "V"), - (0x1F16, "X"), - (0x1F18, "M", "ἐ"), - (0x1F19, "M", "ἑ"), - (0x1F1A, "M", "ἒ"), - (0x1F1B, "M", "ἓ"), - (0x1F1C, "M", "ἔ"), - (0x1F1D, "M", "ἕ"), - (0x1F1E, "X"), - (0x1F20, "V"), - (0x1F28, "M", "ἠ"), - (0x1F29, "M", "ἡ"), - (0x1F2A, "M", "ἢ"), - (0x1F2B, "M", "ἣ"), - (0x1F2C, "M", "ἤ"), - (0x1F2D, "M", "ἥ"), - (0x1F2E, "M", "ἦ"), - (0x1F2F, "M", "ἧ"), - (0x1F30, "V"), - (0x1F38, "M", "ἰ"), - (0x1F39, "M", "ἱ"), - (0x1F3A, "M", "ἲ"), - (0x1F3B, "M", "ἳ"), - (0x1F3C, "M", "ἴ"), - (0x1F3D, "M", "ἵ"), - (0x1F3E, "M", "ἶ"), - (0x1F3F, "M", "ἷ"), - (0x1F40, "V"), - (0x1F46, "X"), - (0x1F48, "M", "ὀ"), - (0x1F49, "M", "ὁ"), - (0x1F4A, "M", "ὂ"), - (0x1F4B, "M", "ὃ"), - (0x1F4C, "M", "ὄ"), - (0x1F4D, "M", "ὅ"), - (0x1F4E, "X"), - (0x1F50, "V"), - (0x1F58, "X"), - (0x1F59, "M", "ὑ"), - (0x1F5A, "X"), - (0x1F5B, "M", "ὓ"), - (0x1F5C, "X"), - (0x1F5D, "M", "ὕ"), - (0x1F5E, "X"), - (0x1F5F, "M", "ὗ"), - (0x1F60, "V"), - (0x1F68, "M", "ὠ"), - (0x1F69, "M", "ὡ"), - (0x1F6A, "M", "ὢ"), - (0x1F6B, "M", "ὣ"), - (0x1F6C, "M", "ὤ"), - (0x1F6D, "M", "ὥ"), - (0x1F6E, "M", "ὦ"), - (0x1F6F, "M", "ὧ"), - (0x1F70, "V"), - (0x1F71, "M", "ά"), - (0x1F72, "V"), - (0x1F73, "M", "έ"), - (0x1F74, "V"), - (0x1F75, "M", "ή"), - (0x1F76, "V"), - (0x1F77, "M", "ί"), - (0x1F78, "V"), - (0x1F79, "M", "ό"), - (0x1F7A, "V"), - (0x1F7B, "M", "ύ"), - (0x1F7C, "V"), - (0x1F7D, "M", "ώ"), - (0x1F7E, "X"), - (0x1F80, "M", "ἀι"), - (0x1F81, "M", "ἁι"), - (0x1F82, "M", "ἂι"), - (0x1F83, "M", "ἃι"), - (0x1F84, "M", "ἄι"), - (0x1F85, "M", "ἅι"), - (0x1F86, "M", "ἆι"), - (0x1F87, "M", "ἇι"), - ] - - -def _seg_20() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1F88, "M", "ἀι"), - (0x1F89, "M", "ἁι"), - (0x1F8A, "M", "ἂι"), - (0x1F8B, "M", "ἃι"), - (0x1F8C, "M", "ἄι"), - (0x1F8D, "M", "ἅι"), - (0x1F8E, "M", "ἆι"), - (0x1F8F, "M", "ἇι"), - (0x1F90, "M", "ἠι"), - (0x1F91, "M", "ἡι"), - (0x1F92, "M", "ἢι"), - (0x1F93, "M", "ἣι"), - (0x1F94, "M", "ἤι"), - (0x1F95, "M", "ἥι"), - (0x1F96, "M", "ἦι"), - (0x1F97, "M", "ἧι"), - (0x1F98, "M", "ἠι"), - (0x1F99, "M", "ἡι"), - (0x1F9A, "M", "ἢι"), - (0x1F9B, "M", "ἣι"), - (0x1F9C, "M", "ἤι"), - (0x1F9D, "M", "ἥι"), - (0x1F9E, "M", "ἦι"), - (0x1F9F, "M", "ἧι"), - (0x1FA0, "M", "ὠι"), - (0x1FA1, "M", "ὡι"), - (0x1FA2, "M", "ὢι"), - (0x1FA3, "M", "ὣι"), - (0x1FA4, "M", "ὤι"), - (0x1FA5, "M", "ὥι"), - (0x1FA6, "M", "ὦι"), - (0x1FA7, "M", "ὧι"), - (0x1FA8, "M", "ὠι"), - (0x1FA9, "M", "ὡι"), - (0x1FAA, "M", "ὢι"), - (0x1FAB, "M", "ὣι"), - (0x1FAC, "M", "ὤι"), - (0x1FAD, "M", "ὥι"), - (0x1FAE, "M", "ὦι"), - (0x1FAF, "M", "ὧι"), - (0x1FB0, "V"), - (0x1FB2, "M", "ὰι"), - (0x1FB3, "M", "αι"), - (0x1FB4, "M", "άι"), - (0x1FB5, "X"), - (0x1FB6, "V"), - (0x1FB7, "M", "ᾶι"), - (0x1FB8, "M", "ᾰ"), - (0x1FB9, "M", "ᾱ"), - (0x1FBA, "M", "ὰ"), - (0x1FBB, "M", "ά"), - (0x1FBC, "M", "αι"), - (0x1FBD, "3", " ̓"), - (0x1FBE, "M", "ι"), - (0x1FBF, "3", " ̓"), - (0x1FC0, "3", " ͂"), - (0x1FC1, "3", " ̈͂"), - (0x1FC2, "M", "ὴι"), - (0x1FC3, "M", "ηι"), - (0x1FC4, "M", "ήι"), - (0x1FC5, "X"), - (0x1FC6, "V"), - (0x1FC7, "M", "ῆι"), - (0x1FC8, "M", "ὲ"), - (0x1FC9, "M", "έ"), - (0x1FCA, "M", "ὴ"), - (0x1FCB, "M", "ή"), - (0x1FCC, "M", "ηι"), - (0x1FCD, "3", " ̓̀"), - (0x1FCE, "3", " ̓́"), - (0x1FCF, "3", " ̓͂"), - (0x1FD0, "V"), - (0x1FD3, "M", "ΐ"), - (0x1FD4, "X"), - (0x1FD6, "V"), - (0x1FD8, "M", "ῐ"), - (0x1FD9, "M", "ῑ"), - (0x1FDA, "M", "ὶ"), - (0x1FDB, "M", "ί"), - (0x1FDC, "X"), - (0x1FDD, "3", " ̔̀"), - (0x1FDE, "3", " ̔́"), - (0x1FDF, "3", " ̔͂"), - (0x1FE0, "V"), - (0x1FE3, "M", "ΰ"), - (0x1FE4, "V"), - (0x1FE8, "M", "ῠ"), - (0x1FE9, "M", "ῡ"), - (0x1FEA, "M", "ὺ"), - (0x1FEB, "M", "ύ"), - (0x1FEC, "M", "ῥ"), - (0x1FED, "3", " ̈̀"), - (0x1FEE, "3", " ̈́"), - (0x1FEF, "3", "`"), - (0x1FF0, "X"), - (0x1FF2, "M", "ὼι"), - (0x1FF3, "M", "ωι"), - (0x1FF4, "M", "ώι"), - (0x1FF5, "X"), - (0x1FF6, "V"), - ] - - -def _seg_21() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1FF7, "M", "ῶι"), - (0x1FF8, "M", "ὸ"), - (0x1FF9, "M", "ό"), - (0x1FFA, "M", "ὼ"), - (0x1FFB, "M", "ώ"), - (0x1FFC, "M", "ωι"), - (0x1FFD, "3", " ́"), - (0x1FFE, "3", " ̔"), - (0x1FFF, "X"), - (0x2000, "3", " "), - (0x200B, "I"), - (0x200C, "D", ""), - (0x200E, "X"), - (0x2010, "V"), - (0x2011, "M", "‐"), - (0x2012, "V"), - (0x2017, "3", " ̳"), - (0x2018, "V"), - (0x2024, "X"), - (0x2027, "V"), - (0x2028, "X"), - (0x202F, "3", " "), - (0x2030, "V"), - (0x2033, "M", "′′"), - (0x2034, "M", "′′′"), - (0x2035, "V"), - (0x2036, "M", "‵‵"), - (0x2037, "M", "‵‵‵"), - (0x2038, "V"), - (0x203C, "3", "!!"), - (0x203D, "V"), - (0x203E, "3", " ̅"), - (0x203F, "V"), - (0x2047, "3", "??"), - (0x2048, "3", "?!"), - (0x2049, "3", "!?"), - (0x204A, "V"), - (0x2057, "M", "′′′′"), - (0x2058, "V"), - (0x205F, "3", " "), - (0x2060, "I"), - (0x2061, "X"), - (0x2064, "I"), - (0x2065, "X"), - (0x2070, "M", "0"), - (0x2071, "M", "i"), - (0x2072, "X"), - (0x2074, "M", "4"), - (0x2075, "M", "5"), - (0x2076, "M", "6"), - (0x2077, "M", "7"), - (0x2078, "M", "8"), - (0x2079, "M", "9"), - (0x207A, "3", "+"), - (0x207B, "M", "−"), - (0x207C, "3", "="), - (0x207D, "3", "("), - (0x207E, "3", ")"), - (0x207F, "M", "n"), - (0x2080, "M", "0"), - (0x2081, "M", "1"), - (0x2082, "M", "2"), - (0x2083, "M", "3"), - (0x2084, "M", "4"), - (0x2085, "M", "5"), - (0x2086, "M", "6"), - (0x2087, "M", "7"), - (0x2088, "M", "8"), - (0x2089, "M", "9"), - (0x208A, "3", "+"), - (0x208B, "M", "−"), - (0x208C, "3", "="), - (0x208D, "3", "("), - (0x208E, "3", ")"), - (0x208F, "X"), - (0x2090, "M", "a"), - (0x2091, "M", "e"), - (0x2092, "M", "o"), - (0x2093, "M", "x"), - (0x2094, "M", "ə"), - (0x2095, "M", "h"), - (0x2096, "M", "k"), - (0x2097, "M", "l"), - (0x2098, "M", "m"), - (0x2099, "M", "n"), - (0x209A, "M", "p"), - (0x209B, "M", "s"), - (0x209C, "M", "t"), - (0x209D, "X"), - (0x20A0, "V"), - (0x20A8, "M", "rs"), - (0x20A9, "V"), - (0x20C1, "X"), - (0x20D0, "V"), - (0x20F1, "X"), - (0x2100, "3", "a/c"), - (0x2101, "3", "a/s"), - (0x2102, "M", "c"), - (0x2103, "M", "°c"), - (0x2104, "V"), - ] - - -def _seg_22() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2105, "3", "c/o"), - (0x2106, "3", "c/u"), - (0x2107, "M", "ɛ"), - (0x2108, "V"), - (0x2109, "M", "°f"), - (0x210A, "M", "g"), - (0x210B, "M", "h"), - (0x210F, "M", "ħ"), - (0x2110, "M", "i"), - (0x2112, "M", "l"), - (0x2114, "V"), - (0x2115, "M", "n"), - (0x2116, "M", "no"), - (0x2117, "V"), - (0x2119, "M", "p"), - (0x211A, "M", "q"), - (0x211B, "M", "r"), - (0x211E, "V"), - (0x2120, "M", "sm"), - (0x2121, "M", "tel"), - (0x2122, "M", "tm"), - (0x2123, "V"), - (0x2124, "M", "z"), - (0x2125, "V"), - (0x2126, "M", "ω"), - (0x2127, "V"), - (0x2128, "M", "z"), - (0x2129, "V"), - (0x212A, "M", "k"), - (0x212B, "M", "å"), - (0x212C, "M", "b"), - (0x212D, "M", "c"), - (0x212E, "V"), - (0x212F, "M", "e"), - (0x2131, "M", "f"), - (0x2132, "X"), - (0x2133, "M", "m"), - (0x2134, "M", "o"), - (0x2135, "M", "א"), - (0x2136, "M", "ב"), - (0x2137, "M", "ג"), - (0x2138, "M", "ד"), - (0x2139, "M", "i"), - (0x213A, "V"), - (0x213B, "M", "fax"), - (0x213C, "M", "π"), - (0x213D, "M", "γ"), - (0x213F, "M", "π"), - (0x2140, "M", "∑"), - (0x2141, "V"), - (0x2145, "M", "d"), - (0x2147, "M", "e"), - (0x2148, "M", "i"), - (0x2149, "M", "j"), - (0x214A, "V"), - (0x2150, "M", "1⁄7"), - (0x2151, "M", "1⁄9"), - (0x2152, "M", "1⁄10"), - (0x2153, "M", "1⁄3"), - (0x2154, "M", "2⁄3"), - (0x2155, "M", "1⁄5"), - (0x2156, "M", "2⁄5"), - (0x2157, "M", "3⁄5"), - (0x2158, "M", "4⁄5"), - (0x2159, "M", "1⁄6"), - (0x215A, "M", "5⁄6"), - (0x215B, "M", "1⁄8"), - (0x215C, "M", "3⁄8"), - (0x215D, "M", "5⁄8"), - (0x215E, "M", "7⁄8"), - (0x215F, "M", "1⁄"), - (0x2160, "M", "i"), - (0x2161, "M", "ii"), - (0x2162, "M", "iii"), - (0x2163, "M", "iv"), - (0x2164, "M", "v"), - (0x2165, "M", "vi"), - (0x2166, "M", "vii"), - (0x2167, "M", "viii"), - (0x2168, "M", "ix"), - (0x2169, "M", "x"), - (0x216A, "M", "xi"), - (0x216B, "M", "xii"), - (0x216C, "M", "l"), - (0x216D, "M", "c"), - (0x216E, "M", "d"), - (0x216F, "M", "m"), - (0x2170, "M", "i"), - (0x2171, "M", "ii"), - (0x2172, "M", "iii"), - (0x2173, "M", "iv"), - (0x2174, "M", "v"), - (0x2175, "M", "vi"), - (0x2176, "M", "vii"), - (0x2177, "M", "viii"), - (0x2178, "M", "ix"), - (0x2179, "M", "x"), - (0x217A, "M", "xi"), - (0x217B, "M", "xii"), - (0x217C, "M", "l"), - ] - - -def _seg_23() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x217D, "M", "c"), - (0x217E, "M", "d"), - (0x217F, "M", "m"), - (0x2180, "V"), - (0x2183, "X"), - (0x2184, "V"), - (0x2189, "M", "0⁄3"), - (0x218A, "V"), - (0x218C, "X"), - (0x2190, "V"), - (0x222C, "M", "∫∫"), - (0x222D, "M", "∫∫∫"), - (0x222E, "V"), - (0x222F, "M", "∮∮"), - (0x2230, "M", "∮∮∮"), - (0x2231, "V"), - (0x2329, "M", "〈"), - (0x232A, "M", "〉"), - (0x232B, "V"), - (0x2427, "X"), - (0x2440, "V"), - (0x244B, "X"), - (0x2460, "M", "1"), - (0x2461, "M", "2"), - (0x2462, "M", "3"), - (0x2463, "M", "4"), - (0x2464, "M", "5"), - (0x2465, "M", "6"), - (0x2466, "M", "7"), - (0x2467, "M", "8"), - (0x2468, "M", "9"), - (0x2469, "M", "10"), - (0x246A, "M", "11"), - (0x246B, "M", "12"), - (0x246C, "M", "13"), - (0x246D, "M", "14"), - (0x246E, "M", "15"), - (0x246F, "M", "16"), - (0x2470, "M", "17"), - (0x2471, "M", "18"), - (0x2472, "M", "19"), - (0x2473, "M", "20"), - (0x2474, "3", "(1)"), - (0x2475, "3", "(2)"), - (0x2476, "3", "(3)"), - (0x2477, "3", "(4)"), - (0x2478, "3", "(5)"), - (0x2479, "3", "(6)"), - (0x247A, "3", "(7)"), - (0x247B, "3", "(8)"), - (0x247C, "3", "(9)"), - (0x247D, "3", "(10)"), - (0x247E, "3", "(11)"), - (0x247F, "3", "(12)"), - (0x2480, "3", "(13)"), - (0x2481, "3", "(14)"), - (0x2482, "3", "(15)"), - (0x2483, "3", "(16)"), - (0x2484, "3", "(17)"), - (0x2485, "3", "(18)"), - (0x2486, "3", "(19)"), - (0x2487, "3", "(20)"), - (0x2488, "X"), - (0x249C, "3", "(a)"), - (0x249D, "3", "(b)"), - (0x249E, "3", "(c)"), - (0x249F, "3", "(d)"), - (0x24A0, "3", "(e)"), - (0x24A1, "3", "(f)"), - (0x24A2, "3", "(g)"), - (0x24A3, "3", "(h)"), - (0x24A4, "3", "(i)"), - (0x24A5, "3", "(j)"), - (0x24A6, "3", "(k)"), - (0x24A7, "3", "(l)"), - (0x24A8, "3", "(m)"), - (0x24A9, "3", "(n)"), - (0x24AA, "3", "(o)"), - (0x24AB, "3", "(p)"), - (0x24AC, "3", "(q)"), - (0x24AD, "3", "(r)"), - (0x24AE, "3", "(s)"), - (0x24AF, "3", "(t)"), - (0x24B0, "3", "(u)"), - (0x24B1, "3", "(v)"), - (0x24B2, "3", "(w)"), - (0x24B3, "3", "(x)"), - (0x24B4, "3", "(y)"), - (0x24B5, "3", "(z)"), - (0x24B6, "M", "a"), - (0x24B7, "M", "b"), - (0x24B8, "M", "c"), - (0x24B9, "M", "d"), - (0x24BA, "M", "e"), - (0x24BB, "M", "f"), - (0x24BC, "M", "g"), - (0x24BD, "M", "h"), - (0x24BE, "M", "i"), - (0x24BF, "M", "j"), - (0x24C0, "M", "k"), - ] - - -def _seg_24() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x24C1, "M", "l"), - (0x24C2, "M", "m"), - (0x24C3, "M", "n"), - (0x24C4, "M", "o"), - (0x24C5, "M", "p"), - (0x24C6, "M", "q"), - (0x24C7, "M", "r"), - (0x24C8, "M", "s"), - (0x24C9, "M", "t"), - (0x24CA, "M", "u"), - (0x24CB, "M", "v"), - (0x24CC, "M", "w"), - (0x24CD, "M", "x"), - (0x24CE, "M", "y"), - (0x24CF, "M", "z"), - (0x24D0, "M", "a"), - (0x24D1, "M", "b"), - (0x24D2, "M", "c"), - (0x24D3, "M", "d"), - (0x24D4, "M", "e"), - (0x24D5, "M", "f"), - (0x24D6, "M", "g"), - (0x24D7, "M", "h"), - (0x24D8, "M", "i"), - (0x24D9, "M", "j"), - (0x24DA, "M", "k"), - (0x24DB, "M", "l"), - (0x24DC, "M", "m"), - (0x24DD, "M", "n"), - (0x24DE, "M", "o"), - (0x24DF, "M", "p"), - (0x24E0, "M", "q"), - (0x24E1, "M", "r"), - (0x24E2, "M", "s"), - (0x24E3, "M", "t"), - (0x24E4, "M", "u"), - (0x24E5, "M", "v"), - (0x24E6, "M", "w"), - (0x24E7, "M", "x"), - (0x24E8, "M", "y"), - (0x24E9, "M", "z"), - (0x24EA, "M", "0"), - (0x24EB, "V"), - (0x2A0C, "M", "∫∫∫∫"), - (0x2A0D, "V"), - (0x2A74, "3", "::="), - (0x2A75, "3", "=="), - (0x2A76, "3", "==="), - (0x2A77, "V"), - (0x2ADC, "M", "⫝̸"), - (0x2ADD, "V"), - (0x2B74, "X"), - (0x2B76, "V"), - (0x2B96, "X"), - (0x2B97, "V"), - (0x2C00, "M", "ⰰ"), - (0x2C01, "M", "ⰱ"), - (0x2C02, "M", "ⰲ"), - (0x2C03, "M", "ⰳ"), - (0x2C04, "M", "ⰴ"), - (0x2C05, "M", "ⰵ"), - (0x2C06, "M", "ⰶ"), - (0x2C07, "M", "ⰷ"), - (0x2C08, "M", "ⰸ"), - (0x2C09, "M", "ⰹ"), - (0x2C0A, "M", "ⰺ"), - (0x2C0B, "M", "ⰻ"), - (0x2C0C, "M", "ⰼ"), - (0x2C0D, "M", "ⰽ"), - (0x2C0E, "M", "ⰾ"), - (0x2C0F, "M", "ⰿ"), - (0x2C10, "M", "ⱀ"), - (0x2C11, "M", "ⱁ"), - (0x2C12, "M", "ⱂ"), - (0x2C13, "M", "ⱃ"), - (0x2C14, "M", "ⱄ"), - (0x2C15, "M", "ⱅ"), - (0x2C16, "M", "ⱆ"), - (0x2C17, "M", "ⱇ"), - (0x2C18, "M", "ⱈ"), - (0x2C19, "M", "ⱉ"), - (0x2C1A, "M", "ⱊ"), - (0x2C1B, "M", "ⱋ"), - (0x2C1C, "M", "ⱌ"), - (0x2C1D, "M", "ⱍ"), - (0x2C1E, "M", "ⱎ"), - (0x2C1F, "M", "ⱏ"), - (0x2C20, "M", "ⱐ"), - (0x2C21, "M", "ⱑ"), - (0x2C22, "M", "ⱒ"), - (0x2C23, "M", "ⱓ"), - (0x2C24, "M", "ⱔ"), - (0x2C25, "M", "ⱕ"), - (0x2C26, "M", "ⱖ"), - (0x2C27, "M", "ⱗ"), - (0x2C28, "M", "ⱘ"), - (0x2C29, "M", "ⱙ"), - (0x2C2A, "M", "ⱚ"), - (0x2C2B, "M", "ⱛ"), - (0x2C2C, "M", "ⱜ"), - ] - - -def _seg_25() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2C2D, "M", "ⱝ"), - (0x2C2E, "M", "ⱞ"), - (0x2C2F, "M", "ⱟ"), - (0x2C30, "V"), - (0x2C60, "M", "ⱡ"), - (0x2C61, "V"), - (0x2C62, "M", "ɫ"), - (0x2C63, "M", "ᵽ"), - (0x2C64, "M", "ɽ"), - (0x2C65, "V"), - (0x2C67, "M", "ⱨ"), - (0x2C68, "V"), - (0x2C69, "M", "ⱪ"), - (0x2C6A, "V"), - (0x2C6B, "M", "ⱬ"), - (0x2C6C, "V"), - (0x2C6D, "M", "ɑ"), - (0x2C6E, "M", "ɱ"), - (0x2C6F, "M", "ɐ"), - (0x2C70, "M", "ɒ"), - (0x2C71, "V"), - (0x2C72, "M", "ⱳ"), - (0x2C73, "V"), - (0x2C75, "M", "ⱶ"), - (0x2C76, "V"), - (0x2C7C, "M", "j"), - (0x2C7D, "M", "v"), - (0x2C7E, "M", "ȿ"), - (0x2C7F, "M", "ɀ"), - (0x2C80, "M", "ⲁ"), - (0x2C81, "V"), - (0x2C82, "M", "ⲃ"), - (0x2C83, "V"), - (0x2C84, "M", "ⲅ"), - (0x2C85, "V"), - (0x2C86, "M", "ⲇ"), - (0x2C87, "V"), - (0x2C88, "M", "ⲉ"), - (0x2C89, "V"), - (0x2C8A, "M", "ⲋ"), - (0x2C8B, "V"), - (0x2C8C, "M", "ⲍ"), - (0x2C8D, "V"), - (0x2C8E, "M", "ⲏ"), - (0x2C8F, "V"), - (0x2C90, "M", "ⲑ"), - (0x2C91, "V"), - (0x2C92, "M", "ⲓ"), - (0x2C93, "V"), - (0x2C94, "M", "ⲕ"), - (0x2C95, "V"), - (0x2C96, "M", "ⲗ"), - (0x2C97, "V"), - (0x2C98, "M", "ⲙ"), - (0x2C99, "V"), - (0x2C9A, "M", "ⲛ"), - (0x2C9B, "V"), - (0x2C9C, "M", "ⲝ"), - (0x2C9D, "V"), - (0x2C9E, "M", "ⲟ"), - (0x2C9F, "V"), - (0x2CA0, "M", "ⲡ"), - (0x2CA1, "V"), - (0x2CA2, "M", "ⲣ"), - (0x2CA3, "V"), - (0x2CA4, "M", "ⲥ"), - (0x2CA5, "V"), - (0x2CA6, "M", "ⲧ"), - (0x2CA7, "V"), - (0x2CA8, "M", "ⲩ"), - (0x2CA9, "V"), - (0x2CAA, "M", "ⲫ"), - (0x2CAB, "V"), - (0x2CAC, "M", "ⲭ"), - (0x2CAD, "V"), - (0x2CAE, "M", "ⲯ"), - (0x2CAF, "V"), - (0x2CB0, "M", "ⲱ"), - (0x2CB1, "V"), - (0x2CB2, "M", "ⲳ"), - (0x2CB3, "V"), - (0x2CB4, "M", "ⲵ"), - (0x2CB5, "V"), - (0x2CB6, "M", "ⲷ"), - (0x2CB7, "V"), - (0x2CB8, "M", "ⲹ"), - (0x2CB9, "V"), - (0x2CBA, "M", "ⲻ"), - (0x2CBB, "V"), - (0x2CBC, "M", "ⲽ"), - (0x2CBD, "V"), - (0x2CBE, "M", "ⲿ"), - (0x2CBF, "V"), - (0x2CC0, "M", "ⳁ"), - (0x2CC1, "V"), - (0x2CC2, "M", "ⳃ"), - (0x2CC3, "V"), - (0x2CC4, "M", "ⳅ"), - (0x2CC5, "V"), - (0x2CC6, "M", "ⳇ"), - ] - - -def _seg_26() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2CC7, "V"), - (0x2CC8, "M", "ⳉ"), - (0x2CC9, "V"), - (0x2CCA, "M", "ⳋ"), - (0x2CCB, "V"), - (0x2CCC, "M", "ⳍ"), - (0x2CCD, "V"), - (0x2CCE, "M", "ⳏ"), - (0x2CCF, "V"), - (0x2CD0, "M", "ⳑ"), - (0x2CD1, "V"), - (0x2CD2, "M", "ⳓ"), - (0x2CD3, "V"), - (0x2CD4, "M", "ⳕ"), - (0x2CD5, "V"), - (0x2CD6, "M", "ⳗ"), - (0x2CD7, "V"), - (0x2CD8, "M", "ⳙ"), - (0x2CD9, "V"), - (0x2CDA, "M", "ⳛ"), - (0x2CDB, "V"), - (0x2CDC, "M", "ⳝ"), - (0x2CDD, "V"), - (0x2CDE, "M", "ⳟ"), - (0x2CDF, "V"), - (0x2CE0, "M", "ⳡ"), - (0x2CE1, "V"), - (0x2CE2, "M", "ⳣ"), - (0x2CE3, "V"), - (0x2CEB, "M", "ⳬ"), - (0x2CEC, "V"), - (0x2CED, "M", "ⳮ"), - (0x2CEE, "V"), - (0x2CF2, "M", "ⳳ"), - (0x2CF3, "V"), - (0x2CF4, "X"), - (0x2CF9, "V"), - (0x2D26, "X"), - (0x2D27, "V"), - (0x2D28, "X"), - (0x2D2D, "V"), - (0x2D2E, "X"), - (0x2D30, "V"), - (0x2D68, "X"), - (0x2D6F, "M", "ⵡ"), - (0x2D70, "V"), - (0x2D71, "X"), - (0x2D7F, "V"), - (0x2D97, "X"), - (0x2DA0, "V"), - (0x2DA7, "X"), - (0x2DA8, "V"), - (0x2DAF, "X"), - (0x2DB0, "V"), - (0x2DB7, "X"), - (0x2DB8, "V"), - (0x2DBF, "X"), - (0x2DC0, "V"), - (0x2DC7, "X"), - (0x2DC8, "V"), - (0x2DCF, "X"), - (0x2DD0, "V"), - (0x2DD7, "X"), - (0x2DD8, "V"), - (0x2DDF, "X"), - (0x2DE0, "V"), - (0x2E5E, "X"), - (0x2E80, "V"), - (0x2E9A, "X"), - (0x2E9B, "V"), - (0x2E9F, "M", "母"), - (0x2EA0, "V"), - (0x2EF3, "M", "龟"), - (0x2EF4, "X"), - (0x2F00, "M", "一"), - (0x2F01, "M", "丨"), - (0x2F02, "M", "丶"), - (0x2F03, "M", "丿"), - (0x2F04, "M", "乙"), - (0x2F05, "M", "亅"), - (0x2F06, "M", "二"), - (0x2F07, "M", "亠"), - (0x2F08, "M", "人"), - (0x2F09, "M", "儿"), - (0x2F0A, "M", "入"), - (0x2F0B, "M", "八"), - (0x2F0C, "M", "冂"), - (0x2F0D, "M", "冖"), - (0x2F0E, "M", "冫"), - (0x2F0F, "M", "几"), - (0x2F10, "M", "凵"), - (0x2F11, "M", "刀"), - (0x2F12, "M", "力"), - (0x2F13, "M", "勹"), - (0x2F14, "M", "匕"), - (0x2F15, "M", "匚"), - (0x2F16, "M", "匸"), - (0x2F17, "M", "十"), - (0x2F18, "M", "卜"), - (0x2F19, "M", "卩"), - ] - - -def _seg_27() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F1A, "M", "厂"), - (0x2F1B, "M", "厶"), - (0x2F1C, "M", "又"), - (0x2F1D, "M", "口"), - (0x2F1E, "M", "囗"), - (0x2F1F, "M", "土"), - (0x2F20, "M", "士"), - (0x2F21, "M", "夂"), - (0x2F22, "M", "夊"), - (0x2F23, "M", "夕"), - (0x2F24, "M", "大"), - (0x2F25, "M", "女"), - (0x2F26, "M", "子"), - (0x2F27, "M", "宀"), - (0x2F28, "M", "寸"), - (0x2F29, "M", "小"), - (0x2F2A, "M", "尢"), - (0x2F2B, "M", "尸"), - (0x2F2C, "M", "屮"), - (0x2F2D, "M", "山"), - (0x2F2E, "M", "巛"), - (0x2F2F, "M", "工"), - (0x2F30, "M", "己"), - (0x2F31, "M", "巾"), - (0x2F32, "M", "干"), - (0x2F33, "M", "幺"), - (0x2F34, "M", "广"), - (0x2F35, "M", "廴"), - (0x2F36, "M", "廾"), - (0x2F37, "M", "弋"), - (0x2F38, "M", "弓"), - (0x2F39, "M", "彐"), - (0x2F3A, "M", "彡"), - (0x2F3B, "M", "彳"), - (0x2F3C, "M", "心"), - (0x2F3D, "M", "戈"), - (0x2F3E, "M", "戶"), - (0x2F3F, "M", "手"), - (0x2F40, "M", "支"), - (0x2F41, "M", "攴"), - (0x2F42, "M", "文"), - (0x2F43, "M", "斗"), - (0x2F44, "M", "斤"), - (0x2F45, "M", "方"), - (0x2F46, "M", "无"), - (0x2F47, "M", "日"), - (0x2F48, "M", "曰"), - (0x2F49, "M", "月"), - (0x2F4A, "M", "木"), - (0x2F4B, "M", "欠"), - (0x2F4C, "M", "止"), - (0x2F4D, "M", "歹"), - (0x2F4E, "M", "殳"), - (0x2F4F, "M", "毋"), - (0x2F50, "M", "比"), - (0x2F51, "M", "毛"), - (0x2F52, "M", "氏"), - (0x2F53, "M", "气"), - (0x2F54, "M", "水"), - (0x2F55, "M", "火"), - (0x2F56, "M", "爪"), - (0x2F57, "M", "父"), - (0x2F58, "M", "爻"), - (0x2F59, "M", "爿"), - (0x2F5A, "M", "片"), - (0x2F5B, "M", "牙"), - (0x2F5C, "M", "牛"), - (0x2F5D, "M", "犬"), - (0x2F5E, "M", "玄"), - (0x2F5F, "M", "玉"), - (0x2F60, "M", "瓜"), - (0x2F61, "M", "瓦"), - (0x2F62, "M", "甘"), - (0x2F63, "M", "生"), - (0x2F64, "M", "用"), - (0x2F65, "M", "田"), - (0x2F66, "M", "疋"), - (0x2F67, "M", "疒"), - (0x2F68, "M", "癶"), - (0x2F69, "M", "白"), - (0x2F6A, "M", "皮"), - (0x2F6B, "M", "皿"), - (0x2F6C, "M", "目"), - (0x2F6D, "M", "矛"), - (0x2F6E, "M", "矢"), - (0x2F6F, "M", "石"), - (0x2F70, "M", "示"), - (0x2F71, "M", "禸"), - (0x2F72, "M", "禾"), - (0x2F73, "M", "穴"), - (0x2F74, "M", "立"), - (0x2F75, "M", "竹"), - (0x2F76, "M", "米"), - (0x2F77, "M", "糸"), - (0x2F78, "M", "缶"), - (0x2F79, "M", "网"), - (0x2F7A, "M", "羊"), - (0x2F7B, "M", "羽"), - (0x2F7C, "M", "老"), - (0x2F7D, "M", "而"), - ] - - -def _seg_28() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F7E, "M", "耒"), - (0x2F7F, "M", "耳"), - (0x2F80, "M", "聿"), - (0x2F81, "M", "肉"), - (0x2F82, "M", "臣"), - (0x2F83, "M", "自"), - (0x2F84, "M", "至"), - (0x2F85, "M", "臼"), - (0x2F86, "M", "舌"), - (0x2F87, "M", "舛"), - (0x2F88, "M", "舟"), - (0x2F89, "M", "艮"), - (0x2F8A, "M", "色"), - (0x2F8B, "M", "艸"), - (0x2F8C, "M", "虍"), - (0x2F8D, "M", "虫"), - (0x2F8E, "M", "血"), - (0x2F8F, "M", "行"), - (0x2F90, "M", "衣"), - (0x2F91, "M", "襾"), - (0x2F92, "M", "見"), - (0x2F93, "M", "角"), - (0x2F94, "M", "言"), - (0x2F95, "M", "谷"), - (0x2F96, "M", "豆"), - (0x2F97, "M", "豕"), - (0x2F98, "M", "豸"), - (0x2F99, "M", "貝"), - (0x2F9A, "M", "赤"), - (0x2F9B, "M", "走"), - (0x2F9C, "M", "足"), - (0x2F9D, "M", "身"), - (0x2F9E, "M", "車"), - (0x2F9F, "M", "辛"), - (0x2FA0, "M", "辰"), - (0x2FA1, "M", "辵"), - (0x2FA2, "M", "邑"), - (0x2FA3, "M", "酉"), - (0x2FA4, "M", "釆"), - (0x2FA5, "M", "里"), - (0x2FA6, "M", "金"), - (0x2FA7, "M", "長"), - (0x2FA8, "M", "門"), - (0x2FA9, "M", "阜"), - (0x2FAA, "M", "隶"), - (0x2FAB, "M", "隹"), - (0x2FAC, "M", "雨"), - (0x2FAD, "M", "靑"), - (0x2FAE, "M", "非"), - (0x2FAF, "M", "面"), - (0x2FB0, "M", "革"), - (0x2FB1, "M", "韋"), - (0x2FB2, "M", "韭"), - (0x2FB3, "M", "音"), - (0x2FB4, "M", "頁"), - (0x2FB5, "M", "風"), - (0x2FB6, "M", "飛"), - (0x2FB7, "M", "食"), - (0x2FB8, "M", "首"), - (0x2FB9, "M", "香"), - (0x2FBA, "M", "馬"), - (0x2FBB, "M", "骨"), - (0x2FBC, "M", "高"), - (0x2FBD, "M", "髟"), - (0x2FBE, "M", "鬥"), - (0x2FBF, "M", "鬯"), - (0x2FC0, "M", "鬲"), - (0x2FC1, "M", "鬼"), - (0x2FC2, "M", "魚"), - (0x2FC3, "M", "鳥"), - (0x2FC4, "M", "鹵"), - (0x2FC5, "M", "鹿"), - (0x2FC6, "M", "麥"), - (0x2FC7, "M", "麻"), - (0x2FC8, "M", "黃"), - (0x2FC9, "M", "黍"), - (0x2FCA, "M", "黑"), - (0x2FCB, "M", "黹"), - (0x2FCC, "M", "黽"), - (0x2FCD, "M", "鼎"), - (0x2FCE, "M", "鼓"), - (0x2FCF, "M", "鼠"), - (0x2FD0, "M", "鼻"), - (0x2FD1, "M", "齊"), - (0x2FD2, "M", "齒"), - (0x2FD3, "M", "龍"), - (0x2FD4, "M", "龜"), - (0x2FD5, "M", "龠"), - (0x2FD6, "X"), - (0x3000, "3", " "), - (0x3001, "V"), - (0x3002, "M", "."), - (0x3003, "V"), - (0x3036, "M", "〒"), - (0x3037, "V"), - (0x3038, "M", "十"), - (0x3039, "M", "卄"), - (0x303A, "M", "卅"), - (0x303B, "V"), - (0x3040, "X"), - ] - - -def _seg_29() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3041, "V"), - (0x3097, "X"), - (0x3099, "V"), - (0x309B, "3", " ゙"), - (0x309C, "3", " ゚"), - (0x309D, "V"), - (0x309F, "M", "より"), - (0x30A0, "V"), - (0x30FF, "M", "コト"), - (0x3100, "X"), - (0x3105, "V"), - (0x3130, "X"), - (0x3131, "M", "ᄀ"), - (0x3132, "M", "ᄁ"), - (0x3133, "M", "ᆪ"), - (0x3134, "M", "ᄂ"), - (0x3135, "M", "ᆬ"), - (0x3136, "M", "ᆭ"), - (0x3137, "M", "ᄃ"), - (0x3138, "M", "ᄄ"), - (0x3139, "M", "ᄅ"), - (0x313A, "M", "ᆰ"), - (0x313B, "M", "ᆱ"), - (0x313C, "M", "ᆲ"), - (0x313D, "M", "ᆳ"), - (0x313E, "M", "ᆴ"), - (0x313F, "M", "ᆵ"), - (0x3140, "M", "ᄚ"), - (0x3141, "M", "ᄆ"), - (0x3142, "M", "ᄇ"), - (0x3143, "M", "ᄈ"), - (0x3144, "M", "ᄡ"), - (0x3145, "M", "ᄉ"), - (0x3146, "M", "ᄊ"), - (0x3147, "M", "ᄋ"), - (0x3148, "M", "ᄌ"), - (0x3149, "M", "ᄍ"), - (0x314A, "M", "ᄎ"), - (0x314B, "M", "ᄏ"), - (0x314C, "M", "ᄐ"), - (0x314D, "M", "ᄑ"), - (0x314E, "M", "ᄒ"), - (0x314F, "M", "ᅡ"), - (0x3150, "M", "ᅢ"), - (0x3151, "M", "ᅣ"), - (0x3152, "M", "ᅤ"), - (0x3153, "M", "ᅥ"), - (0x3154, "M", "ᅦ"), - (0x3155, "M", "ᅧ"), - (0x3156, "M", "ᅨ"), - (0x3157, "M", "ᅩ"), - (0x3158, "M", "ᅪ"), - (0x3159, "M", "ᅫ"), - (0x315A, "M", "ᅬ"), - (0x315B, "M", "ᅭ"), - (0x315C, "M", "ᅮ"), - (0x315D, "M", "ᅯ"), - (0x315E, "M", "ᅰ"), - (0x315F, "M", "ᅱ"), - (0x3160, "M", "ᅲ"), - (0x3161, "M", "ᅳ"), - (0x3162, "M", "ᅴ"), - (0x3163, "M", "ᅵ"), - (0x3164, "X"), - (0x3165, "M", "ᄔ"), - (0x3166, "M", "ᄕ"), - (0x3167, "M", "ᇇ"), - (0x3168, "M", "ᇈ"), - (0x3169, "M", "ᇌ"), - (0x316A, "M", "ᇎ"), - (0x316B, "M", "ᇓ"), - (0x316C, "M", "ᇗ"), - (0x316D, "M", "ᇙ"), - (0x316E, "M", "ᄜ"), - (0x316F, "M", "ᇝ"), - (0x3170, "M", "ᇟ"), - (0x3171, "M", "ᄝ"), - (0x3172, "M", "ᄞ"), - (0x3173, "M", "ᄠ"), - (0x3174, "M", "ᄢ"), - (0x3175, "M", "ᄣ"), - (0x3176, "M", "ᄧ"), - (0x3177, "M", "ᄩ"), - (0x3178, "M", "ᄫ"), - (0x3179, "M", "ᄬ"), - (0x317A, "M", "ᄭ"), - (0x317B, "M", "ᄮ"), - (0x317C, "M", "ᄯ"), - (0x317D, "M", "ᄲ"), - (0x317E, "M", "ᄶ"), - (0x317F, "M", "ᅀ"), - (0x3180, "M", "ᅇ"), - (0x3181, "M", "ᅌ"), - (0x3182, "M", "ᇱ"), - (0x3183, "M", "ᇲ"), - (0x3184, "M", "ᅗ"), - (0x3185, "M", "ᅘ"), - (0x3186, "M", "ᅙ"), - (0x3187, "M", "ᆄ"), - (0x3188, "M", "ᆅ"), - ] - - -def _seg_30() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3189, "M", "ᆈ"), - (0x318A, "M", "ᆑ"), - (0x318B, "M", "ᆒ"), - (0x318C, "M", "ᆔ"), - (0x318D, "M", "ᆞ"), - (0x318E, "M", "ᆡ"), - (0x318F, "X"), - (0x3190, "V"), - (0x3192, "M", "一"), - (0x3193, "M", "二"), - (0x3194, "M", "三"), - (0x3195, "M", "四"), - (0x3196, "M", "上"), - (0x3197, "M", "中"), - (0x3198, "M", "下"), - (0x3199, "M", "甲"), - (0x319A, "M", "乙"), - (0x319B, "M", "丙"), - (0x319C, "M", "丁"), - (0x319D, "M", "天"), - (0x319E, "M", "地"), - (0x319F, "M", "人"), - (0x31A0, "V"), - (0x31E4, "X"), - (0x31F0, "V"), - (0x3200, "3", "(ᄀ)"), - (0x3201, "3", "(ᄂ)"), - (0x3202, "3", "(ᄃ)"), - (0x3203, "3", "(ᄅ)"), - (0x3204, "3", "(ᄆ)"), - (0x3205, "3", "(ᄇ)"), - (0x3206, "3", "(ᄉ)"), - (0x3207, "3", "(ᄋ)"), - (0x3208, "3", "(ᄌ)"), - (0x3209, "3", "(ᄎ)"), - (0x320A, "3", "(ᄏ)"), - (0x320B, "3", "(ᄐ)"), - (0x320C, "3", "(ᄑ)"), - (0x320D, "3", "(ᄒ)"), - (0x320E, "3", "(가)"), - (0x320F, "3", "(나)"), - (0x3210, "3", "(다)"), - (0x3211, "3", "(라)"), - (0x3212, "3", "(마)"), - (0x3213, "3", "(바)"), - (0x3214, "3", "(사)"), - (0x3215, "3", "(아)"), - (0x3216, "3", "(자)"), - (0x3217, "3", "(차)"), - (0x3218, "3", "(카)"), - (0x3219, "3", "(타)"), - (0x321A, "3", "(파)"), - (0x321B, "3", "(하)"), - (0x321C, "3", "(주)"), - (0x321D, "3", "(오전)"), - (0x321E, "3", "(오후)"), - (0x321F, "X"), - (0x3220, "3", "(一)"), - (0x3221, "3", "(二)"), - (0x3222, "3", "(三)"), - (0x3223, "3", "(四)"), - (0x3224, "3", "(五)"), - (0x3225, "3", "(六)"), - (0x3226, "3", "(七)"), - (0x3227, "3", "(八)"), - (0x3228, "3", "(九)"), - (0x3229, "3", "(十)"), - (0x322A, "3", "(月)"), - (0x322B, "3", "(火)"), - (0x322C, "3", "(水)"), - (0x322D, "3", "(木)"), - (0x322E, "3", "(金)"), - (0x322F, "3", "(土)"), - (0x3230, "3", "(日)"), - (0x3231, "3", "(株)"), - (0x3232, "3", "(有)"), - (0x3233, "3", "(社)"), - (0x3234, "3", "(名)"), - (0x3235, "3", "(特)"), - (0x3236, "3", "(財)"), - (0x3237, "3", "(祝)"), - (0x3238, "3", "(労)"), - (0x3239, "3", "(代)"), - (0x323A, "3", "(呼)"), - (0x323B, "3", "(学)"), - (0x323C, "3", "(監)"), - (0x323D, "3", "(企)"), - (0x323E, "3", "(資)"), - (0x323F, "3", "(協)"), - (0x3240, "3", "(祭)"), - (0x3241, "3", "(休)"), - (0x3242, "3", "(自)"), - (0x3243, "3", "(至)"), - (0x3244, "M", "問"), - (0x3245, "M", "幼"), - (0x3246, "M", "文"), - (0x3247, "M", "箏"), - (0x3248, "V"), - (0x3250, "M", "pte"), - (0x3251, "M", "21"), - ] - - -def _seg_31() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x3252, "M", "22"), - (0x3253, "M", "23"), - (0x3254, "M", "24"), - (0x3255, "M", "25"), - (0x3256, "M", "26"), - (0x3257, "M", "27"), - (0x3258, "M", "28"), - (0x3259, "M", "29"), - (0x325A, "M", "30"), - (0x325B, "M", "31"), - (0x325C, "M", "32"), - (0x325D, "M", "33"), - (0x325E, "M", "34"), - (0x325F, "M", "35"), - (0x3260, "M", "ᄀ"), - (0x3261, "M", "ᄂ"), - (0x3262, "M", "ᄃ"), - (0x3263, "M", "ᄅ"), - (0x3264, "M", "ᄆ"), - (0x3265, "M", "ᄇ"), - (0x3266, "M", "ᄉ"), - (0x3267, "M", "ᄋ"), - (0x3268, "M", "ᄌ"), - (0x3269, "M", "ᄎ"), - (0x326A, "M", "ᄏ"), - (0x326B, "M", "ᄐ"), - (0x326C, "M", "ᄑ"), - (0x326D, "M", "ᄒ"), - (0x326E, "M", "가"), - (0x326F, "M", "나"), - (0x3270, "M", "다"), - (0x3271, "M", "라"), - (0x3272, "M", "마"), - (0x3273, "M", "바"), - (0x3274, "M", "사"), - (0x3275, "M", "아"), - (0x3276, "M", "자"), - (0x3277, "M", "차"), - (0x3278, "M", "카"), - (0x3279, "M", "타"), - (0x327A, "M", "파"), - (0x327B, "M", "하"), - (0x327C, "M", "참고"), - (0x327D, "M", "주의"), - (0x327E, "M", "우"), - (0x327F, "V"), - (0x3280, "M", "一"), - (0x3281, "M", "二"), - (0x3282, "M", "三"), - (0x3283, "M", "四"), - (0x3284, "M", "五"), - (0x3285, "M", "六"), - (0x3286, "M", "七"), - (0x3287, "M", "八"), - (0x3288, "M", "九"), - (0x3289, "M", "十"), - (0x328A, "M", "月"), - (0x328B, "M", "火"), - (0x328C, "M", "水"), - (0x328D, "M", "木"), - (0x328E, "M", "金"), - (0x328F, "M", "土"), - (0x3290, "M", "日"), - (0x3291, "M", "株"), - (0x3292, "M", "有"), - (0x3293, "M", "社"), - (0x3294, "M", "名"), - (0x3295, "M", "特"), - (0x3296, "M", "財"), - (0x3297, "M", "祝"), - (0x3298, "M", "労"), - (0x3299, "M", "秘"), - (0x329A, "M", "男"), - (0x329B, "M", "女"), - (0x329C, "M", "適"), - (0x329D, "M", "優"), - (0x329E, "M", "印"), - (0x329F, "M", "注"), - (0x32A0, "M", "項"), - (0x32A1, "M", "休"), - (0x32A2, "M", "写"), - (0x32A3, "M", "正"), - (0x32A4, "M", "上"), - (0x32A5, "M", "中"), - (0x32A6, "M", "下"), - (0x32A7, "M", "左"), - (0x32A8, "M", "右"), - (0x32A9, "M", "医"), - (0x32AA, "M", "宗"), - (0x32AB, "M", "学"), - (0x32AC, "M", "監"), - (0x32AD, "M", "企"), - (0x32AE, "M", "資"), - (0x32AF, "M", "協"), - (0x32B0, "M", "夜"), - (0x32B1, "M", "36"), - (0x32B2, "M", "37"), - (0x32B3, "M", "38"), - (0x32B4, "M", "39"), - (0x32B5, "M", "40"), - ] - - -def _seg_32() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x32B6, "M", "41"), - (0x32B7, "M", "42"), - (0x32B8, "M", "43"), - (0x32B9, "M", "44"), - (0x32BA, "M", "45"), - (0x32BB, "M", "46"), - (0x32BC, "M", "47"), - (0x32BD, "M", "48"), - (0x32BE, "M", "49"), - (0x32BF, "M", "50"), - (0x32C0, "M", "1月"), - (0x32C1, "M", "2月"), - (0x32C2, "M", "3月"), - (0x32C3, "M", "4月"), - (0x32C4, "M", "5月"), - (0x32C5, "M", "6月"), - (0x32C6, "M", "7月"), - (0x32C7, "M", "8月"), - (0x32C8, "M", "9月"), - (0x32C9, "M", "10月"), - (0x32CA, "M", "11月"), - (0x32CB, "M", "12月"), - (0x32CC, "M", "hg"), - (0x32CD, "M", "erg"), - (0x32CE, "M", "ev"), - (0x32CF, "M", "ltd"), - (0x32D0, "M", "ア"), - (0x32D1, "M", "イ"), - (0x32D2, "M", "ウ"), - (0x32D3, "M", "エ"), - (0x32D4, "M", "オ"), - (0x32D5, "M", "カ"), - (0x32D6, "M", "キ"), - (0x32D7, "M", "ク"), - (0x32D8, "M", "ケ"), - (0x32D9, "M", "コ"), - (0x32DA, "M", "サ"), - (0x32DB, "M", "シ"), - (0x32DC, "M", "ス"), - (0x32DD, "M", "セ"), - (0x32DE, "M", "ソ"), - (0x32DF, "M", "タ"), - (0x32E0, "M", "チ"), - (0x32E1, "M", "ツ"), - (0x32E2, "M", "テ"), - (0x32E3, "M", "ト"), - (0x32E4, "M", "ナ"), - (0x32E5, "M", "ニ"), - (0x32E6, "M", "ヌ"), - (0x32E7, "M", "ネ"), - (0x32E8, "M", "ノ"), - (0x32E9, "M", "ハ"), - (0x32EA, "M", "ヒ"), - (0x32EB, "M", "フ"), - (0x32EC, "M", "ヘ"), - (0x32ED, "M", "ホ"), - (0x32EE, "M", "マ"), - (0x32EF, "M", "ミ"), - (0x32F0, "M", "ム"), - (0x32F1, "M", "メ"), - (0x32F2, "M", "モ"), - (0x32F3, "M", "ヤ"), - (0x32F4, "M", "ユ"), - (0x32F5, "M", "ヨ"), - (0x32F6, "M", "ラ"), - (0x32F7, "M", "リ"), - (0x32F8, "M", "ル"), - (0x32F9, "M", "レ"), - (0x32FA, "M", "ロ"), - (0x32FB, "M", "ワ"), - (0x32FC, "M", "ヰ"), - (0x32FD, "M", "ヱ"), - (0x32FE, "M", "ヲ"), - (0x32FF, "M", "令和"), - (0x3300, "M", "アパート"), - (0x3301, "M", "アルファ"), - (0x3302, "M", "アンペア"), - (0x3303, "M", "アール"), - (0x3304, "M", "イニング"), - (0x3305, "M", "インチ"), - (0x3306, "M", "ウォン"), - (0x3307, "M", "エスクード"), - (0x3308, "M", "エーカー"), - (0x3309, "M", "オンス"), - (0x330A, "M", "オーム"), - (0x330B, "M", "カイリ"), - (0x330C, "M", "カラット"), - (0x330D, "M", "カロリー"), - (0x330E, "M", "ガロン"), - (0x330F, "M", "ガンマ"), - (0x3310, "M", "ギガ"), - (0x3311, "M", "ギニー"), - (0x3312, "M", "キュリー"), - (0x3313, "M", "ギルダー"), - (0x3314, "M", "キロ"), - (0x3315, "M", "キログラム"), - (0x3316, "M", "キロメートル"), - (0x3317, "M", "キロワット"), - (0x3318, "M", "グラム"), - (0x3319, "M", "グラムトン"), - ] - - -def _seg_33() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x331A, "M", "クルゼイロ"), - (0x331B, "M", "クローネ"), - (0x331C, "M", "ケース"), - (0x331D, "M", "コルナ"), - (0x331E, "M", "コーポ"), - (0x331F, "M", "サイクル"), - (0x3320, "M", "サンチーム"), - (0x3321, "M", "シリング"), - (0x3322, "M", "センチ"), - (0x3323, "M", "セント"), - (0x3324, "M", "ダース"), - (0x3325, "M", "デシ"), - (0x3326, "M", "ドル"), - (0x3327, "M", "トン"), - (0x3328, "M", "ナノ"), - (0x3329, "M", "ノット"), - (0x332A, "M", "ハイツ"), - (0x332B, "M", "パーセント"), - (0x332C, "M", "パーツ"), - (0x332D, "M", "バーレル"), - (0x332E, "M", "ピアストル"), - (0x332F, "M", "ピクル"), - (0x3330, "M", "ピコ"), - (0x3331, "M", "ビル"), - (0x3332, "M", "ファラッド"), - (0x3333, "M", "フィート"), - (0x3334, "M", "ブッシェル"), - (0x3335, "M", "フラン"), - (0x3336, "M", "ヘクタール"), - (0x3337, "M", "ペソ"), - (0x3338, "M", "ペニヒ"), - (0x3339, "M", "ヘルツ"), - (0x333A, "M", "ペンス"), - (0x333B, "M", "ページ"), - (0x333C, "M", "ベータ"), - (0x333D, "M", "ポイント"), - (0x333E, "M", "ボルト"), - (0x333F, "M", "ホン"), - (0x3340, "M", "ポンド"), - (0x3341, "M", "ホール"), - (0x3342, "M", "ホーン"), - (0x3343, "M", "マイクロ"), - (0x3344, "M", "マイル"), - (0x3345, "M", "マッハ"), - (0x3346, "M", "マルク"), - (0x3347, "M", "マンション"), - (0x3348, "M", "ミクロン"), - (0x3349, "M", "ミリ"), - (0x334A, "M", "ミリバール"), - (0x334B, "M", "メガ"), - (0x334C, "M", "メガトン"), - (0x334D, "M", "メートル"), - (0x334E, "M", "ヤード"), - (0x334F, "M", "ヤール"), - (0x3350, "M", "ユアン"), - (0x3351, "M", "リットル"), - (0x3352, "M", "リラ"), - (0x3353, "M", "ルピー"), - (0x3354, "M", "ルーブル"), - (0x3355, "M", "レム"), - (0x3356, "M", "レントゲン"), - (0x3357, "M", "ワット"), - (0x3358, "M", "0点"), - (0x3359, "M", "1点"), - (0x335A, "M", "2点"), - (0x335B, "M", "3点"), - (0x335C, "M", "4点"), - (0x335D, "M", "5点"), - (0x335E, "M", "6点"), - (0x335F, "M", "7点"), - (0x3360, "M", "8点"), - (0x3361, "M", "9点"), - (0x3362, "M", "10点"), - (0x3363, "M", "11点"), - (0x3364, "M", "12点"), - (0x3365, "M", "13点"), - (0x3366, "M", "14点"), - (0x3367, "M", "15点"), - (0x3368, "M", "16点"), - (0x3369, "M", "17点"), - (0x336A, "M", "18点"), - (0x336B, "M", "19点"), - (0x336C, "M", "20点"), - (0x336D, "M", "21点"), - (0x336E, "M", "22点"), - (0x336F, "M", "23点"), - (0x3370, "M", "24点"), - (0x3371, "M", "hpa"), - (0x3372, "M", "da"), - (0x3373, "M", "au"), - (0x3374, "M", "bar"), - (0x3375, "M", "ov"), - (0x3376, "M", "pc"), - (0x3377, "M", "dm"), - (0x3378, "M", "dm2"), - (0x3379, "M", "dm3"), - (0x337A, "M", "iu"), - (0x337B, "M", "平成"), - (0x337C, "M", "昭和"), - (0x337D, "M", "大正"), - ] - - -def _seg_34() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x337E, "M", "明治"), - (0x337F, "M", "株式会社"), - (0x3380, "M", "pa"), - (0x3381, "M", "na"), - (0x3382, "M", "μa"), - (0x3383, "M", "ma"), - (0x3384, "M", "ka"), - (0x3385, "M", "kb"), - (0x3386, "M", "mb"), - (0x3387, "M", "gb"), - (0x3388, "M", "cal"), - (0x3389, "M", "kcal"), - (0x338A, "M", "pf"), - (0x338B, "M", "nf"), - (0x338C, "M", "μf"), - (0x338D, "M", "μg"), - (0x338E, "M", "mg"), - (0x338F, "M", "kg"), - (0x3390, "M", "hz"), - (0x3391, "M", "khz"), - (0x3392, "M", "mhz"), - (0x3393, "M", "ghz"), - (0x3394, "M", "thz"), - (0x3395, "M", "μl"), - (0x3396, "M", "ml"), - (0x3397, "M", "dl"), - (0x3398, "M", "kl"), - (0x3399, "M", "fm"), - (0x339A, "M", "nm"), - (0x339B, "M", "μm"), - (0x339C, "M", "mm"), - (0x339D, "M", "cm"), - (0x339E, "M", "km"), - (0x339F, "M", "mm2"), - (0x33A0, "M", "cm2"), - (0x33A1, "M", "m2"), - (0x33A2, "M", "km2"), - (0x33A3, "M", "mm3"), - (0x33A4, "M", "cm3"), - (0x33A5, "M", "m3"), - (0x33A6, "M", "km3"), - (0x33A7, "M", "m∕s"), - (0x33A8, "M", "m∕s2"), - (0x33A9, "M", "pa"), - (0x33AA, "M", "kpa"), - (0x33AB, "M", "mpa"), - (0x33AC, "M", "gpa"), - (0x33AD, "M", "rad"), - (0x33AE, "M", "rad∕s"), - (0x33AF, "M", "rad∕s2"), - (0x33B0, "M", "ps"), - (0x33B1, "M", "ns"), - (0x33B2, "M", "μs"), - (0x33B3, "M", "ms"), - (0x33B4, "M", "pv"), - (0x33B5, "M", "nv"), - (0x33B6, "M", "μv"), - (0x33B7, "M", "mv"), - (0x33B8, "M", "kv"), - (0x33B9, "M", "mv"), - (0x33BA, "M", "pw"), - (0x33BB, "M", "nw"), - (0x33BC, "M", "μw"), - (0x33BD, "M", "mw"), - (0x33BE, "M", "kw"), - (0x33BF, "M", "mw"), - (0x33C0, "M", "kω"), - (0x33C1, "M", "mω"), - (0x33C2, "X"), - (0x33C3, "M", "bq"), - (0x33C4, "M", "cc"), - (0x33C5, "M", "cd"), - (0x33C6, "M", "c∕kg"), - (0x33C7, "X"), - (0x33C8, "M", "db"), - (0x33C9, "M", "gy"), - (0x33CA, "M", "ha"), - (0x33CB, "M", "hp"), - (0x33CC, "M", "in"), - (0x33CD, "M", "kk"), - (0x33CE, "M", "km"), - (0x33CF, "M", "kt"), - (0x33D0, "M", "lm"), - (0x33D1, "M", "ln"), - (0x33D2, "M", "log"), - (0x33D3, "M", "lx"), - (0x33D4, "M", "mb"), - (0x33D5, "M", "mil"), - (0x33D6, "M", "mol"), - (0x33D7, "M", "ph"), - (0x33D8, "X"), - (0x33D9, "M", "ppm"), - (0x33DA, "M", "pr"), - (0x33DB, "M", "sr"), - (0x33DC, "M", "sv"), - (0x33DD, "M", "wb"), - (0x33DE, "M", "v∕m"), - (0x33DF, "M", "a∕m"), - (0x33E0, "M", "1日"), - (0x33E1, "M", "2日"), - ] - - -def _seg_35() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x33E2, "M", "3日"), - (0x33E3, "M", "4日"), - (0x33E4, "M", "5日"), - (0x33E5, "M", "6日"), - (0x33E6, "M", "7日"), - (0x33E7, "M", "8日"), - (0x33E8, "M", "9日"), - (0x33E9, "M", "10日"), - (0x33EA, "M", "11日"), - (0x33EB, "M", "12日"), - (0x33EC, "M", "13日"), - (0x33ED, "M", "14日"), - (0x33EE, "M", "15日"), - (0x33EF, "M", "16日"), - (0x33F0, "M", "17日"), - (0x33F1, "M", "18日"), - (0x33F2, "M", "19日"), - (0x33F3, "M", "20日"), - (0x33F4, "M", "21日"), - (0x33F5, "M", "22日"), - (0x33F6, "M", "23日"), - (0x33F7, "M", "24日"), - (0x33F8, "M", "25日"), - (0x33F9, "M", "26日"), - (0x33FA, "M", "27日"), - (0x33FB, "M", "28日"), - (0x33FC, "M", "29日"), - (0x33FD, "M", "30日"), - (0x33FE, "M", "31日"), - (0x33FF, "M", "gal"), - (0x3400, "V"), - (0xA48D, "X"), - (0xA490, "V"), - (0xA4C7, "X"), - (0xA4D0, "V"), - (0xA62C, "X"), - (0xA640, "M", "ꙁ"), - (0xA641, "V"), - (0xA642, "M", "ꙃ"), - (0xA643, "V"), - (0xA644, "M", "ꙅ"), - (0xA645, "V"), - (0xA646, "M", "ꙇ"), - (0xA647, "V"), - (0xA648, "M", "ꙉ"), - (0xA649, "V"), - (0xA64A, "M", "ꙋ"), - (0xA64B, "V"), - (0xA64C, "M", "ꙍ"), - (0xA64D, "V"), - (0xA64E, "M", "ꙏ"), - (0xA64F, "V"), - (0xA650, "M", "ꙑ"), - (0xA651, "V"), - (0xA652, "M", "ꙓ"), - (0xA653, "V"), - (0xA654, "M", "ꙕ"), - (0xA655, "V"), - (0xA656, "M", "ꙗ"), - (0xA657, "V"), - (0xA658, "M", "ꙙ"), - (0xA659, "V"), - (0xA65A, "M", "ꙛ"), - (0xA65B, "V"), - (0xA65C, "M", "ꙝ"), - (0xA65D, "V"), - (0xA65E, "M", "ꙟ"), - (0xA65F, "V"), - (0xA660, "M", "ꙡ"), - (0xA661, "V"), - (0xA662, "M", "ꙣ"), - (0xA663, "V"), - (0xA664, "M", "ꙥ"), - (0xA665, "V"), - (0xA666, "M", "ꙧ"), - (0xA667, "V"), - (0xA668, "M", "ꙩ"), - (0xA669, "V"), - (0xA66A, "M", "ꙫ"), - (0xA66B, "V"), - (0xA66C, "M", "ꙭ"), - (0xA66D, "V"), - (0xA680, "M", "ꚁ"), - (0xA681, "V"), - (0xA682, "M", "ꚃ"), - (0xA683, "V"), - (0xA684, "M", "ꚅ"), - (0xA685, "V"), - (0xA686, "M", "ꚇ"), - (0xA687, "V"), - (0xA688, "M", "ꚉ"), - (0xA689, "V"), - (0xA68A, "M", "ꚋ"), - (0xA68B, "V"), - (0xA68C, "M", "ꚍ"), - (0xA68D, "V"), - (0xA68E, "M", "ꚏ"), - (0xA68F, "V"), - (0xA690, "M", "ꚑ"), - (0xA691, "V"), - ] - - -def _seg_36() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA692, "M", "ꚓ"), - (0xA693, "V"), - (0xA694, "M", "ꚕ"), - (0xA695, "V"), - (0xA696, "M", "ꚗ"), - (0xA697, "V"), - (0xA698, "M", "ꚙ"), - (0xA699, "V"), - (0xA69A, "M", "ꚛ"), - (0xA69B, "V"), - (0xA69C, "M", "ъ"), - (0xA69D, "M", "ь"), - (0xA69E, "V"), - (0xA6F8, "X"), - (0xA700, "V"), - (0xA722, "M", "ꜣ"), - (0xA723, "V"), - (0xA724, "M", "ꜥ"), - (0xA725, "V"), - (0xA726, "M", "ꜧ"), - (0xA727, "V"), - (0xA728, "M", "ꜩ"), - (0xA729, "V"), - (0xA72A, "M", "ꜫ"), - (0xA72B, "V"), - (0xA72C, "M", "ꜭ"), - (0xA72D, "V"), - (0xA72E, "M", "ꜯ"), - (0xA72F, "V"), - (0xA732, "M", "ꜳ"), - (0xA733, "V"), - (0xA734, "M", "ꜵ"), - (0xA735, "V"), - (0xA736, "M", "ꜷ"), - (0xA737, "V"), - (0xA738, "M", "ꜹ"), - (0xA739, "V"), - (0xA73A, "M", "ꜻ"), - (0xA73B, "V"), - (0xA73C, "M", "ꜽ"), - (0xA73D, "V"), - (0xA73E, "M", "ꜿ"), - (0xA73F, "V"), - (0xA740, "M", "ꝁ"), - (0xA741, "V"), - (0xA742, "M", "ꝃ"), - (0xA743, "V"), - (0xA744, "M", "ꝅ"), - (0xA745, "V"), - (0xA746, "M", "ꝇ"), - (0xA747, "V"), - (0xA748, "M", "ꝉ"), - (0xA749, "V"), - (0xA74A, "M", "ꝋ"), - (0xA74B, "V"), - (0xA74C, "M", "ꝍ"), - (0xA74D, "V"), - (0xA74E, "M", "ꝏ"), - (0xA74F, "V"), - (0xA750, "M", "ꝑ"), - (0xA751, "V"), - (0xA752, "M", "ꝓ"), - (0xA753, "V"), - (0xA754, "M", "ꝕ"), - (0xA755, "V"), - (0xA756, "M", "ꝗ"), - (0xA757, "V"), - (0xA758, "M", "ꝙ"), - (0xA759, "V"), - (0xA75A, "M", "ꝛ"), - (0xA75B, "V"), - (0xA75C, "M", "ꝝ"), - (0xA75D, "V"), - (0xA75E, "M", "ꝟ"), - (0xA75F, "V"), - (0xA760, "M", "ꝡ"), - (0xA761, "V"), - (0xA762, "M", "ꝣ"), - (0xA763, "V"), - (0xA764, "M", "ꝥ"), - (0xA765, "V"), - (0xA766, "M", "ꝧ"), - (0xA767, "V"), - (0xA768, "M", "ꝩ"), - (0xA769, "V"), - (0xA76A, "M", "ꝫ"), - (0xA76B, "V"), - (0xA76C, "M", "ꝭ"), - (0xA76D, "V"), - (0xA76E, "M", "ꝯ"), - (0xA76F, "V"), - (0xA770, "M", "ꝯ"), - (0xA771, "V"), - (0xA779, "M", "ꝺ"), - (0xA77A, "V"), - (0xA77B, "M", "ꝼ"), - (0xA77C, "V"), - (0xA77D, "M", "ᵹ"), - (0xA77E, "M", "ꝿ"), - (0xA77F, "V"), - ] - - -def _seg_37() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA780, "M", "ꞁ"), - (0xA781, "V"), - (0xA782, "M", "ꞃ"), - (0xA783, "V"), - (0xA784, "M", "ꞅ"), - (0xA785, "V"), - (0xA786, "M", "ꞇ"), - (0xA787, "V"), - (0xA78B, "M", "ꞌ"), - (0xA78C, "V"), - (0xA78D, "M", "ɥ"), - (0xA78E, "V"), - (0xA790, "M", "ꞑ"), - (0xA791, "V"), - (0xA792, "M", "ꞓ"), - (0xA793, "V"), - (0xA796, "M", "ꞗ"), - (0xA797, "V"), - (0xA798, "M", "ꞙ"), - (0xA799, "V"), - (0xA79A, "M", "ꞛ"), - (0xA79B, "V"), - (0xA79C, "M", "ꞝ"), - (0xA79D, "V"), - (0xA79E, "M", "ꞟ"), - (0xA79F, "V"), - (0xA7A0, "M", "ꞡ"), - (0xA7A1, "V"), - (0xA7A2, "M", "ꞣ"), - (0xA7A3, "V"), - (0xA7A4, "M", "ꞥ"), - (0xA7A5, "V"), - (0xA7A6, "M", "ꞧ"), - (0xA7A7, "V"), - (0xA7A8, "M", "ꞩ"), - (0xA7A9, "V"), - (0xA7AA, "M", "ɦ"), - (0xA7AB, "M", "ɜ"), - (0xA7AC, "M", "ɡ"), - (0xA7AD, "M", "ɬ"), - (0xA7AE, "M", "ɪ"), - (0xA7AF, "V"), - (0xA7B0, "M", "ʞ"), - (0xA7B1, "M", "ʇ"), - (0xA7B2, "M", "ʝ"), - (0xA7B3, "M", "ꭓ"), - (0xA7B4, "M", "ꞵ"), - (0xA7B5, "V"), - (0xA7B6, "M", "ꞷ"), - (0xA7B7, "V"), - (0xA7B8, "M", "ꞹ"), - (0xA7B9, "V"), - (0xA7BA, "M", "ꞻ"), - (0xA7BB, "V"), - (0xA7BC, "M", "ꞽ"), - (0xA7BD, "V"), - (0xA7BE, "M", "ꞿ"), - (0xA7BF, "V"), - (0xA7C0, "M", "ꟁ"), - (0xA7C1, "V"), - (0xA7C2, "M", "ꟃ"), - (0xA7C3, "V"), - (0xA7C4, "M", "ꞔ"), - (0xA7C5, "M", "ʂ"), - (0xA7C6, "M", "ᶎ"), - (0xA7C7, "M", "ꟈ"), - (0xA7C8, "V"), - (0xA7C9, "M", "ꟊ"), - (0xA7CA, "V"), - (0xA7CB, "X"), - (0xA7D0, "M", "ꟑ"), - (0xA7D1, "V"), - (0xA7D2, "X"), - (0xA7D3, "V"), - (0xA7D4, "X"), - (0xA7D5, "V"), - (0xA7D6, "M", "ꟗ"), - (0xA7D7, "V"), - (0xA7D8, "M", "ꟙ"), - (0xA7D9, "V"), - (0xA7DA, "X"), - (0xA7F2, "M", "c"), - (0xA7F3, "M", "f"), - (0xA7F4, "M", "q"), - (0xA7F5, "M", "ꟶ"), - (0xA7F6, "V"), - (0xA7F8, "M", "ħ"), - (0xA7F9, "M", "œ"), - (0xA7FA, "V"), - (0xA82D, "X"), - (0xA830, "V"), - (0xA83A, "X"), - (0xA840, "V"), - (0xA878, "X"), - (0xA880, "V"), - (0xA8C6, "X"), - (0xA8CE, "V"), - (0xA8DA, "X"), - (0xA8E0, "V"), - (0xA954, "X"), - ] - - -def _seg_38() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xA95F, "V"), - (0xA97D, "X"), - (0xA980, "V"), - (0xA9CE, "X"), - (0xA9CF, "V"), - (0xA9DA, "X"), - (0xA9DE, "V"), - (0xA9FF, "X"), - (0xAA00, "V"), - (0xAA37, "X"), - (0xAA40, "V"), - (0xAA4E, "X"), - (0xAA50, "V"), - (0xAA5A, "X"), - (0xAA5C, "V"), - (0xAAC3, "X"), - (0xAADB, "V"), - (0xAAF7, "X"), - (0xAB01, "V"), - (0xAB07, "X"), - (0xAB09, "V"), - (0xAB0F, "X"), - (0xAB11, "V"), - (0xAB17, "X"), - (0xAB20, "V"), - (0xAB27, "X"), - (0xAB28, "V"), - (0xAB2F, "X"), - (0xAB30, "V"), - (0xAB5C, "M", "ꜧ"), - (0xAB5D, "M", "ꬷ"), - (0xAB5E, "M", "ɫ"), - (0xAB5F, "M", "ꭒ"), - (0xAB60, "V"), - (0xAB69, "M", "ʍ"), - (0xAB6A, "V"), - (0xAB6C, "X"), - (0xAB70, "M", "Ꭰ"), - (0xAB71, "M", "Ꭱ"), - (0xAB72, "M", "Ꭲ"), - (0xAB73, "M", "Ꭳ"), - (0xAB74, "M", "Ꭴ"), - (0xAB75, "M", "Ꭵ"), - (0xAB76, "M", "Ꭶ"), - (0xAB77, "M", "Ꭷ"), - (0xAB78, "M", "Ꭸ"), - (0xAB79, "M", "Ꭹ"), - (0xAB7A, "M", "Ꭺ"), - (0xAB7B, "M", "Ꭻ"), - (0xAB7C, "M", "Ꭼ"), - (0xAB7D, "M", "Ꭽ"), - (0xAB7E, "M", "Ꭾ"), - (0xAB7F, "M", "Ꭿ"), - (0xAB80, "M", "Ꮀ"), - (0xAB81, "M", "Ꮁ"), - (0xAB82, "M", "Ꮂ"), - (0xAB83, "M", "Ꮃ"), - (0xAB84, "M", "Ꮄ"), - (0xAB85, "M", "Ꮅ"), - (0xAB86, "M", "Ꮆ"), - (0xAB87, "M", "Ꮇ"), - (0xAB88, "M", "Ꮈ"), - (0xAB89, "M", "Ꮉ"), - (0xAB8A, "M", "Ꮊ"), - (0xAB8B, "M", "Ꮋ"), - (0xAB8C, "M", "Ꮌ"), - (0xAB8D, "M", "Ꮍ"), - (0xAB8E, "M", "Ꮎ"), - (0xAB8F, "M", "Ꮏ"), - (0xAB90, "M", "Ꮐ"), - (0xAB91, "M", "Ꮑ"), - (0xAB92, "M", "Ꮒ"), - (0xAB93, "M", "Ꮓ"), - (0xAB94, "M", "Ꮔ"), - (0xAB95, "M", "Ꮕ"), - (0xAB96, "M", "Ꮖ"), - (0xAB97, "M", "Ꮗ"), - (0xAB98, "M", "Ꮘ"), - (0xAB99, "M", "Ꮙ"), - (0xAB9A, "M", "Ꮚ"), - (0xAB9B, "M", "Ꮛ"), - (0xAB9C, "M", "Ꮜ"), - (0xAB9D, "M", "Ꮝ"), - (0xAB9E, "M", "Ꮞ"), - (0xAB9F, "M", "Ꮟ"), - (0xABA0, "M", "Ꮠ"), - (0xABA1, "M", "Ꮡ"), - (0xABA2, "M", "Ꮢ"), - (0xABA3, "M", "Ꮣ"), - (0xABA4, "M", "Ꮤ"), - (0xABA5, "M", "Ꮥ"), - (0xABA6, "M", "Ꮦ"), - (0xABA7, "M", "Ꮧ"), - (0xABA8, "M", "Ꮨ"), - (0xABA9, "M", "Ꮩ"), - (0xABAA, "M", "Ꮪ"), - (0xABAB, "M", "Ꮫ"), - (0xABAC, "M", "Ꮬ"), - (0xABAD, "M", "Ꮭ"), - (0xABAE, "M", "Ꮮ"), - ] - - -def _seg_39() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xABAF, "M", "Ꮯ"), - (0xABB0, "M", "Ꮰ"), - (0xABB1, "M", "Ꮱ"), - (0xABB2, "M", "Ꮲ"), - (0xABB3, "M", "Ꮳ"), - (0xABB4, "M", "Ꮴ"), - (0xABB5, "M", "Ꮵ"), - (0xABB6, "M", "Ꮶ"), - (0xABB7, "M", "Ꮷ"), - (0xABB8, "M", "Ꮸ"), - (0xABB9, "M", "Ꮹ"), - (0xABBA, "M", "Ꮺ"), - (0xABBB, "M", "Ꮻ"), - (0xABBC, "M", "Ꮼ"), - (0xABBD, "M", "Ꮽ"), - (0xABBE, "M", "Ꮾ"), - (0xABBF, "M", "Ꮿ"), - (0xABC0, "V"), - (0xABEE, "X"), - (0xABF0, "V"), - (0xABFA, "X"), - (0xAC00, "V"), - (0xD7A4, "X"), - (0xD7B0, "V"), - (0xD7C7, "X"), - (0xD7CB, "V"), - (0xD7FC, "X"), - (0xF900, "M", "豈"), - (0xF901, "M", "更"), - (0xF902, "M", "車"), - (0xF903, "M", "賈"), - (0xF904, "M", "滑"), - (0xF905, "M", "串"), - (0xF906, "M", "句"), - (0xF907, "M", "龜"), - (0xF909, "M", "契"), - (0xF90A, "M", "金"), - (0xF90B, "M", "喇"), - (0xF90C, "M", "奈"), - (0xF90D, "M", "懶"), - (0xF90E, "M", "癩"), - (0xF90F, "M", "羅"), - (0xF910, "M", "蘿"), - (0xF911, "M", "螺"), - (0xF912, "M", "裸"), - (0xF913, "M", "邏"), - (0xF914, "M", "樂"), - (0xF915, "M", "洛"), - (0xF916, "M", "烙"), - (0xF917, "M", "珞"), - (0xF918, "M", "落"), - (0xF919, "M", "酪"), - (0xF91A, "M", "駱"), - (0xF91B, "M", "亂"), - (0xF91C, "M", "卵"), - (0xF91D, "M", "欄"), - (0xF91E, "M", "爛"), - (0xF91F, "M", "蘭"), - (0xF920, "M", "鸞"), - (0xF921, "M", "嵐"), - (0xF922, "M", "濫"), - (0xF923, "M", "藍"), - (0xF924, "M", "襤"), - (0xF925, "M", "拉"), - (0xF926, "M", "臘"), - (0xF927, "M", "蠟"), - (0xF928, "M", "廊"), - (0xF929, "M", "朗"), - (0xF92A, "M", "浪"), - (0xF92B, "M", "狼"), - (0xF92C, "M", "郎"), - (0xF92D, "M", "來"), - (0xF92E, "M", "冷"), - (0xF92F, "M", "勞"), - (0xF930, "M", "擄"), - (0xF931, "M", "櫓"), - (0xF932, "M", "爐"), - (0xF933, "M", "盧"), - (0xF934, "M", "老"), - (0xF935, "M", "蘆"), - (0xF936, "M", "虜"), - (0xF937, "M", "路"), - (0xF938, "M", "露"), - (0xF939, "M", "魯"), - (0xF93A, "M", "鷺"), - (0xF93B, "M", "碌"), - (0xF93C, "M", "祿"), - (0xF93D, "M", "綠"), - (0xF93E, "M", "菉"), - (0xF93F, "M", "錄"), - (0xF940, "M", "鹿"), - (0xF941, "M", "論"), - (0xF942, "M", "壟"), - (0xF943, "M", "弄"), - (0xF944, "M", "籠"), - (0xF945, "M", "聾"), - (0xF946, "M", "牢"), - (0xF947, "M", "磊"), - (0xF948, "M", "賂"), - (0xF949, "M", "雷"), - ] - - -def _seg_40() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xF94A, "M", "壘"), - (0xF94B, "M", "屢"), - (0xF94C, "M", "樓"), - (0xF94D, "M", "淚"), - (0xF94E, "M", "漏"), - (0xF94F, "M", "累"), - (0xF950, "M", "縷"), - (0xF951, "M", "陋"), - (0xF952, "M", "勒"), - (0xF953, "M", "肋"), - (0xF954, "M", "凜"), - (0xF955, "M", "凌"), - (0xF956, "M", "稜"), - (0xF957, "M", "綾"), - (0xF958, "M", "菱"), - (0xF959, "M", "陵"), - (0xF95A, "M", "讀"), - (0xF95B, "M", "拏"), - (0xF95C, "M", "樂"), - (0xF95D, "M", "諾"), - (0xF95E, "M", "丹"), - (0xF95F, "M", "寧"), - (0xF960, "M", "怒"), - (0xF961, "M", "率"), - (0xF962, "M", "異"), - (0xF963, "M", "北"), - (0xF964, "M", "磻"), - (0xF965, "M", "便"), - (0xF966, "M", "復"), - (0xF967, "M", "不"), - (0xF968, "M", "泌"), - (0xF969, "M", "數"), - (0xF96A, "M", "索"), - (0xF96B, "M", "參"), - (0xF96C, "M", "塞"), - (0xF96D, "M", "省"), - (0xF96E, "M", "葉"), - (0xF96F, "M", "說"), - (0xF970, "M", "殺"), - (0xF971, "M", "辰"), - (0xF972, "M", "沈"), - (0xF973, "M", "拾"), - (0xF974, "M", "若"), - (0xF975, "M", "掠"), - (0xF976, "M", "略"), - (0xF977, "M", "亮"), - (0xF978, "M", "兩"), - (0xF979, "M", "凉"), - (0xF97A, "M", "梁"), - (0xF97B, "M", "糧"), - (0xF97C, "M", "良"), - (0xF97D, "M", "諒"), - (0xF97E, "M", "量"), - (0xF97F, "M", "勵"), - (0xF980, "M", "呂"), - (0xF981, "M", "女"), - (0xF982, "M", "廬"), - (0xF983, "M", "旅"), - (0xF984, "M", "濾"), - (0xF985, "M", "礪"), - (0xF986, "M", "閭"), - (0xF987, "M", "驪"), - (0xF988, "M", "麗"), - (0xF989, "M", "黎"), - (0xF98A, "M", "力"), - (0xF98B, "M", "曆"), - (0xF98C, "M", "歷"), - (0xF98D, "M", "轢"), - (0xF98E, "M", "年"), - (0xF98F, "M", "憐"), - (0xF990, "M", "戀"), - (0xF991, "M", "撚"), - (0xF992, "M", "漣"), - (0xF993, "M", "煉"), - (0xF994, "M", "璉"), - (0xF995, "M", "秊"), - (0xF996, "M", "練"), - (0xF997, "M", "聯"), - (0xF998, "M", "輦"), - (0xF999, "M", "蓮"), - (0xF99A, "M", "連"), - (0xF99B, "M", "鍊"), - (0xF99C, "M", "列"), - (0xF99D, "M", "劣"), - (0xF99E, "M", "咽"), - (0xF99F, "M", "烈"), - (0xF9A0, "M", "裂"), - (0xF9A1, "M", "說"), - (0xF9A2, "M", "廉"), - (0xF9A3, "M", "念"), - (0xF9A4, "M", "捻"), - (0xF9A5, "M", "殮"), - (0xF9A6, "M", "簾"), - (0xF9A7, "M", "獵"), - (0xF9A8, "M", "令"), - (0xF9A9, "M", "囹"), - (0xF9AA, "M", "寧"), - (0xF9AB, "M", "嶺"), - (0xF9AC, "M", "怜"), - (0xF9AD, "M", "玲"), - ] - - -def _seg_41() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xF9AE, "M", "瑩"), - (0xF9AF, "M", "羚"), - (0xF9B0, "M", "聆"), - (0xF9B1, "M", "鈴"), - (0xF9B2, "M", "零"), - (0xF9B3, "M", "靈"), - (0xF9B4, "M", "領"), - (0xF9B5, "M", "例"), - (0xF9B6, "M", "禮"), - (0xF9B7, "M", "醴"), - (0xF9B8, "M", "隸"), - (0xF9B9, "M", "惡"), - (0xF9BA, "M", "了"), - (0xF9BB, "M", "僚"), - (0xF9BC, "M", "寮"), - (0xF9BD, "M", "尿"), - (0xF9BE, "M", "料"), - (0xF9BF, "M", "樂"), - (0xF9C0, "M", "燎"), - (0xF9C1, "M", "療"), - (0xF9C2, "M", "蓼"), - (0xF9C3, "M", "遼"), - (0xF9C4, "M", "龍"), - (0xF9C5, "M", "暈"), - (0xF9C6, "M", "阮"), - (0xF9C7, "M", "劉"), - (0xF9C8, "M", "杻"), - (0xF9C9, "M", "柳"), - (0xF9CA, "M", "流"), - (0xF9CB, "M", "溜"), - (0xF9CC, "M", "琉"), - (0xF9CD, "M", "留"), - (0xF9CE, "M", "硫"), - (0xF9CF, "M", "紐"), - (0xF9D0, "M", "類"), - (0xF9D1, "M", "六"), - (0xF9D2, "M", "戮"), - (0xF9D3, "M", "陸"), - (0xF9D4, "M", "倫"), - (0xF9D5, "M", "崙"), - (0xF9D6, "M", "淪"), - (0xF9D7, "M", "輪"), - (0xF9D8, "M", "律"), - (0xF9D9, "M", "慄"), - (0xF9DA, "M", "栗"), - (0xF9DB, "M", "率"), - (0xF9DC, "M", "隆"), - (0xF9DD, "M", "利"), - (0xF9DE, "M", "吏"), - (0xF9DF, "M", "履"), - (0xF9E0, "M", "易"), - (0xF9E1, "M", "李"), - (0xF9E2, "M", "梨"), - (0xF9E3, "M", "泥"), - (0xF9E4, "M", "理"), - (0xF9E5, "M", "痢"), - (0xF9E6, "M", "罹"), - (0xF9E7, "M", "裏"), - (0xF9E8, "M", "裡"), - (0xF9E9, "M", "里"), - (0xF9EA, "M", "離"), - (0xF9EB, "M", "匿"), - (0xF9EC, "M", "溺"), - (0xF9ED, "M", "吝"), - (0xF9EE, "M", "燐"), - (0xF9EF, "M", "璘"), - (0xF9F0, "M", "藺"), - (0xF9F1, "M", "隣"), - (0xF9F2, "M", "鱗"), - (0xF9F3, "M", "麟"), - (0xF9F4, "M", "林"), - (0xF9F5, "M", "淋"), - (0xF9F6, "M", "臨"), - (0xF9F7, "M", "立"), - (0xF9F8, "M", "笠"), - (0xF9F9, "M", "粒"), - (0xF9FA, "M", "狀"), - (0xF9FB, "M", "炙"), - (0xF9FC, "M", "識"), - (0xF9FD, "M", "什"), - (0xF9FE, "M", "茶"), - (0xF9FF, "M", "刺"), - (0xFA00, "M", "切"), - (0xFA01, "M", "度"), - (0xFA02, "M", "拓"), - (0xFA03, "M", "糖"), - (0xFA04, "M", "宅"), - (0xFA05, "M", "洞"), - (0xFA06, "M", "暴"), - (0xFA07, "M", "輻"), - (0xFA08, "M", "行"), - (0xFA09, "M", "降"), - (0xFA0A, "M", "見"), - (0xFA0B, "M", "廓"), - (0xFA0C, "M", "兀"), - (0xFA0D, "M", "嗀"), - (0xFA0E, "V"), - (0xFA10, "M", "塚"), - (0xFA11, "V"), - (0xFA12, "M", "晴"), - ] - - -def _seg_42() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFA13, "V"), - (0xFA15, "M", "凞"), - (0xFA16, "M", "猪"), - (0xFA17, "M", "益"), - (0xFA18, "M", "礼"), - (0xFA19, "M", "神"), - (0xFA1A, "M", "祥"), - (0xFA1B, "M", "福"), - (0xFA1C, "M", "靖"), - (0xFA1D, "M", "精"), - (0xFA1E, "M", "羽"), - (0xFA1F, "V"), - (0xFA20, "M", "蘒"), - (0xFA21, "V"), - (0xFA22, "M", "諸"), - (0xFA23, "V"), - (0xFA25, "M", "逸"), - (0xFA26, "M", "都"), - (0xFA27, "V"), - (0xFA2A, "M", "飯"), - (0xFA2B, "M", "飼"), - (0xFA2C, "M", "館"), - (0xFA2D, "M", "鶴"), - (0xFA2E, "M", "郞"), - (0xFA2F, "M", "隷"), - (0xFA30, "M", "侮"), - (0xFA31, "M", "僧"), - (0xFA32, "M", "免"), - (0xFA33, "M", "勉"), - (0xFA34, "M", "勤"), - (0xFA35, "M", "卑"), - (0xFA36, "M", "喝"), - (0xFA37, "M", "嘆"), - (0xFA38, "M", "器"), - (0xFA39, "M", "塀"), - (0xFA3A, "M", "墨"), - (0xFA3B, "M", "層"), - (0xFA3C, "M", "屮"), - (0xFA3D, "M", "悔"), - (0xFA3E, "M", "慨"), - (0xFA3F, "M", "憎"), - (0xFA40, "M", "懲"), - (0xFA41, "M", "敏"), - (0xFA42, "M", "既"), - (0xFA43, "M", "暑"), - (0xFA44, "M", "梅"), - (0xFA45, "M", "海"), - (0xFA46, "M", "渚"), - (0xFA47, "M", "漢"), - (0xFA48, "M", "煮"), - (0xFA49, "M", "爫"), - (0xFA4A, "M", "琢"), - (0xFA4B, "M", "碑"), - (0xFA4C, "M", "社"), - (0xFA4D, "M", "祉"), - (0xFA4E, "M", "祈"), - (0xFA4F, "M", "祐"), - (0xFA50, "M", "祖"), - (0xFA51, "M", "祝"), - (0xFA52, "M", "禍"), - (0xFA53, "M", "禎"), - (0xFA54, "M", "穀"), - (0xFA55, "M", "突"), - (0xFA56, "M", "節"), - (0xFA57, "M", "練"), - (0xFA58, "M", "縉"), - (0xFA59, "M", "繁"), - (0xFA5A, "M", "署"), - (0xFA5B, "M", "者"), - (0xFA5C, "M", "臭"), - (0xFA5D, "M", "艹"), - (0xFA5F, "M", "著"), - (0xFA60, "M", "褐"), - (0xFA61, "M", "視"), - (0xFA62, "M", "謁"), - (0xFA63, "M", "謹"), - (0xFA64, "M", "賓"), - (0xFA65, "M", "贈"), - (0xFA66, "M", "辶"), - (0xFA67, "M", "逸"), - (0xFA68, "M", "難"), - (0xFA69, "M", "響"), - (0xFA6A, "M", "頻"), - (0xFA6B, "M", "恵"), - (0xFA6C, "M", "𤋮"), - (0xFA6D, "M", "舘"), - (0xFA6E, "X"), - (0xFA70, "M", "並"), - (0xFA71, "M", "况"), - (0xFA72, "M", "全"), - (0xFA73, "M", "侀"), - (0xFA74, "M", "充"), - (0xFA75, "M", "冀"), - (0xFA76, "M", "勇"), - (0xFA77, "M", "勺"), - (0xFA78, "M", "喝"), - (0xFA79, "M", "啕"), - (0xFA7A, "M", "喙"), - (0xFA7B, "M", "嗢"), - (0xFA7C, "M", "塚"), - ] - - -def _seg_43() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFA7D, "M", "墳"), - (0xFA7E, "M", "奄"), - (0xFA7F, "M", "奔"), - (0xFA80, "M", "婢"), - (0xFA81, "M", "嬨"), - (0xFA82, "M", "廒"), - (0xFA83, "M", "廙"), - (0xFA84, "M", "彩"), - (0xFA85, "M", "徭"), - (0xFA86, "M", "惘"), - (0xFA87, "M", "慎"), - (0xFA88, "M", "愈"), - (0xFA89, "M", "憎"), - (0xFA8A, "M", "慠"), - (0xFA8B, "M", "懲"), - (0xFA8C, "M", "戴"), - (0xFA8D, "M", "揄"), - (0xFA8E, "M", "搜"), - (0xFA8F, "M", "摒"), - (0xFA90, "M", "敖"), - (0xFA91, "M", "晴"), - (0xFA92, "M", "朗"), - (0xFA93, "M", "望"), - (0xFA94, "M", "杖"), - (0xFA95, "M", "歹"), - (0xFA96, "M", "殺"), - (0xFA97, "M", "流"), - (0xFA98, "M", "滛"), - (0xFA99, "M", "滋"), - (0xFA9A, "M", "漢"), - (0xFA9B, "M", "瀞"), - (0xFA9C, "M", "煮"), - (0xFA9D, "M", "瞧"), - (0xFA9E, "M", "爵"), - (0xFA9F, "M", "犯"), - (0xFAA0, "M", "猪"), - (0xFAA1, "M", "瑱"), - (0xFAA2, "M", "甆"), - (0xFAA3, "M", "画"), - (0xFAA4, "M", "瘝"), - (0xFAA5, "M", "瘟"), - (0xFAA6, "M", "益"), - (0xFAA7, "M", "盛"), - (0xFAA8, "M", "直"), - (0xFAA9, "M", "睊"), - (0xFAAA, "M", "着"), - (0xFAAB, "M", "磌"), - (0xFAAC, "M", "窱"), - (0xFAAD, "M", "節"), - (0xFAAE, "M", "类"), - (0xFAAF, "M", "絛"), - (0xFAB0, "M", "練"), - (0xFAB1, "M", "缾"), - (0xFAB2, "M", "者"), - (0xFAB3, "M", "荒"), - (0xFAB4, "M", "華"), - (0xFAB5, "M", "蝹"), - (0xFAB6, "M", "襁"), - (0xFAB7, "M", "覆"), - (0xFAB8, "M", "視"), - (0xFAB9, "M", "調"), - (0xFABA, "M", "諸"), - (0xFABB, "M", "請"), - (0xFABC, "M", "謁"), - (0xFABD, "M", "諾"), - (0xFABE, "M", "諭"), - (0xFABF, "M", "謹"), - (0xFAC0, "M", "變"), - (0xFAC1, "M", "贈"), - (0xFAC2, "M", "輸"), - (0xFAC3, "M", "遲"), - (0xFAC4, "M", "醙"), - (0xFAC5, "M", "鉶"), - (0xFAC6, "M", "陼"), - (0xFAC7, "M", "難"), - (0xFAC8, "M", "靖"), - (0xFAC9, "M", "韛"), - (0xFACA, "M", "響"), - (0xFACB, "M", "頋"), - (0xFACC, "M", "頻"), - (0xFACD, "M", "鬒"), - (0xFACE, "M", "龜"), - (0xFACF, "M", "𢡊"), - (0xFAD0, "M", "𢡄"), - (0xFAD1, "M", "𣏕"), - (0xFAD2, "M", "㮝"), - (0xFAD3, "M", "䀘"), - (0xFAD4, "M", "䀹"), - (0xFAD5, "M", "𥉉"), - (0xFAD6, "M", "𥳐"), - (0xFAD7, "M", "𧻓"), - (0xFAD8, "M", "齃"), - (0xFAD9, "M", "龎"), - (0xFADA, "X"), - (0xFB00, "M", "ff"), - (0xFB01, "M", "fi"), - (0xFB02, "M", "fl"), - (0xFB03, "M", "ffi"), - (0xFB04, "M", "ffl"), - (0xFB05, "M", "st"), - ] - - -def _seg_44() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFB07, "X"), - (0xFB13, "M", "մն"), - (0xFB14, "M", "մե"), - (0xFB15, "M", "մի"), - (0xFB16, "M", "վն"), - (0xFB17, "M", "մխ"), - (0xFB18, "X"), - (0xFB1D, "M", "יִ"), - (0xFB1E, "V"), - (0xFB1F, "M", "ײַ"), - (0xFB20, "M", "ע"), - (0xFB21, "M", "א"), - (0xFB22, "M", "ד"), - (0xFB23, "M", "ה"), - (0xFB24, "M", "כ"), - (0xFB25, "M", "ל"), - (0xFB26, "M", "ם"), - (0xFB27, "M", "ר"), - (0xFB28, "M", "ת"), - (0xFB29, "3", "+"), - (0xFB2A, "M", "שׁ"), - (0xFB2B, "M", "שׂ"), - (0xFB2C, "M", "שּׁ"), - (0xFB2D, "M", "שּׂ"), - (0xFB2E, "M", "אַ"), - (0xFB2F, "M", "אָ"), - (0xFB30, "M", "אּ"), - (0xFB31, "M", "בּ"), - (0xFB32, "M", "גּ"), - (0xFB33, "M", "דּ"), - (0xFB34, "M", "הּ"), - (0xFB35, "M", "וּ"), - (0xFB36, "M", "זּ"), - (0xFB37, "X"), - (0xFB38, "M", "טּ"), - (0xFB39, "M", "יּ"), - (0xFB3A, "M", "ךּ"), - (0xFB3B, "M", "כּ"), - (0xFB3C, "M", "לּ"), - (0xFB3D, "X"), - (0xFB3E, "M", "מּ"), - (0xFB3F, "X"), - (0xFB40, "M", "נּ"), - (0xFB41, "M", "סּ"), - (0xFB42, "X"), - (0xFB43, "M", "ףּ"), - (0xFB44, "M", "פּ"), - (0xFB45, "X"), - (0xFB46, "M", "צּ"), - (0xFB47, "M", "קּ"), - (0xFB48, "M", "רּ"), - (0xFB49, "M", "שּ"), - (0xFB4A, "M", "תּ"), - (0xFB4B, "M", "וֹ"), - (0xFB4C, "M", "בֿ"), - (0xFB4D, "M", "כֿ"), - (0xFB4E, "M", "פֿ"), - (0xFB4F, "M", "אל"), - (0xFB50, "M", "ٱ"), - (0xFB52, "M", "ٻ"), - (0xFB56, "M", "پ"), - (0xFB5A, "M", "ڀ"), - (0xFB5E, "M", "ٺ"), - (0xFB62, "M", "ٿ"), - (0xFB66, "M", "ٹ"), - (0xFB6A, "M", "ڤ"), - (0xFB6E, "M", "ڦ"), - (0xFB72, "M", "ڄ"), - (0xFB76, "M", "ڃ"), - (0xFB7A, "M", "چ"), - (0xFB7E, "M", "ڇ"), - (0xFB82, "M", "ڍ"), - (0xFB84, "M", "ڌ"), - (0xFB86, "M", "ڎ"), - (0xFB88, "M", "ڈ"), - (0xFB8A, "M", "ژ"), - (0xFB8C, "M", "ڑ"), - (0xFB8E, "M", "ک"), - (0xFB92, "M", "گ"), - (0xFB96, "M", "ڳ"), - (0xFB9A, "M", "ڱ"), - (0xFB9E, "M", "ں"), - (0xFBA0, "M", "ڻ"), - (0xFBA4, "M", "ۀ"), - (0xFBA6, "M", "ہ"), - (0xFBAA, "M", "ھ"), - (0xFBAE, "M", "ے"), - (0xFBB0, "M", "ۓ"), - (0xFBB2, "V"), - (0xFBC3, "X"), - (0xFBD3, "M", "ڭ"), - (0xFBD7, "M", "ۇ"), - (0xFBD9, "M", "ۆ"), - (0xFBDB, "M", "ۈ"), - (0xFBDD, "M", "ۇٴ"), - (0xFBDE, "M", "ۋ"), - (0xFBE0, "M", "ۅ"), - (0xFBE2, "M", "ۉ"), - (0xFBE4, "M", "ې"), - (0xFBE8, "M", "ى"), - ] - - -def _seg_45() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFBEA, "M", "ئا"), - (0xFBEC, "M", "ئە"), - (0xFBEE, "M", "ئو"), - (0xFBF0, "M", "ئۇ"), - (0xFBF2, "M", "ئۆ"), - (0xFBF4, "M", "ئۈ"), - (0xFBF6, "M", "ئې"), - (0xFBF9, "M", "ئى"), - (0xFBFC, "M", "ی"), - (0xFC00, "M", "ئج"), - (0xFC01, "M", "ئح"), - (0xFC02, "M", "ئم"), - (0xFC03, "M", "ئى"), - (0xFC04, "M", "ئي"), - (0xFC05, "M", "بج"), - (0xFC06, "M", "بح"), - (0xFC07, "M", "بخ"), - (0xFC08, "M", "بم"), - (0xFC09, "M", "بى"), - (0xFC0A, "M", "بي"), - (0xFC0B, "M", "تج"), - (0xFC0C, "M", "تح"), - (0xFC0D, "M", "تخ"), - (0xFC0E, "M", "تم"), - (0xFC0F, "M", "تى"), - (0xFC10, "M", "تي"), - (0xFC11, "M", "ثج"), - (0xFC12, "M", "ثم"), - (0xFC13, "M", "ثى"), - (0xFC14, "M", "ثي"), - (0xFC15, "M", "جح"), - (0xFC16, "M", "جم"), - (0xFC17, "M", "حج"), - (0xFC18, "M", "حم"), - (0xFC19, "M", "خج"), - (0xFC1A, "M", "خح"), - (0xFC1B, "M", "خم"), - (0xFC1C, "M", "سج"), - (0xFC1D, "M", "سح"), - (0xFC1E, "M", "سخ"), - (0xFC1F, "M", "سم"), - (0xFC20, "M", "صح"), - (0xFC21, "M", "صم"), - (0xFC22, "M", "ضج"), - (0xFC23, "M", "ضح"), - (0xFC24, "M", "ضخ"), - (0xFC25, "M", "ضم"), - (0xFC26, "M", "طح"), - (0xFC27, "M", "طم"), - (0xFC28, "M", "ظم"), - (0xFC29, "M", "عج"), - (0xFC2A, "M", "عم"), - (0xFC2B, "M", "غج"), - (0xFC2C, "M", "غم"), - (0xFC2D, "M", "فج"), - (0xFC2E, "M", "فح"), - (0xFC2F, "M", "فخ"), - (0xFC30, "M", "فم"), - (0xFC31, "M", "فى"), - (0xFC32, "M", "في"), - (0xFC33, "M", "قح"), - (0xFC34, "M", "قم"), - (0xFC35, "M", "قى"), - (0xFC36, "M", "قي"), - (0xFC37, "M", "كا"), - (0xFC38, "M", "كج"), - (0xFC39, "M", "كح"), - (0xFC3A, "M", "كخ"), - (0xFC3B, "M", "كل"), - (0xFC3C, "M", "كم"), - (0xFC3D, "M", "كى"), - (0xFC3E, "M", "كي"), - (0xFC3F, "M", "لج"), - (0xFC40, "M", "لح"), - (0xFC41, "M", "لخ"), - (0xFC42, "M", "لم"), - (0xFC43, "M", "لى"), - (0xFC44, "M", "لي"), - (0xFC45, "M", "مج"), - (0xFC46, "M", "مح"), - (0xFC47, "M", "مخ"), - (0xFC48, "M", "مم"), - (0xFC49, "M", "مى"), - (0xFC4A, "M", "مي"), - (0xFC4B, "M", "نج"), - (0xFC4C, "M", "نح"), - (0xFC4D, "M", "نخ"), - (0xFC4E, "M", "نم"), - (0xFC4F, "M", "نى"), - (0xFC50, "M", "ني"), - (0xFC51, "M", "هج"), - (0xFC52, "M", "هم"), - (0xFC53, "M", "هى"), - (0xFC54, "M", "هي"), - (0xFC55, "M", "يج"), - (0xFC56, "M", "يح"), - (0xFC57, "M", "يخ"), - (0xFC58, "M", "يم"), - (0xFC59, "M", "يى"), - (0xFC5A, "M", "يي"), - ] - - -def _seg_46() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFC5B, "M", "ذٰ"), - (0xFC5C, "M", "رٰ"), - (0xFC5D, "M", "ىٰ"), - (0xFC5E, "3", " ٌّ"), - (0xFC5F, "3", " ٍّ"), - (0xFC60, "3", " َّ"), - (0xFC61, "3", " ُّ"), - (0xFC62, "3", " ِّ"), - (0xFC63, "3", " ّٰ"), - (0xFC64, "M", "ئر"), - (0xFC65, "M", "ئز"), - (0xFC66, "M", "ئم"), - (0xFC67, "M", "ئن"), - (0xFC68, "M", "ئى"), - (0xFC69, "M", "ئي"), - (0xFC6A, "M", "بر"), - (0xFC6B, "M", "بز"), - (0xFC6C, "M", "بم"), - (0xFC6D, "M", "بن"), - (0xFC6E, "M", "بى"), - (0xFC6F, "M", "بي"), - (0xFC70, "M", "تر"), - (0xFC71, "M", "تز"), - (0xFC72, "M", "تم"), - (0xFC73, "M", "تن"), - (0xFC74, "M", "تى"), - (0xFC75, "M", "تي"), - (0xFC76, "M", "ثر"), - (0xFC77, "M", "ثز"), - (0xFC78, "M", "ثم"), - (0xFC79, "M", "ثن"), - (0xFC7A, "M", "ثى"), - (0xFC7B, "M", "ثي"), - (0xFC7C, "M", "فى"), - (0xFC7D, "M", "في"), - (0xFC7E, "M", "قى"), - (0xFC7F, "M", "قي"), - (0xFC80, "M", "كا"), - (0xFC81, "M", "كل"), - (0xFC82, "M", "كم"), - (0xFC83, "M", "كى"), - (0xFC84, "M", "كي"), - (0xFC85, "M", "لم"), - (0xFC86, "M", "لى"), - (0xFC87, "M", "لي"), - (0xFC88, "M", "ما"), - (0xFC89, "M", "مم"), - (0xFC8A, "M", "نر"), - (0xFC8B, "M", "نز"), - (0xFC8C, "M", "نم"), - (0xFC8D, "M", "نن"), - (0xFC8E, "M", "نى"), - (0xFC8F, "M", "ني"), - (0xFC90, "M", "ىٰ"), - (0xFC91, "M", "ير"), - (0xFC92, "M", "يز"), - (0xFC93, "M", "يم"), - (0xFC94, "M", "ين"), - (0xFC95, "M", "يى"), - (0xFC96, "M", "يي"), - (0xFC97, "M", "ئج"), - (0xFC98, "M", "ئح"), - (0xFC99, "M", "ئخ"), - (0xFC9A, "M", "ئم"), - (0xFC9B, "M", "ئه"), - (0xFC9C, "M", "بج"), - (0xFC9D, "M", "بح"), - (0xFC9E, "M", "بخ"), - (0xFC9F, "M", "بم"), - (0xFCA0, "M", "به"), - (0xFCA1, "M", "تج"), - (0xFCA2, "M", "تح"), - (0xFCA3, "M", "تخ"), - (0xFCA4, "M", "تم"), - (0xFCA5, "M", "ته"), - (0xFCA6, "M", "ثم"), - (0xFCA7, "M", "جح"), - (0xFCA8, "M", "جم"), - (0xFCA9, "M", "حج"), - (0xFCAA, "M", "حم"), - (0xFCAB, "M", "خج"), - (0xFCAC, "M", "خم"), - (0xFCAD, "M", "سج"), - (0xFCAE, "M", "سح"), - (0xFCAF, "M", "سخ"), - (0xFCB0, "M", "سم"), - (0xFCB1, "M", "صح"), - (0xFCB2, "M", "صخ"), - (0xFCB3, "M", "صم"), - (0xFCB4, "M", "ضج"), - (0xFCB5, "M", "ضح"), - (0xFCB6, "M", "ضخ"), - (0xFCB7, "M", "ضم"), - (0xFCB8, "M", "طح"), - (0xFCB9, "M", "ظم"), - (0xFCBA, "M", "عج"), - (0xFCBB, "M", "عم"), - (0xFCBC, "M", "غج"), - (0xFCBD, "M", "غم"), - (0xFCBE, "M", "فج"), - ] - - -def _seg_47() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFCBF, "M", "فح"), - (0xFCC0, "M", "فخ"), - (0xFCC1, "M", "فم"), - (0xFCC2, "M", "قح"), - (0xFCC3, "M", "قم"), - (0xFCC4, "M", "كج"), - (0xFCC5, "M", "كح"), - (0xFCC6, "M", "كخ"), - (0xFCC7, "M", "كل"), - (0xFCC8, "M", "كم"), - (0xFCC9, "M", "لج"), - (0xFCCA, "M", "لح"), - (0xFCCB, "M", "لخ"), - (0xFCCC, "M", "لم"), - (0xFCCD, "M", "له"), - (0xFCCE, "M", "مج"), - (0xFCCF, "M", "مح"), - (0xFCD0, "M", "مخ"), - (0xFCD1, "M", "مم"), - (0xFCD2, "M", "نج"), - (0xFCD3, "M", "نح"), - (0xFCD4, "M", "نخ"), - (0xFCD5, "M", "نم"), - (0xFCD6, "M", "نه"), - (0xFCD7, "M", "هج"), - (0xFCD8, "M", "هم"), - (0xFCD9, "M", "هٰ"), - (0xFCDA, "M", "يج"), - (0xFCDB, "M", "يح"), - (0xFCDC, "M", "يخ"), - (0xFCDD, "M", "يم"), - (0xFCDE, "M", "يه"), - (0xFCDF, "M", "ئم"), - (0xFCE0, "M", "ئه"), - (0xFCE1, "M", "بم"), - (0xFCE2, "M", "به"), - (0xFCE3, "M", "تم"), - (0xFCE4, "M", "ته"), - (0xFCE5, "M", "ثم"), - (0xFCE6, "M", "ثه"), - (0xFCE7, "M", "سم"), - (0xFCE8, "M", "سه"), - (0xFCE9, "M", "شم"), - (0xFCEA, "M", "شه"), - (0xFCEB, "M", "كل"), - (0xFCEC, "M", "كم"), - (0xFCED, "M", "لم"), - (0xFCEE, "M", "نم"), - (0xFCEF, "M", "نه"), - (0xFCF0, "M", "يم"), - (0xFCF1, "M", "يه"), - (0xFCF2, "M", "ـَّ"), - (0xFCF3, "M", "ـُّ"), - (0xFCF4, "M", "ـِّ"), - (0xFCF5, "M", "طى"), - (0xFCF6, "M", "طي"), - (0xFCF7, "M", "عى"), - (0xFCF8, "M", "عي"), - (0xFCF9, "M", "غى"), - (0xFCFA, "M", "غي"), - (0xFCFB, "M", "سى"), - (0xFCFC, "M", "سي"), - (0xFCFD, "M", "شى"), - (0xFCFE, "M", "شي"), - (0xFCFF, "M", "حى"), - (0xFD00, "M", "حي"), - (0xFD01, "M", "جى"), - (0xFD02, "M", "جي"), - (0xFD03, "M", "خى"), - (0xFD04, "M", "خي"), - (0xFD05, "M", "صى"), - (0xFD06, "M", "صي"), - (0xFD07, "M", "ضى"), - (0xFD08, "M", "ضي"), - (0xFD09, "M", "شج"), - (0xFD0A, "M", "شح"), - (0xFD0B, "M", "شخ"), - (0xFD0C, "M", "شم"), - (0xFD0D, "M", "شر"), - (0xFD0E, "M", "سر"), - (0xFD0F, "M", "صر"), - (0xFD10, "M", "ضر"), - (0xFD11, "M", "طى"), - (0xFD12, "M", "طي"), - (0xFD13, "M", "عى"), - (0xFD14, "M", "عي"), - (0xFD15, "M", "غى"), - (0xFD16, "M", "غي"), - (0xFD17, "M", "سى"), - (0xFD18, "M", "سي"), - (0xFD19, "M", "شى"), - (0xFD1A, "M", "شي"), - (0xFD1B, "M", "حى"), - (0xFD1C, "M", "حي"), - (0xFD1D, "M", "جى"), - (0xFD1E, "M", "جي"), - (0xFD1F, "M", "خى"), - (0xFD20, "M", "خي"), - (0xFD21, "M", "صى"), - (0xFD22, "M", "صي"), - ] - - -def _seg_48() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFD23, "M", "ضى"), - (0xFD24, "M", "ضي"), - (0xFD25, "M", "شج"), - (0xFD26, "M", "شح"), - (0xFD27, "M", "شخ"), - (0xFD28, "M", "شم"), - (0xFD29, "M", "شر"), - (0xFD2A, "M", "سر"), - (0xFD2B, "M", "صر"), - (0xFD2C, "M", "ضر"), - (0xFD2D, "M", "شج"), - (0xFD2E, "M", "شح"), - (0xFD2F, "M", "شخ"), - (0xFD30, "M", "شم"), - (0xFD31, "M", "سه"), - (0xFD32, "M", "شه"), - (0xFD33, "M", "طم"), - (0xFD34, "M", "سج"), - (0xFD35, "M", "سح"), - (0xFD36, "M", "سخ"), - (0xFD37, "M", "شج"), - (0xFD38, "M", "شح"), - (0xFD39, "M", "شخ"), - (0xFD3A, "M", "طم"), - (0xFD3B, "M", "ظم"), - (0xFD3C, "M", "اً"), - (0xFD3E, "V"), - (0xFD50, "M", "تجم"), - (0xFD51, "M", "تحج"), - (0xFD53, "M", "تحم"), - (0xFD54, "M", "تخم"), - (0xFD55, "M", "تمج"), - (0xFD56, "M", "تمح"), - (0xFD57, "M", "تمخ"), - (0xFD58, "M", "جمح"), - (0xFD5A, "M", "حمي"), - (0xFD5B, "M", "حمى"), - (0xFD5C, "M", "سحج"), - (0xFD5D, "M", "سجح"), - (0xFD5E, "M", "سجى"), - (0xFD5F, "M", "سمح"), - (0xFD61, "M", "سمج"), - (0xFD62, "M", "سمم"), - (0xFD64, "M", "صحح"), - (0xFD66, "M", "صمم"), - (0xFD67, "M", "شحم"), - (0xFD69, "M", "شجي"), - (0xFD6A, "M", "شمخ"), - (0xFD6C, "M", "شمم"), - (0xFD6E, "M", "ضحى"), - (0xFD6F, "M", "ضخم"), - (0xFD71, "M", "طمح"), - (0xFD73, "M", "طمم"), - (0xFD74, "M", "طمي"), - (0xFD75, "M", "عجم"), - (0xFD76, "M", "عمم"), - (0xFD78, "M", "عمى"), - (0xFD79, "M", "غمم"), - (0xFD7A, "M", "غمي"), - (0xFD7B, "M", "غمى"), - (0xFD7C, "M", "فخم"), - (0xFD7E, "M", "قمح"), - (0xFD7F, "M", "قمم"), - (0xFD80, "M", "لحم"), - (0xFD81, "M", "لحي"), - (0xFD82, "M", "لحى"), - (0xFD83, "M", "لجج"), - (0xFD85, "M", "لخم"), - (0xFD87, "M", "لمح"), - (0xFD89, "M", "محج"), - (0xFD8A, "M", "محم"), - (0xFD8B, "M", "محي"), - (0xFD8C, "M", "مجح"), - (0xFD8D, "M", "مجم"), - (0xFD8E, "M", "مخج"), - (0xFD8F, "M", "مخم"), - (0xFD90, "X"), - (0xFD92, "M", "مجخ"), - (0xFD93, "M", "همج"), - (0xFD94, "M", "همم"), - (0xFD95, "M", "نحم"), - (0xFD96, "M", "نحى"), - (0xFD97, "M", "نجم"), - (0xFD99, "M", "نجى"), - (0xFD9A, "M", "نمي"), - (0xFD9B, "M", "نمى"), - (0xFD9C, "M", "يمم"), - (0xFD9E, "M", "بخي"), - (0xFD9F, "M", "تجي"), - (0xFDA0, "M", "تجى"), - (0xFDA1, "M", "تخي"), - (0xFDA2, "M", "تخى"), - (0xFDA3, "M", "تمي"), - (0xFDA4, "M", "تمى"), - (0xFDA5, "M", "جمي"), - (0xFDA6, "M", "جحى"), - (0xFDA7, "M", "جمى"), - (0xFDA8, "M", "سخى"), - (0xFDA9, "M", "صحي"), - (0xFDAA, "M", "شحي"), - ] - - -def _seg_49() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFDAB, "M", "ضحي"), - (0xFDAC, "M", "لجي"), - (0xFDAD, "M", "لمي"), - (0xFDAE, "M", "يحي"), - (0xFDAF, "M", "يجي"), - (0xFDB0, "M", "يمي"), - (0xFDB1, "M", "ممي"), - (0xFDB2, "M", "قمي"), - (0xFDB3, "M", "نحي"), - (0xFDB4, "M", "قمح"), - (0xFDB5, "M", "لحم"), - (0xFDB6, "M", "عمي"), - (0xFDB7, "M", "كمي"), - (0xFDB8, "M", "نجح"), - (0xFDB9, "M", "مخي"), - (0xFDBA, "M", "لجم"), - (0xFDBB, "M", "كمم"), - (0xFDBC, "M", "لجم"), - (0xFDBD, "M", "نجح"), - (0xFDBE, "M", "جحي"), - (0xFDBF, "M", "حجي"), - (0xFDC0, "M", "مجي"), - (0xFDC1, "M", "فمي"), - (0xFDC2, "M", "بحي"), - (0xFDC3, "M", "كمم"), - (0xFDC4, "M", "عجم"), - (0xFDC5, "M", "صمم"), - (0xFDC6, "M", "سخي"), - (0xFDC7, "M", "نجي"), - (0xFDC8, "X"), - (0xFDCF, "V"), - (0xFDD0, "X"), - (0xFDF0, "M", "صلے"), - (0xFDF1, "M", "قلے"), - (0xFDF2, "M", "الله"), - (0xFDF3, "M", "اكبر"), - (0xFDF4, "M", "محمد"), - (0xFDF5, "M", "صلعم"), - (0xFDF6, "M", "رسول"), - (0xFDF7, "M", "عليه"), - (0xFDF8, "M", "وسلم"), - (0xFDF9, "M", "صلى"), - (0xFDFA, "3", "صلى الله عليه وسلم"), - (0xFDFB, "3", "جل جلاله"), - (0xFDFC, "M", "ریال"), - (0xFDFD, "V"), - (0xFE00, "I"), - (0xFE10, "3", ","), - (0xFE11, "M", "、"), - (0xFE12, "X"), - (0xFE13, "3", ":"), - (0xFE14, "3", ";"), - (0xFE15, "3", "!"), - (0xFE16, "3", "?"), - (0xFE17, "M", "〖"), - (0xFE18, "M", "〗"), - (0xFE19, "X"), - (0xFE20, "V"), - (0xFE30, "X"), - (0xFE31, "M", "—"), - (0xFE32, "M", "–"), - (0xFE33, "3", "_"), - (0xFE35, "3", "("), - (0xFE36, "3", ")"), - (0xFE37, "3", "{"), - (0xFE38, "3", "}"), - (0xFE39, "M", "〔"), - (0xFE3A, "M", "〕"), - (0xFE3B, "M", "【"), - (0xFE3C, "M", "】"), - (0xFE3D, "M", "《"), - (0xFE3E, "M", "》"), - (0xFE3F, "M", "〈"), - (0xFE40, "M", "〉"), - (0xFE41, "M", "「"), - (0xFE42, "M", "」"), - (0xFE43, "M", "『"), - (0xFE44, "M", "』"), - (0xFE45, "V"), - (0xFE47, "3", "["), - (0xFE48, "3", "]"), - (0xFE49, "3", " ̅"), - (0xFE4D, "3", "_"), - (0xFE50, "3", ","), - (0xFE51, "M", "、"), - (0xFE52, "X"), - (0xFE54, "3", ";"), - (0xFE55, "3", ":"), - (0xFE56, "3", "?"), - (0xFE57, "3", "!"), - (0xFE58, "M", "—"), - (0xFE59, "3", "("), - (0xFE5A, "3", ")"), - (0xFE5B, "3", "{"), - (0xFE5C, "3", "}"), - (0xFE5D, "M", "〔"), - (0xFE5E, "M", "〕"), - (0xFE5F, "3", "#"), - (0xFE60, "3", "&"), - (0xFE61, "3", "*"), - ] - - -def _seg_50() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFE62, "3", "+"), - (0xFE63, "M", "-"), - (0xFE64, "3", "<"), - (0xFE65, "3", ">"), - (0xFE66, "3", "="), - (0xFE67, "X"), - (0xFE68, "3", "\\"), - (0xFE69, "3", "$"), - (0xFE6A, "3", "%"), - (0xFE6B, "3", "@"), - (0xFE6C, "X"), - (0xFE70, "3", " ً"), - (0xFE71, "M", "ـً"), - (0xFE72, "3", " ٌ"), - (0xFE73, "V"), - (0xFE74, "3", " ٍ"), - (0xFE75, "X"), - (0xFE76, "3", " َ"), - (0xFE77, "M", "ـَ"), - (0xFE78, "3", " ُ"), - (0xFE79, "M", "ـُ"), - (0xFE7A, "3", " ِ"), - (0xFE7B, "M", "ـِ"), - (0xFE7C, "3", " ّ"), - (0xFE7D, "M", "ـّ"), - (0xFE7E, "3", " ْ"), - (0xFE7F, "M", "ـْ"), - (0xFE80, "M", "ء"), - (0xFE81, "M", "آ"), - (0xFE83, "M", "أ"), - (0xFE85, "M", "ؤ"), - (0xFE87, "M", "إ"), - (0xFE89, "M", "ئ"), - (0xFE8D, "M", "ا"), - (0xFE8F, "M", "ب"), - (0xFE93, "M", "ة"), - (0xFE95, "M", "ت"), - (0xFE99, "M", "ث"), - (0xFE9D, "M", "ج"), - (0xFEA1, "M", "ح"), - (0xFEA5, "M", "خ"), - (0xFEA9, "M", "د"), - (0xFEAB, "M", "ذ"), - (0xFEAD, "M", "ر"), - (0xFEAF, "M", "ز"), - (0xFEB1, "M", "س"), - (0xFEB5, "M", "ش"), - (0xFEB9, "M", "ص"), - (0xFEBD, "M", "ض"), - (0xFEC1, "M", "ط"), - (0xFEC5, "M", "ظ"), - (0xFEC9, "M", "ع"), - (0xFECD, "M", "غ"), - (0xFED1, "M", "ف"), - (0xFED5, "M", "ق"), - (0xFED9, "M", "ك"), - (0xFEDD, "M", "ل"), - (0xFEE1, "M", "م"), - (0xFEE5, "M", "ن"), - (0xFEE9, "M", "ه"), - (0xFEED, "M", "و"), - (0xFEEF, "M", "ى"), - (0xFEF1, "M", "ي"), - (0xFEF5, "M", "لآ"), - (0xFEF7, "M", "لأ"), - (0xFEF9, "M", "لإ"), - (0xFEFB, "M", "لا"), - (0xFEFD, "X"), - (0xFEFF, "I"), - (0xFF00, "X"), - (0xFF01, "3", "!"), - (0xFF02, "3", '"'), - (0xFF03, "3", "#"), - (0xFF04, "3", "$"), - (0xFF05, "3", "%"), - (0xFF06, "3", "&"), - (0xFF07, "3", "'"), - (0xFF08, "3", "("), - (0xFF09, "3", ")"), - (0xFF0A, "3", "*"), - (0xFF0B, "3", "+"), - (0xFF0C, "3", ","), - (0xFF0D, "M", "-"), - (0xFF0E, "M", "."), - (0xFF0F, "3", "/"), - (0xFF10, "M", "0"), - (0xFF11, "M", "1"), - (0xFF12, "M", "2"), - (0xFF13, "M", "3"), - (0xFF14, "M", "4"), - (0xFF15, "M", "5"), - (0xFF16, "M", "6"), - (0xFF17, "M", "7"), - (0xFF18, "M", "8"), - (0xFF19, "M", "9"), - (0xFF1A, "3", ":"), - (0xFF1B, "3", ";"), - (0xFF1C, "3", "<"), - (0xFF1D, "3", "="), - (0xFF1E, "3", ">"), - ] - - -def _seg_51() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFF1F, "3", "?"), - (0xFF20, "3", "@"), - (0xFF21, "M", "a"), - (0xFF22, "M", "b"), - (0xFF23, "M", "c"), - (0xFF24, "M", "d"), - (0xFF25, "M", "e"), - (0xFF26, "M", "f"), - (0xFF27, "M", "g"), - (0xFF28, "M", "h"), - (0xFF29, "M", "i"), - (0xFF2A, "M", "j"), - (0xFF2B, "M", "k"), - (0xFF2C, "M", "l"), - (0xFF2D, "M", "m"), - (0xFF2E, "M", "n"), - (0xFF2F, "M", "o"), - (0xFF30, "M", "p"), - (0xFF31, "M", "q"), - (0xFF32, "M", "r"), - (0xFF33, "M", "s"), - (0xFF34, "M", "t"), - (0xFF35, "M", "u"), - (0xFF36, "M", "v"), - (0xFF37, "M", "w"), - (0xFF38, "M", "x"), - (0xFF39, "M", "y"), - (0xFF3A, "M", "z"), - (0xFF3B, "3", "["), - (0xFF3C, "3", "\\"), - (0xFF3D, "3", "]"), - (0xFF3E, "3", "^"), - (0xFF3F, "3", "_"), - (0xFF40, "3", "`"), - (0xFF41, "M", "a"), - (0xFF42, "M", "b"), - (0xFF43, "M", "c"), - (0xFF44, "M", "d"), - (0xFF45, "M", "e"), - (0xFF46, "M", "f"), - (0xFF47, "M", "g"), - (0xFF48, "M", "h"), - (0xFF49, "M", "i"), - (0xFF4A, "M", "j"), - (0xFF4B, "M", "k"), - (0xFF4C, "M", "l"), - (0xFF4D, "M", "m"), - (0xFF4E, "M", "n"), - (0xFF4F, "M", "o"), - (0xFF50, "M", "p"), - (0xFF51, "M", "q"), - (0xFF52, "M", "r"), - (0xFF53, "M", "s"), - (0xFF54, "M", "t"), - (0xFF55, "M", "u"), - (0xFF56, "M", "v"), - (0xFF57, "M", "w"), - (0xFF58, "M", "x"), - (0xFF59, "M", "y"), - (0xFF5A, "M", "z"), - (0xFF5B, "3", "{"), - (0xFF5C, "3", "|"), - (0xFF5D, "3", "}"), - (0xFF5E, "3", "~"), - (0xFF5F, "M", "⦅"), - (0xFF60, "M", "⦆"), - (0xFF61, "M", "."), - (0xFF62, "M", "「"), - (0xFF63, "M", "」"), - (0xFF64, "M", "、"), - (0xFF65, "M", "・"), - (0xFF66, "M", "ヲ"), - (0xFF67, "M", "ァ"), - (0xFF68, "M", "ィ"), - (0xFF69, "M", "ゥ"), - (0xFF6A, "M", "ェ"), - (0xFF6B, "M", "ォ"), - (0xFF6C, "M", "ャ"), - (0xFF6D, "M", "ュ"), - (0xFF6E, "M", "ョ"), - (0xFF6F, "M", "ッ"), - (0xFF70, "M", "ー"), - (0xFF71, "M", "ア"), - (0xFF72, "M", "イ"), - (0xFF73, "M", "ウ"), - (0xFF74, "M", "エ"), - (0xFF75, "M", "オ"), - (0xFF76, "M", "カ"), - (0xFF77, "M", "キ"), - (0xFF78, "M", "ク"), - (0xFF79, "M", "ケ"), - (0xFF7A, "M", "コ"), - (0xFF7B, "M", "サ"), - (0xFF7C, "M", "シ"), - (0xFF7D, "M", "ス"), - (0xFF7E, "M", "セ"), - (0xFF7F, "M", "ソ"), - (0xFF80, "M", "タ"), - (0xFF81, "M", "チ"), - (0xFF82, "M", "ツ"), - ] - - -def _seg_52() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFF83, "M", "テ"), - (0xFF84, "M", "ト"), - (0xFF85, "M", "ナ"), - (0xFF86, "M", "ニ"), - (0xFF87, "M", "ヌ"), - (0xFF88, "M", "ネ"), - (0xFF89, "M", "ノ"), - (0xFF8A, "M", "ハ"), - (0xFF8B, "M", "ヒ"), - (0xFF8C, "M", "フ"), - (0xFF8D, "M", "ヘ"), - (0xFF8E, "M", "ホ"), - (0xFF8F, "M", "マ"), - (0xFF90, "M", "ミ"), - (0xFF91, "M", "ム"), - (0xFF92, "M", "メ"), - (0xFF93, "M", "モ"), - (0xFF94, "M", "ヤ"), - (0xFF95, "M", "ユ"), - (0xFF96, "M", "ヨ"), - (0xFF97, "M", "ラ"), - (0xFF98, "M", "リ"), - (0xFF99, "M", "ル"), - (0xFF9A, "M", "レ"), - (0xFF9B, "M", "ロ"), - (0xFF9C, "M", "ワ"), - (0xFF9D, "M", "ン"), - (0xFF9E, "M", "゙"), - (0xFF9F, "M", "゚"), - (0xFFA0, "X"), - (0xFFA1, "M", "ᄀ"), - (0xFFA2, "M", "ᄁ"), - (0xFFA3, "M", "ᆪ"), - (0xFFA4, "M", "ᄂ"), - (0xFFA5, "M", "ᆬ"), - (0xFFA6, "M", "ᆭ"), - (0xFFA7, "M", "ᄃ"), - (0xFFA8, "M", "ᄄ"), - (0xFFA9, "M", "ᄅ"), - (0xFFAA, "M", "ᆰ"), - (0xFFAB, "M", "ᆱ"), - (0xFFAC, "M", "ᆲ"), - (0xFFAD, "M", "ᆳ"), - (0xFFAE, "M", "ᆴ"), - (0xFFAF, "M", "ᆵ"), - (0xFFB0, "M", "ᄚ"), - (0xFFB1, "M", "ᄆ"), - (0xFFB2, "M", "ᄇ"), - (0xFFB3, "M", "ᄈ"), - (0xFFB4, "M", "ᄡ"), - (0xFFB5, "M", "ᄉ"), - (0xFFB6, "M", "ᄊ"), - (0xFFB7, "M", "ᄋ"), - (0xFFB8, "M", "ᄌ"), - (0xFFB9, "M", "ᄍ"), - (0xFFBA, "M", "ᄎ"), - (0xFFBB, "M", "ᄏ"), - (0xFFBC, "M", "ᄐ"), - (0xFFBD, "M", "ᄑ"), - (0xFFBE, "M", "ᄒ"), - (0xFFBF, "X"), - (0xFFC2, "M", "ᅡ"), - (0xFFC3, "M", "ᅢ"), - (0xFFC4, "M", "ᅣ"), - (0xFFC5, "M", "ᅤ"), - (0xFFC6, "M", "ᅥ"), - (0xFFC7, "M", "ᅦ"), - (0xFFC8, "X"), - (0xFFCA, "M", "ᅧ"), - (0xFFCB, "M", "ᅨ"), - (0xFFCC, "M", "ᅩ"), - (0xFFCD, "M", "ᅪ"), - (0xFFCE, "M", "ᅫ"), - (0xFFCF, "M", "ᅬ"), - (0xFFD0, "X"), - (0xFFD2, "M", "ᅭ"), - (0xFFD3, "M", "ᅮ"), - (0xFFD4, "M", "ᅯ"), - (0xFFD5, "M", "ᅰ"), - (0xFFD6, "M", "ᅱ"), - (0xFFD7, "M", "ᅲ"), - (0xFFD8, "X"), - (0xFFDA, "M", "ᅳ"), - (0xFFDB, "M", "ᅴ"), - (0xFFDC, "M", "ᅵ"), - (0xFFDD, "X"), - (0xFFE0, "M", "¢"), - (0xFFE1, "M", "£"), - (0xFFE2, "M", "¬"), - (0xFFE3, "3", " ̄"), - (0xFFE4, "M", "¦"), - (0xFFE5, "M", "¥"), - (0xFFE6, "M", "₩"), - (0xFFE7, "X"), - (0xFFE8, "M", "│"), - (0xFFE9, "M", "←"), - (0xFFEA, "M", "↑"), - (0xFFEB, "M", "→"), - (0xFFEC, "M", "↓"), - (0xFFED, "M", "■"), - ] - - -def _seg_53() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0xFFEE, "M", "○"), - (0xFFEF, "X"), - (0x10000, "V"), - (0x1000C, "X"), - (0x1000D, "V"), - (0x10027, "X"), - (0x10028, "V"), - (0x1003B, "X"), - (0x1003C, "V"), - (0x1003E, "X"), - (0x1003F, "V"), - (0x1004E, "X"), - (0x10050, "V"), - (0x1005E, "X"), - (0x10080, "V"), - (0x100FB, "X"), - (0x10100, "V"), - (0x10103, "X"), - (0x10107, "V"), - (0x10134, "X"), - (0x10137, "V"), - (0x1018F, "X"), - (0x10190, "V"), - (0x1019D, "X"), - (0x101A0, "V"), - (0x101A1, "X"), - (0x101D0, "V"), - (0x101FE, "X"), - (0x10280, "V"), - (0x1029D, "X"), - (0x102A0, "V"), - (0x102D1, "X"), - (0x102E0, "V"), - (0x102FC, "X"), - (0x10300, "V"), - (0x10324, "X"), - (0x1032D, "V"), - (0x1034B, "X"), - (0x10350, "V"), - (0x1037B, "X"), - (0x10380, "V"), - (0x1039E, "X"), - (0x1039F, "V"), - (0x103C4, "X"), - (0x103C8, "V"), - (0x103D6, "X"), - (0x10400, "M", "𐐨"), - (0x10401, "M", "𐐩"), - (0x10402, "M", "𐐪"), - (0x10403, "M", "𐐫"), - (0x10404, "M", "𐐬"), - (0x10405, "M", "𐐭"), - (0x10406, "M", "𐐮"), - (0x10407, "M", "𐐯"), - (0x10408, "M", "𐐰"), - (0x10409, "M", "𐐱"), - (0x1040A, "M", "𐐲"), - (0x1040B, "M", "𐐳"), - (0x1040C, "M", "𐐴"), - (0x1040D, "M", "𐐵"), - (0x1040E, "M", "𐐶"), - (0x1040F, "M", "𐐷"), - (0x10410, "M", "𐐸"), - (0x10411, "M", "𐐹"), - (0x10412, "M", "𐐺"), - (0x10413, "M", "𐐻"), - (0x10414, "M", "𐐼"), - (0x10415, "M", "𐐽"), - (0x10416, "M", "𐐾"), - (0x10417, "M", "𐐿"), - (0x10418, "M", "𐑀"), - (0x10419, "M", "𐑁"), - (0x1041A, "M", "𐑂"), - (0x1041B, "M", "𐑃"), - (0x1041C, "M", "𐑄"), - (0x1041D, "M", "𐑅"), - (0x1041E, "M", "𐑆"), - (0x1041F, "M", "𐑇"), - (0x10420, "M", "𐑈"), - (0x10421, "M", "𐑉"), - (0x10422, "M", "𐑊"), - (0x10423, "M", "𐑋"), - (0x10424, "M", "𐑌"), - (0x10425, "M", "𐑍"), - (0x10426, "M", "𐑎"), - (0x10427, "M", "𐑏"), - (0x10428, "V"), - (0x1049E, "X"), - (0x104A0, "V"), - (0x104AA, "X"), - (0x104B0, "M", "𐓘"), - (0x104B1, "M", "𐓙"), - (0x104B2, "M", "𐓚"), - (0x104B3, "M", "𐓛"), - (0x104B4, "M", "𐓜"), - (0x104B5, "M", "𐓝"), - (0x104B6, "M", "𐓞"), - (0x104B7, "M", "𐓟"), - (0x104B8, "M", "𐓠"), - (0x104B9, "M", "𐓡"), - ] - - -def _seg_54() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x104BA, "M", "𐓢"), - (0x104BB, "M", "𐓣"), - (0x104BC, "M", "𐓤"), - (0x104BD, "M", "𐓥"), - (0x104BE, "M", "𐓦"), - (0x104BF, "M", "𐓧"), - (0x104C0, "M", "𐓨"), - (0x104C1, "M", "𐓩"), - (0x104C2, "M", "𐓪"), - (0x104C3, "M", "𐓫"), - (0x104C4, "M", "𐓬"), - (0x104C5, "M", "𐓭"), - (0x104C6, "M", "𐓮"), - (0x104C7, "M", "𐓯"), - (0x104C8, "M", "𐓰"), - (0x104C9, "M", "𐓱"), - (0x104CA, "M", "𐓲"), - (0x104CB, "M", "𐓳"), - (0x104CC, "M", "𐓴"), - (0x104CD, "M", "𐓵"), - (0x104CE, "M", "𐓶"), - (0x104CF, "M", "𐓷"), - (0x104D0, "M", "𐓸"), - (0x104D1, "M", "𐓹"), - (0x104D2, "M", "𐓺"), - (0x104D3, "M", "𐓻"), - (0x104D4, "X"), - (0x104D8, "V"), - (0x104FC, "X"), - (0x10500, "V"), - (0x10528, "X"), - (0x10530, "V"), - (0x10564, "X"), - (0x1056F, "V"), - (0x10570, "M", "𐖗"), - (0x10571, "M", "𐖘"), - (0x10572, "M", "𐖙"), - (0x10573, "M", "𐖚"), - (0x10574, "M", "𐖛"), - (0x10575, "M", "𐖜"), - (0x10576, "M", "𐖝"), - (0x10577, "M", "𐖞"), - (0x10578, "M", "𐖟"), - (0x10579, "M", "𐖠"), - (0x1057A, "M", "𐖡"), - (0x1057B, "X"), - (0x1057C, "M", "𐖣"), - (0x1057D, "M", "𐖤"), - (0x1057E, "M", "𐖥"), - (0x1057F, "M", "𐖦"), - (0x10580, "M", "𐖧"), - (0x10581, "M", "𐖨"), - (0x10582, "M", "𐖩"), - (0x10583, "M", "𐖪"), - (0x10584, "M", "𐖫"), - (0x10585, "M", "𐖬"), - (0x10586, "M", "𐖭"), - (0x10587, "M", "𐖮"), - (0x10588, "M", "𐖯"), - (0x10589, "M", "𐖰"), - (0x1058A, "M", "𐖱"), - (0x1058B, "X"), - (0x1058C, "M", "𐖳"), - (0x1058D, "M", "𐖴"), - (0x1058E, "M", "𐖵"), - (0x1058F, "M", "𐖶"), - (0x10590, "M", "𐖷"), - (0x10591, "M", "𐖸"), - (0x10592, "M", "𐖹"), - (0x10593, "X"), - (0x10594, "M", "𐖻"), - (0x10595, "M", "𐖼"), - (0x10596, "X"), - (0x10597, "V"), - (0x105A2, "X"), - (0x105A3, "V"), - (0x105B2, "X"), - (0x105B3, "V"), - (0x105BA, "X"), - (0x105BB, "V"), - (0x105BD, "X"), - (0x10600, "V"), - (0x10737, "X"), - (0x10740, "V"), - (0x10756, "X"), - (0x10760, "V"), - (0x10768, "X"), - (0x10780, "V"), - (0x10781, "M", "ː"), - (0x10782, "M", "ˑ"), - (0x10783, "M", "æ"), - (0x10784, "M", "ʙ"), - (0x10785, "M", "ɓ"), - (0x10786, "X"), - (0x10787, "M", "ʣ"), - (0x10788, "M", "ꭦ"), - (0x10789, "M", "ʥ"), - (0x1078A, "M", "ʤ"), - (0x1078B, "M", "ɖ"), - (0x1078C, "M", "ɗ"), - ] - - -def _seg_55() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1078D, "M", "ᶑ"), - (0x1078E, "M", "ɘ"), - (0x1078F, "M", "ɞ"), - (0x10790, "M", "ʩ"), - (0x10791, "M", "ɤ"), - (0x10792, "M", "ɢ"), - (0x10793, "M", "ɠ"), - (0x10794, "M", "ʛ"), - (0x10795, "M", "ħ"), - (0x10796, "M", "ʜ"), - (0x10797, "M", "ɧ"), - (0x10798, "M", "ʄ"), - (0x10799, "M", "ʪ"), - (0x1079A, "M", "ʫ"), - (0x1079B, "M", "ɬ"), - (0x1079C, "M", "𝼄"), - (0x1079D, "M", "ꞎ"), - (0x1079E, "M", "ɮ"), - (0x1079F, "M", "𝼅"), - (0x107A0, "M", "ʎ"), - (0x107A1, "M", "𝼆"), - (0x107A2, "M", "ø"), - (0x107A3, "M", "ɶ"), - (0x107A4, "M", "ɷ"), - (0x107A5, "M", "q"), - (0x107A6, "M", "ɺ"), - (0x107A7, "M", "𝼈"), - (0x107A8, "M", "ɽ"), - (0x107A9, "M", "ɾ"), - (0x107AA, "M", "ʀ"), - (0x107AB, "M", "ʨ"), - (0x107AC, "M", "ʦ"), - (0x107AD, "M", "ꭧ"), - (0x107AE, "M", "ʧ"), - (0x107AF, "M", "ʈ"), - (0x107B0, "M", "ⱱ"), - (0x107B1, "X"), - (0x107B2, "M", "ʏ"), - (0x107B3, "M", "ʡ"), - (0x107B4, "M", "ʢ"), - (0x107B5, "M", "ʘ"), - (0x107B6, "M", "ǀ"), - (0x107B7, "M", "ǁ"), - (0x107B8, "M", "ǂ"), - (0x107B9, "M", "𝼊"), - (0x107BA, "M", "𝼞"), - (0x107BB, "X"), - (0x10800, "V"), - (0x10806, "X"), - (0x10808, "V"), - (0x10809, "X"), - (0x1080A, "V"), - (0x10836, "X"), - (0x10837, "V"), - (0x10839, "X"), - (0x1083C, "V"), - (0x1083D, "X"), - (0x1083F, "V"), - (0x10856, "X"), - (0x10857, "V"), - (0x1089F, "X"), - (0x108A7, "V"), - (0x108B0, "X"), - (0x108E0, "V"), - (0x108F3, "X"), - (0x108F4, "V"), - (0x108F6, "X"), - (0x108FB, "V"), - (0x1091C, "X"), - (0x1091F, "V"), - (0x1093A, "X"), - (0x1093F, "V"), - (0x10940, "X"), - (0x10980, "V"), - (0x109B8, "X"), - (0x109BC, "V"), - (0x109D0, "X"), - (0x109D2, "V"), - (0x10A04, "X"), - (0x10A05, "V"), - (0x10A07, "X"), - (0x10A0C, "V"), - (0x10A14, "X"), - (0x10A15, "V"), - (0x10A18, "X"), - (0x10A19, "V"), - (0x10A36, "X"), - (0x10A38, "V"), - (0x10A3B, "X"), - (0x10A3F, "V"), - (0x10A49, "X"), - (0x10A50, "V"), - (0x10A59, "X"), - (0x10A60, "V"), - (0x10AA0, "X"), - (0x10AC0, "V"), - (0x10AE7, "X"), - (0x10AEB, "V"), - (0x10AF7, "X"), - (0x10B00, "V"), - ] - - -def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x10B36, "X"), - (0x10B39, "V"), - (0x10B56, "X"), - (0x10B58, "V"), - (0x10B73, "X"), - (0x10B78, "V"), - (0x10B92, "X"), - (0x10B99, "V"), - (0x10B9D, "X"), - (0x10BA9, "V"), - (0x10BB0, "X"), - (0x10C00, "V"), - (0x10C49, "X"), - (0x10C80, "M", "𐳀"), - (0x10C81, "M", "𐳁"), - (0x10C82, "M", "𐳂"), - (0x10C83, "M", "𐳃"), - (0x10C84, "M", "𐳄"), - (0x10C85, "M", "𐳅"), - (0x10C86, "M", "𐳆"), - (0x10C87, "M", "𐳇"), - (0x10C88, "M", "𐳈"), - (0x10C89, "M", "𐳉"), - (0x10C8A, "M", "𐳊"), - (0x10C8B, "M", "𐳋"), - (0x10C8C, "M", "𐳌"), - (0x10C8D, "M", "𐳍"), - (0x10C8E, "M", "𐳎"), - (0x10C8F, "M", "𐳏"), - (0x10C90, "M", "𐳐"), - (0x10C91, "M", "𐳑"), - (0x10C92, "M", "𐳒"), - (0x10C93, "M", "𐳓"), - (0x10C94, "M", "𐳔"), - (0x10C95, "M", "𐳕"), - (0x10C96, "M", "𐳖"), - (0x10C97, "M", "𐳗"), - (0x10C98, "M", "𐳘"), - (0x10C99, "M", "𐳙"), - (0x10C9A, "M", "𐳚"), - (0x10C9B, "M", "𐳛"), - (0x10C9C, "M", "𐳜"), - (0x10C9D, "M", "𐳝"), - (0x10C9E, "M", "𐳞"), - (0x10C9F, "M", "𐳟"), - (0x10CA0, "M", "𐳠"), - (0x10CA1, "M", "𐳡"), - (0x10CA2, "M", "𐳢"), - (0x10CA3, "M", "𐳣"), - (0x10CA4, "M", "𐳤"), - (0x10CA5, "M", "𐳥"), - (0x10CA6, "M", "𐳦"), - (0x10CA7, "M", "𐳧"), - (0x10CA8, "M", "𐳨"), - (0x10CA9, "M", "𐳩"), - (0x10CAA, "M", "𐳪"), - (0x10CAB, "M", "𐳫"), - (0x10CAC, "M", "𐳬"), - (0x10CAD, "M", "𐳭"), - (0x10CAE, "M", "𐳮"), - (0x10CAF, "M", "𐳯"), - (0x10CB0, "M", "𐳰"), - (0x10CB1, "M", "𐳱"), - (0x10CB2, "M", "𐳲"), - (0x10CB3, "X"), - (0x10CC0, "V"), - (0x10CF3, "X"), - (0x10CFA, "V"), - (0x10D28, "X"), - (0x10D30, "V"), - (0x10D3A, "X"), - (0x10E60, "V"), - (0x10E7F, "X"), - (0x10E80, "V"), - (0x10EAA, "X"), - (0x10EAB, "V"), - (0x10EAE, "X"), - (0x10EB0, "V"), - (0x10EB2, "X"), - (0x10EFD, "V"), - (0x10F28, "X"), - (0x10F30, "V"), - (0x10F5A, "X"), - (0x10F70, "V"), - (0x10F8A, "X"), - (0x10FB0, "V"), - (0x10FCC, "X"), - (0x10FE0, "V"), - (0x10FF7, "X"), - (0x11000, "V"), - (0x1104E, "X"), - (0x11052, "V"), - (0x11076, "X"), - (0x1107F, "V"), - (0x110BD, "X"), - (0x110BE, "V"), - (0x110C3, "X"), - (0x110D0, "V"), - (0x110E9, "X"), - (0x110F0, "V"), - ] - - -def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x110FA, "X"), - (0x11100, "V"), - (0x11135, "X"), - (0x11136, "V"), - (0x11148, "X"), - (0x11150, "V"), - (0x11177, "X"), - (0x11180, "V"), - (0x111E0, "X"), - (0x111E1, "V"), - (0x111F5, "X"), - (0x11200, "V"), - (0x11212, "X"), - (0x11213, "V"), - (0x11242, "X"), - (0x11280, "V"), - (0x11287, "X"), - (0x11288, "V"), - (0x11289, "X"), - (0x1128A, "V"), - (0x1128E, "X"), - (0x1128F, "V"), - (0x1129E, "X"), - (0x1129F, "V"), - (0x112AA, "X"), - (0x112B0, "V"), - (0x112EB, "X"), - (0x112F0, "V"), - (0x112FA, "X"), - (0x11300, "V"), - (0x11304, "X"), - (0x11305, "V"), - (0x1130D, "X"), - (0x1130F, "V"), - (0x11311, "X"), - (0x11313, "V"), - (0x11329, "X"), - (0x1132A, "V"), - (0x11331, "X"), - (0x11332, "V"), - (0x11334, "X"), - (0x11335, "V"), - (0x1133A, "X"), - (0x1133B, "V"), - (0x11345, "X"), - (0x11347, "V"), - (0x11349, "X"), - (0x1134B, "V"), - (0x1134E, "X"), - (0x11350, "V"), - (0x11351, "X"), - (0x11357, "V"), - (0x11358, "X"), - (0x1135D, "V"), - (0x11364, "X"), - (0x11366, "V"), - (0x1136D, "X"), - (0x11370, "V"), - (0x11375, "X"), - (0x11400, "V"), - (0x1145C, "X"), - (0x1145D, "V"), - (0x11462, "X"), - (0x11480, "V"), - (0x114C8, "X"), - (0x114D0, "V"), - (0x114DA, "X"), - (0x11580, "V"), - (0x115B6, "X"), - (0x115B8, "V"), - (0x115DE, "X"), - (0x11600, "V"), - (0x11645, "X"), - (0x11650, "V"), - (0x1165A, "X"), - (0x11660, "V"), - (0x1166D, "X"), - (0x11680, "V"), - (0x116BA, "X"), - (0x116C0, "V"), - (0x116CA, "X"), - (0x11700, "V"), - (0x1171B, "X"), - (0x1171D, "V"), - (0x1172C, "X"), - (0x11730, "V"), - (0x11747, "X"), - (0x11800, "V"), - (0x1183C, "X"), - (0x118A0, "M", "𑣀"), - (0x118A1, "M", "𑣁"), - (0x118A2, "M", "𑣂"), - (0x118A3, "M", "𑣃"), - (0x118A4, "M", "𑣄"), - (0x118A5, "M", "𑣅"), - (0x118A6, "M", "𑣆"), - (0x118A7, "M", "𑣇"), - (0x118A8, "M", "𑣈"), - (0x118A9, "M", "𑣉"), - (0x118AA, "M", "𑣊"), - ] - - -def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x118AB, "M", "𑣋"), - (0x118AC, "M", "𑣌"), - (0x118AD, "M", "𑣍"), - (0x118AE, "M", "𑣎"), - (0x118AF, "M", "𑣏"), - (0x118B0, "M", "𑣐"), - (0x118B1, "M", "𑣑"), - (0x118B2, "M", "𑣒"), - (0x118B3, "M", "𑣓"), - (0x118B4, "M", "𑣔"), - (0x118B5, "M", "𑣕"), - (0x118B6, "M", "𑣖"), - (0x118B7, "M", "𑣗"), - (0x118B8, "M", "𑣘"), - (0x118B9, "M", "𑣙"), - (0x118BA, "M", "𑣚"), - (0x118BB, "M", "𑣛"), - (0x118BC, "M", "𑣜"), - (0x118BD, "M", "𑣝"), - (0x118BE, "M", "𑣞"), - (0x118BF, "M", "𑣟"), - (0x118C0, "V"), - (0x118F3, "X"), - (0x118FF, "V"), - (0x11907, "X"), - (0x11909, "V"), - (0x1190A, "X"), - (0x1190C, "V"), - (0x11914, "X"), - (0x11915, "V"), - (0x11917, "X"), - (0x11918, "V"), - (0x11936, "X"), - (0x11937, "V"), - (0x11939, "X"), - (0x1193B, "V"), - (0x11947, "X"), - (0x11950, "V"), - (0x1195A, "X"), - (0x119A0, "V"), - (0x119A8, "X"), - (0x119AA, "V"), - (0x119D8, "X"), - (0x119DA, "V"), - (0x119E5, "X"), - (0x11A00, "V"), - (0x11A48, "X"), - (0x11A50, "V"), - (0x11AA3, "X"), - (0x11AB0, "V"), - (0x11AF9, "X"), - (0x11B00, "V"), - (0x11B0A, "X"), - (0x11C00, "V"), - (0x11C09, "X"), - (0x11C0A, "V"), - (0x11C37, "X"), - (0x11C38, "V"), - (0x11C46, "X"), - (0x11C50, "V"), - (0x11C6D, "X"), - (0x11C70, "V"), - (0x11C90, "X"), - (0x11C92, "V"), - (0x11CA8, "X"), - (0x11CA9, "V"), - (0x11CB7, "X"), - (0x11D00, "V"), - (0x11D07, "X"), - (0x11D08, "V"), - (0x11D0A, "X"), - (0x11D0B, "V"), - (0x11D37, "X"), - (0x11D3A, "V"), - (0x11D3B, "X"), - (0x11D3C, "V"), - (0x11D3E, "X"), - (0x11D3F, "V"), - (0x11D48, "X"), - (0x11D50, "V"), - (0x11D5A, "X"), - (0x11D60, "V"), - (0x11D66, "X"), - (0x11D67, "V"), - (0x11D69, "X"), - (0x11D6A, "V"), - (0x11D8F, "X"), - (0x11D90, "V"), - (0x11D92, "X"), - (0x11D93, "V"), - (0x11D99, "X"), - (0x11DA0, "V"), - (0x11DAA, "X"), - (0x11EE0, "V"), - (0x11EF9, "X"), - (0x11F00, "V"), - (0x11F11, "X"), - (0x11F12, "V"), - (0x11F3B, "X"), - (0x11F3E, "V"), - ] - - -def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x11F5A, "X"), - (0x11FB0, "V"), - (0x11FB1, "X"), - (0x11FC0, "V"), - (0x11FF2, "X"), - (0x11FFF, "V"), - (0x1239A, "X"), - (0x12400, "V"), - (0x1246F, "X"), - (0x12470, "V"), - (0x12475, "X"), - (0x12480, "V"), - (0x12544, "X"), - (0x12F90, "V"), - (0x12FF3, "X"), - (0x13000, "V"), - (0x13430, "X"), - (0x13440, "V"), - (0x13456, "X"), - (0x14400, "V"), - (0x14647, "X"), - (0x16800, "V"), - (0x16A39, "X"), - (0x16A40, "V"), - (0x16A5F, "X"), - (0x16A60, "V"), - (0x16A6A, "X"), - (0x16A6E, "V"), - (0x16ABF, "X"), - (0x16AC0, "V"), - (0x16ACA, "X"), - (0x16AD0, "V"), - (0x16AEE, "X"), - (0x16AF0, "V"), - (0x16AF6, "X"), - (0x16B00, "V"), - (0x16B46, "X"), - (0x16B50, "V"), - (0x16B5A, "X"), - (0x16B5B, "V"), - (0x16B62, "X"), - (0x16B63, "V"), - (0x16B78, "X"), - (0x16B7D, "V"), - (0x16B90, "X"), - (0x16E40, "M", "𖹠"), - (0x16E41, "M", "𖹡"), - (0x16E42, "M", "𖹢"), - (0x16E43, "M", "𖹣"), - (0x16E44, "M", "𖹤"), - (0x16E45, "M", "𖹥"), - (0x16E46, "M", "𖹦"), - (0x16E47, "M", "𖹧"), - (0x16E48, "M", "𖹨"), - (0x16E49, "M", "𖹩"), - (0x16E4A, "M", "𖹪"), - (0x16E4B, "M", "𖹫"), - (0x16E4C, "M", "𖹬"), - (0x16E4D, "M", "𖹭"), - (0x16E4E, "M", "𖹮"), - (0x16E4F, "M", "𖹯"), - (0x16E50, "M", "𖹰"), - (0x16E51, "M", "𖹱"), - (0x16E52, "M", "𖹲"), - (0x16E53, "M", "𖹳"), - (0x16E54, "M", "𖹴"), - (0x16E55, "M", "𖹵"), - (0x16E56, "M", "𖹶"), - (0x16E57, "M", "𖹷"), - (0x16E58, "M", "𖹸"), - (0x16E59, "M", "𖹹"), - (0x16E5A, "M", "𖹺"), - (0x16E5B, "M", "𖹻"), - (0x16E5C, "M", "𖹼"), - (0x16E5D, "M", "𖹽"), - (0x16E5E, "M", "𖹾"), - (0x16E5F, "M", "𖹿"), - (0x16E60, "V"), - (0x16E9B, "X"), - (0x16F00, "V"), - (0x16F4B, "X"), - (0x16F4F, "V"), - (0x16F88, "X"), - (0x16F8F, "V"), - (0x16FA0, "X"), - (0x16FE0, "V"), - (0x16FE5, "X"), - (0x16FF0, "V"), - (0x16FF2, "X"), - (0x17000, "V"), - (0x187F8, "X"), - (0x18800, "V"), - (0x18CD6, "X"), - (0x18D00, "V"), - (0x18D09, "X"), - (0x1AFF0, "V"), - (0x1AFF4, "X"), - (0x1AFF5, "V"), - (0x1AFFC, "X"), - (0x1AFFD, "V"), - ] - - -def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1AFFF, "X"), - (0x1B000, "V"), - (0x1B123, "X"), - (0x1B132, "V"), - (0x1B133, "X"), - (0x1B150, "V"), - (0x1B153, "X"), - (0x1B155, "V"), - (0x1B156, "X"), - (0x1B164, "V"), - (0x1B168, "X"), - (0x1B170, "V"), - (0x1B2FC, "X"), - (0x1BC00, "V"), - (0x1BC6B, "X"), - (0x1BC70, "V"), - (0x1BC7D, "X"), - (0x1BC80, "V"), - (0x1BC89, "X"), - (0x1BC90, "V"), - (0x1BC9A, "X"), - (0x1BC9C, "V"), - (0x1BCA0, "I"), - (0x1BCA4, "X"), - (0x1CF00, "V"), - (0x1CF2E, "X"), - (0x1CF30, "V"), - (0x1CF47, "X"), - (0x1CF50, "V"), - (0x1CFC4, "X"), - (0x1D000, "V"), - (0x1D0F6, "X"), - (0x1D100, "V"), - (0x1D127, "X"), - (0x1D129, "V"), - (0x1D15E, "M", "𝅗𝅥"), - (0x1D15F, "M", "𝅘𝅥"), - (0x1D160, "M", "𝅘𝅥𝅮"), - (0x1D161, "M", "𝅘𝅥𝅯"), - (0x1D162, "M", "𝅘𝅥𝅰"), - (0x1D163, "M", "𝅘𝅥𝅱"), - (0x1D164, "M", "𝅘𝅥𝅲"), - (0x1D165, "V"), - (0x1D173, "X"), - (0x1D17B, "V"), - (0x1D1BB, "M", "𝆹𝅥"), - (0x1D1BC, "M", "𝆺𝅥"), - (0x1D1BD, "M", "𝆹𝅥𝅮"), - (0x1D1BE, "M", "𝆺𝅥𝅮"), - (0x1D1BF, "M", "𝆹𝅥𝅯"), - (0x1D1C0, "M", "𝆺𝅥𝅯"), - (0x1D1C1, "V"), - (0x1D1EB, "X"), - (0x1D200, "V"), - (0x1D246, "X"), - (0x1D2C0, "V"), - (0x1D2D4, "X"), - (0x1D2E0, "V"), - (0x1D2F4, "X"), - (0x1D300, "V"), - (0x1D357, "X"), - (0x1D360, "V"), - (0x1D379, "X"), - (0x1D400, "M", "a"), - (0x1D401, "M", "b"), - (0x1D402, "M", "c"), - (0x1D403, "M", "d"), - (0x1D404, "M", "e"), - (0x1D405, "M", "f"), - (0x1D406, "M", "g"), - (0x1D407, "M", "h"), - (0x1D408, "M", "i"), - (0x1D409, "M", "j"), - (0x1D40A, "M", "k"), - (0x1D40B, "M", "l"), - (0x1D40C, "M", "m"), - (0x1D40D, "M", "n"), - (0x1D40E, "M", "o"), - (0x1D40F, "M", "p"), - (0x1D410, "M", "q"), - (0x1D411, "M", "r"), - (0x1D412, "M", "s"), - (0x1D413, "M", "t"), - (0x1D414, "M", "u"), - (0x1D415, "M", "v"), - (0x1D416, "M", "w"), - (0x1D417, "M", "x"), - (0x1D418, "M", "y"), - (0x1D419, "M", "z"), - (0x1D41A, "M", "a"), - (0x1D41B, "M", "b"), - (0x1D41C, "M", "c"), - (0x1D41D, "M", "d"), - (0x1D41E, "M", "e"), - (0x1D41F, "M", "f"), - (0x1D420, "M", "g"), - (0x1D421, "M", "h"), - (0x1D422, "M", "i"), - (0x1D423, "M", "j"), - (0x1D424, "M", "k"), - ] - - -def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D425, "M", "l"), - (0x1D426, "M", "m"), - (0x1D427, "M", "n"), - (0x1D428, "M", "o"), - (0x1D429, "M", "p"), - (0x1D42A, "M", "q"), - (0x1D42B, "M", "r"), - (0x1D42C, "M", "s"), - (0x1D42D, "M", "t"), - (0x1D42E, "M", "u"), - (0x1D42F, "M", "v"), - (0x1D430, "M", "w"), - (0x1D431, "M", "x"), - (0x1D432, "M", "y"), - (0x1D433, "M", "z"), - (0x1D434, "M", "a"), - (0x1D435, "M", "b"), - (0x1D436, "M", "c"), - (0x1D437, "M", "d"), - (0x1D438, "M", "e"), - (0x1D439, "M", "f"), - (0x1D43A, "M", "g"), - (0x1D43B, "M", "h"), - (0x1D43C, "M", "i"), - (0x1D43D, "M", "j"), - (0x1D43E, "M", "k"), - (0x1D43F, "M", "l"), - (0x1D440, "M", "m"), - (0x1D441, "M", "n"), - (0x1D442, "M", "o"), - (0x1D443, "M", "p"), - (0x1D444, "M", "q"), - (0x1D445, "M", "r"), - (0x1D446, "M", "s"), - (0x1D447, "M", "t"), - (0x1D448, "M", "u"), - (0x1D449, "M", "v"), - (0x1D44A, "M", "w"), - (0x1D44B, "M", "x"), - (0x1D44C, "M", "y"), - (0x1D44D, "M", "z"), - (0x1D44E, "M", "a"), - (0x1D44F, "M", "b"), - (0x1D450, "M", "c"), - (0x1D451, "M", "d"), - (0x1D452, "M", "e"), - (0x1D453, "M", "f"), - (0x1D454, "M", "g"), - (0x1D455, "X"), - (0x1D456, "M", "i"), - (0x1D457, "M", "j"), - (0x1D458, "M", "k"), - (0x1D459, "M", "l"), - (0x1D45A, "M", "m"), - (0x1D45B, "M", "n"), - (0x1D45C, "M", "o"), - (0x1D45D, "M", "p"), - (0x1D45E, "M", "q"), - (0x1D45F, "M", "r"), - (0x1D460, "M", "s"), - (0x1D461, "M", "t"), - (0x1D462, "M", "u"), - (0x1D463, "M", "v"), - (0x1D464, "M", "w"), - (0x1D465, "M", "x"), - (0x1D466, "M", "y"), - (0x1D467, "M", "z"), - (0x1D468, "M", "a"), - (0x1D469, "M", "b"), - (0x1D46A, "M", "c"), - (0x1D46B, "M", "d"), - (0x1D46C, "M", "e"), - (0x1D46D, "M", "f"), - (0x1D46E, "M", "g"), - (0x1D46F, "M", "h"), - (0x1D470, "M", "i"), - (0x1D471, "M", "j"), - (0x1D472, "M", "k"), - (0x1D473, "M", "l"), - (0x1D474, "M", "m"), - (0x1D475, "M", "n"), - (0x1D476, "M", "o"), - (0x1D477, "M", "p"), - (0x1D478, "M", "q"), - (0x1D479, "M", "r"), - (0x1D47A, "M", "s"), - (0x1D47B, "M", "t"), - (0x1D47C, "M", "u"), - (0x1D47D, "M", "v"), - (0x1D47E, "M", "w"), - (0x1D47F, "M", "x"), - (0x1D480, "M", "y"), - (0x1D481, "M", "z"), - (0x1D482, "M", "a"), - (0x1D483, "M", "b"), - (0x1D484, "M", "c"), - (0x1D485, "M", "d"), - (0x1D486, "M", "e"), - (0x1D487, "M", "f"), - (0x1D488, "M", "g"), - ] - - -def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D489, "M", "h"), - (0x1D48A, "M", "i"), - (0x1D48B, "M", "j"), - (0x1D48C, "M", "k"), - (0x1D48D, "M", "l"), - (0x1D48E, "M", "m"), - (0x1D48F, "M", "n"), - (0x1D490, "M", "o"), - (0x1D491, "M", "p"), - (0x1D492, "M", "q"), - (0x1D493, "M", "r"), - (0x1D494, "M", "s"), - (0x1D495, "M", "t"), - (0x1D496, "M", "u"), - (0x1D497, "M", "v"), - (0x1D498, "M", "w"), - (0x1D499, "M", "x"), - (0x1D49A, "M", "y"), - (0x1D49B, "M", "z"), - (0x1D49C, "M", "a"), - (0x1D49D, "X"), - (0x1D49E, "M", "c"), - (0x1D49F, "M", "d"), - (0x1D4A0, "X"), - (0x1D4A2, "M", "g"), - (0x1D4A3, "X"), - (0x1D4A5, "M", "j"), - (0x1D4A6, "M", "k"), - (0x1D4A7, "X"), - (0x1D4A9, "M", "n"), - (0x1D4AA, "M", "o"), - (0x1D4AB, "M", "p"), - (0x1D4AC, "M", "q"), - (0x1D4AD, "X"), - (0x1D4AE, "M", "s"), - (0x1D4AF, "M", "t"), - (0x1D4B0, "M", "u"), - (0x1D4B1, "M", "v"), - (0x1D4B2, "M", "w"), - (0x1D4B3, "M", "x"), - (0x1D4B4, "M", "y"), - (0x1D4B5, "M", "z"), - (0x1D4B6, "M", "a"), - (0x1D4B7, "M", "b"), - (0x1D4B8, "M", "c"), - (0x1D4B9, "M", "d"), - (0x1D4BA, "X"), - (0x1D4BB, "M", "f"), - (0x1D4BC, "X"), - (0x1D4BD, "M", "h"), - (0x1D4BE, "M", "i"), - (0x1D4BF, "M", "j"), - (0x1D4C0, "M", "k"), - (0x1D4C1, "M", "l"), - (0x1D4C2, "M", "m"), - (0x1D4C3, "M", "n"), - (0x1D4C4, "X"), - (0x1D4C5, "M", "p"), - (0x1D4C6, "M", "q"), - (0x1D4C7, "M", "r"), - (0x1D4C8, "M", "s"), - (0x1D4C9, "M", "t"), - (0x1D4CA, "M", "u"), - (0x1D4CB, "M", "v"), - (0x1D4CC, "M", "w"), - (0x1D4CD, "M", "x"), - (0x1D4CE, "M", "y"), - (0x1D4CF, "M", "z"), - (0x1D4D0, "M", "a"), - (0x1D4D1, "M", "b"), - (0x1D4D2, "M", "c"), - (0x1D4D3, "M", "d"), - (0x1D4D4, "M", "e"), - (0x1D4D5, "M", "f"), - (0x1D4D6, "M", "g"), - (0x1D4D7, "M", "h"), - (0x1D4D8, "M", "i"), - (0x1D4D9, "M", "j"), - (0x1D4DA, "M", "k"), - (0x1D4DB, "M", "l"), - (0x1D4DC, "M", "m"), - (0x1D4DD, "M", "n"), - (0x1D4DE, "M", "o"), - (0x1D4DF, "M", "p"), - (0x1D4E0, "M", "q"), - (0x1D4E1, "M", "r"), - (0x1D4E2, "M", "s"), - (0x1D4E3, "M", "t"), - (0x1D4E4, "M", "u"), - (0x1D4E5, "M", "v"), - (0x1D4E6, "M", "w"), - (0x1D4E7, "M", "x"), - (0x1D4E8, "M", "y"), - (0x1D4E9, "M", "z"), - (0x1D4EA, "M", "a"), - (0x1D4EB, "M", "b"), - (0x1D4EC, "M", "c"), - (0x1D4ED, "M", "d"), - (0x1D4EE, "M", "e"), - (0x1D4EF, "M", "f"), - ] - - -def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D4F0, "M", "g"), - (0x1D4F1, "M", "h"), - (0x1D4F2, "M", "i"), - (0x1D4F3, "M", "j"), - (0x1D4F4, "M", "k"), - (0x1D4F5, "M", "l"), - (0x1D4F6, "M", "m"), - (0x1D4F7, "M", "n"), - (0x1D4F8, "M", "o"), - (0x1D4F9, "M", "p"), - (0x1D4FA, "M", "q"), - (0x1D4FB, "M", "r"), - (0x1D4FC, "M", "s"), - (0x1D4FD, "M", "t"), - (0x1D4FE, "M", "u"), - (0x1D4FF, "M", "v"), - (0x1D500, "M", "w"), - (0x1D501, "M", "x"), - (0x1D502, "M", "y"), - (0x1D503, "M", "z"), - (0x1D504, "M", "a"), - (0x1D505, "M", "b"), - (0x1D506, "X"), - (0x1D507, "M", "d"), - (0x1D508, "M", "e"), - (0x1D509, "M", "f"), - (0x1D50A, "M", "g"), - (0x1D50B, "X"), - (0x1D50D, "M", "j"), - (0x1D50E, "M", "k"), - (0x1D50F, "M", "l"), - (0x1D510, "M", "m"), - (0x1D511, "M", "n"), - (0x1D512, "M", "o"), - (0x1D513, "M", "p"), - (0x1D514, "M", "q"), - (0x1D515, "X"), - (0x1D516, "M", "s"), - (0x1D517, "M", "t"), - (0x1D518, "M", "u"), - (0x1D519, "M", "v"), - (0x1D51A, "M", "w"), - (0x1D51B, "M", "x"), - (0x1D51C, "M", "y"), - (0x1D51D, "X"), - (0x1D51E, "M", "a"), - (0x1D51F, "M", "b"), - (0x1D520, "M", "c"), - (0x1D521, "M", "d"), - (0x1D522, "M", "e"), - (0x1D523, "M", "f"), - (0x1D524, "M", "g"), - (0x1D525, "M", "h"), - (0x1D526, "M", "i"), - (0x1D527, "M", "j"), - (0x1D528, "M", "k"), - (0x1D529, "M", "l"), - (0x1D52A, "M", "m"), - (0x1D52B, "M", "n"), - (0x1D52C, "M", "o"), - (0x1D52D, "M", "p"), - (0x1D52E, "M", "q"), - (0x1D52F, "M", "r"), - (0x1D530, "M", "s"), - (0x1D531, "M", "t"), - (0x1D532, "M", "u"), - (0x1D533, "M", "v"), - (0x1D534, "M", "w"), - (0x1D535, "M", "x"), - (0x1D536, "M", "y"), - (0x1D537, "M", "z"), - (0x1D538, "M", "a"), - (0x1D539, "M", "b"), - (0x1D53A, "X"), - (0x1D53B, "M", "d"), - (0x1D53C, "M", "e"), - (0x1D53D, "M", "f"), - (0x1D53E, "M", "g"), - (0x1D53F, "X"), - (0x1D540, "M", "i"), - (0x1D541, "M", "j"), - (0x1D542, "M", "k"), - (0x1D543, "M", "l"), - (0x1D544, "M", "m"), - (0x1D545, "X"), - (0x1D546, "M", "o"), - (0x1D547, "X"), - (0x1D54A, "M", "s"), - (0x1D54B, "M", "t"), - (0x1D54C, "M", "u"), - (0x1D54D, "M", "v"), - (0x1D54E, "M", "w"), - (0x1D54F, "M", "x"), - (0x1D550, "M", "y"), - (0x1D551, "X"), - (0x1D552, "M", "a"), - (0x1D553, "M", "b"), - (0x1D554, "M", "c"), - (0x1D555, "M", "d"), - (0x1D556, "M", "e"), - ] - - -def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D557, "M", "f"), - (0x1D558, "M", "g"), - (0x1D559, "M", "h"), - (0x1D55A, "M", "i"), - (0x1D55B, "M", "j"), - (0x1D55C, "M", "k"), - (0x1D55D, "M", "l"), - (0x1D55E, "M", "m"), - (0x1D55F, "M", "n"), - (0x1D560, "M", "o"), - (0x1D561, "M", "p"), - (0x1D562, "M", "q"), - (0x1D563, "M", "r"), - (0x1D564, "M", "s"), - (0x1D565, "M", "t"), - (0x1D566, "M", "u"), - (0x1D567, "M", "v"), - (0x1D568, "M", "w"), - (0x1D569, "M", "x"), - (0x1D56A, "M", "y"), - (0x1D56B, "M", "z"), - (0x1D56C, "M", "a"), - (0x1D56D, "M", "b"), - (0x1D56E, "M", "c"), - (0x1D56F, "M", "d"), - (0x1D570, "M", "e"), - (0x1D571, "M", "f"), - (0x1D572, "M", "g"), - (0x1D573, "M", "h"), - (0x1D574, "M", "i"), - (0x1D575, "M", "j"), - (0x1D576, "M", "k"), - (0x1D577, "M", "l"), - (0x1D578, "M", "m"), - (0x1D579, "M", "n"), - (0x1D57A, "M", "o"), - (0x1D57B, "M", "p"), - (0x1D57C, "M", "q"), - (0x1D57D, "M", "r"), - (0x1D57E, "M", "s"), - (0x1D57F, "M", "t"), - (0x1D580, "M", "u"), - (0x1D581, "M", "v"), - (0x1D582, "M", "w"), - (0x1D583, "M", "x"), - (0x1D584, "M", "y"), - (0x1D585, "M", "z"), - (0x1D586, "M", "a"), - (0x1D587, "M", "b"), - (0x1D588, "M", "c"), - (0x1D589, "M", "d"), - (0x1D58A, "M", "e"), - (0x1D58B, "M", "f"), - (0x1D58C, "M", "g"), - (0x1D58D, "M", "h"), - (0x1D58E, "M", "i"), - (0x1D58F, "M", "j"), - (0x1D590, "M", "k"), - (0x1D591, "M", "l"), - (0x1D592, "M", "m"), - (0x1D593, "M", "n"), - (0x1D594, "M", "o"), - (0x1D595, "M", "p"), - (0x1D596, "M", "q"), - (0x1D597, "M", "r"), - (0x1D598, "M", "s"), - (0x1D599, "M", "t"), - (0x1D59A, "M", "u"), - (0x1D59B, "M", "v"), - (0x1D59C, "M", "w"), - (0x1D59D, "M", "x"), - (0x1D59E, "M", "y"), - (0x1D59F, "M", "z"), - (0x1D5A0, "M", "a"), - (0x1D5A1, "M", "b"), - (0x1D5A2, "M", "c"), - (0x1D5A3, "M", "d"), - (0x1D5A4, "M", "e"), - (0x1D5A5, "M", "f"), - (0x1D5A6, "M", "g"), - (0x1D5A7, "M", "h"), - (0x1D5A8, "M", "i"), - (0x1D5A9, "M", "j"), - (0x1D5AA, "M", "k"), - (0x1D5AB, "M", "l"), - (0x1D5AC, "M", "m"), - (0x1D5AD, "M", "n"), - (0x1D5AE, "M", "o"), - (0x1D5AF, "M", "p"), - (0x1D5B0, "M", "q"), - (0x1D5B1, "M", "r"), - (0x1D5B2, "M", "s"), - (0x1D5B3, "M", "t"), - (0x1D5B4, "M", "u"), - (0x1D5B5, "M", "v"), - (0x1D5B6, "M", "w"), - (0x1D5B7, "M", "x"), - (0x1D5B8, "M", "y"), - (0x1D5B9, "M", "z"), - (0x1D5BA, "M", "a"), - ] - - -def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D5BB, "M", "b"), - (0x1D5BC, "M", "c"), - (0x1D5BD, "M", "d"), - (0x1D5BE, "M", "e"), - (0x1D5BF, "M", "f"), - (0x1D5C0, "M", "g"), - (0x1D5C1, "M", "h"), - (0x1D5C2, "M", "i"), - (0x1D5C3, "M", "j"), - (0x1D5C4, "M", "k"), - (0x1D5C5, "M", "l"), - (0x1D5C6, "M", "m"), - (0x1D5C7, "M", "n"), - (0x1D5C8, "M", "o"), - (0x1D5C9, "M", "p"), - (0x1D5CA, "M", "q"), - (0x1D5CB, "M", "r"), - (0x1D5CC, "M", "s"), - (0x1D5CD, "M", "t"), - (0x1D5CE, "M", "u"), - (0x1D5CF, "M", "v"), - (0x1D5D0, "M", "w"), - (0x1D5D1, "M", "x"), - (0x1D5D2, "M", "y"), - (0x1D5D3, "M", "z"), - (0x1D5D4, "M", "a"), - (0x1D5D5, "M", "b"), - (0x1D5D6, "M", "c"), - (0x1D5D7, "M", "d"), - (0x1D5D8, "M", "e"), - (0x1D5D9, "M", "f"), - (0x1D5DA, "M", "g"), - (0x1D5DB, "M", "h"), - (0x1D5DC, "M", "i"), - (0x1D5DD, "M", "j"), - (0x1D5DE, "M", "k"), - (0x1D5DF, "M", "l"), - (0x1D5E0, "M", "m"), - (0x1D5E1, "M", "n"), - (0x1D5E2, "M", "o"), - (0x1D5E3, "M", "p"), - (0x1D5E4, "M", "q"), - (0x1D5E5, "M", "r"), - (0x1D5E6, "M", "s"), - (0x1D5E7, "M", "t"), - (0x1D5E8, "M", "u"), - (0x1D5E9, "M", "v"), - (0x1D5EA, "M", "w"), - (0x1D5EB, "M", "x"), - (0x1D5EC, "M", "y"), - (0x1D5ED, "M", "z"), - (0x1D5EE, "M", "a"), - (0x1D5EF, "M", "b"), - (0x1D5F0, "M", "c"), - (0x1D5F1, "M", "d"), - (0x1D5F2, "M", "e"), - (0x1D5F3, "M", "f"), - (0x1D5F4, "M", "g"), - (0x1D5F5, "M", "h"), - (0x1D5F6, "M", "i"), - (0x1D5F7, "M", "j"), - (0x1D5F8, "M", "k"), - (0x1D5F9, "M", "l"), - (0x1D5FA, "M", "m"), - (0x1D5FB, "M", "n"), - (0x1D5FC, "M", "o"), - (0x1D5FD, "M", "p"), - (0x1D5FE, "M", "q"), - (0x1D5FF, "M", "r"), - (0x1D600, "M", "s"), - (0x1D601, "M", "t"), - (0x1D602, "M", "u"), - (0x1D603, "M", "v"), - (0x1D604, "M", "w"), - (0x1D605, "M", "x"), - (0x1D606, "M", "y"), - (0x1D607, "M", "z"), - (0x1D608, "M", "a"), - (0x1D609, "M", "b"), - (0x1D60A, "M", "c"), - (0x1D60B, "M", "d"), - (0x1D60C, "M", "e"), - (0x1D60D, "M", "f"), - (0x1D60E, "M", "g"), - (0x1D60F, "M", "h"), - (0x1D610, "M", "i"), - (0x1D611, "M", "j"), - (0x1D612, "M", "k"), - (0x1D613, "M", "l"), - (0x1D614, "M", "m"), - (0x1D615, "M", "n"), - (0x1D616, "M", "o"), - (0x1D617, "M", "p"), - (0x1D618, "M", "q"), - (0x1D619, "M", "r"), - (0x1D61A, "M", "s"), - (0x1D61B, "M", "t"), - (0x1D61C, "M", "u"), - (0x1D61D, "M", "v"), - (0x1D61E, "M", "w"), - ] - - -def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D61F, "M", "x"), - (0x1D620, "M", "y"), - (0x1D621, "M", "z"), - (0x1D622, "M", "a"), - (0x1D623, "M", "b"), - (0x1D624, "M", "c"), - (0x1D625, "M", "d"), - (0x1D626, "M", "e"), - (0x1D627, "M", "f"), - (0x1D628, "M", "g"), - (0x1D629, "M", "h"), - (0x1D62A, "M", "i"), - (0x1D62B, "M", "j"), - (0x1D62C, "M", "k"), - (0x1D62D, "M", "l"), - (0x1D62E, "M", "m"), - (0x1D62F, "M", "n"), - (0x1D630, "M", "o"), - (0x1D631, "M", "p"), - (0x1D632, "M", "q"), - (0x1D633, "M", "r"), - (0x1D634, "M", "s"), - (0x1D635, "M", "t"), - (0x1D636, "M", "u"), - (0x1D637, "M", "v"), - (0x1D638, "M", "w"), - (0x1D639, "M", "x"), - (0x1D63A, "M", "y"), - (0x1D63B, "M", "z"), - (0x1D63C, "M", "a"), - (0x1D63D, "M", "b"), - (0x1D63E, "M", "c"), - (0x1D63F, "M", "d"), - (0x1D640, "M", "e"), - (0x1D641, "M", "f"), - (0x1D642, "M", "g"), - (0x1D643, "M", "h"), - (0x1D644, "M", "i"), - (0x1D645, "M", "j"), - (0x1D646, "M", "k"), - (0x1D647, "M", "l"), - (0x1D648, "M", "m"), - (0x1D649, "M", "n"), - (0x1D64A, "M", "o"), - (0x1D64B, "M", "p"), - (0x1D64C, "M", "q"), - (0x1D64D, "M", "r"), - (0x1D64E, "M", "s"), - (0x1D64F, "M", "t"), - (0x1D650, "M", "u"), - (0x1D651, "M", "v"), - (0x1D652, "M", "w"), - (0x1D653, "M", "x"), - (0x1D654, "M", "y"), - (0x1D655, "M", "z"), - (0x1D656, "M", "a"), - (0x1D657, "M", "b"), - (0x1D658, "M", "c"), - (0x1D659, "M", "d"), - (0x1D65A, "M", "e"), - (0x1D65B, "M", "f"), - (0x1D65C, "M", "g"), - (0x1D65D, "M", "h"), - (0x1D65E, "M", "i"), - (0x1D65F, "M", "j"), - (0x1D660, "M", "k"), - (0x1D661, "M", "l"), - (0x1D662, "M", "m"), - (0x1D663, "M", "n"), - (0x1D664, "M", "o"), - (0x1D665, "M", "p"), - (0x1D666, "M", "q"), - (0x1D667, "M", "r"), - (0x1D668, "M", "s"), - (0x1D669, "M", "t"), - (0x1D66A, "M", "u"), - (0x1D66B, "M", "v"), - (0x1D66C, "M", "w"), - (0x1D66D, "M", "x"), - (0x1D66E, "M", "y"), - (0x1D66F, "M", "z"), - (0x1D670, "M", "a"), - (0x1D671, "M", "b"), - (0x1D672, "M", "c"), - (0x1D673, "M", "d"), - (0x1D674, "M", "e"), - (0x1D675, "M", "f"), - (0x1D676, "M", "g"), - (0x1D677, "M", "h"), - (0x1D678, "M", "i"), - (0x1D679, "M", "j"), - (0x1D67A, "M", "k"), - (0x1D67B, "M", "l"), - (0x1D67C, "M", "m"), - (0x1D67D, "M", "n"), - (0x1D67E, "M", "o"), - (0x1D67F, "M", "p"), - (0x1D680, "M", "q"), - (0x1D681, "M", "r"), - (0x1D682, "M", "s"), - ] - - -def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D683, "M", "t"), - (0x1D684, "M", "u"), - (0x1D685, "M", "v"), - (0x1D686, "M", "w"), - (0x1D687, "M", "x"), - (0x1D688, "M", "y"), - (0x1D689, "M", "z"), - (0x1D68A, "M", "a"), - (0x1D68B, "M", "b"), - (0x1D68C, "M", "c"), - (0x1D68D, "M", "d"), - (0x1D68E, "M", "e"), - (0x1D68F, "M", "f"), - (0x1D690, "M", "g"), - (0x1D691, "M", "h"), - (0x1D692, "M", "i"), - (0x1D693, "M", "j"), - (0x1D694, "M", "k"), - (0x1D695, "M", "l"), - (0x1D696, "M", "m"), - (0x1D697, "M", "n"), - (0x1D698, "M", "o"), - (0x1D699, "M", "p"), - (0x1D69A, "M", "q"), - (0x1D69B, "M", "r"), - (0x1D69C, "M", "s"), - (0x1D69D, "M", "t"), - (0x1D69E, "M", "u"), - (0x1D69F, "M", "v"), - (0x1D6A0, "M", "w"), - (0x1D6A1, "M", "x"), - (0x1D6A2, "M", "y"), - (0x1D6A3, "M", "z"), - (0x1D6A4, "M", "ı"), - (0x1D6A5, "M", "ȷ"), - (0x1D6A6, "X"), - (0x1D6A8, "M", "α"), - (0x1D6A9, "M", "β"), - (0x1D6AA, "M", "γ"), - (0x1D6AB, "M", "δ"), - (0x1D6AC, "M", "ε"), - (0x1D6AD, "M", "ζ"), - (0x1D6AE, "M", "η"), - (0x1D6AF, "M", "θ"), - (0x1D6B0, "M", "ι"), - (0x1D6B1, "M", "κ"), - (0x1D6B2, "M", "λ"), - (0x1D6B3, "M", "μ"), - (0x1D6B4, "M", "ν"), - (0x1D6B5, "M", "ξ"), - (0x1D6B6, "M", "ο"), - (0x1D6B7, "M", "π"), - (0x1D6B8, "M", "ρ"), - (0x1D6B9, "M", "θ"), - (0x1D6BA, "M", "σ"), - (0x1D6BB, "M", "τ"), - (0x1D6BC, "M", "υ"), - (0x1D6BD, "M", "φ"), - (0x1D6BE, "M", "χ"), - (0x1D6BF, "M", "ψ"), - (0x1D6C0, "M", "ω"), - (0x1D6C1, "M", "∇"), - (0x1D6C2, "M", "α"), - (0x1D6C3, "M", "β"), - (0x1D6C4, "M", "γ"), - (0x1D6C5, "M", "δ"), - (0x1D6C6, "M", "ε"), - (0x1D6C7, "M", "ζ"), - (0x1D6C8, "M", "η"), - (0x1D6C9, "M", "θ"), - (0x1D6CA, "M", "ι"), - (0x1D6CB, "M", "κ"), - (0x1D6CC, "M", "λ"), - (0x1D6CD, "M", "μ"), - (0x1D6CE, "M", "ν"), - (0x1D6CF, "M", "ξ"), - (0x1D6D0, "M", "ο"), - (0x1D6D1, "M", "π"), - (0x1D6D2, "M", "ρ"), - (0x1D6D3, "M", "σ"), - (0x1D6D5, "M", "τ"), - (0x1D6D6, "M", "υ"), - (0x1D6D7, "M", "φ"), - (0x1D6D8, "M", "χ"), - (0x1D6D9, "M", "ψ"), - (0x1D6DA, "M", "ω"), - (0x1D6DB, "M", "∂"), - (0x1D6DC, "M", "ε"), - (0x1D6DD, "M", "θ"), - (0x1D6DE, "M", "κ"), - (0x1D6DF, "M", "φ"), - (0x1D6E0, "M", "ρ"), - (0x1D6E1, "M", "π"), - (0x1D6E2, "M", "α"), - (0x1D6E3, "M", "β"), - (0x1D6E4, "M", "γ"), - (0x1D6E5, "M", "δ"), - (0x1D6E6, "M", "ε"), - (0x1D6E7, "M", "ζ"), - (0x1D6E8, "M", "η"), - ] - - -def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D6E9, "M", "θ"), - (0x1D6EA, "M", "ι"), - (0x1D6EB, "M", "κ"), - (0x1D6EC, "M", "λ"), - (0x1D6ED, "M", "μ"), - (0x1D6EE, "M", "ν"), - (0x1D6EF, "M", "ξ"), - (0x1D6F0, "M", "ο"), - (0x1D6F1, "M", "π"), - (0x1D6F2, "M", "ρ"), - (0x1D6F3, "M", "θ"), - (0x1D6F4, "M", "σ"), - (0x1D6F5, "M", "τ"), - (0x1D6F6, "M", "υ"), - (0x1D6F7, "M", "φ"), - (0x1D6F8, "M", "χ"), - (0x1D6F9, "M", "ψ"), - (0x1D6FA, "M", "ω"), - (0x1D6FB, "M", "∇"), - (0x1D6FC, "M", "α"), - (0x1D6FD, "M", "β"), - (0x1D6FE, "M", "γ"), - (0x1D6FF, "M", "δ"), - (0x1D700, "M", "ε"), - (0x1D701, "M", "ζ"), - (0x1D702, "M", "η"), - (0x1D703, "M", "θ"), - (0x1D704, "M", "ι"), - (0x1D705, "M", "κ"), - (0x1D706, "M", "λ"), - (0x1D707, "M", "μ"), - (0x1D708, "M", "ν"), - (0x1D709, "M", "ξ"), - (0x1D70A, "M", "ο"), - (0x1D70B, "M", "π"), - (0x1D70C, "M", "ρ"), - (0x1D70D, "M", "σ"), - (0x1D70F, "M", "τ"), - (0x1D710, "M", "υ"), - (0x1D711, "M", "φ"), - (0x1D712, "M", "χ"), - (0x1D713, "M", "ψ"), - (0x1D714, "M", "ω"), - (0x1D715, "M", "∂"), - (0x1D716, "M", "ε"), - (0x1D717, "M", "θ"), - (0x1D718, "M", "κ"), - (0x1D719, "M", "φ"), - (0x1D71A, "M", "ρ"), - (0x1D71B, "M", "π"), - (0x1D71C, "M", "α"), - (0x1D71D, "M", "β"), - (0x1D71E, "M", "γ"), - (0x1D71F, "M", "δ"), - (0x1D720, "M", "ε"), - (0x1D721, "M", "ζ"), - (0x1D722, "M", "η"), - (0x1D723, "M", "θ"), - (0x1D724, "M", "ι"), - (0x1D725, "M", "κ"), - (0x1D726, "M", "λ"), - (0x1D727, "M", "μ"), - (0x1D728, "M", "ν"), - (0x1D729, "M", "ξ"), - (0x1D72A, "M", "ο"), - (0x1D72B, "M", "π"), - (0x1D72C, "M", "ρ"), - (0x1D72D, "M", "θ"), - (0x1D72E, "M", "σ"), - (0x1D72F, "M", "τ"), - (0x1D730, "M", "υ"), - (0x1D731, "M", "φ"), - (0x1D732, "M", "χ"), - (0x1D733, "M", "ψ"), - (0x1D734, "M", "ω"), - (0x1D735, "M", "∇"), - (0x1D736, "M", "α"), - (0x1D737, "M", "β"), - (0x1D738, "M", "γ"), - (0x1D739, "M", "δ"), - (0x1D73A, "M", "ε"), - (0x1D73B, "M", "ζ"), - (0x1D73C, "M", "η"), - (0x1D73D, "M", "θ"), - (0x1D73E, "M", "ι"), - (0x1D73F, "M", "κ"), - (0x1D740, "M", "λ"), - (0x1D741, "M", "μ"), - (0x1D742, "M", "ν"), - (0x1D743, "M", "ξ"), - (0x1D744, "M", "ο"), - (0x1D745, "M", "π"), - (0x1D746, "M", "ρ"), - (0x1D747, "M", "σ"), - (0x1D749, "M", "τ"), - (0x1D74A, "M", "υ"), - (0x1D74B, "M", "φ"), - (0x1D74C, "M", "χ"), - (0x1D74D, "M", "ψ"), - (0x1D74E, "M", "ω"), - ] - - -def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D74F, "M", "∂"), - (0x1D750, "M", "ε"), - (0x1D751, "M", "θ"), - (0x1D752, "M", "κ"), - (0x1D753, "M", "φ"), - (0x1D754, "M", "ρ"), - (0x1D755, "M", "π"), - (0x1D756, "M", "α"), - (0x1D757, "M", "β"), - (0x1D758, "M", "γ"), - (0x1D759, "M", "δ"), - (0x1D75A, "M", "ε"), - (0x1D75B, "M", "ζ"), - (0x1D75C, "M", "η"), - (0x1D75D, "M", "θ"), - (0x1D75E, "M", "ι"), - (0x1D75F, "M", "κ"), - (0x1D760, "M", "λ"), - (0x1D761, "M", "μ"), - (0x1D762, "M", "ν"), - (0x1D763, "M", "ξ"), - (0x1D764, "M", "ο"), - (0x1D765, "M", "π"), - (0x1D766, "M", "ρ"), - (0x1D767, "M", "θ"), - (0x1D768, "M", "σ"), - (0x1D769, "M", "τ"), - (0x1D76A, "M", "υ"), - (0x1D76B, "M", "φ"), - (0x1D76C, "M", "χ"), - (0x1D76D, "M", "ψ"), - (0x1D76E, "M", "ω"), - (0x1D76F, "M", "∇"), - (0x1D770, "M", "α"), - (0x1D771, "M", "β"), - (0x1D772, "M", "γ"), - (0x1D773, "M", "δ"), - (0x1D774, "M", "ε"), - (0x1D775, "M", "ζ"), - (0x1D776, "M", "η"), - (0x1D777, "M", "θ"), - (0x1D778, "M", "ι"), - (0x1D779, "M", "κ"), - (0x1D77A, "M", "λ"), - (0x1D77B, "M", "μ"), - (0x1D77C, "M", "ν"), - (0x1D77D, "M", "ξ"), - (0x1D77E, "M", "ο"), - (0x1D77F, "M", "π"), - (0x1D780, "M", "ρ"), - (0x1D781, "M", "σ"), - (0x1D783, "M", "τ"), - (0x1D784, "M", "υ"), - (0x1D785, "M", "φ"), - (0x1D786, "M", "χ"), - (0x1D787, "M", "ψ"), - (0x1D788, "M", "ω"), - (0x1D789, "M", "∂"), - (0x1D78A, "M", "ε"), - (0x1D78B, "M", "θ"), - (0x1D78C, "M", "κ"), - (0x1D78D, "M", "φ"), - (0x1D78E, "M", "ρ"), - (0x1D78F, "M", "π"), - (0x1D790, "M", "α"), - (0x1D791, "M", "β"), - (0x1D792, "M", "γ"), - (0x1D793, "M", "δ"), - (0x1D794, "M", "ε"), - (0x1D795, "M", "ζ"), - (0x1D796, "M", "η"), - (0x1D797, "M", "θ"), - (0x1D798, "M", "ι"), - (0x1D799, "M", "κ"), - (0x1D79A, "M", "λ"), - (0x1D79B, "M", "μ"), - (0x1D79C, "M", "ν"), - (0x1D79D, "M", "ξ"), - (0x1D79E, "M", "ο"), - (0x1D79F, "M", "π"), - (0x1D7A0, "M", "ρ"), - (0x1D7A1, "M", "θ"), - (0x1D7A2, "M", "σ"), - (0x1D7A3, "M", "τ"), - (0x1D7A4, "M", "υ"), - (0x1D7A5, "M", "φ"), - (0x1D7A6, "M", "χ"), - (0x1D7A7, "M", "ψ"), - (0x1D7A8, "M", "ω"), - (0x1D7A9, "M", "∇"), - (0x1D7AA, "M", "α"), - (0x1D7AB, "M", "β"), - (0x1D7AC, "M", "γ"), - (0x1D7AD, "M", "δ"), - (0x1D7AE, "M", "ε"), - (0x1D7AF, "M", "ζ"), - (0x1D7B0, "M", "η"), - (0x1D7B1, "M", "θ"), - (0x1D7B2, "M", "ι"), - (0x1D7B3, "M", "κ"), - ] - - -def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1D7B4, "M", "λ"), - (0x1D7B5, "M", "μ"), - (0x1D7B6, "M", "ν"), - (0x1D7B7, "M", "ξ"), - (0x1D7B8, "M", "ο"), - (0x1D7B9, "M", "π"), - (0x1D7BA, "M", "ρ"), - (0x1D7BB, "M", "σ"), - (0x1D7BD, "M", "τ"), - (0x1D7BE, "M", "υ"), - (0x1D7BF, "M", "φ"), - (0x1D7C0, "M", "χ"), - (0x1D7C1, "M", "ψ"), - (0x1D7C2, "M", "ω"), - (0x1D7C3, "M", "∂"), - (0x1D7C4, "M", "ε"), - (0x1D7C5, "M", "θ"), - (0x1D7C6, "M", "κ"), - (0x1D7C7, "M", "φ"), - (0x1D7C8, "M", "ρ"), - (0x1D7C9, "M", "π"), - (0x1D7CA, "M", "ϝ"), - (0x1D7CC, "X"), - (0x1D7CE, "M", "0"), - (0x1D7CF, "M", "1"), - (0x1D7D0, "M", "2"), - (0x1D7D1, "M", "3"), - (0x1D7D2, "M", "4"), - (0x1D7D3, "M", "5"), - (0x1D7D4, "M", "6"), - (0x1D7D5, "M", "7"), - (0x1D7D6, "M", "8"), - (0x1D7D7, "M", "9"), - (0x1D7D8, "M", "0"), - (0x1D7D9, "M", "1"), - (0x1D7DA, "M", "2"), - (0x1D7DB, "M", "3"), - (0x1D7DC, "M", "4"), - (0x1D7DD, "M", "5"), - (0x1D7DE, "M", "6"), - (0x1D7DF, "M", "7"), - (0x1D7E0, "M", "8"), - (0x1D7E1, "M", "9"), - (0x1D7E2, "M", "0"), - (0x1D7E3, "M", "1"), - (0x1D7E4, "M", "2"), - (0x1D7E5, "M", "3"), - (0x1D7E6, "M", "4"), - (0x1D7E7, "M", "5"), - (0x1D7E8, "M", "6"), - (0x1D7E9, "M", "7"), - (0x1D7EA, "M", "8"), - (0x1D7EB, "M", "9"), - (0x1D7EC, "M", "0"), - (0x1D7ED, "M", "1"), - (0x1D7EE, "M", "2"), - (0x1D7EF, "M", "3"), - (0x1D7F0, "M", "4"), - (0x1D7F1, "M", "5"), - (0x1D7F2, "M", "6"), - (0x1D7F3, "M", "7"), - (0x1D7F4, "M", "8"), - (0x1D7F5, "M", "9"), - (0x1D7F6, "M", "0"), - (0x1D7F7, "M", "1"), - (0x1D7F8, "M", "2"), - (0x1D7F9, "M", "3"), - (0x1D7FA, "M", "4"), - (0x1D7FB, "M", "5"), - (0x1D7FC, "M", "6"), - (0x1D7FD, "M", "7"), - (0x1D7FE, "M", "8"), - (0x1D7FF, "M", "9"), - (0x1D800, "V"), - (0x1DA8C, "X"), - (0x1DA9B, "V"), - (0x1DAA0, "X"), - (0x1DAA1, "V"), - (0x1DAB0, "X"), - (0x1DF00, "V"), - (0x1DF1F, "X"), - (0x1DF25, "V"), - (0x1DF2B, "X"), - (0x1E000, "V"), - (0x1E007, "X"), - (0x1E008, "V"), - (0x1E019, "X"), - (0x1E01B, "V"), - (0x1E022, "X"), - (0x1E023, "V"), - (0x1E025, "X"), - (0x1E026, "V"), - (0x1E02B, "X"), - (0x1E030, "M", "а"), - (0x1E031, "M", "б"), - (0x1E032, "M", "в"), - (0x1E033, "M", "г"), - (0x1E034, "M", "д"), - (0x1E035, "M", "е"), - (0x1E036, "M", "ж"), - ] - - -def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E037, "M", "з"), - (0x1E038, "M", "и"), - (0x1E039, "M", "к"), - (0x1E03A, "M", "л"), - (0x1E03B, "M", "м"), - (0x1E03C, "M", "о"), - (0x1E03D, "M", "п"), - (0x1E03E, "M", "р"), - (0x1E03F, "M", "с"), - (0x1E040, "M", "т"), - (0x1E041, "M", "у"), - (0x1E042, "M", "ф"), - (0x1E043, "M", "х"), - (0x1E044, "M", "ц"), - (0x1E045, "M", "ч"), - (0x1E046, "M", "ш"), - (0x1E047, "M", "ы"), - (0x1E048, "M", "э"), - (0x1E049, "M", "ю"), - (0x1E04A, "M", "ꚉ"), - (0x1E04B, "M", "ә"), - (0x1E04C, "M", "і"), - (0x1E04D, "M", "ј"), - (0x1E04E, "M", "ө"), - (0x1E04F, "M", "ү"), - (0x1E050, "M", "ӏ"), - (0x1E051, "M", "а"), - (0x1E052, "M", "б"), - (0x1E053, "M", "в"), - (0x1E054, "M", "г"), - (0x1E055, "M", "д"), - (0x1E056, "M", "е"), - (0x1E057, "M", "ж"), - (0x1E058, "M", "з"), - (0x1E059, "M", "и"), - (0x1E05A, "M", "к"), - (0x1E05B, "M", "л"), - (0x1E05C, "M", "о"), - (0x1E05D, "M", "п"), - (0x1E05E, "M", "с"), - (0x1E05F, "M", "у"), - (0x1E060, "M", "ф"), - (0x1E061, "M", "х"), - (0x1E062, "M", "ц"), - (0x1E063, "M", "ч"), - (0x1E064, "M", "ш"), - (0x1E065, "M", "ъ"), - (0x1E066, "M", "ы"), - (0x1E067, "M", "ґ"), - (0x1E068, "M", "і"), - (0x1E069, "M", "ѕ"), - (0x1E06A, "M", "џ"), - (0x1E06B, "M", "ҫ"), - (0x1E06C, "M", "ꙑ"), - (0x1E06D, "M", "ұ"), - (0x1E06E, "X"), - (0x1E08F, "V"), - (0x1E090, "X"), - (0x1E100, "V"), - (0x1E12D, "X"), - (0x1E130, "V"), - (0x1E13E, "X"), - (0x1E140, "V"), - (0x1E14A, "X"), - (0x1E14E, "V"), - (0x1E150, "X"), - (0x1E290, "V"), - (0x1E2AF, "X"), - (0x1E2C0, "V"), - (0x1E2FA, "X"), - (0x1E2FF, "V"), - (0x1E300, "X"), - (0x1E4D0, "V"), - (0x1E4FA, "X"), - (0x1E7E0, "V"), - (0x1E7E7, "X"), - (0x1E7E8, "V"), - (0x1E7EC, "X"), - (0x1E7ED, "V"), - (0x1E7EF, "X"), - (0x1E7F0, "V"), - (0x1E7FF, "X"), - (0x1E800, "V"), - (0x1E8C5, "X"), - (0x1E8C7, "V"), - (0x1E8D7, "X"), - (0x1E900, "M", "𞤢"), - (0x1E901, "M", "𞤣"), - (0x1E902, "M", "𞤤"), - (0x1E903, "M", "𞤥"), - (0x1E904, "M", "𞤦"), - (0x1E905, "M", "𞤧"), - (0x1E906, "M", "𞤨"), - (0x1E907, "M", "𞤩"), - (0x1E908, "M", "𞤪"), - (0x1E909, "M", "𞤫"), - (0x1E90A, "M", "𞤬"), - (0x1E90B, "M", "𞤭"), - (0x1E90C, "M", "𞤮"), - (0x1E90D, "M", "𞤯"), - ] - - -def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1E90E, "M", "𞤰"), - (0x1E90F, "M", "𞤱"), - (0x1E910, "M", "𞤲"), - (0x1E911, "M", "𞤳"), - (0x1E912, "M", "𞤴"), - (0x1E913, "M", "𞤵"), - (0x1E914, "M", "𞤶"), - (0x1E915, "M", "𞤷"), - (0x1E916, "M", "𞤸"), - (0x1E917, "M", "𞤹"), - (0x1E918, "M", "𞤺"), - (0x1E919, "M", "𞤻"), - (0x1E91A, "M", "𞤼"), - (0x1E91B, "M", "𞤽"), - (0x1E91C, "M", "𞤾"), - (0x1E91D, "M", "𞤿"), - (0x1E91E, "M", "𞥀"), - (0x1E91F, "M", "𞥁"), - (0x1E920, "M", "𞥂"), - (0x1E921, "M", "𞥃"), - (0x1E922, "V"), - (0x1E94C, "X"), - (0x1E950, "V"), - (0x1E95A, "X"), - (0x1E95E, "V"), - (0x1E960, "X"), - (0x1EC71, "V"), - (0x1ECB5, "X"), - (0x1ED01, "V"), - (0x1ED3E, "X"), - (0x1EE00, "M", "ا"), - (0x1EE01, "M", "ب"), - (0x1EE02, "M", "ج"), - (0x1EE03, "M", "د"), - (0x1EE04, "X"), - (0x1EE05, "M", "و"), - (0x1EE06, "M", "ز"), - (0x1EE07, "M", "ح"), - (0x1EE08, "M", "ط"), - (0x1EE09, "M", "ي"), - (0x1EE0A, "M", "ك"), - (0x1EE0B, "M", "ل"), - (0x1EE0C, "M", "م"), - (0x1EE0D, "M", "ن"), - (0x1EE0E, "M", "س"), - (0x1EE0F, "M", "ع"), - (0x1EE10, "M", "ف"), - (0x1EE11, "M", "ص"), - (0x1EE12, "M", "ق"), - (0x1EE13, "M", "ر"), - (0x1EE14, "M", "ش"), - (0x1EE15, "M", "ت"), - (0x1EE16, "M", "ث"), - (0x1EE17, "M", "خ"), - (0x1EE18, "M", "ذ"), - (0x1EE19, "M", "ض"), - (0x1EE1A, "M", "ظ"), - (0x1EE1B, "M", "غ"), - (0x1EE1C, "M", "ٮ"), - (0x1EE1D, "M", "ں"), - (0x1EE1E, "M", "ڡ"), - (0x1EE1F, "M", "ٯ"), - (0x1EE20, "X"), - (0x1EE21, "M", "ب"), - (0x1EE22, "M", "ج"), - (0x1EE23, "X"), - (0x1EE24, "M", "ه"), - (0x1EE25, "X"), - (0x1EE27, "M", "ح"), - (0x1EE28, "X"), - (0x1EE29, "M", "ي"), - (0x1EE2A, "M", "ك"), - (0x1EE2B, "M", "ل"), - (0x1EE2C, "M", "م"), - (0x1EE2D, "M", "ن"), - (0x1EE2E, "M", "س"), - (0x1EE2F, "M", "ع"), - (0x1EE30, "M", "ف"), - (0x1EE31, "M", "ص"), - (0x1EE32, "M", "ق"), - (0x1EE33, "X"), - (0x1EE34, "M", "ش"), - (0x1EE35, "M", "ت"), - (0x1EE36, "M", "ث"), - (0x1EE37, "M", "خ"), - (0x1EE38, "X"), - (0x1EE39, "M", "ض"), - (0x1EE3A, "X"), - (0x1EE3B, "M", "غ"), - (0x1EE3C, "X"), - (0x1EE42, "M", "ج"), - (0x1EE43, "X"), - (0x1EE47, "M", "ح"), - (0x1EE48, "X"), - (0x1EE49, "M", "ي"), - (0x1EE4A, "X"), - (0x1EE4B, "M", "ل"), - (0x1EE4C, "X"), - (0x1EE4D, "M", "ن"), - (0x1EE4E, "M", "س"), - ] - - -def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EE4F, "M", "ع"), - (0x1EE50, "X"), - (0x1EE51, "M", "ص"), - (0x1EE52, "M", "ق"), - (0x1EE53, "X"), - (0x1EE54, "M", "ش"), - (0x1EE55, "X"), - (0x1EE57, "M", "خ"), - (0x1EE58, "X"), - (0x1EE59, "M", "ض"), - (0x1EE5A, "X"), - (0x1EE5B, "M", "غ"), - (0x1EE5C, "X"), - (0x1EE5D, "M", "ں"), - (0x1EE5E, "X"), - (0x1EE5F, "M", "ٯ"), - (0x1EE60, "X"), - (0x1EE61, "M", "ب"), - (0x1EE62, "M", "ج"), - (0x1EE63, "X"), - (0x1EE64, "M", "ه"), - (0x1EE65, "X"), - (0x1EE67, "M", "ح"), - (0x1EE68, "M", "ط"), - (0x1EE69, "M", "ي"), - (0x1EE6A, "M", "ك"), - (0x1EE6B, "X"), - (0x1EE6C, "M", "م"), - (0x1EE6D, "M", "ن"), - (0x1EE6E, "M", "س"), - (0x1EE6F, "M", "ع"), - (0x1EE70, "M", "ف"), - (0x1EE71, "M", "ص"), - (0x1EE72, "M", "ق"), - (0x1EE73, "X"), - (0x1EE74, "M", "ش"), - (0x1EE75, "M", "ت"), - (0x1EE76, "M", "ث"), - (0x1EE77, "M", "خ"), - (0x1EE78, "X"), - (0x1EE79, "M", "ض"), - (0x1EE7A, "M", "ظ"), - (0x1EE7B, "M", "غ"), - (0x1EE7C, "M", "ٮ"), - (0x1EE7D, "X"), - (0x1EE7E, "M", "ڡ"), - (0x1EE7F, "X"), - (0x1EE80, "M", "ا"), - (0x1EE81, "M", "ب"), - (0x1EE82, "M", "ج"), - (0x1EE83, "M", "د"), - (0x1EE84, "M", "ه"), - (0x1EE85, "M", "و"), - (0x1EE86, "M", "ز"), - (0x1EE87, "M", "ح"), - (0x1EE88, "M", "ط"), - (0x1EE89, "M", "ي"), - (0x1EE8A, "X"), - (0x1EE8B, "M", "ل"), - (0x1EE8C, "M", "م"), - (0x1EE8D, "M", "ن"), - (0x1EE8E, "M", "س"), - (0x1EE8F, "M", "ع"), - (0x1EE90, "M", "ف"), - (0x1EE91, "M", "ص"), - (0x1EE92, "M", "ق"), - (0x1EE93, "M", "ر"), - (0x1EE94, "M", "ش"), - (0x1EE95, "M", "ت"), - (0x1EE96, "M", "ث"), - (0x1EE97, "M", "خ"), - (0x1EE98, "M", "ذ"), - (0x1EE99, "M", "ض"), - (0x1EE9A, "M", "ظ"), - (0x1EE9B, "M", "غ"), - (0x1EE9C, "X"), - (0x1EEA1, "M", "ب"), - (0x1EEA2, "M", "ج"), - (0x1EEA3, "M", "د"), - (0x1EEA4, "X"), - (0x1EEA5, "M", "و"), - (0x1EEA6, "M", "ز"), - (0x1EEA7, "M", "ح"), - (0x1EEA8, "M", "ط"), - (0x1EEA9, "M", "ي"), - (0x1EEAA, "X"), - (0x1EEAB, "M", "ل"), - (0x1EEAC, "M", "م"), - (0x1EEAD, "M", "ن"), - (0x1EEAE, "M", "س"), - (0x1EEAF, "M", "ع"), - (0x1EEB0, "M", "ف"), - (0x1EEB1, "M", "ص"), - (0x1EEB2, "M", "ق"), - (0x1EEB3, "M", "ر"), - (0x1EEB4, "M", "ش"), - (0x1EEB5, "M", "ت"), - (0x1EEB6, "M", "ث"), - (0x1EEB7, "M", "خ"), - (0x1EEB8, "M", "ذ"), - ] - - -def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1EEB9, "M", "ض"), - (0x1EEBA, "M", "ظ"), - (0x1EEBB, "M", "غ"), - (0x1EEBC, "X"), - (0x1EEF0, "V"), - (0x1EEF2, "X"), - (0x1F000, "V"), - (0x1F02C, "X"), - (0x1F030, "V"), - (0x1F094, "X"), - (0x1F0A0, "V"), - (0x1F0AF, "X"), - (0x1F0B1, "V"), - (0x1F0C0, "X"), - (0x1F0C1, "V"), - (0x1F0D0, "X"), - (0x1F0D1, "V"), - (0x1F0F6, "X"), - (0x1F101, "3", "0,"), - (0x1F102, "3", "1,"), - (0x1F103, "3", "2,"), - (0x1F104, "3", "3,"), - (0x1F105, "3", "4,"), - (0x1F106, "3", "5,"), - (0x1F107, "3", "6,"), - (0x1F108, "3", "7,"), - (0x1F109, "3", "8,"), - (0x1F10A, "3", "9,"), - (0x1F10B, "V"), - (0x1F110, "3", "(a)"), - (0x1F111, "3", "(b)"), - (0x1F112, "3", "(c)"), - (0x1F113, "3", "(d)"), - (0x1F114, "3", "(e)"), - (0x1F115, "3", "(f)"), - (0x1F116, "3", "(g)"), - (0x1F117, "3", "(h)"), - (0x1F118, "3", "(i)"), - (0x1F119, "3", "(j)"), - (0x1F11A, "3", "(k)"), - (0x1F11B, "3", "(l)"), - (0x1F11C, "3", "(m)"), - (0x1F11D, "3", "(n)"), - (0x1F11E, "3", "(o)"), - (0x1F11F, "3", "(p)"), - (0x1F120, "3", "(q)"), - (0x1F121, "3", "(r)"), - (0x1F122, "3", "(s)"), - (0x1F123, "3", "(t)"), - (0x1F124, "3", "(u)"), - (0x1F125, "3", "(v)"), - (0x1F126, "3", "(w)"), - (0x1F127, "3", "(x)"), - (0x1F128, "3", "(y)"), - (0x1F129, "3", "(z)"), - (0x1F12A, "M", "〔s〕"), - (0x1F12B, "M", "c"), - (0x1F12C, "M", "r"), - (0x1F12D, "M", "cd"), - (0x1F12E, "M", "wz"), - (0x1F12F, "V"), - (0x1F130, "M", "a"), - (0x1F131, "M", "b"), - (0x1F132, "M", "c"), - (0x1F133, "M", "d"), - (0x1F134, "M", "e"), - (0x1F135, "M", "f"), - (0x1F136, "M", "g"), - (0x1F137, "M", "h"), - (0x1F138, "M", "i"), - (0x1F139, "M", "j"), - (0x1F13A, "M", "k"), - (0x1F13B, "M", "l"), - (0x1F13C, "M", "m"), - (0x1F13D, "M", "n"), - (0x1F13E, "M", "o"), - (0x1F13F, "M", "p"), - (0x1F140, "M", "q"), - (0x1F141, "M", "r"), - (0x1F142, "M", "s"), - (0x1F143, "M", "t"), - (0x1F144, "M", "u"), - (0x1F145, "M", "v"), - (0x1F146, "M", "w"), - (0x1F147, "M", "x"), - (0x1F148, "M", "y"), - (0x1F149, "M", "z"), - (0x1F14A, "M", "hv"), - (0x1F14B, "M", "mv"), - (0x1F14C, "M", "sd"), - (0x1F14D, "M", "ss"), - (0x1F14E, "M", "ppv"), - (0x1F14F, "M", "wc"), - (0x1F150, "V"), - (0x1F16A, "M", "mc"), - (0x1F16B, "M", "md"), - (0x1F16C, "M", "mr"), - (0x1F16D, "V"), - (0x1F190, "M", "dj"), - (0x1F191, "V"), - ] - - -def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1F1AE, "X"), - (0x1F1E6, "V"), - (0x1F200, "M", "ほか"), - (0x1F201, "M", "ココ"), - (0x1F202, "M", "サ"), - (0x1F203, "X"), - (0x1F210, "M", "手"), - (0x1F211, "M", "字"), - (0x1F212, "M", "双"), - (0x1F213, "M", "デ"), - (0x1F214, "M", "二"), - (0x1F215, "M", "多"), - (0x1F216, "M", "解"), - (0x1F217, "M", "天"), - (0x1F218, "M", "交"), - (0x1F219, "M", "映"), - (0x1F21A, "M", "無"), - (0x1F21B, "M", "料"), - (0x1F21C, "M", "前"), - (0x1F21D, "M", "後"), - (0x1F21E, "M", "再"), - (0x1F21F, "M", "新"), - (0x1F220, "M", "初"), - (0x1F221, "M", "終"), - (0x1F222, "M", "生"), - (0x1F223, "M", "販"), - (0x1F224, "M", "声"), - (0x1F225, "M", "吹"), - (0x1F226, "M", "演"), - (0x1F227, "M", "投"), - (0x1F228, "M", "捕"), - (0x1F229, "M", "一"), - (0x1F22A, "M", "三"), - (0x1F22B, "M", "遊"), - (0x1F22C, "M", "左"), - (0x1F22D, "M", "中"), - (0x1F22E, "M", "右"), - (0x1F22F, "M", "指"), - (0x1F230, "M", "走"), - (0x1F231, "M", "打"), - (0x1F232, "M", "禁"), - (0x1F233, "M", "空"), - (0x1F234, "M", "合"), - (0x1F235, "M", "満"), - (0x1F236, "M", "有"), - (0x1F237, "M", "月"), - (0x1F238, "M", "申"), - (0x1F239, "M", "割"), - (0x1F23A, "M", "営"), - (0x1F23B, "M", "配"), - (0x1F23C, "X"), - (0x1F240, "M", "〔本〕"), - (0x1F241, "M", "〔三〕"), - (0x1F242, "M", "〔二〕"), - (0x1F243, "M", "〔安〕"), - (0x1F244, "M", "〔点〕"), - (0x1F245, "M", "〔打〕"), - (0x1F246, "M", "〔盗〕"), - (0x1F247, "M", "〔勝〕"), - (0x1F248, "M", "〔敗〕"), - (0x1F249, "X"), - (0x1F250, "M", "得"), - (0x1F251, "M", "可"), - (0x1F252, "X"), - (0x1F260, "V"), - (0x1F266, "X"), - (0x1F300, "V"), - (0x1F6D8, "X"), - (0x1F6DC, "V"), - (0x1F6ED, "X"), - (0x1F6F0, "V"), - (0x1F6FD, "X"), - (0x1F700, "V"), - (0x1F777, "X"), - (0x1F77B, "V"), - (0x1F7DA, "X"), - (0x1F7E0, "V"), - (0x1F7EC, "X"), - (0x1F7F0, "V"), - (0x1F7F1, "X"), - (0x1F800, "V"), - (0x1F80C, "X"), - (0x1F810, "V"), - (0x1F848, "X"), - (0x1F850, "V"), - (0x1F85A, "X"), - (0x1F860, "V"), - (0x1F888, "X"), - (0x1F890, "V"), - (0x1F8AE, "X"), - (0x1F8B0, "V"), - (0x1F8B2, "X"), - (0x1F900, "V"), - (0x1FA54, "X"), - (0x1FA60, "V"), - (0x1FA6E, "X"), - (0x1FA70, "V"), - (0x1FA7D, "X"), - (0x1FA80, "V"), - (0x1FA89, "X"), - ] - - -def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x1FA90, "V"), - (0x1FABE, "X"), - (0x1FABF, "V"), - (0x1FAC6, "X"), - (0x1FACE, "V"), - (0x1FADC, "X"), - (0x1FAE0, "V"), - (0x1FAE9, "X"), - (0x1FAF0, "V"), - (0x1FAF9, "X"), - (0x1FB00, "V"), - (0x1FB93, "X"), - (0x1FB94, "V"), - (0x1FBCB, "X"), - (0x1FBF0, "M", "0"), - (0x1FBF1, "M", "1"), - (0x1FBF2, "M", "2"), - (0x1FBF3, "M", "3"), - (0x1FBF4, "M", "4"), - (0x1FBF5, "M", "5"), - (0x1FBF6, "M", "6"), - (0x1FBF7, "M", "7"), - (0x1FBF8, "M", "8"), - (0x1FBF9, "M", "9"), - (0x1FBFA, "X"), - (0x20000, "V"), - (0x2A6E0, "X"), - (0x2A700, "V"), - (0x2B73A, "X"), - (0x2B740, "V"), - (0x2B81E, "X"), - (0x2B820, "V"), - (0x2CEA2, "X"), - (0x2CEB0, "V"), - (0x2EBE1, "X"), - (0x2EBF0, "V"), - (0x2EE5E, "X"), - (0x2F800, "M", "丽"), - (0x2F801, "M", "丸"), - (0x2F802, "M", "乁"), - (0x2F803, "M", "𠄢"), - (0x2F804, "M", "你"), - (0x2F805, "M", "侮"), - (0x2F806, "M", "侻"), - (0x2F807, "M", "倂"), - (0x2F808, "M", "偺"), - (0x2F809, "M", "備"), - (0x2F80A, "M", "僧"), - (0x2F80B, "M", "像"), - (0x2F80C, "M", "㒞"), - (0x2F80D, "M", "𠘺"), - (0x2F80E, "M", "免"), - (0x2F80F, "M", "兔"), - (0x2F810, "M", "兤"), - (0x2F811, "M", "具"), - (0x2F812, "M", "𠔜"), - (0x2F813, "M", "㒹"), - (0x2F814, "M", "內"), - (0x2F815, "M", "再"), - (0x2F816, "M", "𠕋"), - (0x2F817, "M", "冗"), - (0x2F818, "M", "冤"), - (0x2F819, "M", "仌"), - (0x2F81A, "M", "冬"), - (0x2F81B, "M", "况"), - (0x2F81C, "M", "𩇟"), - (0x2F81D, "M", "凵"), - (0x2F81E, "M", "刃"), - (0x2F81F, "M", "㓟"), - (0x2F820, "M", "刻"), - (0x2F821, "M", "剆"), - (0x2F822, "M", "割"), - (0x2F823, "M", "剷"), - (0x2F824, "M", "㔕"), - (0x2F825, "M", "勇"), - (0x2F826, "M", "勉"), - (0x2F827, "M", "勤"), - (0x2F828, "M", "勺"), - (0x2F829, "M", "包"), - (0x2F82A, "M", "匆"), - (0x2F82B, "M", "北"), - (0x2F82C, "M", "卉"), - (0x2F82D, "M", "卑"), - (0x2F82E, "M", "博"), - (0x2F82F, "M", "即"), - (0x2F830, "M", "卽"), - (0x2F831, "M", "卿"), - (0x2F834, "M", "𠨬"), - (0x2F835, "M", "灰"), - (0x2F836, "M", "及"), - (0x2F837, "M", "叟"), - (0x2F838, "M", "𠭣"), - (0x2F839, "M", "叫"), - (0x2F83A, "M", "叱"), - (0x2F83B, "M", "吆"), - (0x2F83C, "M", "咞"), - (0x2F83D, "M", "吸"), - (0x2F83E, "M", "呈"), - (0x2F83F, "M", "周"), - (0x2F840, "M", "咢"), - ] - - -def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F841, "M", "哶"), - (0x2F842, "M", "唐"), - (0x2F843, "M", "啓"), - (0x2F844, "M", "啣"), - (0x2F845, "M", "善"), - (0x2F847, "M", "喙"), - (0x2F848, "M", "喫"), - (0x2F849, "M", "喳"), - (0x2F84A, "M", "嗂"), - (0x2F84B, "M", "圖"), - (0x2F84C, "M", "嘆"), - (0x2F84D, "M", "圗"), - (0x2F84E, "M", "噑"), - (0x2F84F, "M", "噴"), - (0x2F850, "M", "切"), - (0x2F851, "M", "壮"), - (0x2F852, "M", "城"), - (0x2F853, "M", "埴"), - (0x2F854, "M", "堍"), - (0x2F855, "M", "型"), - (0x2F856, "M", "堲"), - (0x2F857, "M", "報"), - (0x2F858, "M", "墬"), - (0x2F859, "M", "𡓤"), - (0x2F85A, "M", "売"), - (0x2F85B, "M", "壷"), - (0x2F85C, "M", "夆"), - (0x2F85D, "M", "多"), - (0x2F85E, "M", "夢"), - (0x2F85F, "M", "奢"), - (0x2F860, "M", "𡚨"), - (0x2F861, "M", "𡛪"), - (0x2F862, "M", "姬"), - (0x2F863, "M", "娛"), - (0x2F864, "M", "娧"), - (0x2F865, "M", "姘"), - (0x2F866, "M", "婦"), - (0x2F867, "M", "㛮"), - (0x2F868, "X"), - (0x2F869, "M", "嬈"), - (0x2F86A, "M", "嬾"), - (0x2F86C, "M", "𡧈"), - (0x2F86D, "M", "寃"), - (0x2F86E, "M", "寘"), - (0x2F86F, "M", "寧"), - (0x2F870, "M", "寳"), - (0x2F871, "M", "𡬘"), - (0x2F872, "M", "寿"), - (0x2F873, "M", "将"), - (0x2F874, "X"), - (0x2F875, "M", "尢"), - (0x2F876, "M", "㞁"), - (0x2F877, "M", "屠"), - (0x2F878, "M", "屮"), - (0x2F879, "M", "峀"), - (0x2F87A, "M", "岍"), - (0x2F87B, "M", "𡷤"), - (0x2F87C, "M", "嵃"), - (0x2F87D, "M", "𡷦"), - (0x2F87E, "M", "嵮"), - (0x2F87F, "M", "嵫"), - (0x2F880, "M", "嵼"), - (0x2F881, "M", "巡"), - (0x2F882, "M", "巢"), - (0x2F883, "M", "㠯"), - (0x2F884, "M", "巽"), - (0x2F885, "M", "帨"), - (0x2F886, "M", "帽"), - (0x2F887, "M", "幩"), - (0x2F888, "M", "㡢"), - (0x2F889, "M", "𢆃"), - (0x2F88A, "M", "㡼"), - (0x2F88B, "M", "庰"), - (0x2F88C, "M", "庳"), - (0x2F88D, "M", "庶"), - (0x2F88E, "M", "廊"), - (0x2F88F, "M", "𪎒"), - (0x2F890, "M", "廾"), - (0x2F891, "M", "𢌱"), - (0x2F893, "M", "舁"), - (0x2F894, "M", "弢"), - (0x2F896, "M", "㣇"), - (0x2F897, "M", "𣊸"), - (0x2F898, "M", "𦇚"), - (0x2F899, "M", "形"), - (0x2F89A, "M", "彫"), - (0x2F89B, "M", "㣣"), - (0x2F89C, "M", "徚"), - (0x2F89D, "M", "忍"), - (0x2F89E, "M", "志"), - (0x2F89F, "M", "忹"), - (0x2F8A0, "M", "悁"), - (0x2F8A1, "M", "㤺"), - (0x2F8A2, "M", "㤜"), - (0x2F8A3, "M", "悔"), - (0x2F8A4, "M", "𢛔"), - (0x2F8A5, "M", "惇"), - (0x2F8A6, "M", "慈"), - (0x2F8A7, "M", "慌"), - (0x2F8A8, "M", "慎"), - ] - - -def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F8A9, "M", "慌"), - (0x2F8AA, "M", "慺"), - (0x2F8AB, "M", "憎"), - (0x2F8AC, "M", "憲"), - (0x2F8AD, "M", "憤"), - (0x2F8AE, "M", "憯"), - (0x2F8AF, "M", "懞"), - (0x2F8B0, "M", "懲"), - (0x2F8B1, "M", "懶"), - (0x2F8B2, "M", "成"), - (0x2F8B3, "M", "戛"), - (0x2F8B4, "M", "扝"), - (0x2F8B5, "M", "抱"), - (0x2F8B6, "M", "拔"), - (0x2F8B7, "M", "捐"), - (0x2F8B8, "M", "𢬌"), - (0x2F8B9, "M", "挽"), - (0x2F8BA, "M", "拼"), - (0x2F8BB, "M", "捨"), - (0x2F8BC, "M", "掃"), - (0x2F8BD, "M", "揤"), - (0x2F8BE, "M", "𢯱"), - (0x2F8BF, "M", "搢"), - (0x2F8C0, "M", "揅"), - (0x2F8C1, "M", "掩"), - (0x2F8C2, "M", "㨮"), - (0x2F8C3, "M", "摩"), - (0x2F8C4, "M", "摾"), - (0x2F8C5, "M", "撝"), - (0x2F8C6, "M", "摷"), - (0x2F8C7, "M", "㩬"), - (0x2F8C8, "M", "敏"), - (0x2F8C9, "M", "敬"), - (0x2F8CA, "M", "𣀊"), - (0x2F8CB, "M", "旣"), - (0x2F8CC, "M", "書"), - (0x2F8CD, "M", "晉"), - (0x2F8CE, "M", "㬙"), - (0x2F8CF, "M", "暑"), - (0x2F8D0, "M", "㬈"), - (0x2F8D1, "M", "㫤"), - (0x2F8D2, "M", "冒"), - (0x2F8D3, "M", "冕"), - (0x2F8D4, "M", "最"), - (0x2F8D5, "M", "暜"), - (0x2F8D6, "M", "肭"), - (0x2F8D7, "M", "䏙"), - (0x2F8D8, "M", "朗"), - (0x2F8D9, "M", "望"), - (0x2F8DA, "M", "朡"), - (0x2F8DB, "M", "杞"), - (0x2F8DC, "M", "杓"), - (0x2F8DD, "M", "𣏃"), - (0x2F8DE, "M", "㭉"), - (0x2F8DF, "M", "柺"), - (0x2F8E0, "M", "枅"), - (0x2F8E1, "M", "桒"), - (0x2F8E2, "M", "梅"), - (0x2F8E3, "M", "𣑭"), - (0x2F8E4, "M", "梎"), - (0x2F8E5, "M", "栟"), - (0x2F8E6, "M", "椔"), - (0x2F8E7, "M", "㮝"), - (0x2F8E8, "M", "楂"), - (0x2F8E9, "M", "榣"), - (0x2F8EA, "M", "槪"), - (0x2F8EB, "M", "檨"), - (0x2F8EC, "M", "𣚣"), - (0x2F8ED, "M", "櫛"), - (0x2F8EE, "M", "㰘"), - (0x2F8EF, "M", "次"), - (0x2F8F0, "M", "𣢧"), - (0x2F8F1, "M", "歔"), - (0x2F8F2, "M", "㱎"), - (0x2F8F3, "M", "歲"), - (0x2F8F4, "M", "殟"), - (0x2F8F5, "M", "殺"), - (0x2F8F6, "M", "殻"), - (0x2F8F7, "M", "𣪍"), - (0x2F8F8, "M", "𡴋"), - (0x2F8F9, "M", "𣫺"), - (0x2F8FA, "M", "汎"), - (0x2F8FB, "M", "𣲼"), - (0x2F8FC, "M", "沿"), - (0x2F8FD, "M", "泍"), - (0x2F8FE, "M", "汧"), - (0x2F8FF, "M", "洖"), - (0x2F900, "M", "派"), - (0x2F901, "M", "海"), - (0x2F902, "M", "流"), - (0x2F903, "M", "浩"), - (0x2F904, "M", "浸"), - (0x2F905, "M", "涅"), - (0x2F906, "M", "𣴞"), - (0x2F907, "M", "洴"), - (0x2F908, "M", "港"), - (0x2F909, "M", "湮"), - (0x2F90A, "M", "㴳"), - (0x2F90B, "M", "滋"), - (0x2F90C, "M", "滇"), - ] - - -def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F90D, "M", "𣻑"), - (0x2F90E, "M", "淹"), - (0x2F90F, "M", "潮"), - (0x2F910, "M", "𣽞"), - (0x2F911, "M", "𣾎"), - (0x2F912, "M", "濆"), - (0x2F913, "M", "瀹"), - (0x2F914, "M", "瀞"), - (0x2F915, "M", "瀛"), - (0x2F916, "M", "㶖"), - (0x2F917, "M", "灊"), - (0x2F918, "M", "災"), - (0x2F919, "M", "灷"), - (0x2F91A, "M", "炭"), - (0x2F91B, "M", "𠔥"), - (0x2F91C, "M", "煅"), - (0x2F91D, "M", "𤉣"), - (0x2F91E, "M", "熜"), - (0x2F91F, "X"), - (0x2F920, "M", "爨"), - (0x2F921, "M", "爵"), - (0x2F922, "M", "牐"), - (0x2F923, "M", "𤘈"), - (0x2F924, "M", "犀"), - (0x2F925, "M", "犕"), - (0x2F926, "M", "𤜵"), - (0x2F927, "M", "𤠔"), - (0x2F928, "M", "獺"), - (0x2F929, "M", "王"), - (0x2F92A, "M", "㺬"), - (0x2F92B, "M", "玥"), - (0x2F92C, "M", "㺸"), - (0x2F92E, "M", "瑇"), - (0x2F92F, "M", "瑜"), - (0x2F930, "M", "瑱"), - (0x2F931, "M", "璅"), - (0x2F932, "M", "瓊"), - (0x2F933, "M", "㼛"), - (0x2F934, "M", "甤"), - (0x2F935, "M", "𤰶"), - (0x2F936, "M", "甾"), - (0x2F937, "M", "𤲒"), - (0x2F938, "M", "異"), - (0x2F939, "M", "𢆟"), - (0x2F93A, "M", "瘐"), - (0x2F93B, "M", "𤾡"), - (0x2F93C, "M", "𤾸"), - (0x2F93D, "M", "𥁄"), - (0x2F93E, "M", "㿼"), - (0x2F93F, "M", "䀈"), - (0x2F940, "M", "直"), - (0x2F941, "M", "𥃳"), - (0x2F942, "M", "𥃲"), - (0x2F943, "M", "𥄙"), - (0x2F944, "M", "𥄳"), - (0x2F945, "M", "眞"), - (0x2F946, "M", "真"), - (0x2F948, "M", "睊"), - (0x2F949, "M", "䀹"), - (0x2F94A, "M", "瞋"), - (0x2F94B, "M", "䁆"), - (0x2F94C, "M", "䂖"), - (0x2F94D, "M", "𥐝"), - (0x2F94E, "M", "硎"), - (0x2F94F, "M", "碌"), - (0x2F950, "M", "磌"), - (0x2F951, "M", "䃣"), - (0x2F952, "M", "𥘦"), - (0x2F953, "M", "祖"), - (0x2F954, "M", "𥚚"), - (0x2F955, "M", "𥛅"), - (0x2F956, "M", "福"), - (0x2F957, "M", "秫"), - (0x2F958, "M", "䄯"), - (0x2F959, "M", "穀"), - (0x2F95A, "M", "穊"), - (0x2F95B, "M", "穏"), - (0x2F95C, "M", "𥥼"), - (0x2F95D, "M", "𥪧"), - (0x2F95F, "X"), - (0x2F960, "M", "䈂"), - (0x2F961, "M", "𥮫"), - (0x2F962, "M", "篆"), - (0x2F963, "M", "築"), - (0x2F964, "M", "䈧"), - (0x2F965, "M", "𥲀"), - (0x2F966, "M", "糒"), - (0x2F967, "M", "䊠"), - (0x2F968, "M", "糨"), - (0x2F969, "M", "糣"), - (0x2F96A, "M", "紀"), - (0x2F96B, "M", "𥾆"), - (0x2F96C, "M", "絣"), - (0x2F96D, "M", "䌁"), - (0x2F96E, "M", "緇"), - (0x2F96F, "M", "縂"), - (0x2F970, "M", "繅"), - (0x2F971, "M", "䌴"), - (0x2F972, "M", "𦈨"), - (0x2F973, "M", "𦉇"), - ] - - -def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F974, "M", "䍙"), - (0x2F975, "M", "𦋙"), - (0x2F976, "M", "罺"), - (0x2F977, "M", "𦌾"), - (0x2F978, "M", "羕"), - (0x2F979, "M", "翺"), - (0x2F97A, "M", "者"), - (0x2F97B, "M", "𦓚"), - (0x2F97C, "M", "𦔣"), - (0x2F97D, "M", "聠"), - (0x2F97E, "M", "𦖨"), - (0x2F97F, "M", "聰"), - (0x2F980, "M", "𣍟"), - (0x2F981, "M", "䏕"), - (0x2F982, "M", "育"), - (0x2F983, "M", "脃"), - (0x2F984, "M", "䐋"), - (0x2F985, "M", "脾"), - (0x2F986, "M", "媵"), - (0x2F987, "M", "𦞧"), - (0x2F988, "M", "𦞵"), - (0x2F989, "M", "𣎓"), - (0x2F98A, "M", "𣎜"), - (0x2F98B, "M", "舁"), - (0x2F98C, "M", "舄"), - (0x2F98D, "M", "辞"), - (0x2F98E, "M", "䑫"), - (0x2F98F, "M", "芑"), - (0x2F990, "M", "芋"), - (0x2F991, "M", "芝"), - (0x2F992, "M", "劳"), - (0x2F993, "M", "花"), - (0x2F994, "M", "芳"), - (0x2F995, "M", "芽"), - (0x2F996, "M", "苦"), - (0x2F997, "M", "𦬼"), - (0x2F998, "M", "若"), - (0x2F999, "M", "茝"), - (0x2F99A, "M", "荣"), - (0x2F99B, "M", "莭"), - (0x2F99C, "M", "茣"), - (0x2F99D, "M", "莽"), - (0x2F99E, "M", "菧"), - (0x2F99F, "M", "著"), - (0x2F9A0, "M", "荓"), - (0x2F9A1, "M", "菊"), - (0x2F9A2, "M", "菌"), - (0x2F9A3, "M", "菜"), - (0x2F9A4, "M", "𦰶"), - (0x2F9A5, "M", "𦵫"), - (0x2F9A6, "M", "𦳕"), - (0x2F9A7, "M", "䔫"), - (0x2F9A8, "M", "蓱"), - (0x2F9A9, "M", "蓳"), - (0x2F9AA, "M", "蔖"), - (0x2F9AB, "M", "𧏊"), - (0x2F9AC, "M", "蕤"), - (0x2F9AD, "M", "𦼬"), - (0x2F9AE, "M", "䕝"), - (0x2F9AF, "M", "䕡"), - (0x2F9B0, "M", "𦾱"), - (0x2F9B1, "M", "𧃒"), - (0x2F9B2, "M", "䕫"), - (0x2F9B3, "M", "虐"), - (0x2F9B4, "M", "虜"), - (0x2F9B5, "M", "虧"), - (0x2F9B6, "M", "虩"), - (0x2F9B7, "M", "蚩"), - (0x2F9B8, "M", "蚈"), - (0x2F9B9, "M", "蜎"), - (0x2F9BA, "M", "蛢"), - (0x2F9BB, "M", "蝹"), - (0x2F9BC, "M", "蜨"), - (0x2F9BD, "M", "蝫"), - (0x2F9BE, "M", "螆"), - (0x2F9BF, "X"), - (0x2F9C0, "M", "蟡"), - (0x2F9C1, "M", "蠁"), - (0x2F9C2, "M", "䗹"), - (0x2F9C3, "M", "衠"), - (0x2F9C4, "M", "衣"), - (0x2F9C5, "M", "𧙧"), - (0x2F9C6, "M", "裗"), - (0x2F9C7, "M", "裞"), - (0x2F9C8, "M", "䘵"), - (0x2F9C9, "M", "裺"), - (0x2F9CA, "M", "㒻"), - (0x2F9CB, "M", "𧢮"), - (0x2F9CC, "M", "𧥦"), - (0x2F9CD, "M", "䚾"), - (0x2F9CE, "M", "䛇"), - (0x2F9CF, "M", "誠"), - (0x2F9D0, "M", "諭"), - (0x2F9D1, "M", "變"), - (0x2F9D2, "M", "豕"), - (0x2F9D3, "M", "𧲨"), - (0x2F9D4, "M", "貫"), - (0x2F9D5, "M", "賁"), - (0x2F9D6, "M", "贛"), - (0x2F9D7, "M", "起"), - ] - - -def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ - (0x2F9D8, "M", "𧼯"), - (0x2F9D9, "M", "𠠄"), - (0x2F9DA, "M", "跋"), - (0x2F9DB, "M", "趼"), - (0x2F9DC, "M", "跰"), - (0x2F9DD, "M", "𠣞"), - (0x2F9DE, "M", "軔"), - (0x2F9DF, "M", "輸"), - (0x2F9E0, "M", "𨗒"), - (0x2F9E1, "M", "𨗭"), - (0x2F9E2, "M", "邔"), - (0x2F9E3, "M", "郱"), - (0x2F9E4, "M", "鄑"), - (0x2F9E5, "M", "𨜮"), - (0x2F9E6, "M", "鄛"), - (0x2F9E7, "M", "鈸"), - (0x2F9E8, "M", "鋗"), - (0x2F9E9, "M", "鋘"), - (0x2F9EA, "M", "鉼"), - (0x2F9EB, "M", "鏹"), - (0x2F9EC, "M", "鐕"), - (0x2F9ED, "M", "𨯺"), - (0x2F9EE, "M", "開"), - (0x2F9EF, "M", "䦕"), - (0x2F9F0, "M", "閷"), - (0x2F9F1, "M", "𨵷"), - (0x2F9F2, "M", "䧦"), - (0x2F9F3, "M", "雃"), - (0x2F9F4, "M", "嶲"), - (0x2F9F5, "M", "霣"), - (0x2F9F6, "M", "𩅅"), - (0x2F9F7, "M", "𩈚"), - (0x2F9F8, "M", "䩮"), - (0x2F9F9, "M", "䩶"), - (0x2F9FA, "M", "韠"), - (0x2F9FB, "M", "𩐊"), - (0x2F9FC, "M", "䪲"), - (0x2F9FD, "M", "𩒖"), - (0x2F9FE, "M", "頋"), - (0x2FA00, "M", "頩"), - (0x2FA01, "M", "𩖶"), - (0x2FA02, "M", "飢"), - (0x2FA03, "M", "䬳"), - (0x2FA04, "M", "餩"), - (0x2FA05, "M", "馧"), - (0x2FA06, "M", "駂"), - (0x2FA07, "M", "駾"), - (0x2FA08, "M", "䯎"), - (0x2FA09, "M", "𩬰"), - (0x2FA0A, "M", "鬒"), - (0x2FA0B, "M", "鱀"), - (0x2FA0C, "M", "鳽"), - (0x2FA0D, "M", "䳎"), - (0x2FA0E, "M", "䳭"), - (0x2FA0F, "M", "鵧"), - (0x2FA10, "M", "𪃎"), - (0x2FA11, "M", "䳸"), - (0x2FA12, "M", "𪄅"), - (0x2FA13, "M", "𪈎"), - (0x2FA14, "M", "𪊑"), - (0x2FA15, "M", "麻"), - (0x2FA16, "M", "䵖"), - (0x2FA17, "M", "黹"), - (0x2FA18, "M", "黾"), - (0x2FA19, "M", "鼅"), - (0x2FA1A, "M", "鼏"), - (0x2FA1B, "M", "鼖"), - (0x2FA1C, "M", "鼻"), - (0x2FA1D, "M", "𪘀"), - (0x2FA1E, "X"), - (0x30000, "V"), - (0x3134B, "X"), - (0x31350, "V"), - (0x323B0, "X"), - (0xE0100, "I"), - (0xE01F0, "X"), - ] - - -uts46data = tuple( - _seg_0() - + _seg_1() - + _seg_2() - + _seg_3() - + _seg_4() - + _seg_5() - + _seg_6() - + _seg_7() - + _seg_8() - + _seg_9() - + _seg_10() - + _seg_11() - + _seg_12() - + _seg_13() - + _seg_14() - + _seg_15() - + _seg_16() - + _seg_17() - + _seg_18() - + _seg_19() - + _seg_20() - + _seg_21() - + _seg_22() - + _seg_23() - + _seg_24() - + _seg_25() - + _seg_26() - + _seg_27() - + _seg_28() - + _seg_29() - + _seg_30() - + _seg_31() - + _seg_32() - + _seg_33() - + _seg_34() - + _seg_35() - + _seg_36() - + _seg_37() - + _seg_38() - + _seg_39() - + _seg_40() - + _seg_41() - + _seg_42() - + _seg_43() - + _seg_44() - + _seg_45() - + _seg_46() - + _seg_47() - + _seg_48() - + _seg_49() - + _seg_50() - + _seg_51() - + _seg_52() - + _seg_53() - + _seg_54() - + _seg_55() - + _seg_56() - + _seg_57() - + _seg_58() - + _seg_59() - + _seg_60() - + _seg_61() - + _seg_62() - + _seg_63() - + _seg_64() - + _seg_65() - + _seg_66() - + _seg_67() - + _seg_68() - + _seg_69() - + _seg_70() - + _seg_71() - + _seg_72() - + _seg_73() - + _seg_74() - + _seg_75() - + _seg_76() - + _seg_77() - + _seg_78() - + _seg_79() - + _seg_80() - + _seg_81() -) # type: Tuple[Union[Tuple[int, str], Tuple[int, str, str]], ...] diff --git a/gnx-react/venv/lib/python3.12/site-packages/inflection/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/inflection/__pycache__/__init__.cpython-312.pyc index 41cf7cb2c1ef8c6c13e689497326ac282feabf87..6b426a2d8a9849795bbdc705673faae7bde27bf2 100644 GIT binary patch delta 52 zcmX?7dZv{7G%qg~0}ym=y1J3uNI)t^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|umT GsTKgvn-MPn delta 44 ycmX?8dZd*5G%qg~0}#x7du1cHk$_N$enx(7s(yN2g}zH_adt_5!RBy*QY`>h{0~V0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/__init__.cpython-312.pyc index e0a02c96238543cf9fedee5e442c2846703062ab..c0bc3d2a7520eb8e278070dc2670f072b2a12765 100644 GIT binary patch delta 52 zcmaE-_)U@fG%qg~0}%9Vy1J2jGlx{Tenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-2t GavT89a1l`e delta 44 ycmeyS_)d}gG%qg~0}wR4xw4UaGl!7Benx(7s(yN2g}zH_adt_5!R8wravT6tUJp+I diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/abstract.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/abstract.cpython-312.pyc index f6099c89db47a19845309b8425617dc2b40658e2..c43f753146cb882c79d488b79a894542e040cfdf 100644 GIT binary patch delta 52 zcmZoP?=(055K&MwI>(0BKX&<%HW+T6kP GQvv{@*bwpn delta 44 ycmeA)Z#3sV&CAQh00a$hu59GaW)kw(&&bbB)lbi>(055K&MwI>*gS#hrvv~lrVj7` diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/clocks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/clocks.cpython-312.pyc index e8d66c7e6020d6b8131c46d87d8bf413a8cb8d6b..140717ead93d6ae924e76de2aa6ddbfe8c508acb 100644 GIT binary patch delta 52 zcmZoR?>6T?&CAQh00cdou5RQuWRVKh&&bbB)lbi>(055K&MwI>(0BKX&<%HW+U&<- GDh>ddi4VU3 delta 44 ycmeA+Z#L&X&CAQh00a$hu59EsWD)Y!&&bbB)lbi>(055K&MwI>*c`@UDh>cA2MxUd diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/common.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/common.cpython-312.pyc index 069c4500f20bb09fdbef0a02db306c3b8ab78f48..f4096488aaf21b633138e608f927bc5273874f4f 100644 GIT binary patch delta 54 zcmey|$@sgIk^3|+FBbz4^lZAik-LdmDpWrsKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_CG IeC7~G0QX)JE&u=k delta 46 zcmey}$@saGk^3|+FBbz4G`zX8k-Ldm$X7ojKQ~oBJ+DIFCAB!aB)?$ua^?_60CqGG AEC2ui diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/compat.cpython-312.pyc index 22ed2a1d493e267204167a5bbbe5b38899e08ab4..da86f36b2776d601fdc57e0216a45d42f7d8a408 100644 GIT binary patch delta 52 zcmZ4KyU~~XG%qg~0}%9Vy1J4350g}=enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HHL G3CaM=50s!z=6KMbd delta 46 zcmX@p%6z1info*^FBbz4G`zX8k$Z=PP@sNBer~FMdR~RTOKNd;Nq)iRyAtnL0swEt B5oZ7Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/entity.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/entity.cpython-312.pyc index dd0450f91f7d12620158be3911ea6c992a182266..04477f1a488cc2fc0fc03f2c71fe0cf6a777ef8d 100644 GIT binary patch delta 54 zcmcb%lIh+`ChpU`yj%=G(6j04M(%bdsZjll{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JOPGu%0RZ`B5^Vqg delta 46 zcmcb&lIhw?ChpU`yj%=G(D3HUM(%bdAz%HB{M=Oi^t=jvm(=3ylKg_rYnY5C0RVT~ B5NiMc diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/exceptions.cpython-312.pyc index 719679d34e0ed17f4a4af82ef4115a1d82965f42..2656a88c0f5f34f27c071c2e3b7f67b5c9687661 100644 GIT binary patch delta 52 zcmaE^_Fj$qG%qg~0}%9Vy1J3Of<-D)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cQ; GOMC#v^bv~y delta 44 ycmaE__FRqoG%qg~0}wR4xw4VFf<-7$KO;XkRX;tiLf<8|IJ+djVDns-OMC!K>JNzk diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/log.cpython-312.pyc index e861daaeabd467cccc9553deb2c2c1bf6fc8155f..e0f29ed5fd7e8314cd41674e34698839bb8fe603 100644 GIT binary patch delta 52 zcmZp(>$BrN&CAQh00cdou5RR(VUY^b&&bbB)lbi>(055K&MwI>(0BKX&<%HW+HA>k GRtf-{FAzZh delta 44 ycmeCPYqR4%&CAQh00a$hu59F%VG;7u&&bbB)lbi>(055K&MwI>*zCx1Rtf+p%?>{R diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/matcher.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/matcher.cpython-312.pyc index a3f46757effec8529c99ce7fcfbf8fa061aac262..30ed0b9862c159c3ad0bacfff571fcccaf674469 100644 GIT binary patch delta 52 zcmaE;^iqlYG%qg~0}%9Vy1J2j6O&Y!enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_L` GllTD2cM+rj delta 44 ycmaE<^iYZWG%qg~0}wR4xw4Ua6O)jienx(7s(yN2g}zH_adt_5!RG5sllTBnWe=hN diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/message.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/message.cpython-312.pyc index 0f7a797a5190dcd4fbee384b7ede5268b4a70f8a..13247e497043755e1403d12cd95ccd1184f47555 100644 GIT binary patch delta 52 zcmeD4pXSefnwOW00SJ0FUERq2iAyR>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX)`}} Gy$k@sgb?Ha delta 44 ycmbQ{-{;SLnwOW00SFr2T-nI|iA%^&KO;XkRX;tiLf<8|IJ+djV6!-Py$k?Gk`Cek diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/messaging.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/messaging.cpython-312.pyc index ac0a741f4790661ee84954f489471ad021cbf4e2..f560e89f3a0a05ee2aa2021265f44bbfc112e872 100644 GIT binary patch delta 54 zcmex+iLv!EBll@uUM>b8=-G62Bew#lRD^y;er~FMdR~RTOKNd;Nq&L8yI+KExU17< ITTX`r0P-mjs{jB1 delta 46 zcmZp@%=q^bBll@uUM>b8Xn1pFBew#lP=J0$er~FMdR~RTOKNd;Nq)g*S5Ain0C5rz AsQ>@~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/mixins.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/mixins.cpython-312.pyc index 2771ba32873a120e9e00947bdaa7cf01e45f4516..b63b4c3c64753b8544501563a99bb32cc4348e18 100644 GIT binary patch delta 52 zcmbP|IVY3*G%qg~0}%9Vy1J3OnqMkZKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z&J GKPmvh`Vqqb delta 44 ycmbP}IVF?(G%qg~0}wR4xw4VFnqSCQKO;XkRX;tiLf<8|IJ+djVDke0KPmu7pbxt2O{YRSt^) diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/serialization.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/serialization.cpython-312.pyc index 7a4a411c1dc267bbf244022a3569d47c34b39112..cd6855a9ee140d44a051458d97dffe6aa4306b98 100644 GIT binary patch delta 54 zcmcaRf$`}CM()$Ryj%=G(6j04Ms68asTlo?{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z ImaHny0OH6IApigX delta 46 zcmaDlf${DHM()$Ryj%=G(D3HUMs68ap%DFy{M=Oi^t=jvm(=3ylKg_rj;t!q0A+R$ A9{>OV diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/simple.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/__pycache__/simple.cpython-312.pyc index 0e6d6a54e5ed3f3f223402e43356ad65990287dc..e33eff553a1805152d208e42b84ff24d501ff10b 100644 GIT binary patch delta 52 zcmaE3`o)y{G%qg~0}%9Vy1J3OoJlHFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a4O G2nhhp`Vlz* delta 44 ycmexj`o@&|G%qg~0}wR4xw4VFoJq)6KO;XkRX;tiLf<8|IJ+djVDlWN2nhgD=nppl diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/__init__.cpython-312.pyc index 2c92fa22274687012b5f226562f0f00ec8cbb93a..113aa112c1c6bbd9cc463ae1415ed12ffbe12eb8 100644 GIT binary patch delta 51 zcmaFK{E?aaG%qg~0}%9Vy1J3ugHb9)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>uxK F3jm@a5OM$j delta 43 xcmey!{F0gbG%qg~0}wR4xw4VlgHb3(KO;XkRX;tiLf<8|IJ+djU~(>F3ji%?4sZYf diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/debug.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/debug.cpython-312.pyc index c1ad71d2eec3c216582b6dbb89b04f2e6df3541c..56d51de6c69c100bd15e36553800feaf7ecde1e6 100644 GIT binary patch delta 52 zcmX>oeNvkHG%qg~0}%9Vy1J43Afr^Genx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>1O GkGTQA1rf^t delta 44 ycmX>peNdYFG%qg~0}wR4xw4V_Afr&Eenx(7s(yN2g}zH_adt_5!RBX-kGTOwn-9qV diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/hub.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/hub.cpython-312.pyc index 4b7a65e505d5552ad76d38fb8181b2f250d41b98..e664180b535833cfe6701c783491f63773c1ba06 100644 GIT binary patch delta 54 zcmcc7!1$nnk^3|+FBbz4^lZAikz0dVDqcS$KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IE3>dI0Nel&_W%F@ delta 46 zcmaFRz<8s9k^3|+FBbz4G`zX8kz0dVC|o}yKQ~oBJ+DIFCAB!aB)?#@FSD>M0AH34 A^#A|> diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/semaphore.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/semaphore.cpython-312.pyc index 3cefc575340b0ed50363166cf7d77101cf1b60a8..7008e5f3cbd153f7e87fe5ece7c4401ca88e4d3f 100644 GIT binary patch delta 52 zcmaE_{au^;G%qg~0}%9Vy1J3umsKiNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%59 Gs{jDTwh^`s{jB@%nuL% diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/timer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/__pycache__/timer.cpython-312.pyc index fa8c3e74a2de44400aeca034cd87d4163282c545..84a7bedaaf7292c59dab93a9f24ed8bc4fc145a6 100644 GIT binary patch delta 52 zcmbOqwmgjcG%qg~0}%9Vy1J2jHH%cDenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-Q_ G;c5WHun}ee delta 44 ycmZ1;Hb0E}G%qg~0}wR4xw4UaHH%QBenx(7s(yN2g}zH_adt_5!R8Ar;c5U%P7h=N diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/__pycache__/__init__.cpython-312.pyc index 2a77915de86768dad1af3d87ad4738bf42325938..b0b15e7f58969fe1762bb8c152dbddd2fbbbefe3 100644 GIT binary patch delta 52 zcmZo*>tN$P&CAQh00cdou5RQ`WR%L#&&bbB)lbi>(055K&MwI>(0BKX&<%HW+FZxj G#0UV6xDWdP delta 44 ycmeBRYhdF(&CAQh00a$hu59E^WE4u!&&bbB)lbi>(055K&MwI>*xbh0#0UT#b`ALe diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/__pycache__/connection.cpython-312.pyc index 4762bef1e9105b3f08a14841b2becf9531fc2295..46f4111a1e3b7fb5ec22fa62837ba2952c8f34f6 100644 GIT binary patch delta 52 zcmZq6>C53h&CAQh00cdou5RR>#3YrapOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0S*K GxG@00co9GV delta 44 ycmeCnY0Ke0&CAQh00a$hu59F<#3YoYpOK%Ns-K=$q3@DfoL!P%uz5RExG?}m)(<`a diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/__pycache__/ext.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/__pycache__/ext.cpython-312.pyc index 98765ea9aaddb558a7e001fbfdec55e45f68e149..3db8e71fc9a85d7a104ef5bdad09146e5ef4945e 100644 GIT binary patch delta 52 zcmdnOv4?~EG%qg~0}%9Vy1J436r)tKenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^-l GzDxkJ$`Jqn delta 44 ycmdnPv4w;CG%qg~0}wR4xw4V_6r)hIenx(7s(yN2g}zH_adt_5!RGgjzDxi+2oC-L diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/__init__.cpython-312.pyc index dfad602b3c33e2bf6e3fe19000dbcf59123997a2..f8cce552ee53f7282c6842825aa63566c6f1fa26 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}%9Vx;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcjFJy delta 41 vcmX@hc$AU*G%qg~0}wR4xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2+$4B diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/connection.cpython-312.pyc index fc853bd02e346fde15f340012abf84bb39ab1d6d..37c85ec1a4bd5e2cf07cd0e581548875d11b309f 100644 GIT binary patch delta 52 zcmbPGFr$F`G%qg~0}%9Vy1J43A+uDTenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>E7 GLM8yw)e*b^ delta 44 ycmbPHFrk3^G%qg~0}wR4xw4V_A+u1Lenx(7s(yN2g}zH_adt_5!DcoVArk;lwhp@h diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/ext.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/ext.cpython-312.pyc index 7f6fb7682d0bd8a678bd5b18a53b7ba3338f3c90..4d6fd797cf58d5c9654e6a473d8f5ccc333feb49 100644 GIT binary patch delta 49 zcmZo*?qKFV&CAQh00cdou1@4WES0XGk)NBYpPpBt?~+=aU6Nm*@9r0&8}8~f@xcNB DaOn_{ delta 41 vcmeBRZeZp<&CAQh00a$hu1w@UEEKPwk)NBYpPpBt?~+=aU6Nlg@x=lF0j>^@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/message.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/aws/sqs/__pycache__/message.cpython-312.pyc index 26179ef9fba959c1895f01d8fc9dc8e3dcea3741..77143cdf55b5d66292fab6ec4eb8a7ad4c2c6d28 100644 GIT binary patch delta 52 zcmey&`tg GPOJdNxe*)y delta 44 ycmey(`&It Gn*;!;J`gPc delta 44 ycmbPfJkgl@G%qg~0}wR4xw4Tvk5MR5KO;XkRX;tiLf<8|IJ+djVDn@~HVFVStPU#x diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/http/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/http/__pycache__/__init__.cpython-312.pyc index 81b2936065563ae5e0d7ce28464cbf611eb62c68..46b9974281cd9f9e148c051c8a0eb0dc0599eaa1 100644 GIT binary patch delta 52 zcmcb>d4rStG%qg~0}%9Vy1J2jDx*}Uenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8)exuv delta 44 ycmcb?d4ZGrG%qg~0}wR4xw4UaDx*-Menx(7s(yN2g}zH_adt_5!RB3za?AieyAGxR diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/http/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/http/__pycache__/base.cpython-312.pyc index ff86f84bfbd4f2c53c639031c09c98a6e864427b..c61a9a87e91f1f9b8a4185432d5bef3dc03860f1 100644 GIT binary patch delta 52 zcmdmydLWhiG%qg~0}%9Vy1J1&jae#HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&8P GsXhS8VG$Jo delta 44 ycmX?*x+9hQG%qg~0}wR4xw4TvjaevGKO;XkRX;tiLf<8|IJ+djU~@OKsXhQtj}H?7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/http/__pycache__/urllib3_client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/asynchronous/http/__pycache__/urllib3_client.cpython-312.pyc index 32acff82663c8e39318e68cc5ea2854ad34c1bde..9f1d8e10917489af06a196d448a603a794b45c73 100644 GIT binary patch delta 52 zcmbQ_I?I*&G%qg~0}%9Vy1J3uh(#)2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|q3z Gvm5}ZY7i;_ delta 44 ycmbQ`I?0v$G%qg~0}wR4xw4Vlh(#z}KO;XkRX;tiLf<8|IJ+djU~@Q&vm5|3Kn^GX diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/SLMQ.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/SLMQ.cpython-312.pyc index 5d54115a02c9f4d36b3df371d54245eb62ffcd5a..2322a912e52918de06943d5f3a6f312b32d55d9a 100644 GIT binary patch delta 52 zcmZn(>>%)4zmCN diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/SQS.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/SQS.cpython-312.pyc index 124b2a8a5e9414345fa2a0c5f13ed0f2a831a933..590b86fc8094403be3f4e1df5a8d8f3235b69629 100644 GIT binary patch delta 54 zcmZ2^hH2v&ChpU`yj%=G(6j04M(*k2QZf1&`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jw}_Ya0Ra2766pW{ delta 46 zcmdmZhH2#)ChpU`yj%=G(D3HUM(*k2LLvGY`MIh3>3J3UE~&-YCHV!L_lTGF0RVYw B5a$2@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/__init__.cpython-312.pyc index 5eea548f30c604407c52f04115612bfb83c452ea..1db9ed5d2c3fb54e98d49544efbf81d91cf1b4cf 100644 GIT binary patch delta 52 zcmZ1=yF!-xG%qg~0}%9Vy1J2Dj7cg{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pj? GE)M{hehyFixvG%qg~0}wR4xw4U4j7ca`KO;XkRX;tiLf<8|IJ+djV6!z-E)M`ER1Lxa diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/azureservicebus.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/azureservicebus.cpython-312.pyc index 6a202582eba2688a80fd680bb2755ae59cadaa8f..4eb4bf481d272727117265654d5a54713158b025 100644 GIT binary patch delta 54 zcmdn9k@3hzM()$Ryj%=G(6j04M(!3KsSN#${M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I3wfk{0Q6lF3jhEB delta 46 zcmX@Ik#WyPM()$Ryj%=G(D3HUM(!3Kp#=Sm{M=Oi^t=jvm(=3ylKg_rD|w`S0CO`C A2><{9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/azurestoragequeues.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/azurestoragequeues.cpython-312.pyc index 8fc7b51e61633ecf45c27a3dad84214804a32432..7412b29e43daed0c07ba63435873462410091c17 100644 GIT binary patch delta 52 zcmdlRaWsPaG%qg~0}%9Vy1J2@g;y$DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p1) Gj649kpAa$t delta 44 ycmX>au{VPIG%qg~0}wR4xw4U)g;yw9KO;XkRX;tiLf<8|IJ+djV6!H#j648B-3~AS diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/base.cpython-312.pyc index d0b13666092f1f0959093ffd2faff6d2340d7baa..87045eee026fb0d515dd2a2f8ec3bd5d7ef591ae 100644 GIT binary patch delta 52 zcmX>beKnflPUmBDGvSs diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/confluentkafka.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/confluentkafka.cpython-312.pyc index 214b86b5500f6b1769eacb60b73f91c7757297df..00faf112815c016e78b549356975c199a5d68a66 100644 GIT binary patch delta 54 zcmX@w&3Lw(k^3|+FBbz4^lZAik=vX{DqTM#KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw I2v4CU0Nv0Lc>n+a delta 46 zcmX@x&3Lq%k^3|+FBbz4G`zX8k=vX{C|*A!KQ~oBJ+DIFCAB!aB)?#D3{RmY0AS`1 AcK`qY diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/consul.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/consul.cpython-312.pyc index e7cf28086601d8f5ffd5748cc28f5d8f3f4d0c2b..dc5c57ea222033042e60455877b76b407514074d 100644 GIT binary patch delta 52 zcmaD^{IQt(G%qg~0}%9Vy1J2jH;Yufenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-p2 Gf~ElPB@!C| delta 44 ycmexZ{IZz)G%qg~0}wR4xw4UaH;YiXenx(7s(yN2g}zH_adt_5!R7}nf~Ej%;}97D diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/etcd.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/etcd.cpython-312.pyc index 11fda3f4ade2ac65a2b0fd1a2857a8794f1c7395..3d872046e28f4b558f46c944e31414c90aa71709 100644 GIT binary patch delta 52 zcmbP`H6x4rG%qg~0}%9Vy1J2j3AQh G{<;9gV-aHj delta 44 ycmbP{H6e@pG%qg~0}wR4xw4Ua3A<3Jenx(7s(yN2g}zH_adt_5!RC|f{<;84@eg4D diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/filesystem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/filesystem.cpython-312.pyc index 983826848c2d13d8b96e62d0439282bfd6181080..5718aef974c2c3b5b4c85bdc369332299d6c94ed 100644 GIT binary patch delta 52 zcmcap{G^!sG%qg~0}%9Vy1J2jJFir-enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;F@ G96A8&1QGoJ delta 44 ycmaD-e5aWEG%qg~0}wR4xw4UaJFif*enx(7s(yN2g}zH_adt_5!R9->96A7MN)P)0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/gcpubsub.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/gcpubsub.cpython-312.pyc index f65cac929aaf00bc73a577d93351b3be4eb44f87..ce4f1319880764dac35ca93e4c815701b7d7b746 100644 GIT binary patch delta 54 zcmbO|lWFlxChpU`yj%=G(6j04M(!{!sYLyZ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I#atRq0M+afcK`qY delta 46 zcmZ2HlWF!$ChpU`yj%=G(D3HUM(!{!p-BCV{M=Oi^t=jvm(=3ylKg_r)m$1)09pDE AbpQYW diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/librabbitmq.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/librabbitmq.cpython-312.pyc index fe4384823187bc72b58f2c44a8fc1d15d3c60ddc..2997042f14052b5152ac51cd6bee573fcba6b2e2 100644 GIT binary patch delta 52 zcmaFv`reiMG%qg~0}%9Vy1J2DoK-4CKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oCI GW?2Bm^brIA delta 44 ycmaFw`rMWKG%qg~0}wR4xw4U4oK+}BKO;XkRX;tiLf<8|IJ+djV6zSDW?2ACq7MQ9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/memory.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/memory.cpython-312.pyc index d20c32fb524af3f89b03ed22baae278f69a8920c..8a78e7ae96db197e3622a0ab849df40d69ff54ed 100644 GIT binary patch delta 52 zcmZ3ewo;AzG%qg~0}%9Vy1J2j6|+>lenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^yM GQTzb1BM|Ta delta 44 ycmZ3fwor}xG%qg~0}wR4xw4Ua6|+#denx(7s(yN2g}zH_adt_5!RGVKQTzZp!4B>K diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/mongodb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/mongodb.cpython-312.pyc index 5b9659e95160bfeff083e964757512f534a2df55..31abd5cc2a51dfbffa45919974045e7eb6c7e188 100644 GIT binary patch delta 54 zcmdnBl=09~M()$Ryj%=G(6j04Ms6lHsRaFu{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I@@%tx0NR@oR{#J2 delta 46 zcmX@KlyTQmM()$Ryj%=G(D3HUMs6lHp$Pqq{M=Oi^t=jvm(=3ylKg_r>TI)p0AA4# ARR910 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/native_delayed_delivery.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/native_delayed_delivery.cpython-312.pyc index 1cf44030ef73241f1286d7273aa8ef5e31cf495f..0900cce20c0f526c613f6d489f05e7b95141fd67 100644 GIT binary patch delta 52 zcmbQJJ5!hYG%qg~0}%9Vy1J2Dg-NPFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p3! GfCvDbcMseE delta 44 ycmbQKJ5iVWG%qg~0}wR4xw4U4g-IwwKO;XkRX;tiLf<8|IJ+djV6!JvfCvC7RSntz diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/pyamqp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/pyamqp.cpython-312.pyc index bb3b661663f65c7579d0b9324a7e7087b5838ae8..578721b0cd6e92797137846a5c69a39926f1c4ab 100644 GIT binary patch delta 52 zcmbOhGB1StG%qg~0}%9Vy1J43E04E8f{bV6 E0K#bznE(I) diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/redis.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/redis.cpython-312.pyc index 994dbeec9d060974338a3f27f7f4d9fbe1e46a19..f6c3de1299ff96b6cb7c716820e77d3afc856d09 100644 GIT binary patch delta 54 zcmX@qz;ddAh5IxwFBbz4^lZAik$VxZRGfZBer~FMdR~RTOKNd;Nq&L8yI+KExU19V I{k+Ye0O=zV{Qv*} delta 46 zcmX@rz;dX8h5IxwFBbz4G`zX8k$VxZP?&y3er~FMdR~RTOKNd;Nq)iR A`v3p{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/zookeeper.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/__pycache__/zookeeper.cpython-312.pyc index 8211400742835edec89a6c9b29d4f9dbc9049689..013c4034e551dc33bf7a3ff54ae6b6ef9260cbbd 100644 GIT binary patch delta 52 zcmZ4Pv)+gMG%qg~0}%9Vy1J2Dhg&L1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pHy GJt+XQI}q*w delta 44 ycmZ4Qv)qUKG%qg~0}wR4xw4U4hg&F0KO;XkRX;tiLf<8|IJ+djU~?e%Jt+V@u@3A2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/sqlalchemy/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/sqlalchemy/__pycache__/__init__.cpython-312.pyc index eecac9fc629af032c7597eeb19ae4815d5bf66c0..212c592a3e14307f93f02e138cb7d5e2179807dc 100644 GIT binary patch delta 52 zcmZ1+yE>NpG%qg~0}%9Vy1J2j4yRO(enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?I= GuT%iZ_YwpE delta 44 ycmZ1-yEvBnG%qg~0}wR4xw4Ua4yRCxenx(7s(yN2g}zH_adt_5!RCXUuT%g|-4Fr* diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/sqlalchemy/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/sqlalchemy/__pycache__/models.cpython-312.pyc index c870ca6cf4f6006bcdccf2da888d1678e2463d99..e427e6baafcf701964bf686ed5f07713e1e594a1 100644 GIT binary patch delta 52 zcmcaAeOH?MG%qg~0}%9Vy1J3OhFL00KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c2G G8!iC6&k)W4 delta 44 ycmcaBeN~$KG%qg~0}wR4xw4VFhFK^{KO;XkRX;tiLf<8|IJ+djVDmy|8!iAt^$yGc diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/virtual/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/virtual/__pycache__/__init__.cpython-312.pyc index 03752f37452478519e17b6f6f0144837fa16e3f6..814dc0c1b09b1093c8204d6af274c19e2ca78c96 100644 GIT binary patch delta 51 zcmbQpI+K3J3UE~&-YCHV#V?tT%v;jT`b JrP!@j0RSJs6951J delta 46 zcmccfi0R5BChpU`yj%=G(D3HUM()3CLb3W8`MIh3>3J3UE~&-YCHV!LmDsIT0RWa~ B5dHuF diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/virtual/__pycache__/exchange.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/transport/virtual/__pycache__/exchange.cpython-312.pyc index 5fdb08292a368b2db6e90b1b4ce300f4156e4e4c..6c3a7a3c4a8e80f440584b51af8b1f139d1c6e17 100644 GIT binary patch delta 52 zcmZ2sxxteAG%qg~0}%9Vy1J2jDw9;Eenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8lElK?kW4@Uq1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/amq_manager.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/amq_manager.cpython-312.pyc index bafc516612d4d89968560690e1fd743a3c1fc8d9..1970945703d729ad2577b52768432fb9aa8446ee 100644 GIT binary patch delta 52 zcmZ3ba GqU-?9?h#Y~ delta 44 ycmew-_)U=eG%qg~0}wR4xw4V_2%}Jhenx(7s(yN2g}zH_adt_5!RD8YqU-=t#1B#c diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/compat.cpython-312.pyc index b72e0b7ad67e8bcb76a74773ce811aeba4828f15..9dc56f5d64be6b28b71bb5d2b9a9c649966c4226 100644 GIT binary patch delta 52 zcmcbtc3X}6G%qg~0}%9Vy1J2j3X@c{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>s# Giv$3|yb)^v delta 44 ycmcbuc3F-4G%qg~0}wR4xw4Ua3X@QkdrFr3G%qg~0}%9Vy1J431d~*henx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?m4 Gcew$;d=bldq|f1G%qg~0}wR4xw4V_1d~vZenx(7s(yN2g}zH_adt_5!REJ2cew#Z+7HqI diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/div.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/div.cpython-312.pyc index 9d0796e97ae4fc1130a986fb3c364de085ca89e0..7eaa3c61a7dc3782fff0a0d05b843cb3d88de5ce 100644 GIT binary patch delta 52 zcmcb{bB~AnG%qg~0}%9Vy1J3um_;f=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Mz G8xsJk1rO2y delta 44 ycmcb|bB%}lG%qg~0}wR4xw4Vlm_;Z+KO;XkRX;tiLf<8|IJ+djU~>cu8xsID+YQhF diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/encoding.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/encoding.cpython-312.pyc index 422eda76847d1209ec02097068e8f62b7fb13313..4813b8ffb40caf5037a774ef9d310ea83cdd5445 100644 GIT binary patch delta 52 zcmdlcvrmTmG%qg~0}%9Vy1J2@k4Y+4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pyH GHxB@wZVz|> delta 44 ycmdldvrUHkG%qg~0}wR4xw4U)k4Y$0KO;XkRX;tiLf<8|IJ+djV6!n3HxB?SR1J0j diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/eventio.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/eventio.cpython-312.pyc index 5042d02eba73b1bf77bd0e22afd8bdc0ec69e135..7c3ce912c2134025ace083e6cd490c501c47144a 100644 GIT binary patch delta 52 zcmexe*<8hanwOW00SJ0FUERpNn@uW4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z&> GWitTZ>Ji`o delta 44 ycmZp!`d!I=nwOW00SFr2T-nIIn@uQ0KO;XkRX;tiLf<8|IJ+djVDkeuWitR^Di7WO diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/functional.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/functional.cpython-312.pyc index 255801367acbd55ad328cfbd2f91e9a76e4720f6..8e6abd880e20a3521e051074bd53f8e17047fff4 100644 GIT binary patch delta 54 zcmey+!uX?wk^3|+FBbz4^lZAik(+~ADqcS$KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IDzmpe0OKYRDF6Tf delta 46 zcmey-!uX+uk^3|+FBbz4G`zX8k(+~AC|o}yKQ~oBJ+DIFCAB!aB)?#@F0;2i0A>6S ACjbBd diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/imports.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/imports.cpython-312.pyc index 69bb8eea153718cb1e2054ef39a816817782f5fb..67ebb0868e3f0d7063c4b00691f5f92548762611 100644 GIT binary patch delta 52 zcmX>ud|sIQG%qg~0}%9Vy1J1&kzFcAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%RB GCldg#2@q=l delta 44 ycmX>vd|a6OG%qg~0}wR4xw4TvkzFW6KO;XkRX;tiLf<8|IJ+djU~?P0CldfTw+?9l diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/json.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/json.cpython-312.pyc index e940ee2d08157bba65bdf303d63f4f03a37bb2d9..d0dfd20ef2d887ea39edb80bbc2627c41ad160b3 100644 GIT binary patch delta 52 zcmexi)L_hgnwOW00SJ0FUERn%fmJF}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cjv G)4~9~MiF)Z delta 44 ycmZoL{$a#@nwOW00SFr2T-nGyfmJ9_KO;XkRX;tiLf<8|IJ+djVDnbi)4~8lo)2^Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/limits.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/limits.cpython-312.pyc index 6da050a7477555a823cd627c14ee2adb9841d525..748292f1a0eb2367f4b64bc83dd498aeed795af8 100644 GIT binary patch delta 52 zcmZ1~yH=L_G%qg~0}%9Vy1J2Dh(#(|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p~{ G85aPVf)C38 delta 44 ycmZ20yHu9@G%qg~0}wR4xw4U4h(#z^KO;XkRX;tiLf<8|IJ+djV6!<(85aO2NDavV diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/objects.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/objects.cpython-312.pyc index c3348fb13f3efa56bf33895e6016422e20bb0de1..b637b98828537d6939ada72cac34133136c5fb71 100644 GIT binary patch delta 52 zcmdliv0H-sG%qg~0}%9Vy1J2DkXb55KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o

    %si G8g2laK@d&= delta 44 ycmbO$GgXHBG%qg~0}wR4xw4Vlhe;?c GKO+F8QxCHM delta 44 ycmcb|a*c)iG%qg~0}wR4xw4U4i%}?0KO;XkRX;tiLf<8|IJ+djV6#6XKO+D!0S&PL diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/url.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/url.cpython-312.pyc index 0096dab9d446593b16b19038b0627652ae4a4c83..f8a7ddf98fbc6109cedb90ac18d8f0e0c5ad6a9b 100644 GIT binary patch delta 52 zcmX@0bwZ2#G%qg~0}%9Vy1J43Hj`9@enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-#c G9zp=dH4%US delta 43 xcmX@1bwG>zG%qg~0}wR4xw4V_Hj_|*enx(7s(yN2g}zH_adt_5!6s%8Apkiz4t@Xt diff --git a/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/uuid.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/kombu/utils/__pycache__/uuid.cpython-312.pyc index 26bb69f119674926f6414987bda49399ec656c04..d320fbba5138621b40214aa55e3289a1d113f4e8 100644 GIT binary patch delta 52 zcmbQmx`>tgG%qg~0}%9Vy1J1&pHV7OKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$)F GA0q&m3lGKs delta 44 ycmZ3)I*XP2G%qg~0}wR4xw4TvpHV1KKO;XkRX;tiLf<8|IJ+djVDl74K1Ki~K@G$J diff --git a/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/__init__.cpython-312.pyc index 1afb0fb0ed2bc02218cab24f538ca97e14049f97..ea0f7b6a14293e106c472e4f4409296909eada2d 100644 GIT binary patch delta 51 zcmZ3;vXX`SG%qg~0}ym=y1J1&pHV7WKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>t$a FQ~-*W5I6t; delta 43 xcmZ3$*= G10MjmmJq7| delta 44 ycmcbjd`6l3G%qg~0}#}{xw4TvpIInWKO;XkRX;tiLf<8|IJ+djVDl7a2R;BmjSi>) diff --git a/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/_parser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/_parser.cpython-312.pyc index 02571e18e3b157a31acda8e0a85b9648e808612c..605918df143ddb4dab7f4cb8e6a873e4aa8fcb0c 100644 GIT binary patch delta 52 zcmZ3OyE2#iG%qg~0}ym=y1J3ui&-j4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&TW Gl`#Omnh?7H delta 44 ycmZ3PyD*pgG%qg~0}#}{xw4Vli&-d0KO;XkRX;tiLf<8|IJ+djU~@jRl`#NC;SRU} diff --git a/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/_structures.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/_structures.cpython-312.pyc index 2908f20ce09c6b82e96829599f06c8619d954e7c..7123dfbafe930145462fdc00e309e8fcd7fa850c 100644 GIT binary patch delta 52 zcmbOuxkQrtG%qg~0}ym=y1J1&no%lFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$dm G3O4|rG7s$l delta 44 ycmZ1?IY*NFG%qg~0}#}{xw4Tvno%fBKO;XkRX;tiLf<8|IJ+djU~>bb3O4{MaSiGK diff --git a/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/_tokenizer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/_tokenizer.cpython-312.pyc index d0f55974e433037233a00987dc69578f7d8de431..eca70825d4fb624b618f8c7816e211ce56825cea 100644 GIT binary patch delta 52 zcmexw+iu5wnwOW00SLM_UERnn#w-=9pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq;X Gj5GkUFc7T( delta 44 ycmZp-`)|vAnwOW00SIc}T-nGi#w--7pOK%Ns-K=$q3@DfoL!P%u-TgVj5Gi{84jud diff --git a/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/markers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/markers.cpython-312.pyc index e2f1153e01550776481912be7000565e2fb60b6f..0568dafb2df469b7c6c89d655976e52d6f818f76 100644 GIT binary patch delta 52 zcmcbRd?T6rG%qg~0}ym=y1J2jH;Yu1enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-p2 GKXd@!%Mzdf delta 44 ycmcbSd?A_pG%qg~0}#}{xw4UaH;Yh^enx(7s(yN2g}zH_adt_5!R7}nKXd?LG7y~r diff --git a/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/metadata.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/packaging/__pycache__/metadata.cpython-312.pyc index b358a838c7473361e09933459b11e3a931417a8d..c83ece10dc12c77f8b44f516c75f8f4c279d602f 100644 GIT binary patch delta 54 zcmaEQh4JkbM()$Ryj%=G(6#C6Ms7=1sc8L-{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IVXXYA00mSL{Qv*} delta 46 zcmaERh4JYXM()$Ryj%=GQ2XY}Ms7=1p!0Q$QUF#rGn delta 46 zcmaETkn!CM()$Ryj%=G(6#C6Ms7V8sVM!7{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I-Yj#x0q@@t@c;k- delta 46 zcmaDqpYi#8M()$Ryj%=GQ2XY}Ms7V8p&Nd0qfB;SRR| diff --git a/gnx-react/venv/lib/python3.12/site-packages/packaging/licenses/__pycache__/_spdx.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/packaging/licenses/__pycache__/_spdx.cpython-312.pyc index 8e4377e353b7576efb9a9abec12f56ce4aa8fcad..e8de91ce6d607044048496ee135d61b084a31bf5 100644 GIT binary patch delta 54 zcmezVk?H?OChpU`yj%=G(6#C6Ms7(xsYLyZ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IW_ky^02~byOaK4? delta 46 zcmezWk?H$KChpU`yj%=GQ2XY}Ms7(xp-BCV{M=Oi^t=jvm(=3ylKg_rc6tZ90F{Li ANdN!< diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD index db22af00..82a3f45d 100644 --- a/gnx-react/venv/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD +++ b/gnx-react/venv/lib/python3.12/site-packages/pip-24.0.dist-info/RECORD @@ -1,6 +1,6 @@ -../../../bin/pip,sha256=4nvxn8lGzfFJXFDidLHplK8Wx6yF6zeyXWR6-XCE1R4,249 -../../../bin/pip3,sha256=4nvxn8lGzfFJXFDidLHplK8Wx6yF6zeyXWR6-XCE1R4,249 -../../../bin/pip3.12,sha256=4nvxn8lGzfFJXFDidLHplK8Wx6yF6zeyXWR6-XCE1R4,249 +../../../bin/pip,sha256=mmTmCLJvZo5_wht45rZazEcNAJJ3RhgaAo84XzvsTqQ,257 +../../../bin/pip3,sha256=mmTmCLJvZo5_wht45rZazEcNAJJ3RhgaAo84XzvsTqQ,257 +../../../bin/pip3.12,sha256=mmTmCLJvZo5_wht45rZazEcNAJJ3RhgaAo84XzvsTqQ,257 pip-24.0.dist-info/AUTHORS.txt,sha256=SwXm4nkwRkmtnO1ZY-dLy7EPeoQNXMNLby5CN3GlNhY,10388 pip-24.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 pip-24.0.dist-info/LICENSE.txt,sha256=Y0MApmnUmurmWxLGxIySTFGkzfPR_whtw0VtyLyqIQQ,1093 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc index b57c87b1f52528aaff50177573fd57082393e207..62b4f80aec08d2c2ef141b8660f76fdca69c062e 100644 GIT binary patch delta 51 zcmZ3@x|x;xG%qg~0}wQBy1J2jF{4zdenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8qq; FuK|>N5d8oE delta 43 xcmdnYx|)^yG%qg~0}vFwxw4UaF{6;Lenx(7s(yN2g}zH_adt_5!Q>N+uK^(<4)_27 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc index 3a683c2982aef1772a00e64d17048fa45f7bc6a0..4a5e160d5b4c48ee329df52519833ca2e15b2f06 100644 GIT binary patch delta 51 zcmX@kcAkytV9 FdjOGC5N!Ye delta 43 xcmX@lcASm-G%qg~0}vFwxw4Vlnn}o4KO;XkRX;tiLf<8|IJ+djU~&S}djKC|4rl-X diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc index be16315422ba7aa9bf4f9c0e895e266f44b6a2ca..1c21a8056214443b0e1f7cc1e3f510c147d92239 100644 GIT binary patch delta 52 zcmbOwxJZ!uG%qg~0}wQBy1J2@gIOwCKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pPG GDJuYt91nH? delta 44 ycmZ1^I7^WGG%qg~0}vFwxw4U)gIOq8KO;XkRX;tiLf<8|IJ+djV6!fBDJuXRr44Za diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc index 92f24ddb1b7f8ec7ca49a325b4fc06d50f3ab90e..7e4433cc2c1909bc0769bfc54c058071dcabb354 100644 GIT binary patch delta 52 zcmbQpHj|C}G%qg~0}wQBy1J438lzOaenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@~N Ga*P0@P!Nv* delta 44 ycmbQqHj$0{G%qg~0}vFwxw4V_8lzCSenx(7s(yN2g}zH_adt_5!RFtLa*O~inGT8o diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc index 62d640ff6ed66ac1f461875057d49115d7729c21..92624dd2bad754cbf2edc5b585e6a3975e94ba71 100644 GIT binary patch delta 52 zcmcbTe&G%qg~0}wQBy1J2j4YO2&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>=R G+$I3wJ`uP8 delta 44 ycmcbUe$enx(7s(yN2g}zH_adt_5!RCw1+$I2F{|~bO diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc index d0c0c74bf246571747d02e32bab886ddc35b44d9..7363f5f768e67294970fe73d28c2b7eb7f141143 100644 GIT binary patch delta 52 zcmeyK^goIFG%qg~0}wQBy1J434zpB@enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?Pd Gb-DoYpAxJ9 delta 44 ycmeyL^gW6DG%qg~0}vFwxw4V_4zo~*enx(7s(yN2g}zH_adt_5!DdF5I$Z#3qYtP6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc index c743a36611307b92a092d24fbdf4d9cf95565ee2..32889efe93ba18c46c69daec1b9099e1c71780d2 100644 GIT binary patch delta 54 zcmZqZV(jQ*z>% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc index f3b57869f9d080840c18a8b6b0f143da39b18651..ff9be736d2a80fdff61c83e61c19c69ee23293b3 100644 GIT binary patch delta 54 zcmZo_Vd`pO;y%sG%f$c$jhn7+!sol3JWyl3$?j?iZmO?&`Gp IBAa0~0M7am#sB~S delta 46 zcmeBbVQOk&;y%sG%f$c$MQ^Tb!sol3JWyl3%d-CYxb308MQ4$c4o diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc index 33e618f7e4ccdceeed272b01fb1e2f1b45a8a2fd..3506bd04ced511e5f542ba41942c67774e2741fb 100644 GIT binary patch delta 52 zcmaE<_EC-dG%qg~0}wQBy1J3Okx42+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bd$ G(*gj;?h%v# delta 44 ycmeyU_EL@eG%qg~0}vFwxw4VFkx3{*KO;XkRX;tiLf<8|IJ+djVDmDj(*giZPY;g( diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc index afb8b18fa8b63174a99eadf9471dae00bc6319b0..e74c563c7105de58fbd2353aca47e272cac9ea34 100644 GIT binary patch delta 52 zcmdlMv@eMJG%qg~0}wQBy1J43Ig3=5enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FV{ GBNYJ9QxMz$ delta 44 ycmdlNv@MAHG%qg~0}vFwxw4V_Ig3z|enx(7s(yN2g}zH_adt_5!Db#-BNYHrln&Pb diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc index 4cfca3c087f10382f5d6fa9ec9e0cc0aca86011e..90a1ed8c9d461be2711601bc5f1c6808d9198d6d 100644 GIT binary patch delta 52 zcmX?~bv=vwG%qg~0}wQBy1J2DkWDH@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o=i GqCNn}SrCZ; delta 44 ycmcbfbv}#xG%qg~0}vFwxw4U4kWDB?KO;XkRX;tiLf<8|IJ+djV6z#UqCNmkS`LH& diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc index 62c03a1d14ea93007a8fa97e4ade26fd8f320d74..f81735aef0034eedb5dc40cbf0174abed57aabb0 100644 GIT binary patch delta 49 zcmbQjG>3`%G%qg~0}wQBx;l}&O)6PGBR@A)KRvHP-zBv;yClCr-`y`lH{8`};^IO8 DZT}Dd delta 41 vcmbQkG=+)#G%qg~0}vFwxiXQvO(3J3UE~&-YCHV#V?tT%v;jT`b I#f17&01v?u#Q*>R delta 46 zcmZ4UmT}2jM()$Ryj%=GQ1s@?M(&@2Lb3W8`MIh3>3J3UE~&-YCHV!L<%IfD0Emka AzyJUM diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc index a85e0762341d0a0b512e7461d137f4c29ec56632..582f407f4f190ed0fdbbf3cc86f09eceb527004b 100644 GIT binary patch delta 52 zcmey&`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|plY G0TuwWSP+u{ delta 44 ycmey(`9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Rx GN?rh|!4S6q delta 44 ycmZ3lwp@+-G%qg~0}vFwxw4TvkyR*8KO;XkRX;tiLf<8|IJ+djU~?PmN?rgn`VO)H diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc index 696fd6e9c6968381d10d8322ba9e8d6749021733..ef686c1bfc449e97cdb4ef44d1fa8a89fdc37c89 100644 GIT binary patch delta 52 zcmZ2ex}}u+G%qg~0}wQBy1J1&mqjX3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%8g Gk{JNXzY!7u delta 44 ycmdl|x~7!-G%qg~0}vFwxw4TvmqjR2KO;XkRX;tiLf<8|IJ+djVDlsvB{Kj|hz|__ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc index 453aa99ea04137b1222b30990a645677a8f58c45..2783aeec9fc8dd7e713c95444f4f7ad190cf4969 100644 GIT binary patch delta 52 zcmdlba!7>xG%qg~0}wQBy1J1&nN=!7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$YX GE*1c)?hwZS delta 44 ycmX>kvP*>fG%qg~0}vFwxw4TvnN=u3KO;XkRX;tiLf<8|IJ+djU~>oSE*1bZ_YT4U diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc index 6a85efca218c2d36bb2f631452839f2d13728b3d..30e58084eddee902d3789429203ed6ec48c11ef9 100644 GIT binary patch delta 54 zcmZ29nQ_%*M()$Ryj%=G(75U9Ms9l!sWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IF&u7=0MRoM8~^|S delta 46 zcmZ2AnQ_r%M()$Ryj%=GQ1s@?Ms9l!p*a1F{M=Oi^t=jvm(=3ylKg_rDI9K&09D)% A7XSbN diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc index 20fe886fc1fda62a1bd59bc4f46b153138d3449d..a67596b8e8b9469b5f60d8d096e11a5d96554b13 100644 GIT binary patch delta 52 zcmbPdyUdpRG%qg~0}wQBy1J1&fk`S^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%=; Gq6`47HxN$% delta 44 ycmZ2xJI|K;G%qg~0}vFwxw4Tvfk`M@KO;XkRX;tiLf<8|IJ+djU~?;zq6`2w$PP*X diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc index 35fd2ce3f5d6d7e2d18ed28f378552bcd92e3b4a..714fd92838a1c11b3db167d9913c44bbaf03aa24 100644 GIT binary patch delta 49 zcmey$^p}bIG%qg~0}wQBx;l~jxKz4+Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#3vI0 Dn^X~J delta 41 vcmey%^p%PGG%qg~0}vFwxiXRaxKO-)Mt*LpetKSozDsIxc1eE0#5WTGB)tz} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc index 47241d0a329c470f2a3a79f6a0e049b0c820d40c..83479e5e188332c554d184bb270016ea789d029e 100644 GIT binary patch delta 52 zcmZ1=ze1k-G%qg~0}wQBy1J1&kV`5%Tz G5i0zd)Y*G%qg~0}vFwxw4TvkV_~*KO;XkRX;tiLf<8|IJ+djU~?Il5i0;KI1U2< diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc index b85673247f677f267954ee8cbc5f0949d596d5ba..6e8388f81d394eec6c68b1e0fe7c501017510ad3 100644 GIT binary patch delta 52 zcmaFs{neZMG%qg~0}wQBy1J3ukWDI8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o^O Ge0c!O{1G+) delta 44 ycmezB{nnfNG%qg~0}vFwxw4VlkWDC7KO;XkRX;tiLf<8|IJ+djU~?GTe0cy;1rIR* diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc index 1b4e7b3ceb53ff4db7d07614da0c72dbd887335b..aa040d30554b79448ba98768824bdab7eb44785d 100644 GIT binary patch delta 52 zcmZ1>ut9+PG%qg~0}wQBy1J437>iV@enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@x4 GuFL?hco60Q delta 44 ycmdlWutI?QG%qg~0}vFwxw4V_7>iJ>enx(7s(yN2g}zH_adt_5!RFU2uFL>8=?>ul diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc index 1dd6e90f26b86246bc6c5cfe452e545884470ebe..ef49a86ff3090e9c2659bea9ea021d2345efc635 100644 GIT binary patch delta 52 zcmX@6aZZE#G%qg~0}wQBy1J2j9gkF&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^AW G)$9PnXAyA# delta 44 ycmX@7aZH2zG%qg~0}vFwxw4Ua9gk3wenx(7s(yN2g}zH_adt_5!RE_6)$9OB&<|_? diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc index 43355924793a858139c402d2761ffcbff4861e98..c2988db9366afae2c0b3247010eb3814f3fe146e 100644 GIT binary patch delta 52 zcmbQ0z9^mhG%qg~0}wQBy1J1&np-MYKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$d) Gk_G_1(Ga=- delta 44 ycmZ3KJ}aI3G%qg~0}vFwxw4Tvnp-GUKO;XkRX;tiLf<8|IJ+djU~>bvk_G@ok`A>1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc index 26e8eba3780b4dfb554846cd1153b35315840fa2..71b7e1bbfa856e3fd2622bbbb3a61d3dfadadffd 100644 GIT binary patch delta 52 zcmZ4QzulkvG%qg~0}wQBy1J3um{}@SKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$N` Gyb1udJrIQe delta 44 ycmdn)zuuqwG%qg~0}vFwxw4Vlm{}-RKO;XkRX;tiLf<8|IJ+djU~>d>yb1t4?hb$e diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc index ff44cb66fa6e4fa23fbc055977c80c4fe1c56019..48c9c2671f062420b79b771139974cc215665e86 100644 GIT binary patch delta 52 zcmZ2%z1o`lG%qg~0}wQBy1J2@kxwc^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o(( GD?b3ESr7{V delta 44 ycmZ2&z1W)jG%qg~0}vFwxw4U)kxwW=KO;XkRX;tiLf<8|IJ+djV6z%uD?b1)Dh>t! diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc index 1772ab86ea3b48056ce94fd71648f21a11184aa6..c8b1d5161ba19d0ed73ae95d90dbc976c317eb35 100644 GIT binary patch delta 52 zcmdm|bWDl+G%qg~0}wQBy1J2jBBNBAenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=)I G6ZiqQyAd7$ delta 44 ycmX@6v`>lqG%qg~0}vFwxw4UaBBM~8enx(7s(yN2g}zH_adt_5!RBp@6Zio?WDgkt diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc index a19c06fb1602a29a5684da10861f6d9fc8f78cd7..bf406932266d9c3ba25ee1fad6e2d6f88948b90e 100644 GIT binary patch delta 52 zcmZ1~zE+(3G%qg~0}wQBy1J3ug+(ewKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%fr G3p)UvnGfs$ delta 44 ycmZ20zEqt1G%qg~0}vFwxw4Vlg+(YvKO;XkRX;tiLf<8|IJ+djU~?vm3p)TQ;tl5j diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc index 2d03f1bf0a55cf3ed1b099281e368674dcd31181..e4486ffe968978a864fb5abb5a89c9fe824c2513 100644 GIT binary patch delta 52 zcmZqY?dRn_&CAQh00fPju5RSs%q*3npOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD|(_ Gb|wIx^bqC% delta 44 ycmeC@ZRh1a&CAQh00c#Eu59Gq%q$e6pOK%Ns-K=$q3@DfoL!P%u=xh_b|wHSO%CAz diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc index 3f2a9aca2054ae998980d0102d3a173ad4cc6a13..30d64bdd0df5d3669619b1aaf2c112ac486f0d52 100644 GIT binary patch delta 52 zcmdmIa?FJLG%qg~0}wQBy1J43FPl`Venx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G4l G6=49%j}W{7 delta 44 ycmX?Rvd@J3G%qg~0}vFwxw4V_FPl)Tenx(7s(yN2g}zH_adt_5!Dc0P6=48Pm=3o9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc index d344053cca2176274c29073e50833c54b1d92a05..39902cfb19bdf03aaf030ba250e4137645d65ba1 100644 GIT binary patch delta 52 zcmZpb@0I61&CAQh00fPju5RSkV3kVO&&bbB)lbi>(055K&MwI>(0BKX&<%HW+U&~e Gzy$!1O%I3w delta 44 ycmeB`Z(055K&MwI>*zC*dzy$yv)(wLI diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc index a103ff109c52010e5b5817d378f46574d2e561ee..b54fd04464be3adb2431ddc7c19eb3d5d6a6c5cc 100644 GIT binary patch delta 54 zcmaF=kn#INM()$Ryj%=G(75U9M((=`QtA2``MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Je<^(R2LLRX6np>x delta 46 zcmezVkn#OPM()$Ryj%=GQ1s@?M((=`Lh3J3UE~&-YCHV!LnH0bJ0|1@P B5qJOq diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc index 2c1523f9951afb53f808919f1f2376651d9b6f49..d4cc11f91374dd10e413eb75212941658acd2ced 100644 GIT binary patch delta 52 zcmZ2hwXTZ$G%qg~0}wQBy1J2jDvMN#enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8uenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;pf G`xybR`VnRT delta 44 ycmdnYzM7r;G%qg~0}vFwxw4V_Jfl#menx(7s(yN2g}zH_adt_5!R9ZF`xyZ^TMuCX diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc index c3ee360ef6b21655acae1e439801980e19a0cee6..47f454cf1ac90b6841bf04e9788588e90d620341 100644 GIT binary patch delta 52 zcmZ1@wndElG%qg~0}wQBy1J2@nN=!NKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n<= G4;uiMrw>E` delta 44 ycmdlYwnmKmG%qg~0}vFwxw4U)nN=uJKO;XkRX;tiLf<8|IJ+djV6z4*4;ug^XbnFA diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc index eb5354a546bcb8a4506c0f0051ec34729dd50aff..b8a61a9d01bc872357d35ba83581ad4cf19cc5e2 100644 GIT binary patch delta 51 zcmZ3)yNZ|lG%qg~0}wQBy1I~?Nh(i2BR@A)KRvHP-zBv;yClCr-`y`lH{8`}vn*39 F3jm0J4}Jgu delta 43 xcmZ3*yNH+jG%qg~0}vFwxw4R(NhnP}BR@A)KRvHP-zBv;yClD0vno?73ji0+4S4_n diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc index 7636ce7019a3b562f68f778aeb7141a0e596242f..9f8a96044b27043876e6937c511dc28d80d24f46 100644 GIT binary patch delta 52 zcmZ4Hw9bk9G%qg~0}wQBy1J2Di$y9+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p@a GeHj3(^bp1X delta 44 ycmZ4Iw9JY7G%qg~0}vFwxw4U4i$y3&KO;XkRX;tiLf<8|IJ+djV6#8VeHj2Z9S*?& diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc index 0cd755862ca8d3fb32288ee94a6e68a3b46daaa0..4f11a00de534e2a1bd0435579123c22d25762350 100644 GIT binary patch delta 52 zcmX>mcutV}G%qg~0}wQBy1J3uoJlH6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$lu G5gP!fMi4gu delta 44 ycmX>ncubJ{G%qg~0}vFwxw4VloJlB2KO;XkRX;tiLf<8|IJ+djU~>#p5gPz9Ck`?I diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc index 65578969062c6e91e18de6ed3aa8849b8f85052c..438ee914eed01aa9c505152eaae5fffcbe477ef4 100644 GIT binary patch delta 49 zcmaFH_>PhLG%qg~0}wQBx;l|NOe$4BBR@A)KRvHP-zBv;yClCr-`y`lH{8`}VsSA5 DhHVf< delta 41 vcmaFI_>7VJG%qg~0}vFwxiXPEOej`ABR@A)KRvHP-zBv;yClD0Vs$Y96mAYc diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc index d0cc277b760dbff582aebd4ec58498235ad9f45d..79ca22b81bf6ed471a306bdaca877f82b665ca61 100644 GIT binary patch delta 54 zcmeyfim_!iBll@uUM>b8XxwylBX={KRGNN9er~FMdR~RTOKNd;Nq&L8yI+KExU19V I1#EZx0Pz_TrT_o{ delta 46 zcmZo!&G=^(Bll@uUM>b8D0*{cBX={KP@H~7er~FMdR~RTOKNd;Nq)iR6>N9>0B;=- Ap#T5? diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc index 3ee276ce154dc4c2aa07d1a443b458b49486d580..054e8278809062c61713c4f40812cfeef6f2dbe4 100644 GIT binary patch delta 54 zcmbQck7?;XChpU`yj%=G(75U9M(+EZQrY?$`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J|8Oc!1pxVB65s#; delta 46 zcmZ3wk7@2cChpU`yj%=GQ1s@?M(+EZLdp6W`MIh3>3J3UE~&-YCHV!LS-2FZ0swMt B58MC% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc index 8e37591c3c7d542a301c59fa87905827910252b9..1a001f68f7ced6593162364d05edec8fa7d93569 100644 GIT binary patch delta 52 zcmdm$bSR1YG%qg~0}wQBy1J43IkQxXenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FVH GGhG1JUJ(fZ delta 44 ycmX?0EKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Md Gz90a$=n$L$ delta 44 ycmX?Sdd!sjG%qg~0}vFwxw4Vlic=_AKO;XkRX;tiLf<8|IJ+djU~@cYz90ZUF%Fji diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc index 37228df67cd00c895d7d8c818349c9d4aff0c01f..d81ebf8def659623e1d8a5afe27b10ee75f585ca 100644 GIT binary patch delta 52 zcmX?UchQdfG%qg~0}wQBy1J3uh+QgMKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|q53 GFL407LJ=_l delta 44 ycmca;chZjgG%qg~0}vFwxw4Vlh+QaIKO;XkRX;tiLf<8|IJ+djU~@S8FL3}v8xJf1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc index 8412f8d6366f31dc56758cf6772b5c6da1122c4d..4dbd534141e3416ca5517d933ee1696d12d1c8bc 100644 GIT binary patch delta 52 zcmX>sds>$JG%qg~0}wQBy1J43CzDjFenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GT| GwcG&1a}fyu delta 44 ycmX>tdsvqHG%qg~0}vFwxw4V_CzDXDenx(7s(yN2g}zH_adt_5!Dcz;wcG$l+z$i* diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc index 7af324b87c712a73377fcf73c6426c8cac278ee1..91c7dd50587cd035650713da4bb355c964f5c688 100644 GIT binary patch delta 52 zcmeyN+n~pNnwOW00SFp5UERnn&n}grpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAqGz G4?h5^))0RH delta 44 ycmZqB`=QHynwOW00SJoTT-nGi&n}dppOK%Ns-K=$q3@DfoL!P%u-S!u4?h4jc@BC2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc index bc4f2aba209bc248cd9ce300e5c2a4b623808bf8..51b714735277c231c3b67eac264ce1eede1d642d 100644 GIT binary patch delta 52 zcmdlfc2JD_G%qg~0}wQBy1J2Dm{}@SKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n+{ GCkFtXZ4Y$- delta 44 ycmX>owo{DzG%qg~0}vFwxw4U4m{}-RKO;XkRX;tiLf<8|IJ+djV6z1?CkFs34h?Vs diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc index dbfe632e0008910b0318c797ad7af0ca846c4691..5a4a1a7c81af3d1f6cbb91ed3a1c137334fdb0a1 100644 GIT binary patch delta 54 zcmex2jj3%q6ZdIeUM>b8XxwylBew>tREmB^er~FMdR~RTOKNd;Nq&L8yI+KExU17< IS60h50NYX#UjP6A delta 46 zcmZph&h&2@6ZdIeUM>b8D0*{cBew>tP>g;?er~FMdR~RTOKNd;Nq)g*UslUD09{rO AS^xk5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc index f6f0172a566e5d36f5828a464230c860d3dd9e8a..a158b35db83da38d5f77426f42089570fb6025a3 100644 GIT binary patch delta 52 zcmZ2ey``G_G%qg~0}wQBy1J432eVYJenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HeY G>6QTB`4P7O delta 44 ycmdl|y{4M`G%qg~0}vFwxw4V_2eVMBenx(7s(yN2g}zH_adt_5!Dd;O>6QRrvJbKV diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc index 3c29ba871c62d8341da95533ed6ebb3b605969ae..a0f43b6f1145efaac1890a8d624afd87ea86ad67 100644 GIT binary patch delta 49 zcmaFD^oEK1G%qg~0}wQBx;l}2k5rLXza@&CAQh00fPju5RRJW0ES=&&bbB)lbi>(055K&MwI>(0BKX&<%HW+N{j< GfC~VMix1iW delta 44 ycmeB{YL?(055K&MwI>*sRU;fC~T`Tn*I# diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc index 1f2642de797604f85551fade7338014b6e03a898..3b3d1c761c69247bfa4614652a7cfdd9425cabfd 100644 GIT binary patch delta 52 zcmaE#@jZk4G%qg~0}wQBy1J439;;M=enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^l- GC3*n!v=X}j delta 44 ycmeyK@jiq5G%qg~0}vFwxw4V_9;;A>enx(7s(yN2g}zH_adt_5!DeQ*5%}3 GxHG%qg~0}wQBy1J43Ba>8yenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G*A G^%?-z1rdV) delta 44 ycmX>azBiovG%qg~0}vFwxw4V_Ba={qenx(7s(yN2g}zH_adt_5!Dcb$^%?+JRu6sv diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc index 80e4ba7233b92ec676c1989b20c8c3799cd4010f..ba37014b6a949f9ba14332a7a087249a2e4682a3 100644 GIT binary patch delta 52 zcmZov>{R4F&CAQh00fPju5RRRW0K0z&&bbB)lbi>(055K&MwI>(0BKX&<%HW+Ps+Q G9xni%-w@yc delta 44 ycmeBFY*gev&CAQh00c#Eu59FPV-iZy&&bbB)lbi>(055K&MwI>*u0wQ9xnhYhz{ET diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc index be6b1b64b8009fb0f0d238884f9d6f07e00340e4..481bcf9d70f95d4faab31e5b5681a53d9542afa8 100644 GIT binary patch delta 52 zcmbQkyM&kfG%qg~0}wQBy1J2@i&-jJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pba Gf7t-Xj}j38 delta 44 ycmaDRcu$b~G%qg~0}vFwxw4V_2%}J@enx(7s(yN2g}zH_adt_5!RD8Yf7t*`SP%>V diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc index 188b2660ef02ba0d1fe4c59c9d93e0356bfc4221..4eae0c8ae8347eea3340fb31c815850906c48700 100644 GIT binary patch delta 54 zcmbPmnsLTyM()$Ryj%=G(75U9M(&mDQc3z5`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JkFlSM1px4w64n3! delta 46 zcmbPnnsLHuM()$Ryj%=GQ1s@?M(&mDLQ(n|`MIh3>3J3UE~&-YCHV!L&#|A11psfl B5YYet diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc index 32835628bd0d8dab66544dcbe40899c353df78f6..a9468512b257eb8e9989dd9ec8b3fb1bcec61ede 100644 GIT binary patch delta 52 zcmeC@oX*L8nwOW00SFp5UERpNjY%p+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c^K GJ&XXL>k#$; delta 44 ycmbQv+0V&+nwOW00SJoTT-nIIjY%j*KO;XkRX;tiLf<8|IJ+djVDoLJJ&XV=^bYX= diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc index bde7057ebaa7b084a1cebd3128e5c754fec7e57d..5462bc5a41066c3458502b247e86680bac475f96 100644 GIT binary patch delta 52 zcmcbo{!E?wG%qg~0}wQBy1J2j5vx>|enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_rG G@_Ycv9uXt} delta 44 ycmaE+eovkIG%qg~0}vFwxw4Ua5vx#=enx(7s(yN2g}zH_adt_5!RF(v@_YbIuMZyp diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc index 11e3322bb75cb174a80a121efc06f64a9469ccac..aaeb938c3c2c6acc2c95dcec2f3a536be2eefe0f 100644 GIT binary patch delta 52 zcmdnVcaV?!G%qg~0}wQBy1J43JBw7Venx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FG? GRVDzrb`VYg delta 44 ycmX@ex08?iG%qg~0}vFwxw4V_JBv`Nenx(7s(yN2g}zH_adt_5!Dbm&RVDyGFAhln diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc index 5953b7a9c823ebf2b1797da5dd75d54b2252da82..52e1d083fa04248255892478a09bf178eae1af01 100644 GIT binary patch delta 52 zcmcbi_CSsMG%qg~0}wQBy1J2j8M{=renx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@nM GQ@H`iJ`t7x delta 44 ycmaE$c0-N(G%qg~0}vFwxw4Ua8M{!jenx(7s(yN2g}zH_adt_5!RFKKQ@H_62M>_| diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc index 5cde237038a7634f0728b769f2d481827569a53f..5e7d41eb66a21e9f8cc0ca174b72ad9d702df6fa 100644 GIT binary patch delta 52 zcmbQFJ4=`QG%qg~0}wQBy1J430h?5^enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@Zy GQ~3e5nh}No delta 44 ycmbQGJ4u)OG%qg~0}vFwxw4V_0h>^?enx(7s(yN2g}zH_adt_5!Dd$Wsr&#r&JKbA diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc index ebcc256caf5594380825fc43eb215050942863ae..371305114d7dfe4beec24f9270c2ddb1b3982024 100644 GIT binary patch delta 49 zcmeyv*uunpnwOW00SFp5U7g6CC6%t9k)NBYpPpBt?~+=aU6Nm*@9r0&8}8~fvAq-k DdMgkf delta 41 vcmZo+`oqY5nwOW00SJoTT$#w7B^0lpk)NBYpPpBt?~+=aU6NlgvA+}m2^J0+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc index b15684a785e561c109429e09ee9d33f435eb0254..f601f2fb13d99bfb3b79b8366730fe656d2d8b0d 100644 GIT binary patch delta 54 zcmaF0n(@t#G%qg~0}vFwxw4U4ok=K0KO;XkRX;tiLf<8|IJ+djV6zXCfj9t3k`8$Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc index 23bdc726ac9418410b39ee3aec64c756557c59a9..ec504899a3713f8475f59830abb3d7e120ed1072 100644 GIT binary patch delta 52 zcmaFv^xld4G%qg~0}wQBy1J43AhT4uenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>23 Gow5Mj7!n)+ delta 44 ycmaFw^xTR2G%qg~0}vFwxw4V_AhS@senx(7s(yN2g}zH_adt_5!RBYoow5L3nGhEM diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc index 988bc97fcae0554bfaa0fc455325bda3a9421910..8acc28f9c825659bed82234dcffedc236fd70b94 100644 GIT binary patch delta 52 zcmeB;o*K=4nwOW00SFp5UERq2ok=QFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o7( Gr4|6j4iN+Z delta 44 ycmbOl-5bq)nwOW00SJoTT-nI|ok=KBKO;XkRX;tiLf<8|IJ+djV6zN!r4|55=MMh> diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc index a1a37f49d1d37cbdb87c05bcf9e8aed132f93e1d..310bc517d24004330a80333acd82740b9f789586 100644 GIT binary patch delta 54 zcmcaIiSf=PM()$Ryj%=G(75U9Ms8hpsWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IUhG^>0OAJ`9RL6T delta 46 zcmcaJiSf!LM()$Ryj%=GQ1s@?Ms8hpp*a1F{M=Oi^t=jvm(=3ylKg_rLF`;k0Ax51 A7ytkO diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc index e3c246d632d8c12152355e6ebcf9c0cac020195f..a7a3594fbdeaa7fe9c2393dd28599f93cf32717a 100644 GIT binary patch delta 52 zcmX>tcv+D9G%qg~0}wQBy1J436SGu`enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`J5_ GJuCph1rYoI delta 44 ycmcaCcv_JAG%qg~0}vFwxw4V_6SGi^enx(7s(yN2g}zH_adt_5!DexmJuCo4<_`A& diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc index 40d4fd6d61bec2651827122a0c185c52860d83a6..0a76811fdafa0e109bbcda132a019eaefd8ba1b1 100644 GIT binary patch delta 52 zcmZn`?-u7i&CAQh00fPju5RSM&n%UypOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}Kn GJ39cUkP#pN delta 44 ycmeAcZx-i1&CAQh00c#Eu59GK&ny(HpOK%Ns-K=$q3@DfoL!P%u$hIWogDxzBn}(^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc index e31477a533268cdc0c719efa554b9b17f031c12f..7a9e6c86955d1ac05b0aee27529d21aa5da50c74 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}wQBx;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf Dbz2X< delta 41 vcmX@jc$ks< diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc index efae14e17b7f1ae3fb62188766dc293229bffe3d..47cf18c9135855d51f0afd5ea063c2d191fb496a 100644 GIT binary patch delta 52 zcmbPfz0jKbG%qg~0}wQBy1J2Dm_;gGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n-K GrX&EMR1fq3 delta 44 ycmZ2zJ=2=|G%qg~0}vFwxw4U4m_;aFKO;XkRX;tiLf<8|IJ+djV6z2FrX&C?jScSr diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc index 6f48aaca2c6f68514ee17960a222c5c39208c19c..91770360f4e8530f90e72b3d0dea8c12c3a1e647 100644 GIT binary patch delta 52 zcmZqn@Al_D&CAQh00fPju5RScWR}X%&&bbB)lbi>(055K&MwI>(0BKX&<%HW+T6zc GR~Z1UQ4u)+ delta 44 ycmeD7Z}#Ut&CAQh00c#Eu59GaWEM)$&&bbB)lbi>(055K&MwI>*xbkbR~Y~{`VTY! diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc index ec880eae815f3c994779d57a71b372e6f4f88ee8..692dfb6524ba962c6edf6ec055bc89ee3da5b1a6 100644 GIT binary patch delta 54 zcmbPul5yrqM()$Ryj%=G(75U9M($VaQknW0`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b I**Usm0QNN!9RL6T delta 46 zcmbPvl5yfmM()$Ryj%=GQ1s@?M($VaLW%kr`MIh3>3J3UE~&-YCHV!L`8m2`0COe~ A7ytkO diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc index 19964fec533c01b0588e8f68ea4fd370b4737176..d05bcf47085f0a7516a4494912ffac4d9f275d19 100644 GIT binary patch delta 49 zcmX@fc#)C&G%qg~0}wQBx;l~DSgJrjBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8JT Dcux=3 delta 41 vcmcb}c#@I(G%qg~0}vFwxiXR4SSUk3BR@A)KRvHP-zBv;yClD0VnihX2;dFT diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc index 1bcb3c9fa0a397fe2bb378dd85d5aa46740faef8..e7e336757f5a5770862de2b10c13084a644a0091 100644 GIT binary patch delta 52 zcmeCRoodT{nwOW00SFp5UERoSz#>(upOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq)% GK?(q(0}ucJ delta 44 ycmbPg+iS~xnwOW00SJoTT-nHNz#^2ZpOK%Ns-K=$q3@DfoL!P%usM{)K?(pZgbn)u diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc index a1f549e4dac6a96915dbe8774dddff5c4519046d..7ac3f926239dfb13222aef269cfbb44262c92556 100644 GIT binary patch delta 52 zcmcb{caM+zG%qg~0}wQBy1J3OhefJDKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4b{! GwM+oIj1fEl delta 44 ycmcb|ca4wxG%qg~0}vFwxw4VFheaquKO;XkRX;tiLf<8|IJ+djVDm|L3RK`6Ar}y diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc index a9410802e7b28aab6f8f69748950ca2cedfeac7b..cb477abeb5c7a75f5d5db35965d887785faa8a7b 100644 GIT binary patch delta 52 zcmbQlJBye5G%qg~0}wQBy1J2DfJG`-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pa% GDiZ*UyAN*w delta 44 ycmbQmJBgS3G%qg~0}vFwxw4U4fJG=(KO;XkRX;tiLf<8|IJ+djV6!PpDiZ)3EDdS^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc index 7cc2f4d5b75de730aba1a80e833cf7418ab7a856..787bb37a6467a12ce0fb39a9c671f214889a560c 100644 GIT binary patch delta 52 zcmaFP|DK=wG%qg~0}wQBy1J43J&RPCenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Fvl G+e`q>fe~8( delta 44 ycmaFQ|D2!uG%qg~0}vFwxw4V_J&RDDenx(7s(yN2g}zH_adt_5!DbQG+e`pZLJw8| diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc index 7b28441a2147f1c58cf7fe08869843735b73b5f4..e644b558b57a9e4a4fc9c9104426def53bc8d42d 100644 GIT binary patch delta 52 zcmcaEcVCYCG%qg~0}wQBy1J3OpINFzKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aN9 G)!YEW0TFEg delta 44 ycmcaFcU_MAG%qg~0}vFwxw4VFpIInJKO;XkRX;tiLf<8|IJ+djVDlE{)!YC_>JMlD diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc index 3d0af428edc7361e8f9c9e62565e12b0854c884e..05fb4790900b4244177c3dcf85049a6fe3ae1a63 100644 GIT binary patch delta 49 zcmeBRn!v<;nwOW00SFp5U7g6CEmfqSk)NBYpPpBt?~+=aU6Nm*@9r0&8}8~fv7-S1 DXT}fD delta 41 vcmbQh)WO7knwOW00SJoTT$#w7EtI97k)NBYpPpBt?~+=aU6NlgaY6$C`gje> diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc index d33090efe1dc5df3d56a64dc1727b3a0e5cd619e..50a2103d653943a0629dfd6c7a0600d1528ea8ff 100644 GIT binary patch delta 52 zcmbQvH=mFDG%qg~0}wQBy1J3ufJLfOKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pfO GDJB4w8xSl2 delta 44 ycmbQwH=U3BG%qg~0}vFwxw4VlfJLZKKO;XkRX;tiLf<8|IJ+djU~?$TDJB3S%nm02 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc index f01ed11850823040f6989270f4b81eaec528f732..03a5fe9454362aebfad2386a7fd989b4243c0257 100644 GIT binary patch delta 54 zcmX@u!E~~NiTgA!FBbz4G;X@Okvo(_DqlY%KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw I5y$yz0N;rcJ^%m! delta 46 zcmX@v!E~^LiTgA!FBbz46ur5!kvo(_C|y4zKQ~oBJ+DIFCAB!aB)?#D703B%0AcD7 AIRF3v diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc index 82d17a0b06881efdb5119c43755bea1f74a923c6..a766b919bebba45d3fe73de8e74005c1ed0b82eb 100644 GIT binary patch delta 52 zcmbO$yHu9@G%qg~0}wQBy1J2jCX-aMenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=hV G&$$7rLJ>3o delta 44 ycmZ1~J6D$bG%qg~0}vFwxw4UaCX-OKenx(7s(yN2g}zH_adt_5!RCET&$$6K8xJo4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc index 8142b5ae9c84181e91faaa03404373477da459f2..432c06ffe473013b57cf089ae3c472a58216cd41 100644 GIT binary patch delta 54 zcmX@Jg7L}3J3UE~&-YCHV#V?tT%v;jT`b JPjIw&0|5Jt61xBZ delta 46 zcmcbzg7M4>M()$Ryj%=GQ1s@?M())dLh3J3UE~&-YCHV!LFL1PY0|0p5 B5VimS diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc index 2443d2a0d8a5005f1dbe5e8e1bc4c629902328be..b54de8571423a03254513a6bc9853411aa3d15ee 100644 GIT binary patch delta 54 zcmcb-obmQ@M()$Ryj%=G(75U9Ms6!Esbu|({M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I;aoMI0POh@+W-In delta 46 zcmcb;obmEb8XxwylBlmwHsWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IGQuC40PZ0YqyPW_ delta 46 zcmbQThN))_6ZdIeUM>b8D0*{cBlmwHp*a1F{M=Oi^t=jvm(=3ylKg_rD#9O{0BkxC Ap8x;= diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc index a431bc3572de01628fd55989bf1d4078bf3dc336..6af2fb93329babaafdca063f240e8124c1e40064 100644 GIT binary patch delta 52 zcmdmBvBQGr4-7i8n+|_CG IL{__M0OY9=>;M1& delta 46 zcmccK$aKDuiTgA!FBbz46ur5!k-LOdC_z6XKQ~oBJ+DIFCAB!aB)?$uOjf&U0A=zI A=Kufz diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc index a6b0daa51843f9855f69c870e4f8922c10bfa59b..ea8c693f7caba7bb9114b62381d09e145264f16b 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}wQBx;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf Dbz2X< delta 41 vcmX@jc$ks< diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc index db7a30bf3e8f026ffe867d07ee3cd84cea5a0701..a051de8c3ee90da0d389e3a96cc1ab028015e01c 100644 GIT binary patch delta 52 zcmbQwxtx>xG%qg~0}wQBy1J2j52I9?enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?Cu G$Cv=9UJ)$- delta 44 ycmZ3^IiHjJG%qg~0}vFwxw4Ua52H|=enx(7s(yN2g}zH_adt_5!RCjI$Cv;zFApdH diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc index 3ece311e9b6d6a713cb8355c8ba448cf65447d8e..ea513703e1e60427aefed0264e4931e9808d9560 100644 GIT binary patch delta 49 zcmX@bc!`nwG%qg~0}wQBx;l~DSgKGzBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7uD Dc+C&m delta 41 vcmcb_c#4txG%qg~0}vFwxiXR4SSV9JBR@A)KRvHP-zBv;yClD0Vnh`H2}TXo diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc index 9e95558146cbdb81d82188e728c6fc81bdf1f329..34691320cf07a14a1774ac7cb913b212a73acfa8 100644 GIT binary patch delta 54 zcmZ3wo^kDZM()$Ryj%=G(75U9Ms9O%sY3mX{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IA>4sJ0N!K~aR2}S delta 46 zcmZ3xo^k1VM()$Ryj%=GQ1s@?Ms9O%p-laZ{M=Oi^t=jvm(=3ylKg_rG2DSZ0ATG8 AYybcN diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc index 8e16506a9990865abdd4ab3790d2b91b8a9e290c..941b48211a3efd64985de66b06edc7cbbd883e1e 100644 GIT binary patch delta 49 zcmX@dc#VLn diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc index c69ecc733cdfa77cd81d6770478ce77a9d7a521c..f1add5d3fff7382de1a383bf0cf3c2374db9c8fe 100644 GIT binary patch delta 52 zcmeBoobJednwOW00SFp5UERn%ok^-tKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aAQ G+p++(9uaT= delta 44 ycmbR4*zd@FnwOW00SJoTT-nGyok=KDKO;XkRX;tiLf<8|IJ+djVDlcP+p+*WHxFw7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc index c7ae01c817f1e1efa404d7c6c2d8303b246a3887..9809a83e5c21a9ead6798afaa44f41f3fb6c02f3 100644 GIT binary patch delta 54 zcmdn8KV<+r5f54b diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc index 9d9a61551732d895012b01029ccf772b2ff8bb89..3c88fedfce050831b6d234f92a0748e2dab1d3de 100644 GIT binary patch delta 52 zcmX@Ac2%CM Gdp-cM{}A^8 delta 44 ycmX@Bc2te~G%qg~0}vFwxw4Vll0_(2KO;XkRX;tiLf<8|IJ+djU~?SHdp-a=C=T)f diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc index e1fbf43d35f0dbe0e1c61d0ce5fe9f678144c2a3..2cfc65ceba6b0e33c01e343d76fc9612ca5b58cc 100644 GIT binary patch delta 52 zcmZ1+xjK^jG%qg~0}wQBy1J2jK9f|Xenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;)) G&ou$Z!V&lY delta 44 ycmZ1-xj2&hG%qg~0}vFwxw4UaK9f+Penx(7s(yN2g}zH_adt_5!R8}O&ou!|n-B8< diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc index 4d523f4d36f0fd5829ef5ccbe64442c613d52a64..8b56d8c4376adce13801fd339bf916fb18d35d1d 100644 GIT binary patch delta 52 zcmdm+a5RDYG%qg~0}wQBy1J439-CCDenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^l7 GPMQGR{t_1e delta 44 ycmX?_us4DGG%qg~0}vFwxw4V_9-C0Eenx(7s(yN2g}zH_adt_5!DeQ5CrtoZ(hm~= diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc index b7ad5955c8cca2679786796dee80f80f06ac603f..ddc32f4d570fb969a7197567bd755f43c23a273f 100644 GIT binary patch delta 49 zcmdnTc#M(zG%qg~0}wQBx;l~DSSnRNBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7}M Da^(-I delta 41 vcmX@cxQ~(hG%qg~0}vFwxiXR4SSVIMBR@A)KRvHP-zBv;yClD0VniMQ1bz*r diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc index 635bdee97ab220f50a42fb5d06b8266a8aa0bea0..541df52e076a176afd1fb42f1bfbf4f074385960 100644 GIT binary patch delta 52 zcmdn2yjz+3G%qg~0}wQBy1J436q{70enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^-F GXSe{pw-LYq delta 44 ycmdn3yjhw1G%qg~0}vFwxw4V_6q`_@enx(7s(yN2g}zH_adt_5!RGgDXSe`E_z$}P diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc index 5bb9512dd2b37bd164bbe513a979755a5749beab..668fdeb6b48f6a73a0d62eb43cc5d63e265b6089 100644 GIT binary patch delta 52 zcmX@gcb1R)G%qg~0}wQBy1J2j7L!z>enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_3= GeJlX8g%Jh- delta 44 ycmX@hca)F&G%qg~0}vFwxw4Ua7L!n&f) GH#PvcR1qrx delta 44 ycmaDW^i+uZG%qg~0}vFwxw4Tvh)F0$KO;XkRX;tiLf<8|IJ+djU~@UsH#Pu3jSnUO diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc index 3610b9e3ebf305c6046d41669f864f5186d8813c..4dc78fef4b7faa6b4d418c196c0e1276a987a993 100644 GIT binary patch delta 52 zcmZ1=xI&QoG%qg~0}wQBy1J3unMo>HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$UT G0~-LCtq;lo delta 44 ycmZ1>xImEmG%qg~0}vFwxw4VlnMo*GKO;XkRX;tiLf<8|IJ+djU~>kO0~-J(#tp>) diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc index 0cefac7b3ce6191f8ded3e56936dc30700a6607a..cb133fa4ffa91f7bcab58f056410b4441cc2be21 100644 GIT binary patch delta 52 zcmdm@y+@n-G%qg~0}wQBy1J2Dj#(;SKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pwR Gr4Rt8We_g_ delta 44 ycmdm^y+xb*G%qg~0}vFwxw4U4j#(&OKO;XkRX;tiLf<8|IJ+djV6!uGr4RrzUJfb% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc index 3d74f7da30b7a58c55d6d2b03918401d9a396b8b..a6617db1e54596a9f664c61bd4b8b809eacebecb 100644 GIT binary patch delta 52 zcmZ3^x}KH$G%qg~0}wQBy1J1&mr*KJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%8& GEF%D%(huwa delta 44 ycmZ3_x}25!G%qg~0}vFwxw4Tvmr*EIKO;XkRX;tiLf<8|IJ+djVDltKSw;XT;|=Ek diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc index aa065edb782771eb8819214faf0d0145df79f863..9f9114e6f381e9a690b480b059f1e8e7318a762f 100644 GIT binary patch delta 52 zcmcbra94r*G%qg~0}wQBy1J3uj7cg(KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%|W G6CVJv;1CA@ delta 44 ycmcbsa8-f(G%qg~0}vFwxw4Vlj7ca#KO;XkRX;tiLf<8|IJ+djU~@DR6CVIN`3?dA diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc index 6d2c5a0458ca9c5e435fb4197a6d4e9484ed0fe4..a134592a4532b828e7814b539b152edb93578c04 100644 GIT binary patch delta 52 zcmaDR{Z5+uG%qg~0}wQBy1J433X4>}enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>yX GUpWBLClXTt delta 44 ycmaDS{Y;wsG%qg~0}vFwxw4V_3X4#>enx(7s(yN2g}zH_adt_5!RDVVUpW9&NDxi{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc index b81de4d36346e5b5c61402283d25d1f2a3fb392f..468c9de21026de96708ea1d13fa9177f50a07a97 100644 GIT binary patch delta 52 zcmbO#IaiYVG%qg~0}wQBy1J3Oky$ELKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4beh G?;HT4aS;6g delta 44 ycmbO$IaQMTG%qg~0}vFwxw4VFky$8KKO;XkRX;tiLf<8|IJ+djVDmEO?;HRvvJUtF diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc index d32bc058299fd0c55b18e2379b17edfbe897058f..577115d1ca9f66a98f1c359beb771e6be12fbe08 100644 GIT binary patch delta 52 zcmaDU@KJ#KG%qg~0}wQBy1J1&f>kP2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%#- G7bXC@ixE5k delta 44 ycmew;@KS*LG%qg~0}vFwxw4Tvf>kJ1KO;XkRX;tiLf<8|IJ+djU~?_&7bXBgR1Y@* diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc index 1148df598255efa84da6b10fbcda41e564db2104..fae9b3d0d0de0f5f926914c12625acc74da32b30 100644 GIT binary patch delta 52 zcmbOtKS!SXG%qg~0}wQBy1J2jC9711enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=EW G=QshXrx7*) delta 44 ycmbOuKSiGVG%qg~0}vFwxw4UaC96<^enx(7s(yN2g}zH_adt_5!RB+U=Qsg0Fb^>R diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc index 6df9baca36765f72266978b5ddc25837589ca76d..f134eb6121a2525d1048b5b204fa91e7a5cc934d 100644 GIT binary patch delta 52 zcmbPhwbY9HG%qg~0}wQBy1J2@pH(VdKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oRN GM{xk6A`p52 delta 44 ycmZ2#HP?#!G%qg~0}vFwxw4U)pH(PcKO;XkRX;tiLf<8|IJ+djV6zG9M{xiyLk@KS diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc index ca8a2227aab4cb0591a7e238dd99fa2ce4263085..36a02a74978158b2117cf9a631cc213eb72df067 100644 GIT binary patch delta 52 zcmZqY?C0b@&CAQh00fPju5RR>%p{ejpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Q&5 Gbw&V~{SdtX delta 44 ycmeC@Z0F=Y&CAQh00c#Eu59F<%p?@2pOK%Ns-K=$q3@DfoL!P%uz3g5bw&Usjt;m0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc index 62d2dd2e8048e05cf597e1be3ad769513e74acf1..ca666ed6b453aff31883bdbc1fe4fd9d53c0c923 100644 GIT binary patch delta 52 zcmZ1|v{H!sG%qg~0}wQBy1J3OhEXa>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c3R G4t4;dI}nBd delta 44 ycmZ1}v`~oqG%qg~0}vFwxw4VFhEXU=KO;XkRX;tiLf<8|IJ+djVDm!84t4-7d=7yC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc index e93a97eec48bfb86ebbe8946955f49424bf95b55..66643c8d4bb79e651a8dc7a098207133dd22c4c5 100644 GIT binary patch delta 52 zcmexs)oRUsnwOW00SFp5UERp-#3GffpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kzd GP7(mL;Sfpy delta 44 ycmZp*{%gg3nwOW00SJoTT-nIB@}pOK%Ns-K=$q3@DfoL!P%usNMYP7(k-j1ENr diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc index 170751fbf1b2759d46db24ae327861b7eec1d5f5..cb8704e25bad7efa0faa88d71089d3ff37f7a058 100644 GIT binary patch delta 52 zcmey6`6HA2G%qg~0}wQBy1J43B8yatenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=<9 GOa=h(77`}_ delta 44 ycmey7`5}}0G%qg~0}vFwxw4V_B8yOrenx(7s(yN2g}zH_adt_5!RBu)Oa=gMClDe4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc index 61b51a76f5a529c22db58ca296002f3fce93596d..6ab215b8f717e8404033d2ef9a3cc151ca16d2c3 100644 GIT binary patch delta 54 zcmX@o#dM~NiTgA!FBbz4G;X@Ok$VcaRHA-Her~FMdR~RTOKNd;Nq&L8yI+KExU19V Ijogzf0qHCffB*mh delta 46 zcmX@p#dM^LiTgA!FBbz46ur5!k$VcaP^5lFer~FMdR~RTOKNd;Nq)iRo!pZv0co8O AdjJ3c diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/models.cpython-312.pyc index 350ddb34a44e8df86a1d48a80a6abf873a314dd1..337c8c26139dbd5f003e347ef7269c78d27e62a1 100644 GIT binary patch delta 52 zcmbO%I$M&f4 G3I_m}6A!!q delta 44 ycmbO&I$4zaG%qg~0}vFwxw4Tvh)F0~KO;XkRX;tiLf<8|IJ+djU~@T>3I_lrL=Cq9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc index baaf3b4fa5248c7e0f70e2d6acff53eebce74f82..6fa2f7ff0056938717c62a504dca8f7a5425825a 100644 GIT binary patch delta 52 zcmbOvGE0Q}G%qg~0}wQBy1J1&n?)*3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$il G7b^gpZ4gud delta 44 ycmbOwGD(E{G%qg~0}vFwxw4Tvn?)#2KO;XkRX;tiLf<8|IJ+djVDki)E>-|1&JIri diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc index f4786b74530955161ef42d54ff2cfb9e3009d3cc..34098ffba38e5ff5da522e3adf34cad454f55578 100644 GIT binary patch delta 52 zcmX@8d{UYFG%qg~0}wQBy1J43G^bRqenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-eP GH`xKia1rtV delta 44 ycmX@9d{CMDG%qg~0}vFwxw4V_G^bFienx(7s(yN2g}zH_adt_5!R8N~H`xJ6kq_+v diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc index ae38a214f8b3b64b94f570b78c72ccdc5fbc33e2..24fd45fd6529de9af6243d62a26866398dd8b833 100644 GIT binary patch delta 52 zcmeBlndriOnwOW00SFp5UERoiiCHRLKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dw# GDLDYS6%iN! delta 44 ycmbQ}(&@r|nwOW00SJoTT-nHdiCHLKKO;XkRX;tiLf<8|IJ+djVDoooDLDW?&JPm+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc index e33898c80cb4528f9f7c4e997f03f991c19aea47..7c224e2763aebb7f3c2abad582a62e51af92673e 100644 GIT binary patch delta 52 zcmbOkw=juL G8QK8A)DcMl delta 44 ycmZ1&H#3g=G%qg~0}vFwxw4Ua3bRnGenx(7s(yN2g}zH_adt_5!RDRJ8QK6w?GHo% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc index 99eafc310fb257ddbad658392011e55d008089d3..3acfec42fca1633264667a48d98d46130b68c4ad 100644 GIT binary patch delta 52 zcmcZ~_B@RHG%qg~0}wQBy1J432eVX~enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Hc? GFLeOqQW0$c delta 44 ycmaDJc0Y{!G%qg~0}vFwxw4V_2eVL|enx(7s(yN2g}zH_adt_5!Dd+&FLeN8V-IKm diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc index 40328f6cab991b6607a5733a2d0b51ddd5bf88e2..9ae6121ffac0a7c7dcf9319c33907ca16706633d 100644 GIT binary patch delta 52 zcmaDL^g@XHG%qg~0}wQBy1J1&hEXa}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%px Gb9Ml?G!Y^I delta 44 ycmaDM^gxLFG%qg~0}vFwxw4TvhEXU|KO;XkRX;tiLf<8|IJ+djU~?nmb9MkfjSn3F diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc index 7c63e74ab6618dce02f7cb5b7ce210504d350fe1..2cc64908155f8cff49398e0de22cdcc16e32574c 100644 GIT binary patch delta 52 zcmeyZ)U3>XnwOW00SFp5UERoC#Uz!kpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Szy G6Fva6x)DJD delta 44 ycmZox{;kA)nwOW00SJoTT-nH7#UvE3pOK%Ns-K=$q3@DfoL!P%uz5by6FvYuH4i)h diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc index 81ae50497bc3e18e98bb5806bed126232cff46fc..0e0966c5c944b63edd663956184994419d3a05e6 100644 GIT binary patch delta 52 zcmZ3ew^EP$G%qg~0}wQBy1J2Djzua-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pxU GGa&$=Y7lV% delta 44 ycmZ3fw@{D!G%qg~0}vFwxw4U4jzuU+KO;XkRX;tiLf<8|IJ+djV6!vJGa&#h!wzf! diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc index 14c283c0cc9ac510a5038fe9486f7f9ace3c4069..25649b8d2480537397c367529690f494662d6e35 100644 GIT binary patch delta 51 zcmbQpGLwb-G%qg~0}wQBy1J3OfKe)0KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>u=P F3jl-z5C{MO delta 43 xcmbQqGLeP*G%qg~0}vFwxw4VFfKez~KO;XkRX;tiLf<8|IJ+djVDePP762204g&xH diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc index 7d0fd5a31800d906cc1e5589665b2b249ce5bb53..34f7b9303ab6c5d769fea086b6c56103afaed5e4 100644 GIT binary patch delta 52 zcmbQMzEqw2G%qg~0}wQBy1J1&nprAQKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$d$ GssI3^T@Vid delta 44 ycmZ3gK3ARlG%qg~0}vFwxw4Tvnpr4PKO;XkRX;tiLf<8|IJ+djU~>brssI2kjt&X{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc index 555de222b1f981c70bd4861993d00dd1ec79459c..ae210c77663556649b253ba154501764306fb613 100644 GIT binary patch delta 54 zcmZ2Cg>l;yM()$Ryj%=G(75U9M(%$sQgQkj`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b IrCEht0qpq^b^rhX delta 46 zcmdlsg>l^!M()$Ryj%=GQ1s@?M(%$sLSgzD`MIh3>3J3UE~&-YCHV!Lm05*d0c$!B AaR2}S diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc index 3838e7a1199d8041f5f1496cd386f30fad2016ad..1e6f34c3e9c3ff272b314b3c5e7339ecf8dd87b8 100644 GIT binary patch delta 52 zcmdmGeaM>oG%qg~0}wQBy1J436th%{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^;Q Gmn8wn_Yw&J delta 44 ycmX?Py~~>WG%qg~0}vFwxw4V_6thr_enx(7s(yN2g}zH_adt_5!RGhOmn8vBh!6w- diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc index bf10ac3c398597dfc36c7b0fa3eb7b2eb2327e77..cbc534a8d6faad2bef7f9d34a1db020e957e6e6e 100644 GIT binary patch delta 52 zcmX?3J3UE~&-YCHV#V?tT%v;jT`b J*Rm|m0RRx86FUF^ delta 46 zcmccdi1ETBM()$Ryj%=GQ1s@?M(znLLW%kr`MIh3>3J3UE~&-YCHV!Lx3VnG0RW2Y B5jFq- diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc index c1b9bd74b83b3420722b046628e49b976a3e9614..bea7abcb26a9c26d5e1f4acd6a80666ac7fd1118 100644 GIT binary patch delta 52 zcmcbta$AM_G%qg~0}wQBy1J3ultU_3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$+< GBNqU%`w#^H delta 44 ycmcbua#@A@G%qg~0}vFwxw4VlltU;~KO;XkRX;tiLf<8|IJ+djU~?1)BNqTWBn|)o diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/six.cpython-312.pyc index 77da63605c0ac67ccd9e2c2931be53e4bf717a26..a90fb4c1324060f5531b2782be7110241c62f6de 100644 GIT binary patch delta 54 zcmdmTh-uFuChpU`yj%=G(75U9M($=AsR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J3uLCW008&+64L+x delta 46 zcmdmUh-u3qChpU`yj%=GQ1s@?M($=Ap#c4i{M=Oi^t=jvm(=3ylKg_rD`cj$004F| B5Y7Mq diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc index 031cef3eb5a124d171646888aea7ba9fda47cc9a..63fe9ca4325d424189f9f579add747c3bc2006ba 100644 GIT binary patch delta 58 zcmX@Gll{a_cJ9->yj%=G(75U9Ms98usWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95{h N4VCR0DvUFB001;(6CD5m delta 50 zcmX@Hll{O>cJ9->yj%=GQ1s@?Ms98up*a1F{M=Oi^t=jvm(=3ylKg^Z1C{LtDvUFB F006Br5g-5n diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc index a32eb9297596ce66ae35fdeebd66b0980c7ca6de..9bd24ec6afc2f85014a43aede9c360b01b162540 100644 GIT binary patch delta 51 zcmZo=?`7vc&CAQh00fPju5RRB%p{eipOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%H2DD2 FQ2>bA5T*bC delta 43 xcmeBWZ)N8`&CAQh00c#Eu59F9%p{bgpOK%Ns-K=$q3@DfoL!P%F!==2Q2-YZ4xs=5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc index c76e1c5b22ab7d6f3a1abbb595c914fd25b33209..6546b68c503d9a35b69985430079c023214f4c95 100644 GIT binary patch delta 52 zcmcaAa#w`=G%qg~0}wQBy1J3OfJrJ%KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%{r G33dRt6A>T) delta 44 ycmcaBa#e);G%qg~0}vFwxw4VFfJrD$KO;XkRX;tiLf<8|IJ+djVDnU_6YKy#EDsw1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc index 7059ec67b78461b5d8d88429e323987cc91ca535..a4dd14a0460c754702660247ea8e4bd8378f29e6 100644 GIT binary patch delta 52 zcmdmQbliyhG%qg~0}wQBy1J2jDT`F5enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<1g GwITq*0TE*W delta 44 ycmX?ZwBLyPG%qg~0}vFwxw4UaDT`2|enx(7s(yN2g}zH_adt_5!RAvewITpV$`4)u diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc index a23ecfac3b289e3eaf3803491660490be5de73d7..4a03b3cec9bf2bdd1f12f75a94bb3b0bf8a9518c 100644 GIT binary patch delta 52 zcmaDL`$CrcG%qg~0}wQBy1J2Dib*P6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p-g GN*(~R8xVs4 delta 44 ycmaDM`#_faG%qg~0}vFwxw4U4ib*J5KO;XkRX;tiLf<8|IJ+djV6#2bN*(|^oDO~f diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc index 2f2c514c45ada6f63584422fc82776e6c200e95f..75fe7bd32b014975c65b5e29eb707c4cee3dfe28 100644 GIT binary patch delta 52 zcmZ2hx2}%+G%qg~0}wQBy1J436SGu~enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`J4a GaccnFz!4?@ delta 44 ycmZ2ix2%r)G%qg~0}vFwxw4V_6SGi?enx(7s(yN2g}zH_adt_5!Dew5acclv;SV7I diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc index bff6b3347ebbd0b7bf81f788fbf67431604996dc..b128672299cb7a3ae248325ab4a86a0f46d78308 100644 GIT binary patch delta 52 zcmeyR*rddLnwOW00SFp5UERp-&nlIxpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^j^h Gj~f841rVA5 delta 44 ycmZot`lZNynwOW00SJoTT-nI&&nlFvpOK%Ns-K=$q3@DfoL!P%u(^b_j~f6sunv^~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc index 0fde5307a831f81f945324b70b361e79ab3d148b..9d2f2d6625c149a70cfd61a3261ae5e8abc128c9 100644 GIT binary patch delta 52 zcmZ2#vetzAG%qg~0}wQBy1J3ug-I$$KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%ge G5pe*jtq{5Z delta 44 ycmZ2$vebn8G%qg~0}vFwxw4Vlg-IwyKO;XkRX;tiLf<8|IJ+djU~?wZ5pe)C_71fG diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc index 2b2a79935810ece25ea6aabed6e4dcfaad3ab30c..3adc2ad372e8d04bda0415329eb6f15d99d83bda 100644 GIT binary patch delta 52 zcmZoM>M`Oz&CAQh00fPju5RSs$|jYqpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}U7 Gkq`i^%@D=_ delta 44 ycmeA%YBAzI&CAQh00c#Eu59Gq$|jVopOK%Ns-K=$q3@DfoL!P%u=y67kq`hirVhaX diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc index 7f314d9a61e4abef4b65532c1a304e811e054884..fe94b58251c27452e3eb079477af18c37431d8f7 100644 GIT binary patch delta 52 zcmeC=oyg05nwOW00SFp5UERq2nn@~CKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX)_0N GBQpS`9}p=3 delta 44 ycmbQp+sVs)nwOW00SJoTT-nI|nn@^8KO;XkRX;tiLf<8|IJ+djV6y;oBQpRkcn%~0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc index afd94ceb7190e472081ebdd0096ee00f72b3e7e5..fa658a89602b8877c1bc3d5f4b544551ce87e33f 100644 GIT binary patch delta 51 zcmdnQyo;IpG%qg~0}wQBy1J2@mr<%vKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fh$ F2LOaY50n4^ delta 43 xcmdnRyos6nG%qg~0}vFwxw4U)mr*EFKO;XkRX;tiLf<8|IJ+djV6qWo2LKdj4UYf- diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc index 91c8ee4f8fee9b58b008c6da2973e7f81acc06f6..e5daaa4c877e5e9b0d848650ce413e3f2d254027 100644 GIT binary patch delta 52 zcmbPhv($$BG%qg~0}wQBy1J43H?vf+enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`E@4 GRw)3%Ob~Ve delta 44 ycmZ2#GuMXuG%qg~0}vFwxw4V_H?vT-enx(7s(yN2g}zH_adt_5!Da;(Rw)2QoepsT diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc index 38997c2c7ff3969c74e0e0f3208500eab0bf304b..2a2d098f6d1cd7e385cacd45c8739747b22c866d 100644 GIT binary patch delta 52 zcmdlex>J<9&FA!z` delta 44 ycmdlfx>1z-G%qg~0}vFwxw4Ua5~EO#enx(7s(yN2g}zH_adt_5!RGCZOq>8W01jaQ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc index bffc3d988e99bdd7eed30320aac831b6448c3c26..0c51dd591aa9515fb6daf5f1bf615ede8a774419 100644 GIT binary patch delta 49 zcmdnXbd-tvG%qg~0}wQBx;l}2fmEt~Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#Jvpw DfdUYg delta 41 vcmX@gw3mtdG%qg~0}vFwxiXP^fl#b|Mt*LpetKSozDsIxc1eE0#G?%W4>Jyt diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc index b87d35f1799a88bb09700936c3474060216fb2ff..37071a79616fe35a3a811d8896afe432deed67cd 100644 GIT binary patch delta 51 zcmZo+?P29U&CAQh00fPju5RRB#weAlpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%H2E;& FK>&wh5Ssu1 delta 43 xcmeBSZDHj;&CAQh00c#Eu59F9#wZl4pOK%Ns-K=$q3@DfoL!P%F!?m&K>!ut4we7_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc index dc2b2ddf4dc692739e46805080e51dc475b8684f..4a9d99d84e4a37e0d0594add678c43cbed1fa60b 100644 GIT binary patch delta 52 zcmew-*(Sw(nwOW00SFp5UERp-%`BCupOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^j%$ G8Ycj%HxPgT delta 44 ycmZpZ`X|YKnwOW00SJoTT-nI&%`6nDpOK%Ns-K=$q3@DfoL!P%u(^PF8YciVvJQIy diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-312.pyc index 61f0f1e21139d8a026c700dba97ff7b6fabd4059..d06b287578b0b56ee770beb853db203cf64cb5b8 100644 GIT binary patch delta 52 zcmcbvd|#RSG%qg~0}wQBy1J2j5sOr+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_pw G61)Jz_7ML7 delta 44 ycmcbwd|jFQG%qg~0}vFwxw4Ua5sOf)enx(7s(yN2g}zH_adt_5!RF&E61)IOXAb%R diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-312.pyc index e91447da43d2db19d6a72dcce873436d7e45d6db..2faa355e5392e95fe615d13a966160798be54f00 100644 GIT binary patch delta 53 zcmdmYh4I)GM()$Ryj%=G(75U9M($aeQmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`T Iw`aBk0RB-EEdT%j delta 45 zcmX?hg>l~%M()$Ryj%=GQ1s@?M($aeLb3W8`MIh3>3J3UE~&-YCHV!D_h+^P0C`st AC;$Ke diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-312.pyc index 90a994dddd2ddb63920987d499316db6e1dd45a2..efb51a8abeab99ed729d6081cfb7760591349252 100644 GIT binary patch delta 52 zcmaFG^@)r7G%qg~0}wQBy1J1&gh?u0KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%dd GPbL7j-4QDQ delta 44 ycmeyw^@@x8G%qg~0}vFwxw4Tvgh?n~KO;XkRX;tiLf<8|IJ+djU~?tYPbL6B9uFn} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-312.pyc index 9a2fa4abaaf564235fbf1170dca0f30f2eebd475..0ce6d4efdaf4efe0b8c14224d8d88ba93616f02f 100644 GIT binary patch delta 52 zcmZ4Lz1ExiG%qg~0}wQBy1J2Do>eMWKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oM$ GrUC%22@q2N delta 44 ycmZ4Mz0{lgG%qg~0}vFwxw4U4o>eGSKO;XkRX;tiLf<8|IJ+djV6zKrrUC#r>JCl- diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-312.pyc index b7fcfbf73d8c4aa896db97b526797e0023b5f9f1..26f0985ad245315f8b0f02e5dc40389faf4b0791 100644 GIT binary patch delta 52 zcmbQKuuy^fG%qg~0}wQBy1J3OjY%qBKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c*H GGF||um=LJ| delta 44 ycmZ3eFjIm1G%qg~0}vFwxw4VFjY%k7KO;XkRX;tiLf<8|IJ+djVDoCGGF|{NxelZN diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-312.pyc index aa0064349012ad32b8b06aae412d80376b8bf613..bdb8cf80f41abe038bc4776198aa85d2bbd5fe2b 100644 GIT binary patch delta 52 zcmbQKzEGX}G%qg~0}wQBy1J1&m02oFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>${^ GxBvj8JP;ND delta 44 ycmZ3eK2x3hG%qg~0}vFwxw4Tvm02iBKO;XkRX;tiLf<8|IJ+djU~?C&CD GDRuy&J`jZf delta 44 ycmZ20w^WY%G%qg~0}vFwxw4Vlj$J5SKO;XkRX;tiLf<8|IJ+djU~@A2DRuxY*A9RH diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-312.pyc index 78fbbe8b2001ab13fac44381b01e2141c3bb4af4..50c758cdef2b23b971635d4e3197b5a022056fbf 100644 GIT binary patch delta 52 zcmbQjHiwP-G%qg~0}wQBy1J43Fr!qlenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8+?^ GCX4{2ND!F- delta 44 ycmbQkHieD*G%qg~0}vFwxw4V_Fr!emenx(7s(yN2g}zH_adt_5!R8l?CX4_sSq_u{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-312.pyc index 75726907805459688984210a3f88490765be938c..00342497fa317c1c84e2e669201a8dad4acb1a67 100644 GIT binary patch delta 52 zcmey&^_z?PG%qg~0}wQBy1J1&oJlG}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$qF Ge)Ae diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-312.pyc index 537fa4e73f84aa2d5bd3b1738be19672b94fa777..6c3fa980bbbc6801af0e312624de8caeb0149298 100644 GIT binary patch delta 52 zcmdlizFVC8G%qg~0}wQBy1J3uj!7y>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&AF G1SbHY?GOwA delta 44 ycmdljzFD06G%qg~0}vFwxw4Vlj!7s=KO;XkRX;tiLf<8|IJ+djU~@841SbG3rVa-H diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-312.pyc index 1264cf058643223eddc340e01b631fdb690bee01..d35d1840ba8141525eb5a854bf7c1c2141c39d04 100644 GIT binary patch delta 52 zcmcbrd{>$KG%qg~0}wQBy1J2j5t~$+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_qb GV%z}3ixB(( delta 44 ycmcbsd{vqIG%qg~0}vFwxw4Ua5t~q)enx(7s(yN2g}zH_adt_5!RF&^V%z{p1P=EA diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-312.pyc index 331e0b07627d33c253eef6259882f50f8c5711af..db9737e7211bb109c354844dbea7f3f9c6c5dee3 100644 GIT binary patch delta 52 zcmX?GezlzYG%qg~0}wQBy1J2@Nn0vOKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|ufc GIspLBSP?e> delta 44 ycmcawezu(ZG%qg~0}vFwxw4U)Nn0pNKO;XkRX;tiLf<8|IJ+djV6(dRIspJw2@f&= diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-312.pyc index e01d383495682560e3895c7ce8122a8115a0119c..d4c6eaf2700e313751b0652b2410be58a5139a3a 100644 GIT binary patch delta 52 zcmbQIv`mTnG%qg~0}wQBy1J2Di&-i|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p@? GbzT6R!w_2l delta 44 ycmZ3cG*5~9G%qg~0}vFwxw4U4i&-c^KO;XkRX;tiLf<8|IJ+djV6#8-bzT4|gbr2! diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-312.pyc index df35a3e7992fc31acd057c31084f0ba4726f6bcd..7306149d6f97950192f68f0b708ce42b3a3ac576 100644 GIT binary patch delta 51 zcmdlOw=<6WG%qg~0}wQBy1J3OS5GQUKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4R$) Fb^yI%5taY| delta 43 xcmdlPw=s_UG%qg~0}vFwxw4VFS5GKTKO;XkRX;tiLf<8|IJ+djVDcutb^t=y50L-> diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-312.pyc index 294c525601aee79fc1c3de1b6f3626688cc54465..90a911368795c09e624b873f02e444acfad2dc28 100644 GIT binary patch delta 52 zcmaFM^_7eJG%qg~0}wQBy1J1&oJlG}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$qF GPbL7lpb)APbL6Ckq3J3UE~&-YCHV#V?tT%v;jT`T IcV%`0008e3KmY&$ delta 45 zcmX?oh4JteM()$Ryj%=GQ1s@?M((+pLUH;T`MIh3>3J3UE~&-YCHV!D4`p@&0DE>3 AI{*Lx diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-312.pyc index c5a2b6942a37e1e49b91328e9136852594fb3143..df26795da488e59ed2f751211e735cd5e1182fbf 100644 GIT binary patch delta 52 zcmaFM^_7eJG%qg~0}wQBy1J1&oJlG}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$qF GPbL7lpb)APbL6CkqM()$Ryj%=G(75U9Ms5KwsdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|v Hx?UXs%8n6E delta 45 zcmdlxm2vA-M()$Ryj%=GQ1s@?Ms5Kwp?Lj_{M=Oi^t=jvm(=3ylKg_nrd}NYPfQO< diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-312.pyc index c9a267cfa4d21330cd7665f4a81f849d85aef9a2..4d8224311d8983c80c525d5e50f6e2782302f688 100644 GIT binary patch delta 52 zcmeyx)x^zxnwOW00SFp5UERnX#Uz!fpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7Hy# GnHd12r4Qu* delta 44 ycmZqT{>8<8nwOW00SJoTT-nGS#UzxdpOK%Ns-K=$q3@DfoL!P%u(_UznHc~spbg*v diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-312.pyc index fee083655604ee1a3f95e8f5d94e311274000de9..fba602dd28c32c6b70b32cd1e4bfbdfe5dd6cb1f 100644 GIT binary patch delta 52 zcmdn1dsLVEG%qg~0}wQBy1J43Dzj9kenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8b8XxwylBlq)AsTBQ;{M=Oi^t=jvm(=3ylKcXFcfSbTa95|v HEMaW`-w_e$ delta 45 zcmbQVma%IsBll@uUM>b8D0*{cBlq)Ap&0#){M=Oi^t=jvm(=3ylKg_nJYj7BUI!23 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-312.pyc index a90013f319c88b9ccccad45e34373a2e119098b8..51a70db9d21cfd7fe7ca950c1762bff1f93c584f 100644 GIT binary patch delta 54 zcmdnh!Fs5JmHRX=FBbz4G;X@Ok(+skRGNN9er~FMdR~RTOKNd;Nq&L8yI+KExU17< Ig&k5o0O$P@MF0Q* delta 46 zcmX@q!Mdx1mHRX=FBbz46ur5!k(+skP@H~7er~FMdR~RTOKNd;Nq)g*jU7@w0B80P AKmY&$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-312.pyc index aa3366e808419a43410c86aeab4774295a0f94f5..dd6e3d5b378a3134cf9ff134d1323d379a7fa927 100644 GIT binary patch delta 52 zcmey!^^=SHG%qg~0}wQBy1J1&oJlG}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$qF GUnT&%KoLX$ delta 44 ycmey#^^uGFG%qg~0}vFwxw4TvoJlA_KO;XkRX;tiLf<8|IJ+djU~>)AUnT%T@ee-$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-312.pyc index 1b9ed20aa36217a1eb555e99d1820464828274a4..0f36746fbef03da65aed706d69fc33965d7fc48a 100644 GIT binary patch delta 54 zcmeyfg{fsL6ZdIeUM>b8XxwylBR5-zRI+|Xer~FMdR~RTOKNd;Nq&L8yI+KExU17< I<&H=p0P~*`1ONa4 delta 46 zcmZqK%JgRo6ZdIeUM>b8D0*{cBR5-zP_%wVer~FMdR~RTOKNd;Nq)g*?T$zx0C3|E A{{R30 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-312.pyc index 5628b96774884ec20aa2a8f2583b6887058ea370..53eba38f71305b36d7768a6cfa7884994efb2cb5 100644 GIT binary patch delta 54 zcmdnk$-1+XmHRX=FBbz4G;X@OkvkzvDqlY%KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw IZI;O`0O=wU!~g&Q delta 46 zcmdnl$-1$VmHRX=FBbz46ur5!kvkzvC|y4zKQ~oBJ+DIFCAB!aB)?#DYnI6^0BG9~ AzW@LL diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-312.pyc index 11a464e2bb1caab068a71ba687148ce0086e085e..9b707f03feeb97019ae0db135c7fdcab2f3381e3 100644 GIT binary patch delta 54 zcmdmeljZPD7Vgu$yj%=G(75U9M(!zTQrY?$`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JH>PnN0{|0R6O;e| delta 46 zcmX?nlV$f!7Vgu$yj%=GQ1s@?M(!zTLdp6W`MIh3>3J3UE~&-YCHV!LccyV20|1N^ B5sv@> diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-312.pyc index 5616fd953a34d78fdf15e0e6d9a6551ecceac6e3..1b05822a25c2ee4501cc7f7d55479b55d8e5294e 100644 GIT binary patch delta 54 zcmdmWm*vo17Vgu$yj%=G(75U9M(&tosT}=`{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z ImC25$0SsdkVE_OC delta 46 zcmX?fmu1&o7Vgu$yj%=GQ1s@?M(&top%nd${M=Oi^t=jvm(=3ylKg_rjmeIu0fxO1 ATmS$7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-312.pyc index d37e73d3cea50ab02aff9e58ec20a9afc5e3bfd5..334ace1e002fd3715b3b5238281498d7fb120a05 100644 GIT binary patch delta 54 zcmZqfWbN)`Hq)$ delta 50 zcmZ3rjcw63Hty5Byj%=GQ1s@?MsE35p;Y~h{M=Oi^t=jvm(=3ylKg^Zm)7krt&Gn^ E0kf15?EnA( diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-312.pyc index 1334ffac5648c06f83944e12c8eab80240532e84..369ff961d8822702d93b60740b74ee4de536c31e 100644 GIT binary patch delta 54 zcmaEJkLAlf7Vgu$yj%=G(75U9MsB_osVx1B{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I+9{5w0TrGTD*ylh delta 46 zcmexzkLArh7Vgu$yj%=GQ1s@?MsB_op(Oo`{M=Oi^t=jvm(=3ylKg_r#wm`c0gpft ACIA2c diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-312.pyc index 67fb6f37a21968ae316d739a8f65d30e5a362d1d..f191e2b3c27bef182b48549ad2e2bffa4a4388f1 100644 GIT binary patch delta 54 zcmX?om*w(Z7Vgu$yj%=G(75U9M(&(ssa*Yx{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Ioykt80Tta7r2qf` delta 46 zcmcb7m*wmw@;4yG%qg~0}vFwxw4V_Et61+enx(7s(yN2g}zH_adt_5!Db<56CMCW$_{e? diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-312.pyc index fff6b67742ac3eb152f45454b798ee9543c4c989..19125cb69a12996a20ba6d6b7070a31da723a90c 100644 GIT binary patch delta 52 zcmdnYvzv$eG%qg~0}wQBy1J3Oo>?kKKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aTB G=}Z8r7!bSw delta 44 ycmdnZvzdqcG%qg~0}vFwxw4VFo>?eGKO;XkRX;tiLf<8|IJ+djVDl2@=}Z7KAr7|y diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-312.pyc index 5c756b89633f1e0d27e85a6cba1af14d743a92f2..9a49cda9a724be4aec36871a1736f947a9d33679 100644 GIT binary patch delta 54 zcmeyemg&!0ChpU`yj%=G(75U9M(&N-Qpx%m`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J&t3J3UE~&-YCHV!LuVt%g0|1jA B5n=!U diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-312.pyc index 13eca4550ac527c3b58472c767bf2efcdea993c2..ed5e809bae24a31a920116052f04902af16bba7b 100644 GIT binary patch delta 51 zcmey)@}GtKG%qg~0}wQBy1J1&o>3}YKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>twY FZvd)h5iI}! delta 43 xcmey*@|}hIG%qg~0}vFwxw4Tvo>3@XKO;XkRX;tiLf<8|IJ+djU~&uNZvZpw4=4Zt diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-312.pyc index e7a4ea267376a99c0400d97b8f862db352c2f7f8..62e98c73fe580d083afa70d9fa052189b14cd890 100644 GIT binary patch delta 52 zcmexl_{)&{G%qg~0}wQBy1J3OmPsl{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a?m G2r&T9%n?%n delta 44 ycmexm_{os_G%qg~0}vFwxw4VFmPsf@KO;XkRX;tiLf<8|IJ+djVDloT2r&Rttq)EB diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-312.pyc index 70e19431f4a911dec720f3a4a4c0fc18f77fce7c..9886ef5896371bdd8fa324dfb45b1781694245cf 100644 GIT binary patch delta 52 zcmdlYv`2{hG%qg~0}wQBy1J438LL!|enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`IHi GLuLTBpb$6! delta 44 ycmdlZv_**fG%qg~0}vFwxw4V_8LLo=enx(7s(yN2g}zH_adt_5!DenYLuLRx@eVTp diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-312.pyc index 92efae0ebfda23c2e86af03c6cb1fd55cccaaeaf..d8e77dfbc005a8ea6796b82484cc5ccd19d66825 100644 GIT binary patch delta 52 zcmeBEo~F!wnwOW00SFp5UERp7#w?YtpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq>2 Gn-2h#`46c8 delta 44 ycmbQH+^5WanwOW00SJoTT-nI2#w--CpOK%Ns-K=$q3@DfoL!P%u-Tj0n-2gY(hZ~l diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-312.pyc index 56197a384ec8c817524cb2f8d7f65a35b71e3931..6aa7bbdcc4e99cf549ab2e0e10d97ffdc37691d5 100644 GIT binary patch delta 52 zcmaD8|0SOLG%qg~0}wQBy1J2jJEv5henx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;Fj G5^4bG#u4`b delta 44 ycmewo|0bUMG%qg~0}vFwxw4UaJEu^Zenx(7s(yN2g}zH_adt_5!R9-h5^4Zw4-fJH diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-312.pyc index f9ac5e47548ae21fc2863a771d4f7dc339bcd141..4ab2e4672a159001c551933ee8879032d36287a7 100644 GIT binary patch delta 52 zcmez6+vLZ6nwOW00SFp5UERpNgHuH6 FCjg$n5Ly5L delta 43 xcmaFQ{G6HlG%qg~0}vFwxw4Vlkx?i{KO;XkRX;tiLf<8|IJ+djU~(E`Cjcs54pjgE diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-312.pyc index dfe5c652d17478b0eccc2b4e7b9aa19805cf1201..835520967632f798dbc274727d4d1c1fc78f80ab 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}wQBx;l~DSSnLLBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7i9 DblnfS delta 41 vcmX@bc!-hvG%qg~0}vFwxiXR4SSV3HBR@A)KRvHP-zBv;yClD0Vnh)D1{Mvq diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-312.pyc index aafd01e1e09c0087e257a7f4dcfe1b645dc36f19..a7bee62ceb6ec242f26f1242f8b0f72f0ef1b3ed 100644 GIT binary patch delta 52 zcmZ22zgeF9G%qg~0}wQBy1J43Dyvksenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8) GPALGz{1B1= delta 44 ycmZ4FGs}njG%qg~0}vFwxw4V_3%5|Zenx(7s(yN2g}zH_adt_5!DdMwPALFMl@5&n diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-312.pyc index 08e65c7f1e40e67328d9bf5db2318720a48c20e6..df9b8517a8ec75d83f101739dd060aa9c10c30f8 100644 GIT binary patch delta 51 zcmaFO{F#~iG%qg~0}wQBy1J3un^7uFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tZ* FGXSCP5OM$j delta 43 xcmey&{F<5jG%qg~0}vFwxw4Vln^7oEKO;XkRX;tiLf<8|IJ+djU~&OtGXN~?4s8Gc diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-312.pyc index afad231d4193f331e1859be6eff785189b266926..55cc116b0bc000540a33e6669fc30ea78cd8e30b 100644 GIT binary patch delta 52 zcmaDW_f?MjG%qg~0}wQBy1J43HKSCLenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F8) GR9*nla1i(a delta 44 ycmew=_g0SkG%qg~0}vFwxw4V_HKS0Jenx(7s(yN2g}zH_adt_5!Da!bR9*m6xeoIH diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-312.pyc index 8ac4912fe5cbd7df185c9ba6183e3c73de19e9c0..dccc9a8fa9c6be57355b57e380408e010fa74d60 100644 GIT binary patch delta 54 zcmZ3|z__M?k^3|+FBbz4G;X@Okz0USDpNlrKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IF7tOA0K{w&K>z>% delta 46 zcmZ3}z__G=k^3|+FBbz46ur5!kz0USC{aHnKQ~oBJ+DIFCAB!aB)?#@Df4$5086b8 AJOBUy diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-312.pyc index e9e0cffbf4d53215b4c930ad6d12f9d4f5eac969..5f2dd86606cbee6e24394e9d68127771c3de525a 100644 GIT binary patch delta 52 zcmcaB{ZyL!G%qg~0}wQBy1J4338Peoenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H7d GJKO-ufDu0c delta 44 ycmaDVeOH?MG%qg~0}vFwxw4V_38PSgenx(7s(yN2g}zH_adt_5!DddTJKO+H0S`I= diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-312.pyc index 8d16c7a87af1feeb2afac837419bd0c8239aec21..6f9e81357f473621d65c725942de6e4fffbcef77 100644 GIT binary patch delta 52 zcmdmMf7G7)G%qg~0}wQBy1J2j1E*B7enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@0B GA4CDj%n}Cx delta 44 ycmX?Vzt^7oG%qg~0}vFwxw4Ua1E)~5enx(7s(yN2g}zH_adt_5!RD)+A4CC7l@I~| diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-312.pyc index 3a7a6c7e26e889e25d9fb057521ae75b504d5784..2f8c13c1714b71b857f04e2bba432275be38ddb9 100644 GIT binary patch delta 52 zcmezG*6z-InwOW00SFp5UERnn#VD1kpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq}| GLkR%1oDf9- delta 44 ycmZp7|L?|qnwOW00SJoTT-nGi#V8c3pOK%Ns-K=$q3@DfoL!P%u-Tr`LkR#puMR)} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-312.pyc index b65a787a4d7bbd5939531909b4ac7a23c5c2da5c..5ceaafbff8d5a349ab43d0d1df7bbab78d91661a 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}wQBx;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX Dc2^I^ delta 41 vcmX@hc$AU*G%qg~0}vFwxiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2S^RU diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-312.pyc index 7e4c04ad31017992c125bee09e94d11d841781c5..0e471df92bc971535b46258838a3b304525e9612 100644 GIT binary patch delta 52 zcmcbm^+=2RG%qg~0}wQBy1J1&g-I$`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%jf GO(6il=MiB5 delta 44 ycmaE)bxVu;G%qg~0}vFwxw4Tvg-Iw?KO;XkRX;tiLf<8|IJ+djU~?zaO(6hBcn@3v diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-312.pyc index 56eecf58ac5dc0efb2cc3dacde28ef88e4e3e4bc..20972a74945396f6e81137da0f5e77bc5eeee9b2 100644 GIT binary patch delta 54 zcmdni%eb$Xk^3|+FBbz4G;X@Okz0~kszg5{KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb I8FPa(0MgA7EC2ui delta 46 zcmdnj%ebwVk^3|+FBbz46ur5!kz0~kC`UgdKQ~oBJ+DIFCAB!aB)?#@9dm;-09Sqw ACjbBd diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-312.pyc index 639bf077cba8089391259f24e5262f7034ad1366..2b36b89b7368b0027b15a91647951c2e71213b49 100644 GIT binary patch delta 52 zcmaDH{W_ZaG%qg~0}wQBy1J435wldWenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_xo GPc#ARU=sTP delta 44 ycmaDI{WzNYG%qg~0}vFwxw4V_5wlRXenx(7s(yN2g}zH_adt_5!De=rCz=3eED!ep diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-312.pyc index 71faec23261509a50015feb63be59df7023683f5..b43a6e07962c79f9df8e9dae7ca719190ec5b50f 100644 GIT binary patch delta 52 zcmZ3kwqA|%H5 GAO`@XJrExN delta 44 ycmdllyj__4G%qg~0}vFwxw4VllTj#9KO;XkRX;tiLf<8|IJ+djU~?X0AO`?1ZVnm% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-312.pyc index 6ccc2cb09788e2568c25cce46a0ef43d75b70bb5..5f8928fb629ad0ed13ccdbccef14729ff744588b 100644 GIT binary patch delta 52 zcmca?eA}4&G%qg~0}wQBy1J43CW};oenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=n1 GcSQixt`b}T delta 44 ycmca@eA$@$G%qg~0}vFwxw4V_CW}ypenx(7s(yN2g}zH_adt_5!RCJ~cSQhJPY_oC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc index c8bf7e61f80a63b6d7657b9340052ed3cc1cbd5b..3d61ed33d4f48b13a60374d0d48a317eb01f0562 100644 GIT binary patch delta 52 zcmeyu`G=GHG%qg~0}wQBy1J1&no%lMKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$c* G4Ko0{BoNC0 delta 44 ycmeyv`Gu4FG%qg~0}vFwxw4Tvno%fLKO;XkRX;tiLf<8|IJ+djU~>aw4Kn~jwGPGr diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc index cd4f01ca68a4d55876318e35d201f516cb9dda79..34e0793c73690cb525df78155c855a1e5709dacb 100644 GIT binary patch delta 54 zcmZ4TglWwaChpU`yj%=G(75U9Ms8nDsbu|({M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JS)998008zY61o5Y delta 46 zcmZ4UglWkWChpU`yj%=GQ1s@?Ms8nDp=kY#{M=Oi^t=jvm(=3ylKg_rMVz}<004C~ B5VZgR diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc index f2e002a7f1d3a5341877aa49df17dfb3a2b14c59..b4c154c17edac0cfeab4ece45a6c8fc8cfba7505 100644 GIT binary patch delta 54 zcmaFW%<`$3h5IxwFBbz4G;X@Okvo@FDpfxtKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw I7i+>F0PwOByZ`_I delta 46 zcmey=%<`(4h5IxwFBbz46ur5!kvo@FC{{lsKQ~oBJ+DIFCAB!aB)?$uB-VsK0B~Cn Aw*UYD diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc index e79b964e3dd72bd584f3f88a30b3f2eb41caa2ce..b5820751940610e66f9fa70934879746226a6596 100644 GIT binary patch delta 54 zcmZ3xk8$fhM()$Ryj%=G(75U9M(&4fQc3z5`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J|FP*u0090p62t%i delta 46 zcmdnGk8$ljM()$Ryj%=GQ1s@?M(&4fLQ(n|`MIh3>3J3UE~&-YCHV!L+1T|X0Cu1c AzyJUM diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc index 8cb19ad9c6a6b07ad74393035df69b1ebd511230..f8563af4938050edc1d919968388cc24c3b9563e 100644 GIT binary patch delta 54 zcmex+mAUmAGxup;UM>b8XxwylBR3DbRH}YPer~FMdR~RTOKNd;Nq&L8yI+KExU17< IP4+8~0rGhgq5uE@ delta 46 zcmZp@#{BmxGxup;UM>b8D0*{cBR3DbP^^ANer~FMdR~RTOKNd;Nq)g*L-s3=0dZ9j Aod5s; diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc index f74f6772fdc940cbcb45002540ad121b4f2f70f3..64147b81e913ae077d6fabbf2da3f1adcd8a7c7c 100644 GIT binary patch delta 52 zcmbPIHm8jHG%qg~0}wQBy1J1&oK-4SKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$qd G0#g9L>Jd8t delta 44 ycmbPJHl>XFG%qg~0}vFwxw4TvoK+}RKO;XkRX;tiLf<8|IJ+djU~>)Y0#g7+s}D8+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc index d7e12cbbd44c3bc6df829253761e4dc4060bbf47..2db9a53038ef4a07a48feaa94fb45b83a9e00f77 100644 GIT binary patch delta 52 zcmZp)>9pZK&CAQh00fPju5RR>%_NngpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Q@U Gr!)Ynbr7)t delta 44 ycmeCQX|&-!&CAQh00c#Eu59F<%_J0~pOK%Ns-K=$q3@DfoL!P%u=xO!r!)XG1`ezM diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc index 7c2f2350434aa11e9f990d4b4ded06e092505afd..53a15df755365203d6f48f0bc51d13c6f2313cd8 100644 GIT binary patch delta 54 zcmX?hjOpAlChpU`yj%=G(75U9M(($)QmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jx!7#x0ssnx5_A9n delta 46 zcmX?ijOo}hChpU`yj%=GQ1s@?M(($)Lb3W8`MIh3>3J3UE~&-YCHV!Lh1hK70sw?g B5N`kg diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc index b8a68ca1842847c44104ec8ac240bc20b94b899a..b1e1f338933ab40bfbd1c42b6d1602ca35a22d85 100644 GIT binary patch delta 54 zcmZ3}&bXzWk^3|+FBbz4G;X@Okz0&KDosBlKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IF-xUA0LnKI?*IS* delta 46 zcmdne&bX$Xk^3|+FBbz46ur5!kz0&KC{8~kKQ~oBJ+DIFCAB!aB)?#@HA|&E08nTS A>Hq)$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc index f541dec2429c152c0563e841887b5dae466e4502..911c1974876524cef9e57590d51c5c7221b15dd4 100644 GIT binary patch delta 54 zcmex8gRyxgBll@uUM>b8XxwylBR4ObREmB^er~FMdR~RTOKNd;Nq&L8yI+KExU17< IEw(^60M?Qa{{R30 delta 46 zcmZpk$@qH)Bll@uUM>b8D0*{cBR4ObP>g;?er~FMdR~RTOKNd;Nq)g*Bep;{09l3( A`Tzg` diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc index b323bbd2a15c8382ab92cb485e6c3a2fd47ba59c..5046eae09df102d8259544534801530e9c8c8150 100644 GIT binary patch delta 58 zcmdnLk@fgSR_@chyj%=G(75U9M(*8wQi=K*`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 NH~6;S;A4F52>?zJ6tDmQ delta 50 zcmX@Uk#+w@R_@chyj%=GQ1s@?M(*8wLXr9z`MIh3>3J3UE~&-YCHV!-5BRn};A4F5 F2>`<960-mR diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc index bc52722848b91c9ec3b17a7a24cd4c96ad1bd1d3..bf85df793d4dc8ffddf9fc8d54ea8419fd74d81a 100644 GIT binary patch delta 54 zcmbRHmT~D@M()$Ryj%=G(75U9M($H=QYrcw`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JpR;Yt2LK3_6LbIo delta 46 zcmZ4bmT~S|M()$Ryj%=GQ1s@?M($H=LNWRo`MIh3>3J3UE~&-YCHV!L-?MGY2LOYo B5pMth diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc index c2569b8b744a188e3527ccb2be776bb9914dfe27..692db56f4b00bbff0a742e623bd60b14883196a8 100644 GIT binary patch delta 54 zcmbO-m3huoX71Cxyj%=G(75U9M(!z`Qc3z5`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JH*!8c007$z63hSq delta 46 zcmbO;m3hikX71Cxyj%=GQ1s@?M(!z`LQ(n|`MIh3>3J3UE~&-YCHV!LcXB>H003RZ B5XS%j diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc index 3b4a889ee506778eaf244a528818ad4e69fea55b..1c1a30bb4988492040a09f0c01060e3ebb4a04b9 100644 GIT binary patch delta 51 zcmdnbew>~AG%qg~0}wQBy1J2@g;^>^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|f{o FJOGGo53v9M delta 43 xcmX@kzMq}@G%qg~0}vFwxw4U)g;^*@KO;XkRX;tiLf<8|IJ+djV6rCjJOCIY4XgkF diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc index 9daf7ed6057638b6a49fc66bbb728e21623eb27f..0f1ee889c9bb2b62b8499597acd6ff8f6cc58863 100644 GIT binary patch delta 49 zcmZ3?w3>sof1Vj!d diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc index a89f8ec97f5a57ab787dfbc7dac9747a26c8df39..dc5c6a10427850421157a732da9f25be8b3c3d82 100644 GIT binary patch delta 54 zcmeyln7MHYGxup;UM>b8XxwylBlkyksU-c3{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Jd>pS&0s#7N68iuE delta 46 zcmZo%!u)eFGxup;UM>b8D0*{cBlkykp(y=~{M=Oi^t=jvm(=3ylKg_rVjQne0swWJ B5cU87 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc index bff94137d69bd7b0b651c35149b61fdcd8d9d9e2..43d544e7ebd0bce6636f7af391675a3162ba2fa9 100644 GIT binary patch delta 51 zcmeys_JfW4G%qg~0}wQBy1J430FzXbenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8xBM FlL56h5qbas delta 43 xcmeyt_JNK2G%qg~0}vFwxw4V_0FzLZenx(7s(yN2g}zH_adt_5!Q`h*lL0&=4|M%d- Gay|f`?GSGO delta 44 ycmZ3WGDC&?G%qg~0}vFwxw4TvgjpzDKO;XkRX;tiLf<8|IJ+djU~?t&ay|en<_>BA diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc index 1f670c316630c1e2a98eb4e58662f0af3c564852..c0de70a06122a3de954b53ddd499c7db325ddcea 100644 GIT binary patch delta 51 zcmeyy_K%JGG%qg~0}wQBx;l~jk5qzwMt*LpetKSozDsIxc1eDLzPn$9Zn&${W=Y0a FCIG^e5XArh delta 43 xcmeyz_Kl7EG%qg~0}vFwxiXRak5GhuMt*LpetKSozDsIxc1eE0W<|zWCICh=4!{5a diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc index cdd8be3124907bec806c87fce8ccccc47ff8a7a7..319452a7c4fe35aa682982ff7f92d3c3a5b58edd 100644 GIT binary patch delta 52 zcmbPMJFk}eG%qg~0}wQBy1J2jCbLwWenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=i= G53B&pq7n-L delta 44 ycmbPNJFS-cG%qg~0}vFwxw4UaCbLkOenx(7s(yN2g}zH_adt_5!RCF;53B%D3lIhX diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc index 688d10a8955b9f3355b694a7556646143e6d2a62..7232d3cd184f636ef05213a2054f698d15b7d53e 100644 GIT binary patch delta 54 zcmZ3{$+n@Bjr%k&FBbz4G;X@Ok^9L-sU-c3{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JjF*;g0ssRi6UhJo delta 46 zcmdnc$+n`Cjr%k&FBbz46ur5!k^9L-p(y=~{M=Oi^t=jvm(=3ylKg_roR^kw0swqr B5ySuh diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc index 195d5716dbebc9ad20f8f6f97b03d07242e30818..80484fff425594c47649d58b5a4e34bad34cdc8c 100644 GIT binary patch delta 52 zcmX>ra#e);G%qg~0}wQBy1J2jD~nXJenx(7s(yN2g}zH_adt_5fxf$6gl@R2)83J3UE~&-YCHV#V?tT%v;jT{2 RkEPllOEGSLEXA}b5CExL7E}NL delta 54 zcmbPxlXL1#PVUpZyj%=GQ1s@?M($%$Lecse`MIh3>3J3UE~&-YCHV!-ucg{wOEGSL JEyc7c5C9d76kh-U diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc index 2c74836726710be6dfd8fbe5a7f3810ac6d30f20..806103605f6d0bd20bc18b57199a800ba214eb16 100644 GIT binary patch delta 52 zcmZ3+w~mkdG%qg~0}wQBy1J2jHIr1Tenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-RQ GaV!9-%@Do- delta 44 ycmZ3-w~UYbG%qg~0}vFwxw4UaHIq=Renx(7s(yN2g}zH_adt_5!R8B0aV!8cW)8Uk diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc index baff8b384f7388221b77bd217f179da0c667a756..ea1fa1d5cb7568280a60dd7a7ddf31000fa69795 100644 GIT binary patch delta 52 zcmaFC|AC+TG%qg~0}wQBy1J43KciH-enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Ff_ GGpqp3?-5)8 delta 44 ycmeys|AL?UG%qg~0}vFwxw4V_Kci5*enx(7s(yN2g}zH_adt_5!DbbvGpqnmun$)N diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc index bf583cd485c414b54abba1c2042ec07773e144ce..0fe4ddcd836373952acb848ec0fe68ca7d973618 100644 GIT binary patch delta 52 zcmccZ{MecMG%qg~0}wQBy1J3OnprAAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z$b GXE^}N>=7;i delta 44 ycmaFteA}7(G%qg~0}vFwxw4VFnpr49KO;XkRX;tiLf<8|IJ+djVDkcIXE^{+g%2qJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc index 33bf3302a0792d7a5f13ba8a0529ecc5534bfdaf..d38265f473ec9ce895646aa96aa47266e1cba92f 100644 GIT binary patch delta 54 zcmdmfg=zm4ChpU`yj%=G(75U9M(%CQQmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JFEghs0{{i%6EFY( delta 46 zcmdmgg=za0ChpU`yj%=GQ1s@?M(%CQLb3W8`MIh3>3J3UE~&-YCHV!LZ!@PX0|0@A B5i0-y diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-312.pyc index 4cc41d917cdd7ddcf050dcc3be039d160b7cab43..243ec18f2cd6b80d7071b048aeab477c483b1969 100644 GIT binary patch delta 51 zcmey$@|T7CG%qg~0}wQBy1J2jBcoJ?enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8uoE F%K^0T5qbas delta 43 xcmey%@|A`AG%qg~0}vFwxw4UaBco7)enx(7s(yN2g}zH_adt_5!Q^X<%KggcG%qg~0}wQBy1J3Ol36NKKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bGZ GsoDU<)DdU^ delta 44 ycmdlSw>pmdG%qg~0}vFwxw4VFl36HGKO;XkRX;tiLf<8|IJ+djVDmiYsoDTag%4u@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc index 0abaad74a1e4d3682b2e61680bc20703d9685285..8e21bca7912ae79afd461e7777acbbbd95c458b2 100644 GIT binary patch delta 52 zcmexs+G@sqnwOW00SFp5UERnn#v+xepOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAq;D Glo$Z6bP$&S delta 44 ycmZoQ`)kU5nwOW00SJoTT-nGi#v+ucpOK%Ns-K=$q3@DfoL!P%u-TgBlo$XvpAM1$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc index 7051aab91b97c63576520c585ec6dc027d0deabe..54855cf32499409430b182e3225b9b4c8dab4735 100644 GIT binary patch delta 52 zcmZ1>xj~ZqG%qg~0}wQBy1J1&no%lCKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$dm G0XG1nClC|> delta 44 ycmdlWxk8frG%qg~0}vFwxw4Tvno%f8KO;XkRX;tiLf<8|IJ+djU~>bb0XG0HP!10O diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc index 4a949b4d5e0e5f1ace71e17af4d8fe7eb8031b49..cb91f38b90333c3f61716f55422c138206fc16be 100644 GIT binary patch delta 52 zcmaEv`!SdMG%qg~0}wQBy1J2j6^B%senx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^wG GN_qh59ufNh delta 44 ycmeyE`!bjNG%qg~0}vFwxw4Ua6^Brqenx(7s(yN2g}zH_adt_5!RGTEN_qfkXAkxO diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc index 8e11deffe126bea99683f4fd774641bba6ef61e1..aa03b7b54d5cf83e24c03542552f5fda9ddf54bc 100644 GIT binary patch delta 52 zcmZ2zw$hCIG%qg~0}wQBy1J43Et^!fenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GJq GaS;H%3J_ob delta 44 ycmZ2!w$P0GG%qg~0}vFwxw4V_Et^oXenx(7s(yN2g}zH_adt_5!Dbb8XxwylBlmJb8D0*{cBlmJ*fBll@uUM>b8XxwylBX=3QRI+|Xer~FMdR~RTOKNd;Nq&L8yI+KExU19V I$?O$Q0MI!Ri~s-t delta 46 zcmbO{g|T}IBll@uUM>b8D0*{cBX=3QP_%wVer~FMdR~RTOKNd;Nq)iR+3Xcg092|E AhX4Qo diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc index f608e6baa0881790051f9b85379de45e37017f74..1fef0eb3871556ef8588c0e9c7b77b978bfb5200 100644 GIT binary patch delta 52 zcmaE@`&pO!G%qg~0}wQBy1J2jE0a`;enx(7s(yN2g}zH_adt_5fxf$6gl@R2)83J3UE~&-YCHV#V?tT%v;jT`b J&$5bo0091~5?%lR delta 46 zcmaDgoAJ?XM()$Ryj%=GQ1s@?M(z!)LUH;T`MIh3>3J3UE~&-YCHV!Lud<4I004Vq B5Lo~K diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc index a71772c0aa5e235b0657b44fdae014650c1ccf34..c7eced828eceb16abbeacb01e4ea60198079a5d2 100644 GIT binary patch delta 62 zcmZ4agJa_l4(`*uyj%=G(75U9Ms9yWscij>{M=Oi^t=jvm(=3ylKcXFcfSbTa95}1 Q9KrS+LB{Plf=qk00H6*OqyPW_ delta 54 zcmdn^gJb0n4(`*uyj%=GQ1s@?Ms9yWp=AAx{M=Oi^t=jvm(=3ylKg_^62bNoLB{PR If=qk001V#}uK)l5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc index 48979b45f6fae15c374fa9dd9abdfe8bc984b8bf..7520659ce5b34a5cf02f5e2d7d784604f7b54218 100644 GIT binary patch delta 54 zcmaFU!}z6#k^3|+FBbz4G;X@Ok^3LJRF-~5er~FMdR~RTOKNd;Nq&L8yI+KExU17< IX^ucU00om0D*ylh delta 46 zcmey;!}z9$k^3|+FBbz46ur5!k^3LJP?CN|er~FMdR~RTOKNd;Nq)g*WsX2Q0DtWe ACIA2c diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc index c59e6f53b6ad56b6f6f7ddd031605d942a0a2758..3803984445ac459df8f3e779bb58ccf49e067a71 100644 GIT binary patch delta 52 zcmbQqzmT8%G%qg~0}wQBy1J2DhgB*|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pG5 G022U{5)Y#Q delta 44 ycmZ3;Ka-#PG%qg~0}vFwxw4U4hgB#^KO;XkRX;tiLf<8|IJ+djU~?dA022TqBMqJa diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc index 3a389df3691a74c6ed6218ee3d9ad6c5b5a26349..722fe26b6faa7bc5e82688edc9694071e9375e9d 100644 GIT binary patch delta 52 zcmaFt`P!5FG%qg~0}wQBy1J2Df>kP0KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pNo GI(Y!Z_z?X7 delta 44 ycmaFu`Ph^DG%qg~0}vFwxw4U4f>kI{KO;XkRX;tiLf<8|IJ+djV6!djI(Yy~aSr$Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc index 14dd349a128ffe39d358939eca74a70d2ceb0932..82a7c456c8967846226a5dcc023990b577b60e45 100644 GIT binary patch delta 52 zcmX@^ecqek?Z4 delta 44 ycmX@_ecYS-G%qg~0}vFwxw4V_B%4sIenx(7s(yN2g}zH_adt_5!RB{t59I(?ln_<` diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc index b92128dacb9d42ac9d87e9dc2e5bb1035f78f0bc..0b2c18ddb5ca9984138d5d2789762e2253978382 100644 GIT binary patch delta 52 zcmZqC>Cxdn&CAQh00fPju5RRh$s(1mpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w3&_d Gp8x=_0ubc@ delta 44 ycmeCtY0=?6&CAQh00c#Eu59Ff$s!c5pOK%Ns-K=$q3@DfoL!P%u$hnbp8x(0}sOh diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc index e73c4f2f3cdb10d288bf4d52005d920b2f579a6f..654df69505ac7c4cec613e0019f590da0aec9bcb 100644 GIT binary patch delta 49 zcmdnSw2z7VG%qg~0}wQBx;l}2f>fq{Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#I>CO De9sVd delta 41 vcmdnTw2g`TG%qg~0}vFwxiXP^f>5GdM=gwG%qg~0}wQBy1J2jJ)2afenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;d5 GzqA3{j1q$Y delta 44 ycmX??dMuUuG%qg~0}vFwxw4UaJ)2OXenx(7s(yN2g}zH_adt_5!R9M$zqA2eRS?61`&b) delta 44 ycmZ1>y+E4#G%qg~0}vFwxw4V_4x3P%enx(7s(yN2g}zH_adt_5!DdGGM()$Ryj%=G(75U9M($iTsZ{-p{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IU2MsT01ogHz5oCK delta 46 zcmex*p7HH@M()$Ryj%=GQ1s@?M($iTp;-Nl{M=Oi^t=jvm(=3ylKg_rlh~3I0g1v8 Axc~qF diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc index 5579c6c55f44f4d62bf9ef802fe7ee1655d15b9e..fa0cd858ac1eeac85ba88e5c3dd7ecced4b6ba67 100644 GIT binary patch delta 52 zcmX>ka!Q2zG%qg~0}wQBy1J1&k69{JKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&L8 Gb~XU77ZBwD delta 44 ycmX>la!7>xG%qg~0}vFwxw4Tvk69>IKO;XkRX;tiLf<8|IJ+djVDn_=?Q8%za1P)A diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc index 8fe9d2cde618cb99ebc445949d03b3ce4f53fd95..9e1d0730901a42cefe3b998382171dab769b09a8 100644 GIT binary patch delta 52 zcmZ1=xk8frG%qg~0}wQBy1J2jE0a`;enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8xj>TpG%qg~0}vFwxw4UaE0a)+enx(7s(yN2g}zH_adt_5!RA{`=Qsg2_zz0} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc index 2ff9368b94067452b27b2f382a5907e14fa0015b..2fa18592d611ca284b2854bc5be8b404b4cbb478 100644 GIT binary patch delta 52 zcmcbq{7{+uG%qg~0}wQBy1J430i#s9enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@a7 GclZI%QW8M` delta 44 ycmaE;d{deGG%qg~0}vFwxw4V_0i#g7enx(7s(yN2g}zH_adt_5!Dd#bJNy7nz7IVB diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc index 39434019cd90017cb0a64009dff0344c3bf8a4e1..2cdb26b76a107f23398ac7d4624737c821d8faf0 100644 GIT binary patch delta 54 zcmdnFn(5$bChpU`yj%=G(75U9Ms5jKsbu|({M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IrmQU!0N&>jvH$=8 delta 46 zcmX@OnrY{1ChpU`yj%=GQ1s@?Ms5jKp=kY#{M=Oi^t=jvm(=3ylKg_rwyZ4^0ActK AtpET3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc index eecf6823e1289e12f5c0d0e653e56cc92671e25c..82fd66dc2b51d419c5a30d319e21bfd4295fd08b 100644 GIT binary patch delta 52 zcmZ3$vx0~FG%qg~0}wQBy1J3OiAgF=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d!h GMrHt@?+||g delta 44 ycmZ3%vw(;DG%qg~0}vFwxw4VFiAg9ibw-N&G%qg~0}wQBy1J4344YJnenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?0K G(QE*}#1UEm delta 44 ycmX>jbwrB$G%qg~0}vFwxw4V_44Y7lenx(7s(yN2g}zH_adt_5!RC)_(QE)koexz2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc index 8968d66a46cb928751ae2eb78ed4155c602982da..b02679d63a8085dcae31e535c80fe904cd336185 100644 GIT binary patch delta 52 zcmew;|5Kj(G%qg~0}wQBy1J430+Uplenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@BK GEW7~IMG$;> G6F&f&5D(1& delta 44 ycmbQEIz^THG%qg~0}vFwxw4VllvyZNKO;XkRX;tiLf<8|IJ+djU~?3+6F&ea0S(9i diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc index 7755dff3508ac9afec5434fcf24b5ab8a89a9b5f..6aeb0bd1b459c1a17468a6cdc8a2179d128f000b 100644 GIT binary patch delta 52 zcmZ1$wl0kOG%qg~0}wQBy1J2jGrLr}enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-58 GVafo=9ua{6 delta 44 ycmZ1%wk(YMG%qg~0}vFwxw4UaGrLf{enx(7s(yN2g}zH_adt_5!R8z6VafnZzYlx> diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc index e37c9af7f82091b3ef1280398049715f688536af..2fef94a15a38f738046e59b50afdfc203b6dadf8 100644 GIT binary patch delta 52 zcmbPaGRuVfG%qg~0}wQBy1J433a3=Eenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>zy GiUI()6A=#p delta 44 ycmbPbGRcJdG%qg~0}vFwxw4V_3a3!Cenx(7s(yN2g}zH_adt_5!RDWwiUI&W91jWr diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc index 6570f375611848262950b65d532087b21c962349..f211e90c9fb5ac06fb519f2afa2b90d11d6e6b48 100644 GIT binary patch delta 52 zcmX?Sf6bozG%qg~0}wQBy1J2Dms=`XKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|or1 GiwFR_j}W>5 delta 44 ycmca+f6ku!G%qg~0}vFwxw4U4ms==WKO;XkRX;tiLf<8|IJ+djU~>?6iwFQiP!6>K diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc index a18da3c81f76314ecd157efe23125ecd9d01566e..3c3c23681739fb88c84f18c5bcf4f57a001d21d5 100644 GIT binary patch delta 54 zcmcc9$n>Or4-7i8n+|_Bb ITG=)(0P0{87ytkO delta 46 zcmaFT$aJTXiTgA!FBbz46ur5!k(;wjC|*A!KQ~oBJ+DIFCAB!aB)?#@UfDJ-0BW%i A6951J diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc index 31b0ebdd724ab3a04862d257e531045a6dff0a8a..3432829b9106259ae16d37c713ea943b310abff2 100644 GIT binary patch delta 52 zcmbQ6yEK>kG%qg~0}wQBy1J3Oi$y9)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dWH GZ-xNJwGr+B delta 44 ycmZ3QJ2#j6G%qg~0}vFwxw4VFi$y3(KO;XkRX;tiLf<8|IJ+djVDoyGZ-xL&{txK@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc index 14b2a2ef5ccb569e8dd60e4f42facc08ecc1efee..943f214b9ece94d2ed9dcd479e5cc576831eaf4c 100644 GIT binary patch delta 54 zcmdn6f@#MJChpU`yj%=G(75U9Ms9HysXYCR{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z ICM^* delta 44 ycmeyb@LhrXG%qg~0}vFwxw4V_0H08%enx(7s(yN2g}zH_adt_5!RDuYvlszc(+~y# diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc index e1154e44062dcf3af9d5198df78fea85fa76df68..50e3725666d753698238574f50025fea8e1988a2 100644 GIT binary patch delta 52 zcmaE)@JfOEG%qg~0}wQBy1J43Dw|Zkenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8Zd delta 44 ycmaE*@JNCCG%qg~0}vFwxw4V_Dw|Ncenx(7s(yN2g}zH_adt_5!RB9V1)Km=;SbUP diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc index 4c9880c08c837b83bda99cfb377164246420c8ae..95b28649816c220f8b95017cd86bd35e8ff694de 100644 GIT binary patch delta 52 zcmaE0@xp@pG%qg~0}wQBy1J2j2dh+`enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?zJ G-C_XME)nhk delta 44 ycmaE1@xX%nG%qg~0}vFwxw4Ua2dhw;enx(7s(yN2g}zH_adt_5!REWH-C_V&zYpmE diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc index df2afadf8b0c5248649618a6c4989165702ffc8c..02b6db834b8c8c4195071db60847758ea2ab481d 100644 GIT binary patch delta 54 zcmeyfhpA;R6ZdIeUM>b8XxwylBX>5lRIYwTer~FMdR~RTOKNd;Nq&L8yI+KExU19V I4(2bj0QMCV0RR91 delta 46 zcmZqK%k*at6ZdIeUM>b8D0*{cBX>5lP^x}Ler~FMdR~RTOKNd;Nq)iR3Cv$+0RVG} B5c~iD diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc index b3e3652e884cf9e7c74a7e1d214b1f329d0205f9..feeac30cfacb23b4c30fe434859ad06536844bd0 100644 GIT binary patch delta 54 zcmZ2{nQ`@HM()$Ryj%=G(75U9M(%1BsT}=`{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IGg!D&0rVUZ{Qv*} delta 46 zcmZ2|nQ`%DM()$Ryj%=GQ1s@?M(%1Bp%nd${M=Oi^t=jvm(=3ylKg_r3s|^Q0dmC; A_y7O^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc index f6eeb7a0124c93b25c1ecd30a8a2f221d35748e0..afd447099ca4a847af2da8e1bfcdae192f2d9ab2 100644 GIT binary patch delta 52 zcmdm}zf+(4G%qg~0}wQBy1J431G`j?enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H_d GCHw%xco72t delta 44 ycmdm~zfqt2G%qg~0}vFwxw4V_1G`X)enx(7s(yN2g}zH_adt_5!Ddm8CHw$K$qxPi diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc index 9086e8b83961b50f89422fe002d874c8bd547e63..bd4a49fbb46b560c2d5fcb102e3fe4182772633e 100644 GIT binary patch delta 54 zcmew~oAK9dM()$Ryj%=G(75U9M()F`QhE9r`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JAFv8}000RM5~%3J3UE~&-YCHV!LU$6>!004vE B5TpPA diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc index 3e40a72fda9beb94354cb004f7d7de142056f7db..729bfbd97e5c621d77d7497fe74e82a41566bebc 100644 GIT binary patch delta 52 zcmaE2`o@&|G%qg~0}wQBy1J2j2eVY3enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?zp G{Ne!ATM=;p delta 44 ycmaE3`oxs`G%qg~0}vFwxw4Ua2eVL`enx(7s(yN2g}zH_adt_5!REWn{Neys>G%qg~0}vFwxw4V_29r>Venx(7s(yN2g}zH_adt_5!REhAr3wII&k#ib diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc index ac57631124c4192d5a8a6808e83f4d1ae25640e7..3b743ac3c30c5d934973ccf45b3d6c6e3cb45b67 100644 GIT binary patch delta 52 zcmX@AdsdhGG%qg~0}wQBy1J3uj!UXgKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&AJ G77qZl$qcF GA?5(yF%lR6 delta 44 ycmdm6wzZ7=G%qg~0}vFwxw4V_2(wU*enx(7s(yN2g}zH_adt_5!RD9DA?5&I5)cyr diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc index 3d06acce50191f1b25ed4777a67aee7f5707d153..01a36f91bebd9bc47a1fd0441431ad40bcb4cea4 100644 GIT binary patch delta 52 zcmdl}bfk#;G%qg~0}wQBy1J3unpG-SKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$bY G6Jr3&pb?b- delta 44 ycmX?7w5N#sG%qg~0}vFwxw4VlnpG%OKO;XkRX;tiLf<8|IJ+djU~>ZN6Jr2S!4HrC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc index 08f795f6b0a28e48153541fd89f1aba0c4be2828..bc03c79eeba2a06309ea1705a94b5781fa39594f 100644 GIT binary patch delta 54 zcmbR8oq5i8X71Cxyj%=G(75U9M(&N*q;mB$@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JpSyNU1pp)}6t(~W delta 46 zcmbR9oq5W4X71Cxyj%=GQ1s@?M(&N*gi`f0@^e%5)AK6yT~dp)OY#dgU%Pfp1pt{0 B60raP diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc index f38575e9f2dcce2ade946a9f795dd0041b236c23..3e4b97fe50064911f5fb268070b7667e5192806d 100644 GIT binary patch delta 54 zcmeA_%QXEg6ZdIeUM>b8XxwylBe$u9RJMLber~FMdR~RTOKNd;Nq&L8yI+KExU19V IAPL((0OGw7!2kdN delta 46 zcmbP!mZ|?N6ZdIeUM>b8D0*{cBe$u9P_lkTer~FMdR~RTOKNd;Nq)iRC<)s>0A!92 AyZ`_I diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc index c8e4be03535f1f9ec78c66369c88eb486b9ce4b5..0610e97cc59ab177e28781442ee32aeedad2b61c 100644 GIT binary patch delta 52 zcmaE$^g@aIG%qg~0}wQBy1J43A-7bnenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>EN GNvr_V0uki^ delta 44 ycmaE%^gxOGG%qg~0}vFwxw4V_A-7Pfenx(7s(yN2g}zH_adt_5!Dcp|Bvt@Xh7REX diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-312.pyc index e990e86c362607fc71a65c0c6af2c0db6f4ca9a1..bc634eff3a147ab06bd46182fec271524bbc991e 100644 GIT binary patch delta 52 zcmaEE``(uOG%qg~0}wQBy1J2j2A@>Aenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?&w GMgjoT-w|>E delta 44 ycmaEF``niMG%qg~0}vFwxw4Ua2A@#8enx(7s(yN2g}zH_adt_5!REbuMgjm=pbu>T diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-312.pyc index ce3533992980066664647e79a1713dd0ebf89708..4d58058db52e4ca689a1ba4dd1bf3d52c1739591 100644 GIT binary patch delta 52 zcmX@@c-fKrG%qg~0}wQBy1J3OgGnk)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cJh GH8}vs4iO6g delta 44 ycmccYc-oQsG%qg~0}vFwxw4VFgGne(KO;XkRX;tiLf<8|IJ+djVDnlgH8}uGHxC8? diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-312.pyc index f0b9fda1cd98870fa6959891963d77afda9c722b..176f0bc0c024ac15381d52df2e1c1ba035f276e6 100644 GIT binary patch delta 52 zcmaEs@h*e=G%qg~0}wQBy1J3OPgE*ZKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d8) G-EsisrxH~F delta 44 ycmaEt@hpS;G%qg~0}vFwxw4VFPgE#YKO;XkRX;tiLf<8|IJ+djVDo0t-EshB@DNY{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-312.pyc index 5205ab166cde0833faa36447955fdfe98650a4b6..aa71e55d0708fb0ca1146017fe0db6bfad271789 100644 GIT binary patch delta 70 zcmdn9THwfP0q)bhyj%=G(75U9Ms6=*sbu|({M=Oi^t=jvm(=3ylKcXFcfSbTa95}1 Vbm8`NVMZWk0%GRv>B20bOaLvg6{P?G delta 62 zcmX@IT42v=0q)bhyj%=GQ1s@?Ms6=*p=kY#{M=Oi^t=jvm(=3ylKg_^eBt(dVMZWk N0%GRv`NAxrOaP9u6Tkof diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-312.pyc index 223383f8cf0c1f6b737875b7b7eedd17ab09d9be..4317ec4992fa1961ec6cf82d1e3ebfd4091acaeb 100644 GIT binary patch delta 52 zcmX?b%7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-312.pyc index a0a9831342007a9749557e6f3b6fb75020c7ec10..ab36325c2030ca1dba1782d28bc26e6423998ae1 100644 GIT binary patch delta 54 zcmZ3|#<-@9k^3|+FBbz4G;X@Ok-LgbDosBlKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_CG Ibhcg_0M*SAx&QzG delta 46 zcmZ3}#<--7k^3|+FBbz46ur5!k-LgbC{8~kKQ~oBJ+DIFCAB!aB)?$ue70U209jrS AwEzGB diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-312.pyc index ebd3970e46ba4d66d456f626b90bfdb59b2fe300..25b7d13bf79c2b8d84cc8cd672a5b2d23a035a05 100644 GIT binary patch delta 52 zcmZoj??~r9&CAQh00fPju5RQ$%qW$npOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD|$! G0z&}7sS&~e delta 44 ycmeB3Z%F4p&CAQh00c#Eu59E!%qSG6pOK%Ns-K=$q3@DfoL!P%u=xe!0z&{tQV+cV diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-312.pyc index b42fb0d5edb2e3b2d6ee4c3e1b4ca9ae3bcdbfc6..419105cf173af20716db348ec77221450d1f638b 100644 GIT binary patch delta 52 zcmdl{a-f9!G%qg~0}wQBy1J3Oo>eMYKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aS` GIVJ$pBN4~| delta 44 ycmX?5vZI9iG%qg~0}vFwxw4VFo>eGXKO;XkRX;tiLf<8|IJ+djVDl2zIVJ#Bln=uI diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-312.pyc index 2493fabffce246362adcefc8ed894ec66a38c2c0..1d74fc4ec62d83d789138156869f8e898158a08d 100644 GIT binary patch delta 54 zcmdmck@4t7M()$Ryj%=G(75U9M((E^Qu+EB`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JnK*aH0{{#S61M;V delta 46 zcmX?lk#X-uM()$Ryj%=GQ1s@?M((E^Lh1S$`MIh3>3J3UE~&-YCHV!Lxj1*n0|14e B5V8OO diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc index be5f9326ca631ca23a476d6f6a67cfbbf11ef2b9..c7cb6c4c5b10623c82dcc89397a08998429d21f6 100644 GIT binary patch delta 51 zcmaFL@|K1BG%qg~0}wQBy1J2j1EW-~enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8w;^ FGXSp>5l#RA delta 43 xcmaFM@|1=9G%qg~0}vFwxw4Ua1EWx?enx(7s(yN2g}zH_adt_5!Q`uqGXOUM4@m$3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc index 9c70d470ff480abe0fec90ee402e818f82a23cbd..d34823d052f10cf40461b695716c7c29497031d7 100644 GIT binary patch delta 49 zcmeyy^pA=AG%qg~0}wQBx;l~jgj9}xMt*LpetKSozDsIxc1eDLzPn$9Zn&${#HSMh DoMsVl delta 41 vcmeyz^o@!8G%qg~0}vFwxiXRagiwlpMt*LpetKSozDsIxc1eE0#J3XxC65nl diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc index 05dae14e59f31ce4043886d984fbcef6c5460c02..bebf06a049b62c2eeb602895e6e0386ca10e46dc 100644 GIT binary patch delta 52 zcmZoI?k(m%&CAQh00fPju5RQ`VUo(y&&bbB)lbi>(055K&MwI>(0BKX&<%HW+T6&* GVh#Ygs}Pm| delta 44 ycmeAzZY}0M&CAQh00c#Eu59E^VG>Hx&&bbB)lbi>(055K&MwI>*xbp)Vh#X76b_L9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc index a3e412d85f8f272fc4bf2463a7c42a19488b0ef6..edc05557c97907467d66df4011ff4564222773c5 100644 GIT binary patch delta 52 zcmdnNae#ySG%qg~0}wQBy1J2Dh)JqaKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p~P GCldgfs}ErS delta 44 ycmX@Wv4eyAG%qg~0}vFwxw4U4h)JkWKO;XkRX;tiLf<8|IJ+djV6!KO;XkRX;tiLf<8|IJ+djV6!_HA2$Fx01fp3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc index 8b5ca5acf1a42f7c2e3d9aae4435278c6de6e6e6..f51d855583827c14c5aa578710aab073c38e9505 100644 GIT binary patch delta 51 zcmX@Xa)E{WG%qg~0}wQBy1J3Og;6R~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4SqG Fa)O2XG%qg~0}vFwxw4VFg;6L`KO;XkRX;tiLf<8|IJ+djVDd`FZD#SrQM delta 44 ycmeys|AL?UG%qg~0}vFwxw4VFm02iNKO;XkRX;tiLf<8|IJ+djVDlX!77pbA diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc index 59fbd371c8f27521b37ec8ecc061f0fbe5b15097..dc6b80f6962dcf206433a704e6a6197956b88e0b 100644 GIT binary patch delta 54 zcmZ3mjB&*>M()$Ryj%=G(75U9M(z?;sWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I6IuIx0pJ!9_W%F@ delta 46 zcmZ3njB&v-M()$Ryj%=GQ1s@?M(z?;p*a1F{M=Oi^t=jvm(=3ylKg_rGg%!) GDkA`uL=Ut8 delta 44 ycmZ3)K8v0EG%qg~0}vFwxw4Tvf=MV^KO;XkRX;tiLf<8|IJ+djU~?^#DkA_QwGFQT diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc index 9eeb2d47ae42a43bee43b31bf675eb27d6d7aa02..c6beb58849201d3140086c4431cdc29cdfa6ca34 100644 GIT binary patch delta 52 zcmaFN{hFKmG%qg~0}wQBy1J435Q|ibenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_ju GEQ|od%Mk_u delta 44 ycmaFO{g|8kG%qg~0}vFwxw4V_5Q|WZenx(7s(yN2g}zH_adt_5!RF^IEQ|n21P=iK diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc index 887cf4d1c34f47c9f6d8aaff9246d3484a7d56b6..359f491f8831dca1fad6c0042067241b9dc75e56 100644 GIT binary patch delta 54 zcmbPtlyTWnM()$Ryj%=G(75U9M($m#QmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jud^PH0RZ-a69WJM delta 46 zcmZ2>lyTlsM()$Ryj%=GQ1s@?M($m#Lb3W8`MIh3>3J3UE~&-YCHV!L@3S6{0RVK8 B5dHuF diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc index c4eb6b26d231f0a1a41c394cc381e1cd5bc56a4e..2fc5c4a7967089f47131fb3da532179730a47ab7 100644 GIT binary patch delta 52 zcmZoS?>FZ@&CAQh00fPju5RScWR=R$&&bbB)lbi>(055K&MwI>(0BKX&<%HW+T6y< GC(055K&MwI>*xbj;C%jv GY$gDi1rSF7 delta 44 ycmZ3&F^7ZuG%qg~0}vFwxw4Tvg;6M4KO;XkRX;tiLf<8|IJ+djU~?zqY$gCD?hZl# diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc index e3d32d91ea0811a6ebe1e79bfd9632dd77129c61..0c2811775212e6b1e350139caa75b9a105053a97 100644 GIT binary patch delta 54 zcmew{g{fgG6ZdIeUM>b8XxwylBR4CDREmB^er~FMdR~RTOKNd;Nq&L8yI+KExU17< IC62Hr0MmXEC;$Ke delta 46 zcmZpe%JgFj6ZdIeUM>b8D0*{cBR4CDP>g;?er~FMdR~RTOKNd;Nq)g*Esn4z09OJJ ABLDyZ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc index ac159586e5824c82a2da8fdd8fda160359eb219f..735f0a378bfaf19f8d23e9ce1b5c668b87a46378 100644 GIT binary patch delta 52 zcmZo+>tW+Q&CAQh00fPju5RSM&nT6qpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}Js G2O|KWB@lQ3 delta 44 ycmeBSYhmL)&CAQh00c#Eu59GK&nOh9pOK%Ns-K=$q3@DfoL!P%u$hI4gAo8G!3}f( diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc index 26cb6459a9e395c24bbfcc26e6e2e79644b57700..1889c67185f0fa12bd5d3814b9dea95a2e7cb550 100644 GIT binary patch delta 54 zcmaERgYoMPM()$Ryj%=G(75U9M(#{@sWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IZS2oe024(MQUCw| delta 46 zcmex*gYoSRM()$Ryj%=GQ1s@?M(#{@p*a1F{M=Oi^t=jvm(=3ylKg_reeBOu0F9Rs AO#lD@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc index 784f231b4751c256d607ac928e1d691c879e986a..2b2a36a4026e10e84f8d3374a61ffe2c5968dc93 100644 GIT binary patch delta 52 zcmX@EcV3VCG%qg~0}wQBy1J2j7Qa-Menx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_5` G6W9U6!x3@- delta 44 ycmX@FcU+JAG%qg~0}vFwxw4Ua7QaxEenx(7s(yN2g}zH_adt_5!RGz^6W9SsL=SBM diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc index aa9503499a55a69e6b2279975bac4936b7e61451..1852da9273289ac9721666bbba47d4fd920025c2 100644 GIT binary patch delta 52 zcmeyU{ZpI!G%qg~0}wQBy1J433#(Lyenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G@o G2mAorv=O%e delta 44 ycmeyV{ZX6yG%qg~0}vFwxw4V_3#(9qenx(7s(yN2g}zH_adt_5!DdOe2mAnBRS&WN diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc index db5f29a86a275e33baaa29fda17973b9430327c6..f88a4e03f5d87b0fcc56d39b7f292a01eebd8c93 100644 GIT binary patch delta 54 zcmaDolj-wJChpU`yj%=G(75U9M()L&Qpx%m`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J4{&NX0{{T65~=_I delta 46 zcmex7lj-$LChpU`yj%=GQ1s@?M()L&Lecse`MIh3>3J3UE~&-YCHV!LPjG5C0|0$D B5TyVB diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc index 64fc0dad53e6b8718b49eb02f5c8068f6a277bf8..2f83c40b46a2dc8fdcaaabccbd9fb97bcd3949b1 100644 GIT binary patch delta 51 zcmeyx(!|PrnwOW00SFp5UERoioKY%6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Q`s FX#k;{5g-5n delta 43 xcmZo-{l&t4nwOW00SJoTT-nHdoKYx2KO;XkRX;tiLf<8|IJ+djVDcNrX#gst4;ugg diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc index ffd173e12574c361e050e2b0300ee50177fdd997..bf450ef9ceb525d0bc7a4b1b6bb487633275411c 100644 GIT binary patch delta 52 zcmX?XdfJrxG%qg~0}wQBy1J2Dl1VC4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|owq GuLJ$tW GFAe~;F%c91 delta 44 ycmaDRa!-W&G%qg~0}vFwxw4Vlolz)JKO;XkRX;tiLf<8|IJ+djU~>-RFAe}b@(&LH diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc index a04154773499dbcdefafdf246b9bd399cef566f2..d5e91db19dfadfdb255b3d471244c96cf6b615d4 100644 GIT binary patch delta 54 zcmZ2^igDv9M()$Ryj%=G(75U9M($*0sZ9Nh{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I4a_SO0q`0UTmS$7 delta 46 zcmdmZigD#BM()$Ryj%=GQ1s@?M($*0p+xc!H7pG%qg~0}vFwxiXR4SSVdTBR@A)KRvHP-zBv;yClD0VnhW12zm|8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc index 200648f62836de742c630f9aebde289350a8adff..9669dcc2cdff0d8e7f2a648854d6696f1268e4fa 100644 GIT binary patch delta 49 zcmZ3&yoQ%vb GJuv{v_7SB3 delta 44 ycmaEF_S}s7G%qg~0}vFwxw4Tvheaq#KO;XkRX;tiLf<8|IJ+djVDm(ldtv}j{|}%5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc index 4ec76df27a8e061e1e3200973b5fca4d8e97bba5..ed1b8a31103d1993689a0d6a83a5bf8788fa9458 100644 GIT binary patch delta 52 zcmX>Qa3X;FG%qg~0}wQBy1J3OokJ=~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z|} GIr0F>s}Ya@ delta 44 ycmX>Ra3FyDG%qg~0}vFwxw4VFokJ)}KO;XkRX;tiLf<8|IJ+djVDlP|Ir0Ebj1P+d diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc index 2b538d165eeaaffea01ce298f7ae03bd5bf29980..0205ae104fd384c8b56a985ffe73f285b0bddaf4 100644 GIT binary patch delta 51 zcmeCRoodT{nwOW00SFp5UERq2Q&uWXKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|kAH FIRLDX5VHUP delta 43 xcmbPg+iS~xnwOW00SJoTT-nI|Q&uQWKO;XkRX;tiLf<8|IJ+djV6vQCIRG<$4z2(I diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc index 37db8a20d452f312272b3f9af427ad3b8bc7ca44..2a69ca8f321cd00cd1ae657544db31d149beaa5d 100644 GIT binary patch delta 61 zcmbPnl4rq59`4h;yj%=G(75SpBX=t|<5q4ab|e43VoN<;_Qe43VoN<;_QUP7Z$n diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc index 67fb48d9d9a1f1e2acbeceb5d883da6ec4f24e1f..10af6422c3769407d8fe0f8dc4952813b951dc36 100644 GIT binary patch delta 51 zcmbOzG*gKCG%qg~0}wQBy1J1&g+nSsKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>udS F1OSOY5Gw!x delta 43 xcmbO!G*O8AG%qg~0}vFwxw4Tvg+nMoKO;XkRX;tiLf<8|IJ+djU~(tN1OOM^4kiEq diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc index c67cb5ca1ea59738049182c7879d5cc6fa030568..877e0caaebe8eb652b64044eed14b9e736e970d3 100644 GIT binary patch delta 51 zcmbQqvXF)QG%qg~0}wQBy1J2DhEXa-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g5b F0|0x?56u7o delta 43 xcmZ3;GLwb-G%qg~0}vFwxw4U4hEXU+KO;XkRX;tiLf<8|IJ+djV6r3Q0{{(U4afih diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc index bbf7375a64f0a1d5ae5108963202057404e11ca3..0ae45108e54e4163378dd3313ecddfd2d47fcbef 100644 GIT binary patch delta 51 zcmcc4cAt&=G%qg~0}wQBy1I~?Nh(o4BR@A)KRvHP-zBv;yClCr-`y`lH{8`}vn-Pp FBLJ9L4}Smv delta 43 xcmcc5cAbs;G%qg~0}vFwxw4R(Nhnf3BR@A)KRvHP-zBv;yClD0vnrDnBLF2Z4SE0o diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc index b187e9b1a12369253b52db04e0a5963b29b0a59d..f70b12024b0b78f804e7a5625e32419bdf09ba42 100644 GIT binary patch delta 52 zcmZ1*w>6IYG%qg~0}wQBy1J2Dk69{7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p%; GBW(b>KM@=N delta 44 ycmdlQw>FOZG%qg~0}vFwxw4U4k69>6KO;XkRX;tiLf<8|IJ+djU~@3@BW(aeU=J4n diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc index 41dff9f0032ed93a3f2caac70fd31f1ec811d3a4..349c66eb6fead9f548fbfb8d24bee117166539d2 100644 GIT binary patch delta 52 zcmdn2uv>xqG%qg~0}wQBy1J43JhN1)enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;qK G?mPgySrIn? delta 44 ycmdn3uvvloG%qg~0}vFwxw4V_JhM=&enx(7s(yN2g}zH_adt_5!R9Z_?mPfN+7B`S diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc index eb8a4b0c304b4e198914ba04107d10df9d7a2349..9407678f0313d47a2e591364641290645862da48 100644 GIT binary patch delta 52 zcmcc1_mq$OG%qg~0}wQBy1J2@i%BY8KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p<$ G87ly$$Pc{$ delta 44 ycmaFLcbAX*G%qg~0}vFwxw4U)i%BS4KO;XkRX;tiLf<8|IJ+djV6#4x87lxXDGj&) diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc index 96ec1984c721699b76eb8ee439a8e66074f564ba..df104ce9dd70ca94e4785aadcf98f7f758e75d4e 100644 GIT binary patch delta 52 zcmZ1?vqpydG%qg~0}wQBy1J3Oj7cg*KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c>J GiQE9D=@6v= delta 44 ycmZ1@vqXmbG%qg~0}vFwxw4VFj7ca)KO;XkRX;tiLf<8|IJ+djVDoIIiQE7&at@#X diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc index 88ee09a2e9a42db2efdcdbb2d3d0ec997ba97394..c300917dedd8b4986bc06eda525cf48d4de6c9a2 100644 GIT binary patch delta 51 zcmZ3Xu|b3TG%qg~0}wQBy1J1&Rah!nKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>ybB FG60*w5Uv0K delta 43 xcmdm>u|k9UG%qg~0}vFwxw4TvRahumKO;XkRX;tiLf<8|IJ+djU~-r6G5{x64ygbD diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc index 9a3c7fc9bf851650b47bfe8c6d32494f774f187a..4f45219208f034b0b79c92305c12bcaa94aaa8e9 100644 GIT binary patch delta 51 zcmcb{dXJU+G%qg~0}wQBy1J2jH=|U%enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8reB F{{X4y5ugA7 delta 43 xcmcb|dX1I)G%qg~0}vFwxw4UaH=|Ivenx(7s(yN2g}zH_adt_5!Q=;w{{S-051Rl0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc index af56de7ba8f859e5c991c94d8c02e527539c58fd..b592cf9385189ff3b97f4dd248cd30beca34584d 100644 GIT binary patch delta 52 zcmdmNyxW-jG%qg~0}wQBy1J3uidiZ_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Mp Gj2Hl{KoCs; delta 44 ycmdmOyxExhG%qg~0}vFwxw4VlidiT^KO;XkRX;tiLf<8|IJ+djU~@ckj2HkmVGc+D diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc index f36d36422f3f576eebd6f22f81892d179e4214da..f6444aeb0cc0220a401f42592945de7e77dd5145 100644 GIT binary patch delta 52 zcmeyJ)|}3LnwOW00SFp5UERoiQ%5RUKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bOo GRyF|Q3KDPt delta 44 ycmZop|DDEtnwOW00SJoTT-nHdQ%5LTKO;XkRX;tiLf<8|IJ+djVDmqnRyF`(9S~~( diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc index d934a6781619dadf4cc14e3db97cdebd9f6d831c..72c96213faa9077d78bc3991ea7b6495a94aafc0 100644 GIT binary patch delta 52 zcmX@gewLm4G%qg~0}wQBy1J3umr*J~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%51 GG!p=%un;By delta 44 ycmX@hew3a2G%qg~0}vFwxw4Vlmr*D}KO;XkRX;tiLf<8|IJ+djU~>^;G!p3J3UE~&-YCHV#V?tT%v;jT`b J4~yi+000PT6951J delta 46 zcmdn-h;hRsM()$Ryj%=GQ1s@?M($-ILJ9gA`MIh3>3J3UE~&-YCHV!LPmAQn004uG B5c>cC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc index 005fdb3c74dbf0c6967a1fce9c46ebd4b782bfd3..af704bc95fe80972fc15e3fd69f58aef1548abae 100644 GIT binary patch delta 52 zcmdlbd`Ou4G%qg~0}wQBy1J3Ok4Y*?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d6( Ges%z^a}Z|$ delta 44 ycmX>kyi1t-G%qg~0}vFwxw4VFk4Y#>KO;XkRX;tiLf<8|IJ+djVDn}ses%yid=6p& diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc index 383312777a462825e4ad8b05fab59034eac5448a..c09177e114c3b2d693348c62b1d2356d6623a43e 100644 GIT binary patch delta 52 zcmew={a2d%G%qg~0}wQBy1J3uhD$12KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%mk G9A*H(HW2Fo delta 44 ycmew>{Z*R#G%qg~0}vFwxw4VlhD#_}KO;XkRX;tiLf<8|IJ+djU~?kZ9A*GV7Y^nC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc index e4b60bcb21d1613a36660bb152c603142c67b199..0f361734a11f89c7c38cd85c1be237548ce0bf8d 100644 GIT binary patch delta 52 zcmdlXbU=vvG%qg~0}wQBy1J43CX-aWenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=nX GPHX_UZ4o8_ delta 44 ycmX>gv_pvdG%qg~0}vFwxw4V_CX-OOenx(7s(yN2g}zH_adt_5!RCKVPHX@_W)C3% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc index 0dfcc3fd5501c6d52d6f0d13a2a3c966c2795b4b..5dcf35fe1896cc34b9527daff4644fdbaebd1502 100644 GIT binary patch delta 52 zcmX@XbAgBZG%qg~0}wQBy1J1&m02oQKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$|v GF(v@4ClJyA delta 44 ycmcb>bApHaG%qg~0}vFwxw4Tvm02iMKO;XkRX;tiLf<8|IJ+djU~?DqF(v>uC=Sg4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc index 2708e09fa72d6557e87e0d6e06f7b15d7939937e..b2cdba89f2d606aa9d1cc1609ac61d72fc153d8a 100644 GIT binary patch delta 52 zcmZ3KuquK3G%qg~0}wQBy1J3Of=eo1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cRB GUR40WkP%J* delta 44 ycmZ3Luqc81G%qg~0}vFwxw4VFf=eh|KO;XkRX;tiLf<8|IJ+djVDntAUR3}`(GN)g diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc index c80fa6375fe69abb8f0d63b1211b65df7496ebb1..5041690eae96d5d9415eb289437c231426cb69c7 100644 GIT binary patch delta 52 zcmbQ_KFgi^G%qg~0}wQBy1J3OgHxI>ZqG%qg~0}wQBy1J2j8LL#Renx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@mh GZ@B=q4-tU? delta 44 ycmdm?xIvNoG%qg~0}vFwxw4Ua8LLpJenx(7s(yN2g}zH_adt_5!RFJfZ@B$e7 GEkyv&auK%x delta 44 ycmcZ=b18=VG%qg~0}vFwxw4Tvnnx&9KO;XkRX;tiLf<8|IJ+djU~>b{EkyuR+Yhn; diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc index 38a9f17a492401cb40edf4b1ea5ed0aeb68af74a..e17c127dd791fe1937f02acf8583d11ca08b4976 100644 GIT binary patch delta 52 zcmeyQ{Y#tsG%qg~0}wQBy1J1&okc2MKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$up Go*)3p3=ty$ delta 44 ycmeyR{YjhqG%qg~0}vFwxw4Tvokb{IKO;XkRX;tiLf<8|IJ+djU~>;ko*)2DRSzBj diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc index b823f74bad4ae4a8d23c0e7d718c01621c32a63b..cba7eeedf45873552846559f90b32d155370a209 100644 GIT binary patch delta 54 zcmX?gp7GLoM()$Ryj%=G(75U9M(z!~Qt|p3`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J&+`6_1ON;56PN%1 delta 46 zcmca~p7GRqM()$Ryj%=GQ1s@?M(z!~LgD%u`MIh3>3J3UE~&-YCHV!Luk!wl1OSHD B5t9G_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc index bd1f1540d2f3918fb43ab11b857343226d642b20..4764d9696d6885af685643a4686bd723ef55ed54 100644 GIT binary patch delta 52 zcmZ3=yOx*xG%qg~0}wQBy1J431EW;Benx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H_# G87u&=(hz?D delta 44 ycmZ3>yOfvvG%qg~0}vFwxw4V_1EWy9enx(7s(yN2g}zH_adt_5!DdmW87u%dTMl{v diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc index 1364ae1304f199830c2f2a94416dc568d1dfdab1..6b01e54b1fe1476e670a4acf2db54765285d045d 100644 GIT binary patch delta 52 zcmeBnp6twhnwOW00SFp5UERoC%qf+qpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Q#O GZ*c&vJP|wq delta 44 ycmbR2-0jSLnwOW00SJoTT-nH7%qbM9pOK%Ns-K=$q3@DfoL!P%uz3dOZ*c%N-48ba diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc index bf18d985613d49fe4bb44c2dbc59f7a099a010c9..0cbdf7f4690735953ea9d88a400b449601cd6ee4 100644 GIT binary patch delta 58 zcmZqt$=3Okjr%k&FBbz4G;X@Ok(-TIDp5ZpKQ~oBJ+DIFCAB!aB)>r4-7i8n+|{XB MnRmM~FJs(#04;42fdBvi delta 50 zcmeDD$=3Ljjr%k&FBbz46ur5!k(-TIC{jNoKQ~oBJ+DIFCAB!aB)_0pn|Hf5FJs(# E0H;F`ga7~l diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc index 67a0eac7a53221b24bb6b514a03208b1c103292e..b4d15613d4ad77bed5c5729ecbbc2dd3fae634a2 100644 GIT binary patch delta 52 zcmca4cuSD`G%qg~0}wQBy1J431(Q^=enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HuY Gv#bEZGZ6&< delta 44 ycmca5cuA1^G%qg~0}vFwxw4V_1(Q&;enx(7s(yN2g}zH_adt_5!De3Ov#bC|1P=fJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc index 126baf8388a18987956a560ce11b8c608f1ad2c6..c3a846d2e6291bfdefae2e4a90f5f546993d6967 100644 GIT binary patch delta 52 zcmeD3nB>8InwOW00SFp5UERoS$SjqjpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wAqh& Gj{*Rs4iJF= delta 44 ycmbQ_(dEH?nwOW00SJoTT-nHN$Sf42pOK%Ns-K=$q3@DfoL!P%usMu*j{*QMmkxXY diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc index 5abd9be15407e430c7dc24f85f4e48d4c67b9413..710c99e6a69796e7aa36507b10a3629de002be59 100644 GIT binary patch delta 52 zcmdlOx-*pfG%qg~0}wQBy1J1&fK@6{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%^C Giz)!TMi8|C delta 44 ycmdlPx-pddG%qg~0}vFwxw4TvfK@0`KO;XkRX;tiLf<8|IJ+djU~?&}iz)y^pAN79 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc index 1c632012ac5311e86aa4759387b752fd23d0b35b..e816edbe43299d9897bede4b513caef8d9083a5c 100644 GIT binary patch delta 52 zcmZn-><#2T&CAQh00fPju5RRxl9tNQ&&bbB)lbi>(055K&MwI>(0BKX&<%HW+FUNp G#|r?i7Z6SW delta 44 ycmeATYz^c-&CAQh00c#Eu59Fvk`_wP&&bbB)lbi>(055K&MwI>*jz8o#|r>AI1Whw diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc index c21f634e68919568012cf013c69d8ae23dfa8228..e9d8b288d02103bfa47fefedf433595350c12081 100644 GIT binary patch delta 52 zcmX@leVv>8G%qg~0}wQBy1J435VKU0enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_lk G9~c3>NfE{X delta 44 ycmcc4eV&{9G%qg~0}vFwxw4V_5VKH}enx(7s(yN2g}zH_adt_5!RF`89~c2c+7H11 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc index 0bfbd69050edeaea117b2bb405ccf99572339aa8..448bf7ad164feb3e23df145bb20fb5594eed4b73 100644 GIT binary patch delta 52 zcmeyU@Kb^NG%qg~0}wQBy1J1&oLMSfKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$ql GUmgI$?-6qV delta 44 ycmeyV@KJ&LG%qg~0}vFwxw4TvoLMMbKO;XkRX;tiLf<8|IJ+djU~>)gUmgHSfDdi} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc index 09e737b14dca2d3ab44cf80495b6e26a4b98089c..6974e6e140fd458e6f0adaf3bd47ee9b7e2face9 100644 GIT binary patch delta 52 zcmdnWx0jFmG%qg~0}wQBy1J3OmQgA}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a?` G*{lGluMoEY delta 44 ycmdnXx0R3kG%qg~0}vFwxw4VFmQg4|KO;XkRX;tiLf<8|IJ+djVDloz*{lFE_ztoF diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc index 23b195656697977b33608b35458334446372b43d..1ffceb53479bf763109426350345e92a97e094ac 100644 GIT binary patch delta 52 zcmew<-6+F-nwOW00SFp5UERoilu0T@KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4al{ Gac%&*S`hL8 delta 44 ycmZpa`6`ac%%WB@XQX diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc index 3663fdde379233e2dfade004a831bad0243c62fb..5bdd696f7ba08fa7582d084aea22693f87c6340e 100644 GIT binary patch delta 52 zcmeB@m?Xh{nwOW00SFp5UERoC%OaJepOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Raw G0XqPj%Merm delta 44 ycmbOv(IvrsnwOW00SJoTT-nH7%OVt|pOK%Ns-K=$q3@DfoL!P%uz3+n0XqOE{0>h5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc index 619dd478838095f59b1baff97461fba712119f55..b10c96dc93da234794c1aec4bf8cac229eb46d33 100644 GIT binary patch delta 52 zcmZ4GyUCaPG%qg~0}wQBy1J2DnpG-QKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n}u Gks<)EQV?4J delta 44 ycmdnwyULgQG%qg~0}vFwxw4U4npG%PKO;XkRX;tiLf<8|IJ+djV6y{jks<&&BMw#o diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc index c9bfc9474eaa34ec79799407df220b05799b72a1..20a02b33251afe55ca8dc787d7cd49e1ea63203b 100644 GIT binary patch delta 52 zcmbQNKU<&sG%qg~0}wQBy1J2j2d7k=enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?z3 G`*;Dd`4MCQ delta 44 ycmbQOKUtsqG%qg~0}vFwxw4Ua2d7Y&enx(7s(yN2g}zH_adt_5!REW1`*;C5N)KNE diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc index 3ba6230e204c0bf8f47f9d7f8946bb3dfc8fdf8b..a2a5eab76081d99cb5990dc22827bdec8ae1309b 100644 GIT binary patch delta 51 zcmcbq@lb>NG%qg~0}wQBy1J3uhFL06KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>la8 FAONOt5ElRd delta 43 xcmaE;aZ`i)G%qg~0}vFwxw4VlhFK_5KO;XkRX;tiLf<8|IJ+djU~wX|AOJAV4iW$W diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc index 60ebc9f05778df632bebdbb3aa71b396a25fc6f4..700a46e78972221351c01756de82b4cb27f5732f 100644 GIT binary patch delta 54 zcmew}m$79YBll@uUM>b8XxwylBew;cRDym+er~FMdR~RTOKNd;Nq&L8yI+KExU19V IP`2eB0N;`kwEzGB delta 46 zcmZpf$M|P1Bll@uUM>b8D0*{cBew;cP=tO)er~FMdR~RTOKNd;Nq)iRShnRJ0ATJ9 AumAu6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc index 817e816ea303e335d2fb3ce61ed7e147a31b71fd..5f030d40a1379a7d5dc1c9f200b714b46b92f912 100644 GIT binary patch delta 54 zcmX>;mGS&kM()$Ryj%=G(75U9Ms6JrsW|f0NvFQbpQYW delta 46 zcmX>)~G Gl^g)#XA#B# delta 44 ycmeyB`6-k8G%qg~0}vFwxw4TvT1+TXKO;XkRX;tiLf<8|IJ+djU~_|5l^g(LkPpEC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc index 8c7d37f441ada297ac8db771e1c78a93d77f0d3d..d0c515f566d863a71b5b1403bf39c27e90a457b6 100644 GIT binary patch delta 52 zcmccQam$1IG%qg~0}wQBy1J430E<+Denx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@M@ GrSbsP5fSA8 delta 44 ycmccRamj=GG%qg~0}vFwxw4V_0E$nk G6j1=cvJm9} delta 44 ycmexh_`;C;G%qg~0}vFwxw4VloLMMRKO;XkRX;tiLf<8|IJ+djU~>%f6j1<2vku?@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc index a9643ae1553bc5bdeccba84ee524f1b6a5a0361c..d8c890d29de21bff2f5cb62d1d0186318723aa5e 100644 GIT binary patch delta 52 zcmca-{>+^FG%qg~0}wQBy1J434Xae5enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HV# GtD*qbxe<*3 delta 44 ycmaE6e$SlyG%qg~0}vFwxw4V_4XaS3enx(7s(yN2g}zH_adt_5!Dd0WtD*o{LJx=l diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc index 688ec705bd232fceff72c4b652b06fc9e08cfcf7..45016fb88d1b29b49644381f22c3ecc4cca347f0 100644 GIT binary patch delta 52 zcmbQkw}g-TG%qg~0}wQBy1J1&fJrJ|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%^q GdKLhfHxNGn delta 44 ycmZ3&H;0e=G%qg~0}vFwxw4TvfJrD^KO;XkRX;tiLf<8|IJ+djU~?(cdKLgBcn&%M diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc index 98d400b8c307f7da416e0709736272759a9d0fde..f2e8cde1cc03f67a0f2cb5690e889592e72f04f1 100644 GIT binary patch delta 52 zcmX@4c}kP}G%qg~0}wQBy1J2jGLuxIenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-9K GLP7w#>kzsC delta 44 ycmX@5c}SD{G%qg~0}vFwxw4UaGLulGenx(7s(yN2g}zH_adt_5!R8%ILP7vR^bWNE diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc index 129aea009c6b18bb2654b7eb5148b040b948f212..83b9f437769563d58c311033e7f2fe4ddb480d0c 100644 GIT binary patch delta 52 zcmX>YcQTIqG%qg~0}wQBy1J3OiCZdOKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d#U GMalrq>JhO3 delta 44 ycmX>ZcQB6oG%qg~0}vFwxw4VFiCZXKKO;XkRX;tiLf<8|IJ+djVDobBMalqE0}reK diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc index 4604020e7b3291307c708ccebe6c0e4a48e19a68..e24d9f74af8e91bfb18ed983ebe015d4ea4e5229 100644 GIT binary patch delta 54 zcmeydgQ;OB6ZdIeUM>b8XxwylBlk>BsRaFu{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J+c*zR0s#1e6A}Ob delta 46 zcmZqJ$@F6f6ZdIeUM>b8D0*{cBlk>Bp$Pqq{M=Oi^t=jvm(=3ylKg_r`#29x0swVB B5e)zU diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc index 5ea00616328149595b209c7976f8001bb4866544..116b6d2526860e34dffab7fab85b1b5a2264ac62 100644 GIT binary patch delta 58 zcmX?hisjrX7Vgu$yj%=G(75U9Ms6W~sU-c3{M=Oi^t=jvm(=3ylKcXFcfSbTa95{h Meg5tG{EXsa061q6^Z)<= delta 50 zcmX?iisjfT7Vgu$yj%=GQ1s@?Ms6W~p(y=~{M=Oi^t=jvm(=3ylKg^ZbN=n-{EXsa E0I-D*_W%F@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc index 8942c78b1d999798cb30f14f5cc3b108bde47dd5..09d416b737c6b9104c00c6badb73cc9fc6558cbe 100644 GIT binary patch delta 52 zcmbOlI5&{{G%qg~0}wQBy1J437^hU4enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@yV Go8$n)5)st^ delta 44 ycmbOmI5m*_G%qg~0}vFwxw4V_7^hI2enx(7s(yN2g}zH_adt_5!RFVTo8$mUa}Uq} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc index c265f0ac70ab506d421075ab96d53c259fb0d694..62ceb0b03da9180f9581924f9092a808198374dc 100644 GIT binary patch delta 52 zcmdm6e6*PRG%qg~0}wQBy1J439)_))&CAQh00fPju5RRh$0(JgpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w3(af GD+>UjOAw0y delta 44 ycmeC+YvAKP&CAQh00c#Eu59Ff$0!t~pOK%Ns-K=$q3@DfoL!P%uvwVtD+>TCOb&(s diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc index 6bffadb03c23c47f6d4026cbf19537a8ab0b7c54..3fab4b4bdb60be356b1989074fb6b2b8657711c3 100644 GIT binary patch delta 51 zcmdnavY&uy# FB>;^t5KjOA delta 43 xcmdnbvYmzdG%qg~0}vFwxw4VlgHb3#KO;XkRX;tiLf<8|IJ+djU~(?wB>)?x4oUz3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc index 9b3cbde7319cd9c38cb58e2f03e06ff4ef4c66a0..24d1908ab3e8043b77249078b1ea054f6f9efe24 100644 GIT binary patch delta 52 zcmaE4{K}a7G%qg~0}wQBy1J438jDn%enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@}C G??nLDEE048 delta 44 ycmaE5{K%O5G%qg~0}vFwxw4V_8jDbvenx(7s(yN2g}zH_adt_5!RFsA??nJvg%EE5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc index 1e909216f73f753615837aa56994ac1d5ba3d441..3c15f2f5f2f1e1f05c1ce4140e895574fe6d6c5f 100644 GIT binary patch delta 52 zcmZ2syuq0JG%qg~0}wQBy1J43J)2aVenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Fv_ GIYI!xX%ON7 delta 44 ycmdmByuz6KG%qg~0}vFwxw4V_J)2ONenx(7s(yN2g}zH_adt_5!DbQmIYIzLiVocX diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc index bfd3fa1a1cefe729daa81c5ff6c56c6c68566cf1..adf76860f4cea375d908df73f537d5e6ce49edba 100644 GIT binary patch delta 52 zcmew+`%jkpG%qg~0}wQBy1J2DltU_BKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oZ> G5jFt2F%Z50 delta 44 ycmew-`%RYnG%qg~0}vFwxw4U4ltU<7KO;XkRX;tiLf<8|IJ+djV6zp+5jFrqiVnE| diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc index 1a193a53b6694556882821f520b898d284f7eba6..99b9af304fae5d85d4476134890cb2ed4554a20b 100644 GIT binary patch delta 52 zcmdlYyhoV(G%qg~0}wQBy1J3Oj9Dr{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c=e GMK%Dah!8vg delta 44 ycmdlZyhWJ%G%qg~0}vFwxw4VFj9Dl`KO;XkRX;tiLf<8|IJ+djVDoHdMK%C3xehk~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc index ece92d9aec1985acbb7b077604494e699498504f..9f8094ce3b9d546f61565c9e224fbc8c62837ff5 100644 GIT binary patch delta 54 zcmZp?!`OL;k^3|+FBbz4G;X@Okz1WzDp5ZpKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb I3;W(Q0Nu?I(EtDd delta 46 zcmeCY!`OI-k^3|+FBbz46ur5!kz1WzC{jNoKQ~oBJ+DIFCAB!aB)?#@5BuIU0AS`1 A%m4rY diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc index 50aa014598da6b1c71c69add3cb700e41640c2f3..3beb8d107ec60a1277b45669fe8eda8906553414 100644 GIT binary patch delta 52 zcmdm>zeAt!t G`}qOE$Pw58 delta 44 ycmdm?zd@h-G%qg~0}vFwxw4V_3cFCGenx(7s(yN2g}zH_adt_5!RDXr`}qM!VGq*) diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc index 5ae144243378564c4fa983e5afee742c27628d89..ad48c2ca5467a8bc80e7ad1fd0af3ae11f6ecf86 100644 GIT binary patch delta 52 zcmdm@zek_@G%qg~0}wQBy1J3umP0B*KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$}u G6h8p0F%V7w delta 44 ycmdm^zeS(>G%qg~0}vFwxw4VlmP05)KO;XkRX;tiLf<8|IJ+djU~>{j6h8nqLJmm) diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc index 70e9b7eafb9df11b29f76038a4f7466df37b16b9..61d497a0e028a1bb0accee573e93a5d90653824e 100644 GIT binary patch delta 54 zcmaFW%Jiv~iTgA!FBbz4G;X@Okz15mDqcS$KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb I5%Z3E0OHpX-2eap delta 46 zcmey=%Jiz0iTgA!FBbz46ur5!kz15mC|o}yKQ~oBJ+DIFCAB!aB)?#@74wdI0A+v= A*Z=?k diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc index f7d67e2aa06591acb0472db348d9f31c27dc6d64..41b6430d1b349f136b39e25a9ca71df2faa28ac9 100644 GIT binary patch delta 52 zcmcaD@K}KRG%qg~0}wQBy1J43Hj`9>enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-#c G$*cgzLlKPt delta 43 xcmaDXa9e=;G%qg~0}vFwxw4V_Hj_|R0piRN$^ZZW delta 46 zcmX@Im1)mbChpU`yj%=GQ1s@?Ms8+dp$Pqq{M=Oi^t=jvm(=3ylKg_r8p3nh0cBke A#Q*>R diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc index ef8c0987deced0a2b7a7bf44c85ecbf6df2aff98..becbc3cfa7b1721f97a2018e0633e61b66cf8b4f 100644 GIT binary patch delta 54 zcmX?bh3Ui3J3UE~&-YCHV#V?tT%v;jT`b J?~5c(1po~16Jh`W delta 46 zcmX?ch3UW*ChpU`yj%=GQ1s@?M(#r*LgD%u`MIh3>3J3UE~&-YCHV!LpNk|;1ptRh B5nTWP diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc index ffde3fbff81eac6070ea4bc34b5411499cb25849..6325b2481d9d049defecc6390c10f5fdac1961b1 100644 GIT binary patch delta 52 zcmbOtHAjm3G%qg~0}wQBy1J3Og+(euKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bvs GVh#YJS`dT) delta 44 ycmbOuHARa1G%qg~0}vFwxw4VFg+(YqKO;XkRX;tiLf<8|IJ+djVDn0rVh#W;V-9}+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc index d900f3e754dfe546cce1033d3f64ff4492731f9b..f0420c8f1a499db38d0a81f1330104323924e48a 100644 GIT binary patch delta 54 zcmcb7hWYjxX71Cxyj%=G(75U9M($X4sW|3J3UE~&-YCHV#V?tT%v;jT`b InFOq|0T~$*i~s-t delta 46 zcmX@|jd9O6M()$Ryj%=GQ1s@?M((HlLecse`MIh3>3J3UE~&-YCHV!Lxdg1T0g#gr AhX4Qo diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc index 06cbb68c8f72f050c3a1df0be173fd7bb54d73b1..776f7acaa75b2e1bfb4c89bd4a70d3b1db3f815c 100644 GIT binary patch delta 52 zcmZ1yH G`;-CEqY^v- delta 44 ycmdlUxjvHnG%qg~0}vFwxw4V_3Wrdbenx(7s(yN2g}zH_adt_5!RDVF`;-Axybw14 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-312.pyc index 1593b4e09aa9e0e77d389714992d0b770838f293..cddc7e196a4ac8fc75d405966b8c11b684f667c9 100644 GIT binary patch delta 54 zcmX?inep0XM()$Ryj%=G(75U9M(!|fsWknJ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I#oW0Dd(P ARR910 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-312.pyc index 644f45091703b8b50a1b4a5e439b8cc1cba38912..7c54ad12cbfeb8eeb15aff293152970f613cd6c8 100644 GIT binary patch delta 52 zcmX@6dQO%5G%qg~0}wQBy1J2@jYTR=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|poR GVm<(<1`sv? delta 44 ycmX@7dQ6r3G%qg~0}vFwxw4U)jYTLY9nwOW00SFp5UERq2g;6R+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o{H GFE#+EYY@Hw delta 44 ycmbO%)Gfq)nwOW00SJoTT-nI|g;6L*KO;XkRX;tiLf<8|IJ+djV6!CCFE#)%JPx@4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-312.pyc index 311d6d75540d45d8fdcba0608279b83ded7e178f..90ccb434bbbe4728e2f4a6c23270288334dbdc78 100644 GIT binary patch delta 52 zcmcb?^MHr@G%qg~0}wQBy1J3ul2IyIKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%AO G6Dt6!><`-j delta 44 ycmaFBbAyNbG%qg~0}vFwxw4Vll2IsHKO;XkRX;tiLf<8|IJ+djU~?QJ6Dt5UEe+NH diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-312.pyc index dcf8a3819acc064a458c2b2b42a94dafc814eb5d..d767425e9089864bf473ab1175f38c9c33017a8e 100644 GIT binary patch delta 52 zcmdnNeSn+$G%qg~0}wQBy1J3uh*2s&CAQh00fPju5RR>#3+@hpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0S+_ GRb~K}tPrvQ delta 44 ycmeC-ZsF!W&CAQh00c#Eu59F<#3&T0pOK%Ns-K=$q3@DfoL!P%uz5SIGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|q1_ GEE537dl3Kt delta 44 ycmcbZe=?u@G%qg~0}vFwxw4U4h*>CFKO;XkRX;tiLf<8|IJ+djV6!>%EE51tqz?N4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-312.pyc index a7859cd9d3f0eb84fb0c8b865b2b30dedef3f5f3..1ceb82f79fb9c1ccf67ff7754665270cee04646e 100644 GIT binary patch delta 52 zcmX@0eL|c2G%qg~0}wQBy1J3Oj!7y>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dC* GRbc?Q4-lmQ delta 44 ycmX@1eL$Q0G%qg~0}vFwxw4VFj!7s=KO;XkRX;tiLf<8|IJ+djVDn-oRbc=>xDKEI diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-312.pyc index b18912d008c4f641fabb172e02f1ba556b8b3d4c..c70ab44f0c790840192893689285d26ce1fb89c6 100644 GIT binary patch delta 52 zcmbOwvPgvcG%qg~0}wQBy1J43E|XM-enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=1H G3hV%`tq|S- delta 44 ycmZ1^GE0Q}G%qg~0}vFwxw4V_E|XA#enx(7s(yN2g}zH_adt_5!Dc3A1$F>40S(#! diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-312.pyc index b691cf67451cc00240c2388a17430cbf6bb1f682..dc419429c0fa6b5dcbc9cdd66f1442e6daf96a43 100644 GIT binary patch delta 52 zcmeyH(3;47nwOW00SFp5UERq2iAgF+KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX)`}_ Go-P2|DG^ox delta 44 ycmZoo{F}ginwOW00SJoTT-nI|iAg9*KO;XkRX;tiLf<8|IJ+djV6!-Lo-P1d3=dHN diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc index f169f73edf796875448e8af3cb9e32d811e5d550..de4c030cb08e66c901eecfc825ece9e8eaf531a3 100644 GIT binary patch delta 49 zcmZo*?qKFV&CAQh00fPju1@5>EtRaFk)NBYpPpBt?~+=aU6Nm*@9r0&8}8~f@ka*$ Dap@46 delta 41 vcmeBRZeZp<&CAQh00c#Eu1w^3J3UE~&-YCHV#V?tT%v;jT`b J_plVF008}x61V^W delta 46 zcmdmfiE;fUM()$Ryj%=GQ1s@?M(+76LQ(n|`MIh3>3J3UE~&-YCHV!LkFXS{004Ts B5VHUP diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc index b3b8599f7f1b952b0a9271ba98acc5cb0473b77e..2f55b9000c7e33a3e9883141a0b4c47343f0fcb3 100644 GIT binary patch delta 52 zcmX>icSer;G%qg~0}wQBy1J2j9lKPVenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^Cc GmFxh#hY>*l delta 44 ycmX>jcSMf+G%qg~0}vFwxw4Ua9lKDNenx(7s(yN2g}zH_adt_5!RE{CmFxgRI1fAk diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc index e2cfca3e65bdb39eea9b41af931b0812e22ef997..9b14f7a4149017de121a933bff23b668ddee042b 100644 GIT binary patch delta 49 zcmaFI^o@!8G%qg~0}wQBx;l}2w^X8jMt*LpetKSozDsIxc1eDLzPn$9Zn&${#2eE9 DmVXgI delta 41 vcmeyy^p1)9G%qg~0}vFwxiXP^w@{>hMt*LpetKSozDsIxc1eE0#0S#=Am|S} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc index 39cad5580431a477a1c1f891d381a3f711e94421..4fa1d97d20c87566225578d34d339caf95811e9a 100644 GIT binary patch delta 51 zcmaFG@`;7}G%qg~0}wQBy1J2jIipmDenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8r$J F%K)!C5l;XB delta 43 xcmeyw@`{D~G%qg~0}vFwxw4UaIipa5enx(7s(yN2g}zH_adt_5!Q?ZH%K$e?4@v+4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc index 867bf478ff9436112f5006cdecf4e5354568d015..e712f6fa4796672c2158da208dbe9d990ea9cea1 100644 GIT binary patch delta 52 zcmdm5y|r4-7i8n+|_Aw I6Wn+a delta 46 zcmbQk>qk^3|+FBbz46ur5!kvo-7C{8~kKQ~oBJ+DIFCAB!aB)?#D7vB^k08x?; AbN~PV diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc index 5a798c14b4288bd85cddc24328b0cf34111ce449..a72eee7e4a62dfee68ae650229b06a52b9ec8bde 100644 GIT binary patch delta 52 zcmZ23xL%O^G%qg~0}wQBy1J43EVERGenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<#q GdszUnsu6Ag delta 44 ycmZ24xLlC?G%qg~0}vFwxw4V_EVEF8enx(7s(yN2g}zH_adt_5!RAlQdszTE(+_C? diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc index 483a1933a21f0db18facd2b27652fdaadeb2a230..b57bd7f71f0fb7852f44061036e9e2a62e5c1e6c 100644 GIT binary patch delta 52 zcmX@jahZerG%qg~0}wQBy1J3uh)F6>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|q4m GA4UMCjS#K? delta 44 ycmcc2ahiksG%qg~0}vFwxw4Vlh)F0-KO;XkRX;tiLf<8|IJ+djU~@RrA4UK%whpNP diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc index 734c2e9a59cc7c955d1fc2bdc56421d641b8a131..d1f239cb3016085770bf9418235c57b11375620e 100644 GIT binary patch delta 52 zcmbPKIjfTUG%qg~0}wQBy1J3ugHtL)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%&4 Gt}y_<6%e%m delta 44 ycmbPLIjNHSG%qg~0}vFwxw4VlgHtF$KO;XkRX;tiLf<8|IJ+djU~?{~t}y^b1`erbybS{G%qg~0}wQBy1J2DozM_70BJD~ Ay8r+H diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc index a9be45b5e4f9592ccfc76f160db940e1f82d7570..8b45d751c7727e963189d623286bbee333e2cd28 100644 GIT binary patch delta 54 zcmcaLhw0HAChpU`yj%=G(75U9M(#)sscij>{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IWgJgh0rDmiy8r+H delta 46 zcmaDfhw0WFChpU`yj%=GQ1s@?M(#)sp=AAx{M=Oi^t=jvm(=3ylKg_rbsSGx0dcnw Awg3PC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc index f0459f80ee52d68906d80e80eb7f8c1eb4d56f49..b853cf35dede98384d2c9c1893531718a8f24492 100644 GIT binary patch delta 52 zcmdm*xi^#hG%qg~0}wQBy1J3ufki4^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%+~ GgaH7=7ZB(G delta 44 ycmdm+xiypfG%qg~0}vFwxw4Vlfkh}@KO;XkRX;tiLf<8|IJ+djU~?)SAQujSwFI diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc index cd650db9cebe5c5c0eb1defdf1d8f69a0a500abd..28d95e423974c8dc5aaae73b30140e793c4528d4 100644 GIT binary patch delta 52 zcmdlaze}F`G%qg~0}wQBy1J1&l}Rd9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>${k G0WScmf)Gal delta 44 ycmdlbze%3^G%qg~0}vFwxw4Tvl}RX8KO;XkRX;tiLf<8|IJ+djU~?Cf0WSbFdk#VX diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc index 3967023f03e236dd39af48ee0f44831abde5f80b..346926d2f3585574a8346f287ad19673f1081299 100644 GIT binary patch delta 54 zcmX@Gi1EZCM()$Ryj%=G(75U9M($K@sSN#${M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IP2Brj0qV>WMgRZ+ delta 46 zcmX@Hi1EN8M()$Ryj%=GQ1s@?M($K@p#=Sm{M=Oi^t=jvm(=3ylKg_rUEKRz0c%YV AK>z>% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc index f828502264c9178b02ce0800d24be44bd64a609a..53c93edfcb32f4f5b77a30fe041acca2b74775b3 100644 GIT binary patch delta 52 zcmexo(PqhgnwOW00SFp5UERpd!X}lXpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v{{iY GRtx~FEf5U= delta 44 ycmZp({Aa;^nwOW00SJoTT-nIY!X^}>pOK%Ns-K=$q3@DfoL!P%uvwEWRtx|&zzzri diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc index 210ff9393578683e6192cb9c1e2ae503f83b2ec8..0aa2287acd503f1d989e4fe91b6fc452c307005e 100644 GIT binary patch delta 54 zcmdnc$+V-BiTgA!FBbz4G;X@Ok(+}>DpfxtKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IDob|*0LwrTGXMYp delta 46 zcmdnd$+V%9iTgA!FBbz46ur5!k(+}>C{{lsKQ~oBJ+DIFCAB!aB)?#@E=zX<08x1l AE&u=k diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc index 8a9b6d4fd50fe5402e79cd769caa667345fd19d8..e5f4d6d63e9665cd86cc65e6148b9b437f01a4b2 100644 GIT binary patch delta 49 zcmX@cc#e_#G%qg~0}wQBx;l~DSSnXPBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7)H DcGVBc delta 41 vcmX@dc#M(zG%qg~0}vFwxiXR4SSVFLBR@A)KRvHP-zBv;yClD0Vni7L2d)jp diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc index dafff2085d2ad3bc016552bef7edf343d40c788c..74d104f0f0480c642dd512ae46b545eab9c3747b 100644 GIT binary patch delta 52 zcmdnNcYu%kG%qg~0}wQBy1J2Dlu@c&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oX{ G8yf(e5f5+x delta 44 ycmX@Ww}X%SG%qg~0}vFwxw4U4lu;;OKO;XkRX;tiLf<8|IJ+djV6zn?8yf&9vJGnh diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc index 3b82f3783e205a791ab70707b9272f19a5073ab4..7640e1b104f68b4d0bfe3a9ddaeb5c5ec2b5e04b 100644 GIT binary patch delta 52 zcmZ1zwIz!CG%qg~0}wQBy1J1&iBl?1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&d2 GT4eyi+Ywa& delta 44 ycmdlIwI+)DG%qg~0}vFwxw4TviBl*|KO;XkRX;tiLf<8|IJ+djU~@a?T4ex891lE8nG%qg~0}wQBy1J2Do=YlAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oNN Gv@ig={}4d{ delta 44 ycmca_b=`{lG%qg~0}vFwxw4U4o=Yf6KO;XkRX;tiLf<8|IJ+djV6zLCv@ifdzz#eB diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc index c6fdee48f1fd58cc24fbc2bcc46057a890fbd59e..5e6c9d6ec5a2487d9fccb49a7163f08a5067c239 100644 GIT binary patch delta 49 zcmcc4c%PB`G%qg~0}wQBx;l~DSgKAxBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn90p De=`sc delta 41 vcmcc5c%6~^G%qg~0}vFwxiXR4Sg1@tBR@A)KRvHP-zBv;yClD0VnjOt4s;F) diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc index 04175488843643fea4b2150ddc3d1e9f9dcfe50d..2beec55ee09b2f11e01f1ab414efe4b34d9cf4e4 100644 GIT binary patch delta 54 zcmbQ-!8p5vk^3|+FBbz4G;X@Ok$a-NRGofCer~FMdR~RTOKNd;Nq&L8yI+KExU19V Ib@Hhy0ND@`)Bpeg delta 46 zcmbQ;!8o~tk^3|+FBbz46ur5!k$a-NP?>&4er~FMdR~RTOKNd;Nq)iRZStuq09#QH A&j0`b diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc index 5c9620a32f0ced32ae04f194b75546ca21580ff8..ded2432a48adb9110eecc47942de5620d6190188 100644 GIT binary patch delta 52 zcmcaue6yJQG%qg~0}wQBy1J1&gGH)dKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%)! Gk0}7#>=Bg! delta 44 ycmcave6g7OG%qg~0}vFwxw4TvgGH!ZKO;XkRX;tiLf<8|IJ+djU~?~vk0}6My$_H8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc index 80e28d511dcdba40060b6b1cb76dfc260406f0bb..8ef05589e24096b60ff5b247747865a46f6d3b87 100644 GIT binary patch delta 49 zcmX@kc%G5_G%qg~0}wQBx;l~DSSn9HBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8_n DcT*3} delta 41 vcmX@lc$|^@G%qg~0}vFwxiXR4SSU?DBR@A)KRvHP-zBv;yClD0VnjIr2ow#; diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc index d87b908fc5f65f1276cb10e5febceb77d9a94f8a..b3c78250504e5e5a3fc214002f40fc672d3e8fc0 100644 GIT binary patch delta 54 zcmaEUi0SE B5qJOq diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc index f34ea7715d9207524c00f7090f7f481d46afe94c..2f31be06b09388e3b45191f6cebca2c7d973212f 100644 GIT binary patch delta 49 zcmcb}c$1O)G%qg~0}wQBx;l~DSgJxlBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8DR Dd_NEN delta 41 vcmcb~c#)C&G%qg~0}vFwxiXR4Sg1fhBR@A)KRvHP-zBv;yClD0VnibV3=j?R diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc index 0d3408be740df2cd5485ec607012257f1ce29dd7..e7fdc65caf4a81946e28df800a7f12c7e829f4dc 100644 GIT binary patch delta 52 zcmZ3;w~~+hG%qg~0}wQBy1J43E{jx!enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=0+ G>P!H!U=a2I delta 44 ycmZ3JQog diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc index ad8d98464214a49eefb685c18e29961f16513a72..79377d5eaa8071e98ffcba1df709f5553bd6d2b9 100644 GIT binary patch delta 51 zcmeyx(ZtDpnwOW00SFp5UERpNiCHR3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4UmI F)c~Nx5g7mg delta 43 xcmZqT{Kdh2nwOW00SJoTT-nIIiCHK~KO;XkRX;tiLf<8|IJ+djVDfe5)c`6K4-^0Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc index 5346ba8f976ebedf571098baa198519c008a34a3..6cc073688824d23c41e7d772046eaf6dd5057b07 100644 GIT binary patch delta 52 zcmbQDI!BfJG%qg~0}wQBy1J2Di&-j1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p@C GFFyd8T@T3s delta 44 ycmbQEIz^THG%qg~0}vFwxw4U4i&-c|KO;XkRX;tiLf<8|IJ+djV6#87FFyb#ZVki$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc index 03879559e70dcdc5ce687058204dc0d5291e18cc..8acf788d711ecea38de0c6c807589057a637646e 100644 GIT binary patch delta 52 zcmbQhGlPfwG%qg~0}wQBy1J2j6O&ZBenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_L` Gj?4g|P7r_q delta 44 ycmbQiGl7TuG%qg~0}vFwxw4Ua6O&N9enx(7s(yN2g}zH_adt_5!RG5sj?4fo9}ar} diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc index aa82025f026cd96a1dafc259af373cf80323e88d..a798f5a52650ad8ba737f7d7276572d283f941ad 100644 GIT binary patch delta 52 zcmX@Xb%BffG%qg~0}wQBy1J3Oicub%KlgG%qg~0}vFwxw4VFicu(DKO;XkRX;tiLf<8|IJ+djVDo&&jm!Wzdk*CQ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc index bfd46e12291f8e3a9a270eb1a42896a2e85d59a9..617c7ab3bcc6b50c5f7b9e53974335df4f5d64d0 100644 GIT binary patch delta 52 zcmcbva9@G@G%qg~0}wQBy1J439lKPfenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`IfC G9}WP^U=Ygy delta 44 ycmcbwa9x4>G%qg~0}vFwxw4V_9lKDXenx(7s(yN2g}zH_adt_5!De9&9}WOcX%5B! diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc index 02ede116054fae365f038ef4f9c9c562239953b5..4e14218e29b717da0909ea56deb4eaec954f973e 100644 GIT binary patch delta 52 zcmZ20zEzz2G%qg~0}wQBy1J2jCzDi`enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=bT G*Es;Qz!7`^ delta 44 ycmdlgzE+(3G%qg~0}vFwxw4UaCzDW;enx(7s(yN2g}zH_adt_5!RC8R*Es+?!4G!; diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc index c5bf0e00110196ea9f7ac2c8acb6b37533a3b1d2..5869e4c6d29593b39985680b84d0be61027aabcf 100644 GIT binary patch delta 54 zcmcb%lJVY3M()$Ryj%=G(75U9M(!XMsdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I`7G%H0P+(N{{R30 delta 46 zcmcb&lJVL~M()$Ryj%=GQ1s@?M(!XMp?Lj_{M=Oi^t=jvm(=3ylKg_r$={ GtPlXW+z_w; delta 44 ycmcbveqNpXG%qg~0}vFwxw4Tvlu;;0KO;XkRX;tiLf<8|IJ+djU~?5?tPlV|l@6-_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc index 230e9ef151fe814bf35e0c4bc1aec4eb39be524a..d80c553cc041911aafaaba4061538313af828fd4 100644 GIT binary patch delta 52 zcmbOdGAD%lG%qg~0}wQBy1J2Dl2s~CKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oyY GJrw||@DQ;8 delta 44 ycmbOeG9`rjG%qg~0}vFwxw4U4l2s^8KO;XkRX;tiLf<8|IJ+djV6z?TJrw{oc@C@q diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc index 25c2df8b9ad9ffa33a491117094d928af1b9e49b..15b674a11b3d9557a8a61f5a2cc34005f5f8659e 100644 GIT binary patch delta 52 zcmZn;?+)ia&CAQh00fPju5RR3=9kLU&&bbB)lbi>(055K&MwI>(0BKX&<%HW+U&sZ GECT?hVGtDn delta 44 ycmeAUZw}`^&CAQh00c#Eu59F1<`+uT&&bbB)lbi>(055K&MwI>*zCdYECT>BQVtLR diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc index 82705b5b198c76d41accd35945e86cd55bdce418..c48cb301c5d0fe7db0c0f25a6344152dc3418759 100644 GIT binary patch delta 52 zcmdm7y}O$GG%qg~0}wQBy1J432$xia< Gmy7`4dlHra delta 44 ycmdm8y}6qEG%qg~0}vFwxw4V_2$xW-enx(7s(yN2g}zH_adt_5!RD7-my7^lY!HzE diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc index ff513c38ff4af87c64c8baa6ca3c68df7687f056..141522e8d64413172cc831cdd2a4832225ad3e8b 100644 GIT binary patch delta 52 zcmdn2v|EY$G%qg~0}wQBy1J2jGow_Renx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-3| G$@~Dg3lSdx delta 44 ycmdn3v{{M!G%qg~0}vFwxw4UaGow(Penx(7s(yN2g}zH_adt_5!R8x`$@~C6R1X>e diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-312.pyc index 746c8c51b1ea9978ddc8d4e4377ed0318b93c435..15d08fbb29a9070d61414c8e32c1df1735310219 100644 GIT binary patch delta 52 zcmaDD`!bgMG%qg~0}wQBy1J2jDVtQ5enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<2L G@)`i(7!kMt delta 44 ycmaDE`!JUKG%qg~0}vFwxw4UaDVtD|enx(7s(yN2g}zH_adt_5!RAwJ@)`hO`46)I diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-312.pyc index 1d39a8964ad607375d75614686ce80ab45537b48..b8e2a91ac040c5831a0e8aa8ef12f4586506541d 100644 GIT binary patch delta 52 zcmca({=}U7G%qg~0}wQBy1J1&m0v1DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>${Q G6b}H$A`uY) delta 44 ycmaE2e#e~qG%qg~0}vFwxw4Tvm0u`9KO;XkRX;tiLf<8|IJ+djU~?CL6b}GQdk+i% diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-312.pyc index fa08261d10192fa27e207b539561dd341a4790e8..2f13bd8020e68905cc96b4bfa8a04cf0db41388a 100644 GIT binary patch delta 52 zcmeAcoh-_InwOW00SFp5UERoikx?p3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bbA Gxf}qfWDzI; delta 44 ycmbO%+AYd`nwOW00SJoTT-nHdkx?i~KO;XkRX;tiLf<8|IJ+djVDmS|xf}p7?GGaW diff --git a/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-312.pyc index ecdd29bdbc8d55c0328850d612b9d401cb785339..d6b64caadc0587e0a89f7dc8c9c53abb54e1d1c2 100644 GIT binary patch delta 52 zcmZ4NvD$|g-KO;XkRX;tiLf<8|IJ+djVDnsNFHQhOBo5gC diff --git a/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/__pycache__/__init__.cpython-312.pyc index 3e212738b04afbe6167ee084040da0c7cfcd2e98..068adad7b7ec8dae15f808239516f1c00e65a36e 100644 GIT binary patch delta 62 zcmccJ#`U<3i~BS$FBbz4{MvMNBljywsd)X2{M=Oi^t=jvm(=3ylKcXFcfSbTa95{h QcByuDDaP&WQcNM40I07M`Tzg` delta 54 zcmaFd#&x@mi~BS$FBbz4oPB#`Bljywp>X|-{M=Oi^t=jvm(=3ylKg^ZeyMhTDaP&m IQcNM401R{y=l}o! diff --git a/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/__init__.cpython-312.pyc index 262cd7b3b31f530be881631775aea0bebc9f74c4..1436528c3d50dab5c051b509ef7633289ff5302a 100644 GIT binary patch delta 49 zcmdnTc#M(zG%qg~0}%Y$baf)Pu~e#lMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DF{i DgXs_> delta 41 vcmX@cxQ~(hG%qg~0}z~jdu1ZGu~4jjMt*LpetKSozDsIxc1eE0#E3iq4vh{0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/test_find_distributions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/test_find_distributions.cpython-312.pyc index 72a3e8633ef6086421b4c2458a702c78073f7a50..2a6d28939f4054daa1020a071356fe08ed72ef73 100644 GIT binary patch delta 52 zcmcaD`B;+sG%qg~0}%Y$baf;5enzPh{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe}kXe43VoN<;_Qe43VoN<;_QM()$Ryj%=G@N3i6jof=!r1JGM@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= J-(z B5sUx; diff --git a/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/test_resources.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/test_resources.cpython-312.pyc index 70a10335247fc7a5f9d1df110c4361165164a3f8..8768ac578c38cfcf1a4a98742786ae791e682826 100644 GIT binary patch delta 54 zcmezOnW^my6ZdIeUM>b8__gWkM(%q|QrY?$`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Je={*}2LLW{6Z!xE delta 46 zcmZqs!u0Pm6ZdIeUM>b8IQ#a>M(%q|Ldp6W`MIh3>3J3UE~&-YCHV!LnVFfl0|1$Q B5ZM3# diff --git a/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/test_working_set.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/__pycache__/test_working_set.cpython-312.pyc index 40c397cdcafb918d256a0754da0f5935fdf00c41..9294cd060a0903749d0cf461584e91ad66f6978c 100644 GIT binary patch delta 52 zcmbOgv?z%CG%qg~0}%Y$baf-QFq2fSenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Eyv GS84#grV%Xw delta 44 ycmZ1!G%JYvG%qg~0}z~jdu1cHFq2TKenx(7s(yN2g}zH_adt_5!Db7lS84!2^A8IE diff --git a/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-312.pyc index 6b1e4367b5ac679b6f798c8ca118f12a8d068417..76f42b0c311035485a79573085e072b7b2e2b549 100644 GIT binary patch delta 49 zcmaFE^o5E0G%qg~0}%Y$baf*48mT({jQreG{q(#FeV5eY?2`NfeRsbI-Edc@i6<8W E0H`Vv!2kdN delta 41 wcmeyu^oEK1G%qg~0}z~jdu1Z`8lf`%jQreG{q(#FeV5eY?2`O~i5C|G04q)pp8x;= diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/__init__.cpython-312.pyc index 2d7bd15e752b93b2639e6a7c52ebc664e8ec6c1d..9ffc9aba9c4a035cbb4e59060037e21c9e43c0d7 100644 GIT binary patch delta 52 zcmaFD`-YeMG%qg~0}ym=y1J3OmPIN-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a== GFD3xID-g~A delta 44 ycmaFE`-GSKG%qg~0}#}`xw4VFmPIH+KO;XkRX;tiLf<8|IJ+djVDlmtFD3v(kq*oN diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/auto_suggest.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/auto_suggest.cpython-312.pyc index 1c836dfb42258690504003a30c4528edf4ba6cc7..d14b3e7db0c199a4f31a8a7c910cb1f2af343ef9 100644 GIT binary patch delta 52 zcmbR1xYUvRG%qg~0}ym=y1J1&k5wu~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&KL GkTd|YKoD^N delta 44 ycmZ4LIM3J3UE~&-YCHV#V?tT%v;jT{2 M+-%#q*%&o709J1jl>h($ delta 50 zcmdmUhh@th7Vgu$yj%=GQ1|A_M(%g4LSgzD`MIh3>3J3UE~&-YCHV!-!fe}x*%&o7 E0LVTNn*aa+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/cache.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/cache.cpython-312.pyc index 23909cc141adbdb2e2e83d67e9c4fb10f1e4752b..b87ec3942b36d22be60f796029f3f390c2ce9830 100644 GIT binary patch delta 52 zcmaE(@kN9CG%qg~0}ym=y1J1&omnbYKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$wn G3jqMfY!QzD delta 44 ycmeyO@kWFDG%qg~0}#}`xw4TvomnVUKO;XkRX;tiLf<8|IJ+djU~>=i3jqL4au1CF diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/cursor_shapes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/cursor_shapes.cpython-312.pyc index bf498dbf6d36f01cd3f7e63094c7465dfe9204f9..781145069a8c26b396184c8bc81d7100733d1693 100644 GIT binary patch delta 52 zcmdm?azKUqG%qg~0}ym=y1J2Do>?kYKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oOU GA3gx5k`So? delta 44 ycmX@0vO|UYG%qg~0}#}`xw4U4o>?eXKO;XkRX;tiLf<8|IJ+djV6zMJA3gvx7!IcZ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/data_structures.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/data_structures.cpython-312.pyc index 5e336b98af8e64f10c61e9148f170c5b070f9bca..b0a4a4bcf0a7a76f8120dba3b08d8de37cde33d3 100644 GIT binary patch delta 52 zcmcc5`ka;fG%qg~0}ym=y1J2Dk5MXJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p%u G6h;87QxISP delta 44 ycmaFPdY_g1G%qg~0}#}`xw4U4k5MRIKO;XkRX;tiLf<8|IJ+djU~@3z6h;6x;SOE^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/document.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/document.cpython-312.pyc index 7c4da9c8eaa09dacfc828991d6b54b181ee52cfc..32e5bb2f8860abc9517011e77c0b171f82760ce9 100644 GIT binary patch delta 54 zcmcchmFdw}ChpU`yj%=G(6#C6Ms9CbsRaFu{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I8LUNH0TS912LJ#7 delta 46 zcmaF#mFd=3ChpU`yj%=GQ1|A_Ms9Cbp$Pqq{M=Oi^t=jvm(=3ylKg_r1*}C|0gb^C A1poj5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/enums.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/enums.cpython-312.pyc index 59689d56ef45a2410381cd68790ed255fde09bd1..16743e29fd36ccb5f3afdb9ca8e9bac113a50ec4 100644 GIT binary patch delta 51 zcmdnba-4$w9 GH9Y{>)Diap delta 44 ycmaEqb}NnhG%qg~0}#}`xw4Tvokb{IKO;XkRX;tiLf<8|IJ+djU~>=4H9Y`a0uS{7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/keys.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/keys.cpython-312.pyc index 37ab19b12768dd751414902c93328efe6839853f..6deb664e358452c994c549761fe7b8a54f721b19 100644 GIT binary patch delta 52 zcmX@Ac~+DAG%qg~0}ym=y1J3Om0v1GKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aj} GWmW*Zwh+bu delta 44 ycmX@Bc~q18G%qg~0}#}`xw4VFm0u`CKO;XkRX;tiLf<8|IJ+djVDl<|WmW(~)DFY| diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/log.cpython-312.pyc index 5b939ecfd22725e211a9228f92d4375f496588ee..7af4eea7ea86f7497a0ba9076d9af1f050e2a22e 100644 GIT binary patch delta 50 zcmbQwyquZ)G%qg~0}ym=x;l~jqg1qhMt*LpetKSozDsIxc1eDLzPn$9Zn&${WIo1; E0FFx#5dZ)H delta 42 wcmZ3^JfE5SG%qg~0}#}`xiXRaqfoGZMt*LpetKSozDsIxc1eE0WHH8x02&?+4*&oF diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/mouse_events.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/mouse_events.cpython-312.pyc index d89ecef794876962c1a1af3e47a5f48f0907271f..000dca6877568280107d0b5140d326d70c99aff8 100644 GIT binary patch delta 52 zcmca8c2kV|G%qg~0}ym=y1J1&pG7J~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$+D GQ8oa#e-R-7 delta 44 ycmca9c2SJ`G%qg~0}#}`xw4TvpG7D}KO;XkRX;tiLf<8|IJ+djVDl7~qig^_)ej#4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/patch_stdout.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/patch_stdout.cpython-312.pyc index e74d81e0cbb6b78f39b5b8dc9def93b3e40fe899..ba40f2248754ed3fb30398ad8b3b3fcc1ba925a8 100644 GIT binary patch delta 52 zcmaDK{XLrdG%qg~0}ym=y1J2@kwYp)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o*1 GMO6UK+7Uhg delta 44 ycmew!{XUxeG%qg~0}#}`xw4U)kwYj(KO;XkRX;tiLf<8|IJ+djV6z&>MO6S)P!Bu+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/renderer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/renderer.cpython-312.pyc index 093ee3fb7b5eabb83927ff21235b34fcb775f0d4..c35c733d9afded7a44f66d4c17a980fb54bdab05 100644 GIT binary patch delta 54 zcmaFzjPcDgM()$Ryj%=G(6#C6Ms8PrsRaFu{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IN&HMH01w#`LI3~& delta 46 zcmaF!jPc1cM()$Ryj%=GQ1|A_Ms8Prp$Pqq{M=Oi^t=jvm(=3ylKg_rS^P{X0E+++ AKmY&$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/search.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/search.cpython-312.pyc index 8b4b7725d8d95cb2c4c6b2b64e6a677da73c9494..ffb7f6f74b7a40276945e7ba5a9a520f275ebcb7 100644 GIT binary patch delta 52 zcmdmLv)6|EG%qg~0}ym=y1J3ugIOw0KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%&` G1t|cuu@L?M delta 44 ycmdmMv(<+CG%qg~0}#}`xw4VlgIOp{KO;XkRX;tiLf<8|IJ+djU~?|>1t|bM*ADyu diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/selection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/selection.cpython-312.pyc index 1c5119812483df1950455e7ae8c8f5a5edb56dd7..c30a706964cb70f899efd50df12c454eeab4b455 100644 GIT binary patch delta 52 zcmZ20uvLKjG%qg~0}ym=y1J2jGow_Zenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-3| Gv1|aZP7ve( delta 44 ycmdlguvUQkG%qg~0}#}`xw4UaGow(Xenx(7s(yN2g}zH_adt_5!R8x`v1|Z1R1V?* diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/token.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/token.cpython-312.pyc index 829c223cc15e8ff5ef32b69bf246a64455fceea5..6c2dc75708c5ea96ee6c80bd08859a3bf3ed1573 100644 GIT binary patch delta 49 zcmX@fbdibsG%qg~0}ym=x;l}2tyHXjMt*LpetKSozDsIxc1eDLzPn$9Zn&${#8dSE Dhl&u$ delta 41 vcmcb}bdrhtG%qg~0}#}`xiXP^tx%|bMt*LpetKSozDsIxc1eE0#7p%66yFZU diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/utils.cpython-312.pyc index 81f614c3e9d41cc6ba68f25b7dbc19542c21ca68..ee4d64348a1820f6be22163dee698f01eb715729 100644 GIT binary patch delta 52 zcmX>XaV>)TG%qg~0}ym=y1J2@i%lw4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p<; Gx*7n#Y7kTa delta 44 ycmcZ>aV~=UG%qg~0}#}`xw4U)i%lq0KO;XkRX;tiLf<8|IJ+djV6#4(x*7mSAP!Oh diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/validation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/validation.cpython-312.pyc index 7e488234f7b3273a203d3bb3b056fbd6d081dbe2..d4f7c2fd87b190a17b14a30c1d06e65b3861155d 100644 GIT binary patch delta 52 zcmccV`p}j8G%qg~0}ym=y1J2@iA5?&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p`b GE;#_ap%B0T delta 44 ycmaFpdefErG%qg~0}#}`xw4U)iA5+%KO;XkRX;tiLf<8|IJ+djV6!^QE;#^1{|>$Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/win32_types.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/__pycache__/win32_types.cpython-312.pyc index c3060366469e8f15b5250b285f111ec09d23d941..c49db595b278493373aa34dd92d388cfaec4e7aa 100644 GIT binary patch delta 52 zcmZp*=(XTJ&CAQh00do|u5RRRWRXhN&&bbB)lbi>(055K&MwI>(0BKX&<%HW+B}aX GT^s(055K&MwI>*u0D-T^s;1&kmsg diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/__init__.cpython-312.pyc index ef36b383885f76146fced40aaa349194cca83962..aaf0eda646028de3f2e3d0adaed2bd23dce1fb7b 100644 GIT binary patch delta 51 zcmdnPdW4nxG%qg~0}ym=y1J2@jY%p;KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|giY FOaO@F548XQ delta 43 xcmX@Yx`&nfG%qg~0}#}`xw4U)jY%j)KO;XkRX;tiLf<8|IJ+djV6ryTOaK_P4YL3M diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/application.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/application.cpython-312.pyc index 742834794a57957d0a674c85d95083c375d2ea1e..c4286048bd3caca360c51f9cefb6b0ccda07be4c 100644 GIT binary patch delta 54 zcmcaHiRHm07Vgu$yj%=G(6#C6M(!+mseJv6{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J?eZ620s!^%6IB2J delta 46 zcmaDbiRH#57Vgu$yj%=GQ1|A_M(!+mp>+L>{M=Oi^t=jvm(=3ylKg_r{qh%I0swT` B5mNvF diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/current.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/current.cpython-312.pyc index 5d697090d84402c6ed64596fa3a66bf7bf40054c..6594be7228145a26cb9ebd74905ee5708ceb3edf 100644 GIT binary patch delta 52 zcmexl{>z;EG%qg~0}ym=y1J1&n^h`XKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$i_ GmKXrhND*5A delta 44 ycmexm{>hyCG%qg~0}#}`xw4Tvn^h=TKO;XkRX;tiLf<8|IJ+djVDkjlEHMC8UJqFS diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/dummy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/dummy.cpython-312.pyc index ed50fc1a1f4cda3b16c401b402c1cdf379662399..519b02f1ece4104469105ed94ef29831d00db26b 100644 GIT binary patch delta 52 zcmcaEdS8_LG%qg~0}ym=y1J2DoLMSUKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oCQ GVs-$mqYzyH delta 44 ycmcaFdR>(JG%qg~0}#}`xw4U4oLMMQKO;XkRX;tiLf<8|IJ+djV6zSLVs-#GNe){8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/run_in_terminal.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/application/__pycache__/run_in_terminal.cpython-312.pyc index 4146de98108d5d5966a1e1db96ac2b09296a3007..00cfeff269676793db1c6a13c936784542e13348 100644 GIT binary patch delta 52 zcmdn3aae=tH# F8vvLq5GViu delta 43 xcmcb|e2tm=G%qg~0}#}`xw4Vlm{BN6KO;XkRX;tiLf<8|IJ+djU~&Xw8vrFM4kiEq diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/clipboard/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/clipboard/__pycache__/base.cpython-312.pyc index 049946308576ddade9c34dc32da670d20b32740b..4c50788ea91c9aba0a1ea589d72fdb1b9986ea92 100644 GIT binary patch delta 52 zcmX@EdR~?LG%qg~0}ym=y1J2j6O&Y$enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_L` GKllN|wh`+9 delta 44 ycmX@FdR&$JG%qg~0}#}`xw4Ua6O&M!enx(7s(yN2g}zH_adt_5!RG5sKllMjqz~x; diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/clipboard/__pycache__/in_memory.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/clipboard/__pycache__/in_memory.cpython-312.pyc index 4a90f8ca12c06e1ad5dabe43368c81b2c1efa114..4f738c7ed39010ae78eb3dd616c455e71ca6a99f 100644 GIT binary patch delta 52 zcmZn`>=xuc&CAQh00do|u5RQGWs=I)&&bbB)lbi>(055K&MwI>(0BKX&<%HW+FZmW G$OZtB#1EDL delta 44 ycmeAcY!>7`&CAQh00eb!u59EEWfDr(&&bbB)lbi>(055K&MwI>*j&XV$OZr(@(q*# diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/clipboard/__pycache__/pyperclip.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/clipboard/__pycache__/pyperclip.cpython-312.pyc index dd7ee75a50331775c63ce5ff1a0d12458bfbdd87..aab89cca9defa8e01c2b3f85b00d62f600e4410d 100644 GIT binary patch delta 52 zcmX@hdzF{_G%qg~0}ym=y1J430;5#6enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@B~ G4_E-fY7yfA delta 44 ycmcc0dzP2`G%qg~0}#}`xw4V_0;5o}enx(7s(yN2g}zH_adt_5!RD`w4_E+4Xb<54 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/__init__.cpython-312.pyc index 9f7bbfe92bbbd98302bff86c43cd9c46cbe9d9d1..4ea2b0c55f4f3c858fb3d48b2196fa8e380c8792 100644 GIT binary patch delta 51 zcmdnWzL%Z*G%qg~0}ym=y1J437n4-Benx(7s(yN2g}zH_adt_5fxf$6gl@R2(`0ex Fc>ty*5SRb} delta 43 xcmdnXzLlN(G%qg~0}#}`xw4V_7n4x3enx(7s(yN2g}zH_adt_5!DM;nc>pf04we7_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/base.cpython-312.pyc index 3068cea8b1739c5051c5799004e8bb682cabf08e..82f3eb2ac0728ce13d0cd72d984ef2dfa1f29d60 100644 GIT binary patch delta 54 zcmbO}iE;iUM()$Ryj%=G(6#C6Ms80IsdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IX&f6J0MHl_i~s-t delta 46 zcmbO~iE;WQM()$Ryj%=GQ1|A_Ms80Ip?Lj_{M=Oi^t=jvm(=3ylKg_rc^n%Z098H@ AiU0rr diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/deduplicate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/deduplicate.cpython-312.pyc index 7f0bd8c6bb3a4e0a36a3e00076d53e4c8b6f29d9..c6f2f6d74b7d3749881ac7ef58a4c2b3c68a4feb 100644 GIT binary patch delta 52 zcmZ3^zn-7_G%qg~0}ym=y1J3OfJrJ(KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%`= G6e|Fu#1I<* delta 44 ycmZ3_znq`@G%qg~0}#}`xw4VFfJrD#KO;XkRX;tiLf<8|IJ+djVDnTaDOLb3;tm-A diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/filesystem.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/filesystem.cpython-312.pyc index fb9b8b8ba94c62d3cab4ddcc410698934ae80174..b407797b9817f46089e5c547d40b4283b94edd6d 100644 GIT binary patch delta 52 zcmdm?bwG>zG%qg~0}ym=y1J2Do<%BGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oN> G9{~WX2oS*l delta 44 ycmX@0wL^>hG%qg~0}#}`xw4U4o<%5CKO;XkRX;tiLf<8|IJ+djV6zL$9{~V0<_^CA diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/fuzzy_completer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/fuzzy_completer.cpython-312.pyc index 35af7f8ba58584843028c9e7b5e241af27068a5e..2d7ee5a119d5d11b3d2cfef27010e0fb55a02604 100644 GIT binary patch delta 52 zcmeD1p5V=WnwOW00SLM_UERn%kwdCTKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bXc GTQUH)s}X(x delta 44 ycmbQ>-QmrBnwOW00SM~eT-nGykwYj;KO;XkRX;tiLf<8|IJ+djVDmPPTQUGXp$~ij diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/nested.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/nested.cpython-312.pyc index 79354843ab0fabcfbe70f316159ea992d3d250c7..101d1ff6bc5f941075872af645494b49fd40f3ef 100644 GIT binary patch delta 52 zcmcbjdPkM}G%qg~0}ym=y1J2@heaw=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pEF GYCZt4N)U1Y delta 44 ycmcbkdPSA{G%qg~0}#}`xw4U)heaq+KO;XkRX;tiLf<8|IJ+djV6!31YCZrua1L+) diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/word_completer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/completion/__pycache__/word_completer.cpython-312.pyc index 6789dff00301bf433df459a64186b45ce97214fb..9400fcb4859b9b6126810a5eaa05aadd6cbbb0b5 100644 GIT binary patch delta 52 zcmZ3cxK5G#G%qg~0}ym=y1J43A)8d8enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>C{ GD>wnYIT5@7 delta 44 ycmZ3dxJ;4zG%qg~0}#}`xw4V_A)8R9enx(7s(yN2g}zH_adt_5!Dcr06`TM+iVnK~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/__pycache__/__init__.cpython-312.pyc index 14b0498d9bf597ec36c4bc3afc280f86ebeb4768..d2bdf09ac463d36f222dfd73fe71cc5bf7db6716 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym=x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db)yfz delta 41 vcmX@fc#x6%G%qg~0}#}`xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2LKJd diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/completers/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/completers/__pycache__/__init__.cpython-312.pyc index b1ee96412a9ee1b4e183ae3b2333e59492777530..4a729443c0cbce56a0f8b0af445981332c233b7e 100644 GIT binary patch delta 49 zcmX@hbd`zwG%qg~0}ym=x;l}2nN+cUMt*LpetKSozDsIxc1eDLzPn$9Zn&${#KT7fBA` diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/completers/__pycache__/system.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/completers/__pycache__/system.cpython-312.pyc index 4735916e32b3619a0d0ea882085ed2f9f1d238e8..34a3b41220520f1fe0e350c930c4e88b58ae40f5 100644 GIT binary patch delta 52 zcmew%(jdxxnwOW00SLM_UERpt!y;9vpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0R}V Gc~$_kW)VC9 delta 44 ycmZn={UO4AnwOW00SM~eT-nIo!y=TapOK%Ns-K=$q3@DfoL!P%uz4fPc~$^B77scA diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/__init__.cpython-312.pyc index bf63a30409506b6864e579a2e3b64839dfcac06c..7f22ae34425a07b44f74ea50baf72a1c36722d6a 100644 GIT binary patch delta 51 zcmcaAeOH?MG%qg~0}ym=y1J2Do>!_$KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fIP FOaP&>5NQAa delta 43 xcmcaBeN~$KG%qg~0}#}`xw4U4o>!3J3UE~&-YCHV#V?tT%v;jT`b J*YgO30{{YQ5@`Sc delta 46 zcmX?poN@ngM()$Ryj%=GQ1|A_M(#;GLPh!+`MIh3>3J3UE~&-YCHV!LxAO>u0|0)p B5N7}Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/completion.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/completion.cpython-312.pyc index 455eb1773a8d59c5005095c2521357e8c77ae142..82ffc94cc70e1f7a2f7d2e4608b18b05ae0f022b 100644 GIT binary patch delta 52 zcmbQJJX4wbG%qg~0}ym=y1J3OpINF#KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aN9 Gr@R2F-Vrze delta 44 ycmbQKJW-kZG%qg~0}#}`xw4VFpIN9xKO;XkRX;tiLf<8|IJ+djVDlE{r@R0(tPeH- diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/lexer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/lexer.cpython-312.pyc index 52996d7c43aba8063d43ba38ac3e45c44f29803d..bc0b1321f4ebc4af0a562f665705a3384ca88a33 100644 GIT binary patch delta 52 zcmZ3av`UHlG%qg~0}ym=y1J2DnN_M>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n_C GBW?ho-4J>J delta 44 ycmZ3bv`C5jG%qg~0}#}`xw4U4nN=uXKO;XkRX;tiLf<8|IJ+djV6zA7BW?gKBMx`~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/regex_parser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/regex_parser.cpython-312.pyc index 1f4619d99c4778c7f68e645eb21964848f320d18..b7a16db4c04e4895cca704c04401c3d7daee1274 100644 GIT binary patch delta 52 zcmcZ}em|W1G%qg~0}ym=y1J436th&Fenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^;Q GAJhTlLK4XU delta 44 ycmcZ~em$J~G%qg~0}#}`xw4V_6ths7enx(7s(yN2g}zH_adt_5!RGhOAJhS4h!DpB diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/validation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/regular_languages/__pycache__/validation.cpython-312.pyc index 277370d8e79f73de20dce946be2d304eab63cccd..34a58420441417662cc275e14650dfea1d154530 100644 GIT binary patch delta 52 zcmbOsvOt9UG%qg~0}ym=y1J2Dn^~$xKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o6O G1vUVf!w^IO delta 44 ycmZ1=GDC#>G%qg~0}#}`xw4U4n^~wtKO;XkRX;tiLf<8|IJ+djU~>TT1vUUCF%Cii diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/ssh/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/ssh/__pycache__/__init__.cpython-312.pyc index fb827596e27df78df41bce1c31f19917cbdf0fa5..3b37af49c77a3236d90d5abad34e2effde173eb5 100644 GIT binary patch delta 49 zcmey%)XL0#nwOW00SLM_U7g5%O)5t}BR@A)KRvHP-zBv;yClCr-`y`lH{8`};^!^^ DioX#Z delta 41 vcmZo={>#LDnwOW00SM~eT$#vyO(;b_BR@A)KRvHP-zBv;yClD0;_og177h;^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/ssh/__pycache__/server.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/ssh/__pycache__/server.cpython-312.pyc index 373aadb61788feccd8ea1f3782c6f12bf1456bab..58e36ea4aaa3334caa7aa05623125bb377f2f455 100644 GIT binary patch delta 52 zcmccSe$SozG%qg~0}ym=y1J2DhE*y{KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pBk GTsZ*1^$_0x delta 44 ycmccTe$AcxG%qg~0}#}`xw4U4hE*s@KO;XkRX;tiLf<8|IJ+djV6!9ZTsZ(pOAg%t diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/telnet/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/telnet/__pycache__/__init__.cpython-312.pyc index 21f2a11f7436d00268b27de723cc8c434863cddc..5cabeafad4dbf8bf1ad03baf777f8a9a6fd52bdf 100644 GIT binary patch delta 49 zcmX@bbcu=kG%qg~0}ym=x;l}2u~fc(Mt*LpetKSozDsIxc1eDLzPn$9Zn&${!~$*A Gq7(qpm=Rn6 delta 44 ycmexr{nncMG%qg~0}#}`xw4TvpIInfKO;XkRX;tiLf<8|IJ+djVDl8_L@5AOjt^P@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/telnet/__pycache__/server.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/contrib/telnet/__pycache__/server.cpython-312.pyc index 227c5a80e34982c6a44fcf44ab19ce1a66052960..b9900ce4fa4b4d9d73b993dc26f5ceecae0dcc17 100644 GIT binary patch delta 54 zcmZpk&)7Ymk^3|+FBbz4bZxr2k-ME)Dpx-vKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_CG I66X8f0M@_~F8}}l delta 46 zcmeC4&)7Vlk^3|+FBbz4)V;Z~k-ME)C{;frKQ~oBJ+DIFCAB!aB)?$u8s_`n09sxU AEdT%j diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/__init__.cpython-312.pyc index 375802b67ab95ec183ae07a5477efffd8740aae4..72a73c912723266b1414bf0582260a8d93c5de0f 100644 GIT binary patch delta 51 zcmcc3`k0mbG%qg~0}ym=y1J2Di%BX=KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g-h F6abme5HtV) delta 43 xcmaFNdYhH|G%qg~0}#}`xw4U4i%BR+KO;XkRX;tiLf<8|IJ+djV6s2c6aXfl4l)1$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/async_generator.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/async_generator.cpython-312.pyc index deb9ab36967a930af1f5ef0c2b50ccd3541bde24..3ccd9a168c09483361403e8cbae61b2662ca7fc8 100644 GIT binary patch delta 52 zcmZ3bxJi-wG%qg~0}ym=y1J2Dnpvt)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n}$ G5ibCsnGgT~ delta 44 ycmdm_xJr@xG%qg~0}#}`xw4U4npr4QKO;XkRX;tiLf<8|IJ+djV6y{r5ibBN?+yL{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/inputhook.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/inputhook.cpython-312.pyc index b27c9fb09fd539108dec45291f99bf01631be7c8..11d66ffda53b64abe4711b9e06c19997245d30f6 100644 GIT binary patch delta 52 zcmZ2zz0#WdG%qg~0}ym=y1J1&g%jH Gf*1g?JP>UF delta 44 ycmZ2!z0jKbG%qg~0}#}`xw4Tvg%8I GKNkR_3=oI_ delta 44 ycmZ1|GgF59G%qg~0}#}`xw4Tvmsu!YKO;XkRX;tiLf<8|IJ+djVDlvAel7qmf)0iN diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/win32.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/eventloop/__pycache__/win32.cpython-312.pyc index f2dec277819e92097a4370b70f85f2bcead98460..9d62e4939dc9fbb59855bc0aa677adb0dcdb69bd 100644 GIT binary patch delta 52 zcmbOsx_`}bAnwOW00SM~eT-nHN!!DGdpOK%Ns-K=$q3@DfoL!P%FgcNZF#sX14nzO| diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/app.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/app.cpython-312.pyc index faa564174db9c0b4f9026396b583063353baa377..2388914c6c798128087d51b78782958a733173bc 100644 GIT binary patch delta 52 zcmbPSJ-eFwG%qg~0}ym=y1J2jC%aU#enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=dJ Gdrbk+rxGs! delta 44 ycmbPTJ-M3uG%qg~0}#}`xw4UaC%aIzenx(7s(yN2g}zH_adt_5!RCAHdrbjVEf6gL diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/base.cpython-312.pyc index 991c74cd348f7f6b271aeb86142cfa16992346bc..6d406629e89e134ca0f875338c990ae0c2ec5287 100644 GIT binary patch delta 52 zcmdlKvMYr9G%qg~0}ym=y1J3ukXb54KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o^m G6Ey(3V-X+# delta 44 ycmdlLvMGf7G%qg~0}#}`xw4VlkXa~3KO;XkRX;tiLf<8|IJ+djU~?Gr6Ey%r!4Dn) diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/cli.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/cli.cpython-312.pyc index 413501a97f71611c16a8a15cd959889a2c0c770f..d7156f3174569cebdfc6b5e20e1a5e05eb6299d3 100644 GIT binary patch delta 52 zcmeB{oh-|JnwOW00SLM_UERoS&McLzpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^j*? GoErd?tq-RF delta 44 ycmbO%+bzp|nwOW00SM~eT-nHN&MXwIpOK%Ns-K=$q3@DfoL!P%usMd=oErcl!wsbX diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/filters/__pycache__/utils.cpython-312.pyc index f2e2c6eb3e700325d81815df76654894e0f6f85e..e4e4d3ee382c9597c9fb2892a72a321abd8c735c 100644 GIT binary patch delta 52 zcmZ3>wUvweG%qg~0}ym=y1J1&nMo>DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Y9 GS|$LZQV@y& delta 44 ycmdnWwU&$fG%qg~0}#}`xw4TvnMo*CKO;XkRX;tiLf<8|IJ+djU~>o4S|$K45Dtg{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/__init__.cpython-312.pyc index abdeb909362f8edf6d2bceef00fb8203d7a69013..4916c52675771964d34fbe7faea4baef15b3a69a 100644 GIT binary patch delta 51 zcmey&{hOQnG%qg~0}ym=y1J2DlT|8TKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fyZ FS^%bO5Rw1@ delta 43 xcmey({h6ElG%qg~0}#}`xw4U4lT|2PKO;XkRX;tiLf<8|IJ+djV6q?US^zO54v+u< diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/ansi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/ansi.cpython-312.pyc index 29793e3445c10305214cb3a6dba1ff549b8ecc40..f28c143b11ce0965b09b0cf3fcc437f986b0c29b 100644 GIT binary patch delta 52 zcmbQ_Gs}njG%qg~0}ym=y1J3OhD|D4KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c3B GN_hab4G{qV delta 44 ycmbQ`Gs%bhG%qg~0}#}`xw4VFhD|70KO;XkRX;tiLf<8|IJ+djVDmz@N_hZ2Lk|A{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/base.cpython-312.pyc index ed2fa594c2bb611631891b17b1ce67008ccde7a7..afd6180ff15b7a2299ede26571904332582442d3 100644 GIT binary patch delta 52 zcmdmFw9AP5G%qg~0}ym=y1J3Ogjp(EKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4b$p Gg`xnrPZ1RW delta 44 ycmdmGw8@D3G%qg~0}#}`xw4VFgjpzAKO;XkRX;tiLf<8|IJ+djVDn7og`xmIeGd}= diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/html.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/html.cpython-312.pyc index 0758bf5f93ee165422eb558fd3f362287093881c..1bb95993d9c0cae9d3694b2039918d4e81f45cf1 100644 GIT binary patch delta 52 zcmeCzo36)wnwOW00SLM_UERoija4dJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c}R G89@NGlMx00 delta 44 ycmbQP*RRKYnwOW00SM~eT-nHdja4XFKO;XkRX;tiLf<8|IJ+djVDoQQ89@L&5f20a diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/pygments.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/pygments.cpython-312.pyc index 3f0d15def548c2ec918946b500491d7641368e72..23c071aa7e6c8794d8d124daff31677892e8f5e7 100644 GIT binary patch delta 52 zcmZqW?&an_&CAQh00do|u5RRJWRl9)&&bbB)lbi>(055K&MwI>(0BKX&<%HW+APPE G&I|yAZsq1a&CAQh00eb!u59FHWD-i(&&bbB)lbi>(055K&MwI>*sR8s&I|w*(+xWS diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/formatted_text/__pycache__/utils.cpython-312.pyc index 9bff8b6f006758fc152feb8afcc0422c308374ee..25150b0e999d14a0b7c84ad97ffb565bea1d2ea1 100644 GIT binary patch delta 52 zcmdlezf+$3G%qg~0}ym=y1J434U<%kenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HWQ G6+8gFP!QVy delta 44 ycmdlfzfqq1G%qg~0}#}`xw4V_4Ur4-7i8n+|_Aw IgeI#D0PG$SY5)KL delta 46 zcmaFb#dx=ik^3|+FBbz4)V;Z~k=t5RC|f@xKQ~oBJ+DIFCAB!aB)?#Df+njB0Bmdz AXaE2J diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/base.cpython-312.pyc index f596b0999ef7d210adaf4f85819e22ecec0a2b26..40c6356dd1ab54b40cfb9dcbe1314bc61d124bdf 100644 GIT binary patch delta 52 zcmZqH>(=8w&CAQh00do|u5RQ$&McLrpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}3M Gyf6T*IuOVJ delta 44 ycmeCyYu4jF&CAQh00eb!u59E!&MXwApOK%Ns-K=$q3@DfoL!P%u=x$Myf6SZNDjsT diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/defaults.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/defaults.cpython-312.pyc index b3c32b3f3fd179e5b1244127f19a57917918339e..b48ff2ff9d00bef3d734d4d180fed31950079701 100644 GIT binary patch delta 52 zcmaDR@=k>NG%qg~0}ym=y1J1&kyR>9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Rx G3l;#qrx8#9 delta 44 ycmaDS@=S#LG%qg~0}#}`xw4TvkyR*8KO;XkRX;tiLf<8|IJ+djU~?Pm3l;!HB@a#j diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/posix_pipe.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/posix_pipe.cpython-312.pyc index 7959ba7f53f03964ef13270d7a590949cfa47f0f..acd8880629dafca68a29ba328327e9d61f64e1e4 100644 GIT binary patch delta 52 zcmZ3bvq^{hG%qg~0}ym=y1J43E|XM-enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=1H G2EqWp_z_b8 delta 44 ycmdm_vr32iG%qg~0}#}`xw4V_E|XA#enx(7s(yN2g}zH_adt_5!Dc3A17QF`;SN#& diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/posix_utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/posix_utils.cpython-312.pyc index 4c0ad4d9c1dcd0c419af72b6a078e81c994a1a89..fcbd7436bd46dcabe071909bc6a2cfc9f3ef5f60 100644 GIT binary patch delta 52 zcmZpc=$7C<&CAQh00do|u5RSM!YY-ipOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD}{e G5E}reiV&v& delta 44 ycmeB{XqMnU&CAQh00eb!u59GK!YY)gpOK%Ns-K=$q3@DfoL!P%u=yve5E}q7NDid{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/typeahead.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/typeahead.cpython-312.pyc index 5ac0ced4bae35ebb04029e757c1e3114392cc0d6..46037afd53aae408e0a304e97e001a0a3b482cea 100644 GIT binary patch delta 52 zcmZ24v0Z}uG%qg~0}ym=y1J1&jYBG3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&8j G8fE~h9T2_% delta 44 ycmdlkv0j4vG%qg~0}#}`xw4TvjYBA2KO;XkRX;tiLf<8|IJ+djU~@Oe8fE}AgATj^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/vt100.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/vt100.cpython-312.pyc index 74e8edf2a67f9d87fe5d193a2e61943a1864d783..6e64c724eba14fc7cf343d470969ae020e50b02b 100644 GIT binary patch delta 52 zcmZpU?~dm_&CAQh00do|u5RR>&MuX#pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0R5r Gd36B0VG)-A delta 44 ycmeBs@HG%qg~0}#}`xw4Ua60=Z}enx(7s(yN2g}zH_adt_5!RGDEYvlk}4-eY_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/win32.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/win32.cpython-312.pyc index d21c6aa0fdea2ac26142a7b80cf6506f95a91f3e..f876df951f1f4093ed8b36675e44b4fc60aa95fc 100644 GIT binary patch delta 54 zcmaDjnd#+ZChpU`yj%=G(6#C6M(&NQQpx%m`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J&#?-(008{X5|97@ delta 46 zcmaDknd#wVChpU`yj%=GQ1|A_M(&NQLecse`MIh3>3J3UE~&-YCHV!LudxcZ004R{ B5RL!< diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/win32_pipe.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/input/__pycache__/win32_pipe.cpython-312.pyc index 7d38f62328282b89306936a2616a0d04de2df8b0..afc66c6bd033f19477f6e0c10ab7861f7c345f17 100644 GIT binary patch delta 52 zcmZoS?KkB<&CAQh00do|u5RRZWs}O#&&bbB)lbi>(055K&MwI>(0BKX&<%HW+ML9u GDgpqXbr0(055K&MwI>*qp_tDgpp2n+@v# diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/__init__.cpython-312.pyc index 8c80b3b8dc887851c44070bc08e8466c1a4a7dcb..ee9bbd81356529eb3f6809dc0e89d86823366502 100644 GIT binary patch delta 51 zcmZ3-vW diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/digraphs.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/digraphs.cpython-312.pyc index 0c5c199ac7a038e29c5014c428a37f2d2cd65d89..20adea81962d2d3f581ad0be597ab2fa629beb7f 100644 GIT binary patch delta 53 zcmdn9i}}bdX71Cxyj%=G(6#C6M()SGQaSn=`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b H`fU6G1C|p9 delta 46 zcmX@Ii+Rs3X71Cxyj%=GQ1|A_M()SGLMi$g`MIh3>3J3UE~&-YCHV!LIr?n;0gR9l A1^@s6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/emacs_state.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/emacs_state.cpython-312.pyc index 900f44cdd0dff03d7945bdf9ed39062a2783d501..fe031097905476d49abf6dc3d5d837381cd3298b 100644 GIT binary patch delta 52 zcmZ3$vx0~FG%qg~0}ym=y1J3Oi%}|HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dW% GN)`a5Vi1@B delta 44 ycmZ3%vw(;DG%qg~0}#}`xw4VFi%}?DKO;XkRX;tiLf<8|IJ+djVDoy$N)`YwP!5&= diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/key_bindings.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/key_bindings.cpython-312.pyc index 50f4d687ad409f011f17aa6c6a0da801a54257c0..4401baf1f39192677abdfb1cd09b450719f8d588 100644 GIT binary patch delta 54 zcmX?ii1FGXM()$Ryj%=G(6#C6M(%h{sRI3s{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IHJq2i0shYt$p8QV delta 46 zcmcb1i1FMZM()$Ryj%=GQ1|A_M(%h{p$z?u{M=Oi^t=jvm(=3ylKg_rEu5Fa0epoJ A#{d8T diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/key_processor.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/key_processor.cpython-312.pyc index f46a19cb601dc709044debbc7970963c0067fe0b..7d9ccfdb0695692dbe454f6ef8efba49ab395336 100644 GIT binary patch delta 54 zcmaF7gz@zfM()$Ryj%=G(6#C6Ms8hJsY3mX{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IUaXS70P+D5i2wiq delta 46 zcmaF8gz@nbM()$Ryj%=GQ1|A_Ms8hJp-laZ{M=Oi^t=jvm(=3ylKg_rL9CL#0CDdR AhX4Qo diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/vi_state.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/__pycache__/vi_state.cpython-312.pyc index a709eac92eb924213b70da45e1b59b422861e388..96e19fed4038078dec52392e1b4a09f65d50dcd3 100644 GIT binary patch delta 52 zcmZ1{xlNM$G%qg~0}ym=y1J3Oh)F6(KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&i5 GJQo0}lMqP& delta 44 ycmdlcxlWS%G%qg~0}#}`xw4VFh)F0#KO;XkRX;tiLf<8|IJ+djVDoe)c`g7np$Vbt#JbG%qg~0}ym=y1J1&l1ZvaKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%FV G6)gbGtr4sM delta 44 ycmcZm;4M()$Ryj%=GQ1|A_M(%26p)CE3{M=Oi^t=jvm(=3ylKg_r3z!$D0RVo7 B5Yqqv diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/focus.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/focus.cpython-312.pyc index 203945626b521f0b388c8efbc0fb7c78d5662344..517bb570af374baa82be72102a017e22b5651a16 100644 GIT binary patch delta 52 zcmeyy{*RseG%qg~0}ym=y1J3Olu@ckKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aq; G6ea+{#Sr`e delta 44 ycmeyz{*9gcG%qg~0}#}`xw4VFlu;;4KO;XkRX;tiLf<8|IJ+djVDl`-6ea*jGY+(3 Gvm^l0AQ0RD delta 44 ycmaD9cPozjG%qg~0}#}`xw4VlN=ztAKO;XkRX;tiLf<8|IJ+djU~{|}vm^jk4i4G? diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/named_commands.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/named_commands.cpython-312.pyc index 32518183a3fdacd10a4177e09bd3d6e48191e626..150ba6598bc2462373893b3e74d07ec7ce9ef9cb 100644 GIT binary patch delta 54 zcmexym$Bgb8=-PC3BexxwRJDFaer~FMdR~RTOKNd;Nq&L8yI+KExU19V IXs)>_0R7GqcK`qY delta 46 zcmZp;$N1weBll@uUM>b8sC#o|BexxwP_ceSer~FMdR~RTOKNd;Nq)iRWUjd>0D4yt AbpQYW diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/open_in_editor.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/open_in_editor.cpython-312.pyc index e513ca881d8d39bfe33caa0268b33440509c4aff..2afecf6d025eae3c0944aed8f6bd06134ece1472 100644 GIT binary patch delta 52 zcmbQnH;<3|G%qg~0}ym=y1J1&n@Or#KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$it G9}57URuF9f delta 44 ycmbQoH;s?`G%qg~0}#}`xw4Tvn@OlxKO;XkRX;tiLf<8|IJ+djVDki~J{ABfR1RwZ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/page_navigation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/page_navigation.cpython-312.pyc index 9729d870a2d5747d554ad375335a49643428544a..ed8c5fb786a6a21de0bfa8df3fc0d5f2395c300f 100644 GIT binary patch delta 52 zcmdlgx>uC@G%qg~0}ym=y1J3OgITIZKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cKM G0d@ef1Q2@w delta 44 ycmdlhx>c0>G%qg~0}#}`xw4VFgITCVKO;XkRX;tiLf<8|IJ+djVDnmL0d@d6st$Po diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/scroll.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/scroll.cpython-312.pyc index 76163668fe218276f2625cabc3f0ee46808269ed..0eefa6bf5a0c12138dac39a5c1537bd3e10d399d 100644 GIT binary patch delta 52 zcmeCOm}J3ynwOW00SLM_UERnX!zxv*pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7HUX Gq8I?DND!U? delta 44 ycmbPa(PhDXnwOW00SM~eT-nGS!zz@mpOK%Ns-K=$q3@DfoL!P%u(^?Sq8I=&1`eD6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/search.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/search.cpython-312.pyc index 7ffc08030c8f1335bb0de8bbf1b2f50dc91d141f..d8ee06570c9543074ddcc723b998388f42300050 100644 GIT binary patch delta 52 zcmca8e^Z|OG%qg~0}ym=y1J43Ftb##enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8+@v GAGra^g%TM6 delta 44 ycmca9e^H+MG%qg~0}#}`xw4V_Ftbp$enx(7s(yN2g}zH_adt_5!R8mtAGrZeI}jHD diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/vi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/key_binding/bindings/__pycache__/vi.cpython-312.pyc index 2f07eddb083cd66582520506c55934d410f7bfb2..691f69dc97b82e517ff005f529381b6de62c4fc8 100644 GIT binary patch delta 58 zcmX@VjP3d|Hty5Byj%=G(6#C6M(#2;seJv6{M=Oi^t=jvm(=3ylKcXFcfSbTa95}1 N$!yyvvoY@J0RTkg6a)YO delta 50 zcmcb+L>{M=Oi^t=jvm(=3ylKg_^*=*ZqvoY@J F0RX#m5()qS diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/__init__.cpython-312.pyc index f169cc51a61792d6c08716e3c39b3bab3e9cb402..a598b805baafd9cf3c4dd11c59d5772420f2fbc8 100644 GIT binary patch delta 51 zcmdlcwNHxsG%qg~0}ym=y1J3un@1{LKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>tb7 FIRKeG5TO77 delta 43 xcmdldwM~lqG%qg~0}#}`xw4Vln@1>KKO;XkRX;tiLf<8|IJ+djU~&P^IRGWi4xa!3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/containers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/containers.cpython-312.pyc index 55864c3f7fb8f33f6ed9bcb1f26a6e8ec84517a7..aa0d2bd403b210502c8159f1648d885d60665892 100644 GIT binary patch delta 58 zcmcaHo$bMNHty5Byj%=G(6#C6M()2HQknW0`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 NQk>hRI2rdf0RT_b6Ndl* delta 50 zcmaDbo$bbSHty5Byj%=GQ1|A_M()2HLW%kr`MIh3>3J3UE~&-YCHV!-N}Su3I2rdf F0RY0Q5sd%< diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/controls.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/controls.cpython-312.pyc index f4f40b5b9bd3664fffdb8a46eebbec5a83522e50..7259d39ba80ae03d3a88136ca606aac4c11b032e 100644 GIT binary patch delta 54 zcmaDikLlYyChpU`yj%=G(6#C6Ms8y^sdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I0c>)e0Q8p;+5i9m delta 46 zcmex1kLle!ChpU`yj%=GQ1|A_Ms8y^p?Lj_{M=Oi^t=jvm(=3ylKg_r5o~gu0CYVM A*Z=?k diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/dimension.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/dimension.cpython-312.pyc index 044a10fe5f3deda413b6b722f6857cfe128d33da..4afcc8b2a52ead579bbf14bb003ef53020a98100 100644 GIT binary patch delta 52 zcmbR4INy=`G%qg~0}ym=y1J43CA(CHenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Gh~ Gi4p+6;1J*d delta 44 ycmbR5INg!^G%qg~0}#}`xw4V_CA(09enx(7s(yN2g}zH_adt_5!Dc>=i4p)s9uD3B diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/dummy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/dummy.cpython-312.pyc index 1ca27ff38609ca2a75e27d86c1c4045accba8998..80b1fa6c67e170eac38b6872b30cdbc101abb6ca 100644 GIT binary patch delta 52 zcmX@fdy$v>G%qg~0}ym=y1J1&iCHQ|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&cZ G7c&5@zz}5s delta 44 ycmcb}dy<#?G%qg~0}#}`xw4TviCHK{KO;XkRX;tiLf<8|IJ+djU~@aO7c&4imJVY8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/layout.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/layout.cpython-312.pyc index 31b9b8f258b297f846571cf81492310dd8e4b43a..1e474cd40bdb50370776603d95d993f100d2c0a3 100644 GIT binary patch delta 52 zcmaD{`?{93J3UE~&-YCHV#V?tT%v;jT`b JPqVod0001J62Jfe delta 46 zcmbRFj&b5UM()$Ryj%=GQ1|A_M(%ZNLNWRo`MIh3>3J3UE~&-YCHV!LFSEH7004a- B5WWBa diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/mouse_handlers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/mouse_handlers.cpython-312.pyc index ece3357b8b18e227d147a3b80f3c85422e5c9187..68bfd779ced3a0f43db8236ca1c9d8773fb8b447 100644 GIT binary patch delta 52 zcmeAbnkvM7nwOW00SLM_UERn%k4Y+5KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dKT GAT|J@x)6Z? delta 44 ycmbO#)GNe&nwOW00SM~eT-nGyk4Y$1KO;XkRX;tiLf<8|IJ+djVDn+7AT|Ij;0}KP diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/processors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/processors.cpython-312.pyc index c973298b04bcfe92f44a2d1656cc8614e5d29df6..63d82795002aab10168eef60c512b94a72e9cd93 100644 GIT binary patch delta 54 zcmeykf$8T4ChpU`yj%=G(6#C6Ms5jCsZ9Nh{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IrkpnY0Qve6`Tzg` delta 46 zcmeylf$8H0ChpU`yj%=GQ1|A_Ms5jCp+x)gK_T+M()$Ryj%=GQ1|A_Ms7hKp)~!B{M=Oi^t=jvm(=3ylKg_rW<2~30A0Hd A-v9sr diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/layout/__pycache__/utils.cpython-312.pyc index 5e1c9a99ab85c2a69dc1d071b01b89d50f7f0210..87ff7517ebe8d349b758c70cf467b81156d254ac 100644 GIT binary patch delta 52 zcmaDV{Z^X$G%qg~0}ym=y1J437n4+qenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Iqz Gb6fz?-Vt*E delta 44 ycmaDW{ZyL!G%qg~0}#}`xw4V_7n4woenx(7s(yN2g}zH_adt_5!De~pb6fyaTn}*o diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/lexers/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/lexers/__pycache__/__init__.cpython-312.pyc index be0b547de582d44c64f4883a37e427bebd5595d2..afcb56cc90a3e1c068ce2a5a39635966166a5a69 100644 GIT binary patch delta 51 zcmcc2a+`(wG%qg~0}ym=y1J2jC8Jcjenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8u1} Fy#S}C5flIb delta 43 xcmcc3a+!tuG%qg~0}#}`xw4UaC8JQhenx(7s(yN2g}zH_adt_5!Q^v{y#O&T4-x} GE^Yv(JrJG% delta 44 ycmZ1~H&>4PG%qg~0}#}`xw4VFj9DmJKO;XkRX;tiLf<8|IJ+djVDoI|E^YuZD-N6h diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/lexers/__pycache__/pygments.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/lexers/__pycache__/pygments.cpython-312.pyc index b2de4168a5402699a4b38546a7605e33bcfd2807..6502df09d2f6061ca73d453ec1bbfc95d7fa6390 100644 GIT binary patch delta 52 zcmdlVeLR}`G%qg~0}ym=y1J1&l1(aIKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Ey Gr#b+~(Gdp# delta 44 ycmX>ey+4}!G%qg~0}#}`xw4Tvl1(UHKO;XkRX;tiLf<8|IJ+djU~?Utr#b*le-8x! diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/__init__.cpython-312.pyc index f130008a784c218c834c0b1311d6859ec93997ef..298fbbbcf8ce0b279f2f68c99b11ecb1df3e2e4a 100644 GIT binary patch delta 51 zcmdnPe1w_%G%qg~0}ym=y1J2DhEXbAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|g3_ FGXRQe55NEb delta 43 xcmX@YyoZ_lG%qg~0}#}`xw4U4hEXV9KO;XkRX;tiLf<8|IJ+djV6r1)GXNRd4ZZ*X diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/base.cpython-312.pyc index 85bf54dd21a5559695db8c43ec838607a1990feb..d934c2b33b3a32aed21cc5172abc56c6bad53248 100644 GIT binary patch delta 52 zcmexV@T-9PG%qg~0}ym=y1J3Om{lrSKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Zfu GM@9hX&=P3? delta 44 ycmexW@Tq|NG%qg~0}#}`xw4VFm{llRKO;XkRX;tiLf<8|IJ+djVDk*tM@9f?RuE?Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/color_depth.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/color_depth.cpython-312.pyc index c79e38716a963246e5041dc255cff285d496467f..0d6860c9b5b6428adc95667bea20b81443ebbec0 100644 GIT binary patch delta 52 zcmbOsut0$OG%qg~0}ym=y1J432eVX`enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Hc? GW)=Xg+7I>s delta 44 ycmZ1=FhhX*G%qg~0}#}`xw4V_2eVL;enx(7s(yN2g}zH_adt_5!Dd+&W)=W7unqJ8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/conemu.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/conemu.cpython-312.pyc index a8ccdb47370036e63d11b7677d02cfc84ca41ec9..127dc74936fd1bfe9ca416512b604a6215703837 100644 GIT binary patch delta 52 zcmbOvI!l!MG%qg~0}ym=y1J2jGmBKJenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-2- GhgboqF%c#J delta 44 ycmbOwI!ToKG%qg~0}#}`xw4UaGmB8Henx(7s(yN2g}zH_adt_5!R8w*hgbnJUk@Yz diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/defaults.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/defaults.cpython-312.pyc index f7481a93ee8664fa101559e46ebe4722af8ebb30..baa1a9d89020fc65c9e59038e6a69ca9b7291494 100644 GIT binary patch delta 52 zcmaDZ{$8B>G%qg~0}ym=y1J2jH-}WZenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-o- G{LBE$Z4o&D delta 44 ycmaDa{#=~LbG%qg~0}ym=y1J2j6^m4+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^wW GT@nD!h!ML0 delta 44 ycmca3J3UE~&-YCHV#V?tT%v;jT`b Je{)$S0ssx$6Da@y delta 46 zcmdmcgK_H(M()$Ryj%=GQ1|A_M(%rDLNWRo`MIh3>3J3UE~&-YCHV!LnYpbJ0fZG0 AC;$Ke diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/win32.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/win32.cpython-312.pyc index d41720d35f8060cd9e532b15863c7473423600c4..57cb1c9c9fd35ace73f7bda7bad712afe4a9e6b5 100644 GIT binary patch delta 54 zcmezNjPc(yM()$Ryj%=G(6#C6M(&AhQYrcw`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J*Rh?*0RSUU6TScd delta 46 zcmezOjPctuM()$Ryj%=GQ1|A_M(&AhLNWRo`MIh3>3J3UE~&-YCHV!Lx3Qhb0RWpG B5xf8Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/windows10.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/output/__pycache__/windows10.cpython-312.pyc index a2c177d8462282e7c00069672b2a5fda65c2c03d..ecb5a6ca701294e5c8c8bc6967fad615bb208a19 100644 GIT binary patch delta 52 zcmdn5eq5dVG%qg~0}ym=y1J43DYI0Denx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F`? Gz5D>g&k+v* delta 44 ycmX@EzF(dDG%qg~0}#}`xw4V_DYH<5enx(7s(yN2g}zH_adt_5!DcR&z5D=4Z4V6q diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/__pycache__/__init__.cpython-312.pyc index c57048427155b7e1ce83e9d002d0f7450d7cd5d2..36cb8a0a781fe477bdccd7431b6004311507fc34 100644 GIT binary patch delta 51 zcmcc1{*;~jG%qg~0}ym=y1J2Dl36NCKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fsf FasZhu5HA1# delta 43 xcmaFLewUs5G%qg~0}#}`xw4U4l36H8KO;XkRX;tiLf<8|IJ+djV6q+aasVbg4lMux diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/__pycache__/choice_input.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/__pycache__/choice_input.cpython-312.pyc index 7e07206c6d419bd6a4a0a18de963d0a57c0a820b..b4623629f2b3d1014c4f29573c5fea18b759f441 100644 GIT binary patch delta 52 zcmX>ee?Ff3G%qg~0}ym=y1J437qe8Jenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Ip& G4cY+Vxe?9) delta 44 ycmX>fe>|T1G%qg~0}#}`xw4V_7qd{Benx(7s(yN2g}zH_adt_5!De}u4cY)&Ro Gk0t=yK@lDR delta 44 ycmewz_c@OHG%qg~0}#}`xw4Vli%lp|KO;XkRX;tiLf<8|IJ+djU~@hjk0t(Gxup;UM>b8=-PC3Be$H8REB;=er~FMdR~RTOKNd;Nq&L8yI+KExU17< IYoW830p0-;Q~&?~ delta 46 zcmbPmhPmSmGxup;UM>b8sC#o|Be$H8P=bC&er~FMdR~RTOKNd;Nq)g*XQ8u~0by4V AQUCw| diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/__pycache__/utils.cpython-312.pyc index 0ef6a4974b9c5d9636adf7dffbfeb957bebe50d0..73bcc0f81a5e15d19849dd9b3afefb65912c14b4 100644 GIT binary patch delta 52 zcmdn(aM*$SG%qg~0}ym=y1J43FrQSqenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8+?! G(SiWXml3G| delta 44 ycmX@?u-k$AG%qg~0}#}`xw4V_FrQGoenx(7s(yN2g}zH_adt_5!R8ly(SiU_r4Oe7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/progress_bar/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/progress_bar/__pycache__/__init__.cpython-312.pyc index 81a5df507633868e813fdbb2be12cb03bbf03694..dca5c5531f88fe373ff427e791b8c1c86c9a5033 100644 GIT binary patch delta 51 zcmZ3@x|x;xG%qg~0}ym=y1J43Eu&Pqenx(7s(yN2g}zH_adt_5fxf$6gl@R2(_}8D Fg#e)L5OV+k delta 43 xcmdnYx|)^yG%qg~0}#}`xw4V_Eu&Drenx(7s(yN2g}zH_adt_5!DJz(g#ao>4sieg diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/progress_bar/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/progress_bar/__pycache__/base.cpython-312.pyc index 1a904f33f1a5025c100f9f9d8d8fbdbec0e3e093..2ead2238899e0c893e02ecb588c1c2e50a1e3fd8 100644 GIT binary patch delta 54 zcmZpj%Gf)Vk^3|+FBbz4bZxr2k=vI|s#rfGKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw I7MrvS0Lq6D>;M1& delta 46 zcmeC3%Gf%Uk^3|+FBbz4)V;Z~k=vI|C|f@xKQ~oBJ+DIFCAB!aB)?#D5u3CN08lLs A>Hq)$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/progress_bar/__pycache__/formatters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/shortcuts/progress_bar/__pycache__/formatters.cpython-312.pyc index b4718964d9af7ac6ea870b41462c8ee505d10884..77171502c2b7ca8a192b520108bff7bd6fd3287d 100644 GIT binary patch delta 54 zcmbQ<#yG!?k^3|+FBbz4bZxr2k$Vw~RHc4Ker~FMdR~RTOKNd;Nq&L8yI+KExU19V I{VWl70NG>_)c^nh delta 46 zcmbQ=#yGu=k^3|+FBbz4)V;Z~k$Vw~P@#TCer~FMdR~RTOKNd;Nq)iR<17(&09+Ce A(*OVf diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/__init__.cpython-312.pyc index cad4f44a1161226687d97c1e4ee97d740822cfd3..20e2a0a4962a2466bc3e61493445a8b09e503e15 100644 GIT binary patch delta 51 zcmey$^_PqLG%qg~0}ym=y1J2j35!&^enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8vCJ FTL8Bc5r+T( delta 43 xcmey%^_7eJG%qg~0}#}`xw4Ua35!s?enx(7s(yN2g}zH_adt_5!Q_)HTL3;Q4}|~# diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/base.cpython-312.pyc index bb29c8e3d359e3de8f540f8cd7c1e5cf6536511e..5fe4637ae32b888079f6dc59e0951238777d140e 100644 GIT binary patch delta 52 zcmeCsnV`dcnwOW00SLM_UERoigjp(CKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4by7 Gbs+$*ED+ED delta 44 ycmbQB)1kwCnwOW00SM~eT-nHdgjpzBKO;XkRX;tiLf<8|IJ+djVDn36bs+#Z8V=3? diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/defaults.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/defaults.cpython-312.pyc index c44a05cee024f680ad936c333b2481fa850902b9..f29a382d2c27cfb3a5fb44ab5fa38e9e9eaeab82 100644 GIT binary patch delta 52 zcmX?Va@K_VG%qg~0}ym=y1J2DRa7cnKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|t0k GGb;eJuMiUe delta 44 ycmX?Wa@2(TG%qg~0}#}`xw4U4Ra7WmKO;XkRX;tiLf<8|IJ+djV6&GfGb;c+l@1XA diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/named_colors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/named_colors.cpython-312.pyc index 9fde35a676c4773550ee190391f01314728bfc0a..6d4a88420e25fcf0bba6eb009b625de62f2a5762 100644 GIT binary patch delta 52 zcmZ2yxXqCJG%qg~0}ym=y1J2DSU@UUKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|sVq G9R~oYZV)p7 delta 44 ycmdmHxXzIKG%qg~0}#}`xw4U4SU@OQKO;XkRX;tiLf<8|IJ+djV6%ll9R~n2j1DmX diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/pygments.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/pygments.cpython-312.pyc index 4fff6fbee097115554fe15e38db9f6c8ceb07831..16b485f3b63ca9800e0240e23e0bca47e5482d07 100644 GIT binary patch delta 52 zcmX>id`6i2G%qg~0}ym=y1J3upG7KNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$%s G1Sjd_se1So diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/style.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/styles/__pycache__/style.cpython-312.pyc index bc583bbea3dfad0d7e9c68281fa7d1ee57834834..140c9ac6543fb07276a978de594c8ec5225ebc93 100644 GIT binary patch delta 52 zcmaD*`J$5hG%qg~0}ym=y1J43DyvkAenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8&KO;XkRX;tiLf<8|IJ+djV6q>}3IHx64s-wj diff --git a/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/widgets/__pycache__/base.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/prompt_toolkit/widgets/__pycache__/base.cpython-312.pyc index b6763f6d1daaf3cadffe67384a82d13a3bfc2ecb..e1f90a9566a9dee6fffa8d840c4e9e6621f28696 100644 GIT binary patch delta 54 zcmZ2 delta 46 zcmdnl&A73fk^3|+FBbz4)V;Z~k$VxRP^^ANer~FMdR~RTOKNd;Nq)iRtdG0C6=C Ah5!Hn diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/__init__.cpython-312.pyc index 234253cb5c70dba440a6133d3633d58f6e19986a..20a2414f9271f07abb3756172a11f79d65b4877a 100644 GIT binary patch delta 52 zcmZ21yIPj}G%qg~0}ym=y1J433Aa>~enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H7V GMN9y+#1NYR delta 44 ycmZ22yI7X{G%qg~0}#}{xw4V_3Aa#?enx(7s(yN2g}zH_adt_5!DddLMN9xY+YXoj diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/_ipaddress.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/_ipaddress.cpython-312.pyc index a851310a1de415e4285d8721bb659ac73b62a31e..3bbdf90576c1468e19b76c3d58c6de208627d8c1 100644 GIT binary patch delta 52 zcmdlla$JP_G%qg~0}ym=y1J4328&dTenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?-% GUaSDUG7(1r delta 44 ycmX>uvR{PzG%qg~0}#}{xw4V_28&RLenx(7s(yN2g}zH_adt_5!REg#UaSB^p$|j= diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/_json.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/_json.cpython-312.pyc index 06f11f3d4b96d0c2bfc01eeb3ff867df2d3bf2f6..8d4430e39d367cc6d2c7ef0d6b887a2cf81fe3ab 100644 GIT binary patch delta 52 zcmdmBwZn@0G%qg~0}ym=y1J2DmPIODKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|ol} GHwgf%9uT4KO;XkRX;tiLf<8|IJ+djV6zj;HwgeX9S*ht diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/_range.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/_range.cpython-312.pyc index 43d2b525669fe5eb00521d5d77378b3f0999a2ea..cde84fe9589a6f230b29e8bb91f99faa127310d1 100644 GIT binary patch delta 54 zcmdnIgmL#0M()$Ryj%=G(6#C6M(&SnQW5$Y`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b I`Pfyx0rZ~{r2qf` delta 46 zcmdnJgmLo{M()$Ryj%=GQ2XY}M(&SnLIL_2`MIh3>3J3UE~&-YCHV!L#n@H70dfux Aq5uE@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/errorcodes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/errorcodes.cpython-312.pyc index 9a60012d37eb8cf02f36a24cda94fbe0a9d7c9c1..7cd8394191c134097b9e6fb4388343faae0c3bbf 100644 GIT binary patch delta 52 zcmdm0aHxR$G%qg~0}ym=y1J2DfI})qKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pZ| GuK@tTwGdkX delta 44 ycmX?9u&aRkG%qg~0}#}{xw4U4fI}!mKO;XkRX;tiLf<8|IJ+djV6!O)uK@r^)DBnx diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/errors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/errors.cpython-312.pyc index fd8c5dede6f810d53e0a283e69cfd444173b2ec3..2bb6471d3b56ebf7073f6a8ebe03d7d86f5d3741 100644 GIT binary patch delta 51 zcmbQtGMk0_G%qg~0}ym=y1J3ukx?o_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>uIn FRseo%58VI& delta 43 xcmbQuGMR<@G%qg~0}#}{xw4Vlkx?i>KO;XkRX;tiLf<8|IJ+djU~(GcRsau<4cY(z diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/extensions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/extensions.cpython-312.pyc index 12158e8658da7ad1eab00201b28f3dbdaab30750..1ba258c54f96ddcef30bc66b244539da47d339d3 100644 GIT binary patch delta 52 zcmZ2zwbF|FG%qg~0}ym=y1J3ukW(r~KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o^a GWnloRAP}km delta 44 ycmZ2!wa|+DG%qg~0}#}{xw4VlkW(l`KO;XkRX;tiLf<8|IJ+djU~?GfWnlm`9}cGg diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/extras.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/extras.cpython-312.pyc index 3e43543d01fc2b292737b26719c9be57635fdfec..98e55751de7ac4945318c9657088149e21689551 100644 GIT binary patch delta 54 zcmex+gSqu4Gxup;UM>b8=-PC3BlkCUsR;dy{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I!W>yo01QGxup;UM>b8sC{!~BlkCUp#c4i{M=Oi^t=jvm(=3ylKg_r(i~Y&0Er+G A4FCWD diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/pool.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/pool.cpython-312.pyc index bf5301804c73ae82b73dc37bc7ad7092df503daa..f82628ecadc6be5f551c37a031bc4a1246ccb74e 100644 GIT binary patch delta 52 zcmbPiJKL7~G%qg~0}ym=y1J3Oo>3}HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aS$ G?=k?c!x2XS delta 44 ycmbPjJK2`|G%qg~0}#}{xw4VFo>9n8KO;XkRX;tiLf<8|IJ+djVDl2j?=k>5at}lR diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/sql.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/sql.cpython-312.pyc index f53e861a5cb8ceae55f9c6b1d3e48362d27fb227..761c64f19d83413d3715590d3734ab5e9e2d49d1 100644 GIT binary patch delta 54 zcmex7neq2zM()$Ryj%=G(6#C6Ms9T$sZjll{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IE-dR^0q$}U>i_@% delta 46 zcmex8nep>vM()$Ryj%=GQ2XY}Ms9T$Az%HB{M=Oi^t=jvm(=3ylKg_rJ}m290dHv! A=l}o! diff --git a/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/tz.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/psycopg2/__pycache__/tz.cpython-312.pyc index e9ed6f164d0d4a52e1801c7fdc2977ad6e3bdd70..d3c73c2f7f0afd850ac74efc7b5d590fd60463d2 100644 GIT binary patch delta 52 zcmdmJu+xD1G%qg~0}ym=y1J439-CB%enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^l7 GW`Y31rV(QR delta 44 ycmdmKu+f0~G%qg~0}#}{xw4V_9-EMlenx(7s(yN2g}zH_adt_5!DeQ5GeH1EI1XU| diff --git a/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/__init__.cpython-312.pyc index 708567b75c9c53f861f821cc0f01fd208e2e84d4..b376f39895a8ace9171bced2d4948845efb8d0c2 100644 GIT binary patch delta 54 zcmdn{j`8R_M()$Ryj%=G(7EaAM($;7QepZT`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J53^Mj000lu6DM($;7LVo%g`MIh3>3J3UE~&-YCHV!LPqS4O004?( B5h?%x diff --git a/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/exceptions.cpython-312.pyc index afd5a9a43dbe167534d9d9e110af1c3798178539..180b6b24e3963150821c51d1f07a820adbef9d54 100644 GIT binary patch delta 52 zcmew(*doMznwOW00SG!bUERpNpHV78KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aUM G1$F?oZV=Z1 delta 44 ycmZn>`Xk7FnwOW00SIc|T-nIIpHV14KO;XkRX;tiLf<8|IJ+djVDl431$F>EKMvFY diff --git a/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/lazy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/lazy.cpython-312.pyc index d535919f221877f8cc8a323491e1f382cff0ecce..fc4cbe5b5ec10754ef6d8ee20f945988cda1b759 100644 GIT binary patch delta 52 zcmeCRnQFs*nwOW00SG!bUERpNf>|m^KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cHL G4=Dh!RuI_$ delta 44 ycmbPg(`&g diff --git a/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/reference.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/reference.cpython-312.pyc index 898ede3fe804d30cc0f4a2ad033a03479a5bf168..9113ce82d1a9743a51bff16bc08400599b703db3 100644 GIT binary patch delta 52 zcmbQMy;Pg~G%qg~0}ym>y1J2@nMEpGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n=L GtsnrHv=6`l delta 44 ycmZ3gJy)CiG%qg~0}#}_xw4U)nMKH7KO;XkRX;tiLf<8|IJ+djV6z5Gtsnpy1J2DpIItIKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oTr GmmmO|!w=2? delta 44 ycmbQIIZc!MG%qg~0}#}_xw4U4pIOL9KO;XkRX;tiLf<8|IJ+djU~>qwmmmNr3JuEu diff --git a/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/tzinfo.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/pytz/__pycache__/tzinfo.cpython-312.pyc index b127c7521263e05ead9fc2538857517c5e1e5009..fbe71367c0eb493647f62e34b819292708c8e4aa 100644 GIT binary patch delta 54 zcmcaQjq&a@M()$Ryj%=G(7EaAM($HgQX%>o`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JpEKoo008=a61M;V delta 46 zcmcaRjq&OM($HgLO%K#`MIh3>3J3UE~&-YCHV!L-!tWT004L` B5VQaQ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/__init__.cpython-312.pyc index 8e1379cd8193f0fe871cbfca2b91495d8c8144ae..d2777d10ff8d94ac1b852b4025fbd45da1ca9758 100644 GIT binary patch delta 52 zcmeAdnl8kBnwOW00SG!bUERoij72J3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c+i G9TotkpAeb= delta 44 ycmbO()Gx$+nwOW00SIc}T-nHdj77*_KO;XkRX;tiLf<8|IJ+djVDoDh9TosE4Gx$9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/backoff.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/backoff.cpython-312.pyc index ac115c8299d42a1684123edaed650dc6274ed073..9eb6b90a067a09181cce268e139e025e5846f16b 100644 GIT binary patch delta 52 zcmcbo`An1hG%qg~0}ym>y1J3ui%BX>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&SL Gxex%m>JY*J delta 44 ycmaE+c~6u3G%qg~0}#}{xw4Vli%G~&KO;XkRX;tiLf<8|IJ+djU~@iGxex$D@D9KL diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/client.cpython-312.pyc index 79fd4e73d24c6a4f1b42c9c7c59ee88737779299..0055bf9cf1a82be296977d0a618d869d5b9f622d 100644 GIT binary patch delta 54 zcmbRAi+R>BX71Cxyj%=G(7EaAM(&xcQla`8`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jx3R{22LJ)+6F&d| delta 46 zcmbRBi+R#7X71Cxyj%=GQ2XY}M(&xcLcaPL`MIh3>3J3UE~&-YCHV!L_p!!&2LOKG B5j_9^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/cluster.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/cluster.cpython-312.pyc index 1f0f9c63bbcae7c2c35a257ce906f794978c6cfb..2aa493ea4cbe116200b8a84a85af287f44b030fd 100644 GIT binary patch delta 58 zcmexzi1p7QR_@chyj%=G(7EaAMs6=QsWAPF{M=Oi^t=jvm(=3ylKcXFcfSbTa95}1 Mbhhp3Y>d3o08d3o E0LR7=3;+NC diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/compat.cpython-312.pyc index 2c46880e70fbf694aa41fa19d68e0ac40edcbec3..1d1d396b1498df800ba96999e42a87b6accbd368 100644 GIT binary patch delta 50 zcmbQpJd>IGG%qg~0}ym>x;l~jxm2irMt*LpetKSozDsIxc1eDLzPn$9Zn&${WERF= E0EV;=)&Kwi delta 42 wcmbQqJdv6EG%qg~0}#}{xiXRaxsb1ZMt*LpetKSozDsIxc1eE0WFE#|02A*G)Bpeg diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/connection.cpython-312.pyc index 9045027577de6e3667366481744f75147b567aa0..5546a85966bc6e48c1e4d2139161892f948e817d 100644 GIT binary patch delta 54 zcmew}pSfiLGxup;UM>b8=-hO5Blk^qsYv~d{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J-`Lqs008*W65#*< delta 46 zcmZo!!2D-EGxup;UM>b8sC{!~Blk^qp+NnN{M=Oi^t=jvm(=3ylKg_r|Jd11004C| B5Z?d* diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/crc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/crc.cpython-312.pyc index ad431bbddc50f65c6fc0ac8ee1d2b7c9242336c5..aa89659137e15e98f8c4d90f2c7986acf8009bc2 100644 GIT binary patch delta 52 zcmcc2ew&^9G%qg~0}ym>y1J1&iAgF*KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&bO G2qOTj{SaUP delta 44 ycmcc3ewm&7G%qg~0}#}{xw4TviAl&yKO;XkRX;tiLf<8|IJ+djU~@ZD2qOSDGY(z= diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/credentials.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/credentials.cpython-312.pyc index 8f22026df684b0eba9ae5563ff278ff91231f698..cb2c3e4d317f987a4257be90319948a6365b5abc 100644 GIT binary patch delta 52 zcmbQuyO@{zG%qg~0}ym>y1J2jBBNB4enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=)I GZ&?7M2oU@L delta 44 ycmZ3?JDZpLG%qg~0}#}{xw4UaBBM}{enx(7s(yN2g}zH_adt_5!RBp@Z&?5>t`7PD diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/exceptions.cpython-312.pyc index 4fa8c07029e8f37c47a9a6a4f2567c921956e29b..e43d877e7121259b67e9597c7b9cd52a71fdd230 100644 GIT binary patch delta 52 zcmX@*a><4JG%qg~0}ym>y1J1&jae#EKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&94 GaXA3P(-CO^ delta 44 ycmccQa>|AKG%qg~0}#}{xw4TvjaevAKO;XkRX;tiLf<8|IJ+djU~@O~aXA1=X%A-r diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/lock.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/lock.cpython-312.pyc index 1cc5f895833d478c2b6f28f34c5bfb1b9ecff947..91ba336a9e5c65115ca965bed3024570ed43b42a 100644 GIT binary patch delta 52 zcmdm%u`h%BG%qg~0}ym>y1J2jp0HG~enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^g6 G)d~R9D-p>6 delta 44 ycmdm&u`Pr9G%qg~0}#}{xw4Uap0JR&enx(7s(yN2g}zH_adt_5!REul)d~Psu@A=p diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/ocsp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/ocsp.cpython-312.pyc index 2671de4017f06b355feda65b916b1bb5506ae7d9..4482511e798155245179889703981c0969ba5ea7 100644 GIT binary patch delta 52 zcmcaodZ(28G%qg~0}ym>y1J1&lvOHNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$>4 Gk|_Y!ND*xS delta 44 ycmcapdZm>6G%qg~0}#}{xw4TvlvT)EKO;XkRX;tiLf<8|IJ+djU~?5~k|_XM)(>j{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/retry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/retry.cpython-312.pyc index 32fc33889546234a4338e523723174f5fe89c28a..7d08f140d1ee64707c0f5cb7fb767270b3d4582f 100644 GIT binary patch delta 52 zcmZn==@8*Q&CAQh00f!sol3JWyl3$?j?iZmO?&`ET Io=M9U0K_8@y#N3J delta 46 zcmbQ(&)C_|$bFiZmx}=iYTsPh$nC@=!sol3JWyl3%bnok`0T082>@ Ay8r+H diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/typing.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/typing.cpython-312.pyc index a0b6b6013f46601520ce0d8265bfbec720722c39..d3279e09cf6e3e75f30aa9f532aa9cdc598c82db 100644 GIT binary patch delta 52 zcmaDL^g@XHG%qg~0}ym>y1J3OkXb5JKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%X* GB~}2sG7&WZ delta 44 ycmaDM^gxLFG%qg~0}#}{xw4VFkXguAKO;XkRX;tiLf<8|IJ+djVDmKQORNAwP!BTz diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/__pycache__/utils.cpython-312.pyc index 1aa243260307de3fc99b028db04572cee72aa897..e52313ffd288bc0c227a8b1324873836acfb34d9 100644 GIT binary patch delta 52 zcmdm`dq|i2G%qg~0}ym>y1J2j3bRy*enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>uL GoWcOPDG;du delta 44 ycmX@4yGxh*G%qg~0}#}{xw4Ua3bT-penx(7s(yN2g}zH_adt_5!RDRJoWcM==MJX; diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/__init__.cpython-312.pyc index e7bf33ed6696f0329c7ea75b69b447ae1d00d126..1e88b7e6b76ce6638183922347420ad7d97d716a 100644 GIT binary patch delta 50 zcmbQwx}25!G%qg~0}ym>y1I~?Nh(1y1J2@heIkxKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pDW Gts(%&7Z8sC delta 44 ycmaDC^el+`G%qg~0}#}{xw4U)heIetKO;XkRX;tiLf<8|IJ+djV6!2Its($Toeqrv diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/commands.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/commands.cpython-312.pyc index a26ce9f5be85b874db6a33c8ba118959c88bee06..ddf74ac67202cfd83e3ac372112384d051eb1ae0 100644 GIT binary patch delta 52 zcmdlTb~udtG%qg~0}ym>y1J1&gGDMqKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%*f GHZ=go5D{|# delta 44 ycmX>cwmXdbG%qg~0}#}{xw4TvgGDGpKO;XkRX;tiLf<8|IJ+djU~@0aHZ=fDCJ%7{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/encoders.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/encoders.cpython-312.pyc index f6bd018184750d62c21d565214e82cf8ceb000f1..107a95d52d8358c957b7d7247c191c4e35185ae8 100644 GIT binary patch delta 52 zcmaDS_)U=eG%qg~0}ym>y1J3OnNcc1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4ZX` GKXw4Z6%hCU delta 44 ycmew+_)d`fG%qg~0}#}{xw4VFnNcW0KO;XkRX;tiLf<8|IJ+djVDkz_KXw2}iw^bx diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/helpers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/helpers.cpython-312.pyc index f75056e5b239d438faaa7f07b98e3dfee967b2a3..716b46b4b0fe3663be55f9b74453b8e382a11945 100644 GIT binary patch delta 54 zcmX@Kg6Y%>ChpU`yj%=G(7EaAM(%lRQt|p3`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JceAzk0s!_Z63_qu delta 46 zcmX@Lg6Yr-ChpU`yj%=GQ2XY}M(%lRLgD%u`MIh3>3J3UE~&-YCHV!L53{xR0swU2 B5Y7Mq diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/hiredis.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/hiredis.cpython-312.pyc index a016e554a67c780d3d8464747fe3d6ac982cc8ef..45db579d1f110f980b417c0f9cc7ed7a23cb9cce 100644 GIT binary patch delta 52 zcmbR1yVRHaG%qg~0}ym>y1J2j7qe8nenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^~U G$CLoVoe|Oi delta 44 ycmZ4LJJ*-{G%qg~0}#}{xw4Ua7qd{fenx(7s(yN2g}zH_adt_5!RGtS$CLm_qYuyk diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/resp2.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/resp2.cpython-312.pyc index b8fbc22f38b121b846d4d4dd84e58a10679f640b..104d0acd9284491c8f0f3c6c0394242fa76f72aa 100644 GIT binary patch delta 52 zcmZ3lzFnRBG%qg~0}ym>y1J1&gjp(9KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%d7 God5u;Z4g2L delta 44 ycmdn4zFwXCG%qg~0}#}{xw4Tvgjpz5KO;XkRX;tiLf<8|IJ+djU~?t2od5td^A11& diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/resp3.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/resp3.cpython-312.pyc index c1c6152c7efc7580d227b7f7299aa320c0d1eae8..7b9a284331220908d4f7ca23c46e127ba9fe5f59 100644 GIT binary patch delta 52 zcmdnswZn`1G%qg~0}ym>y1J2jIg?bZenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8->g GIZ6P<8xd{* delta 44 ycmdntwZV(~G%qg~0}#}{xw4UaIg?PRenx(7s(yN2g}zH_adt_5!R9keIZ6OZ(GP3@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/socket.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/_parsers/__pycache__/socket.cpython-312.pyc index 3ff41ad1de97bc44b298e8dd9e604b375c6586bc..2674a7e1faacb5a8acc33c2f6fbcf5a955e06548 100644 GIT binary patch delta 52 zcmeCNm}0?wnwOW00SG!bUERoimsu)KKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4a~; GAqfDtL=g=D delta 44 ycmbPY(PP1VnwOW00SIc}T-nHdmsu!GKO;XkRX;tiLf<8|IJ+djU^5eokOTlaoem5D diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/__init__.cpython-312.pyc index 2dc39b2378629a445817d136a9c9276f0e5fd495..f55739a6e5d640d8dec696049cee6fe717aca958 100644 GIT binary patch delta 51 zcmcc4b)Sp-G%qg~0}ym>y1J2jDvMOSenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8tJo FO97}F5fuOc delta 43 xcmcc5b)Ad*G%qg~0}#}{xw4UaDvMCKenx(7s(yN2g}zH_adt_5!Q@>mO93&`4-)_Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/client.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/client.cpython-312.pyc index 194f3660f1ad2ad2200fdc92c94e41b31e0ac0a4..7af99584312ef06083a9306e4f97dcdde4efe09b 100644 GIT binary patch delta 58 zcmX@InB~l37Vgu$yj%=G(7EaAM(!VMQnC6O`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 NqU_s6*%{Y!0RTsq63PGo delta 50 zcmX@JnB~Y~7Vgu$yj%=GQ2XY}M(!VMLZSK@`MIh3>3J3UE~&-YCHV!-vh3Ss*%{Y! F0RX$L5YPYs diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/cluster.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/cluster.cpython-312.pyc index fdd9950af49335f9a2d5904dc3baaa2d3e193e0d..d8bd159367702398a66e9409f0ce124b5d9c4a8f 100644 GIT binary patch delta 58 zcmex4gQamM3-@VWUM>b8=-hO5BljD2sW|b8sC{!~BljD2p)mc7{M=Oi^t=jvm(=3ylKg^ZL5}T$9E=4l E0I-=5KmY&$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/connection.cpython-312.pyc index 44f2bbed99871b163580e280c298c5d3be40b7a1..14b63fada58d394e09fa672ddd8899289ceafcef 100644 GIT binary patch delta 54 zcmdn8lX=fhX71Cxyj%=G(7EaAM(#yyQi=K*`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J_p^Py3IO?{6PN%1 delta 46 zcmdn9lX=TdX71Cxyj%=GQ2XY}M(#yyLXr9z`MIh3>3J3UE~&-YCHV!LkF$Nf3IKQL B5taY| diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/lock.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/lock.cpython-312.pyc index 838cbb5b72e96eb5cfac04a2d77e657965aa8c8b..c4a7f60bd3849e3be470b554e4a6e7f48970191f 100644 GIT binary patch delta 52 zcmaD<@T!3OG%qg~0}ym>y1J43tguwHenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<#g G6)FJl!xESP delta 44 ycmaD=@Th?MG%qg~0}#}{xw4V_tguk9enx(7s(yN2g}zH_adt_5!RAlG6)FI3Q4p2@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/retry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/retry.cpython-312.pyc index 3008f21943e673696ae03dd010c5b489a6539aba..0883a2c3c21159185b82ac889e10a782c6066e86 100644 GIT binary patch delta 52 zcmew_(Jsk-nwOW00SG!bUERq2fmtd>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX)`ZN G5eERj4iKpT delta 44 ycmZpd{4c?MnwOW00SIc}T-nI|fmtX-KO;XkRX;tiLf<8|IJ+djV6!Mo5eEQ6rVgh7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/sentinel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/sentinel.cpython-312.pyc index a909490c7da4c2edd6ea4ff169c1a57513b3c053..07c8f75378455df4aa341e0d8af937949cc7cedb 100644 GIT binary patch delta 54 zcmcaLiSf}SM()$Ryj%=G(7EaAM(#OGQt|p3`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JcQP$>0|52Z5}5!1 delta 46 zcmaDfiSgDXM()$Ryj%=GQ2XY}M(#OGLgD%u`MIh3>3J3UE~&-YCHV!L4>B!u0|0cY B5SIV| diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/asyncio/__pycache__/utils.cpython-312.pyc index 01c81df23edb2b9c0577d437074a265a8bebdb20..60fbf8393b69ea136991afba2935cbd135a89532 100644 GIT binary patch delta 52 zcmbQuvzUkbG%qg~0}ym>y1J43HltLGenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-$H G$}9k@N)W~X delta 43 xcmZ3?Gny1J43FQZg~enx(7s(yN2g}zH_adt_5fxf$6gl@R2(_|^8 FCIFgS5Iz6^ delta 43 xcmZ3&I)|0}G%qg~0}#}{xw4V_FQZU|enx(7s(yN2g}zH_adt_5!DJ<-CIBSk4mzh3U!^ChpU`yj%=G(7EaAM(!^hQt|p3`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b I1v#x70s5m76#xJL delta 46 zcmcaIh3U)`ChpU`yj%=GQ2XY}M(!^hLgD%u`MIh3>3J3UE~&-YCHV!LB{{7d0e3kN A6951J diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/__pycache__/core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/__pycache__/core.cpython-312.pyc index 77190f0d4be707eb107e7cb071e2ccb44fb2d8b7..8c423c14619256e24e861135f9c60266214765cc 100644 GIT binary patch delta 66 zcmaEHkN?9xe(uw}yj%=G(7EaAM(z)sQZf1&`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 Tyj<w4IlWIr=F86S5Un delta 58 zcmexxkN?Fze(uw}yj%=GQ2XY}M(z)sLLvGY`MIh3>3J3UE~&-YCHV!-qFn8wT#P`> Lv|W^oIr=F8arqN$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/__pycache__/helpers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/__pycache__/helpers.cpython-312.pyc index 1dc8b56d1e2e12e34f595ffe77adcbd95d1d72d2..b47703a5868a96fa399cbc875c5094ad87349a0d 100644 GIT binary patch delta 52 zcmexh@xy}qG%qg~0}ym>y1J2DhDj=3KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pAh GxfB4xy%2c- delta 44 ycmexi@xg-oG%qg~0}#}{xw4U4hDj(~KO;XkRX;tiLf<8|IJ+djV6!8WxfB3N+YWaC diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/__pycache__/redismodules.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/__pycache__/redismodules.cpython-312.pyc index cfd7da51673659247bc1242d0c5563d9b83db352..cab307c6b0710994dbf6360f6d4ad18373a5e5e2 100644 GIT binary patch delta 52 zcmeB{nJmM7nwOW00SG!bUERo?!X%ZVpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7HR~ GiyHu&aS%`d delta 44 ycmbO%(=Ee&nwOW00SIc}T-nH-!Xy-y1J3umPsl>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$~l GqbLBPZx96l delta 44 ycmZ3iKU<&sG%qg~0}#}{xw4VlmPsf=KO;XkRX;tiLf<8|IJ+djU~>|aqbL9_T@C{P diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/bf/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/bf/__pycache__/__init__.cpython-312.pyc index a5a6496649224a3ee8ba86de375bf4cb3865349d..88693a52c3cd7952f4b4efc47fc9992e66706a6f 100644 GIT binary patch delta 52 zcmX@_dEJxyG%qg~0}ym>y1J431G7}Jenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H_l GLka-dauJyT delta 44 ycmccadES%zG%qg~0}#}{xw4V_1G7-Henx(7s(yN2g}zH_adt_5!DdmGLka*|$PbqQ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/bf/__pycache__/commands.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/bf/__pycache__/commands.cpython-312.pyc index e86db176ba705cd97755ff0e91b238fb005373e7..2e1a6e8b6edac5ba396c298af434dad8a214844a 100644 GIT binary patch delta 53 zcmcb9f${zYM()$Ryj%=G(7EaAMs6#1sbu|({M=Oi^t=jvm(=3ylKcXFcfSbTa95|r H;p~Y3?N$-P delta 45 zcmcbAf${nUM()$Ryj%=GQ2XY}Ms6#1p=kY#{M=Oi^t=jvm(=3ylKg_j@$88JZAK5l diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/bf/__pycache__/info.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/bf/__pycache__/info.cpython-312.pyc index ad33102e8b37fd77ae1f5ee1540dbd20be2c466b..18e6963861387764198bbcd9c803a3c7f6653624 100644 GIT binary patch delta 52 zcmeyS{ZE_wG%qg~0}ym>y1J2jBa>9Tenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=zb G8o~h91`&S% delta 44 ycmeyT{Y{(uG%qg~0}#}{xw4UaBa=|Lenx(7s(yN2g}zH_adt_5!RBjB8o~fr><@ha diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/__init__.cpython-312.pyc index c7f1866374d8854386768686326d520c9a060c40..1ebad6412047b7b273cd50cf4c51ce0cd5ac7684 100644 GIT binary patch delta 52 zcmZ1%zAc>lG%qg~0}ym>y1J3Onnfy2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z#g GF?9gLlMv_t delta 44 ycmdlMzAl{mG%qg~0}#}{xw4VFnnfs1KO;XkRX;tiLf<8|IJ+djVDkbNF?9e*p$_H% diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/commands.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/commands.cpython-312.pyc index ffefad92440c208bfc52d49d8bdab08ff2dc3941..6b3066a5bc33a30758f7bd11461d73053bf62621 100644 GIT binary patch delta 52 zcmaDG|23ZbG%qg~0}ym>y1J1&l|?E|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$`x Gwl)CWHxZ)% delta 44 ycmeww|2CfcG%qg~0}#}{xw4Tvl|?8{KO;XkRX;tiLf<8|IJ+djU~?Bswl)A?g%6y1J3ug-I$&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%fz GDK`L_#}CZ_ delta 44 ycmbOyJx!YXG%qg~0}#}{xw4Vlg-Iw%KO;XkRX;tiLf<8|IJ+djU~?vuDK`Kn{SC_i diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/exceptions.cpython-312.pyc index 89f253dc4eaed94133adbb855887e05716f70841..7c9f29b45cdf06007a832ba664ae7183143f6948 100644 GIT binary patch delta 50 zcmZ3-vWx;l~jl2nF%Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#`pG& E0F?0%%K!iX delta 42 wcmdnSvW|uOG%qg~0}#}{xiXRal2C$vMt*LpetKSozDsIxc1eE0#_#rw03cir$p8QV diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/execution_plan.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/execution_plan.cpython-312.pyc index 599d742ec01edb7e0083d3b1bf4872bbeb9147bb..fff270e93be9f72d787472fad9ed659027e365ec 100644 GIT binary patch delta 52 zcmbQ@GRKAcG%qg~0}ym>y1J1&pHV7DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$)_ GhXMexE)d}W delta 44 ycmbQ^GR1}aG%qg~0}#}{xw4TvpHV19KO;XkRX;tiLf<8|IJ+djVDl8l4g~-@R1V(& diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/node.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/node.cpython-312.pyc index 7df99cfb2c75bffe4a9066ce5ff9e32b3e7ad4b6..893d42973eb68795247dfed9ca4fec4c1cf723c4 100644 GIT binary patch delta 52 zcmdlYvqy&eG%qg~0}ym>y1J43D6>?Oenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8$Menx(7s(yN2g}zH_adt_5!RA-YL0kYp*bgZH diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/path.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/path.cpython-312.pyc index 39e221386890b007c6ded46d37735e51b290dd36..0272e1e48cd2f09ebf50ad3dcd9d207dce03ae5e 100644 GIT binary patch delta 52 zcmX@Ccv_MBG%qg~0}ym>y1J2Dl1VB_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|owq GFCPG?UJy6{ delta 44 ycmX@DcvzA9G%qg~0}#}{xw4U4l1V5^KO;XkRX;tiLf<8|IJ+djV6z=lFCPFiybd-1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/query_result.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/graph/__pycache__/query_result.cpython-312.pyc index 0a1168598930b19bf5435b1c9f9a0aef8bae49d9..b8fd98593a9ea4460f25da72dcdbda4c616c4b86 100644 GIT binary patch delta 54 zcmeC$!Z>LQBll@uUM>b8=-hO5Bew~&RF-~5er~FMdR~RTOKNd;Nq&L8yI+KExU19V IK<1rc0Mz>tq5uE@ delta 46 zcmbQVg|TZ3Bll@uUM>b8sC{!~Bew~&P?CN|er~FMdR~RTOKNd;Nq)iRNamek09la_ Apa1{> diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/__init__.cpython-312.pyc index 1aaa26b2274df18576a1bf5f66fb8a284646373d..5185bf6fb265ee73e26f775fd7097ec7e4cf739c 100644 GIT binary patch delta 52 zcmaE3`o)y{G%qg~0}ym>y1J432D?&3O Di2D%^ delta 41 vcmZo?{?EjHnwOW00SIc}T$#vyMkq=@BR@A)KRvHP-zBv;yClD0;>T$K6w(h2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/commands.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/commands.cpython-312.pyc index a443dc821cb86ef8e73971d3801beb6608545420..43a4c64cd65ae1cfa9907940b4d39ea98eb485dc 100644 GIT binary patch delta 54 zcmbO+n{mNxM()$Ryj%=G(7EaAM(*33QmOhG`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Je{e2v1_0@7614yT delta 45 zcmZ25n{mc$M()$Ryj%=GQ2XY}M(*33Lb3W8`MIh3>3J3UE~&-YCHV!LxE44A09L9G Avj6}9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/decoders.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/decoders.cpython-312.pyc index 4c2d7d8297d873e7ad54e9b14b272eb4b6439b8f..31ac2e7e01824fbe79c71bf1d65dd05b989dcea6 100644 GIT binary patch delta 52 zcmeAYo+QkDnwOW00SG!bUERpt$tabopOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Rlh G6LtWdun^k- delta 44 ycmbOv+$GF?nwOW00SIc}T-nIo$tV=7pOK%Ns-K=$q3@DfoL!P%uz4Nh6LtV8?he@i diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/path.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/json/__pycache__/path.cpython-312.pyc index efc69821ae1afe1c9c652ba56dbde09fd5cf8abf..08b773e39a97c70d9e3332848e8659330c7214c0 100644 GIT binary patch delta 52 zcmcc3{+ONnG%qg~0}ym>y1J2Dno%lIKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|o06 GVkQ8m?+`x# delta 44 ycmaFNew&^9G%qg~0}#}{xw4U4no%fHKO;XkRX;tiLf<8|IJ+djV6y|`VkQ7HZ4NyE diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/__init__.cpython-312.pyc index 51fb51b3fecd1e1a9ed20e17d14d91118427a35f..091482b2c323cf0b9dae67f33850772f6555bd45 100644 GIT binary patch delta 52 zcmZ2uvBiS>G%qg~0}ym>y1J2j3X4>_enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>sV G)#3oVIuR}a delta 44 ycmdmDvBrY?G%qg~0}#}{xw4Ua3X4#@enx(7s(yN2g}zH_adt_5!RDPT)#3m`hz~3P diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/_util.cpython-312.pyc index 7becaf48d326b10aa6dcdf93e06b990721ae023c..8f363ad265a604a41e217cf257b03fd6826e614c 100644 GIT binary patch delta 50 zcmaFL{Fa&fG%qg~0}ym>x;l~jvs8+HMt*LpetKSozDsIxc1eDLzPn$9Zn&${WC6yj E0IG@*?EnA( delta 42 wcmaFM{FIsdG%qg~0}#}{xiXRavrvqFMt*LpetKSozDsIxc1eE0WC_Nr05Po&>i_@% diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/aggregation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/aggregation.cpython-312.pyc index 1aa18ce7fe081187637a398a51ee20e9b831c9d6..983094073948a7ff7433e1d830e55f0689c83a40 100644 GIT binary patch delta 52 zcmZpu=&0a6&CAQh00fy1J3Ok5MXJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d8v GBTN9oSrK*s delta 44 ycmey)@t%YGG%qg~0}#}{xw4VFk5MRIKO;XkRX;tiLf<8|IJ+djVDo0iBTN8DzYlZ( diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/field.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/field.cpython-312.pyc index 8b8cd1386b8729e203d932b9415e84fac170f28f..ecac3d81f7bceed48cd0ac3bbb42262bd3d0932a 100644 GIT binary patch delta 52 zcmZoM?=j~-&CAQh00fkmf& diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/indexDefinition.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/indexDefinition.cpython-312.pyc index 4bf4c58fa599b95bacb37d718fc5a0ed106e43cc..843c258dbcf81f9c30882b2cf763a7aa5e2b6d32 100644 GIT binary patch delta 52 zcmdm^ctnx=G%qg~0}ym>y1J2DnNccFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n@k G4L<;=KM*(o delta 44 ycmX@2xJQxuG%qg~0}#}{xw4U4nNcWBKO;XkRX;tiLf<8|IJ+djV6z8f4L<-gWezp~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/query.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/query.cpython-312.pyc index 6f5272a7dde085f5a2869c3963b8e3d95ea90a89..32f88694f9994b96164c1bdab244d77c3c7fd480 100644 GIT binary patch delta 52 zcmexg)n3hgnwOW00SG!bUERoS%Py6opOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^k1h G)eHd7-4OQx delta 44 ycmZp#{$Is?nwOW00SIc}T-nHN%Pth7pOK%Ns-K=$q3@DfoL!P%usMlc)eHbrjSlqy diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/querystring.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/querystring.cpython-312.pyc index 0e06df624721bb8ada91092c03dd7c670f3a9e4b..15aa600d251f07548329f8880f485f4e43012619 100644 GIT binary patch delta 52 zcmZq9>(1jo&CAQh00f(055K&MwI>(0BKX&<%HW+PsJ< G(F6d!z!59} delta 44 ycmeCqYtG|7&CAQh00gyfu59FPWfDr#&&bbB)lbi>(055K&MwI>*u07<(F6cQt`8~z diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/reducers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/reducers.cpython-312.pyc index d80ab5a45d2418f71290c8036886e37aa76656ff..48d4f00b36e20af82c788950da78a5cf47743fdd 100644 GIT binary patch delta 52 zcmexk-D1OinwOW00SG!bUERoik4Y+BKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dL; GMri=eI}vXH delta 44 ycmZp%`D4v}nwOW00SIc}T-nHdk4Y$AKO;XkRX;tiLf<8|IJ+djU^6o_qci|a77lIz diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/result.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/result.cpython-312.pyc index 78232b4d30415176857020e7a93f8551a1161cde..27fd7058f11be4f40b6e567f29b41fe5398b33e0 100644 GIT binary patch delta 52 zcmca8d{dbFG%qg~0}ym>y1J3OhE*z6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4c20 G3l;#kK@g|_ delta 44 ycmca9d{LPDG%qg~0}#}{xw4VFhE*t5KO;XkRX;tiLf<8|IJ+djVDmy&3l;!BR}Q8C diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/suggestion.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/search/__pycache__/suggestion.cpython-312.pyc index f607456cb327b45244789bc055c9e1ef96ace435..5c821ea9b24e366421556f5f173ec8b30238a83c 100644 GIT binary patch delta 52 zcmZ1`woZ)uG%qg~0}ym>y1J2DoJlHEKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oB_ GCk_Ca)euSm delta 44 ycmZ1{woHusG%qg~0}#}{xw4U4oJlBAKO;XkRX;tiLf<8|IJ+djV6zR=Ck_B7iw;Nt diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/__init__.cpython-312.pyc index b3f6d7b3d9d54634bcf21858d002a4587ea44a1d..278ca780d484f84566d222cabdfddb4af70a1b4a 100644 GIT binary patch delta 52 zcmdm>vO|UYG%qg~0}ym>y1J1&i(M*PKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&XK GN-hAe{Sf5< delta 44 ycmdm?vO$IWG%qg~0}#}{xw4Tvi(M#LKO;XkRX;tiLf<8|IJ+djU~@nFN-h97V-Dj0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/commands.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/commands.cpython-312.pyc index 95d700686d298c695ca13853faa82ac3047d9e65..9978302d56089f8e17172d04b2eafe272334c7d2 100644 GIT binary patch delta 54 zcmdlmi)qI!ChpU`yj%=G(7EaAM(*=MQrY?$`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J-w3%>0RZy%62Jfe delta 46 zcmdlni)q6wChpU`yj%=GQ2XY}M(*=MLdp6W`MIh3>3J3UE~&-YCHV!LzX-Wh0RVAj B5WWBa diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/info.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/info.cpython-312.pyc index 9ad5e8e84d51632a962a12f4d16882b11d99d531..0e1f757088b6c65047b8a8de26b4fdbc580171a7 100644 GIT binary patch delta 52 zcmdn2uv>xqG%qg~0}ym>y1J1&j9V&QKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&36 G0TuwP;}FmQ delta 44 ycmdn3uvvloG%qg~0}#}{xw4Tvj9VyPKO;XkRX;tiLf<8|IJ+djU~@J10Tuu@`3}wi diff --git a/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/redis/commands/timeseries/__pycache__/utils.cpython-312.pyc index 49edfcb2bc71b415564203bc73dc403747053e54..f847384315b94a61b49317661948531d9a44f864 100644 GIT binary patch delta 52 zcmX>ra#e);G%qg~0}ym>y1J3umQgB0KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%0g GXAS_Z`Vig# delta 44 ycmcaAa#n=}VXAS^3Kn~mh diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/INSTALLER b/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/METADATA b/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/METADATA deleted file mode 100644 index b31773e3..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/METADATA +++ /dev/null @@ -1,133 +0,0 @@ -Metadata-Version: 2.4 -Name: requests -Version: 2.32.5 -Summary: Python HTTP for Humans. -Home-page: https://requests.readthedocs.io -Author: Kenneth Reitz -Author-email: me@kennethreitz.org -License: Apache-2.0 -Project-URL: Documentation, https://requests.readthedocs.io -Project-URL: Source, https://github.com/psf/requests -Classifier: Development Status :: 5 - Production/Stable -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: Apache Software License -Classifier: Natural Language :: English -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: 3.14 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Internet :: WWW/HTTP -Classifier: Topic :: Software Development :: Libraries -Requires-Python: >=3.9 -Description-Content-Type: text/markdown -License-File: LICENSE -Requires-Dist: charset_normalizer<4,>=2 -Requires-Dist: idna<4,>=2.5 -Requires-Dist: urllib3<3,>=1.21.1 -Requires-Dist: certifi>=2017.4.17 -Provides-Extra: security -Provides-Extra: socks -Requires-Dist: PySocks!=1.5.7,>=1.5.6; extra == "socks" -Provides-Extra: use-chardet-on-py3 -Requires-Dist: chardet<6,>=3.0.2; extra == "use-chardet-on-py3" -Dynamic: author -Dynamic: author-email -Dynamic: classifier -Dynamic: description -Dynamic: description-content-type -Dynamic: home-page -Dynamic: license -Dynamic: license-file -Dynamic: project-url -Dynamic: provides-extra -Dynamic: requires-dist -Dynamic: requires-python -Dynamic: summary - -# Requests - -**Requests** is a simple, yet elegant, HTTP library. - -```python ->>> import requests ->>> r = requests.get('https://httpbin.org/basic-auth/user/pass', auth=('user', 'pass')) ->>> r.status_code -200 ->>> r.headers['content-type'] -'application/json; charset=utf8' ->>> r.encoding -'utf-8' ->>> r.text -'{"authenticated": true, ...' ->>> r.json() -{'authenticated': True, ...} -``` - -Requests allows you to send HTTP/1.1 requests extremely easily. There’s no need to manually add query strings to your URLs, or to form-encode your `PUT` & `POST` data — but nowadays, just use the `json` method! - -Requests is one of the most downloaded Python packages today, pulling in around `30M downloads / week`— according to GitHub, Requests is currently [depended upon](https://github.com/psf/requests/network/dependents?package_id=UGFja2FnZS01NzA4OTExNg%3D%3D) by `1,000,000+` repositories. You may certainly put your trust in this code. - -[![Downloads](https://static.pepy.tech/badge/requests/month)](https://pepy.tech/project/requests) -[![Supported Versions](https://img.shields.io/pypi/pyversions/requests.svg)](https://pypi.org/project/requests) -[![Contributors](https://img.shields.io/github/contributors/psf/requests.svg)](https://github.com/psf/requests/graphs/contributors) - -## Installing Requests and Supported Versions - -Requests is available on PyPI: - -```console -$ python -m pip install requests -``` - -Requests officially supports Python 3.9+. - -## Supported Features & Best–Practices - -Requests is ready for the demands of building robust and reliable HTTP–speaking applications, for the needs of today. - -- Keep-Alive & Connection Pooling -- International Domains and URLs -- Sessions with Cookie Persistence -- Browser-style TLS/SSL Verification -- Basic & Digest Authentication -- Familiar `dict`–like Cookies -- Automatic Content Decompression and Decoding -- Multi-part File Uploads -- SOCKS Proxy Support -- Connection Timeouts -- Streaming Downloads -- Automatic honoring of `.netrc` -- Chunked HTTP Requests - -## API Reference and User Guide available on [Read the Docs](https://requests.readthedocs.io) - -[![Read the Docs](https://raw.githubusercontent.com/psf/requests/main/ext/ss.png)](https://requests.readthedocs.io) - -## Cloning the repository - -When cloning the Requests repository, you may need to add the `-c -fetch.fsck.badTimezone=ignore` flag to avoid an error about a bad commit timestamp (see -[this issue](https://github.com/psf/requests/issues/2690) for more background): - -```shell -git clone -c fetch.fsck.badTimezone=ignore https://github.com/psf/requests.git -``` - -You can also apply this setting to your global Git config: - -```shell -git config --global fetch.fsck.badTimezone ignore -``` - ---- - -[![Kenneth Reitz](https://raw.githubusercontent.com/psf/requests/main/ext/kr.png)](https://kennethreitz.org) [![Python Software Foundation](https://raw.githubusercontent.com/psf/requests/main/ext/psf.png)](https://www.python.org/psf) diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/RECORD deleted file mode 100644 index d9cb0fdd..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/RECORD +++ /dev/null @@ -1,43 +0,0 @@ -requests-2.32.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -requests-2.32.5.dist-info/METADATA,sha256=ZbWgjagfSRVRPnYJZf8Ut1GPZbe7Pv4NqzZLvMTUDLA,4945 -requests-2.32.5.dist-info/RECORD,, -requests-2.32.5.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -requests-2.32.5.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91 -requests-2.32.5.dist-info/licenses/LICENSE,sha256=CeipvOyAZxBGUsFoaFqwkx54aPnIKEtm9a5u2uXxEws,10142 -requests-2.32.5.dist-info/top_level.txt,sha256=fMSVmHfb5rbGOo6xv-O_tUX6j-WyixssE-SnwcDRxNQ,9 -requests/__init__.py,sha256=4xaAERmPDIBPsa2PsjpU9r06yooK-2mZKHTZAhWRWts,5072 -requests/__pycache__/__init__.cpython-312.pyc,, -requests/__pycache__/__version__.cpython-312.pyc,, -requests/__pycache__/_internal_utils.cpython-312.pyc,, -requests/__pycache__/adapters.cpython-312.pyc,, -requests/__pycache__/api.cpython-312.pyc,, -requests/__pycache__/auth.cpython-312.pyc,, -requests/__pycache__/certs.cpython-312.pyc,, -requests/__pycache__/compat.cpython-312.pyc,, -requests/__pycache__/cookies.cpython-312.pyc,, -requests/__pycache__/exceptions.cpython-312.pyc,, -requests/__pycache__/help.cpython-312.pyc,, -requests/__pycache__/hooks.cpython-312.pyc,, -requests/__pycache__/models.cpython-312.pyc,, -requests/__pycache__/packages.cpython-312.pyc,, -requests/__pycache__/sessions.cpython-312.pyc,, -requests/__pycache__/status_codes.cpython-312.pyc,, -requests/__pycache__/structures.cpython-312.pyc,, -requests/__pycache__/utils.cpython-312.pyc,, -requests/__version__.py,sha256=QKDceK8K_ujqwDDc3oYrR0odOBYgKVOQQ5vFap_G_cg,435 -requests/_internal_utils.py,sha256=nMQymr4hs32TqVo5AbCrmcJEhvPUh7xXlluyqwslLiQ,1495 -requests/adapters.py,sha256=8nX113gbb123aUtx2ETkAN_6IsYX-M2fRoLGluTEcRk,26285 -requests/api.py,sha256=_Zb9Oa7tzVIizTKwFrPjDEY9ejtm_OnSRERnADxGsQs,6449 -requests/auth.py,sha256=kF75tqnLctZ9Mf_hm9TZIj4cQWnN5uxRz8oWsx5wmR0,10186 -requests/certs.py,sha256=Z9Sb410Anv6jUFTyss0jFFhU6xst8ctELqfy8Ev23gw,429 -requests/compat.py,sha256=J7sIjR6XoDGp5JTVzOxkK5fSoUVUa_Pjc7iRZhAWGmI,2142 -requests/cookies.py,sha256=bNi-iqEj4NPZ00-ob-rHvzkvObzN3lEpgw3g6paS3Xw,18590 -requests/exceptions.py,sha256=jJPS1UWATs86ShVUaLorTiJb1SaGuoNEWgICJep-VkY,4260 -requests/help.py,sha256=gPX5d_H7Xd88aDABejhqGgl9B1VFRTt5BmiYvL3PzIQ,3875 -requests/hooks.py,sha256=CiuysiHA39V5UfcCBXFIx83IrDpuwfN9RcTUgv28ftQ,733 -requests/models.py,sha256=MjZdZ4k7tnw-1nz5PKShjmPmqyk0L6DciwnFngb_Vk4,35510 -requests/packages.py,sha256=_g0gZ681UyAlKHRjH6kanbaoxx2eAb6qzcXiODyTIoc,904 -requests/sessions.py,sha256=Cl1dpEnOfwrzzPbku-emepNeN4Rt_0_58Iy2x-JGTm8,30503 -requests/status_codes.py,sha256=iJUAeA25baTdw-6PfD0eF4qhpINDJRJI-yaMqxs4LEI,4322 -requests/structures.py,sha256=-IbmhVz06S-5aPSZuUthZ6-6D9XOjRuTXHOabY041XM,2912 -requests/utils.py,sha256=WqU86rZ3wvhC-tQjWcjtH_HEKZwWB3iWCZV6SW5DEdQ,33213 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/REQUESTED b/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/REQUESTED deleted file mode 100644 index e69de29b..00000000 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/licenses/LICENSE b/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/licenses/LICENSE deleted file mode 100644 index 67db8588..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/licenses/LICENSE +++ /dev/null @@ -1,175 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/top_level.txt b/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/top_level.txt deleted file mode 100644 index f2293605..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests-2.32.5.dist-info/top_level.txt +++ /dev/null @@ -1 +0,0 @@ -requests diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/requests/__init__.py deleted file mode 100644 index 051cda13..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/__init__.py +++ /dev/null @@ -1,184 +0,0 @@ -# __ -# /__) _ _ _ _ _/ _ -# / ( (- (/ (/ (- _) / _) -# / - -""" -Requests HTTP Library -~~~~~~~~~~~~~~~~~~~~~ - -Requests is an HTTP library, written in Python, for human beings. -Basic GET usage: - - >>> import requests - >>> r = requests.get('https://www.python.org') - >>> r.status_code - 200 - >>> b'Python is a programming language' in r.content - True - -... or POST: - - >>> payload = dict(key1='value1', key2='value2') - >>> r = requests.post('https://httpbin.org/post', data=payload) - >>> print(r.text) - { - ... - "form": { - "key1": "value1", - "key2": "value2" - }, - ... - } - -The other HTTP methods are supported - see `requests.api`. Full documentation -is at . - -:copyright: (c) 2017 by Kenneth Reitz. -:license: Apache 2.0, see LICENSE for more details. -""" - -import warnings - -import urllib3 - -from .exceptions import RequestsDependencyWarning - -try: - from charset_normalizer import __version__ as charset_normalizer_version -except ImportError: - charset_normalizer_version = None - -try: - from chardet import __version__ as chardet_version -except ImportError: - chardet_version = None - - -def check_compatibility(urllib3_version, chardet_version, charset_normalizer_version): - urllib3_version = urllib3_version.split(".") - assert urllib3_version != ["dev"] # Verify urllib3 isn't installed from git. - - # Sometimes, urllib3 only reports its version as 16.1. - if len(urllib3_version) == 2: - urllib3_version.append("0") - - # Check urllib3 for compatibility. - major, minor, patch = urllib3_version # noqa: F811 - major, minor, patch = int(major), int(minor), int(patch) - # urllib3 >= 1.21.1 - assert major >= 1 - if major == 1: - assert minor >= 21 - - # Check charset_normalizer for compatibility. - if chardet_version: - major, minor, patch = chardet_version.split(".")[:3] - major, minor, patch = int(major), int(minor), int(patch) - # chardet_version >= 3.0.2, < 6.0.0 - assert (3, 0, 2) <= (major, minor, patch) < (6, 0, 0) - elif charset_normalizer_version: - major, minor, patch = charset_normalizer_version.split(".")[:3] - major, minor, patch = int(major), int(minor), int(patch) - # charset_normalizer >= 2.0.0 < 4.0.0 - assert (2, 0, 0) <= (major, minor, patch) < (4, 0, 0) - else: - warnings.warn( - "Unable to find acceptable character detection dependency " - "(chardet or charset_normalizer).", - RequestsDependencyWarning, - ) - - -def _check_cryptography(cryptography_version): - # cryptography < 1.3.4 - try: - cryptography_version = list(map(int, cryptography_version.split("."))) - except ValueError: - return - - if cryptography_version < [1, 3, 4]: - warning = "Old version of cryptography ({}) may cause slowdown.".format( - cryptography_version - ) - warnings.warn(warning, RequestsDependencyWarning) - - -# Check imported dependencies for compatibility. -try: - check_compatibility( - urllib3.__version__, chardet_version, charset_normalizer_version - ) -except (AssertionError, ValueError): - warnings.warn( - "urllib3 ({}) or chardet ({})/charset_normalizer ({}) doesn't match a supported " - "version!".format( - urllib3.__version__, chardet_version, charset_normalizer_version - ), - RequestsDependencyWarning, - ) - -# Attempt to enable urllib3's fallback for SNI support -# if the standard library doesn't support SNI or the -# 'ssl' library isn't available. -try: - try: - import ssl - except ImportError: - ssl = None - - if not getattr(ssl, "HAS_SNI", False): - from urllib3.contrib import pyopenssl - - pyopenssl.inject_into_urllib3() - - # Check cryptography version - from cryptography import __version__ as cryptography_version - - _check_cryptography(cryptography_version) -except ImportError: - pass - -# urllib3's DependencyWarnings should be silenced. -from urllib3.exceptions import DependencyWarning - -warnings.simplefilter("ignore", DependencyWarning) - -# Set default logging handler to avoid "No handler found" warnings. -import logging -from logging import NullHandler - -from . import packages, utils -from .__version__ import ( - __author__, - __author_email__, - __build__, - __cake__, - __copyright__, - __description__, - __license__, - __title__, - __url__, - __version__, -) -from .api import delete, get, head, options, patch, post, put, request -from .exceptions import ( - ConnectionError, - ConnectTimeout, - FileModeWarning, - HTTPError, - JSONDecodeError, - ReadTimeout, - RequestException, - Timeout, - TooManyRedirects, - URLRequired, -) -from .models import PreparedRequest, Request, Response -from .sessions import Session, session -from .status_codes import codes - -logging.getLogger(__name__).addHandler(NullHandler()) - -# FileModeWarnings go off per the default. -warnings.simplefilter("default", FileModeWarning, append=True) diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index c017550fb6b90421f7d8c767b582daed67d411db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5408 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc deleted file mode 100644 index 5dab93947506eb3330b58fac62997d0da90b961a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2012 zcmah}-D?zA6u&dGpR-9eu|`QWda-GA+nS{jDZ~$m&9)kd?`W^3Wfd`z6>O^+o2DE(g$Bk+Vr9L)N^M)f~lbw=FUCm{?5le z=XdXm&Q6`+$o#QU{5eX-!KN)=r5Y{N=u|U?zFc&yBDJ9cu1!6c!X3e&42YVCWhsRT&?1y7 zz&Jg@s|Yta`Yl&Xk>FYsydCk zi^!?nV^wMOs)5QVD=$8AmcXSZ#bY?`0`&@uV2SrBg9Ve>CE%QT^HkI-Aa$b3u;M1J zDhxQd!jwHggidjUooM=TToi%22v~xa^M)I6Ezg#*OzeXVO<}nR3_>?9SQyr1wP89_ zbTAy3ZRK=q`lCyiXw?mq5?%?Lh#}ar!(liy%xHn`aL47sbS+@AbU`c(0Js%vWELb^ z@dM4P3NDL_xxbpt7QHfL7u-A9ap1RwSCQ+J3`|R8u|!MRl2gc5YNF`5r-nZm$#O@) z$%<*+HWz?rTTIUGV)AgM7IX{GXcR({1y9a8FlZlsJd4v^^0!VB`yLH_^WH{$sNS{z zzP6Ph9qGFhTTznkeOP`_Uc0#7_0D~5Gu3r>VjE3})#d>TZH_FW@P8cP>IC^pN$$ZA zyUh@V)YP|$h{?4DIL85R`p*RUS;Y_x)kvLpztHmftb+mZ07RRrtyFuh#mf)=0!2t7#VNhZ0T zpp#*H=m@=q4sSJBG0G(EMrpzGN})jzHM!+DGaqLnOdc=L5FErpT0pSxTH_Qs$x_HM z<}tkOiB@u47M`+{wCipj*l@TJx@7xNJ%k@0#R>b`MLG^VDt@bNqz3)Spr0DtQX|pc zdZPPb`ayavzLB8y^jrV@ni}|vDAC?u()+hG{J-LoA7A$jk!Q&f?FVH<%P35~9GUJQ zZWy*_8AhNo2x5(=sloKP6r2(S{l;fwpI#a_F6PF@b5q8ZvCBDQDra1noyi4#Z{C}p znFEe?`KXZ2d$T^=Js_$5ht`D3+tIhsX z{^_fJ-=t3t)DNBZKb-RWr+sp8Gm`XE$Lf)|pFFx1)p}K*^lW$NN_xA$L+K4O{uld) BCZzxX diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc deleted file mode 100644 index 7724cdbb4b9fbab274c566b551d4d59de0e98ee6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27799 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc deleted file mode 100644 index 0787645abaa026f8ba0c0198e9eeb1a0cdb90315..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7192 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 NytH|6NRRmZe*i?~SiS%N diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc deleted file mode 100644 index e6767a14a91a3c46625473c13bb272d4d941eaa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13911 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 Qp{85s&-|XkC!zNL01eDxmjD0& diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc deleted file mode 100644 index 1937950e7de51d62e78c6ab74ca51b6b5c841ae0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 654 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc deleted file mode 100644 index 046020d1494d0451f2f4db69ecb5f7905f13f501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1040 zcmY*YL2DC16rS1LH0>s}TH8WJVL+>{V1gBU5D|nFtwIadQ=x39yOU&0nq6n6)yPJ2 z@Q`ZJh==wEcu+j~JG`_a5*G!*yHs*K^wtc6} zC0Psn^(rHw2sXISBvEBXJQ~tfUge4dPz*!@-tHA6NiibpQn9t1ZC~4N0MiRJe z+bb)A$uOu%wz6{BCLnj9XdfdbR%3!H=98ib)(9oN$~ik8>?e8s=jt^DYJzrWz-%K0 z_OBGsbL1HubQy9QC_*Ll(%4E{fHcq|Se$tGk%Q+Q9H(w9EZkbu4%=WgB{i4iU?E=) z)>yt&dyp?MSy4f#{qurRPvs$RBVXmK`LM3aLG5Dh!gOA8#m*9Zi0w3oH7C`b;p|M%gM8!GS1FaYqmYTIrkys>{`xmSfmBvO?$%f^jrHf z08R$9+XSI`v8{i_yXAHRih(jv?VhDK);(DGs6 z&N5JBMMe>G6q&E^Gu%i;sV3eUiBb(?Yt%xKv4|Yw;Y@+ckSebXlR=Y?6Q6sE2Q@0{ zB&Y#c;y@Y+IrA6^io~ai=Hfxu^=P%~x{eW>C8pwZnM$gZa0X(t!s>Avp< z1C{$!lw@paD7F(elZe!$=&>S1Xcq|YT`I{Dqkv6-%4IN3^eubj$*uP7=4>Z>^wlD3R`#-*Ba}>0chT_;UzyI1* mp)aSKBu{|ZH!;RP4I5kg6UZKGWt*vA0~nv{9?IbHWcwdgavKl; diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc deleted file mode 100644 index b4ba49114851af3ded094ce95779cda37a898eee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35489 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ℜ`?D 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc deleted file mode 100644 index 179f5ef78e306a1fb3ec0ec65e048572ca883b4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1127 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc deleted file mode 100644 index f76845f20ea3e95bf8b6879907d6d405cd671777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6019 zcmZ`+YjhmNmF}LGG^5d5vMqz`#xGfprI9TYh|M}YWFulM8*B{tL8~=YGb(GQd+6?w zG(t|Cgd`&C-H;ftypUjW4gnT&Hvcz&b~it=n|R&ZCr!@Tfe}852<2FtEFG*^@SoP)l$GWCn(3oavOlOgT zUW^=%=$g=2l*P{LEY1?Z2G$5nvJ|k1rGd??1=z~kfbFaU*vYzp-E0+bHCqGhVQYbR zuseahY#netGk|xo4Zw|T(|H~JY-U@)`q)-rKidZU0^1H8V1vL68v^cNJAuP&7w~TO zMc_T`Uf`G5Zr~nvAMh{OUf`G6{lEv7usPs!Y#w-qeHHjMb{6<`_6^`S+4I0}v2O#v z!xn%qu zJnJy-jgK47#A%-O4aRfA=AL00MXOX2cHYRjPSMCZ#iC;ywpD~K=eWk`(W8eA&$s-t z$Gw#A82%&|u3?vp+!a}?fEMt(-LSG*?s;OOzzr^7;~Ey6`@SnC%07I-6$DIVec{-a zTS*C@7rnt$YTv9?EEV|f-Kms;-`>4@4N)vPu5Y;f*)sQhuP(0%234OY`rrYEaAvxk z2^Z7qJEe?=hwk~DMuR@LN{+9zyLR0BIaVk7PCA*Yubo3fsnijt$Z4j=q&3ZrV!7Z8 zjG6+4+1t#RaQsQ5Tq<#QK=FbzgV(I(abudh9;S^b2*5#JZ+0wrdZ)h(|Bwc;Agz{?NjofPtu3sYplMkxf|i@KV(EPvQ=3)5oSEDOa^GO8ACsa%6isYf zCblE#$a!16eRk3j$etLGifGVYbf!5ov2=@;jj0tXL0pMshzGy{2$mt|^9 zL9#9oyQW;_%19T})rd>1EX(0+?Z{1dhBMWLC-22puK z^)L%OkCv$B9)=M#-$ccA*+>t%vju@3%xu9yZLh^Zd?K~6pc@A+cWrp_xQly-$z9iR zgY-%^7tJ^)s|V)=@dt9-DvJ$nUIi|z9M-}gNv^779!KhoRS|!ZvPjS=z2N{cSByVs zT0z98Rj1X4X05XPnH;R0^!<`qy%y09tL@kzy;3J`kfYVpmMbjG+A4UCY4f~;Qx*40 z@!zEH64>*(oXD!scs{O$c`p8kdRsGrOVf;CC{_hg6u!x4vz+4sA0+D<@xSCqonCwv z2R!uR|D-S)thc#8|a7<&7=e6%f{dCR#>pPdRw*U=bFU&UyD7=1;*pzGSXbWE%0KaI}l{gJuI`1sg6a^FP; zhXUR9 z@3c?PYQOH;^LG2RF0+J|jj7n0vkqOGsrGZUzXPp(z38}KQ`Z^P)%y51PRdQH3z(q}8mE-{3=JAg6Ol7b_a)gb z;i(%@e@u-M_YL6}xEI9LlLjr*WEjT%6!y3pu=^&2Mf^SK1^NAG&AQjq7t^n{T+?Fl zT`!~;VhgzsyYINBMU%T0_I;G@d}-g}-Iq39N%wu&x#qW>8!vZmyma6`L z(VwsSMdI(*UD+`DLC@&r#?h-$EuIb&T1&^(2E4f!F|e`zg!=}bG7fGz>z8qsyD|wX zXzq{Xo1BSCmujIVd86?@e5#ZSe6RZ!v~v4sYZdDY?@;Vc#SVtOimg*@UASH`0}P$rrO2kL zYO`Wn6w6%gQ*5g=TpRW)vQ4ShhhI=^yJBm@0mTNT;kq!R$WT?aL$RHTeK{OfY!_Il z#ZrmzZpH7{m3n>nfUfw1#Mg!o5g#GGHQYyhzvSrYVWOj??hPLyj>A$WV=z2G{88d} zh6jm{5kDLrB7T^7U-%gD$0c9ry>^7?QAK;gCx{*+>)!B5;!hDD3ZEu^ocQkW1o4x^ zcZR2kKSO+fXc8ZnoT6co1gDN1zY$ImFAyINi^Of>cZCk|67d7!v&3D=7w!l>qCTm& zhh^f^#P@_V#Ak_b4J*Xwi0=%aBR)@j+qE;qze@bx@N2~Hk5q^IK!mba;|~!ZA-+G{ zM|?l=J>kQ|M~QC?A0hrI@dv_##K(yDhKGnBCf*Z1M*MN&neYhlqc!^{h#w<nN;&k$c5n#9M6AG>NPel~G67txZPi!E0g`_9I%CEE1F O)h(Ky_*R3eEB_C4#V$ht diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc deleted file mode 100644 index 3c62c95511027f76fe680ea8b849d425947568c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5605 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc deleted file mode 100644 index cb1ff63f59ac1fd75dbf63c306993f63ff0d2c7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36166 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 "(typing.Dict[str, typing.Any], typing.Dict[str, typing.Any])": - host_params = {} - pool_kwargs = {} - parsed_request_url = urlparse(request.url) - scheme = parsed_request_url.scheme.lower() - port = parsed_request_url.port - - cert_reqs = "CERT_REQUIRED" - if verify is False: - cert_reqs = "CERT_NONE" - elif isinstance(verify, str): - if not os.path.isdir(verify): - pool_kwargs["ca_certs"] = verify - else: - pool_kwargs["ca_cert_dir"] = verify - pool_kwargs["cert_reqs"] = cert_reqs - if client_cert is not None: - if isinstance(client_cert, tuple) and len(client_cert) == 2: - pool_kwargs["cert_file"] = client_cert[0] - pool_kwargs["key_file"] = client_cert[1] - else: - # According to our docs, we allow users to specify just the client - # cert path - pool_kwargs["cert_file"] = client_cert - host_params = { - "scheme": scheme, - "host": parsed_request_url.hostname, - "port": port, - } - return host_params, pool_kwargs - - -class BaseAdapter: - """The Base Transport Adapter""" - - def __init__(self): - super().__init__() - - def send( - self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None - ): - """Sends PreparedRequest object. Returns Response object. - - :param request: The :class:`PreparedRequest ` being sent. - :param stream: (optional) Whether to stream the request content. - :param timeout: (optional) How long to wait for the server to send - data before giving up, as a float, or a :ref:`(connect timeout, - read timeout) ` tuple. - :type timeout: float or tuple - :param verify: (optional) Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use - :param cert: (optional) Any user-provided SSL certificate to be trusted. - :param proxies: (optional) The proxies dictionary to apply to the request. - """ - raise NotImplementedError - - def close(self): - """Cleans up adapter specific items.""" - raise NotImplementedError - - -class HTTPAdapter(BaseAdapter): - """The built-in HTTP Adapter for urllib3. - - Provides a general-case interface for Requests sessions to contact HTTP and - HTTPS urls by implementing the Transport Adapter interface. This class will - usually be created by the :class:`Session ` class under the - covers. - - :param pool_connections: The number of urllib3 connection pools to cache. - :param pool_maxsize: The maximum number of connections to save in the pool. - :param max_retries: The maximum number of retries each connection - should attempt. Note, this applies only to failed DNS lookups, socket - connections and connection timeouts, never to requests where data has - made it to the server. By default, Requests does not retry failed - connections. If you need granular control over the conditions under - which we retry a request, import urllib3's ``Retry`` class and pass - that instead. - :param pool_block: Whether the connection pool should block for connections. - - Usage:: - - >>> import requests - >>> s = requests.Session() - >>> a = requests.adapters.HTTPAdapter(max_retries=3) - >>> s.mount('http://', a) - """ - - __attrs__ = [ - "max_retries", - "config", - "_pool_connections", - "_pool_maxsize", - "_pool_block", - ] - - def __init__( - self, - pool_connections=DEFAULT_POOLSIZE, - pool_maxsize=DEFAULT_POOLSIZE, - max_retries=DEFAULT_RETRIES, - pool_block=DEFAULT_POOLBLOCK, - ): - if max_retries == DEFAULT_RETRIES: - self.max_retries = Retry(0, read=False) - else: - self.max_retries = Retry.from_int(max_retries) - self.config = {} - self.proxy_manager = {} - - super().__init__() - - self._pool_connections = pool_connections - self._pool_maxsize = pool_maxsize - self._pool_block = pool_block - - self.init_poolmanager(pool_connections, pool_maxsize, block=pool_block) - - def __getstate__(self): - return {attr: getattr(self, attr, None) for attr in self.__attrs__} - - def __setstate__(self, state): - # Can't handle by adding 'proxy_manager' to self.__attrs__ because - # self.poolmanager uses a lambda function, which isn't pickleable. - self.proxy_manager = {} - self.config = {} - - for attr, value in state.items(): - setattr(self, attr, value) - - self.init_poolmanager( - self._pool_connections, self._pool_maxsize, block=self._pool_block - ) - - def init_poolmanager( - self, connections, maxsize, block=DEFAULT_POOLBLOCK, **pool_kwargs - ): - """Initializes a urllib3 PoolManager. - - This method should not be called from user code, and is only - exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param connections: The number of urllib3 connection pools to cache. - :param maxsize: The maximum number of connections to save in the pool. - :param block: Block when no free connections are available. - :param pool_kwargs: Extra keyword arguments used to initialize the Pool Manager. - """ - # save these values for pickling - self._pool_connections = connections - self._pool_maxsize = maxsize - self._pool_block = block - - self.poolmanager = PoolManager( - num_pools=connections, - maxsize=maxsize, - block=block, - **pool_kwargs, - ) - - def proxy_manager_for(self, proxy, **proxy_kwargs): - """Return urllib3 ProxyManager for the given proxy. - - This method should not be called from user code, and is only - exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param proxy: The proxy to return a urllib3 ProxyManager for. - :param proxy_kwargs: Extra keyword arguments used to configure the Proxy Manager. - :returns: ProxyManager - :rtype: urllib3.ProxyManager - """ - if proxy in self.proxy_manager: - manager = self.proxy_manager[proxy] - elif proxy.lower().startswith("socks"): - username, password = get_auth_from_url(proxy) - manager = self.proxy_manager[proxy] = SOCKSProxyManager( - proxy, - username=username, - password=password, - num_pools=self._pool_connections, - maxsize=self._pool_maxsize, - block=self._pool_block, - **proxy_kwargs, - ) - else: - proxy_headers = self.proxy_headers(proxy) - manager = self.proxy_manager[proxy] = proxy_from_url( - proxy, - proxy_headers=proxy_headers, - num_pools=self._pool_connections, - maxsize=self._pool_maxsize, - block=self._pool_block, - **proxy_kwargs, - ) - - return manager - - def cert_verify(self, conn, url, verify, cert): - """Verify a SSL certificate. This method should not be called from user - code, and is only exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param conn: The urllib3 connection object associated with the cert. - :param url: The requested URL. - :param verify: Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use - :param cert: The SSL certificate to verify. - """ - if url.lower().startswith("https") and verify: - cert_loc = None - - # Allow self-specified cert location. - if verify is not True: - cert_loc = verify - - if not cert_loc: - cert_loc = extract_zipped_paths(DEFAULT_CA_BUNDLE_PATH) - - if not cert_loc or not os.path.exists(cert_loc): - raise OSError( - f"Could not find a suitable TLS CA certificate bundle, " - f"invalid path: {cert_loc}" - ) - - conn.cert_reqs = "CERT_REQUIRED" - - if not os.path.isdir(cert_loc): - conn.ca_certs = cert_loc - else: - conn.ca_cert_dir = cert_loc - else: - conn.cert_reqs = "CERT_NONE" - conn.ca_certs = None - conn.ca_cert_dir = None - - if cert: - if not isinstance(cert, basestring): - conn.cert_file = cert[0] - conn.key_file = cert[1] - else: - conn.cert_file = cert - conn.key_file = None - if conn.cert_file and not os.path.exists(conn.cert_file): - raise OSError( - f"Could not find the TLS certificate file, " - f"invalid path: {conn.cert_file}" - ) - if conn.key_file and not os.path.exists(conn.key_file): - raise OSError( - f"Could not find the TLS key file, invalid path: {conn.key_file}" - ) - - def build_response(self, req, resp): - """Builds a :class:`Response ` object from a urllib3 - response. This should not be called from user code, and is only exposed - for use when subclassing the - :class:`HTTPAdapter ` - - :param req: The :class:`PreparedRequest ` used to generate the response. - :param resp: The urllib3 response object. - :rtype: requests.Response - """ - response = Response() - - # Fallback to None if there's no status_code, for whatever reason. - response.status_code = getattr(resp, "status", None) - - # Make headers case-insensitive. - response.headers = CaseInsensitiveDict(getattr(resp, "headers", {})) - - # Set encoding. - response.encoding = get_encoding_from_headers(response.headers) - response.raw = resp - response.reason = response.raw.reason - - if isinstance(req.url, bytes): - response.url = req.url.decode("utf-8") - else: - response.url = req.url - - # Add new cookies from the server. - extract_cookies_to_jar(response.cookies, req, resp) - - # Give the Response some context. - response.request = req - response.connection = self - - return response - - def build_connection_pool_key_attributes(self, request, verify, cert=None): - """Build the PoolKey attributes used by urllib3 to return a connection. - - This looks at the PreparedRequest, the user-specified verify value, - and the value of the cert parameter to determine what PoolKey values - to use to select a connection from a given urllib3 Connection Pool. - - The SSL related pool key arguments are not consistently set. As of - this writing, use the following to determine what keys may be in that - dictionary: - - * If ``verify`` is ``True``, ``"ssl_context"`` will be set and will be the - default Requests SSL Context - * If ``verify`` is ``False``, ``"ssl_context"`` will not be set but - ``"cert_reqs"`` will be set - * If ``verify`` is a string, (i.e., it is a user-specified trust bundle) - ``"ca_certs"`` will be set if the string is not a directory recognized - by :py:func:`os.path.isdir`, otherwise ``"ca_cert_dir"`` will be - set. - * If ``"cert"`` is specified, ``"cert_file"`` will always be set. If - ``"cert"`` is a tuple with a second item, ``"key_file"`` will also - be present - - To override these settings, one may subclass this class, call this - method and use the above logic to change parameters as desired. For - example, if one wishes to use a custom :py:class:`ssl.SSLContext` one - must both set ``"ssl_context"`` and based on what else they require, - alter the other keys to ensure the desired behaviour. - - :param request: - The PreparedReqest being sent over the connection. - :type request: - :class:`~requests.models.PreparedRequest` - :param verify: - Either a boolean, in which case it controls whether - we verify the server's TLS certificate, or a string, in which case it - must be a path to a CA bundle to use. - :param cert: - (optional) Any user-provided SSL certificate for client - authentication (a.k.a., mTLS). This may be a string (i.e., just - the path to a file which holds both certificate and key) or a - tuple of length 2 with the certificate file path and key file - path. - :returns: - A tuple of two dictionaries. The first is the "host parameters" - portion of the Pool Key including scheme, hostname, and port. The - second is a dictionary of SSLContext related parameters. - """ - return _urllib3_request_context(request, verify, cert, self.poolmanager) - - def get_connection_with_tls_context(self, request, verify, proxies=None, cert=None): - """Returns a urllib3 connection for the given request and TLS settings. - This should not be called from user code, and is only exposed for use - when subclassing the :class:`HTTPAdapter `. - - :param request: - The :class:`PreparedRequest ` object to be sent - over the connection. - :param verify: - Either a boolean, in which case it controls whether we verify the - server's TLS certificate, or a string, in which case it must be a - path to a CA bundle to use. - :param proxies: - (optional) The proxies dictionary to apply to the request. - :param cert: - (optional) Any user-provided SSL certificate to be used for client - authentication (a.k.a., mTLS). - :rtype: - urllib3.ConnectionPool - """ - proxy = select_proxy(request.url, proxies) - try: - host_params, pool_kwargs = self.build_connection_pool_key_attributes( - request, - verify, - cert, - ) - except ValueError as e: - raise InvalidURL(e, request=request) - if proxy: - proxy = prepend_scheme_if_needed(proxy, "http") - proxy_url = parse_url(proxy) - if not proxy_url.host: - raise InvalidProxyURL( - "Please check proxy URL. It is malformed " - "and could be missing the host." - ) - proxy_manager = self.proxy_manager_for(proxy) - conn = proxy_manager.connection_from_host( - **host_params, pool_kwargs=pool_kwargs - ) - else: - # Only scheme should be lower case - conn = self.poolmanager.connection_from_host( - **host_params, pool_kwargs=pool_kwargs - ) - - return conn - - def get_connection(self, url, proxies=None): - """DEPRECATED: Users should move to `get_connection_with_tls_context` - for all subclasses of HTTPAdapter using Requests>=2.32.2. - - Returns a urllib3 connection for the given URL. This should not be - called from user code, and is only exposed for use when subclassing the - :class:`HTTPAdapter `. - - :param url: The URL to connect to. - :param proxies: (optional) A Requests-style dictionary of proxies used on this request. - :rtype: urllib3.ConnectionPool - """ - warnings.warn( - ( - "`get_connection` has been deprecated in favor of " - "`get_connection_with_tls_context`. Custom HTTPAdapter subclasses " - "will need to migrate for Requests>=2.32.2. Please see " - "https://github.com/psf/requests/pull/6710 for more details." - ), - DeprecationWarning, - ) - proxy = select_proxy(url, proxies) - - if proxy: - proxy = prepend_scheme_if_needed(proxy, "http") - proxy_url = parse_url(proxy) - if not proxy_url.host: - raise InvalidProxyURL( - "Please check proxy URL. It is malformed " - "and could be missing the host." - ) - proxy_manager = self.proxy_manager_for(proxy) - conn = proxy_manager.connection_from_url(url) - else: - # Only scheme should be lower case - parsed = urlparse(url) - url = parsed.geturl() - conn = self.poolmanager.connection_from_url(url) - - return conn - - def close(self): - """Disposes of any internal state. - - Currently, this closes the PoolManager and any active ProxyManager, - which closes any pooled connections. - """ - self.poolmanager.clear() - for proxy in self.proxy_manager.values(): - proxy.clear() - - def request_url(self, request, proxies): - """Obtain the url to use when making the final request. - - If the message is being sent through a HTTP proxy, the full URL has to - be used. Otherwise, we should only use the path portion of the URL. - - This should not be called from user code, and is only exposed for use - when subclassing the - :class:`HTTPAdapter `. - - :param request: The :class:`PreparedRequest ` being sent. - :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs. - :rtype: str - """ - proxy = select_proxy(request.url, proxies) - scheme = urlparse(request.url).scheme - - is_proxied_http_request = proxy and scheme != "https" - using_socks_proxy = False - if proxy: - proxy_scheme = urlparse(proxy).scheme.lower() - using_socks_proxy = proxy_scheme.startswith("socks") - - url = request.path_url - if url.startswith("//"): # Don't confuse urllib3 - url = f"/{url.lstrip('/')}" - - if is_proxied_http_request and not using_socks_proxy: - url = urldefragauth(request.url) - - return url - - def add_headers(self, request, **kwargs): - """Add any headers needed by the connection. As of v2.0 this does - nothing by default, but is left for overriding by users that subclass - the :class:`HTTPAdapter `. - - This should not be called from user code, and is only exposed for use - when subclassing the - :class:`HTTPAdapter `. - - :param request: The :class:`PreparedRequest ` to add headers to. - :param kwargs: The keyword arguments from the call to send(). - """ - pass - - def proxy_headers(self, proxy): - """Returns a dictionary of the headers to add to any request sent - through a proxy. This works with urllib3 magic to ensure that they are - correctly sent to the proxy, rather than in a tunnelled request if - CONNECT is being used. - - This should not be called from user code, and is only exposed for use - when subclassing the - :class:`HTTPAdapter `. - - :param proxy: The url of the proxy being used for this request. - :rtype: dict - """ - headers = {} - username, password = get_auth_from_url(proxy) - - if username: - headers["Proxy-Authorization"] = _basic_auth_str(username, password) - - return headers - - def send( - self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None - ): - """Sends PreparedRequest object. Returns Response object. - - :param request: The :class:`PreparedRequest ` being sent. - :param stream: (optional) Whether to stream the request content. - :param timeout: (optional) How long to wait for the server to send - data before giving up, as a float, or a :ref:`(connect timeout, - read timeout) ` tuple. - :type timeout: float or tuple or urllib3 Timeout object - :param verify: (optional) Either a boolean, in which case it controls whether - we verify the server's TLS certificate, or a string, in which case it - must be a path to a CA bundle to use - :param cert: (optional) Any user-provided SSL certificate to be trusted. - :param proxies: (optional) The proxies dictionary to apply to the request. - :rtype: requests.Response - """ - - try: - conn = self.get_connection_with_tls_context( - request, verify, proxies=proxies, cert=cert - ) - except LocationValueError as e: - raise InvalidURL(e, request=request) - - self.cert_verify(conn, request.url, verify, cert) - url = self.request_url(request, proxies) - self.add_headers( - request, - stream=stream, - timeout=timeout, - verify=verify, - cert=cert, - proxies=proxies, - ) - - chunked = not (request.body is None or "Content-Length" in request.headers) - - if isinstance(timeout, tuple): - try: - connect, read = timeout - timeout = TimeoutSauce(connect=connect, read=read) - except ValueError: - raise ValueError( - f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, " - f"or a single float to set both timeouts to the same value." - ) - elif isinstance(timeout, TimeoutSauce): - pass - else: - timeout = TimeoutSauce(connect=timeout, read=timeout) - - try: - resp = conn.urlopen( - method=request.method, - url=url, - body=request.body, - headers=request.headers, - redirect=False, - assert_same_host=False, - preload_content=False, - decode_content=False, - retries=self.max_retries, - timeout=timeout, - chunked=chunked, - ) - - except (ProtocolError, OSError) as err: - raise ConnectionError(err, request=request) - - except MaxRetryError as e: - if isinstance(e.reason, ConnectTimeoutError): - # TODO: Remove this in 3.0.0: see #2811 - if not isinstance(e.reason, NewConnectionError): - raise ConnectTimeout(e, request=request) - - if isinstance(e.reason, ResponseError): - raise RetryError(e, request=request) - - if isinstance(e.reason, _ProxyError): - raise ProxyError(e, request=request) - - if isinstance(e.reason, _SSLError): - # This branch is for urllib3 v1.22 and later. - raise SSLError(e, request=request) - - raise ConnectionError(e, request=request) - - except ClosedPoolError as e: - raise ConnectionError(e, request=request) - - except _ProxyError as e: - raise ProxyError(e) - - except (_SSLError, _HTTPError) as e: - if isinstance(e, _SSLError): - # This branch is for urllib3 versions earlier than v1.22 - raise SSLError(e, request=request) - elif isinstance(e, ReadTimeoutError): - raise ReadTimeout(e, request=request) - elif isinstance(e, _InvalidHeader): - raise InvalidHeader(e, request=request) - else: - raise - - return self.build_response(request, resp) diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/api.py b/gnx-react/venv/lib/python3.12/site-packages/requests/api.py deleted file mode 100644 index 59607445..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/api.py +++ /dev/null @@ -1,157 +0,0 @@ -""" -requests.api -~~~~~~~~~~~~ - -This module implements the Requests API. - -:copyright: (c) 2012 by Kenneth Reitz. -:license: Apache2, see LICENSE for more details. -""" - -from . import sessions - - -def request(method, url, **kwargs): - """Constructs and sends a :class:`Request `. - - :param method: method for the new :class:`Request` object: ``GET``, ``OPTIONS``, ``HEAD``, ``POST``, ``PUT``, ``PATCH``, or ``DELETE``. - :param url: URL for the new :class:`Request` object. - :param params: (optional) Dictionary, list of tuples or bytes to send - in the query string for the :class:`Request`. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param headers: (optional) Dictionary of HTTP Headers to send with the :class:`Request`. - :param cookies: (optional) Dict or CookieJar object to send with the :class:`Request`. - :param files: (optional) Dictionary of ``'name': file-like-objects`` (or ``{'name': file-tuple}``) for multipart encoding upload. - ``file-tuple`` can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` - or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content_type'`` is a string - defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers - to add for the file. - :param auth: (optional) Auth tuple to enable Basic/Digest/Custom HTTP Auth. - :param timeout: (optional) How many seconds to wait for the server to send data - before giving up, as a float, or a :ref:`(connect timeout, read - timeout) ` tuple. - :type timeout: float or tuple - :param allow_redirects: (optional) Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``. - :type allow_redirects: bool - :param proxies: (optional) Dictionary mapping protocol to the URL of the proxy. - :param verify: (optional) Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use. Defaults to ``True``. - :param stream: (optional) if ``False``, the response content will be immediately downloaded. - :param cert: (optional) if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. - :return: :class:`Response ` object - :rtype: requests.Response - - Usage:: - - >>> import requests - >>> req = requests.request('GET', 'https://httpbin.org/get') - >>> req - - """ - - # By using the 'with' statement we are sure the session is closed, thus we - # avoid leaving sockets open which can trigger a ResourceWarning in some - # cases, and look like a memory leak in others. - with sessions.Session() as session: - return session.request(method=method, url=url, **kwargs) - - -def get(url, params=None, **kwargs): - r"""Sends a GET request. - - :param url: URL for the new :class:`Request` object. - :param params: (optional) Dictionary, list of tuples or bytes to send - in the query string for the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("get", url, params=params, **kwargs) - - -def options(url, **kwargs): - r"""Sends an OPTIONS request. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("options", url, **kwargs) - - -def head(url, **kwargs): - r"""Sends a HEAD request. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. If - `allow_redirects` is not provided, it will be set to `False` (as - opposed to the default :meth:`request` behavior). - :return: :class:`Response ` object - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", False) - return request("head", url, **kwargs) - - -def post(url, data=None, json=None, **kwargs): - r"""Sends a POST request. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("post", url, data=data, json=json, **kwargs) - - -def put(url, data=None, **kwargs): - r"""Sends a PUT request. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("put", url, data=data, **kwargs) - - -def patch(url, data=None, **kwargs): - r"""Sends a PATCH request. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) A JSON serializable Python object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("patch", url, data=data, **kwargs) - - -def delete(url, **kwargs): - r"""Sends a DELETE request. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :return: :class:`Response ` object - :rtype: requests.Response - """ - - return request("delete", url, **kwargs) diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/auth.py b/gnx-react/venv/lib/python3.12/site-packages/requests/auth.py deleted file mode 100644 index 4a7ce6dc..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/auth.py +++ /dev/null @@ -1,314 +0,0 @@ -""" -requests.auth -~~~~~~~~~~~~~ - -This module contains the authentication handlers for Requests. -""" - -import hashlib -import os -import re -import threading -import time -import warnings -from base64 import b64encode - -from ._internal_utils import to_native_string -from .compat import basestring, str, urlparse -from .cookies import extract_cookies_to_jar -from .utils import parse_dict_header - -CONTENT_TYPE_FORM_URLENCODED = "application/x-www-form-urlencoded" -CONTENT_TYPE_MULTI_PART = "multipart/form-data" - - -def _basic_auth_str(username, password): - """Returns a Basic Auth string.""" - - # "I want us to put a big-ol' comment on top of it that - # says that this behaviour is dumb but we need to preserve - # it because people are relying on it." - # - Lukasa - # - # These are here solely to maintain backwards compatibility - # for things like ints. This will be removed in 3.0.0. - if not isinstance(username, basestring): - warnings.warn( - "Non-string usernames will no longer be supported in Requests " - "3.0.0. Please convert the object you've passed in ({!r}) to " - "a string or bytes object in the near future to avoid " - "problems.".format(username), - category=DeprecationWarning, - ) - username = str(username) - - if not isinstance(password, basestring): - warnings.warn( - "Non-string passwords will no longer be supported in Requests " - "3.0.0. Please convert the object you've passed in ({!r}) to " - "a string or bytes object in the near future to avoid " - "problems.".format(type(password)), - category=DeprecationWarning, - ) - password = str(password) - # -- End Removal -- - - if isinstance(username, str): - username = username.encode("latin1") - - if isinstance(password, str): - password = password.encode("latin1") - - authstr = "Basic " + to_native_string( - b64encode(b":".join((username, password))).strip() - ) - - return authstr - - -class AuthBase: - """Base class that all auth implementations derive from""" - - def __call__(self, r): - raise NotImplementedError("Auth hooks must be callable.") - - -class HTTPBasicAuth(AuthBase): - """Attaches HTTP Basic Authentication to the given Request object.""" - - def __init__(self, username, password): - self.username = username - self.password = password - - def __eq__(self, other): - return all( - [ - self.username == getattr(other, "username", None), - self.password == getattr(other, "password", None), - ] - ) - - def __ne__(self, other): - return not self == other - - def __call__(self, r): - r.headers["Authorization"] = _basic_auth_str(self.username, self.password) - return r - - -class HTTPProxyAuth(HTTPBasicAuth): - """Attaches HTTP Proxy Authentication to a given Request object.""" - - def __call__(self, r): - r.headers["Proxy-Authorization"] = _basic_auth_str(self.username, self.password) - return r - - -class HTTPDigestAuth(AuthBase): - """Attaches HTTP Digest Authentication to the given Request object.""" - - def __init__(self, username, password): - self.username = username - self.password = password - # Keep state in per-thread local storage - self._thread_local = threading.local() - - def init_per_thread_state(self): - # Ensure state is initialized just once per-thread - if not hasattr(self._thread_local, "init"): - self._thread_local.init = True - self._thread_local.last_nonce = "" - self._thread_local.nonce_count = 0 - self._thread_local.chal = {} - self._thread_local.pos = None - self._thread_local.num_401_calls = None - - def build_digest_header(self, method, url): - """ - :rtype: str - """ - - realm = self._thread_local.chal["realm"] - nonce = self._thread_local.chal["nonce"] - qop = self._thread_local.chal.get("qop") - algorithm = self._thread_local.chal.get("algorithm") - opaque = self._thread_local.chal.get("opaque") - hash_utf8 = None - - if algorithm is None: - _algorithm = "MD5" - else: - _algorithm = algorithm.upper() - # lambdas assume digest modules are imported at the top level - if _algorithm == "MD5" or _algorithm == "MD5-SESS": - - def md5_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.md5(x).hexdigest() - - hash_utf8 = md5_utf8 - elif _algorithm == "SHA": - - def sha_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.sha1(x).hexdigest() - - hash_utf8 = sha_utf8 - elif _algorithm == "SHA-256": - - def sha256_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.sha256(x).hexdigest() - - hash_utf8 = sha256_utf8 - elif _algorithm == "SHA-512": - - def sha512_utf8(x): - if isinstance(x, str): - x = x.encode("utf-8") - return hashlib.sha512(x).hexdigest() - - hash_utf8 = sha512_utf8 - - KD = lambda s, d: hash_utf8(f"{s}:{d}") # noqa:E731 - - if hash_utf8 is None: - return None - - # XXX not implemented yet - entdig = None - p_parsed = urlparse(url) - #: path is request-uri defined in RFC 2616 which should not be empty - path = p_parsed.path or "/" - if p_parsed.query: - path += f"?{p_parsed.query}" - - A1 = f"{self.username}:{realm}:{self.password}" - A2 = f"{method}:{path}" - - HA1 = hash_utf8(A1) - HA2 = hash_utf8(A2) - - if nonce == self._thread_local.last_nonce: - self._thread_local.nonce_count += 1 - else: - self._thread_local.nonce_count = 1 - ncvalue = f"{self._thread_local.nonce_count:08x}" - s = str(self._thread_local.nonce_count).encode("utf-8") - s += nonce.encode("utf-8") - s += time.ctime().encode("utf-8") - s += os.urandom(8) - - cnonce = hashlib.sha1(s).hexdigest()[:16] - if _algorithm == "MD5-SESS": - HA1 = hash_utf8(f"{HA1}:{nonce}:{cnonce}") - - if not qop: - respdig = KD(HA1, f"{nonce}:{HA2}") - elif qop == "auth" or "auth" in qop.split(","): - noncebit = f"{nonce}:{ncvalue}:{cnonce}:auth:{HA2}" - respdig = KD(HA1, noncebit) - else: - # XXX handle auth-int. - return None - - self._thread_local.last_nonce = nonce - - # XXX should the partial digests be encoded too? - base = ( - f'username="{self.username}", realm="{realm}", nonce="{nonce}", ' - f'uri="{path}", response="{respdig}"' - ) - if opaque: - base += f', opaque="{opaque}"' - if algorithm: - base += f', algorithm="{algorithm}"' - if entdig: - base += f', digest="{entdig}"' - if qop: - base += f', qop="auth", nc={ncvalue}, cnonce="{cnonce}"' - - return f"Digest {base}" - - def handle_redirect(self, r, **kwargs): - """Reset num_401_calls counter on redirects.""" - if r.is_redirect: - self._thread_local.num_401_calls = 1 - - def handle_401(self, r, **kwargs): - """ - Takes the given response and tries digest-auth, if needed. - - :rtype: requests.Response - """ - - # If response is not 4xx, do not auth - # See https://github.com/psf/requests/issues/3772 - if not 400 <= r.status_code < 500: - self._thread_local.num_401_calls = 1 - return r - - if self._thread_local.pos is not None: - # Rewind the file position indicator of the body to where - # it was to resend the request. - r.request.body.seek(self._thread_local.pos) - s_auth = r.headers.get("www-authenticate", "") - - if "digest" in s_auth.lower() and self._thread_local.num_401_calls < 2: - self._thread_local.num_401_calls += 1 - pat = re.compile(r"digest ", flags=re.IGNORECASE) - self._thread_local.chal = parse_dict_header(pat.sub("", s_auth, count=1)) - - # Consume content and release the original connection - # to allow our new request to reuse the same one. - r.content - r.close() - prep = r.request.copy() - extract_cookies_to_jar(prep._cookies, r.request, r.raw) - prep.prepare_cookies(prep._cookies) - - prep.headers["Authorization"] = self.build_digest_header( - prep.method, prep.url - ) - _r = r.connection.send(prep, **kwargs) - _r.history.append(r) - _r.request = prep - - return _r - - self._thread_local.num_401_calls = 1 - return r - - def __call__(self, r): - # Initialize per-thread state, if needed - self.init_per_thread_state() - # If we have a saved nonce, skip the 401 - if self._thread_local.last_nonce: - r.headers["Authorization"] = self.build_digest_header(r.method, r.url) - try: - self._thread_local.pos = r.body.tell() - except AttributeError: - # In the case of HTTPDigestAuth being reused and the body of - # the previous request was a file-like object, pos has the - # file position of the previous body. Ensure it's set to - # None. - self._thread_local.pos = None - r.register_hook("response", self.handle_401) - r.register_hook("response", self.handle_redirect) - self._thread_local.num_401_calls = 1 - - return r - - def __eq__(self, other): - return all( - [ - self.username == getattr(other, "username", None), - self.password == getattr(other, "password", None), - ] - ) - - def __ne__(self, other): - return not self == other diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/certs.py b/gnx-react/venv/lib/python3.12/site-packages/requests/certs.py deleted file mode 100644 index be422c3e..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/certs.py +++ /dev/null @@ -1,17 +0,0 @@ -#!/usr/bin/env python - -""" -requests.certs -~~~~~~~~~~~~~~ - -This module returns the preferred default CA certificate bundle. There is -only one — the one from the certifi package. - -If you are packaging Requests, e.g., for a Linux distribution or a managed -environment, you can change the definition of where() to return a separately -packaged CA bundle. -""" -from certifi import where - -if __name__ == "__main__": - print(where()) diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/compat.py b/gnx-react/venv/lib/python3.12/site-packages/requests/compat.py deleted file mode 100644 index 7f9d7543..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/compat.py +++ /dev/null @@ -1,106 +0,0 @@ -""" -requests.compat -~~~~~~~~~~~~~~~ - -This module previously handled import compatibility issues -between Python 2 and Python 3. It remains for backwards -compatibility until the next major version. -""" - -import importlib -import sys - -# ------- -# urllib3 -# ------- -from urllib3 import __version__ as urllib3_version - -# Detect which major version of urllib3 is being used. -try: - is_urllib3_1 = int(urllib3_version.split(".")[0]) == 1 -except (TypeError, AttributeError): - # If we can't discern a version, prefer old functionality. - is_urllib3_1 = True - -# ------------------- -# Character Detection -# ------------------- - - -def _resolve_char_detection(): - """Find supported character detection libraries.""" - chardet = None - for lib in ("chardet", "charset_normalizer"): - if chardet is None: - try: - chardet = importlib.import_module(lib) - except ImportError: - pass - return chardet - - -chardet = _resolve_char_detection() - -# ------- -# Pythons -# ------- - -# Syntax sugar. -_ver = sys.version_info - -#: Python 2.x? -is_py2 = _ver[0] == 2 - -#: Python 3.x? -is_py3 = _ver[0] == 3 - -# json/simplejson module import resolution -has_simplejson = False -try: - import simplejson as json - - has_simplejson = True -except ImportError: - import json - -if has_simplejson: - from simplejson import JSONDecodeError -else: - from json import JSONDecodeError - -# Keep OrderedDict for backwards compatibility. -from collections import OrderedDict -from collections.abc import Callable, Mapping, MutableMapping -from http import cookiejar as cookielib -from http.cookies import Morsel -from io import StringIO - -# -------------- -# Legacy Imports -# -------------- -from urllib.parse import ( - quote, - quote_plus, - unquote, - unquote_plus, - urldefrag, - urlencode, - urljoin, - urlparse, - urlsplit, - urlunparse, -) -from urllib.request import ( - getproxies, - getproxies_environment, - parse_http_list, - proxy_bypass, - proxy_bypass_environment, -) - -builtin_str = str -str = str -bytes = bytes -basestring = (str, bytes) -numeric_types = (int, float) -integer_types = (int,) diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/cookies.py b/gnx-react/venv/lib/python3.12/site-packages/requests/cookies.py deleted file mode 100644 index f69d0cda..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/cookies.py +++ /dev/null @@ -1,561 +0,0 @@ -""" -requests.cookies -~~~~~~~~~~~~~~~~ - -Compatibility code to be able to use `http.cookiejar.CookieJar` with requests. - -requests.utils imports from here, so be careful with imports. -""" - -import calendar -import copy -import time - -from ._internal_utils import to_native_string -from .compat import Morsel, MutableMapping, cookielib, urlparse, urlunparse - -try: - import threading -except ImportError: - import dummy_threading as threading - - -class MockRequest: - """Wraps a `requests.Request` to mimic a `urllib2.Request`. - - The code in `http.cookiejar.CookieJar` expects this interface in order to correctly - manage cookie policies, i.e., determine whether a cookie can be set, given the - domains of the request and the cookie. - - The original request object is read-only. The client is responsible for collecting - the new headers via `get_new_headers()` and interpreting them appropriately. You - probably want `get_cookie_header`, defined below. - """ - - def __init__(self, request): - self._r = request - self._new_headers = {} - self.type = urlparse(self._r.url).scheme - - def get_type(self): - return self.type - - def get_host(self): - return urlparse(self._r.url).netloc - - def get_origin_req_host(self): - return self.get_host() - - def get_full_url(self): - # Only return the response's URL if the user hadn't set the Host - # header - if not self._r.headers.get("Host"): - return self._r.url - # If they did set it, retrieve it and reconstruct the expected domain - host = to_native_string(self._r.headers["Host"], encoding="utf-8") - parsed = urlparse(self._r.url) - # Reconstruct the URL as we expect it - return urlunparse( - [ - parsed.scheme, - host, - parsed.path, - parsed.params, - parsed.query, - parsed.fragment, - ] - ) - - def is_unverifiable(self): - return True - - def has_header(self, name): - return name in self._r.headers or name in self._new_headers - - def get_header(self, name, default=None): - return self._r.headers.get(name, self._new_headers.get(name, default)) - - def add_header(self, key, val): - """cookiejar has no legitimate use for this method; add it back if you find one.""" - raise NotImplementedError( - "Cookie headers should be added with add_unredirected_header()" - ) - - def add_unredirected_header(self, name, value): - self._new_headers[name] = value - - def get_new_headers(self): - return self._new_headers - - @property - def unverifiable(self): - return self.is_unverifiable() - - @property - def origin_req_host(self): - return self.get_origin_req_host() - - @property - def host(self): - return self.get_host() - - -class MockResponse: - """Wraps a `httplib.HTTPMessage` to mimic a `urllib.addinfourl`. - - ...what? Basically, expose the parsed HTTP headers from the server response - the way `http.cookiejar` expects to see them. - """ - - def __init__(self, headers): - """Make a MockResponse for `cookiejar` to read. - - :param headers: a httplib.HTTPMessage or analogous carrying the headers - """ - self._headers = headers - - def info(self): - return self._headers - - def getheaders(self, name): - self._headers.getheaders(name) - - -def extract_cookies_to_jar(jar, request, response): - """Extract the cookies from the response into a CookieJar. - - :param jar: http.cookiejar.CookieJar (not necessarily a RequestsCookieJar) - :param request: our own requests.Request object - :param response: urllib3.HTTPResponse object - """ - if not (hasattr(response, "_original_response") and response._original_response): - return - # the _original_response field is the wrapped httplib.HTTPResponse object, - req = MockRequest(request) - # pull out the HTTPMessage with the headers and put it in the mock: - res = MockResponse(response._original_response.msg) - jar.extract_cookies(res, req) - - -def get_cookie_header(jar, request): - """ - Produce an appropriate Cookie header string to be sent with `request`, or None. - - :rtype: str - """ - r = MockRequest(request) - jar.add_cookie_header(r) - return r.get_new_headers().get("Cookie") - - -def remove_cookie_by_name(cookiejar, name, domain=None, path=None): - """Unsets a cookie by name, by default over all domains and paths. - - Wraps CookieJar.clear(), is O(n). - """ - clearables = [] - for cookie in cookiejar: - if cookie.name != name: - continue - if domain is not None and domain != cookie.domain: - continue - if path is not None and path != cookie.path: - continue - clearables.append((cookie.domain, cookie.path, cookie.name)) - - for domain, path, name in clearables: - cookiejar.clear(domain, path, name) - - -class CookieConflictError(RuntimeError): - """There are two cookies that meet the criteria specified in the cookie jar. - Use .get and .set and include domain and path args in order to be more specific. - """ - - -class RequestsCookieJar(cookielib.CookieJar, MutableMapping): - """Compatibility class; is a http.cookiejar.CookieJar, but exposes a dict - interface. - - This is the CookieJar we create by default for requests and sessions that - don't specify one, since some clients may expect response.cookies and - session.cookies to support dict operations. - - Requests does not use the dict interface internally; it's just for - compatibility with external client code. All requests code should work - out of the box with externally provided instances of ``CookieJar``, e.g. - ``LWPCookieJar`` and ``FileCookieJar``. - - Unlike a regular CookieJar, this class is pickleable. - - .. warning:: dictionary operations that are normally O(1) may be O(n). - """ - - def get(self, name, default=None, domain=None, path=None): - """Dict-like get() that also supports optional domain and path args in - order to resolve naming collisions from using one cookie jar over - multiple domains. - - .. warning:: operation is O(n), not O(1). - """ - try: - return self._find_no_duplicates(name, domain, path) - except KeyError: - return default - - def set(self, name, value, **kwargs): - """Dict-like set() that also supports optional domain and path args in - order to resolve naming collisions from using one cookie jar over - multiple domains. - """ - # support client code that unsets cookies by assignment of a None value: - if value is None: - remove_cookie_by_name( - self, name, domain=kwargs.get("domain"), path=kwargs.get("path") - ) - return - - if isinstance(value, Morsel): - c = morsel_to_cookie(value) - else: - c = create_cookie(name, value, **kwargs) - self.set_cookie(c) - return c - - def iterkeys(self): - """Dict-like iterkeys() that returns an iterator of names of cookies - from the jar. - - .. seealso:: itervalues() and iteritems(). - """ - for cookie in iter(self): - yield cookie.name - - def keys(self): - """Dict-like keys() that returns a list of names of cookies from the - jar. - - .. seealso:: values() and items(). - """ - return list(self.iterkeys()) - - def itervalues(self): - """Dict-like itervalues() that returns an iterator of values of cookies - from the jar. - - .. seealso:: iterkeys() and iteritems(). - """ - for cookie in iter(self): - yield cookie.value - - def values(self): - """Dict-like values() that returns a list of values of cookies from the - jar. - - .. seealso:: keys() and items(). - """ - return list(self.itervalues()) - - def iteritems(self): - """Dict-like iteritems() that returns an iterator of name-value tuples - from the jar. - - .. seealso:: iterkeys() and itervalues(). - """ - for cookie in iter(self): - yield cookie.name, cookie.value - - def items(self): - """Dict-like items() that returns a list of name-value tuples from the - jar. Allows client-code to call ``dict(RequestsCookieJar)`` and get a - vanilla python dict of key value pairs. - - .. seealso:: keys() and values(). - """ - return list(self.iteritems()) - - def list_domains(self): - """Utility method to list all the domains in the jar.""" - domains = [] - for cookie in iter(self): - if cookie.domain not in domains: - domains.append(cookie.domain) - return domains - - def list_paths(self): - """Utility method to list all the paths in the jar.""" - paths = [] - for cookie in iter(self): - if cookie.path not in paths: - paths.append(cookie.path) - return paths - - def multiple_domains(self): - """Returns True if there are multiple domains in the jar. - Returns False otherwise. - - :rtype: bool - """ - domains = [] - for cookie in iter(self): - if cookie.domain is not None and cookie.domain in domains: - return True - domains.append(cookie.domain) - return False # there is only one domain in jar - - def get_dict(self, domain=None, path=None): - """Takes as an argument an optional domain and path and returns a plain - old Python dict of name-value pairs of cookies that meet the - requirements. - - :rtype: dict - """ - dictionary = {} - for cookie in iter(self): - if (domain is None or cookie.domain == domain) and ( - path is None or cookie.path == path - ): - dictionary[cookie.name] = cookie.value - return dictionary - - def __contains__(self, name): - try: - return super().__contains__(name) - except CookieConflictError: - return True - - def __getitem__(self, name): - """Dict-like __getitem__() for compatibility with client code. Throws - exception if there are more than one cookie with name. In that case, - use the more explicit get() method instead. - - .. warning:: operation is O(n), not O(1). - """ - return self._find_no_duplicates(name) - - def __setitem__(self, name, value): - """Dict-like __setitem__ for compatibility with client code. Throws - exception if there is already a cookie of that name in the jar. In that - case, use the more explicit set() method instead. - """ - self.set(name, value) - - def __delitem__(self, name): - """Deletes a cookie given a name. Wraps ``http.cookiejar.CookieJar``'s - ``remove_cookie_by_name()``. - """ - remove_cookie_by_name(self, name) - - def set_cookie(self, cookie, *args, **kwargs): - if ( - hasattr(cookie.value, "startswith") - and cookie.value.startswith('"') - and cookie.value.endswith('"') - ): - cookie.value = cookie.value.replace('\\"', "") - return super().set_cookie(cookie, *args, **kwargs) - - def update(self, other): - """Updates this jar with cookies from another CookieJar or dict-like""" - if isinstance(other, cookielib.CookieJar): - for cookie in other: - self.set_cookie(copy.copy(cookie)) - else: - super().update(other) - - def _find(self, name, domain=None, path=None): - """Requests uses this method internally to get cookie values. - - If there are conflicting cookies, _find arbitrarily chooses one. - See _find_no_duplicates if you want an exception thrown if there are - conflicting cookies. - - :param name: a string containing name of cookie - :param domain: (optional) string containing domain of cookie - :param path: (optional) string containing path of cookie - :return: cookie.value - """ - for cookie in iter(self): - if cookie.name == name: - if domain is None or cookie.domain == domain: - if path is None or cookie.path == path: - return cookie.value - - raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}") - - def _find_no_duplicates(self, name, domain=None, path=None): - """Both ``__get_item__`` and ``get`` call this function: it's never - used elsewhere in Requests. - - :param name: a string containing name of cookie - :param domain: (optional) string containing domain of cookie - :param path: (optional) string containing path of cookie - :raises KeyError: if cookie is not found - :raises CookieConflictError: if there are multiple cookies - that match name and optionally domain and path - :return: cookie.value - """ - toReturn = None - for cookie in iter(self): - if cookie.name == name: - if domain is None or cookie.domain == domain: - if path is None or cookie.path == path: - if toReturn is not None: - # if there are multiple cookies that meet passed in criteria - raise CookieConflictError( - f"There are multiple cookies with name, {name!r}" - ) - # we will eventually return this as long as no cookie conflict - toReturn = cookie.value - - if toReturn: - return toReturn - raise KeyError(f"name={name!r}, domain={domain!r}, path={path!r}") - - def __getstate__(self): - """Unlike a normal CookieJar, this class is pickleable.""" - state = self.__dict__.copy() - # remove the unpickleable RLock object - state.pop("_cookies_lock") - return state - - def __setstate__(self, state): - """Unlike a normal CookieJar, this class is pickleable.""" - self.__dict__.update(state) - if "_cookies_lock" not in self.__dict__: - self._cookies_lock = threading.RLock() - - def copy(self): - """Return a copy of this RequestsCookieJar.""" - new_cj = RequestsCookieJar() - new_cj.set_policy(self.get_policy()) - new_cj.update(self) - return new_cj - - def get_policy(self): - """Return the CookiePolicy instance used.""" - return self._policy - - -def _copy_cookie_jar(jar): - if jar is None: - return None - - if hasattr(jar, "copy"): - # We're dealing with an instance of RequestsCookieJar - return jar.copy() - # We're dealing with a generic CookieJar instance - new_jar = copy.copy(jar) - new_jar.clear() - for cookie in jar: - new_jar.set_cookie(copy.copy(cookie)) - return new_jar - - -def create_cookie(name, value, **kwargs): - """Make a cookie from underspecified parameters. - - By default, the pair of `name` and `value` will be set for the domain '' - and sent on every request (this is sometimes called a "supercookie"). - """ - result = { - "version": 0, - "name": name, - "value": value, - "port": None, - "domain": "", - "path": "/", - "secure": False, - "expires": None, - "discard": True, - "comment": None, - "comment_url": None, - "rest": {"HttpOnly": None}, - "rfc2109": False, - } - - badargs = set(kwargs) - set(result) - if badargs: - raise TypeError( - f"create_cookie() got unexpected keyword arguments: {list(badargs)}" - ) - - result.update(kwargs) - result["port_specified"] = bool(result["port"]) - result["domain_specified"] = bool(result["domain"]) - result["domain_initial_dot"] = result["domain"].startswith(".") - result["path_specified"] = bool(result["path"]) - - return cookielib.Cookie(**result) - - -def morsel_to_cookie(morsel): - """Convert a Morsel object into a Cookie containing the one k/v pair.""" - - expires = None - if morsel["max-age"]: - try: - expires = int(time.time() + int(morsel["max-age"])) - except ValueError: - raise TypeError(f"max-age: {morsel['max-age']} must be integer") - elif morsel["expires"]: - time_template = "%a, %d-%b-%Y %H:%M:%S GMT" - expires = calendar.timegm(time.strptime(morsel["expires"], time_template)) - return create_cookie( - comment=morsel["comment"], - comment_url=bool(morsel["comment"]), - discard=False, - domain=morsel["domain"], - expires=expires, - name=morsel.key, - path=morsel["path"], - port=None, - rest={"HttpOnly": morsel["httponly"]}, - rfc2109=False, - secure=bool(morsel["secure"]), - value=morsel.value, - version=morsel["version"] or 0, - ) - - -def cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True): - """Returns a CookieJar from a key/value dictionary. - - :param cookie_dict: Dict of key/values to insert into CookieJar. - :param cookiejar: (optional) A cookiejar to add the cookies to. - :param overwrite: (optional) If False, will not replace cookies - already in the jar with new ones. - :rtype: CookieJar - """ - if cookiejar is None: - cookiejar = RequestsCookieJar() - - if cookie_dict is not None: - names_from_jar = [cookie.name for cookie in cookiejar] - for name in cookie_dict: - if overwrite or (name not in names_from_jar): - cookiejar.set_cookie(create_cookie(name, cookie_dict[name])) - - return cookiejar - - -def merge_cookies(cookiejar, cookies): - """Add cookies to cookiejar and returns a merged CookieJar. - - :param cookiejar: CookieJar object to add the cookies to. - :param cookies: Dictionary or CookieJar object to be added. - :rtype: CookieJar - """ - if not isinstance(cookiejar, cookielib.CookieJar): - raise ValueError("You can only merge into CookieJar") - - if isinstance(cookies, dict): - cookiejar = cookiejar_from_dict(cookies, cookiejar=cookiejar, overwrite=False) - elif isinstance(cookies, cookielib.CookieJar): - try: - cookiejar.update(cookies) - except AttributeError: - for cookie_in_jar in cookies: - cookiejar.set_cookie(cookie_in_jar) - - return cookiejar diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/exceptions.py b/gnx-react/venv/lib/python3.12/site-packages/requests/exceptions.py deleted file mode 100644 index 83986b48..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/exceptions.py +++ /dev/null @@ -1,151 +0,0 @@ -""" -requests.exceptions -~~~~~~~~~~~~~~~~~~~ - -This module contains the set of Requests' exceptions. -""" -from urllib3.exceptions import HTTPError as BaseHTTPError - -from .compat import JSONDecodeError as CompatJSONDecodeError - - -class RequestException(IOError): - """There was an ambiguous exception that occurred while handling your - request. - """ - - def __init__(self, *args, **kwargs): - """Initialize RequestException with `request` and `response` objects.""" - response = kwargs.pop("response", None) - self.response = response - self.request = kwargs.pop("request", None) - if response is not None and not self.request and hasattr(response, "request"): - self.request = self.response.request - super().__init__(*args, **kwargs) - - -class InvalidJSONError(RequestException): - """A JSON error occurred.""" - - -class JSONDecodeError(InvalidJSONError, CompatJSONDecodeError): - """Couldn't decode the text into json""" - - def __init__(self, *args, **kwargs): - """ - Construct the JSONDecodeError instance first with all - args. Then use it's args to construct the IOError so that - the json specific args aren't used as IOError specific args - and the error message from JSONDecodeError is preserved. - """ - CompatJSONDecodeError.__init__(self, *args) - InvalidJSONError.__init__(self, *self.args, **kwargs) - - def __reduce__(self): - """ - The __reduce__ method called when pickling the object must - be the one from the JSONDecodeError (be it json/simplejson) - as it expects all the arguments for instantiation, not just - one like the IOError, and the MRO would by default call the - __reduce__ method from the IOError due to the inheritance order. - """ - return CompatJSONDecodeError.__reduce__(self) - - -class HTTPError(RequestException): - """An HTTP error occurred.""" - - -class ConnectionError(RequestException): - """A Connection error occurred.""" - - -class ProxyError(ConnectionError): - """A proxy error occurred.""" - - -class SSLError(ConnectionError): - """An SSL error occurred.""" - - -class Timeout(RequestException): - """The request timed out. - - Catching this error will catch both - :exc:`~requests.exceptions.ConnectTimeout` and - :exc:`~requests.exceptions.ReadTimeout` errors. - """ - - -class ConnectTimeout(ConnectionError, Timeout): - """The request timed out while trying to connect to the remote server. - - Requests that produced this error are safe to retry. - """ - - -class ReadTimeout(Timeout): - """The server did not send any data in the allotted amount of time.""" - - -class URLRequired(RequestException): - """A valid URL is required to make a request.""" - - -class TooManyRedirects(RequestException): - """Too many redirects.""" - - -class MissingSchema(RequestException, ValueError): - """The URL scheme (e.g. http or https) is missing.""" - - -class InvalidSchema(RequestException, ValueError): - """The URL scheme provided is either invalid or unsupported.""" - - -class InvalidURL(RequestException, ValueError): - """The URL provided was somehow invalid.""" - - -class InvalidHeader(RequestException, ValueError): - """The header value provided was somehow invalid.""" - - -class InvalidProxyURL(InvalidURL): - """The proxy URL provided is invalid.""" - - -class ChunkedEncodingError(RequestException): - """The server declared chunked encoding but sent an invalid chunk.""" - - -class ContentDecodingError(RequestException, BaseHTTPError): - """Failed to decode response content.""" - - -class StreamConsumedError(RequestException, TypeError): - """The content for this response was already consumed.""" - - -class RetryError(RequestException): - """Custom retries logic failed""" - - -class UnrewindableBodyError(RequestException): - """Requests encountered an error when trying to rewind a body.""" - - -# Warnings - - -class RequestsWarning(Warning): - """Base warning for Requests.""" - - -class FileModeWarning(RequestsWarning, DeprecationWarning): - """A file was opened in text mode, but Requests determined its binary length.""" - - -class RequestsDependencyWarning(RequestsWarning): - """An imported dependency doesn't match the expected version range.""" diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/help.py b/gnx-react/venv/lib/python3.12/site-packages/requests/help.py deleted file mode 100644 index 8fbcd656..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/help.py +++ /dev/null @@ -1,134 +0,0 @@ -"""Module containing bug report helper(s).""" - -import json -import platform -import ssl -import sys - -import idna -import urllib3 - -from . import __version__ as requests_version - -try: - import charset_normalizer -except ImportError: - charset_normalizer = None - -try: - import chardet -except ImportError: - chardet = None - -try: - from urllib3.contrib import pyopenssl -except ImportError: - pyopenssl = None - OpenSSL = None - cryptography = None -else: - import cryptography - import OpenSSL - - -def _implementation(): - """Return a dict with the Python implementation and version. - - Provide both the name and the version of the Python implementation - currently running. For example, on CPython 3.10.3 it will return - {'name': 'CPython', 'version': '3.10.3'}. - - This function works best on CPython and PyPy: in particular, it probably - doesn't work for Jython or IronPython. Future investigation should be done - to work out the correct shape of the code for those platforms. - """ - implementation = platform.python_implementation() - - if implementation == "CPython": - implementation_version = platform.python_version() - elif implementation == "PyPy": - implementation_version = "{}.{}.{}".format( - sys.pypy_version_info.major, - sys.pypy_version_info.minor, - sys.pypy_version_info.micro, - ) - if sys.pypy_version_info.releaselevel != "final": - implementation_version = "".join( - [implementation_version, sys.pypy_version_info.releaselevel] - ) - elif implementation == "Jython": - implementation_version = platform.python_version() # Complete Guess - elif implementation == "IronPython": - implementation_version = platform.python_version() # Complete Guess - else: - implementation_version = "Unknown" - - return {"name": implementation, "version": implementation_version} - - -def info(): - """Generate information for a bug report.""" - try: - platform_info = { - "system": platform.system(), - "release": platform.release(), - } - except OSError: - platform_info = { - "system": "Unknown", - "release": "Unknown", - } - - implementation_info = _implementation() - urllib3_info = {"version": urllib3.__version__} - charset_normalizer_info = {"version": None} - chardet_info = {"version": None} - if charset_normalizer: - charset_normalizer_info = {"version": charset_normalizer.__version__} - if chardet: - chardet_info = {"version": chardet.__version__} - - pyopenssl_info = { - "version": None, - "openssl_version": "", - } - if OpenSSL: - pyopenssl_info = { - "version": OpenSSL.__version__, - "openssl_version": f"{OpenSSL.SSL.OPENSSL_VERSION_NUMBER:x}", - } - cryptography_info = { - "version": getattr(cryptography, "__version__", ""), - } - idna_info = { - "version": getattr(idna, "__version__", ""), - } - - system_ssl = ssl.OPENSSL_VERSION_NUMBER - system_ssl_info = {"version": f"{system_ssl:x}" if system_ssl is not None else ""} - - return { - "platform": platform_info, - "implementation": implementation_info, - "system_ssl": system_ssl_info, - "using_pyopenssl": pyopenssl is not None, - "using_charset_normalizer": chardet is None, - "pyOpenSSL": pyopenssl_info, - "urllib3": urllib3_info, - "chardet": chardet_info, - "charset_normalizer": charset_normalizer_info, - "cryptography": cryptography_info, - "idna": idna_info, - "requests": { - "version": requests_version, - }, - } - - -def main(): - """Pretty-print the bug information as JSON.""" - print(json.dumps(info(), sort_keys=True, indent=2)) - - -if __name__ == "__main__": - main() diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/hooks.py b/gnx-react/venv/lib/python3.12/site-packages/requests/hooks.py deleted file mode 100644 index d181ba2e..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/hooks.py +++ /dev/null @@ -1,33 +0,0 @@ -""" -requests.hooks -~~~~~~~~~~~~~~ - -This module provides the capabilities for the Requests hooks system. - -Available hooks: - -``response``: - The response generated from a Request. -""" -HOOKS = ["response"] - - -def default_hooks(): - return {event: [] for event in HOOKS} - - -# TODO: response is the only one - - -def dispatch_hook(key, hooks, hook_data, **kwargs): - """Dispatches a hook dictionary on a given piece of data.""" - hooks = hooks or {} - hooks = hooks.get(key) - if hooks: - if hasattr(hooks, "__call__"): - hooks = [hooks] - for hook in hooks: - _hook_data = hook(hook_data, **kwargs) - if _hook_data is not None: - hook_data = _hook_data - return hook_data diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/models.py b/gnx-react/venv/lib/python3.12/site-packages/requests/models.py deleted file mode 100644 index c4b25fa0..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/models.py +++ /dev/null @@ -1,1039 +0,0 @@ -""" -requests.models -~~~~~~~~~~~~~~~ - -This module contains the primary objects that power Requests. -""" - -import datetime - -# Import encoding now, to avoid implicit import later. -# Implicit import within threads may cause LookupError when standard library is in a ZIP, -# such as in Embedded Python. See https://github.com/psf/requests/issues/3578. -import encodings.idna # noqa: F401 -from io import UnsupportedOperation - -from urllib3.exceptions import ( - DecodeError, - LocationParseError, - ProtocolError, - ReadTimeoutError, - SSLError, -) -from urllib3.fields import RequestField -from urllib3.filepost import encode_multipart_formdata -from urllib3.util import parse_url - -from ._internal_utils import to_native_string, unicode_is_ascii -from .auth import HTTPBasicAuth -from .compat import ( - Callable, - JSONDecodeError, - Mapping, - basestring, - builtin_str, - chardet, - cookielib, -) -from .compat import json as complexjson -from .compat import urlencode, urlsplit, urlunparse -from .cookies import _copy_cookie_jar, cookiejar_from_dict, get_cookie_header -from .exceptions import ( - ChunkedEncodingError, - ConnectionError, - ContentDecodingError, - HTTPError, - InvalidJSONError, - InvalidURL, -) -from .exceptions import JSONDecodeError as RequestsJSONDecodeError -from .exceptions import MissingSchema -from .exceptions import SSLError as RequestsSSLError -from .exceptions import StreamConsumedError -from .hooks import default_hooks -from .status_codes import codes -from .structures import CaseInsensitiveDict -from .utils import ( - check_header_validity, - get_auth_from_url, - guess_filename, - guess_json_utf, - iter_slices, - parse_header_links, - requote_uri, - stream_decode_response_unicode, - super_len, - to_key_val_list, -) - -#: The set of HTTP status codes that indicate an automatically -#: processable redirect. -REDIRECT_STATI = ( - codes.moved, # 301 - codes.found, # 302 - codes.other, # 303 - codes.temporary_redirect, # 307 - codes.permanent_redirect, # 308 -) - -DEFAULT_REDIRECT_LIMIT = 30 -CONTENT_CHUNK_SIZE = 10 * 1024 -ITER_CHUNK_SIZE = 512 - - -class RequestEncodingMixin: - @property - def path_url(self): - """Build the path URL to use.""" - - url = [] - - p = urlsplit(self.url) - - path = p.path - if not path: - path = "/" - - url.append(path) - - query = p.query - if query: - url.append("?") - url.append(query) - - return "".join(url) - - @staticmethod - def _encode_params(data): - """Encode parameters in a piece of data. - - Will successfully encode parameters when passed as a dict or a list of - 2-tuples. Order is retained if data is a list of 2-tuples but arbitrary - if parameters are supplied as a dict. - """ - - if isinstance(data, (str, bytes)): - return data - elif hasattr(data, "read"): - return data - elif hasattr(data, "__iter__"): - result = [] - for k, vs in to_key_val_list(data): - if isinstance(vs, basestring) or not hasattr(vs, "__iter__"): - vs = [vs] - for v in vs: - if v is not None: - result.append( - ( - k.encode("utf-8") if isinstance(k, str) else k, - v.encode("utf-8") if isinstance(v, str) else v, - ) - ) - return urlencode(result, doseq=True) - else: - return data - - @staticmethod - def _encode_files(files, data): - """Build the body for a multipart/form-data request. - - Will successfully encode files when passed as a dict or a list of - tuples. Order is retained if data is a list of tuples but arbitrary - if parameters are supplied as a dict. - The tuples may be 2-tuples (filename, fileobj), 3-tuples (filename, fileobj, contentype) - or 4-tuples (filename, fileobj, contentype, custom_headers). - """ - if not files: - raise ValueError("Files must be provided.") - elif isinstance(data, basestring): - raise ValueError("Data must not be a string.") - - new_fields = [] - fields = to_key_val_list(data or {}) - files = to_key_val_list(files or {}) - - for field, val in fields: - if isinstance(val, basestring) or not hasattr(val, "__iter__"): - val = [val] - for v in val: - if v is not None: - # Don't call str() on bytestrings: in Py3 it all goes wrong. - if not isinstance(v, bytes): - v = str(v) - - new_fields.append( - ( - field.decode("utf-8") - if isinstance(field, bytes) - else field, - v.encode("utf-8") if isinstance(v, str) else v, - ) - ) - - for k, v in files: - # support for explicit filename - ft = None - fh = None - if isinstance(v, (tuple, list)): - if len(v) == 2: - fn, fp = v - elif len(v) == 3: - fn, fp, ft = v - else: - fn, fp, ft, fh = v - else: - fn = guess_filename(v) or k - fp = v - - if isinstance(fp, (str, bytes, bytearray)): - fdata = fp - elif hasattr(fp, "read"): - fdata = fp.read() - elif fp is None: - continue - else: - fdata = fp - - rf = RequestField(name=k, data=fdata, filename=fn, headers=fh) - rf.make_multipart(content_type=ft) - new_fields.append(rf) - - body, content_type = encode_multipart_formdata(new_fields) - - return body, content_type - - -class RequestHooksMixin: - def register_hook(self, event, hook): - """Properly register a hook.""" - - if event not in self.hooks: - raise ValueError(f'Unsupported event specified, with event name "{event}"') - - if isinstance(hook, Callable): - self.hooks[event].append(hook) - elif hasattr(hook, "__iter__"): - self.hooks[event].extend(h for h in hook if isinstance(h, Callable)) - - def deregister_hook(self, event, hook): - """Deregister a previously registered hook. - Returns True if the hook existed, False if not. - """ - - try: - self.hooks[event].remove(hook) - return True - except ValueError: - return False - - -class Request(RequestHooksMixin): - """A user-created :class:`Request ` object. - - Used to prepare a :class:`PreparedRequest `, which is sent to the server. - - :param method: HTTP method to use. - :param url: URL to send. - :param headers: dictionary of headers to send. - :param files: dictionary of {filename: fileobject} files to multipart upload. - :param data: the body to attach to the request. If a dictionary or - list of tuples ``[(key, value)]`` is provided, form-encoding will - take place. - :param json: json for the body to attach to the request (if files or data is not specified). - :param params: URL parameters to append to the URL. If a dictionary or - list of tuples ``[(key, value)]`` is provided, form-encoding will - take place. - :param auth: Auth handler or (user, pass) tuple. - :param cookies: dictionary or CookieJar of cookies to attach to this request. - :param hooks: dictionary of callback hooks, for internal usage. - - Usage:: - - >>> import requests - >>> req = requests.Request('GET', 'https://httpbin.org/get') - >>> req.prepare() - - """ - - def __init__( - self, - method=None, - url=None, - headers=None, - files=None, - data=None, - params=None, - auth=None, - cookies=None, - hooks=None, - json=None, - ): - # Default empty dicts for dict params. - data = [] if data is None else data - files = [] if files is None else files - headers = {} if headers is None else headers - params = {} if params is None else params - hooks = {} if hooks is None else hooks - - self.hooks = default_hooks() - for k, v in list(hooks.items()): - self.register_hook(event=k, hook=v) - - self.method = method - self.url = url - self.headers = headers - self.files = files - self.data = data - self.json = json - self.params = params - self.auth = auth - self.cookies = cookies - - def __repr__(self): - return f"" - - def prepare(self): - """Constructs a :class:`PreparedRequest ` for transmission and returns it.""" - p = PreparedRequest() - p.prepare( - method=self.method, - url=self.url, - headers=self.headers, - files=self.files, - data=self.data, - json=self.json, - params=self.params, - auth=self.auth, - cookies=self.cookies, - hooks=self.hooks, - ) - return p - - -class PreparedRequest(RequestEncodingMixin, RequestHooksMixin): - """The fully mutable :class:`PreparedRequest ` object, - containing the exact bytes that will be sent to the server. - - Instances are generated from a :class:`Request ` object, and - should not be instantiated manually; doing so may produce undesirable - effects. - - Usage:: - - >>> import requests - >>> req = requests.Request('GET', 'https://httpbin.org/get') - >>> r = req.prepare() - >>> r - - - >>> s = requests.Session() - >>> s.send(r) - - """ - - def __init__(self): - #: HTTP verb to send to the server. - self.method = None - #: HTTP URL to send the request to. - self.url = None - #: dictionary of HTTP headers. - self.headers = None - # The `CookieJar` used to create the Cookie header will be stored here - # after prepare_cookies is called - self._cookies = None - #: request body to send to the server. - self.body = None - #: dictionary of callback hooks, for internal usage. - self.hooks = default_hooks() - #: integer denoting starting position of a readable file-like body. - self._body_position = None - - def prepare( - self, - method=None, - url=None, - headers=None, - files=None, - data=None, - params=None, - auth=None, - cookies=None, - hooks=None, - json=None, - ): - """Prepares the entire request with the given parameters.""" - - self.prepare_method(method) - self.prepare_url(url, params) - self.prepare_headers(headers) - self.prepare_cookies(cookies) - self.prepare_body(data, files, json) - self.prepare_auth(auth, url) - - # Note that prepare_auth must be last to enable authentication schemes - # such as OAuth to work on a fully prepared request. - - # This MUST go after prepare_auth. Authenticators could add a hook - self.prepare_hooks(hooks) - - def __repr__(self): - return f"" - - def copy(self): - p = PreparedRequest() - p.method = self.method - p.url = self.url - p.headers = self.headers.copy() if self.headers is not None else None - p._cookies = _copy_cookie_jar(self._cookies) - p.body = self.body - p.hooks = self.hooks - p._body_position = self._body_position - return p - - def prepare_method(self, method): - """Prepares the given HTTP method.""" - self.method = method - if self.method is not None: - self.method = to_native_string(self.method.upper()) - - @staticmethod - def _get_idna_encoded_host(host): - import idna - - try: - host = idna.encode(host, uts46=True).decode("utf-8") - except idna.IDNAError: - raise UnicodeError - return host - - def prepare_url(self, url, params): - """Prepares the given HTTP URL.""" - #: Accept objects that have string representations. - #: We're unable to blindly call unicode/str functions - #: as this will include the bytestring indicator (b'') - #: on python 3.x. - #: https://github.com/psf/requests/pull/2238 - if isinstance(url, bytes): - url = url.decode("utf8") - else: - url = str(url) - - # Remove leading whitespaces from url - url = url.lstrip() - - # Don't do any URL preparation for non-HTTP schemes like `mailto`, - # `data` etc to work around exceptions from `url_parse`, which - # handles RFC 3986 only. - if ":" in url and not url.lower().startswith("http"): - self.url = url - return - - # Support for unicode domain names and paths. - try: - scheme, auth, host, port, path, query, fragment = parse_url(url) - except LocationParseError as e: - raise InvalidURL(*e.args) - - if not scheme: - raise MissingSchema( - f"Invalid URL {url!r}: No scheme supplied. " - f"Perhaps you meant https://{url}?" - ) - - if not host: - raise InvalidURL(f"Invalid URL {url!r}: No host supplied") - - # In general, we want to try IDNA encoding the hostname if the string contains - # non-ASCII characters. This allows users to automatically get the correct IDNA - # behaviour. For strings containing only ASCII characters, we need to also verify - # it doesn't start with a wildcard (*), before allowing the unencoded hostname. - if not unicode_is_ascii(host): - try: - host = self._get_idna_encoded_host(host) - except UnicodeError: - raise InvalidURL("URL has an invalid label.") - elif host.startswith(("*", ".")): - raise InvalidURL("URL has an invalid label.") - - # Carefully reconstruct the network location - netloc = auth or "" - if netloc: - netloc += "@" - netloc += host - if port: - netloc += f":{port}" - - # Bare domains aren't valid URLs. - if not path: - path = "/" - - if isinstance(params, (str, bytes)): - params = to_native_string(params) - - enc_params = self._encode_params(params) - if enc_params: - if query: - query = f"{query}&{enc_params}" - else: - query = enc_params - - url = requote_uri(urlunparse([scheme, netloc, path, None, query, fragment])) - self.url = url - - def prepare_headers(self, headers): - """Prepares the given HTTP headers.""" - - self.headers = CaseInsensitiveDict() - if headers: - for header in headers.items(): - # Raise exception on invalid header value. - check_header_validity(header) - name, value = header - self.headers[to_native_string(name)] = value - - def prepare_body(self, data, files, json=None): - """Prepares the given HTTP body data.""" - - # Check if file, fo, generator, iterator. - # If not, run through normal process. - - # Nottin' on you. - body = None - content_type = None - - if not data and json is not None: - # urllib3 requires a bytes-like body. Python 2's json.dumps - # provides this natively, but Python 3 gives a Unicode string. - content_type = "application/json" - - try: - body = complexjson.dumps(json, allow_nan=False) - except ValueError as ve: - raise InvalidJSONError(ve, request=self) - - if not isinstance(body, bytes): - body = body.encode("utf-8") - - is_stream = all( - [ - hasattr(data, "__iter__"), - not isinstance(data, (basestring, list, tuple, Mapping)), - ] - ) - - if is_stream: - try: - length = super_len(data) - except (TypeError, AttributeError, UnsupportedOperation): - length = None - - body = data - - if getattr(body, "tell", None) is not None: - # Record the current file position before reading. - # This will allow us to rewind a file in the event - # of a redirect. - try: - self._body_position = body.tell() - except OSError: - # This differentiates from None, allowing us to catch - # a failed `tell()` later when trying to rewind the body - self._body_position = object() - - if files: - raise NotImplementedError( - "Streamed bodies and files are mutually exclusive." - ) - - if length: - self.headers["Content-Length"] = builtin_str(length) - else: - self.headers["Transfer-Encoding"] = "chunked" - else: - # Multi-part file uploads. - if files: - (body, content_type) = self._encode_files(files, data) - else: - if data: - body = self._encode_params(data) - if isinstance(data, basestring) or hasattr(data, "read"): - content_type = None - else: - content_type = "application/x-www-form-urlencoded" - - self.prepare_content_length(body) - - # Add content-type if it wasn't explicitly provided. - if content_type and ("content-type" not in self.headers): - self.headers["Content-Type"] = content_type - - self.body = body - - def prepare_content_length(self, body): - """Prepare Content-Length header based on request method and body""" - if body is not None: - length = super_len(body) - if length: - # If length exists, set it. Otherwise, we fallback - # to Transfer-Encoding: chunked. - self.headers["Content-Length"] = builtin_str(length) - elif ( - self.method not in ("GET", "HEAD") - and self.headers.get("Content-Length") is None - ): - # Set Content-Length to 0 for methods that can have a body - # but don't provide one. (i.e. not GET or HEAD) - self.headers["Content-Length"] = "0" - - def prepare_auth(self, auth, url=""): - """Prepares the given HTTP auth data.""" - - # If no Auth is explicitly provided, extract it from the URL first. - if auth is None: - url_auth = get_auth_from_url(self.url) - auth = url_auth if any(url_auth) else None - - if auth: - if isinstance(auth, tuple) and len(auth) == 2: - # special-case basic HTTP auth - auth = HTTPBasicAuth(*auth) - - # Allow auth to make its changes. - r = auth(self) - - # Update self to reflect the auth changes. - self.__dict__.update(r.__dict__) - - # Recompute Content-Length - self.prepare_content_length(self.body) - - def prepare_cookies(self, cookies): - """Prepares the given HTTP cookie data. - - This function eventually generates a ``Cookie`` header from the - given cookies using cookielib. Due to cookielib's design, the header - will not be regenerated if it already exists, meaning this function - can only be called once for the life of the - :class:`PreparedRequest ` object. Any subsequent calls - to ``prepare_cookies`` will have no actual effect, unless the "Cookie" - header is removed beforehand. - """ - if isinstance(cookies, cookielib.CookieJar): - self._cookies = cookies - else: - self._cookies = cookiejar_from_dict(cookies) - - cookie_header = get_cookie_header(self._cookies, self) - if cookie_header is not None: - self.headers["Cookie"] = cookie_header - - def prepare_hooks(self, hooks): - """Prepares the given hooks.""" - # hooks can be passed as None to the prepare method and to this - # method. To prevent iterating over None, simply use an empty list - # if hooks is False-y - hooks = hooks or [] - for event in hooks: - self.register_hook(event, hooks[event]) - - -class Response: - """The :class:`Response ` object, which contains a - server's response to an HTTP request. - """ - - __attrs__ = [ - "_content", - "status_code", - "headers", - "url", - "history", - "encoding", - "reason", - "cookies", - "elapsed", - "request", - ] - - def __init__(self): - self._content = False - self._content_consumed = False - self._next = None - - #: Integer Code of responded HTTP Status, e.g. 404 or 200. - self.status_code = None - - #: Case-insensitive Dictionary of Response Headers. - #: For example, ``headers['content-encoding']`` will return the - #: value of a ``'Content-Encoding'`` response header. - self.headers = CaseInsensitiveDict() - - #: File-like object representation of response (for advanced usage). - #: Use of ``raw`` requires that ``stream=True`` be set on the request. - #: This requirement does not apply for use internally to Requests. - self.raw = None - - #: Final URL location of Response. - self.url = None - - #: Encoding to decode with when accessing r.text. - self.encoding = None - - #: A list of :class:`Response ` objects from - #: the history of the Request. Any redirect responses will end - #: up here. The list is sorted from the oldest to the most recent request. - self.history = [] - - #: Textual reason of responded HTTP Status, e.g. "Not Found" or "OK". - self.reason = None - - #: A CookieJar of Cookies the server sent back. - self.cookies = cookiejar_from_dict({}) - - #: The amount of time elapsed between sending the request - #: and the arrival of the response (as a timedelta). - #: This property specifically measures the time taken between sending - #: the first byte of the request and finishing parsing the headers. It - #: is therefore unaffected by consuming the response content or the - #: value of the ``stream`` keyword argument. - self.elapsed = datetime.timedelta(0) - - #: The :class:`PreparedRequest ` object to which this - #: is a response. - self.request = None - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - - def __getstate__(self): - # Consume everything; accessing the content attribute makes - # sure the content has been fully read. - if not self._content_consumed: - self.content - - return {attr: getattr(self, attr, None) for attr in self.__attrs__} - - def __setstate__(self, state): - for name, value in state.items(): - setattr(self, name, value) - - # pickled objects do not have .raw - setattr(self, "_content_consumed", True) - setattr(self, "raw", None) - - def __repr__(self): - return f"" - - def __bool__(self): - """Returns True if :attr:`status_code` is less than 400. - - This attribute checks if the status code of the response is between - 400 and 600 to see if there was a client error or a server error. If - the status code, is between 200 and 400, this will return True. This - is **not** a check to see if the response code is ``200 OK``. - """ - return self.ok - - def __nonzero__(self): - """Returns True if :attr:`status_code` is less than 400. - - This attribute checks if the status code of the response is between - 400 and 600 to see if there was a client error or a server error. If - the status code, is between 200 and 400, this will return True. This - is **not** a check to see if the response code is ``200 OK``. - """ - return self.ok - - def __iter__(self): - """Allows you to use a response as an iterator.""" - return self.iter_content(128) - - @property - def ok(self): - """Returns True if :attr:`status_code` is less than 400, False if not. - - This attribute checks if the status code of the response is between - 400 and 600 to see if there was a client error or a server error. If - the status code is between 200 and 400, this will return True. This - is **not** a check to see if the response code is ``200 OK``. - """ - try: - self.raise_for_status() - except HTTPError: - return False - return True - - @property - def is_redirect(self): - """True if this Response is a well-formed HTTP redirect that could have - been processed automatically (by :meth:`Session.resolve_redirects`). - """ - return "location" in self.headers and self.status_code in REDIRECT_STATI - - @property - def is_permanent_redirect(self): - """True if this Response one of the permanent versions of redirect.""" - return "location" in self.headers and self.status_code in ( - codes.moved_permanently, - codes.permanent_redirect, - ) - - @property - def next(self): - """Returns a PreparedRequest for the next request in a redirect chain, if there is one.""" - return self._next - - @property - def apparent_encoding(self): - """The apparent encoding, provided by the charset_normalizer or chardet libraries.""" - if chardet is not None: - return chardet.detect(self.content)["encoding"] - else: - # If no character detection library is available, we'll fall back - # to a standard Python utf-8 str. - return "utf-8" - - def iter_content(self, chunk_size=1, decode_unicode=False): - """Iterates over the response data. When stream=True is set on the - request, this avoids reading the content at once into memory for - large responses. The chunk size is the number of bytes it should - read into memory. This is not necessarily the length of each item - returned as decoding can take place. - - chunk_size must be of type int or None. A value of None will - function differently depending on the value of `stream`. - stream=True will read data as it arrives in whatever size the - chunks are received. If stream=False, data is returned as - a single chunk. - - If decode_unicode is True, content will be decoded using the best - available encoding based on the response. - """ - - def generate(): - # Special case for urllib3. - if hasattr(self.raw, "stream"): - try: - yield from self.raw.stream(chunk_size, decode_content=True) - except ProtocolError as e: - raise ChunkedEncodingError(e) - except DecodeError as e: - raise ContentDecodingError(e) - except ReadTimeoutError as e: - raise ConnectionError(e) - except SSLError as e: - raise RequestsSSLError(e) - else: - # Standard file-like object. - while True: - chunk = self.raw.read(chunk_size) - if not chunk: - break - yield chunk - - self._content_consumed = True - - if self._content_consumed and isinstance(self._content, bool): - raise StreamConsumedError() - elif chunk_size is not None and not isinstance(chunk_size, int): - raise TypeError( - f"chunk_size must be an int, it is instead a {type(chunk_size)}." - ) - # simulate reading small chunks of the content - reused_chunks = iter_slices(self._content, chunk_size) - - stream_chunks = generate() - - chunks = reused_chunks if self._content_consumed else stream_chunks - - if decode_unicode: - chunks = stream_decode_response_unicode(chunks, self) - - return chunks - - def iter_lines( - self, chunk_size=ITER_CHUNK_SIZE, decode_unicode=False, delimiter=None - ): - """Iterates over the response data, one line at a time. When - stream=True is set on the request, this avoids reading the - content at once into memory for large responses. - - .. note:: This method is not reentrant safe. - """ - - pending = None - - for chunk in self.iter_content( - chunk_size=chunk_size, decode_unicode=decode_unicode - ): - if pending is not None: - chunk = pending + chunk - - if delimiter: - lines = chunk.split(delimiter) - else: - lines = chunk.splitlines() - - if lines and lines[-1] and chunk and lines[-1][-1] == chunk[-1]: - pending = lines.pop() - else: - pending = None - - yield from lines - - if pending is not None: - yield pending - - @property - def content(self): - """Content of the response, in bytes.""" - - if self._content is False: - # Read the contents. - if self._content_consumed: - raise RuntimeError("The content for this response was already consumed") - - if self.status_code == 0 or self.raw is None: - self._content = None - else: - self._content = b"".join(self.iter_content(CONTENT_CHUNK_SIZE)) or b"" - - self._content_consumed = True - # don't need to release the connection; that's been handled by urllib3 - # since we exhausted the data. - return self._content - - @property - def text(self): - """Content of the response, in unicode. - - If Response.encoding is None, encoding will be guessed using - ``charset_normalizer`` or ``chardet``. - - The encoding of the response content is determined based solely on HTTP - headers, following RFC 2616 to the letter. If you can take advantage of - non-HTTP knowledge to make a better guess at the encoding, you should - set ``r.encoding`` appropriately before accessing this property. - """ - - # Try charset from content-type - content = None - encoding = self.encoding - - if not self.content: - return "" - - # Fallback to auto-detected encoding. - if self.encoding is None: - encoding = self.apparent_encoding - - # Decode unicode from given encoding. - try: - content = str(self.content, encoding, errors="replace") - except (LookupError, TypeError): - # A LookupError is raised if the encoding was not found which could - # indicate a misspelling or similar mistake. - # - # A TypeError can be raised if encoding is None - # - # So we try blindly encoding. - content = str(self.content, errors="replace") - - return content - - def json(self, **kwargs): - r"""Decodes the JSON response body (if any) as a Python object. - - This may return a dictionary, list, etc. depending on what is in the response. - - :param \*\*kwargs: Optional arguments that ``json.loads`` takes. - :raises requests.exceptions.JSONDecodeError: If the response body does not - contain valid json. - """ - - if not self.encoding and self.content and len(self.content) > 3: - # No encoding set. JSON RFC 4627 section 3 states we should expect - # UTF-8, -16 or -32. Detect which one to use; If the detection or - # decoding fails, fall back to `self.text` (using charset_normalizer to make - # a best guess). - encoding = guess_json_utf(self.content) - if encoding is not None: - try: - return complexjson.loads(self.content.decode(encoding), **kwargs) - except UnicodeDecodeError: - # Wrong UTF codec detected; usually because it's not UTF-8 - # but some other 8-bit codec. This is an RFC violation, - # and the server didn't bother to tell us what codec *was* - # used. - pass - except JSONDecodeError as e: - raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) - - try: - return complexjson.loads(self.text, **kwargs) - except JSONDecodeError as e: - # Catch JSON-related errors and raise as requests.JSONDecodeError - # This aliases json.JSONDecodeError and simplejson.JSONDecodeError - raise RequestsJSONDecodeError(e.msg, e.doc, e.pos) - - @property - def links(self): - """Returns the parsed header links of the response, if any.""" - - header = self.headers.get("link") - - resolved_links = {} - - if header: - links = parse_header_links(header) - - for link in links: - key = link.get("rel") or link.get("url") - resolved_links[key] = link - - return resolved_links - - def raise_for_status(self): - """Raises :class:`HTTPError`, if one occurred.""" - - http_error_msg = "" - if isinstance(self.reason, bytes): - # We attempt to decode utf-8 first because some servers - # choose to localize their reason strings. If the string - # isn't utf-8, we fall back to iso-8859-1 for all other - # encodings. (See PR #3538) - try: - reason = self.reason.decode("utf-8") - except UnicodeDecodeError: - reason = self.reason.decode("iso-8859-1") - else: - reason = self.reason - - if 400 <= self.status_code < 500: - http_error_msg = ( - f"{self.status_code} Client Error: {reason} for url: {self.url}" - ) - - elif 500 <= self.status_code < 600: - http_error_msg = ( - f"{self.status_code} Server Error: {reason} for url: {self.url}" - ) - - if http_error_msg: - raise HTTPError(http_error_msg, response=self) - - def close(self): - """Releases the connection back to the pool. Once this method has been - called the underlying ``raw`` object must not be accessed again. - - *Note: Should not normally need to be called explicitly.* - """ - if not self._content_consumed: - self.raw.close() - - release_conn = getattr(self.raw, "release_conn", None) - if release_conn is not None: - release_conn() diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/packages.py b/gnx-react/venv/lib/python3.12/site-packages/requests/packages.py deleted file mode 100644 index 5ab3d8e2..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/packages.py +++ /dev/null @@ -1,23 +0,0 @@ -import sys - -from .compat import chardet - -# This code exists for backwards compatibility reasons. -# I don't like it either. Just look the other way. :) - -for package in ("urllib3", "idna"): - locals()[package] = __import__(package) - # This traversal is apparently necessary such that the identities are - # preserved (requests.packages.urllib3.* is urllib3.*) - for mod in list(sys.modules): - if mod == package or mod.startswith(f"{package}."): - sys.modules[f"requests.packages.{mod}"] = sys.modules[mod] - -if chardet is not None: - target = chardet.__name__ - for mod in list(sys.modules): - if mod == target or mod.startswith(f"{target}."): - imported_mod = sys.modules[mod] - sys.modules[f"requests.packages.{mod}"] = imported_mod - mod = mod.replace(target, "chardet") - sys.modules[f"requests.packages.{mod}"] = imported_mod diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/sessions.py b/gnx-react/venv/lib/python3.12/site-packages/requests/sessions.py deleted file mode 100644 index 731550de..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/sessions.py +++ /dev/null @@ -1,831 +0,0 @@ -""" -requests.sessions -~~~~~~~~~~~~~~~~~ - -This module provides a Session object to manage and persist settings across -requests (cookies, auth, proxies). -""" -import os -import sys -import time -from collections import OrderedDict -from datetime import timedelta - -from ._internal_utils import to_native_string -from .adapters import HTTPAdapter -from .auth import _basic_auth_str -from .compat import Mapping, cookielib, urljoin, urlparse -from .cookies import ( - RequestsCookieJar, - cookiejar_from_dict, - extract_cookies_to_jar, - merge_cookies, -) -from .exceptions import ( - ChunkedEncodingError, - ContentDecodingError, - InvalidSchema, - TooManyRedirects, -) -from .hooks import default_hooks, dispatch_hook - -# formerly defined here, reexposed here for backward compatibility -from .models import ( # noqa: F401 - DEFAULT_REDIRECT_LIMIT, - REDIRECT_STATI, - PreparedRequest, - Request, -) -from .status_codes import codes -from .structures import CaseInsensitiveDict -from .utils import ( # noqa: F401 - DEFAULT_PORTS, - default_headers, - get_auth_from_url, - get_environ_proxies, - get_netrc_auth, - requote_uri, - resolve_proxies, - rewind_body, - should_bypass_proxies, - to_key_val_list, -) - -# Preferred clock, based on which one is more accurate on a given system. -if sys.platform == "win32": - preferred_clock = time.perf_counter -else: - preferred_clock = time.time - - -def merge_setting(request_setting, session_setting, dict_class=OrderedDict): - """Determines appropriate setting for a given request, taking into account - the explicit setting on that request, and the setting in the session. If a - setting is a dictionary, they will be merged together using `dict_class` - """ - - if session_setting is None: - return request_setting - - if request_setting is None: - return session_setting - - # Bypass if not a dictionary (e.g. verify) - if not ( - isinstance(session_setting, Mapping) and isinstance(request_setting, Mapping) - ): - return request_setting - - merged_setting = dict_class(to_key_val_list(session_setting)) - merged_setting.update(to_key_val_list(request_setting)) - - # Remove keys that are set to None. Extract keys first to avoid altering - # the dictionary during iteration. - none_keys = [k for (k, v) in merged_setting.items() if v is None] - for key in none_keys: - del merged_setting[key] - - return merged_setting - - -def merge_hooks(request_hooks, session_hooks, dict_class=OrderedDict): - """Properly merges both requests and session hooks. - - This is necessary because when request_hooks == {'response': []}, the - merge breaks Session hooks entirely. - """ - if session_hooks is None or session_hooks.get("response") == []: - return request_hooks - - if request_hooks is None or request_hooks.get("response") == []: - return session_hooks - - return merge_setting(request_hooks, session_hooks, dict_class) - - -class SessionRedirectMixin: - def get_redirect_target(self, resp): - """Receives a Response. Returns a redirect URI or ``None``""" - # Due to the nature of how requests processes redirects this method will - # be called at least once upon the original response and at least twice - # on each subsequent redirect response (if any). - # If a custom mixin is used to handle this logic, it may be advantageous - # to cache the redirect location onto the response object as a private - # attribute. - if resp.is_redirect: - location = resp.headers["location"] - # Currently the underlying http module on py3 decode headers - # in latin1, but empirical evidence suggests that latin1 is very - # rarely used with non-ASCII characters in HTTP headers. - # It is more likely to get UTF8 header rather than latin1. - # This causes incorrect handling of UTF8 encoded location headers. - # To solve this, we re-encode the location in latin1. - location = location.encode("latin1") - return to_native_string(location, "utf8") - return None - - def should_strip_auth(self, old_url, new_url): - """Decide whether Authorization header should be removed when redirecting""" - old_parsed = urlparse(old_url) - new_parsed = urlparse(new_url) - if old_parsed.hostname != new_parsed.hostname: - return True - # Special case: allow http -> https redirect when using the standard - # ports. This isn't specified by RFC 7235, but is kept to avoid - # breaking backwards compatibility with older versions of requests - # that allowed any redirects on the same host. - if ( - old_parsed.scheme == "http" - and old_parsed.port in (80, None) - and new_parsed.scheme == "https" - and new_parsed.port in (443, None) - ): - return False - - # Handle default port usage corresponding to scheme. - changed_port = old_parsed.port != new_parsed.port - changed_scheme = old_parsed.scheme != new_parsed.scheme - default_port = (DEFAULT_PORTS.get(old_parsed.scheme, None), None) - if ( - not changed_scheme - and old_parsed.port in default_port - and new_parsed.port in default_port - ): - return False - - # Standard case: root URI must match - return changed_port or changed_scheme - - def resolve_redirects( - self, - resp, - req, - stream=False, - timeout=None, - verify=True, - cert=None, - proxies=None, - yield_requests=False, - **adapter_kwargs, - ): - """Receives a Response. Returns a generator of Responses or Requests.""" - - hist = [] # keep track of history - - url = self.get_redirect_target(resp) - previous_fragment = urlparse(req.url).fragment - while url: - prepared_request = req.copy() - - # Update history and keep track of redirects. - # resp.history must ignore the original request in this loop - hist.append(resp) - resp.history = hist[1:] - - try: - resp.content # Consume socket so it can be released - except (ChunkedEncodingError, ContentDecodingError, RuntimeError): - resp.raw.read(decode_content=False) - - if len(resp.history) >= self.max_redirects: - raise TooManyRedirects( - f"Exceeded {self.max_redirects} redirects.", response=resp - ) - - # Release the connection back into the pool. - resp.close() - - # Handle redirection without scheme (see: RFC 1808 Section 4) - if url.startswith("//"): - parsed_rurl = urlparse(resp.url) - url = ":".join([to_native_string(parsed_rurl.scheme), url]) - - # Normalize url case and attach previous fragment if needed (RFC 7231 7.1.2) - parsed = urlparse(url) - if parsed.fragment == "" and previous_fragment: - parsed = parsed._replace(fragment=previous_fragment) - elif parsed.fragment: - previous_fragment = parsed.fragment - url = parsed.geturl() - - # Facilitate relative 'location' headers, as allowed by RFC 7231. - # (e.g. '/path/to/resource' instead of 'http://domain.tld/path/to/resource') - # Compliant with RFC3986, we percent encode the url. - if not parsed.netloc: - url = urljoin(resp.url, requote_uri(url)) - else: - url = requote_uri(url) - - prepared_request.url = to_native_string(url) - - self.rebuild_method(prepared_request, resp) - - # https://github.com/psf/requests/issues/1084 - if resp.status_code not in ( - codes.temporary_redirect, - codes.permanent_redirect, - ): - # https://github.com/psf/requests/issues/3490 - purged_headers = ("Content-Length", "Content-Type", "Transfer-Encoding") - for header in purged_headers: - prepared_request.headers.pop(header, None) - prepared_request.body = None - - headers = prepared_request.headers - headers.pop("Cookie", None) - - # Extract any cookies sent on the response to the cookiejar - # in the new request. Because we've mutated our copied prepared - # request, use the old one that we haven't yet touched. - extract_cookies_to_jar(prepared_request._cookies, req, resp.raw) - merge_cookies(prepared_request._cookies, self.cookies) - prepared_request.prepare_cookies(prepared_request._cookies) - - # Rebuild auth and proxy information. - proxies = self.rebuild_proxies(prepared_request, proxies) - self.rebuild_auth(prepared_request, resp) - - # A failed tell() sets `_body_position` to `object()`. This non-None - # value ensures `rewindable` will be True, allowing us to raise an - # UnrewindableBodyError, instead of hanging the connection. - rewindable = prepared_request._body_position is not None and ( - "Content-Length" in headers or "Transfer-Encoding" in headers - ) - - # Attempt to rewind consumed file-like object. - if rewindable: - rewind_body(prepared_request) - - # Override the original request. - req = prepared_request - - if yield_requests: - yield req - else: - resp = self.send( - req, - stream=stream, - timeout=timeout, - verify=verify, - cert=cert, - proxies=proxies, - allow_redirects=False, - **adapter_kwargs, - ) - - extract_cookies_to_jar(self.cookies, prepared_request, resp.raw) - - # extract redirect url, if any, for the next loop - url = self.get_redirect_target(resp) - yield resp - - def rebuild_auth(self, prepared_request, response): - """When being redirected we may want to strip authentication from the - request to avoid leaking credentials. This method intelligently removes - and reapplies authentication where possible to avoid credential loss. - """ - headers = prepared_request.headers - url = prepared_request.url - - if "Authorization" in headers and self.should_strip_auth( - response.request.url, url - ): - # If we get redirected to a new host, we should strip out any - # authentication headers. - del headers["Authorization"] - - # .netrc might have more auth for us on our new host. - new_auth = get_netrc_auth(url) if self.trust_env else None - if new_auth is not None: - prepared_request.prepare_auth(new_auth) - - def rebuild_proxies(self, prepared_request, proxies): - """This method re-evaluates the proxy configuration by considering the - environment variables. If we are redirected to a URL covered by - NO_PROXY, we strip the proxy configuration. Otherwise, we set missing - proxy keys for this URL (in case they were stripped by a previous - redirect). - - This method also replaces the Proxy-Authorization header where - necessary. - - :rtype: dict - """ - headers = prepared_request.headers - scheme = urlparse(prepared_request.url).scheme - new_proxies = resolve_proxies(prepared_request, proxies, self.trust_env) - - if "Proxy-Authorization" in headers: - del headers["Proxy-Authorization"] - - try: - username, password = get_auth_from_url(new_proxies[scheme]) - except KeyError: - username, password = None, None - - # urllib3 handles proxy authorization for us in the standard adapter. - # Avoid appending this to TLS tunneled requests where it may be leaked. - if not scheme.startswith("https") and username and password: - headers["Proxy-Authorization"] = _basic_auth_str(username, password) - - return new_proxies - - def rebuild_method(self, prepared_request, response): - """When being redirected we may want to change the method of the request - based on certain specs or browser behavior. - """ - method = prepared_request.method - - # https://tools.ietf.org/html/rfc7231#section-6.4.4 - if response.status_code == codes.see_other and method != "HEAD": - method = "GET" - - # Do what the browsers do, despite standards... - # First, turn 302s into GETs. - if response.status_code == codes.found and method != "HEAD": - method = "GET" - - # Second, if a POST is responded to with a 301, turn it into a GET. - # This bizarre behaviour is explained in Issue 1704. - if response.status_code == codes.moved and method == "POST": - method = "GET" - - prepared_request.method = method - - -class Session(SessionRedirectMixin): - """A Requests session. - - Provides cookie persistence, connection-pooling, and configuration. - - Basic Usage:: - - >>> import requests - >>> s = requests.Session() - >>> s.get('https://httpbin.org/get') - - - Or as a context manager:: - - >>> with requests.Session() as s: - ... s.get('https://httpbin.org/get') - - """ - - __attrs__ = [ - "headers", - "cookies", - "auth", - "proxies", - "hooks", - "params", - "verify", - "cert", - "adapters", - "stream", - "trust_env", - "max_redirects", - ] - - def __init__(self): - #: A case-insensitive dictionary of headers to be sent on each - #: :class:`Request ` sent from this - #: :class:`Session `. - self.headers = default_headers() - - #: Default Authentication tuple or object to attach to - #: :class:`Request `. - self.auth = None - - #: Dictionary mapping protocol or protocol and host to the URL of the proxy - #: (e.g. {'http': 'foo.bar:3128', 'http://host.name': 'foo.bar:4012'}) to - #: be used on each :class:`Request `. - self.proxies = {} - - #: Event-handling hooks. - self.hooks = default_hooks() - - #: Dictionary of querystring data to attach to each - #: :class:`Request `. The dictionary values may be lists for - #: representing multivalued query parameters. - self.params = {} - - #: Stream response content default. - self.stream = False - - #: SSL Verification default. - #: Defaults to `True`, requiring requests to verify the TLS certificate at the - #: remote end. - #: If verify is set to `False`, requests will accept any TLS certificate - #: presented by the server, and will ignore hostname mismatches and/or - #: expired certificates, which will make your application vulnerable to - #: man-in-the-middle (MitM) attacks. - #: Only set this to `False` for testing. - self.verify = True - - #: SSL client certificate default, if String, path to ssl client - #: cert file (.pem). If Tuple, ('cert', 'key') pair. - self.cert = None - - #: Maximum number of redirects allowed. If the request exceeds this - #: limit, a :class:`TooManyRedirects` exception is raised. - #: This defaults to requests.models.DEFAULT_REDIRECT_LIMIT, which is - #: 30. - self.max_redirects = DEFAULT_REDIRECT_LIMIT - - #: Trust environment settings for proxy configuration, default - #: authentication and similar. - self.trust_env = True - - #: A CookieJar containing all currently outstanding cookies set on this - #: session. By default it is a - #: :class:`RequestsCookieJar `, but - #: may be any other ``cookielib.CookieJar`` compatible object. - self.cookies = cookiejar_from_dict({}) - - # Default connection adapters. - self.adapters = OrderedDict() - self.mount("https://", HTTPAdapter()) - self.mount("http://", HTTPAdapter()) - - def __enter__(self): - return self - - def __exit__(self, *args): - self.close() - - def prepare_request(self, request): - """Constructs a :class:`PreparedRequest ` for - transmission and returns it. The :class:`PreparedRequest` has settings - merged from the :class:`Request ` instance and those of the - :class:`Session`. - - :param request: :class:`Request` instance to prepare with this - session's settings. - :rtype: requests.PreparedRequest - """ - cookies = request.cookies or {} - - # Bootstrap CookieJar. - if not isinstance(cookies, cookielib.CookieJar): - cookies = cookiejar_from_dict(cookies) - - # Merge with session cookies - merged_cookies = merge_cookies( - merge_cookies(RequestsCookieJar(), self.cookies), cookies - ) - - # Set environment's basic authentication if not explicitly set. - auth = request.auth - if self.trust_env and not auth and not self.auth: - auth = get_netrc_auth(request.url) - - p = PreparedRequest() - p.prepare( - method=request.method.upper(), - url=request.url, - files=request.files, - data=request.data, - json=request.json, - headers=merge_setting( - request.headers, self.headers, dict_class=CaseInsensitiveDict - ), - params=merge_setting(request.params, self.params), - auth=merge_setting(auth, self.auth), - cookies=merged_cookies, - hooks=merge_hooks(request.hooks, self.hooks), - ) - return p - - def request( - self, - method, - url, - params=None, - data=None, - headers=None, - cookies=None, - files=None, - auth=None, - timeout=None, - allow_redirects=True, - proxies=None, - hooks=None, - stream=None, - verify=None, - cert=None, - json=None, - ): - """Constructs a :class:`Request `, prepares it and sends it. - Returns :class:`Response ` object. - - :param method: method for the new :class:`Request` object. - :param url: URL for the new :class:`Request` object. - :param params: (optional) Dictionary or bytes to be sent in the query - string for the :class:`Request`. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) json to send in the body of the - :class:`Request`. - :param headers: (optional) Dictionary of HTTP Headers to send with the - :class:`Request`. - :param cookies: (optional) Dict or CookieJar object to send with the - :class:`Request`. - :param files: (optional) Dictionary of ``'filename': file-like-objects`` - for multipart encoding upload. - :param auth: (optional) Auth tuple or callable to enable - Basic/Digest/Custom HTTP Auth. - :param timeout: (optional) How many seconds to wait for the server to send - data before giving up, as a float, or a :ref:`(connect timeout, - read timeout) ` tuple. - :type timeout: float or tuple - :param allow_redirects: (optional) Set to True by default. - :type allow_redirects: bool - :param proxies: (optional) Dictionary mapping protocol or protocol and - hostname to the URL of the proxy. - :param hooks: (optional) Dictionary mapping hook name to one event or - list of events, event must be callable. - :param stream: (optional) whether to immediately download the response - content. Defaults to ``False``. - :param verify: (optional) Either a boolean, in which case it controls whether we verify - the server's TLS certificate, or a string, in which case it must be a path - to a CA bundle to use. Defaults to ``True``. When set to - ``False``, requests will accept any TLS certificate presented by - the server, and will ignore hostname mismatches and/or expired - certificates, which will make your application vulnerable to - man-in-the-middle (MitM) attacks. Setting verify to ``False`` - may be useful during local development or testing. - :param cert: (optional) if String, path to ssl client cert file (.pem). - If Tuple, ('cert', 'key') pair. - :rtype: requests.Response - """ - # Create the Request. - req = Request( - method=method.upper(), - url=url, - headers=headers, - files=files, - data=data or {}, - json=json, - params=params or {}, - auth=auth, - cookies=cookies, - hooks=hooks, - ) - prep = self.prepare_request(req) - - proxies = proxies or {} - - settings = self.merge_environment_settings( - prep.url, proxies, stream, verify, cert - ) - - # Send the request. - send_kwargs = { - "timeout": timeout, - "allow_redirects": allow_redirects, - } - send_kwargs.update(settings) - resp = self.send(prep, **send_kwargs) - - return resp - - def get(self, url, **kwargs): - r"""Sends a GET request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", True) - return self.request("GET", url, **kwargs) - - def options(self, url, **kwargs): - r"""Sends a OPTIONS request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", True) - return self.request("OPTIONS", url, **kwargs) - - def head(self, url, **kwargs): - r"""Sends a HEAD request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - kwargs.setdefault("allow_redirects", False) - return self.request("HEAD", url, **kwargs) - - def post(self, url, data=None, json=None, **kwargs): - r"""Sends a POST request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param json: (optional) json to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("POST", url, data=data, json=json, **kwargs) - - def put(self, url, data=None, **kwargs): - r"""Sends a PUT request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("PUT", url, data=data, **kwargs) - - def patch(self, url, data=None, **kwargs): - r"""Sends a PATCH request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param data: (optional) Dictionary, list of tuples, bytes, or file-like - object to send in the body of the :class:`Request`. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("PATCH", url, data=data, **kwargs) - - def delete(self, url, **kwargs): - r"""Sends a DELETE request. Returns :class:`Response` object. - - :param url: URL for the new :class:`Request` object. - :param \*\*kwargs: Optional arguments that ``request`` takes. - :rtype: requests.Response - """ - - return self.request("DELETE", url, **kwargs) - - def send(self, request, **kwargs): - """Send a given PreparedRequest. - - :rtype: requests.Response - """ - # Set defaults that the hooks can utilize to ensure they always have - # the correct parameters to reproduce the previous request. - kwargs.setdefault("stream", self.stream) - kwargs.setdefault("verify", self.verify) - kwargs.setdefault("cert", self.cert) - if "proxies" not in kwargs: - kwargs["proxies"] = resolve_proxies(request, self.proxies, self.trust_env) - - # It's possible that users might accidentally send a Request object. - # Guard against that specific failure case. - if isinstance(request, Request): - raise ValueError("You can only send PreparedRequests.") - - # Set up variables needed for resolve_redirects and dispatching of hooks - allow_redirects = kwargs.pop("allow_redirects", True) - stream = kwargs.get("stream") - hooks = request.hooks - - # Get the appropriate adapter to use - adapter = self.get_adapter(url=request.url) - - # Start time (approximately) of the request - start = preferred_clock() - - # Send the request - r = adapter.send(request, **kwargs) - - # Total elapsed time of the request (approximately) - elapsed = preferred_clock() - start - r.elapsed = timedelta(seconds=elapsed) - - # Response manipulation hooks - r = dispatch_hook("response", hooks, r, **kwargs) - - # Persist cookies - if r.history: - # If the hooks create history then we want those cookies too - for resp in r.history: - extract_cookies_to_jar(self.cookies, resp.request, resp.raw) - - extract_cookies_to_jar(self.cookies, request, r.raw) - - # Resolve redirects if allowed. - if allow_redirects: - # Redirect resolving generator. - gen = self.resolve_redirects(r, request, **kwargs) - history = [resp for resp in gen] - else: - history = [] - - # Shuffle things around if there's history. - if history: - # Insert the first (original) request at the start - history.insert(0, r) - # Get the last request made - r = history.pop() - r.history = history - - # If redirects aren't being followed, store the response on the Request for Response.next(). - if not allow_redirects: - try: - r._next = next( - self.resolve_redirects(r, request, yield_requests=True, **kwargs) - ) - except StopIteration: - pass - - if not stream: - r.content - - return r - - def merge_environment_settings(self, url, proxies, stream, verify, cert): - """ - Check the environment and merge it with some settings. - - :rtype: dict - """ - # Gather clues from the surrounding environment. - if self.trust_env: - # Set environment's proxies. - no_proxy = proxies.get("no_proxy") if proxies is not None else None - env_proxies = get_environ_proxies(url, no_proxy=no_proxy) - for k, v in env_proxies.items(): - proxies.setdefault(k, v) - - # Look for requests environment configuration - # and be compatible with cURL. - if verify is True or verify is None: - verify = ( - os.environ.get("REQUESTS_CA_BUNDLE") - or os.environ.get("CURL_CA_BUNDLE") - or verify - ) - - # Merge all the kwargs. - proxies = merge_setting(proxies, self.proxies) - stream = merge_setting(stream, self.stream) - verify = merge_setting(verify, self.verify) - cert = merge_setting(cert, self.cert) - - return {"proxies": proxies, "stream": stream, "verify": verify, "cert": cert} - - def get_adapter(self, url): - """ - Returns the appropriate connection adapter for the given URL. - - :rtype: requests.adapters.BaseAdapter - """ - for prefix, adapter in self.adapters.items(): - if url.lower().startswith(prefix.lower()): - return adapter - - # Nothing matches :-/ - raise InvalidSchema(f"No connection adapters were found for {url!r}") - - def close(self): - """Closes all adapters and as such the session""" - for v in self.adapters.values(): - v.close() - - def mount(self, prefix, adapter): - """Registers a connection adapter to a prefix. - - Adapters are sorted in descending order by prefix length. - """ - self.adapters[prefix] = adapter - keys_to_move = [k for k in self.adapters if len(k) < len(prefix)] - - for key in keys_to_move: - self.adapters[key] = self.adapters.pop(key) - - def __getstate__(self): - state = {attr: getattr(self, attr, None) for attr in self.__attrs__} - return state - - def __setstate__(self, state): - for attr, value in state.items(): - setattr(self, attr, value) - - -def session(): - """ - Returns a :class:`Session` for context-management. - - .. deprecated:: 1.0.0 - - This method has been deprecated since version 1.0.0 and is only kept for - backwards compatibility. New code should use :class:`~requests.sessions.Session` - to create a session. This may be removed at a future date. - - :rtype: Session - """ - return Session() diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/status_codes.py b/gnx-react/venv/lib/python3.12/site-packages/requests/status_codes.py deleted file mode 100644 index c7945a2f..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/status_codes.py +++ /dev/null @@ -1,128 +0,0 @@ -r""" -The ``codes`` object defines a mapping from common names for HTTP statuses -to their numerical codes, accessible either as attributes or as dictionary -items. - -Example:: - - >>> import requests - >>> requests.codes['temporary_redirect'] - 307 - >>> requests.codes.teapot - 418 - >>> requests.codes['\o/'] - 200 - -Some codes have multiple names, and both upper- and lower-case versions of -the names are allowed. For example, ``codes.ok``, ``codes.OK``, and -``codes.okay`` all correspond to the HTTP status code 200. -""" - -from .structures import LookupDict - -_codes = { - # Informational. - 100: ("continue",), - 101: ("switching_protocols",), - 102: ("processing", "early-hints"), - 103: ("checkpoint",), - 122: ("uri_too_long", "request_uri_too_long"), - 200: ("ok", "okay", "all_ok", "all_okay", "all_good", "\\o/", "✓"), - 201: ("created",), - 202: ("accepted",), - 203: ("non_authoritative_info", "non_authoritative_information"), - 204: ("no_content",), - 205: ("reset_content", "reset"), - 206: ("partial_content", "partial"), - 207: ("multi_status", "multiple_status", "multi_stati", "multiple_stati"), - 208: ("already_reported",), - 226: ("im_used",), - # Redirection. - 300: ("multiple_choices",), - 301: ("moved_permanently", "moved", "\\o-"), - 302: ("found",), - 303: ("see_other", "other"), - 304: ("not_modified",), - 305: ("use_proxy",), - 306: ("switch_proxy",), - 307: ("temporary_redirect", "temporary_moved", "temporary"), - 308: ( - "permanent_redirect", - "resume_incomplete", - "resume", - ), # "resume" and "resume_incomplete" to be removed in 3.0 - # Client Error. - 400: ("bad_request", "bad"), - 401: ("unauthorized",), - 402: ("payment_required", "payment"), - 403: ("forbidden",), - 404: ("not_found", "-o-"), - 405: ("method_not_allowed", "not_allowed"), - 406: ("not_acceptable",), - 407: ("proxy_authentication_required", "proxy_auth", "proxy_authentication"), - 408: ("request_timeout", "timeout"), - 409: ("conflict",), - 410: ("gone",), - 411: ("length_required",), - 412: ("precondition_failed", "precondition"), - 413: ("request_entity_too_large", "content_too_large"), - 414: ("request_uri_too_large", "uri_too_long"), - 415: ("unsupported_media_type", "unsupported_media", "media_type"), - 416: ( - "requested_range_not_satisfiable", - "requested_range", - "range_not_satisfiable", - ), - 417: ("expectation_failed",), - 418: ("im_a_teapot", "teapot", "i_am_a_teapot"), - 421: ("misdirected_request",), - 422: ("unprocessable_entity", "unprocessable", "unprocessable_content"), - 423: ("locked",), - 424: ("failed_dependency", "dependency"), - 425: ("unordered_collection", "unordered", "too_early"), - 426: ("upgrade_required", "upgrade"), - 428: ("precondition_required", "precondition"), - 429: ("too_many_requests", "too_many"), - 431: ("header_fields_too_large", "fields_too_large"), - 444: ("no_response", "none"), - 449: ("retry_with", "retry"), - 450: ("blocked_by_windows_parental_controls", "parental_controls"), - 451: ("unavailable_for_legal_reasons", "legal_reasons"), - 499: ("client_closed_request",), - # Server Error. - 500: ("internal_server_error", "server_error", "/o\\", "✗"), - 501: ("not_implemented",), - 502: ("bad_gateway",), - 503: ("service_unavailable", "unavailable"), - 504: ("gateway_timeout",), - 505: ("http_version_not_supported", "http_version"), - 506: ("variant_also_negotiates",), - 507: ("insufficient_storage",), - 509: ("bandwidth_limit_exceeded", "bandwidth"), - 510: ("not_extended",), - 511: ("network_authentication_required", "network_auth", "network_authentication"), -} - -codes = LookupDict(name="status_codes") - - -def _init(): - for code, titles in _codes.items(): - for title in titles: - setattr(codes, title, code) - if not title.startswith(("\\", "/")): - setattr(codes, title.upper(), code) - - def doc(code): - names = ", ".join(f"``{n}``" for n in _codes[code]) - return "* %d: %s" % (code, names) - - global __doc__ - __doc__ = ( - __doc__ + "\n" + "\n".join(doc(code) for code in sorted(_codes)) - if __doc__ is not None - else None - ) - - -_init() diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/structures.py b/gnx-react/venv/lib/python3.12/site-packages/requests/structures.py deleted file mode 100644 index 188e13e4..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/structures.py +++ /dev/null @@ -1,99 +0,0 @@ -""" -requests.structures -~~~~~~~~~~~~~~~~~~~ - -Data structures that power Requests. -""" - -from collections import OrderedDict - -from .compat import Mapping, MutableMapping - - -class CaseInsensitiveDict(MutableMapping): - """A case-insensitive ``dict``-like object. - - Implements all methods and operations of - ``MutableMapping`` as well as dict's ``copy``. Also - provides ``lower_items``. - - All keys are expected to be strings. The structure remembers the - case of the last key to be set, and ``iter(instance)``, - ``keys()``, ``items()``, ``iterkeys()``, and ``iteritems()`` - will contain case-sensitive keys. However, querying and contains - testing is case insensitive:: - - cid = CaseInsensitiveDict() - cid['Accept'] = 'application/json' - cid['aCCEPT'] == 'application/json' # True - list(cid) == ['Accept'] # True - - For example, ``headers['content-encoding']`` will return the - value of a ``'Content-Encoding'`` response header, regardless - of how the header name was originally stored. - - If the constructor, ``.update``, or equality comparison - operations are given keys that have equal ``.lower()``s, the - behavior is undefined. - """ - - def __init__(self, data=None, **kwargs): - self._store = OrderedDict() - if data is None: - data = {} - self.update(data, **kwargs) - - def __setitem__(self, key, value): - # Use the lowercased key for lookups, but store the actual - # key alongside the value. - self._store[key.lower()] = (key, value) - - def __getitem__(self, key): - return self._store[key.lower()][1] - - def __delitem__(self, key): - del self._store[key.lower()] - - def __iter__(self): - return (casedkey for casedkey, mappedvalue in self._store.values()) - - def __len__(self): - return len(self._store) - - def lower_items(self): - """Like iteritems(), but with all lowercase keys.""" - return ((lowerkey, keyval[1]) for (lowerkey, keyval) in self._store.items()) - - def __eq__(self, other): - if isinstance(other, Mapping): - other = CaseInsensitiveDict(other) - else: - return NotImplemented - # Compare insensitively - return dict(self.lower_items()) == dict(other.lower_items()) - - # Copy is required - def copy(self): - return CaseInsensitiveDict(self._store.values()) - - def __repr__(self): - return str(dict(self.items())) - - -class LookupDict(dict): - """Dictionary lookup object.""" - - def __init__(self, name=None): - self.name = name - super().__init__() - - def __repr__(self): - return f"" - - def __getitem__(self, key): - # We allow fall-through here, so values default to None - - return self.__dict__.get(key, None) - - def get(self, key, default=None): - return self.__dict__.get(key, default) diff --git a/gnx-react/venv/lib/python3.12/site-packages/requests/utils.py b/gnx-react/venv/lib/python3.12/site-packages/requests/utils.py deleted file mode 100644 index 8ab55852..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/requests/utils.py +++ /dev/null @@ -1,1086 +0,0 @@ -""" -requests.utils -~~~~~~~~~~~~~~ - -This module provides utility functions that are used within Requests -that are also useful for external consumption. -""" - -import codecs -import contextlib -import io -import os -import re -import socket -import struct -import sys -import tempfile -import warnings -import zipfile -from collections import OrderedDict - -from urllib3.util import make_headers, parse_url - -from . import certs -from .__version__ import __version__ - -# to_native_string is unused here, but imported here for backwards compatibility -from ._internal_utils import ( # noqa: F401 - _HEADER_VALIDATORS_BYTE, - _HEADER_VALIDATORS_STR, - HEADER_VALIDATORS, - to_native_string, -) -from .compat import ( - Mapping, - basestring, - bytes, - getproxies, - getproxies_environment, - integer_types, - is_urllib3_1, -) -from .compat import parse_http_list as _parse_list_header -from .compat import ( - proxy_bypass, - proxy_bypass_environment, - quote, - str, - unquote, - urlparse, - urlunparse, -) -from .cookies import cookiejar_from_dict -from .exceptions import ( - FileModeWarning, - InvalidHeader, - InvalidURL, - UnrewindableBodyError, -) -from .structures import CaseInsensitiveDict - -NETRC_FILES = (".netrc", "_netrc") - -DEFAULT_CA_BUNDLE_PATH = certs.where() - -DEFAULT_PORTS = {"http": 80, "https": 443} - -# Ensure that ', ' is used to preserve previous delimiter behavior. -DEFAULT_ACCEPT_ENCODING = ", ".join( - re.split(r",\s*", make_headers(accept_encoding=True)["accept-encoding"]) -) - - -if sys.platform == "win32": - # provide a proxy_bypass version on Windows without DNS lookups - - def proxy_bypass_registry(host): - try: - import winreg - except ImportError: - return False - - try: - internetSettings = winreg.OpenKey( - winreg.HKEY_CURRENT_USER, - r"Software\Microsoft\Windows\CurrentVersion\Internet Settings", - ) - # ProxyEnable could be REG_SZ or REG_DWORD, normalizing it - proxyEnable = int(winreg.QueryValueEx(internetSettings, "ProxyEnable")[0]) - # ProxyOverride is almost always a string - proxyOverride = winreg.QueryValueEx(internetSettings, "ProxyOverride")[0] - except (OSError, ValueError): - return False - if not proxyEnable or not proxyOverride: - return False - - # make a check value list from the registry entry: replace the - # '' string by the localhost entry and the corresponding - # canonical entry. - proxyOverride = proxyOverride.split(";") - # filter out empty strings to avoid re.match return true in the following code. - proxyOverride = filter(None, proxyOverride) - # now check if we match one of the registry values. - for test in proxyOverride: - if test == "": - if "." not in host: - return True - test = test.replace(".", r"\.") # mask dots - test = test.replace("*", r".*") # change glob sequence - test = test.replace("?", r".") # change glob char - if re.match(test, host, re.I): - return True - return False - - def proxy_bypass(host): # noqa - """Return True, if the host should be bypassed. - - Checks proxy settings gathered from the environment, if specified, - or the registry. - """ - if getproxies_environment(): - return proxy_bypass_environment(host) - else: - return proxy_bypass_registry(host) - - -def dict_to_sequence(d): - """Returns an internal sequence dictionary update.""" - - if hasattr(d, "items"): - d = d.items() - - return d - - -def super_len(o): - total_length = None - current_position = 0 - - if not is_urllib3_1 and isinstance(o, str): - # urllib3 2.x+ treats all strings as utf-8 instead - # of latin-1 (iso-8859-1) like http.client. - o = o.encode("utf-8") - - if hasattr(o, "__len__"): - total_length = len(o) - - elif hasattr(o, "len"): - total_length = o.len - - elif hasattr(o, "fileno"): - try: - fileno = o.fileno() - except (io.UnsupportedOperation, AttributeError): - # AttributeError is a surprising exception, seeing as how we've just checked - # that `hasattr(o, 'fileno')`. It happens for objects obtained via - # `Tarfile.extractfile()`, per issue 5229. - pass - else: - total_length = os.fstat(fileno).st_size - - # Having used fstat to determine the file length, we need to - # confirm that this file was opened up in binary mode. - if "b" not in o.mode: - warnings.warn( - ( - "Requests has determined the content-length for this " - "request using the binary size of the file: however, the " - "file has been opened in text mode (i.e. without the 'b' " - "flag in the mode). This may lead to an incorrect " - "content-length. In Requests 3.0, support will be removed " - "for files in text mode." - ), - FileModeWarning, - ) - - if hasattr(o, "tell"): - try: - current_position = o.tell() - except OSError: - # This can happen in some weird situations, such as when the file - # is actually a special file descriptor like stdin. In this - # instance, we don't know what the length is, so set it to zero and - # let requests chunk it instead. - if total_length is not None: - current_position = total_length - else: - if hasattr(o, "seek") and total_length is None: - # StringIO and BytesIO have seek but no usable fileno - try: - # seek to end of file - o.seek(0, 2) - total_length = o.tell() - - # seek back to current position to support - # partially read file-like objects - o.seek(current_position or 0) - except OSError: - total_length = 0 - - if total_length is None: - total_length = 0 - - return max(0, total_length - current_position) - - -def get_netrc_auth(url, raise_errors=False): - """Returns the Requests tuple auth for a given url from netrc.""" - - netrc_file = os.environ.get("NETRC") - if netrc_file is not None: - netrc_locations = (netrc_file,) - else: - netrc_locations = (f"~/{f}" for f in NETRC_FILES) - - try: - from netrc import NetrcParseError, netrc - - netrc_path = None - - for f in netrc_locations: - loc = os.path.expanduser(f) - if os.path.exists(loc): - netrc_path = loc - break - - # Abort early if there isn't one. - if netrc_path is None: - return - - ri = urlparse(url) - host = ri.hostname - - try: - _netrc = netrc(netrc_path).authenticators(host) - if _netrc: - # Return with login / password - login_i = 0 if _netrc[0] else 1 - return (_netrc[login_i], _netrc[2]) - except (NetrcParseError, OSError): - # If there was a parsing error or a permissions issue reading the file, - # we'll just skip netrc auth unless explicitly asked to raise errors. - if raise_errors: - raise - - # App Engine hackiness. - except (ImportError, AttributeError): - pass - - -def guess_filename(obj): - """Tries to guess the filename of the given object.""" - name = getattr(obj, "name", None) - if name and isinstance(name, basestring) and name[0] != "<" and name[-1] != ">": - return os.path.basename(name) - - -def extract_zipped_paths(path): - """Replace nonexistent paths that look like they refer to a member of a zip - archive with the location of an extracted copy of the target, or else - just return the provided path unchanged. - """ - if os.path.exists(path): - # this is already a valid path, no need to do anything further - return path - - # find the first valid part of the provided path and treat that as a zip archive - # assume the rest of the path is the name of a member in the archive - archive, member = os.path.split(path) - while archive and not os.path.exists(archive): - archive, prefix = os.path.split(archive) - if not prefix: - # If we don't check for an empty prefix after the split (in other words, archive remains unchanged after the split), - # we _can_ end up in an infinite loop on a rare corner case affecting a small number of users - break - member = "/".join([prefix, member]) - - if not zipfile.is_zipfile(archive): - return path - - zip_file = zipfile.ZipFile(archive) - if member not in zip_file.namelist(): - return path - - # we have a valid zip archive and a valid member of that archive - tmp = tempfile.gettempdir() - extracted_path = os.path.join(tmp, member.split("/")[-1]) - if not os.path.exists(extracted_path): - # use read + write to avoid the creating nested folders, we only want the file, avoids mkdir racing condition - with atomic_open(extracted_path) as file_handler: - file_handler.write(zip_file.read(member)) - return extracted_path - - -@contextlib.contextmanager -def atomic_open(filename): - """Write a file to the disk in an atomic fashion""" - tmp_descriptor, tmp_name = tempfile.mkstemp(dir=os.path.dirname(filename)) - try: - with os.fdopen(tmp_descriptor, "wb") as tmp_handler: - yield tmp_handler - os.replace(tmp_name, filename) - except BaseException: - os.remove(tmp_name) - raise - - -def from_key_val_list(value): - """Take an object and test to see if it can be represented as a - dictionary. Unless it can not be represented as such, return an - OrderedDict, e.g., - - :: - - >>> from_key_val_list([('key', 'val')]) - OrderedDict([('key', 'val')]) - >>> from_key_val_list('string') - Traceback (most recent call last): - ... - ValueError: cannot encode objects that are not 2-tuples - >>> from_key_val_list({'key': 'val'}) - OrderedDict([('key', 'val')]) - - :rtype: OrderedDict - """ - if value is None: - return None - - if isinstance(value, (str, bytes, bool, int)): - raise ValueError("cannot encode objects that are not 2-tuples") - - return OrderedDict(value) - - -def to_key_val_list(value): - """Take an object and test to see if it can be represented as a - dictionary. If it can be, return a list of tuples, e.g., - - :: - - >>> to_key_val_list([('key', 'val')]) - [('key', 'val')] - >>> to_key_val_list({'key': 'val'}) - [('key', 'val')] - >>> to_key_val_list('string') - Traceback (most recent call last): - ... - ValueError: cannot encode objects that are not 2-tuples - - :rtype: list - """ - if value is None: - return None - - if isinstance(value, (str, bytes, bool, int)): - raise ValueError("cannot encode objects that are not 2-tuples") - - if isinstance(value, Mapping): - value = value.items() - - return list(value) - - -# From mitsuhiko/werkzeug (used with permission). -def parse_list_header(value): - """Parse lists as described by RFC 2068 Section 2. - - In particular, parse comma-separated lists where the elements of - the list may include quoted-strings. A quoted-string could - contain a comma. A non-quoted string could have quotes in the - middle. Quotes are removed automatically after parsing. - - It basically works like :func:`parse_set_header` just that items - may appear multiple times and case sensitivity is preserved. - - The return value is a standard :class:`list`: - - >>> parse_list_header('token, "quoted value"') - ['token', 'quoted value'] - - To create a header from the :class:`list` again, use the - :func:`dump_header` function. - - :param value: a string with a list header. - :return: :class:`list` - :rtype: list - """ - result = [] - for item in _parse_list_header(value): - if item[:1] == item[-1:] == '"': - item = unquote_header_value(item[1:-1]) - result.append(item) - return result - - -# From mitsuhiko/werkzeug (used with permission). -def parse_dict_header(value): - """Parse lists of key, value pairs as described by RFC 2068 Section 2 and - convert them into a python dict: - - >>> d = parse_dict_header('foo="is a fish", bar="as well"') - >>> type(d) is dict - True - >>> sorted(d.items()) - [('bar', 'as well'), ('foo', 'is a fish')] - - If there is no value for a key it will be `None`: - - >>> parse_dict_header('key_without_value') - {'key_without_value': None} - - To create a header from the :class:`dict` again, use the - :func:`dump_header` function. - - :param value: a string with a dict header. - :return: :class:`dict` - :rtype: dict - """ - result = {} - for item in _parse_list_header(value): - if "=" not in item: - result[item] = None - continue - name, value = item.split("=", 1) - if value[:1] == value[-1:] == '"': - value = unquote_header_value(value[1:-1]) - result[name] = value - return result - - -# From mitsuhiko/werkzeug (used with permission). -def unquote_header_value(value, is_filename=False): - r"""Unquotes a header value. (Reversal of :func:`quote_header_value`). - This does not use the real unquoting but what browsers are actually - using for quoting. - - :param value: the header value to unquote. - :rtype: str - """ - if value and value[0] == value[-1] == '"': - # this is not the real unquoting, but fixing this so that the - # RFC is met will result in bugs with internet explorer and - # probably some other browsers as well. IE for example is - # uploading files with "C:\foo\bar.txt" as filename - value = value[1:-1] - - # if this is a filename and the starting characters look like - # a UNC path, then just return the value without quotes. Using the - # replace sequence below on a UNC path has the effect of turning - # the leading double slash into a single slash and then - # _fix_ie_filename() doesn't work correctly. See #458. - if not is_filename or value[:2] != "\\\\": - return value.replace("\\\\", "\\").replace('\\"', '"') - return value - - -def dict_from_cookiejar(cj): - """Returns a key/value dictionary from a CookieJar. - - :param cj: CookieJar object to extract cookies from. - :rtype: dict - """ - - cookie_dict = {cookie.name: cookie.value for cookie in cj} - return cookie_dict - - -def add_dict_to_cookiejar(cj, cookie_dict): - """Returns a CookieJar from a key/value dictionary. - - :param cj: CookieJar to insert cookies into. - :param cookie_dict: Dict of key/values to insert into CookieJar. - :rtype: CookieJar - """ - - return cookiejar_from_dict(cookie_dict, cj) - - -def get_encodings_from_content(content): - """Returns encodings from given content string. - - :param content: bytestring to extract encodings from. - """ - warnings.warn( - ( - "In requests 3.0, get_encodings_from_content will be removed. For " - "more information, please see the discussion on issue #2266. (This" - " warning should only appear once.)" - ), - DeprecationWarning, - ) - - charset_re = re.compile(r']', flags=re.I) - pragma_re = re.compile(r']', flags=re.I) - xml_re = re.compile(r'^<\?xml.*?encoding=["\']*(.+?)["\'>]') - - return ( - charset_re.findall(content) - + pragma_re.findall(content) - + xml_re.findall(content) - ) - - -def _parse_content_type_header(header): - """Returns content type and parameters from given header - - :param header: string - :return: tuple containing content type and dictionary of - parameters - """ - - tokens = header.split(";") - content_type, params = tokens[0].strip(), tokens[1:] - params_dict = {} - items_to_strip = "\"' " - - for param in params: - param = param.strip() - if param: - key, value = param, True - index_of_equals = param.find("=") - if index_of_equals != -1: - key = param[:index_of_equals].strip(items_to_strip) - value = param[index_of_equals + 1 :].strip(items_to_strip) - params_dict[key.lower()] = value - return content_type, params_dict - - -def get_encoding_from_headers(headers): - """Returns encodings from given HTTP Header Dict. - - :param headers: dictionary to extract encoding from. - :rtype: str - """ - - content_type = headers.get("content-type") - - if not content_type: - return None - - content_type, params = _parse_content_type_header(content_type) - - if "charset" in params: - return params["charset"].strip("'\"") - - if "text" in content_type: - return "ISO-8859-1" - - if "application/json" in content_type: - # Assume UTF-8 based on RFC 4627: https://www.ietf.org/rfc/rfc4627.txt since the charset was unset - return "utf-8" - - -def stream_decode_response_unicode(iterator, r): - """Stream decodes an iterator.""" - - if r.encoding is None: - yield from iterator - return - - decoder = codecs.getincrementaldecoder(r.encoding)(errors="replace") - for chunk in iterator: - rv = decoder.decode(chunk) - if rv: - yield rv - rv = decoder.decode(b"", final=True) - if rv: - yield rv - - -def iter_slices(string, slice_length): - """Iterate over slices of a string.""" - pos = 0 - if slice_length is None or slice_length <= 0: - slice_length = len(string) - while pos < len(string): - yield string[pos : pos + slice_length] - pos += slice_length - - -def get_unicode_from_response(r): - """Returns the requested content back in unicode. - - :param r: Response object to get unicode content from. - - Tried: - - 1. charset from content-type - 2. fall back and replace all unicode characters - - :rtype: str - """ - warnings.warn( - ( - "In requests 3.0, get_unicode_from_response will be removed. For " - "more information, please see the discussion on issue #2266. (This" - " warning should only appear once.)" - ), - DeprecationWarning, - ) - - tried_encodings = [] - - # Try charset from content-type - encoding = get_encoding_from_headers(r.headers) - - if encoding: - try: - return str(r.content, encoding) - except UnicodeError: - tried_encodings.append(encoding) - - # Fall back: - try: - return str(r.content, encoding, errors="replace") - except TypeError: - return r.content - - -# The unreserved URI characters (RFC 3986) -UNRESERVED_SET = frozenset( - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" + "0123456789-._~" -) - - -def unquote_unreserved(uri): - """Un-escape any percent-escape sequences in a URI that are unreserved - characters. This leaves all reserved, illegal and non-ASCII bytes encoded. - - :rtype: str - """ - parts = uri.split("%") - for i in range(1, len(parts)): - h = parts[i][0:2] - if len(h) == 2 and h.isalnum(): - try: - c = chr(int(h, 16)) - except ValueError: - raise InvalidURL(f"Invalid percent-escape sequence: '{h}'") - - if c in UNRESERVED_SET: - parts[i] = c + parts[i][2:] - else: - parts[i] = f"%{parts[i]}" - else: - parts[i] = f"%{parts[i]}" - return "".join(parts) - - -def requote_uri(uri): - """Re-quote the given URI. - - This function passes the given URI through an unquote/quote cycle to - ensure that it is fully and consistently quoted. - - :rtype: str - """ - safe_with_percent = "!#$%&'()*+,/:;=?@[]~" - safe_without_percent = "!#$&'()*+,/:;=?@[]~" - try: - # Unquote only the unreserved characters - # Then quote only illegal characters (do not quote reserved, - # unreserved, or '%') - return quote(unquote_unreserved(uri), safe=safe_with_percent) - except InvalidURL: - # We couldn't unquote the given URI, so let's try quoting it, but - # there may be unquoted '%'s in the URI. We need to make sure they're - # properly quoted so they do not cause issues elsewhere. - return quote(uri, safe=safe_without_percent) - - -def address_in_network(ip, net): - """This function allows you to check if an IP belongs to a network subnet - - Example: returns True if ip = 192.168.1.1 and net = 192.168.1.0/24 - returns False if ip = 192.168.1.1 and net = 192.168.100.0/24 - - :rtype: bool - """ - ipaddr = struct.unpack("=L", socket.inet_aton(ip))[0] - netaddr, bits = net.split("/") - netmask = struct.unpack("=L", socket.inet_aton(dotted_netmask(int(bits))))[0] - network = struct.unpack("=L", socket.inet_aton(netaddr))[0] & netmask - return (ipaddr & netmask) == (network & netmask) - - -def dotted_netmask(mask): - """Converts mask from /xx format to xxx.xxx.xxx.xxx - - Example: if mask is 24 function returns 255.255.255.0 - - :rtype: str - """ - bits = 0xFFFFFFFF ^ (1 << 32 - mask) - 1 - return socket.inet_ntoa(struct.pack(">I", bits)) - - -def is_ipv4_address(string_ip): - """ - :rtype: bool - """ - try: - socket.inet_aton(string_ip) - except OSError: - return False - return True - - -def is_valid_cidr(string_network): - """ - Very simple check of the cidr format in no_proxy variable. - - :rtype: bool - """ - if string_network.count("/") == 1: - try: - mask = int(string_network.split("/")[1]) - except ValueError: - return False - - if mask < 1 or mask > 32: - return False - - try: - socket.inet_aton(string_network.split("/")[0]) - except OSError: - return False - else: - return False - return True - - -@contextlib.contextmanager -def set_environ(env_name, value): - """Set the environment variable 'env_name' to 'value' - - Save previous value, yield, and then restore the previous value stored in - the environment variable 'env_name'. - - If 'value' is None, do nothing""" - value_changed = value is not None - if value_changed: - old_value = os.environ.get(env_name) - os.environ[env_name] = value - try: - yield - finally: - if value_changed: - if old_value is None: - del os.environ[env_name] - else: - os.environ[env_name] = old_value - - -def should_bypass_proxies(url, no_proxy): - """ - Returns whether we should bypass proxies or not. - - :rtype: bool - """ - - # Prioritize lowercase environment variables over uppercase - # to keep a consistent behaviour with other http projects (curl, wget). - def get_proxy(key): - return os.environ.get(key) or os.environ.get(key.upper()) - - # First check whether no_proxy is defined. If it is, check that the URL - # we're getting isn't in the no_proxy list. - no_proxy_arg = no_proxy - if no_proxy is None: - no_proxy = get_proxy("no_proxy") - parsed = urlparse(url) - - if parsed.hostname is None: - # URLs don't always have hostnames, e.g. file:/// urls. - return True - - if no_proxy: - # We need to check whether we match here. We need to see if we match - # the end of the hostname, both with and without the port. - no_proxy = (host for host in no_proxy.replace(" ", "").split(",") if host) - - if is_ipv4_address(parsed.hostname): - for proxy_ip in no_proxy: - if is_valid_cidr(proxy_ip): - if address_in_network(parsed.hostname, proxy_ip): - return True - elif parsed.hostname == proxy_ip: - # If no_proxy ip was defined in plain IP notation instead of cidr notation & - # matches the IP of the index - return True - else: - host_with_port = parsed.hostname - if parsed.port: - host_with_port += f":{parsed.port}" - - for host in no_proxy: - if parsed.hostname.endswith(host) or host_with_port.endswith(host): - # The URL does match something in no_proxy, so we don't want - # to apply the proxies on this URL. - return True - - with set_environ("no_proxy", no_proxy_arg): - # parsed.hostname can be `None` in cases such as a file URI. - try: - bypass = proxy_bypass(parsed.hostname) - except (TypeError, socket.gaierror): - bypass = False - - if bypass: - return True - - return False - - -def get_environ_proxies(url, no_proxy=None): - """ - Return a dict of environment proxies. - - :rtype: dict - """ - if should_bypass_proxies(url, no_proxy=no_proxy): - return {} - else: - return getproxies() - - -def select_proxy(url, proxies): - """Select a proxy for the url, if applicable. - - :param url: The url being for the request - :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs - """ - proxies = proxies or {} - urlparts = urlparse(url) - if urlparts.hostname is None: - return proxies.get(urlparts.scheme, proxies.get("all")) - - proxy_keys = [ - urlparts.scheme + "://" + urlparts.hostname, - urlparts.scheme, - "all://" + urlparts.hostname, - "all", - ] - proxy = None - for proxy_key in proxy_keys: - if proxy_key in proxies: - proxy = proxies[proxy_key] - break - - return proxy - - -def resolve_proxies(request, proxies, trust_env=True): - """This method takes proxy information from a request and configuration - input to resolve a mapping of target proxies. This will consider settings - such as NO_PROXY to strip proxy configurations. - - :param request: Request or PreparedRequest - :param proxies: A dictionary of schemes or schemes and hosts to proxy URLs - :param trust_env: Boolean declaring whether to trust environment configs - - :rtype: dict - """ - proxies = proxies if proxies is not None else {} - url = request.url - scheme = urlparse(url).scheme - no_proxy = proxies.get("no_proxy") - new_proxies = proxies.copy() - - if trust_env and not should_bypass_proxies(url, no_proxy=no_proxy): - environ_proxies = get_environ_proxies(url, no_proxy=no_proxy) - - proxy = environ_proxies.get(scheme, environ_proxies.get("all")) - - if proxy: - new_proxies.setdefault(scheme, proxy) - return new_proxies - - -def default_user_agent(name="python-requests"): - """ - Return a string representing the default user agent. - - :rtype: str - """ - return f"{name}/{__version__}" - - -def default_headers(): - """ - :rtype: requests.structures.CaseInsensitiveDict - """ - return CaseInsensitiveDict( - { - "User-Agent": default_user_agent(), - "Accept-Encoding": DEFAULT_ACCEPT_ENCODING, - "Accept": "*/*", - "Connection": "keep-alive", - } - ) - - -def parse_header_links(value): - """Return a list of parsed link headers proxies. - - i.e. Link: ; rel=front; type="image/jpeg",; rel=back;type="image/jpeg" - - :rtype: list - """ - - links = [] - - replace_chars = " '\"" - - value = value.strip(replace_chars) - if not value: - return links - - for val in re.split(", *<", value): - try: - url, params = val.split(";", 1) - except ValueError: - url, params = val, "" - - link = {"url": url.strip("<> '\"")} - - for param in params.split(";"): - try: - key, value = param.split("=") - except ValueError: - break - - link[key.strip(replace_chars)] = value.strip(replace_chars) - - links.append(link) - - return links - - -# Null bytes; no need to recreate these on each call to guess_json_utf -_null = "\x00".encode("ascii") # encoding to ASCII for Python 3 -_null2 = _null * 2 -_null3 = _null * 3 - - -def guess_json_utf(data): - """ - :rtype: str - """ - # JSON always starts with two ASCII characters, so detection is as - # easy as counting the nulls and from their location and count - # determine the encoding. Also detect a BOM, if present. - sample = data[:4] - if sample in (codecs.BOM_UTF32_LE, codecs.BOM_UTF32_BE): - return "utf-32" # BOM included - if sample[:3] == codecs.BOM_UTF8: - return "utf-8-sig" # BOM included, MS style (discouraged) - if sample[:2] in (codecs.BOM_UTF16_LE, codecs.BOM_UTF16_BE): - return "utf-16" # BOM included - nullcount = sample.count(_null) - if nullcount == 0: - return "utf-8" - if nullcount == 2: - if sample[::2] == _null2: # 1st and 3rd are null - return "utf-16-be" - if sample[1::2] == _null2: # 2nd and 4th are null - return "utf-16-le" - # Did not detect 2 valid UTF-16 ascii-range characters - if nullcount == 3: - if sample[:3] == _null3: - return "utf-32-be" - if sample[1:] == _null3: - return "utf-32-le" - # Did not detect a valid UTF-32 ascii-range character - return None - - -def prepend_scheme_if_needed(url, new_scheme): - """Given a URL that may or may not have a scheme, prepend the given scheme. - Does not replace a present scheme with the one provided as an argument. - - :rtype: str - """ - parsed = parse_url(url) - scheme, auth, host, port, path, query, fragment = parsed - - # A defect in urlparse determines that there isn't a netloc present in some - # urls. We previously assumed parsing was overly cautious, and swapped the - # netloc and path. Due to a lack of tests on the original defect, this is - # maintained with parse_url for backwards compatibility. - netloc = parsed.netloc - if not netloc: - netloc, path = path, netloc - - if auth: - # parse_url doesn't provide the netloc with auth - # so we'll add it ourselves. - netloc = "@".join([auth, netloc]) - if scheme is None: - scheme = new_scheme - if path is None: - path = "" - - return urlunparse((scheme, netloc, path, "", query, fragment)) - - -def get_auth_from_url(url): - """Given a url with authentication components, extract them into a tuple of - username,password. - - :rtype: (str,str) - """ - parsed = urlparse(url) - - try: - auth = (unquote(parsed.username), unquote(parsed.password)) - except (AttributeError, TypeError): - auth = ("", "") - - return auth - - -def check_header_validity(header): - """Verifies that header parts don't contain leading whitespace - reserved characters, or return characters. - - :param header: tuple, in the format (name, value). - """ - name, value = header - _validate_header_part(header, name, 0) - _validate_header_part(header, value, 1) - - -def _validate_header_part(header, header_part, header_validator_index): - if isinstance(header_part, str): - validator = _HEADER_VALIDATORS_STR[header_validator_index] - elif isinstance(header_part, bytes): - validator = _HEADER_VALIDATORS_BYTE[header_validator_index] - else: - raise InvalidHeader( - f"Header part ({header_part!r}) from {header} " - f"must be of type str or bytes, not {type(header_part)}" - ) - - if not validator.match(header_part): - header_kind = "name" if header_validator_index == 0 else "value" - raise InvalidHeader( - f"Invalid leading whitespace, reserved character(s), or return " - f"character(s) in header {header_kind}: {header_part!r}" - ) - - -def urldefragauth(url): - """ - Given a url remove the fragment and the authentication part. - - :rtype: str - """ - scheme, netloc, path, params, query, fragment = urlparse(url) - - # see func:`prepend_scheme_if_needed` - if not netloc: - netloc, path = path, netloc - - netloc = netloc.rsplit("@", 1)[-1] - - return urlunparse((scheme, netloc, path, params, query, "")) - - -def rewind_body(prepared_request): - """Move file pointer back to its recorded starting position - so it can be read again on redirect. - """ - body_seek = getattr(prepared_request.body, "seek", None) - if body_seek is not None and isinstance( - prepared_request._body_position, integer_types - ): - try: - body_seek(prepared_request._body_position) - except OSError: - raise UnrewindableBodyError( - "An error occurred when rewinding request body for redirect." - ) - else: - raise UnrewindableBodyError("Unable to rewind request body for redirect.") diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/__init__.cpython-312.pyc index 83791f9881160dc335417d89a18476d2d6f7d170..5a55a31e8090268b35b995e8cf96b081fc6c73ac 100644 GIT binary patch delta 52 zcmbQowTz4VG%qg~0}%9Xy1J1&mRTx6KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%3x G5=H=%l_ G4x|EgsG%qg~0}wR6xw4VlhEXU)KO;XkRX;tiLf<8|IJ+djU~?j)4%mA GD&dM G0XYD~E)i(} delta 44 ycmX@^v)_mNG%qg~0}wR6xw4TviCrj4KO;XkRX;tiLf<8|IJ+djU~@bB0XYClj1Ol3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/documentation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/documentation.cpython-312.pyc index 0629d7b2980a1fc6bb1ca8b1df814cd6d07103c5..7f35198759a02cabd800cd3b1a86adec09490764 100644 GIT binary patch delta 52 zcmcaAcvq17G%qg~0}%9Xy1J43ACpw7enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`ISr GU914el@T%k delta 44 ycmcaBcvX=5G%qg~0}wR6xw4V_ACpk5enx(7s(yN2g}zH_adt_5!DeOVU9131a}O{8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/exceptions.cpython-312.pyc index b8a7215934e0a07b36afe37d79c64c066ccf70d0..3849721ea93c0dc1891e1f43c8175648c7d30b4c 100644 GIT binary patch delta 52 zcmcbXa4&)TG%qg~0}%9Xy1J43GpkgRenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`ErS GH!T3=fe~;3 delta 44 ycmcbYa4muRG%qg~0}wR6xw4V_GpkUPenx(7s(yN2g}zH_adt_5!Db0IH!T2Uw-0Ur diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/fields.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/fields.cpython-312.pyc index 7c0506733695079be5b8da89c486e378d862d140..4ed801e882711e965b093eab6827768078e77b91 100644 GIT binary patch delta 58 zcmex4hqZAoEB9$$UM>b8=-qU6Blj5&sW|b8Xnb>JBlj5&p)mc7{M=Oi^t=jvm(=3ylKg_^j~v@SaxhMC F1pvD|5>NmD diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/filters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/filters.cpython-312.pyc index d197fec0c847c98cf13ebbd5b52e4c369e32ae2a..217a1b16e3e13f932c71589f04c328b1ba17e6fb 100644 GIT binary patch delta 52 zcmX?Aa;b#-G%qg~0}%9Xy1J3upIItiKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$(q GJu?8*#Szp1 delta 44 ycmcaqa;k*;G%qg~0}wR6xw4VlpIIneKO;XkRX;tiLf<8|IJ+djU~>ucJu?7U!w=E` diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/generics.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/generics.cpython-312.pyc index 9b0d6a349550151deae1adf2b771c6b831c6075e..2e6aace9ea4262ceecf4396f44508e56aef4a500 100644 GIT binary patch delta 52 zcmaEr`YDzBG%qg~0}%9Xy1J2jIg3<+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8->A GYI*?Ygc0cg delta 44 ycmeyA`YM(CG%qg~0}wR6xw4UaIg3z)enx(7s(yN2g}zH_adt_5!R9k8YI*=?q7UZ) diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/metadata.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/metadata.cpython-312.pyc index 8b0c19bcefc816f53e6c4fd33bc59f657b393192..cd55a2719063bd00f2de24772e7f7384e9c93ca1 100644 GIT binary patch delta 52 zcmaE4^~#F-G%qg~0}%9Xy1J43II~oOenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;44 Gb&>$szY+uh delta 44 ycmaE5^~j3*G%qg~0}wR6xw4V_II~cMenx(7s(yN2g}zH_adt_5!R9y2b&>#E6%Yad diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/mixins.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/mixins.cpython-312.pyc index d05c02db3e5fb14555b50bd473f63824cf404d64..c78680bc2e41da87c25b7acdf1f44d5810338e5a 100644 GIT binary patch delta 52 zcmbQMwN#7yG%qg~0}%9Xy1J438M9QJenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`IHC GDM0|XkPs^X delta 44 ycmZ3gHCK!KG%qg~0}wR6xw4V_8M9EBenx(7s(yN2g}zH_adt_5!Den2DM0`|P7Wym diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/negotiation.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/negotiation.cpython-312.pyc index 8ca8555aec079df2ad630914741d836699b2135e..47bc421b6632cf45759b55cadda9d38bbd2dd2d4 100644 GIT binary patch delta 52 zcmbQEx%VF Gp8x=-GY~2O delta 44 ycmZ3YI!BfJG%qg~0}wR6xw4VFkVz<7KO;XkRX;tiLf<8|IJ+djVDmI4J^=tR*$yZG diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/pagination.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/pagination.cpython-312.pyc index b8dcb4bf137cdb1a97923844742c863adcf269f1..a6b9441d26f4fcc39758fbce4ffe58bce5eaf568 100644 GIT binary patch delta 54 zcmeC0%rt2-6ZdIeUM>b8=-qU6Bll-!sU-c3{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I0xVUn0N=|I%>V!Z delta 46 zcmbOb8Xnb>JBll-!p(y=~{M=Oi^t=jvm(=3ylKg_r5-e4%0APs^ A%K!iX diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/parsers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/parsers.cpython-312.pyc index b0d3ec8413f48f625cfff74f4b3417b13b6cb894..3971c19394b9b35297cfd234fc400378ffae7f20 100644 GIT binary patch delta 52 zcmaFl`O1^~G%qg~0}%9Xy1J1&idiaNKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&Pq Gwjuz|FcCZe delta 44 ycmaFm`N)&|G%qg~0}wR6xw4TvidiUJKO;XkRX;tiLf<8|IJ+djU~@flwjuyi1`j#_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/permissions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/permissions.cpython-312.pyc index 9a4b2446da9d02fe5e47869e012b2d8303eafbae..092d2021cd887a0ba2496777b7c9e4fe2f7737fb 100644 GIT binary patch delta 52 zcmaEm@gjr!G%qg~0}%9Xy1J2jFOyWVenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<=D GZH55o&=P3? delta 44 ycmaEn@gRfyG%qg~0}wR6xw4UaFOyKTenx(7s(yN2g}zH_adt_5!RALyZH547rVwWU diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/relations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/relations.cpython-312.pyc index bfc092306d561dd687e74681514b612f440bda60..d0952533715daef0d9cc494749033f00db81f051 100644 GIT binary patch delta 54 zcmZp^!q|Or4-7i8n+|_Bb IGs}Tg0Nkz-%K!iX delta 46 zcmeCa!q|L;k^3|+FBbz4G`_jAkz0*LC{jNoKQ~oBJ+DIFCAB!aB)?#@H_L%k0ANH9 A$p8QV diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/renderers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/renderers.cpython-312.pyc index c3397eec4edbd4eed555f6e8405292029148ef84..8358e849d1eaaf64ff9dc283b16fb8ec42d4b8d6 100644 GIT binary patch delta 54 zcmdn_l3J3UE~&-YCHV#V?tT%v;jT`b J_p$z70{{&|6V(6! delta 46 zcmX^3lxgQvChpU`yj%=G(D>%cM(%~ILXr9z`MIh3>3J3UE~&-YCHV!LkFow<0|1C= B5z_zw diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/request.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/request.cpython-312.pyc index 37b96ad5aa5b88c32ac77a873c89fe3c1dd74246..70e58f8f8d6a3fa82b5cec9286a4df4f238fb448 100644 GIT binary patch delta 54 zcmbQWka5vMM()$Ryj%=G(7WmCMs8mgsd)X2{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z ISu6%V0M+XeHUIzs delta 46 zcmZ3qka5;RM()$Ryj%=G(D>%cMs8mgp>X|-{M=Oi^t=jvm(=3ylKg_rMJxtB09qLj AGynhq diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/response.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/response.cpython-312.pyc index a68dc4a19839942147063130ecfda1cf10a7babd..6116df1b58414c812dc1c429838f96f6589dbcc5 100644 GIT binary patch delta 52 zcmZor=uqH3&CAQh00h08u5RR>#VVDcpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0S$L GCl>&qtPpYl delta 44 ycmeBBXi(rj&CAQh00fP1u59F<#VQn`pOK%Ns-K=$q3@DfoL!P%uz5eLCl>%L8V+y( diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/reverse.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/reverse.cpython-312.pyc index 5f9e233b7e8077521bde7421abebfda4cc46a14a..53aef2cffb34aff32492109547afc5f5d963fff6 100644 GIT binary patch delta 52 zcmew@)GW+>nwOW00SJ0GUERoih)F75KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4d%i GIcxyAZV_bw delta 44 ycmZn`{w>6PnwOW00SFr3T-nHdh)F11KO;XkRX;tiLf<8|IJ+djVDodPIcxww<_}{4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/routers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/routers.cpython-312.pyc index 4eaf44ef6c2e4e526d625982f2a08dd2158dc9d8..abddbe038eaaf21c45cbb98944bcf7ca5d4c0b10 100644 GIT binary patch delta 52 zcmaEu^D>9~G%qg~0}%9Xy1J2DnN=!YKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n^X Gq9Fj&5D?q| delta 44 ycmaEv^Du||G%qg~0}wR6xw4U4nN=uUKO;XkRX;tiLf<8|IJ+djV6z9Sq9FiRZVuW2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/serializers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/serializers.cpython-312.pyc index a03e88cdda59586ac90d3926b52556dd2140f406..9368e28bf1504ce59e39c8bfcb834f1ef9850aa0 100644 GIT binary patch delta 54 zcmZ40%d)ALh5IxwFBbz4^lrMkkz0*lDp@}xKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IGk^Mb0Mhjl;s5{u delta 46 zcmdng%d)DMh5IxwFBbz4G`_jAkz0*lC|W-wKQ~oBJ+DIFCAB!aB)?#@H-Gwf09W%5 A-~a#s diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/settings.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/settings.cpython-312.pyc index 2481a67aac2dacc9e27aa206c3372a46d44f2b0b..b53b507fc66a83089d0139edd3dd407891be9a05 100644 GIT binary patch delta 52 zcmX@)bjpeQG%qg~0}%9Xy1J434zE;#enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?PN Gp27grH4)bU delta 44 ycmX@*bjXSOG%qg~0}wR6xw4V_4zEyzenx(7s(yN2g}zH_adt_5!DdE2PhkL377o?` diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/status.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/status.cpython-312.pyc index fbe0ad86c2db6808c31e2647fa54fb8ec6d4195b..ada3345ae1a4fdb9a6075e744e948d7dcdc5e317 100644 GIT binary patch delta 52 zcmew-+a||-nwOW00SJ0GUERpt&LkD5pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Q|r G6b}HkjS$WN delta 44 ycmZpZ`zOnNnwOW00SFr3T-nIo&LkA3pOK%Ns-K=$q3@DfoL!P%uz3wr6b}GB1rE#r diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/test.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/test.cpython-312.pyc index 1376a7423589f430e37a4ed8ef17775c7b95d20b..4d417dad7a015a10d08d245720cb3d2767e4bffd 100644 GIT binary patch delta 54 zcmbQZka6ZhM()$Ryj%=G(7WmCM(!dOsTlo?{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I{VYsA0M`EzJpcdz delta 46 zcmbQaka6NdM()$Ryj%=G(D>%cM(!dOp%DFy{M=Oi^t=jvm(=3ylKg_r(^;5&09vgN AI{*Lx diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/throttling.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/throttling.cpython-312.pyc index a586a7a1182c03eb2722bb21e5b5d9a5ac16247e..8b5ddde92ba61d96584028ac7ce40e2840fb3b75 100644 GIT binary patch delta 52 zcmbOdJ|~>}G%qg~0}%9Xy1J3Onn@~2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z%G GKNyp4nP0^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/validators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/validators.cpython-312.pyc index f7e25ffaf5c31849c07b11e834ea08311e11af6d..f1efc2ed9289d0b61db2ff279cbc594c5109b30e 100644 GIT binary patch delta 52 zcmaE!`972TG%qg~0}%9Xy1J3ul36NAKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%C! GL_+}Bff0QG delta 44 ycmaE#`8<>RG%qg~0}wR6xw4Vll36H9KO;XkRX;tiLf<8|IJ+djU~?SvL_+{u_YZpj diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/versioning.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/versioning.cpython-312.pyc index 0edb5b02b698901080de0474fb0fd38f7fffc77a..46bd1fb8edfd0709b14c694e5e4bac84af33bcbc 100644 GIT binary patch delta 52 zcmbQ?vA~1-G%qg~0}%9Xy1J2Dk69{7KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p%; GSp@*9=n%31 delta 44 ycmZ4BF~fuVG%qg~0}wR6xw4U4k69>6KO;XkRX;tiLf<8|IJ+djU~@3@Sp@(!whpiW diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/views.cpython-312.pyc index cfcedb091f8e68fa769b76fc89eabcb220e23781..3fdb7d6f35f1fc5acc6e9cacc6adc76bb91c3663 100644 GIT binary patch delta 54 zcmZ3xiE-;DM()$Ryj%=G(7WmCM(+14QnC6O`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Ic~})g0Qg7|x&QzG delta 46 zcmdnGiE-^FM()$Ryj%=G(D>%cM(+14LZSK@`MIh3>3J3UE~&-YCHV!LMOYO>0ChGG AxBvhE diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/viewsets.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/__pycache__/viewsets.cpython-312.pyc index f6e8c40c17ed63591a7165b67d128780f4f01d1a..ab60c78dbcdd6e28ab378eae286044e886060d9a 100644 GIT binary patch delta 52 zcmZqo?)T=R G{2Tzo9uWKh delta 44 ycmaDLenXu5G%qg~0}wR6xw4Ua4YN>!enx(7s(yN2g}zH_adt_5!RCw1{2TyC+z$Ex diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/__pycache__/serializers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/__pycache__/serializers.cpython-312.pyc index 68f5e808d19fa9e8e45718c75c6ee1506dc0a000..768248b0e36fbd4b12358eaa7ffe207112fd9d74 100644 GIT binary patch delta 52 zcmZ3*w~3GYG%qg~0}%9Xy1J1&f<-D%#d GRwe+V(-4gS delta 44 ycmdnQw~CMZG%qg~0}wR6xw4Tvf<-7*KO;XkRX;tiLf<8|IJ+djU~?_YRwe*0aSn?B diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/__pycache__/views.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/__pycache__/views.cpython-312.pyc index 0104b9fe82bb457993eb67a8ae53af0c294d9675..4ff79d5d712d575b3e80796c62cf8935b9dbb1ca 100644 GIT binary patch delta 52 zcmew@-Ymg=nwOW00SJ0GUERoS%p#SppOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^juf GH9G*OhY)Q5 delta 44 ycmZpc_$|(TnwOW00SFr3T-nHN%pw%8pOK%Ns-K=$q3@DfoL!P%usMQdH9G(?*A8m{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/management/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/management/__pycache__/__init__.cpython-312.pyc index d2719eb68263a1ac8874f93381b2ba97d74941bc..09177f7ca2fe531d135175445fe1eabe45ff762e 100644 GIT binary patch delta 49 zcmX@dc#V^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/management/commands/__pycache__/drf_create_token.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/management/commands/__pycache__/drf_create_token.cpython-312.pyc index 7b5646dd6e0eec049ca5473e0d8af98e2a70c55e..85c44f918b7dd508f4ad48c63038049704a37e64 100644 GIT binary patch delta 52 zcmaDN^hSvLG%qg~0}%9Xy1J435R+7!enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_k3 Gt!x0zo)N|X delta 44 ycmaDO^hAjJG%qg~0}wR6xw4V_5R*`yenx(7s(yN2g}zH_adt_5!RF^ot!w~MR1d@e diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/0001_initial.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/0001_initial.cpython-312.pyc index 5e71a86d096c1ed1c045816558eda6abc8b6ff72..beaa274dba7e9b6fc3918745e96173b0bc18b0dd 100644 GIT binary patch delta 52 zcmbQpHIs|`G%qg~0}%9Xy1J1&m|3b)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Sd GLPh|Wwh%r5 delta 44 ycmbQqHIa+^G%qg~0}wR6xw4Tvm|3V$KO;XkRX;tiLf<8|IJ+djU~>iYLPh{2^bR}# diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/0002_auto_20160226_1747.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/0002_auto_20160226_1747.cpython-312.pyc index 4a22216888c199713c6270d67a47b37fbeb6228f..2d55d12698a0d97f9278884fde0a1d50f5c0c8fd 100644 GIT binary patch delta 52 zcmcb|{fwLYG%qg~0}%9Xy1J43C9_nEenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Gi7 G8;k(T(h*4j delta 44 ycmaFHeUF>_G%qg~0}wR6xw4V_C9_bCenx(7s(yN2g}zH_adt_5!Dc>|8;k%>C=W*f diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/0003_tokenproxy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/0003_tokenproxy.cpython-312.pyc index a6b1452d958b63c159348530986c8ec3b01b700c..0c051c29cb70891aadbb3dcdf0fb1c0a21a6b819 100644 GIT binary patch delta 52 zcmbQiwt$WMG%qg~0}%9Xy1J433Zqnwenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>zi G>Wl!ZHxSDJ delta 44 ycmZ3$HiM1(G%qg~0}wR6xw4V_3Zqboenx(7s(yN2g}zH_adt_5!RDWg>Wlz1H4e!D diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/authtoken/migrations/__pycache__/__init__.cpython-312.pyc index 9afc62be35c7c3f6d89595321954b12d269d0581..9c670d55623f034cd075e3362b842188f68ce224 100644 GIT binary patch delta 49 zcmX@dc#V*#c diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/management/commands/__pycache__/generateschema.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/management/commands/__pycache__/generateschema.cpython-312.pyc index 61230edaf3d4f5f41e0353185d9a1be14ac830d5..59cde07c2a071b6fb39e15a49da821d1aeececb2 100644 GIT binary patch delta 52 zcmaE%@Iit5G%qg~0}%9Xy1J43H=|UQenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`E^# G06qZMEfFFB delta 44 ycmeyM@Irz6G%qg~0}wR6xw4V_H=|IIenx(7s(yN2g}zH_adt_5!Da=f06qX%V-Fwz diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/__init__.cpython-312.pyc index 925240a7e8ab901a542cad13dac686cc009bc56a..981b09899f7ca5bb23114ff4a749c62f19a5299c 100644 GIT binary patch delta 52 zcmZqY@8{<}&CAQh00h08u5RS6XO+s(&&bbB)lbi>(055K&MwI>(0BKX&<%HW+B}E# GH6s9<0}#mo delta 44 ycmeC@Z|CPe&CAQh00fP1u59G4XBA4&&&bbB)lbi>(055K&MwI>*t~@GH6s8gsSd{g diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/coreapi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/coreapi.cpython-312.pyc index 993d57c3eb80dad0d85c711f1d154da716f45681..0588f354493952fe49bef37a47998e81dfec3879 100644 GIT binary patch delta 54 zcmZ2}m~s7KM()$Ryj%=G(7WmCM(!odQtA2``MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J4>CWC1pxRd6Au6Y delta 46 zcmZ2~m~r`GM()$Ryj%=G(D>%cM(!odLh3J3UE~&-YCHV!LPclD?1psz; B5e)zU diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/generators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/generators.cpython-312.pyc index 39e99e3c4c164122fd353518b28d45d8b7d1d70d..4d93085f8cca83631a5d944106be27380c5bb350 100644 GIT binary patch delta 52 zcmbQ_JIj~*G%qg~0}%9Xy1J43I+IkEenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;Qs G^OOO^2NB!= delta 44 ycmbQ`JIR;(G%qg~0}wR6xw4V_I+IY6enx(7s(yN2g}zH_adt_5!R9|q^OONeWe?f_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/inspectors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/inspectors.cpython-312.pyc index c480cc39a3e6c42e841c8e46465634c88bb1f602..0b776ab82839ee0adfa9303377cfa82afc6ce3c2 100644 GIT binary patch delta 52 zcmZ3byGfV(G%qg~0}%9Xy1J43Ig?bDenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FXt GWx@czdJyFR delta 44 ycmdm_yGob)G%qg~0}wR6xw4V_Ig?P5enx(7s(yN2g}zH_adt_5!Db%jWx@bN*bd_W diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/openapi.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/schemas/__pycache__/openapi.cpython-312.pyc index 9595cd6a6bc3be83911dedc0d37b7821118fd1af..1e62461428d7a27b4d7301eaa22771ab9f5dcf79 100644 GIT binary patch delta 54 zcmZp<$Jld^k^3|+FBbz4^lrMkkz1HWDqTM#KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb I0n3#v0N*kZ+5i9m delta 46 zcmeCV$Jla@k^3|+FBbz4G`_jAkz1HWC|*A!KQ~oBJ+DIFCAB!aB)?#@1gdP0=@G%qg~0}%9Xy1J3uoJA^CKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$lm G4jTZc=MXpm delta 44 ycmX>hdO(!>G%qg~0}wR6xw4VloJA;BKO;XkRX;tiLf<8|IJ+djU~>#h4jTY6{SGz& diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/templatetags/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/templatetags/__pycache__/__init__.cpython-312.pyc index ebf9de6d5c0438922d41fb7186e09586a7274dd2..fe0642e43cdff354b4dab385f5ff93c94062c1c6 100644 GIT binary patch delta 49 zcmX@cc#e_#G%qg~0}%9Xx;l~DSSnXPBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7)H Dc!dwv delta 41 vcmX@dc#M(zG%qg~0}wR6xiXR4SSVFLBR@A)KRvHP-zBv;yClD0Vni7L2~rKz diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/templatetags/__pycache__/rest_framework.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/templatetags/__pycache__/rest_framework.cpython-312.pyc index 041c6cf75fc727c84a6e0e33d85545d64bf7bc71..13da6b028ea35251017013d95f3fabe9d1a7af35 100644 GIT binary patch delta 52 zcmexd{JWU@G%qg~0}%9Xy1J43E1OiYenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F&| GheiPWI1-8g delta 44 ycmexe{JEI>G%qg~0}wR6xw4V_E1OWZenx(7s(yN2g}zH_adt_5!DcD;heiN*&Jc(I diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/__init__.cpython-312.pyc index 29940034959e077848590471ae27aa29fb1195b3..c501ec8112d265499a1b1efabf9c6129e5f22f84 100644 GIT binary patch delta 49 zcmdnbc$|^@G%qg~0}%9Xx;l~DSSn3FBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn99s DbrTP| delta 41 vcmX@kxSx^xG%qg~0}wR6xiXR4SSU_EBR@A)KRvHP-zBv;yClD0VnjXw28a!~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/breadcrumbs.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/breadcrumbs.cpython-312.pyc index b4ab692f7869af749429594d07238cbbbf8cc0d1..415a8c9a3c7003d32d35ca3b47f18dc486927544 100644 GIT binary patch delta 52 zcmew)@JoREG%qg~0}%9Xy1J1&kX0&EKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Sc G3o`({h!9}_ delta 44 ycmew*@JWFCG%qg~0}wR6xw4TvkX0yAKO;XkRX;tiLf<8|IJ+djU~?HO3o`&j)(&3) diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/encoders.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/encoders.cpython-312.pyc index f5849ead1adffe3d412dbd575074edc95a6c46f9..a408bd365413176c2558420b0ec87f19d0cc6a7d 100644 GIT binary patch delta 52 zcmbO&y;z$2G%qg~0}%9Xy1J430lQS1enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@bI G^H>43g%N}R delta 44 ycmZ21JzJXlG%qg~0}wR6xw4V_0lQF~enx(7s(yN2g}zH_adt_5!Dd#Dd8`0ACJuuD diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/field_mapping.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/field_mapping.cpython-312.pyc index ae790fa79ee0c497f12efc7eaef2f89001d1a3bf..8bd8163a9d0b7484bb555cc1ddbe884d7a41e3b9 100644 GIT binary patch delta 52 zcmZol>`LT5&CAQh00h08u5RR>#VnPrpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0S%8 GX&nH)4-umP delta 44 ycmeB5Y)a%l&CAQh00fP1u59F<#VnMppOK%Ns-K=$q3@DfoL!P%uz5f8X&nGW1rMPB diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/formatting.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/formatting.cpython-312.pyc index 7b688ee089a2b412fbfb4c1c4281bbca9520210c..2587959b2601c6017d6148678b87eb9b189c7694 100644 GIT binary patch delta 52 zcmZ3hx>c3?G%qg~0}%9Xy1J3ugh?txKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Y` Gi~sl9@G%qg~0}wR6xw4Vlgh?ntKO;XkRX;tiLf<8|IJ+djU~?o>i~s;Jcn%`~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/html.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/html.cpython-312.pyc index 5de50e1dbf83fa290f2078b160cdc07ff70ccb20..ddc8c3ad0921ae22b80266fbd1d7258ccc0f9f78 100644 GIT binary patch delta 51 zcmZ1^zDk_?G%qg~0}%9Xx;l~jvs99PMt*LpetKSozDsIxc1eDLzPn$9Zn&${W&y@Y FTmY$Y5O@Fp delta 43 xcmZ1_zDS(=G%qg~0}wR6xiXRavrv?NMt*LpetKSozDsIxc1eE0W(megTmUh04t4+l diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/humanize_datetime.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/humanize_datetime.cpython-312.pyc index b3b8705d7c21613826b93fc9a40ab73c531cec74..94fcb9ac58c3bdad051ad0b5f68162afaae81919 100644 GIT binary patch delta 52 zcmeys`-7MJG%qg~0}%9Xy1J2j4Wm@Penx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>Z}0Cgb^?R delta 44 ycmeyt`+=AHG%qg~0}wR6xw4Ua4Wm%Henx(7s(yN2g}zH_adt_5!RCvM>Z|}xIu9-Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/json.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/json.cpython-312.pyc index a65a062795e2f43ef47dd9c2045a0af752286a1f..20ee47b0a1f8e79852c1eef77e5f44f1ac035b48 100644 GIT binary patch delta 52 zcmX>na7}>wG%qg~0}%9Xy1J2DnprAIKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|n~h G7%Kp#F%Px? delta 44 ycmca6a87{xG%qg~0}wR6xw4U4npr4HKO;XkRX;tiLf<8|IJ+djV6y|W7%KoVw+*xa diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/mediatypes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/mediatypes.cpython-312.pyc index fd4a92eed3440cbe4fef4d055c5cde2943c8d01e..aefc6df586bd29208668d2740da6de3466a204db 100644 GIT binary patch delta 52 zcmbOtKS!SXG%qg~0}%9Xy1J43IFnR{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;2k G8+ZV)N)cTE delta 44 ycmbOuKSiGVG%qg~0}wR6xw4V_IFnF`~-C&CAQh00h08u5RSs#Uz!ZpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%wD~&I GT3!IDI}s@W delta 44 ycmeBCY*FMs&CAQh00fP1u59Gq#UzxXpOK%Ns-K=$q3@DfoL!P%u=zgIT3!G%5f3K- diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/serializer_helpers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/serializer_helpers.cpython-312.pyc index 5ed0a995c21e29abe9791c412306fbb71ae73918..46b89e08c65696ee2bc8409f62987d2b41aca68f 100644 GIT binary patch delta 52 zcmbOpFh79%G%qg~0}%9Xy1J3uj9IEcKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&01 G5fuQib`aSB delta 44 ycmbOqFg<|#G%qg~0}wR6xw4Vlj9Dl{KO;XkRX;tiLf<8|IJ+djU~@F{5fuPBBo5aA diff --git a/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/urls.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/rest_framework/utils/__pycache__/urls.cpython-312.pyc index ddb1937cac12ddcbde588885fddce4e895183199..605e2e0c86b8e45f091015b404c374d42714088c 100644 GIT binary patch delta 52 zcmX@lcb$*>G%qg~0}%9Xy1J436O&Yuenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`J5V G2NnRq>kx_n delta 44 ycmcc4cb<>?G%qg~0}wR6xw4V_6O&Msenx(7s(yN2g}zH_adt_5!Dex02NnQE(GG|J diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/__init__.cpython-312.pyc index 5e26cd4716392d3ab04d4960d8fb09b97e91c969..2e06c63ee0692da5132429dfdb5f6631829c4ffa 100644 GIT binary patch delta 52 zcmZ1+w>pmdG%qg~0}%Y$baf+l7Kc=fenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=-L GIcfmW0}-+S delta 44 ycmZ1-w>XabG%qg~0}z~jdu1bc7Kc!Xenx(7s(yN2g}zH_adt_5!RCIBIcfk@~(vYG%qg~0}%Y$baf;5PiCnk{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_QiV*enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`I9q G?R)^rx)CM- delta 44 ycmeyQ`bw4iG%qg~0}z~jdu1cH7>iJ(enx(7s(yN2g}zH_adt_5!Defg?R)@C4-W(Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_imp.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_imp.cpython-312.pyc index 1bf1b295bdbe8d6d5eaa2349f48803b19234acdc..2b3d32e1136575ce0a3941aa4394a02e7449bda3 100644 GIT binary patch delta 52 zcmbO$vs8xrG%qg~0}%Y$baf+l0FzXNenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<^J G4cq{)v=G+- delta 44 ycmZ1~GgpTDG%qg~0}z~jdu1bc0FzLFenx(7s(yN2g}zH_adt_5!RAt?4cq`U@eZ{B diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_importlib.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_importlib.cpython-312.pyc index b4b255756081f17719ba4dcc579781d5265488e2..3832ec2b5f2c8fcedf02229f0be20b4dc729aedf 100644 GIT binary patch delta 50 zcmeBUp2p05nwOW00SJC=x;l~jom8BDMt*LpetKSozDsIxc1eDLzPn$9Zn&${WNyZ0 E0GHelP5=M^ delta 42 wcmbQn+{es)nwOW00SL~%y)u#eoluy5Mt*LpetKSozDsIxc1eE0WMRf;03DtVEC2ui diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_itertools.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_itertools.cpython-312.pyc index 7df631751bed9f164a81ddfd279e9127d9c1f0d2..39096b097a9f37c9381a0c6b598d7dc5d64a94e6 100644 GIT binary patch delta 50 zcmZ3?v6_SXG%qg~0}%Y$baf(kom8BDMt*LpetKSozDsIxc1eDLzPn$9Zn&${#@QXr E0G50Z#{d8T delta 42 wcmZ3@v6zGVG%qg~0}z~jdu1Yboluy5Mt*LpetKSozDsIxc1eE0#>E}X03IF=r2qf` diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_normalization.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_normalization.cpython-312.pyc index 3329fb79538a25b525f495cc085ed1e2cf99e04d..7f6cff0a5e2e8e9054e9cd86a281828504dd4ffd 100644 GIT binary patch delta 52 zcmexv`QMWJG%qg~0}%Y$baf+l5sOrkenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>Ab G3<&__>k-@l delta 44 ycmexw`Q4KHG%qg~0}z~jdu1bc5sOfienx(7s(yN2g}zH_adt_5!RF~K84>_tNDsOI diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_path.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_path.cpython-312.pyc index 8977a5f0bbf81f8fc36324dbb67f817639c3930d..dcd64c856e121793c2d8120741ff5efff8f06dcb 100644 GIT binary patch delta 52 zcmZou=~Ll8&CAQh00h4_UERn%k4Y+0KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dI- GZ+-x@mk{*; delta 44 ycmeBEX;a}o&CAQh00d{>UfIY!k4Y#{KO;XkRX;tiLf<8|IJ+djVDn)nZ+-wcOb*ik diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_reqs.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_reqs.cpython-312.pyc index 50163de0fd0a764026c951fdf279436953ecd987..95d05a64c18aaedf9e136b7fd138cb12091236c2 100644 GIT binary patch delta 52 zcmeyw_luAFG%qg~0}%Y$baf+l6th&Menx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=yK G-^>8cXA!>u delta 44 ycmeyx_lb}DG%qg~0}z~jdu1bc6thsEenx(7s(yN2g}zH_adt_5!RC7A-^>6`)DN8i diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_scripts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/_scripts.cpython-312.pyc index 2d99e9b69844bf565495fef6b4ed1cd3c19e7152..51c078c3f0bddd6f4778829b621985d33f98224e 100644 GIT binary patch delta 54 zcmbQ+%(%3fk^3|+FBbz4{MvMNBllV+sTlo?{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Jre43VoN<;_Qe43VoN<;_QG%qg~0}%Y$baf-QB&$@kenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GZ) GG9du9Ob~+r delta 44 ycmdm@zebe43VoN<;_Qz H?@9sy-s=*Z delta 44 zcmX?Webk!!G%qg~0}z~jdu1c{X=b5d{fzwFRQ>e43VoN<;_Q3J3UE~&-YCHV#V?tT%v;jT`b JE7<2A0RZHk5{m!; delta 46 zcmbO`gL&!3J3UE~&-YCHV!L8`$R_0RUn0 B5NQAa diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/errors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/errors.cpython-312.pyc index 96b9aedff61963164685c28dd9714bbe9ee0e4c6..de55dfd442d0663821b29750eae5935d00123d5e 100644 GIT binary patch delta 52 zcmZ1`y-u3@G%qg~0}%Y$baf-Q1+!F?enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8G%qg~0}z~jdu1cH1+!3)enx(7s(yN2g}zH_adt_5!RA=zKrR3@UJf|` diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/extension.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/extension.cpython-312.pyc index 6bcf157dec9a9a9f70523c74355946ca1f712dc2..e21fad7a4e9aad6e82e66063a275a5a14777b3bf 100644 GIT binary patch delta 52 zcmexm+GNIknwOW00SJC=y1J1&m`N&DKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Qn GmjnRDg%LIY delta 44 ycmZoN`(?^~nwOW00SL~%y|R%zm`Ny9KO;XkRX;tiLf<8|IJ+djU~>gimjnPu91j!# diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/glob.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/glob.cpython-312.pyc index 46b7cb3b656b271612c9f30b43d5fdb7d533b0ae..986f58d7ce1ab0e1fd9a60ccbfb64d9df67c2bfe 100644 GIT binary patch delta 52 zcmbPaHOq?oG%qg~0}%Y$baf;5J{GA6{fzwFRQ>e43VoN<;_Q{fzwFRQ>e43VoN<;_Qe delta 44 ycmdlbut|XXG%qg~0}z~jdu1axH=|Inenx(7s(yN2g}zH_adt_5!Da(SE_MJe(hZaV diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/modified.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/modified.cpython-312.pyc index b0629462011b9016ff62a8eca6b03d17144457a0..db7274c46cddc603cc2c8122577b0fd9ca6985cb 100644 GIT binary patch delta 51 zcmey!{F9mcG%qg~0}%Y$baf-QA){1`enx(7s(yN2g}zH_adt_5fxf$6gl@R2(_}x! F#Q?F05ZM3# delta 43 xcmey#{E?aaG%qg~0}z~jdu1cHA)`=;enx(7s(yN2g}zH_adt_5!Q?Q;#Q-)J4z~aR diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/monkey.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/monkey.cpython-312.pyc index e2205980965be045fe55f28b641ab0f7d1f92084..f74a0f0ac0a7d0c0842876685086210196b9790e 100644 GIT binary patch delta 52 zcmX@EabAP_G%qg~0}%Y$baf;5GiIqM{fzwFRQ>e43VoN<;_Q47_7M#L delta 44 ycmX@Faa@D@G%qg~0}z~jdu1c{GiIS6{fzwFRQ>e43VoN<;_Q2l3l8f5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/msvc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/msvc.cpython-312.pyc index 1550b376bf7cf94f4467dca617d2945b6e249616..45d48f84a33f18ce0fb48f364c0a8794eee72fb4 100644 GIT binary patch delta 54 zcmZ2@ntA1EX71Cxyj%=G@N3i6jokdqQW5$Y`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jb(l*Z0RZv@5?=rS delta 46 zcmZ2^nt9=AX71Cxyj%=GaQ5w$jokdqLIL_2`MIh3>3J3UE~&-YCHV!LO_)m`0RV03 B5Iq0@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/namespaces.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/__pycache__/namespaces.cpython-312.pyc index 6913c2205da546c6ebb0c9437af3272c742ae11d..d891377aab69d7942d3551e709dd1b5dd2390c8c 100644 GIT binary patch delta 52 zcmdm^c|?=@G%qg~0}%Y$baf;5d1k3N{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Q&-jQreG{q(#FeV5eY?2`NfeRsbI-Edc@&D@Mj FSOB@75b6K` delta 43 xcmdnay`G! delta 43 xcmbQiGJ%ErG%qg~0}z~jdu1cHCZkZienx(7s(yN2g}zH_adt_5!DK(iQvepu4jBLd diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_log.cpython-312.pyc index 60eb988797ac2e40082a717a4e25261dd091af5c..58fb4e784c4e055cabea4a62df7cc71653d3fcfd 100644 GIT binary patch delta 49 zcmbQjG>3`%G%qg~0}%Y$baf(kg;cVBMt*LpetKSozDsIxc1eDLzPn$9Zn&${#HsZF DeM1mx delta 41 vcmbQkG=+)#G%qg~0}z~jdu1Ybg;2D9Mt*LpetKSozDsIxc1eE0#JTkV2wx6J diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_macos_compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_macos_compat.cpython-312.pyc index f305781901d3420b39b14ac5a339a4fe7e80fa57..d5dc6a60972e68a57e257951b7c9f71a63541a8f 100644 GIT binary patch delta 50 zcmdnWvX_PXG%qg~0}%Y$baf*4b*UWvjQreG{q(#FeV5eY?2`NfeRsbI-Edc@jb9uY E0jVDmS^xk5 delta 42 wcmdnXvXzDVG%qg~0}z~jdu1Z`b)gjfjQreG{q(#FeV5eY?2`O~jei^&0W7HxH~;_u diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_modified.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_modified.cpython-312.pyc index 94315d7a978a95a704d94313fc9fe07c902e769b..1e08a9f8677771a1d38a847b60dcee17e81bacb5 100644 GIT binary patch delta 52 zcmdm{x=)q+G%qg~0}%Y$baf-QC9_n9enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;Vd G1bzU!JP@-0 delta 44 ycmdm|x=oe)G%qg~0}z~jdu1cHC9_b1enx(7s(yN2g}zH_adt_5!R9#T1bzTMi4Ktf diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-312.pyc index ea7861a3b69e9c870bba9a130e076edf6c38e39f..fd1c9ae07293fa03167672920331efca735bf964 100644 GIT binary patch delta 52 zcmcc2dYhH|G%qg~0}%Y$baf;5L`JC`{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_QdUlCvc delta 43 ycmbQiI)Rn@G%qg~0}z~jdu1c{QAVLO{fzwFRQ>e43VoN<;_Q Dl1mX0 delta 41 vcmX@kw4aIlG%qg~0}z~jdu1Z`T%j2KjQreG{q(#FeV5eY?2`O~iHBMN8HWz< diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-312.pyc index 3536a556ff4733ae31ee288e468caa93885ee624..23fa9e24bcf96618680d8026999edcbc5c573601 100644 GIT binary patch delta 51 zcmX@fdXbg;G%qg~0}%Y$baf;54o0bT{fzwFRQ>e43VoN<;_Qe43VoN<;_Q?kgKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4aTB Gdny3grxGv# delta 44 ycmZn){1w1`nwOW00SL~%y|R(Jo>?efKO;XkRX;tiLf<8|IJ+djVDl2@dny1{)({Q= diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/dist.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/dist.cpython-312.pyc index 186b0d1fa3f2837643deb95738d692be48cc2470..282c81645c89ad33284467b3467347a999f355cd 100644 GIT binary patch delta 54 zcmeyeo%zppX71Cxyj%=G@N3i6jogxKQpx%m`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J&Di!`1pp7!6FvX{ delta 46 zcmeyfo%zdlX71Cxyj%=GaQ5w$jogxKLecse`MIh3>3J3UE~&-YCHV!L?b!BR1ptQn B5gY&j diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/errors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/errors.cpython-312.pyc index 78d4c1a5e9b0679e8847a4489f0adc97256c4f5e..2f6d9ece65e86298e41997dbafb1ebb6e1d5d4cd 100644 GIT binary patch delta 52 zcmdm>yhEA$G%qg~0}%Y$baf*)AG1`denx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Iev GRz3i+nhj@;nwOW00SJC=y1J43rifIAenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=m? GqQU^wcoEJ3 delta 44 ycmbOn&>g^inwOW00SL~%y|R(}rif62enx(7s(yN2g}zH_adt_5!RCJ=qQU@DJrAq^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-312.pyc index 3e772935deec4b7195b04aa65968cf897819acb7..2bec2330d8ee48b174f2d690608fe5ca81aa5eea 100644 GIT binary patch delta 52 zcmX?CeXW}NG%qg~0}%Y$baf;5Np`7h{fzwFRQ>e43VoN<;_Q_{pS;C delta 44 zcmcaseXg4OG%qg~0}z~jdu1c{Np_)R{fzwFRQ>e43VoN<;_Q_b(|4K diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-312.pyc index 237c06a0234e97f49637067a61a391ae0e13124a..873833ad56406e1f0f7dd5dbbed824a2bad47751 100644 GIT binary patch delta 52 zcmbQ@HOGtlG%qg~0}%Y$baf;5Wj3h{{fzwFRQ>e43VoN<;_Qe43VoN<;_Qb%7 delta 46 zcmbQ+!#K5vk^3|+FBbz4oPB#`Bey709Hf~ Aj{pDw diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/log.cpython-312.pyc index 07f939d5c1711ea5ae50f7756bd93609bb48a61e..3ae1725f8165d68df5c73776d1da178c69e0c807 100644 GIT binary patch delta 52 zcmdlcvQLEjG%qg~0}%Y$baf;5Y$mBB{fzwFRQ>e43VoN<;_QevCodJ$s) delta 44 ycmdldvQ32hG%qg~0}z~jdu1c{Y$l;7{fzwFRQ>e43VoN<;_QevB8{|`X` diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-312.pyc index e24c7513dd8a3c7ce1cb7c888c5b631bf9bc4a3d..877e0b47a1e7816f6f62bf648c979c8bd07697b0 100644 GIT binary patch delta 52 zcmeCxnX1EmnwOW00SJC=y1J2@gIOv?KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pQx G3n2ie^AMB( delta 44 ycmbQL)2qXMnwOW00SL~%y|R&;gIOp>KO;XkRX;tiLf<8|IJ+djV6!gs3n2h52o7=p diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-312.pyc index b41535e1f7f39d43ec1c6ce6f5239593d1d04445..a42841bac6f257a59b461619688b6b40cfaaa8f6 100644 GIT binary patch delta 54 zcmX@Qh4JhbM()$Ryj%=G@N3i6jof@3QW^Rg`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b IwK=4M0QdC~q5uE@ delta 46 zcmX@Rh4JVXM()$Ryj%=GaQ5w$jof@3LJ9gA`MIh3>3J3UE~&-YCHV!LjX9)(0CI{C AfB*mh diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-312.pyc index 8f468b8b72c24cbb6605812af75b9d94d89c3f76..85cdda595ac35f2cc1a67d84a739ff64942be423 100644 GIT binary patch delta 52 zcmcZ>axaAYG%qg~0}%Y$baf;5Hvy>({fzwFRQ>e43VoN<;_Qe43VoN<;_QngG%qg~0}%Y$baf*48>t-qjQreG{q(#FeV5eY?2`NfeRsbI-Edc@$()SS E0iZGvkN^Mx delta 42 wcmZ3%ynvbeG%qg~0}z~jdu1Z`8=(~ajQreG{q(#FeV5eY?2`O~$%2g20VH$|ZU6uP diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/util.cpython-312.pyc index 63b55926b5b198a597dfff0df994c91b1a97544c..6fdff4c66fbe41e8224f25f10a3ab043f69a7034 100644 GIT binary patch delta 54 zcmbO^gK^;uM()$Ryj%=G@N3i6jof=!q>}YB@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= J-(+!c2LSVr5_|vv delta 46 zcmZ2DgK_2zM()$Ryj%=GaQ5w$jof=!grfB`@^e%5)AK6yT~dp)OY#dgKV)%m2LNq+ B5Ly5L diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/version.cpython-312.pyc index 5528964dc4fe5e55048ce7f3bb7dbfdc6cc3dab0..1fe294167bfcd1a10e15066a2ff624f63879907b 100644 GIT binary patch delta 52 zcmZnUfIZfmsKcEKO;XkRX;tiLf<8|IJ+djU^5e2uQC8liVqtA diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-312.pyc index 8405295e15ad078080be158c07ca48a5a383f0d2..3cc69ac2df3baaf107993381caa348bde56f9130 100644 GIT binary patch delta 52 zcmext`rDNIG%qg~0}%Y$baf+lAd6JKenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;&u GRxtqHs1dRN delta 44 ycmexu`q`BGG%qg~0}z~jdu1bcAd67Cenx(7s(yN2g}zH_adt_5!R9iSRxtovB@d7Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/zosccompiler.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/__pycache__/zosccompiler.cpython-312.pyc index 95e8c6b2390bd32bc4bf3c0f358da3489080a141..580ca3c00f8ab9e30cb8cbb7cf8ff8354564e18b 100644 GIT binary patch delta 49 zcmZ3^w4RCkG%qg~0}%Y$baf(kmsGZXMt*LpetKSozDsIxc1eDLzPn$9Zn&${#N`bD Dhn^6< delta 41 vcmZ3_w490iG%qg~0}z~jdu1Ybmr$~PMt*LpetKSozDsIxc1eE0#PtmT5V{VV diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-312.pyc index 80dc80fc6b2f540a55398a0a23c3fd867bb4c6e5..4b03779aaea8ac4c6a5e92b317d2126e636341b2 100644 GIT binary patch delta 51 zcmey*+|I&%nwOW00SJC=y1J1&j!`OKKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>v7V F3jn7d5X1lg delta 43 xcmZo?`OnOKnwOW00SL~%y|R%zj!`IGKO;XkRX;tiLf<8|IJ+djU~)5K3jiy~4x#`6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/_framework_compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/_framework_compat.cpython-312.pyc index af208276a43eccf0d9c856509fef6a6aff7f671c..533b3f284b6d2ac0679484acfb5e858a1fdc6ab5 100644 GIT binary patch delta 52 zcmdlkvR{PzG%qg~0}%Y$baf;5WoD@g{fzwFRQ>e43VoN<;_Qe43VoN<;_Q^0;*&CAQh00h4_UERoC#4eSipOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w7H-C Gn*ac}6%l>_ delta 44 ycmeA*Y&GOQ&CAQh00d{>UfIZ9#4ePgpOK%Ns-K=$q3@DfoL!P%uz5QBHvs@Tst;TM diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-312.pyc index 7ed86f518e8be34b8a0dc8b92b24358a24a4c990..1b7959f2ece65d13efa3ef07651c225c4bdf2f55 100644 GIT binary patch delta 52 zcmX?TebSoyG%qg~0}%Y$baf;5K31th{fzwFRQ>e43VoN<;_Qe43VoN<;_QwY>D*#Bm4*viE diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-312.pyc index 82cae44c876b2bc2cdf4c11732e4c781d45c615d..41ae4e875fe04f9ab4f59e35ffcaad71826844c3 100644 GIT binary patch delta 52 zcmbPcI?t5*G%qg~0}%Y$baf;54Q8nl{fzwFRQ>e43VoN<;_Qe43VoN<;_QUfIZfnMo)`KO;XkRX;tiLf<8|IJ+djVDk?qVMzc*Uk^k8 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-312.pyc index 23952a3c5a7e3b642eb2bdb2a04ed84a6cd444ec..510e509b0ba8bb2624f07c13508abc18ce41995c 100644 GIT binary patch delta 52 zcmX>kaY};wG%qg~0}%Y$baf-QEQ?f*enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G9c G4h{geu@E2t delta 44 ycmX>laY%yuG%qg~0}z~jdu1cHEQ?Tzenx(7s(yN2g}zH_adt_5!Dc5G4h{f1#tr@e diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-312.pyc index fe0e430c5b56560a78278f8e57691dd43ab0ee51..cc76a38e2a6e40a348a03a0d7f5681866a11e536 100644 GIT binary patch delta 52 zcmX?AcBzc}G%qg~0}%Y$baf-QC%aUxenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;hx GC&mEhj}lS< delta 44 ycmcaqcB+i~G%qg~0}z~jdu1cHC%aIpenx(7s(yN2g}zH_adt_5!R9>nC&mC{#1Jq5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-312.pyc index 596b364508820ff174a50e73e7b4543c5a613ac7..774a3c9c8382b886bce905c92c05c31e030b3c7a 100644 GIT binary patch delta 54 zcmex#iSgGZM()$Ryj%=G@N3i6jogeJQhE9r`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b I3J3UE~&-YCHV!L)i^>D0gLDm AO8@`> diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-312.pyc index d380dab995816e1fa49e2faca7b767fd7296cb2e..244f64a8980b1deab37daf924a6df6fb493fb343 100644 GIT binary patch delta 52 zcmZot>Qdr9&CAQh00h4_UERpt%_3E-pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0Q+f G6b}Hh?hx$& delta 44 ycmeBDYEt4p&CAQh00d{>UfIaq%_5YopOK%Ns-K=$q3@DfoL!P%uz3SZ6b}G4yAI0$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-312.pyc index d90f847a3051c57df83374942df756714eebc335..6332ac231ed641985c507c8306e8c737b343fefc 100644 GIT binary patch delta 52 zcmdm}u~UQlG%qg~0}%Y$baf;54JN5_{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Q delta 44 ycmew_^j(PiG%qg~0}z~jdu1c{eI}ti{fzwFRQ>e43VoN<;_Q?GIQ0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-312.pyc index 785ba4a6ad582d073b9418a03c314dca27d99bd0..a94d4180b7e048a15ebbaec100822677d4eee7bf 100644 GIT binary patch delta 52 zcmZp4>~!Ql&CAQh00h4_UERq2gGH)HKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pJ6 Gjx+$u=@BFV delta 44 ycmeBlY;@#4&CAQh00d{>UfIa~gGDGyKO;XkRX;tiLf<8|IJ+djV6!Z1jx+#Cb`Jso diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-312.pyc index 6a5147b0db12901c8700d69960d9c5ab02ba03cc..a9ce5b62b4d3c72e36e972df9b22b829927edc07 100644 GIT binary patch delta 52 zcmeB@m?Xh{nwOW00SJC=y1J3upINF*KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$(q GJPrV=3lOpZ delta 44 ycmbOv(IvrsnwOW00SL~%y|R(ppIInRKO;XkRX;tiLf<8|IJ+djU~>ucJPrUa$PSPI diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-312.pyc index 92ca48a56acf8ac73da5824506b870a10f98fd7a..5acc4abfda95e6259824fc262951ff93e1822224 100644 GIT binary patch delta 54 zcmbQSfpNhGM()$Ryj%=G@N3i6jog2jrE>H$@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JOS1eA1^@)z68!)G delta 46 zcmZ3mfpNwLM()$Ryj%=GaQ5w$jog2jg;Ml0@^e%5)AK6yT~dp)OY#dgE3*6#1^{~t B5ZeF% diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compat/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compat/__pycache__/__init__.cpython-312.pyc index a1927badcbb22da8f771e54c3b4f6d3c3fd9b7ec..058377b30328c71f9113ffe527a07462731e5d6a 100644 GIT binary patch delta 52 zcmbQkwS}BTN7;Rt|;$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compat/__pycache__/numpy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compat/__pycache__/numpy.cpython-312.pyc index 57d1d3cf5762c7a428c18d8e9dd10d44ddcbcca1..7eaf19c366517795e390b3afbfb344bbbdd6c3c4 100644 GIT binary patch delta 49 zcmbQow2X=SG%qg~0}%Y$baf(kyHvJ*Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#3fY# DgVhk9 delta 41 vcmZ3+G>?hk-X71Cxyj%=G@N3i6joe2Br1JGM@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JKNL8!8vy@&6UG1l delta 46 zcmZ2GlX>Y(X71Cxyj%=GaQ5w$joe2Bgwpjh@^e%5)AK6yT~dp)OY#dgzZ5vK8vu8C B5u^YB diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/cygwin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/cygwin.cpython-312.pyc index 6caffaae0cb3ff51fc2445698a3c4994543b6b91..c8111952bf5ea523ce2058eff1772373c709af6d 100644 GIT binary patch delta 52 zcmbOkvoMDHG%qg~0}%Y$baf+l7_(HNenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=C4 GWm*8sHW7;e delta 44 ycmZ1&Gc$(!G%qg~0}z~jdu1bc7_(5Oenx(7s(yN2g}zH_adt_5!RBh_Wm*7Bvkz$i diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/errors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/errors.cpython-312.pyc index 9d55e998154aa3592c35725d90551d2136ccf4f9..c100481abf1c5ebf155323ad5fc67e7fcc5b360d 100644 GIT binary patch delta 52 zcmaFP{hpiqG%qg~0}%Y$baf-QC8JcKenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;V7 Gi7Wucz!3}p delta 44 ycmaFQ{hXWoG%qg~0}z~jdu1cHC8JQLenx(7s(yN2g}zH_adt_5!R9!|i7Ws|We(~9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/msvc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/msvc.cpython-312.pyc index a7e6d570e3b7e43bae70aa3eab86097c401e6b8a..0e7f5c73857df14abbc83ac233eca35793cd0a30 100644 GIT binary patch delta 54 zcmex#knz_+M()$Ryj%=G@N3i6joi=Jr1JGM@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JGqb;s1OP4x6Q%$F delta 46 zcmex$knz(&M()$Ryj%=GaQ5w$joi=Jgwpjh@^e%5)AK6yT~dp)OY#dgbF;sX1OT1~ B5rhB$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/unix.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/unix.cpython-312.pyc index a3dfc65dfc7c35c5f0cd0c56a99ba819bc226765..5715fa00897c7b15b68fab0c6df478ccefd198dd 100644 GIT binary patch delta 52 zcmX?KbG?T9G%qg~0}%Y$baf-Q8JkqTenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=5d GKjr}GVG>>d delta 44 ycmca!bH0ZAG%qg~0}z~jdu1cH8JkeLenx(7s(yN2g}zH_adt_5!RBbTKjr{sb`U%O diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/zos.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/__pycache__/zos.cpython-312.pyc index 5a53af88b6fd8cb1df49a662158e1346bafec227..df57ddc58a7b1648f04232656f1a1705114f65fa 100644 GIT binary patch delta 52 zcmaE7@XdhxG%qg~0}%Y$baf;533jPG{fzwFRQ>e43VoN<;_Q{ delta 44 ycmexn@XmnyG%qg~0}z~jdu1c{33j10{fzwFRQ>e43VoN<;_Qre^s9QG%qg~0}%Y$baf;5Iwq+q{fzwFRQ>e43VoN<;_Qe43VoN<;_QG%qg~0}z~jdu1bcHnUK%enx(7s(yN2g}zH_adt_5!R86f%eetT{tqtz diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/tests/__pycache__/test_msvc.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/tests/__pycache__/test_msvc.cpython-312.pyc index d3a165100aea47cf1fca8ca587d0eedd268d86b8..358fcc0d6f200bf16deea71a4a8a0189480a462e 100644 GIT binary patch delta 51 zcmdmNwcCpOG%qg~0}%Y$baf-Q7>iVuenx(7s(yN2g}zH_adt_5fxf$6gl@R2(_&*5 FNdT@g5I+C_ delta 43 xcmdmOwb_dMG%qg~0}z~jdu1cH7>iJmenx(7s(yN2g}zH_adt_5!D4F`NdPke4jljh diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/tests/__pycache__/test_unix.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/compilers/C/tests/__pycache__/test_unix.cpython-312.pyc index 2b2f6e54436a4fdc941ca15b0e2cb15355020c8d..ce8733547ef87f842fc756ce53e02217caa36582 100644 GIT binary patch delta 54 zcmcaRgYoGMM()$Ryj%=G@N3i6joe|(QdRmH`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Ji3J3UE~&-YCHV!LtC?SU004Y; B5Y_+y diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/__init__.cpython-312.pyc index 39b1bed3f9f13be06753b95528e5a566bf7578f7..222b18285ee3d03dc89f72482757878dd18f2b5d 100644 GIT binary patch delta 52 zcmeyt*TBzxnwOW00SJC=y1J3Ol2s~KKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4bGJ GM~nc!77>R4 delta 44 ycmZqR|G~$7nwOW00SL~%y|R(Jl2s^GKO;XkRX;tiLf<8|IJ+djVDmiIM~nbKbq{3# diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/support.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/support.cpython-312.pyc index 9442a98cc796857082bc7f2e26a4c5a6fc63a574..5e0d0f8a149c30ee789cfcb280bdb4c01a4c4900 100644 GIT binary patch delta 52 zcmexo*k;6inwOW00SJC=y1J2Dhgm8|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pHu GR#5=M3lSjz delta 44 ycmZoO`e(>}nwOW00SL~%y|R&8hgm2^KO;XkRX;tiLf<8|IJ+djU~?ezR#5;%S`PmJ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_archive_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_archive_util.cpython-312.pyc index f6997972ad8793829bba4262af0d1e3c4971fd44..ba8511b2f07511259adb902664d09b5053b082ad 100644 GIT binary patch delta 54 zcmbQWh;h*(M()$Ryj%=G@N3i6joe+#Qf2xX`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jmopdp0s!+T5_kXr delta 46 zcmZ3qh;h~;M()$Ryj%=GaQ5w$joe+#LV5Zb`MIh3>3J3UE~&-YCHV!L*E1LU0sw7f B5LN&H diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_bdist.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_bdist.cpython-312.pyc index d0ddc859bebdf4423c94229667397e2e4277ac1c..09180fee51b19038fb89589b29424a6042b014f4 100644 GIT binary patch delta 52 zcmaFK_mPkLG%qg~0}%Y$baf+l1Cvy~enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@HM GXIKEzo)O;w delta 44 ycmey!_mYqMG%qg~0}z~jdu1bc1Cvm?enx(7s(yN2g}zH_adt_5!RDn*XIKDH!wyhI=&CAQh00h4_UERp-!zERspOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kS& GHVXi%K@hP3 delta 44 ycmeB?YmwtV&CAQh00d{>UfIa)!zGlXpOK%Ns-K=$q3@DfoL!P%u(^s delta 44 ycmexh{KA;~G%qg~0}z~jdu1bcC#z77enx(7s(yN2g}zH_adt_5!RB?WP9gwaVh^YQ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_build_ext.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_build_ext.cpython-312.pyc index 2539c616d59596b58543165fb7d5a5825853a15d..e5f89d3e4df0ab46a35131896ce5b2aa4ec8df90 100644 GIT binary patch delta 54 zcmbRGlyUA;M()$Ryj%=G@N3i6jofEhrHb`4@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JzhYgT0{|9^6Vde43VoN<;_Qe43VoN<;_QUfIY!k3}e5KO;XkRX;tiLf<8|IJ+djVDn*?qf7uYeGeo6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_cmd.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_cmd.cpython-312.pyc index 6b69b6f551bd4e3f76877096d499fab5bb73289b..ba8834ea7018846303d6f7176a4cb5e90d406cd3 100644 GIT binary patch delta 52 zcmX?Qc*&6aG%qg~0}%Y$baf+l6{A$Henx(7s(yN2g}zH_adt_5fxf$6gl@R2)8^@n G#^M0cixE)( delta 44 ycmca)c*>CbG%qg~0}z~jdu1bc6{Aq9enx(7s(yN2g}zH_adt_5!RGml#^L}_xDPJ? diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_config_cmd.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_config_cmd.cpython-312.pyc index e8f5f152579a5ce8a0686c90e5b57f9d6b63d4fa..01fa1c086e045b5f84e77504d1c63398589b94f7 100644 GIT binary patch delta 52 zcmeCyn5@BlnwOW00SJC=y1J1&fJv%EKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%^q GJV5}keh}LL delta 44 ycmbQN(XGLKnwOW00SL~%y|R%zfJrDvKO;XkRX;tiLf<8|IJ+djU~?(cJV5|8I}W)3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_core.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_core.cpython-312.pyc index 960384e5332d962d8780ce4cef8fab90ad88aa27..cc21bdf2d04c8238a92eb384762bdb753ea23098 100644 GIT binary patch delta 52 zcmZ2xu+D({G%qg~0}%Y$baf-Q9*b0-enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Ij$ G+rj|3UJ)7q delta 44 ycmZ2yu*`t_G%qg~0}z~jdu1cH9*a<#enx(7s(yN2g}zH_adt_5!RBC=+rj`n8xHsY diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_dir_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_dir_util.cpython-312.pyc index 7c2e6c46808945bb370465f8b33943ba0d690163..50925df471b2f4a619c735fa5bcd7879328fcb04 100644 GIT binary patch delta 52 zcmZp0?r`Ql&CAQh00h4_UERoC&n#7>pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0REm G6IlShAQ7to delta 44 ycmeBhZgA#4&CAQh00d{>UfIZ9&n%RspOK%Ns-K=$q3@DfoL!P%uz3md6IlR2Z4Ze6 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_dist.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_dist.cpython-312.pyc index 2ba88b3a2b5525aaeddda4aaf30f24e9279cc7db..5da6503f5277d776faa222f8a906efdb8be71faf 100644 GIT binary patch delta 54 zcmaEQk@4+CM()$Ryj%=G@N3i6jofN1QhE9r`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jomm#8000%M6662? delta 46 zcmaERk@4w8M()$Ryj%=GaQ5w$jofN1LTUOL`MIh3>3J3UE~&-YCHV!Ly;&Be004`T B5W)Ze diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_extension.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_extension.cpython-312.pyc index f96f8f93f0db4d095955e68843c597920a67af5e..16fa927e3f5e556d859820ae53930e6b7c5e0f5f 100644 GIT binary patch delta 52 zcmaE;@KS;MG%qg~0}%Y$baf;5M`o#F{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Q|o{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`IFs GTs8opiVyez delta 44 ycmbOsIzg2CG%qg~0}z~jdu1ax8;ek(enx(7s(yN2g}zH_adt_5!DeliTs8nGKMmFZ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_log.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_log.cpython-312.pyc index 8f82733ee0174cd0edcbcf8c7b3c1f580d4cf09d..58a199d435197b70d14e55ef3e87e9185ce24cea 100644 GIT binary patch delta 52 zcmdnPeuSO-G%qg~0}%Y$baf*)Ba>9Fenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GrQ Gd5i$6eGoJB6T diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_modified.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_modified.cpython-312.pyc index 5a41f1d04938a1c6b86ff4bb14d61fe22594c691..c33322d2186eedd1da0b79b2bbc37f963829f99c 100644 GIT binary patch delta 52 zcmZ2wvB`q_G%qg~0}%Y$baf;5XJ)A){fzwFRQ>e43VoN<;_Qe43VoN<;_Q3J3UE~&-YCHV#V?tT%v;jT`b J`&l1)0RR$a6IcKM delta 46 zcmeydfbqiuM()$Ryj%=GaQ5w$jod}7Lh1S$`MIh3>3J3UE~&-YCHV!Lr?Wov0sx3S B5jFq- diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_spawn.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_spawn.cpython-312.pyc index 7b00989f6213cf91a1d87566f6cdda2c33b04359..64f2cf0819d66d9ba3db5d8fdb64f15be8fd06cd 100644 GIT binary patch delta 52 zcmZoP?KI^+&CAQh00h4_UERoiiB&3JKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dy5 GNg@Emo)O&u delta 44 ycmeA)Z8YUR&CAQh00d{>UfIZfiB%|FKO;XkRX;tiLf<8|IJ+djVDop@Ng@D6D-XK> diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_sysconfig.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_sysconfig.cpython-312.pyc index e43155116c4ca4609d39f2f82a12e66f1e94db98..09b9a2b3e6bdb1ed293f86b14c72b2daaaeb94c2 100644 GIT binary patch delta 54 zcmZqdW9;l>!sol3JWyl3$?j?iZmO?&`GJ IgK4J=0Mfz{m;e9( delta 46 zcmeC|V{GhW!sol3JWyl3%bnfN7@-08-}< Ab^rhX diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_text_file.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_text_file.cpython-312.pyc index 186ccd0b836161203f36d20b4da796eaa08190a0..c490f432b9980fd60e47a88418c554ec39f8cc8b 100644 GIT binary patch delta 52 zcmZpd>X+g^&CAQh00h4_UERpNk4>srKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dG1 G9X0^DL=hbT delta 44 ycmeB|YM0_Z&CAQh00d{>UfIaKk4-3BKO;XkRX;tiLf<8|IJ+djVDn=(9X0?vnGX8^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_util.cpython-312.pyc index 20b8a972d2b7b8ec3e5dcbc5f3ff684ae915b6b2..0824283e61fbf2e61681d123f603da304f34c710 100644 GIT binary patch delta 52 zcmbQ6xipjeG%qg~0}%Y$baf-QD4SHCenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F;K GY&`(S*%0>t delta 44 ycmZ3QIX9F0G%qg~0}z~jdu1cHD4S54enx(7s(yN2g}zH_adt_5!DcJAY&`%;P7c)o diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_version.cpython-312.pyc index 8413fc68e7ef0277889650ae55fb4e709a13d303..b002622c94accc2b17f36a69a80eb6ff9bb5141a 100644 GIT binary patch delta 52 zcmeB_n<&S9nwOW00SJC=y1J2jJ)=~ienx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;db Gw!8qioe>uR delta 44 ycmbOz*D1$+nwOW00SL~%y|R&eJ)=;jenx(7s(yN2g}zH_adt_5!R9NBw!8p4LJsu+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_versionpredicate.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/test_versionpredicate.cpython-312.pyc index 6d1965ff401e58ffbf27f9918ab9ec3587422e11..57153792a47e6de524117de28538b6d28b68e010 100644 GIT binary patch delta 49 zcmcc2c$<;?G%qg~0}%Y$baf)Pu~e0QMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DHc1 Djz180 delta 41 vcmcc3c$ty=G%qg~0}z~jdu1ZGu~3nIMt*LpetKSozDsIxc1eE0#E5197V8dG diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/unix_compat.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_distutils/tests/__pycache__/unix_compat.cpython-312.pyc index 0ab47d798849c0d217fa826108ea780c2f645abc..035a046b87bfc7dca47108d3e99be26f96a4d9a6 100644 GIT binary patch delta 51 zcmbQrHkXb2G%qg~0}%Y$baf;5V@9b0{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Q3J3UE~&-YCHV#V?tT%v;jT{2 NifY>x)fmtH0svw86m|dr delta 50 zcmex3J3UE~&-YCHV!-nrhoM)fmtH F0szl<5?lZP diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/__init__.cpython-312.pyc index c13f29826a42ba3b00569717cad3c938f1589eb8..36a7f9c448263494c8c8a277aa0a54e16684dac8 100644 GIT binary patch delta 50 zcmZ3_yq%f*G%qg~0}%Y$baf*43#kJAjQreG{q(#FeV5eY?2`NfeRsbI-Edc@$*hd4 E0HyB`y#N3J delta 42 wcmdnayq=l+G%qg~0}z~jdu1Z`3!x1CjQreG{q(#FeV5eY?2`O~$-IoK04YHZn*aa+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/autoasync.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/autoasync.cpython-312.pyc index 8b59dda8bb929950a6673c3c8ce3558b810fc137..8fcbf2c3b8ae88550280571e91bf22d4cbb41336 100644 GIT binary patch delta 52 zcmbQDK1ZGVG%qg~0}%Y$baf;5G#05s{fzwFRQ>e43VoN<;_Qe43VoN<;_Qn##p}nwOW00SJC=y1J2j36oT@enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>Or GK1=|yI1uRo delta 44 ycmbQr)yu_wnwOW00SL~%y|R&e36oH^enx(7s(yN2g}zH_adt_5!RC`pK1={L9S+9; diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/automain.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/automain.cpython-312.pyc index 7f847b4fa7ddaabf5d03ea66081607e530e2a0c8..0e9c4eab4a52c3058fa53177ae8657e3d0bf7313 100644 GIT binary patch delta 51 zcmX@fcae|#G%qg~0}%Y$baf*4C#eGcjQreG{q(#FeV5eY?2`NfeRsbI-Edc@&HRj3 FYyieW5YYet delta 43 xcmcb}cao3$G%qg~0}z~jdu1Z`C!q}ejQreG{q(#FeV5eY?2`O~&Ekw!Yyd>k4zBe43VoN<;_Qe43VoN<;_QxewO> diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/errors.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/autocommand/__pycache__/errors.cpython-312.pyc index 051b252b4f1f4be9b716f693671e54af563c7850..a56ae3d680d6ab7a8d4ecec9e06db75be4413813 100644 GIT binary patch delta 49 zcmdnbe4Ls4G%qg~0}%Y$baf*44XHf+jQreG{q(#FeV5eY?2`NfeRsbI-Edc@iC<3v E0Gq23*Z=?k delta 41 wcmX@kyq}r-G%qg~0}z~jdu1Z`4WTssjQreG{q(#FeV5eY?2`O~iGNQ403fdqwg3PC diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/__pycache__/__init__.cpython-312.pyc index f64923f758be1ee5e84b1e0f7f5ae6dc5f8cedc8..18e0841124a663185349c83eb0ea205ce929ef21 100644 GIT binary patch delta 49 zcmX@ebdrhtG%qg~0}%Y$baf*4G^srOjQreG{q(#FeV5eY?2`NfeRsbI-Edc@iJSWX DlTQ&E delta 41 vcmX@fbdZVrG%qg~0}z~jdu1Z`G@&&8jQreG{q(#FeV5eY?2`O~iM#s%8dDDV diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/tarfile/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/tarfile/__pycache__/__init__.cpython-312.pyc index 3d323d529e33b37f8f6ba4a7cf8b1765eeee7ddc..e723ac5ee9f8555ae27b3d4cf24e6035611c4d0e 100644 GIT binary patch delta 58 zcmdnAnSIx0cJ9->yj%=G@N3i6joi|lQf2xX`MIh3>3J3UE~&-YCHV#V?tT%v;jT{2 N7M$BHI2o%h002N66ITEL delta 50 zcmdnBnSIk{cJ9->yj%=GaQ5w$joi|lLV5Zb`MIh3>3J3UE~&-YCHV!-4xHN^I2o%h F006Q<5j_9^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/tarfile/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/tarfile/__pycache__/__main__.cpython-312.pyc index 1e75bffa14a3d75890859899443974eed72ff051..99c5b076b3a7472305ac7f2d80503ff4b617e493 100644 GIT binary patch delta 49 zcmdnUw3CVZG%qg~0}%Y$baf(kom82AMt*LpetKSozDsIxc1eDLzPn$9Zn&${#M#pT Dizg7; delta 41 vcmdnVw2_JXG%qg~0}z~jdu1Ybolu^BMt*LpetKSozDsIxc1eE0#KqG96RQrm diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/tarfile/compat/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/backports/tarfile/compat/__pycache__/__init__.cpython-312.pyc index 514c0f1df632dfde7aee24563798a63fc47aa75b..a7150992669587efdd5d61c12dae9d9936666361 100644 GIT binary patch delta 49 zcmcb{c#o0$G%qg~0}%Y$baf)Pu~e;oMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DF#c DkGT+o delta 41 vcmcb|c#Vb8__gWkMs9gFsdD{{{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JHf;M(0s!*#60!gQ delta 46 zcmZo(!2EkYGxup;UM>b8IQ#a>Ms9gFp?v*}{M=Oi^t=jvm(=3ylKg_rE^PZx0sw5} B5Rd=> diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_adapters.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_adapters.cpython-312.pyc index dbdfb2c05e0043afe16e2c5005dfd6c19b862245..f7333ca07b611c411ab5a6ec25e5df305b30b8e2 100644 GIT binary patch delta 52 zcmX>tds&wIG%qg~0}%Y$baf;5Sth9p{fzwFRQ>e43VoN<;_Q$JG%qg~0}z~jdu1c{Stg+Z{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qj2(GtPqd@ delta 44 ycmdlcy-u3@G%qg~0}z~jdu1cH0jE%*enx(7s(yN2g}zH_adt_5!RAoTL>2%!sSa)c diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_itertools.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_itertools.cpython-312.pyc index 3b6db2d887b1f5119909e5edde3174a5f9153faa..ffca3e7fb853458290b6353aa6b85e032069ef15 100644 GIT binary patch delta 52 zcmew*)FjM(nwOW00SJC=y1J43Iipmienx(7s(yN2g}zH_adt_5fxf$6gl@R2(`FW? GGIjvX+Yt@` delta 44 ycmZn?{w2hHnwOW00SL~%y|R(}Iipaaenx(7s(yN2g}zH_adt_5!Db$&GIjtkb4rH$G%qg~0}%Y$baf-Q0FzXSenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`H>J GQ62!dArK<~ delta 44 ycmX>lb4Z5!G%qg~0}z~jdu1cH0FzLTenx(7s(yN2g}zH_adt_5!Ddq?Q62z0E)D?z diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_text.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/_text.cpython-312.pyc index 72499f051f3ab8b0981e4ed692cfc6a1374ad4f2..dba2f274072fe0546135ad354484aa29239b823b 100644 GIT binary patch delta 52 zcmdllcU+G9G%qg~0}%Y$baf;5Z&s-i{fzwFRQ>e43VoN<;_QYM=9DG?0- delta 44 ycmX>uw_lF?G%qg~0}z~jdu1c{Z&slk{fzwFRQ>e43VoN<;_QYM;l)(-0c diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/diagnose.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/__pycache__/diagnose.cpython-312.pyc index b69aa14c95fb8545a5aea9000bd4734dcf1d8e0d..de8d0f301a9ec299407aa56cd59e253d14d360d7 100644 GIT binary patch delta 52 zcmdnZd6<*?G%qg~0}%Y$baf*)50g~6enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HSk GNlXB(pb%XE delta 44 ycmX@ixto*wG%qg~0}z~jdu1ax50g;7enx(7s(yN2g}zH_adt_5!Dd6INlXAURSr7< diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/compat/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/compat/__pycache__/__init__.cpython-312.pyc index 4ee68856392a62eb9252716f6ad30abb16e1247a..e624ee7b89a7263f139c544b2bbabf5b0d26095c 100644 GIT binary patch delta 49 zcmcc4c%PB`G%qg~0}%Y$baf)Pu~eOYMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DI1H DkT(#A delta 41 vcmcc5c%6~^G%qg~0}z~jdu1ZGu~3fz!(&CAQh00h4_UERoilu4>uKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4al{ GB_;r~ED-kq delta 44 ycmeC-YT@EO&CAQh00d{>UfIZflu4*qKO;XkRX;tiLf<8|IJ+djVDl>`B_;qiSq{|z diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/compat/__pycache__/py39.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/importlib_metadata/compat/__pycache__/py39.cpython-312.pyc index 120fa7fc26f9398006942f367b76c66d7584b13d..ec10e0b791de8f994914e7855dd1f343819ccf4a 100644 GIT binary patch delta 52 zcmeyx)5ObtnwOW00SJC=y1J2j8k1C&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@@g G$C&}dTM@4S delta 44 ycmZqT{l&w5nwOW00SL~%y|R&e8k10wenx(7s(yN2g}zH_adt_5!RFme$C&{{f)9-V diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect/__pycache__/__init__.cpython-312.pyc index 35912bc3ee17eeca9018cc60d9b14703dc5ffa42..8aaa8b902f4591df7f7c6f1152e9b2718ac7269a 100644 GIT binary patch delta 58 zcmdn_neE_bHty5Byj%=G@N3i6joimnq;m8#@^e%5)AK6yT~dp)OY#f!-TfkT!(E-4 NAFFJCtipJ03IK$}7E1sC delta 50 zcmX^3nQiB1Hty5Byj%=GaQ5w$joimngi`b~@^e%5)AK6yT~dp)OY#evU#o0?t-^S1 F3IOb?6fpn* diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect/compat/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect/compat/__pycache__/__init__.cpython-312.pyc index b3405da97573263f21fb93e63c7e1c5f2e111875..8400ba5abb4cc0736cd140c23761a14a5ed22b04 100644 GIT binary patch delta 49 zcmX@Zc!iPsG%qg~0}%Y$baf)Pu~e~sMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DE$A Dip>yP delta 41 vcmcb@c!rVtG%qg~0}z~jdu1ZGu~4>tMt*LpetKSozDsIxc1eE0#E2RI6d?{d diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect/compat/__pycache__/py38.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/inflect/compat/__pycache__/py38.cpython-312.pyc index 0d307fe882c6d69179ee3526ac1b3c37c827178e..709dfcefca7e1de28a703731d24cb7ab5ab57ade 100644 GIT binary patch delta 49 zcmaFQ^qq&;S4c delta 41 wcmey)^qz_PG%qg~0}z~jdu1Z`L7{a0jQreG{q(#FeV5eY?2`O~iO(hi04)9wt^fc4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/__pycache__/context.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/__pycache__/context.cpython-312.pyc index 76f629a50b3003608218337fe897c991b82e5d21..e32deea43783b708072aff28cbc087d61efa9541 100644 GIT binary patch delta 52 zcmZoI=q=zr&CAQh00h4_UERnX$Rd@cpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kGu Gx-kIBh7ooE delta 44 ycmeAzXf5DA&CAQh00d{>UfIYU$Rd=apOK%Ns-K=$q3@DfoL!P%u(^z7x-kGsTMtwK diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/collections/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/collections/__pycache__/__init__.cpython-312.pyc index 2b79455d909fff835525fd7a95dbf7164cdd1f11..6d59ec6e39e6e9f89fe24dae744ac8513af7e915 100644 GIT binary patch delta 54 zcmbQdooV)VChpU`yj%=G@N3i6jog=5rONd)@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= Jzh_-C6#xYA6QlqD delta 46 zcmbQeooVuRChpU`yj%=GaQ5w$jog=5h4S??@^e%5)AK6yT~dp)OY#dge`j4X6##qI B5rO~! diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/functools/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/jaraco/functools/__pycache__/__init__.cpython-312.pyc index 145973aff7ee97db2cd6d5b76a03638b38b24a8e..338199292e8382b74ecda4a9cd5e2542042fdfd9 100644 GIT binary patch delta 54 zcmZqM%-FY?k^3|+FBbz4{MvMNBlkxZsZ#xn{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Ie5@5A0R1fzP5=M^ delta 46 zcmeC%%-FV>k^3|+FBbz4oPB#`BlkxZp3J3UE~&-YCHV#V?tT%v;jT`b I+nL1@0R1EqH~;_u delta 46 zcmZ2_oN?}PM()$Ryj%=GaQ5w$joewxLK*rQ`MIh3>3J3UE~&-YCHV!L`e43VoN<;_Qe43VoN<;_Q^ delta 44 ycmbQuKAD~SG%qg~0}z~jdu1cHCzDW)enx(7s(yN2g}zH_adt_5!R9b8__gWkMs6)WseJv6{M=Oi^t=jvm(=3ylKcXFcfSbTa95{h QcfNLaKF00td`#xE0Ho>^N&o-= delta 54 zcmZp>$o2067x!siUM>b8IQ#a>Ms6)Wp>+L>{M=Oi^t=jvm(=3ylKg^Zf4+8qKF00- Id`#xE017e^H~;_u diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-312.pyc index d6cc86eb5b5cba316c27fbea69b53ff3d718948e..06fc05065f4994d01300692e5d36db128574de31 100644 GIT binary patch delta 54 zcmaDqo9X*(ChpU`yj%=G@N3i6jokCtrHb@3@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= J?`Ah?0{|9o6FdL_ delta 46 zcmex9o9X>*ChpU`yj%=GaQ5w$jokCtg|hTB@^e%5)AK6yT~dp)OY#dgA7(dc0|1K* B5gGsh diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-312.pyc index 907724547125a8fa16ecea385e5092d1b14415e7..4a7b539ff6bb1ca88d665747b76583c8361f110e 100644 GIT binary patch delta 51 zcmdnOvWJEHG%qg~0}%Y$baf+lKBH8genx(7s(yN2g}zH_adt_5fxf$6gl@R2)8rn; F6#%5~5cB{5 delta 43 xcmdnPvW12FG%qg~0}z~jdu1bcKBG{Yenx(7s(yN2g}zH_adt_5!Q?57D*!6K4$=Ss diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc index b8aad21b14ea37cbaed74b93f368fa3311773eda..53c61f4cef631c1c6bfd335365b8cb8b3dbcaa5b 100644 GIT binary patch delta 52 zcmZ3ZzD1q;G%qg~0}%Y$baf;5ekQ3r{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qb8__gWkMs7=1sXYCR{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IVXSJY00{sRMgRZ+ delta 46 zcmZp<%J}CBBll@uUM>b8IQ#a>Ms7=1p)~!B{M=Oi^t=jvm(=3ylKg_raja^o0DmD6 ABme*a diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-312.pyc index 5c21ff987dfa7c7c4f194c229c9884f0e5eeee30..034bebf6592157fd22ce3a7d5ddac45af8f4ab6b 100644 GIT binary patch delta 52 zcmX@0bV7;yG%qg~0}%Y$baf*)H#x)3D* delta 44 ycmX@1bU=ywG%qg~0}z~jdu1axHy6ZdIeUM>b8__gWkMs8+isRI3s{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I3e1^P0p1J|pa1{> delta 46 zcmbQZk*RYd6ZdIeUM>b8IQ#a>Ms8+ip$z?u{M=Oi^t=jvm(=3ylKg_r8qAqf0bIck AegFUf diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-312.pyc index 608a1f9089dd376c6891bc7a159f573c41b87aec..b52c92794be27881e4ec7d8baf5ef2659a376c35 100644 GIT binary patch delta 54 zcmaF6h4JeaM()$Ryj%=G@N3i6jobokQd#;L`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Ib=e$300{gN8~^|S delta 46 zcmeymh4JkcM()$Ryj%=GaQ5w$jobokLP`1=`MIh3>3J3UE~&-YCHV!LP1zhm0D$rj A`Tzg` diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-312.pyc index 51f425a873315172665f976831a50e44dc5aad02..51fd6ecdc186770a4ac14ec6b8c51efb9cdf4396 100644 GIT binary patch delta 52 zcmexp{L`5GG%qg~0}%Y$baf+lHM3N GkzxSiSP{$s delta 44 ycmexq{Lz^EG%qg~0}z~jdu1bcHM3B%enx(7s(yN2g}zH_adt_5!R7_bkzxQ|?GLH| diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-312.pyc index a0d651e2231185449ca4d8507ee679c02ab90aad..9a571db4c89c0bcad94026ee25cae89489ea2f8e 100644 GIT binary patch delta 54 zcmex0pRs8HBll@uUM>b8__gWkMs7V8sa*Yx{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I-Yo0A0rB4wE&u=k delta 46 zcmZo#!1!xEBll@uUM>b8IQ#a>Ms7V8p;Y~h{M=Oi^t=jvm(=3ylKg_r!7S^&0c+e43VoN<;_Q! GjCcXXrxA7l delta 44 ycmZ3iFk6B9G%qg~0}z~jdu1c{87858{fzwFRQ>e43VoN<;_Q>6ZdIeUM>b8__gWkMs7(xsS^E+{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z IW_nk;00Tl33IG5A delta 46 zcmbRAiK*)o6ZdIeUM>b8IQ#a>Ms7(xp&b2;{M=Oi^t=jvm(=3ylKg_rc6wL30DGVi A=l}o! diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc index 292b0aea812c05d15476395d85d5c120c16d094b..6c5ca45a0a50e2d51d48cd62863bb1d7995ae621 100644 GIT binary patch delta 54 zcmX>-i}CU-M()$Ryj%=G@N3i6jog3Or3&>k@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JOL7>w0ss(k5@`Sc delta 46 zcmcaSi}CagQ0sw@E B5Jvz2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc index f4a3a7e4a243841e8feb26cf88550c45bc3465a1..80541fd4ef0123ad9af0c52f171eb96db40ad11d 100644 GIT binary patch delta 52 zcmZ3*zlopwG%qg~0}%Y$baf-Q6RT9Aenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=?q GZzce+S`cgi delta 44 ycmdnQzlxvxG%qg~0}z~jdu1cH6RS|Benx(7s(yN2g}zH_adt_5!RB;UZzcdWCk{#g diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/android.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/android.cpython-312.pyc index 71d5b8f94599fc14c3df7aec4239988cba75a358..59b1ce168d218cc1fb9373fd1d65cb6133f6b35e 100644 GIT binary patch delta 52 zcmcZ^{4kjNG%qg~0}%Y$baf-QFRN66enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;JJ Gd=&uSkrAx` delta 44 ycmaDDd^4E)G%qg~0}z~jdu1cHFRM_7enx(7s(yN2g}zH_adt_5!R8{?d=&s(-Vcia diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/api.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/api.cpython-312.pyc index b062798819c5a2c49aa19deb35d5a1d20d848b5a..ebd17737c7beb1b83f8b2415c3f96b554ad7c767 100644 GIT binary patch delta 52 zcmeB7otVmfnwOW00SJC=y1J3ugk35}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%aE Gg*E`fXb{f; delta 44 ycmbQ3+L_9InwOW00SL~%y|R(pgk2~_KO;XkRX;tiLf<8|IJ+djU~?q9g*E_0Z4Rvf diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc index c255688e5750b9fd77aebb3221bef20a2af02bc1..f4aabe6ddc2afd2a45af6ce06ae6b7a8cde20939 100644 GIT binary patch delta 52 zcmX?Wch!#jG%qg~0}%Y$baf-QG^e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_QUYW>!TPR6CBR@A)KRvHP-zBv;yClD05@SCA4Db#Q diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/tomli/__pycache__/_parser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/tomli/__pycache__/_parser.cpython-312.pyc index b333f03b9c14e89dcb30be0095d2abebc977672d..ff8765a8ce3c5850735e9f604542510f6eaad1c6 100644 GIT binary patch delta 54 zcmdmXiE-a0M()$Ryj%=G@N3i6jokBDq%!q0@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= J?_sG*0RR)$6HNdB delta 46 zcmdmYiE-N{M()$Ryj%=GaQ5w$jokBDgc9{L@^e%5)AK6yT~dp)OY#dgA7QCV0RV{n B5i0-y diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/tomli/__pycache__/_re.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/tomli/__pycache__/_re.cpython-312.pyc index 4a7462a0bd78fae6663fc768a29704064c5a5274..999ed01db293e7a59d64078948ac89afdff48d0d 100644 GIT binary patch delta 52 zcmX>tcUg}6G%qg~0}%Y$baf;5I(Dg4{fzwFRQ>e43VoN<;_Qe43VoN<;_Q1}vj6}9 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/__init__.cpython-312.pyc index e6970ebc8ccfeb7006e563dcd984a6d4fb45cd27..da7674f896d0f0d1e0ecba3665a12da8dc3e1f9f 100644 GIT binary patch delta 52 zcmZ1`uug#cG%qg~0}%Y$baf*)535w3enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HT9 Gzf1tADG;du delta 44 ycmZ1{uuOpaG%qg~0}z~jdu1ax535j`enx(7s(yN2g}zH_adt_5!Dd6&zf1rw?hc0l diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_checkers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_checkers.cpython-312.pyc index 4bc4b0d216986868948e7c15b7fdd6da9e5829b2..66884a22fbaf103eaa034eb2cee110f5756f6828 100644 GIT binary patch delta 54 zcmbO>k!jvUChpU`yj%=G@N3i6jof0wQu+EB`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b IjfIm-0ozCsnE(I) delta 46 zcmbO?k!jjQChpU`yj%=GaQ5w$jof0wLh1S$`MIh3>3J3UE~&-YCHV!Lt%Z|I0a_go AcK`qY diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_config.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_config.cpython-312.pyc index e48d5d0d03e5da7d98af21052a695a9675cc4c36..8a8c4620258da9cdfde5557d9c1f729302a2804d 100644 GIT binary patch delta 52 zcmbOtH%E^9G%qg~0}%Y$baf+lBC}Mkenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;zn GY1{y@=Md-s delta 44 ycmbOuH${&7G%qg~0}z~jdu1bcBC}Acenx(7s(yN2g}zH_adt_5!R9vRY1{xdTn@$n diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_decorators.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_decorators.cpython-312.pyc index 4a352d7899458fd9bb4d3ce2dcaa460566921116..43ad8248487ec06790ae9a72912da19bb4c4958c 100644 GIT binary patch delta 52 zcmcZ`^fZY3G%qg~0}%Y$baf;5b7rYR{fzwFRQ>e43VoN<;_Qe43VoN<;_QvdR>(JG%qg~0}%Y$baf;5WJak%{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_QA)2@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JALKGR000-06NCT& delta 46 zcmex8mHG2jX71Cxyj%=GaQ5w$joeGPgtGKA@^e%5)AK6yT~dp)OY#dgpX4$+004{m B5n=!U diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_union_transformer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_union_transformer.cpython-312.pyc index 48aa56228b7ea85a59e5ae8f160fb79fce83d99d..9bcfe26ab8f013e5ed50ed957b484bf40a31b1cc 100644 GIT binary patch delta 52 zcmaDO^hJpKG%qg~0}%Y$baf*)FSAsIenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GGZ GCpG}YcMysI delta 44 ycmew&^hSvLG%qg~0}z~jdu1axFSAgAenx(7s(yN2g}zH_adt_5!Db_7CpG{^bPi|$ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/typeguard/__pycache__/_utils.cpython-312.pyc index 405ec7e12da36fcf5722d078348166d3084bae30..25adab9c6f76e2f0e46343be1a22efc84e4f4043 100644 GIT binary patch delta 52 zcmbPiGuwvyG%qg~0}%Y$baf;5L1w8O{fzwFRQ>e43VoN<;_Qe43VoN<;_QeJ*G%qg~0}%Y$baf(kl~k5~Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#Oc)l DeT)!o delta 41 vcmbQmG>M7(G%qg~0}z~jdu1Ybl~9s?Mt*LpetKSozDsIxc1eE0#QD_#2!IYt diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/__main__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/__main__.cpython-312.pyc index d45285b2efb2874718daba772f6a1891ef5f3f93..a4da1b7b873febe158f4055e039a0f77a67e6e62 100644 GIT binary patch delta 52 zcmey!{*#^iG%qg~0}%Y$baf+l8Ix3&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@%c Gaf|@a91&Ll delta 44 ycmey#{*j&gG%qg~0}z~jdu1bc8Iw?wenx(7s(yN2g}zH_adt_5!RFaaaf|>@sSh;( diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/_bdist_wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/_bdist_wheel.cpython-312.pyc index 82e4e75bd1f8443f6ec9953c7f0df94e37022833..09a20519d2727219bca5503ecd28dd19d4e32622 100644 GIT binary patch delta 54 zcmX?hn(^FeM()$Ryj%=G@N3i6jogf^QhE9r`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Jx;H delta 46 zcmX?in(^3aM()$Ryj%=GaQ5w$jogf^LTUOL`MIh3>3J3UE~&-YCHV!L)mT>~004T9 B5HbJ& diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/_setuptools_logging.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/_setuptools_logging.cpython-312.pyc index 40cf4e8c82d5f679d586af9213b998313f7a9374..4a000f586eadf0a3c75a9692a67218b13b3b1ab1 100644 GIT binary patch delta 51 zcmeC-p2E$2nwOW00SJC=x;l~jtyHOgMt*LpetKSozDsIxc1eDLzPn$9Zn&${W-i7i F767fd5Rw1@ delta 43 xcmbQj-NVg&nwOW00SL~%y)u#etx&FhMt*LpetKSozDsIxc1eE0W+BEV7633v4sZYf diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/bdist_wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/bdist_wheel.cpython-312.pyc index 2bcf13c5bc3729a63d608abbae236fd73f648da6..bb0de90cd0ed9bc94c7c4063c28680004997d34e 100644 GIT binary patch delta 51 zcmbQlHj9n>G%qg~0}%Y$baf-QA(K?Denx(7s(yN2g}zH_adt_5fxf$6gl@R2(_}xU FBLI)n5LEyG delta 43 xcmbQmHi?bG%qg~0}z~jdu1bc2%}J(enx(7s(yN2g}zH_adt_5!RAWFKqde?QVxLt diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/wheelfile.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/__pycache__/wheelfile.cpython-312.pyc index 83d8b4bad9208653a995b4f01e4b2f5a2e4435bb..8fe133e7b05d8aa9b4c667663889878471b2ce26 100644 GIT binary patch delta 52 zcmaDK`8|^RG%qg~0}%Y$baf;51}3R&{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_QyP delta 41 vcmcb@c!rVtG%qg~0}z~jdu1ZGu~4>tMt*LpetKSozDsIxc1eE0#E2RI6d?{d diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/__init__.cpython-312.pyc index 3e86f37622d80d00a6c8d41c44d2800f1d280df5..4268c9a345d806e3a52e8f7e4aa5c22fd59e9e3a 100644 GIT binary patch delta 49 zcmcb{c#o0$G%qg~0}%Y$baf)Pu~e;oMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DF#c DkGT+o delta 41 vcmcb|c#Ve43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Q&@dn&CAQh00h4_UERoik6EflKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dMp GE@J@RoDvTJ delta 44 ycmeCpYt7?6&CAQh00d{>UfIZfk6EZhKO;XkRX;tiLf<8|IJ+djU^6odmoWfVqz>)? diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/_structures.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/_structures.cpython-312.pyc index 05bdde0b943509c050947f4041b57f4d876ab1e2..72d30cce0edadebce7c14d6dfd41147e42c433bc 100644 GIT binary patch delta 52 zcmdldc}$Y~G%qg~0}%Y$baf+lG^135enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8-0B GH*NsIFc9Sc delta 44 ycmX>mxlfY&G%qg~0}z~jdu1bcG^0?3enx(7s(yN2g}zH_adt_5!R7`=H*Nqz{SLzb diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/_tokenizer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/_tokenizer.cpython-312.pyc index c107e13449efdf0eecbc1c1b608f9b3450a64582..6a5255a7ec740e6bc7bbec130bf260b0a6170460 100644 GIT binary patch delta 52 zcmbPcH_wjyG%qg~0}%Y$baf-QCbLw%enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Gm3 G3(^3&l@S;K delta 44 ycmbPdH_eXwG%qg~0}z~jdu1cHCbLkvenx(7s(yN2g}zH_adt_5!Dc_^3(^2R8V>dV diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/markers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/markers.cpython-312.pyc index 4c6eae9035b7bef8e331512d7c1acc2f61d389a0..d63d9d6d6cd81dce5da1d44261acf70486df8978 100644 GIT binary patch delta 52 zcmZ1;v_6RYG%qg~0}%Y$baf+l0*h3Qenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8<;1 GRVo0_*%7h; delta 44 ycmZ1XnwOW00SJC=y1J2@ok^-uKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oDb GI6nZmBoJZ% delta 44 ycmZox{;kA)nwOW00SL~%y|R&;ok^%tKO;XkRX;tiLf<8|IJ+djV6zTWI6nY88xBAK diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/specifiers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/specifiers.cpython-312.pyc index 3143fec754d87d689fd9a355a1bf711e77eee8a9..61101b7290e48128372dc6fa294601712777221b 100644 GIT binary patch delta 54 zcmbQVm1)*iChpU`yj%=G@N3i6jod}dQuX>7`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J`t0 delta 46 zcmbQWm1)veChpU`yj%=GaQ5w$jod}dLgo4y`MIh3>3J3UE~&-YCHV!Lr!zB82LNu* B5Fr2n diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/tags.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/tags.cpython-312.pyc index d70c964620d86e7e39c628e969805c4ba26e5c4d..2808292aa759085945dd77db762c741cf370eac5 100644 GIT binary patch delta 54 zcmbQXigDg5M()$Ryj%=G@N3i6jocgAr7HC^@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JpJVs%1pxaT60QIM delta 46 zcmbQYigDU1M()$Ryj%=GaQ5w$jocgAg$ngE@^e%5)AK6yT~dp)OY#dgUt{<11psrY B5R3o- diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/utils.cpython-312.pyc index 008ebe351185c5156ca40d23ed5e785273a7c376..a146a392a4ee0778b58c7923cc8a5dcc12d2f733 100644 GIT binary patch delta 52 zcmeCQoM_2?nwOW00SJC=y1J3uk6EfpKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&HS GoFo9X@DPOn delta 44 ycmbPe*=fmrnwOW00SL~%y|R(pk6EZlKO;XkRX;tiLf<8|IJ+djU~@6EoFo7_l@4P7 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/wheel/vendored/packaging/__pycache__/version.cpython-312.pyc index 1884a6630fb7a102d415afe38fd09ab222d16186..7033148404b21bc8f79e695cee714978e24abd60 100644 GIT binary patch delta 54 zcmdlqhjG^&M()$Ryj%=G@N3i6johnQq-yjt@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JpJ2)I1ONb164?L% delta 46 zcmdlrhjG&!M()$Ryj%=GaQ5w$johnQgi7=?@^e%5)AK6yT~dp)OY#dgUtr1d1ORv- B5VrsT diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/zipp/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/_vendor/zipp/__pycache__/__init__.cpython-312.pyc index 84ef3914e7e3d3b9d987f5cd08c527f4de872924..5bb582b7e3d4e5987641809439e8bf8ee56378f9 100644 GIT binary patch delta 54 zcmaFAk@5RRM()$Ryj%=G@N3i6jog;ZQknW0`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J!3J3UE~&-YCHV!Le43VoN<;_QAG%qg~0}z~jdu1c{bta)${fzwFRQ>e43VoN<;_Q0seL&CAQh00h4_U7g5%L@HN5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}<3o8y E0Fo9EsQ>@~ delta 42 wcmeBRX<*?#&CAQh00d{>UYW>!L?~51BR@A)KRvHP-zBv;yClD0<4bu)02zP|hX4Qo diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/__init__.cpython-312.pyc index 8e2a1dfeab61c44bcb4336e50ed103b83fa1e2cf..2297b774c43e89ff7a47358329ee19a05b2fd7c8 100644 GIT binary patch delta 51 zcmeBWoyy96nwOW00SJC=y1J3Okx?o|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4SYA F_W+l;5eWbQ delta 43 xcmbQr+RMs)nwOW00SL~%y|R(Jkx?i{KO;XkRX;tiLf<8|IJ+djVDd7?_W&QK4(9*> diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/_requirestxt.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/_requirestxt.cpython-312.pyc index 92a72fe18f1c5f65e489aa669926d727a11900ee..ce0921cbf77a00b8956511a0528bb2f8a41a79fe 100644 GIT binary patch delta 52 zcmdmQeB7A(G%qg~0}%Y$baf-Q4~tZWenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8e43VoN<;_Qe43VoN<;_Q3J3UE~&-YCHV#V?tT%v;jT`b IW0{3w027%KV*mgE delta 46 zcmeyqkMaFJM()$Ryj%=GaQ5w$joc2*Lb3W8`MIh3>3J3UE~&-YCHV!LQ<;Tg0Ev$f AK>z>% diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-312.pyc index f0439ab3362599e25e67f6ddb9f71b5ee8b81056..cf26f4401f62a7c3a5b93d2d0fba2ff4d3d615c8 100644 GIT binary patch delta 52 zcmZ1@utk9TG%qg~0}%Y$baf-QAd6J0enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G%E Gf6M@?6A-ol delta 44 ycmdlYuttFUG%qg~0}z~jdu1cHAd66}enx(7s(yN2g}zH_adt_5!Dcg-f6M?dpbnG( diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/bdist_wheel.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/bdist_wheel.cpython-312.pyc index b03fd32bfad2dcf8c7087d7dad008320a6de0795..312a2d24f480ccdf0df109b4f512bd77118be2c5 100644 GIT binary patch delta 54 zcmaEUhVlIwM()$Ryj%=G@N3i6joj;4q|)^>@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= JpJthp2mmL-6W#y- delta 46 zcmaEVhVl6sM()$Ryj%=GaQ5w$joj;4gyQux@^e%5)AK6yT~dp)OY#dgUuKz;2mqPT B5xf8Z diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/build.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/build.cpython-312.pyc index 79887430cda20cd15a7fe0550760b870f47d858b..a3350b28476756f432f49977d89e2d7320e446bc 100644 GIT binary patch delta 52 zcmdn5bzF=4G%qg~0}%Y$baf;59!9A|{fzwFRQ>e43VoN<;_Qe43VoN<;_QfG%qg~0}%Y$baf;5YZj?g{fzwFRQ>e43VoN<;_Qe43VoN<;_Q{UnwOW00SL~%y|R(}II~c+enx(7s(yN2g}zH_adt_5!R9y2n!*4>eh)PO diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-312.pyc index ae6db85a96d9a4c15bdd6ac1663d44adb5757e98..bc6419ef1b9e76039bde37b83d216ed6822eaed5 100644 GIT binary patch delta 52 zcmdlYyGNG$G%qg~0}%Y$baf;5e@3Ys{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Q+enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8>Cn G6Sx7uni0nU delta 44 ycmbOx+b7F?nwOW00SL~%y|R(}A(K#)enx(7s(yN2g}zH_adt_5!Dcq*3ETiZ;tr+& diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/saveopts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/saveopts.cpython-312.pyc index 8f3bd098eeb725d894f9d6c613d6932da51f807e..6bbe867ac580fa18dd593526fcb006e8f1aae4a8 100644 GIT binary patch delta 52 zcmey#*~rCxnwOW00SJC=y1J43Et6D=enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GK_ G_ly9^S`lUd delta 44 ycmZqV`pL^&gG%qg~0}%Y$baf+lGLuxIenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8+=I G^*R95uo2Dx delta 44 ycmdlUw?2;hG%qg~0}z~jdu1bcGLulGenx(7s(yN2g}zH_adt_5!R8L8^*R7k%@3>q diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/setopt.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/command/__pycache__/setopt.cpython-312.pyc index 472d08ccceeba2216a9d41b59ee2a3cf53bf0602..f0d848333aec73818e8ab927c153aa5201f48cc3 100644 GIT binary patch delta 52 zcmbPYKF6H-}-LJ)TV delta 44 ycmaFG_lS@CG%qg~0}z~jdu1cHHIq<;enx(7s(yN2g}zH_adt_5!R7=eE>-|UcMeqm diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/compat/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/compat/__pycache__/__init__.cpython-312.pyc index 4fe6e3d5336417ccc12e8acc57538c21856139d5..0297136bc5661507ded906b98b27e23319c56b85 100644 GIT binary patch delta 49 zcmdnPc!ZJrG%qg~0}%Y$baf)Pu~f2tMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DE+C Dg6$9+ delta 41 vcmX@YxQCJZG%qg~0}z~jdu1ZGu~4*rMt*LpetKSozDsIxc1eE0#E2XK4Z#ih diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/compat/__pycache__/py310.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/compat/__pycache__/py310.cpython-312.pyc index b65e2a58926edaf3502c82360ffcc89ecea2a82c..64fa16458933be2aec13257943c926dab3bc7be9 100644 GIT binary patch delta 52 zcmbQjHiwP-G%qg~0}%Y$baf*)FQZg~enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GHk GSBwCf(hx}i delta 44 ycmbQkHieD*G%qg~0}z~jdu1axFQZU|enx(7s(yN2g}zH_adt_5!Db`ISBwB7-wr1L diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/compat/__pycache__/py311.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/compat/__pycache__/py311.cpython-312.pyc index d9b8a7edac456842e4094b544e43c85f689db7e5..e2edd2b695b7c54bbd1c53d1f0e143af1e45fe3d 100644 GIT binary patch delta 52 zcmbQvJ)fKVG%qg~0}%Y$baf+l3X@cVenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8 delta 41 vcmX@gw3mtdG%qg~0}z~jdu1Z`T%mCNjQreG{q(#FeV5eY?2`O~iHDj27<>-o diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/__init__.cpython-312.pyc index 8d63a3a1265a457a72b7c70157253e823de66cf8..e83f0610d990c4f3308e1924e2de7edf750a285e 100644 GIT binary patch delta 52 zcmcc1|CFEmG%qg~0}%Y$baf+l8LL#Xenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@&n GUQ7VWun{W& delta 44 ycmaFLf0v*8G%qg~0}z~jdu1bc8LLpVenx(7s(yN2g}zH_adt_5!RFblUQ7T>9S;cr diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/_apply_pyprojecttoml.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/_apply_pyprojecttoml.cpython-312.pyc index a5677f34ae70636d774d437ef8e234c80a59d93b..cccc675ef5a8c1ff28a71fb96b2300f840dab965 100644 GIT binary patch delta 54 zcmcb2l=0b7M()$Ryj%=G@N3i6jofzJQu+EB`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b Iqq&>I0TNge(EtDd delta 46 zcmaEMl=0qCM()$Ryj%=GaQ5w$jofzJLh1S$`MIh3>3J3UE~&-YCHV!LlewG20f=r8 AuK)l5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/expand.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/expand.cpython-312.pyc index d2ae01bebd2cc01ed878350fca2668ac790b3c77..5d286d3f1ffe3f8a95808df9ebfa122f2ae0ff36 100644 GIT binary patch delta 54 zcmeyqpYi{GM()$Ryj%=G@N3i6joc-iQi=K*`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JCvv8R0RSKV6Egq+ delta 46 zcmeyrpYi*CM()$Ryj%=GaQ5w$joc-iLXr9z`MIh3>3J3UE~&-YCHV!LXL6>60RWS< B5fK0Y diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/pyprojecttoml.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/pyprojecttoml.cpython-312.pyc index e85b032b301166b0a329fc970cb7ecc52dcfbbc7..582113c6f60d4c008838bc054fca0ab5a276e826 100644 GIT binary patch delta 54 zcmX@Ijq%JjM()$Ryj%=G@N3i6jogu}QW^Rg`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b J%UI8a0ssVx66*i} delta 46 zcmX@Jjq%7fM()$Ryj%=GaQ5w$jogu}LJ9gA`MIh3>3J3UE~&-YCHV!L>sZf)0swr# B5Xk@l diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/setupcfg.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/__pycache__/setupcfg.cpython-312.pyc index eedb6bb9261999980effef37017e22a533eca4ca..06781e95589d0081481528deadc1a16d4e824629 100644 GIT binary patch delta 54 zcmZo`X6kEZ;y%sG%f$c$zcyXn$o-K+Dp@}xKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_9_ IA7@1c0O-gP3IG5A delta 46 zcmeBcW@>9@;y%sG%f$c$XWw4g$o-K+C|W-wKQ~oBJ+DIFCAB!aB)?#@7-vNV0ApPb A=l}o! diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/__init__.cpython-312.pyc index db1d81ac81a1d709f0b9d988c2a0032bfde6f715..467e807883fac6d5132819e8179ee40230076bf5 100644 GIT binary patch delta 52 zcmX@dca4wxG%qg~0}%Y$baf*)D~nXQenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F?W G9cBQvnGhZT delta 44 ycmcb{caD$yG%qg~0}z~jdu1axD~nLRenx(7s(yN2g}zH_adt_5!DcNM9cBPI_6__1 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/error_reporting.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/error_reporting.cpython-312.pyc index 44a39ab41319d127f1a1d47d3edfcda490a26584..d7aebd732b3ca45ceb19e3f811a4c00118dade34 100644 GIT binary patch delta 54 zcmX@s&v>q%k^3|+FBbz4{MvMNBll)5sXG0P{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J7r4IJ000J@6NCT& delta 46 zcmX@t&v>k#k^3|+FBbz4oPB#`Bll)5p)&o9{M=Oi^t=jvm(=3ylKg_rH@Lpp004b@ B5n=!U diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/extra_validations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/extra_validations.cpython-312.pyc index fc611cd184925a27d135ede512b3b63cd2e98518..1d02deed3b5aa882730c9c8e0785ee82ee2a0511 100644 GIT binary patch delta 52 zcmX>haY2InG%qg~0}%Y$baf-QA+uD2enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G;B GUmO6yIT2U@ delta 44 ycmca0aYBOoG%qg~0}z~jdu1cHA+u10enx(7s(yN2g}zH_adt_5!R9dLUmO5JwhuM{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_exceptions.cpython-312.pyc index 4115cbe9cf7c9e9682ac2a229f622a0467c9bd75..5855a7b6110c5511c275a2196d16f562d2e4492f 100644 GIT binary patch delta 52 zcmbOwwn&WoG%qg~0}%Y$baf+l7^75&enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8=Bv G<(vSrrV#W1 delta 44 ycmZ1^HcO2AG%qg~0}z~jdu1bc7^6^wenx(7s(yN2g}zH_adt_5!RBhl<(vRE%MQ{2 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_validations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/fastjsonschema_validations.cpython-312.pyc index d25a3c8e60b4d09a2f0c8d90cf411f89a7ce7b0b..809831a99ada57fe067b8682e8e6f1827ceb51cb 100644 GIT binary patch delta 66 zcmX@Lknhq$KJL@Jyj%=G@N3i6jog!&r8@O9@^e%5)AK6yT~dp)OY#f!-TfkT!(E-4 TH!!zvU}gkjrtKS;nWcIG3z!zL delta 58 zcmcb#knhw&KJL@Jyj%=GaQ5w$jog!&g&OrU@^e%5)AK6yT~dp)OY#evcQCi_U}gkj LrtLeJnWcIGXl4|q diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/formats.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/config/_validate_pyproject/__pycache__/formats.cpython-312.pyc index cbf4ba2296766369e46d37cfaa19ab728c97f1f0..84076c0548b18509ca76c41c45963aaa0eab66de 100644 GIT binary patch delta 54 zcmZ2BfpOggM()$Ryj%=G@N3i6jof#*q{{R&@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= J|K!rO1pxhF6374m delta 46 zcmZ2CfpOUcM()$Ryj%=GaQ5w$jof#*g!1$=@^e%5)AK6yT~dp)OY#dgGji+N0swJ2 B52pYC diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/__init__.cpython-312.pyc index cc2084ee7703b323d5a0ccce061ce0f3b28d7f60..17c3e4cbe9078693390e9a9957c68c2e3d88c7cc 100644 GIT binary patch delta 51 zcmdnNdVrPtG%qg~0}%Y$baf;5DMqOz{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Q0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/environment.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/environment.cpython-312.pyc index e02cfd02ae8642b925d51d9638e2407ae27a717a..1c7fea6f798e65e1704dfae243149489f90a6e7a 100644 GIT binary patch delta 52 zcmaDT{Zg9yG%qg~0}%Y$baf;58YZb!{fzwFRQ>e43VoN<;_Qe43VoN<;_QG%qg~0}%Y$baf-Q8mm;2enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`IMZ GZ)O16=@Ik* delta 44 ycmX?Dv9p5vG%qg~0}z~jdu1cH8mmy0enx(7s(yN2g}zH_adt_5!DesPZ)N~ljt|lR diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/mod_with_constant.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/mod_with_constant.cpython-312.pyc index c3a0374aeb000e7718fdfa42da4f234aece7bef2..5173d5194c868dd1ed352ee3cb71c4cdc21e3112 100644 GIT binary patch delta 49 zcmcb|_>7VJG%qg~0}%Y$baf)Phg7zHMt*LpetKSozDsIxc1eDLzPn$9Zn&${#MDXv DlUER) delta 41 vcmaFHc#o0$G%qg~0}z~jdu1ZGhfuP9Mt*LpetKSozDsIxc1eE0#N0{%8zT;U diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/namespaces.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/namespaces.cpython-312.pyc index 9fc013eea2c4294f92a4b13e49c36128971e4f6e..80767149533534e1301faa2014305de8978d4aef 100644 GIT binary patch delta 52 zcmeyO@JE6BG%qg~0}%Y$baf+lGNV+Aenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8+=o GFMI&ln-T;7 delta 44 ycmeyP@I`_9G%qg~0}z~jdu1bcGNVw8enx(7s(yN2g}zH_adt_5!R8LeFMI%3I1l0g diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/script-with-bom.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/script-with-bom.cpython-312.pyc index 93035ca4b729b53fc2bc767693f13deb1d366ba6..e945e1354e9a3dc662c7593ac4752e7e668568dd 100644 GIT binary patch delta 49 zcmcb?_<)i7G%qg~0}%Y$baf)Pi&Un5Mt*LpetKSozDsIxc1eDLzPn$9Zn&${#Kdv{ DkXI0f delta 41 vcmaFBc!QDqG%qg~0}z~jdu1ZGi%_C|Mt*LpetKSozDsIxc1eE0#LRL47_$y! diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_archive_util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_archive_util.cpython-312.pyc index 7f59a71909fcc09e1f79c28b8f34dcb06bdeaba1..4140f4ddbc10344833412543deb1d349059b0f9e 100644 GIT binary patch delta 52 zcmcb^_k@r8G%qg~0}%Y$baf-QGK*BUenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`E-2 G8D;>!4G>xY delta 44 ycmaFDcZZMrG%qg~0}z~jdu1cHGK)~Menx(7s(yN2g}zH_adt_5!DbH@8D;=L`VKe% diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_bdist_deprecations.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_bdist_deprecations.cpython-312.pyc index 02e27d65bdf574fced200aaf128a23aa7c41089f..351ed4ea435c6e718070ea50badfefbdfdd575ab 100644 GIT binary patch delta 52 zcmZ3*vx$fMG%qg~0}%Y$baf;5duFLZ{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_QJi=m delta 44 ycmX@Ba8!Z&G%qg~0}z~jdu1c{Q6`}T{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_Q~fd&9^oe$Um diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_build_meta.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_build_meta.cpython-312.pyc index 2db38b493255fe95038437efd357c90d43b93b24..82bd42570d0c911e3e63f75c07e28827702f2b48 100644 GIT binary patch delta 54 zcmZ2@iD~5}ChpU`yj%=G@N3i6joe>Yq%!q0@^e%5)AK6yT~dp)OY#f!-TfkT!(E*= J3$h9<0RR)L5~ctE delta 46 zcmZ2^iD}^_ChpU`yj%=GaQ5w$joe>Ygc9{L@^e%5)AK6yT~dp)OY#dgOR@?q0RV?- B5QG2# diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_build_py.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_build_py.cpython-312.pyc index 5fdef085fa6f48aa238c96b502bed19900d324ba..679ecf35908cc848567fb22b6f64bdae15aed5c2 100644 GIT binary patch delta 54 zcmeywCkz0>NDqTM#KQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb IH;bVi0Ok=9YXATM delta 46 zcmZo^W&G2^$bFiZmx}=i&c3~}kz0>NC|*A!KQ~oBJ+DIFCAB!aB)?#DFpHrb0Abk= ANdN!< diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_config_discovery.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_config_discovery.cpython-312.pyc index 7cf2825addafff4bdd5b2af70095912a1c3bdca5..1b90d7579b69a47132fddfd96cd17273db838e13 100644 GIT binary patch delta 54 zcmZ4eo^kVgM()$Ryj%=G@N3i6jofi8Qu+EB`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b It62<+0TGQ7x&QzG delta 46 zcmdn|o^kbiM()$Ryj%=GaQ5w$jofi8Lh1S$`MIh3>3J3UE~&-YCHV!Ln^_Es0f%c4 Am;e9( diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_core_metadata.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_core_metadata.cpython-312.pyc index 747a06f39881d9e6d0fdb8e99a9555e6d77f883f..72e87d3a5fd919305b0ac5cdefaacb8985b306da 100644 GIT binary patch delta 54 zcmeyfg|THTBll@uUM>b8__gWkMs5pssT}=`{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z Iq3r6x0Q=<;^#A|> delta 46 zcmZqK%J^psBll@uUM>b8IQ#a>Ms5psp%nd${M=Oi^t=jvm(=3ylKg_rvFz%>0CXJ> A(*OVf diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_depends.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_depends.cpython-312.pyc index 3c002ef27ece63a901cdf1d000ca3045fbde0906..8738546c7530c431c10bb16b186cef92a7df8baf 100644 GIT binary patch delta 52 zcmZ3;zLK5$G%qg~0}%Y$baf*)Gm})Benx(7s(yN2g}zH_adt_5fxf$6gl@R2(`E&x GMn(Xh^bha= delta 44 ycmZ3e43VoN<;_Qe43VoN<;_QdvVenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@sT G28saW=Mm5V delta 44 ycmcZ|dO4K)G%qg~0}z~jdu1bc8>djTenx(7s(yN2g}zH_adt_5!RFPR28sY+^bf88 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_dist_info.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_dist_info.cpython-312.pyc index 1d80a427ea9d47375ce7d05ca30becfa0e2062b9..648f8ebd115275c2516b73308cbfd015d16cb048 100644 GIT binary patch delta 52 zcmca(^TdYxG%qg~0}%Y$baf;5d={w;{fzwFRQ>e43VoN<;_Qe43VoN<;_Q3J3UE~&-YCHV#V?tT%v;jT`b JYuUnX0ss)T6G8w0 delta 46 zcmcb;pZW5BX71Cxyj%=GaQ5w$job-rLh1S$`MIh3>3J3UE~&-YCHV!LTiL>H0sw~7 B5g-5n diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_egg_info.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_egg_info.cpython-312.pyc index 77d471c8e5fcd304b8fe2ce188a4698e9f08371e..3a50568e3ee5cea18ce18eee0523b6bfe5c29e43 100644 GIT binary patch delta 54 zcmeDG!8H8`6ZdIeUM>b8__gWkMs8~+sdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z J5lq{60ssW}6A=Ia delta 46 zcmbRKgQ@=q6ZdIeUM>b8IQ#a>Ms8~+p?Lj_{M=Oi^t=jvm(=3ylKg_r2~68}0swto B5bpp0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_extern.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_extern.cpython-312.pyc index 80683fe7215f467ef06fb8ffca48e4dde8fc1c64..c7772f3ad86247c50f078d1142b312c782b703f2 100644 GIT binary patch delta 52 zcmX@Zc7=`mG%qg~0}%Y$baf-Q4x?16enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`HXb GW+ni%iVzk6 delta 44 ycmcb@c7~1nG%qg~0}z~jdu1cH4x>=4enx(7s(yN2g}zH_adt_5!RA0lW+nhQ_YL#_ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_find_packages.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_find_packages.cpython-312.pyc index b90484534f1ea90cf17e648e7a690f4a08740f23..177cd11529f679db3c2dde8cc1fae4d527bc5366 100644 GIT binary patch delta 52 zcmbOgzbKyjG%qg~0}%Y$baf;58z!k7{fzwFRQ>e43VoN<;_Qe43VoN<;_QO delta 44 ycmey!`I3|SG%qg~0}z~jdu1cHC9_bpenx(7s(yN2g}zH_adt_5!R9#T$&3I-U=H5^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_install_scripts.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_install_scripts.cpython-312.pyc index 5582dec0165ecfc8e25b745438c0246ce14084f4..9bdab44641a7f0c37dd0c3d79df63cc686fafcd7 100644 GIT binary patch delta 52 zcmX?XaN2h+ Gn}h(*ArZI$ delta 44 ycmX?YaM*zRG%qg~0}z~jdu1bc39C?=enx(7s(yN2g}zH_adt_5!RDE)n}h&P)(@5d diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_logging.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_logging.cpython-312.pyc index 9b7dbfa6b94cf642707644344e62ece12c99ab2a..73d6a0e52f1a7077b9b4e8dcf9bd2bb655aca18b 100644 GIT binary patch delta 52 zcmew&@kfIDG%qg~0}%Y$baf*)GpkgZenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`E(M G5Ox5@!Vs4L delta 44 ycmew(@kN6BG%qg~0}z~jdu1axGpkUXenx(7s(yN2g}zH_adt_5!DbEC5Ox4auMTwp diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_manifest.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_manifest.cpython-312.pyc index a774f7a0f08cee1a091d518b14313d939fdde4b9..86a7d5236d01d69fe2c735b1527bd72b774c98d0 100644 GIT binary patch delta 54 zcmeCV$T;O9Bll@uUM>b8__gWkM(zq0sdW8}{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z JQ(3+z0|5OO6C(fs delta 46 zcmbPok+J6@Bll@uUM>b8IQ#a>M(zq0p?Lj_{M=Oi^t=jvm(=3ylKg_rb6LJ80|0hJ B5di=I diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_namespaces.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_namespaces.cpython-312.pyc index d103e2fef23c563a31c4918ec7aa17c166759f51..6087e76f7c26f1503a76c871ef54e5db437776dd 100644 GIT binary patch delta 52 zcmdn4yG%qg~0}%Y$baf;5RYs{){fzwFRQ>e43VoN<;_Qmwoi=vG%qg~0}z~jdu1c{RYsv${fzwFRQ>e43VoN<;_QJOR# diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_setuptools.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_setuptools.cpython-312.pyc index c7ef7778f38ecbe326f38b6571619f413e14b966..010f34c8ec2bbebfd7de4520045893974b86556b 100644 GIT binary patch delta 54 zcmbQ<#W=rwv>(gG%qg~0}z~jdu1bcHlt9Aenx(7s(yN2g}zH_adt_5!R85!a~T0O6Ar`x diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_virtualenv.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_virtualenv.cpython-312.pyc index 9382e556d740a45e8030b33a209e834b1857cd35..e3c94fa72a0b9acf633730c6489fec9451001f1a 100644 GIT binary patch delta 52 zcmaE+^iGNUG%qg~0}%Y$baf-Q6suIGenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`Iv4 GeI5YFm=K@< delta 44 ycmaE-^h}BSG%qg~0}z~jdu1cH6su68enx(7s(yN2g}zH_adt_5!Df3_eI5Ww^$vaj diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_warnings.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/test_warnings.cpython-312.pyc index 60226a8168f2a2064bf4144823e0bcc0dc419775..9cb2e4d49965fbf6abc3f589feab5f5f79f31056 100644 GIT binary patch delta 52 zcmdm@ut$OWG%qg~0}%Y$baf;5e-5d1{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_QKxV1`*r< delta 44 ycmZ1%v@D4GG%qg~0}z~jdu1c{EEb`3{fzwFRQ>e43VoN<;_QKv-I}f@5 diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/text.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/text.cpython-312.pyc index 17453cf1f329bf63b1a8eabde4f9f98a9098e33e..d2f7d9731d85f627d5129f7a9466921403543b7c 100644 GIT binary patch delta 51 zcmeBXnasj{nwOW00SJC=y1J2DjZrF2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|glp F2>^)a5Fh{m delta 43 xcmbQt(#^tsnwOW00SL~%y|R&8jZr8}KO;XkRX;tiLf<8|IJ+djV6r#k2>=uh4gLTC diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/textwrap.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/__pycache__/textwrap.cpython-312.pyc index 587a54a6c3b9684c0745fcef2cc398d53f075e0a..8d9a24ce51564218ef719c9e938a024042d9f990 100644 GIT binary patch delta 49 zcmdnayq}r-G%qg~0}%Y$baf*49jPS!jQreG{q(#FeV5eY?2`NfeRsbI-Edc@i9h!N E0GG!RxBvhE delta 42 wcmdnbyq%f*G%qg~0}z~jdu1Z`9ib@wjQreG{q(#FeV5eY?2`O~$&8Hq04Z$_nE(I) diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/compat/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/compat/__pycache__/__init__.cpython-312.pyc index 91b88b6f602ecf3854b63a873dfc495edd93fb76..46629c3b98e054fbb196a24d05f340c5659af18a 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}%Y$baf)Pu~ephMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DF3I Dh2ao0 delta 41 vcmX@bc!-hvG%qg~0}z~jdu1ZGu~4FZMt*LpetKSozDsIxc1eE0#E2pQ5G4)~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/compat/__pycache__/py39.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/compat/__pycache__/py39.cpython-312.pyc index 63e46fe392cbd9b962c8bc962884b87f1bdd69b6..24de6fd7b06eac2ca1e0f04b39b1d87145581dc8 100644 GIT binary patch delta 49 zcmaFK^pT1CG%qg~0}%Y$baf*4F{xDjjQreG{q(#FeV5eY?2`NfeRsbI-Edc@iI3X= Dr*aXw delta 41 vcmey!^pc7DG%qg~0}z~jdu1Z`F`-!fjQreG{q(#FeV5eY?2`O~iLcuLD!vbw diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/__pycache__/__init__.cpython-312.pyc index b15e0d5f1fba5aa75f14e3a042cd65a01fbf1fe2..a6e3fc00e0c6e7c1618e38b4e81bb0c7f23c9ee0 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}%Y$baf)Pu~ephMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DF3I Dh2ao0 delta 41 vcmX@bc!-hvG%qg~0}z~jdu1ZGu~4FZMt*LpetKSozDsIxc1eE0#E2pQ5G4)~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/__pycache__/test_apply_pyprojecttoml.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/__pycache__/test_apply_pyprojecttoml.cpython-312.pyc index 675c3bb62c75aaa76f528b8efd794a9be41e3477..f33997c495dd18c2e22a138a2fcdd9f58be567ab 100644 GIT binary patch delta 54 zcmdnEi)rUBChpU`yj%=G@N3i6joi8HQkD7{`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JyV#dc1povA6D0ru delta 46 zcmdnFi)rI7ChpU`yj%=GaQ5w$joi8HLWTMn`MIh3>3J3UE~&-YCHV!LC$TS|3IKcG B5d#1K diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/__pycache__/test_expand.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/__pycache__/test_expand.cpython-312.pyc index 61fb2faeff23cd588fedbcf222b858ca758df6c0..f5f83bdc4fa600fb7583eadf2b8a6f9b444559a4 100644 GIT binary patch delta 52 zcmdlGy(60YG%qg~0}%Y$baf;51!k!n{fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_QG%qg~0}%Y$baf;5RA#9L{fzwFRQ>e43VoN<;_Qe43VoN<;_Q3J3UE~&-YCHV#V?tT%v;jT`b JU6>=60|5ER5?BBL delta 46 zcmZ2_m1*u(ChpU`yj%=GaQ5w$joj+YLTUOL`MIh3>3J3UE~&-YCHV!LeV8Mc0|0aF B5He43VoN<;_Qe43VoN<;_Q>kgFw diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/downloads/__pycache__/preload.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/config/downloads/__pycache__/preload.cpython-312.pyc index 93d02c28b1d58b8e33255661ebb6da393b5f441b..bc029ae600e759a5f9011376a8e8a20fcab59b06 100644 GIT binary patch delta 51 zcmbQiwt$WMG%qg~0}%Y$baf-QEt6D{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8r_o FeE^he5O@Fp delta 43 xcmZ3$HiM1(G%qg~0}z~jdu1cHEt61|enx(7s(yN2g}zH_adt_5!Q>>SeE=Oo4psmF diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/integration/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/integration/__pycache__/__init__.cpython-312.pyc index ddbdafd17141cca8cb062cc28451595ff2d311ec..ecf954d2dda6c68a17ae4442de380edf002f1f3b 100644 GIT binary patch delta 49 zcmX@kc%G5_G%qg~0}%Y$baf)Pu~eRZMt*LpetKSozDsIxc1eDLzPn$9Zn&${#DH=D Dh*uCt delta 41 vcmX@lc$|^@G%qg~0}z~jdu1ZGu~3?RMt*LpetKSozDsIxc1eE0#E5bL5+e>J diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/integration/__pycache__/helpers.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/integration/__pycache__/helpers.cpython-312.pyc index 744c731798805f6b6a994994972b24eb305b3250..e1d9f8cc3035b28ff165cffadd74031e984750f5 100644 GIT binary patch delta 52 zcmZ3avPy;fG%qg~0}%Y$baf-QC5u$9enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;Ui GGrRz_brAXh delta 44 ycmZ3bvPgydG%qg~0}z~jdu1cHC5uq1enx(7s(yN2g}zH_adt_5!R9!YGrRye;ttpV diff --git a/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/integration/__pycache__/test_pbr.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/setuptools/tests/integration/__pycache__/test_pbr.cpython-312.pyc index e13ac9702ffb3c20f9046de67eb475074e460ec5..9ed31b6b81bb8433670e939005fa3474dfc73d81 100644 GIT binary patch delta 52 zcmcb}c9V_!G%qg~0}%Y$baf;5b4IB={fzwFRQ>e43VoN<;_Qe43VoN<;_Qe43VoN<;_Qe43VoN<;_QpOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%w0S90 G7AF9oSrBXh delta 44 ycmbO((J#S$nwOW00SIc}T-nIo!6X!c3pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^k%% GQy2iX=@7>N delta 44 ycmZp$`eDg^nwOW00SIc}T-nGS#3|&fpOK%Ns-K=$q3@DfoL!P%u(_PGQy2g}*$%}3 diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/exceptions.cpython-312.pyc index b89cd11744fd5387297d4c760b85ae762155b649..419c514a0cb32b26bbeb47b988f3a2a9b3172c68 100644 GIT binary patch delta 50 zcmcc3{Fs^hG%qg~0}ym>x;l~jzf_EVMt*LpetKSozDsIxc1eDLzPn$9Zn&${WEsZ& E0H;(C(*OVf delta 42 wcmaFNe4Cm3G%qg~0}#}{xiXRazfg#NMt*LpetKSozDsIxc1eE0WEIB!0510q(EtDd diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/formatter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/formatter.cpython-312.pyc index 6d0d02b3b6d84b7bac6be1f65ae80464a8966fdd..cc0fe436f6154c53b8d9a5ce775fe6265a58ce1b 100644 GIT binary patch delta 52 zcmZ4FxXO|HG%qg~0}ym>y1J43H?LH*enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`E_2 GE+GKL_z?>L delta 44 ycmZ4GxX6+FG%qg~0}#}{xw4V_H?L5zenx(7s(yN2g}zH_adt_5!Da=%E+GI)HV+8^ diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/keywords.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/keywords.cpython-312.pyc index 05254623f20a6f5db60946e3f5f86146bef88bb7..c55c16841146aafb480ef379cfa16829ea67f575 100644 GIT binary patch delta 54 zcmdni&%Cdnnfo*^FBbz4bZ)x3k=v(3DoQ^iKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Aw IW{0mm0PIr|TL1t6 delta 46 zcmdnj&%CXlnfo*^FBbz4)V{g0k=v(3C`dmeKQ~oBJ+DIFCAB!aB)?#DVTZ3h0Bi9O ASpWb4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/lexer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/lexer.cpython-312.pyc index 13eef16e8d8d521bc5e40552870ae8a8b8d2afaa..f484e1a35cc529bf60ff5e2d70e48afcd8134294 100644 GIT binary patch delta 52 zcmexk(qhVenwOW00SG!bUERp-z$_K6pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kbp GUK{|icMvfE delta 44 ycmZoM{bRy?nwOW00SIc}T-nI&z%1mipOK%Ns-K=$q3@DfoL!P%usM}kUK{{ACk`(F diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/sql.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/sql.cpython-312.pyc index 15b841b1d1e9220851a374ef8b5741fe1448435d..c39760c6110350d94f59f95a25fe7cd570316322 100644 GIT binary patch delta 54 zcmX^6gYoJQM()$Ryj%=G(7EaAM(!XMsZjll{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I`7HO!0S;Lc9{>OV delta 46 zcmccmgYoPSM()$Ryj%=GQ2XY}M(!XMAz%HB{M=Oi^t=jvm(=3ylKg_ry1J3ug;^>>KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%fT GEh_-B2M~h* delta 44 ycmaDRcu$b~G%qg~0}#}{xw4Vlg;^*-KO;XkRX;tiLf<8|IJ+djU~?vOEh_*!r4E4r diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/__pycache__/utils.cpython-312.pyc index abf874f4aca498f2bb29a6e11bf89cdd7c0bd9f3..7a2c53ef81e3022e08652f0fbebb73f861eaaa77 100644 GIT binary patch delta 52 zcmaE<{85?vG%qg~0}ym>y1J1&heaw}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%t_ G0xtl=G!Xd! delta 44 ycmeyU{8E|wG%qg~0}#}{xw4TvhegO=KO;XkRX;tiLf<8|IJ+djVDm(l1YQ71!VdQU diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/__init__.cpython-312.pyc index 1945199f011c32dfaec02d99c07a2e974e4635ea..a74cc063c90132c6ac913fc12a6fa2e77cd5a20d 100644 GIT binary patch delta 51 zcmZ3+ypEasG%qg~0}ym>y1J2@mr*KFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|fh$ F4FG=C4`=`Y delta 43 xcmZ3-yo{OqG%qg~0}#}{xw4U)mr*EEKO;XkRX;tiLf<8|IJ+djV6qWo4FC{T4Q2oU diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/filter_stack.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/filter_stack.cpython-312.pyc index c53d5517b99acb57cfe75fceacd1bf2700291e26..6d83a143ad6daf1e49bbb41b612942d45feca2fa 100644 GIT binary patch delta 52 zcmX>ict()>G%qg~0}ym>y1J3um`N&CKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$Nm G2^#>WgAgzP delta 44 ycmX>jctnudh2^#=0=?*Rc diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/grouping.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/grouping.cpython-312.pyc index 2f5a80eafb72e96b6a7ad509f736a7f697a8fd16..3106fbd9c864a3a96bde93274fa6d1d306cff929 100644 GIT binary patch delta 54 zcmbPmgmK0ZM()$Ryj%=G(7EaAM($uXsYLyZ{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I1#AnV0pX(&^#A|> delta 46 zcmbPngmJJNl0b~&m A^8f$< diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/statement_splitter.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/engine/__pycache__/statement_splitter.cpython-312.pyc index 0ee5e470e0088fe9adfd58c66dbd3f6e34d5aace..3c6f206012e790cea1d6cdff44a69210ac68edfb 100644 GIT binary patch delta 52 zcmbO%KU<#rG%qg~0}ym>y1J3ukx?pJKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%N- GDIWlusSnct delta 44 ycmbO&KUtppG%qg~0}#}{xw4Vlkx?jFKO;XkRX;tiLf<8|IJ+djU~?LyDIWkQrw!2n diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/__init__.cpython-312.pyc index 4728d2c01d78a9f9c0a82968af9aec63170c0ab7..fa8356b1b6e5d0d738424432ae00a3339789ddf3 100644 GIT binary patch delta 51 zcmeyu{)e6WG%qg~0}ym>y1J3uhFK~}KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>ug< FYyhS55RL!< delta 43 xcmeyv{)L_UG%qg~0}#}{xw4VlhFK^|KO;XkRX;tiLf<8|IJ+djU~(e!YydFA4vYW* diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/aligned_indent.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/aligned_indent.cpython-312.pyc index 8434e4408349914dc1a36b651fe13714b4c37441..5c5ad3a282ec23a88fb5f2ec9c25f8d10a8f0154 100644 GIT binary patch delta 52 zcmbPcH_wjyG%qg~0}ym>y1J2j8y1J43FsoF8enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8+@P Gf{Fm-XA#=~ delta 44 ycmezA`_Y&CG%qg~0}#}{xw4V_Fso36enx(7s(yN2g}zH_adt_5!R8mNf{FlS%@5fC diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/output.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/output.cpython-312.pyc index 9892f86810a94aaa5eaffae8f816e58bb18d1dc7..ba37dcfdd3d6f7b8a18ca170c1ed68fd62e52002 100644 GIT binary patch delta 52 zcmexr^w)^{G%qg~0}ym>y1J1&hfyj)KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%vz G8*u>7r4h&g delta 44 ycmexs^wo&_G%qg~0}#}{xw4Tvhfyd(KO;XkRX;tiLf<8|IJ+djVDm)AH{t+PQxC=f diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/reindent.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/reindent.cpython-312.pyc index 1ca06cd4c309b9ab08cd2f4c3ea997dbafb64940..97802a26983c6b8faabf7fd34d2a3acae21ffcc7 100644 GIT binary patch delta 52 zcmdl~wX2HzG%qg~0}ym>y1J430+Updenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@BK Gu2ulwA`%(^ delta 44 ycmdm0wW*5xG%qg~0}#}{xw4V_0+Udbenx(7s(yN2g}zH_adt_5!RD__u2ukGNDvqR diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/right_margin.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/right_margin.cpython-312.pyc index 00f6315d6725a849c9e290ac43be02413723a42b..56db9f18e0f112dbabbd6375c68ea7c950d97b64 100644 GIT binary patch delta 52 zcmZ1^xJr=wG%qg~0}ym>y1J2Dj!`O2KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|pwB GIy(TByAQPh delta 44 ycmZ1_xJZ!uG%qg~0}#}{xw4U4j!`I1KO;XkRX;tiLf<8|IJ+djV6!u0Iy(R(=?$|0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/tokens.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/sqlparse/filters/__pycache__/tokens.cpython-312.pyc index 964e8245d72b8ec4a94af261d30e9aef11b358c2..63d8ec8af51a37725ceeee9ed11b7f8695e47df5 100644 GIT binary patch delta 52 zcmaDU_EC)cG%qg~0}ym>y1J1&lTj)`KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%Ln GV@?3STM=6T delta 44 ycmew;_EL=dG%qg~0}#}{xw4TvlTj!_KO;XkRX;tiLf<8|IJ+djU~?biV@?1@p$}OA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/__pycache__/__init__.cpython-312.pyc index e51a0f5644e3f82ebf44cdcd1ee1722cff0226a2..2784852835d3102a34affa2a559d45f12395a6fe 100644 GIT binary patch delta 49 zcmaFI_>GbKG%qg~0}ym>x;l|NNh(4=BR@A)KRvHP-zBv;yClCr-`y`lH{8`}VtqaU DikuK+ delta 41 vcmeyy_>PhLG%qg~0}#}{xiXPENhm-+BR@A)KRvHP-zBv;yClD0VtYOS7N diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Africa/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Africa/__pycache__/__init__.cpython-312.pyc index 1ca5afd5d9f63c89d6074f11a81abe7aa3a1cbc5..f71a6e034e6d32d7d0bc87ab76a261903dde2e2e 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym>x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db$<`O delta 41 vcmX@fc#x6%G%qg~0}#}{xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2ILLA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/Argentina/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/Argentina/__pycache__/__init__.cpython-312.pyc index 7ce9b560233b38df640f16b459957a798e925196..1018bb0aefdfbafb76c5d21b6698945ced3aa1a5 100644 GIT binary patch delta 49 zcmX@Zc!iPsG%qg~0}ym>x;l~DSgKe*BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7W5 Ddg%}9 delta 41 vcmcb@c!rVtG%qg~0}#}{xiXR4SSVXRBR@A)KRvHP-zBv;yClD0Vnhu93q}p- diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/Indiana/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/Indiana/__pycache__/__init__.cpython-312.pyc index be7f0bcf0dca7fa60df24aee9e64899ac1738c58..423157054e9178acc83be1bbce862ac4c2b551cc 100644 GIT binary patch delta 49 zcmX@bc!`nwG%qg~0}ym>x;l~DSgKGzBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7uD DdF>D4 delta 41 vcmcb_c#4txG%qg~0}#}{xiXR4SSV9JBR@A)KRvHP-zBv;yClD0Vnh`H3VIFT diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/Kentucky/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/Kentucky/__pycache__/__init__.cpython-312.pyc index bd508f314577110ede0e9d1f504251763e976215..12c3c2945aba0acc27413a3c524f12be5ed2a0fd 100644 GIT binary patch delta 49 zcmX@jc$ty=G%qg~0}ym>x;l~DSgJ@rBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8(j DdTS5n delta 41 vcmcc2c$$&>G%qg~0}#}{xiXR4SSU+BBR@A)KRvHP-zBv;yClD0Vnj6n3g8Xo diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/North_Dakota/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/North_Dakota/__pycache__/__init__.cpython-312.pyc index ab35d5780a04ad519e78a4697d5678e22d67100b..b904abfb4d6ddc917a55edb1fe611556bd72c279 100644 GIT binary patch delta 49 zcmX@lc%6~^G%qg~0}ym>x;l~DSgK4vBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn96r Dd}9yx delta 41 vcmcc4c%G5_G%qg~0}#}{xiXR4SSU|FBR@A)KRvHP-zBv;yClD0VnjUv40sLn diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/America/__pycache__/__init__.cpython-312.pyc index 0655c11c983ad98a9b6f5afc52ec059760692e4b..b94f574e0d7e8bdb4ba14915ed0054c46162a19d 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}ym>x;l~DSSnLLBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7i9 Db^Q;* delta 41 vcmX@bc!-hvG%qg~0}#}{xiXR4SSV3HBR@A)KRvHP-zBv;yClD0Vnh)D2TBdV diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Antarctica/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Antarctica/__pycache__/__init__.cpython-312.pyc index d2acfb8d6994e1688ccace36590e045b6bc19335..c8a95750524e1153328c7b8ed53e10cf0a48795a 100644 GIT binary patch delta 49 zcmX@gc$Sg-G%qg~0}ym>x;l~DSSm+9BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8VX DcXtoY delta 41 vcmX@hc$AU*G%qg~0}#}{xiXR4SSUq5BR@A)KRvHP-zBv;yClD0Vnitb2z(99 diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Arctic/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Arctic/__pycache__/__init__.cpython-312.pyc index e3fc98ecb4efbd87d380a4901a75d552cd537115..bc21bbb68dd0fae33ecdcc122dfcd3d86be5983a 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym>x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db$<`O delta 41 vcmX@fc#x6%G%qg~0}#}{xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2ILLA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Asia/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Asia/__pycache__/__init__.cpython-312.pyc index 8a1ae4dfbd4e8ee2aa6f931795226b5c6dcbb608..80624d3ee1d150e9f46ea5f5596db4a236fb5e12 100644 GIT binary patch delta 49 zcmdnbc$|^@G%qg~0}ym>x;l~DSSn3FBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn99s Dbb}AJ delta 41 vcmX@kxSx^xG%qg~0}#}{xiXR4SSU_EBR@A)KRvHP-zBv;yClD0VnjXw1{e*r diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Atlantic/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Atlantic/__pycache__/__init__.cpython-312.pyc index c1030e7482506e75848925d0fa6dff40fb28d375..83b3fba78f1ef52ad8498644138cc9d1c86588f9 100644 GIT binary patch delta 49 zcmX@ic$$&>G%qg~0}ym>x;l~DSSm|DBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8tf Dc6$%T delta 41 vcmX@jc$ksx;l~DSSnjTBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7K1 DcKHv= delta 41 vcmX@Zc!ZJrG%qg~0}#}{xiXR4SSVRPBR@A)KRvHP-zBv;yClD0Vnhi52o?>< diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Brazil/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Brazil/__pycache__/__init__.cpython-312.pyc index 5e7de203b03e9c4c5ba47a75ce64ff2d39c3e3cf..b5e83742aa6e5571700fd9eeac0d2ddbb0b8689b 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym>x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db$<`O delta 41 vcmX@fc#x6%G%qg~0}#}{xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2ILLA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Canada/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Canada/__pycache__/__init__.cpython-312.pyc index 11780a945180bef0c14f1ff40b68485513e392d9..f4e907293d555d1fbf7b4bce7760d501d28e6246 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym>x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db$<`O delta 41 vcmX@fc#x6%G%qg~0}#}{xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2ILLA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Chile/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Chile/__pycache__/__init__.cpython-312.pyc index 1d0150188b0ca459d5f9f29aa8185ae0f70b9929..a94fe0eca8bb830dfb694cee867a165e912c74fd 100644 GIT binary patch delta 49 zcmX@Wc!H7pG%qg~0}ym>x;l~DSSnpVBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn6`^ Dbpa2$ delta 41 vcmX@Xcz}`nG%qg~0}#}{xiXR4SSVgUBR@A)KRvHP-zBv;yClD0VnhJ|27V2= diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Etc/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Etc/__pycache__/__init__.cpython-312.pyc index 24e0c35cc2ce4a9e88f5c0b891c0fc7defdad614..4ab86ae22ee986b75dae0df5d208954e71b2f0fd 100644 GIT binary patch delta 49 zcmdnTc#M(zG%qg~0}ym>x;l~DSSnRNBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7}M DbOjHx delta 41 vcmX@cxQ~(hG%qg~0}#}{xiXR4SSVIMBR@A)KRvHP-zBv;yClD0VniMQ1+opW diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Europe/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Europe/__pycache__/__init__.cpython-312.pyc index 4997776df942f70e8d7cc0001051036a289fd2ef..e420693f25b5a8067d4f12451f1c4d26ea98f58d 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym>x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db$<`O delta 41 vcmX@fc#x6%G%qg~0}#}{xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2ILLA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Indian/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Indian/__pycache__/__init__.cpython-312.pyc index c77dc78b7e743d58861c68258064b3246fcf8aa5..da3ffa87bcf690b9781e1aa745880dfcdd744ee4 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym>x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db$<`O delta 41 vcmX@fc#x6%G%qg~0}#}{xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2ILLA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Mexico/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Mexico/__pycache__/__init__.cpython-312.pyc index ad1ac14ef3da40c2f77f1f0a530a575f6de7a94c..4e4bcb4c726f9715668ee4cec3ca19213d095193 100644 GIT binary patch delta 49 zcmX@ec#@I(G%qg~0}ym>x;l~DSSmw5BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn87P Db$<`O delta 41 vcmX@fc#x6%G%qg~0}#}{xiXR4SSUe1BR@A)KRvHP-zBv;yClD0VniVT2ILLA diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Pacific/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/Pacific/__pycache__/__init__.cpython-312.pyc index 0cab41d77eaac44e9a56f11cc66eca02d51b10c3..b0178e6ccd02574eca070707b9ed7b3bde5e97f3 100644 GIT binary patch delta 49 zcmX@ac#4txG%qg~0}ym>x;l~DSSnLLBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7i9 Db^Q;* delta 41 vcmX@bc!-hvG%qg~0}#}{xiXR4SSV3HBR@A)KRvHP-zBv;yClD0Vnh)D2TBdV diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/US/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/US/__pycache__/__init__.cpython-312.pyc index cbeb5b30b50e4d27cc71e570716fde9bd8d221ab..fff442de5ec6cf980e75240588411d897883bc1a 100644 GIT binary patch delta 49 zcmdnXc$AU*G%qg~0}ym>x;l~DSSm$7BR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn8kc DbB7PE delta 41 vcmX@gxR;UpG%qg~0}#}{xiXR4SSUt6BR@A)KRvHP-zBv;yClD0Vni+g1xyXB diff --git a/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/tzdata/zoneinfo/__pycache__/__init__.cpython-312.pyc index b744c09ab3158244aadf04e9daf9e889559cc002..e4917fe3bf2e485eef702e1170eed26c3ac6c45b 100644 GIT binary patch delta 49 zcmdnRc!-hvG%qg~0}ym>x;l~DSSnFJBR@A)KRvHP-zBv;yClCr-`y`lH{8`}Vn7xE Dat#ln delta 41 vcmX@axQmhdG%qg~0}#}{xiXR4SSV6IBR@A)KRvHP-zBv;yClD0Vnh}I1R4#X diff --git a/gnx-react/venv/lib/python3.12/site-packages/uritemplate/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/uritemplate/__pycache__/__init__.cpython-312.pyc index db36829a1f835bf76e081bd58b8d41e1b0dee5c0..f9e2f8a6001a7a7b76d911579ee43bc3b3653fb0 100644 GIT binary patch delta 52 zcmX@bb%~4nG%qg~0}ym>y1J3ulvyfPKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>$sep;OSG%qg~0}ym>y1J43D~nWwenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`F&o GjcfqGa}e_Y delta 44 ycmX>tepsCQG%qg~0}#x7du1c{R~DfF{fzwFRQ>e43VoN<;_Qy1J2j5~EbSenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_Sz GO9cVKz!7W! delta 44 zcmcbkc14Z*G%qg~0}#x7du1c{Bu1fd{fzwFRQ>e43VoN<;_Qy1J2jKa*6fenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8;!& GUJ?Mjkr6fk delta 44 ycmZ2yw#e43VoN<;_Q3J3UE~&-YCHV#V?tT%v;jT`b J`8bvY0|5Pb5>@~J delta 46 zcmdnBopIB4M()$Ryj%=GF!Sw|jocsEg+lc+@^e%5)AK6yT~dp)OY#dgi*YOo1^|6Q B5ODwi diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/INSTALLER b/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/INSTALLER deleted file mode 100644 index a1b589e3..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/INSTALLER +++ /dev/null @@ -1 +0,0 @@ -pip diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/METADATA b/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/METADATA deleted file mode 100644 index 15116c78..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/METADATA +++ /dev/null @@ -1,154 +0,0 @@ -Metadata-Version: 2.4 -Name: urllib3 -Version: 2.5.0 -Summary: HTTP library with thread-safe connection pooling, file post, and more. -Project-URL: Changelog, https://github.com/urllib3/urllib3/blob/main/CHANGES.rst -Project-URL: Documentation, https://urllib3.readthedocs.io -Project-URL: Code, https://github.com/urllib3/urllib3 -Project-URL: Issue tracker, https://github.com/urllib3/urllib3/issues -Author-email: Andrey Petrov -Maintainer-email: Seth Michael Larson , Quentin Pradet , Illia Volochii -License-Expression: MIT -License-File: LICENSE.txt -Keywords: filepost,http,httplib,https,pooling,ssl,threadsafe,urllib -Classifier: Environment :: Web Environment -Classifier: Intended Audience :: Developers -Classifier: Operating System :: OS Independent -Classifier: Programming Language :: Python -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3 :: Only -Classifier: Programming Language :: Python :: 3.9 -Classifier: Programming Language :: Python :: 3.10 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Classifier: Programming Language :: Python :: Implementation :: CPython -Classifier: Programming Language :: Python :: Implementation :: PyPy -Classifier: Topic :: Internet :: WWW/HTTP -Classifier: Topic :: Software Development :: Libraries -Requires-Python: >=3.9 -Provides-Extra: brotli -Requires-Dist: brotli>=1.0.9; (platform_python_implementation == 'CPython') and extra == 'brotli' -Requires-Dist: brotlicffi>=0.8.0; (platform_python_implementation != 'CPython') and extra == 'brotli' -Provides-Extra: h2 -Requires-Dist: h2<5,>=4; extra == 'h2' -Provides-Extra: socks -Requires-Dist: pysocks!=1.5.7,<2.0,>=1.5.6; extra == 'socks' -Provides-Extra: zstd -Requires-Dist: zstandard>=0.18.0; extra == 'zstd' -Description-Content-Type: text/markdown - -

    - -![urllib3](https://github.com/urllib3/urllib3/raw/main/docs/_static/banner_github.svg) - -

    - -

    - PyPI Version - Python Versions - Join our Discord - Coverage Status - Build Status on GitHub - Documentation Status
    - OpenSSF Scorecard - SLSA 3 - CII Best Practices -

    - -urllib3 is a powerful, *user-friendly* HTTP client for Python. Much of the -Python ecosystem already uses urllib3 and you should too. -urllib3 brings many critical features that are missing from the Python -standard libraries: - -- Thread safety. -- Connection pooling. -- Client-side SSL/TLS verification. -- File uploads with multipart encoding. -- Helpers for retrying requests and dealing with HTTP redirects. -- Support for gzip, deflate, brotli, and zstd encoding. -- Proxy support for HTTP and SOCKS. -- 100% test coverage. - -urllib3 is powerful and easy to use: - -```python3 ->>> import urllib3 ->>> resp = urllib3.request("GET", "http://httpbin.org/robots.txt") ->>> resp.status -200 ->>> resp.data -b"User-agent: *\nDisallow: /deny\n" -``` - -## Installing - -urllib3 can be installed with [pip](https://pip.pypa.io): - -```bash -$ python -m pip install urllib3 -``` - -Alternatively, you can grab the latest source code from [GitHub](https://github.com/urllib3/urllib3): - -```bash -$ git clone https://github.com/urllib3/urllib3.git -$ cd urllib3 -$ pip install . -``` - - -## Documentation - -urllib3 has usage and reference documentation at [urllib3.readthedocs.io](https://urllib3.readthedocs.io). - - -## Community - -urllib3 has a [community Discord channel](https://discord.gg/urllib3) for asking questions and -collaborating with other contributors. Drop by and say hello 👋 - - -## Contributing - -urllib3 happily accepts contributions. Please see our -[contributing documentation](https://urllib3.readthedocs.io/en/latest/contributing.html) -for some tips on getting started. - - -## Security Disclosures - -To report a security vulnerability, please use the -[Tidelift security contact](https://tidelift.com/security). -Tidelift will coordinate the fix and disclosure with maintainers. - - -## Maintainers - -- [@sethmlarson](https://github.com/sethmlarson) (Seth M. Larson) -- [@pquentin](https://github.com/pquentin) (Quentin Pradet) -- [@illia-v](https://github.com/illia-v) (Illia Volochii) -- [@theacodes](https://github.com/theacodes) (Thea Flowers) -- [@haikuginger](https://github.com/haikuginger) (Jess Shapiro) -- [@lukasa](https://github.com/lukasa) (Cory Benfield) -- [@sigmavirus24](https://github.com/sigmavirus24) (Ian Stapleton Cordasco) -- [@shazow](https://github.com/shazow) (Andrey Petrov) - -👋 - - -## Sponsorship - -If your company benefits from this library, please consider [sponsoring its -development](https://urllib3.readthedocs.io/en/latest/sponsors.html). - - -## For Enterprise - -Professional support for urllib3 is available as part of the [Tidelift -Subscription][1]. Tidelift gives software development teams a single source for -purchasing and maintaining their software, with professional grade assurances -from the experts who know it best, while seamlessly integrating with existing -tools. - -[1]: https://tidelift.com/subscription/pkg/pypi-urllib3?utm_source=pypi-urllib3&utm_medium=referral&utm_campaign=readme diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/RECORD b/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/RECORD deleted file mode 100644 index 6315d906..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/RECORD +++ /dev/null @@ -1,79 +0,0 @@ -urllib3-2.5.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 -urllib3-2.5.0.dist-info/METADATA,sha256=maYkTIZt0a-lkEC-hMZWbCBmcGZyJcYOeRk4_nuTrNc,6461 -urllib3-2.5.0.dist-info/RECORD,, -urllib3-2.5.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87 -urllib3-2.5.0.dist-info/licenses/LICENSE.txt,sha256=Ew46ZNX91dCWp1JpRjSn2d8oRGnehuVzIQAmgEHj1oY,1093 -urllib3/__init__.py,sha256=JMo1tg1nIV1AeJ2vENC_Txfl0e5h6Gzl9DGVk1rWRbo,6979 -urllib3/__pycache__/__init__.cpython-312.pyc,, -urllib3/__pycache__/_base_connection.cpython-312.pyc,, -urllib3/__pycache__/_collections.cpython-312.pyc,, -urllib3/__pycache__/_request_methods.cpython-312.pyc,, -urllib3/__pycache__/_version.cpython-312.pyc,, -urllib3/__pycache__/connection.cpython-312.pyc,, -urllib3/__pycache__/connectionpool.cpython-312.pyc,, -urllib3/__pycache__/exceptions.cpython-312.pyc,, -urllib3/__pycache__/fields.cpython-312.pyc,, -urllib3/__pycache__/filepost.cpython-312.pyc,, -urllib3/__pycache__/poolmanager.cpython-312.pyc,, -urllib3/__pycache__/response.cpython-312.pyc,, -urllib3/_base_connection.py,sha256=T1cwH3RhzsrBh6Bz3AOGVDboRsE7veijqZPXXQTR2Rg,5568 -urllib3/_collections.py,sha256=tM7c6J1iKtWZYV_QGYb8-r7Nr1524Dehnsa0Ufh6_mU,17295 -urllib3/_request_methods.py,sha256=gCeF85SO_UU4WoPwYHIoz_tw-eM_EVOkLFp8OFsC7DA,9931 -urllib3/_version.py,sha256=ZlSUkBo_Pd90B6pM0GDO7l2vitQD3QCK3xPR_K0zFJA,511 -urllib3/connection.py,sha256=iP4pgSJtpusXyYlejzNn-gih_wWCxMU-qy6OU1kaapc,42613 -urllib3/connectionpool.py,sha256=ZEhudsa8BIubD2M0XoxBBsjxbsXwMgUScH7oQ9i-j1Y,43371 -urllib3/contrib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 -urllib3/contrib/__pycache__/__init__.cpython-312.pyc,, -urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc,, -urllib3/contrib/__pycache__/socks.cpython-312.pyc,, -urllib3/contrib/emscripten/__init__.py,sha256=u6KNgzjlFZbuAAXa_ybCR7gQ71VJESnF-IIdDA73brw,733 -urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc,, -urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc,, -urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc,, -urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc,, -urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc,, -urllib3/contrib/emscripten/connection.py,sha256=j8DR_flE7hsoFhNfiqHLiaPaCsVbzG44jgahwvsQ52A,8771 -urllib3/contrib/emscripten/emscripten_fetch_worker.js,sha256=CDfYF_9CDobtx2lGidyJ1zjDEvwNT5F-dchmVWXDh0E,3655 -urllib3/contrib/emscripten/fetch.py,sha256=kco06lWoQ-fdFfN51-nzeTywPVBEHg89WIst33H3xcg,23484 -urllib3/contrib/emscripten/request.py,sha256=mL28szy1KvE3NJhWor5jNmarp8gwplDU-7gwGZY5g0Q,566 -urllib3/contrib/emscripten/response.py,sha256=7oVPENYZHuzEGRtG40HonpH5tAIYHsGcHPbJt2Z0U-Y,9507 -urllib3/contrib/pyopenssl.py,sha256=Xp5Ym05VgXGhHa0C4wlutvHxY8SnKSS6WLb2t5Miu0s,19720 -urllib3/contrib/socks.py,sha256=-iardc61GypsJzD6W6yuRS7KVCyfowcQrl_719H7lIM,7549 -urllib3/exceptions.py,sha256=pziumHf0Vwx3z4gvUy7ou8nlM2yIYX0N3l3znEdeF5U,9938 -urllib3/fields.py,sha256=FCf7UULSkf10cuTRUWTQESzxgl1WT8e2aCy3kfyZins,10829 -urllib3/filepost.py,sha256=U8eNZ-mpKKHhrlbHEEiTxxgK16IejhEa7uz42yqA_dI,2388 -urllib3/http2/__init__.py,sha256=xzrASH7R5ANRkPJOot5lGnATOq3KKuyXzI42rcnwmqs,1741 -urllib3/http2/__pycache__/__init__.cpython-312.pyc,, -urllib3/http2/__pycache__/connection.cpython-312.pyc,, -urllib3/http2/__pycache__/probe.cpython-312.pyc,, -urllib3/http2/connection.py,sha256=4DB0DkZEC3yIkhGjUDIHB17wrYCLaL0Ag5bDW2_mGPI,12694 -urllib3/http2/probe.py,sha256=nnAkqbhAakOiF75rz7W0udZ38Eeh_uD8fjV74N73FEI,3014 -urllib3/poolmanager.py,sha256=oKsgP1EsAI4OVgK9-9D3AYXZS5HYV8yKUSog-QbJ8Ts,23866 -urllib3/py.typed,sha256=UaCuPFa3H8UAakbt-5G8SPacldTOGvJv18pPjUJ5gDY,93 -urllib3/response.py,sha256=TVTSu6Q1U0U7hoHYMIRxxuh4zroeMo8b5EI4DOA13Eo,46480 -urllib3/util/__init__.py,sha256=-qeS0QceivazvBEKDNFCAI-6ACcdDOE4TMvo7SLNlAQ,1001 -urllib3/util/__pycache__/__init__.cpython-312.pyc,, -urllib3/util/__pycache__/connection.cpython-312.pyc,, -urllib3/util/__pycache__/proxy.cpython-312.pyc,, -urllib3/util/__pycache__/request.cpython-312.pyc,, -urllib3/util/__pycache__/response.cpython-312.pyc,, -urllib3/util/__pycache__/retry.cpython-312.pyc,, -urllib3/util/__pycache__/ssl_.cpython-312.pyc,, -urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc,, -urllib3/util/__pycache__/ssltransport.cpython-312.pyc,, -urllib3/util/__pycache__/timeout.cpython-312.pyc,, -urllib3/util/__pycache__/url.cpython-312.pyc,, -urllib3/util/__pycache__/util.cpython-312.pyc,, -urllib3/util/__pycache__/wait.cpython-312.pyc,, -urllib3/util/connection.py,sha256=JjO722lzHlzLXPTkr9ZWBdhseXnMVjMSb1DJLVrXSnQ,4444 -urllib3/util/proxy.py,sha256=seP8-Q5B6bB0dMtwPj-YcZZQ30vHuLqRu-tI0JZ2fzs,1148 -urllib3/util/request.py,sha256=XuAsEBT58DAZYUTwpMH5Hr3A1OPoMNvNIYIunbIqbc8,8411 -urllib3/util/response.py,sha256=vQE639uoEhj1vpjEdxu5lNIhJCSUZkd7pqllUI0BZOA,3374 -urllib3/util/retry.py,sha256=bj-2YUqblxLlv8THg5fxww-DM54XCbjgZXIQ71XioCY,18459 -urllib3/util/ssl_.py,sha256=jxnQ3msYkVaokJVWqHNnAVdVtDdidrTHDeyk50gwqaQ,19786 -urllib3/util/ssl_match_hostname.py,sha256=Di7DU7zokoltapT_F0Sj21ffYxwaS_cE5apOtwueeyA,5845 -urllib3/util/ssltransport.py,sha256=Ez4O8pR_vT8dan_FvqBYS6dgDfBXEMfVfrzcdUoWfi4,8847 -urllib3/util/timeout.py,sha256=4eT1FVeZZU7h7mYD1Jq2OXNe4fxekdNvhoWUkZusRpA,10346 -urllib3/util/url.py,sha256=WRh-TMYXosmgp8m8lT4H5spoHw5yUjlcMCfU53AkoAs,15205 -urllib3/util/util.py,sha256=j3lbZK1jPyiwD34T8IgJzdWEZVT-4E-0vYIJi9UjeNA,1146 -urllib3/util/wait.py,sha256=_ph8IrUR3sqPqi0OopQgJUlH4wzkGeM5CiyA7XGGtmI,4423 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/WHEEL b/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/WHEEL deleted file mode 100644 index 12228d41..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/WHEEL +++ /dev/null @@ -1,4 +0,0 @@ -Wheel-Version: 1.0 -Generator: hatchling 1.27.0 -Root-Is-Purelib: true -Tag: py3-none-any diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/licenses/LICENSE.txt b/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/licenses/LICENSE.txt deleted file mode 100644 index e6183d02..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3-2.5.0.dist-info/licenses/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2008-2020 Andrey Petrov and contributors. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__init__.py deleted file mode 100644 index 3fe782c8..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__init__.py +++ /dev/null @@ -1,211 +0,0 @@ -""" -Python HTTP library with thread-safe connection pooling, file post support, user friendly, and more -""" - -from __future__ import annotations - -# Set default logging handler to avoid "No handler found" warnings. -import logging -import sys -import typing -import warnings -from logging import NullHandler - -from . import exceptions -from ._base_connection import _TYPE_BODY -from ._collections import HTTPHeaderDict -from ._version import __version__ -from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, connection_from_url -from .filepost import _TYPE_FIELDS, encode_multipart_formdata -from .poolmanager import PoolManager, ProxyManager, proxy_from_url -from .response import BaseHTTPResponse, HTTPResponse -from .util.request import make_headers -from .util.retry import Retry -from .util.timeout import Timeout - -# Ensure that Python is compiled with OpenSSL 1.1.1+ -# If the 'ssl' module isn't available at all that's -# fine, we only care if the module is available. -try: - import ssl -except ImportError: - pass -else: - if not ssl.OPENSSL_VERSION.startswith("OpenSSL "): # Defensive: - warnings.warn( - "urllib3 v2 only supports OpenSSL 1.1.1+, currently " - f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. " - "See: https://github.com/urllib3/urllib3/issues/3020", - exceptions.NotOpenSSLWarning, - ) - elif ssl.OPENSSL_VERSION_INFO < (1, 1, 1): # Defensive: - raise ImportError( - "urllib3 v2 only supports OpenSSL 1.1.1+, currently " - f"the 'ssl' module is compiled with {ssl.OPENSSL_VERSION!r}. " - "See: https://github.com/urllib3/urllib3/issues/2168" - ) - -__author__ = "Andrey Petrov (andrey.petrov@shazow.net)" -__license__ = "MIT" -__version__ = __version__ - -__all__ = ( - "HTTPConnectionPool", - "HTTPHeaderDict", - "HTTPSConnectionPool", - "PoolManager", - "ProxyManager", - "HTTPResponse", - "Retry", - "Timeout", - "add_stderr_logger", - "connection_from_url", - "disable_warnings", - "encode_multipart_formdata", - "make_headers", - "proxy_from_url", - "request", - "BaseHTTPResponse", -) - -logging.getLogger(__name__).addHandler(NullHandler()) - - -def add_stderr_logger( - level: int = logging.DEBUG, -) -> logging.StreamHandler[typing.TextIO]: - """ - Helper for quickly adding a StreamHandler to the logger. Useful for - debugging. - - Returns the handler after adding it. - """ - # This method needs to be in this __init__.py to get the __name__ correct - # even if urllib3 is vendored within another package. - logger = logging.getLogger(__name__) - handler = logging.StreamHandler() - handler.setFormatter(logging.Formatter("%(asctime)s %(levelname)s %(message)s")) - logger.addHandler(handler) - logger.setLevel(level) - logger.debug("Added a stderr logging handler to logger: %s", __name__) - return handler - - -# ... Clean up. -del NullHandler - - -# All warning filters *must* be appended unless you're really certain that they -# shouldn't be: otherwise, it's very hard for users to use most Python -# mechanisms to silence them. -# SecurityWarning's always go off by default. -warnings.simplefilter("always", exceptions.SecurityWarning, append=True) -# InsecurePlatformWarning's don't vary between requests, so we keep it default. -warnings.simplefilter("default", exceptions.InsecurePlatformWarning, append=True) - - -def disable_warnings(category: type[Warning] = exceptions.HTTPWarning) -> None: - """ - Helper for quickly disabling all urllib3 warnings. - """ - warnings.simplefilter("ignore", category) - - -_DEFAULT_POOL = PoolManager() - - -def request( - method: str, - url: str, - *, - body: _TYPE_BODY | None = None, - fields: _TYPE_FIELDS | None = None, - headers: typing.Mapping[str, str] | None = None, - preload_content: bool | None = True, - decode_content: bool | None = True, - redirect: bool | None = True, - retries: Retry | bool | int | None = None, - timeout: Timeout | float | int | None = 3, - json: typing.Any | None = None, -) -> BaseHTTPResponse: - """ - A convenience, top-level request method. It uses a module-global ``PoolManager`` instance. - Therefore, its side effects could be shared across dependencies relying on it. - To avoid side effects create a new ``PoolManager`` instance and use it instead. - The method does not accept low-level ``**urlopen_kw`` keyword arguments. - - :param method: - HTTP request method (such as GET, POST, PUT, etc.) - - :param url: - The URL to perform the request on. - - :param body: - Data to send in the request body, either :class:`str`, :class:`bytes`, - an iterable of :class:`str`/:class:`bytes`, or a file-like object. - - :param fields: - Data to encode and send in the request body. - - :param headers: - Dictionary of custom headers to send, such as User-Agent, - If-None-Match, etc. - - :param bool preload_content: - If True, the response's body will be preloaded into memory. - - :param bool decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param redirect: - If True, automatically handle redirects (status codes 301, 302, - 303, 307, 308). Each redirect counts as a retry. Disabling retries - will disable redirect, too. - - :param retries: - Configure the number of retries to allow before raising a - :class:`~urllib3.exceptions.MaxRetryError` exception. - - If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a - :class:`~urllib3.util.retry.Retry` object for fine-grained control - over different types of retries. - Pass an integer number to retry connection errors that many times, - but no other types of errors. Pass zero to never retry. - - If ``False``, then retries are disabled and any exception is raised - immediately. Also, instead of raising a MaxRetryError on redirects, - the redirect response will be returned. - - :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. - - :param timeout: - If specified, overrides the default timeout for this one - request. It may be a float (in seconds) or an instance of - :class:`urllib3.util.Timeout`. - - :param json: - Data to encode and send as JSON with UTF-encoded in the request body. - The ``"Content-Type"`` header will be set to ``"application/json"`` - unless specified otherwise. - """ - - return _DEFAULT_POOL.request( - method, - url, - body=body, - fields=fields, - headers=headers, - preload_content=preload_content, - decode_content=decode_content, - redirect=redirect, - retries=retries, - timeout=timeout, - json=json, - ) - - -if sys.platform == "emscripten": - from .contrib.emscripten import inject_into_urllib3 # noqa: 401 - - inject_into_urllib3() diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index f468648c798b6ff1dbc7051afee980923f6f0a98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7303 zcmbVQ+ix3JdOt%_6z{rOmgMV^uc9MSz9bt*>%G{PY%8!OttGb!(|{Ur4kb!69PZ4} zGF7Eeibb;p3e-g(QlMENMPIt`{t+#(*j=D6;l_culNw1|^dT<=Q||&rp8EUF%#e~2 zZ;Mj)nR8~&`ObI!ecw6%oK7bge%b$gx_0v@WB*Qr;3vN@rab>~n6dYn#_~*4w2-bC zp?pZ8epnCZ!}1x)N940B-zA^Xd=$@!9yYr3-I&{@MfI2w&&OrITTd9td{Xvfddf)W z)3P7eGe%FoNA?qXuhEz9Gy3!W#z1~RzDw$djKTb%aX5cij#K)OF`OSZM)D)Zk^B+) zF0CImj^&RT$MeVKIHR91PUcU_evi(L(fp|F_v)vN)A`d1i+hrs$)6Et)?W{V?>yJ< zb^1Y1>wBVjeS18_M09;F_|kc5{ohRQZ$sL^Pr@R;zR;N)^qz#gp28|;vHE`SzVp-$ zZD5Xd7`tBhJv$8kBph(~r;2ts|B^P89~aQAHk_Zp+VJ`xb!Y}XF&V5`SA%z*CsuVo z@rS`Yg($6b<^;Wx5{F))*)!V6kGk@g-|CiHDh1y=PwfaavDO&}J?-evjy-|j(NAG7 zTzwp?*S%SL+x@FCN8kI^>z5Smtabw2y$b5Xfn@osT3G%a)#xv*oy33sLEMw)|JrKj zw9y|$^RJ1>y7Tp&wNo2ouwe#Kaa#YjaV>vMN_Z{cL1Fc9J$xD#KEtfA!ro+m@o$^# zQTR=^sbtS@iNr$PSu-pA&eGBX*UKxGYSsB>*;(Vxnk7_i!d6Ry7tKmV6rD0AR!vhc zS60V)sjLf(Y=_&mYSpxyabB~9#Y4bu{dFNp7~;wIHf#dK7nW6#le zuBPjEFijWM7Ze0|mk^JNqAI7*sIc_r!c5`D{Pdd`Wr)i=;7VB2<)T9r3WbNlvO%y= z$cEj1nsBqt>;iao2k716!IvG03MI=l3N=g5hTN35-L2V~yVHyAh^Q1zO%#lp?v$&l z0T-u!mK%4vH7Z~EH2*VTMxi2Om&4nyv)stUJndl^I*!Q9R6M! z=f#?3iHd_M&YIxoZCgJNi)b}iu581qMioZXJbQ1wlH-d)Oz}0xsoGPMldJH8+DZ;|pk|Po!)V+-RnrQ#1E;YHy15E_St)wo ztCekaMHhul)vCayZ7V}-4pGxb6S^(&Lx|~E{TLN}kVcm=k{E!ZJRio}_nFiFw(f(j zoaHx8Bp3xy_l~k>MKt)@c?QAzPG~!{9`C#ldV5y;i8c5_PfZE-37!huR@T#d=Xm|? z(7qX@!2`c-wr>Wh<-ku1?UApYa<)T@EF0eXvjoTQj?k+F45r0@SSuGd;Epf}G|pAN z=m2F59|O2!N=Nmql;aO*P}0%FN^Nx&>v9P>Mu^m`iY=F{c__lwl7p>$@?|F{ zCvKfRJEq#eFGFN)es)Y34~1S){gEMT8&RCKx5lq)8p1*4p0{w~gV+p+gFTP6DSp<@ z#@%jzf*W5I&RywRZmdus%7ucP-Y1)zvW0UC_@O%B(2aMx32^Hxz>Q(jUE3MLg!wDE zOP43@vLhy{YHN*bqH$V!{t=wpNwSxRM zhs+TRKEcjqqpAy}N7xzs$BL>WR!ysJ6H0Ik>6%$1L9>C5O^^c($5>Z-H!{+QjQq{m zhj%`SOjucb_<{`m)3_U1F}1oIEtQ3?*>D3dRk%G>OX#Mm6_C*!V7;5sgv?sOIA#g0 zY$1CSo;gU)SWJjtW|yHI~+dB>)v5U3P44mo>pfsRY3()75m1uLzDb z0(Ee;XqmRnH9?*QcAyk+q1VaYsBr?^STec#&@5{Qh#|Bb0q!bd^MyRg;s;WImgE!G zYP0DJ$~6<)q96i0RPq2@HhqmOFJHI-pEJQ;VPg}bZixD(X@PNTwPwJ|whw_*C`(ks zCpab5ED;x_#sRhRF}qe=+F3k}Vu@DT&@=R~Zzavd?x-?=*i%Jawe6{8WZUKO_GqQ<2zz0q~>(zbIgfC)zKOsLD z_fSH4ilUT?Y4BOB*^X&&e^#K6anx;|MUdyLiR-JdYe&@C(!`uu5fk@Rr?}=BX`hW& zP=4|QvESK$w#1jL8bukbXZc0vd7G2YQSJfK5Dflm#6!6P8yNz{dVRlOa+m#p@(r6v zf|S<`crhq>3*_E%!xdD&8U+@(Y1{I=4^R_Q+lajLzJm615TMsLY^&CwRh%Y@s*aMv z%Zm`!LpvJ|kE2G7f?q?NUAcH^9L?p9hOb<_LT_HB=4v*_XH-}tSWb|EFr#=;@e;Lo zj!(;akubss(zYy80e(5zCP5Hq9u!6ba7UJ#W~EeKtyw}Ut5P#o5DV}ae*;n`gfll` zE`m00sbyOxrS{f=+y9B5qjH_|Q|_Mn=svMNV_BxP%-dglrU)tED9g*_XaJcpKf`7{ z50O&yE1Z&r4QCYsQzgCJ^vtd65AH54FX#9I!j`KqW~b(q^_(P?lWUj#NR;JZsSFQa zg-{jv2l<0#>TOacPIg=?1H$PH!<~8+X6)$3gHw{hV*${B1c>UM`)Y*lJP|-RIK86w zH!Z3dRfijD1?M6uTzk)zngc}Uro^Q7j@~L?)-7S7N;QH0#Gfab7nyB+-cofN3YF1U zY1KLI*OkuF%@dlnn#Uj9jC``L64>iOhzShg2ff5V!*0XJ!hs zz=`dSvwJw;g$BNRr_eSMKnhgS0x3#vK1GrTd{4Duw(VkHv*|dOB9BYZm4*l?dHKn& zH#&X~x3jCFSOx-XSOra5$k$#e?|Y#%4T==$D9#$x121js#!o-8STNK&!5PpVg^JwRJ^`8Kj)pMA1vMS zfK8&SjP4*~5+rtJwM)rQ+fMYS5TCpSWOrF04^-d&)>C<(A%UN_3AG-42@VXgE%-UmG`A!kIkWR`W922R+)9)Czx9XS zt-#yXG*OEXMrMbt?@7`qIIQoZXWgQPbhXvjxvApYoMub)Z4Kl@^@qyUtrq?OF(RCP*E(GOO4vx?MeV#?95jWFWLKlzToe#O2 zcZCz9OGvtdwCLO-?{C~BO$4^n#oV4tA$g;Nvyg{;QYv{-84Z200p$tVzMs>4hT2MIdI1%vzw}u$N3@8Yo`r{<<32IIe%U#nmHy+&f zPVRITc6$~DZvV6~TZuj;@o6N}im_DB zZt_GUd15!2Z6ve*aN%k4m1b=4$FaXm|9QFQ17W z8Q4iSGb206R-`W(+UahcV@m%{_b%&eu)fD*AG4#o>|BGL`@28>`*)tQSHOP%$ot3t z>Ub;MrwlZc8TtIYEBm|)!KeQ56(+X4P^LVP&MIEr2Jl2ZKZi1zGD=E7vmYHa!WjDhP zkG6Vbx0em_R-f$lvz{ZZ0ogsoGUr=^vWwfJ3#}p99VWVR)7B9dJ^cKreETrOBHiy@ zd-vMoYrhVkd=`22Un4`GL`GWOEW-c0RqSH1f&XHP68}vkM(z~<%BEY{f67H}y~cj= NTGwqQ{7a^w{U2Ma>^J}b diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc deleted file mode 100644 index ae4cf23ddbe1516b1239eb2fe8aa239b29aa1f8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6841 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 F{Ri(WWnBOO diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc deleted file mode 100644 index da95ddc19f9685272eafd467e5eb7f9535b663f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22562 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 AkN^Mx diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc deleted file mode 100644 index 537242fe0b9cdce112952ffd611b01a7e3b52be4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 639 zcmYL`zi-n(6vyv!j_v#~P1S%%6{#Iy@DLv~>Q=Fo0Hq`pnjqoDO5e$x#5;aUg zFt9QKTf_u^3ripj!4gs=rYxvZw=VFUHsy5s-sj$X_ujj^ubP%bF!Vn^T7NM@zoX4! zNEdMW2H-uap(e7?Cu|}co0wsqvtu@KVjW@Shuz`VpaT3p z3JyU|2*&tCMR*r~Pd*$d)6CU@_LF3ONqLylZ0^I&AsOxu)sOUZakOfD%hFfnX?Ar` uo+i?-(-SQ-Mw!XV`WUTGmhxkipI%=Zp|wHkZF6#?FhVew-<5e5O8o=JEv`iX diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc deleted file mode 100644 index 333046191525b9e6142ad10455a0eddb8f8623c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38406 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc deleted file mode 100644 index a473d1abf22eba7860a896fd93691ad50076d0f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16604 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc deleted file mode 100644 index 0853dec7504c576a8ea0356f8b5d67339c05938f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12015 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc deleted file mode 100644 index 58736d91f617d8f5fbedd569837d3f394fb57168..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3482 zcma)8-ESMm5#KxBk;e~-lBf^MvYm_Vx~3(PwPYu;YP+y48Id9@AN~N!)SynhrF8P~ zj@?_@p+FaM5i}AMR4fA2GUC8SpIjIP{5KRuU;08q3M5<{KtK$%ektTAK-)ZZ_Q)e; zRVlm#clKsyXJ=<-f3tsUY6>7|(SNQ^U-2XK4f}ALSRHU%2RVf9A{D8ej6)uxF;z-K0TP?_=19HPzP* zeKLf_nY|9OIE-7cKf|+?I8ddImewDTXZ*vv=&5U|>PSY^pelVVB-_=H z>Id54M{1KFxj(g84SXynI}3a?{G6$aa&}NL43jEUGYxATzJ2El6k8+jK4<5P@^)A1 z%Fo{$PF)-s9vezsJ2!T9ICbUfdt<|P=mY%AJhtdX4eRQxn5UW8ThBePD9tpxjl~6+ z+?D}@yNK4jhR_V}iZm##MGDqnYFztPMa$JBidrdeE)u8+RWm_l<`qw2wOL( znPcM^!AhDYZertRLf0k}xdNRwje+>_{)DAb9Lp)`8_E>65_zJ-{6He3={RRvG@dKi z;T`so2yDdi)H(v)9QsZ|q4u?4PbJuM|NMi|d!rA@=i@8E-nC$VCD^|bJW&=-kX8^) z*8>6{%>9R0u>J~zcM$hdz>0|0LpCFTz>fB~HcMKIXvVi=5+E2LnAud-f~d##R`uEvh!AB`$F^AIu=@rXPTJU_Ha44bCQ|0)3ne2r zK>vo+Xh%|8>B#*f590UYtG?)Zr2Fpa-<|&K?1Hor>7JK1TD!kRf;ccQJ`Hx1@cmz` z29K?`buGU0tnI*B+p$X9u}8z@w*Hk+{|i5e{l{Wg_1EWKJNG)5t|thv7~8q|L%`jB z^XrMg7rD6rWk+yYozFFJpokvV5)_i<&yXyhBEMU5sgO>e1I~Zp*$op^kE_L{9HK#Y z-y-jFchg+-%rv=@4eHwJuH+ENH8vf|uKC|v;2?B-5PRIkOvgq&wcFVkr(XY)GMatfgdfcR`o zRj49g8o4yg5I?KX+Vva+2_;)YhCyc&w$TvW{D%Ijb{Q%~11oT$PktpFh*paT(|S$O zp>)a$!E%n6X>3_ol_v}GU?y**2Pggyn#8vOgNrOR)7@ItFn%N>Lv5F>98POsy4uJ5 zVSv}FbxL+u$hS0ImnX42g$)NK)vEjIUicroYL#e56#|3U>1O#@Y?f~d%=&bAR~WJ5 z7Q+Sj7Gg2z59|_z0N1Gn+Y~l0K93e0I_U= zMV7GZWP3D&+8&D%Tbjc3Ci8aGOW6AiYIm)q+rp%&76^Nukwa`Ilr{|tFM$*QGj>po z9mWOM?&|KTy74KNKF*fMVD$j}t$#rW0J{%`B8#WyhSq)IvajoD&QEq?KlT0Q%4d&RsS<)BzPYe^qSlOMAs0SKpDl*dg-QAbCs zQyxE@Wbf5J8D_6XyX-(JmC1tzIF%x-vXCHjwwIwr+9C|e3412lyk=I@j3otOwW?Zp zy}D`M$mhuGOh~%Sp17=7i&qUm0b6vobPi{CY(G`%^6>jthsQ4r69!{dtJ#yxNnpYf zgs``x<0Yq9e=nWRnrdFhXUR#JU`5V)0^O#Eij!8wc+oa z?_Aoyu)lO`#sAtvuHrv9=iS(I;6eCacwGp5GInRI)KRj^`v%Hg1C`bjPxNx@`HFDi zg@^Cv%cx`1i&{FDiVMYcp_|E%-x)6rl=mdckwiuK3G6HOzwmfk__@$lNZ?LxHAlFC e%{c0RW7Bhli>`P!pWE0m`?ZTE^_D<~| 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 Sdf_R@fTtH6JU_zb?Ee8ZyU7ax diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc deleted file mode 100644 index b17c55aa9d49b821ad292653525907f8abbc6128..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52706 zcmeFad3;;feJ6S^77`>u0wll{T);&n!Bx~QYNbf+66J_=V$*gghyW#0B&b|~mIza} z?0OQ)R%+5tDynhDbeb7UbvjYzrL8mVo5psWcxL*U0)kvpu=1+3?x*o6@~7W=jKS@CNe$sWz=%VBw&Mr@<@zFg)v!=KmZVE(ib%c!$2UljbA!%a#xwO=XC zm+rHS6pj}46^TLy{;~Xv`$`a=F;Y5O)>npn(tVkTQ{Gq3{8=LvqwYR8^IJzMN2~g( zMyva(M{D|OSXlPRs?plM+R?hcy3zW+`cY4xXSAWOVYIQYakQzgX|%bod9f%z!qRs3?L^;q;cvHp58U+O-%P3ud+}BHcMeZ44_DeW{DRIm zIY^14j^hFU0iXL6Mo_Y#JeRLh`SO&AIw}2Jg;po^bHI*v9rU~WhX##kyBV#k?(29^ z2&ipCAN)jVr>Et8D&HfdQT4xjrzyNL+{f>#CzT@Z_rP1I>!P5{{Ur-P}6v5Xav8R{k;#~ zx4VDWk*){vmP7IO`Mo~B)HO5^@)+Y*O5M|QXtyMdN&LH(PduCA?>;-=Kh3huj2G=1 z^G$S*h4zI)r$>g4caDvoMpKTD_~Th!{(&){pXZao((x?!2L=#p#2@k>MZxjB{eefl zBSXH> zA#NQC_79%!9~c=6;)?@slH7m&p|Spx$PRsBKI#ui6Y%6Eciw$tVKy4LXsFt77 zVyO~wq$)U9MQIg&f|P+Lkg1;Iw5$B-My?O=&8*9 z!67La>c=vPoBL_r#Z6&Mn0U4}5yp-W$4&ikC87fo2M_%`6c`Hi_lFCUo719v*g+}W zaLx-0CFN75i?)UQBK&0Dau&@yYopHEn6rM$^wkVjp`^7$En_q5zoWI6gh?@Im=t@2 zNnsctQlFp;;fX6zjxenDkCtLmRKP#wc2?Buxk)jcjhSxfM-BLsK_!3Y63!VW4N^|Z z2qGsf-$_G{P%VTkN;$(aDX6^DFObi1AfKdp5Xw+u4AV4Cc@px=N%@4=EJ5jk#JR*; zsMlYDUJofb_>x*PV0ciV_9TZYC{p?L7`pd(EYfCFMcPIVTa0YEZ^3Ka>?gb;Z6$xk z;f@FTzp!h6Z;!{wpa%y6R&9RzeL)%}x0{0$mRYzsWkPDvyAU_{pWvJqZrU6Rj>4&f zw{4E+o_OX7_%Cgq**x#4i#qDAm|~9Rh_(5)#rj<4Gnv!AsHNnqnTrN%M%99=;-$@( zH_y9TqpsF#rkHE})S;U;*Fsg@wCQWMg|bTgWG*-=BG!tJZz1dOh46<$8q$?lPjy{9 za;vCxzNjHu)bO3I?{;79zOo}$v<2b&7Y)Yjs)a(=r6*>dmzSV{W+R_Zf~!#d*9}b_t-|ZA9mdWY;~Q&BItvYNW?SHYvoNF6ZGO{jf?pq2 z6L7WoJu`BC6VkHBC#pe-9Uf}W``fq~SpGo|+#IPXLBB?lb90`$tng^A~$ zxbQ^G=8jn0GKA+~JZ|b93;3lL%DxTG)ih}h`PY)Oj-2h}s1RIQPp^a{I1neyC6PnX zg1K-Ah#SqGrA()}>Q0kruH>;P&H(<@M~187QW1g@Ah`${z|d#%85#68$L)K=L#JiX z-2+O`FA-#rXc50pzHU!ymE+bu`;YeY_8;DTc-QWu@$4hL`*t6d-+JQKo-cG9I&|a< z{aqcs9jVPZKv|RXMf}OlS#UVdA6jtcpFa%WlZSY7C{9vyWN;-e)!<7)bMA(ivJ#q> zGZF&_nVJr9#g%K3(1yI_DHG97$fkTBCaO8* z!9-FK*f6cilqY2(sp#wCZvd%kDQTXhJV2_QA^|~pl_Y*XXH2NSI_0z&iS?gMjH}aD z8ZRkZZ>%`7d`eKzqI47`c(UUeMBsWQ$vYwSB807dshfO6-zH#8Htly(*kL&Ftnt7& zxFJTyX{*6wNl8w=ljn}g_{vdSAQ8ep#p*>p-U4p6Z3_Q z(Za?nU9rNpsJ(64xR@t6i#XP;k2>n7x^6lOZxxo#_Ph{|*eh>Qwwt0Qn}8n=s(ACt zn(v$bFz0(Y(Z=nuq8$u%RtPr7$9K{wulAYt4~29TS-I*J*UPTyocGFG=F7K4%eMe6 zXDv7?Z>(BBzp693s`I*|^F5b)&hd@*>&{gR_WVT~l6?}SG5o{wU7LkBHh1K8*^EER zHo#4Sg*0UtEc|C;QmG3W>7&rx#1UZl^Kpv1n;e2n-O?WNsz_4WN3SWE@IDG7$A>@G zFv5fe^SULA!@N_x)1ab4ilmP_?tvxF-UV)cWJpGcNj*gilJ(Tj;YkF7ddp4$j96ak zq70=YA$zb?X{M$;K2Z_(NL2}oj8V&a@%6x>BIpu@3E`gd(4n{!^8kIzs1r|mJncB^ znz)rZhx6Q^YzaZd(@%PX-cU%2rw9GOPa%n=iKm~I#s`k8Q}`An zWQT=WR6bwS7%ggy6*be^xMeHgOK+~}hOPCMy>QkvJ94G#yZf*1pKsb3ZQA*cz2m*) z&~4GCZSUB(bCjm?n#i5{pN%HXr^M0J2crpNQ=%V3k3UmpL60zD0I$j@N>&vx0LM`7 zrxBlyeoVprl!>KTDlTTu33+Ir<`X2?1A{qhNuWqeacJqSmRdukPnFO5?vqb5A2( zUPAgHO+m2zj>3h)63C-o@?7@Jm$XDnTCRj*CF>%^>!%JZ4@BCG+;msJ(Ko<`vJ& zp82W`(W(vC9*b3V-mrHqrVEfPq-Gkc*}P~GoQ0P*&1{-I5OdT;taW@HBtl$3TMlsv z+poy8C$1dCqX+B(ts(XR4$FByB{G=$NhvzX8}NB0pPRbWJrr~gsX}}{N=80Pr;vk0 zJoK`aPVg_Bo7me7)Lun!uoMp1d@fMAwC(wAw+bpFRXbw^9T9s+3W&Ws2{TAVlk*MA zmny;}vKgzF(kvPEcbqC%r8r^77waEd-MsmcM$f}7iqB(U-1++idcu`qwc%Va?DmcM zgMqq``=s|#zZ%rtfB4&6uy>cD;VvLRBq?z#F4g z8>bK6a@Wke*GJv!WA2Uf?%h%M?wEV;bl2DRFF4ERovWhGRdc>qhF%_;uWgUkw!gL| zR=f9xa~~i!=)%<8WA)nrv5Q=n&d!{j%ZwE^M(mAuf!LF1!-^1FUB8GVKgtAxSVez= zn3R~>FQB~2A0Acnlx$fc(%fb~D4cm%2e*5#fb zn;DB0)J+=|8v5Mx=Wdm(iqv++N_Iz_yMbe;Gg<%K6R)ZQ`q!x>0@e)BXLpH!^w~{! zoTh9S%WaQ7gsw-51e%#dwkaELK8w$U4Y;%kvnL~NJv=@VQdm~61K=x@WFUK_u~GNY zJ)IlZtZi#&Ar!iQ&<%;SdrWeVj!D20K$X6sz=b_vfJ1`H>#iS`K4$~i*_Y54=fRwYf8Fl~$cRXNug!^JWa zQWN=}i0%dqA`3l36Z{jg$zzI}gXsGZHh53?L;XbZp^XR(NkgaO8A?D<-am?)f%vh1 zERH5`8!`4eKXF#5oXcOJmcd3inEP9H{>hdfZ24g@w&mcT7azLjeX(ioORt=H`ONQ3 zyi?M4z4#Dh!8yOgFN1hrb8j>0lLA|j+e*N}Cl=$Y9$TY;h#nGtGpYv5n8}40Gn$I+ z*;39+Y7!&S{*u~L!rOzLn8zY?fVrb zwN@kl{~D=-)E^*ka*JncUTV4A63g{`D2N%gQ=mwlm$uGqox`5rsta9XFM$Vt( zFIWiYY2gDyn%S~s7tMzO_e8VjPMXo|WTU}iCe0>VQEW)Q4G**ifjAx&q%4iqpHzo| zwz_==e9hF>p*EW|Y4?*h#4|FPb*6?|5@K3V6ni9!X_8}RDWM55vzLc?%-s@6?4iJ8 zI)N>;Ptwjd({J2xTw?Sqx{`GY6I^}~F`2X^ZrRt-)8E(A+r@}$wzo$T6t<8FT*#tp z!nhJSe~Z81{cx~g(=(@hPd;|b=9=w_*(xKJO5kvdHDarbrdQswl{|YcVkvzuJv)+K zJnNhD{r1Q$Tj{e;L@echoo<`%n%(n!w;Cy{IF{v#m^c<1KPy3~Wg;DtfBP;{ZTZ}|f84)od~gs5APZR^_5@Y-D8Y3_}LI z48L#x5mFIzcigwX2}r;l@B@!|S-!jshSWyRcqf8NDICK{5|q*0-qEpfRBCLH*Q-UY z(Mj->a`NEGv2kFi<9?v3kr8A*9t8Gu4|qpLfUL&cr^iF}9-i#TIB=}@?9k}=sC$&P z8#IQ3TD#iPyiVmpI{9LA{NS}+60HfK+uEjJR5g|n^dVcZ!gdTNdWQlW zK@N_iGl=&Wu5S22DZ# z1qb{AuQW79b@ie`ffFOZ!<18#ig9_&GyXc{IO;t`=$%!BOvLaTzMcklp^)W}p8{<9-OT z*>r=J5cTvjVF1IP#i`R*#h}nN7J`J;0Dc=c%r|b0Hg1hIZpSWa)=ZG&^9t5gOo=Dv|4Og|44=`0(K^t?gens3rH<7_KKPuH=-F*4Sb1IeB6jN z6?QIbG(w@$Ed*;39}R|XOV)*~c}oeDTV~hYu(&A%+Ad!kn5}tXC~B$rO?h0@Y9Jjo zfOUlrp%@p@Co(Jm(ULyn0wzVBWIk0W`4o1KkrH_TW2y9@&-5ydJD#WT6;z|j-VCdl zhkqwm!8YfN*zx9h-JBFB4Pl5_&zbaVGpyn&oqWt86>CkJm71JOn>07L@SM-^#q+e0&s>f|x5>sKi5F?cGOq#-=6`-7^ij<+cWgN~= ziH29De}Mh<>!`L-o}7B6rKOgJzD`qh1(p{IDcwEPM;R~i;>}O1J5dcZ0okey+hn8y zAnPAJ9hwN+0&We#Y>1=K6KZ5{1&<9>fkPD!G z+{}P}+{%6k0FefCCS}&ozhp^6Cr-*QK^jG3GTFm;@VF7B>8xIa7Srl2g@e_bWt|qE z*#K$kLT>&g*YmDhdF7Fc)v>&`h_!7YJ7+rgnfq_$l}5^1VtK6*YwPVi$5i^Q9Q$*_ z7lxl5!Pb3F{;c@SsfD8A*}a#urXUe1x^!^n;JmXg>a2@7JyW}Hxyon9ztKK*Xu(!A zyY;%QZlR&|TIRLlNW+%b?*HNDAGSxfbET21K?x zrYED;>Z!fAAxhrz{1&9XZOhZrt`ckov*NR-7Hbl-7Debq!OQI-TEHDAZ{hslR$kCiA(S{AUKts#wxY*BDw9K!c zXKUn>jIAUhIeS{#9&TKQ=de=xL0z_N9T@|a8Qk8YM&5~L1&fgP$3GW7J}+D^*>_Ex z-SE=(%iHH&jnR^QzhsR2Zd|Mn%vN5{axLV$F7?gyz3}jbJ@4f?FEz|GywEh&xnQ+D z*L|ToR`M>NJp95Jr}ix57m#}Pf-Qe4n=KuHm+)cSILt9({`$-|dgUv|P5hu<+wB8rs9SLe$~ie>lJ`)mmz z`N+xRvnPZU_zQG%YQRA{ttJIHc-5%2#@FP_d)nMr$U}V1+86TqT6_+CEn@yw?VE44 z&x!EjW#LV}e1wPB$!@^P)B%8@RkbO9YJJp(76 z?&Bvvx}|3+%m>F~9%{x?A8H{7M;nEqwd4@43cEt%AWt3&O`P^Wq#o0Hq{-dV((*_= zziW5rkuE3_?>>6;$kG1JLmfRmyL%vAN#~;BU_2dS0cpq|RG~FtLY0Dl93>=)^287k zTI^BPsw|+W6BM!nc8!|X*pqLgZqc^#zsCCsB>0g`c? z>fAopGu?CP!I=jyJrs3r=P325l2VZg|KjP42=@DWJ@$C!5acAZB|qSohzpngh^mxE z3ftqDy(9p}X~%eu?19FrL=-k~t2apDT-?tU{ZOitCH_7&)QZD_kYV7Q6OO}4 ze@w-^P7a}*xEazgoHu!l{1#=i06YXy`K&h5o8Z9FX`^`krE z8OlHggEag=`pUyM*<^7^3Y<{8_s zi@DZ7yYJ9KK`9fW6w=`;>q2?cl<9`WrGzT4H69ACT&Rbt`VC9*0*`&WkkVR-vM8M? zozJa|=0Zth{WU3;+diMWGn%_Imb+^z?Pt#ISN44O(A7h)Ibu!QZaBA3Wh`VlXEUN% zl{g7QmAKuCd@p9lE!O3fH%(pqiA%%qtVDO~Q`}fVbgWBnHLFkpnaYp0^TZVgy%uz0 zrqb;_Tm%VWp5*rpak(W#qGwLho>ypWhb%Tk^mZ;t4Ys>`rSZ_o2`vH9l5|KGf>fG> z?x8^v4xSi;2vm#2XRcZVl2$dZ>tthMABPn@j|25)qdI@1El913PV++6YFqhVz$InMAEmqlWTf*Y}jeu6LQs z$64{1oA^zA^n`%g+&m|0yqezW4h^Hy2EO-4Xt6p6aQ@dX4dG;U*w01S$8l0yk$=+( zXG|h~hTQEX3G{vJP_P>(HzCWF#qu;6NNl}w($R6qvmvTy5KNWT-`~5Zc~cYRd)hCl zH9Cf!a`&e7Yc{)kxVYH8sin=m^(2mt2isd)&zw2aA`K2SW5tEWq?R%1L@QqDZ_}Ff zo2!F7O*7JLKh~dE!7&K^Ni;ryx?n&4K+lnGd1FIzpY{fM>p6Qx?QbXT>GosP1q#X4 zLZf;ND_gDW#Mro`WGL?uLn>(b(xH@%zf%1F;h=IF^GKr{ZbU%PesWa6c{)TKX`A94UE&-aSVz3*f3CG3kBb; zJPpDfMU%NA17O`?`!NOsw^Akw#@v1^p-U0~;$3@2Z_d$lqbF=04-GbNl3B-i8Xo{` zCQzw_g1x@rav`>fzUr)43Z5dEQisKNULfI*lg<;)+bW{Ain(-bVNaQE*__WkcHyzv zbqOa7e|^9tZUiX-5nU<*P$T3s!7uRKj0SlZ36tnE3eYe5<>aFA zraqsk=v2@d&jf)bTb>BJmNi=Y`0rM(09A&;?t9wK0VyVPE~#~4^c!R*sXZ@8zlw5# zd_RYd^`5&x`@44;37ISrpKJgnt@f7Yk;?VMWhITo(UlW{x5SG2jo7^EdC=N zY_g?egA`D4BA&YpuSzt+($C<4MrU(?Xx5}TKmjXv!tYThG$RTYN19-DM6$}~Homgs zTRTAcvE#*3w6I~maBH-1E9kd<3q=*!g5&a@0kyVB{+TAtRenA@ZuE|Z7=4_iUqduK zi1yKN;j)qAAHGj@CTS;V-Za5h#VtvXt!Jk;85@n66$A7soy`j&!oRW#ghBUOog@KpwIFNj_}t}izT_2GXDi@VWnE| z-3q@iT&7zY<@4L9ll1>k4>!R1HNsd_Vg!618?AtDCA80fMwRgV3sfT02ZYTqV?YP= zX&^OTgN*e%MUBD9%_fCq4`7ppft+SNJ zr|wTD=r@A3VS6>IY)4C^)ON)h*|8UMmvqpATx}B08Iiy7UTQyKq<;xIlIHL>l`QS? zhnmMvGpbV&bhwFh9y&e_MN=@LK=EXhN}A9($4~6CY(bW z;Kc2nN4k4=clY+o;>jMSl*L3W5|cd1J0wchBr;)Ys&UaT{deS$0+zG6nHf$rO5yTl z%OL6dyO?mn{}Z_Y`B{Zh_e)zZZ>7B*S7W4U`wtB1xY%)K24AF>y6ospvYXl^~QDNYlYt&Ntgz1A5k+w?!o zrn0=-MUbczT{<&!=7ov5E}R#N;(y`hMYE7!aB1(%-mmXpG$Pt`#-f0q4>AR3*{zz@ zk+zOl&93RLuOD7CB4jaJ$n!w&+*_}vro)k`g(*JWm5G(B!i~GEsB`9!s(0ZtPnyH%=t(u@r0FSxFYTP^ zanl)5IhXHA4|l6;h_hI14KW=pVn@LxLotk0>`sr7X)y5UBNJ|>YRe;XmE?p))!&II zBts%JThAx9LX&J`vKp%B-GLuJ)<-R@o$Y=X*O$UW#CA}u{|w!CKUp-@Y=CsTTx z^85xlw9L5ymj6V)KO*OM$zec%`Zu1_&pJQ>G_Z)mD6v|K^%IJao%CJ$U-aRB!eKL? zXflN=OPBM|p?Bpke@{#PzaZ^-;RCB+FNY@AysiGat^QU))uKVn-@0Tp7UnGq#@swQ zb5}HVaM6^RkxvR==bkx7=NHb+oSQFfjTVwUpThOiriG@})217C&j*lK6)#xr(_N}w zMAYh;>SF4_A1~&E^PIPNqBdv}ry;|N>X#-jPtI4gMk`t)t9SiySFB?1e8u5t#o<`R zk%+bQR$dwElUujo+5CY~%x%AI&s|D4IdZ60`HLB*?EGIXnvu~bOdI%{Eges7X0 ztBtR>weM;)zR_rgKZ(MkHO}zt6g(^8S!shljL^rwuc9~USs~3`aB>)_Abk}*hVUtM z#q1#qZ?eQn2H`DkSsptUz(Rpcgil*SK}`9PuNS6AIS_))wvh=nx8r_VHe}~QTTYDb zgl@PtD~b16#yH~OfDo=&jy#g)p%wf^kanPfJu*pFx$T*4B%s_jvu)nd75Ms6 zUt9Nw+rGDLe(j#<+C8zg`=XA05p1K|@|H821jgC;d>I}#K63BkRedx_twB{~6p~L) zD50v(9kkt`M<*oYpxT0Q>4rjM@+lMy&hqc@!?d21lM&+axG4mss$_-)diY+PAqkD? z(4Weu0_wFb$d7ALLKgF)WA=03D1ht*k{IYFgr40DWuxs-w1-8jsg9{rUo%d3y^t~0 zeaiv!1TSpH+E~s#sJQMZa!wTY>M6LwQjChxe1`8BHG>S8$21Bl59F(+?(k%i&=AsV zdE*o+(}2G|I>!T{KLKCbEg(H$lHfrxncyjazHDF7{pgyO4K1r7)Z-FGw|9UjDR)xt za@KCX|1dJqA{|7Xt{UPND&hpm0x}`}A2>CFgAXGR5m?T6B~mC0#!cjl=XJ^T!6w8P z_$Ll}n~+bC=9SFHW@-)5;aRkg6*O!Fk)f7ru|Jo6Asf&s`-u2nejO;9Uu2jwGC@K? zxCUjdh(%U>SE&l5Q%6X`%ddNchSmLEWG+9TD^%`)kKj{DeXO?apF4mgfKJL;9=#Tn zP){}_n=m^Dy-@J+@Ntx~FaR(WL8{J@jT}2UDr!^~nTZlJEdWZKywoz(>W52~!724y zJ&hW)t&&IW^SYxZi$qOxCt|jih^1xuB10uVgIrF3zL|ysgJU{!6AE5KwdDdi!ncVt ziHcU9&sdFjkuDX$$J5Y7B$iz+V&WgxQ&qB%l0&Jp7tT)EIPS<}?fPUp)GV;xS`I_~ z6Tc5ZGSx)8eUG>&-6@}r(@71GOY}pZnaR30sa8w_>PM>YE%FiYXB)?#V1-LcbVdf5 zj>8(Q^rsZTMH7Z3d!Ja3lI2<@o~C5Q)v&@@Ct1{LC4@5jq(H9Yerg2-qYv?}y=v_4-gDI=Q8tpB3Ze8;CHelAe54Gk zDV*V4TsQ0m>cwVNZlxr9;K2SQ0Y0w9re$fQ+>*0I3t{$JkUme*Stc~XN*~b7<|>P6 zl7phLp>~o_>sHp;b*Wl#|3FEun$ub{> zX3$A~9-lM{r0W!DfdL_G(uF2?18>p?8fHjf{ULO&M8_HVpuJDNza!`G$@zesC31d2 z&PU|@lAM1e$3$%+8cNC_2PWeMi4GG;h2)T8a;oOuYm|(fJ@^}W-50gg;5}Z{7BS`DZtwWvx}UVa-X7W99WfP0TpMDh zZY6cuTS*@a*}5S}I!*DR)!569h0**A1hrfn&U!kj$SV!ByQf?qia z`79JMgM4|P8qv)nF6FQuN^x?{o#J9`soA;UEM7FyZ{r63yZ0dby`7P>WJdVX)^xLD z$(d#@Tgpo}m)?QXy5tn$!}-Y~2H)8v9Kb|W9~1Y9OXZlAUjgZ&XoLEo2b!u6sQ2z$ zrZuP+>)yhA?kQmqLX@YoVPmvXJ||eo&k6d|q19KNjwn78c+~+`T^H4h{TI#@WK7O6}EkL_!ptq^j zwh-+h{mml8ApOl^d?)?Q618#kQ~&H)0K_JI)yi?H7g^@x@MSPKY*S`tajV@&u$46rJwId+UR5spDaD9DPY zjdGb8;jFX|h6$Q|IC;XAnfM|9W5<~G!!fsl2{QxC^`Cq_zAxp5li4)R&Mxt|2uon@;AyjUU!si|&6B!udPwiv1 zetfiX2sVVSLtSxg0XxSG0VAwVjf_J*jvA=cj}5KQe|-D|P6kV-al=Cpj5X3~86vuL z25K~JZt^s_ow6o?*1BF~E(a>hm8%e8J%-eFJTCL{Ep)F&3&o#kVPrVeh?H4Ly-i|P zl0PY>oHqT!?!Y>35+bIMZ~GZn2-FAkrnJ;KhWkuFpxxBJn2h@Co<=K;EYkR~~qBx!LUQF^b5>ms>9 z6GAgif~^y4#jX`(*Za#8)jm z5>6TAB&kB=ChoH_U1%8zlX+5nBUu7_CNuCxAeTLCZy{ZIo3!GaTmniLrLvG(<4G~( zRN{q5Ly$d#s=Po-XX+Sgsgs$=i|BXuOlILt-SG>Rso|ogB`)Wn)f8vN`qjM#)(X3t zP8hCM{MzrN?N#(8JxH0yeS#3GQ+x^;O-^K!29w1m!p` zVqv?)Q1c?#6*uC>mUv#jvdmR5L|X-?`x(23FkB#G91Wh3-k@?BGetZb@;D8SF`h** zTGm98j?ssl{@~caseWZA9I8rm;vS1_kSxNm`zhoTn0Ee)GUS7r?1&IpD;bsc^OL2F zA@Vrcc10ZAxo={{zKYvYFbCh+$X(t<6V;w`UbuToX1`X$7tc|Y$br{Rj`?`cx6zmE zPbPDPVz6w~chis~1XYpzCeBonMTf%!SqK@MBr1Vv6Mz3*}HG zBK>m*og%aREX($_1GAxT4}53++`~7VYZi*jpl)rasg9O2j4{-Je8~F-EC2K+qIUMyMw-#K}pEHI#$s}FQp$q%gHsj?v?g$wWE-i ziZ2&mYnd&M6?Z^i{s8t@Yg(puEEjzNwsH9OoA9i-cLIo`CvOgl6Q5y+L_ZG&7T|IZ zf(J5W&<^_>B{~8qZKBzb(T~IXZ1$(hy%@_LE>0ToM9rDsra@naCUUV?_?hsWbH1|e zdSx3nHrV|Z7c%E9rBO@iZ0~$obF{4ah6QI0FqH3DIRBKi<3x~|VFe%SHMWlR0A~tBBN_sMfV2?@+f9E7&(&IpM;}jsN+5k_4iYpen<#q zR1x2tlKUPQ8>|2kaYP}|`qy@>x*;fLau-4Y@$@4-T!=&HMCB_Mz`LM{GOE)=}2E{nW79L6C;%6} zTv<208GCvW>uT)kE{75{x7mEZC&g8^SeFeSiQH0#Pn$b`NOjF&bwvfZ#6DuFSY8tq zUQs6`?zZUnw*p-h8z}~fTEP1DW^{_% zi#jMLBse$5>s9Y>Ine}Y!Hs15eI9MiV@j{5X`I^i*m4~iNtwbF^q;BAiJWA5Or&Q} z6}3T9TE%-DU)4ti$^SPBSZTT5eY2kw*q(eG6Un6Js(PdX4OHuG%4tSj0PJy287ggA zYGT#nQ%O>&&Ot@(Butn*0*D8rt18(&sTxyw-f+MlSI+fRh7Bl08#xr#1mrCFR z<Ugad~Zds)dJS$jEk~onRf$TLv z3PsvcW76>rgW}*d1PqMPrlMGP2Ho|mf*#rS;`@J! z88t*?{QExm-hUfT+_Z0ZN0-OSnFgj5^*RL`N5)RX)8!p~t_#U_3dypBluynza$Y3o zO*k-xw~G9`kh^?^Xdt8*lQE($@pL{&xC)VbSh66o$^@$LaCTq|GDx8g6WO94({!Z` zDyHyK+wjW6FF!oLYJGIo`pAYou~mDga&Bi8N3vG2&D&=t@6etJS$M%VLw>~_V;WSd za%h*pl$%|J&6CyJ=UY3Yt(`yYjJ59j^OF5nj4!U84SsV|q-6heIvmpXIP=2RxytK~ z>RTms*z727TUgrxZK&d1BGj~81yIw+MI$vc;a; zWY^-CA8r&}2gHx>|E43Wv(oscTO_w8t8txz#xHKgryt2G>!ap@H zo${ro73x*7yj%qWOArVRSFZe>a0&eb98@C#QkEqtMCsxycCep_B|MV`D0ISz?Bj+r zqK3tg&xUgbpGh;sqnWvWRFteC6@O{rlv9G5)n_Z&%4@^!ay-P8#fjicd7ktDa}vf+ zd7dmoxK4ci*jWO@Ik>gWkE+-ZB0E(mmefBgMoJW)p|A4M=W1#t zNBuk$+yu4W|2>N_jv}u2qJR9NY%*}yP{giSKJ z7T(iC3B2)<0O~V@qoy)r%cyXmN|hmAk zaHUG6jDo7Cipuy{k&w599YEM>vC`Nne*nkyJ-PAh9`NM;kbH%-M5c7P=!9|9U#3?w z03y*Oj$1&5;OH^#jZUYlL_jb}BrWEQ_dZ}ki7c;h%?A>_NQcN-LKLWi5Ke}S5nUMQ zr(R)t%Q*8Uok%&fkkik^>iy8|gG65nyOMa+b^#aY9{2#Lu$=H=(Y&MKx}yO`+vc5(QD@`4vn}duyWw05BuF2tfnV9j zny9m8-q{d!Hr#MFAtf;qwbyO6SJurp?us_oqv+_g1nB5~n6M9>C+3E)7p=ZsvTdgGc4_N1@yd9lWc_sKt%B;g&MUdGg2rpP5&N27z2~g_ z_Qr^#k+Awf5nm&`n=uPeAS@k#u_p!G(q^?tnNX&4WEVOEZofbSDw z{t^%dhWreZX1wdyjY#^GXENn>jGM=Bk2M+vzaq>X6dXX#b-1|cTgOQ{dN>WxK0i7S_;*H52bnocUMG>_R! zCf-!c#!!$~;}4lO21$sp;W7?GoE&8mUSb?2KBUN?)SQ@oXm)u+fT=kQ4iVGs_PW=u zX+F;Uu*E{=SO}}RA06_#dwLF0jNsU)wqJiLfYY2vkBx1@#Xbm=ace}tO(L#AGS1B~ z2d@?E8PQj0Qh;;D#yQZIS{pF&$8gyC7+p+pjM=;9jG(r|1;vqoZ-~^(d2Z04kjB9B z!??CrJ5zCzSvyU@_`T?Ygi2~#)^2x$yHnN)*$Pg5bIV3lZNN*~(h%5rp}}%Otsb$U ziYbs2P=Faf-U7i`t4zG8zeB+wY%{g4S>Lv{n)wllOj|U!wXI*Xe*Nant5<6h3aWsd z0h&gJO+Z($@jN|o1hg?%Ums`rrzIiD2A{ zVJ53q;KCsVAz+WjlXP_%Rb#}p7 zHkI+SZ2NT2?B?hDZ{t?iEJkE_t~)*46Los7?7!|@{~k%Q-PdjIZ+Fhutc%vHyLRS! z&Gwr%C!My!1v-}=pLu+4C|0;SVqbkLzmOZO1Ph-dlvPa~UdYRzZk%&m5x-T0y~ODq zx7>v1%W#R$H0;zC&Ta-#14_W%j8{27oZy;!Fjm+)ZK7*~pfi{Tp~0mcGdp6AnuxUq zr!jL2FIi`-v%NR$Rj4b@ZaE5OSRubtg#FFL$Tzd|78;tbv`(+1+u1H{pV>ZF9dp!1 ztVdo8{mI!Moc)u>fADy02M%-{K`Dq>AxFd^p*aWckce0hzvlaslRr55C!;?Y{i89w zCd+II3#c;NZ{GzcpU16-NjxVKrap<>E^xQ*7K;KK*MlFKGzOu(F|4XoX!!xN8K5{I zWBPyy4ibl;!74+hO~5LfP9 zQFy{6?PC_r**?Cy9P-(A`xc?mK$pfC1{V0YuTqZ)DsXzR(@;K_qvcN4DDHFESGX-a$xEDHgRsP z*PX2k%4MjLqRp!RTJH6tH4sq3)Sq+Svo-43`kHTkdrx$GPpqUj;_SVd3#;GGS@HRz zmurZV+Zk=#`J>LaO>geM-gp>d*rcL9+J-8Auv0{pJ5FgW#Hh(764RsCmpWv*#`K87z4n59m&3yV&3!28)B68j`siP$#?Xbt zWw=ylz24D5kxBCiy${x<7mG%PoIOLM*rWr;F$RTewqd=J_Bh|F<_GvWgL4Kz zu!7S-o~(kT4$k&FmBNTuLfLeqj@n*^1LW<`1QzF06tXGR{y{PU3gz#Al2SJ1@M((K z6i2Q|QjaHhZE`(=bWbg{QdJCQT24XgdnWp22pC%O#P4Dk6J4Cr7qUJvF2OsEBZJC- zk=;@CWt{FP9GRdI!j(-3KF(}NY9|M%=Ja6v!26-Y-C#yxViDTWH0Y=vW(`#gQ%XIB zK;wpKF%%eQ_a>2&b5hl~feTXUN4ZE(6Q|yT9N3^H)}#IicqobQAEV%7j15*#N${$< z+19g1ErDMmvPTku7GU3(ooOS5R(1ql+J;bW!h(z$^TTdT_2_Mi@(pq>!%=o+e@+1` z_1}`OmK*?l@Oz3fDK&oiX6)Y~Vv4Q@wet6f__&PpAU@VX9?GxefnwtV?Y&lF-*dif zb+l~tRQJ!aa;DeL=03mic3#1S&V_9IRR2P0<<#N#Y|x^dchp54bufQ;rSrP26`aw0 zVPmwgQMPPhjN$B^eI1#_qbvUgVz#O&)9oVHY-l#?deQbP#w%aCYQYt%uQ{(hFqQo? zo8v{}Y}b70>S*ceSW(-x&s{IVWg~@C2XEs%{}$4nVprzP1+I<899>ggH*KY;CvL;e zTx@=1YoI)8UGpATLf?ErL$shFme+V?;Cf!$_k56N7nL$rav)aN0J9z30LPWC zYb`%)j#b<@ZDsUKP1Ig9Z?BKq>#vmFuy44N4c0F;v;XJ=?@5w#>cRw553;Qf&cI=q z)Q2ccyo*c6IRnS381=K}VN?vnbTSoVASwnJLS_WCc$h*DPa2Xg?pD=do)SYEZr8P! z^D1T!JtzfYTN3b{CpJZ87x-6l_3)`ejWPVMmqw2!NEFji>*`UiH~~6jSXJ54N=5t4 z-$_&0AG)y#RF3gH{#co$TbA-DbrNyBY|;oyigH%z7A-PuXF@ed9vjeG`mNTZO;qdc zpw-MlVg<#3Q@{Sc^yK&fA##93>Gi%u(0($@jbDF#N@^ z8#}Shu$F9m>F4yFWuYQ0iIi!BM6L4Xah)NOGKTY#7-cpcJ|aA|11W%~ssw9EGH$w= zfSaZ|p=3LsRdYS7=BA@kw!^edv%>^EB1jJtFjm`jTNBCpwm|cI-qjj)wa&XXMqL|Y zuFVnW<`r<+0!pkTMcx7k;vlAEcTy`Rm@?h8mCZTlN;%T9ST&@YlegfmncW9D z<2|9Cn>N?wbGUkna30A5Yp(dFx5pf7r@COZ&E_DR<~D{A739$xb+pDD>>e%>gH}gv z)$_KxsIBgbF=lIuSelk&6BBy8ny?88Ka?vT^n^@I)kcPONTWUqw3JE#zX&&_JWRN! zil24^PdtWPe#>yl@MW`EAZ43-#V}G)f_jXu5K6^GYztA^uMbg^#f`uSMhToOzp~<9 z>k*rCengbS<5T#XbWqC4P*OG6hMjs5GD$mID>0=92Io)HauK z{TkpZGXpQ5>ZGQUZ6nT7xXDJOW;mVT0^{r$pTUlUG7}wOD>-r?Z4Ei)2$VZDZBNFY z4UB_-O)%g^*^LaH@++Gz@?Eg1#xy&F(L($rUH{Ba-m;7Slxr8LrfTOa(7`r5x_U=Fw+*B)Z#2y|P<{!`Rw+9qTk+Aa7I!6`Q(DR2k$J zIW(<(4crqSA#0;>V<#$9PgX;b$izq3kp#(cHW`MPn*nixGx*ANPHITxx%HW?MDcHo zmTtUJ%3*GOw6Ok)-6&}KzVTYu{JMS7b^Btg z_rKk7ef445keQg7nCp41e0m~QxNq9@Ge_Y_skYd~hD(x~+=caQTH;-UAWq1F+>fpXG|;lJ2Z(T!y(|zkkVS zfN@2^kevhifY@qR)Z%(^&r98xyWg=i-erVKP<7m>PN(wJ0mcaG@NB_a{gGwrwWx6F zGn}3pq8&FjTxrL%4O zF6^VL3~yLV8I9?pI}b@>P#U$C&ReUZ)~XxU8cOxVGf&*I=FnNV=Z;)BGTZfzwGx_b zcAcYDG*E15W0z!Q4JnUyj8X5L%smTz)l({r_0<_9w(qO5+?ZfGaWpg8Y_7Z(+`%c*wi_O{^vbifbixS3Jj8zA>KI!jZ?bP7-Y&xML_;MAPt>{sW%WZY!Wct z+hb^y^dwD_)R{nmDKmjrC_pn|Khgna(8*4=aeFJT7{^Uwc?Tla11pXv*A00uuNb1q z+|}St30oMmbC!>=D((9ZC}*V+esaGy!dNnhnfho70MeRIA9ozAlgBQ&lFGqdunC=| zW%eFS-BL3u!j=-<|D~LrzjPFXN>}w>=-;uE~L}WACt0w$4)qCVPUD8b)38){4Bf~_J$0BLr8QNZxN2MUS&=7c+)0EA!x1@xy>L22 zT3mC^n5{Nqsa-yV>UtrSiWS!jx1pdzRq3MFyUcYuG^Mwb50xABsEf~7jQZ1Ys|1Mw zRDKnibRw-cK?gLgh|V4yfoWp2nT}jrfwTB7O4-_h)JeQ6Ir{`09a1IN+MS^kt{e^V zq;)T$tAs7=Xd=^&k$UhRE>Vv~_^~So8}nrC0DE}gpkb4}9clQ`J`Epdap+3wgcF7@ zA{VYsL+5+gSqIFCRq)46?DlHve??Ko**|_7j6SRu$!1jO^7?RP(hSjy@(j(7XOR&k zgD}Qne{RQx9g(bB;7&R?2ve(c85b9Y;oSI?i9*8{!m~AVBKD!?+M*P=XvoMoB;G2o zgow@XjZqlyIP&o=Tk(fNI)aJvJ877tBKgR)4_zANX^bz zLB|h65&OYK8ztacDz95|J4%GtOV;nQ;m|QEs5}H&@h2_?5K6Q@?bDn;s1LXG4o@Q{ z8lCzmTo}o-kfSaZ(92Du2xMy@YF#G{j7-!i>&ab^q3PD*6jDoT@4fUSJp|nxC&e&G zOso;DUM94U>b6oH>QRS|e{vmCI~MPsvEP*X-SZge_oX_bzqZlDHDJv4H_TfQE{iww-;%- zI#4!9CRpXkfgl|cY-iD>eKY&`O$S#@-?d$}#hja_b}v9Bw_9espgk6~R?LYvtX0IH zbzMBNSc)4L$kM7y$jN)I|3ZHxyZ%ZKEadO_-j3_dyOJ|C#+*&au)OM}vCCuEjL~uk z(Jvlh1;DT<&&MI;!9lp-X`O09t=Okldcy5f0hbCL$FisrPulqoOOU`gnFAO4i>TAz{rDd-PE1JX-Y z&7EoG467$jwXpMaAupq@*Kg&vrpyye;YIX@|0q%w8Jn@JdS!tXv0mXBhpZt;XM@m#F; z$5>LC44%PB*x;7;sFT1Mk-RJJPOF)y+HQKvZp-%xKJ)H0?H>GZwKmP(s4{rreJa%o z_J*D1C3=#~&+fy(VZWv>q?ig(ZvRqEbkq?`G>Wr8;GkNovNh0N1uC&h13==rvq&DNRi6oaUki*FI-y|Q~lxJqtzk*lgTBM&-LRKb2@9DA@ znKXqs%Xa5KK;#sQ9*GR#ez!f4Q`0q z8gAH{Zsj#lg!@QaONo#P{GOop-jYG~viM=*8;#pv3(fENe00a>Z!~^^>0H%C?RE3^ z=BT~-hMiQ=KFUCXMS&bUJ5j`0f{3k(K01_-9~6*YKydbR&z}JwQRtdBLeY(7=!x1r zH|&ihje{g^&U@WahhsiWW4<9;)No~Otf+O`jE$z3nl3lt%axY5&5$p+>Xrn9D{nd- zHUeScu%z<&!;22VQAh>R>0f9Ylr%?6nqwuc)9E)IB|JtNVqB`9sgLB<(tZ{lSbA*c zF|JM*D{N+mjBcZJN8#+o=XcO?Bj}W|6w$m|sQN3Xte1DiM~{eT>qpcPACU78!EG4M zr#c*a8pPN0x9ur6zLA#!{~NAC@~>h3ExXp@<*n9QxIfOPpdXi;_td5TxH=vFr2R0A zJ7;U|Zmta0w|=BT$)k+I=j@sN2i<{GYDr?gej~72jExFhWL5&WrtJzrr1vQ8~ zM9KMSHRSan5hu5+fn5jcwk2vnChJ=+MzK&`{t6CcpYN0ZF>*%98KF@5FwqMXz`$=B z6Mh8a;#syG%#fOLaI&ASS?TXj*`n;1gRL~k-$O@|ypDEWgTm`K9uN`h^(8)A7?F>4ioq&4rC49h&V%dsn8^yJBR ze9{_VT^LTImDIYUySKNS9=N^To?2-;x>_P0gj>6!T~p~zdS#}qex&-|BHx$E`7t@{ zW)xB*<5#UPyvHtGq20HztA8IX6L*RlFzsN`ybA%JG|Q)XI_lEneY2RjbbSvsi^YDa&g4>KalAB!g-X zJ%rP_k2JA6fz-Q!R#WP| zCK1F;I5x<%AODWRSj*XRKTGjGqA=QZX4@cqhl%ZcFglJAX^cK2;)-93)JVx@;l#6L z)5`-e%h=x!Lylbt4dPGO$@L}EC=ofEv1EcD!TI=U;R8dt*|LbJrR57pKfh2=h&$C5 z%4?w{5A8!}sxNHbw$RXmnmeNf(Wz1U+L(Gd6%_EV#ji-;)C$WI+7d8+MfqyF16dglk-Cm(tSA)l2pb z=7Po3A}+c4(6GbI?$^O}H}Ea)F@TU;G;cI_i=gQWOFzgUFT2r34zuH?ALivZ*)T7L zo>Hwr!8{RsEDaB#B;?~M$Oq+2?aG{eq8yt%7$3Schk5y}In2wGGA~S0u(XTm>&(rp z6#UA`$j2|vAzwh0FYhTfSFp=_=$9_)~Tq$P@AINv@$|5#S?8+kdM`<>5HOIQN60rKeN~_|_%tl~u6Ai;JLEyO`uh-n-O@k{o$P{d5=C58NFLv%3- zfr5Be0)Hrxd^GORf%t5(#+`{@6oyqwMfn50*~)LH*)IJ78iM~q@NeOQZW6_x z3RQn4^v-`&}XPT>-A`T_NkI!m6JN?LQT^{#0nZZOoWA7G5_N{?xQ? z(Ud0UEgFpGf_E*|zpx6T4lQu!*G~ z)$9?)f)4;^#DY6V4X2G_(X>Qrn|B2A-x*9lo+VaC9M!)N$n)`HXRcr^1nFrm_^Bly zU1u)%)$Q~=1c-SH*}1<#hBC#xUoDtLUh0Mj}H?6j5?g=JSt4^N+;xKNqteg}PpG=2SL-qP2K-ilZ#VjG)HGA+1P9vB%fg}LuU2XFK diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_base_connection.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/_base_connection.py deleted file mode 100644 index dc0f318c..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_base_connection.py +++ /dev/null @@ -1,165 +0,0 @@ -from __future__ import annotations - -import typing - -from .util.connection import _TYPE_SOCKET_OPTIONS -from .util.timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT -from .util.url import Url - -_TYPE_BODY = typing.Union[bytes, typing.IO[typing.Any], typing.Iterable[bytes], str] - - -class ProxyConfig(typing.NamedTuple): - ssl_context: ssl.SSLContext | None - use_forwarding_for_https: bool - assert_hostname: None | str | typing.Literal[False] - assert_fingerprint: str | None - - -class _ResponseOptions(typing.NamedTuple): - # TODO: Remove this in favor of a better - # HTTP request/response lifecycle tracking. - request_method: str - request_url: str - preload_content: bool - decode_content: bool - enforce_content_length: bool - - -if typing.TYPE_CHECKING: - import ssl - from typing import Protocol - - from .response import BaseHTTPResponse - - class BaseHTTPConnection(Protocol): - default_port: typing.ClassVar[int] - default_socket_options: typing.ClassVar[_TYPE_SOCKET_OPTIONS] - - host: str - port: int - timeout: None | ( - float - ) # Instance doesn't store _DEFAULT_TIMEOUT, must be resolved. - blocksize: int - source_address: tuple[str, int] | None - socket_options: _TYPE_SOCKET_OPTIONS | None - - proxy: Url | None - proxy_config: ProxyConfig | None - - is_verified: bool - proxy_is_verified: bool | None - - def __init__( - self, - host: str, - port: int | None = None, - *, - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - source_address: tuple[str, int] | None = None, - blocksize: int = 8192, - socket_options: _TYPE_SOCKET_OPTIONS | None = ..., - proxy: Url | None = None, - proxy_config: ProxyConfig | None = None, - ) -> None: ... - - def set_tunnel( - self, - host: str, - port: int | None = None, - headers: typing.Mapping[str, str] | None = None, - scheme: str = "http", - ) -> None: ... - - def connect(self) -> None: ... - - def request( - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - # We know *at least* botocore is depending on the order of the - # first 3 parameters so to be safe we only mark the later ones - # as keyword-only to ensure we have space to extend. - *, - chunked: bool = False, - preload_content: bool = True, - decode_content: bool = True, - enforce_content_length: bool = True, - ) -> None: ... - - def getresponse(self) -> BaseHTTPResponse: ... - - def close(self) -> None: ... - - @property - def is_closed(self) -> bool: - """Whether the connection either is brand new or has been previously closed. - If this property is True then both ``is_connected`` and ``has_connected_to_proxy`` - properties must be False. - """ - - @property - def is_connected(self) -> bool: - """Whether the connection is actively connected to any origin (proxy or target)""" - - @property - def has_connected_to_proxy(self) -> bool: - """Whether the connection has successfully connected to its proxy. - This returns False if no proxy is in use. Used to determine whether - errors are coming from the proxy layer or from tunnelling to the target origin. - """ - - class BaseHTTPSConnection(BaseHTTPConnection, Protocol): - default_port: typing.ClassVar[int] - default_socket_options: typing.ClassVar[_TYPE_SOCKET_OPTIONS] - - # Certificate verification methods - cert_reqs: int | str | None - assert_hostname: None | str | typing.Literal[False] - assert_fingerprint: str | None - ssl_context: ssl.SSLContext | None - - # Trusted CAs - ca_certs: str | None - ca_cert_dir: str | None - ca_cert_data: None | str | bytes - - # TLS version - ssl_minimum_version: int | None - ssl_maximum_version: int | None - ssl_version: int | str | None # Deprecated - - # Client certificates - cert_file: str | None - key_file: str | None - key_password: str | None - - def __init__( - self, - host: str, - port: int | None = None, - *, - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - source_address: tuple[str, int] | None = None, - blocksize: int = 16384, - socket_options: _TYPE_SOCKET_OPTIONS | None = ..., - proxy: Url | None = None, - proxy_config: ProxyConfig | None = None, - cert_reqs: int | str | None = None, - assert_hostname: None | str | typing.Literal[False] = None, - assert_fingerprint: str | None = None, - server_hostname: str | None = None, - ssl_context: ssl.SSLContext | None = None, - ca_certs: str | None = None, - ca_cert_dir: str | None = None, - ca_cert_data: None | str | bytes = None, - ssl_minimum_version: int | None = None, - ssl_maximum_version: int | None = None, - ssl_version: int | str | None = None, # Deprecated - cert_file: str | None = None, - key_file: str | None = None, - key_password: str | None = None, - ) -> None: ... diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_collections.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/_collections.py deleted file mode 100644 index 1b6c1364..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_collections.py +++ /dev/null @@ -1,479 +0,0 @@ -from __future__ import annotations - -import typing -from collections import OrderedDict -from enum import Enum, auto -from threading import RLock - -if typing.TYPE_CHECKING: - # We can only import Protocol if TYPE_CHECKING because it's a development - # dependency, and is not available at runtime. - from typing import Protocol - - from typing_extensions import Self - - class HasGettableStringKeys(Protocol): - def keys(self) -> typing.Iterator[str]: ... - - def __getitem__(self, key: str) -> str: ... - - -__all__ = ["RecentlyUsedContainer", "HTTPHeaderDict"] - - -# Key type -_KT = typing.TypeVar("_KT") -# Value type -_VT = typing.TypeVar("_VT") -# Default type -_DT = typing.TypeVar("_DT") - -ValidHTTPHeaderSource = typing.Union[ - "HTTPHeaderDict", - typing.Mapping[str, str], - typing.Iterable[tuple[str, str]], - "HasGettableStringKeys", -] - - -class _Sentinel(Enum): - not_passed = auto() - - -def ensure_can_construct_http_header_dict( - potential: object, -) -> ValidHTTPHeaderSource | None: - if isinstance(potential, HTTPHeaderDict): - return potential - elif isinstance(potential, typing.Mapping): - # Full runtime checking of the contents of a Mapping is expensive, so for the - # purposes of typechecking, we assume that any Mapping is the right shape. - return typing.cast(typing.Mapping[str, str], potential) - elif isinstance(potential, typing.Iterable): - # Similarly to Mapping, full runtime checking of the contents of an Iterable is - # expensive, so for the purposes of typechecking, we assume that any Iterable - # is the right shape. - return typing.cast(typing.Iterable[tuple[str, str]], potential) - elif hasattr(potential, "keys") and hasattr(potential, "__getitem__"): - return typing.cast("HasGettableStringKeys", potential) - else: - return None - - -class RecentlyUsedContainer(typing.Generic[_KT, _VT], typing.MutableMapping[_KT, _VT]): - """ - Provides a thread-safe dict-like container which maintains up to - ``maxsize`` keys while throwing away the least-recently-used keys beyond - ``maxsize``. - - :param maxsize: - Maximum number of recent elements to retain. - - :param dispose_func: - Every time an item is evicted from the container, - ``dispose_func(value)`` is called. Callback which will get called - """ - - _container: typing.OrderedDict[_KT, _VT] - _maxsize: int - dispose_func: typing.Callable[[_VT], None] | None - lock: RLock - - def __init__( - self, - maxsize: int = 10, - dispose_func: typing.Callable[[_VT], None] | None = None, - ) -> None: - super().__init__() - self._maxsize = maxsize - self.dispose_func = dispose_func - self._container = OrderedDict() - self.lock = RLock() - - def __getitem__(self, key: _KT) -> _VT: - # Re-insert the item, moving it to the end of the eviction line. - with self.lock: - item = self._container.pop(key) - self._container[key] = item - return item - - def __setitem__(self, key: _KT, value: _VT) -> None: - evicted_item = None - with self.lock: - # Possibly evict the existing value of 'key' - try: - # If the key exists, we'll overwrite it, which won't change the - # size of the pool. Because accessing a key should move it to - # the end of the eviction line, we pop it out first. - evicted_item = key, self._container.pop(key) - self._container[key] = value - except KeyError: - # When the key does not exist, we insert the value first so that - # evicting works in all cases, including when self._maxsize is 0 - self._container[key] = value - if len(self._container) > self._maxsize: - # If we didn't evict an existing value, and we've hit our maximum - # size, then we have to evict the least recently used item from - # the beginning of the container. - evicted_item = self._container.popitem(last=False) - - # After releasing the lock on the pool, dispose of any evicted value. - if evicted_item is not None and self.dispose_func: - _, evicted_value = evicted_item - self.dispose_func(evicted_value) - - def __delitem__(self, key: _KT) -> None: - with self.lock: - value = self._container.pop(key) - - if self.dispose_func: - self.dispose_func(value) - - def __len__(self) -> int: - with self.lock: - return len(self._container) - - def __iter__(self) -> typing.NoReturn: - raise NotImplementedError( - "Iteration over this class is unlikely to be threadsafe." - ) - - def clear(self) -> None: - with self.lock: - # Copy pointers to all values, then wipe the mapping - values = list(self._container.values()) - self._container.clear() - - if self.dispose_func: - for value in values: - self.dispose_func(value) - - def keys(self) -> set[_KT]: # type: ignore[override] - with self.lock: - return set(self._container.keys()) - - -class HTTPHeaderDictItemView(set[tuple[str, str]]): - """ - HTTPHeaderDict is unusual for a Mapping[str, str] in that it has two modes of - address. - - If we directly try to get an item with a particular name, we will get a string - back that is the concatenated version of all the values: - - >>> d['X-Header-Name'] - 'Value1, Value2, Value3' - - However, if we iterate over an HTTPHeaderDict's items, we will optionally combine - these values based on whether combine=True was called when building up the dictionary - - >>> d = HTTPHeaderDict({"A": "1", "B": "foo"}) - >>> d.add("A", "2", combine=True) - >>> d.add("B", "bar") - >>> list(d.items()) - [ - ('A', '1, 2'), - ('B', 'foo'), - ('B', 'bar'), - ] - - This class conforms to the interface required by the MutableMapping ABC while - also giving us the nonstandard iteration behavior we want; items with duplicate - keys, ordered by time of first insertion. - """ - - _headers: HTTPHeaderDict - - def __init__(self, headers: HTTPHeaderDict) -> None: - self._headers = headers - - def __len__(self) -> int: - return len(list(self._headers.iteritems())) - - def __iter__(self) -> typing.Iterator[tuple[str, str]]: - return self._headers.iteritems() - - def __contains__(self, item: object) -> bool: - if isinstance(item, tuple) and len(item) == 2: - passed_key, passed_val = item - if isinstance(passed_key, str) and isinstance(passed_val, str): - return self._headers._has_value_for_header(passed_key, passed_val) - return False - - -class HTTPHeaderDict(typing.MutableMapping[str, str]): - """ - :param headers: - An iterable of field-value pairs. Must not contain multiple field names - when compared case-insensitively. - - :param kwargs: - Additional field-value pairs to pass in to ``dict.update``. - - A ``dict`` like container for storing HTTP Headers. - - Field names are stored and compared case-insensitively in compliance with - RFC 7230. Iteration provides the first case-sensitive key seen for each - case-insensitive pair. - - Using ``__setitem__`` syntax overwrites fields that compare equal - case-insensitively in order to maintain ``dict``'s api. For fields that - compare equal, instead create a new ``HTTPHeaderDict`` and use ``.add`` - in a loop. - - If multiple fields that are equal case-insensitively are passed to the - constructor or ``.update``, the behavior is undefined and some will be - lost. - - >>> headers = HTTPHeaderDict() - >>> headers.add('Set-Cookie', 'foo=bar') - >>> headers.add('set-cookie', 'baz=quxx') - >>> headers['content-length'] = '7' - >>> headers['SET-cookie'] - 'foo=bar, baz=quxx' - >>> headers['Content-Length'] - '7' - """ - - _container: typing.MutableMapping[str, list[str]] - - def __init__(self, headers: ValidHTTPHeaderSource | None = None, **kwargs: str): - super().__init__() - self._container = {} # 'dict' is insert-ordered - if headers is not None: - if isinstance(headers, HTTPHeaderDict): - self._copy_from(headers) - else: - self.extend(headers) - if kwargs: - self.extend(kwargs) - - def __setitem__(self, key: str, val: str) -> None: - # avoid a bytes/str comparison by decoding before httplib - if isinstance(key, bytes): - key = key.decode("latin-1") - self._container[key.lower()] = [key, val] - - def __getitem__(self, key: str) -> str: - val = self._container[key.lower()] - return ", ".join(val[1:]) - - def __delitem__(self, key: str) -> None: - del self._container[key.lower()] - - def __contains__(self, key: object) -> bool: - if isinstance(key, str): - return key.lower() in self._container - return False - - def setdefault(self, key: str, default: str = "") -> str: - return super().setdefault(key, default) - - def __eq__(self, other: object) -> bool: - maybe_constructable = ensure_can_construct_http_header_dict(other) - if maybe_constructable is None: - return False - else: - other_as_http_header_dict = type(self)(maybe_constructable) - - return {k.lower(): v for k, v in self.itermerged()} == { - k.lower(): v for k, v in other_as_http_header_dict.itermerged() - } - - def __ne__(self, other: object) -> bool: - return not self.__eq__(other) - - def __len__(self) -> int: - return len(self._container) - - def __iter__(self) -> typing.Iterator[str]: - # Only provide the originally cased names - for vals in self._container.values(): - yield vals[0] - - def discard(self, key: str) -> None: - try: - del self[key] - except KeyError: - pass - - def add(self, key: str, val: str, *, combine: bool = False) -> None: - """Adds a (name, value) pair, doesn't overwrite the value if it already - exists. - - If this is called with combine=True, instead of adding a new header value - as a distinct item during iteration, this will instead append the value to - any existing header value with a comma. If no existing header value exists - for the key, then the value will simply be added, ignoring the combine parameter. - - >>> headers = HTTPHeaderDict(foo='bar') - >>> headers.add('Foo', 'baz') - >>> headers['foo'] - 'bar, baz' - >>> list(headers.items()) - [('foo', 'bar'), ('foo', 'baz')] - >>> headers.add('foo', 'quz', combine=True) - >>> list(headers.items()) - [('foo', 'bar, baz, quz')] - """ - # avoid a bytes/str comparison by decoding before httplib - if isinstance(key, bytes): - key = key.decode("latin-1") - key_lower = key.lower() - new_vals = [key, val] - # Keep the common case aka no item present as fast as possible - vals = self._container.setdefault(key_lower, new_vals) - if new_vals is not vals: - # if there are values here, then there is at least the initial - # key/value pair - assert len(vals) >= 2 - if combine: - vals[-1] = vals[-1] + ", " + val - else: - vals.append(val) - - def extend(self, *args: ValidHTTPHeaderSource, **kwargs: str) -> None: - """Generic import function for any type of header-like object. - Adapted version of MutableMapping.update in order to insert items - with self.add instead of self.__setitem__ - """ - if len(args) > 1: - raise TypeError( - f"extend() takes at most 1 positional arguments ({len(args)} given)" - ) - other = args[0] if len(args) >= 1 else () - - if isinstance(other, HTTPHeaderDict): - for key, val in other.iteritems(): - self.add(key, val) - elif isinstance(other, typing.Mapping): - for key, val in other.items(): - self.add(key, val) - elif isinstance(other, typing.Iterable): - other = typing.cast(typing.Iterable[tuple[str, str]], other) - for key, value in other: - self.add(key, value) - elif hasattr(other, "keys") and hasattr(other, "__getitem__"): - # THIS IS NOT A TYPESAFE BRANCH - # In this branch, the object has a `keys` attr but is not a Mapping or any of - # the other types indicated in the method signature. We do some stuff with - # it as though it partially implements the Mapping interface, but we're not - # doing that stuff safely AT ALL. - for key in other.keys(): - self.add(key, other[key]) - - for key, value in kwargs.items(): - self.add(key, value) - - @typing.overload - def getlist(self, key: str) -> list[str]: ... - - @typing.overload - def getlist(self, key: str, default: _DT) -> list[str] | _DT: ... - - def getlist( - self, key: str, default: _Sentinel | _DT = _Sentinel.not_passed - ) -> list[str] | _DT: - """Returns a list of all the values for the named field. Returns an - empty list if the key doesn't exist.""" - try: - vals = self._container[key.lower()] - except KeyError: - if default is _Sentinel.not_passed: - # _DT is unbound; empty list is instance of List[str] - return [] - # _DT is bound; default is instance of _DT - return default - else: - # _DT may or may not be bound; vals[1:] is instance of List[str], which - # meets our external interface requirement of `Union[List[str], _DT]`. - return vals[1:] - - def _prepare_for_method_change(self) -> Self: - """ - Remove content-specific header fields before changing the request - method to GET or HEAD according to RFC 9110, Section 15.4. - """ - content_specific_headers = [ - "Content-Encoding", - "Content-Language", - "Content-Location", - "Content-Type", - "Content-Length", - "Digest", - "Last-Modified", - ] - for header in content_specific_headers: - self.discard(header) - return self - - # Backwards compatibility for httplib - getheaders = getlist - getallmatchingheaders = getlist - iget = getlist - - # Backwards compatibility for http.cookiejar - get_all = getlist - - def __repr__(self) -> str: - return f"{type(self).__name__}({dict(self.itermerged())})" - - def _copy_from(self, other: HTTPHeaderDict) -> None: - for key in other: - val = other.getlist(key) - self._container[key.lower()] = [key, *val] - - def copy(self) -> Self: - clone = type(self)() - clone._copy_from(self) - return clone - - def iteritems(self) -> typing.Iterator[tuple[str, str]]: - """Iterate over all header lines, including duplicate ones.""" - for key in self: - vals = self._container[key.lower()] - for val in vals[1:]: - yield vals[0], val - - def itermerged(self) -> typing.Iterator[tuple[str, str]]: - """Iterate over all headers, merging duplicate ones together.""" - for key in self: - val = self._container[key.lower()] - yield val[0], ", ".join(val[1:]) - - def items(self) -> HTTPHeaderDictItemView: # type: ignore[override] - return HTTPHeaderDictItemView(self) - - def _has_value_for_header(self, header_name: str, potential_value: str) -> bool: - if header_name in self: - return potential_value in self._container[header_name.lower()][1:] - return False - - def __ior__(self, other: object) -> HTTPHeaderDict: - # Supports extending a header dict in-place using operator |= - # combining items with add instead of __setitem__ - maybe_constructable = ensure_can_construct_http_header_dict(other) - if maybe_constructable is None: - return NotImplemented - self.extend(maybe_constructable) - return self - - def __or__(self, other: object) -> Self: - # Supports merging header dicts using operator | - # combining items with add instead of __setitem__ - maybe_constructable = ensure_can_construct_http_header_dict(other) - if maybe_constructable is None: - return NotImplemented - result = self.copy() - result.extend(maybe_constructable) - return result - - def __ror__(self, other: object) -> Self: - # Supports merging header dicts using operator | when other is on left side - # combining items with add instead of __setitem__ - maybe_constructable = ensure_can_construct_http_header_dict(other) - if maybe_constructable is None: - return NotImplemented - result = type(self)(maybe_constructable) - result.extend(self) - return result diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_request_methods.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/_request_methods.py deleted file mode 100644 index 297c271b..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_request_methods.py +++ /dev/null @@ -1,278 +0,0 @@ -from __future__ import annotations - -import json as _json -import typing -from urllib.parse import urlencode - -from ._base_connection import _TYPE_BODY -from ._collections import HTTPHeaderDict -from .filepost import _TYPE_FIELDS, encode_multipart_formdata -from .response import BaseHTTPResponse - -__all__ = ["RequestMethods"] - -_TYPE_ENCODE_URL_FIELDS = typing.Union[ - typing.Sequence[tuple[str, typing.Union[str, bytes]]], - typing.Mapping[str, typing.Union[str, bytes]], -] - - -class RequestMethods: - """ - Convenience mixin for classes who implement a :meth:`urlopen` method, such - as :class:`urllib3.HTTPConnectionPool` and - :class:`urllib3.PoolManager`. - - Provides behavior for making common types of HTTP request methods and - decides which type of request field encoding to use. - - Specifically, - - :meth:`.request_encode_url` is for sending requests whose fields are - encoded in the URL (such as GET, HEAD, DELETE). - - :meth:`.request_encode_body` is for sending requests whose fields are - encoded in the *body* of the request using multipart or www-form-urlencoded - (such as for POST, PUT, PATCH). - - :meth:`.request` is for making any kind of request, it will look up the - appropriate encoding format and use one of the above two methods to make - the request. - - Initializer parameters: - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - """ - - _encode_url_methods = {"DELETE", "GET", "HEAD", "OPTIONS"} - - def __init__(self, headers: typing.Mapping[str, str] | None = None) -> None: - self.headers = headers or {} - - def urlopen( - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - encode_multipart: bool = True, - multipart_boundary: str | None = None, - **kw: typing.Any, - ) -> BaseHTTPResponse: # Abstract - raise NotImplementedError( - "Classes extending RequestMethods must implement " - "their own ``urlopen`` method." - ) - - def request( - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - fields: _TYPE_FIELDS | None = None, - headers: typing.Mapping[str, str] | None = None, - json: typing.Any | None = None, - **urlopen_kw: typing.Any, - ) -> BaseHTTPResponse: - """ - Make a request using :meth:`urlopen` with the appropriate encoding of - ``fields`` based on the ``method`` used. - - This is a convenience method that requires the least amount of manual - effort. It can be used in most situations, while still having the - option to drop down to more specific methods when necessary, such as - :meth:`request_encode_url`, :meth:`request_encode_body`, - or even the lowest level :meth:`urlopen`. - - :param method: - HTTP request method (such as GET, POST, PUT, etc.) - - :param url: - The URL to perform the request on. - - :param body: - Data to send in the request body, either :class:`str`, :class:`bytes`, - an iterable of :class:`str`/:class:`bytes`, or a file-like object. - - :param fields: - Data to encode and send in the URL or request body, depending on ``method``. - - :param headers: - Dictionary of custom headers to send, such as User-Agent, - If-None-Match, etc. If None, pool headers are used. If provided, - these headers completely replace any pool-specific headers. - - :param json: - Data to encode and send as JSON with UTF-encoded in the request body. - The ``"Content-Type"`` header will be set to ``"application/json"`` - unless specified otherwise. - """ - method = method.upper() - - if json is not None and body is not None: - raise TypeError( - "request got values for both 'body' and 'json' parameters which are mutually exclusive" - ) - - if json is not None: - if headers is None: - headers = self.headers - - if not ("content-type" in map(str.lower, headers.keys())): - headers = HTTPHeaderDict(headers) - headers["Content-Type"] = "application/json" - - body = _json.dumps(json, separators=(",", ":"), ensure_ascii=False).encode( - "utf-8" - ) - - if body is not None: - urlopen_kw["body"] = body - - if method in self._encode_url_methods: - return self.request_encode_url( - method, - url, - fields=fields, # type: ignore[arg-type] - headers=headers, - **urlopen_kw, - ) - else: - return self.request_encode_body( - method, url, fields=fields, headers=headers, **urlopen_kw - ) - - def request_encode_url( - self, - method: str, - url: str, - fields: _TYPE_ENCODE_URL_FIELDS | None = None, - headers: typing.Mapping[str, str] | None = None, - **urlopen_kw: str, - ) -> BaseHTTPResponse: - """ - Make a request using :meth:`urlopen` with the ``fields`` encoded in - the url. This is useful for request methods like GET, HEAD, DELETE, etc. - - :param method: - HTTP request method (such as GET, POST, PUT, etc.) - - :param url: - The URL to perform the request on. - - :param fields: - Data to encode and send in the URL. - - :param headers: - Dictionary of custom headers to send, such as User-Agent, - If-None-Match, etc. If None, pool headers are used. If provided, - these headers completely replace any pool-specific headers. - """ - if headers is None: - headers = self.headers - - extra_kw: dict[str, typing.Any] = {"headers": headers} - extra_kw.update(urlopen_kw) - - if fields: - url += "?" + urlencode(fields) - - return self.urlopen(method, url, **extra_kw) - - def request_encode_body( - self, - method: str, - url: str, - fields: _TYPE_FIELDS | None = None, - headers: typing.Mapping[str, str] | None = None, - encode_multipart: bool = True, - multipart_boundary: str | None = None, - **urlopen_kw: str, - ) -> BaseHTTPResponse: - """ - Make a request using :meth:`urlopen` with the ``fields`` encoded in - the body. This is useful for request methods like POST, PUT, PATCH, etc. - - When ``encode_multipart=True`` (default), then - :func:`urllib3.encode_multipart_formdata` is used to encode - the payload with the appropriate content type. Otherwise - :func:`urllib.parse.urlencode` is used with the - 'application/x-www-form-urlencoded' content type. - - Multipart encoding must be used when posting files, and it's reasonably - safe to use it in other times too. However, it may break request - signing, such as with OAuth. - - Supports an optional ``fields`` parameter of key/value strings AND - key/filetuple. A filetuple is a (filename, data, MIME type) tuple where - the MIME type is optional. For example:: - - fields = { - 'foo': 'bar', - 'fakefile': ('foofile.txt', 'contents of foofile'), - 'realfile': ('barfile.txt', open('realfile').read()), - 'typedfile': ('bazfile.bin', open('bazfile').read(), - 'image/jpeg'), - 'nonamefile': 'contents of nonamefile field', - } - - When uploading a file, providing a filename (the first parameter of the - tuple) is optional but recommended to best mimic behavior of browsers. - - Note that if ``headers`` are supplied, the 'Content-Type' header will - be overwritten because it depends on the dynamic random boundary string - which is used to compose the body of the request. The random boundary - string can be explicitly set with the ``multipart_boundary`` parameter. - - :param method: - HTTP request method (such as GET, POST, PUT, etc.) - - :param url: - The URL to perform the request on. - - :param fields: - Data to encode and send in the request body. - - :param headers: - Dictionary of custom headers to send, such as User-Agent, - If-None-Match, etc. If None, pool headers are used. If provided, - these headers completely replace any pool-specific headers. - - :param encode_multipart: - If True, encode the ``fields`` using the multipart/form-data MIME - format. - - :param multipart_boundary: - If not specified, then a random boundary will be generated using - :func:`urllib3.filepost.choose_boundary`. - """ - if headers is None: - headers = self.headers - - extra_kw: dict[str, typing.Any] = {"headers": HTTPHeaderDict(headers)} - body: bytes | str - - if fields: - if "body" in urlopen_kw: - raise TypeError( - "request got values for both 'fields' and 'body', can only specify one." - ) - - if encode_multipart: - body, content_type = encode_multipart_formdata( - fields, boundary=multipart_boundary - ) - else: - body, content_type = ( - urlencode(fields), # type: ignore[arg-type] - "application/x-www-form-urlencoded", - ) - - extra_kw["body"] = body - extra_kw["headers"].setdefault("Content-Type", content_type) - - extra_kw.update(urlopen_kw) - - return self.urlopen(method, url, **extra_kw) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_version.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/_version.py deleted file mode 100644 index 49707ce5..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/_version.py +++ /dev/null @@ -1,21 +0,0 @@ -# file generated by setuptools-scm -# don't change, don't track in version control - -__all__ = ["__version__", "__version_tuple__", "version", "version_tuple"] - -TYPE_CHECKING = False -if TYPE_CHECKING: - from typing import Tuple - from typing import Union - - VERSION_TUPLE = Tuple[Union[int, str], ...] -else: - VERSION_TUPLE = object - -version: str -__version__: str -__version_tuple__: VERSION_TUPLE -version_tuple: VERSION_TUPLE - -__version__ = version = '2.5.0' -__version_tuple__ = version_tuple = (2, 5, 0) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/connection.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/connection.py deleted file mode 100644 index 8082387d..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/connection.py +++ /dev/null @@ -1,1093 +0,0 @@ -from __future__ import annotations - -import datetime -import http.client -import logging -import os -import re -import socket -import sys -import threading -import typing -import warnings -from http.client import HTTPConnection as _HTTPConnection -from http.client import HTTPException as HTTPException # noqa: F401 -from http.client import ResponseNotReady -from socket import timeout as SocketTimeout - -if typing.TYPE_CHECKING: - from .response import HTTPResponse - from .util.ssl_ import _TYPE_PEER_CERT_RET_DICT - from .util.ssltransport import SSLTransport - -from ._collections import HTTPHeaderDict -from .http2 import probe as http2_probe -from .util.response import assert_header_parsing -from .util.timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT, Timeout -from .util.util import to_str -from .util.wait import wait_for_read - -try: # Compiled with SSL? - import ssl - - BaseSSLError = ssl.SSLError -except (ImportError, AttributeError): - ssl = None # type: ignore[assignment] - - class BaseSSLError(BaseException): # type: ignore[no-redef] - pass - - -from ._base_connection import _TYPE_BODY -from ._base_connection import ProxyConfig as ProxyConfig -from ._base_connection import _ResponseOptions as _ResponseOptions -from ._version import __version__ -from .exceptions import ( - ConnectTimeoutError, - HeaderParsingError, - NameResolutionError, - NewConnectionError, - ProxyError, - SystemTimeWarning, -) -from .util import SKIP_HEADER, SKIPPABLE_HEADERS, connection, ssl_ -from .util.request import body_to_chunks -from .util.ssl_ import assert_fingerprint as _assert_fingerprint -from .util.ssl_ import ( - create_urllib3_context, - is_ipaddress, - resolve_cert_reqs, - resolve_ssl_version, - ssl_wrap_socket, -) -from .util.ssl_match_hostname import CertificateError, match_hostname -from .util.url import Url - -# Not a no-op, we're adding this to the namespace so it can be imported. -ConnectionError = ConnectionError -BrokenPipeError = BrokenPipeError - - -log = logging.getLogger(__name__) - -port_by_scheme = {"http": 80, "https": 443} - -# When it comes time to update this value as a part of regular maintenance -# (ie test_recent_date is failing) update it to ~6 months before the current date. -RECENT_DATE = datetime.date(2025, 1, 1) - -_CONTAINS_CONTROL_CHAR_RE = re.compile(r"[^-!#$%&'*+.^_`|~0-9a-zA-Z]") - - -class HTTPConnection(_HTTPConnection): - """ - Based on :class:`http.client.HTTPConnection` but provides an extra constructor - backwards-compatibility layer between older and newer Pythons. - - Additional keyword parameters are used to configure attributes of the connection. - Accepted parameters include: - - - ``source_address``: Set the source address for the current connection. - - ``socket_options``: Set specific options on the underlying socket. If not specified, then - defaults are loaded from ``HTTPConnection.default_socket_options`` which includes disabling - Nagle's algorithm (sets TCP_NODELAY to 1) unless the connection is behind a proxy. - - For example, if you wish to enable TCP Keep Alive in addition to the defaults, - you might pass: - - .. code-block:: python - - HTTPConnection.default_socket_options + [ - (socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1), - ] - - Or you may want to disable the defaults by passing an empty list (e.g., ``[]``). - """ - - default_port: typing.ClassVar[int] = port_by_scheme["http"] # type: ignore[misc] - - #: Disable Nagle's algorithm by default. - #: ``[(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)]`` - default_socket_options: typing.ClassVar[connection._TYPE_SOCKET_OPTIONS] = [ - (socket.IPPROTO_TCP, socket.TCP_NODELAY, 1) - ] - - #: Whether this connection verifies the host's certificate. - is_verified: bool = False - - #: Whether this proxy connection verified the proxy host's certificate. - # If no proxy is currently connected to the value will be ``None``. - proxy_is_verified: bool | None = None - - blocksize: int - source_address: tuple[str, int] | None - socket_options: connection._TYPE_SOCKET_OPTIONS | None - - _has_connected_to_proxy: bool - _response_options: _ResponseOptions | None - _tunnel_host: str | None - _tunnel_port: int | None - _tunnel_scheme: str | None - - def __init__( - self, - host: str, - port: int | None = None, - *, - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - source_address: tuple[str, int] | None = None, - blocksize: int = 16384, - socket_options: None | ( - connection._TYPE_SOCKET_OPTIONS - ) = default_socket_options, - proxy: Url | None = None, - proxy_config: ProxyConfig | None = None, - ) -> None: - super().__init__( - host=host, - port=port, - timeout=Timeout.resolve_default_timeout(timeout), - source_address=source_address, - blocksize=blocksize, - ) - self.socket_options = socket_options - self.proxy = proxy - self.proxy_config = proxy_config - - self._has_connected_to_proxy = False - self._response_options = None - self._tunnel_host: str | None = None - self._tunnel_port: int | None = None - self._tunnel_scheme: str | None = None - - @property - def host(self) -> str: - """ - Getter method to remove any trailing dots that indicate the hostname is an FQDN. - - In general, SSL certificates don't include the trailing dot indicating a - fully-qualified domain name, and thus, they don't validate properly when - checked against a domain name that includes the dot. In addition, some - servers may not expect to receive the trailing dot when provided. - - However, the hostname with trailing dot is critical to DNS resolution; doing a - lookup with the trailing dot will properly only resolve the appropriate FQDN, - whereas a lookup without a trailing dot will search the system's search domain - list. Thus, it's important to keep the original host around for use only in - those cases where it's appropriate (i.e., when doing DNS lookup to establish the - actual TCP connection across which we're going to send HTTP requests). - """ - return self._dns_host.rstrip(".") - - @host.setter - def host(self, value: str) -> None: - """ - Setter for the `host` property. - - We assume that only urllib3 uses the _dns_host attribute; httplib itself - only uses `host`, and it seems reasonable that other libraries follow suit. - """ - self._dns_host = value - - def _new_conn(self) -> socket.socket: - """Establish a socket connection and set nodelay settings on it. - - :return: New socket connection. - """ - try: - sock = connection.create_connection( - (self._dns_host, self.port), - self.timeout, - source_address=self.source_address, - socket_options=self.socket_options, - ) - except socket.gaierror as e: - raise NameResolutionError(self.host, self, e) from e - except SocketTimeout as e: - raise ConnectTimeoutError( - self, - f"Connection to {self.host} timed out. (connect timeout={self.timeout})", - ) from e - - except OSError as e: - raise NewConnectionError( - self, f"Failed to establish a new connection: {e}" - ) from e - - sys.audit("http.client.connect", self, self.host, self.port) - - return sock - - def set_tunnel( - self, - host: str, - port: int | None = None, - headers: typing.Mapping[str, str] | None = None, - scheme: str = "http", - ) -> None: - if scheme not in ("http", "https"): - raise ValueError( - f"Invalid proxy scheme for tunneling: {scheme!r}, must be either 'http' or 'https'" - ) - super().set_tunnel(host, port=port, headers=headers) - self._tunnel_scheme = scheme - - if sys.version_info < (3, 11, 9) or ((3, 12) <= sys.version_info < (3, 12, 3)): - # Taken from python/cpython#100986 which was backported in 3.11.9 and 3.12.3. - # When using connection_from_host, host will come without brackets. - def _wrap_ipv6(self, ip: bytes) -> bytes: - if b":" in ip and ip[0] != b"["[0]: - return b"[" + ip + b"]" - return ip - - if sys.version_info < (3, 11, 9): - # `_tunnel` copied from 3.11.13 backporting - # https://github.com/python/cpython/commit/0d4026432591d43185568dd31cef6a034c4b9261 - # and https://github.com/python/cpython/commit/6fbc61070fda2ffb8889e77e3b24bca4249ab4d1 - def _tunnel(self) -> None: - _MAXLINE = http.client._MAXLINE # type: ignore[attr-defined] - connect = b"CONNECT %s:%d HTTP/1.0\r\n" % ( # type: ignore[str-format] - self._wrap_ipv6(self._tunnel_host.encode("ascii")), # type: ignore[union-attr] - self._tunnel_port, - ) - headers = [connect] - for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined] - headers.append(f"{header}: {value}\r\n".encode("latin-1")) - headers.append(b"\r\n") - # Making a single send() call instead of one per line encourages - # the host OS to use a more optimal packet size instead of - # potentially emitting a series of small packets. - self.send(b"".join(headers)) - del headers - - response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined] - try: - (version, code, message) = response._read_status() # type: ignore[attr-defined] - - if code != http.HTTPStatus.OK: - self.close() - raise OSError( - f"Tunnel connection failed: {code} {message.strip()}" - ) - while True: - line = response.fp.readline(_MAXLINE + 1) - if len(line) > _MAXLINE: - raise http.client.LineTooLong("header line") - if not line: - # for sites which EOF without sending a trailer - break - if line in (b"\r\n", b"\n", b""): - break - - if self.debuglevel > 0: - print("header:", line.decode()) - finally: - response.close() - - elif (3, 12) <= sys.version_info < (3, 12, 3): - # `_tunnel` copied from 3.12.11 backporting - # https://github.com/python/cpython/commit/23aef575c7629abcd4aaf028ebd226fb41a4b3c8 - def _tunnel(self) -> None: # noqa: F811 - connect = b"CONNECT %s:%d HTTP/1.1\r\n" % ( # type: ignore[str-format] - self._wrap_ipv6(self._tunnel_host.encode("idna")), # type: ignore[union-attr] - self._tunnel_port, - ) - headers = [connect] - for header, value in self._tunnel_headers.items(): # type: ignore[attr-defined] - headers.append(f"{header}: {value}\r\n".encode("latin-1")) - headers.append(b"\r\n") - # Making a single send() call instead of one per line encourages - # the host OS to use a more optimal packet size instead of - # potentially emitting a series of small packets. - self.send(b"".join(headers)) - del headers - - response = self.response_class(self.sock, method=self._method) # type: ignore[attr-defined] - try: - (version, code, message) = response._read_status() # type: ignore[attr-defined] - - self._raw_proxy_headers = http.client._read_headers(response.fp) # type: ignore[attr-defined] - - if self.debuglevel > 0: - for header in self._raw_proxy_headers: - print("header:", header.decode()) - - if code != http.HTTPStatus.OK: - self.close() - raise OSError( - f"Tunnel connection failed: {code} {message.strip()}" - ) - - finally: - response.close() - - def connect(self) -> None: - self.sock = self._new_conn() - if self._tunnel_host: - # If we're tunneling it means we're connected to our proxy. - self._has_connected_to_proxy = True - - # TODO: Fix tunnel so it doesn't depend on self.sock state. - self._tunnel() - - # If there's a proxy to be connected to we are fully connected. - # This is set twice (once above and here) due to forwarding proxies - # not using tunnelling. - self._has_connected_to_proxy = bool(self.proxy) - - if self._has_connected_to_proxy: - self.proxy_is_verified = False - - @property - def is_closed(self) -> bool: - return self.sock is None - - @property - def is_connected(self) -> bool: - if self.sock is None: - return False - return not wait_for_read(self.sock, timeout=0.0) - - @property - def has_connected_to_proxy(self) -> bool: - return self._has_connected_to_proxy - - @property - def proxy_is_forwarding(self) -> bool: - """ - Return True if a forwarding proxy is configured, else return False - """ - return bool(self.proxy) and self._tunnel_host is None - - @property - def proxy_is_tunneling(self) -> bool: - """ - Return True if a tunneling proxy is configured, else return False - """ - return self._tunnel_host is not None - - def close(self) -> None: - try: - super().close() - finally: - # Reset all stateful properties so connection - # can be re-used without leaking prior configs. - self.sock = None - self.is_verified = False - self.proxy_is_verified = None - self._has_connected_to_proxy = False - self._response_options = None - self._tunnel_host = None - self._tunnel_port = None - self._tunnel_scheme = None - - def putrequest( - self, - method: str, - url: str, - skip_host: bool = False, - skip_accept_encoding: bool = False, - ) -> None: - """""" - # Empty docstring because the indentation of CPython's implementation - # is broken but we don't want this method in our documentation. - match = _CONTAINS_CONTROL_CHAR_RE.search(method) - if match: - raise ValueError( - f"Method cannot contain non-token characters {method!r} (found at least {match.group()!r})" - ) - - return super().putrequest( - method, url, skip_host=skip_host, skip_accept_encoding=skip_accept_encoding - ) - - def putheader(self, header: str, *values: str) -> None: # type: ignore[override] - """""" - if not any(isinstance(v, str) and v == SKIP_HEADER for v in values): - super().putheader(header, *values) - elif to_str(header.lower()) not in SKIPPABLE_HEADERS: - skippable_headers = "', '".join( - [str.title(header) for header in sorted(SKIPPABLE_HEADERS)] - ) - raise ValueError( - f"urllib3.util.SKIP_HEADER only supports '{skippable_headers}'" - ) - - # `request` method's signature intentionally violates LSP. - # urllib3's API is different from `http.client.HTTPConnection` and the subclassing is only incidental. - def request( # type: ignore[override] - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - *, - chunked: bool = False, - preload_content: bool = True, - decode_content: bool = True, - enforce_content_length: bool = True, - ) -> None: - # Update the inner socket's timeout value to send the request. - # This only triggers if the connection is re-used. - if self.sock is not None: - self.sock.settimeout(self.timeout) - - # Store these values to be fed into the HTTPResponse - # object later. TODO: Remove this in favor of a real - # HTTP lifecycle mechanism. - - # We have to store these before we call .request() - # because sometimes we can still salvage a response - # off the wire even if we aren't able to completely - # send the request body. - self._response_options = _ResponseOptions( - request_method=method, - request_url=url, - preload_content=preload_content, - decode_content=decode_content, - enforce_content_length=enforce_content_length, - ) - - if headers is None: - headers = {} - header_keys = frozenset(to_str(k.lower()) for k in headers) - skip_accept_encoding = "accept-encoding" in header_keys - skip_host = "host" in header_keys - self.putrequest( - method, url, skip_accept_encoding=skip_accept_encoding, skip_host=skip_host - ) - - # Transform the body into an iterable of sendall()-able chunks - # and detect if an explicit Content-Length is doable. - chunks_and_cl = body_to_chunks(body, method=method, blocksize=self.blocksize) - chunks = chunks_and_cl.chunks - content_length = chunks_and_cl.content_length - - # When chunked is explicit set to 'True' we respect that. - if chunked: - if "transfer-encoding" not in header_keys: - self.putheader("Transfer-Encoding", "chunked") - else: - # Detect whether a framing mechanism is already in use. If so - # we respect that value, otherwise we pick chunked vs content-length - # depending on the type of 'body'. - if "content-length" in header_keys: - chunked = False - elif "transfer-encoding" in header_keys: - chunked = True - - # Otherwise we go off the recommendation of 'body_to_chunks()'. - else: - chunked = False - if content_length is None: - if chunks is not None: - chunked = True - self.putheader("Transfer-Encoding", "chunked") - else: - self.putheader("Content-Length", str(content_length)) - - # Now that framing headers are out of the way we send all the other headers. - if "user-agent" not in header_keys: - self.putheader("User-Agent", _get_default_user_agent()) - for header, value in headers.items(): - self.putheader(header, value) - self.endheaders() - - # If we're given a body we start sending that in chunks. - if chunks is not None: - for chunk in chunks: - # Sending empty chunks isn't allowed for TE: chunked - # as it indicates the end of the body. - if not chunk: - continue - if isinstance(chunk, str): - chunk = chunk.encode("utf-8") - if chunked: - self.send(b"%x\r\n%b\r\n" % (len(chunk), chunk)) - else: - self.send(chunk) - - # Regardless of whether we have a body or not, if we're in - # chunked mode we want to send an explicit empty chunk. - if chunked: - self.send(b"0\r\n\r\n") - - def request_chunked( - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - ) -> None: - """ - Alternative to the common request method, which sends the - body with chunked encoding and not as one block - """ - warnings.warn( - "HTTPConnection.request_chunked() is deprecated and will be removed " - "in urllib3 v2.1.0. Instead use HTTPConnection.request(..., chunked=True).", - category=DeprecationWarning, - stacklevel=2, - ) - self.request(method, url, body=body, headers=headers, chunked=True) - - def getresponse( # type: ignore[override] - self, - ) -> HTTPResponse: - """ - Get the response from the server. - - If the HTTPConnection is in the correct state, returns an instance of HTTPResponse or of whatever object is returned by the response_class variable. - - If a request has not been sent or if a previous response has not be handled, ResponseNotReady is raised. If the HTTP response indicates that the connection should be closed, then it will be closed before the response is returned. When the connection is closed, the underlying socket is closed. - """ - # Raise the same error as http.client.HTTPConnection - if self._response_options is None: - raise ResponseNotReady() - - # Reset this attribute for being used again. - resp_options = self._response_options - self._response_options = None - - # Since the connection's timeout value may have been updated - # we need to set the timeout on the socket. - self.sock.settimeout(self.timeout) - - # This is needed here to avoid circular import errors - from .response import HTTPResponse - - # Save a reference to the shutdown function before ownership is passed - # to httplib_response - # TODO should we implement it everywhere? - _shutdown = getattr(self.sock, "shutdown", None) - - # Get the response from http.client.HTTPConnection - httplib_response = super().getresponse() - - try: - assert_header_parsing(httplib_response.msg) - except (HeaderParsingError, TypeError) as hpe: - log.warning( - "Failed to parse headers (url=%s): %s", - _url_from_connection(self, resp_options.request_url), - hpe, - exc_info=True, - ) - - headers = HTTPHeaderDict(httplib_response.msg.items()) - - response = HTTPResponse( - body=httplib_response, - headers=headers, - status=httplib_response.status, - version=httplib_response.version, - version_string=getattr(self, "_http_vsn_str", "HTTP/?"), - reason=httplib_response.reason, - preload_content=resp_options.preload_content, - decode_content=resp_options.decode_content, - original_response=httplib_response, - enforce_content_length=resp_options.enforce_content_length, - request_method=resp_options.request_method, - request_url=resp_options.request_url, - sock_shutdown=_shutdown, - ) - return response - - -class HTTPSConnection(HTTPConnection): - """ - Many of the parameters to this constructor are passed to the underlying SSL - socket by means of :py:func:`urllib3.util.ssl_wrap_socket`. - """ - - default_port = port_by_scheme["https"] # type: ignore[misc] - - cert_reqs: int | str | None = None - ca_certs: str | None = None - ca_cert_dir: str | None = None - ca_cert_data: None | str | bytes = None - ssl_version: int | str | None = None - ssl_minimum_version: int | None = None - ssl_maximum_version: int | None = None - assert_fingerprint: str | None = None - _connect_callback: typing.Callable[..., None] | None = None - - def __init__( - self, - host: str, - port: int | None = None, - *, - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - source_address: tuple[str, int] | None = None, - blocksize: int = 16384, - socket_options: None | ( - connection._TYPE_SOCKET_OPTIONS - ) = HTTPConnection.default_socket_options, - proxy: Url | None = None, - proxy_config: ProxyConfig | None = None, - cert_reqs: int | str | None = None, - assert_hostname: None | str | typing.Literal[False] = None, - assert_fingerprint: str | None = None, - server_hostname: str | None = None, - ssl_context: ssl.SSLContext | None = None, - ca_certs: str | None = None, - ca_cert_dir: str | None = None, - ca_cert_data: None | str | bytes = None, - ssl_minimum_version: int | None = None, - ssl_maximum_version: int | None = None, - ssl_version: int | str | None = None, # Deprecated - cert_file: str | None = None, - key_file: str | None = None, - key_password: str | None = None, - ) -> None: - super().__init__( - host, - port=port, - timeout=timeout, - source_address=source_address, - blocksize=blocksize, - socket_options=socket_options, - proxy=proxy, - proxy_config=proxy_config, - ) - - self.key_file = key_file - self.cert_file = cert_file - self.key_password = key_password - self.ssl_context = ssl_context - self.server_hostname = server_hostname - self.assert_hostname = assert_hostname - self.assert_fingerprint = assert_fingerprint - self.ssl_version = ssl_version - self.ssl_minimum_version = ssl_minimum_version - self.ssl_maximum_version = ssl_maximum_version - self.ca_certs = ca_certs and os.path.expanduser(ca_certs) - self.ca_cert_dir = ca_cert_dir and os.path.expanduser(ca_cert_dir) - self.ca_cert_data = ca_cert_data - - # cert_reqs depends on ssl_context so calculate last. - if cert_reqs is None: - if self.ssl_context is not None: - cert_reqs = self.ssl_context.verify_mode - else: - cert_reqs = resolve_cert_reqs(None) - self.cert_reqs = cert_reqs - self._connect_callback = None - - def set_cert( - self, - key_file: str | None = None, - cert_file: str | None = None, - cert_reqs: int | str | None = None, - key_password: str | None = None, - ca_certs: str | None = None, - assert_hostname: None | str | typing.Literal[False] = None, - assert_fingerprint: str | None = None, - ca_cert_dir: str | None = None, - ca_cert_data: None | str | bytes = None, - ) -> None: - """ - This method should only be called once, before the connection is used. - """ - warnings.warn( - "HTTPSConnection.set_cert() is deprecated and will be removed " - "in urllib3 v2.1.0. Instead provide the parameters to the " - "HTTPSConnection constructor.", - category=DeprecationWarning, - stacklevel=2, - ) - - # If cert_reqs is not provided we'll assume CERT_REQUIRED unless we also - # have an SSLContext object in which case we'll use its verify_mode. - if cert_reqs is None: - if self.ssl_context is not None: - cert_reqs = self.ssl_context.verify_mode - else: - cert_reqs = resolve_cert_reqs(None) - - self.key_file = key_file - self.cert_file = cert_file - self.cert_reqs = cert_reqs - self.key_password = key_password - self.assert_hostname = assert_hostname - self.assert_fingerprint = assert_fingerprint - self.ca_certs = ca_certs and os.path.expanduser(ca_certs) - self.ca_cert_dir = ca_cert_dir and os.path.expanduser(ca_cert_dir) - self.ca_cert_data = ca_cert_data - - def connect(self) -> None: - # Today we don't need to be doing this step before the /actual/ socket - # connection, however in the future we'll need to decide whether to - # create a new socket or re-use an existing "shared" socket as a part - # of the HTTP/2 handshake dance. - if self._tunnel_host is not None and self._tunnel_port is not None: - probe_http2_host = self._tunnel_host - probe_http2_port = self._tunnel_port - else: - probe_http2_host = self.host - probe_http2_port = self.port - - # Check if the target origin supports HTTP/2. - # If the value comes back as 'None' it means that the current thread - # is probing for HTTP/2 support. Otherwise, we're waiting for another - # probe to complete, or we get a value right away. - target_supports_http2: bool | None - if "h2" in ssl_.ALPN_PROTOCOLS: - target_supports_http2 = http2_probe.acquire_and_get( - host=probe_http2_host, port=probe_http2_port - ) - else: - # If HTTP/2 isn't going to be offered it doesn't matter if - # the target supports HTTP/2. Don't want to make a probe. - target_supports_http2 = False - - if self._connect_callback is not None: - self._connect_callback( - "before connect", - thread_id=threading.get_ident(), - target_supports_http2=target_supports_http2, - ) - - try: - sock: socket.socket | ssl.SSLSocket - self.sock = sock = self._new_conn() - server_hostname: str = self.host - tls_in_tls = False - - # Do we need to establish a tunnel? - if self.proxy_is_tunneling: - # We're tunneling to an HTTPS origin so need to do TLS-in-TLS. - if self._tunnel_scheme == "https": - # _connect_tls_proxy will verify and assign proxy_is_verified - self.sock = sock = self._connect_tls_proxy(self.host, sock) - tls_in_tls = True - elif self._tunnel_scheme == "http": - self.proxy_is_verified = False - - # If we're tunneling it means we're connected to our proxy. - self._has_connected_to_proxy = True - - self._tunnel() - # Override the host with the one we're requesting data from. - server_hostname = typing.cast(str, self._tunnel_host) - - if self.server_hostname is not None: - server_hostname = self.server_hostname - - is_time_off = datetime.date.today() < RECENT_DATE - if is_time_off: - warnings.warn( - ( - f"System time is way off (before {RECENT_DATE}). This will probably " - "lead to SSL verification errors" - ), - SystemTimeWarning, - ) - - # Remove trailing '.' from fqdn hostnames to allow certificate validation - server_hostname_rm_dot = server_hostname.rstrip(".") - - sock_and_verified = _ssl_wrap_socket_and_match_hostname( - sock=sock, - cert_reqs=self.cert_reqs, - ssl_version=self.ssl_version, - ssl_minimum_version=self.ssl_minimum_version, - ssl_maximum_version=self.ssl_maximum_version, - ca_certs=self.ca_certs, - ca_cert_dir=self.ca_cert_dir, - ca_cert_data=self.ca_cert_data, - cert_file=self.cert_file, - key_file=self.key_file, - key_password=self.key_password, - server_hostname=server_hostname_rm_dot, - ssl_context=self.ssl_context, - tls_in_tls=tls_in_tls, - assert_hostname=self.assert_hostname, - assert_fingerprint=self.assert_fingerprint, - ) - self.sock = sock_and_verified.socket - - # If an error occurs during connection/handshake we may need to release - # our lock so another connection can probe the origin. - except BaseException: - if self._connect_callback is not None: - self._connect_callback( - "after connect failure", - thread_id=threading.get_ident(), - target_supports_http2=target_supports_http2, - ) - - if target_supports_http2 is None: - http2_probe.set_and_release( - host=probe_http2_host, port=probe_http2_port, supports_http2=None - ) - raise - - # If this connection doesn't know if the origin supports HTTP/2 - # we report back to the HTTP/2 probe our result. - if target_supports_http2 is None: - supports_http2 = sock_and_verified.socket.selected_alpn_protocol() == "h2" - http2_probe.set_and_release( - host=probe_http2_host, - port=probe_http2_port, - supports_http2=supports_http2, - ) - - # Forwarding proxies can never have a verified target since - # the proxy is the one doing the verification. Should instead - # use a CONNECT tunnel in order to verify the target. - # See: https://github.com/urllib3/urllib3/issues/3267. - if self.proxy_is_forwarding: - self.is_verified = False - else: - self.is_verified = sock_and_verified.is_verified - - # If there's a proxy to be connected to we are fully connected. - # This is set twice (once above and here) due to forwarding proxies - # not using tunnelling. - self._has_connected_to_proxy = bool(self.proxy) - - # Set `self.proxy_is_verified` unless it's already set while - # establishing a tunnel. - if self._has_connected_to_proxy and self.proxy_is_verified is None: - self.proxy_is_verified = sock_and_verified.is_verified - - def _connect_tls_proxy(self, hostname: str, sock: socket.socket) -> ssl.SSLSocket: - """ - Establish a TLS connection to the proxy using the provided SSL context. - """ - # `_connect_tls_proxy` is called when self._tunnel_host is truthy. - proxy_config = typing.cast(ProxyConfig, self.proxy_config) - ssl_context = proxy_config.ssl_context - sock_and_verified = _ssl_wrap_socket_and_match_hostname( - sock, - cert_reqs=self.cert_reqs, - ssl_version=self.ssl_version, - ssl_minimum_version=self.ssl_minimum_version, - ssl_maximum_version=self.ssl_maximum_version, - ca_certs=self.ca_certs, - ca_cert_dir=self.ca_cert_dir, - ca_cert_data=self.ca_cert_data, - server_hostname=hostname, - ssl_context=ssl_context, - assert_hostname=proxy_config.assert_hostname, - assert_fingerprint=proxy_config.assert_fingerprint, - # Features that aren't implemented for proxies yet: - cert_file=None, - key_file=None, - key_password=None, - tls_in_tls=False, - ) - self.proxy_is_verified = sock_and_verified.is_verified - return sock_and_verified.socket # type: ignore[return-value] - - -class _WrappedAndVerifiedSocket(typing.NamedTuple): - """ - Wrapped socket and whether the connection is - verified after the TLS handshake - """ - - socket: ssl.SSLSocket | SSLTransport - is_verified: bool - - -def _ssl_wrap_socket_and_match_hostname( - sock: socket.socket, - *, - cert_reqs: None | str | int, - ssl_version: None | str | int, - ssl_minimum_version: int | None, - ssl_maximum_version: int | None, - cert_file: str | None, - key_file: str | None, - key_password: str | None, - ca_certs: str | None, - ca_cert_dir: str | None, - ca_cert_data: None | str | bytes, - assert_hostname: None | str | typing.Literal[False], - assert_fingerprint: str | None, - server_hostname: str | None, - ssl_context: ssl.SSLContext | None, - tls_in_tls: bool = False, -) -> _WrappedAndVerifiedSocket: - """Logic for constructing an SSLContext from all TLS parameters, passing - that down into ssl_wrap_socket, and then doing certificate verification - either via hostname or fingerprint. This function exists to guarantee - that both proxies and targets have the same behavior when connecting via TLS. - """ - default_ssl_context = False - if ssl_context is None: - default_ssl_context = True - context = create_urllib3_context( - ssl_version=resolve_ssl_version(ssl_version), - ssl_minimum_version=ssl_minimum_version, - ssl_maximum_version=ssl_maximum_version, - cert_reqs=resolve_cert_reqs(cert_reqs), - ) - else: - context = ssl_context - - context.verify_mode = resolve_cert_reqs(cert_reqs) - - # In some cases, we want to verify hostnames ourselves - if ( - # `ssl` can't verify fingerprints or alternate hostnames - assert_fingerprint - or assert_hostname - # assert_hostname can be set to False to disable hostname checking - or assert_hostname is False - # We still support OpenSSL 1.0.2, which prevents us from verifying - # hostnames easily: https://github.com/pyca/pyopenssl/pull/933 - or ssl_.IS_PYOPENSSL - or not ssl_.HAS_NEVER_CHECK_COMMON_NAME - ): - context.check_hostname = False - - # Try to load OS default certs if none are given. We need to do the hasattr() check - # for custom pyOpenSSL SSLContext objects because they don't support - # load_default_certs(). - if ( - not ca_certs - and not ca_cert_dir - and not ca_cert_data - and default_ssl_context - and hasattr(context, "load_default_certs") - ): - context.load_default_certs() - - # Ensure that IPv6 addresses are in the proper format and don't have a - # scope ID. Python's SSL module fails to recognize scoped IPv6 addresses - # and interprets them as DNS hostnames. - if server_hostname is not None: - normalized = server_hostname.strip("[]") - if "%" in normalized: - normalized = normalized[: normalized.rfind("%")] - if is_ipaddress(normalized): - server_hostname = normalized - - ssl_sock = ssl_wrap_socket( - sock=sock, - keyfile=key_file, - certfile=cert_file, - key_password=key_password, - ca_certs=ca_certs, - ca_cert_dir=ca_cert_dir, - ca_cert_data=ca_cert_data, - server_hostname=server_hostname, - ssl_context=context, - tls_in_tls=tls_in_tls, - ) - - try: - if assert_fingerprint: - _assert_fingerprint( - ssl_sock.getpeercert(binary_form=True), assert_fingerprint - ) - elif ( - context.verify_mode != ssl.CERT_NONE - and not context.check_hostname - and assert_hostname is not False - ): - cert: _TYPE_PEER_CERT_RET_DICT = ssl_sock.getpeercert() # type: ignore[assignment] - - # Need to signal to our match_hostname whether to use 'commonName' or not. - # If we're using our own constructed SSLContext we explicitly set 'False' - # because PyPy hard-codes 'True' from SSLContext.hostname_checks_common_name. - if default_ssl_context: - hostname_checks_common_name = False - else: - hostname_checks_common_name = ( - getattr(context, "hostname_checks_common_name", False) or False - ) - - _match_hostname( - cert, - assert_hostname or server_hostname, # type: ignore[arg-type] - hostname_checks_common_name, - ) - - return _WrappedAndVerifiedSocket( - socket=ssl_sock, - is_verified=context.verify_mode == ssl.CERT_REQUIRED - or bool(assert_fingerprint), - ) - except BaseException: - ssl_sock.close() - raise - - -def _match_hostname( - cert: _TYPE_PEER_CERT_RET_DICT | None, - asserted_hostname: str, - hostname_checks_common_name: bool = False, -) -> None: - # Our upstream implementation of ssl.match_hostname() - # only applies this normalization to IP addresses so it doesn't - # match DNS SANs so we do the same thing! - stripped_hostname = asserted_hostname.strip("[]") - if is_ipaddress(stripped_hostname): - asserted_hostname = stripped_hostname - - try: - match_hostname(cert, asserted_hostname, hostname_checks_common_name) - except CertificateError as e: - log.warning( - "Certificate did not match expected hostname: %s. Certificate: %s", - asserted_hostname, - cert, - ) - # Add cert to exception and reraise so client code can inspect - # the cert when catching the exception, if they want to - e._peer_cert = cert # type: ignore[attr-defined] - raise - - -def _wrap_proxy_error(err: Exception, proxy_scheme: str | None) -> ProxyError: - # Look for the phrase 'wrong version number', if found - # then we should warn the user that we're very sure that - # this proxy is HTTP-only and they have a configuration issue. - error_normalized = " ".join(re.split("[^a-z]", str(err).lower())) - is_likely_http_proxy = ( - "wrong version number" in error_normalized - or "unknown protocol" in error_normalized - or "record layer failure" in error_normalized - ) - http_proxy_warning = ( - ". Your proxy appears to only use HTTP and not HTTPS, " - "try changing your proxy URL to be HTTP. See: " - "https://urllib3.readthedocs.io/en/latest/advanced-usage.html" - "#https-proxy-error-http-proxy" - ) - new_err = ProxyError( - f"Unable to connect to proxy" - f"{http_proxy_warning if is_likely_http_proxy and proxy_scheme == 'https' else ''}", - err, - ) - new_err.__cause__ = err - return new_err - - -def _get_default_user_agent() -> str: - return f"python-urllib3/{__version__}" - - -class DummyConnection: - """Used to detect a failed ConnectionCls import.""" - - -if not ssl: - HTTPSConnection = DummyConnection # type: ignore[misc, assignment] # noqa: F811 - - -VerifiedHTTPSConnection = HTTPSConnection - - -def _url_from_connection( - conn: HTTPConnection | HTTPSConnection, path: str | None = None -) -> str: - """Returns the URL from a given connection. This is mainly used for testing and logging.""" - - scheme = "https" if isinstance(conn, HTTPSConnection) else "http" - - return Url(scheme=scheme, host=conn.host, port=conn.port, path=path).url diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/connectionpool.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/connectionpool.py deleted file mode 100644 index 3a0685b4..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/connectionpool.py +++ /dev/null @@ -1,1178 +0,0 @@ -from __future__ import annotations - -import errno -import logging -import queue -import sys -import typing -import warnings -import weakref -from socket import timeout as SocketTimeout -from types import TracebackType - -from ._base_connection import _TYPE_BODY -from ._collections import HTTPHeaderDict -from ._request_methods import RequestMethods -from .connection import ( - BaseSSLError, - BrokenPipeError, - DummyConnection, - HTTPConnection, - HTTPException, - HTTPSConnection, - ProxyConfig, - _wrap_proxy_error, -) -from .connection import port_by_scheme as port_by_scheme -from .exceptions import ( - ClosedPoolError, - EmptyPoolError, - FullPoolError, - HostChangedError, - InsecureRequestWarning, - LocationValueError, - MaxRetryError, - NewConnectionError, - ProtocolError, - ProxyError, - ReadTimeoutError, - SSLError, - TimeoutError, -) -from .response import BaseHTTPResponse -from .util.connection import is_connection_dropped -from .util.proxy import connection_requires_http_tunnel -from .util.request import _TYPE_BODY_POSITION, set_file_position -from .util.retry import Retry -from .util.ssl_match_hostname import CertificateError -from .util.timeout import _DEFAULT_TIMEOUT, _TYPE_DEFAULT, Timeout -from .util.url import Url, _encode_target -from .util.url import _normalize_host as normalize_host -from .util.url import parse_url -from .util.util import to_str - -if typing.TYPE_CHECKING: - import ssl - - from typing_extensions import Self - - from ._base_connection import BaseHTTPConnection, BaseHTTPSConnection - -log = logging.getLogger(__name__) - -_TYPE_TIMEOUT = typing.Union[Timeout, float, _TYPE_DEFAULT, None] - - -# Pool objects -class ConnectionPool: - """ - Base class for all connection pools, such as - :class:`.HTTPConnectionPool` and :class:`.HTTPSConnectionPool`. - - .. note:: - ConnectionPool.urlopen() does not normalize or percent-encode target URIs - which is useful if your target server doesn't support percent-encoded - target URIs. - """ - - scheme: str | None = None - QueueCls = queue.LifoQueue - - def __init__(self, host: str, port: int | None = None) -> None: - if not host: - raise LocationValueError("No host specified.") - - self.host = _normalize_host(host, scheme=self.scheme) - self.port = port - - # This property uses 'normalize_host()' (not '_normalize_host()') - # to avoid removing square braces around IPv6 addresses. - # This value is sent to `HTTPConnection.set_tunnel()` if called - # because square braces are required for HTTP CONNECT tunneling. - self._tunnel_host = normalize_host(host, scheme=self.scheme).lower() - - def __str__(self) -> str: - return f"{type(self).__name__}(host={self.host!r}, port={self.port!r})" - - def __enter__(self) -> Self: - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> typing.Literal[False]: - self.close() - # Return False to re-raise any potential exceptions - return False - - def close(self) -> None: - """ - Close all pooled connections and disable the pool. - """ - - -# This is taken from http://hg.python.org/cpython/file/7aaba721ebc0/Lib/socket.py#l252 -_blocking_errnos = {errno.EAGAIN, errno.EWOULDBLOCK} - - -class HTTPConnectionPool(ConnectionPool, RequestMethods): - """ - Thread-safe connection pool for one host. - - :param host: - Host used for this HTTP Connection (e.g. "localhost"), passed into - :class:`http.client.HTTPConnection`. - - :param port: - Port used for this HTTP Connection (None is equivalent to 80), passed - into :class:`http.client.HTTPConnection`. - - :param timeout: - Socket timeout in seconds for each individual connection. This can - be a float or integer, which sets the timeout for the HTTP request, - or an instance of :class:`urllib3.util.Timeout` which gives you more - fine-grained control over request timeouts. After the constructor has - been parsed, this is always a `urllib3.util.Timeout` object. - - :param maxsize: - Number of connections to save that can be reused. More than 1 is useful - in multithreaded situations. If ``block`` is set to False, more - connections will be created but they will not be saved once they've - been used. - - :param block: - If set to True, no more than ``maxsize`` connections will be used at - a time. When no free connections are available, the call will block - until a connection has been released. This is a useful side effect for - particular multithreaded situations where one does not want to use more - than maxsize connections per host to prevent flooding. - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - - :param retries: - Retry configuration to use by default with requests in this pool. - - :param _proxy: - Parsed proxy URL, should not be used directly, instead, see - :class:`urllib3.ProxyManager` - - :param _proxy_headers: - A dictionary with proxy headers, should not be used directly, - instead, see :class:`urllib3.ProxyManager` - - :param \\**conn_kw: - Additional parameters are used to create fresh :class:`urllib3.connection.HTTPConnection`, - :class:`urllib3.connection.HTTPSConnection` instances. - """ - - scheme = "http" - ConnectionCls: type[BaseHTTPConnection] | type[BaseHTTPSConnection] = HTTPConnection - - def __init__( - self, - host: str, - port: int | None = None, - timeout: _TYPE_TIMEOUT | None = _DEFAULT_TIMEOUT, - maxsize: int = 1, - block: bool = False, - headers: typing.Mapping[str, str] | None = None, - retries: Retry | bool | int | None = None, - _proxy: Url | None = None, - _proxy_headers: typing.Mapping[str, str] | None = None, - _proxy_config: ProxyConfig | None = None, - **conn_kw: typing.Any, - ): - ConnectionPool.__init__(self, host, port) - RequestMethods.__init__(self, headers) - - if not isinstance(timeout, Timeout): - timeout = Timeout.from_float(timeout) - - if retries is None: - retries = Retry.DEFAULT - - self.timeout = timeout - self.retries = retries - - self.pool: queue.LifoQueue[typing.Any] | None = self.QueueCls(maxsize) - self.block = block - - self.proxy = _proxy - self.proxy_headers = _proxy_headers or {} - self.proxy_config = _proxy_config - - # Fill the queue up so that doing get() on it will block properly - for _ in range(maxsize): - self.pool.put(None) - - # These are mostly for testing and debugging purposes. - self.num_connections = 0 - self.num_requests = 0 - self.conn_kw = conn_kw - - if self.proxy: - # Enable Nagle's algorithm for proxies, to avoid packet fragmentation. - # We cannot know if the user has added default socket options, so we cannot replace the - # list. - self.conn_kw.setdefault("socket_options", []) - - self.conn_kw["proxy"] = self.proxy - self.conn_kw["proxy_config"] = self.proxy_config - - # Do not pass 'self' as callback to 'finalize'. - # Then the 'finalize' would keep an endless living (leak) to self. - # By just passing a reference to the pool allows the garbage collector - # to free self if nobody else has a reference to it. - pool = self.pool - - # Close all the HTTPConnections in the pool before the - # HTTPConnectionPool object is garbage collected. - weakref.finalize(self, _close_pool_connections, pool) - - def _new_conn(self) -> BaseHTTPConnection: - """ - Return a fresh :class:`HTTPConnection`. - """ - self.num_connections += 1 - log.debug( - "Starting new HTTP connection (%d): %s:%s", - self.num_connections, - self.host, - self.port or "80", - ) - - conn = self.ConnectionCls( - host=self.host, - port=self.port, - timeout=self.timeout.connect_timeout, - **self.conn_kw, - ) - return conn - - def _get_conn(self, timeout: float | None = None) -> BaseHTTPConnection: - """ - Get a connection. Will return a pooled connection if one is available. - - If no connections are available and :prop:`.block` is ``False``, then a - fresh connection is returned. - - :param timeout: - Seconds to wait before giving up and raising - :class:`urllib3.exceptions.EmptyPoolError` if the pool is empty and - :prop:`.block` is ``True``. - """ - conn = None - - if self.pool is None: - raise ClosedPoolError(self, "Pool is closed.") - - try: - conn = self.pool.get(block=self.block, timeout=timeout) - - except AttributeError: # self.pool is None - raise ClosedPoolError(self, "Pool is closed.") from None # Defensive: - - except queue.Empty: - if self.block: - raise EmptyPoolError( - self, - "Pool is empty and a new connection can't be opened due to blocking mode.", - ) from None - pass # Oh well, we'll create a new connection then - - # If this is a persistent connection, check if it got disconnected - if conn and is_connection_dropped(conn): - log.debug("Resetting dropped connection: %s", self.host) - conn.close() - - return conn or self._new_conn() - - def _put_conn(self, conn: BaseHTTPConnection | None) -> None: - """ - Put a connection back into the pool. - - :param conn: - Connection object for the current host and port as returned by - :meth:`._new_conn` or :meth:`._get_conn`. - - If the pool is already full, the connection is closed and discarded - because we exceeded maxsize. If connections are discarded frequently, - then maxsize should be increased. - - If the pool is closed, then the connection will be closed and discarded. - """ - if self.pool is not None: - try: - self.pool.put(conn, block=False) - return # Everything is dandy, done. - except AttributeError: - # self.pool is None. - pass - except queue.Full: - # Connection never got put back into the pool, close it. - if conn: - conn.close() - - if self.block: - # This should never happen if you got the conn from self._get_conn - raise FullPoolError( - self, - "Pool reached maximum size and no more connections are allowed.", - ) from None - - log.warning( - "Connection pool is full, discarding connection: %s. Connection pool size: %s", - self.host, - self.pool.qsize(), - ) - - # Connection never got put back into the pool, close it. - if conn: - conn.close() - - def _validate_conn(self, conn: BaseHTTPConnection) -> None: - """ - Called right before a request is made, after the socket is created. - """ - - def _prepare_proxy(self, conn: BaseHTTPConnection) -> None: - # Nothing to do for HTTP connections. - pass - - def _get_timeout(self, timeout: _TYPE_TIMEOUT) -> Timeout: - """Helper that always returns a :class:`urllib3.util.Timeout`""" - if timeout is _DEFAULT_TIMEOUT: - return self.timeout.clone() - - if isinstance(timeout, Timeout): - return timeout.clone() - else: - # User passed us an int/float. This is for backwards compatibility, - # can be removed later - return Timeout.from_float(timeout) - - def _raise_timeout( - self, - err: BaseSSLError | OSError | SocketTimeout, - url: str, - timeout_value: _TYPE_TIMEOUT | None, - ) -> None: - """Is the error actually a timeout? Will raise a ReadTimeout or pass""" - - if isinstance(err, SocketTimeout): - raise ReadTimeoutError( - self, url, f"Read timed out. (read timeout={timeout_value})" - ) from err - - # See the above comment about EAGAIN in Python 3. - if hasattr(err, "errno") and err.errno in _blocking_errnos: - raise ReadTimeoutError( - self, url, f"Read timed out. (read timeout={timeout_value})" - ) from err - - def _make_request( - self, - conn: BaseHTTPConnection, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - retries: Retry | None = None, - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - chunked: bool = False, - response_conn: BaseHTTPConnection | None = None, - preload_content: bool = True, - decode_content: bool = True, - enforce_content_length: bool = True, - ) -> BaseHTTPResponse: - """ - Perform a request on a given urllib connection object taken from our - pool. - - :param conn: - a connection from one of our connection pools - - :param method: - HTTP request method (such as GET, POST, PUT, etc.) - - :param url: - The URL to perform the request on. - - :param body: - Data to send in the request body, either :class:`str`, :class:`bytes`, - an iterable of :class:`str`/:class:`bytes`, or a file-like object. - - :param headers: - Dictionary of custom headers to send, such as User-Agent, - If-None-Match, etc. If None, pool headers are used. If provided, - these headers completely replace any pool-specific headers. - - :param retries: - Configure the number of retries to allow before raising a - :class:`~urllib3.exceptions.MaxRetryError` exception. - - Pass ``None`` to retry until you receive a response. Pass a - :class:`~urllib3.util.retry.Retry` object for fine-grained control - over different types of retries. - Pass an integer number to retry connection errors that many times, - but no other types of errors. Pass zero to never retry. - - If ``False``, then retries are disabled and any exception is raised - immediately. Also, instead of raising a MaxRetryError on redirects, - the redirect response will be returned. - - :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. - - :param timeout: - If specified, overrides the default timeout for this one - request. It may be a float (in seconds) or an instance of - :class:`urllib3.util.Timeout`. - - :param chunked: - If True, urllib3 will send the body using chunked transfer - encoding. Otherwise, urllib3 will send the body using the standard - content-length form. Defaults to False. - - :param response_conn: - Set this to ``None`` if you will handle releasing the connection or - set the connection to have the response release it. - - :param preload_content: - If True, the response's body will be preloaded during construction. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param enforce_content_length: - Enforce content length checking. Body returned by server must match - value of Content-Length header, if present. Otherwise, raise error. - """ - self.num_requests += 1 - - timeout_obj = self._get_timeout(timeout) - timeout_obj.start_connect() - conn.timeout = Timeout.resolve_default_timeout(timeout_obj.connect_timeout) - - try: - # Trigger any extra validation we need to do. - try: - self._validate_conn(conn) - except (SocketTimeout, BaseSSLError) as e: - self._raise_timeout(err=e, url=url, timeout_value=conn.timeout) - raise - - # _validate_conn() starts the connection to an HTTPS proxy - # so we need to wrap errors with 'ProxyError' here too. - except ( - OSError, - NewConnectionError, - TimeoutError, - BaseSSLError, - CertificateError, - SSLError, - ) as e: - new_e: Exception = e - if isinstance(e, (BaseSSLError, CertificateError)): - new_e = SSLError(e) - # If the connection didn't successfully connect to it's proxy - # then there - if isinstance( - new_e, (OSError, NewConnectionError, TimeoutError, SSLError) - ) and (conn and conn.proxy and not conn.has_connected_to_proxy): - new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) - raise new_e - - # conn.request() calls http.client.*.request, not the method in - # urllib3.request. It also calls makefile (recv) on the socket. - try: - conn.request( - method, - url, - body=body, - headers=headers, - chunked=chunked, - preload_content=preload_content, - decode_content=decode_content, - enforce_content_length=enforce_content_length, - ) - - # We are swallowing BrokenPipeError (errno.EPIPE) since the server is - # legitimately able to close the connection after sending a valid response. - # With this behaviour, the received response is still readable. - except BrokenPipeError: - pass - except OSError as e: - # MacOS/Linux - # EPROTOTYPE and ECONNRESET are needed on macOS - # https://erickt.github.io/blog/2014/11/19/adventures-in-debugging-a-potential-osx-kernel-bug/ - # Condition changed later to emit ECONNRESET instead of only EPROTOTYPE. - if e.errno != errno.EPROTOTYPE and e.errno != errno.ECONNRESET: - raise - - # Reset the timeout for the recv() on the socket - read_timeout = timeout_obj.read_timeout - - if not conn.is_closed: - # In Python 3 socket.py will catch EAGAIN and return None when you - # try and read into the file pointer created by http.client, which - # instead raises a BadStatusLine exception. Instead of catching - # the exception and assuming all BadStatusLine exceptions are read - # timeouts, check for a zero timeout before making the request. - if read_timeout == 0: - raise ReadTimeoutError( - self, url, f"Read timed out. (read timeout={read_timeout})" - ) - conn.timeout = read_timeout - - # Receive the response from the server - try: - response = conn.getresponse() - except (BaseSSLError, OSError) as e: - self._raise_timeout(err=e, url=url, timeout_value=read_timeout) - raise - - # Set properties that are used by the pooling layer. - response.retries = retries - response._connection = response_conn # type: ignore[attr-defined] - response._pool = self # type: ignore[attr-defined] - - log.debug( - '%s://%s:%s "%s %s %s" %s %s', - self.scheme, - self.host, - self.port, - method, - url, - response.version_string, - response.status, - response.length_remaining, - ) - - return response - - def close(self) -> None: - """ - Close all pooled connections and disable the pool. - """ - if self.pool is None: - return - # Disable access to the pool - old_pool, self.pool = self.pool, None - - # Close all the HTTPConnections in the pool. - _close_pool_connections(old_pool) - - def is_same_host(self, url: str) -> bool: - """ - Check if the given ``url`` is a member of the same host as this - connection pool. - """ - if url.startswith("/"): - return True - - # TODO: Add optional support for socket.gethostbyname checking. - scheme, _, host, port, *_ = parse_url(url) - scheme = scheme or "http" - if host is not None: - host = _normalize_host(host, scheme=scheme) - - # Use explicit default port for comparison when none is given - if self.port and not port: - port = port_by_scheme.get(scheme) - elif not self.port and port == port_by_scheme.get(scheme): - port = None - - return (scheme, host, port) == (self.scheme, self.host, self.port) - - def urlopen( # type: ignore[override] - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - retries: Retry | bool | int | None = None, - redirect: bool = True, - assert_same_host: bool = True, - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - pool_timeout: int | None = None, - release_conn: bool | None = None, - chunked: bool = False, - body_pos: _TYPE_BODY_POSITION | None = None, - preload_content: bool = True, - decode_content: bool = True, - **response_kw: typing.Any, - ) -> BaseHTTPResponse: - """ - Get a connection from the pool and perform an HTTP request. This is the - lowest level call for making a request, so you'll need to specify all - the raw details. - - .. note:: - - More commonly, it's appropriate to use a convenience method - such as :meth:`request`. - - .. note:: - - `release_conn` will only behave as expected if - `preload_content=False` because we want to make - `preload_content=False` the default behaviour someday soon without - breaking backwards compatibility. - - :param method: - HTTP request method (such as GET, POST, PUT, etc.) - - :param url: - The URL to perform the request on. - - :param body: - Data to send in the request body, either :class:`str`, :class:`bytes`, - an iterable of :class:`str`/:class:`bytes`, or a file-like object. - - :param headers: - Dictionary of custom headers to send, such as User-Agent, - If-None-Match, etc. If None, pool headers are used. If provided, - these headers completely replace any pool-specific headers. - - :param retries: - Configure the number of retries to allow before raising a - :class:`~urllib3.exceptions.MaxRetryError` exception. - - If ``None`` (default) will retry 3 times, see ``Retry.DEFAULT``. Pass a - :class:`~urllib3.util.retry.Retry` object for fine-grained control - over different types of retries. - Pass an integer number to retry connection errors that many times, - but no other types of errors. Pass zero to never retry. - - If ``False``, then retries are disabled and any exception is raised - immediately. Also, instead of raising a MaxRetryError on redirects, - the redirect response will be returned. - - :type retries: :class:`~urllib3.util.retry.Retry`, False, or an int. - - :param redirect: - If True, automatically handle redirects (status codes 301, 302, - 303, 307, 308). Each redirect counts as a retry. Disabling retries - will disable redirect, too. - - :param assert_same_host: - If ``True``, will make sure that the host of the pool requests is - consistent else will raise HostChangedError. When ``False``, you can - use the pool on an HTTP proxy and request foreign hosts. - - :param timeout: - If specified, overrides the default timeout for this one - request. It may be a float (in seconds) or an instance of - :class:`urllib3.util.Timeout`. - - :param pool_timeout: - If set and the pool is set to block=True, then this method will - block for ``pool_timeout`` seconds and raise EmptyPoolError if no - connection is available within the time period. - - :param bool preload_content: - If True, the response's body will be preloaded into memory. - - :param bool decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param release_conn: - If False, then the urlopen call will not release the connection - back into the pool once a response is received (but will release if - you read the entire contents of the response such as when - `preload_content=True`). This is useful if you're not preloading - the response's content immediately. You will need to call - ``r.release_conn()`` on the response ``r`` to return the connection - back into the pool. If None, it takes the value of ``preload_content`` - which defaults to ``True``. - - :param bool chunked: - If True, urllib3 will send the body using chunked transfer - encoding. Otherwise, urllib3 will send the body using the standard - content-length form. Defaults to False. - - :param int body_pos: - Position to seek to in file-like body in the event of a retry or - redirect. Typically this won't need to be set because urllib3 will - auto-populate the value when needed. - """ - parsed_url = parse_url(url) - destination_scheme = parsed_url.scheme - - if headers is None: - headers = self.headers - - if not isinstance(retries, Retry): - retries = Retry.from_int(retries, redirect=redirect, default=self.retries) - - if release_conn is None: - release_conn = preload_content - - # Check host - if assert_same_host and not self.is_same_host(url): - raise HostChangedError(self, url, retries) - - # Ensure that the URL we're connecting to is properly encoded - if url.startswith("/"): - url = to_str(_encode_target(url)) - else: - url = to_str(parsed_url.url) - - conn = None - - # Track whether `conn` needs to be released before - # returning/raising/recursing. Update this variable if necessary, and - # leave `release_conn` constant throughout the function. That way, if - # the function recurses, the original value of `release_conn` will be - # passed down into the recursive call, and its value will be respected. - # - # See issue #651 [1] for details. - # - # [1] - release_this_conn = release_conn - - http_tunnel_required = connection_requires_http_tunnel( - self.proxy, self.proxy_config, destination_scheme - ) - - # Merge the proxy headers. Only done when not using HTTP CONNECT. We - # have to copy the headers dict so we can safely change it without those - # changes being reflected in anyone else's copy. - if not http_tunnel_required: - headers = headers.copy() # type: ignore[attr-defined] - headers.update(self.proxy_headers) # type: ignore[union-attr] - - # Must keep the exception bound to a separate variable or else Python 3 - # complains about UnboundLocalError. - err = None - - # Keep track of whether we cleanly exited the except block. This - # ensures we do proper cleanup in finally. - clean_exit = False - - # Rewind body position, if needed. Record current position - # for future rewinds in the event of a redirect/retry. - body_pos = set_file_position(body, body_pos) - - try: - # Request a connection from the queue. - timeout_obj = self._get_timeout(timeout) - conn = self._get_conn(timeout=pool_timeout) - - conn.timeout = timeout_obj.connect_timeout # type: ignore[assignment] - - # Is this a closed/new connection that requires CONNECT tunnelling? - if self.proxy is not None and http_tunnel_required and conn.is_closed: - try: - self._prepare_proxy(conn) - except (BaseSSLError, OSError, SocketTimeout) as e: - self._raise_timeout( - err=e, url=self.proxy.url, timeout_value=conn.timeout - ) - raise - - # If we're going to release the connection in ``finally:``, then - # the response doesn't need to know about the connection. Otherwise - # it will also try to release it and we'll have a double-release - # mess. - response_conn = conn if not release_conn else None - - # Make the request on the HTTPConnection object - response = self._make_request( - conn, - method, - url, - timeout=timeout_obj, - body=body, - headers=headers, - chunked=chunked, - retries=retries, - response_conn=response_conn, - preload_content=preload_content, - decode_content=decode_content, - **response_kw, - ) - - # Everything went great! - clean_exit = True - - except EmptyPoolError: - # Didn't get a connection from the pool, no need to clean up - clean_exit = True - release_this_conn = False - raise - - except ( - TimeoutError, - HTTPException, - OSError, - ProtocolError, - BaseSSLError, - SSLError, - CertificateError, - ProxyError, - ) as e: - # Discard the connection for these exceptions. It will be - # replaced during the next _get_conn() call. - clean_exit = False - new_e: Exception = e - if isinstance(e, (BaseSSLError, CertificateError)): - new_e = SSLError(e) - if isinstance( - new_e, - ( - OSError, - NewConnectionError, - TimeoutError, - SSLError, - HTTPException, - ), - ) and (conn and conn.proxy and not conn.has_connected_to_proxy): - new_e = _wrap_proxy_error(new_e, conn.proxy.scheme) - elif isinstance(new_e, (OSError, HTTPException)): - new_e = ProtocolError("Connection aborted.", new_e) - - retries = retries.increment( - method, url, error=new_e, _pool=self, _stacktrace=sys.exc_info()[2] - ) - retries.sleep() - - # Keep track of the error for the retry warning. - err = e - - finally: - if not clean_exit: - # We hit some kind of exception, handled or otherwise. We need - # to throw the connection away unless explicitly told not to. - # Close the connection, set the variable to None, and make sure - # we put the None back in the pool to avoid leaking it. - if conn: - conn.close() - conn = None - release_this_conn = True - - if release_this_conn: - # Put the connection back to be reused. If the connection is - # expired then it will be None, which will get replaced with a - # fresh connection during _get_conn. - self._put_conn(conn) - - if not conn: - # Try again - log.warning( - "Retrying (%r) after connection broken by '%r': %s", retries, err, url - ) - return self.urlopen( - method, - url, - body, - headers, - retries, - redirect, - assert_same_host, - timeout=timeout, - pool_timeout=pool_timeout, - release_conn=release_conn, - chunked=chunked, - body_pos=body_pos, - preload_content=preload_content, - decode_content=decode_content, - **response_kw, - ) - - # Handle redirect? - redirect_location = redirect and response.get_redirect_location() - if redirect_location: - if response.status == 303: - # Change the method according to RFC 9110, Section 15.4.4. - method = "GET" - # And lose the body not to transfer anything sensitive. - body = None - headers = HTTPHeaderDict(headers)._prepare_for_method_change() - - try: - retries = retries.increment(method, url, response=response, _pool=self) - except MaxRetryError: - if retries.raise_on_redirect: - response.drain_conn() - raise - return response - - response.drain_conn() - retries.sleep_for_retry(response) - log.debug("Redirecting %s -> %s", url, redirect_location) - return self.urlopen( - method, - redirect_location, - body, - headers, - retries=retries, - redirect=redirect, - assert_same_host=assert_same_host, - timeout=timeout, - pool_timeout=pool_timeout, - release_conn=release_conn, - chunked=chunked, - body_pos=body_pos, - preload_content=preload_content, - decode_content=decode_content, - **response_kw, - ) - - # Check if we should retry the HTTP response. - has_retry_after = bool(response.headers.get("Retry-After")) - if retries.is_retry(method, response.status, has_retry_after): - try: - retries = retries.increment(method, url, response=response, _pool=self) - except MaxRetryError: - if retries.raise_on_status: - response.drain_conn() - raise - return response - - response.drain_conn() - retries.sleep(response) - log.debug("Retry: %s", url) - return self.urlopen( - method, - url, - body, - headers, - retries=retries, - redirect=redirect, - assert_same_host=assert_same_host, - timeout=timeout, - pool_timeout=pool_timeout, - release_conn=release_conn, - chunked=chunked, - body_pos=body_pos, - preload_content=preload_content, - decode_content=decode_content, - **response_kw, - ) - - return response - - -class HTTPSConnectionPool(HTTPConnectionPool): - """ - Same as :class:`.HTTPConnectionPool`, but HTTPS. - - :class:`.HTTPSConnection` uses one of ``assert_fingerprint``, - ``assert_hostname`` and ``host`` in this order to verify connections. - If ``assert_hostname`` is False, no verification is done. - - The ``key_file``, ``cert_file``, ``cert_reqs``, ``ca_certs``, - ``ca_cert_dir``, ``ssl_version``, ``key_password`` are only used if :mod:`ssl` - is available and are fed into :meth:`urllib3.util.ssl_wrap_socket` to upgrade - the connection socket into an SSL socket. - """ - - scheme = "https" - ConnectionCls: type[BaseHTTPSConnection] = HTTPSConnection - - def __init__( - self, - host: str, - port: int | None = None, - timeout: _TYPE_TIMEOUT | None = _DEFAULT_TIMEOUT, - maxsize: int = 1, - block: bool = False, - headers: typing.Mapping[str, str] | None = None, - retries: Retry | bool | int | None = None, - _proxy: Url | None = None, - _proxy_headers: typing.Mapping[str, str] | None = None, - key_file: str | None = None, - cert_file: str | None = None, - cert_reqs: int | str | None = None, - key_password: str | None = None, - ca_certs: str | None = None, - ssl_version: int | str | None = None, - ssl_minimum_version: ssl.TLSVersion | None = None, - ssl_maximum_version: ssl.TLSVersion | None = None, - assert_hostname: str | typing.Literal[False] | None = None, - assert_fingerprint: str | None = None, - ca_cert_dir: str | None = None, - **conn_kw: typing.Any, - ) -> None: - super().__init__( - host, - port, - timeout, - maxsize, - block, - headers, - retries, - _proxy, - _proxy_headers, - **conn_kw, - ) - - self.key_file = key_file - self.cert_file = cert_file - self.cert_reqs = cert_reqs - self.key_password = key_password - self.ca_certs = ca_certs - self.ca_cert_dir = ca_cert_dir - self.ssl_version = ssl_version - self.ssl_minimum_version = ssl_minimum_version - self.ssl_maximum_version = ssl_maximum_version - self.assert_hostname = assert_hostname - self.assert_fingerprint = assert_fingerprint - - def _prepare_proxy(self, conn: HTTPSConnection) -> None: # type: ignore[override] - """Establishes a tunnel connection through HTTP CONNECT.""" - if self.proxy and self.proxy.scheme == "https": - tunnel_scheme = "https" - else: - tunnel_scheme = "http" - - conn.set_tunnel( - scheme=tunnel_scheme, - host=self._tunnel_host, - port=self.port, - headers=self.proxy_headers, - ) - conn.connect() - - def _new_conn(self) -> BaseHTTPSConnection: - """ - Return a fresh :class:`urllib3.connection.HTTPConnection`. - """ - self.num_connections += 1 - log.debug( - "Starting new HTTPS connection (%d): %s:%s", - self.num_connections, - self.host, - self.port or "443", - ) - - if not self.ConnectionCls or self.ConnectionCls is DummyConnection: # type: ignore[comparison-overlap] - raise ImportError( - "Can't connect to HTTPS URL because the SSL module is not available." - ) - - actual_host: str = self.host - actual_port = self.port - if self.proxy is not None and self.proxy.host is not None: - actual_host = self.proxy.host - actual_port = self.proxy.port - - return self.ConnectionCls( - host=actual_host, - port=actual_port, - timeout=self.timeout.connect_timeout, - cert_file=self.cert_file, - key_file=self.key_file, - key_password=self.key_password, - cert_reqs=self.cert_reqs, - ca_certs=self.ca_certs, - ca_cert_dir=self.ca_cert_dir, - assert_hostname=self.assert_hostname, - assert_fingerprint=self.assert_fingerprint, - ssl_version=self.ssl_version, - ssl_minimum_version=self.ssl_minimum_version, - ssl_maximum_version=self.ssl_maximum_version, - **self.conn_kw, - ) - - def _validate_conn(self, conn: BaseHTTPConnection) -> None: - """ - Called right before a request is made, after the socket is created. - """ - super()._validate_conn(conn) - - # Force connect early to allow us to validate the connection. - if conn.is_closed: - conn.connect() - - # TODO revise this, see https://github.com/urllib3/urllib3/issues/2791 - if not conn.is_verified and not conn.proxy_is_verified: - warnings.warn( - ( - f"Unverified HTTPS request is being made to host '{conn.host}'. " - "Adding certificate verification is strongly advised. See: " - "https://urllib3.readthedocs.io/en/latest/advanced-usage.html" - "#tls-warnings" - ), - InsecureRequestWarning, - ) - - -def connection_from_url(url: str, **kw: typing.Any) -> HTTPConnectionPool: - """ - Given a url, return an :class:`.ConnectionPool` instance of its host. - - This is a shortcut for not having to parse out the scheme, host, and port - of the url before creating an :class:`.ConnectionPool` instance. - - :param url: - Absolute URL string that must include the scheme. Port is optional. - - :param \\**kw: - Passes additional parameters to the constructor of the appropriate - :class:`.ConnectionPool`. Useful for specifying things like - timeout, maxsize, headers, etc. - - Example:: - - >>> conn = connection_from_url('http://google.com/') - >>> r = conn.request('GET', '/') - """ - scheme, _, host, port, *_ = parse_url(url) - scheme = scheme or "http" - port = port or port_by_scheme.get(scheme, 80) - if scheme == "https": - return HTTPSConnectionPool(host, port=port, **kw) # type: ignore[arg-type] - else: - return HTTPConnectionPool(host, port=port, **kw) # type: ignore[arg-type] - - -@typing.overload -def _normalize_host(host: None, scheme: str | None) -> None: ... - - -@typing.overload -def _normalize_host(host: str, scheme: str | None) -> str: ... - - -def _normalize_host(host: str | None, scheme: str | None) -> str | None: - """ - Normalize hosts for comparisons and use with sockets. - """ - - host = normalize_host(host, scheme) - - # httplib doesn't like it when we include brackets in IPv6 addresses - # Specifically, if we include brackets but also pass the port then - # httplib crazily doubles up the square brackets on the Host header. - # Instead, we need to make sure we never pass ``None`` as the port. - # However, for backward compatibility reasons we can't actually - # *assert* that. See http://bugs.python.org/issue28539 - if host and host.startswith("[") and host.endswith("]"): - host = host[1:-1] - return host - - -def _url_from_pool( - pool: HTTPConnectionPool | HTTPSConnectionPool, path: str | None = None -) -> str: - """Returns the URL from a given connection pool. This is mainly used for testing and logging.""" - return Url(scheme=pool.scheme, host=pool.host, port=pool.port, path=path).url - - -def _close_pool_connections(pool: queue.LifoQueue[typing.Any]) -> None: - """Drains a queue of connections and closes each one.""" - try: - while True: - conn = pool.get(block=False) - if conn: - conn.close() - except queue.Empty: - pass # Done. diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index b32eb02110fe59659056081bd0a1896f5857aaf2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 186 zcmX@j%ge<81e))zWPs?$AOanHW&w&!XQ*V*Wb|9fP{ah}eFmxd6{(+*pPQ!so zl3JWyl3xH~>lURZCYR`!rRJ6C=VT`77gUyHz5Yg z0OgJKlk@XRihv5^<1_OzOXB183Mzkb*yQG?l;)(`6|n+sVg%x15aS~=BO_xGGmr%U DtynQO diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc deleted file mode 100644 index 9dc388703d6686a2be250584afee77a5172b480e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28209 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 Tb`9<4KRxI@O88Ho None: - # override connection classes to use emscripten specific classes - # n.b. mypy complains about the overriding of classes below - # if it isn't ignored - HTTPConnectionPool.ConnectionCls = EmscriptenHTTPConnection - HTTPSConnectionPool.ConnectionCls = EmscriptenHTTPSConnection - urllib3.connection.HTTPConnection = EmscriptenHTTPConnection # type: ignore[misc,assignment] - urllib3.connection.HTTPSConnection = EmscriptenHTTPSConnection # type: ignore[misc,assignment] diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 0c9217d85a18127273ddd22a4a06b2528b2be68b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 894 zcmaJrCBT zudMKWyg+97IG9amUm&<3D#M9dJev?NkCd5}m6b&+)eItPE+(cY_i``~ymA(<^!q;} zpEd&J`gTPkAWPtMZ7EDIN@WELcuid%$|wpybad6v_0*epRNA_u?N>4bF1ZPuV-Yjw zh<|ckv-DJn1miu)2EKC67(a8MwUdn0vEZHd(`QZ^Dz=vl{L{e^OP$4N2PP{C2U-40 zj^~9uRG!yPM!FI56ZmLAl<*cD*?{@@inIgnGr6`%t4qhm_SkqlX}ug9J7Z&a((0bS z`Dtu_M|gK)zsj;7#uNDfc(6*QWNIk6Hu{1ydqY<}@8b{<=6MpgP1hF_+e>{UewW@{ z0tqbOT<5u_vIgZ_?dLk;K Of01|BW|{WrocIqf#MfE? diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc deleted file mode 100644 index a5edfce295731df6d484ee449155e75ca46055ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10235 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc deleted file mode 100644 index bb751a62394a0414e5f9dbcbd6e33bc88410d647..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28625 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc deleted file mode 100644 index c1ece8cc8c4081229f92339bf26b9a09e844d833..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1414 zcmZux&5ImG6tC*8>G|HtCYjaE#?53EvmKIcH6R2+4l*&KFcH}t(xOFgS50=3{+Lwv zEY2{8fkaskVm$5N5Y~hLhnL{wFct`ch~y$GBM5u)y`I^8pmq4Y->+Wv>-S!L{8+7) z2n_qrC)@8Dg#3o$Xyj&uPCo>)M+6ZxAR%=rMQ#K}Xu4*|Tn5?{EXakHYf&OigIp&f z_kaj%A7bLzpBduj`+2+Y6qQYN*^8n$_0mopCAOi9!b?3r@RCI5+8r5)r{-*3iErNe z_!@ujM)Q_G50n{n!=Tfz0QZO_E)~QzZbG8c6vh>p&6t@nNL1ut-kPhN$b%}NGKjQf z{`=xS1p&h?h!Xh9*~*Gr6je|QnX0)ZaSYUArcR3E513mPb#Vf0rO)goy?8B5eAVfu zGWtZ`>&Yb5W|Asxg)-fag*JOCXbtM3wGUoH)=6Li(|g z+>awjH1+4b%*tngpy~7~kUcUqhU8A>co~ND&Wm5ookv@Z{ppiOv}GG=5x6e-UbmBa zL1!RsQ?o<{ZOtMtlsdQL1<)r9)@U>ieP=rkrE@#_!fDFnZW?!yUsMw6b#`R5;{=^8 zr`v~aMwd3;e#c2Vsl3?r{JY+5nK;m1@LzJUG6f6ev+Z!yY(F--eO*dq%4dxloc_;_ zZ9MlLhpduU07hhT-q~f}R=%!0+}z{e@p1jlp9<%u;3EF~oFj+RG;be%3hkpq!f`$u zeWEa!O;rtzp_aj9Ji+f84RsofE?@$<;e%8EpB(z?uretEKx!vn-DTet)ha04Qm4Qu zyxD5yh-pj7w5KA?@Sxc&`=?q!_gREB0K2LSoa3Hwu1lPUvFHWJE1ci!dBNOMCADT~AFORP8em-WGC-o&@H^*#gvT|nBde|JZ zGgC%$Z~bl2-16*S_?wnpz?#}U=mONF@VM#nvo}X33eWwlf@6HkOR~!mNgv-Ql}BHe z?K(2-b5_A&;mWK_SJefW!v`ce2XJ6gN`E11e~|Ux$@v3|80CMADqTJx08UnsLc F{{p+|Vm|-? diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc deleted file mode 100644 index 4130bc81d726e5dbeb4247ec862ce6330012b41d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12208 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 None: - self.host = host - self.port = port - self.timeout = timeout if isinstance(timeout, float) else 0.0 - self.scheme = "http" - self._closed = True - self._response = None - # ignore these things because we don't - # have control over that stuff - self.proxy = None - self.proxy_config = None - self.blocksize = blocksize - self.source_address = None - self.socket_options = None - self.is_verified = False - - def set_tunnel( - self, - host: str, - port: int | None = 0, - headers: typing.Mapping[str, str] | None = None, - scheme: str = "http", - ) -> None: - pass - - def connect(self) -> None: - pass - - def request( - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - # We know *at least* botocore is depending on the order of the - # first 3 parameters so to be safe we only mark the later ones - # as keyword-only to ensure we have space to extend. - *, - chunked: bool = False, - preload_content: bool = True, - decode_content: bool = True, - enforce_content_length: bool = True, - ) -> None: - self._closed = False - if url.startswith("/"): - # no scheme / host / port included, make a full url - url = f"{self.scheme}://{self.host}:{self.port}" + url - request = EmscriptenRequest( - url=url, - method=method, - timeout=self.timeout if self.timeout else 0, - decode_content=decode_content, - ) - request.set_body(body) - if headers: - for k, v in headers.items(): - request.set_header(k, v) - self._response = None - try: - if not preload_content: - self._response = send_streaming_request(request) - if self._response is None: - self._response = send_request(request) - except _TimeoutError as e: - raise TimeoutError(e.message) from e - except _RequestError as e: - raise HTTPException(e.message) from e - - def getresponse(self) -> BaseHTTPResponse: - if self._response is not None: - return EmscriptenHttpResponseWrapper( - internal_response=self._response, - url=self._response.request.url, - connection=self, - ) - else: - raise ResponseNotReady() - - def close(self) -> None: - self._closed = True - self._response = None - - @property - def is_closed(self) -> bool: - """Whether the connection either is brand new or has been previously closed. - If this property is True then both ``is_connected`` and ``has_connected_to_proxy`` - properties must be False. - """ - return self._closed - - @property - def is_connected(self) -> bool: - """Whether the connection is actively connected to any origin (proxy or target)""" - return True - - @property - def has_connected_to_proxy(self) -> bool: - """Whether the connection has successfully connected to its proxy. - This returns False if no proxy is in use. Used to determine whether - errors are coming from the proxy layer or from tunnelling to the target origin. - """ - return False - - -class EmscriptenHTTPSConnection(EmscriptenHTTPConnection): - default_port = port_by_scheme["https"] - # all this is basically ignored, as browser handles https - cert_reqs: int | str | None = None - ca_certs: str | None = None - ca_cert_dir: str | None = None - ca_cert_data: None | str | bytes = None - cert_file: str | None - key_file: str | None - key_password: str | None - ssl_context: typing.Any | None - ssl_version: int | str | None = None - ssl_minimum_version: int | None = None - ssl_maximum_version: int | None = None - assert_hostname: None | str | typing.Literal[False] - assert_fingerprint: str | None = None - - def __init__( - self, - host: str, - port: int = 0, - *, - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - source_address: tuple[str, int] | None = None, - blocksize: int = 16384, - socket_options: ( - None | _TYPE_SOCKET_OPTIONS - ) = HTTPConnection.default_socket_options, - proxy: Url | None = None, - proxy_config: ProxyConfig | None = None, - cert_reqs: int | str | None = None, - assert_hostname: None | str | typing.Literal[False] = None, - assert_fingerprint: str | None = None, - server_hostname: str | None = None, - ssl_context: typing.Any | None = None, - ca_certs: str | None = None, - ca_cert_dir: str | None = None, - ca_cert_data: None | str | bytes = None, - ssl_minimum_version: int | None = None, - ssl_maximum_version: int | None = None, - ssl_version: int | str | None = None, # Deprecated - cert_file: str | None = None, - key_file: str | None = None, - key_password: str | None = None, - ) -> None: - super().__init__( - host, - port=port, - timeout=timeout, - source_address=source_address, - blocksize=blocksize, - socket_options=socket_options, - proxy=proxy, - proxy_config=proxy_config, - ) - self.scheme = "https" - - self.key_file = key_file - self.cert_file = cert_file - self.key_password = key_password - self.ssl_context = ssl_context - self.server_hostname = server_hostname - self.assert_hostname = assert_hostname - self.assert_fingerprint = assert_fingerprint - self.ssl_version = ssl_version - self.ssl_minimum_version = ssl_minimum_version - self.ssl_maximum_version = ssl_maximum_version - self.ca_certs = ca_certs and os.path.expanduser(ca_certs) - self.ca_cert_dir = ca_cert_dir and os.path.expanduser(ca_cert_dir) - self.ca_cert_data = ca_cert_data - - self.cert_reqs = None - - # The browser will automatically verify all requests. - # We have no control over that setting. - self.is_verified = True - - def set_cert( - self, - key_file: str | None = None, - cert_file: str | None = None, - cert_reqs: int | str | None = None, - key_password: str | None = None, - ca_certs: str | None = None, - assert_hostname: None | str | typing.Literal[False] = None, - assert_fingerprint: str | None = None, - ca_cert_dir: str | None = None, - ca_cert_data: None | str | bytes = None, - ) -> None: - pass - - -# verify that this class implements BaseHTTP(s) connection correctly -if typing.TYPE_CHECKING: - _supports_http_protocol: BaseHTTPConnection = EmscriptenHTTPConnection("", 0) - _supports_https_protocol: BaseHTTPSConnection = EmscriptenHTTPSConnection("", 0) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js deleted file mode 100644 index 243b8622..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js +++ /dev/null @@ -1,110 +0,0 @@ -let Status = { - SUCCESS_HEADER: -1, - SUCCESS_EOF: -2, - ERROR_TIMEOUT: -3, - ERROR_EXCEPTION: -4, -}; - -let connections = {}; -let nextConnectionID = 1; -const encoder = new TextEncoder(); - -self.addEventListener("message", async function (event) { - if (event.data.close) { - let connectionID = event.data.close; - delete connections[connectionID]; - return; - } else if (event.data.getMore) { - let connectionID = event.data.getMore; - let { curOffset, value, reader, intBuffer, byteBuffer } = - connections[connectionID]; - // if we still have some in buffer, then just send it back straight away - if (!value || curOffset >= value.length) { - // read another buffer if required - try { - let readResponse = await reader.read(); - - if (readResponse.done) { - // read everything - clear connection and return - delete connections[connectionID]; - Atomics.store(intBuffer, 0, Status.SUCCESS_EOF); - Atomics.notify(intBuffer, 0); - // finished reading successfully - // return from event handler - return; - } - curOffset = 0; - connections[connectionID].value = readResponse.value; - value = readResponse.value; - } catch (error) { - console.log("Request exception:", error); - let errorBytes = encoder.encode(error.message); - let written = errorBytes.length; - byteBuffer.set(errorBytes); - intBuffer[1] = written; - Atomics.store(intBuffer, 0, Status.ERROR_EXCEPTION); - Atomics.notify(intBuffer, 0); - } - } - - // send as much buffer as we can - let curLen = value.length - curOffset; - if (curLen > byteBuffer.length) { - curLen = byteBuffer.length; - } - byteBuffer.set(value.subarray(curOffset, curOffset + curLen), 0); - - Atomics.store(intBuffer, 0, curLen); // store current length in bytes - Atomics.notify(intBuffer, 0); - curOffset += curLen; - connections[connectionID].curOffset = curOffset; - - return; - } else { - // start fetch - let connectionID = nextConnectionID; - nextConnectionID += 1; - const intBuffer = new Int32Array(event.data.buffer); - const byteBuffer = new Uint8Array(event.data.buffer, 8); - try { - const response = await fetch(event.data.url, event.data.fetchParams); - // return the headers first via textencoder - var headers = []; - for (const pair of response.headers.entries()) { - headers.push([pair[0], pair[1]]); - } - let headerObj = { - headers: headers, - status: response.status, - connectionID, - }; - const headerText = JSON.stringify(headerObj); - let headerBytes = encoder.encode(headerText); - let written = headerBytes.length; - byteBuffer.set(headerBytes); - intBuffer[1] = written; - // make a connection - connections[connectionID] = { - reader: response.body.getReader(), - intBuffer: intBuffer, - byteBuffer: byteBuffer, - value: undefined, - curOffset: 0, - }; - // set header ready - Atomics.store(intBuffer, 0, Status.SUCCESS_HEADER); - Atomics.notify(intBuffer, 0); - // all fetching after this goes through a new postmessage call with getMore - // this allows for parallel requests - } catch (error) { - console.log("Request exception:", error); - let errorBytes = encoder.encode(error.message); - let written = errorBytes.length; - byteBuffer.set(errorBytes); - intBuffer[1] = written; - Atomics.store(intBuffer, 0, Status.ERROR_EXCEPTION); - Atomics.notify(intBuffer, 0); - } - } -}); -self.postMessage({ inited: true }); diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py deleted file mode 100644 index 66958217..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py +++ /dev/null @@ -1,728 +0,0 @@ -""" -Support for streaming http requests in emscripten. - -A few caveats - - -If your browser (or Node.js) has WebAssembly JavaScript Promise Integration enabled -https://github.com/WebAssembly/js-promise-integration/blob/main/proposals/js-promise-integration/Overview.md -*and* you launch pyodide using `pyodide.runPythonAsync`, this will fetch data using the -JavaScript asynchronous fetch api (wrapped via `pyodide.ffi.call_sync`). In this case -timeouts and streaming should just work. - -Otherwise, it uses a combination of XMLHttpRequest and a web-worker for streaming. - -This approach has several caveats: - -Firstly, you can't do streaming http in the main UI thread, because atomics.wait isn't allowed. -Streaming only works if you're running pyodide in a web worker. - -Secondly, this uses an extra web worker and SharedArrayBuffer to do the asynchronous fetch -operation, so it requires that you have crossOriginIsolation enabled, by serving over https -(or from localhost) with the two headers below set: - - Cross-Origin-Opener-Policy: same-origin - Cross-Origin-Embedder-Policy: require-corp - -You can tell if cross origin isolation is successfully enabled by looking at the global crossOriginIsolated variable in -JavaScript console. If it isn't, streaming requests will fallback to XMLHttpRequest, i.e. getting the whole -request into a buffer and then returning it. it shows a warning in the JavaScript console in this case. - -Finally, the webworker which does the streaming fetch is created on initial import, but will only be started once -control is returned to javascript. Call `await wait_for_streaming_ready()` to wait for streaming fetch. - -NB: in this code, there are a lot of JavaScript objects. They are named js_* -to make it clear what type of object they are. -""" - -from __future__ import annotations - -import io -import json -from email.parser import Parser -from importlib.resources import files -from typing import TYPE_CHECKING, Any - -import js # type: ignore[import-not-found] -from pyodide.ffi import ( # type: ignore[import-not-found] - JsArray, - JsException, - JsProxy, - to_js, -) - -if TYPE_CHECKING: - from typing_extensions import Buffer - -from .request import EmscriptenRequest -from .response import EmscriptenResponse - -""" -There are some headers that trigger unintended CORS preflight requests. -See also https://github.com/koenvo/pyodide-http/issues/22 -""" -HEADERS_TO_IGNORE = ("user-agent",) - -SUCCESS_HEADER = -1 -SUCCESS_EOF = -2 -ERROR_TIMEOUT = -3 -ERROR_EXCEPTION = -4 - -_STREAMING_WORKER_CODE = ( - files(__package__) - .joinpath("emscripten_fetch_worker.js") - .read_text(encoding="utf-8") -) - - -class _RequestError(Exception): - def __init__( - self, - message: str | None = None, - *, - request: EmscriptenRequest | None = None, - response: EmscriptenResponse | None = None, - ): - self.request = request - self.response = response - self.message = message - super().__init__(self.message) - - -class _StreamingError(_RequestError): - pass - - -class _TimeoutError(_RequestError): - pass - - -def _obj_from_dict(dict_val: dict[str, Any]) -> JsProxy: - return to_js(dict_val, dict_converter=js.Object.fromEntries) - - -class _ReadStream(io.RawIOBase): - def __init__( - self, - int_buffer: JsArray, - byte_buffer: JsArray, - timeout: float, - worker: JsProxy, - connection_id: int, - request: EmscriptenRequest, - ): - self.int_buffer = int_buffer - self.byte_buffer = byte_buffer - self.read_pos = 0 - self.read_len = 0 - self.connection_id = connection_id - self.worker = worker - self.timeout = int(1000 * timeout) if timeout > 0 else None - self.is_live = True - self._is_closed = False - self.request: EmscriptenRequest | None = request - - def __del__(self) -> None: - self.close() - - # this is compatible with _base_connection - def is_closed(self) -> bool: - return self._is_closed - - # for compatibility with RawIOBase - @property - def closed(self) -> bool: - return self.is_closed() - - def close(self) -> None: - if self.is_closed(): - return - self.read_len = 0 - self.read_pos = 0 - self.int_buffer = None - self.byte_buffer = None - self._is_closed = True - self.request = None - if self.is_live: - self.worker.postMessage(_obj_from_dict({"close": self.connection_id})) - self.is_live = False - super().close() - - def readable(self) -> bool: - return True - - def writable(self) -> bool: - return False - - def seekable(self) -> bool: - return False - - def readinto(self, byte_obj: Buffer) -> int: - if not self.int_buffer: - raise _StreamingError( - "No buffer for stream in _ReadStream.readinto", - request=self.request, - response=None, - ) - if self.read_len == 0: - # wait for the worker to send something - js.Atomics.store(self.int_buffer, 0, ERROR_TIMEOUT) - self.worker.postMessage(_obj_from_dict({"getMore": self.connection_id})) - if ( - js.Atomics.wait(self.int_buffer, 0, ERROR_TIMEOUT, self.timeout) - == "timed-out" - ): - raise _TimeoutError - data_len = self.int_buffer[0] - if data_len > 0: - self.read_len = data_len - self.read_pos = 0 - elif data_len == ERROR_EXCEPTION: - string_len = self.int_buffer[1] - # decode the error string - js_decoder = js.TextDecoder.new() - json_str = js_decoder.decode(self.byte_buffer.slice(0, string_len)) - raise _StreamingError( - f"Exception thrown in fetch: {json_str}", - request=self.request, - response=None, - ) - else: - # EOF, free the buffers and return zero - # and free the request - self.is_live = False - self.close() - return 0 - # copy from int32array to python bytes - ret_length = min(self.read_len, len(memoryview(byte_obj))) - subarray = self.byte_buffer.subarray( - self.read_pos, self.read_pos + ret_length - ).to_py() - memoryview(byte_obj)[0:ret_length] = subarray - self.read_len -= ret_length - self.read_pos += ret_length - return ret_length - - -class _StreamingFetcher: - def __init__(self) -> None: - # make web-worker and data buffer on startup - self.streaming_ready = False - - js_data_blob = js.Blob.new( - to_js([_STREAMING_WORKER_CODE], create_pyproxies=False), - _obj_from_dict({"type": "application/javascript"}), - ) - - def promise_resolver(js_resolve_fn: JsProxy, js_reject_fn: JsProxy) -> None: - def onMsg(e: JsProxy) -> None: - self.streaming_ready = True - js_resolve_fn(e) - - def onErr(e: JsProxy) -> None: - js_reject_fn(e) # Defensive: never happens in ci - - self.js_worker.onmessage = onMsg - self.js_worker.onerror = onErr - - js_data_url = js.URL.createObjectURL(js_data_blob) - self.js_worker = js.globalThis.Worker.new(js_data_url) - self.js_worker_ready_promise = js.globalThis.Promise.new(promise_resolver) - - def send(self, request: EmscriptenRequest) -> EmscriptenResponse: - headers = { - k: v for k, v in request.headers.items() if k not in HEADERS_TO_IGNORE - } - - body = request.body - fetch_data = {"headers": headers, "body": to_js(body), "method": request.method} - # start the request off in the worker - timeout = int(1000 * request.timeout) if request.timeout > 0 else None - js_shared_buffer = js.SharedArrayBuffer.new(1048576) - js_int_buffer = js.Int32Array.new(js_shared_buffer) - js_byte_buffer = js.Uint8Array.new(js_shared_buffer, 8) - - js.Atomics.store(js_int_buffer, 0, ERROR_TIMEOUT) - js.Atomics.notify(js_int_buffer, 0) - js_absolute_url = js.URL.new(request.url, js.location).href - self.js_worker.postMessage( - _obj_from_dict( - { - "buffer": js_shared_buffer, - "url": js_absolute_url, - "fetchParams": fetch_data, - } - ) - ) - # wait for the worker to send something - js.Atomics.wait(js_int_buffer, 0, ERROR_TIMEOUT, timeout) - if js_int_buffer[0] == ERROR_TIMEOUT: - raise _TimeoutError( - "Timeout connecting to streaming request", - request=request, - response=None, - ) - elif js_int_buffer[0] == SUCCESS_HEADER: - # got response - # header length is in second int of intBuffer - string_len = js_int_buffer[1] - # decode the rest to a JSON string - js_decoder = js.TextDecoder.new() - # this does a copy (the slice) because decode can't work on shared array - # for some silly reason - json_str = js_decoder.decode(js_byte_buffer.slice(0, string_len)) - # get it as an object - response_obj = json.loads(json_str) - return EmscriptenResponse( - request=request, - status_code=response_obj["status"], - headers=response_obj["headers"], - body=_ReadStream( - js_int_buffer, - js_byte_buffer, - request.timeout, - self.js_worker, - response_obj["connectionID"], - request, - ), - ) - elif js_int_buffer[0] == ERROR_EXCEPTION: - string_len = js_int_buffer[1] - # decode the error string - js_decoder = js.TextDecoder.new() - json_str = js_decoder.decode(js_byte_buffer.slice(0, string_len)) - raise _StreamingError( - f"Exception thrown in fetch: {json_str}", request=request, response=None - ) - else: - raise _StreamingError( - f"Unknown status from worker in fetch: {js_int_buffer[0]}", - request=request, - response=None, - ) - - -class _JSPIReadStream(io.RawIOBase): - """ - A read stream that uses pyodide.ffi.run_sync to read from a JavaScript fetch - response. This requires support for WebAssembly JavaScript Promise Integration - in the containing browser, and for pyodide to be launched via runPythonAsync. - - :param js_read_stream: - The JavaScript stream reader - - :param timeout: - Timeout in seconds - - :param request: - The request we're handling - - :param response: - The response this stream relates to - - :param js_abort_controller: - A JavaScript AbortController object, used for timeouts - """ - - def __init__( - self, - js_read_stream: Any, - timeout: float, - request: EmscriptenRequest, - response: EmscriptenResponse, - js_abort_controller: Any, # JavaScript AbortController for timeouts - ): - self.js_read_stream = js_read_stream - self.timeout = timeout - self._is_closed = False - self._is_done = False - self.request: EmscriptenRequest | None = request - self.response: EmscriptenResponse | None = response - self.current_buffer = None - self.current_buffer_pos = 0 - self.js_abort_controller = js_abort_controller - - def __del__(self) -> None: - self.close() - - # this is compatible with _base_connection - def is_closed(self) -> bool: - return self._is_closed - - # for compatibility with RawIOBase - @property - def closed(self) -> bool: - return self.is_closed() - - def close(self) -> None: - if self.is_closed(): - return - self.read_len = 0 - self.read_pos = 0 - self.js_read_stream.cancel() - self.js_read_stream = None - self._is_closed = True - self._is_done = True - self.request = None - self.response = None - super().close() - - def readable(self) -> bool: - return True - - def writable(self) -> bool: - return False - - def seekable(self) -> bool: - return False - - def _get_next_buffer(self) -> bool: - result_js = _run_sync_with_timeout( - self.js_read_stream.read(), - self.timeout, - self.js_abort_controller, - request=self.request, - response=self.response, - ) - if result_js.done: - self._is_done = True - return False - else: - self.current_buffer = result_js.value.to_py() - self.current_buffer_pos = 0 - return True - - def readinto(self, byte_obj: Buffer) -> int: - if self.current_buffer is None: - if not self._get_next_buffer() or self.current_buffer is None: - self.close() - return 0 - ret_length = min( - len(byte_obj), len(self.current_buffer) - self.current_buffer_pos - ) - byte_obj[0:ret_length] = self.current_buffer[ - self.current_buffer_pos : self.current_buffer_pos + ret_length - ] - self.current_buffer_pos += ret_length - if self.current_buffer_pos == len(self.current_buffer): - self.current_buffer = None - return ret_length - - -# check if we are in a worker or not -def is_in_browser_main_thread() -> bool: - return hasattr(js, "window") and hasattr(js, "self") and js.self == js.window - - -def is_cross_origin_isolated() -> bool: - return hasattr(js, "crossOriginIsolated") and js.crossOriginIsolated - - -def is_in_node() -> bool: - return ( - hasattr(js, "process") - and hasattr(js.process, "release") - and hasattr(js.process.release, "name") - and js.process.release.name == "node" - ) - - -def is_worker_available() -> bool: - return hasattr(js, "Worker") and hasattr(js, "Blob") - - -_fetcher: _StreamingFetcher | None = None - -if is_worker_available() and ( - (is_cross_origin_isolated() and not is_in_browser_main_thread()) - and (not is_in_node()) -): - _fetcher = _StreamingFetcher() -else: - _fetcher = None - - -NODE_JSPI_ERROR = ( - "urllib3 only works in Node.js with pyodide.runPythonAsync" - " and requires the flag --experimental-wasm-stack-switching in " - " versions of node <24." -) - - -def send_streaming_request(request: EmscriptenRequest) -> EmscriptenResponse | None: - if has_jspi(): - return send_jspi_request(request, True) - elif is_in_node(): - raise _RequestError( - message=NODE_JSPI_ERROR, - request=request, - response=None, - ) - - if _fetcher and streaming_ready(): - return _fetcher.send(request) - else: - _show_streaming_warning() - return None - - -_SHOWN_TIMEOUT_WARNING = False - - -def _show_timeout_warning() -> None: - global _SHOWN_TIMEOUT_WARNING - if not _SHOWN_TIMEOUT_WARNING: - _SHOWN_TIMEOUT_WARNING = True - message = "Warning: Timeout is not available on main browser thread" - js.console.warn(message) - - -_SHOWN_STREAMING_WARNING = False - - -def _show_streaming_warning() -> None: - global _SHOWN_STREAMING_WARNING - if not _SHOWN_STREAMING_WARNING: - _SHOWN_STREAMING_WARNING = True - message = "Can't stream HTTP requests because: \n" - if not is_cross_origin_isolated(): - message += " Page is not cross-origin isolated\n" - if is_in_browser_main_thread(): - message += " Python is running in main browser thread\n" - if not is_worker_available(): - message += " Worker or Blob classes are not available in this environment." # Defensive: this is always False in browsers that we test in - if streaming_ready() is False: - message += """ Streaming fetch worker isn't ready. If you want to be sure that streaming fetch -is working, you need to call: 'await urllib3.contrib.emscripten.fetch.wait_for_streaming_ready()`""" - from js import console - - console.warn(message) - - -def send_request(request: EmscriptenRequest) -> EmscriptenResponse: - if has_jspi(): - return send_jspi_request(request, False) - elif is_in_node(): - raise _RequestError( - message=NODE_JSPI_ERROR, - request=request, - response=None, - ) - try: - js_xhr = js.XMLHttpRequest.new() - - if not is_in_browser_main_thread(): - js_xhr.responseType = "arraybuffer" - if request.timeout: - js_xhr.timeout = int(request.timeout * 1000) - else: - js_xhr.overrideMimeType("text/plain; charset=ISO-8859-15") - if request.timeout: - # timeout isn't available on the main thread - show a warning in console - # if it is set - _show_timeout_warning() - - js_xhr.open(request.method, request.url, False) - for name, value in request.headers.items(): - if name.lower() not in HEADERS_TO_IGNORE: - js_xhr.setRequestHeader(name, value) - - js_xhr.send(to_js(request.body)) - - headers = dict(Parser().parsestr(js_xhr.getAllResponseHeaders())) - - if not is_in_browser_main_thread(): - body = js_xhr.response.to_py().tobytes() - else: - body = js_xhr.response.encode("ISO-8859-15") - return EmscriptenResponse( - status_code=js_xhr.status, headers=headers, body=body, request=request - ) - except JsException as err: - if err.name == "TimeoutError": - raise _TimeoutError(err.message, request=request) - elif err.name == "NetworkError": - raise _RequestError(err.message, request=request) - else: - # general http error - raise _RequestError(err.message, request=request) - - -def send_jspi_request( - request: EmscriptenRequest, streaming: bool -) -> EmscriptenResponse: - """ - Send a request using WebAssembly JavaScript Promise Integration - to wrap the asynchronous JavaScript fetch api (experimental). - - :param request: - Request to send - - :param streaming: - Whether to stream the response - - :return: The response object - :rtype: EmscriptenResponse - """ - timeout = request.timeout - js_abort_controller = js.AbortController.new() - headers = {k: v for k, v in request.headers.items() if k not in HEADERS_TO_IGNORE} - req_body = request.body - fetch_data = { - "headers": headers, - "body": to_js(req_body), - "method": request.method, - "signal": js_abort_controller.signal, - } - # Node.js returns the whole response (unlike opaqueredirect in browsers), - # so urllib3 can set `redirect: manual` to control redirects itself. - # https://stackoverflow.com/a/78524615 - if _is_node_js(): - fetch_data["redirect"] = "manual" - # Call JavaScript fetch (async api, returns a promise) - fetcher_promise_js = js.fetch(request.url, _obj_from_dict(fetch_data)) - # Now suspend WebAssembly until we resolve that promise - # or time out. - response_js = _run_sync_with_timeout( - fetcher_promise_js, - timeout, - js_abort_controller, - request=request, - response=None, - ) - headers = {} - header_iter = response_js.headers.entries() - while True: - iter_value_js = header_iter.next() - if getattr(iter_value_js, "done", False): - break - else: - headers[str(iter_value_js.value[0])] = str(iter_value_js.value[1]) - status_code = response_js.status - body: bytes | io.RawIOBase = b"" - - response = EmscriptenResponse( - status_code=status_code, headers=headers, body=b"", request=request - ) - if streaming: - # get via inputstream - if response_js.body is not None: - # get a reader from the fetch response - body_stream_js = response_js.body.getReader() - body = _JSPIReadStream( - body_stream_js, timeout, request, response, js_abort_controller - ) - else: - # get directly via arraybuffer - # n.b. this is another async JavaScript call. - body = _run_sync_with_timeout( - response_js.arrayBuffer(), - timeout, - js_abort_controller, - request=request, - response=response, - ).to_py() - response.body = body - return response - - -def _run_sync_with_timeout( - promise: Any, - timeout: float, - js_abort_controller: Any, - request: EmscriptenRequest | None, - response: EmscriptenResponse | None, -) -> Any: - """ - Await a JavaScript promise synchronously with a timeout which is implemented - via the AbortController - - :param promise: - Javascript promise to await - - :param timeout: - Timeout in seconds - - :param js_abort_controller: - A JavaScript AbortController object, used on timeout - - :param request: - The request being handled - - :param response: - The response being handled (if it exists yet) - - :raises _TimeoutError: If the request times out - :raises _RequestError: If the request raises a JavaScript exception - - :return: The result of awaiting the promise. - """ - timer_id = None - if timeout > 0: - timer_id = js.setTimeout( - js_abort_controller.abort.bind(js_abort_controller), int(timeout * 1000) - ) - try: - from pyodide.ffi import run_sync - - # run_sync here uses WebAssembly JavaScript Promise Integration to - # suspend python until the JavaScript promise resolves. - return run_sync(promise) - except JsException as err: - if err.name == "AbortError": - raise _TimeoutError( - message="Request timed out", request=request, response=response - ) - else: - raise _RequestError(message=err.message, request=request, response=response) - finally: - if timer_id is not None: - js.clearTimeout(timer_id) - - -def has_jspi() -> bool: - """ - Return true if jspi can be used. - - This requires both browser support and also WebAssembly - to be in the correct state - i.e. that the javascript - call into python was async not sync. - - :return: True if jspi can be used. - :rtype: bool - """ - try: - from pyodide.ffi import can_run_sync, run_sync # noqa: F401 - - return bool(can_run_sync()) - except ImportError: - return False - - -def _is_node_js() -> bool: - """ - Check if we are in Node.js. - - :return: True if we are in Node.js. - :rtype: bool - """ - return ( - hasattr(js, "process") - and hasattr(js.process, "release") - # According to the Node.js documentation, the release name is always "node". - and js.process.release.name == "node" - ) - - -def streaming_ready() -> bool | None: - if _fetcher: - return _fetcher.streaming_ready - else: - return None # no fetcher, return None to signify that - - -async def wait_for_streaming_ready() -> bool: - if _fetcher: - await _fetcher.js_worker_ready_promise - return True - else: - return False diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py deleted file mode 100644 index e692e692..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py +++ /dev/null @@ -1,22 +0,0 @@ -from __future__ import annotations - -from dataclasses import dataclass, field - -from ..._base_connection import _TYPE_BODY - - -@dataclass -class EmscriptenRequest: - method: str - url: str - params: dict[str, str] | None = None - body: _TYPE_BODY | None = None - headers: dict[str, str] = field(default_factory=dict) - timeout: float = 0 - decode_content: bool = True - - def set_header(self, name: str, value: str) -> None: - self.headers[name.capitalize()] = value - - def set_body(self, body: _TYPE_BODY | None) -> None: - self.body = body diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py deleted file mode 100644 index cb1088a1..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py +++ /dev/null @@ -1,277 +0,0 @@ -from __future__ import annotations - -import json as _json -import logging -import typing -from contextlib import contextmanager -from dataclasses import dataclass -from http.client import HTTPException as HTTPException -from io import BytesIO, IOBase - -from ...exceptions import InvalidHeader, TimeoutError -from ...response import BaseHTTPResponse -from ...util.retry import Retry -from .request import EmscriptenRequest - -if typing.TYPE_CHECKING: - from ..._base_connection import BaseHTTPConnection, BaseHTTPSConnection - -log = logging.getLogger(__name__) - - -@dataclass -class EmscriptenResponse: - status_code: int - headers: dict[str, str] - body: IOBase | bytes - request: EmscriptenRequest - - -class EmscriptenHttpResponseWrapper(BaseHTTPResponse): - def __init__( - self, - internal_response: EmscriptenResponse, - url: str | None = None, - connection: BaseHTTPConnection | BaseHTTPSConnection | None = None, - ): - self._pool = None # set by pool class - self._body = None - self._response = internal_response - self._url = url - self._connection = connection - self._closed = False - super().__init__( - headers=internal_response.headers, - status=internal_response.status_code, - request_url=url, - version=0, - version_string="HTTP/?", - reason="", - decode_content=True, - ) - self.length_remaining = self._init_length(self._response.request.method) - self.length_is_certain = False - - @property - def url(self) -> str | None: - return self._url - - @url.setter - def url(self, url: str | None) -> None: - self._url = url - - @property - def connection(self) -> BaseHTTPConnection | BaseHTTPSConnection | None: - return self._connection - - @property - def retries(self) -> Retry | None: - return self._retries - - @retries.setter - def retries(self, retries: Retry | None) -> None: - # Override the request_url if retries has a redirect location. - self._retries = retries - - def stream( - self, amt: int | None = 2**16, decode_content: bool | None = None - ) -> typing.Generator[bytes]: - """ - A generator wrapper for the read() method. A call will block until - ``amt`` bytes have been read from the connection or until the - connection is closed. - - :param amt: - How much of the content to read. The generator will return up to - much data per iteration, but may return less. This is particularly - likely when using compressed data. However, the empty string will - never be returned. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - while True: - data = self.read(amt=amt, decode_content=decode_content) - - if data: - yield data - else: - break - - def _init_length(self, request_method: str | None) -> int | None: - length: int | None - content_length: str | None = self.headers.get("content-length") - - if content_length is not None: - try: - # RFC 7230 section 3.3.2 specifies multiple content lengths can - # be sent in a single Content-Length header - # (e.g. Content-Length: 42, 42). This line ensures the values - # are all valid ints and that as long as the `set` length is 1, - # all values are the same. Otherwise, the header is invalid. - lengths = {int(val) for val in content_length.split(",")} - if len(lengths) > 1: - raise InvalidHeader( - "Content-Length contained multiple " - "unmatching values (%s)" % content_length - ) - length = lengths.pop() - except ValueError: - length = None - else: - if length < 0: - length = None - - else: # if content_length is None - length = None - - # Check for responses that shouldn't include a body - if ( - self.status in (204, 304) - or 100 <= self.status < 200 - or request_method == "HEAD" - ): - length = 0 - - return length - - def read( - self, - amt: int | None = None, - decode_content: bool | None = None, # ignored because browser decodes always - cache_content: bool = False, - ) -> bytes: - if ( - self._closed - or self._response is None - or (isinstance(self._response.body, IOBase) and self._response.body.closed) - ): - return b"" - - with self._error_catcher(): - # body has been preloaded as a string by XmlHttpRequest - if not isinstance(self._response.body, IOBase): - self.length_remaining = len(self._response.body) - self.length_is_certain = True - # wrap body in IOStream - self._response.body = BytesIO(self._response.body) - if amt is not None and amt >= 0: - # don't cache partial content - cache_content = False - data = self._response.body.read(amt) - else: # read all we can (and cache it) - data = self._response.body.read() - if cache_content: - self._body = data - if self.length_remaining is not None: - self.length_remaining = max(self.length_remaining - len(data), 0) - if len(data) == 0 or ( - self.length_is_certain and self.length_remaining == 0 - ): - # definitely finished reading, close response stream - self._response.body.close() - return typing.cast(bytes, data) - - def read_chunked( - self, - amt: int | None = None, - decode_content: bool | None = None, - ) -> typing.Generator[bytes]: - # chunked is handled by browser - while True: - bytes = self.read(amt, decode_content) - if not bytes: - break - yield bytes - - def release_conn(self) -> None: - if not self._pool or not self._connection: - return None - - self._pool._put_conn(self._connection) - self._connection = None - - def drain_conn(self) -> None: - self.close() - - @property - def data(self) -> bytes: - if self._body: - return self._body - else: - return self.read(cache_content=True) - - def json(self) -> typing.Any: - """ - Deserializes the body of the HTTP response as a Python object. - - The body of the HTTP response must be encoded using UTF-8, as per - `RFC 8529 Section 8.1 `_. - - To use a custom JSON decoder pass the result of :attr:`HTTPResponse.data` to - your custom decoder instead. - - If the body of the HTTP response is not decodable to UTF-8, a - `UnicodeDecodeError` will be raised. If the body of the HTTP response is not a - valid JSON document, a `json.JSONDecodeError` will be raised. - - Read more :ref:`here `. - - :returns: The body of the HTTP response as a Python object. - """ - data = self.data.decode("utf-8") - return _json.loads(data) - - def close(self) -> None: - if not self._closed: - if isinstance(self._response.body, IOBase): - self._response.body.close() - if self._connection: - self._connection.close() - self._connection = None - self._closed = True - - @contextmanager - def _error_catcher(self) -> typing.Generator[None]: - """ - Catch Emscripten specific exceptions thrown by fetch.py, - instead re-raising urllib3 variants, so that low-level exceptions - are not leaked in the high-level api. - - On exit, release the connection back to the pool. - """ - from .fetch import _RequestError, _TimeoutError # avoid circular import - - clean_exit = False - - try: - yield - # If no exception is thrown, we should avoid cleaning up - # unnecessarily. - clean_exit = True - except _TimeoutError as e: - raise TimeoutError(str(e)) - except _RequestError as e: - raise HTTPException(str(e)) - finally: - # If we didn't terminate cleanly, we need to throw away our - # connection. - if not clean_exit: - # The response may not be closed but we're not going to use it - # anymore so close it now - if ( - isinstance(self._response.body, IOBase) - and not self._response.body.closed - ): - self._response.body.close() - # release the connection back to the pool - self.release_conn() - else: - # If we have read everything from the response stream, - # return the connection back to the pool. - if ( - isinstance(self._response.body, IOBase) - and self._response.body.closed - ): - self.release_conn() diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py deleted file mode 100644 index 3714500e..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py +++ /dev/null @@ -1,564 +0,0 @@ -""" -Module for using pyOpenSSL as a TLS backend. This module was relevant before -the standard library ``ssl`` module supported SNI, but now that we've dropped -support for Python 2.7 all relevant Python versions support SNI so -**this module is no longer recommended**. - -This needs the following packages installed: - -* `pyOpenSSL`_ (tested with 16.0.0) -* `cryptography`_ (minimum 1.3.4, from pyopenssl) -* `idna`_ (minimum 2.0) - -However, pyOpenSSL depends on cryptography, so while we use all three directly here we -end up having relatively few packages required. - -You can install them with the following command: - -.. code-block:: bash - - $ python -m pip install pyopenssl cryptography idna - -To activate certificate checking, call -:func:`~urllib3.contrib.pyopenssl.inject_into_urllib3` from your Python code -before you begin making HTTP requests. This can be done in a ``sitecustomize`` -module, or at any other time before your application begins using ``urllib3``, -like this: - -.. code-block:: python - - try: - import urllib3.contrib.pyopenssl - urllib3.contrib.pyopenssl.inject_into_urllib3() - except ImportError: - pass - -.. _pyopenssl: https://www.pyopenssl.org -.. _cryptography: https://cryptography.io -.. _idna: https://github.com/kjd/idna -""" - -from __future__ import annotations - -import OpenSSL.SSL # type: ignore[import-untyped] -from cryptography import x509 - -try: - from cryptography.x509 import UnsupportedExtension # type: ignore[attr-defined] -except ImportError: - # UnsupportedExtension is gone in cryptography >= 2.1.0 - class UnsupportedExtension(Exception): # type: ignore[no-redef] - pass - - -import logging -import ssl -import typing -from io import BytesIO -from socket import socket as socket_cls -from socket import timeout - -from .. import util - -if typing.TYPE_CHECKING: - from OpenSSL.crypto import X509 # type: ignore[import-untyped] - - -__all__ = ["inject_into_urllib3", "extract_from_urllib3"] - -# Map from urllib3 to PyOpenSSL compatible parameter-values. -_openssl_versions: dict[int, int] = { - util.ssl_.PROTOCOL_TLS: OpenSSL.SSL.SSLv23_METHOD, # type: ignore[attr-defined] - util.ssl_.PROTOCOL_TLS_CLIENT: OpenSSL.SSL.SSLv23_METHOD, # type: ignore[attr-defined] - ssl.PROTOCOL_TLSv1: OpenSSL.SSL.TLSv1_METHOD, -} - -if hasattr(ssl, "PROTOCOL_TLSv1_1") and hasattr(OpenSSL.SSL, "TLSv1_1_METHOD"): - _openssl_versions[ssl.PROTOCOL_TLSv1_1] = OpenSSL.SSL.TLSv1_1_METHOD - -if hasattr(ssl, "PROTOCOL_TLSv1_2") and hasattr(OpenSSL.SSL, "TLSv1_2_METHOD"): - _openssl_versions[ssl.PROTOCOL_TLSv1_2] = OpenSSL.SSL.TLSv1_2_METHOD - - -_stdlib_to_openssl_verify = { - ssl.CERT_NONE: OpenSSL.SSL.VERIFY_NONE, - ssl.CERT_OPTIONAL: OpenSSL.SSL.VERIFY_PEER, - ssl.CERT_REQUIRED: OpenSSL.SSL.VERIFY_PEER - + OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT, -} -_openssl_to_stdlib_verify = {v: k for k, v in _stdlib_to_openssl_verify.items()} - -# The SSLvX values are the most likely to be missing in the future -# but we check them all just to be sure. -_OP_NO_SSLv2_OR_SSLv3: int = getattr(OpenSSL.SSL, "OP_NO_SSLv2", 0) | getattr( - OpenSSL.SSL, "OP_NO_SSLv3", 0 -) -_OP_NO_TLSv1: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1", 0) -_OP_NO_TLSv1_1: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1_1", 0) -_OP_NO_TLSv1_2: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1_2", 0) -_OP_NO_TLSv1_3: int = getattr(OpenSSL.SSL, "OP_NO_TLSv1_3", 0) - -_openssl_to_ssl_minimum_version: dict[int, int] = { - ssl.TLSVersion.MINIMUM_SUPPORTED: _OP_NO_SSLv2_OR_SSLv3, - ssl.TLSVersion.TLSv1: _OP_NO_SSLv2_OR_SSLv3, - ssl.TLSVersion.TLSv1_1: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1, - ssl.TLSVersion.TLSv1_2: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1 | _OP_NO_TLSv1_1, - ssl.TLSVersion.TLSv1_3: ( - _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1 | _OP_NO_TLSv1_1 | _OP_NO_TLSv1_2 - ), - ssl.TLSVersion.MAXIMUM_SUPPORTED: ( - _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1 | _OP_NO_TLSv1_1 | _OP_NO_TLSv1_2 - ), -} -_openssl_to_ssl_maximum_version: dict[int, int] = { - ssl.TLSVersion.MINIMUM_SUPPORTED: ( - _OP_NO_SSLv2_OR_SSLv3 - | _OP_NO_TLSv1 - | _OP_NO_TLSv1_1 - | _OP_NO_TLSv1_2 - | _OP_NO_TLSv1_3 - ), - ssl.TLSVersion.TLSv1: ( - _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1_1 | _OP_NO_TLSv1_2 | _OP_NO_TLSv1_3 - ), - ssl.TLSVersion.TLSv1_1: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1_2 | _OP_NO_TLSv1_3, - ssl.TLSVersion.TLSv1_2: _OP_NO_SSLv2_OR_SSLv3 | _OP_NO_TLSv1_3, - ssl.TLSVersion.TLSv1_3: _OP_NO_SSLv2_OR_SSLv3, - ssl.TLSVersion.MAXIMUM_SUPPORTED: _OP_NO_SSLv2_OR_SSLv3, -} - -# OpenSSL will only write 16K at a time -SSL_WRITE_BLOCKSIZE = 16384 - -orig_util_SSLContext = util.ssl_.SSLContext - - -log = logging.getLogger(__name__) - - -def inject_into_urllib3() -> None: - "Monkey-patch urllib3 with PyOpenSSL-backed SSL-support." - - _validate_dependencies_met() - - util.SSLContext = PyOpenSSLContext # type: ignore[assignment] - util.ssl_.SSLContext = PyOpenSSLContext # type: ignore[assignment] - util.IS_PYOPENSSL = True - util.ssl_.IS_PYOPENSSL = True - - -def extract_from_urllib3() -> None: - "Undo monkey-patching by :func:`inject_into_urllib3`." - - util.SSLContext = orig_util_SSLContext - util.ssl_.SSLContext = orig_util_SSLContext - util.IS_PYOPENSSL = False - util.ssl_.IS_PYOPENSSL = False - - -def _validate_dependencies_met() -> None: - """ - Verifies that PyOpenSSL's package-level dependencies have been met. - Throws `ImportError` if they are not met. - """ - # Method added in `cryptography==1.1`; not available in older versions - from cryptography.x509.extensions import Extensions - - if getattr(Extensions, "get_extension_for_class", None) is None: - raise ImportError( - "'cryptography' module missing required functionality. " - "Try upgrading to v1.3.4 or newer." - ) - - # pyOpenSSL 0.14 and above use cryptography for OpenSSL bindings. The _x509 - # attribute is only present on those versions. - from OpenSSL.crypto import X509 - - x509 = X509() - if getattr(x509, "_x509", None) is None: - raise ImportError( - "'pyOpenSSL' module missing required functionality. " - "Try upgrading to v0.14 or newer." - ) - - -def _dnsname_to_stdlib(name: str) -> str | None: - """ - Converts a dNSName SubjectAlternativeName field to the form used by the - standard library on the given Python version. - - Cryptography produces a dNSName as a unicode string that was idna-decoded - from ASCII bytes. We need to idna-encode that string to get it back, and - then on Python 3 we also need to convert to unicode via UTF-8 (the stdlib - uses PyUnicode_FromStringAndSize on it, which decodes via UTF-8). - - If the name cannot be idna-encoded then we return None signalling that - the name given should be skipped. - """ - - def idna_encode(name: str) -> bytes | None: - """ - Borrowed wholesale from the Python Cryptography Project. It turns out - that we can't just safely call `idna.encode`: it can explode for - wildcard names. This avoids that problem. - """ - import idna - - try: - for prefix in ["*.", "."]: - if name.startswith(prefix): - name = name[len(prefix) :] - return prefix.encode("ascii") + idna.encode(name) - return idna.encode(name) - except idna.core.IDNAError: - return None - - # Don't send IPv6 addresses through the IDNA encoder. - if ":" in name: - return name - - encoded_name = idna_encode(name) - if encoded_name is None: - return None - return encoded_name.decode("utf-8") - - -def get_subj_alt_name(peer_cert: X509) -> list[tuple[str, str]]: - """ - Given an PyOpenSSL certificate, provides all the subject alternative names. - """ - cert = peer_cert.to_cryptography() - - # We want to find the SAN extension. Ask Cryptography to locate it (it's - # faster than looping in Python) - try: - ext = cert.extensions.get_extension_for_class(x509.SubjectAlternativeName).value - except x509.ExtensionNotFound: - # No such extension, return the empty list. - return [] - except ( - x509.DuplicateExtension, - UnsupportedExtension, - x509.UnsupportedGeneralNameType, - UnicodeError, - ) as e: - # A problem has been found with the quality of the certificate. Assume - # no SAN field is present. - log.warning( - "A problem was encountered with the certificate that prevented " - "urllib3 from finding the SubjectAlternativeName field. This can " - "affect certificate validation. The error was %s", - e, - ) - return [] - - # We want to return dNSName and iPAddress fields. We need to cast the IPs - # back to strings because the match_hostname function wants them as - # strings. - # Sadly the DNS names need to be idna encoded and then, on Python 3, UTF-8 - # decoded. This is pretty frustrating, but that's what the standard library - # does with certificates, and so we need to attempt to do the same. - # We also want to skip over names which cannot be idna encoded. - names = [ - ("DNS", name) - for name in map(_dnsname_to_stdlib, ext.get_values_for_type(x509.DNSName)) - if name is not None - ] - names.extend( - ("IP Address", str(name)) for name in ext.get_values_for_type(x509.IPAddress) - ) - - return names - - -class WrappedSocket: - """API-compatibility wrapper for Python OpenSSL's Connection-class.""" - - def __init__( - self, - connection: OpenSSL.SSL.Connection, - socket: socket_cls, - suppress_ragged_eofs: bool = True, - ) -> None: - self.connection = connection - self.socket = socket - self.suppress_ragged_eofs = suppress_ragged_eofs - self._io_refs = 0 - self._closed = False - - def fileno(self) -> int: - return self.socket.fileno() - - # Copy-pasted from Python 3.5 source code - def _decref_socketios(self) -> None: - if self._io_refs > 0: - self._io_refs -= 1 - if self._closed: - self.close() - - def recv(self, *args: typing.Any, **kwargs: typing.Any) -> bytes: - try: - data = self.connection.recv(*args, **kwargs) - except OpenSSL.SSL.SysCallError as e: - if self.suppress_ragged_eofs and e.args == (-1, "Unexpected EOF"): - return b"" - else: - raise OSError(e.args[0], str(e)) from e - except OpenSSL.SSL.ZeroReturnError: - if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: - return b"" - else: - raise - except OpenSSL.SSL.WantReadError as e: - if not util.wait_for_read(self.socket, self.socket.gettimeout()): - raise timeout("The read operation timed out") from e - else: - return self.recv(*args, **kwargs) - - # TLS 1.3 post-handshake authentication - except OpenSSL.SSL.Error as e: - raise ssl.SSLError(f"read error: {e!r}") from e - else: - return data # type: ignore[no-any-return] - - def recv_into(self, *args: typing.Any, **kwargs: typing.Any) -> int: - try: - return self.connection.recv_into(*args, **kwargs) # type: ignore[no-any-return] - except OpenSSL.SSL.SysCallError as e: - if self.suppress_ragged_eofs and e.args == (-1, "Unexpected EOF"): - return 0 - else: - raise OSError(e.args[0], str(e)) from e - except OpenSSL.SSL.ZeroReturnError: - if self.connection.get_shutdown() == OpenSSL.SSL.RECEIVED_SHUTDOWN: - return 0 - else: - raise - except OpenSSL.SSL.WantReadError as e: - if not util.wait_for_read(self.socket, self.socket.gettimeout()): - raise timeout("The read operation timed out") from e - else: - return self.recv_into(*args, **kwargs) - - # TLS 1.3 post-handshake authentication - except OpenSSL.SSL.Error as e: - raise ssl.SSLError(f"read error: {e!r}") from e - - def settimeout(self, timeout: float) -> None: - return self.socket.settimeout(timeout) - - def _send_until_done(self, data: bytes) -> int: - while True: - try: - return self.connection.send(data) # type: ignore[no-any-return] - except OpenSSL.SSL.WantWriteError as e: - if not util.wait_for_write(self.socket, self.socket.gettimeout()): - raise timeout() from e - continue - except OpenSSL.SSL.SysCallError as e: - raise OSError(e.args[0], str(e)) from e - - def sendall(self, data: bytes) -> None: - total_sent = 0 - while total_sent < len(data): - sent = self._send_until_done( - data[total_sent : total_sent + SSL_WRITE_BLOCKSIZE] - ) - total_sent += sent - - def shutdown(self, how: int) -> None: - try: - self.connection.shutdown() - except OpenSSL.SSL.Error as e: - raise ssl.SSLError(f"shutdown error: {e!r}") from e - - def close(self) -> None: - self._closed = True - if self._io_refs <= 0: - self._real_close() - - def _real_close(self) -> None: - try: - return self.connection.close() # type: ignore[no-any-return] - except OpenSSL.SSL.Error: - return - - def getpeercert( - self, binary_form: bool = False - ) -> dict[str, list[typing.Any]] | None: - x509 = self.connection.get_peer_certificate() - - if not x509: - return x509 # type: ignore[no-any-return] - - if binary_form: - return OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_ASN1, x509) # type: ignore[no-any-return] - - return { - "subject": ((("commonName", x509.get_subject().CN),),), # type: ignore[dict-item] - "subjectAltName": get_subj_alt_name(x509), - } - - def version(self) -> str: - return self.connection.get_protocol_version_name() # type: ignore[no-any-return] - - def selected_alpn_protocol(self) -> str | None: - alpn_proto = self.connection.get_alpn_proto_negotiated() - return alpn_proto.decode() if alpn_proto else None - - -WrappedSocket.makefile = socket_cls.makefile # type: ignore[attr-defined] - - -class PyOpenSSLContext: - """ - I am a wrapper class for the PyOpenSSL ``Context`` object. I am responsible - for translating the interface of the standard library ``SSLContext`` object - to calls into PyOpenSSL. - """ - - def __init__(self, protocol: int) -> None: - self.protocol = _openssl_versions[protocol] - self._ctx = OpenSSL.SSL.Context(self.protocol) - self._options = 0 - self.check_hostname = False - self._minimum_version: int = ssl.TLSVersion.MINIMUM_SUPPORTED - self._maximum_version: int = ssl.TLSVersion.MAXIMUM_SUPPORTED - self._verify_flags: int = ssl.VERIFY_X509_TRUSTED_FIRST - - @property - def options(self) -> int: - return self._options - - @options.setter - def options(self, value: int) -> None: - self._options = value - self._set_ctx_options() - - @property - def verify_flags(self) -> int: - return self._verify_flags - - @verify_flags.setter - def verify_flags(self, value: int) -> None: - self._verify_flags = value - self._ctx.get_cert_store().set_flags(self._verify_flags) - - @property - def verify_mode(self) -> int: - return _openssl_to_stdlib_verify[self._ctx.get_verify_mode()] - - @verify_mode.setter - def verify_mode(self, value: ssl.VerifyMode) -> None: - self._ctx.set_verify(_stdlib_to_openssl_verify[value], _verify_callback) - - def set_default_verify_paths(self) -> None: - self._ctx.set_default_verify_paths() - - def set_ciphers(self, ciphers: bytes | str) -> None: - if isinstance(ciphers, str): - ciphers = ciphers.encode("utf-8") - self._ctx.set_cipher_list(ciphers) - - def load_verify_locations( - self, - cafile: str | None = None, - capath: str | None = None, - cadata: bytes | None = None, - ) -> None: - if cafile is not None: - cafile = cafile.encode("utf-8") # type: ignore[assignment] - if capath is not None: - capath = capath.encode("utf-8") # type: ignore[assignment] - try: - self._ctx.load_verify_locations(cafile, capath) - if cadata is not None: - self._ctx.load_verify_locations(BytesIO(cadata)) - except OpenSSL.SSL.Error as e: - raise ssl.SSLError(f"unable to load trusted certificates: {e!r}") from e - - def load_cert_chain( - self, - certfile: str, - keyfile: str | None = None, - password: str | None = None, - ) -> None: - try: - self._ctx.use_certificate_chain_file(certfile) - if password is not None: - if not isinstance(password, bytes): - password = password.encode("utf-8") # type: ignore[assignment] - self._ctx.set_passwd_cb(lambda *_: password) - self._ctx.use_privatekey_file(keyfile or certfile) - except OpenSSL.SSL.Error as e: - raise ssl.SSLError(f"Unable to load certificate chain: {e!r}") from e - - def set_alpn_protocols(self, protocols: list[bytes | str]) -> None: - protocols = [util.util.to_bytes(p, "ascii") for p in protocols] - return self._ctx.set_alpn_protos(protocols) # type: ignore[no-any-return] - - def wrap_socket( - self, - sock: socket_cls, - server_side: bool = False, - do_handshake_on_connect: bool = True, - suppress_ragged_eofs: bool = True, - server_hostname: bytes | str | None = None, - ) -> WrappedSocket: - cnx = OpenSSL.SSL.Connection(self._ctx, sock) - - # If server_hostname is an IP, don't use it for SNI, per RFC6066 Section 3 - if server_hostname and not util.ssl_.is_ipaddress(server_hostname): - if isinstance(server_hostname, str): - server_hostname = server_hostname.encode("utf-8") - cnx.set_tlsext_host_name(server_hostname) - - cnx.set_connect_state() - - while True: - try: - cnx.do_handshake() - except OpenSSL.SSL.WantReadError as e: - if not util.wait_for_read(sock, sock.gettimeout()): - raise timeout("select timed out") from e - continue - except OpenSSL.SSL.Error as e: - raise ssl.SSLError(f"bad handshake: {e!r}") from e - break - - return WrappedSocket(cnx, sock) - - def _set_ctx_options(self) -> None: - self._ctx.set_options( - self._options - | _openssl_to_ssl_minimum_version[self._minimum_version] - | _openssl_to_ssl_maximum_version[self._maximum_version] - ) - - @property - def minimum_version(self) -> int: - return self._minimum_version - - @minimum_version.setter - def minimum_version(self, minimum_version: int) -> None: - self._minimum_version = minimum_version - self._set_ctx_options() - - @property - def maximum_version(self) -> int: - return self._maximum_version - - @maximum_version.setter - def maximum_version(self, maximum_version: int) -> None: - self._maximum_version = maximum_version - self._set_ctx_options() - - -def _verify_callback( - cnx: OpenSSL.SSL.Connection, - x509: X509, - err_no: int, - err_depth: int, - return_code: int, -) -> bool: - return err_no == 0 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/socks.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/socks.py deleted file mode 100644 index c62b5e03..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/contrib/socks.py +++ /dev/null @@ -1,228 +0,0 @@ -""" -This module contains provisional support for SOCKS proxies from within -urllib3. This module supports SOCKS4, SOCKS4A (an extension of SOCKS4), and -SOCKS5. To enable its functionality, either install PySocks or install this -module with the ``socks`` extra. - -The SOCKS implementation supports the full range of urllib3 features. It also -supports the following SOCKS features: - -- SOCKS4A (``proxy_url='socks4a://...``) -- SOCKS4 (``proxy_url='socks4://...``) -- SOCKS5 with remote DNS (``proxy_url='socks5h://...``) -- SOCKS5 with local DNS (``proxy_url='socks5://...``) -- Usernames and passwords for the SOCKS proxy - -.. note:: - It is recommended to use ``socks5h://`` or ``socks4a://`` schemes in - your ``proxy_url`` to ensure that DNS resolution is done from the remote - server instead of client-side when connecting to a domain name. - -SOCKS4 supports IPv4 and domain names with the SOCKS4A extension. SOCKS5 -supports IPv4, IPv6, and domain names. - -When connecting to a SOCKS4 proxy the ``username`` portion of the ``proxy_url`` -will be sent as the ``userid`` section of the SOCKS request: - -.. code-block:: python - - proxy_url="socks4a://@proxy-host" - -When connecting to a SOCKS5 proxy the ``username`` and ``password`` portion -of the ``proxy_url`` will be sent as the username/password to authenticate -with the proxy: - -.. code-block:: python - - proxy_url="socks5h://:@proxy-host" - -""" - -from __future__ import annotations - -try: - import socks # type: ignore[import-not-found] -except ImportError: - import warnings - - from ..exceptions import DependencyWarning - - warnings.warn( - ( - "SOCKS support in urllib3 requires the installation of optional " - "dependencies: specifically, PySocks. For more information, see " - "https://urllib3.readthedocs.io/en/latest/advanced-usage.html#socks-proxies" - ), - DependencyWarning, - ) - raise - -import typing -from socket import timeout as SocketTimeout - -from ..connection import HTTPConnection, HTTPSConnection -from ..connectionpool import HTTPConnectionPool, HTTPSConnectionPool -from ..exceptions import ConnectTimeoutError, NewConnectionError -from ..poolmanager import PoolManager -from ..util.url import parse_url - -try: - import ssl -except ImportError: - ssl = None # type: ignore[assignment] - - -class _TYPE_SOCKS_OPTIONS(typing.TypedDict): - socks_version: int - proxy_host: str | None - proxy_port: str | None - username: str | None - password: str | None - rdns: bool - - -class SOCKSConnection(HTTPConnection): - """ - A plain-text HTTP connection that connects via a SOCKS proxy. - """ - - def __init__( - self, - _socks_options: _TYPE_SOCKS_OPTIONS, - *args: typing.Any, - **kwargs: typing.Any, - ) -> None: - self._socks_options = _socks_options - super().__init__(*args, **kwargs) - - def _new_conn(self) -> socks.socksocket: - """ - Establish a new connection via the SOCKS proxy. - """ - extra_kw: dict[str, typing.Any] = {} - if self.source_address: - extra_kw["source_address"] = self.source_address - - if self.socket_options: - extra_kw["socket_options"] = self.socket_options - - try: - conn = socks.create_connection( - (self.host, self.port), - proxy_type=self._socks_options["socks_version"], - proxy_addr=self._socks_options["proxy_host"], - proxy_port=self._socks_options["proxy_port"], - proxy_username=self._socks_options["username"], - proxy_password=self._socks_options["password"], - proxy_rdns=self._socks_options["rdns"], - timeout=self.timeout, - **extra_kw, - ) - - except SocketTimeout as e: - raise ConnectTimeoutError( - self, - f"Connection to {self.host} timed out. (connect timeout={self.timeout})", - ) from e - - except socks.ProxyError as e: - # This is fragile as hell, but it seems to be the only way to raise - # useful errors here. - if e.socket_err: - error = e.socket_err - if isinstance(error, SocketTimeout): - raise ConnectTimeoutError( - self, - f"Connection to {self.host} timed out. (connect timeout={self.timeout})", - ) from e - else: - # Adding `from e` messes with coverage somehow, so it's omitted. - # See #2386. - raise NewConnectionError( - self, f"Failed to establish a new connection: {error}" - ) - else: - raise NewConnectionError( - self, f"Failed to establish a new connection: {e}" - ) from e - - except OSError as e: # Defensive: PySocks should catch all these. - raise NewConnectionError( - self, f"Failed to establish a new connection: {e}" - ) from e - - return conn - - -# We don't need to duplicate the Verified/Unverified distinction from -# urllib3/connection.py here because the HTTPSConnection will already have been -# correctly set to either the Verified or Unverified form by that module. This -# means the SOCKSHTTPSConnection will automatically be the correct type. -class SOCKSHTTPSConnection(SOCKSConnection, HTTPSConnection): - pass - - -class SOCKSHTTPConnectionPool(HTTPConnectionPool): - ConnectionCls = SOCKSConnection - - -class SOCKSHTTPSConnectionPool(HTTPSConnectionPool): - ConnectionCls = SOCKSHTTPSConnection - - -class SOCKSProxyManager(PoolManager): - """ - A version of the urllib3 ProxyManager that routes connections via the - defined SOCKS proxy. - """ - - pool_classes_by_scheme = { - "http": SOCKSHTTPConnectionPool, - "https": SOCKSHTTPSConnectionPool, - } - - def __init__( - self, - proxy_url: str, - username: str | None = None, - password: str | None = None, - num_pools: int = 10, - headers: typing.Mapping[str, str] | None = None, - **connection_pool_kw: typing.Any, - ): - parsed = parse_url(proxy_url) - - if username is None and password is None and parsed.auth is not None: - split = parsed.auth.split(":") - if len(split) == 2: - username, password = split - if parsed.scheme == "socks5": - socks_version = socks.PROXY_TYPE_SOCKS5 - rdns = False - elif parsed.scheme == "socks5h": - socks_version = socks.PROXY_TYPE_SOCKS5 - rdns = True - elif parsed.scheme == "socks4": - socks_version = socks.PROXY_TYPE_SOCKS4 - rdns = False - elif parsed.scheme == "socks4a": - socks_version = socks.PROXY_TYPE_SOCKS4 - rdns = True - else: - raise ValueError(f"Unable to determine SOCKS version from {proxy_url}") - - self.proxy_url = proxy_url - - socks_options = { - "socks_version": socks_version, - "proxy_host": parsed.host, - "proxy_port": parsed.port, - "username": username, - "password": password, - "rdns": rdns, - } - connection_pool_kw["_socks_options"] = socks_options - - super().__init__(num_pools, headers, **connection_pool_kw) - - self.pool_classes_by_scheme = SOCKSProxyManager.pool_classes_by_scheme diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/exceptions.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/exceptions.py deleted file mode 100644 index a0de9d6c..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/exceptions.py +++ /dev/null @@ -1,335 +0,0 @@ -from __future__ import annotations - -import socket -import typing -import warnings -from email.errors import MessageDefect -from http.client import IncompleteRead as httplib_IncompleteRead - -if typing.TYPE_CHECKING: - from .connection import HTTPConnection - from .connectionpool import ConnectionPool - from .response import HTTPResponse - from .util.retry import Retry - -# Base Exceptions - - -class HTTPError(Exception): - """Base exception used by this module.""" - - -class HTTPWarning(Warning): - """Base warning used by this module.""" - - -_TYPE_REDUCE_RESULT = tuple[typing.Callable[..., object], tuple[object, ...]] - - -class PoolError(HTTPError): - """Base exception for errors caused within a pool.""" - - def __init__(self, pool: ConnectionPool, message: str) -> None: - self.pool = pool - self._message = message - super().__init__(f"{pool}: {message}") - - def __reduce__(self) -> _TYPE_REDUCE_RESULT: - # For pickling purposes. - return self.__class__, (None, self._message) - - -class RequestError(PoolError): - """Base exception for PoolErrors that have associated URLs.""" - - def __init__(self, pool: ConnectionPool, url: str, message: str) -> None: - self.url = url - super().__init__(pool, message) - - def __reduce__(self) -> _TYPE_REDUCE_RESULT: - # For pickling purposes. - return self.__class__, (None, self.url, self._message) - - -class SSLError(HTTPError): - """Raised when SSL certificate fails in an HTTPS connection.""" - - -class ProxyError(HTTPError): - """Raised when the connection to a proxy fails.""" - - # The original error is also available as __cause__. - original_error: Exception - - def __init__(self, message: str, error: Exception) -> None: - super().__init__(message, error) - self.original_error = error - - -class DecodeError(HTTPError): - """Raised when automatic decoding based on Content-Type fails.""" - - -class ProtocolError(HTTPError): - """Raised when something unexpected happens mid-request/response.""" - - -#: Renamed to ProtocolError but aliased for backwards compatibility. -ConnectionError = ProtocolError - - -# Leaf Exceptions - - -class MaxRetryError(RequestError): - """Raised when the maximum number of retries is exceeded. - - :param pool: The connection pool - :type pool: :class:`~urllib3.connectionpool.HTTPConnectionPool` - :param str url: The requested Url - :param reason: The underlying error - :type reason: :class:`Exception` - - """ - - def __init__( - self, pool: ConnectionPool, url: str, reason: Exception | None = None - ) -> None: - self.reason = reason - - message = f"Max retries exceeded with url: {url} (Caused by {reason!r})" - - super().__init__(pool, url, message) - - def __reduce__(self) -> _TYPE_REDUCE_RESULT: - # For pickling purposes. - return self.__class__, (None, self.url, self.reason) - - -class HostChangedError(RequestError): - """Raised when an existing pool gets a request for a foreign host.""" - - def __init__( - self, pool: ConnectionPool, url: str, retries: Retry | int = 3 - ) -> None: - message = f"Tried to open a foreign host with url: {url}" - super().__init__(pool, url, message) - self.retries = retries - - -class TimeoutStateError(HTTPError): - """Raised when passing an invalid state to a timeout""" - - -class TimeoutError(HTTPError): - """Raised when a socket timeout error occurs. - - Catching this error will catch both :exc:`ReadTimeoutErrors - ` and :exc:`ConnectTimeoutErrors `. - """ - - -class ReadTimeoutError(TimeoutError, RequestError): - """Raised when a socket timeout occurs while receiving data from a server""" - - -# This timeout error does not have a URL attached and needs to inherit from the -# base HTTPError -class ConnectTimeoutError(TimeoutError): - """Raised when a socket timeout occurs while connecting to a server""" - - -class NewConnectionError(ConnectTimeoutError, HTTPError): - """Raised when we fail to establish a new connection. Usually ECONNREFUSED.""" - - def __init__(self, conn: HTTPConnection, message: str) -> None: - self.conn = conn - self._message = message - super().__init__(f"{conn}: {message}") - - def __reduce__(self) -> _TYPE_REDUCE_RESULT: - # For pickling purposes. - return self.__class__, (None, self._message) - - @property - def pool(self) -> HTTPConnection: - warnings.warn( - "The 'pool' property is deprecated and will be removed " - "in urllib3 v2.1.0. Use 'conn' instead.", - DeprecationWarning, - stacklevel=2, - ) - - return self.conn - - -class NameResolutionError(NewConnectionError): - """Raised when host name resolution fails.""" - - def __init__(self, host: str, conn: HTTPConnection, reason: socket.gaierror): - message = f"Failed to resolve '{host}' ({reason})" - self._host = host - self._reason = reason - super().__init__(conn, message) - - def __reduce__(self) -> _TYPE_REDUCE_RESULT: - # For pickling purposes. - return self.__class__, (self._host, None, self._reason) - - -class EmptyPoolError(PoolError): - """Raised when a pool runs out of connections and no more are allowed.""" - - -class FullPoolError(PoolError): - """Raised when we try to add a connection to a full pool in blocking mode.""" - - -class ClosedPoolError(PoolError): - """Raised when a request enters a pool after the pool has been closed.""" - - -class LocationValueError(ValueError, HTTPError): - """Raised when there is something wrong with a given URL input.""" - - -class LocationParseError(LocationValueError): - """Raised when get_host or similar fails to parse the URL input.""" - - def __init__(self, location: str) -> None: - message = f"Failed to parse: {location}" - super().__init__(message) - - self.location = location - - -class URLSchemeUnknown(LocationValueError): - """Raised when a URL input has an unsupported scheme.""" - - def __init__(self, scheme: str): - message = f"Not supported URL scheme {scheme}" - super().__init__(message) - - self.scheme = scheme - - -class ResponseError(HTTPError): - """Used as a container for an error reason supplied in a MaxRetryError.""" - - GENERIC_ERROR = "too many error responses" - SPECIFIC_ERROR = "too many {status_code} error responses" - - -class SecurityWarning(HTTPWarning): - """Warned when performing security reducing actions""" - - -class InsecureRequestWarning(SecurityWarning): - """Warned when making an unverified HTTPS request.""" - - -class NotOpenSSLWarning(SecurityWarning): - """Warned when using unsupported SSL library""" - - -class SystemTimeWarning(SecurityWarning): - """Warned when system time is suspected to be wrong""" - - -class InsecurePlatformWarning(SecurityWarning): - """Warned when certain TLS/SSL configuration is not available on a platform.""" - - -class DependencyWarning(HTTPWarning): - """ - Warned when an attempt is made to import a module with missing optional - dependencies. - """ - - -class ResponseNotChunked(ProtocolError, ValueError): - """Response needs to be chunked in order to read it as chunks.""" - - -class BodyNotHttplibCompatible(HTTPError): - """ - Body should be :class:`http.client.HTTPResponse` like - (have an fp attribute which returns raw chunks) for read_chunked(). - """ - - -class IncompleteRead(HTTPError, httplib_IncompleteRead): - """ - Response length doesn't match expected Content-Length - - Subclass of :class:`http.client.IncompleteRead` to allow int value - for ``partial`` to avoid creating large objects on streamed reads. - """ - - partial: int # type: ignore[assignment] - expected: int - - def __init__(self, partial: int, expected: int) -> None: - self.partial = partial - self.expected = expected - - def __repr__(self) -> str: - return "IncompleteRead(%i bytes read, %i more expected)" % ( - self.partial, - self.expected, - ) - - -class InvalidChunkLength(HTTPError, httplib_IncompleteRead): - """Invalid chunk length in a chunked response.""" - - def __init__(self, response: HTTPResponse, length: bytes) -> None: - self.partial: int = response.tell() # type: ignore[assignment] - self.expected: int | None = response.length_remaining - self.response = response - self.length = length - - def __repr__(self) -> str: - return "InvalidChunkLength(got length %r, %i bytes read)" % ( - self.length, - self.partial, - ) - - -class InvalidHeader(HTTPError): - """The header provided was somehow invalid.""" - - -class ProxySchemeUnknown(AssertionError, URLSchemeUnknown): - """ProxyManager does not support the supplied scheme""" - - # TODO(t-8ch): Stop inheriting from AssertionError in v2.0. - - def __init__(self, scheme: str | None) -> None: - # 'localhost' is here because our URL parser parses - # localhost:8080 -> scheme=localhost, remove if we fix this. - if scheme == "localhost": - scheme = None - if scheme is None: - message = "Proxy URL had no scheme, should start with http:// or https://" - else: - message = f"Proxy URL had unsupported scheme {scheme}, should use http:// or https://" - super().__init__(message) - - -class ProxySchemeUnsupported(ValueError): - """Fetching HTTPS resources through HTTPS proxies is unsupported""" - - -class HeaderParsingError(HTTPError): - """Raised by assert_header_parsing, but we convert it to a log.warning statement.""" - - def __init__( - self, defects: list[MessageDefect], unparsed_data: bytes | str | None - ) -> None: - message = f"{defects or 'Unknown'}, unparsed data: {unparsed_data!r}" - super().__init__(message) - - -class UnrewindableBodyError(HTTPError): - """urllib3 encountered an error when trying to rewind a body""" diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/fields.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/fields.py deleted file mode 100644 index 97c4730c..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/fields.py +++ /dev/null @@ -1,341 +0,0 @@ -from __future__ import annotations - -import email.utils -import mimetypes -import typing - -_TYPE_FIELD_VALUE = typing.Union[str, bytes] -_TYPE_FIELD_VALUE_TUPLE = typing.Union[ - _TYPE_FIELD_VALUE, - tuple[str, _TYPE_FIELD_VALUE], - tuple[str, _TYPE_FIELD_VALUE, str], -] - - -def guess_content_type( - filename: str | None, default: str = "application/octet-stream" -) -> str: - """ - Guess the "Content-Type" of a file. - - :param filename: - The filename to guess the "Content-Type" of using :mod:`mimetypes`. - :param default: - If no "Content-Type" can be guessed, default to `default`. - """ - if filename: - return mimetypes.guess_type(filename)[0] or default - return default - - -def format_header_param_rfc2231(name: str, value: _TYPE_FIELD_VALUE) -> str: - """ - Helper function to format and quote a single header parameter using the - strategy defined in RFC 2231. - - Particularly useful for header parameters which might contain - non-ASCII values, like file names. This follows - `RFC 2388 Section 4.4 `_. - - :param name: - The name of the parameter, a string expected to be ASCII only. - :param value: - The value of the parameter, provided as ``bytes`` or `str``. - :returns: - An RFC-2231-formatted unicode string. - - .. deprecated:: 2.0.0 - Will be removed in urllib3 v2.1.0. This is not valid for - ``multipart/form-data`` header parameters. - """ - import warnings - - warnings.warn( - "'format_header_param_rfc2231' is deprecated and will be " - "removed in urllib3 v2.1.0. This is not valid for " - "multipart/form-data header parameters.", - DeprecationWarning, - stacklevel=2, - ) - - if isinstance(value, bytes): - value = value.decode("utf-8") - - if not any(ch in value for ch in '"\\\r\n'): - result = f'{name}="{value}"' - try: - result.encode("ascii") - except (UnicodeEncodeError, UnicodeDecodeError): - pass - else: - return result - - value = email.utils.encode_rfc2231(value, "utf-8") - value = f"{name}*={value}" - - return value - - -def format_multipart_header_param(name: str, value: _TYPE_FIELD_VALUE) -> str: - """ - Format and quote a single multipart header parameter. - - This follows the `WHATWG HTML Standard`_ as of 2021/06/10, matching - the behavior of current browser and curl versions. Values are - assumed to be UTF-8. The ``\\n``, ``\\r``, and ``"`` characters are - percent encoded. - - .. _WHATWG HTML Standard: - https://html.spec.whatwg.org/multipage/ - form-control-infrastructure.html#multipart-form-data - - :param name: - The name of the parameter, an ASCII-only ``str``. - :param value: - The value of the parameter, a ``str`` or UTF-8 encoded - ``bytes``. - :returns: - A string ``name="value"`` with the escaped value. - - .. versionchanged:: 2.0.0 - Matches the WHATWG HTML Standard as of 2021/06/10. Control - characters are no longer percent encoded. - - .. versionchanged:: 2.0.0 - Renamed from ``format_header_param_html5`` and - ``format_header_param``. The old names will be removed in - urllib3 v2.1.0. - """ - if isinstance(value, bytes): - value = value.decode("utf-8") - - # percent encode \n \r " - value = value.translate({10: "%0A", 13: "%0D", 34: "%22"}) - return f'{name}="{value}"' - - -def format_header_param_html5(name: str, value: _TYPE_FIELD_VALUE) -> str: - """ - .. deprecated:: 2.0.0 - Renamed to :func:`format_multipart_header_param`. Will be - removed in urllib3 v2.1.0. - """ - import warnings - - warnings.warn( - "'format_header_param_html5' has been renamed to " - "'format_multipart_header_param'. The old name will be " - "removed in urllib3 v2.1.0.", - DeprecationWarning, - stacklevel=2, - ) - return format_multipart_header_param(name, value) - - -def format_header_param(name: str, value: _TYPE_FIELD_VALUE) -> str: - """ - .. deprecated:: 2.0.0 - Renamed to :func:`format_multipart_header_param`. Will be - removed in urllib3 v2.1.0. - """ - import warnings - - warnings.warn( - "'format_header_param' has been renamed to " - "'format_multipart_header_param'. The old name will be " - "removed in urllib3 v2.1.0.", - DeprecationWarning, - stacklevel=2, - ) - return format_multipart_header_param(name, value) - - -class RequestField: - """ - A data container for request body parameters. - - :param name: - The name of this request field. Must be unicode. - :param data: - The data/value body. - :param filename: - An optional filename of the request field. Must be unicode. - :param headers: - An optional dict-like object of headers to initially use for the field. - - .. versionchanged:: 2.0.0 - The ``header_formatter`` parameter is deprecated and will - be removed in urllib3 v2.1.0. - """ - - def __init__( - self, - name: str, - data: _TYPE_FIELD_VALUE, - filename: str | None = None, - headers: typing.Mapping[str, str] | None = None, - header_formatter: typing.Callable[[str, _TYPE_FIELD_VALUE], str] | None = None, - ): - self._name = name - self._filename = filename - self.data = data - self.headers: dict[str, str | None] = {} - if headers: - self.headers = dict(headers) - - if header_formatter is not None: - import warnings - - warnings.warn( - "The 'header_formatter' parameter is deprecated and " - "will be removed in urllib3 v2.1.0.", - DeprecationWarning, - stacklevel=2, - ) - self.header_formatter = header_formatter - else: - self.header_formatter = format_multipart_header_param - - @classmethod - def from_tuples( - cls, - fieldname: str, - value: _TYPE_FIELD_VALUE_TUPLE, - header_formatter: typing.Callable[[str, _TYPE_FIELD_VALUE], str] | None = None, - ) -> RequestField: - """ - A :class:`~urllib3.fields.RequestField` factory from old-style tuple parameters. - - Supports constructing :class:`~urllib3.fields.RequestField` from - parameter of key/value strings AND key/filetuple. A filetuple is a - (filename, data, MIME type) tuple where the MIME type is optional. - For example:: - - 'foo': 'bar', - 'fakefile': ('foofile.txt', 'contents of foofile'), - 'realfile': ('barfile.txt', open('realfile').read()), - 'typedfile': ('bazfile.bin', open('bazfile').read(), 'image/jpeg'), - 'nonamefile': 'contents of nonamefile field', - - Field names and filenames must be unicode. - """ - filename: str | None - content_type: str | None - data: _TYPE_FIELD_VALUE - - if isinstance(value, tuple): - if len(value) == 3: - filename, data, content_type = value - else: - filename, data = value - content_type = guess_content_type(filename) - else: - filename = None - content_type = None - data = value - - request_param = cls( - fieldname, data, filename=filename, header_formatter=header_formatter - ) - request_param.make_multipart(content_type=content_type) - - return request_param - - def _render_part(self, name: str, value: _TYPE_FIELD_VALUE) -> str: - """ - Override this method to change how each multipart header - parameter is formatted. By default, this calls - :func:`format_multipart_header_param`. - - :param name: - The name of the parameter, an ASCII-only ``str``. - :param value: - The value of the parameter, a ``str`` or UTF-8 encoded - ``bytes``. - - :meta public: - """ - return self.header_formatter(name, value) - - def _render_parts( - self, - header_parts: ( - dict[str, _TYPE_FIELD_VALUE | None] - | typing.Sequence[tuple[str, _TYPE_FIELD_VALUE | None]] - ), - ) -> str: - """ - Helper function to format and quote a single header. - - Useful for single headers that are composed of multiple items. E.g., - 'Content-Disposition' fields. - - :param header_parts: - A sequence of (k, v) tuples or a :class:`dict` of (k, v) to format - as `k1="v1"; k2="v2"; ...`. - """ - iterable: typing.Iterable[tuple[str, _TYPE_FIELD_VALUE | None]] - - parts = [] - if isinstance(header_parts, dict): - iterable = header_parts.items() - else: - iterable = header_parts - - for name, value in iterable: - if value is not None: - parts.append(self._render_part(name, value)) - - return "; ".join(parts) - - def render_headers(self) -> str: - """ - Renders the headers for this request field. - """ - lines = [] - - sort_keys = ["Content-Disposition", "Content-Type", "Content-Location"] - for sort_key in sort_keys: - if self.headers.get(sort_key, False): - lines.append(f"{sort_key}: {self.headers[sort_key]}") - - for header_name, header_value in self.headers.items(): - if header_name not in sort_keys: - if header_value: - lines.append(f"{header_name}: {header_value}") - - lines.append("\r\n") - return "\r\n".join(lines) - - def make_multipart( - self, - content_disposition: str | None = None, - content_type: str | None = None, - content_location: str | None = None, - ) -> None: - """ - Makes this request field into a multipart request field. - - This method overrides "Content-Disposition", "Content-Type" and - "Content-Location" headers to the request parameter. - - :param content_disposition: - The 'Content-Disposition' of the request body. Defaults to 'form-data' - :param content_type: - The 'Content-Type' of the request body. - :param content_location: - The 'Content-Location' of the request body. - - """ - content_disposition = (content_disposition or "form-data") + "; ".join( - [ - "", - self._render_parts( - (("name", self._name), ("filename", self._filename)) - ), - ] - ) - - self.headers["Content-Disposition"] = content_disposition - self.headers["Content-Type"] = content_type - self.headers["Content-Location"] = content_location diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/filepost.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/filepost.py deleted file mode 100644 index 14f70b05..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/filepost.py +++ /dev/null @@ -1,89 +0,0 @@ -from __future__ import annotations - -import binascii -import codecs -import os -import typing -from io import BytesIO - -from .fields import _TYPE_FIELD_VALUE_TUPLE, RequestField - -writer = codecs.lookup("utf-8")[3] - -_TYPE_FIELDS_SEQUENCE = typing.Sequence[ - typing.Union[tuple[str, _TYPE_FIELD_VALUE_TUPLE], RequestField] -] -_TYPE_FIELDS = typing.Union[ - _TYPE_FIELDS_SEQUENCE, - typing.Mapping[str, _TYPE_FIELD_VALUE_TUPLE], -] - - -def choose_boundary() -> str: - """ - Our embarrassingly-simple replacement for mimetools.choose_boundary. - """ - return binascii.hexlify(os.urandom(16)).decode() - - -def iter_field_objects(fields: _TYPE_FIELDS) -> typing.Iterable[RequestField]: - """ - Iterate over fields. - - Supports list of (k, v) tuples and dicts, and lists of - :class:`~urllib3.fields.RequestField`. - - """ - iterable: typing.Iterable[RequestField | tuple[str, _TYPE_FIELD_VALUE_TUPLE]] - - if isinstance(fields, typing.Mapping): - iterable = fields.items() - else: - iterable = fields - - for field in iterable: - if isinstance(field, RequestField): - yield field - else: - yield RequestField.from_tuples(*field) - - -def encode_multipart_formdata( - fields: _TYPE_FIELDS, boundary: str | None = None -) -> tuple[bytes, str]: - """ - Encode a dictionary of ``fields`` using the multipart/form-data MIME format. - - :param fields: - Dictionary of fields or list of (key, :class:`~urllib3.fields.RequestField`). - Values are processed by :func:`urllib3.fields.RequestField.from_tuples`. - - :param boundary: - If not specified, then a random boundary will be generated using - :func:`urllib3.filepost.choose_boundary`. - """ - body = BytesIO() - if boundary is None: - boundary = choose_boundary() - - for field in iter_field_objects(fields): - body.write(f"--{boundary}\r\n".encode("latin-1")) - - writer(body).write(field.render_headers()) - data = field.data - - if isinstance(data, int): - data = str(data) # Backwards compatibility - - if isinstance(data, str): - writer(body).write(data) - else: - body.write(data) - - body.write(b"\r\n") - - body.write(f"--{boundary}--\r\n".encode("latin-1")) - - content_type = f"multipart/form-data; boundary={boundary}" - - return body.getvalue(), content_type diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__init__.py deleted file mode 100644 index 133e1d8f..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__init__.py +++ /dev/null @@ -1,53 +0,0 @@ -from __future__ import annotations - -from importlib.metadata import version - -__all__ = [ - "inject_into_urllib3", - "extract_from_urllib3", -] - -import typing - -orig_HTTPSConnection: typing.Any = None - - -def inject_into_urllib3() -> None: - # First check if h2 version is valid - h2_version = version("h2") - if not h2_version.startswith("4."): - raise ImportError( - "urllib3 v2 supports h2 version 4.x.x, currently " - f"the 'h2' module is compiled with {h2_version!r}. " - "See: https://github.com/urllib3/urllib3/issues/3290" - ) - - # Import here to avoid circular dependencies. - from .. import connection as urllib3_connection - from .. import util as urllib3_util - from ..connectionpool import HTTPSConnectionPool - from ..util import ssl_ as urllib3_util_ssl - from .connection import HTTP2Connection - - global orig_HTTPSConnection - orig_HTTPSConnection = urllib3_connection.HTTPSConnection - - HTTPSConnectionPool.ConnectionCls = HTTP2Connection - urllib3_connection.HTTPSConnection = HTTP2Connection # type: ignore[misc] - - # TODO: Offer 'http/1.1' as well, but for testing purposes this is handy. - urllib3_util.ALPN_PROTOCOLS = ["h2"] - urllib3_util_ssl.ALPN_PROTOCOLS = ["h2"] - - -def extract_from_urllib3() -> None: - from .. import connection as urllib3_connection - from .. import util as urllib3_util - from ..connectionpool import HTTPSConnectionPool - from ..util import ssl_ as urllib3_util_ssl - - HTTPSConnectionPool.ConnectionCls = orig_HTTPSConnection - urllib3_connection.HTTPSConnection = orig_HTTPSConnection # type: ignore[misc] - - urllib3_util.ALPN_PROTOCOLS = ["http/1.1"] - urllib3_util_ssl.ALPN_PROTOCOLS = ["http/1.1"] diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index 3f93584f56cea00772dcbb13a1fe39a0c96cbbe4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1739 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/probe.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/__pycache__/probe.cpython-312.pyc deleted file mode 100644 index b18d23f890b7eb82efb8da964732740ea4e8e16c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3690 zcmb6bOKcm*b!I;#m!F8DC`;DIT1k}Em2I+?oCGPH+SDg;f2wP%LBrHu(AJp?xz;Qs1WN z5Pb9I&6_uG-*^7x^SKcWq1zpsKU?X_z6F?p!4QV)q7H|w>igPJ0#&PIf zr1AHVCOqM6?ikM@oqtl35fgM_j@?ir)afG7z58i&6>|XnwIk?Gp!<)YyEIXA%y2O& z&neEoQw9ZFo_IQ)G2>=3lQt$3dr#Gr#9Nnu`Vi?ThBXx9G#ukKm&V-_VuB{Y2MIAz zLi>N3TN8lp&^($5vlI9oFuU?j#cTQ1OH)&qhcA=N4Sg)0nAIQimZ+vOiFwPbCMba| z49izr-HNAjx{<(pl%u-w2;r?OOgFQ!H&@eo4=<`4xPa8gZW6%?B-n$kYA!@5j~?Sm zMYJSymgsRUnVzwP?}K{83Ead*fdt?&wgf{@O&j!bd1opzn_18!GwIuraow0VGg*qC z0SO5+a!XI&ilmY^BH6q-n@Nv^&kje7q^Y0D#uM}L8QqBFNDB5xBD1EM9gbwFal+ZW z3*sF8xC5i^PYm+@mnK(HKQbGh4IwgukxBi?#vFC# zfl-%!v}Oh2Jn(D(^_|jL}`tY}xTM$0DxZPdvbCvGS7EUgQcJ82}-h8a&MbjwNfln%R!lQhvY!feJc zEg_pBrX{jWwfK1*0vCXt)L1vD!DV|8TA8e-+D&Rat*JA*xg;No?gJbFIA;7CzzV85 zP;+ZhtoWKA#6FC@M3NM#w6r}6uAVNARXL|GQfcohw-1%thdvuAwMSOP7cK4UEul)M zyzK*CcA)A;!GUcLEUR58*j{c4m0Ch;S4%BQ(N%Hz%dYm4t9{eeQRO5l02j6%F9%PS zf+yFEQt(u9qUuNf)}r^HuM`yQ`Vw)z$a7`*cRi1LHk5Cz3T1z9$=|!yU-F-<429{s zujKDr8`0j2Q^mh}bsG7*zeKzgc;42#*8AyCHrvAM-tc-$xZ(|#yTB1XGva-OhbbMVJ z-tm}XU4n+6)JpYTXeRs1LxGl_MuD!MK*&xx2>nLd?(Xe|ejXD2K&mNrswv#$(#0{> z=47H9x+&BC6B(9`T$YBdJe?tOh9qZ_X*oV^>O^K?EYHRb`G&5iWjGR6gx$h#x!%ZCR+DY0te%r@x^n`6K@Ghx6F@r4f?8f3kqHMlMyQxP0G0{< z;ObN{RpcQ9_6M=A^(7LdK&7dBy=maHP1!!)| z+%ksNgXyncJZbAmKnb>Y7Y{{B9@isf>Bm#ENkg8_r4zLB$rOj^Fm=O(XMmi|k!;4$ z4LOre<-_v3x@pMftS%>Vgy?Bgh8k(=a%P$lSr3=lgJx3U_f%jJ8vlX;BvwH2yoGNW zv?)Va*wxXg+E1RP_Cr;%wi5+*<1&C1^rBt{u@uFX0i`_fW@+Hf^1$1rfwwmXE|gm? z{(9=skJj*NboJ)P;~Om(w|UC>5>fcCzt-1Pw%##l_fxXGqN3|_9IQV4RB&UJ41>dBAo*-ucC>+C=`m|)i{J_j*Q~C!W{Im>mubr0n$h@XV^mUnzFX*ajxm9%` zqvcW*_p0j6Ts&3VkyO=4WlTd=34NgunSu}n3I(SCJVu1JXJ$x3^Opf?X4b9lp(-ad zJ6684<>ke3yyfl@TdSkkD|S|bZB?GmJ$?3k?gE=%NWLu*=v!U97{#yLf*7)IV8Yqu zGDuh4RPX5=7!>p-G>6!uhFxz3Y)`6}ul#UyLLG~aU7E1y+O3 zkR8`~+alj4Z@~tQUgJ7|DvvS#8|wQ4`L`Y87=xo3oaE54lN+sr>nQLd5Gn`Gl>+Bh qnksuxcURdRD!D@|&WhAomikIk---j?7UHpr&{`FF4|m7O?*9*w6(B?a diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/connection.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/connection.py deleted file mode 100644 index d0822391..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/connection.py +++ /dev/null @@ -1,356 +0,0 @@ -from __future__ import annotations - -import logging -import re -import threading -import types -import typing - -import h2.config # type: ignore[import-untyped] -import h2.connection # type: ignore[import-untyped] -import h2.events # type: ignore[import-untyped] - -from .._base_connection import _TYPE_BODY -from .._collections import HTTPHeaderDict -from ..connection import HTTPSConnection, _get_default_user_agent -from ..exceptions import ConnectionError -from ..response import BaseHTTPResponse - -orig_HTTPSConnection = HTTPSConnection - -T = typing.TypeVar("T") - -log = logging.getLogger(__name__) - -RE_IS_LEGAL_HEADER_NAME = re.compile(rb"^[!#$%&'*+\-.^_`|~0-9a-z]+$") -RE_IS_ILLEGAL_HEADER_VALUE = re.compile(rb"[\0\x00\x0a\x0d\r\n]|^[ \r\n\t]|[ \r\n\t]$") - - -def _is_legal_header_name(name: bytes) -> bool: - """ - "An implementation that validates fields according to the definitions in Sections - 5.1 and 5.5 of [HTTP] only needs an additional check that field names do not - include uppercase characters." (https://httpwg.org/specs/rfc9113.html#n-field-validity) - - `http.client._is_legal_header_name` does not validate the field name according to the - HTTP 1.1 spec, so we do that here, in addition to checking for uppercase characters. - - This does not allow for the `:` character in the header name, so should not - be used to validate pseudo-headers. - """ - return bool(RE_IS_LEGAL_HEADER_NAME.match(name)) - - -def _is_illegal_header_value(value: bytes) -> bool: - """ - "A field value MUST NOT contain the zero value (ASCII NUL, 0x00), line feed - (ASCII LF, 0x0a), or carriage return (ASCII CR, 0x0d) at any position. A field - value MUST NOT start or end with an ASCII whitespace character (ASCII SP or HTAB, - 0x20 or 0x09)." (https://httpwg.org/specs/rfc9113.html#n-field-validity) - """ - return bool(RE_IS_ILLEGAL_HEADER_VALUE.search(value)) - - -class _LockedObject(typing.Generic[T]): - """ - A wrapper class that hides a specific object behind a lock. - The goal here is to provide a simple way to protect access to an object - that cannot safely be simultaneously accessed from multiple threads. The - intended use of this class is simple: take hold of it with a context - manager, which returns the protected object. - """ - - __slots__ = ( - "lock", - "_obj", - ) - - def __init__(self, obj: T): - self.lock = threading.RLock() - self._obj = obj - - def __enter__(self) -> T: - self.lock.acquire() - return self._obj - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: types.TracebackType | None, - ) -> None: - self.lock.release() - - -class HTTP2Connection(HTTPSConnection): - def __init__( - self, host: str, port: int | None = None, **kwargs: typing.Any - ) -> None: - self._h2_conn = self._new_h2_conn() - self._h2_stream: int | None = None - self._headers: list[tuple[bytes, bytes]] = [] - - if "proxy" in kwargs or "proxy_config" in kwargs: # Defensive: - raise NotImplementedError("Proxies aren't supported with HTTP/2") - - super().__init__(host, port, **kwargs) - - if self._tunnel_host is not None: - raise NotImplementedError("Tunneling isn't supported with HTTP/2") - - def _new_h2_conn(self) -> _LockedObject[h2.connection.H2Connection]: - config = h2.config.H2Configuration(client_side=True) - return _LockedObject(h2.connection.H2Connection(config=config)) - - def connect(self) -> None: - super().connect() - with self._h2_conn as conn: - conn.initiate_connection() - if data_to_send := conn.data_to_send(): - self.sock.sendall(data_to_send) - - def putrequest( # type: ignore[override] - self, - method: str, - url: str, - **kwargs: typing.Any, - ) -> None: - """putrequest - This deviates from the HTTPConnection method signature since we never need to override - sending accept-encoding headers or the host header. - """ - if "skip_host" in kwargs: - raise NotImplementedError("`skip_host` isn't supported") - if "skip_accept_encoding" in kwargs: - raise NotImplementedError("`skip_accept_encoding` isn't supported") - - self._request_url = url or "/" - self._validate_path(url) # type: ignore[attr-defined] - - if ":" in self.host: - authority = f"[{self.host}]:{self.port or 443}" - else: - authority = f"{self.host}:{self.port or 443}" - - self._headers.append((b":scheme", b"https")) - self._headers.append((b":method", method.encode())) - self._headers.append((b":authority", authority.encode())) - self._headers.append((b":path", url.encode())) - - with self._h2_conn as conn: - self._h2_stream = conn.get_next_available_stream_id() - - def putheader(self, header: str | bytes, *values: str | bytes) -> None: # type: ignore[override] - # TODO SKIPPABLE_HEADERS from urllib3 are ignored. - header = header.encode() if isinstance(header, str) else header - header = header.lower() # A lot of upstream code uses capitalized headers. - if not _is_legal_header_name(header): - raise ValueError(f"Illegal header name {str(header)}") - - for value in values: - value = value.encode() if isinstance(value, str) else value - if _is_illegal_header_value(value): - raise ValueError(f"Illegal header value {str(value)}") - self._headers.append((header, value)) - - def endheaders(self, message_body: typing.Any = None) -> None: # type: ignore[override] - if self._h2_stream is None: - raise ConnectionError("Must call `putrequest` first.") - - with self._h2_conn as conn: - conn.send_headers( - stream_id=self._h2_stream, - headers=self._headers, - end_stream=(message_body is None), - ) - if data_to_send := conn.data_to_send(): - self.sock.sendall(data_to_send) - self._headers = [] # Reset headers for the next request. - - def send(self, data: typing.Any) -> None: - """Send data to the server. - `data` can be: `str`, `bytes`, an iterable, or file-like objects - that support a .read() method. - """ - if self._h2_stream is None: - raise ConnectionError("Must call `putrequest` first.") - - with self._h2_conn as conn: - if data_to_send := conn.data_to_send(): - self.sock.sendall(data_to_send) - - if hasattr(data, "read"): # file-like objects - while True: - chunk = data.read(self.blocksize) - if not chunk: - break - if isinstance(chunk, str): - chunk = chunk.encode() # pragma: no cover - conn.send_data(self._h2_stream, chunk, end_stream=False) - if data_to_send := conn.data_to_send(): - self.sock.sendall(data_to_send) - conn.end_stream(self._h2_stream) - return - - if isinstance(data, str): # str -> bytes - data = data.encode() - - try: - if isinstance(data, bytes): - conn.send_data(self._h2_stream, data, end_stream=True) - if data_to_send := conn.data_to_send(): - self.sock.sendall(data_to_send) - else: - for chunk in data: - conn.send_data(self._h2_stream, chunk, end_stream=False) - if data_to_send := conn.data_to_send(): - self.sock.sendall(data_to_send) - conn.end_stream(self._h2_stream) - except TypeError: - raise TypeError( - "`data` should be str, bytes, iterable, or file. got %r" - % type(data) - ) - - def set_tunnel( - self, - host: str, - port: int | None = None, - headers: typing.Mapping[str, str] | None = None, - scheme: str = "http", - ) -> None: - raise NotImplementedError( - "HTTP/2 does not support setting up a tunnel through a proxy" - ) - - def getresponse( # type: ignore[override] - self, - ) -> HTTP2Response: - status = None - data = bytearray() - with self._h2_conn as conn: - end_stream = False - while not end_stream: - # TODO: Arbitrary read value. - if received_data := self.sock.recv(65535): - events = conn.receive_data(received_data) - for event in events: - if isinstance(event, h2.events.ResponseReceived): - headers = HTTPHeaderDict() - for header, value in event.headers: - if header == b":status": - status = int(value.decode()) - else: - headers.add( - header.decode("ascii"), value.decode("ascii") - ) - - elif isinstance(event, h2.events.DataReceived): - data += event.data - conn.acknowledge_received_data( - event.flow_controlled_length, event.stream_id - ) - - elif isinstance(event, h2.events.StreamEnded): - end_stream = True - - if data_to_send := conn.data_to_send(): - self.sock.sendall(data_to_send) - - assert status is not None - return HTTP2Response( - status=status, - headers=headers, - request_url=self._request_url, - data=bytes(data), - ) - - def request( # type: ignore[override] - self, - method: str, - url: str, - body: _TYPE_BODY | None = None, - headers: typing.Mapping[str, str] | None = None, - *, - preload_content: bool = True, - decode_content: bool = True, - enforce_content_length: bool = True, - **kwargs: typing.Any, - ) -> None: - """Send an HTTP/2 request""" - if "chunked" in kwargs: - # TODO this is often present from upstream. - # raise NotImplementedError("`chunked` isn't supported with HTTP/2") - pass - - if self.sock is not None: - self.sock.settimeout(self.timeout) - - self.putrequest(method, url) - - headers = headers or {} - for k, v in headers.items(): - if k.lower() == "transfer-encoding" and v == "chunked": - continue - else: - self.putheader(k, v) - - if b"user-agent" not in dict(self._headers): - self.putheader(b"user-agent", _get_default_user_agent()) - - if body: - self.endheaders(message_body=body) - self.send(body) - else: - self.endheaders() - - def close(self) -> None: - with self._h2_conn as conn: - try: - conn.close_connection() - if data := conn.data_to_send(): - self.sock.sendall(data) - except Exception: - pass - - # Reset all our HTTP/2 connection state. - self._h2_conn = self._new_h2_conn() - self._h2_stream = None - self._headers = [] - - super().close() - - -class HTTP2Response(BaseHTTPResponse): - # TODO: This is a woefully incomplete response object, but works for non-streaming. - def __init__( - self, - status: int, - headers: HTTPHeaderDict, - request_url: str, - data: bytes, - decode_content: bool = False, # TODO: support decoding - ) -> None: - super().__init__( - status=status, - headers=headers, - # Following CPython, we map HTTP versions to major * 10 + minor integers - version=20, - version_string="HTTP/2", - # No reason phrase in HTTP/2 - reason=None, - decode_content=decode_content, - request_url=request_url, - ) - self._data = data - self.length_remaining = 0 - - @property - def data(self) -> bytes: - return self._data - - def get_redirect_location(self) -> None: - return None - - def close(self) -> None: - pass diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/probe.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/probe.py deleted file mode 100644 index 9ea90076..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/http2/probe.py +++ /dev/null @@ -1,87 +0,0 @@ -from __future__ import annotations - -import threading - - -class _HTTP2ProbeCache: - __slots__ = ( - "_lock", - "_cache_locks", - "_cache_values", - ) - - def __init__(self) -> None: - self._lock = threading.Lock() - self._cache_locks: dict[tuple[str, int], threading.RLock] = {} - self._cache_values: dict[tuple[str, int], bool | None] = {} - - def acquire_and_get(self, host: str, port: int) -> bool | None: - # By the end of this block we know that - # _cache_[values,locks] is available. - value = None - with self._lock: - key = (host, port) - try: - value = self._cache_values[key] - # If it's a known value we return right away. - if value is not None: - return value - except KeyError: - self._cache_locks[key] = threading.RLock() - self._cache_values[key] = None - - # If the value is unknown, we acquire the lock to signal - # to the requesting thread that the probe is in progress - # or that the current thread needs to return their findings. - key_lock = self._cache_locks[key] - key_lock.acquire() - try: - # If the by the time we get the lock the value has been - # updated we want to return the updated value. - value = self._cache_values[key] - - # In case an exception like KeyboardInterrupt is raised here. - except BaseException as e: # Defensive: - assert not isinstance(e, KeyError) # KeyError shouldn't be possible. - key_lock.release() - raise - - return value - - def set_and_release( - self, host: str, port: int, supports_http2: bool | None - ) -> None: - key = (host, port) - key_lock = self._cache_locks[key] - with key_lock: # Uses an RLock, so can be locked again from same thread. - if supports_http2 is None and self._cache_values[key] is not None: - raise ValueError( - "Cannot reset HTTP/2 support for origin after value has been set." - ) # Defensive: not expected in normal usage - - self._cache_values[key] = supports_http2 - key_lock.release() - - def _values(self) -> dict[tuple[str, int], bool | None]: - """This function is for testing purposes only. Gets the current state of the probe cache""" - with self._lock: - return {k: v for k, v in self._cache_values.items()} - - def _reset(self) -> None: - """This function is for testing purposes only. Reset the cache values""" - with self._lock: - self._cache_locks = {} - self._cache_values = {} - - -_HTTP2_PROBE_CACHE = _HTTP2ProbeCache() - -set_and_release = _HTTP2_PROBE_CACHE.set_and_release -acquire_and_get = _HTTP2_PROBE_CACHE.acquire_and_get -_values = _HTTP2_PROBE_CACHE._values -_reset = _HTTP2_PROBE_CACHE._reset - -__all__ = [ - "set_and_release", - "acquire_and_get", -] diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/poolmanager.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/poolmanager.py deleted file mode 100644 index 5763fea8..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/poolmanager.py +++ /dev/null @@ -1,653 +0,0 @@ -from __future__ import annotations - -import functools -import logging -import typing -import warnings -from types import TracebackType -from urllib.parse import urljoin - -from ._collections import HTTPHeaderDict, RecentlyUsedContainer -from ._request_methods import RequestMethods -from .connection import ProxyConfig -from .connectionpool import HTTPConnectionPool, HTTPSConnectionPool, port_by_scheme -from .exceptions import ( - LocationValueError, - MaxRetryError, - ProxySchemeUnknown, - URLSchemeUnknown, -) -from .response import BaseHTTPResponse -from .util.connection import _TYPE_SOCKET_OPTIONS -from .util.proxy import connection_requires_http_tunnel -from .util.retry import Retry -from .util.timeout import Timeout -from .util.url import Url, parse_url - -if typing.TYPE_CHECKING: - import ssl - - from typing_extensions import Self - -__all__ = ["PoolManager", "ProxyManager", "proxy_from_url"] - - -log = logging.getLogger(__name__) - -SSL_KEYWORDS = ( - "key_file", - "cert_file", - "cert_reqs", - "ca_certs", - "ca_cert_data", - "ssl_version", - "ssl_minimum_version", - "ssl_maximum_version", - "ca_cert_dir", - "ssl_context", - "key_password", - "server_hostname", -) -# Default value for `blocksize` - a new parameter introduced to -# http.client.HTTPConnection & http.client.HTTPSConnection in Python 3.7 -_DEFAULT_BLOCKSIZE = 16384 - - -class PoolKey(typing.NamedTuple): - """ - All known keyword arguments that could be provided to the pool manager, its - pools, or the underlying connections. - - All custom key schemes should include the fields in this key at a minimum. - """ - - key_scheme: str - key_host: str - key_port: int | None - key_timeout: Timeout | float | int | None - key_retries: Retry | bool | int | None - key_block: bool | None - key_source_address: tuple[str, int] | None - key_key_file: str | None - key_key_password: str | None - key_cert_file: str | None - key_cert_reqs: str | None - key_ca_certs: str | None - key_ca_cert_data: str | bytes | None - key_ssl_version: int | str | None - key_ssl_minimum_version: ssl.TLSVersion | None - key_ssl_maximum_version: ssl.TLSVersion | None - key_ca_cert_dir: str | None - key_ssl_context: ssl.SSLContext | None - key_maxsize: int | None - key_headers: frozenset[tuple[str, str]] | None - key__proxy: Url | None - key__proxy_headers: frozenset[tuple[str, str]] | None - key__proxy_config: ProxyConfig | None - key_socket_options: _TYPE_SOCKET_OPTIONS | None - key__socks_options: frozenset[tuple[str, str]] | None - key_assert_hostname: bool | str | None - key_assert_fingerprint: str | None - key_server_hostname: str | None - key_blocksize: int | None - - -def _default_key_normalizer( - key_class: type[PoolKey], request_context: dict[str, typing.Any] -) -> PoolKey: - """ - Create a pool key out of a request context dictionary. - - According to RFC 3986, both the scheme and host are case-insensitive. - Therefore, this function normalizes both before constructing the pool - key for an HTTPS request. If you wish to change this behaviour, provide - alternate callables to ``key_fn_by_scheme``. - - :param key_class: - The class to use when constructing the key. This should be a namedtuple - with the ``scheme`` and ``host`` keys at a minimum. - :type key_class: namedtuple - :param request_context: - A dictionary-like object that contain the context for a request. - :type request_context: dict - - :return: A namedtuple that can be used as a connection pool key. - :rtype: PoolKey - """ - # Since we mutate the dictionary, make a copy first - context = request_context.copy() - context["scheme"] = context["scheme"].lower() - context["host"] = context["host"].lower() - - # These are both dictionaries and need to be transformed into frozensets - for key in ("headers", "_proxy_headers", "_socks_options"): - if key in context and context[key] is not None: - context[key] = frozenset(context[key].items()) - - # The socket_options key may be a list and needs to be transformed into a - # tuple. - socket_opts = context.get("socket_options") - if socket_opts is not None: - context["socket_options"] = tuple(socket_opts) - - # Map the kwargs to the names in the namedtuple - this is necessary since - # namedtuples can't have fields starting with '_'. - for key in list(context.keys()): - context["key_" + key] = context.pop(key) - - # Default to ``None`` for keys missing from the context - for field in key_class._fields: - if field not in context: - context[field] = None - - # Default key_blocksize to _DEFAULT_BLOCKSIZE if missing from the context - if context.get("key_blocksize") is None: - context["key_blocksize"] = _DEFAULT_BLOCKSIZE - - return key_class(**context) - - -#: A dictionary that maps a scheme to a callable that creates a pool key. -#: This can be used to alter the way pool keys are constructed, if desired. -#: Each PoolManager makes a copy of this dictionary so they can be configured -#: globally here, or individually on the instance. -key_fn_by_scheme = { - "http": functools.partial(_default_key_normalizer, PoolKey), - "https": functools.partial(_default_key_normalizer, PoolKey), -} - -pool_classes_by_scheme = {"http": HTTPConnectionPool, "https": HTTPSConnectionPool} - - -class PoolManager(RequestMethods): - """ - Allows for arbitrary requests while transparently keeping track of - necessary connection pools for you. - - :param num_pools: - Number of connection pools to cache before discarding the least - recently used pool. - - :param headers: - Headers to include with all requests, unless other headers are given - explicitly. - - :param \\**connection_pool_kw: - Additional parameters are used to create fresh - :class:`urllib3.connectionpool.ConnectionPool` instances. - - Example: - - .. code-block:: python - - import urllib3 - - http = urllib3.PoolManager(num_pools=2) - - resp1 = http.request("GET", "https://google.com/") - resp2 = http.request("GET", "https://google.com/mail") - resp3 = http.request("GET", "https://yahoo.com/") - - print(len(http.pools)) - # 2 - - """ - - proxy: Url | None = None - proxy_config: ProxyConfig | None = None - - def __init__( - self, - num_pools: int = 10, - headers: typing.Mapping[str, str] | None = None, - **connection_pool_kw: typing.Any, - ) -> None: - super().__init__(headers) - if "retries" in connection_pool_kw: - retries = connection_pool_kw["retries"] - if not isinstance(retries, Retry): - # When Retry is initialized, raise_on_redirect is based - # on a redirect boolean value. - # But requests made via a pool manager always set - # redirect to False, and raise_on_redirect always ends - # up being False consequently. - # Here we fix the issue by setting raise_on_redirect to - # a value needed by the pool manager without considering - # the redirect boolean. - raise_on_redirect = retries is not False - retries = Retry.from_int(retries, redirect=False) - retries.raise_on_redirect = raise_on_redirect - connection_pool_kw = connection_pool_kw.copy() - connection_pool_kw["retries"] = retries - self.connection_pool_kw = connection_pool_kw - - self.pools: RecentlyUsedContainer[PoolKey, HTTPConnectionPool] - self.pools = RecentlyUsedContainer(num_pools) - - # Locally set the pool classes and keys so other PoolManagers can - # override them. - self.pool_classes_by_scheme = pool_classes_by_scheme - self.key_fn_by_scheme = key_fn_by_scheme.copy() - - def __enter__(self) -> Self: - return self - - def __exit__( - self, - exc_type: type[BaseException] | None, - exc_val: BaseException | None, - exc_tb: TracebackType | None, - ) -> typing.Literal[False]: - self.clear() - # Return False to re-raise any potential exceptions - return False - - def _new_pool( - self, - scheme: str, - host: str, - port: int, - request_context: dict[str, typing.Any] | None = None, - ) -> HTTPConnectionPool: - """ - Create a new :class:`urllib3.connectionpool.ConnectionPool` based on host, port, scheme, and - any additional pool keyword arguments. - - If ``request_context`` is provided, it is provided as keyword arguments - to the pool class used. This method is used to actually create the - connection pools handed out by :meth:`connection_from_url` and - companion methods. It is intended to be overridden for customization. - """ - pool_cls: type[HTTPConnectionPool] = self.pool_classes_by_scheme[scheme] - if request_context is None: - request_context = self.connection_pool_kw.copy() - - # Default blocksize to _DEFAULT_BLOCKSIZE if missing or explicitly - # set to 'None' in the request_context. - if request_context.get("blocksize") is None: - request_context["blocksize"] = _DEFAULT_BLOCKSIZE - - # Although the context has everything necessary to create the pool, - # this function has historically only used the scheme, host, and port - # in the positional args. When an API change is acceptable these can - # be removed. - for key in ("scheme", "host", "port"): - request_context.pop(key, None) - - if scheme == "http": - for kw in SSL_KEYWORDS: - request_context.pop(kw, None) - - return pool_cls(host, port, **request_context) - - def clear(self) -> None: - """ - Empty our store of pools and direct them all to close. - - This will not affect in-flight connections, but they will not be - re-used after completion. - """ - self.pools.clear() - - def connection_from_host( - self, - host: str | None, - port: int | None = None, - scheme: str | None = "http", - pool_kwargs: dict[str, typing.Any] | None = None, - ) -> HTTPConnectionPool: - """ - Get a :class:`urllib3.connectionpool.ConnectionPool` based on the host, port, and scheme. - - If ``port`` isn't given, it will be derived from the ``scheme`` using - ``urllib3.connectionpool.port_by_scheme``. If ``pool_kwargs`` is - provided, it is merged with the instance's ``connection_pool_kw`` - variable and used to create the new connection pool, if one is - needed. - """ - - if not host: - raise LocationValueError("No host specified.") - - request_context = self._merge_pool_kwargs(pool_kwargs) - request_context["scheme"] = scheme or "http" - if not port: - port = port_by_scheme.get(request_context["scheme"].lower(), 80) - request_context["port"] = port - request_context["host"] = host - - return self.connection_from_context(request_context) - - def connection_from_context( - self, request_context: dict[str, typing.Any] - ) -> HTTPConnectionPool: - """ - Get a :class:`urllib3.connectionpool.ConnectionPool` based on the request context. - - ``request_context`` must at least contain the ``scheme`` key and its - value must be a key in ``key_fn_by_scheme`` instance variable. - """ - if "strict" in request_context: - warnings.warn( - "The 'strict' parameter is no longer needed on Python 3+. " - "This will raise an error in urllib3 v2.1.0.", - DeprecationWarning, - ) - request_context.pop("strict") - - scheme = request_context["scheme"].lower() - pool_key_constructor = self.key_fn_by_scheme.get(scheme) - if not pool_key_constructor: - raise URLSchemeUnknown(scheme) - pool_key = pool_key_constructor(request_context) - - return self.connection_from_pool_key(pool_key, request_context=request_context) - - def connection_from_pool_key( - self, pool_key: PoolKey, request_context: dict[str, typing.Any] - ) -> HTTPConnectionPool: - """ - Get a :class:`urllib3.connectionpool.ConnectionPool` based on the provided pool key. - - ``pool_key`` should be a namedtuple that only contains immutable - objects. At a minimum it must have the ``scheme``, ``host``, and - ``port`` fields. - """ - with self.pools.lock: - # If the scheme, host, or port doesn't match existing open - # connections, open a new ConnectionPool. - pool = self.pools.get(pool_key) - if pool: - return pool - - # Make a fresh ConnectionPool of the desired type - scheme = request_context["scheme"] - host = request_context["host"] - port = request_context["port"] - pool = self._new_pool(scheme, host, port, request_context=request_context) - self.pools[pool_key] = pool - - return pool - - def connection_from_url( - self, url: str, pool_kwargs: dict[str, typing.Any] | None = None - ) -> HTTPConnectionPool: - """ - Similar to :func:`urllib3.connectionpool.connection_from_url`. - - If ``pool_kwargs`` is not provided and a new pool needs to be - constructed, ``self.connection_pool_kw`` is used to initialize - the :class:`urllib3.connectionpool.ConnectionPool`. If ``pool_kwargs`` - is provided, it is used instead. Note that if a new pool does not - need to be created for the request, the provided ``pool_kwargs`` are - not used. - """ - u = parse_url(url) - return self.connection_from_host( - u.host, port=u.port, scheme=u.scheme, pool_kwargs=pool_kwargs - ) - - def _merge_pool_kwargs( - self, override: dict[str, typing.Any] | None - ) -> dict[str, typing.Any]: - """ - Merge a dictionary of override values for self.connection_pool_kw. - - This does not modify self.connection_pool_kw and returns a new dict. - Any keys in the override dictionary with a value of ``None`` are - removed from the merged dictionary. - """ - base_pool_kwargs = self.connection_pool_kw.copy() - if override: - for key, value in override.items(): - if value is None: - try: - del base_pool_kwargs[key] - except KeyError: - pass - else: - base_pool_kwargs[key] = value - return base_pool_kwargs - - def _proxy_requires_url_absolute_form(self, parsed_url: Url) -> bool: - """ - Indicates if the proxy requires the complete destination URL in the - request. Normally this is only needed when not using an HTTP CONNECT - tunnel. - """ - if self.proxy is None: - return False - - return not connection_requires_http_tunnel( - self.proxy, self.proxy_config, parsed_url.scheme - ) - - def urlopen( # type: ignore[override] - self, method: str, url: str, redirect: bool = True, **kw: typing.Any - ) -> BaseHTTPResponse: - """ - Same as :meth:`urllib3.HTTPConnectionPool.urlopen` - with custom cross-host redirect logic and only sends the request-uri - portion of the ``url``. - - The given ``url`` parameter must be absolute, such that an appropriate - :class:`urllib3.connectionpool.ConnectionPool` can be chosen for it. - """ - u = parse_url(url) - - if u.scheme is None: - warnings.warn( - "URLs without a scheme (ie 'https://') are deprecated and will raise an error " - "in a future version of urllib3. To avoid this DeprecationWarning ensure all URLs " - "start with 'https://' or 'http://'. Read more in this issue: " - "https://github.com/urllib3/urllib3/issues/2920", - category=DeprecationWarning, - stacklevel=2, - ) - - conn = self.connection_from_host(u.host, port=u.port, scheme=u.scheme) - - kw["assert_same_host"] = False - kw["redirect"] = False - - if "headers" not in kw: - kw["headers"] = self.headers - - if self._proxy_requires_url_absolute_form(u): - response = conn.urlopen(method, url, **kw) - else: - response = conn.urlopen(method, u.request_uri, **kw) - - redirect_location = redirect and response.get_redirect_location() - if not redirect_location: - return response - - # Support relative URLs for redirecting. - redirect_location = urljoin(url, redirect_location) - - if response.status == 303: - # Change the method according to RFC 9110, Section 15.4.4. - method = "GET" - # And lose the body not to transfer anything sensitive. - kw["body"] = None - kw["headers"] = HTTPHeaderDict(kw["headers"])._prepare_for_method_change() - - retries = kw.get("retries", response.retries) - if not isinstance(retries, Retry): - retries = Retry.from_int(retries, redirect=redirect) - - # Strip headers marked as unsafe to forward to the redirected location. - # Check remove_headers_on_redirect to avoid a potential network call within - # conn.is_same_host() which may use socket.gethostbyname() in the future. - if retries.remove_headers_on_redirect and not conn.is_same_host( - redirect_location - ): - new_headers = kw["headers"].copy() - for header in kw["headers"]: - if header.lower() in retries.remove_headers_on_redirect: - new_headers.pop(header, None) - kw["headers"] = new_headers - - try: - retries = retries.increment(method, url, response=response, _pool=conn) - except MaxRetryError: - if retries.raise_on_redirect: - response.drain_conn() - raise - return response - - kw["retries"] = retries - kw["redirect"] = redirect - - log.info("Redirecting %s -> %s", url, redirect_location) - - response.drain_conn() - return self.urlopen(method, redirect_location, **kw) - - -class ProxyManager(PoolManager): - """ - Behaves just like :class:`PoolManager`, but sends all requests through - the defined proxy, using the CONNECT method for HTTPS URLs. - - :param proxy_url: - The URL of the proxy to be used. - - :param proxy_headers: - A dictionary containing headers that will be sent to the proxy. In case - of HTTP they are being sent with each request, while in the - HTTPS/CONNECT case they are sent only once. Could be used for proxy - authentication. - - :param proxy_ssl_context: - The proxy SSL context is used to establish the TLS connection to the - proxy when using HTTPS proxies. - - :param use_forwarding_for_https: - (Defaults to False) If set to True will forward requests to the HTTPS - proxy to be made on behalf of the client instead of creating a TLS - tunnel via the CONNECT method. **Enabling this flag means that request - and response headers and content will be visible from the HTTPS proxy** - whereas tunneling keeps request and response headers and content - private. IP address, target hostname, SNI, and port are always visible - to an HTTPS proxy even when this flag is disabled. - - :param proxy_assert_hostname: - The hostname of the certificate to verify against. - - :param proxy_assert_fingerprint: - The fingerprint of the certificate to verify against. - - Example: - - .. code-block:: python - - import urllib3 - - proxy = urllib3.ProxyManager("https://localhost:3128/") - - resp1 = proxy.request("GET", "https://google.com/") - resp2 = proxy.request("GET", "https://httpbin.org/") - - print(len(proxy.pools)) - # 1 - - resp3 = proxy.request("GET", "https://httpbin.org/") - resp4 = proxy.request("GET", "https://twitter.com/") - - print(len(proxy.pools)) - # 3 - - """ - - def __init__( - self, - proxy_url: str, - num_pools: int = 10, - headers: typing.Mapping[str, str] | None = None, - proxy_headers: typing.Mapping[str, str] | None = None, - proxy_ssl_context: ssl.SSLContext | None = None, - use_forwarding_for_https: bool = False, - proxy_assert_hostname: None | str | typing.Literal[False] = None, - proxy_assert_fingerprint: str | None = None, - **connection_pool_kw: typing.Any, - ) -> None: - if isinstance(proxy_url, HTTPConnectionPool): - str_proxy_url = f"{proxy_url.scheme}://{proxy_url.host}:{proxy_url.port}" - else: - str_proxy_url = proxy_url - proxy = parse_url(str_proxy_url) - - if proxy.scheme not in ("http", "https"): - raise ProxySchemeUnknown(proxy.scheme) - - if not proxy.port: - port = port_by_scheme.get(proxy.scheme, 80) - proxy = proxy._replace(port=port) - - self.proxy = proxy - self.proxy_headers = proxy_headers or {} - self.proxy_ssl_context = proxy_ssl_context - self.proxy_config = ProxyConfig( - proxy_ssl_context, - use_forwarding_for_https, - proxy_assert_hostname, - proxy_assert_fingerprint, - ) - - connection_pool_kw["_proxy"] = self.proxy - connection_pool_kw["_proxy_headers"] = self.proxy_headers - connection_pool_kw["_proxy_config"] = self.proxy_config - - super().__init__(num_pools, headers, **connection_pool_kw) - - def connection_from_host( - self, - host: str | None, - port: int | None = None, - scheme: str | None = "http", - pool_kwargs: dict[str, typing.Any] | None = None, - ) -> HTTPConnectionPool: - if scheme == "https": - return super().connection_from_host( - host, port, scheme, pool_kwargs=pool_kwargs - ) - - return super().connection_from_host( - self.proxy.host, self.proxy.port, self.proxy.scheme, pool_kwargs=pool_kwargs # type: ignore[union-attr] - ) - - def _set_proxy_headers( - self, url: str, headers: typing.Mapping[str, str] | None = None - ) -> typing.Mapping[str, str]: - """ - Sets headers needed by proxies: specifically, the Accept and Host - headers. Only sets headers not provided by the user. - """ - headers_ = {"Accept": "*/*"} - - netloc = parse_url(url).netloc - if netloc: - headers_["Host"] = netloc - - if headers: - headers_.update(headers) - return headers_ - - def urlopen( # type: ignore[override] - self, method: str, url: str, redirect: bool = True, **kw: typing.Any - ) -> BaseHTTPResponse: - "Same as HTTP(S)ConnectionPool.urlopen, ``url`` must be absolute." - u = parse_url(url) - if not connection_requires_http_tunnel(self.proxy, self.proxy_config, u.scheme): - # For connections using HTTP CONNECT, httplib sets the necessary - # headers on the CONNECT to the proxy. If we're not using CONNECT, - # we'll definitely need to set 'Host' at the very least. - headers = kw.get("headers", self.headers) - kw["headers"] = self._set_proxy_headers(url, headers) - - return super().urlopen(method, url, redirect=redirect, **kw) - - -def proxy_from_url(url: str, **kw: typing.Any) -> ProxyManager: - return ProxyManager(proxy_url=url, **kw) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/py.typed b/gnx-react/venv/lib/python3.12/site-packages/urllib3/py.typed deleted file mode 100644 index 5f3ea3d9..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/py.typed +++ /dev/null @@ -1,2 +0,0 @@ -# Instruct type checkers to look for inline type annotations in this package. -# See PEP 561. diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/response.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/response.py deleted file mode 100644 index 5632dab3..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/response.py +++ /dev/null @@ -1,1307 +0,0 @@ -from __future__ import annotations - -import collections -import io -import json as _json -import logging -import re -import socket -import sys -import typing -import warnings -import zlib -from contextlib import contextmanager -from http.client import HTTPMessage as _HttplibHTTPMessage -from http.client import HTTPResponse as _HttplibHTTPResponse -from socket import timeout as SocketTimeout - -if typing.TYPE_CHECKING: - from ._base_connection import BaseHTTPConnection - -try: - try: - import brotlicffi as brotli # type: ignore[import-not-found] - except ImportError: - import brotli # type: ignore[import-not-found] -except ImportError: - brotli = None - -from . import util -from ._base_connection import _TYPE_BODY -from ._collections import HTTPHeaderDict -from .connection import BaseSSLError, HTTPConnection, HTTPException -from .exceptions import ( - BodyNotHttplibCompatible, - DecodeError, - HTTPError, - IncompleteRead, - InvalidChunkLength, - InvalidHeader, - ProtocolError, - ReadTimeoutError, - ResponseNotChunked, - SSLError, -) -from .util.response import is_fp_closed, is_response_to_head -from .util.retry import Retry - -if typing.TYPE_CHECKING: - from .connectionpool import HTTPConnectionPool - -log = logging.getLogger(__name__) - - -class ContentDecoder: - def decompress(self, data: bytes) -> bytes: - raise NotImplementedError() - - def flush(self) -> bytes: - raise NotImplementedError() - - -class DeflateDecoder(ContentDecoder): - def __init__(self) -> None: - self._first_try = True - self._data = b"" - self._obj = zlib.decompressobj() - - def decompress(self, data: bytes) -> bytes: - if not data: - return data - - if not self._first_try: - return self._obj.decompress(data) - - self._data += data - try: - decompressed = self._obj.decompress(data) - if decompressed: - self._first_try = False - self._data = None # type: ignore[assignment] - return decompressed - except zlib.error: - self._first_try = False - self._obj = zlib.decompressobj(-zlib.MAX_WBITS) - try: - return self.decompress(self._data) - finally: - self._data = None # type: ignore[assignment] - - def flush(self) -> bytes: - return self._obj.flush() - - -class GzipDecoderState: - FIRST_MEMBER = 0 - OTHER_MEMBERS = 1 - SWALLOW_DATA = 2 - - -class GzipDecoder(ContentDecoder): - def __init__(self) -> None: - self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS) - self._state = GzipDecoderState.FIRST_MEMBER - - def decompress(self, data: bytes) -> bytes: - ret = bytearray() - if self._state == GzipDecoderState.SWALLOW_DATA or not data: - return bytes(ret) - while True: - try: - ret += self._obj.decompress(data) - except zlib.error: - previous_state = self._state - # Ignore data after the first error - self._state = GzipDecoderState.SWALLOW_DATA - if previous_state == GzipDecoderState.OTHER_MEMBERS: - # Allow trailing garbage acceptable in other gzip clients - return bytes(ret) - raise - data = self._obj.unused_data - if not data: - return bytes(ret) - self._state = GzipDecoderState.OTHER_MEMBERS - self._obj = zlib.decompressobj(16 + zlib.MAX_WBITS) - - def flush(self) -> bytes: - return self._obj.flush() - - -if brotli is not None: - - class BrotliDecoder(ContentDecoder): - # Supports both 'brotlipy' and 'Brotli' packages - # since they share an import name. The top branches - # are for 'brotlipy' and bottom branches for 'Brotli' - def __init__(self) -> None: - self._obj = brotli.Decompressor() - if hasattr(self._obj, "decompress"): - setattr(self, "decompress", self._obj.decompress) - else: - setattr(self, "decompress", self._obj.process) - - def flush(self) -> bytes: - if hasattr(self._obj, "flush"): - return self._obj.flush() # type: ignore[no-any-return] - return b"" - - -try: - # Python 3.14+ - from compression import zstd # type: ignore[import-not-found] # noqa: F401 - - HAS_ZSTD = True - - class ZstdDecoder(ContentDecoder): - def __init__(self) -> None: - self._obj = zstd.ZstdDecompressor() - - def decompress(self, data: bytes) -> bytes: - if not data: - return b"" - data_parts = [self._obj.decompress(data)] - while self._obj.eof and self._obj.unused_data: - unused_data = self._obj.unused_data - self._obj = zstd.ZstdDecompressor() - data_parts.append(self._obj.decompress(unused_data)) - return b"".join(data_parts) - - def flush(self) -> bytes: - if not self._obj.eof: - raise DecodeError("Zstandard data is incomplete") - return b"" - -except ImportError: - try: - # Python 3.13 and earlier require the 'zstandard' module. - import zstandard as zstd - - # The package 'zstandard' added the 'eof' property starting - # in v0.18.0 which we require to ensure a complete and - # valid zstd stream was fed into the ZstdDecoder. - # See: https://github.com/urllib3/urllib3/pull/2624 - _zstd_version = tuple( - map(int, re.search(r"^([0-9]+)\.([0-9]+)", zstd.__version__).groups()) # type: ignore[union-attr] - ) - if _zstd_version < (0, 18): # Defensive: - raise ImportError("zstandard module doesn't have eof") - except (AttributeError, ImportError, ValueError): # Defensive: - HAS_ZSTD = False - else: - HAS_ZSTD = True - - class ZstdDecoder(ContentDecoder): # type: ignore[no-redef] - def __init__(self) -> None: - self._obj = zstd.ZstdDecompressor().decompressobj() - - def decompress(self, data: bytes) -> bytes: - if not data: - return b"" - data_parts = [self._obj.decompress(data)] - while self._obj.eof and self._obj.unused_data: - unused_data = self._obj.unused_data - self._obj = zstd.ZstdDecompressor().decompressobj() - data_parts.append(self._obj.decompress(unused_data)) - return b"".join(data_parts) - - def flush(self) -> bytes: - ret = self._obj.flush() # note: this is a no-op - if not self._obj.eof: - raise DecodeError("Zstandard data is incomplete") - return ret # type: ignore[no-any-return] - - -class MultiDecoder(ContentDecoder): - """ - From RFC7231: - If one or more encodings have been applied to a representation, the - sender that applied the encodings MUST generate a Content-Encoding - header field that lists the content codings in the order in which - they were applied. - """ - - def __init__(self, modes: str) -> None: - self._decoders = [_get_decoder(m.strip()) for m in modes.split(",")] - - def flush(self) -> bytes: - return self._decoders[0].flush() - - def decompress(self, data: bytes) -> bytes: - for d in reversed(self._decoders): - data = d.decompress(data) - return data - - -def _get_decoder(mode: str) -> ContentDecoder: - if "," in mode: - return MultiDecoder(mode) - - # According to RFC 9110 section 8.4.1.3, recipients should - # consider x-gzip equivalent to gzip - if mode in ("gzip", "x-gzip"): - return GzipDecoder() - - if brotli is not None and mode == "br": - return BrotliDecoder() - - if HAS_ZSTD and mode == "zstd": - return ZstdDecoder() - - return DeflateDecoder() - - -class BytesQueueBuffer: - """Memory-efficient bytes buffer - - To return decoded data in read() and still follow the BufferedIOBase API, we need a - buffer to always return the correct amount of bytes. - - This buffer should be filled using calls to put() - - Our maximum memory usage is determined by the sum of the size of: - - * self.buffer, which contains the full data - * the largest chunk that we will copy in get() - - The worst case scenario is a single chunk, in which case we'll make a full copy of - the data inside get(). - """ - - def __init__(self) -> None: - self.buffer: typing.Deque[bytes] = collections.deque() - self._size: int = 0 - - def __len__(self) -> int: - return self._size - - def put(self, data: bytes) -> None: - self.buffer.append(data) - self._size += len(data) - - def get(self, n: int) -> bytes: - if n == 0: - return b"" - elif not self.buffer: - raise RuntimeError("buffer is empty") - elif n < 0: - raise ValueError("n should be > 0") - - fetched = 0 - ret = io.BytesIO() - while fetched < n: - remaining = n - fetched - chunk = self.buffer.popleft() - chunk_length = len(chunk) - if remaining < chunk_length: - left_chunk, right_chunk = chunk[:remaining], chunk[remaining:] - ret.write(left_chunk) - self.buffer.appendleft(right_chunk) - self._size -= remaining - break - else: - ret.write(chunk) - self._size -= chunk_length - fetched += chunk_length - - if not self.buffer: - break - - return ret.getvalue() - - def get_all(self) -> bytes: - buffer = self.buffer - if not buffer: - assert self._size == 0 - return b"" - if len(buffer) == 1: - result = buffer.pop() - else: - ret = io.BytesIO() - ret.writelines(buffer.popleft() for _ in range(len(buffer))) - result = ret.getvalue() - self._size = 0 - return result - - -class BaseHTTPResponse(io.IOBase): - CONTENT_DECODERS = ["gzip", "x-gzip", "deflate"] - if brotli is not None: - CONTENT_DECODERS += ["br"] - if HAS_ZSTD: - CONTENT_DECODERS += ["zstd"] - REDIRECT_STATUSES = [301, 302, 303, 307, 308] - - DECODER_ERROR_CLASSES: tuple[type[Exception], ...] = (IOError, zlib.error) - if brotli is not None: - DECODER_ERROR_CLASSES += (brotli.error,) - - if HAS_ZSTD: - DECODER_ERROR_CLASSES += (zstd.ZstdError,) - - def __init__( - self, - *, - headers: typing.Mapping[str, str] | typing.Mapping[bytes, bytes] | None = None, - status: int, - version: int, - version_string: str, - reason: str | None, - decode_content: bool, - request_url: str | None, - retries: Retry | None = None, - ) -> None: - if isinstance(headers, HTTPHeaderDict): - self.headers = headers - else: - self.headers = HTTPHeaderDict(headers) # type: ignore[arg-type] - self.status = status - self.version = version - self.version_string = version_string - self.reason = reason - self.decode_content = decode_content - self._has_decoded_content = False - self._request_url: str | None = request_url - self.retries = retries - - self.chunked = False - tr_enc = self.headers.get("transfer-encoding", "").lower() - # Don't incur the penalty of creating a list and then discarding it - encodings = (enc.strip() for enc in tr_enc.split(",")) - if "chunked" in encodings: - self.chunked = True - - self._decoder: ContentDecoder | None = None - self.length_remaining: int | None - - def get_redirect_location(self) -> str | None | typing.Literal[False]: - """ - Should we redirect and where to? - - :returns: Truthy redirect location string if we got a redirect status - code and valid location. ``None`` if redirect status and no - location. ``False`` if not a redirect status code. - """ - if self.status in self.REDIRECT_STATUSES: - return self.headers.get("location") - return False - - @property - def data(self) -> bytes: - raise NotImplementedError() - - def json(self) -> typing.Any: - """ - Deserializes the body of the HTTP response as a Python object. - - The body of the HTTP response must be encoded using UTF-8, as per - `RFC 8529 Section 8.1 `_. - - To use a custom JSON decoder pass the result of :attr:`HTTPResponse.data` to - your custom decoder instead. - - If the body of the HTTP response is not decodable to UTF-8, a - `UnicodeDecodeError` will be raised. If the body of the HTTP response is not a - valid JSON document, a `json.JSONDecodeError` will be raised. - - Read more :ref:`here `. - - :returns: The body of the HTTP response as a Python object. - """ - data = self.data.decode("utf-8") - return _json.loads(data) - - @property - def url(self) -> str | None: - raise NotImplementedError() - - @url.setter - def url(self, url: str | None) -> None: - raise NotImplementedError() - - @property - def connection(self) -> BaseHTTPConnection | None: - raise NotImplementedError() - - @property - def retries(self) -> Retry | None: - return self._retries - - @retries.setter - def retries(self, retries: Retry | None) -> None: - # Override the request_url if retries has a redirect location. - if retries is not None and retries.history: - self.url = retries.history[-1].redirect_location - self._retries = retries - - def stream( - self, amt: int | None = 2**16, decode_content: bool | None = None - ) -> typing.Iterator[bytes]: - raise NotImplementedError() - - def read( - self, - amt: int | None = None, - decode_content: bool | None = None, - cache_content: bool = False, - ) -> bytes: - raise NotImplementedError() - - def read1( - self, - amt: int | None = None, - decode_content: bool | None = None, - ) -> bytes: - raise NotImplementedError() - - def read_chunked( - self, - amt: int | None = None, - decode_content: bool | None = None, - ) -> typing.Iterator[bytes]: - raise NotImplementedError() - - def release_conn(self) -> None: - raise NotImplementedError() - - def drain_conn(self) -> None: - raise NotImplementedError() - - def shutdown(self) -> None: - raise NotImplementedError() - - def close(self) -> None: - raise NotImplementedError() - - def _init_decoder(self) -> None: - """ - Set-up the _decoder attribute if necessary. - """ - # Note: content-encoding value should be case-insensitive, per RFC 7230 - # Section 3.2 - content_encoding = self.headers.get("content-encoding", "").lower() - if self._decoder is None: - if content_encoding in self.CONTENT_DECODERS: - self._decoder = _get_decoder(content_encoding) - elif "," in content_encoding: - encodings = [ - e.strip() - for e in content_encoding.split(",") - if e.strip() in self.CONTENT_DECODERS - ] - if encodings: - self._decoder = _get_decoder(content_encoding) - - def _decode( - self, data: bytes, decode_content: bool | None, flush_decoder: bool - ) -> bytes: - """ - Decode the data passed in and potentially flush the decoder. - """ - if not decode_content: - if self._has_decoded_content: - raise RuntimeError( - "Calling read(decode_content=False) is not supported after " - "read(decode_content=True) was called." - ) - return data - - try: - if self._decoder: - data = self._decoder.decompress(data) - self._has_decoded_content = True - except self.DECODER_ERROR_CLASSES as e: - content_encoding = self.headers.get("content-encoding", "").lower() - raise DecodeError( - "Received response with content-encoding: %s, but " - "failed to decode it." % content_encoding, - e, - ) from e - if flush_decoder: - data += self._flush_decoder() - - return data - - def _flush_decoder(self) -> bytes: - """ - Flushes the decoder. Should only be called if the decoder is actually - being used. - """ - if self._decoder: - return self._decoder.decompress(b"") + self._decoder.flush() - return b"" - - # Compatibility methods for `io` module - def readinto(self, b: bytearray) -> int: - temp = self.read(len(b)) - if len(temp) == 0: - return 0 - else: - b[: len(temp)] = temp - return len(temp) - - # Compatibility methods for http.client.HTTPResponse - def getheaders(self) -> HTTPHeaderDict: - warnings.warn( - "HTTPResponse.getheaders() is deprecated and will be removed " - "in urllib3 v2.6.0. Instead access HTTPResponse.headers directly.", - category=DeprecationWarning, - stacklevel=2, - ) - return self.headers - - def getheader(self, name: str, default: str | None = None) -> str | None: - warnings.warn( - "HTTPResponse.getheader() is deprecated and will be removed " - "in urllib3 v2.6.0. Instead use HTTPResponse.headers.get(name, default).", - category=DeprecationWarning, - stacklevel=2, - ) - return self.headers.get(name, default) - - # Compatibility method for http.cookiejar - def info(self) -> HTTPHeaderDict: - return self.headers - - def geturl(self) -> str | None: - return self.url - - -class HTTPResponse(BaseHTTPResponse): - """ - HTTP Response container. - - Backwards-compatible with :class:`http.client.HTTPResponse` but the response ``body`` is - loaded and decoded on-demand when the ``data`` property is accessed. This - class is also compatible with the Python standard library's :mod:`io` - module, and can hence be treated as a readable object in the context of that - framework. - - Extra parameters for behaviour not present in :class:`http.client.HTTPResponse`: - - :param preload_content: - If True, the response's body will be preloaded during construction. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param original_response: - When this HTTPResponse wrapper is generated from an :class:`http.client.HTTPResponse` - object, it's convenient to include the original for debug purposes. It's - otherwise unused. - - :param retries: - The retries contains the last :class:`~urllib3.util.retry.Retry` that - was used during the request. - - :param enforce_content_length: - Enforce content length checking. Body returned by server must match - value of Content-Length header, if present. Otherwise, raise error. - """ - - def __init__( - self, - body: _TYPE_BODY = "", - headers: typing.Mapping[str, str] | typing.Mapping[bytes, bytes] | None = None, - status: int = 0, - version: int = 0, - version_string: str = "HTTP/?", - reason: str | None = None, - preload_content: bool = True, - decode_content: bool = True, - original_response: _HttplibHTTPResponse | None = None, - pool: HTTPConnectionPool | None = None, - connection: HTTPConnection | None = None, - msg: _HttplibHTTPMessage | None = None, - retries: Retry | None = None, - enforce_content_length: bool = True, - request_method: str | None = None, - request_url: str | None = None, - auto_close: bool = True, - sock_shutdown: typing.Callable[[int], None] | None = None, - ) -> None: - super().__init__( - headers=headers, - status=status, - version=version, - version_string=version_string, - reason=reason, - decode_content=decode_content, - request_url=request_url, - retries=retries, - ) - - self.enforce_content_length = enforce_content_length - self.auto_close = auto_close - - self._body = None - self._fp: _HttplibHTTPResponse | None = None - self._original_response = original_response - self._fp_bytes_read = 0 - self.msg = msg - - if body and isinstance(body, (str, bytes)): - self._body = body - - self._pool = pool - self._connection = connection - - if hasattr(body, "read"): - self._fp = body # type: ignore[assignment] - self._sock_shutdown = sock_shutdown - - # Are we using the chunked-style of transfer encoding? - self.chunk_left: int | None = None - - # Determine length of response - self.length_remaining = self._init_length(request_method) - - # Used to return the correct amount of bytes for partial read()s - self._decoded_buffer = BytesQueueBuffer() - - # If requested, preload the body. - if preload_content and not self._body: - self._body = self.read(decode_content=decode_content) - - def release_conn(self) -> None: - if not self._pool or not self._connection: - return None - - self._pool._put_conn(self._connection) - self._connection = None - - def drain_conn(self) -> None: - """ - Read and discard any remaining HTTP response data in the response connection. - - Unread data in the HTTPResponse connection blocks the connection from being released back to the pool. - """ - try: - self.read() - except (HTTPError, OSError, BaseSSLError, HTTPException): - pass - - @property - def data(self) -> bytes: - # For backwards-compat with earlier urllib3 0.4 and earlier. - if self._body: - return self._body # type: ignore[return-value] - - if self._fp: - return self.read(cache_content=True) - - return None # type: ignore[return-value] - - @property - def connection(self) -> HTTPConnection | None: - return self._connection - - def isclosed(self) -> bool: - return is_fp_closed(self._fp) - - def tell(self) -> int: - """ - Obtain the number of bytes pulled over the wire so far. May differ from - the amount of content returned by :meth:``urllib3.response.HTTPResponse.read`` - if bytes are encoded on the wire (e.g, compressed). - """ - return self._fp_bytes_read - - def _init_length(self, request_method: str | None) -> int | None: - """ - Set initial length value for Response content if available. - """ - length: int | None - content_length: str | None = self.headers.get("content-length") - - if content_length is not None: - if self.chunked: - # This Response will fail with an IncompleteRead if it can't be - # received as chunked. This method falls back to attempt reading - # the response before raising an exception. - log.warning( - "Received response with both Content-Length and " - "Transfer-Encoding set. This is expressly forbidden " - "by RFC 7230 sec 3.3.2. Ignoring Content-Length and " - "attempting to process response as Transfer-Encoding: " - "chunked." - ) - return None - - try: - # RFC 7230 section 3.3.2 specifies multiple content lengths can - # be sent in a single Content-Length header - # (e.g. Content-Length: 42, 42). This line ensures the values - # are all valid ints and that as long as the `set` length is 1, - # all values are the same. Otherwise, the header is invalid. - lengths = {int(val) for val in content_length.split(",")} - if len(lengths) > 1: - raise InvalidHeader( - "Content-Length contained multiple " - "unmatching values (%s)" % content_length - ) - length = lengths.pop() - except ValueError: - length = None - else: - if length < 0: - length = None - - else: # if content_length is None - length = None - - # Convert status to int for comparison - # In some cases, httplib returns a status of "_UNKNOWN" - try: - status = int(self.status) - except ValueError: - status = 0 - - # Check for responses that shouldn't include a body - if status in (204, 304) or 100 <= status < 200 or request_method == "HEAD": - length = 0 - - return length - - @contextmanager - def _error_catcher(self) -> typing.Generator[None]: - """ - Catch low-level python exceptions, instead re-raising urllib3 - variants, so that low-level exceptions are not leaked in the - high-level api. - - On exit, release the connection back to the pool. - """ - clean_exit = False - - try: - try: - yield - - except SocketTimeout as e: - # FIXME: Ideally we'd like to include the url in the ReadTimeoutError but - # there is yet no clean way to get at it from this context. - raise ReadTimeoutError(self._pool, None, "Read timed out.") from e # type: ignore[arg-type] - - except BaseSSLError as e: - # FIXME: Is there a better way to differentiate between SSLErrors? - if "read operation timed out" not in str(e): - # SSL errors related to framing/MAC get wrapped and reraised here - raise SSLError(e) from e - - raise ReadTimeoutError(self._pool, None, "Read timed out.") from e # type: ignore[arg-type] - - except IncompleteRead as e: - if ( - e.expected is not None - and e.partial is not None - and e.expected == -e.partial - ): - arg = "Response may not contain content." - else: - arg = f"Connection broken: {e!r}" - raise ProtocolError(arg, e) from e - - except (HTTPException, OSError) as e: - raise ProtocolError(f"Connection broken: {e!r}", e) from e - - # If no exception is thrown, we should avoid cleaning up - # unnecessarily. - clean_exit = True - finally: - # If we didn't terminate cleanly, we need to throw away our - # connection. - if not clean_exit: - # The response may not be closed but we're not going to use it - # anymore so close it now to ensure that the connection is - # released back to the pool. - if self._original_response: - self._original_response.close() - - # Closing the response may not actually be sufficient to close - # everything, so if we have a hold of the connection close that - # too. - if self._connection: - self._connection.close() - - # If we hold the original response but it's closed now, we should - # return the connection back to the pool. - if self._original_response and self._original_response.isclosed(): - self.release_conn() - - def _fp_read( - self, - amt: int | None = None, - *, - read1: bool = False, - ) -> bytes: - """ - Read a response with the thought that reading the number of bytes - larger than can fit in a 32-bit int at a time via SSL in some - known cases leads to an overflow error that has to be prevented - if `amt` or `self.length_remaining` indicate that a problem may - happen. - - The known cases: - * CPython < 3.9.7 because of a bug - https://github.com/urllib3/urllib3/issues/2513#issuecomment-1152559900. - * urllib3 injected with pyOpenSSL-backed SSL-support. - * CPython < 3.10 only when `amt` does not fit 32-bit int. - """ - assert self._fp - c_int_max = 2**31 - 1 - if ( - (amt and amt > c_int_max) - or ( - amt is None - and self.length_remaining - and self.length_remaining > c_int_max - ) - ) and (util.IS_PYOPENSSL or sys.version_info < (3, 10)): - if read1: - return self._fp.read1(c_int_max) - buffer = io.BytesIO() - # Besides `max_chunk_amt` being a maximum chunk size, it - # affects memory overhead of reading a response by this - # method in CPython. - # `c_int_max` equal to 2 GiB - 1 byte is the actual maximum - # chunk size that does not lead to an overflow error, but - # 256 MiB is a compromise. - max_chunk_amt = 2**28 - while amt is None or amt != 0: - if amt is not None: - chunk_amt = min(amt, max_chunk_amt) - amt -= chunk_amt - else: - chunk_amt = max_chunk_amt - data = self._fp.read(chunk_amt) - if not data: - break - buffer.write(data) - del data # to reduce peak memory usage by `max_chunk_amt`. - return buffer.getvalue() - elif read1: - return self._fp.read1(amt) if amt is not None else self._fp.read1() - else: - # StringIO doesn't like amt=None - return self._fp.read(amt) if amt is not None else self._fp.read() - - def _raw_read( - self, - amt: int | None = None, - *, - read1: bool = False, - ) -> bytes: - """ - Reads `amt` of bytes from the socket. - """ - if self._fp is None: - return None # type: ignore[return-value] - - fp_closed = getattr(self._fp, "closed", False) - - with self._error_catcher(): - data = self._fp_read(amt, read1=read1) if not fp_closed else b"" - if amt is not None and amt != 0 and not data: - # Platform-specific: Buggy versions of Python. - # Close the connection when no data is returned - # - # This is redundant to what httplib/http.client _should_ - # already do. However, versions of python released before - # December 15, 2012 (http://bugs.python.org/issue16298) do - # not properly close the connection in all cases. There is - # no harm in redundantly calling close. - self._fp.close() - if ( - self.enforce_content_length - and self.length_remaining is not None - and self.length_remaining != 0 - ): - # This is an edge case that httplib failed to cover due - # to concerns of backward compatibility. We're - # addressing it here to make sure IncompleteRead is - # raised during streaming, so all calls with incorrect - # Content-Length are caught. - raise IncompleteRead(self._fp_bytes_read, self.length_remaining) - elif read1 and ( - (amt != 0 and not data) or self.length_remaining == len(data) - ): - # All data has been read, but `self._fp.read1` in - # CPython 3.12 and older doesn't always close - # `http.client.HTTPResponse`, so we close it here. - # See https://github.com/python/cpython/issues/113199 - self._fp.close() - - if data: - self._fp_bytes_read += len(data) - if self.length_remaining is not None: - self.length_remaining -= len(data) - return data - - def read( - self, - amt: int | None = None, - decode_content: bool | None = None, - cache_content: bool = False, - ) -> bytes: - """ - Similar to :meth:`http.client.HTTPResponse.read`, but with two additional - parameters: ``decode_content`` and ``cache_content``. - - :param amt: - How much of the content to read. If specified, caching is skipped - because it doesn't make sense to cache partial content as the full - response. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - - :param cache_content: - If True, will save the returned data such that the same result is - returned despite of the state of the underlying file object. This - is useful if you want the ``.data`` property to continue working - after having ``.read()`` the file object. (Overridden if ``amt`` is - set.) - """ - self._init_decoder() - if decode_content is None: - decode_content = self.decode_content - - if amt and amt < 0: - # Negative numbers and `None` should be treated the same. - amt = None - elif amt is not None: - cache_content = False - - if len(self._decoded_buffer) >= amt: - return self._decoded_buffer.get(amt) - - data = self._raw_read(amt) - - flush_decoder = amt is None or (amt != 0 and not data) - - if not data and len(self._decoded_buffer) == 0: - return data - - if amt is None: - data = self._decode(data, decode_content, flush_decoder) - if cache_content: - self._body = data - else: - # do not waste memory on buffer when not decoding - if not decode_content: - if self._has_decoded_content: - raise RuntimeError( - "Calling read(decode_content=False) is not supported after " - "read(decode_content=True) was called." - ) - return data - - decoded_data = self._decode(data, decode_content, flush_decoder) - self._decoded_buffer.put(decoded_data) - - while len(self._decoded_buffer) < amt and data: - # TODO make sure to initially read enough data to get past the headers - # For example, the GZ file header takes 10 bytes, we don't want to read - # it one byte at a time - data = self._raw_read(amt) - decoded_data = self._decode(data, decode_content, flush_decoder) - self._decoded_buffer.put(decoded_data) - data = self._decoded_buffer.get(amt) - - return data - - def read1( - self, - amt: int | None = None, - decode_content: bool | None = None, - ) -> bytes: - """ - Similar to ``http.client.HTTPResponse.read1`` and documented - in :meth:`io.BufferedReader.read1`, but with an additional parameter: - ``decode_content``. - - :param amt: - How much of the content to read. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - if decode_content is None: - decode_content = self.decode_content - if amt and amt < 0: - # Negative numbers and `None` should be treated the same. - amt = None - # try and respond without going to the network - if self._has_decoded_content: - if not decode_content: - raise RuntimeError( - "Calling read1(decode_content=False) is not supported after " - "read1(decode_content=True) was called." - ) - if len(self._decoded_buffer) > 0: - if amt is None: - return self._decoded_buffer.get_all() - return self._decoded_buffer.get(amt) - if amt == 0: - return b"" - - # FIXME, this method's type doesn't say returning None is possible - data = self._raw_read(amt, read1=True) - if not decode_content or data is None: - return data - - self._init_decoder() - while True: - flush_decoder = not data - decoded_data = self._decode(data, decode_content, flush_decoder) - self._decoded_buffer.put(decoded_data) - if decoded_data or flush_decoder: - break - data = self._raw_read(8192, read1=True) - - if amt is None: - return self._decoded_buffer.get_all() - return self._decoded_buffer.get(amt) - - def stream( - self, amt: int | None = 2**16, decode_content: bool | None = None - ) -> typing.Generator[bytes]: - """ - A generator wrapper for the read() method. A call will block until - ``amt`` bytes have been read from the connection or until the - connection is closed. - - :param amt: - How much of the content to read. The generator will return up to - much data per iteration, but may return less. This is particularly - likely when using compressed data. However, the empty string will - never be returned. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - if self.chunked and self.supports_chunked_reads(): - yield from self.read_chunked(amt, decode_content=decode_content) - else: - while not is_fp_closed(self._fp) or len(self._decoded_buffer) > 0: - data = self.read(amt=amt, decode_content=decode_content) - - if data: - yield data - - # Overrides from io.IOBase - def readable(self) -> bool: - return True - - def shutdown(self) -> None: - if not self._sock_shutdown: - raise ValueError("Cannot shutdown socket as self._sock_shutdown is not set") - if self._connection is None: - raise RuntimeError( - "Cannot shutdown as connection has already been released to the pool" - ) - self._sock_shutdown(socket.SHUT_RD) - - def close(self) -> None: - self._sock_shutdown = None - - if not self.closed and self._fp: - self._fp.close() - - if self._connection: - self._connection.close() - - if not self.auto_close: - io.IOBase.close(self) - - @property - def closed(self) -> bool: - if not self.auto_close: - return io.IOBase.closed.__get__(self) # type: ignore[no-any-return] - elif self._fp is None: - return True - elif hasattr(self._fp, "isclosed"): - return self._fp.isclosed() - elif hasattr(self._fp, "closed"): - return self._fp.closed - else: - return True - - def fileno(self) -> int: - if self._fp is None: - raise OSError("HTTPResponse has no file to get a fileno from") - elif hasattr(self._fp, "fileno"): - return self._fp.fileno() - else: - raise OSError( - "The file-like object this HTTPResponse is wrapped " - "around has no file descriptor" - ) - - def flush(self) -> None: - if ( - self._fp is not None - and hasattr(self._fp, "flush") - and not getattr(self._fp, "closed", False) - ): - return self._fp.flush() - - def supports_chunked_reads(self) -> bool: - """ - Checks if the underlying file-like object looks like a - :class:`http.client.HTTPResponse` object. We do this by testing for - the fp attribute. If it is present we assume it returns raw chunks as - processed by read_chunked(). - """ - return hasattr(self._fp, "fp") - - def _update_chunk_length(self) -> None: - # First, we'll figure out length of a chunk and then - # we'll try to read it from socket. - if self.chunk_left is not None: - return None - line = self._fp.fp.readline() # type: ignore[union-attr] - line = line.split(b";", 1)[0] - try: - self.chunk_left = int(line, 16) - except ValueError: - self.close() - if line: - # Invalid chunked protocol response, abort. - raise InvalidChunkLength(self, line) from None - else: - # Truncated at start of next chunk - raise ProtocolError("Response ended prematurely") from None - - def _handle_chunk(self, amt: int | None) -> bytes: - returned_chunk = None - if amt is None: - chunk = self._fp._safe_read(self.chunk_left) # type: ignore[union-attr] - returned_chunk = chunk - self._fp._safe_read(2) # type: ignore[union-attr] # Toss the CRLF at the end of the chunk. - self.chunk_left = None - elif self.chunk_left is not None and amt < self.chunk_left: - value = self._fp._safe_read(amt) # type: ignore[union-attr] - self.chunk_left = self.chunk_left - amt - returned_chunk = value - elif amt == self.chunk_left: - value = self._fp._safe_read(amt) # type: ignore[union-attr] - self._fp._safe_read(2) # type: ignore[union-attr] # Toss the CRLF at the end of the chunk. - self.chunk_left = None - returned_chunk = value - else: # amt > self.chunk_left - returned_chunk = self._fp._safe_read(self.chunk_left) # type: ignore[union-attr] - self._fp._safe_read(2) # type: ignore[union-attr] # Toss the CRLF at the end of the chunk. - self.chunk_left = None - return returned_chunk # type: ignore[no-any-return] - - def read_chunked( - self, amt: int | None = None, decode_content: bool | None = None - ) -> typing.Generator[bytes]: - """ - Similar to :meth:`HTTPResponse.read`, but with an additional - parameter: ``decode_content``. - - :param amt: - How much of the content to read. If specified, caching is skipped - because it doesn't make sense to cache partial content as the full - response. - - :param decode_content: - If True, will attempt to decode the body based on the - 'content-encoding' header. - """ - self._init_decoder() - # FIXME: Rewrite this method and make it a class with a better structured logic. - if not self.chunked: - raise ResponseNotChunked( - "Response is not chunked. " - "Header 'transfer-encoding: chunked' is missing." - ) - if not self.supports_chunked_reads(): - raise BodyNotHttplibCompatible( - "Body should be http.client.HTTPResponse like. " - "It should have have an fp attribute which returns raw chunks." - ) - - with self._error_catcher(): - # Don't bother reading the body of a HEAD request. - if self._original_response and is_response_to_head(self._original_response): - self._original_response.close() - return None - - # If a response is already read and closed - # then return immediately. - if self._fp.fp is None: # type: ignore[union-attr] - return None - - if amt and amt < 0: - # Negative numbers and `None` should be treated the same, - # but httplib handles only `None` correctly. - amt = None - - while True: - self._update_chunk_length() - if self.chunk_left == 0: - break - chunk = self._handle_chunk(amt) - decoded = self._decode( - chunk, decode_content=decode_content, flush_decoder=False - ) - if decoded: - yield decoded - - if decode_content: - # On CPython and PyPy, we should never need to flush the - # decoder. However, on Jython we *might* need to, so - # lets defensively do it anyway. - decoded = self._flush_decoder() - if decoded: # Platform-specific: Jython. - yield decoded - - # Chunk content ends with \r\n: discard it. - while self._fp is not None: - line = self._fp.fp.readline() - if not line: - # Some sites may not end with '\r\n'. - break - if line == b"\r\n": - break - - # We read everything; close the "file". - if self._original_response: - self._original_response.close() - - @property - def url(self) -> str | None: - """ - Returns the URL that was the source of this response. - If the request that generated this response redirected, this method - will return the final redirect location. - """ - return self._request_url - - @url.setter - def url(self, url: str) -> None: - self._request_url = url - - def __iter__(self) -> typing.Iterator[bytes]: - buffer: list[bytes] = [] - for chunk in self.stream(decode_content=True): - if b"\n" in chunk: - chunks = chunk.split(b"\n") - yield b"".join(buffer) + chunks[0] + b"\n" - for x in chunks[1:-1]: - yield x + b"\n" - if chunks[-1]: - buffer = [chunks[-1]] - else: - buffer = [] - else: - buffer.append(chunk) - if buffer: - yield b"".join(buffer) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__init__.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__init__.py deleted file mode 100644 index 53412603..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__init__.py +++ /dev/null @@ -1,42 +0,0 @@ -# For backwards compatibility, provide imports that used to be here. -from __future__ import annotations - -from .connection import is_connection_dropped -from .request import SKIP_HEADER, SKIPPABLE_HEADERS, make_headers -from .response import is_fp_closed -from .retry import Retry -from .ssl_ import ( - ALPN_PROTOCOLS, - IS_PYOPENSSL, - SSLContext, - assert_fingerprint, - create_urllib3_context, - resolve_cert_reqs, - resolve_ssl_version, - ssl_wrap_socket, -) -from .timeout import Timeout -from .url import Url, parse_url -from .wait import wait_for_read, wait_for_write - -__all__ = ( - "IS_PYOPENSSL", - "SSLContext", - "ALPN_PROTOCOLS", - "Retry", - "Timeout", - "Url", - "assert_fingerprint", - "create_urllib3_context", - "is_connection_dropped", - "is_fp_closed", - "parse_url", - "make_headers", - "resolve_cert_reqs", - "resolve_ssl_version", - "ssl_wrap_socket", - "wait_for_read", - "wait_for_write", - "SKIP_HEADER", - "SKIPPABLE_HEADERS", -) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index b7063e121f9da8af33a3513f61553b8cddebbc5d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 999 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 Ap#T5? diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc deleted file mode 100644 index 76c0832be65af3f171d39711246780f6f335d721..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1211 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 D74+yq diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc deleted file mode 100644 index 4325b944804f5fc5e61986f089f6f8368b2efc0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20280 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 HOyU0mG!P?P diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc deleted file mode 100644 index 846ae2e514bacaffff658195797f39cb50a994e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17163 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 diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc deleted file mode 100644 index 7cbd5e97f6bc4eb121265b1e201c8a9370e82e55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11683 zcmd5?TWlLwdY<7$q9{t#)lwYWnaGYUIx=NDQLXgc@;%;@BjI znHgFZ>kaHQ1)O4mIOu~NB#Sstahe61v?#U@iy}dRUQv{)w2;9%h0$yu@=|au7cJ6< z_WRG7Geb&plHKh?$JUv{bNSCX|NZ~Z{C!79RKk<^_m$k)VM+ReeuyW`EArZ1RIW*9 zBu&!fyi|~9WSQ!Ld|)QP-ocq5-obpR5S|IMzEHlU&^ptKdRS}8M+$8-ZL*{X&-Mx6 z{@ZH7+}3=s&_2^HO9APaq(xqrv^G8bQILWXgaE6m_>UEzeAJ7 zaslt|dEL?UtXj@Hj#1FfvhyX)r=Ds4`!r_hla^¼}UifTT?SKy`WzSg=>xhCn- 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 nzVKOhA>ZM diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc deleted file mode 100644 index 3cc12a088ea6c75bb2974af2ae50df1b97f06130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1988 zcmd^9&1)M+6rb7Een{)}hiuobLu}bDA)8{0)ctTvahtY@4*?zG1X7nG*4l}^j=U>o zN46}s5KIp?J*0(z18u?3lW`6?_J8O_jty3q1Pp;fFGb)Sicftr(&8xO&_iz>vG2Wk z?>FEET1B3AkL8R}%9H zjFQOFl0eUXj_xGBRpyn~Sdxwc78NY1Gd!0Z!%@MatxHzNpF98yM~3ZrKC_wYdqEEN z=1poB$bwzCdvm=+3avOrv?@^8OKj^n!!SHKQA1x!nlA0=Y{a}fFK zPVKcWnnSxvuG$Ov$&d;pgSp;fhCx~~Ri(`COiV{=z^GebkT;c3>eIl|qLdrBUchXx zKq6&fosl4t0Tv~BLa%aEl;D>{dOq*jD@#Ve6qsf{5$(h>3C$+&(4?3^Z^eew>T|c}JC+=6aDi8H1gKzK5KEC$k z-D|%tZB`DtW^4Lv-RQVKy*2&aN3}%%2{=Rl_a3ACU0E9C?N1F(c+=AkPIybxP9Tx$ z5Z)rR8#ZxI&|YDIB0_)BLD+D`D<+ zD1Bi+ePM?lq%YMvF4a4GH;uoKyZbhky4kZOod*1^Zj6qjUsOxBq+HI@X%DDQ4Jb_} z%rswFnrl)`P0sg-c;R#mw2?{)D^pL@zIB$4f`Rfg0&)hX<6I|NWe6mIp9fYQ;#1|T z&+LF)trSR!kMys>wQw{HfXHmKQU0H+eQonThI0qiF1QcI&}7cPA!4)iD3#CODMOqv zv?#Azq&6{;!hHvn*IvvL(TyUryGXQ%=+#sG;}zd27s(8@0Lh1Z@Bm0d#uz_CW6zQK z42?8&G>fm}hMdH2)U|Yz4_|EZ4?h?DSV^5IU~dfl8?4^M4x`Ll4b8ymx<1yBfgc-# W4Fz~ZMalER0>0J$7fH~GsQ&?-g}0ml diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc deleted file mode 100644 index 85c39a7436627fc0f6dff8aab055c9600316b3a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3434 zcmc&$&2JmW6`xt|7r$j&k{!vi*RB(ki7cj$k)(-aG=(cSMIbwliy(3XV#QrblvZ4J zc4&Qs1lYi6rS@P6bs-h)K}Q?v!KVQE8+xHD0hKoj5FjYf_E4~u0t7nsz1by28$xm^ z(2@Awo0&JWGrxJiH}mIYGDe_e{hEmU>qi*S^t10}tIwS^8ahJo=5E(YuNn zv(i?V6@xKxVa35pEJ&GS|G-UTs2?{=C6}AL=$5=OsB2}D@uKPY$vLyga|M^>m~C2q zs$HF9MQ-Qi00bdbkN^tZ`zIJ{q)NSHRr2DTwtOtQ8QLGyNm7&Hr&K9BR+XniFk7Ce ztEA;kNmT+b<=ect(i+ckEuu`ftyT-nELWAPvKg+urb?u$RwJ#i{S4Mp(`tGx%A>6@ zRc)SnDy%~XErE`pGd3FMDo&#+StzC}I*{!=Y}4 z`zp&%+0d)b1zIYUpbcFYpe@w%LVFm_M!Ou`%uczpc6PEfpS@~(Gu$nseGz=~JbTA3 z-N`z|iEMd+Pr0R6hQ4%pO4ESvcmbJF&*73M(yE7=M!I$4a2q4I*?8!SE7juc$F z&DkmV^f~x>^C0Tv-wBfF`n|H7>TC30-%8zR=r?wf>H4S;Pqg@sp1PM@POezndjAtG z(OKP3kl3;Ny=w!j0~_iC^^v+2eXah(Cj)0Uv_IT_Ecew%mqu4ccjM_5^)Fp7uD<|c zV{|M2QbT@e557&Fidu{r5w-hZ{7U_{xV5C33^9A6Dsu_v!ZO{-f}n{kc0&}&5Vucz z9ubX!CvP)gS`Vk_P@AFsYjs(jj(2o~W))(3Gh7d*m?gD9t;pR(P2tIwH$=H|808)D ztBf)HB*XFfHd OFDssz6{3iC_qDgp;RHyEgpx>k!3pF=?y+u4rwc>QT#j10trPf zyN;8Qe9C|=I*LAWJ zPb`h>B$6xL%Wp5ewUa)1ueMxUe|IZ=wxOS8&w*1$W&@xO5(UQvc2~V@7zs)OU$G%-G@j(N`haYA%hWuv;x3Au~{?0pZkNFzv>p#84PGhUi>`54EGnRlV z3_!413Pl=47YJXTHN6>j7VBp~cp8X+fj8(*XQ9PL798zy_&WaNi9;Q<5 z`g3`1$XW2kAE=pVBuX zPh}e9zQE7{W32g5eT9tt5A*O*2Eo=DMD3J}eCY%Vb5E82 zN!kP$vB1_Mi@$syE*{T-CyKae;ZzOo8WXl*-Z6`gIpM$^Trx~!vIrNN5nM(?G2FmS zL4VJ{tJx?P3_fLt{YKFfli}z=17;qD+|%|6FJ8l*FBh3@1(V&%NCESa^be_k}o>nobh^0FCwN+ID=nArJo#fx#EU{}Y&YHe?te>}A}wNd6%n zNDYPp-v-a%!5_W99Up1PBS9vQjE;_FVglELWO$n43qvGcq+pPJg@w>F0|mZ4f;=sC z*mMk7A)@>e_8;Y*^kcbPp#oQhoy#!{z3@&5KI=ydl~SI=JIxE;Zdxv9!UdNTFCIa* zfOdi@;^c9s4~f{1Akl$7JnLE&$G*Z|hb~N4-rqn#R-yEBa{fz_{EQ?&Cj(!^`x>VQ z8?lRZt@%1ResTx?PaDl>4;|czooq%xe-TSH70^u;vU*cPODCy5;nR!}HMSSWw#yx( zd+B*G8nhST_%F{}?VbPt diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/connection.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/connection.py deleted file mode 100644 index f92519ee..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/connection.py +++ /dev/null @@ -1,137 +0,0 @@ -from __future__ import annotations - -import socket -import typing - -from ..exceptions import LocationParseError -from .timeout import _DEFAULT_TIMEOUT, _TYPE_TIMEOUT - -_TYPE_SOCKET_OPTIONS = list[tuple[int, int, typing.Union[int, bytes]]] - -if typing.TYPE_CHECKING: - from .._base_connection import BaseHTTPConnection - - -def is_connection_dropped(conn: BaseHTTPConnection) -> bool: # Platform-specific - """ - Returns True if the connection is dropped and should be closed. - :param conn: :class:`urllib3.connection.HTTPConnection` object. - """ - return not conn.is_connected - - -# This function is copied from socket.py in the Python 2.7 standard -# library test suite. Added to its signature is only `socket_options`. -# One additional modification is that we avoid binding to IPv6 servers -# discovered in DNS if the system doesn't have IPv6 functionality. -def create_connection( - address: tuple[str, int], - timeout: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - source_address: tuple[str, int] | None = None, - socket_options: _TYPE_SOCKET_OPTIONS | None = None, -) -> socket.socket: - """Connect to *address* and return the socket object. - - Convenience function. Connect to *address* (a 2-tuple ``(host, - port)``) and return the socket object. Passing the optional - *timeout* parameter will set the timeout on the socket instance - before attempting to connect. If no *timeout* is supplied, the - global default timeout setting returned by :func:`socket.getdefaulttimeout` - is used. If *source_address* is set it must be a tuple of (host, port) - for the socket to bind as a source address before making the connection. - An host of '' or port 0 tells the OS to use the default. - """ - - host, port = address - if host.startswith("["): - host = host.strip("[]") - err = None - - # Using the value from allowed_gai_family() in the context of getaddrinfo lets - # us select whether to work with IPv4 DNS records, IPv6 records, or both. - # The original create_connection function always returns all records. - family = allowed_gai_family() - - try: - host.encode("idna") - except UnicodeError: - raise LocationParseError(f"'{host}', label empty or too long") from None - - for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM): - af, socktype, proto, canonname, sa = res - sock = None - try: - sock = socket.socket(af, socktype, proto) - - # If provided, set socket level options before connecting. - _set_socket_options(sock, socket_options) - - if timeout is not _DEFAULT_TIMEOUT: - sock.settimeout(timeout) - if source_address: - sock.bind(source_address) - sock.connect(sa) - # Break explicitly a reference cycle - err = None - return sock - - except OSError as _: - err = _ - if sock is not None: - sock.close() - - if err is not None: - try: - raise err - finally: - # Break explicitly a reference cycle - err = None - else: - raise OSError("getaddrinfo returns an empty list") - - -def _set_socket_options( - sock: socket.socket, options: _TYPE_SOCKET_OPTIONS | None -) -> None: - if options is None: - return - - for opt in options: - sock.setsockopt(*opt) - - -def allowed_gai_family() -> socket.AddressFamily: - """This function is designed to work in the context of - getaddrinfo, where family=socket.AF_UNSPEC is the default and - will perform a DNS search for both IPv6 and IPv4 records.""" - - family = socket.AF_INET - if HAS_IPV6: - family = socket.AF_UNSPEC - return family - - -def _has_ipv6(host: str) -> bool: - """Returns True if the system can bind an IPv6 address.""" - sock = None - has_ipv6 = False - - if socket.has_ipv6: - # has_ipv6 returns true if cPython was compiled with IPv6 support. - # It does not tell us if the system has IPv6 support enabled. To - # determine that we must bind to an IPv6 address. - # https://github.com/urllib3/urllib3/pull/611 - # https://bugs.python.org/issue658327 - try: - sock = socket.socket(socket.AF_INET6) - sock.bind((host, 0)) - has_ipv6 = True - except Exception: - pass - - if sock: - sock.close() - return has_ipv6 - - -HAS_IPV6 = _has_ipv6("::1") diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/proxy.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/proxy.py deleted file mode 100644 index 908fc662..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/proxy.py +++ /dev/null @@ -1,43 +0,0 @@ -from __future__ import annotations - -import typing - -from .url import Url - -if typing.TYPE_CHECKING: - from ..connection import ProxyConfig - - -def connection_requires_http_tunnel( - proxy_url: Url | None = None, - proxy_config: ProxyConfig | None = None, - destination_scheme: str | None = None, -) -> bool: - """ - Returns True if the connection requires an HTTP CONNECT through the proxy. - - :param URL proxy_url: - URL of the proxy. - :param ProxyConfig proxy_config: - Proxy configuration from poolmanager.py - :param str destination_scheme: - The scheme of the destination. (i.e https, http, etc) - """ - # If we're not using a proxy, no way to use a tunnel. - if proxy_url is None: - return False - - # HTTP destinations never require tunneling, we always forward. - if destination_scheme == "http": - return False - - # Support for forwarding with HTTPS proxies and HTTPS destinations. - if ( - proxy_url.scheme == "https" - and proxy_config - and proxy_config.use_forwarding_for_https - ): - return False - - # Otherwise always use a tunnel. - return True diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/request.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/request.py deleted file mode 100644 index 23605c52..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/request.py +++ /dev/null @@ -1,266 +0,0 @@ -from __future__ import annotations - -import io -import typing -from base64 import b64encode -from enum import Enum - -from ..exceptions import UnrewindableBodyError -from .util import to_bytes - -if typing.TYPE_CHECKING: - from typing import Final - -# Pass as a value within ``headers`` to skip -# emitting some HTTP headers that are added automatically. -# The only headers that are supported are ``Accept-Encoding``, -# ``Host``, and ``User-Agent``. -SKIP_HEADER = "@@@SKIP_HEADER@@@" -SKIPPABLE_HEADERS = frozenset(["accept-encoding", "host", "user-agent"]) - -ACCEPT_ENCODING = "gzip,deflate" -try: - try: - import brotlicffi as _unused_module_brotli # type: ignore[import-not-found] # noqa: F401 - except ImportError: - import brotli as _unused_module_brotli # type: ignore[import-not-found] # noqa: F401 -except ImportError: - pass -else: - ACCEPT_ENCODING += ",br" - -try: - from compression import ( # type: ignore[import-not-found] # noqa: F401 - zstd as _unused_module_zstd, - ) - - ACCEPT_ENCODING += ",zstd" -except ImportError: - try: - import zstandard as _unused_module_zstd # noqa: F401 - - ACCEPT_ENCODING += ",zstd" - except ImportError: - pass - - -class _TYPE_FAILEDTELL(Enum): - token = 0 - - -_FAILEDTELL: Final[_TYPE_FAILEDTELL] = _TYPE_FAILEDTELL.token - -_TYPE_BODY_POSITION = typing.Union[int, _TYPE_FAILEDTELL] - -# When sending a request with these methods we aren't expecting -# a body so don't need to set an explicit 'Content-Length: 0' -# The reason we do this in the negative instead of tracking methods -# which 'should' have a body is because unknown methods should be -# treated as if they were 'POST' which *does* expect a body. -_METHODS_NOT_EXPECTING_BODY = {"GET", "HEAD", "DELETE", "TRACE", "OPTIONS", "CONNECT"} - - -def make_headers( - keep_alive: bool | None = None, - accept_encoding: bool | list[str] | str | None = None, - user_agent: str | None = None, - basic_auth: str | None = None, - proxy_basic_auth: str | None = None, - disable_cache: bool | None = None, -) -> dict[str, str]: - """ - Shortcuts for generating request headers. - - :param keep_alive: - If ``True``, adds 'connection: keep-alive' header. - - :param accept_encoding: - Can be a boolean, list, or string. - ``True`` translates to 'gzip,deflate'. If the dependencies for - Brotli (either the ``brotli`` or ``brotlicffi`` package) and/or Zstandard - (the ``zstandard`` package) algorithms are installed, then their encodings are - included in the string ('br' and 'zstd', respectively). - List will get joined by comma. - String will be used as provided. - - :param user_agent: - String representing the user-agent you want, such as - "python-urllib3/0.6" - - :param basic_auth: - Colon-separated username:password string for 'authorization: basic ...' - auth header. - - :param proxy_basic_auth: - Colon-separated username:password string for 'proxy-authorization: basic ...' - auth header. - - :param disable_cache: - If ``True``, adds 'cache-control: no-cache' header. - - Example: - - .. code-block:: python - - import urllib3 - - print(urllib3.util.make_headers(keep_alive=True, user_agent="Batman/1.0")) - # {'connection': 'keep-alive', 'user-agent': 'Batman/1.0'} - print(urllib3.util.make_headers(accept_encoding=True)) - # {'accept-encoding': 'gzip,deflate'} - """ - headers: dict[str, str] = {} - if accept_encoding: - if isinstance(accept_encoding, str): - pass - elif isinstance(accept_encoding, list): - accept_encoding = ",".join(accept_encoding) - else: - accept_encoding = ACCEPT_ENCODING - headers["accept-encoding"] = accept_encoding - - if user_agent: - headers["user-agent"] = user_agent - - if keep_alive: - headers["connection"] = "keep-alive" - - if basic_auth: - headers["authorization"] = ( - f"Basic {b64encode(basic_auth.encode('latin-1')).decode()}" - ) - - if proxy_basic_auth: - headers["proxy-authorization"] = ( - f"Basic {b64encode(proxy_basic_auth.encode('latin-1')).decode()}" - ) - - if disable_cache: - headers["cache-control"] = "no-cache" - - return headers - - -def set_file_position( - body: typing.Any, pos: _TYPE_BODY_POSITION | None -) -> _TYPE_BODY_POSITION | None: - """ - If a position is provided, move file to that point. - Otherwise, we'll attempt to record a position for future use. - """ - if pos is not None: - rewind_body(body, pos) - elif getattr(body, "tell", None) is not None: - try: - pos = body.tell() - except OSError: - # This differentiates from None, allowing us to catch - # a failed `tell()` later when trying to rewind the body. - pos = _FAILEDTELL - - return pos - - -def rewind_body(body: typing.IO[typing.AnyStr], body_pos: _TYPE_BODY_POSITION) -> None: - """ - Attempt to rewind body to a certain position. - Primarily used for request redirects and retries. - - :param body: - File-like object that supports seek. - - :param int pos: - Position to seek to in file. - """ - body_seek = getattr(body, "seek", None) - if body_seek is not None and isinstance(body_pos, int): - try: - body_seek(body_pos) - except OSError as e: - raise UnrewindableBodyError( - "An error occurred when rewinding request body for redirect/retry." - ) from e - elif body_pos is _FAILEDTELL: - raise UnrewindableBodyError( - "Unable to record file position for rewinding " - "request body during a redirect/retry." - ) - else: - raise ValueError( - f"body_pos must be of type integer, instead it was {type(body_pos)}." - ) - - -class ChunksAndContentLength(typing.NamedTuple): - chunks: typing.Iterable[bytes] | None - content_length: int | None - - -def body_to_chunks( - body: typing.Any | None, method: str, blocksize: int -) -> ChunksAndContentLength: - """Takes the HTTP request method, body, and blocksize and - transforms them into an iterable of chunks to pass to - socket.sendall() and an optional 'Content-Length' header. - - A 'Content-Length' of 'None' indicates the length of the body - can't be determined so should use 'Transfer-Encoding: chunked' - for framing instead. - """ - - chunks: typing.Iterable[bytes] | None - content_length: int | None - - # No body, we need to make a recommendation on 'Content-Length' - # based on whether that request method is expected to have - # a body or not. - if body is None: - chunks = None - if method.upper() not in _METHODS_NOT_EXPECTING_BODY: - content_length = 0 - else: - content_length = None - - # Bytes or strings become bytes - elif isinstance(body, (str, bytes)): - chunks = (to_bytes(body),) - content_length = len(chunks[0]) - - # File-like object, TODO: use seek() and tell() for length? - elif hasattr(body, "read"): - - def chunk_readable() -> typing.Iterable[bytes]: - nonlocal body, blocksize - encode = isinstance(body, io.TextIOBase) - while True: - datablock = body.read(blocksize) - if not datablock: - break - if encode: - datablock = datablock.encode("utf-8") - yield datablock - - chunks = chunk_readable() - content_length = None - - # Otherwise we need to start checking via duck-typing. - else: - try: - # Check if the body implements the buffer API. - mv = memoryview(body) - except TypeError: - try: - # Check if the body is an iterable - chunks = iter(body) - content_length = None - except TypeError: - raise TypeError( - f"'body' must be a bytes-like object, file-like " - f"object, or iterable. Instead was {body!r}" - ) from None - else: - # Since it implements the buffer API can be passed directly to socket.sendall() - chunks = (body,) - content_length = mv.nbytes - - return ChunksAndContentLength(chunks=chunks, content_length=content_length) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/response.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/response.py deleted file mode 100644 index 0f457869..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/response.py +++ /dev/null @@ -1,101 +0,0 @@ -from __future__ import annotations - -import http.client as httplib -from email.errors import MultipartInvariantViolationDefect, StartBoundaryNotFoundDefect - -from ..exceptions import HeaderParsingError - - -def is_fp_closed(obj: object) -> bool: - """ - Checks whether a given file-like object is closed. - - :param obj: - The file-like object to check. - """ - - try: - # Check `isclosed()` first, in case Python3 doesn't set `closed`. - # GH Issue #928 - return obj.isclosed() # type: ignore[no-any-return, attr-defined] - except AttributeError: - pass - - try: - # Check via the official file-like-object way. - return obj.closed # type: ignore[no-any-return, attr-defined] - except AttributeError: - pass - - try: - # Check if the object is a container for another file-like object that - # gets released on exhaustion (e.g. HTTPResponse). - return obj.fp is None # type: ignore[attr-defined] - except AttributeError: - pass - - raise ValueError("Unable to determine whether fp is closed.") - - -def assert_header_parsing(headers: httplib.HTTPMessage) -> None: - """ - Asserts whether all headers have been successfully parsed. - Extracts encountered errors from the result of parsing headers. - - Only works on Python 3. - - :param http.client.HTTPMessage headers: Headers to verify. - - :raises urllib3.exceptions.HeaderParsingError: - If parsing errors are found. - """ - - # This will fail silently if we pass in the wrong kind of parameter. - # To make debugging easier add an explicit check. - if not isinstance(headers, httplib.HTTPMessage): - raise TypeError(f"expected httplib.Message, got {type(headers)}.") - - unparsed_data = None - - # get_payload is actually email.message.Message.get_payload; - # we're only interested in the result if it's not a multipart message - if not headers.is_multipart(): - payload = headers.get_payload() - - if isinstance(payload, (bytes, str)): - unparsed_data = payload - - # httplib is assuming a response body is available - # when parsing headers even when httplib only sends - # header data to parse_headers() This results in - # defects on multipart responses in particular. - # See: https://github.com/urllib3/urllib3/issues/800 - - # So we ignore the following defects: - # - StartBoundaryNotFoundDefect: - # The claimed start boundary was never found. - # - MultipartInvariantViolationDefect: - # A message claimed to be a multipart but no subparts were found. - defects = [ - defect - for defect in headers.defects - if not isinstance( - defect, (StartBoundaryNotFoundDefect, MultipartInvariantViolationDefect) - ) - ] - - if defects or unparsed_data: - raise HeaderParsingError(defects=defects, unparsed_data=unparsed_data) - - -def is_response_to_head(response: httplib.HTTPResponse) -> bool: - """ - Checks whether the request of a response has been a HEAD-request. - - :param http.client.HTTPResponse response: - Response to check if the originating request - used 'HEAD' as a method. - """ - # FIXME: Can we do this somehow without accessing private httplib _method? - method_str = response._method # type: str # type: ignore[attr-defined] - return method_str.upper() == "HEAD" diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/retry.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/retry.py deleted file mode 100644 index 0456cceb..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/retry.py +++ /dev/null @@ -1,533 +0,0 @@ -from __future__ import annotations - -import email -import logging -import random -import re -import time -import typing -from itertools import takewhile -from types import TracebackType - -from ..exceptions import ( - ConnectTimeoutError, - InvalidHeader, - MaxRetryError, - ProtocolError, - ProxyError, - ReadTimeoutError, - ResponseError, -) -from .util import reraise - -if typing.TYPE_CHECKING: - from typing_extensions import Self - - from ..connectionpool import ConnectionPool - from ..response import BaseHTTPResponse - -log = logging.getLogger(__name__) - - -# Data structure for representing the metadata of requests that result in a retry. -class RequestHistory(typing.NamedTuple): - method: str | None - url: str | None - error: Exception | None - status: int | None - redirect_location: str | None - - -class Retry: - """Retry configuration. - - Each retry attempt will create a new Retry object with updated values, so - they can be safely reused. - - Retries can be defined as a default for a pool: - - .. code-block:: python - - retries = Retry(connect=5, read=2, redirect=5) - http = PoolManager(retries=retries) - response = http.request("GET", "https://example.com/") - - Or per-request (which overrides the default for the pool): - - .. code-block:: python - - response = http.request("GET", "https://example.com/", retries=Retry(10)) - - Retries can be disabled by passing ``False``: - - .. code-block:: python - - response = http.request("GET", "https://example.com/", retries=False) - - Errors will be wrapped in :class:`~urllib3.exceptions.MaxRetryError` unless - retries are disabled, in which case the causing exception will be raised. - - :param int total: - Total number of retries to allow. Takes precedence over other counts. - - Set to ``None`` to remove this constraint and fall back on other - counts. - - Set to ``0`` to fail on the first retry. - - Set to ``False`` to disable and imply ``raise_on_redirect=False``. - - :param int connect: - How many connection-related errors to retry on. - - These are errors raised before the request is sent to the remote server, - which we assume has not triggered the server to process the request. - - Set to ``0`` to fail on the first retry of this type. - - :param int read: - How many times to retry on read errors. - - These errors are raised after the request was sent to the server, so the - request may have side-effects. - - Set to ``0`` to fail on the first retry of this type. - - :param int redirect: - How many redirects to perform. Limit this to avoid infinite redirect - loops. - - A redirect is a HTTP response with a status code 301, 302, 303, 307 or - 308. - - Set to ``0`` to fail on the first retry of this type. - - Set to ``False`` to disable and imply ``raise_on_redirect=False``. - - :param int status: - How many times to retry on bad status codes. - - These are retries made on responses, where status code matches - ``status_forcelist``. - - Set to ``0`` to fail on the first retry of this type. - - :param int other: - How many times to retry on other errors. - - Other errors are errors that are not connect, read, redirect or status errors. - These errors might be raised after the request was sent to the server, so the - request might have side-effects. - - Set to ``0`` to fail on the first retry of this type. - - If ``total`` is not set, it's a good idea to set this to 0 to account - for unexpected edge cases and avoid infinite retry loops. - - :param Collection allowed_methods: - Set of uppercased HTTP method verbs that we should retry on. - - By default, we only retry on methods which are considered to be - idempotent (multiple requests with the same parameters end with the - same state). See :attr:`Retry.DEFAULT_ALLOWED_METHODS`. - - Set to a ``None`` value to retry on any verb. - - :param Collection status_forcelist: - A set of integer HTTP status codes that we should force a retry on. - A retry is initiated if the request method is in ``allowed_methods`` - and the response status code is in ``status_forcelist``. - - By default, this is disabled with ``None``. - - :param float backoff_factor: - A backoff factor to apply between attempts after the second try - (most errors are resolved immediately by a second try without a - delay). urllib3 will sleep for:: - - {backoff factor} * (2 ** ({number of previous retries})) - - seconds. If `backoff_jitter` is non-zero, this sleep is extended by:: - - random.uniform(0, {backoff jitter}) - - seconds. For example, if the backoff_factor is 0.1, then :func:`Retry.sleep` will - sleep for [0.0s, 0.2s, 0.4s, 0.8s, ...] between retries. No backoff will ever - be longer than `backoff_max`. - - By default, backoff is disabled (factor set to 0). - - :param bool raise_on_redirect: Whether, if the number of redirects is - exhausted, to raise a MaxRetryError, or to return a response with a - response code in the 3xx range. - - :param bool raise_on_status: Similar meaning to ``raise_on_redirect``: - whether we should raise an exception, or return a response, - if status falls in ``status_forcelist`` range and retries have - been exhausted. - - :param tuple history: The history of the request encountered during - each call to :meth:`~Retry.increment`. The list is in the order - the requests occurred. Each list item is of class :class:`RequestHistory`. - - :param bool respect_retry_after_header: - Whether to respect Retry-After header on status codes defined as - :attr:`Retry.RETRY_AFTER_STATUS_CODES` or not. - - :param Collection remove_headers_on_redirect: - Sequence of headers to remove from the request when a response - indicating a redirect is returned before firing off the redirected - request. - """ - - #: Default methods to be used for ``allowed_methods`` - DEFAULT_ALLOWED_METHODS = frozenset( - ["HEAD", "GET", "PUT", "DELETE", "OPTIONS", "TRACE"] - ) - - #: Default status codes to be used for ``status_forcelist`` - RETRY_AFTER_STATUS_CODES = frozenset([413, 429, 503]) - - #: Default headers to be used for ``remove_headers_on_redirect`` - DEFAULT_REMOVE_HEADERS_ON_REDIRECT = frozenset( - ["Cookie", "Authorization", "Proxy-Authorization"] - ) - - #: Default maximum backoff time. - DEFAULT_BACKOFF_MAX = 120 - - # Backward compatibility; assigned outside of the class. - DEFAULT: typing.ClassVar[Retry] - - def __init__( - self, - total: bool | int | None = 10, - connect: int | None = None, - read: int | None = None, - redirect: bool | int | None = None, - status: int | None = None, - other: int | None = None, - allowed_methods: typing.Collection[str] | None = DEFAULT_ALLOWED_METHODS, - status_forcelist: typing.Collection[int] | None = None, - backoff_factor: float = 0, - backoff_max: float = DEFAULT_BACKOFF_MAX, - raise_on_redirect: bool = True, - raise_on_status: bool = True, - history: tuple[RequestHistory, ...] | None = None, - respect_retry_after_header: bool = True, - remove_headers_on_redirect: typing.Collection[ - str - ] = DEFAULT_REMOVE_HEADERS_ON_REDIRECT, - backoff_jitter: float = 0.0, - ) -> None: - self.total = total - self.connect = connect - self.read = read - self.status = status - self.other = other - - if redirect is False or total is False: - redirect = 0 - raise_on_redirect = False - - self.redirect = redirect - self.status_forcelist = status_forcelist or set() - self.allowed_methods = allowed_methods - self.backoff_factor = backoff_factor - self.backoff_max = backoff_max - self.raise_on_redirect = raise_on_redirect - self.raise_on_status = raise_on_status - self.history = history or () - self.respect_retry_after_header = respect_retry_after_header - self.remove_headers_on_redirect = frozenset( - h.lower() for h in remove_headers_on_redirect - ) - self.backoff_jitter = backoff_jitter - - def new(self, **kw: typing.Any) -> Self: - params = dict( - total=self.total, - connect=self.connect, - read=self.read, - redirect=self.redirect, - status=self.status, - other=self.other, - allowed_methods=self.allowed_methods, - status_forcelist=self.status_forcelist, - backoff_factor=self.backoff_factor, - backoff_max=self.backoff_max, - raise_on_redirect=self.raise_on_redirect, - raise_on_status=self.raise_on_status, - history=self.history, - remove_headers_on_redirect=self.remove_headers_on_redirect, - respect_retry_after_header=self.respect_retry_after_header, - backoff_jitter=self.backoff_jitter, - ) - - params.update(kw) - return type(self)(**params) # type: ignore[arg-type] - - @classmethod - def from_int( - cls, - retries: Retry | bool | int | None, - redirect: bool | int | None = True, - default: Retry | bool | int | None = None, - ) -> Retry: - """Backwards-compatibility for the old retries format.""" - if retries is None: - retries = default if default is not None else cls.DEFAULT - - if isinstance(retries, Retry): - return retries - - redirect = bool(redirect) and None - new_retries = cls(retries, redirect=redirect) - log.debug("Converted retries value: %r -> %r", retries, new_retries) - return new_retries - - def get_backoff_time(self) -> float: - """Formula for computing the current backoff - - :rtype: float - """ - # We want to consider only the last consecutive errors sequence (Ignore redirects). - consecutive_errors_len = len( - list( - takewhile(lambda x: x.redirect_location is None, reversed(self.history)) - ) - ) - if consecutive_errors_len <= 1: - return 0 - - backoff_value = self.backoff_factor * (2 ** (consecutive_errors_len - 1)) - if self.backoff_jitter != 0.0: - backoff_value += random.random() * self.backoff_jitter - return float(max(0, min(self.backoff_max, backoff_value))) - - def parse_retry_after(self, retry_after: str) -> float: - seconds: float - # Whitespace: https://tools.ietf.org/html/rfc7230#section-3.2.4 - if re.match(r"^\s*[0-9]+\s*$", retry_after): - seconds = int(retry_after) - else: - retry_date_tuple = email.utils.parsedate_tz(retry_after) - if retry_date_tuple is None: - raise InvalidHeader(f"Invalid Retry-After header: {retry_after}") - - retry_date = email.utils.mktime_tz(retry_date_tuple) - seconds = retry_date - time.time() - - seconds = max(seconds, 0) - - return seconds - - def get_retry_after(self, response: BaseHTTPResponse) -> float | None: - """Get the value of Retry-After in seconds.""" - - retry_after = response.headers.get("Retry-After") - - if retry_after is None: - return None - - return self.parse_retry_after(retry_after) - - def sleep_for_retry(self, response: BaseHTTPResponse) -> bool: - retry_after = self.get_retry_after(response) - if retry_after: - time.sleep(retry_after) - return True - - return False - - def _sleep_backoff(self) -> None: - backoff = self.get_backoff_time() - if backoff <= 0: - return - time.sleep(backoff) - - def sleep(self, response: BaseHTTPResponse | None = None) -> None: - """Sleep between retry attempts. - - This method will respect a server's ``Retry-After`` response header - and sleep the duration of the time requested. If that is not present, it - will use an exponential backoff. By default, the backoff factor is 0 and - this method will return immediately. - """ - - if self.respect_retry_after_header and response: - slept = self.sleep_for_retry(response) - if slept: - return - - self._sleep_backoff() - - def _is_connection_error(self, err: Exception) -> bool: - """Errors when we're fairly sure that the server did not receive the - request, so it should be safe to retry. - """ - if isinstance(err, ProxyError): - err = err.original_error - return isinstance(err, ConnectTimeoutError) - - def _is_read_error(self, err: Exception) -> bool: - """Errors that occur after the request has been started, so we should - assume that the server began processing it. - """ - return isinstance(err, (ReadTimeoutError, ProtocolError)) - - def _is_method_retryable(self, method: str) -> bool: - """Checks if a given HTTP method should be retried upon, depending if - it is included in the allowed_methods - """ - if self.allowed_methods and method.upper() not in self.allowed_methods: - return False - return True - - def is_retry( - self, method: str, status_code: int, has_retry_after: bool = False - ) -> bool: - """Is this method/status code retryable? (Based on allowlists and control - variables such as the number of total retries to allow, whether to - respect the Retry-After header, whether this header is present, and - whether the returned status code is on the list of status codes to - be retried upon on the presence of the aforementioned header) - """ - if not self._is_method_retryable(method): - return False - - if self.status_forcelist and status_code in self.status_forcelist: - return True - - return bool( - self.total - and self.respect_retry_after_header - and has_retry_after - and (status_code in self.RETRY_AFTER_STATUS_CODES) - ) - - def is_exhausted(self) -> bool: - """Are we out of retries?""" - retry_counts = [ - x - for x in ( - self.total, - self.connect, - self.read, - self.redirect, - self.status, - self.other, - ) - if x - ] - if not retry_counts: - return False - - return min(retry_counts) < 0 - - def increment( - self, - method: str | None = None, - url: str | None = None, - response: BaseHTTPResponse | None = None, - error: Exception | None = None, - _pool: ConnectionPool | None = None, - _stacktrace: TracebackType | None = None, - ) -> Self: - """Return a new Retry object with incremented retry counters. - - :param response: A response object, or None, if the server did not - return a response. - :type response: :class:`~urllib3.response.BaseHTTPResponse` - :param Exception error: An error encountered during the request, or - None if the response was received successfully. - - :return: A new ``Retry`` object. - """ - if self.total is False and error: - # Disabled, indicate to re-raise the error. - raise reraise(type(error), error, _stacktrace) - - total = self.total - if total is not None: - total -= 1 - - connect = self.connect - read = self.read - redirect = self.redirect - status_count = self.status - other = self.other - cause = "unknown" - status = None - redirect_location = None - - if error and self._is_connection_error(error): - # Connect retry? - if connect is False: - raise reraise(type(error), error, _stacktrace) - elif connect is not None: - connect -= 1 - - elif error and self._is_read_error(error): - # Read retry? - if read is False or method is None or not self._is_method_retryable(method): - raise reraise(type(error), error, _stacktrace) - elif read is not None: - read -= 1 - - elif error: - # Other retry? - if other is not None: - other -= 1 - - elif response and response.get_redirect_location(): - # Redirect retry? - if redirect is not None: - redirect -= 1 - cause = "too many redirects" - response_redirect_location = response.get_redirect_location() - if response_redirect_location: - redirect_location = response_redirect_location - status = response.status - - else: - # Incrementing because of a server error like a 500 in - # status_forcelist and the given method is in the allowed_methods - cause = ResponseError.GENERIC_ERROR - if response and response.status: - if status_count is not None: - status_count -= 1 - cause = ResponseError.SPECIFIC_ERROR.format(status_code=response.status) - status = response.status - - history = self.history + ( - RequestHistory(method, url, error, status, redirect_location), - ) - - new_retry = self.new( - total=total, - connect=connect, - read=read, - redirect=redirect, - status=status_count, - other=other, - history=history, - ) - - if new_retry.is_exhausted(): - reason = error or ResponseError(cause) - raise MaxRetryError(_pool, url, reason) from reason # type: ignore[arg-type] - - log.debug("Incremented Retry for (url='%s'): %r", url, new_retry) - - return new_retry - - def __repr__(self) -> str: - return ( - f"{type(self).__name__}(total={self.total}, connect={self.connect}, " - f"read={self.read}, redirect={self.redirect}, status={self.status})" - ) - - -# For backwards compatibility (equivalent to pre-v1.9): -Retry.DEFAULT = Retry(3) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_.py deleted file mode 100644 index b2cc1aa7..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_.py +++ /dev/null @@ -1,524 +0,0 @@ -from __future__ import annotations - -import hashlib -import hmac -import os -import socket -import sys -import typing -import warnings -from binascii import unhexlify - -from ..exceptions import ProxySchemeUnsupported, SSLError -from .url import _BRACELESS_IPV6_ADDRZ_RE, _IPV4_RE - -SSLContext = None -SSLTransport = None -HAS_NEVER_CHECK_COMMON_NAME = False -IS_PYOPENSSL = False -ALPN_PROTOCOLS = ["http/1.1"] - -_TYPE_VERSION_INFO = tuple[int, int, int, str, int] - -# Maps the length of a digest to a possible hash function producing this digest -HASHFUNC_MAP = { - length: getattr(hashlib, algorithm, None) - for length, algorithm in ((32, "md5"), (40, "sha1"), (64, "sha256")) -} - - -def _is_bpo_43522_fixed( - implementation_name: str, - version_info: _TYPE_VERSION_INFO, - pypy_version_info: _TYPE_VERSION_INFO | None, -) -> bool: - """Return True for CPython 3.9.3+ or 3.10+ and PyPy 7.3.8+ where - setting SSLContext.hostname_checks_common_name to False works. - - Outside of CPython and PyPy we don't know which implementations work - or not so we conservatively use our hostname matching as we know that works - on all implementations. - - https://github.com/urllib3/urllib3/issues/2192#issuecomment-821832963 - https://foss.heptapod.net/pypy/pypy/-/issues/3539 - """ - if implementation_name == "pypy": - # https://foss.heptapod.net/pypy/pypy/-/issues/3129 - return pypy_version_info >= (7, 3, 8) # type: ignore[operator] - elif implementation_name == "cpython": - major_minor = version_info[:2] - micro = version_info[2] - return (major_minor == (3, 9) and micro >= 3) or major_minor >= (3, 10) - else: # Defensive: - return False - - -def _is_has_never_check_common_name_reliable( - openssl_version: str, - openssl_version_number: int, - implementation_name: str, - version_info: _TYPE_VERSION_INFO, - pypy_version_info: _TYPE_VERSION_INFO | None, -) -> bool: - # As of May 2023, all released versions of LibreSSL fail to reject certificates with - # only common names, see https://github.com/urllib3/urllib3/pull/3024 - is_openssl = openssl_version.startswith("OpenSSL ") - # Before fixing OpenSSL issue #14579, the SSL_new() API was not copying hostflags - # like X509_CHECK_FLAG_NEVER_CHECK_SUBJECT, which tripped up CPython. - # https://github.com/openssl/openssl/issues/14579 - # This was released in OpenSSL 1.1.1l+ (>=0x101010cf) - is_openssl_issue_14579_fixed = openssl_version_number >= 0x101010CF - - return is_openssl and ( - is_openssl_issue_14579_fixed - or _is_bpo_43522_fixed(implementation_name, version_info, pypy_version_info) - ) - - -if typing.TYPE_CHECKING: - from ssl import VerifyMode - from typing import TypedDict - - from .ssltransport import SSLTransport as SSLTransportType - - class _TYPE_PEER_CERT_RET_DICT(TypedDict, total=False): - subjectAltName: tuple[tuple[str, str], ...] - subject: tuple[tuple[tuple[str, str], ...], ...] - serialNumber: str - - -# Mapping from 'ssl.PROTOCOL_TLSX' to 'TLSVersion.X' -_SSL_VERSION_TO_TLS_VERSION: dict[int, int] = {} - -try: # Do we have ssl at all? - import ssl - from ssl import ( # type: ignore[assignment] - CERT_REQUIRED, - HAS_NEVER_CHECK_COMMON_NAME, - OP_NO_COMPRESSION, - OP_NO_TICKET, - OPENSSL_VERSION, - OPENSSL_VERSION_NUMBER, - PROTOCOL_TLS, - PROTOCOL_TLS_CLIENT, - VERIFY_X509_STRICT, - OP_NO_SSLv2, - OP_NO_SSLv3, - SSLContext, - TLSVersion, - ) - - PROTOCOL_SSLv23 = PROTOCOL_TLS - - # Needed for Python 3.9 which does not define this - VERIFY_X509_PARTIAL_CHAIN = getattr(ssl, "VERIFY_X509_PARTIAL_CHAIN", 0x80000) - - # Setting SSLContext.hostname_checks_common_name = False didn't work before CPython - # 3.9.3, and 3.10 (but OK on PyPy) or OpenSSL 1.1.1l+ - if HAS_NEVER_CHECK_COMMON_NAME and not _is_has_never_check_common_name_reliable( - OPENSSL_VERSION, - OPENSSL_VERSION_NUMBER, - sys.implementation.name, - sys.version_info, - sys.pypy_version_info if sys.implementation.name == "pypy" else None, # type: ignore[attr-defined] - ): # Defensive: for Python < 3.9.3 - HAS_NEVER_CHECK_COMMON_NAME = False - - # Need to be careful here in case old TLS versions get - # removed in future 'ssl' module implementations. - for attr in ("TLSv1", "TLSv1_1", "TLSv1_2"): - try: - _SSL_VERSION_TO_TLS_VERSION[getattr(ssl, f"PROTOCOL_{attr}")] = getattr( - TLSVersion, attr - ) - except AttributeError: # Defensive: - continue - - from .ssltransport import SSLTransport # type: ignore[assignment] -except ImportError: - OP_NO_COMPRESSION = 0x20000 # type: ignore[assignment] - OP_NO_TICKET = 0x4000 # type: ignore[assignment] - OP_NO_SSLv2 = 0x1000000 # type: ignore[assignment] - OP_NO_SSLv3 = 0x2000000 # type: ignore[assignment] - PROTOCOL_SSLv23 = PROTOCOL_TLS = 2 # type: ignore[assignment] - PROTOCOL_TLS_CLIENT = 16 # type: ignore[assignment] - VERIFY_X509_PARTIAL_CHAIN = 0x80000 - VERIFY_X509_STRICT = 0x20 # type: ignore[assignment] - - -_TYPE_PEER_CERT_RET = typing.Union["_TYPE_PEER_CERT_RET_DICT", bytes, None] - - -def assert_fingerprint(cert: bytes | None, fingerprint: str) -> None: - """ - Checks if given fingerprint matches the supplied certificate. - - :param cert: - Certificate as bytes object. - :param fingerprint: - Fingerprint as string of hexdigits, can be interspersed by colons. - """ - - if cert is None: - raise SSLError("No certificate for the peer.") - - fingerprint = fingerprint.replace(":", "").lower() - digest_length = len(fingerprint) - if digest_length not in HASHFUNC_MAP: - raise SSLError(f"Fingerprint of invalid length: {fingerprint}") - hashfunc = HASHFUNC_MAP.get(digest_length) - if hashfunc is None: - raise SSLError( - f"Hash function implementation unavailable for fingerprint length: {digest_length}" - ) - - # We need encode() here for py32; works on py2 and p33. - fingerprint_bytes = unhexlify(fingerprint.encode()) - - cert_digest = hashfunc(cert).digest() - - if not hmac.compare_digest(cert_digest, fingerprint_bytes): - raise SSLError( - f'Fingerprints did not match. Expected "{fingerprint}", got "{cert_digest.hex()}"' - ) - - -def resolve_cert_reqs(candidate: None | int | str) -> VerifyMode: - """ - Resolves the argument to a numeric constant, which can be passed to - the wrap_socket function/method from the ssl module. - Defaults to :data:`ssl.CERT_REQUIRED`. - If given a string it is assumed to be the name of the constant in the - :mod:`ssl` module or its abbreviation. - (So you can specify `REQUIRED` instead of `CERT_REQUIRED`. - If it's neither `None` nor a string we assume it is already the numeric - constant which can directly be passed to wrap_socket. - """ - if candidate is None: - return CERT_REQUIRED - - if isinstance(candidate, str): - res = getattr(ssl, candidate, None) - if res is None: - res = getattr(ssl, "CERT_" + candidate) - return res # type: ignore[no-any-return] - - return candidate # type: ignore[return-value] - - -def resolve_ssl_version(candidate: None | int | str) -> int: - """ - like resolve_cert_reqs - """ - if candidate is None: - return PROTOCOL_TLS - - if isinstance(candidate, str): - res = getattr(ssl, candidate, None) - if res is None: - res = getattr(ssl, "PROTOCOL_" + candidate) - return typing.cast(int, res) - - return candidate - - -def create_urllib3_context( - ssl_version: int | None = None, - cert_reqs: int | None = None, - options: int | None = None, - ciphers: str | None = None, - ssl_minimum_version: int | None = None, - ssl_maximum_version: int | None = None, - verify_flags: int | None = None, -) -> ssl.SSLContext: - """Creates and configures an :class:`ssl.SSLContext` instance for use with urllib3. - - :param ssl_version: - The desired protocol version to use. This will default to - PROTOCOL_SSLv23 which will negotiate the highest protocol that both - the server and your installation of OpenSSL support. - - This parameter is deprecated instead use 'ssl_minimum_version'. - :param ssl_minimum_version: - The minimum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value. - :param ssl_maximum_version: - The maximum version of TLS to be used. Use the 'ssl.TLSVersion' enum for specifying the value. - Not recommended to set to anything other than 'ssl.TLSVersion.MAXIMUM_SUPPORTED' which is the - default value. - :param cert_reqs: - Whether to require the certificate verification. This defaults to - ``ssl.CERT_REQUIRED``. - :param options: - Specific OpenSSL options. These default to ``ssl.OP_NO_SSLv2``, - ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION``, and ``ssl.OP_NO_TICKET``. - :param ciphers: - Which cipher suites to allow the server to select. Defaults to either system configured - ciphers if OpenSSL 1.1.1+, otherwise uses a secure default set of ciphers. - :param verify_flags: - The flags for certificate verification operations. These default to - ``ssl.VERIFY_X509_PARTIAL_CHAIN`` and ``ssl.VERIFY_X509_STRICT`` for Python 3.13+. - :returns: - Constructed SSLContext object with specified options - :rtype: SSLContext - """ - if SSLContext is None: - raise TypeError("Can't create an SSLContext object without an ssl module") - - # This means 'ssl_version' was specified as an exact value. - if ssl_version not in (None, PROTOCOL_TLS, PROTOCOL_TLS_CLIENT): - # Disallow setting 'ssl_version' and 'ssl_minimum|maximum_version' - # to avoid conflicts. - if ssl_minimum_version is not None or ssl_maximum_version is not None: - raise ValueError( - "Can't specify both 'ssl_version' and either " - "'ssl_minimum_version' or 'ssl_maximum_version'" - ) - - # 'ssl_version' is deprecated and will be removed in the future. - else: - # Use 'ssl_minimum_version' and 'ssl_maximum_version' instead. - ssl_minimum_version = _SSL_VERSION_TO_TLS_VERSION.get( - ssl_version, TLSVersion.MINIMUM_SUPPORTED - ) - ssl_maximum_version = _SSL_VERSION_TO_TLS_VERSION.get( - ssl_version, TLSVersion.MAXIMUM_SUPPORTED - ) - - # This warning message is pushing users to use 'ssl_minimum_version' - # instead of both min/max. Best practice is to only set the minimum version and - # keep the maximum version to be it's default value: 'TLSVersion.MAXIMUM_SUPPORTED' - warnings.warn( - "'ssl_version' option is deprecated and will be " - "removed in urllib3 v2.6.0. Instead use 'ssl_minimum_version'", - category=DeprecationWarning, - stacklevel=2, - ) - - # PROTOCOL_TLS is deprecated in Python 3.10 so we always use PROTOCOL_TLS_CLIENT - context = SSLContext(PROTOCOL_TLS_CLIENT) - - if ssl_minimum_version is not None: - context.minimum_version = ssl_minimum_version - else: # Python <3.10 defaults to 'MINIMUM_SUPPORTED' so explicitly set TLSv1.2 here - context.minimum_version = TLSVersion.TLSv1_2 - - if ssl_maximum_version is not None: - context.maximum_version = ssl_maximum_version - - # Unless we're given ciphers defer to either system ciphers in - # the case of OpenSSL 1.1.1+ or use our own secure default ciphers. - if ciphers: - context.set_ciphers(ciphers) - - # Setting the default here, as we may have no ssl module on import - cert_reqs = ssl.CERT_REQUIRED if cert_reqs is None else cert_reqs - - if options is None: - options = 0 - # SSLv2 is easily broken and is considered harmful and dangerous - options |= OP_NO_SSLv2 - # SSLv3 has several problems and is now dangerous - options |= OP_NO_SSLv3 - # Disable compression to prevent CRIME attacks for OpenSSL 1.0+ - # (issue #309) - options |= OP_NO_COMPRESSION - # TLSv1.2 only. Unless set explicitly, do not request tickets. - # This may save some bandwidth on wire, and although the ticket is encrypted, - # there is a risk associated with it being on wire, - # if the server is not rotating its ticketing keys properly. - options |= OP_NO_TICKET - - context.options |= options - - if verify_flags is None: - verify_flags = 0 - # In Python 3.13+ ssl.create_default_context() sets VERIFY_X509_PARTIAL_CHAIN - # and VERIFY_X509_STRICT so we do the same - if sys.version_info >= (3, 13): - verify_flags |= VERIFY_X509_PARTIAL_CHAIN - verify_flags |= VERIFY_X509_STRICT - - context.verify_flags |= verify_flags - - # Enable post-handshake authentication for TLS 1.3, see GH #1634. PHA is - # necessary for conditional client cert authentication with TLS 1.3. - # The attribute is None for OpenSSL <= 1.1.0 or does not exist when using - # an SSLContext created by pyOpenSSL. - if getattr(context, "post_handshake_auth", None) is not None: - context.post_handshake_auth = True - - # The order of the below lines setting verify_mode and check_hostname - # matter due to safe-guards SSLContext has to prevent an SSLContext with - # check_hostname=True, verify_mode=NONE/OPTIONAL. - # We always set 'check_hostname=False' for pyOpenSSL so we rely on our own - # 'ssl.match_hostname()' implementation. - if cert_reqs == ssl.CERT_REQUIRED and not IS_PYOPENSSL: - context.verify_mode = cert_reqs - context.check_hostname = True - else: - context.check_hostname = False - context.verify_mode = cert_reqs - - try: - context.hostname_checks_common_name = False - except AttributeError: # Defensive: for CPython < 3.9.3; for PyPy < 7.3.8 - pass - - sslkeylogfile = os.environ.get("SSLKEYLOGFILE") - if sslkeylogfile: - context.keylog_filename = sslkeylogfile - - return context - - -@typing.overload -def ssl_wrap_socket( - sock: socket.socket, - keyfile: str | None = ..., - certfile: str | None = ..., - cert_reqs: int | None = ..., - ca_certs: str | None = ..., - server_hostname: str | None = ..., - ssl_version: int | None = ..., - ciphers: str | None = ..., - ssl_context: ssl.SSLContext | None = ..., - ca_cert_dir: str | None = ..., - key_password: str | None = ..., - ca_cert_data: None | str | bytes = ..., - tls_in_tls: typing.Literal[False] = ..., -) -> ssl.SSLSocket: ... - - -@typing.overload -def ssl_wrap_socket( - sock: socket.socket, - keyfile: str | None = ..., - certfile: str | None = ..., - cert_reqs: int | None = ..., - ca_certs: str | None = ..., - server_hostname: str | None = ..., - ssl_version: int | None = ..., - ciphers: str | None = ..., - ssl_context: ssl.SSLContext | None = ..., - ca_cert_dir: str | None = ..., - key_password: str | None = ..., - ca_cert_data: None | str | bytes = ..., - tls_in_tls: bool = ..., -) -> ssl.SSLSocket | SSLTransportType: ... - - -def ssl_wrap_socket( - sock: socket.socket, - keyfile: str | None = None, - certfile: str | None = None, - cert_reqs: int | None = None, - ca_certs: str | None = None, - server_hostname: str | None = None, - ssl_version: int | None = None, - ciphers: str | None = None, - ssl_context: ssl.SSLContext | None = None, - ca_cert_dir: str | None = None, - key_password: str | None = None, - ca_cert_data: None | str | bytes = None, - tls_in_tls: bool = False, -) -> ssl.SSLSocket | SSLTransportType: - """ - All arguments except for server_hostname, ssl_context, tls_in_tls, ca_cert_data and - ca_cert_dir have the same meaning as they do when using - :func:`ssl.create_default_context`, :meth:`ssl.SSLContext.load_cert_chain`, - :meth:`ssl.SSLContext.set_ciphers` and :meth:`ssl.SSLContext.wrap_socket`. - - :param server_hostname: - When SNI is supported, the expected hostname of the certificate - :param ssl_context: - A pre-made :class:`SSLContext` object. If none is provided, one will - be created using :func:`create_urllib3_context`. - :param ciphers: - A string of ciphers we wish the client to support. - :param ca_cert_dir: - A directory containing CA certificates in multiple separate files, as - supported by OpenSSL's -CApath flag or the capath argument to - SSLContext.load_verify_locations(). - :param key_password: - Optional password if the keyfile is encrypted. - :param ca_cert_data: - Optional string containing CA certificates in PEM format suitable for - passing as the cadata parameter to SSLContext.load_verify_locations() - :param tls_in_tls: - Use SSLTransport to wrap the existing socket. - """ - context = ssl_context - if context is None: - # Note: This branch of code and all the variables in it are only used in tests. - # We should consider deprecating and removing this code. - context = create_urllib3_context(ssl_version, cert_reqs, ciphers=ciphers) - - if ca_certs or ca_cert_dir or ca_cert_data: - try: - context.load_verify_locations(ca_certs, ca_cert_dir, ca_cert_data) - except OSError as e: - raise SSLError(e) from e - - elif ssl_context is None and hasattr(context, "load_default_certs"): - # try to load OS default certs; works well on Windows. - context.load_default_certs() - - # Attempt to detect if we get the goofy behavior of the - # keyfile being encrypted and OpenSSL asking for the - # passphrase via the terminal and instead error out. - if keyfile and key_password is None and _is_key_file_encrypted(keyfile): - raise SSLError("Client private key is encrypted, password is required") - - if certfile: - if key_password is None: - context.load_cert_chain(certfile, keyfile) - else: - context.load_cert_chain(certfile, keyfile, key_password) - - context.set_alpn_protocols(ALPN_PROTOCOLS) - - ssl_sock = _ssl_wrap_socket_impl(sock, context, tls_in_tls, server_hostname) - return ssl_sock - - -def is_ipaddress(hostname: str | bytes) -> bool: - """Detects whether the hostname given is an IPv4 or IPv6 address. - Also detects IPv6 addresses with Zone IDs. - - :param str hostname: Hostname to examine. - :return: True if the hostname is an IP address, False otherwise. - """ - if isinstance(hostname, bytes): - # IDN A-label bytes are ASCII compatible. - hostname = hostname.decode("ascii") - return bool(_IPV4_RE.match(hostname) or _BRACELESS_IPV6_ADDRZ_RE.match(hostname)) - - -def _is_key_file_encrypted(key_file: str) -> bool: - """Detects if a key file is encrypted or not.""" - with open(key_file) as f: - for line in f: - # Look for Proc-Type: 4,ENCRYPTED - if "ENCRYPTED" in line: - return True - - return False - - -def _ssl_wrap_socket_impl( - sock: socket.socket, - ssl_context: ssl.SSLContext, - tls_in_tls: bool, - server_hostname: str | None = None, -) -> ssl.SSLSocket | SSLTransportType: - if tls_in_tls: - if not SSLTransport: - # Import error, ssl is not available. - raise ProxySchemeUnsupported( - "TLS in TLS requires support for the 'ssl' module" - ) - - SSLTransport._validate_ssl_context_for_tls_in_tls(ssl_context) - return SSLTransport(sock, ssl_context, server_hostname) - - return ssl_context.wrap_socket(sock, server_hostname=server_hostname) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py deleted file mode 100644 index 25d91000..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py +++ /dev/null @@ -1,159 +0,0 @@ -"""The match_hostname() function from Python 3.5, essential when using SSL.""" - -# Note: This file is under the PSF license as the code comes from the python -# stdlib. http://docs.python.org/3/license.html -# It is modified to remove commonName support. - -from __future__ import annotations - -import ipaddress -import re -import typing -from ipaddress import IPv4Address, IPv6Address - -if typing.TYPE_CHECKING: - from .ssl_ import _TYPE_PEER_CERT_RET_DICT - -__version__ = "3.5.0.1" - - -class CertificateError(ValueError): - pass - - -def _dnsname_match( - dn: typing.Any, hostname: str, max_wildcards: int = 1 -) -> typing.Match[str] | None | bool: - """Matching according to RFC 6125, section 6.4.3 - - http://tools.ietf.org/html/rfc6125#section-6.4.3 - """ - pats = [] - if not dn: - return False - - # Ported from python3-syntax: - # leftmost, *remainder = dn.split(r'.') - parts = dn.split(r".") - leftmost = parts[0] - remainder = parts[1:] - - wildcards = leftmost.count("*") - if wildcards > max_wildcards: - # Issue #17980: avoid denials of service by refusing more - # than one wildcard per fragment. A survey of established - # policy among SSL implementations showed it to be a - # reasonable choice. - raise CertificateError( - "too many wildcards in certificate DNS name: " + repr(dn) - ) - - # speed up common case w/o wildcards - if not wildcards: - return bool(dn.lower() == hostname.lower()) - - # RFC 6125, section 6.4.3, subitem 1. - # The client SHOULD NOT attempt to match a presented identifier in which - # the wildcard character comprises a label other than the left-most label. - if leftmost == "*": - # When '*' is a fragment by itself, it matches a non-empty dotless - # fragment. - pats.append("[^.]+") - elif leftmost.startswith("xn--") or hostname.startswith("xn--"): - # RFC 6125, section 6.4.3, subitem 3. - # The client SHOULD NOT attempt to match a presented identifier - # where the wildcard character is embedded within an A-label or - # U-label of an internationalized domain name. - pats.append(re.escape(leftmost)) - else: - # Otherwise, '*' matches any dotless string, e.g. www* - pats.append(re.escape(leftmost).replace(r"\*", "[^.]*")) - - # add the remaining fragments, ignore any wildcards - for frag in remainder: - pats.append(re.escape(frag)) - - pat = re.compile(r"\A" + r"\.".join(pats) + r"\Z", re.IGNORECASE) - return pat.match(hostname) - - -def _ipaddress_match(ipname: str, host_ip: IPv4Address | IPv6Address) -> bool: - """Exact matching of IP addresses. - - RFC 9110 section 4.3.5: "A reference identity of IP-ID contains the decoded - bytes of the IP address. An IP version 4 address is 4 octets, and an IP - version 6 address is 16 octets. [...] A reference identity of type IP-ID - matches if the address is identical to an iPAddress value of the - subjectAltName extension of the certificate." - """ - # OpenSSL may add a trailing newline to a subjectAltName's IP address - # Divergence from upstream: ipaddress can't handle byte str - ip = ipaddress.ip_address(ipname.rstrip()) - return bool(ip.packed == host_ip.packed) - - -def match_hostname( - cert: _TYPE_PEER_CERT_RET_DICT | None, - hostname: str, - hostname_checks_common_name: bool = False, -) -> None: - """Verify that *cert* (in decoded format as returned by - SSLSocket.getpeercert()) matches the *hostname*. RFC 2818 and RFC 6125 - rules are followed, but IP addresses are not accepted for *hostname*. - - CertificateError is raised on failure. On success, the function - returns nothing. - """ - if not cert: - raise ValueError( - "empty or no certificate, match_hostname needs a " - "SSL socket or SSL context with either " - "CERT_OPTIONAL or CERT_REQUIRED" - ) - try: - # Divergence from upstream: ipaddress can't handle byte str - # - # The ipaddress module shipped with Python < 3.9 does not support - # scoped IPv6 addresses so we unconditionally strip the Zone IDs for - # now. Once we drop support for Python 3.9 we can remove this branch. - if "%" in hostname: - host_ip = ipaddress.ip_address(hostname[: hostname.rfind("%")]) - else: - host_ip = ipaddress.ip_address(hostname) - - except ValueError: - # Not an IP address (common case) - host_ip = None - dnsnames = [] - san: tuple[tuple[str, str], ...] = cert.get("subjectAltName", ()) - key: str - value: str - for key, value in san: - if key == "DNS": - if host_ip is None and _dnsname_match(value, hostname): - return - dnsnames.append(value) - elif key == "IP Address": - if host_ip is not None and _ipaddress_match(value, host_ip): - return - dnsnames.append(value) - - # We only check 'commonName' if it's enabled and we're not verifying - # an IP address. IP addresses aren't valid within 'commonName'. - if hostname_checks_common_name and host_ip is None and not dnsnames: - for sub in cert.get("subject", ()): - for key, value in sub: - if key == "commonName": - if _dnsname_match(value, hostname): - return - dnsnames.append(value) # Defensive: for Python < 3.9.3 - - if len(dnsnames) > 1: - raise CertificateError( - "hostname %r " - "doesn't match either of %s" % (hostname, ", ".join(map(repr, dnsnames))) - ) - elif len(dnsnames) == 1: - raise CertificateError(f"hostname {hostname!r} doesn't match {dnsnames[0]!r}") - else: - raise CertificateError("no appropriate subjectAltName fields were found") diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py deleted file mode 100644 index 6d59bc3b..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py +++ /dev/null @@ -1,271 +0,0 @@ -from __future__ import annotations - -import io -import socket -import ssl -import typing - -from ..exceptions import ProxySchemeUnsupported - -if typing.TYPE_CHECKING: - from typing_extensions import Self - - from .ssl_ import _TYPE_PEER_CERT_RET, _TYPE_PEER_CERT_RET_DICT - - -_WriteBuffer = typing.Union[bytearray, memoryview] -_ReturnValue = typing.TypeVar("_ReturnValue") - -SSL_BLOCKSIZE = 16384 - - -class SSLTransport: - """ - The SSLTransport wraps an existing socket and establishes an SSL connection. - - Contrary to Python's implementation of SSLSocket, it allows you to chain - multiple TLS connections together. It's particularly useful if you need to - implement TLS within TLS. - - The class supports most of the socket API operations. - """ - - @staticmethod - def _validate_ssl_context_for_tls_in_tls(ssl_context: ssl.SSLContext) -> None: - """ - Raises a ProxySchemeUnsupported if the provided ssl_context can't be used - for TLS in TLS. - - The only requirement is that the ssl_context provides the 'wrap_bio' - methods. - """ - - if not hasattr(ssl_context, "wrap_bio"): - raise ProxySchemeUnsupported( - "TLS in TLS requires SSLContext.wrap_bio() which isn't " - "available on non-native SSLContext" - ) - - def __init__( - self, - socket: socket.socket, - ssl_context: ssl.SSLContext, - server_hostname: str | None = None, - suppress_ragged_eofs: bool = True, - ) -> None: - """ - Create an SSLTransport around socket using the provided ssl_context. - """ - self.incoming = ssl.MemoryBIO() - self.outgoing = ssl.MemoryBIO() - - self.suppress_ragged_eofs = suppress_ragged_eofs - self.socket = socket - - self.sslobj = ssl_context.wrap_bio( - self.incoming, self.outgoing, server_hostname=server_hostname - ) - - # Perform initial handshake. - self._ssl_io_loop(self.sslobj.do_handshake) - - def __enter__(self) -> Self: - return self - - def __exit__(self, *_: typing.Any) -> None: - self.close() - - def fileno(self) -> int: - return self.socket.fileno() - - def read(self, len: int = 1024, buffer: typing.Any | None = None) -> int | bytes: - return self._wrap_ssl_read(len, buffer) - - def recv(self, buflen: int = 1024, flags: int = 0) -> int | bytes: - if flags != 0: - raise ValueError("non-zero flags not allowed in calls to recv") - return self._wrap_ssl_read(buflen) - - def recv_into( - self, - buffer: _WriteBuffer, - nbytes: int | None = None, - flags: int = 0, - ) -> None | int | bytes: - if flags != 0: - raise ValueError("non-zero flags not allowed in calls to recv_into") - if nbytes is None: - nbytes = len(buffer) - return self.read(nbytes, buffer) - - def sendall(self, data: bytes, flags: int = 0) -> None: - if flags != 0: - raise ValueError("non-zero flags not allowed in calls to sendall") - count = 0 - with memoryview(data) as view, view.cast("B") as byte_view: - amount = len(byte_view) - while count < amount: - v = self.send(byte_view[count:]) - count += v - - def send(self, data: bytes, flags: int = 0) -> int: - if flags != 0: - raise ValueError("non-zero flags not allowed in calls to send") - return self._ssl_io_loop(self.sslobj.write, data) - - def makefile( - self, - mode: str, - buffering: int | None = None, - *, - encoding: str | None = None, - errors: str | None = None, - newline: str | None = None, - ) -> typing.BinaryIO | typing.TextIO | socket.SocketIO: - """ - Python's httpclient uses makefile and buffered io when reading HTTP - messages and we need to support it. - - This is unfortunately a copy and paste of socket.py makefile with small - changes to point to the socket directly. - """ - if not set(mode) <= {"r", "w", "b"}: - raise ValueError(f"invalid mode {mode!r} (only r, w, b allowed)") - - writing = "w" in mode - reading = "r" in mode or not writing - assert reading or writing - binary = "b" in mode - rawmode = "" - if reading: - rawmode += "r" - if writing: - rawmode += "w" - raw = socket.SocketIO(self, rawmode) # type: ignore[arg-type] - self.socket._io_refs += 1 # type: ignore[attr-defined] - if buffering is None: - buffering = -1 - if buffering < 0: - buffering = io.DEFAULT_BUFFER_SIZE - if buffering == 0: - if not binary: - raise ValueError("unbuffered streams must be binary") - return raw - buffer: typing.BinaryIO - if reading and writing: - buffer = io.BufferedRWPair(raw, raw, buffering) # type: ignore[assignment] - elif reading: - buffer = io.BufferedReader(raw, buffering) - else: - assert writing - buffer = io.BufferedWriter(raw, buffering) - if binary: - return buffer - text = io.TextIOWrapper(buffer, encoding, errors, newline) - text.mode = mode # type: ignore[misc] - return text - - def unwrap(self) -> None: - self._ssl_io_loop(self.sslobj.unwrap) - - def close(self) -> None: - self.socket.close() - - @typing.overload - def getpeercert( - self, binary_form: typing.Literal[False] = ... - ) -> _TYPE_PEER_CERT_RET_DICT | None: ... - - @typing.overload - def getpeercert(self, binary_form: typing.Literal[True]) -> bytes | None: ... - - def getpeercert(self, binary_form: bool = False) -> _TYPE_PEER_CERT_RET: - return self.sslobj.getpeercert(binary_form) # type: ignore[return-value] - - def version(self) -> str | None: - return self.sslobj.version() - - def cipher(self) -> tuple[str, str, int] | None: - return self.sslobj.cipher() - - def selected_alpn_protocol(self) -> str | None: - return self.sslobj.selected_alpn_protocol() - - def shared_ciphers(self) -> list[tuple[str, str, int]] | None: - return self.sslobj.shared_ciphers() - - def compression(self) -> str | None: - return self.sslobj.compression() - - def settimeout(self, value: float | None) -> None: - self.socket.settimeout(value) - - def gettimeout(self) -> float | None: - return self.socket.gettimeout() - - def _decref_socketios(self) -> None: - self.socket._decref_socketios() # type: ignore[attr-defined] - - def _wrap_ssl_read(self, len: int, buffer: bytearray | None = None) -> int | bytes: - try: - return self._ssl_io_loop(self.sslobj.read, len, buffer) - except ssl.SSLError as e: - if e.errno == ssl.SSL_ERROR_EOF and self.suppress_ragged_eofs: - return 0 # eof, return 0. - else: - raise - - # func is sslobj.do_handshake or sslobj.unwrap - @typing.overload - def _ssl_io_loop(self, func: typing.Callable[[], None]) -> None: ... - - # func is sslobj.write, arg1 is data - @typing.overload - def _ssl_io_loop(self, func: typing.Callable[[bytes], int], arg1: bytes) -> int: ... - - # func is sslobj.read, arg1 is len, arg2 is buffer - @typing.overload - def _ssl_io_loop( - self, - func: typing.Callable[[int, bytearray | None], bytes], - arg1: int, - arg2: bytearray | None, - ) -> bytes: ... - - def _ssl_io_loop( - self, - func: typing.Callable[..., _ReturnValue], - arg1: None | bytes | int = None, - arg2: bytearray | None = None, - ) -> _ReturnValue: - """Performs an I/O loop between incoming/outgoing and the socket.""" - should_loop = True - ret = None - - while should_loop: - errno = None - try: - if arg1 is None and arg2 is None: - ret = func() - elif arg2 is None: - ret = func(arg1) - else: - ret = func(arg1, arg2) - except ssl.SSLError as e: - if e.errno not in (ssl.SSL_ERROR_WANT_READ, ssl.SSL_ERROR_WANT_WRITE): - # WANT_READ, and WANT_WRITE are expected, others are not. - raise e - errno = e.errno - - buf = self.outgoing.read() - self.socket.sendall(buf) - - if errno is None: - should_loop = False - elif errno == ssl.SSL_ERROR_WANT_READ: - buf = self.socket.recv(SSL_BLOCKSIZE) - if buf: - self.incoming.write(buf) - else: - self.incoming.write_eof() - return typing.cast(_ReturnValue, ret) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/timeout.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/timeout.py deleted file mode 100644 index 4bb1be11..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/timeout.py +++ /dev/null @@ -1,275 +0,0 @@ -from __future__ import annotations - -import time -import typing -from enum import Enum -from socket import getdefaulttimeout - -from ..exceptions import TimeoutStateError - -if typing.TYPE_CHECKING: - from typing import Final - - -class _TYPE_DEFAULT(Enum): - # This value should never be passed to socket.settimeout() so for safety we use a -1. - # socket.settimout() raises a ValueError for negative values. - token = -1 - - -_DEFAULT_TIMEOUT: Final[_TYPE_DEFAULT] = _TYPE_DEFAULT.token - -_TYPE_TIMEOUT = typing.Optional[typing.Union[float, _TYPE_DEFAULT]] - - -class Timeout: - """Timeout configuration. - - Timeouts can be defined as a default for a pool: - - .. code-block:: python - - import urllib3 - - timeout = urllib3.util.Timeout(connect=2.0, read=7.0) - - http = urllib3.PoolManager(timeout=timeout) - - resp = http.request("GET", "https://example.com/") - - print(resp.status) - - Or per-request (which overrides the default for the pool): - - .. code-block:: python - - response = http.request("GET", "https://example.com/", timeout=Timeout(10)) - - Timeouts can be disabled by setting all the parameters to ``None``: - - .. code-block:: python - - no_timeout = Timeout(connect=None, read=None) - response = http.request("GET", "https://example.com/", timeout=no_timeout) - - - :param total: - This combines the connect and read timeouts into one; the read timeout - will be set to the time leftover from the connect attempt. In the - event that both a connect timeout and a total are specified, or a read - timeout and a total are specified, the shorter timeout will be applied. - - Defaults to None. - - :type total: int, float, or None - - :param connect: - The maximum amount of time (in seconds) to wait for a connection - attempt to a server to succeed. Omitting the parameter will default the - connect timeout to the system default, probably `the global default - timeout in socket.py - `_. - None will set an infinite timeout for connection attempts. - - :type connect: int, float, or None - - :param read: - The maximum amount of time (in seconds) to wait between consecutive - read operations for a response from the server. Omitting the parameter - will default the read timeout to the system default, probably `the - global default timeout in socket.py - `_. - None will set an infinite timeout. - - :type read: int, float, or None - - .. note:: - - Many factors can affect the total amount of time for urllib3 to return - an HTTP response. - - For example, Python's DNS resolver does not obey the timeout specified - on the socket. Other factors that can affect total request time include - high CPU load, high swap, the program running at a low priority level, - or other behaviors. - - In addition, the read and total timeouts only measure the time between - read operations on the socket connecting the client and the server, - not the total amount of time for the request to return a complete - response. For most requests, the timeout is raised because the server - has not sent the first byte in the specified time. This is not always - the case; if a server streams one byte every fifteen seconds, a timeout - of 20 seconds will not trigger, even though the request will take - several minutes to complete. - """ - - #: A sentinel object representing the default timeout value - DEFAULT_TIMEOUT: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT - - def __init__( - self, - total: _TYPE_TIMEOUT = None, - connect: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - read: _TYPE_TIMEOUT = _DEFAULT_TIMEOUT, - ) -> None: - self._connect = self._validate_timeout(connect, "connect") - self._read = self._validate_timeout(read, "read") - self.total = self._validate_timeout(total, "total") - self._start_connect: float | None = None - - def __repr__(self) -> str: - return f"{type(self).__name__}(connect={self._connect!r}, read={self._read!r}, total={self.total!r})" - - # __str__ provided for backwards compatibility - __str__ = __repr__ - - @staticmethod - def resolve_default_timeout(timeout: _TYPE_TIMEOUT) -> float | None: - return getdefaulttimeout() if timeout is _DEFAULT_TIMEOUT else timeout - - @classmethod - def _validate_timeout(cls, value: _TYPE_TIMEOUT, name: str) -> _TYPE_TIMEOUT: - """Check that a timeout attribute is valid. - - :param value: The timeout value to validate - :param name: The name of the timeout attribute to validate. This is - used to specify in error messages. - :return: The validated and casted version of the given value. - :raises ValueError: If it is a numeric value less than or equal to - zero, or the type is not an integer, float, or None. - """ - if value is None or value is _DEFAULT_TIMEOUT: - return value - - if isinstance(value, bool): - raise ValueError( - "Timeout cannot be a boolean value. It must " - "be an int, float or None." - ) - try: - float(value) - except (TypeError, ValueError): - raise ValueError( - "Timeout value %s was %s, but it must be an " - "int, float or None." % (name, value) - ) from None - - try: - if value <= 0: - raise ValueError( - "Attempted to set %s timeout to %s, but the " - "timeout cannot be set to a value less " - "than or equal to 0." % (name, value) - ) - except TypeError: - raise ValueError( - "Timeout value %s was %s, but it must be an " - "int, float or None." % (name, value) - ) from None - - return value - - @classmethod - def from_float(cls, timeout: _TYPE_TIMEOUT) -> Timeout: - """Create a new Timeout from a legacy timeout value. - - The timeout value used by httplib.py sets the same timeout on the - connect(), and recv() socket requests. This creates a :class:`Timeout` - object that sets the individual timeouts to the ``timeout`` value - passed to this function. - - :param timeout: The legacy timeout value. - :type timeout: integer, float, :attr:`urllib3.util.Timeout.DEFAULT_TIMEOUT`, or None - :return: Timeout object - :rtype: :class:`Timeout` - """ - return Timeout(read=timeout, connect=timeout) - - def clone(self) -> Timeout: - """Create a copy of the timeout object - - Timeout properties are stored per-pool but each request needs a fresh - Timeout object to ensure each one has its own start/stop configured. - - :return: a copy of the timeout object - :rtype: :class:`Timeout` - """ - # We can't use copy.deepcopy because that will also create a new object - # for _GLOBAL_DEFAULT_TIMEOUT, which socket.py uses as a sentinel to - # detect the user default. - return Timeout(connect=self._connect, read=self._read, total=self.total) - - def start_connect(self) -> float: - """Start the timeout clock, used during a connect() attempt - - :raises urllib3.exceptions.TimeoutStateError: if you attempt - to start a timer that has been started already. - """ - if self._start_connect is not None: - raise TimeoutStateError("Timeout timer has already been started.") - self._start_connect = time.monotonic() - return self._start_connect - - def get_connect_duration(self) -> float: - """Gets the time elapsed since the call to :meth:`start_connect`. - - :return: Elapsed time in seconds. - :rtype: float - :raises urllib3.exceptions.TimeoutStateError: if you attempt - to get duration for a timer that hasn't been started. - """ - if self._start_connect is None: - raise TimeoutStateError( - "Can't get connect duration for timer that has not started." - ) - return time.monotonic() - self._start_connect - - @property - def connect_timeout(self) -> _TYPE_TIMEOUT: - """Get the value to use when setting a connection timeout. - - This will be a positive float or integer, the value None - (never timeout), or the default system timeout. - - :return: Connect timeout. - :rtype: int, float, :attr:`Timeout.DEFAULT_TIMEOUT` or None - """ - if self.total is None: - return self._connect - - if self._connect is None or self._connect is _DEFAULT_TIMEOUT: - return self.total - - return min(self._connect, self.total) # type: ignore[type-var] - - @property - def read_timeout(self) -> float | None: - """Get the value for the read timeout. - - This assumes some time has elapsed in the connection timeout and - computes the read timeout appropriately. - - If self.total is set, the read timeout is dependent on the amount of - time taken by the connect timeout. If the connection time has not been - established, a :exc:`~urllib3.exceptions.TimeoutStateError` will be - raised. - - :return: Value to use for the read timeout. - :rtype: int, float or None - :raises urllib3.exceptions.TimeoutStateError: If :meth:`start_connect` - has not yet been called on this object. - """ - if ( - self.total is not None - and self.total is not _DEFAULT_TIMEOUT - and self._read is not None - and self._read is not _DEFAULT_TIMEOUT - ): - # In case the connect timeout has not yet been established. - if self._start_connect is None: - return self._read - return max(0, min(self.total - self.get_connect_duration(), self._read)) - elif self.total is not None and self.total is not _DEFAULT_TIMEOUT: - return max(0, self.total - self.get_connect_duration()) - else: - return self.resolve_default_timeout(self._read) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/url.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/url.py deleted file mode 100644 index db057f17..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/url.py +++ /dev/null @@ -1,469 +0,0 @@ -from __future__ import annotations - -import re -import typing - -from ..exceptions import LocationParseError -from .util import to_str - -# We only want to normalize urls with an HTTP(S) scheme. -# urllib3 infers URLs without a scheme (None) to be http. -_NORMALIZABLE_SCHEMES = ("http", "https", None) - -# Almost all of these patterns were derived from the -# 'rfc3986' module: https://github.com/python-hyper/rfc3986 -_PERCENT_RE = re.compile(r"%[a-fA-F0-9]{2}") -_SCHEME_RE = re.compile(r"^(?:[a-zA-Z][a-zA-Z0-9+-]*:|/)") -_URI_RE = re.compile( - r"^(?:([a-zA-Z][a-zA-Z0-9+.-]*):)?" - r"(?://([^\\/?#]*))?" - r"([^?#]*)" - r"(?:\?([^#]*))?" - r"(?:#(.*))?$", - re.UNICODE | re.DOTALL, -) - -_IPV4_PAT = r"(?:[0-9]{1,3}\.){3}[0-9]{1,3}" -_HEX_PAT = "[0-9A-Fa-f]{1,4}" -_LS32_PAT = "(?:{hex}:{hex}|{ipv4})".format(hex=_HEX_PAT, ipv4=_IPV4_PAT) -_subs = {"hex": _HEX_PAT, "ls32": _LS32_PAT} -_variations = [ - # 6( h16 ":" ) ls32 - "(?:%(hex)s:){6}%(ls32)s", - # "::" 5( h16 ":" ) ls32 - "::(?:%(hex)s:){5}%(ls32)s", - # [ h16 ] "::" 4( h16 ":" ) ls32 - "(?:%(hex)s)?::(?:%(hex)s:){4}%(ls32)s", - # [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 - "(?:(?:%(hex)s:)?%(hex)s)?::(?:%(hex)s:){3}%(ls32)s", - # [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 - "(?:(?:%(hex)s:){0,2}%(hex)s)?::(?:%(hex)s:){2}%(ls32)s", - # [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 - "(?:(?:%(hex)s:){0,3}%(hex)s)?::%(hex)s:%(ls32)s", - # [ *4( h16 ":" ) h16 ] "::" ls32 - "(?:(?:%(hex)s:){0,4}%(hex)s)?::%(ls32)s", - # [ *5( h16 ":" ) h16 ] "::" h16 - "(?:(?:%(hex)s:){0,5}%(hex)s)?::%(hex)s", - # [ *6( h16 ":" ) h16 ] "::" - "(?:(?:%(hex)s:){0,6}%(hex)s)?::", -] - -_UNRESERVED_PAT = r"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._\-~" -_IPV6_PAT = "(?:" + "|".join([x % _subs for x in _variations]) + ")" -_ZONE_ID_PAT = "(?:%25|%)(?:[" + _UNRESERVED_PAT + "]|%[a-fA-F0-9]{2})+" -_IPV6_ADDRZ_PAT = r"\[" + _IPV6_PAT + r"(?:" + _ZONE_ID_PAT + r")?\]" -_REG_NAME_PAT = r"(?:[^\[\]%:/?#]|%[a-fA-F0-9]{2})*" -_TARGET_RE = re.compile(r"^(/[^?#]*)(?:\?([^#]*))?(?:#.*)?$") - -_IPV4_RE = re.compile("^" + _IPV4_PAT + "$") -_IPV6_RE = re.compile("^" + _IPV6_PAT + "$") -_IPV6_ADDRZ_RE = re.compile("^" + _IPV6_ADDRZ_PAT + "$") -_BRACELESS_IPV6_ADDRZ_RE = re.compile("^" + _IPV6_ADDRZ_PAT[2:-2] + "$") -_ZONE_ID_RE = re.compile("(" + _ZONE_ID_PAT + r")\]$") - -_HOST_PORT_PAT = ("^(%s|%s|%s)(?::0*?(|0|[1-9][0-9]{0,4}))?$") % ( - _REG_NAME_PAT, - _IPV4_PAT, - _IPV6_ADDRZ_PAT, -) -_HOST_PORT_RE = re.compile(_HOST_PORT_PAT, re.UNICODE | re.DOTALL) - -_UNRESERVED_CHARS = set( - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789._-~" -) -_SUB_DELIM_CHARS = set("!$&'()*+,;=") -_USERINFO_CHARS = _UNRESERVED_CHARS | _SUB_DELIM_CHARS | {":"} -_PATH_CHARS = _USERINFO_CHARS | {"@", "/"} -_QUERY_CHARS = _FRAGMENT_CHARS = _PATH_CHARS | {"?"} - - -class Url( - typing.NamedTuple( - "Url", - [ - ("scheme", typing.Optional[str]), - ("auth", typing.Optional[str]), - ("host", typing.Optional[str]), - ("port", typing.Optional[int]), - ("path", typing.Optional[str]), - ("query", typing.Optional[str]), - ("fragment", typing.Optional[str]), - ], - ) -): - """ - Data structure for representing an HTTP URL. Used as a return value for - :func:`parse_url`. Both the scheme and host are normalized as they are - both case-insensitive according to RFC 3986. - """ - - def __new__( # type: ignore[no-untyped-def] - cls, - scheme: str | None = None, - auth: str | None = None, - host: str | None = None, - port: int | None = None, - path: str | None = None, - query: str | None = None, - fragment: str | None = None, - ): - if path and not path.startswith("/"): - path = "/" + path - if scheme is not None: - scheme = scheme.lower() - return super().__new__(cls, scheme, auth, host, port, path, query, fragment) - - @property - def hostname(self) -> str | None: - """For backwards-compatibility with urlparse. We're nice like that.""" - return self.host - - @property - def request_uri(self) -> str: - """Absolute path including the query string.""" - uri = self.path or "/" - - if self.query is not None: - uri += "?" + self.query - - return uri - - @property - def authority(self) -> str | None: - """ - Authority component as defined in RFC 3986 3.2. - This includes userinfo (auth), host and port. - - i.e. - userinfo@host:port - """ - userinfo = self.auth - netloc = self.netloc - if netloc is None or userinfo is None: - return netloc - else: - return f"{userinfo}@{netloc}" - - @property - def netloc(self) -> str | None: - """ - Network location including host and port. - - If you need the equivalent of urllib.parse's ``netloc``, - use the ``authority`` property instead. - """ - if self.host is None: - return None - if self.port: - return f"{self.host}:{self.port}" - return self.host - - @property - def url(self) -> str: - """ - Convert self into a url - - This function should more or less round-trip with :func:`.parse_url`. The - returned url may not be exactly the same as the url inputted to - :func:`.parse_url`, but it should be equivalent by the RFC (e.g., urls - with a blank port will have : removed). - - Example: - - .. code-block:: python - - import urllib3 - - U = urllib3.util.parse_url("https://google.com/mail/") - - print(U.url) - # "https://google.com/mail/" - - print( urllib3.util.Url("https", "username:password", - "host.com", 80, "/path", "query", "fragment" - ).url - ) - # "https://username:password@host.com:80/path?query#fragment" - """ - scheme, auth, host, port, path, query, fragment = self - url = "" - - # We use "is not None" we want things to happen with empty strings (or 0 port) - if scheme is not None: - url += scheme + "://" - if auth is not None: - url += auth + "@" - if host is not None: - url += host - if port is not None: - url += ":" + str(port) - if path is not None: - url += path - if query is not None: - url += "?" + query - if fragment is not None: - url += "#" + fragment - - return url - - def __str__(self) -> str: - return self.url - - -@typing.overload -def _encode_invalid_chars( - component: str, allowed_chars: typing.Container[str] -) -> str: # Abstract - ... - - -@typing.overload -def _encode_invalid_chars( - component: None, allowed_chars: typing.Container[str] -) -> None: # Abstract - ... - - -def _encode_invalid_chars( - component: str | None, allowed_chars: typing.Container[str] -) -> str | None: - """Percent-encodes a URI component without reapplying - onto an already percent-encoded component. - """ - if component is None: - return component - - component = to_str(component) - - # Normalize existing percent-encoded bytes. - # Try to see if the component we're encoding is already percent-encoded - # so we can skip all '%' characters but still encode all others. - component, percent_encodings = _PERCENT_RE.subn( - lambda match: match.group(0).upper(), component - ) - - uri_bytes = component.encode("utf-8", "surrogatepass") - is_percent_encoded = percent_encodings == uri_bytes.count(b"%") - encoded_component = bytearray() - - for i in range(0, len(uri_bytes)): - # Will return a single character bytestring - byte = uri_bytes[i : i + 1] - byte_ord = ord(byte) - if (is_percent_encoded and byte == b"%") or ( - byte_ord < 128 and byte.decode() in allowed_chars - ): - encoded_component += byte - continue - encoded_component.extend(b"%" + (hex(byte_ord)[2:].encode().zfill(2).upper())) - - return encoded_component.decode() - - -def _remove_path_dot_segments(path: str) -> str: - # See http://tools.ietf.org/html/rfc3986#section-5.2.4 for pseudo-code - segments = path.split("/") # Turn the path into a list of segments - output = [] # Initialize the variable to use to store output - - for segment in segments: - # '.' is the current directory, so ignore it, it is superfluous - if segment == ".": - continue - # Anything other than '..', should be appended to the output - if segment != "..": - output.append(segment) - # In this case segment == '..', if we can, we should pop the last - # element - elif output: - output.pop() - - # If the path starts with '/' and the output is empty or the first string - # is non-empty - if path.startswith("/") and (not output or output[0]): - output.insert(0, "") - - # If the path starts with '/.' or '/..' ensure we add one more empty - # string to add a trailing '/' - if path.endswith(("/.", "/..")): - output.append("") - - return "/".join(output) - - -@typing.overload -def _normalize_host(host: None, scheme: str | None) -> None: ... - - -@typing.overload -def _normalize_host(host: str, scheme: str | None) -> str: ... - - -def _normalize_host(host: str | None, scheme: str | None) -> str | None: - if host: - if scheme in _NORMALIZABLE_SCHEMES: - is_ipv6 = _IPV6_ADDRZ_RE.match(host) - if is_ipv6: - # IPv6 hosts of the form 'a::b%zone' are encoded in a URL as - # such per RFC 6874: 'a::b%25zone'. Unquote the ZoneID - # separator as necessary to return a valid RFC 4007 scoped IP. - match = _ZONE_ID_RE.search(host) - if match: - start, end = match.span(1) - zone_id = host[start:end] - - if zone_id.startswith("%25") and zone_id != "%25": - zone_id = zone_id[3:] - else: - zone_id = zone_id[1:] - zone_id = _encode_invalid_chars(zone_id, _UNRESERVED_CHARS) - return f"{host[:start].lower()}%{zone_id}{host[end:]}" - else: - return host.lower() - elif not _IPV4_RE.match(host): - return to_str( - b".".join([_idna_encode(label) for label in host.split(".")]), - "ascii", - ) - return host - - -def _idna_encode(name: str) -> bytes: - if not name.isascii(): - try: - import idna - except ImportError: - raise LocationParseError( - "Unable to parse URL without the 'idna' module" - ) from None - - try: - return idna.encode(name.lower(), strict=True, std3_rules=True) - except idna.IDNAError: - raise LocationParseError( - f"Name '{name}' is not a valid IDNA label" - ) from None - - return name.lower().encode("ascii") - - -def _encode_target(target: str) -> str: - """Percent-encodes a request target so that there are no invalid characters - - Pre-condition for this function is that 'target' must start with '/'. - If that is the case then _TARGET_RE will always produce a match. - """ - match = _TARGET_RE.match(target) - if not match: # Defensive: - raise LocationParseError(f"{target!r} is not a valid request URI") - - path, query = match.groups() - encoded_target = _encode_invalid_chars(path, _PATH_CHARS) - if query is not None: - query = _encode_invalid_chars(query, _QUERY_CHARS) - encoded_target += "?" + query - return encoded_target - - -def parse_url(url: str) -> Url: - """ - Given a url, return a parsed :class:`.Url` namedtuple. Best-effort is - performed to parse incomplete urls. Fields not provided will be None. - This parser is RFC 3986 and RFC 6874 compliant. - - The parser logic and helper functions are based heavily on - work done in the ``rfc3986`` module. - - :param str url: URL to parse into a :class:`.Url` namedtuple. - - Partly backwards-compatible with :mod:`urllib.parse`. - - Example: - - .. code-block:: python - - import urllib3 - - print( urllib3.util.parse_url('http://google.com/mail/')) - # Url(scheme='http', host='google.com', port=None, path='/mail/', ...) - - print( urllib3.util.parse_url('google.com:80')) - # Url(scheme=None, host='google.com', port=80, path=None, ...) - - print( urllib3.util.parse_url('/foo?bar')) - # Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...) - """ - if not url: - # Empty - return Url() - - source_url = url - if not _SCHEME_RE.search(url): - url = "//" + url - - scheme: str | None - authority: str | None - auth: str | None - host: str | None - port: str | None - port_int: int | None - path: str | None - query: str | None - fragment: str | None - - try: - scheme, authority, path, query, fragment = _URI_RE.match(url).groups() # type: ignore[union-attr] - normalize_uri = scheme is None or scheme.lower() in _NORMALIZABLE_SCHEMES - - if scheme: - scheme = scheme.lower() - - if authority: - auth, _, host_port = authority.rpartition("@") - auth = auth or None - host, port = _HOST_PORT_RE.match(host_port).groups() # type: ignore[union-attr] - if auth and normalize_uri: - auth = _encode_invalid_chars(auth, _USERINFO_CHARS) - if port == "": - port = None - else: - auth, host, port = None, None, None - - if port is not None: - port_int = int(port) - if not (0 <= port_int <= 65535): - raise LocationParseError(url) - else: - port_int = None - - host = _normalize_host(host, scheme) - - if normalize_uri and path: - path = _remove_path_dot_segments(path) - path = _encode_invalid_chars(path, _PATH_CHARS) - if normalize_uri and query: - query = _encode_invalid_chars(query, _QUERY_CHARS) - if normalize_uri and fragment: - fragment = _encode_invalid_chars(fragment, _FRAGMENT_CHARS) - - except (ValueError, AttributeError) as e: - raise LocationParseError(source_url) from e - - # For the sake of backwards compatibility we put empty - # string values for path if there are any defined values - # beyond the path in the URL. - # TODO: Remove this when we break backwards compatibility. - if not path: - if query is not None or fragment is not None: - path = "" - else: - path = None - - return Url( - scheme=scheme, - auth=auth, - host=host, - port=port_int, - path=path, - query=query, - fragment=fragment, - ) diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/util.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/util.py deleted file mode 100644 index 35c77e40..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/util.py +++ /dev/null @@ -1,42 +0,0 @@ -from __future__ import annotations - -import typing -from types import TracebackType - - -def to_bytes( - x: str | bytes, encoding: str | None = None, errors: str | None = None -) -> bytes: - if isinstance(x, bytes): - return x - elif not isinstance(x, str): - raise TypeError(f"not expecting type {type(x).__name__}") - if encoding or errors: - return x.encode(encoding or "utf-8", errors=errors or "strict") - return x.encode() - - -def to_str( - x: str | bytes, encoding: str | None = None, errors: str | None = None -) -> str: - if isinstance(x, str): - return x - elif not isinstance(x, bytes): - raise TypeError(f"not expecting type {type(x).__name__}") - if encoding or errors: - return x.decode(encoding or "utf-8", errors=errors or "strict") - return x.decode() - - -def reraise( - tp: type[BaseException] | None, - value: BaseException, - tb: TracebackType | None = None, -) -> typing.NoReturn: - try: - if value.__traceback__ is not tb: - raise value.with_traceback(tb) - raise value - finally: - value = None # type: ignore[assignment] - tb = None diff --git a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/wait.py b/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/wait.py deleted file mode 100644 index aeca0c7a..00000000 --- a/gnx-react/venv/lib/python3.12/site-packages/urllib3/util/wait.py +++ /dev/null @@ -1,124 +0,0 @@ -from __future__ import annotations - -import select -import socket -from functools import partial - -__all__ = ["wait_for_read", "wait_for_write"] - - -# How should we wait on sockets? -# -# There are two types of APIs you can use for waiting on sockets: the fancy -# modern stateful APIs like epoll/kqueue, and the older stateless APIs like -# select/poll. The stateful APIs are more efficient when you have a lots of -# sockets to keep track of, because you can set them up once and then use them -# lots of times. But we only ever want to wait on a single socket at a time -# and don't want to keep track of state, so the stateless APIs are actually -# more efficient. So we want to use select() or poll(). -# -# Now, how do we choose between select() and poll()? On traditional Unixes, -# select() has a strange calling convention that makes it slow, or fail -# altogether, for high-numbered file descriptors. The point of poll() is to fix -# that, so on Unixes, we prefer poll(). -# -# On Windows, there is no poll() (or at least Python doesn't provide a wrapper -# for it), but that's OK, because on Windows, select() doesn't have this -# strange calling convention; plain select() works fine. -# -# So: on Windows we use select(), and everywhere else we use poll(). We also -# fall back to select() in case poll() is somehow broken or missing. - - -def select_wait_for_socket( - sock: socket.socket, - read: bool = False, - write: bool = False, - timeout: float | None = None, -) -> bool: - if not read and not write: - raise RuntimeError("must specify at least one of read=True, write=True") - rcheck = [] - wcheck = [] - if read: - rcheck.append(sock) - if write: - wcheck.append(sock) - # When doing a non-blocking connect, most systems signal success by - # marking the socket writable. Windows, though, signals success by marked - # it as "exceptional". We paper over the difference by checking the write - # sockets for both conditions. (The stdlib selectors module does the same - # thing.) - fn = partial(select.select, rcheck, wcheck, wcheck) - rready, wready, xready = fn(timeout) - return bool(rready or wready or xready) - - -def poll_wait_for_socket( - sock: socket.socket, - read: bool = False, - write: bool = False, - timeout: float | None = None, -) -> bool: - if not read and not write: - raise RuntimeError("must specify at least one of read=True, write=True") - mask = 0 - if read: - mask |= select.POLLIN - if write: - mask |= select.POLLOUT - poll_obj = select.poll() - poll_obj.register(sock, mask) - - # For some reason, poll() takes timeout in milliseconds - def do_poll(t: float | None) -> list[tuple[int, int]]: - if t is not None: - t *= 1000 - return poll_obj.poll(t) - - return bool(do_poll(timeout)) - - -def _have_working_poll() -> bool: - # Apparently some systems have a select.poll that fails as soon as you try - # to use it, either due to strange configuration or broken monkeypatching - # from libraries like eventlet/greenlet. - try: - poll_obj = select.poll() - poll_obj.poll(0) - except (AttributeError, OSError): - return False - else: - return True - - -def wait_for_socket( - sock: socket.socket, - read: bool = False, - write: bool = False, - timeout: float | None = None, -) -> bool: - # We delay choosing which implementation to use until the first time we're - # called. We could do it at import time, but then we might make the wrong - # decision if someone goes wild with monkeypatching select.poll after - # we're imported. - global wait_for_socket - if _have_working_poll(): - wait_for_socket = poll_wait_for_socket - elif hasattr(select, "select"): - wait_for_socket = select_wait_for_socket - return wait_for_socket(sock, read, write, timeout) - - -def wait_for_read(sock: socket.socket, timeout: float | None = None) -> bool: - """Waits for reading to be available on a given socket. - Returns True if the socket is readable, or False if the timeout expired. - """ - return wait_for_socket(sock, read=True, timeout=timeout) - - -def wait_for_write(sock: socket.socket, timeout: float | None = None) -> bool: - """Waits for writing to be available on a given socket. - Returns True if the socket is readable, or False if the timeout expired. - """ - return wait_for_socket(sock, write=True, timeout=timeout) diff --git a/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/__init__.cpython-312.pyc index 35744f59326db8638d91769238f09426a726801d..566db23c08a60fca9f842c2f7273976b17414e9c 100644 GIT binary patch delta 52 zcmZ3*wTX-SG%qg~0}ym>y1J436SGv9enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`J4a GX+{9AWDo)X delta 44 ycmdnQwTg@TG%qg~0}#}{xw4V_6SI(?enx(7s(yN2g}zH_adt_5!Dew5X+{7yQVswB diff --git a/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/abstract.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/abstract.cpython-312.pyc index 7c7cafa1e0dda20ddb0eb88940a094c7a21d3e07..83783b65949a5ed0e07071e934972973f42f721e 100644 GIT binary patch delta 52 zcmca3_e75SG%qg~0}ym>y1J2Dk4Y*_KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|p$z GATI#1*$@Q) delta 44 ycmaDNcSnx diff --git a/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/funtools.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/funtools.cpython-312.pyc index 52a61e74db2efdf64319a640ba9bb75e0c7083d7..7f9ef64d5c2466d95556dadcb3a9cf0b5f1b91ec 100644 GIT binary patch delta 52 zcmZ3cuug&dG%qg~0}ym>y1J437Nb;{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8_At G`g{Pkz7Y}t delta 44 ycmZ3duuOsbG%qg~0}#}{xw4V_7Nd}#enx(7s(yN2g}zH_adt_5!RG&r`g{OBTn`Wc diff --git a/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/promises.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/promises.cpython-312.pyc index ec37bf924e7eb7853307bff9bb8dda4263180fdd..78528c7d3b3e49baa2ed2325c2aeac584c4cd4da 100644 GIT binary patch delta 52 zcmaFs{?(oPG%qg~0}ym>y1J43FPBu9enx(7s(yN2g}zH_adt_5fxf$6gl@R2(`G5| G%Mt+Q4-xeM delta 44 ycmezB{??uQG%qg~0}#}{xw4V_FPD&?enx(7s(yN2g}zH_adt_5!Dc1y%Mt)(Z4dJR diff --git a/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/synchronization.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/synchronization.cpython-312.pyc index 36a8335227182478bf17025e5c856dd6bc45a564..7538f05e69595915278606c44a9ea517744081bb 100644 GIT binary patch delta 52 zcmaE>^i_%bG%qg~0}ym>y1J430Gm{-enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8@Nu G6Sx4~ diff --git a/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/utils.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/vine/__pycache__/utils.cpython-312.pyc index f287c91b3333a02be8eead6c90befd0cc64883bf..cdd0dad7c05d51abe5b01ac279b2cc5f74a95cc7 100644 GIT binary patch delta 52 zcmdnSxsQ|kG%qg~0}ym>y1J2j1*253enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?a$ GADIBH(GgPs delta 44 ycmdnTxs8+iG%qg~0}#}{xw4Ua1*4F+enx(7s(yN2g}zH_adt_5!RE7!ADI9*hYwKz diff --git a/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/__init__.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/__init__.cpython-312.pyc index bf1ece60e29a09f40877eba319bbc904520caa99..b00a7ed0ec265d5ff0059b1bce2a5b4121d795ae 100644 GIT binary patch delta 51 zcmdnPa)gEZG%qg~0}ym>y1J2j8lzOCenx(7s(yN2g}zH_adt_5fxf$6gl@R2)8x&J FodB9J5Ul_J delta 43 xcmX@YvWJEHG%qg~0}#}_xw4Ua8lzC4enx(7s(yN2g}zH_adt_5!Q|bHod6~p4yphE diff --git a/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_vs15.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_vs15.cpython-312.pyc index 34639a4f58ad184f8d0ba120e5652c9bfefcdb2e..42ebc3ba8d65ebffd0072646145e0646078cad32 100644 GIT binary patch delta 51 zcmaFF{fe9WG%qg~0}ym>y1J3ugHuxS FEdZf*5NQAa delta 43 xcmaFG{fL|UG%qg~0}#}_xw4VlgHNEdVUg4rTxV diff --git a/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_vs16.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_vs16.cpython-312.pyc index d6ead6753e3bbfadfda99af265032510ca00b47d..1efca9f5f1b6e178b961783fc0144cf55b2f14fc 100644 GIT binary patch delta 51 zcmaFG`-zwPG%qg~0}ym>y1J1&fK4h|KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>u-G FEdZvR5RU)= delta 43 xcmeyw`-+$QG%qg~0}#}_xw4TvfK4b^KO;XkRX;tiLf<8|IJ+djU~(y2EdVhN4vYW* diff --git a/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_wide.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_wide.cpython-312.pyc index 66641c58c2ede6568b40350e255326fd09f953fd..22e618630f414f9e7497da63739bf2691090d2ac 100644 GIT binary patch delta 52 zcmZqh>G0t`&CAQh00f(055K&MwI>(0BKX&<%HW+H9_J Gk`Vx+_z-pg delta 44 ycmeD1Y4G7b&CAQh00cE}u59F%QV|N)&&bbB)lbi>(055K&MwI>*le$Ik`Vwd*A8<4 diff --git a/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_zero.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/table_zero.cpython-312.pyc index 2504dd302a949517ae8a1ee3388ed212da25296c..f72bdb121cf27ed7797b4e3db22dc4f82d5fadbd 100644 GIT binary patch delta 54 zcmaEUk@5XSM()$Ryj%=G(7EaAM(!(VQqlSu`MIh3>3J3UE~&-YCHV#V?tT%v;jT`b JKc;M(!(VLc#hO`MIh3>3J3UE~&-YCHV!Lf2Mt71OT7{ B5^?|l diff --git a/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/unicode_versions.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/unicode_versions.cpython-312.pyc index 7cd33ca83f5c6f111d06aee44165c6eefb85aa06..e5806beebe4fd8c03a9a299afb2b40201e7048d6 100644 GIT binary patch delta 51 zcmZ3%zJZy1J439FtU{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8yAo FdjXuR5jg+= delta 43 xcmdnMzJi_mG%qg~0}#}_xw4V_9FtI_enx(7s(yN2g}zH_adt_5!Q{_OdjTh&4>kY* diff --git a/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/wcwidth.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/wcwidth/__pycache__/wcwidth.cpython-312.pyc index c77eb4ffc284da579b3dfa3ad5dfd91bc1f736d5..27f9222752550a6fcb683f517cd4a1d5329c317c 100644 GIT binary patch delta 52 zcmcZ_dN-8&G%qg~0}ym>y1J2j4!=}{enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?K0 GGSUFo6%lp- delta 44 ycmcZ`dNq{$G%qg~0}#}_xw4Ua4!=-pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v^kb( Gz7+t?auHkr delta 44 ycmZpv`cuh$nwOW00SIQky|R(pfl0_uKO;XkRX;tiLf<8|IJ+djU~?+dd@BG|Jr8yO diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/composer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/composer.cpython-312.pyc index 0f6f978b5aaf12190b2de0f81e5308779dceb1cb..f45b4d7c95884e96d2dc93ff5f573afbc3d3ce82 100644 GIT binary patch delta 52 zcmexq)M(6onwOW00SLM_UERpd$tV@3pOK%Ns-K=$q3@DfoL!P%pzrP%p&Rb%v{{WY GSONg2d=KgX delta 44 ycmZoP{%OR0nwOW00SIQky|R&;lTpY|KO;XkRX;tiLf<8|IJ+djV6z@$umk`#rw#-F diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/constructor.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/constructor.cpython-312.pyc index a3e1e02768a1e4d96ed5e1139c3390b755e2e431..04a6190382f753ae752ea784b75d3283decb86fc 100644 GIT binary patch delta 54 zcmaDff$7x*ChpU`yj%=G(6#C6M(#KcsYv~d{M=Oi^t=jvm(=3ylKcXFcfSbTa95|z I)f~_30q}_uu>b%7 delta 46 zcmaDgf$7l%ChpU`yj%=GF!Sw|jofh@LV@}j`MIh3>3J3UE~&-YCHV!Ln>n7>0|0b7 B5X%4n diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/cyaml.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/cyaml.cpython-312.pyc index e267ade7d8a1af8a112980181c179105de6ca0dc..26f5712b1cdf760e99d9226f61ab163695d12470 100644 GIT binary patch delta 52 zcmeBEnWn;hnwOW00SLM_UERoin@K8IKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4Z;z GF@6B9p%Byn delta 43 xcmbQH(x<|GnwOW00SIQky|R(}Hj|LIenx(7s(yN2g}zH_adt_5!6s%gegG*N4ekH{ diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/dumper.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/dumper.cpython-312.pyc index b1620c8f38cdd9eeec745c5a5c6fa370cf577af5..4ae8f235c99e9057e2074a7cc573fbe32774150d 100644 GIT binary patch delta 52 zcmbOwyhxb)G%qg~0}ym=y1J3uj#(;1KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>&BQ GJsSX)0}rzR delta 44 ycmZ1^JWH7SG%qg~0}#x7du1cH9kY;+enx(7s(yN2g}zH_adt_5!RBOUdo}r4-7i8n+|_Bb I2IHwi0OlSNF8}}l delta 46 zcmey>&itvJnfo*^FBbz4%zS%gBR4mrkgtA5er~FMdR~RTOKNd;Nq)g*1IAN_0Bk=H ANdN!< diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/error.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/error.cpython-312.pyc index 424cc92abeeacbd55b4a13d32b8734feb4a343cd..330caa0a0a8feea1725ba3860ecd75abac082be3 100644 GIT binary patch delta 52 zcmZ3XxIvNoG%qg~0}ym=y1J2j1*253enx(7s(yN2g}zH_adt_5fxf$6gl@R2)8?a$ GkNE(xv=L?i delta 44 zcmdm>xI&TpG%qg~0}#x7du1c{3PvGs{fzwFRQ>e43VoN<;_QgeL|Z1G%qg~0}ym=y1J2@omnbGKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX|oFR G94-K$+YkZ( delta 44 ycmX>heL$M~G%qg~0}#x7du1axJF}3Fenx(7s(yN2g}zH_adt_5!Db!iIa~lS91a`+ diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/nodes.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/nodes.cpython-312.pyc index d058be6e8b767d9573f16b20138c08b5ab631302..ab14e7aa7d4c007ff540a0b5f141caa530a32bd0 100644 GIT binary patch delta 52 zcmbO$xKxn)G%qg~0}ym=y1J3OkWngFKO;XkRX;tiLf<8|IJ+djK;PXjLO0yiX>%VV GKRW=OIS=Om delta 44 ycmZ1~I9HJSG%qg~0}#x7du1bcA)}DDenx(7s(yN2g}zH_adt_5!RBd<{OkZN5)J_X diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/parser.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/parser.cpython-312.pyc index 1d43f0aec75068e5217b126b28e7350b82c7d00c..9e789958964101f91a027af3ac95c9b45cc14134 100644 GIT binary patch delta 54 zcmZoW$k=y~k^3|+FBbz4bZxr2k(-}UDnvgcKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_Bb I4r5e20MC>V`v3p{ delta 46 zcmeA>$k=v}k^3|+FBbz4%zS%gBR4;zkdJ;wer~FMdR~RTOKNd;Nq)g*6UL}`09f4* A6#xJL diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/reader.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/reader.cpython-312.pyc index caa5c14318d25d30793faa423c0c4d89d48c90dd..3b6eddc794ffe99ad98fba3b0382385791946baa 100644 GIT binary patch delta 52 zcmeBho#4uSnwOW00SLM_UERpNf>A0&KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4cIW G!wLYh^$}qJ delta 44 ycmbQ>+TqH5nwOW00SIQky|R&e1*4FUenx(7s(yN2g}zH_adt_5!RE7!hZO)n9uIo} diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/representer.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/representer.cpython-312.pyc index 660914f906f0c603d9fcf2df1414b25dd677b357..f8dfb01aaea9f52e798e8c584adbf28c5a70729e 100644 GIT binary patch delta 54 zcmbQ(!Z@>qk^3|+FBbz4bZxr2k-LjcDpEfqKQ~oBJ+DIFCAB!aB)>r4-7i8n+|_CG Ia<(jM0M8i_hyVZp delta 46 zcmbQ)!Z@*ok^3|+FBbz4%zS%gBX<{@P@sNBer~FMdR~RTOKNd;Nq)iR^=w(z09RTM Aq5uE@ diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/resolver.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/resolver.cpython-312.pyc index 419eba945d143699579a3202ce77726de482df30..01e77409aac59c22ad7d56e33ede59552929dfa0 100644 GIT binary patch delta 52 zcmaFp_R@{}G%qg~0}ym=y1J43C$m(Tenx(7s(yN2g}zH_adt_5fxf$6gl@R2(`GRi GZ+QUTZ4pHP delta 44 ycmaFq_Rx*{G%qg~0}#x7du1c{Pi7%M{fzwFRQ>e43VoN<;_Qr4-7i8n+|_Bb I9%I)*0L|$Uf&c&j delta 46 zcmX@m%DkhMnfo*^FBbz4%zS%gBex)J+2oI6~ delta 44 ycmdmOu-Sn7G%qg~0}#x7du1axJEKs5enx(7s(yN2g}zH_adt_5!DbysesKUYxecrU diff --git a/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/tokens.cpython-312.pyc b/gnx-react/venv/lib/python3.12/site-packages/yaml/__pycache__/tokens.cpython-312.pyc index 21b59fef6098a58954151af2df372dc91c7346af..a11652c377cab17919c0d2bfe188a799df319b66 100644 GIT binary patch delta 52 zcmeCzovzD$nwOW00SLM_UERn%k4Y*-KO;XkRX;tiLf<8|IJ+djK;PXjLO0yiY4dKT GE5ZP)91$@9 delta 44 ycmbQP+po)gnwOW00SIQky|R&e9+Qxdenx(7s(yN2g}zH_adt_5!REtESA+pLoexU@ diff --git a/gnx-react/venv/pyvenv.cfg b/gnx-react/venv/pyvenv.cfg index 3e6a638e..02b147d9 100644 --- a/gnx-react/venv/pyvenv.cfg +++ b/gnx-react/venv/pyvenv.cfg @@ -2,4 +2,4 @@ home = /usr/bin include-system-site-packages = false version = 3.12.3 executable = /usr/bin/python3.12 -command = /usr/bin/python3 -m venv /home/gnx/Desktop/gnx-react/venv +command = /usr/bin/python3 -m venv /home/gnx/Desktop/GNX-WEB/gnx-react/venv