From 9852ea7e4cd06b033f9c9e36b765bda7f4acfb08 Mon Sep 17 00:00:00 2001 From: Sukal Date: Thu, 17 Aug 2023 11:37:06 +0200 Subject: [PATCH] Saved Obstical Sorter in git --- Color_Sorting/.venv/bin/Activate.ps1 | 247 + Color_Sorting/.venv/bin/activate | 69 + Color_Sorting/.venv/bin/activate.csh | 26 + Color_Sorting/.venv/bin/activate.fish | 66 + Color_Sorting/.venv/bin/pip | 8 + Color_Sorting/.venv/bin/pip3 | 8 + Color_Sorting/.venv/bin/pip3.10 | 8 + Color_Sorting/.venv/bin/pip3.11 | 8 + Color_Sorting/.venv/bin/python | 1 + Color_Sorting/.venv/bin/python3 | 1 + Color_Sorting/.venv/bin/python3.10 | 1 + .../site-packages/PIL/BdfFontFile.py | 122 + .../site-packages/PIL/BlpImagePlugin.py | 472 + .../site-packages/PIL/BmpImagePlugin.py | 471 + .../site-packages/PIL/BufrStubImagePlugin.py | 73 + .../site-packages/PIL/ContainerIO.py | 120 + .../site-packages/PIL/CurImagePlugin.py | 75 + .../site-packages/PIL/DcxImagePlugin.py | 79 + .../site-packages/PIL/DdsImagePlugin.py | 291 + .../site-packages/PIL/EpsImagePlugin.py | 466 + .../python3.10/site-packages/PIL/ExifTags.py | 380 + .../site-packages/PIL/FitsImagePlugin.py | 73 + .../site-packages/PIL/FliImagePlugin.py | 171 + .../python3.10/site-packages/PIL/FontFile.py | 110 + .../site-packages/PIL/FpxImagePlugin.py | 253 + .../site-packages/PIL/FtexImagePlugin.py | 113 + .../site-packages/PIL/GbrImagePlugin.py | 102 + .../site-packages/PIL/GdImageFile.py | 97 + .../site-packages/PIL/GifImagePlugin.py | 1064 ++ .../site-packages/PIL/GimpGradientFile.py | 137 + .../site-packages/PIL/GimpPaletteFile.py | 56 + .../site-packages/PIL/GribStubImagePlugin.py | 73 + .../site-packages/PIL/Hdf5StubImagePlugin.py | 73 + .../site-packages/PIL/IcnsImagePlugin.py | 399 + .../site-packages/PIL/IcoImagePlugin.py | 358 + .../site-packages/PIL/ImImagePlugin.py | 371 + .../lib/python3.10/site-packages/PIL/Image.py | 3910 ++++++++ .../site-packages/PIL/ImageChops.py | 303 + .../python3.10/site-packages/PIL/ImageCms.py | 1009 ++ .../site-packages/PIL/ImageColor.py | 313 + .../python3.10/site-packages/PIL/ImageDraw.py | 1038 ++ .../site-packages/PIL/ImageDraw2.py | 193 + .../site-packages/PIL/ImageEnhance.py | 103 + .../python3.10/site-packages/PIL/ImageFile.py | 773 ++ .../site-packages/PIL/ImageFilter.py | 550 ++ .../python3.10/site-packages/PIL/ImageFont.py | 997 ++ .../python3.10/site-packages/PIL/ImageGrab.py | 169 + .../python3.10/site-packages/PIL/ImageMath.py | 263 + .../python3.10/site-packages/PIL/ImageMode.py | 90 + .../site-packages/PIL/ImageMorph.py | 254 + .../python3.10/site-packages/PIL/ImageOps.py | 628 ++ .../site-packages/PIL/ImagePalette.py | 266 + .../python3.10/site-packages/PIL/ImagePath.py | 19 + .../python3.10/site-packages/PIL/ImageQt.py | 216 + .../site-packages/PIL/ImageSequence.py | 76 + .../python3.10/site-packages/PIL/ImageShow.py | 323 + .../python3.10/site-packages/PIL/ImageStat.py | 148 + .../python3.10/site-packages/PIL/ImageTk.py | 283 + .../site-packages/PIL/ImageTransform.py | 102 + .../python3.10/site-packages/PIL/ImageWin.py | 230 + .../site-packages/PIL/ImtImagePlugin.py | 101 + .../site-packages/PIL/IptcImagePlugin.py | 230 + .../site-packages/PIL/Jpeg2KImagePlugin.py | 399 + .../site-packages/PIL/JpegImagePlugin.py | 849 ++ .../site-packages/PIL/JpegPresets.py | 240 + .../site-packages/PIL/McIdasImagePlugin.py | 75 + .../site-packages/PIL/MicImagePlugin.py | 103 + .../site-packages/PIL/MpegImagePlugin.py | 82 + .../site-packages/PIL/MpoImagePlugin.py | 197 + .../site-packages/PIL/MspImagePlugin.py | 194 + .../python3.10/site-packages/PIL/PSDraw.py | 229 + .../site-packages/PIL/PaletteFile.py | 51 + .../site-packages/PIL/PalmImagePlugin.py | 225 + .../site-packages/PIL/PcdImagePlugin.py | 62 + .../site-packages/PIL/PcfFontFile.py | 256 + .../site-packages/PIL/PcxImagePlugin.py | 221 + .../site-packages/PIL/PdfImagePlugin.py | 284 + .../python3.10/site-packages/PIL/PdfParser.py | 996 ++ .../site-packages/PIL/PixarImagePlugin.py | 69 + .../site-packages/PIL/PngImagePlugin.py | 1456 +++ .../site-packages/PIL/PpmImagePlugin.py | 347 + .../site-packages/PIL/PsdImagePlugin.py | 303 + .../python3.10/site-packages/PIL/PyAccess.py | 363 + .../site-packages/PIL/QoiImagePlugin.py | 105 + .../site-packages/PIL/SgiImagePlugin.py | 231 + .../site-packages/PIL/SpiderImagePlugin.py | 318 + .../site-packages/PIL/SunImagePlugin.py | 139 + .../lib/python3.10/site-packages/PIL/TarIO.py | 66 + .../site-packages/PIL/TgaImagePlugin.py | 255 + .../site-packages/PIL/TiffImagePlugin.py | 2163 +++++ .../python3.10/site-packages/PIL/TiffTags.py | 560 ++ .../site-packages/PIL/WalImageFile.py | 123 + .../site-packages/PIL/WebPImagePlugin.py | 366 + .../site-packages/PIL/WmfImagePlugin.py | 178 + .../site-packages/PIL/XVThumbImagePlugin.py | 78 + .../site-packages/PIL/XbmImagePlugin.py | 94 + .../site-packages/PIL/XpmImagePlugin.py | 128 + .../python3.10/site-packages/PIL/__init__.py | 84 + .../python3.10/site-packages/PIL/__main__.py | 3 + .../__pycache__/BdfFontFile.cpython-310.pyc | Bin 0 -> 2514 bytes .../BlpImagePlugin.cpython-310.pyc | Bin 0 -> 12334 bytes .../BmpImagePlugin.cpython-310.pyc | Bin 0 -> 8824 bytes .../BufrStubImagePlugin.cpython-310.pyc | Bin 0 -> 1688 bytes .../__pycache__/ContainerIO.cpython-310.pyc | Bin 0 -> 2866 bytes .../CurImagePlugin.cpython-310.pyc | Bin 0 -> 1370 bytes .../DcxImagePlugin.cpython-310.pyc | Bin 0 -> 1603 bytes .../DdsImagePlugin.cpython-310.pyc | Bin 0 -> 6667 bytes .../EpsImagePlugin.cpython-310.pyc | Bin 0 -> 8683 bytes .../PIL/__pycache__/ExifTags.cpython-310.pyc | Bin 0 -> 10195 bytes .../FitsImagePlugin.cpython-310.pyc | Bin 0 -> 1644 bytes .../FliImagePlugin.cpython-310.pyc | Bin 0 -> 3600 bytes .../PIL/__pycache__/FontFile.cpython-310.pyc | Bin 0 -> 2366 bytes .../FpxImagePlugin.cpython-310.pyc | Bin 0 -> 4064 bytes .../FtexImagePlugin.cpython-310.pyc | Bin 0 -> 3716 bytes .../GbrImagePlugin.cpython-310.pyc | Bin 0 -> 1926 bytes .../__pycache__/GdImageFile.cpython-310.pyc | Bin 0 -> 2488 bytes .../GifImagePlugin.cpython-310.pyc | Bin 0 -> 19509 bytes .../GimpGradientFile.cpython-310.pyc | Bin 0 -> 3310 bytes .../GimpPaletteFile.cpython-310.pyc | Bin 0 -> 1426 bytes .../GribStubImagePlugin.cpython-310.pyc | Bin 0 -> 1685 bytes .../Hdf5StubImagePlugin.cpython-310.pyc | Bin 0 -> 1676 bytes .../IcnsImagePlugin.cpython-310.pyc | Bin 0 -> 9567 bytes .../IcoImagePlugin.cpython-310.pyc | Bin 0 -> 7667 bytes .../__pycache__/ImImagePlugin.cpython-310.pyc | Bin 0 -> 6619 bytes .../PIL/__pycache__/Image.cpython-310.pyc | Bin 0 -> 105555 bytes .../__pycache__/ImageChops.cpython-310.pyc | Bin 0 -> 6950 bytes .../PIL/__pycache__/ImageCms.cpython-310.pyc | Bin 0 -> 32431 bytes .../__pycache__/ImageColor.cpython-310.pyc | Bin 0 -> 7776 bytes .../PIL/__pycache__/ImageDraw.cpython-310.pyc | Bin 0 -> 22641 bytes .../__pycache__/ImageDraw2.cpython-310.pyc | Bin 0 -> 5837 bytes .../__pycache__/ImageEnhance.cpython-310.pyc | Bin 0 -> 3464 bytes .../PIL/__pycache__/ImageFile.cpython-310.pyc | Bin 0 -> 17233 bytes .../__pycache__/ImageFilter.cpython-310.pyc | Bin 0 -> 16232 bytes .../PIL/__pycache__/ImageFont.cpython-310.pyc | Bin 0 -> 38414 bytes .../PIL/__pycache__/ImageGrab.cpython-310.pyc | Bin 0 -> 3373 bytes .../PIL/__pycache__/ImageMath.cpython-310.pyc | Bin 0 -> 7844 bytes .../PIL/__pycache__/ImageMode.cpython-310.pyc | Bin 0 -> 2160 bytes .../__pycache__/ImageMorph.cpython-310.pyc | Bin 0 -> 7325 bytes .../PIL/__pycache__/ImageOps.cpython-310.pyc | Bin 0 -> 16908 bytes .../__pycache__/ImagePalette.cpython-310.pyc | Bin 0 -> 6859 bytes .../PIL/__pycache__/ImagePath.cpython-310.pyc | Bin 0 -> 244 bytes .../PIL/__pycache__/ImageQt.cpython-310.pyc | Bin 0 -> 4491 bytes .../__pycache__/ImageSequence.cpython-310.pyc | Bin 0 -> 2342 bytes .../PIL/__pycache__/ImageShow.cpython-310.pyc | Bin 0 -> 8444 bytes .../PIL/__pycache__/ImageStat.cpython-310.pyc | Bin 0 -> 3695 bytes .../PIL/__pycache__/ImageTk.cpython-310.pyc | Bin 0 -> 7216 bytes .../ImageTransform.cpython-310.pyc | Bin 0 -> 3501 bytes .../PIL/__pycache__/ImageWin.cpython-310.pyc | Bin 0 -> 8091 bytes .../ImtImagePlugin.cpython-310.pyc | Bin 0 -> 1391 bytes .../IptcImagePlugin.cpython-310.pyc | Bin 0 -> 4445 bytes .../Jpeg2KImagePlugin.cpython-310.pyc | Bin 0 -> 8689 bytes .../JpegImagePlugin.cpython-310.pyc | Bin 0 -> 18040 bytes .../__pycache__/JpegPresets.cpython-310.pyc | Bin 0 -> 7914 bytes .../McIdasImagePlugin.cpython-310.pyc | Bin 0 -> 1391 bytes .../MicImagePlugin.cpython-310.pyc | Bin 0 -> 2173 bytes .../MpegImagePlugin.cpython-310.pyc | Bin 0 -> 1987 bytes .../MpoImagePlugin.cpython-310.pyc | Bin 0 -> 4718 bytes .../MspImagePlugin.cpython-310.pyc | Bin 0 -> 3114 bytes .../PIL/__pycache__/PSDraw.cpython-310.pyc | Bin 0 -> 5630 bytes .../__pycache__/PaletteFile.cpython-310.pyc | Bin 0 -> 1393 bytes .../PalmImagePlugin.cpython-310.pyc | Bin 0 -> 6775 bytes .../PcdImagePlugin.cpython-310.pyc | Bin 0 -> 1198 bytes .../__pycache__/PcfFontFile.cpython-310.pyc | Bin 0 -> 5286 bytes .../PcxImagePlugin.cpython-310.pyc | Bin 0 -> 3756 bytes .../PdfImagePlugin.cpython-310.pyc | Bin 0 -> 4218 bytes .../PIL/__pycache__/PdfParser.cpython-310.pyc | Bin 0 -> 26897 bytes .../PixarImagePlugin.cpython-310.pyc | Bin 0 -> 1167 bytes .../PngImagePlugin.cpython-310.pyc | Bin 0 -> 30319 bytes .../PpmImagePlugin.cpython-310.pyc | Bin 0 -> 7324 bytes .../PsdImagePlugin.cpython-310.pyc | Bin 0 -> 4874 bytes .../PIL/__pycache__/PyAccess.cpython-310.pyc | Bin 0 -> 10254 bytes .../QoiImagePlugin.cpython-310.pyc | Bin 0 -> 3428 bytes .../SgiImagePlugin.cpython-310.pyc | Bin 0 -> 4005 bytes .../SpiderImagePlugin.cpython-310.pyc | Bin 0 -> 6636 bytes .../SunImagePlugin.cpython-310.pyc | Bin 0 -> 1937 bytes .../PIL/__pycache__/TarIO.cpython-310.pyc | Bin 0 -> 1591 bytes .../TgaImagePlugin.cpython-310.pyc | Bin 0 -> 4050 bytes .../TiffImagePlugin.cpython-310.pyc | Bin 0 -> 52204 bytes .../PIL/__pycache__/TiffTags.cpython-310.pyc | Bin 0 -> 12831 bytes .../__pycache__/WalImageFile.cpython-310.pyc | Bin 0 -> 2890 bytes .../WebPImagePlugin.cpython-310.pyc | Bin 0 -> 7538 bytes .../WmfImagePlugin.cpython-310.pyc | Bin 0 -> 3458 bytes .../XVThumbImagePlugin.cpython-310.pyc | Bin 0 -> 1459 bytes .../XbmImagePlugin.cpython-310.pyc | Bin 0 -> 2124 bytes .../XpmImagePlugin.cpython-310.pyc | Bin 0 -> 2279 bytes .../PIL/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1915 bytes .../PIL/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 233 bytes .../PIL/__pycache__/_binary.cpython-310.pyc | Bin 0 -> 2584 bytes .../__pycache__/_deprecate.cpython-310.pyc | Bin 0 -> 2073 bytes .../_tkinter_finder.cpython-310.pyc | Bin 0 -> 522 bytes .../PIL/__pycache__/_util.cpython-310.pyc | Bin 0 -> 1021 bytes .../PIL/__pycache__/_version.cpython-310.pyc | Bin 0 -> 207 bytes .../PIL/__pycache__/features.cpython-310.pyc | Bin 0 -> 8806 bytes .../python3.10/site-packages/PIL/_binary.py | 102 + .../site-packages/PIL/_deprecate.py | 69 + .../_imaging.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 710913 bytes ...imagingcms.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 47121 bytes ..._imagingft.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 77073 bytes ...magingmath.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 31344 bytes ...agingmorph.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 14992 bytes ..._imagingtk.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 14992 bytes .../site-packages/PIL/_tkinter_finder.py | 17 + .../lib/python3.10/site-packages/PIL/_util.py | 19 + .../python3.10/site-packages/PIL/_version.py | 2 + .../PIL/_webp.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 39417 bytes .../python3.10/site-packages/PIL/features.py | 329 + .../Pillow-10.0.0.dist-info/INSTALLER | 1 + .../Pillow-10.0.0.dist-info/LICENSE | 731 ++ .../Pillow-10.0.0.dist-info/METADATA | 175 + .../Pillow-10.0.0.dist-info/RECORD | 218 + .../Pillow-10.0.0.dist-info/WHEEL | 5 + .../Pillow-10.0.0.dist-info/top_level.txt | 1 + .../Pillow-10.0.0.dist-info/zip-safe | 1 + .../Pillow.libs/libXau-154567c4.so.6.0.0 | Bin 0 -> 22081 bytes .../Pillow.libs/libbrotlicommon-702ab7f8.so.1 | Bin 0 -> 140113 bytes .../libbrotlidec-7a796284.so.1.0.9 | Bin 0 -> 54001 bytes .../libfreetype-8b16add1.so.6.20.0 | Bin 0 -> 1430857 bytes .../libharfbuzz-adaef2a2.so.0.60730.0 | Bin 0 -> 3159841 bytes .../Pillow.libs/libjpeg-dab02bf4.so.62.3.0 | Bin 0 -> 683249 bytes .../Pillow.libs/liblcms2-0821774a.so.2.0.15 | Bin 0 -> 502529 bytes .../Pillow.libs/liblzma-9dd5c569.so.5.4.3 | Bin 0 -> 270265 bytes .../Pillow.libs/libopenjp2-20e347f0.so.2.5.0 | Bin 0 -> 578001 bytes .../Pillow.libs/libpng16-39c06ea1.so.16.40.0 | Bin 0 -> 281937 bytes .../Pillow.libs/libsharpyuv-20f78091.so.0.0.1 | Bin 0 -> 37713 bytes .../Pillow.libs/libtiff-189042a3.so.6.0.1 | Bin 0 -> 696937 bytes .../Pillow.libs/libwebp-8b6d8948.so.7.1.7 | Bin 0 -> 755753 bytes .../libwebpdemux-fc93391d.so.2.0.13 | Bin 0 -> 26121 bytes .../Pillow.libs/libwebpmux-b3bcb8ec.so.3.0.12 | Bin 0 -> 54441 bytes .../Pillow.libs/libxcb-cd9c1006.so.1.1.0 | Bin 0 -> 247305 bytes .../site-packages/_distutils_hack/__init__.py | 132 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5123 bytes .../__pycache__/override.cpython-310.pyc | Bin 0 -> 248 bytes .../site-packages/_distutils_hack/override.py | 1 + .../site-packages/distutils-precedence.pth | 1 + .../site-packages/ev3dev2/__init__.py | 387 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 11788 bytes .../ev3dev2/__pycache__/auto.cpython-310.pyc | Bin 0 -> 1466 bytes .../__pycache__/button.cpython-310.pyc | Bin 0 -> 11458 bytes .../__pycache__/console.cpython-310.pyc | Bin 0 -> 6599 bytes .../__pycache__/display.cpython-310.pyc | Bin 0 -> 12441 bytes .../ev3dev2/__pycache__/led.cpython-310.pyc | Bin 0 -> 13931 bytes .../ev3dev2/__pycache__/motor.cpython-310.pyc | Bin 0 -> 85661 bytes .../ev3dev2/__pycache__/port.cpython-310.pyc | Bin 0 -> 5340 bytes .../ev3dev2/__pycache__/power.cpython-310.pyc | Bin 0 -> 2771 bytes .../ev3dev2/__pycache__/sound.cpython-310.pyc | Bin 0 -> 19907 bytes .../__pycache__/stopwatch.cpython-310.pyc | Bin 0 -> 4679 bytes .../ev3dev2/__pycache__/unit.cpython-310.pyc | Bin 0 -> 6277 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 215 bytes .../ev3dev2/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 2627 bytes .../ev3dev2/_platform/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 199 bytes .../__pycache__/brickpi.cpython-310.pyc | Bin 0 -> 878 bytes .../__pycache__/brickpi3.cpython-310.pyc | Bin 0 -> 1352 bytes .../_platform/__pycache__/ev3.cpython-310.pyc | Bin 0 -> 1190 bytes .../_platform/__pycache__/evb.cpython-310.pyc | Bin 0 -> 621 bytes .../__pycache__/fake.cpython-310.pyc | Bin 0 -> 482 bytes .../__pycache__/pistorms.cpython-310.pyc | Bin 0 -> 1382 bytes .../ev3dev2/_platform/brickpi.py | 55 + .../ev3dev2/_platform/brickpi3.py | 57 + .../site-packages/ev3dev2/_platform/ev3.py | 61 + .../site-packages/ev3dev2/_platform/evb.py | 22 + .../site-packages/ev3dev2/_platform/fake.py | 17 + .../ev3dev2/_platform/pistorms.py | 40 + .../python3.10/site-packages/ev3dev2/auto.py | 48 + .../site-packages/ev3dev2/button.py | 484 + .../site-packages/ev3dev2/console.py | 185 + .../ev3dev2/control/GyroBalancer.py | 498 + .../site-packages/ev3dev2/control/__init__.py | 0 .../__pycache__/GyroBalancer.cpython-310.pyc | Bin 0 -> 8889 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 197 bytes .../__pycache__/rc_tank.cpython-310.pyc | Bin 0 -> 1799 bytes .../__pycache__/webserver.cpython-310.pyc | Bin 0 -> 6252 bytes .../site-packages/ev3dev2/control/rc_tank.py | 46 + .../ev3dev2/control/webserver.py | 283 + .../site-packages/ev3dev2/display.py | 424 + .../site-packages/ev3dev2/fonts/__init__.py | 27 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1283 bytes .../python3.10/site-packages/ev3dev2/led.py | 600 ++ .../python3.10/site-packages/ev3dev2/motor.py | 3008 ++++++ .../python3.10/site-packages/ev3dev2/port.py | 154 + .../python3.10/site-packages/ev3dev2/power.py | 111 + .../site-packages/ev3dev2/sensor/__init__.py | 321 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9625 bytes .../sensor/__pycache__/lego.cpython-310.pyc | Bin 0 -> 25569 bytes .../site-packages/ev3dev2/sensor/lego.py | 1051 ++ .../python3.10/site-packages/ev3dev2/sound.py | 660 ++ .../site-packages/ev3dev2/stopwatch.py | 141 + .../python3.10/site-packages/ev3dev2/unit.py | 201 + .../site-packages/ev3dev2/version.py | 1 + .../python3.10/site-packages/ev3dev2/wheel.py | 73 + .../pip-23.2.dist-info/AUTHORS.txt | 737 ++ .../pip-23.2.dist-info/INSTALLER | 1 + .../pip-23.2.dist-info/LICENSE.txt | 20 + .../site-packages/pip-23.2.dist-info/METADATA | 90 + .../site-packages/pip-23.2.dist-info/RECORD | 1004 ++ .../pip-23.2.dist-info/REQUESTED | 0 .../site-packages/pip-23.2.dist-info/WHEEL | 5 + .../pip-23.2.dist-info/entry_points.txt | 4 + .../pip-23.2.dist-info/top_level.txt | 1 + .../python3.10/site-packages/pip/__init__.py | 13 + .../python3.10/site-packages/pip/__main__.py | 24 + .../site-packages/pip/__pip-runner__.py | 50 + .../pip/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 639 bytes .../pip/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 475 bytes .../__pip-runner__.cpython-310.pyc | Bin 0 -> 1639 bytes .../site-packages/pip/_internal/__init__.py | 19 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 762 bytes .../__pycache__/build_env.cpython-310.pyc | Bin 0 -> 9720 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 8936 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 11375 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 25505 bytes .../__pycache__/main.cpython-310.pyc | Bin 0 -> 627 bytes .../__pycache__/pyproject.cpython-310.pyc | Bin 0 -> 3651 bytes .../self_outdated_check.cpython-310.pyc | Bin 0 -> 6651 bytes .../__pycache__/wheel_builder.cpython-310.pyc | Bin 0 -> 8658 bytes .../site-packages/pip/_internal/build_env.py | 311 + .../site-packages/pip/_internal/cache.py | 292 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 282 bytes .../autocompletion.cpython-310.pyc | Bin 0 -> 5317 bytes .../__pycache__/base_command.cpython-310.pyc | Bin 0 -> 6495 bytes .../__pycache__/cmdoptions.cpython-310.pyc | Bin 0 -> 23473 bytes .../command_context.cpython-310.pyc | Bin 0 -> 1322 bytes .../cli/__pycache__/main.cpython-310.pyc | Bin 0 -> 1516 bytes .../__pycache__/main_parser.cpython-310.pyc | Bin 0 -> 3005 bytes .../cli/__pycache__/parser.cpython-310.pyc | Bin 0 -> 9964 bytes .../__pycache__/progress_bars.cpython-310.pyc | Bin 0 -> 1906 bytes .../__pycache__/req_command.cpython-310.pyc | Bin 0 -> 13157 bytes .../cli/__pycache__/spinners.cpython-310.pyc | Bin 0 -> 4972 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 361 bytes .../pip/_internal/cli/autocompletion.py | 171 + .../pip/_internal/cli/base_command.py | 236 + .../pip/_internal/cli/cmdoptions.py | 1074 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 79 + .../pip/_internal/cli/main_parser.py | 134 + .../site-packages/pip/_internal/cli/parser.py | 294 + .../pip/_internal/cli/progress_bars.py | 68 + .../pip/_internal/cli/req_command.py | 505 + .../pip/_internal/cli/spinners.py | 159 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 132 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3261 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 6244 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 1640 bytes .../__pycache__/completion.cpython-310.pyc | Bin 0 -> 4024 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 8948 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 6701 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 4255 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 2981 bytes .../commands/__pycache__/hash.cpython-310.pyc | Bin 0 -> 2158 bytes .../commands/__pycache__/help.cpython-310.pyc | Bin 0 -> 1319 bytes .../__pycache__/index.cpython-310.pyc | Bin 0 -> 4596 bytes .../__pycache__/inspect.cpython-310.pyc | Bin 0 -> 2979 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 17777 bytes .../commands/__pycache__/list.cpython-310.pyc | Bin 0 -> 10371 bytes .../__pycache__/search.cpython-310.pyc | Bin 0 -> 5372 bytes .../commands/__pycache__/show.cpython-310.pyc | Bin 0 -> 6533 bytes .../__pycache__/uninstall.cpython-310.pyc | Bin 0 -> 3340 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4986 bytes .../pip/_internal/commands/cache.py | 222 + .../pip/_internal/commands/check.py | 54 + .../pip/_internal/commands/completion.py | 121 + .../pip/_internal/commands/configuration.py | 282 + .../pip/_internal/commands/debug.py | 199 + .../pip/_internal/commands/download.py | 147 + .../pip/_internal/commands/freeze.py | 108 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 139 + .../pip/_internal/commands/inspect.py | 92 + .../pip/_internal/commands/install.py | 778 ++ .../pip/_internal/commands/list.py | 368 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 189 + .../pip/_internal/commands/uninstall.py | 113 + .../pip/_internal/commands/wheel.py | 183 + .../pip/_internal/configuration.py | 381 + .../pip/_internal/distributions/__init__.py | 21 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 809 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1897 bytes .../__pycache__/installed.cpython-310.pyc | Bin 0 -> 1274 bytes .../__pycache__/sdist.cpython-310.pyc | Bin 0 -> 5005 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1641 bytes .../pip/_internal/distributions/base.py | 39 + .../pip/_internal/distributions/installed.py | 23 + .../pip/_internal/distributions/sdist.py | 150 + .../pip/_internal/distributions/wheel.py | 34 + .../site-packages/pip/_internal/exceptions.py | 733 ++ .../pip/_internal/index/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 236 bytes .../__pycache__/collector.cpython-310.pyc | Bin 0 -> 15309 bytes .../package_finder.cpython-310.pyc | Bin 0 -> 29465 bytes .../index/__pycache__/sources.cpython-310.pyc | Bin 0 -> 7129 bytes .../pip/_internal/index/collector.py | 505 + .../pip/_internal/index/package_finder.py | 1029 ++ .../pip/_internal/index/sources.py | 223 + .../pip/_internal/locations/__init__.py | 467 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 11038 bytes .../__pycache__/_distutils.cpython-310.pyc | Bin 0 -> 4611 bytes .../__pycache__/_sysconfig.cpython-310.pyc | Bin 0 -> 6002 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 2406 bytes .../pip/_internal/locations/_distutils.py | 173 + .../pip/_internal/locations/_sysconfig.py | 213 + .../pip/_internal/locations/base.py | 81 + .../site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 127 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4740 bytes .../__pycache__/_json.cpython-310.pyc | Bin 0 -> 2196 bytes .../metadata/__pycache__/base.cpython-310.pyc | Bin 0 -> 26674 bytes .../__pycache__/pkg_resources.cpython-310.pyc | Bin 0 -> 10178 bytes .../pip/_internal/metadata/_json.py | 84 + .../pip/_internal/metadata/base.py | 688 ++ .../_internal/metadata/importlib/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 327 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 2759 bytes .../__pycache__/_dists.cpython-310.pyc | Bin 0 -> 8917 bytes .../__pycache__/_envs.cpython-310.pyc | Bin 0 -> 7741 bytes .../_internal/metadata/importlib/_compat.py | 55 + .../_internal/metadata/importlib/_dists.py | 224 + .../pip/_internal/metadata/importlib/_envs.py | 188 + .../pip/_internal/metadata/pkg_resources.py | 270 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 270 bytes .../__pycache__/candidate.cpython-310.pyc | Bin 0 -> 1422 bytes .../__pycache__/direct_url.cpython-310.pyc | Bin 0 -> 7727 bytes .../format_control.cpython-310.pyc | Bin 0 -> 2747 bytes .../models/__pycache__/index.cpython-310.pyc | Bin 0 -> 1239 bytes .../installation_report.cpython-310.pyc | Bin 0 -> 1729 bytes .../models/__pycache__/link.cpython-310.pyc | Bin 0 -> 18104 bytes .../models/__pycache__/scheme.cpython-310.pyc | Bin 0 -> 1038 bytes .../__pycache__/search_scope.cpython-310.pyc | Bin 0 -> 3557 bytes .../selection_prefs.cpython-310.pyc | Bin 0 -> 1700 bytes .../__pycache__/target_python.cpython-310.pyc | Bin 0 -> 3455 bytes .../models/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4474 bytes .../pip/_internal/models/candidate.py | 34 + .../pip/_internal/models/direct_url.py | 237 + .../pip/_internal/models/format_control.py | 80 + .../pip/_internal/models/index.py | 28 + .../_internal/models/installation_report.py | 53 + .../pip/_internal/models/link.py | 581 ++ .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 132 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 110 + .../pip/_internal/models/wheel.py | 92 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 258 bytes .../network/__pycache__/auth.cpython-310.pyc | Bin 0 -> 14441 bytes .../network/__pycache__/cache.cpython-310.pyc | Bin 0 -> 2945 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 5540 bytes .../__pycache__/lazy_wheel.cpython-310.pyc | Bin 0 -> 8426 bytes .../__pycache__/session.cpython-310.pyc | Bin 0 -> 12438 bytes .../network/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1461 bytes .../__pycache__/xmlrpc.cpython-310.pyc | Bin 0 -> 2071 bytes .../pip/_internal/network/auth.py | 561 ++ .../pip/_internal/network/cache.py | 69 + .../pip/_internal/network/download.py | 186 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 517 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 60 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 206 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 5210 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 6227 bytes .../__pycache__/prepare.cpython-310.pyc | Bin 0 -> 15630 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 212 bytes .../__pycache__/build_tracker.cpython-310.pyc | Bin 0 -> 4293 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 1445 bytes .../metadata_editable.cpython-310.pyc | Bin 0 -> 1479 bytes .../metadata_legacy.cpython-310.pyc | Bin 0 -> 2384 bytes .../build/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1235 bytes .../wheel_editable.cpython-310.pyc | Bin 0 -> 1459 bytes .../__pycache__/wheel_legacy.cpython-310.pyc | Bin 0 -> 2769 bytes .../operations/build/build_tracker.py | 124 + .../_internal/operations/build/metadata.py | 39 + .../operations/build/metadata_editable.py | 41 + .../operations/build/metadata_legacy.py | 74 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 102 + .../pip/_internal/operations/check.py | 187 + .../pip/_internal/operations/freeze.py | 255 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 270 bytes .../editable_legacy.cpython-310.pyc | Bin 0 -> 1499 bytes .../install/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 21201 bytes .../operations/install/editable_legacy.py | 46 + .../pip/_internal/operations/install/wheel.py | 740 ++ .../pip/_internal/operations/prepare.py | 734 ++ .../site-packages/pip/_internal/pyproject.py | 179 + .../pip/_internal/req/__init__.py | 92 + .../req/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2575 bytes .../__pycache__/constructors.cpython-310.pyc | Bin 0 -> 12411 bytes .../req/__pycache__/req_file.cpython-310.pyc | Bin 0 -> 13820 bytes .../__pycache__/req_install.cpython-310.pyc | Bin 0 -> 23235 bytes .../req/__pycache__/req_set.cpython-310.pyc | Bin 0 -> 5228 bytes .../__pycache__/req_uninstall.cpython-310.pyc | Bin 0 -> 19267 bytes .../pip/_internal/req/constructors.py | 506 + .../pip/_internal/req/req_file.py | 552 ++ .../pip/_internal/req/req_install.py | 874 ++ .../pip/_internal/req/req_set.py | 119 + .../pip/_internal/req/req_uninstall.py | 650 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 206 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1058 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 213 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 14955 bytes .../_internal/resolution/legacy/resolver.py | 600 ++ .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 217 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 6460 bytes .../__pycache__/candidates.cpython-310.pyc | Bin 0 -> 18553 bytes .../__pycache__/factory.cpython-310.pyc | Bin 0 -> 19052 bytes .../found_candidates.cpython-310.pyc | Bin 0 -> 4877 bytes .../__pycache__/provider.cpython-310.pyc | Bin 0 -> 7945 bytes .../__pycache__/reporter.cpython-310.pyc | Bin 0 -> 3714 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 7475 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 8260 bytes .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 555 ++ .../resolution/resolvelib/factory.py | 730 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 255 + .../resolution/resolvelib/reporter.py | 80 + .../resolution/resolvelib/requirements.py | 165 + .../resolution/resolvelib/resolver.py | 299 + .../pip/_internal/self_outdated_check.py | 242 + .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 201 bytes .../__pycache__/_jaraco_text.cpython-310.pyc | Bin 0 -> 3857 bytes .../utils/__pycache__/_log.cpython-310.pyc | Bin 0 -> 1529 bytes .../utils/__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 1627 bytes .../utils/__pycache__/compat.cpython-310.pyc | Bin 0 -> 1517 bytes .../compatibility_tags.cpython-310.pyc | Bin 0 -> 4086 bytes .../__pycache__/datetime.cpython-310.pyc | Bin 0 -> 524 bytes .../__pycache__/deprecation.cpython-310.pyc | Bin 0 -> 3326 bytes .../direct_url_helpers.cpython-310.pyc | Bin 0 -> 2092 bytes .../__pycache__/egg_link.cpython-310.pyc | Bin 0 -> 2172 bytes .../__pycache__/encoding.cpython-310.pyc | Bin 0 -> 1314 bytes .../__pycache__/entrypoints.cpython-310.pyc | Bin 0 -> 2707 bytes .../__pycache__/filesystem.cpython-310.pyc | Bin 0 -> 4490 bytes .../__pycache__/filetypes.cpython-310.pyc | Bin 0 -> 951 bytes .../utils/__pycache__/glibc.cpython-310.pyc | Bin 0 -> 1722 bytes .../utils/__pycache__/hashes.cpython-310.pyc | Bin 0 -> 5490 bytes .../inject_securetransport.cpython-310.pyc | Bin 0 -> 996 bytes .../utils/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9728 bytes .../utils/__pycache__/misc.cpython-310.pyc | Bin 0 -> 22231 bytes .../utils/__pycache__/models.cpython-310.pyc | Bin 0 -> 1997 bytes .../__pycache__/packaging.cpython-310.pyc | Bin 0 -> 2089 bytes .../setuptools_build.cpython-310.pyc | Bin 0 -> 3825 bytes .../__pycache__/subprocess.cpython-310.pyc | Bin 0 -> 5780 bytes .../__pycache__/temp_dir.cpython-310.pyc | Bin 0 -> 7324 bytes .../__pycache__/unpacking.cpython-310.pyc | Bin 0 -> 6675 bytes .../utils/__pycache__/urls.cpython-310.pyc | Bin 0 -> 1602 bytes .../__pycache__/virtualenv.cpython-310.pyc | Bin 0 -> 3297 bytes .../utils/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4422 bytes .../pip/_internal/utils/_jaraco_text.py | 109 + .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 120 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/egg_link.py | 72 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 84 + .../pip/_internal/utils/filesystem.py | 153 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 151 + .../_internal/utils/inject_securetransport.py | 35 + .../pip/_internal/utils/logging.py | 348 + .../site-packages/pip/_internal/utils/misc.py | 735 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 57 + .../pip/_internal/utils/setuptools_build.py | 146 + .../pip/_internal/utils/subprocess.py | 260 + .../pip/_internal/utils/temp_dir.py | 246 + .../pip/_internal/utils/unpacking.py | 257 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 136 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 524 bytes .../vcs/__pycache__/bazaar.cpython-310.pyc | Bin 0 -> 3490 bytes .../vcs/__pycache__/git.cpython-310.pyc | Bin 0 -> 12554 bytes .../vcs/__pycache__/mercurial.cpython-310.pyc | Bin 0 -> 5076 bytes .../__pycache__/subversion.cpython-310.pyc | Bin 0 -> 8462 bytes .../versioncontrol.cpython-310.pyc | Bin 0 -> 21153 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 + .../site-packages/pip/_internal/vcs/git.py | 526 + .../pip/_internal/vcs/mercurial.py | 163 + .../pip/_internal/vcs/subversion.py | 324 + .../pip/_internal/vcs/versioncontrol.py | 705 ++ .../pip/_internal/wheel_builder.py | 355 + .../site-packages/pip/_vendor/__init__.py | 120 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3137 bytes .../_vendor/__pycache__/six.cpython-310.pyc | Bin 0 -> 27595 bytes .../typing_extensions.cpython-310.pyc | Bin 0 -> 89139 bytes .../pip/_vendor/cachecontrol/__init__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 652 bytes .../__pycache__/_cmd.cpython-310.pyc | Bin 0 -> 1590 bytes .../__pycache__/adapter.cpython-310.pyc | Bin 0 -> 3166 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 2700 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 766 bytes .../__pycache__/controller.cpython-310.pyc | Bin 0 -> 8606 bytes .../__pycache__/filewrapper.cpython-310.pyc | Bin 0 -> 2802 bytes .../__pycache__/heuristics.cpython-310.pyc | Bin 0 -> 4726 bytes .../__pycache__/serialize.cpython-310.pyc | Bin 0 -> 4341 bytes .../__pycache__/wrapper.cpython-310.pyc | Bin 0 -> 697 bytes .../pip/_vendor/cachecontrol/_cmd.py | 61 + .../pip/_vendor/cachecontrol/adapter.py | 137 + .../pip/_vendor/cachecontrol/cache.py | 65 + .../_vendor/cachecontrol/caches/__init__.py | 9 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 371 bytes .../__pycache__/file_cache.cpython-310.pyc | Bin 0 -> 4971 bytes .../__pycache__/redis_cache.cpython-310.pyc | Bin 0 -> 1629 bytes .../_vendor/cachecontrol/caches/file_cache.py | 188 + .../cachecontrol/caches/redis_cache.py | 39 + .../pip/_vendor/cachecontrol/compat.py | 32 + .../pip/_vendor/cachecontrol/controller.py | 439 + .../pip/_vendor/cachecontrol/filewrapper.py | 111 + .../pip/_vendor/cachecontrol/heuristics.py | 139 + .../pip/_vendor/cachecontrol/serialize.py | 190 + .../pip/_vendor/cachecontrol/wrapper.py | 33 + .../pip/_vendor/certifi/__init__.py | 4 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 314 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 464 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 0 -> 1934 bytes .../pip/_vendor/certifi/cacert.pem | 4589 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 108 + .../pip/_vendor/chardet/__init__.py | 115 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3182 bytes .../__pycache__/big5freq.cpython-310.pyc | Bin 0 -> 27188 bytes .../__pycache__/big5prober.cpython-310.pyc | Bin 0 -> 1166 bytes .../chardistribution.cpython-310.pyc | Bin 0 -> 6583 bytes .../charsetgroupprober.cpython-310.pyc | Bin 0 -> 2433 bytes .../__pycache__/charsetprober.cpython-310.pyc | Bin 0 -> 3839 bytes .../codingstatemachine.cpython-310.pyc | Bin 0 -> 3076 bytes .../codingstatemachinedict.cpython-310.pyc | Bin 0 -> 705 bytes .../__pycache__/cp949prober.cpython-310.pyc | Bin 0 -> 1173 bytes .../chardet/__pycache__/enums.cpython-310.pyc | Bin 0 -> 2666 bytes .../__pycache__/escprober.cpython-310.pyc | Bin 0 -> 2824 bytes .../chardet/__pycache__/escsm.cpython-310.pyc | Bin 0 -> 8527 bytes .../__pycache__/eucjpprober.cpython-310.pyc | Bin 0 -> 2612 bytes .../__pycache__/euckrfreq.cpython-310.pyc | Bin 0 -> 12072 bytes .../__pycache__/euckrprober.cpython-310.pyc | Bin 0 -> 1174 bytes .../__pycache__/euctwfreq.cpython-310.pyc | Bin 0 -> 27192 bytes .../__pycache__/euctwprober.cpython-310.pyc | Bin 0 -> 1174 bytes .../__pycache__/gb2312freq.cpython-310.pyc | Bin 0 -> 19116 bytes .../__pycache__/gb2312prober.cpython-310.pyc | Bin 0 -> 1182 bytes .../__pycache__/hebrewprober.cpython-310.pyc | Bin 0 -> 3429 bytes .../__pycache__/jisfreq.cpython-310.pyc | Bin 0 -> 22144 bytes .../__pycache__/johabfreq.cpython-310.pyc | Bin 0 -> 138768 bytes .../__pycache__/johabprober.cpython-310.pyc | Bin 0 -> 1173 bytes .../__pycache__/jpcntx.cpython-310.pyc | Bin 0 -> 37994 bytes .../langbulgarianmodel.cpython-310.pyc | Bin 0 -> 47936 bytes .../langgreekmodel.cpython-310.pyc | Bin 0 -> 46126 bytes .../langhebrewmodel.cpython-310.pyc | Bin 0 -> 44573 bytes .../langhungarianmodel.cpython-310.pyc | Bin 0 -> 47896 bytes .../langrussianmodel.cpython-310.pyc | Bin 0 -> 61037 bytes .../__pycache__/langthaimodel.cpython-310.pyc | Bin 0 -> 44749 bytes .../langturkishmodel.cpython-310.pyc | Bin 0 -> 44590 bytes .../__pycache__/latin1prober.cpython-310.pyc | Bin 0 -> 4572 bytes .../macromanprober.cpython-310.pyc | Bin 0 -> 4713 bytes .../mbcharsetprober.cpython-310.pyc | Bin 0 -> 2324 bytes .../mbcsgroupprober.cpython-310.pyc | Bin 0 -> 1270 bytes .../__pycache__/mbcssm.cpython-310.pyc | Bin 0 -> 20945 bytes .../__pycache__/resultdict.cpython-310.pyc | Bin 0 -> 585 bytes .../sbcharsetprober.cpython-310.pyc | Bin 0 -> 3691 bytes .../sbcsgroupprober.cpython-310.pyc | Bin 0 -> 1749 bytes .../__pycache__/sjisprober.cpython-310.pyc | Bin 0 -> 2650 bytes .../universaldetector.cpython-310.pyc | Bin 0 -> 7138 bytes .../__pycache__/utf1632prober.cpython-310.pyc | Bin 0 -> 6144 bytes .../__pycache__/utf8prober.cpython-310.pyc | Bin 0 -> 2118 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 450 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 261 + .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 147 + .../pip/_vendor/chardet/cli/__init__.py | 0 .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 205 bytes .../__pycache__/chardetect.cpython-310.pyc | Bin 0 -> 3047 bytes .../pip/_vendor/chardet/cli/chardetect.py | 112 + .../pip/_vendor/chardet/codingstatemachine.py | 90 + .../_vendor/chardet/codingstatemachinedict.py | 19 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 85 + .../pip/_vendor/chardet/escprober.py | 102 + .../pip/_vendor/chardet/escsm.py | 261 + .../pip/_vendor/chardet/eucjpprober.py | 102 + .../pip/_vendor/chardet/euckrfreq.py | 196 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 388 + .../pip/_vendor/chardet/euctwprober.py | 47 + .../pip/_vendor/chardet/gb2312freq.py | 284 + .../pip/_vendor/chardet/gb2312prober.py | 47 + .../pip/_vendor/chardet/hebrewprober.py | 316 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/johabfreq.py | 2382 +++++ .../pip/_vendor/chardet/johabprober.py | 47 + .../pip/_vendor/chardet/jpcntx.py | 238 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4397 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5725 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 147 + .../pip/_vendor/chardet/macromanprober.py | 162 + .../pip/_vendor/chardet/mbcharsetprober.py | 95 + .../pip/_vendor/chardet/mbcsgroupprober.py | 57 + .../pip/_vendor/chardet/mbcssm.py | 661 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 210 bytes .../__pycache__/languages.cpython-310.pyc | Bin 0 -> 8193 bytes .../pip/_vendor/chardet/metadata/languages.py | 352 + .../pip/_vendor/chardet/resultdict.py | 16 + .../pip/_vendor/chardet/sbcharsetprober.py | 162 + .../pip/_vendor/chardet/sbcsgroupprober.py | 88 + .../pip/_vendor/chardet/sjisprober.py | 105 + .../pip/_vendor/chardet/universaldetector.py | 362 + .../pip/_vendor/chardet/utf1632prober.py | 225 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 7 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 488 bytes .../colorama/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 3014 bytes .../__pycache__/ansitowin32.cpython-310.pyc | Bin 0 -> 8526 bytes .../__pycache__/initialise.cpython-310.pyc | Bin 0 -> 2271 bytes .../__pycache__/win32.cpython-310.pyc | Bin 0 -> 4481 bytes .../__pycache__/winterm.cpython-310.pyc | Bin 0 -> 5177 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 277 + .../pip/_vendor/colorama/initialise.py | 121 + .../pip/_vendor/colorama/tests/__init__.py | 1 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 208 bytes .../__pycache__/ansi_test.cpython-310.pyc | Bin 0 -> 2300 bytes .../ansitowin32_test.cpython-310.pyc | Bin 0 -> 11611 bytes .../initialise_test.cpython-310.pyc | Bin 0 -> 6908 bytes .../__pycache__/isatty_test.cpython-310.pyc | Bin 0 -> 2699 bytes .../tests/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1608 bytes .../__pycache__/winterm_test.cpython-310.pyc | Bin 0 -> 3201 bytes .../pip/_vendor/colorama/tests/ansi_test.py | 76 + .../colorama/tests/ansitowin32_test.py | 294 + .../_vendor/colorama/tests/initialise_test.py | 189 + .../pip/_vendor/colorama/tests/isatty_test.py | 57 + .../pip/_vendor/colorama/tests/utils.py | 49 + .../_vendor/colorama/tests/winterm_test.py | 131 + .../pip/_vendor/colorama/win32.py | 180 + .../pip/_vendor/colorama/winterm.py | 195 + .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1072 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 31418 bytes .../__pycache__/database.cpython-310.pyc | Bin 0 -> 43158 bytes .../distlib/__pycache__/index.cpython-310.pyc | Bin 0 -> 17323 bytes .../__pycache__/locators.cpython-310.pyc | Bin 0 -> 38380 bytes .../__pycache__/manifest.cpython-310.pyc | Bin 0 -> 10240 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 5046 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 26797 bytes .../__pycache__/resources.cpython-310.pyc | Bin 0 -> 11046 bytes .../__pycache__/scripts.cpython-310.pyc | Bin 0 -> 11512 bytes .../distlib/__pycache__/util.cpython-310.pyc | Bin 0 -> 51707 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 20161 bytes .../distlib/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 28141 bytes .../pip/_vendor/distlib/compat.py | 1116 +++ .../pip/_vendor/distlib/database.py | 1350 +++ .../pip/_vendor/distlib/index.py | 508 + .../pip/_vendor/distlib/locators.py | 1300 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 152 + .../pip/_vendor/distlib/metadata.py | 1076 +++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 437 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 97792 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 0 -> 182784 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 108032 bytes .../site-packages/pip/_vendor/distlib/util.py | 1932 ++++ .../pip/_vendor/distlib/version.py | 739 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 91648 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 0 -> 168448 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 101888 bytes .../pip/_vendor/distlib/wheel.py | 1082 +++ .../pip/_vendor/distro/__init__.py | 54 + .../pip/_vendor/distro/__main__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 925 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 279 bytes .../distro/__pycache__/distro.cpython-310.pyc | Bin 0 -> 42075 bytes .../pip/_vendor/distro/distro.py | 1399 +++ .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 857 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 0 -> 2828 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 0 -> 757 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 0 -> 9714 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 0 -> 38393 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 0 -> 1994 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 0 -> 221 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 0 -> 152408 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 + .../site-packages/pip/_vendor/idna/compat.py | 13 + .../site-packages/pip/_vendor/idna/core.py | 400 + .../pip/_vendor/idna/idnadata.py | 2151 +++++ .../pip/_vendor/idna/intranges.py | 54 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8600 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 57 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1455 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 1818 bytes .../msgpack/__pycache__/ext.cpython-310.pyc | Bin 0 -> 6325 bytes .../__pycache__/fallback.cpython-310.pyc | Bin 0 -> 25488 bytes .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1010 ++ .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 600 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 456 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7310 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4622 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2715 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9299 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 3985 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 21537 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12206 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3585 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12935 bytes .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 61 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 802 ++ .../pip/_vendor/packaging/tags.py | 487 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 504 + .../pip/_vendor/pkg_resources/__init__.py | 3361 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 101089 bytes .../pip/_vendor/platformdirs/__init__.py | 566 ++ .../pip/_vendor/platformdirs/__main__.py | 53 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 14379 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 1391 bytes .../__pycache__/android.cpython-310.pyc | Bin 0 -> 6629 bytes .../__pycache__/api.cpython-310.pyc | Bin 0 -> 7627 bytes .../__pycache__/macos.cpython-310.pyc | Bin 0 -> 4268 bytes .../__pycache__/unix.cpython-310.pyc | Bin 0 -> 8859 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 300 bytes .../__pycache__/windows.cpython-310.pyc | Bin 0 -> 8633 bytes .../pip/_vendor/platformdirs/android.py | 210 + .../pip/_vendor/platformdirs/api.py | 223 + .../pip/_vendor/platformdirs/macos.py | 91 + .../pip/_vendor/platformdirs/unix.py | 223 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 255 + .../pip/_vendor/pygments/__init__.py | 82 + .../pip/_vendor/pygments/__main__.py | 17 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2945 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 598 bytes .../__pycache__/cmdline.cpython-310.pyc | Bin 0 -> 15615 bytes .../__pycache__/console.cpython-310.pyc | Bin 0 -> 1893 bytes .../__pycache__/filter.cpython-310.pyc | Bin 0 -> 2664 bytes .../__pycache__/formatter.cpython-310.pyc | Bin 0 -> 3966 bytes .../__pycache__/lexer.cpython-310.pyc | Bin 0 -> 26243 bytes .../__pycache__/modeline.cpython-310.pyc | Bin 0 -> 1202 bytes .../__pycache__/plugin.cpython-310.pyc | Bin 0 -> 2530 bytes .../__pycache__/regexopt.cpython-310.pyc | Bin 0 -> 2966 bytes .../__pycache__/scanner.cpython-310.pyc | Bin 0 -> 3568 bytes .../__pycache__/sphinxext.cpython-310.pyc | Bin 0 -> 7131 bytes .../__pycache__/style.cpython-310.pyc | Bin 0 -> 4589 bytes .../__pycache__/token.cpython-310.pyc | Bin 0 -> 4681 bytes .../__pycache__/unistring.cpython-310.pyc | Bin 0 -> 31242 bytes .../pygments/__pycache__/util.cpython-310.pyc | Bin 0 -> 10214 bytes .../pip/_vendor/pygments/cmdline.py | 668 ++ .../pip/_vendor/pygments/console.py | 70 + .../pip/_vendor/pygments/filter.py | 71 + .../pip/_vendor/pygments/filters/__init__.py | 940 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 29622 bytes .../pip/_vendor/pygments/formatter.py | 124 + .../_vendor/pygments/formatters/__init__.py | 158 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5018 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 4010 bytes .../__pycache__/bbcode.cpython-310.pyc | Bin 0 -> 3095 bytes .../__pycache__/groff.cpython-310.pyc | Bin 0 -> 4420 bytes .../__pycache__/html.cpython-310.pyc | Bin 0 -> 29175 bytes .../__pycache__/img.cpython-310.pyc | Bin 0 -> 17572 bytes .../__pycache__/irc.cpython-310.pyc | Bin 0 -> 4108 bytes .../__pycache__/latex.cpython-310.pyc | Bin 0 -> 13808 bytes .../__pycache__/other.cpython-310.pyc | Bin 0 -> 4814 bytes .../__pycache__/pangomarkup.cpython-310.pyc | Bin 0 -> 2114 bytes .../__pycache__/rtf.cpython-310.pyc | Bin 0 -> 4144 bytes .../__pycache__/svg.cpython-310.pyc | Bin 0 -> 6342 bytes .../__pycache__/terminal.cpython-310.pyc | Bin 0 -> 4009 bytes .../__pycache__/terminal256.cpython-310.pyc | Bin 0 -> 9259 bytes .../_vendor/pygments/formatters/_mapping.py | 23 + .../pip/_vendor/pygments/formatters/bbcode.py | 108 + .../pip/_vendor/pygments/formatters/groff.py | 170 + .../pip/_vendor/pygments/formatters/html.py | 989 ++ .../pip/_vendor/pygments/formatters/img.py | 645 ++ .../pip/_vendor/pygments/formatters/irc.py | 154 + .../pip/_vendor/pygments/formatters/latex.py | 521 + .../pip/_vendor/pygments/formatters/other.py | 161 + .../pygments/formatters/pangomarkup.py | 83 + .../pip/_vendor/pygments/formatters/rtf.py | 146 + .../pip/_vendor/pygments/formatters/svg.py | 188 + .../_vendor/pygments/formatters/terminal.py | 127 + .../pygments/formatters/terminal256.py | 338 + .../pip/_vendor/pygments/lexer.py | 943 ++ .../pip/_vendor/pygments/lexers/__init__.py | 362 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 10012 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 60957 bytes .../lexers/__pycache__/python.cpython-310.pyc | Bin 0 -> 30014 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 559 ++ .../pip/_vendor/pygments/lexers/python.py | 1198 +++ .../pip/_vendor/pygments/modeline.py | 43 + .../pip/_vendor/pygments/plugin.py | 88 + .../pip/_vendor/pygments/regexopt.py | 91 + .../pip/_vendor/pygments/scanner.py | 104 + .../pip/_vendor/pygments/sphinxext.py | 217 + .../pip/_vendor/pygments/style.py | 197 + .../pip/_vendor/pygments/styles/__init__.py | 103 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3603 bytes .../pip/_vendor/pygments/token.py | 213 + .../pip/_vendor/pygments/unistring.py | 153 + .../pip/_vendor/pygments/util.py | 330 + .../pip/_vendor/pyparsing/__init__.py | 322 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7115 bytes .../__pycache__/actions.cpython-310.pyc | Bin 0 -> 7661 bytes .../__pycache__/common.cpython-310.pyc | Bin 0 -> 10189 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 188316 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 9621 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 0 -> 35679 bytes .../__pycache__/results.cpython-310.pyc | Bin 0 -> 25661 bytes .../__pycache__/testing.cpython-310.pyc | Bin 0 -> 12157 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 0 -> 10268 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 10062 bytes .../pip/_vendor/pyparsing/actions.py | 217 + .../pip/_vendor/pyparsing/common.py | 432 + .../pip/_vendor/pyparsing/core.py | 6115 ++++++++++++ .../pip/_vendor/pyparsing/diagram/__init__.py | 656 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 16920 bytes .../pip/_vendor/pyparsing/exceptions.py | 299 + .../pip/_vendor/pyparsing/helpers.py | 1100 +++ .../pip/_vendor/pyparsing/results.py | 796 ++ .../pip/_vendor/pyparsing/testing.py | 331 + .../pip/_vendor/pyparsing/unicode.py | 361 + .../pip/_vendor/pyparsing/util.py | 284 + .../pip/_vendor/pyproject_hooks/__init__.py | 23 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 596 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 347 bytes .../__pycache__/_impl.cpython-310.pyc | Bin 0 -> 11399 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 + .../pip/_vendor/pyproject_hooks/_impl.py | 330 + .../pyproject_hooks/_in_process/__init__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 834 bytes .../__pycache__/_in_process.cpython-310.pyc | Bin 0 -> 9716 bytes .../_in_process/_in_process.py | 353 + .../pip/_vendor/requests/__init__.py | 182 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4017 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 0 -> 560 bytes .../_internal_utils.cpython-310.pyc | Bin 0 -> 1636 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 0 -> 16222 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 0 -> 6736 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 0 -> 8132 bytes .../__pycache__/certs.cpython-310.pyc | Bin 0 -> 819 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 1381 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 0 -> 18707 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 5751 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 0 -> 2877 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 0 -> 1004 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 24278 bytes .../__pycache__/packages.cpython-310.pyc | Bin 0 -> 518 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 0 -> 19616 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 4683 bytes .../__pycache__/structures.cpython-310.pyc | Bin 0 -> 4448 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 24457 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 50 + .../pip/_vendor/requests/adapters.py | 538 ++ .../site-packages/pip/_vendor/requests/api.py | 157 + .../pip/_vendor/requests/auth.py | 315 + .../pip/_vendor/requests/certs.py | 24 + .../pip/_vendor/requests/compat.py | 67 + .../pip/_vendor/requests/cookies.py | 561 ++ .../pip/_vendor/requests/exceptions.py | 141 + .../pip/_vendor/requests/help.py | 131 + .../pip/_vendor/requests/hooks.py | 33 + .../pip/_vendor/requests/models.py | 1034 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 833 ++ .../pip/_vendor/requests/status_codes.py | 128 + .../pip/_vendor/requests/structures.py | 99 + .../pip/_vendor/requests/utils.py | 1094 +++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 616 bytes .../__pycache__/providers.cpython-310.pyc | Bin 0 -> 6666 bytes .../__pycache__/reporters.cpython-310.pyc | Bin 0 -> 2619 bytes .../__pycache__/resolvers.cpython-310.pyc | Bin 0 -> 17453 bytes .../__pycache__/structs.cpython-310.pyc | Bin 0 -> 7275 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 211 bytes .../collections_abc.cpython-310.pyc | Bin 0 -> 387 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 43 + .../pip/_vendor/resolvelib/resolvers.py | 547 ++ .../pip/_vendor/resolvelib/structs.py | 170 + .../pip/_vendor/rich/__init__.py | 177 + .../pip/_vendor/rich/__main__.py | 274 + .../rich/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 6123 bytes .../rich/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 7193 bytes .../__pycache__/_cell_widths.cpython-310.pyc | Bin 0 -> 7824 bytes .../__pycache__/_emoji_codes.cpython-310.pyc | Bin 0 -> 360064 bytes .../_emoji_replace.cpython-310.pyc | Bin 0 -> 1204 bytes .../_export_format.cpython-310.pyc | Bin 0 -> 2307 bytes .../__pycache__/_extension.cpython-310.pyc | Bin 0 -> 505 bytes .../rich/__pycache__/_fileno.cpython-310.pyc | Bin 0 -> 798 bytes .../rich/__pycache__/_inspect.cpython-310.pyc | Bin 0 -> 8682 bytes .../__pycache__/_log_render.cpython-310.pyc | Bin 0 -> 2650 bytes .../rich/__pycache__/_loop.cpython-310.pyc | Bin 0 -> 1302 bytes .../__pycache__/_null_file.cpython-310.pyc | Bin 0 -> 3249 bytes .../__pycache__/_palettes.cpython-310.pyc | Bin 0 -> 5107 bytes .../rich/__pycache__/_pick.cpython-310.pyc | Bin 0 -> 650 bytes .../rich/__pycache__/_ratio.cpython-310.pyc | Bin 0 -> 5169 bytes .../__pycache__/_spinners.cpython-310.pyc | Bin 0 -> 12281 bytes .../rich/__pycache__/_stack.cpython-310.pyc | Bin 0 -> 848 bytes .../rich/__pycache__/_timer.cpython-310.pyc | Bin 0 -> 697 bytes .../_win32_console.cpython-310.pyc | Bin 0 -> 19017 bytes .../rich/__pycache__/_windows.cpython-310.pyc | Bin 0 -> 1799 bytes .../_windows_renderer.cpython-310.pyc | Bin 0 -> 2053 bytes .../rich/__pycache__/_wrap.cpython-310.pyc | Bin 0 -> 1561 bytes .../rich/__pycache__/abc.cpython-310.pyc | Bin 0 -> 1324 bytes .../rich/__pycache__/align.cpython-310.pyc | Bin 0 -> 7952 bytes .../rich/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 5992 bytes .../rich/__pycache__/bar.cpython-310.pyc | Bin 0 -> 2993 bytes .../rich/__pycache__/box.cpython-310.pyc | Bin 0 -> 8413 bytes .../rich/__pycache__/cells.cpython-310.pyc | Bin 0 -> 4163 bytes .../rich/__pycache__/color.cpython-310.pyc | Bin 0 -> 17730 bytes .../__pycache__/color_triplet.cpython-310.pyc | Bin 0 -> 1447 bytes .../rich/__pycache__/columns.cpython-310.pyc | Bin 0 -> 6207 bytes .../rich/__pycache__/console.cpython-310.pyc | Bin 0 -> 82822 bytes .../__pycache__/constrain.cpython-310.pyc | Bin 0 -> 1764 bytes .../__pycache__/containers.cpython-310.pyc | Bin 0 -> 6496 bytes .../rich/__pycache__/control.cpython-310.pyc | Bin 0 -> 8169 bytes .../default_styles.cpython-310.pyc | Bin 0 -> 6253 bytes .../rich/__pycache__/diagnose.cpython-310.pyc | Bin 0 -> 1231 bytes .../rich/__pycache__/emoji.cpython-310.pyc | Bin 0 -> 3277 bytes .../rich/__pycache__/errors.cpython-310.pyc | Bin 0 -> 1537 bytes .../__pycache__/file_proxy.cpython-310.pyc | Bin 0 -> 2410 bytes .../rich/__pycache__/filesize.cpython-310.pyc | Bin 0 -> 2627 bytes .../__pycache__/highlighter.cpython-310.pyc | Bin 0 -> 8069 bytes .../rich/__pycache__/json.cpython-310.pyc | Bin 0 -> 4741 bytes .../rich/__pycache__/jupyter.cpython-310.pyc | Bin 0 -> 4009 bytes .../rich/__pycache__/layout.cpython-310.pyc | Bin 0 -> 14657 bytes .../rich/__pycache__/live.cpython-310.pyc | Bin 0 -> 11687 bytes .../__pycache__/live_render.cpython-310.pyc | Bin 0 -> 3412 bytes .../rich/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9920 bytes .../rich/__pycache__/markup.cpython-310.pyc | Bin 0 -> 5951 bytes .../rich/__pycache__/measure.cpython-310.pyc | Bin 0 -> 5086 bytes .../rich/__pycache__/padding.cpython-310.pyc | Bin 0 -> 4492 bytes .../rich/__pycache__/pager.cpython-310.pyc | Bin 0 -> 1486 bytes .../rich/__pycache__/palette.cpython-310.pyc | Bin 0 -> 3718 bytes .../rich/__pycache__/panel.cpython-310.pyc | Bin 0 -> 7438 bytes .../rich/__pycache__/pretty.cpython-310.pyc | Bin 0 -> 27531 bytes .../rich/__pycache__/progress.cpython-310.pyc | Bin 0 -> 54028 bytes .../__pycache__/progress_bar.cpython-310.pyc | Bin 0 -> 6921 bytes .../rich/__pycache__/prompt.cpython-310.pyc | Bin 0 -> 11311 bytes .../rich/__pycache__/protocol.cpython-310.pyc | Bin 0 -> 1362 bytes .../rich/__pycache__/region.cpython-310.pyc | Bin 0 -> 537 bytes .../rich/__pycache__/repr.cpython-310.pyc | Bin 0 -> 4106 bytes .../rich/__pycache__/rule.cpython-310.pyc | Bin 0 -> 3953 bytes .../rich/__pycache__/scope.cpython-310.pyc | Bin 0 -> 2999 bytes .../rich/__pycache__/screen.cpython-310.pyc | Bin 0 -> 1889 bytes .../rich/__pycache__/segment.cpython-310.pyc | Bin 0 -> 20793 bytes .../rich/__pycache__/spinner.cpython-310.pyc | Bin 0 -> 4410 bytes .../rich/__pycache__/status.cpython-310.pyc | Bin 0 -> 4603 bytes .../rich/__pycache__/style.cpython-310.pyc | Bin 0 -> 21340 bytes .../rich/__pycache__/styled.cpython-310.pyc | Bin 0 -> 1773 bytes .../rich/__pycache__/syntax.cpython-310.pyc | Bin 0 -> 25762 bytes .../rich/__pycache__/table.cpython-310.pyc | Bin 0 -> 29960 bytes .../terminal_theme.cpython-310.pyc | Bin 0 -> 3026 bytes .../rich/__pycache__/text.cpython-310.pyc | Bin 0 -> 40126 bytes .../rich/__pycache__/theme.cpython-310.pyc | Bin 0 -> 4848 bytes .../rich/__pycache__/themes.cpython-310.pyc | Bin 0 -> 303 bytes .../__pycache__/traceback.cpython-310.pyc | Bin 0 -> 21721 bytes .../rich/__pycache__/tree.cpython-310.pyc | Bin 0 -> 7344 bytes .../pip/_vendor/rich/_cell_widths.py | 451 + .../pip/_vendor/rich/_emoji_codes.py | 3610 +++++++ .../pip/_vendor/rich/_emoji_replace.py | 32 + .../pip/_vendor/rich/_export_format.py | 76 + .../pip/_vendor/rich/_extension.py | 10 + .../site-packages/pip/_vendor/rich/_fileno.py | 24 + .../pip/_vendor/rich/_inspect.py | 270 + .../pip/_vendor/rich/_log_render.py | 94 + .../site-packages/pip/_vendor/rich/_loop.py | 43 + .../pip/_vendor/rich/_null_file.py | 69 + .../pip/_vendor/rich/_palettes.py | 309 + .../site-packages/pip/_vendor/rich/_pick.py | 17 + .../site-packages/pip/_vendor/rich/_ratio.py | 160 + .../pip/_vendor/rich/_spinners.py | 482 + .../site-packages/pip/_vendor/rich/_stack.py | 16 + .../site-packages/pip/_vendor/rich/_timer.py | 19 + .../pip/_vendor/rich/_win32_console.py | 662 ++ .../pip/_vendor/rich/_windows.py | 72 + .../pip/_vendor/rich/_windows_renderer.py | 56 + .../site-packages/pip/_vendor/rich/_wrap.py | 56 + .../site-packages/pip/_vendor/rich/abc.py | 33 + .../site-packages/pip/_vendor/rich/align.py | 311 + .../site-packages/pip/_vendor/rich/ansi.py | 240 + .../site-packages/pip/_vendor/rich/bar.py | 94 + .../site-packages/pip/_vendor/rich/box.py | 517 + .../site-packages/pip/_vendor/rich/cells.py | 154 + .../site-packages/pip/_vendor/rich/color.py | 622 ++ .../pip/_vendor/rich/color_triplet.py | 38 + .../site-packages/pip/_vendor/rich/columns.py | 187 + .../site-packages/pip/_vendor/rich/console.py | 2633 +++++ .../pip/_vendor/rich/constrain.py | 37 + .../pip/_vendor/rich/containers.py | 167 + .../site-packages/pip/_vendor/rich/control.py | 225 + .../pip/_vendor/rich/default_styles.py | 190 + .../pip/_vendor/rich/diagnose.py | 37 + .../site-packages/pip/_vendor/rich/emoji.py | 96 + .../site-packages/pip/_vendor/rich/errors.py | 34 + .../pip/_vendor/rich/file_proxy.py | 57 + .../pip/_vendor/rich/filesize.py | 89 + .../pip/_vendor/rich/highlighter.py | 232 + .../site-packages/pip/_vendor/rich/json.py | 140 + .../site-packages/pip/_vendor/rich/jupyter.py | 101 + .../site-packages/pip/_vendor/rich/layout.py | 443 + .../site-packages/pip/_vendor/rich/live.py | 375 + .../pip/_vendor/rich/live_render.py | 113 + .../site-packages/pip/_vendor/rich/logging.py | 289 + .../site-packages/pip/_vendor/rich/markup.py | 246 + .../site-packages/pip/_vendor/rich/measure.py | 151 + .../site-packages/pip/_vendor/rich/padding.py | 141 + .../site-packages/pip/_vendor/rich/pager.py | 34 + .../site-packages/pip/_vendor/rich/palette.py | 100 + .../site-packages/pip/_vendor/rich/panel.py | 308 + .../site-packages/pip/_vendor/rich/pretty.py | 994 ++ .../pip/_vendor/rich/progress.py | 1702 ++++ .../pip/_vendor/rich/progress_bar.py | 224 + .../site-packages/pip/_vendor/rich/prompt.py | 376 + .../pip/_vendor/rich/protocol.py | 42 + .../site-packages/pip/_vendor/rich/region.py | 10 + .../site-packages/pip/_vendor/rich/repr.py | 149 + .../site-packages/pip/_vendor/rich/rule.py | 130 + .../site-packages/pip/_vendor/rich/scope.py | 86 + .../site-packages/pip/_vendor/rich/screen.py | 54 + .../site-packages/pip/_vendor/rich/segment.py | 739 ++ .../site-packages/pip/_vendor/rich/spinner.py | 137 + .../site-packages/pip/_vendor/rich/status.py | 132 + .../site-packages/pip/_vendor/rich/style.py | 796 ++ .../site-packages/pip/_vendor/rich/styled.py | 42 + .../site-packages/pip/_vendor/rich/syntax.py | 948 ++ .../site-packages/pip/_vendor/rich/table.py | 1002 ++ .../pip/_vendor/rich/terminal_theme.py | 153 + .../site-packages/pip/_vendor/rich/text.py | 1307 +++ .../site-packages/pip/_vendor/rich/theme.py | 115 + .../site-packages/pip/_vendor/rich/themes.py | 5 + .../pip/_vendor/rich/traceback.py | 756 ++ .../site-packages/pip/_vendor/rich/tree.py | 251 + .../site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 608 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 17268 bytes .../__pycache__/_asyncio.cpython-310.pyc | Bin 0 -> 2882 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 0 -> 1515 bytes .../__pycache__/after.cpython-310.pyc | Bin 0 -> 1289 bytes .../__pycache__/before.cpython-310.pyc | Bin 0 -> 1167 bytes .../__pycache__/before_sleep.cpython-310.pyc | Bin 0 -> 1597 bytes .../tenacity/__pycache__/nap.cpython-310.pyc | Bin 0 -> 1209 bytes .../__pycache__/retry.cpython-310.pyc | Bin 0 -> 9781 bytes .../tenacity/__pycache__/stop.cpython-310.pyc | Bin 0 -> 4335 bytes .../__pycache__/tornadoweb.cpython-310.pyc | Bin 0 -> 1774 bytes .../tenacity/__pycache__/wait.cpython-310.pyc | Bin 0 -> 9296 bytes .../pip/_vendor/tenacity/_asyncio.py | 94 + .../pip/_vendor/tenacity/_utils.py | 76 + .../pip/_vendor/tenacity/after.py | 51 + .../pip/_vendor/tenacity/before.py | 46 + .../pip/_vendor/tenacity/before_sleep.py | 71 + .../site-packages/pip/_vendor/tenacity/nap.py | 43 + .../pip/_vendor/tenacity/retry.py | 272 + .../pip/_vendor/tenacity/stop.py | 103 + .../pip/_vendor/tenacity/tornadoweb.py | 59 + .../pip/_vendor/tenacity/wait.py | 228 + .../pip/_vendor/tomli/__init__.py | 11 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 365 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 0 -> 17079 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 0 -> 2911 bytes .../tomli/__pycache__/_types.cpython-310.pyc | Bin 0 -> 335 bytes .../pip/_vendor/tomli/_parser.py | 691 ++ .../site-packages/pip/_vendor/tomli/_re.py | 107 + .../site-packages/pip/_vendor/tomli/_types.py | 10 + .../pip/_vendor/typing_extensions.py | 3072 ++++++ .../pip/_vendor/urllib3/__init__.py | 102 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2519 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 0 -> 10873 bytes .../__pycache__/_version.cpython-310.pyc | Bin 0 -> 224 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 13719 bytes .../connectionpool.cpython-310.pyc | Bin 0 -> 25795 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 11004 bytes .../__pycache__/fields.cpython-310.pyc | Bin 0 -> 8195 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 0 -> 2760 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 0 -> 15074 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 5636 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 22526 bytes .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 572 ++ .../pip/_vendor/urllib3/connectionpool.py | 1132 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 209 bytes .../_appengine_environ.cpython-310.pyc | Bin 0 -> 1389 bytes .../__pycache__/appengine.cpython-310.pyc | Bin 0 -> 8206 bytes .../__pycache__/ntlmpool.cpython-310.pyc | Bin 0 -> 3633 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 0 -> 15821 bytes .../securetransport.cpython-310.pyc | Bin 0 -> 21951 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 0 -> 5611 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 226 bytes .../__pycache__/bindings.cpython-310.pyc | Bin 0 -> 10722 bytes .../__pycache__/low_level.cpython-310.pyc | Bin 0 -> 9109 bytes .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 + .../urllib3/contrib/securetransport.py | 921 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 210 bytes .../packages/__pycache__/six.cpython-310.pyc | Bin 0 -> 27670 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 220 bytes .../__pycache__/makefile.cpython-310.pyc | Bin 0 -> 1320 bytes .../weakref_finalize.cpython-310.pyc | Bin 0 -> 4918 bytes .../urllib3/packages/backports/makefile.py | 51 + .../packages/backports/weakref_finalize.py | 155 + .../pip/_vendor/urllib3/packages/six.py | 1076 +++ .../pip/_vendor/urllib3/poolmanager.py | 537 + .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 879 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1119 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 3447 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 0 -> 1354 bytes .../util/__pycache__/queue.cpython-310.pyc | Bin 0 -> 1074 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 0 -> 3381 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 0 -> 2367 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 0 -> 16157 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 0 -> 11321 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 0 -> 3271 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 0 -> 7409 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 0 -> 9154 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 0 -> 10729 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 0 -> 3103 bytes .../pip/_vendor/urllib3/util/connection.py | 149 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 137 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 620 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../urllib3/util/ssl_match_hostname.py | 159 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 271 + .../pip/_vendor/urllib3/util/url.py | 435 + .../pip/_vendor/urllib3/util/wait.py | 152 + .../site-packages/pip/_vendor/vendor.txt | 23 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9756 bytes .../__pycache__/labels.cpython-310.pyc | Bin 0 -> 5246 bytes .../__pycache__/mklabels.cpython-310.pyc | Bin 0 -> 1951 bytes .../__pycache__/tests.cpython-310.pyc | Bin 0 -> 5053 bytes .../x_user_defined.cpython-310.pyc | Bin 0 -> 2602 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + .../lib/python3.10/site-packages/pip/py.typed | 4 + .../site-packages/pkg_resources/__init__.py | 3303 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 100625 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 203 bytes .../__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 20264 bytes .../__pycache__/pyparsing.cpython-310.pyc | Bin 0 -> 198818 bytes .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 26 + .../_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 610 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 466 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7320 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4632 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2990 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9318 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 4004 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 22208 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12240 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3595 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12945 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../pkg_resources/_vendor/packaging/tags.py | 484 + .../pkg_resources/_vendor/packaging/utils.py | 136 + .../_vendor/packaging/version.py | 504 + .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2911 bytes .../__pycache__/setup.cpython-310.pyc | Bin 0 -> 331 bytes .../data/my-test-package-source/setup.py | 6 + .../INSTALLER | 1 + .../METADATA | 247 + .../RECORD | 62 + .../REQUESTED | 0 .../WHEEL | 5 + .../top_level.txt | 1 + .../setuptools-59.6.0.dist-info/INSTALLER | 1 + .../setuptools-59.6.0.dist-info/LICENSE | 19 + .../setuptools-59.6.0.dist-info/METADATA | 124 + .../setuptools-59.6.0.dist-info/RECORD | 298 + .../setuptools-59.6.0.dist-info/REQUESTED | 0 .../setuptools-59.6.0.dist-info/WHEEL | 5 + .../entry_points.txt | 56 + .../setuptools-59.6.0.dist-info/top_level.txt | 4 + .../site-packages/setuptools/__init__.py | 242 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 8607 bytes .../_deprecation_warning.cpython-310.pyc | Bin 0 -> 564 bytes .../__pycache__/_imp.cpython-310.pyc | Bin 0 -> 2090 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 5860 bytes .../__pycache__/build_meta.cpython-310.pyc | Bin 0 -> 9478 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 20943 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 871 bytes .../__pycache__/depends.cpython-310.pyc | Bin 0 -> 5310 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 36377 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 1516 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 1960 bytes .../__pycache__/glob.cpython-310.pyc | Bin 0 -> 3749 bytes .../__pycache__/installer.cpython-310.pyc | Bin 0 -> 2995 bytes .../__pycache__/launch.cpython-310.pyc | Bin 0 -> 921 bytes .../__pycache__/monkey.cpython-310.pyc | Bin 0 -> 4649 bytes .../__pycache__/msvc.cpython-310.pyc | Bin 0 -> 42653 bytes .../__pycache__/namespaces.cpython-310.pyc | Bin 0 -> 3632 bytes .../__pycache__/package_index.cpython-310.pyc | Bin 0 -> 32747 bytes .../__pycache__/py34compat.cpython-310.pyc | Bin 0 -> 496 bytes .../__pycache__/sandbox.cpython-310.pyc | Bin 0 -> 15772 bytes .../__pycache__/unicode_utils.cpython-310.pyc | Bin 0 -> 1126 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 338 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 7364 bytes .../windows_support.cpython-310.pyc | Bin 0 -> 1039 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 24 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 572 bytes .../__pycache__/_msvccompiler.cpython-310.pyc | Bin 0 -> 13849 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 6577 bytes .../__pycache__/bcppcompiler.cpython-310.pyc | Bin 0 -> 6564 bytes .../__pycache__/ccompiler.cpython-310.pyc | Bin 0 -> 33327 bytes .../__pycache__/cmd.cpython-310.pyc | Bin 0 -> 13964 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 3605 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 7104 bytes .../cygwinccompiler.cpython-310.pyc | Bin 0 -> 9017 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 266 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 2787 bytes .../__pycache__/dir_util.cpython-310.pyc | Bin 0 -> 5898 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 34063 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 5008 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 7022 bytes .../__pycache__/fancy_getopt.cpython-310.pyc | Bin 0 -> 10648 bytes .../__pycache__/file_util.cpython-310.pyc | Bin 0 -> 5992 bytes .../__pycache__/filelist.cpython-310.pyc | Bin 0 -> 10838 bytes .../__pycache__/log.cpython-310.pyc | Bin 0 -> 2323 bytes .../__pycache__/msvc9compiler.cpython-310.pyc | Bin 0 -> 17578 bytes .../__pycache__/msvccompiler.cpython-310.pyc | Bin 0 -> 14797 bytes .../__pycache__/py35compat.cpython-310.pyc | Bin 0 -> 642 bytes .../__pycache__/py38compat.cpython-310.pyc | Bin 0 -> 439 bytes .../__pycache__/spawn.cpython-310.pyc | Bin 0 -> 2909 bytes .../__pycache__/sysconfig.cpython-310.pyc | Bin 0 -> 12894 bytes .../__pycache__/text_file.cpython-310.pyc | Bin 0 -> 8485 bytes .../__pycache__/unixccompiler.cpython-310.pyc | Bin 0 -> 6817 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 14760 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 7857 bytes .../versionpredicate.cpython-310.pyc | Bin 0 -> 5352 bytes .../setuptools/_distutils/_msvccompiler.py | 561 ++ .../setuptools/_distutils/archive_util.py | 256 + .../setuptools/_distutils/bcppcompiler.py | 393 + .../setuptools/_distutils/ccompiler.py | 1123 +++ .../setuptools/_distutils/cmd.py | 403 + .../setuptools/_distutils/command/__init__.py | 31 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 545 bytes .../command/__pycache__/bdist.cpython-310.pyc | Bin 0 -> 3679 bytes .../__pycache__/bdist_dumb.cpython-310.pyc | Bin 0 -> 3660 bytes .../__pycache__/bdist_msi.cpython-310.pyc | Bin 0 -> 19736 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 12302 bytes .../__pycache__/bdist_wininst.cpython-310.pyc | Bin 0 -> 8645 bytes .../command/__pycache__/build.cpython-310.pyc | Bin 0 -> 3907 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 4884 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 16234 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 9903 bytes .../__pycache__/build_scripts.cpython-310.pyc | Bin 0 -> 4026 bytes .../command/__pycache__/check.cpython-310.pyc | Bin 0 -> 5023 bytes .../command/__pycache__/clean.cpython-310.pyc | Bin 0 -> 2162 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 10344 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 15292 bytes .../__pycache__/install_data.cpython-310.pyc | Bin 0 -> 2361 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 3326 bytes .../install_headers.cpython-310.pyc | Bin 0 -> 1784 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 5186 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2213 bytes .../__pycache__/py37compat.cpython-310.pyc | Bin 0 -> 1058 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 8697 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 14513 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 5389 bytes .../setuptools/_distutils/command/bdist.py | 143 + .../_distutils/command/bdist_dumb.py | 123 + .../_distutils/command/bdist_msi.py | 749 ++ .../_distutils/command/bdist_rpm.py | 579 ++ .../_distutils/command/bdist_wininst.py | 377 + .../setuptools/_distutils/command/build.py | 157 + .../_distutils/command/build_clib.py | 209 + .../_distutils/command/build_ext.py | 755 ++ .../setuptools/_distutils/command/build_py.py | 392 + .../_distutils/command/build_scripts.py | 152 + .../setuptools/_distutils/command/check.py | 148 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 344 + .../setuptools/_distutils/command/install.py | 721 ++ .../_distutils/command/install_data.py | 79 + .../_distutils/command/install_egg_info.py | 84 + .../_distutils/command/install_headers.py | 47 + .../_distutils/command/install_lib.py | 217 + .../_distutils/command/install_scripts.py | 60 + .../_distutils/command/py37compat.py | 30 + .../setuptools/_distutils/command/register.py | 304 + .../setuptools/_distutils/command/sdist.py | 494 + .../setuptools/_distutils/command/upload.py | 214 + .../setuptools/_distutils/config.py | 130 + .../setuptools/_distutils/core.py | 249 + .../setuptools/_distutils/cygwinccompiler.py | 425 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 92 + .../setuptools/_distutils/dir_util.py | 210 + .../setuptools/_distutils/dist.py | 1257 +++ .../setuptools/_distutils/errors.py | 97 + .../setuptools/_distutils/extension.py | 240 + .../setuptools/_distutils/fancy_getopt.py | 457 + .../setuptools/_distutils/file_util.py | 238 + .../setuptools/_distutils/filelist.py | 355 + .../setuptools/_distutils/log.py | 77 + .../setuptools/_distutils/msvc9compiler.py | 788 ++ .../setuptools/_distutils/msvccompiler.py | 643 ++ .../setuptools/_distutils/py35compat.py | 19 + .../setuptools/_distutils/py38compat.py | 7 + .../setuptools/_distutils/spawn.py | 106 + .../setuptools/_distutils/sysconfig.py | 601 ++ .../setuptools/_distutils/text_file.py | 286 + .../setuptools/_distutils/unixccompiler.py | 325 + .../setuptools/_distutils/util.py | 548 ++ .../setuptools/_distutils/version.py | 363 + .../setuptools/_distutils/versionpredicate.py | 169 + .../site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 200 bytes .../__pycache__/ordered_set.cpython-310.pyc | Bin 0 -> 16336 bytes .../__pycache__/pyparsing.cpython-310.pyc | Bin 0 -> 198815 bytes .../_vendor/more_itertools/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 281 bytes .../__pycache__/more.cpython-310.pyc | Bin 0 -> 110011 bytes .../__pycache__/recipes.cpython-310.pyc | Bin 0 -> 17981 bytes .../setuptools/_vendor/more_itertools/more.py | 3825 ++++++++ .../_vendor/more_itertools/recipes.py | 620 ++ .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 26 + .../setuptools/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 607 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 463 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7317 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4629 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2987 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9312 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 3998 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 22205 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12237 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3592 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12942 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../setuptools/_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../setuptools/_vendor/packaging/tags.py | 484 + .../setuptools/_vendor/packaging/utils.py | 136 + .../setuptools/_vendor/packaging/version.py | 504 + .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/archive_util.py | 205 + .../site-packages/setuptools/build_meta.py | 290 + .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli-arm64.exe | Bin 0 -> 137216 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 8 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 389 bytes .../command/__pycache__/alias.cpython-310.pyc | Bin 0 -> 2391 bytes .../__pycache__/bdist_egg.cpython-310.pyc | Bin 0 -> 13117 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 1604 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 2480 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 9907 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 8280 bytes .../__pycache__/develop.cpython-310.pyc | Bin 0 -> 6167 bytes .../__pycache__/dist_info.cpython-310.pyc | Bin 0 -> 1409 bytes .../__pycache__/easy_install.cpython-310.pyc | Bin 0 -> 65190 bytes .../__pycache__/egg_info.cpython-310.pyc | Bin 0 -> 22765 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 4215 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 2940 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 5155 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2444 bytes .../__pycache__/py36compat.cpython-310.pyc | Bin 0 -> 4551 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 855 bytes .../__pycache__/rotate.cpython-310.pyc | Bin 0 -> 2522 bytes .../__pycache__/saveopts.cpython-310.pyc | Bin 0 -> 941 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 6970 bytes .../__pycache__/setopt.cpython-310.pyc | Bin 0 -> 4703 bytes .../command/__pycache__/test.cpython-310.pyc | Bin 0 -> 8147 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 828 bytes .../__pycache__/upload_docs.cpython-310.pyc | Bin 0 -> 6197 bytes .../site-packages/setuptools/command/alias.py | 78 + .../setuptools/command/bdist_egg.py | 456 + .../setuptools/command/bdist_rpm.py | 40 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 328 + .../setuptools/command/build_py.py | 242 + .../setuptools/command/develop.py | 193 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2354 +++++ .../setuptools/command/egg_info.py | 755 ++ .../setuptools/command/install.py | 132 + .../setuptools/command/install_egg_info.py | 82 + .../setuptools/command/install_lib.py | 148 + .../setuptools/command/install_scripts.py | 69 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 134 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 64 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 196 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 252 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 202 + .../site-packages/setuptools/config.py | 751 ++ .../site-packages/setuptools/dep_util.py | 25 + .../site-packages/setuptools/depends.py | 176 + .../site-packages/setuptools/dist.py | 1156 +++ .../site-packages/setuptools/errors.py | 40 + .../site-packages/setuptools/extension.py | 55 + .../setuptools/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2950 bytes .../site-packages/setuptools/glob.py | 167 + .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui-arm64.exe | Bin 0 -> 137728 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/installer.py | 104 + .../site-packages/setuptools/launch.py | 36 + .../site-packages/setuptools/monkey.py | 177 + .../site-packages/setuptools/msvc.py | 1805 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1127 +++ .../site-packages/setuptools/py34compat.py | 13 + .../site-packages/setuptools/sandbox.py | 530 + .../setuptools/script (dev).tmpl | 6 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/unicode_utils.py | 42 + .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/wheel.py | 213 + .../setuptools/windows_support.py | 29 + Color_Sorting/.venv/lib64 | 1 + Color_Sorting/.venv/pyvenv.cfg | 3 + Color_Sorting/Test_Python_Obstical_sorter.py | 189 +- Color_Sorting/Test_Python_PixyCam.py | 38 - Follow_the_line/.venv/bin/Activate.ps1 | 247 + Follow_the_line/.venv/bin/activate | 69 + Follow_the_line/.venv/bin/activate.csh | 26 + Follow_the_line/.venv/bin/activate.fish | 66 + Follow_the_line/.venv/bin/pip | 8 + Follow_the_line/.venv/bin/pip3 | 8 + Follow_the_line/.venv/bin/pip3.10 | 8 + Follow_the_line/.venv/bin/pip3.11 | 8 + Follow_the_line/.venv/bin/python | 1 + Follow_the_line/.venv/bin/python3 | 1 + Follow_the_line/.venv/bin/python3.10 | 1 + .../site-packages/PIL/BdfFontFile.py | 122 + .../site-packages/PIL/BlpImagePlugin.py | 472 + .../site-packages/PIL/BmpImagePlugin.py | 471 + .../site-packages/PIL/BufrStubImagePlugin.py | 73 + .../site-packages/PIL/ContainerIO.py | 120 + .../site-packages/PIL/CurImagePlugin.py | 75 + .../site-packages/PIL/DcxImagePlugin.py | 79 + .../site-packages/PIL/DdsImagePlugin.py | 291 + .../site-packages/PIL/EpsImagePlugin.py | 466 + .../python3.10/site-packages/PIL/ExifTags.py | 380 + .../site-packages/PIL/FitsImagePlugin.py | 73 + .../site-packages/PIL/FliImagePlugin.py | 171 + .../python3.10/site-packages/PIL/FontFile.py | 110 + .../site-packages/PIL/FpxImagePlugin.py | 253 + .../site-packages/PIL/FtexImagePlugin.py | 113 + .../site-packages/PIL/GbrImagePlugin.py | 102 + .../site-packages/PIL/GdImageFile.py | 97 + .../site-packages/PIL/GifImagePlugin.py | 1064 ++ .../site-packages/PIL/GimpGradientFile.py | 137 + .../site-packages/PIL/GimpPaletteFile.py | 56 + .../site-packages/PIL/GribStubImagePlugin.py | 73 + .../site-packages/PIL/Hdf5StubImagePlugin.py | 73 + .../site-packages/PIL/IcnsImagePlugin.py | 399 + .../site-packages/PIL/IcoImagePlugin.py | 358 + .../site-packages/PIL/ImImagePlugin.py | 371 + .../lib/python3.10/site-packages/PIL/Image.py | 3910 ++++++++ .../site-packages/PIL/ImageChops.py | 303 + .../python3.10/site-packages/PIL/ImageCms.py | 1009 ++ .../site-packages/PIL/ImageColor.py | 313 + .../python3.10/site-packages/PIL/ImageDraw.py | 1038 ++ .../site-packages/PIL/ImageDraw2.py | 193 + .../site-packages/PIL/ImageEnhance.py | 103 + .../python3.10/site-packages/PIL/ImageFile.py | 773 ++ .../site-packages/PIL/ImageFilter.py | 550 ++ .../python3.10/site-packages/PIL/ImageFont.py | 997 ++ .../python3.10/site-packages/PIL/ImageGrab.py | 169 + .../python3.10/site-packages/PIL/ImageMath.py | 263 + .../python3.10/site-packages/PIL/ImageMode.py | 90 + .../site-packages/PIL/ImageMorph.py | 254 + .../python3.10/site-packages/PIL/ImageOps.py | 628 ++ .../site-packages/PIL/ImagePalette.py | 266 + .../python3.10/site-packages/PIL/ImagePath.py | 19 + .../python3.10/site-packages/PIL/ImageQt.py | 216 + .../site-packages/PIL/ImageSequence.py | 76 + .../python3.10/site-packages/PIL/ImageShow.py | 323 + .../python3.10/site-packages/PIL/ImageStat.py | 148 + .../python3.10/site-packages/PIL/ImageTk.py | 283 + .../site-packages/PIL/ImageTransform.py | 102 + .../python3.10/site-packages/PIL/ImageWin.py | 230 + .../site-packages/PIL/ImtImagePlugin.py | 101 + .../site-packages/PIL/IptcImagePlugin.py | 230 + .../site-packages/PIL/Jpeg2KImagePlugin.py | 399 + .../site-packages/PIL/JpegImagePlugin.py | 849 ++ .../site-packages/PIL/JpegPresets.py | 240 + .../site-packages/PIL/McIdasImagePlugin.py | 75 + .../site-packages/PIL/MicImagePlugin.py | 103 + .../site-packages/PIL/MpegImagePlugin.py | 82 + .../site-packages/PIL/MpoImagePlugin.py | 197 + .../site-packages/PIL/MspImagePlugin.py | 194 + .../python3.10/site-packages/PIL/PSDraw.py | 229 + .../site-packages/PIL/PaletteFile.py | 51 + .../site-packages/PIL/PalmImagePlugin.py | 225 + .../site-packages/PIL/PcdImagePlugin.py | 62 + .../site-packages/PIL/PcfFontFile.py | 256 + .../site-packages/PIL/PcxImagePlugin.py | 221 + .../site-packages/PIL/PdfImagePlugin.py | 284 + .../python3.10/site-packages/PIL/PdfParser.py | 996 ++ .../site-packages/PIL/PixarImagePlugin.py | 69 + .../site-packages/PIL/PngImagePlugin.py | 1456 +++ .../site-packages/PIL/PpmImagePlugin.py | 347 + .../site-packages/PIL/PsdImagePlugin.py | 303 + .../python3.10/site-packages/PIL/PyAccess.py | 363 + .../site-packages/PIL/QoiImagePlugin.py | 105 + .../site-packages/PIL/SgiImagePlugin.py | 231 + .../site-packages/PIL/SpiderImagePlugin.py | 318 + .../site-packages/PIL/SunImagePlugin.py | 139 + .../lib/python3.10/site-packages/PIL/TarIO.py | 66 + .../site-packages/PIL/TgaImagePlugin.py | 255 + .../site-packages/PIL/TiffImagePlugin.py | 2163 +++++ .../python3.10/site-packages/PIL/TiffTags.py | 560 ++ .../site-packages/PIL/WalImageFile.py | 123 + .../site-packages/PIL/WebPImagePlugin.py | 366 + .../site-packages/PIL/WmfImagePlugin.py | 178 + .../site-packages/PIL/XVThumbImagePlugin.py | 78 + .../site-packages/PIL/XbmImagePlugin.py | 94 + .../site-packages/PIL/XpmImagePlugin.py | 128 + .../python3.10/site-packages/PIL/__init__.py | 84 + .../python3.10/site-packages/PIL/__main__.py | 3 + .../__pycache__/BdfFontFile.cpython-310.pyc | Bin 0 -> 2514 bytes .../BlpImagePlugin.cpython-310.pyc | Bin 0 -> 12334 bytes .../BmpImagePlugin.cpython-310.pyc | Bin 0 -> 8824 bytes .../BufrStubImagePlugin.cpython-310.pyc | Bin 0 -> 1688 bytes .../__pycache__/ContainerIO.cpython-310.pyc | Bin 0 -> 2866 bytes .../CurImagePlugin.cpython-310.pyc | Bin 0 -> 1370 bytes .../DcxImagePlugin.cpython-310.pyc | Bin 0 -> 1603 bytes .../DdsImagePlugin.cpython-310.pyc | Bin 0 -> 6667 bytes .../EpsImagePlugin.cpython-310.pyc | Bin 0 -> 8683 bytes .../PIL/__pycache__/ExifTags.cpython-310.pyc | Bin 0 -> 10195 bytes .../FitsImagePlugin.cpython-310.pyc | Bin 0 -> 1644 bytes .../FliImagePlugin.cpython-310.pyc | Bin 0 -> 3600 bytes .../PIL/__pycache__/FontFile.cpython-310.pyc | Bin 0 -> 2366 bytes .../FpxImagePlugin.cpython-310.pyc | Bin 0 -> 4064 bytes .../FtexImagePlugin.cpython-310.pyc | Bin 0 -> 3716 bytes .../GbrImagePlugin.cpython-310.pyc | Bin 0 -> 1926 bytes .../__pycache__/GdImageFile.cpython-310.pyc | Bin 0 -> 2488 bytes .../GifImagePlugin.cpython-310.pyc | Bin 0 -> 19509 bytes .../GimpGradientFile.cpython-310.pyc | Bin 0 -> 3310 bytes .../GimpPaletteFile.cpython-310.pyc | Bin 0 -> 1426 bytes .../GribStubImagePlugin.cpython-310.pyc | Bin 0 -> 1685 bytes .../Hdf5StubImagePlugin.cpython-310.pyc | Bin 0 -> 1676 bytes .../IcnsImagePlugin.cpython-310.pyc | Bin 0 -> 9567 bytes .../IcoImagePlugin.cpython-310.pyc | Bin 0 -> 7667 bytes .../__pycache__/ImImagePlugin.cpython-310.pyc | Bin 0 -> 6619 bytes .../PIL/__pycache__/Image.cpython-310.pyc | Bin 0 -> 105555 bytes .../__pycache__/ImageChops.cpython-310.pyc | Bin 0 -> 6950 bytes .../PIL/__pycache__/ImageCms.cpython-310.pyc | Bin 0 -> 32431 bytes .../__pycache__/ImageColor.cpython-310.pyc | Bin 0 -> 7776 bytes .../PIL/__pycache__/ImageDraw.cpython-310.pyc | Bin 0 -> 22641 bytes .../__pycache__/ImageDraw2.cpython-310.pyc | Bin 0 -> 5837 bytes .../__pycache__/ImageEnhance.cpython-310.pyc | Bin 0 -> 3464 bytes .../PIL/__pycache__/ImageFile.cpython-310.pyc | Bin 0 -> 17233 bytes .../__pycache__/ImageFilter.cpython-310.pyc | Bin 0 -> 16232 bytes .../PIL/__pycache__/ImageFont.cpython-310.pyc | Bin 0 -> 38414 bytes .../PIL/__pycache__/ImageGrab.cpython-310.pyc | Bin 0 -> 3373 bytes .../PIL/__pycache__/ImageMath.cpython-310.pyc | Bin 0 -> 7844 bytes .../PIL/__pycache__/ImageMode.cpython-310.pyc | Bin 0 -> 2160 bytes .../__pycache__/ImageMorph.cpython-310.pyc | Bin 0 -> 7325 bytes .../PIL/__pycache__/ImageOps.cpython-310.pyc | Bin 0 -> 16908 bytes .../__pycache__/ImagePalette.cpython-310.pyc | Bin 0 -> 6859 bytes .../PIL/__pycache__/ImagePath.cpython-310.pyc | Bin 0 -> 244 bytes .../PIL/__pycache__/ImageQt.cpython-310.pyc | Bin 0 -> 4491 bytes .../__pycache__/ImageSequence.cpython-310.pyc | Bin 0 -> 2342 bytes .../PIL/__pycache__/ImageShow.cpython-310.pyc | Bin 0 -> 8444 bytes .../PIL/__pycache__/ImageStat.cpython-310.pyc | Bin 0 -> 3695 bytes .../PIL/__pycache__/ImageTk.cpython-310.pyc | Bin 0 -> 7216 bytes .../ImageTransform.cpython-310.pyc | Bin 0 -> 3501 bytes .../PIL/__pycache__/ImageWin.cpython-310.pyc | Bin 0 -> 8091 bytes .../ImtImagePlugin.cpython-310.pyc | Bin 0 -> 1391 bytes .../IptcImagePlugin.cpython-310.pyc | Bin 0 -> 4445 bytes .../Jpeg2KImagePlugin.cpython-310.pyc | Bin 0 -> 8689 bytes .../JpegImagePlugin.cpython-310.pyc | Bin 0 -> 18040 bytes .../__pycache__/JpegPresets.cpython-310.pyc | Bin 0 -> 7914 bytes .../McIdasImagePlugin.cpython-310.pyc | Bin 0 -> 1391 bytes .../MicImagePlugin.cpython-310.pyc | Bin 0 -> 2173 bytes .../MpegImagePlugin.cpython-310.pyc | Bin 0 -> 1987 bytes .../MpoImagePlugin.cpython-310.pyc | Bin 0 -> 4718 bytes .../MspImagePlugin.cpython-310.pyc | Bin 0 -> 3114 bytes .../PIL/__pycache__/PSDraw.cpython-310.pyc | Bin 0 -> 5630 bytes .../__pycache__/PaletteFile.cpython-310.pyc | Bin 0 -> 1393 bytes .../PalmImagePlugin.cpython-310.pyc | Bin 0 -> 6775 bytes .../PcdImagePlugin.cpython-310.pyc | Bin 0 -> 1198 bytes .../__pycache__/PcfFontFile.cpython-310.pyc | Bin 0 -> 5286 bytes .../PcxImagePlugin.cpython-310.pyc | Bin 0 -> 3756 bytes .../PdfImagePlugin.cpython-310.pyc | Bin 0 -> 4218 bytes .../PIL/__pycache__/PdfParser.cpython-310.pyc | Bin 0 -> 26897 bytes .../PixarImagePlugin.cpython-310.pyc | Bin 0 -> 1167 bytes .../PngImagePlugin.cpython-310.pyc | Bin 0 -> 30319 bytes .../PpmImagePlugin.cpython-310.pyc | Bin 0 -> 7324 bytes .../PsdImagePlugin.cpython-310.pyc | Bin 0 -> 4874 bytes .../PIL/__pycache__/PyAccess.cpython-310.pyc | Bin 0 -> 10254 bytes .../QoiImagePlugin.cpython-310.pyc | Bin 0 -> 3428 bytes .../SgiImagePlugin.cpython-310.pyc | Bin 0 -> 4005 bytes .../SpiderImagePlugin.cpython-310.pyc | Bin 0 -> 6636 bytes .../SunImagePlugin.cpython-310.pyc | Bin 0 -> 1937 bytes .../PIL/__pycache__/TarIO.cpython-310.pyc | Bin 0 -> 1591 bytes .../TgaImagePlugin.cpython-310.pyc | Bin 0 -> 4050 bytes .../TiffImagePlugin.cpython-310.pyc | Bin 0 -> 52204 bytes .../PIL/__pycache__/TiffTags.cpython-310.pyc | Bin 0 -> 12831 bytes .../__pycache__/WalImageFile.cpython-310.pyc | Bin 0 -> 2890 bytes .../WebPImagePlugin.cpython-310.pyc | Bin 0 -> 7538 bytes .../WmfImagePlugin.cpython-310.pyc | Bin 0 -> 3458 bytes .../XVThumbImagePlugin.cpython-310.pyc | Bin 0 -> 1459 bytes .../XbmImagePlugin.cpython-310.pyc | Bin 0 -> 2124 bytes .../XpmImagePlugin.cpython-310.pyc | Bin 0 -> 2279 bytes .../PIL/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1915 bytes .../PIL/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 233 bytes .../PIL/__pycache__/_binary.cpython-310.pyc | Bin 0 -> 2584 bytes .../__pycache__/_deprecate.cpython-310.pyc | Bin 0 -> 2073 bytes .../_tkinter_finder.cpython-310.pyc | Bin 0 -> 522 bytes .../PIL/__pycache__/_util.cpython-310.pyc | Bin 0 -> 1021 bytes .../PIL/__pycache__/_version.cpython-310.pyc | Bin 0 -> 207 bytes .../PIL/__pycache__/features.cpython-310.pyc | Bin 0 -> 8806 bytes .../python3.10/site-packages/PIL/_binary.py | 102 + .../site-packages/PIL/_deprecate.py | 69 + .../_imaging.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 710913 bytes ...imagingcms.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 47121 bytes ..._imagingft.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 77073 bytes ...magingmath.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 31344 bytes ...agingmorph.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 14992 bytes ..._imagingtk.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 14992 bytes .../site-packages/PIL/_tkinter_finder.py | 17 + .../lib/python3.10/site-packages/PIL/_util.py | 19 + .../python3.10/site-packages/PIL/_version.py | 2 + .../PIL/_webp.cpython-310-x86_64-linux-gnu.so | Bin 0 -> 39417 bytes .../python3.10/site-packages/PIL/features.py | 329 + .../Pillow-10.0.0.dist-info/INSTALLER | 1 + .../Pillow-10.0.0.dist-info/LICENSE | 731 ++ .../Pillow-10.0.0.dist-info/METADATA | 175 + .../Pillow-10.0.0.dist-info/RECORD | 218 + .../Pillow-10.0.0.dist-info/WHEEL | 5 + .../Pillow-10.0.0.dist-info/top_level.txt | 1 + .../Pillow-10.0.0.dist-info/zip-safe | 1 + .../Pillow.libs/libXau-154567c4.so.6.0.0 | Bin 0 -> 22081 bytes .../Pillow.libs/libbrotlicommon-702ab7f8.so.1 | Bin 0 -> 140113 bytes .../libbrotlidec-7a796284.so.1.0.9 | Bin 0 -> 54001 bytes .../libfreetype-8b16add1.so.6.20.0 | Bin 0 -> 1430857 bytes .../libharfbuzz-adaef2a2.so.0.60730.0 | Bin 0 -> 3159841 bytes .../Pillow.libs/libjpeg-dab02bf4.so.62.3.0 | Bin 0 -> 683249 bytes .../Pillow.libs/liblcms2-0821774a.so.2.0.15 | Bin 0 -> 502529 bytes .../Pillow.libs/liblzma-9dd5c569.so.5.4.3 | Bin 0 -> 270265 bytes .../Pillow.libs/libopenjp2-20e347f0.so.2.5.0 | Bin 0 -> 578001 bytes .../Pillow.libs/libpng16-39c06ea1.so.16.40.0 | Bin 0 -> 281937 bytes .../Pillow.libs/libsharpyuv-20f78091.so.0.0.1 | Bin 0 -> 37713 bytes .../Pillow.libs/libtiff-189042a3.so.6.0.1 | Bin 0 -> 696937 bytes .../Pillow.libs/libwebp-8b6d8948.so.7.1.7 | Bin 0 -> 755753 bytes .../libwebpdemux-fc93391d.so.2.0.13 | Bin 0 -> 26121 bytes .../Pillow.libs/libwebpmux-b3bcb8ec.so.3.0.12 | Bin 0 -> 54441 bytes .../Pillow.libs/libxcb-cd9c1006.so.1.1.0 | Bin 0 -> 247305 bytes .../site-packages/_distutils_hack/__init__.py | 132 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5123 bytes .../__pycache__/override.cpython-310.pyc | Bin 0 -> 248 bytes .../site-packages/_distutils_hack/override.py | 1 + .../site-packages/distutils-precedence.pth | 1 + .../site-packages/ev3dev2/__init__.py | 387 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 11788 bytes .../ev3dev2/__pycache__/auto.cpython-310.pyc | Bin 0 -> 1466 bytes .../__pycache__/button.cpython-310.pyc | Bin 0 -> 11458 bytes .../__pycache__/console.cpython-310.pyc | Bin 0 -> 6599 bytes .../__pycache__/display.cpython-310.pyc | Bin 0 -> 12441 bytes .../ev3dev2/__pycache__/led.cpython-310.pyc | Bin 0 -> 13931 bytes .../ev3dev2/__pycache__/motor.cpython-310.pyc | Bin 0 -> 85661 bytes .../ev3dev2/__pycache__/port.cpython-310.pyc | Bin 0 -> 5340 bytes .../ev3dev2/__pycache__/power.cpython-310.pyc | Bin 0 -> 2771 bytes .../ev3dev2/__pycache__/sound.cpython-310.pyc | Bin 0 -> 19907 bytes .../__pycache__/stopwatch.cpython-310.pyc | Bin 0 -> 4679 bytes .../ev3dev2/__pycache__/unit.cpython-310.pyc | Bin 0 -> 6277 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 215 bytes .../ev3dev2/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 2627 bytes .../ev3dev2/_platform/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 199 bytes .../__pycache__/brickpi.cpython-310.pyc | Bin 0 -> 878 bytes .../__pycache__/brickpi3.cpython-310.pyc | Bin 0 -> 1352 bytes .../_platform/__pycache__/ev3.cpython-310.pyc | Bin 0 -> 1190 bytes .../_platform/__pycache__/evb.cpython-310.pyc | Bin 0 -> 621 bytes .../__pycache__/fake.cpython-310.pyc | Bin 0 -> 482 bytes .../__pycache__/pistorms.cpython-310.pyc | Bin 0 -> 1382 bytes .../ev3dev2/_platform/brickpi.py | 55 + .../ev3dev2/_platform/brickpi3.py | 57 + .../site-packages/ev3dev2/_platform/ev3.py | 61 + .../site-packages/ev3dev2/_platform/evb.py | 22 + .../site-packages/ev3dev2/_platform/fake.py | 17 + .../ev3dev2/_platform/pistorms.py | 40 + .../python3.10/site-packages/ev3dev2/auto.py | 48 + .../site-packages/ev3dev2/button.py | 484 + .../site-packages/ev3dev2/console.py | 185 + .../ev3dev2/control/GyroBalancer.py | 498 + .../site-packages/ev3dev2/control/__init__.py | 0 .../__pycache__/GyroBalancer.cpython-310.pyc | Bin 0 -> 8889 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 197 bytes .../__pycache__/rc_tank.cpython-310.pyc | Bin 0 -> 1799 bytes .../__pycache__/webserver.cpython-310.pyc | Bin 0 -> 6252 bytes .../site-packages/ev3dev2/control/rc_tank.py | 46 + .../ev3dev2/control/webserver.py | 283 + .../site-packages/ev3dev2/display.py | 424 + .../site-packages/ev3dev2/fonts/__init__.py | 27 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1283 bytes .../python3.10/site-packages/ev3dev2/led.py | 600 ++ .../python3.10/site-packages/ev3dev2/motor.py | 3008 ++++++ .../python3.10/site-packages/ev3dev2/port.py | 154 + .../python3.10/site-packages/ev3dev2/power.py | 111 + .../site-packages/ev3dev2/sensor/__init__.py | 321 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9625 bytes .../sensor/__pycache__/lego.cpython-310.pyc | Bin 0 -> 25569 bytes .../site-packages/ev3dev2/sensor/lego.py | 1051 ++ .../python3.10/site-packages/ev3dev2/sound.py | 660 ++ .../site-packages/ev3dev2/stopwatch.py | 141 + .../python3.10/site-packages/ev3dev2/unit.py | 201 + .../site-packages/ev3dev2/version.py | 1 + .../python3.10/site-packages/ev3dev2/wheel.py | 73 + .../pip-23.2.dist-info/AUTHORS.txt | 737 ++ .../pip-23.2.dist-info/INSTALLER | 1 + .../pip-23.2.dist-info/LICENSE.txt | 20 + .../site-packages/pip-23.2.dist-info/METADATA | 90 + .../site-packages/pip-23.2.dist-info/RECORD | 1004 ++ .../pip-23.2.dist-info/REQUESTED | 0 .../site-packages/pip-23.2.dist-info/WHEEL | 5 + .../pip-23.2.dist-info/entry_points.txt | 4 + .../pip-23.2.dist-info/top_level.txt | 1 + .../python3.10/site-packages/pip/__init__.py | 13 + .../python3.10/site-packages/pip/__main__.py | 24 + .../site-packages/pip/__pip-runner__.py | 50 + .../pip/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 639 bytes .../pip/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 475 bytes .../__pip-runner__.cpython-310.pyc | Bin 0 -> 1639 bytes .../site-packages/pip/_internal/__init__.py | 19 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 762 bytes .../__pycache__/build_env.cpython-310.pyc | Bin 0 -> 9720 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 8936 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 11375 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 25505 bytes .../__pycache__/main.cpython-310.pyc | Bin 0 -> 627 bytes .../__pycache__/pyproject.cpython-310.pyc | Bin 0 -> 3651 bytes .../self_outdated_check.cpython-310.pyc | Bin 0 -> 6651 bytes .../__pycache__/wheel_builder.cpython-310.pyc | Bin 0 -> 8658 bytes .../site-packages/pip/_internal/build_env.py | 311 + .../site-packages/pip/_internal/cache.py | 292 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 282 bytes .../autocompletion.cpython-310.pyc | Bin 0 -> 5317 bytes .../__pycache__/base_command.cpython-310.pyc | Bin 0 -> 6495 bytes .../__pycache__/cmdoptions.cpython-310.pyc | Bin 0 -> 23473 bytes .../command_context.cpython-310.pyc | Bin 0 -> 1322 bytes .../cli/__pycache__/main.cpython-310.pyc | Bin 0 -> 1516 bytes .../__pycache__/main_parser.cpython-310.pyc | Bin 0 -> 3005 bytes .../cli/__pycache__/parser.cpython-310.pyc | Bin 0 -> 9964 bytes .../__pycache__/progress_bars.cpython-310.pyc | Bin 0 -> 1906 bytes .../__pycache__/req_command.cpython-310.pyc | Bin 0 -> 13157 bytes .../cli/__pycache__/spinners.cpython-310.pyc | Bin 0 -> 4972 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 361 bytes .../pip/_internal/cli/autocompletion.py | 171 + .../pip/_internal/cli/base_command.py | 236 + .../pip/_internal/cli/cmdoptions.py | 1074 ++ .../pip/_internal/cli/command_context.py | 27 + .../site-packages/pip/_internal/cli/main.py | 79 + .../pip/_internal/cli/main_parser.py | 134 + .../site-packages/pip/_internal/cli/parser.py | 294 + .../pip/_internal/cli/progress_bars.py | 68 + .../pip/_internal/cli/req_command.py | 505 + .../pip/_internal/cli/spinners.py | 159 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 132 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3261 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 6244 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 1640 bytes .../__pycache__/completion.cpython-310.pyc | Bin 0 -> 4024 bytes .../__pycache__/configuration.cpython-310.pyc | Bin 0 -> 8948 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 6701 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 4255 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 2981 bytes .../commands/__pycache__/hash.cpython-310.pyc | Bin 0 -> 2158 bytes .../commands/__pycache__/help.cpython-310.pyc | Bin 0 -> 1319 bytes .../__pycache__/index.cpython-310.pyc | Bin 0 -> 4596 bytes .../__pycache__/inspect.cpython-310.pyc | Bin 0 -> 2979 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 17777 bytes .../commands/__pycache__/list.cpython-310.pyc | Bin 0 -> 10371 bytes .../__pycache__/search.cpython-310.pyc | Bin 0 -> 5372 bytes .../commands/__pycache__/show.cpython-310.pyc | Bin 0 -> 6533 bytes .../__pycache__/uninstall.cpython-310.pyc | Bin 0 -> 3340 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4986 bytes .../pip/_internal/commands/cache.py | 222 + .../pip/_internal/commands/check.py | 54 + .../pip/_internal/commands/completion.py | 121 + .../pip/_internal/commands/configuration.py | 282 + .../pip/_internal/commands/debug.py | 199 + .../pip/_internal/commands/download.py | 147 + .../pip/_internal/commands/freeze.py | 108 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 139 + .../pip/_internal/commands/inspect.py | 92 + .../pip/_internal/commands/install.py | 778 ++ .../pip/_internal/commands/list.py | 368 + .../pip/_internal/commands/search.py | 174 + .../pip/_internal/commands/show.py | 189 + .../pip/_internal/commands/uninstall.py | 113 + .../pip/_internal/commands/wheel.py | 183 + .../pip/_internal/configuration.py | 381 + .../pip/_internal/distributions/__init__.py | 21 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 809 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1897 bytes .../__pycache__/installed.cpython-310.pyc | Bin 0 -> 1274 bytes .../__pycache__/sdist.cpython-310.pyc | Bin 0 -> 5005 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1641 bytes .../pip/_internal/distributions/base.py | 39 + .../pip/_internal/distributions/installed.py | 23 + .../pip/_internal/distributions/sdist.py | 150 + .../pip/_internal/distributions/wheel.py | 34 + .../site-packages/pip/_internal/exceptions.py | 733 ++ .../pip/_internal/index/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 236 bytes .../__pycache__/collector.cpython-310.pyc | Bin 0 -> 15309 bytes .../package_finder.cpython-310.pyc | Bin 0 -> 29465 bytes .../index/__pycache__/sources.cpython-310.pyc | Bin 0 -> 7129 bytes .../pip/_internal/index/collector.py | 505 + .../pip/_internal/index/package_finder.py | 1029 ++ .../pip/_internal/index/sources.py | 223 + .../pip/_internal/locations/__init__.py | 467 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 11038 bytes .../__pycache__/_distutils.cpython-310.pyc | Bin 0 -> 4611 bytes .../__pycache__/_sysconfig.cpython-310.pyc | Bin 0 -> 6002 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 2406 bytes .../pip/_internal/locations/_distutils.py | 173 + .../pip/_internal/locations/_sysconfig.py | 213 + .../pip/_internal/locations/base.py | 81 + .../site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 127 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4740 bytes .../__pycache__/_json.cpython-310.pyc | Bin 0 -> 2196 bytes .../metadata/__pycache__/base.cpython-310.pyc | Bin 0 -> 26674 bytes .../__pycache__/pkg_resources.cpython-310.pyc | Bin 0 -> 10178 bytes .../pip/_internal/metadata/_json.py | 84 + .../pip/_internal/metadata/base.py | 688 ++ .../_internal/metadata/importlib/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 327 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 2759 bytes .../__pycache__/_dists.cpython-310.pyc | Bin 0 -> 8917 bytes .../__pycache__/_envs.cpython-310.pyc | Bin 0 -> 7741 bytes .../_internal/metadata/importlib/_compat.py | 55 + .../_internal/metadata/importlib/_dists.py | 224 + .../pip/_internal/metadata/importlib/_envs.py | 188 + .../pip/_internal/metadata/pkg_resources.py | 270 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 270 bytes .../__pycache__/candidate.cpython-310.pyc | Bin 0 -> 1422 bytes .../__pycache__/direct_url.cpython-310.pyc | Bin 0 -> 7727 bytes .../format_control.cpython-310.pyc | Bin 0 -> 2747 bytes .../models/__pycache__/index.cpython-310.pyc | Bin 0 -> 1239 bytes .../installation_report.cpython-310.pyc | Bin 0 -> 1729 bytes .../models/__pycache__/link.cpython-310.pyc | Bin 0 -> 18104 bytes .../models/__pycache__/scheme.cpython-310.pyc | Bin 0 -> 1038 bytes .../__pycache__/search_scope.cpython-310.pyc | Bin 0 -> 3557 bytes .../selection_prefs.cpython-310.pyc | Bin 0 -> 1700 bytes .../__pycache__/target_python.cpython-310.pyc | Bin 0 -> 3455 bytes .../models/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4474 bytes .../pip/_internal/models/candidate.py | 34 + .../pip/_internal/models/direct_url.py | 237 + .../pip/_internal/models/format_control.py | 80 + .../pip/_internal/models/index.py | 28 + .../_internal/models/installation_report.py | 53 + .../pip/_internal/models/link.py | 581 ++ .../pip/_internal/models/scheme.py | 31 + .../pip/_internal/models/search_scope.py | 132 + .../pip/_internal/models/selection_prefs.py | 51 + .../pip/_internal/models/target_python.py | 110 + .../pip/_internal/models/wheel.py | 92 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 258 bytes .../network/__pycache__/auth.cpython-310.pyc | Bin 0 -> 14441 bytes .../network/__pycache__/cache.cpython-310.pyc | Bin 0 -> 2945 bytes .../__pycache__/download.cpython-310.pyc | Bin 0 -> 5540 bytes .../__pycache__/lazy_wheel.cpython-310.pyc | Bin 0 -> 8426 bytes .../__pycache__/session.cpython-310.pyc | Bin 0 -> 12438 bytes .../network/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1461 bytes .../__pycache__/xmlrpc.cpython-310.pyc | Bin 0 -> 2071 bytes .../pip/_internal/network/auth.py | 561 ++ .../pip/_internal/network/cache.py | 69 + .../pip/_internal/network/download.py | 186 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 517 + .../pip/_internal/network/utils.py | 96 + .../pip/_internal/network/xmlrpc.py | 60 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 206 bytes .../__pycache__/check.cpython-310.pyc | Bin 0 -> 5210 bytes .../__pycache__/freeze.cpython-310.pyc | Bin 0 -> 6227 bytes .../__pycache__/prepare.cpython-310.pyc | Bin 0 -> 15630 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 212 bytes .../__pycache__/build_tracker.cpython-310.pyc | Bin 0 -> 4293 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 1445 bytes .../metadata_editable.cpython-310.pyc | Bin 0 -> 1479 bytes .../metadata_legacy.cpython-310.pyc | Bin 0 -> 2384 bytes .../build/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 1235 bytes .../wheel_editable.cpython-310.pyc | Bin 0 -> 1459 bytes .../__pycache__/wheel_legacy.cpython-310.pyc | Bin 0 -> 2769 bytes .../operations/build/build_tracker.py | 124 + .../_internal/operations/build/metadata.py | 39 + .../operations/build/metadata_editable.py | 41 + .../operations/build/metadata_legacy.py | 74 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 102 + .../pip/_internal/operations/check.py | 187 + .../pip/_internal/operations/freeze.py | 255 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 270 bytes .../editable_legacy.cpython-310.pyc | Bin 0 -> 1499 bytes .../install/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 21201 bytes .../operations/install/editable_legacy.py | 46 + .../pip/_internal/operations/install/wheel.py | 740 ++ .../pip/_internal/operations/prepare.py | 734 ++ .../site-packages/pip/_internal/pyproject.py | 179 + .../pip/_internal/req/__init__.py | 92 + .../req/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2575 bytes .../__pycache__/constructors.cpython-310.pyc | Bin 0 -> 12411 bytes .../req/__pycache__/req_file.cpython-310.pyc | Bin 0 -> 13820 bytes .../__pycache__/req_install.cpython-310.pyc | Bin 0 -> 23235 bytes .../req/__pycache__/req_set.cpython-310.pyc | Bin 0 -> 5228 bytes .../__pycache__/req_uninstall.cpython-310.pyc | Bin 0 -> 19267 bytes .../pip/_internal/req/constructors.py | 506 + .../pip/_internal/req/req_file.py | 552 ++ .../pip/_internal/req/req_install.py | 874 ++ .../pip/_internal/req/req_set.py | 119 + .../pip/_internal/req/req_uninstall.py | 650 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 206 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 1058 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 213 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 14955 bytes .../_internal/resolution/legacy/resolver.py | 600 ++ .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 217 bytes .../__pycache__/base.cpython-310.pyc | Bin 0 -> 6460 bytes .../__pycache__/candidates.cpython-310.pyc | Bin 0 -> 18553 bytes .../__pycache__/factory.cpython-310.pyc | Bin 0 -> 19052 bytes .../found_candidates.cpython-310.pyc | Bin 0 -> 4877 bytes .../__pycache__/provider.cpython-310.pyc | Bin 0 -> 7945 bytes .../__pycache__/reporter.cpython-310.pyc | Bin 0 -> 3714 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 7475 bytes .../__pycache__/resolver.cpython-310.pyc | Bin 0 -> 8260 bytes .../_internal/resolution/resolvelib/base.py | 141 + .../resolution/resolvelib/candidates.py | 555 ++ .../resolution/resolvelib/factory.py | 730 ++ .../resolution/resolvelib/found_candidates.py | 155 + .../resolution/resolvelib/provider.py | 255 + .../resolution/resolvelib/reporter.py | 80 + .../resolution/resolvelib/requirements.py | 165 + .../resolution/resolvelib/resolver.py | 299 + .../pip/_internal/self_outdated_check.py | 242 + .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 201 bytes .../__pycache__/_jaraco_text.cpython-310.pyc | Bin 0 -> 3857 bytes .../utils/__pycache__/_log.cpython-310.pyc | Bin 0 -> 1529 bytes .../utils/__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 1627 bytes .../utils/__pycache__/compat.cpython-310.pyc | Bin 0 -> 1517 bytes .../compatibility_tags.cpython-310.pyc | Bin 0 -> 4086 bytes .../__pycache__/datetime.cpython-310.pyc | Bin 0 -> 524 bytes .../__pycache__/deprecation.cpython-310.pyc | Bin 0 -> 3326 bytes .../direct_url_helpers.cpython-310.pyc | Bin 0 -> 2092 bytes .../__pycache__/egg_link.cpython-310.pyc | Bin 0 -> 2172 bytes .../__pycache__/encoding.cpython-310.pyc | Bin 0 -> 1314 bytes .../__pycache__/entrypoints.cpython-310.pyc | Bin 0 -> 2707 bytes .../__pycache__/filesystem.cpython-310.pyc | Bin 0 -> 4490 bytes .../__pycache__/filetypes.cpython-310.pyc | Bin 0 -> 951 bytes .../utils/__pycache__/glibc.cpython-310.pyc | Bin 0 -> 1722 bytes .../utils/__pycache__/hashes.cpython-310.pyc | Bin 0 -> 5490 bytes .../inject_securetransport.cpython-310.pyc | Bin 0 -> 996 bytes .../utils/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9728 bytes .../utils/__pycache__/misc.cpython-310.pyc | Bin 0 -> 22231 bytes .../utils/__pycache__/models.cpython-310.pyc | Bin 0 -> 1997 bytes .../__pycache__/packaging.cpython-310.pyc | Bin 0 -> 2089 bytes .../setuptools_build.cpython-310.pyc | Bin 0 -> 3825 bytes .../__pycache__/subprocess.cpython-310.pyc | Bin 0 -> 5780 bytes .../__pycache__/temp_dir.cpython-310.pyc | Bin 0 -> 7324 bytes .../__pycache__/unpacking.cpython-310.pyc | Bin 0 -> 6675 bytes .../utils/__pycache__/urls.cpython-310.pyc | Bin 0 -> 1602 bytes .../__pycache__/virtualenv.cpython-310.pyc | Bin 0 -> 3297 bytes .../utils/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 4422 bytes .../pip/_internal/utils/_jaraco_text.py | 109 + .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 63 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 120 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/egg_link.py | 72 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 84 + .../pip/_internal/utils/filesystem.py | 153 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 88 + .../pip/_internal/utils/hashes.py | 151 + .../_internal/utils/inject_securetransport.py | 35 + .../pip/_internal/utils/logging.py | 348 + .../site-packages/pip/_internal/utils/misc.py | 735 ++ .../pip/_internal/utils/models.py | 39 + .../pip/_internal/utils/packaging.py | 57 + .../pip/_internal/utils/setuptools_build.py | 146 + .../pip/_internal/utils/subprocess.py | 260 + .../pip/_internal/utils/temp_dir.py | 246 + .../pip/_internal/utils/unpacking.py | 257 + .../site-packages/pip/_internal/utils/urls.py | 62 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 136 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 524 bytes .../vcs/__pycache__/bazaar.cpython-310.pyc | Bin 0 -> 3490 bytes .../vcs/__pycache__/git.cpython-310.pyc | Bin 0 -> 12554 bytes .../vcs/__pycache__/mercurial.cpython-310.pyc | Bin 0 -> 5076 bytes .../__pycache__/subversion.cpython-310.pyc | Bin 0 -> 8462 bytes .../versioncontrol.cpython-310.pyc | Bin 0 -> 21153 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 + .../site-packages/pip/_internal/vcs/git.py | 526 + .../pip/_internal/vcs/mercurial.py | 163 + .../pip/_internal/vcs/subversion.py | 324 + .../pip/_internal/vcs/versioncontrol.py | 705 ++ .../pip/_internal/wheel_builder.py | 355 + .../site-packages/pip/_vendor/__init__.py | 120 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3137 bytes .../_vendor/__pycache__/six.cpython-310.pyc | Bin 0 -> 27595 bytes .../typing_extensions.cpython-310.pyc | Bin 0 -> 89139 bytes .../pip/_vendor/cachecontrol/__init__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 652 bytes .../__pycache__/_cmd.cpython-310.pyc | Bin 0 -> 1590 bytes .../__pycache__/adapter.cpython-310.pyc | Bin 0 -> 3166 bytes .../__pycache__/cache.cpython-310.pyc | Bin 0 -> 2700 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 766 bytes .../__pycache__/controller.cpython-310.pyc | Bin 0 -> 8606 bytes .../__pycache__/filewrapper.cpython-310.pyc | Bin 0 -> 2802 bytes .../__pycache__/heuristics.cpython-310.pyc | Bin 0 -> 4726 bytes .../__pycache__/serialize.cpython-310.pyc | Bin 0 -> 4341 bytes .../__pycache__/wrapper.cpython-310.pyc | Bin 0 -> 697 bytes .../pip/_vendor/cachecontrol/_cmd.py | 61 + .../pip/_vendor/cachecontrol/adapter.py | 137 + .../pip/_vendor/cachecontrol/cache.py | 65 + .../_vendor/cachecontrol/caches/__init__.py | 9 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 371 bytes .../__pycache__/file_cache.cpython-310.pyc | Bin 0 -> 4971 bytes .../__pycache__/redis_cache.cpython-310.pyc | Bin 0 -> 1629 bytes .../_vendor/cachecontrol/caches/file_cache.py | 188 + .../cachecontrol/caches/redis_cache.py | 39 + .../pip/_vendor/cachecontrol/compat.py | 32 + .../pip/_vendor/cachecontrol/controller.py | 439 + .../pip/_vendor/cachecontrol/filewrapper.py | 111 + .../pip/_vendor/cachecontrol/heuristics.py | 139 + .../pip/_vendor/cachecontrol/serialize.py | 190 + .../pip/_vendor/cachecontrol/wrapper.py | 33 + .../pip/_vendor/certifi/__init__.py | 4 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 314 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 464 bytes .../certifi/__pycache__/core.cpython-310.pyc | Bin 0 -> 1934 bytes .../pip/_vendor/certifi/cacert.pem | 4589 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 108 + .../pip/_vendor/chardet/__init__.py | 115 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3182 bytes .../__pycache__/big5freq.cpython-310.pyc | Bin 0 -> 27188 bytes .../__pycache__/big5prober.cpython-310.pyc | Bin 0 -> 1166 bytes .../chardistribution.cpython-310.pyc | Bin 0 -> 6583 bytes .../charsetgroupprober.cpython-310.pyc | Bin 0 -> 2433 bytes .../__pycache__/charsetprober.cpython-310.pyc | Bin 0 -> 3839 bytes .../codingstatemachine.cpython-310.pyc | Bin 0 -> 3076 bytes .../codingstatemachinedict.cpython-310.pyc | Bin 0 -> 705 bytes .../__pycache__/cp949prober.cpython-310.pyc | Bin 0 -> 1173 bytes .../chardet/__pycache__/enums.cpython-310.pyc | Bin 0 -> 2666 bytes .../__pycache__/escprober.cpython-310.pyc | Bin 0 -> 2824 bytes .../chardet/__pycache__/escsm.cpython-310.pyc | Bin 0 -> 8527 bytes .../__pycache__/eucjpprober.cpython-310.pyc | Bin 0 -> 2612 bytes .../__pycache__/euckrfreq.cpython-310.pyc | Bin 0 -> 12072 bytes .../__pycache__/euckrprober.cpython-310.pyc | Bin 0 -> 1174 bytes .../__pycache__/euctwfreq.cpython-310.pyc | Bin 0 -> 27192 bytes .../__pycache__/euctwprober.cpython-310.pyc | Bin 0 -> 1174 bytes .../__pycache__/gb2312freq.cpython-310.pyc | Bin 0 -> 19116 bytes .../__pycache__/gb2312prober.cpython-310.pyc | Bin 0 -> 1182 bytes .../__pycache__/hebrewprober.cpython-310.pyc | Bin 0 -> 3429 bytes .../__pycache__/jisfreq.cpython-310.pyc | Bin 0 -> 22144 bytes .../__pycache__/johabfreq.cpython-310.pyc | Bin 0 -> 138768 bytes .../__pycache__/johabprober.cpython-310.pyc | Bin 0 -> 1173 bytes .../__pycache__/jpcntx.cpython-310.pyc | Bin 0 -> 37994 bytes .../langbulgarianmodel.cpython-310.pyc | Bin 0 -> 47936 bytes .../langgreekmodel.cpython-310.pyc | Bin 0 -> 46126 bytes .../langhebrewmodel.cpython-310.pyc | Bin 0 -> 44573 bytes .../langhungarianmodel.cpython-310.pyc | Bin 0 -> 47896 bytes .../langrussianmodel.cpython-310.pyc | Bin 0 -> 61037 bytes .../__pycache__/langthaimodel.cpython-310.pyc | Bin 0 -> 44749 bytes .../langturkishmodel.cpython-310.pyc | Bin 0 -> 44590 bytes .../__pycache__/latin1prober.cpython-310.pyc | Bin 0 -> 4572 bytes .../macromanprober.cpython-310.pyc | Bin 0 -> 4713 bytes .../mbcharsetprober.cpython-310.pyc | Bin 0 -> 2324 bytes .../mbcsgroupprober.cpython-310.pyc | Bin 0 -> 1270 bytes .../__pycache__/mbcssm.cpython-310.pyc | Bin 0 -> 20945 bytes .../__pycache__/resultdict.cpython-310.pyc | Bin 0 -> 585 bytes .../sbcharsetprober.cpython-310.pyc | Bin 0 -> 3691 bytes .../sbcsgroupprober.cpython-310.pyc | Bin 0 -> 1749 bytes .../__pycache__/sjisprober.cpython-310.pyc | Bin 0 -> 2650 bytes .../universaldetector.cpython-310.pyc | Bin 0 -> 7138 bytes .../__pycache__/utf1632prober.cpython-310.pyc | Bin 0 -> 6144 bytes .../__pycache__/utf8prober.cpython-310.pyc | Bin 0 -> 2118 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 450 bytes .../pip/_vendor/chardet/big5freq.py | 386 + .../pip/_vendor/chardet/big5prober.py | 47 + .../pip/_vendor/chardet/chardistribution.py | 261 + .../pip/_vendor/chardet/charsetgroupprober.py | 106 + .../pip/_vendor/chardet/charsetprober.py | 147 + .../pip/_vendor/chardet/cli/__init__.py | 0 .../cli/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 205 bytes .../__pycache__/chardetect.cpython-310.pyc | Bin 0 -> 3047 bytes .../pip/_vendor/chardet/cli/chardetect.py | 112 + .../pip/_vendor/chardet/codingstatemachine.py | 90 + .../_vendor/chardet/codingstatemachinedict.py | 19 + .../pip/_vendor/chardet/cp949prober.py | 49 + .../pip/_vendor/chardet/enums.py | 85 + .../pip/_vendor/chardet/escprober.py | 102 + .../pip/_vendor/chardet/escsm.py | 261 + .../pip/_vendor/chardet/eucjpprober.py | 102 + .../pip/_vendor/chardet/euckrfreq.py | 196 + .../pip/_vendor/chardet/euckrprober.py | 47 + .../pip/_vendor/chardet/euctwfreq.py | 388 + .../pip/_vendor/chardet/euctwprober.py | 47 + .../pip/_vendor/chardet/gb2312freq.py | 284 + .../pip/_vendor/chardet/gb2312prober.py | 47 + .../pip/_vendor/chardet/hebrewprober.py | 316 + .../pip/_vendor/chardet/jisfreq.py | 325 + .../pip/_vendor/chardet/johabfreq.py | 2382 +++++ .../pip/_vendor/chardet/johabprober.py | 47 + .../pip/_vendor/chardet/jpcntx.py | 238 + .../pip/_vendor/chardet/langbulgarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langgreekmodel.py | 4397 +++++++++ .../pip/_vendor/chardet/langhebrewmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langhungarianmodel.py | 4649 +++++++++ .../pip/_vendor/chardet/langrussianmodel.py | 5725 +++++++++++ .../pip/_vendor/chardet/langthaimodel.py | 4380 +++++++++ .../pip/_vendor/chardet/langturkishmodel.py | 4380 +++++++++ .../pip/_vendor/chardet/latin1prober.py | 147 + .../pip/_vendor/chardet/macromanprober.py | 162 + .../pip/_vendor/chardet/mbcharsetprober.py | 95 + .../pip/_vendor/chardet/mbcsgroupprober.py | 57 + .../pip/_vendor/chardet/mbcssm.py | 661 ++ .../pip/_vendor/chardet/metadata/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 210 bytes .../__pycache__/languages.cpython-310.pyc | Bin 0 -> 8193 bytes .../pip/_vendor/chardet/metadata/languages.py | 352 + .../pip/_vendor/chardet/resultdict.py | 16 + .../pip/_vendor/chardet/sbcharsetprober.py | 162 + .../pip/_vendor/chardet/sbcsgroupprober.py | 88 + .../pip/_vendor/chardet/sjisprober.py | 105 + .../pip/_vendor/chardet/universaldetector.py | 362 + .../pip/_vendor/chardet/utf1632prober.py | 225 + .../pip/_vendor/chardet/utf8prober.py | 82 + .../pip/_vendor/chardet/version.py | 9 + .../pip/_vendor/colorama/__init__.py | 7 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 488 bytes .../colorama/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 3014 bytes .../__pycache__/ansitowin32.cpython-310.pyc | Bin 0 -> 8526 bytes .../__pycache__/initialise.cpython-310.pyc | Bin 0 -> 2271 bytes .../__pycache__/win32.cpython-310.pyc | Bin 0 -> 4481 bytes .../__pycache__/winterm.cpython-310.pyc | Bin 0 -> 5177 bytes .../pip/_vendor/colorama/ansi.py | 102 + .../pip/_vendor/colorama/ansitowin32.py | 277 + .../pip/_vendor/colorama/initialise.py | 121 + .../pip/_vendor/colorama/tests/__init__.py | 1 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 208 bytes .../__pycache__/ansi_test.cpython-310.pyc | Bin 0 -> 2300 bytes .../ansitowin32_test.cpython-310.pyc | Bin 0 -> 11611 bytes .../initialise_test.cpython-310.pyc | Bin 0 -> 6908 bytes .../__pycache__/isatty_test.cpython-310.pyc | Bin 0 -> 2699 bytes .../tests/__pycache__/utils.cpython-310.pyc | Bin 0 -> 1608 bytes .../__pycache__/winterm_test.cpython-310.pyc | Bin 0 -> 3201 bytes .../pip/_vendor/colorama/tests/ansi_test.py | 76 + .../colorama/tests/ansitowin32_test.py | 294 + .../_vendor/colorama/tests/initialise_test.py | 189 + .../pip/_vendor/colorama/tests/isatty_test.py | 57 + .../pip/_vendor/colorama/tests/utils.py | 49 + .../_vendor/colorama/tests/winterm_test.py | 131 + .../pip/_vendor/colorama/win32.py | 180 + .../pip/_vendor/colorama/winterm.py | 195 + .../pip/_vendor/distlib/__init__.py | 23 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1072 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 31418 bytes .../__pycache__/database.cpython-310.pyc | Bin 0 -> 43158 bytes .../distlib/__pycache__/index.cpython-310.pyc | Bin 0 -> 17323 bytes .../__pycache__/locators.cpython-310.pyc | Bin 0 -> 38380 bytes .../__pycache__/manifest.cpython-310.pyc | Bin 0 -> 10240 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 5046 bytes .../__pycache__/metadata.cpython-310.pyc | Bin 0 -> 26797 bytes .../__pycache__/resources.cpython-310.pyc | Bin 0 -> 11046 bytes .../__pycache__/scripts.cpython-310.pyc | Bin 0 -> 11512 bytes .../distlib/__pycache__/util.cpython-310.pyc | Bin 0 -> 51707 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 20161 bytes .../distlib/__pycache__/wheel.cpython-310.pyc | Bin 0 -> 28141 bytes .../pip/_vendor/distlib/compat.py | 1116 +++ .../pip/_vendor/distlib/database.py | 1350 +++ .../pip/_vendor/distlib/index.py | 508 + .../pip/_vendor/distlib/locators.py | 1300 +++ .../pip/_vendor/distlib/manifest.py | 393 + .../pip/_vendor/distlib/markers.py | 152 + .../pip/_vendor/distlib/metadata.py | 1076 +++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 437 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 97792 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 0 -> 182784 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 108032 bytes .../site-packages/pip/_vendor/distlib/util.py | 1932 ++++ .../pip/_vendor/distlib/version.py | 739 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 91648 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 0 -> 168448 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 101888 bytes .../pip/_vendor/distlib/wheel.py | 1082 +++ .../pip/_vendor/distro/__init__.py | 54 + .../pip/_vendor/distro/__main__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 925 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 279 bytes .../distro/__pycache__/distro.cpython-310.pyc | Bin 0 -> 42075 bytes .../pip/_vendor/distro/distro.py | 1399 +++ .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 857 bytes .../idna/__pycache__/codec.cpython-310.pyc | Bin 0 -> 2828 bytes .../idna/__pycache__/compat.cpython-310.pyc | Bin 0 -> 757 bytes .../idna/__pycache__/core.cpython-310.pyc | Bin 0 -> 9714 bytes .../idna/__pycache__/idnadata.cpython-310.pyc | Bin 0 -> 38393 bytes .../__pycache__/intranges.cpython-310.pyc | Bin 0 -> 1994 bytes .../__pycache__/package_data.cpython-310.pyc | Bin 0 -> 221 bytes .../__pycache__/uts46data.cpython-310.pyc | Bin 0 -> 152408 bytes .../site-packages/pip/_vendor/idna/codec.py | 112 + .../site-packages/pip/_vendor/idna/compat.py | 13 + .../site-packages/pip/_vendor/idna/core.py | 400 + .../pip/_vendor/idna/idnadata.py | 2151 +++++ .../pip/_vendor/idna/intranges.py | 54 + .../pip/_vendor/idna/package_data.py | 2 + .../pip/_vendor/idna/uts46data.py | 8600 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 57 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1455 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 1818 bytes .../msgpack/__pycache__/ext.cpython-310.pyc | Bin 0 -> 6325 bytes .../__pycache__/fallback.cpython-310.pyc | Bin 0 -> 25488 bytes .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 193 + .../pip/_vendor/msgpack/fallback.py | 1010 ++ .../pip/_vendor/packaging/__about__.py | 26 + .../pip/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 600 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 456 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7310 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4622 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2715 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9299 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 3985 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 21537 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12206 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3585 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12935 bytes .../pip/_vendor/packaging/_manylinux.py | 301 + .../pip/_vendor/packaging/_musllinux.py | 136 + .../pip/_vendor/packaging/_structures.py | 61 + .../pip/_vendor/packaging/markers.py | 304 + .../pip/_vendor/packaging/requirements.py | 146 + .../pip/_vendor/packaging/specifiers.py | 802 ++ .../pip/_vendor/packaging/tags.py | 487 + .../pip/_vendor/packaging/utils.py | 136 + .../pip/_vendor/packaging/version.py | 504 + .../pip/_vendor/pkg_resources/__init__.py | 3361 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 101089 bytes .../pip/_vendor/platformdirs/__init__.py | 566 ++ .../pip/_vendor/platformdirs/__main__.py | 53 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 14379 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 1391 bytes .../__pycache__/android.cpython-310.pyc | Bin 0 -> 6629 bytes .../__pycache__/api.cpython-310.pyc | Bin 0 -> 7627 bytes .../__pycache__/macos.cpython-310.pyc | Bin 0 -> 4268 bytes .../__pycache__/unix.cpython-310.pyc | Bin 0 -> 8859 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 300 bytes .../__pycache__/windows.cpython-310.pyc | Bin 0 -> 8633 bytes .../pip/_vendor/platformdirs/android.py | 210 + .../pip/_vendor/platformdirs/api.py | 223 + .../pip/_vendor/platformdirs/macos.py | 91 + .../pip/_vendor/platformdirs/unix.py | 223 + .../pip/_vendor/platformdirs/version.py | 4 + .../pip/_vendor/platformdirs/windows.py | 255 + .../pip/_vendor/pygments/__init__.py | 82 + .../pip/_vendor/pygments/__main__.py | 17 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2945 bytes .../__pycache__/__main__.cpython-310.pyc | Bin 0 -> 598 bytes .../__pycache__/cmdline.cpython-310.pyc | Bin 0 -> 15615 bytes .../__pycache__/console.cpython-310.pyc | Bin 0 -> 1893 bytes .../__pycache__/filter.cpython-310.pyc | Bin 0 -> 2664 bytes .../__pycache__/formatter.cpython-310.pyc | Bin 0 -> 3966 bytes .../__pycache__/lexer.cpython-310.pyc | Bin 0 -> 26243 bytes .../__pycache__/modeline.cpython-310.pyc | Bin 0 -> 1202 bytes .../__pycache__/plugin.cpython-310.pyc | Bin 0 -> 2530 bytes .../__pycache__/regexopt.cpython-310.pyc | Bin 0 -> 2966 bytes .../__pycache__/scanner.cpython-310.pyc | Bin 0 -> 3568 bytes .../__pycache__/sphinxext.cpython-310.pyc | Bin 0 -> 7131 bytes .../__pycache__/style.cpython-310.pyc | Bin 0 -> 4589 bytes .../__pycache__/token.cpython-310.pyc | Bin 0 -> 4681 bytes .../__pycache__/unistring.cpython-310.pyc | Bin 0 -> 31242 bytes .../pygments/__pycache__/util.cpython-310.pyc | Bin 0 -> 10214 bytes .../pip/_vendor/pygments/cmdline.py | 668 ++ .../pip/_vendor/pygments/console.py | 70 + .../pip/_vendor/pygments/filter.py | 71 + .../pip/_vendor/pygments/filters/__init__.py | 940 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 29622 bytes .../pip/_vendor/pygments/formatter.py | 124 + .../_vendor/pygments/formatters/__init__.py | 158 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 5018 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 4010 bytes .../__pycache__/bbcode.cpython-310.pyc | Bin 0 -> 3095 bytes .../__pycache__/groff.cpython-310.pyc | Bin 0 -> 4420 bytes .../__pycache__/html.cpython-310.pyc | Bin 0 -> 29175 bytes .../__pycache__/img.cpython-310.pyc | Bin 0 -> 17572 bytes .../__pycache__/irc.cpython-310.pyc | Bin 0 -> 4108 bytes .../__pycache__/latex.cpython-310.pyc | Bin 0 -> 13808 bytes .../__pycache__/other.cpython-310.pyc | Bin 0 -> 4814 bytes .../__pycache__/pangomarkup.cpython-310.pyc | Bin 0 -> 2114 bytes .../__pycache__/rtf.cpython-310.pyc | Bin 0 -> 4144 bytes .../__pycache__/svg.cpython-310.pyc | Bin 0 -> 6342 bytes .../__pycache__/terminal.cpython-310.pyc | Bin 0 -> 4009 bytes .../__pycache__/terminal256.cpython-310.pyc | Bin 0 -> 9259 bytes .../_vendor/pygments/formatters/_mapping.py | 23 + .../pip/_vendor/pygments/formatters/bbcode.py | 108 + .../pip/_vendor/pygments/formatters/groff.py | 170 + .../pip/_vendor/pygments/formatters/html.py | 989 ++ .../pip/_vendor/pygments/formatters/img.py | 645 ++ .../pip/_vendor/pygments/formatters/irc.py | 154 + .../pip/_vendor/pygments/formatters/latex.py | 521 + .../pip/_vendor/pygments/formatters/other.py | 161 + .../pygments/formatters/pangomarkup.py | 83 + .../pip/_vendor/pygments/formatters/rtf.py | 146 + .../pip/_vendor/pygments/formatters/svg.py | 188 + .../_vendor/pygments/formatters/terminal.py | 127 + .../pygments/formatters/terminal256.py | 338 + .../pip/_vendor/pygments/lexer.py | 943 ++ .../pip/_vendor/pygments/lexers/__init__.py | 362 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 10012 bytes .../__pycache__/_mapping.cpython-310.pyc | Bin 0 -> 60957 bytes .../lexers/__pycache__/python.cpython-310.pyc | Bin 0 -> 30014 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 559 ++ .../pip/_vendor/pygments/lexers/python.py | 1198 +++ .../pip/_vendor/pygments/modeline.py | 43 + .../pip/_vendor/pygments/plugin.py | 88 + .../pip/_vendor/pygments/regexopt.py | 91 + .../pip/_vendor/pygments/scanner.py | 104 + .../pip/_vendor/pygments/sphinxext.py | 217 + .../pip/_vendor/pygments/style.py | 197 + .../pip/_vendor/pygments/styles/__init__.py | 103 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 3603 bytes .../pip/_vendor/pygments/token.py | 213 + .../pip/_vendor/pygments/unistring.py | 153 + .../pip/_vendor/pygments/util.py | 330 + .../pip/_vendor/pyparsing/__init__.py | 322 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 7115 bytes .../__pycache__/actions.cpython-310.pyc | Bin 0 -> 7661 bytes .../__pycache__/common.cpython-310.pyc | Bin 0 -> 10189 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 188316 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 9621 bytes .../__pycache__/helpers.cpython-310.pyc | Bin 0 -> 35679 bytes .../__pycache__/results.cpython-310.pyc | Bin 0 -> 25661 bytes .../__pycache__/testing.cpython-310.pyc | Bin 0 -> 12157 bytes .../__pycache__/unicode.cpython-310.pyc | Bin 0 -> 10268 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 10062 bytes .../pip/_vendor/pyparsing/actions.py | 217 + .../pip/_vendor/pyparsing/common.py | 432 + .../pip/_vendor/pyparsing/core.py | 6115 ++++++++++++ .../pip/_vendor/pyparsing/diagram/__init__.py | 656 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 16920 bytes .../pip/_vendor/pyparsing/exceptions.py | 299 + .../pip/_vendor/pyparsing/helpers.py | 1100 +++ .../pip/_vendor/pyparsing/results.py | 796 ++ .../pip/_vendor/pyparsing/testing.py | 331 + .../pip/_vendor/pyparsing/unicode.py | 361 + .../pip/_vendor/pyparsing/util.py | 284 + .../pip/_vendor/pyproject_hooks/__init__.py | 23 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 596 bytes .../__pycache__/_compat.cpython-310.pyc | Bin 0 -> 347 bytes .../__pycache__/_impl.cpython-310.pyc | Bin 0 -> 11399 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 + .../pip/_vendor/pyproject_hooks/_impl.py | 330 + .../pyproject_hooks/_in_process/__init__.py | 18 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 834 bytes .../__pycache__/_in_process.cpython-310.pyc | Bin 0 -> 9716 bytes .../_in_process/_in_process.py | 353 + .../pip/_vendor/requests/__init__.py | 182 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 4017 bytes .../__pycache__/__version__.cpython-310.pyc | Bin 0 -> 560 bytes .../_internal_utils.cpython-310.pyc | Bin 0 -> 1636 bytes .../__pycache__/adapters.cpython-310.pyc | Bin 0 -> 16222 bytes .../requests/__pycache__/api.cpython-310.pyc | Bin 0 -> 6736 bytes .../requests/__pycache__/auth.cpython-310.pyc | Bin 0 -> 8132 bytes .../__pycache__/certs.cpython-310.pyc | Bin 0 -> 819 bytes .../__pycache__/compat.cpython-310.pyc | Bin 0 -> 1381 bytes .../__pycache__/cookies.cpython-310.pyc | Bin 0 -> 18707 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 5751 bytes .../requests/__pycache__/help.cpython-310.pyc | Bin 0 -> 2877 bytes .../__pycache__/hooks.cpython-310.pyc | Bin 0 -> 1004 bytes .../__pycache__/models.cpython-310.pyc | Bin 0 -> 24278 bytes .../__pycache__/packages.cpython-310.pyc | Bin 0 -> 518 bytes .../__pycache__/sessions.cpython-310.pyc | Bin 0 -> 19616 bytes .../__pycache__/status_codes.cpython-310.pyc | Bin 0 -> 4683 bytes .../__pycache__/structures.cpython-310.pyc | Bin 0 -> 4448 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 24457 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 50 + .../pip/_vendor/requests/adapters.py | 538 ++ .../site-packages/pip/_vendor/requests/api.py | 157 + .../pip/_vendor/requests/auth.py | 315 + .../pip/_vendor/requests/certs.py | 24 + .../pip/_vendor/requests/compat.py | 67 + .../pip/_vendor/requests/cookies.py | 561 ++ .../pip/_vendor/requests/exceptions.py | 141 + .../pip/_vendor/requests/help.py | 131 + .../pip/_vendor/requests/hooks.py | 33 + .../pip/_vendor/requests/models.py | 1034 ++ .../pip/_vendor/requests/packages.py | 16 + .../pip/_vendor/requests/sessions.py | 833 ++ .../pip/_vendor/requests/status_codes.py | 128 + .../pip/_vendor/requests/structures.py | 99 + .../pip/_vendor/requests/utils.py | 1094 +++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 616 bytes .../__pycache__/providers.cpython-310.pyc | Bin 0 -> 6666 bytes .../__pycache__/reporters.cpython-310.pyc | Bin 0 -> 2619 bytes .../__pycache__/resolvers.cpython-310.pyc | Bin 0 -> 17453 bytes .../__pycache__/structs.cpython-310.pyc | Bin 0 -> 7275 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 211 bytes .../collections_abc.cpython-310.pyc | Bin 0 -> 387 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/reporters.py | 43 + .../pip/_vendor/resolvelib/resolvers.py | 547 ++ .../pip/_vendor/resolvelib/structs.py | 170 + .../pip/_vendor/rich/__init__.py | 177 + .../pip/_vendor/rich/__main__.py | 274 + .../rich/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 6123 bytes .../rich/__pycache__/__main__.cpython-310.pyc | Bin 0 -> 7193 bytes .../__pycache__/_cell_widths.cpython-310.pyc | Bin 0 -> 7824 bytes .../__pycache__/_emoji_codes.cpython-310.pyc | Bin 0 -> 360064 bytes .../_emoji_replace.cpython-310.pyc | Bin 0 -> 1204 bytes .../_export_format.cpython-310.pyc | Bin 0 -> 2307 bytes .../__pycache__/_extension.cpython-310.pyc | Bin 0 -> 505 bytes .../rich/__pycache__/_fileno.cpython-310.pyc | Bin 0 -> 798 bytes .../rich/__pycache__/_inspect.cpython-310.pyc | Bin 0 -> 8682 bytes .../__pycache__/_log_render.cpython-310.pyc | Bin 0 -> 2650 bytes .../rich/__pycache__/_loop.cpython-310.pyc | Bin 0 -> 1302 bytes .../__pycache__/_null_file.cpython-310.pyc | Bin 0 -> 3249 bytes .../__pycache__/_palettes.cpython-310.pyc | Bin 0 -> 5107 bytes .../rich/__pycache__/_pick.cpython-310.pyc | Bin 0 -> 650 bytes .../rich/__pycache__/_ratio.cpython-310.pyc | Bin 0 -> 5169 bytes .../__pycache__/_spinners.cpython-310.pyc | Bin 0 -> 12281 bytes .../rich/__pycache__/_stack.cpython-310.pyc | Bin 0 -> 848 bytes .../rich/__pycache__/_timer.cpython-310.pyc | Bin 0 -> 697 bytes .../_win32_console.cpython-310.pyc | Bin 0 -> 19017 bytes .../rich/__pycache__/_windows.cpython-310.pyc | Bin 0 -> 1799 bytes .../_windows_renderer.cpython-310.pyc | Bin 0 -> 2053 bytes .../rich/__pycache__/_wrap.cpython-310.pyc | Bin 0 -> 1561 bytes .../rich/__pycache__/abc.cpython-310.pyc | Bin 0 -> 1324 bytes .../rich/__pycache__/align.cpython-310.pyc | Bin 0 -> 7952 bytes .../rich/__pycache__/ansi.cpython-310.pyc | Bin 0 -> 5992 bytes .../rich/__pycache__/bar.cpython-310.pyc | Bin 0 -> 2993 bytes .../rich/__pycache__/box.cpython-310.pyc | Bin 0 -> 8413 bytes .../rich/__pycache__/cells.cpython-310.pyc | Bin 0 -> 4163 bytes .../rich/__pycache__/color.cpython-310.pyc | Bin 0 -> 17730 bytes .../__pycache__/color_triplet.cpython-310.pyc | Bin 0 -> 1447 bytes .../rich/__pycache__/columns.cpython-310.pyc | Bin 0 -> 6207 bytes .../rich/__pycache__/console.cpython-310.pyc | Bin 0 -> 82822 bytes .../__pycache__/constrain.cpython-310.pyc | Bin 0 -> 1764 bytes .../__pycache__/containers.cpython-310.pyc | Bin 0 -> 6496 bytes .../rich/__pycache__/control.cpython-310.pyc | Bin 0 -> 8169 bytes .../default_styles.cpython-310.pyc | Bin 0 -> 6253 bytes .../rich/__pycache__/diagnose.cpython-310.pyc | Bin 0 -> 1231 bytes .../rich/__pycache__/emoji.cpython-310.pyc | Bin 0 -> 3277 bytes .../rich/__pycache__/errors.cpython-310.pyc | Bin 0 -> 1537 bytes .../__pycache__/file_proxy.cpython-310.pyc | Bin 0 -> 2410 bytes .../rich/__pycache__/filesize.cpython-310.pyc | Bin 0 -> 2627 bytes .../__pycache__/highlighter.cpython-310.pyc | Bin 0 -> 8069 bytes .../rich/__pycache__/json.cpython-310.pyc | Bin 0 -> 4741 bytes .../rich/__pycache__/jupyter.cpython-310.pyc | Bin 0 -> 4009 bytes .../rich/__pycache__/layout.cpython-310.pyc | Bin 0 -> 14657 bytes .../rich/__pycache__/live.cpython-310.pyc | Bin 0 -> 11687 bytes .../__pycache__/live_render.cpython-310.pyc | Bin 0 -> 3412 bytes .../rich/__pycache__/logging.cpython-310.pyc | Bin 0 -> 9920 bytes .../rich/__pycache__/markup.cpython-310.pyc | Bin 0 -> 5951 bytes .../rich/__pycache__/measure.cpython-310.pyc | Bin 0 -> 5086 bytes .../rich/__pycache__/padding.cpython-310.pyc | Bin 0 -> 4492 bytes .../rich/__pycache__/pager.cpython-310.pyc | Bin 0 -> 1486 bytes .../rich/__pycache__/palette.cpython-310.pyc | Bin 0 -> 3718 bytes .../rich/__pycache__/panel.cpython-310.pyc | Bin 0 -> 7438 bytes .../rich/__pycache__/pretty.cpython-310.pyc | Bin 0 -> 27531 bytes .../rich/__pycache__/progress.cpython-310.pyc | Bin 0 -> 54028 bytes .../__pycache__/progress_bar.cpython-310.pyc | Bin 0 -> 6921 bytes .../rich/__pycache__/prompt.cpython-310.pyc | Bin 0 -> 11311 bytes .../rich/__pycache__/protocol.cpython-310.pyc | Bin 0 -> 1362 bytes .../rich/__pycache__/region.cpython-310.pyc | Bin 0 -> 537 bytes .../rich/__pycache__/repr.cpython-310.pyc | Bin 0 -> 4106 bytes .../rich/__pycache__/rule.cpython-310.pyc | Bin 0 -> 3953 bytes .../rich/__pycache__/scope.cpython-310.pyc | Bin 0 -> 2999 bytes .../rich/__pycache__/screen.cpython-310.pyc | Bin 0 -> 1889 bytes .../rich/__pycache__/segment.cpython-310.pyc | Bin 0 -> 20793 bytes .../rich/__pycache__/spinner.cpython-310.pyc | Bin 0 -> 4410 bytes .../rich/__pycache__/status.cpython-310.pyc | Bin 0 -> 4603 bytes .../rich/__pycache__/style.cpython-310.pyc | Bin 0 -> 21340 bytes .../rich/__pycache__/styled.cpython-310.pyc | Bin 0 -> 1773 bytes .../rich/__pycache__/syntax.cpython-310.pyc | Bin 0 -> 25762 bytes .../rich/__pycache__/table.cpython-310.pyc | Bin 0 -> 29960 bytes .../terminal_theme.cpython-310.pyc | Bin 0 -> 3026 bytes .../rich/__pycache__/text.cpython-310.pyc | Bin 0 -> 40126 bytes .../rich/__pycache__/theme.cpython-310.pyc | Bin 0 -> 4848 bytes .../rich/__pycache__/themes.cpython-310.pyc | Bin 0 -> 303 bytes .../__pycache__/traceback.cpython-310.pyc | Bin 0 -> 21721 bytes .../rich/__pycache__/tree.cpython-310.pyc | Bin 0 -> 7344 bytes .../pip/_vendor/rich/_cell_widths.py | 451 + .../pip/_vendor/rich/_emoji_codes.py | 3610 +++++++ .../pip/_vendor/rich/_emoji_replace.py | 32 + .../pip/_vendor/rich/_export_format.py | 76 + .../pip/_vendor/rich/_extension.py | 10 + .../site-packages/pip/_vendor/rich/_fileno.py | 24 + .../pip/_vendor/rich/_inspect.py | 270 + .../pip/_vendor/rich/_log_render.py | 94 + .../site-packages/pip/_vendor/rich/_loop.py | 43 + .../pip/_vendor/rich/_null_file.py | 69 + .../pip/_vendor/rich/_palettes.py | 309 + .../site-packages/pip/_vendor/rich/_pick.py | 17 + .../site-packages/pip/_vendor/rich/_ratio.py | 160 + .../pip/_vendor/rich/_spinners.py | 482 + .../site-packages/pip/_vendor/rich/_stack.py | 16 + .../site-packages/pip/_vendor/rich/_timer.py | 19 + .../pip/_vendor/rich/_win32_console.py | 662 ++ .../pip/_vendor/rich/_windows.py | 72 + .../pip/_vendor/rich/_windows_renderer.py | 56 + .../site-packages/pip/_vendor/rich/_wrap.py | 56 + .../site-packages/pip/_vendor/rich/abc.py | 33 + .../site-packages/pip/_vendor/rich/align.py | 311 + .../site-packages/pip/_vendor/rich/ansi.py | 240 + .../site-packages/pip/_vendor/rich/bar.py | 94 + .../site-packages/pip/_vendor/rich/box.py | 517 + .../site-packages/pip/_vendor/rich/cells.py | 154 + .../site-packages/pip/_vendor/rich/color.py | 622 ++ .../pip/_vendor/rich/color_triplet.py | 38 + .../site-packages/pip/_vendor/rich/columns.py | 187 + .../site-packages/pip/_vendor/rich/console.py | 2633 +++++ .../pip/_vendor/rich/constrain.py | 37 + .../pip/_vendor/rich/containers.py | 167 + .../site-packages/pip/_vendor/rich/control.py | 225 + .../pip/_vendor/rich/default_styles.py | 190 + .../pip/_vendor/rich/diagnose.py | 37 + .../site-packages/pip/_vendor/rich/emoji.py | 96 + .../site-packages/pip/_vendor/rich/errors.py | 34 + .../pip/_vendor/rich/file_proxy.py | 57 + .../pip/_vendor/rich/filesize.py | 89 + .../pip/_vendor/rich/highlighter.py | 232 + .../site-packages/pip/_vendor/rich/json.py | 140 + .../site-packages/pip/_vendor/rich/jupyter.py | 101 + .../site-packages/pip/_vendor/rich/layout.py | 443 + .../site-packages/pip/_vendor/rich/live.py | 375 + .../pip/_vendor/rich/live_render.py | 113 + .../site-packages/pip/_vendor/rich/logging.py | 289 + .../site-packages/pip/_vendor/rich/markup.py | 246 + .../site-packages/pip/_vendor/rich/measure.py | 151 + .../site-packages/pip/_vendor/rich/padding.py | 141 + .../site-packages/pip/_vendor/rich/pager.py | 34 + .../site-packages/pip/_vendor/rich/palette.py | 100 + .../site-packages/pip/_vendor/rich/panel.py | 308 + .../site-packages/pip/_vendor/rich/pretty.py | 994 ++ .../pip/_vendor/rich/progress.py | 1702 ++++ .../pip/_vendor/rich/progress_bar.py | 224 + .../site-packages/pip/_vendor/rich/prompt.py | 376 + .../pip/_vendor/rich/protocol.py | 42 + .../site-packages/pip/_vendor/rich/region.py | 10 + .../site-packages/pip/_vendor/rich/repr.py | 149 + .../site-packages/pip/_vendor/rich/rule.py | 130 + .../site-packages/pip/_vendor/rich/scope.py | 86 + .../site-packages/pip/_vendor/rich/screen.py | 54 + .../site-packages/pip/_vendor/rich/segment.py | 739 ++ .../site-packages/pip/_vendor/rich/spinner.py | 137 + .../site-packages/pip/_vendor/rich/status.py | 132 + .../site-packages/pip/_vendor/rich/style.py | 796 ++ .../site-packages/pip/_vendor/rich/styled.py | 42 + .../site-packages/pip/_vendor/rich/syntax.py | 948 ++ .../site-packages/pip/_vendor/rich/table.py | 1002 ++ .../pip/_vendor/rich/terminal_theme.py | 153 + .../site-packages/pip/_vendor/rich/text.py | 1307 +++ .../site-packages/pip/_vendor/rich/theme.py | 115 + .../site-packages/pip/_vendor/rich/themes.py | 5 + .../pip/_vendor/rich/traceback.py | 756 ++ .../site-packages/pip/_vendor/rich/tree.py | 251 + .../site-packages/pip/_vendor/six.py | 998 ++ .../pip/_vendor/tenacity/__init__.py | 608 ++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 17268 bytes .../__pycache__/_asyncio.cpython-310.pyc | Bin 0 -> 2882 bytes .../__pycache__/_utils.cpython-310.pyc | Bin 0 -> 1515 bytes .../__pycache__/after.cpython-310.pyc | Bin 0 -> 1289 bytes .../__pycache__/before.cpython-310.pyc | Bin 0 -> 1167 bytes .../__pycache__/before_sleep.cpython-310.pyc | Bin 0 -> 1597 bytes .../tenacity/__pycache__/nap.cpython-310.pyc | Bin 0 -> 1209 bytes .../__pycache__/retry.cpython-310.pyc | Bin 0 -> 9781 bytes .../tenacity/__pycache__/stop.cpython-310.pyc | Bin 0 -> 4335 bytes .../__pycache__/tornadoweb.cpython-310.pyc | Bin 0 -> 1774 bytes .../tenacity/__pycache__/wait.cpython-310.pyc | Bin 0 -> 9296 bytes .../pip/_vendor/tenacity/_asyncio.py | 94 + .../pip/_vendor/tenacity/_utils.py | 76 + .../pip/_vendor/tenacity/after.py | 51 + .../pip/_vendor/tenacity/before.py | 46 + .../pip/_vendor/tenacity/before_sleep.py | 71 + .../site-packages/pip/_vendor/tenacity/nap.py | 43 + .../pip/_vendor/tenacity/retry.py | 272 + .../pip/_vendor/tenacity/stop.py | 103 + .../pip/_vendor/tenacity/tornadoweb.py | 59 + .../pip/_vendor/tenacity/wait.py | 228 + .../pip/_vendor/tomli/__init__.py | 11 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 365 bytes .../tomli/__pycache__/_parser.cpython-310.pyc | Bin 0 -> 17079 bytes .../tomli/__pycache__/_re.cpython-310.pyc | Bin 0 -> 2911 bytes .../tomli/__pycache__/_types.cpython-310.pyc | Bin 0 -> 335 bytes .../pip/_vendor/tomli/_parser.py | 691 ++ .../site-packages/pip/_vendor/tomli/_re.py | 107 + .../site-packages/pip/_vendor/tomli/_types.py | 10 + .../pip/_vendor/typing_extensions.py | 3072 ++++++ .../pip/_vendor/urllib3/__init__.py | 102 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2519 bytes .../__pycache__/_collections.cpython-310.pyc | Bin 0 -> 10873 bytes .../__pycache__/_version.cpython-310.pyc | Bin 0 -> 224 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 13719 bytes .../connectionpool.cpython-310.pyc | Bin 0 -> 25795 bytes .../__pycache__/exceptions.cpython-310.pyc | Bin 0 -> 11004 bytes .../__pycache__/fields.cpython-310.pyc | Bin 0 -> 8195 bytes .../__pycache__/filepost.cpython-310.pyc | Bin 0 -> 2760 bytes .../__pycache__/poolmanager.cpython-310.pyc | Bin 0 -> 15074 bytes .../__pycache__/request.cpython-310.pyc | Bin 0 -> 5636 bytes .../__pycache__/response.cpython-310.pyc | Bin 0 -> 22526 bytes .../pip/_vendor/urllib3/_collections.py | 337 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 572 ++ .../pip/_vendor/urllib3/connectionpool.py | 1132 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 209 bytes .../_appengine_environ.cpython-310.pyc | Bin 0 -> 1389 bytes .../__pycache__/appengine.cpython-310.pyc | Bin 0 -> 8206 bytes .../__pycache__/ntlmpool.cpython-310.pyc | Bin 0 -> 3633 bytes .../__pycache__/pyopenssl.cpython-310.pyc | Bin 0 -> 15821 bytes .../securetransport.cpython-310.pyc | Bin 0 -> 21951 bytes .../contrib/__pycache__/socks.cpython-310.pyc | Bin 0 -> 5611 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 226 bytes .../__pycache__/bindings.cpython-310.pyc | Bin 0 -> 10722 bytes .../__pycache__/low_level.cpython-310.pyc | Bin 0 -> 9109 bytes .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 + .../urllib3/contrib/securetransport.py | 921 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 210 bytes .../packages/__pycache__/six.cpython-310.pyc | Bin 0 -> 27670 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 220 bytes .../__pycache__/makefile.cpython-310.pyc | Bin 0 -> 1320 bytes .../weakref_finalize.cpython-310.pyc | Bin 0 -> 4918 bytes .../urllib3/packages/backports/makefile.py | 51 + .../packages/backports/weakref_finalize.py | 155 + .../pip/_vendor/urllib3/packages/six.py | 1076 +++ .../pip/_vendor/urllib3/poolmanager.py | 537 + .../pip/_vendor/urllib3/request.py | 170 + .../pip/_vendor/urllib3/response.py | 879 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 1119 bytes .../__pycache__/connection.cpython-310.pyc | Bin 0 -> 3447 bytes .../util/__pycache__/proxy.cpython-310.pyc | Bin 0 -> 1354 bytes .../util/__pycache__/queue.cpython-310.pyc | Bin 0 -> 1074 bytes .../util/__pycache__/request.cpython-310.pyc | Bin 0 -> 3381 bytes .../util/__pycache__/response.cpython-310.pyc | Bin 0 -> 2367 bytes .../util/__pycache__/retry.cpython-310.pyc | Bin 0 -> 16157 bytes .../util/__pycache__/ssl_.cpython-310.pyc | Bin 0 -> 11321 bytes .../ssl_match_hostname.cpython-310.pyc | Bin 0 -> 3271 bytes .../__pycache__/ssltransport.cpython-310.pyc | Bin 0 -> 7409 bytes .../util/__pycache__/timeout.cpython-310.pyc | Bin 0 -> 9154 bytes .../util/__pycache__/url.cpython-310.pyc | Bin 0 -> 10729 bytes .../util/__pycache__/wait.cpython-310.pyc | Bin 0 -> 3103 bytes .../pip/_vendor/urllib3/util/connection.py | 149 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 137 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 620 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../urllib3/util/ssl_match_hostname.py | 159 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 271 + .../pip/_vendor/urllib3/util/url.py | 435 + .../pip/_vendor/urllib3/util/wait.py | 152 + .../site-packages/pip/_vendor/vendor.txt | 23 + .../pip/_vendor/webencodings/__init__.py | 342 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 9756 bytes .../__pycache__/labels.cpython-310.pyc | Bin 0 -> 5246 bytes .../__pycache__/mklabels.cpython-310.pyc | Bin 0 -> 1951 bytes .../__pycache__/tests.cpython-310.pyc | Bin 0 -> 5053 bytes .../x_user_defined.cpython-310.pyc | Bin 0 -> 2602 bytes .../pip/_vendor/webencodings/labels.py | 231 + .../pip/_vendor/webencodings/mklabels.py | 59 + .../pip/_vendor/webencodings/tests.py | 153 + .../_vendor/webencodings/x_user_defined.py | 325 + .../lib/python3.10/site-packages/pip/py.typed | 4 + .../site-packages/pkg_resources/__init__.py | 3303 +++++++ .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 100625 bytes .../pkg_resources/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 203 bytes .../__pycache__/appdirs.cpython-310.pyc | Bin 0 -> 20264 bytes .../__pycache__/pyparsing.cpython-310.pyc | Bin 0 -> 198818 bytes .../pkg_resources/_vendor/appdirs.py | 608 ++ .../_vendor/packaging/__about__.py | 26 + .../_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 610 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 466 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7320 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4632 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2990 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9318 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 4004 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 22208 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12240 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3595 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12945 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../pkg_resources/_vendor/packaging/tags.py | 484 + .../pkg_resources/_vendor/packaging/utils.py | 136 + .../_vendor/packaging/version.py | 504 + .../pkg_resources/_vendor/pyparsing.py | 5742 +++++++++++ .../pkg_resources/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2911 bytes .../__pycache__/setup.cpython-310.pyc | Bin 0 -> 331 bytes .../data/my-test-package-source/setup.py | 6 + .../INSTALLER | 1 + .../METADATA | 247 + .../RECORD | 62 + .../REQUESTED | 0 .../WHEEL | 5 + .../top_level.txt | 1 + .../setuptools-59.6.0.dist-info/INSTALLER | 1 + .../setuptools-59.6.0.dist-info/LICENSE | 19 + .../setuptools-59.6.0.dist-info/METADATA | 124 + .../setuptools-59.6.0.dist-info/RECORD | 298 + .../setuptools-59.6.0.dist-info/REQUESTED | 0 .../setuptools-59.6.0.dist-info/WHEEL | 5 + .../entry_points.txt | 56 + .../setuptools-59.6.0.dist-info/top_level.txt | 4 + .../site-packages/setuptools/__init__.py | 242 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 8607 bytes .../_deprecation_warning.cpython-310.pyc | Bin 0 -> 564 bytes .../__pycache__/_imp.cpython-310.pyc | Bin 0 -> 2090 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 5860 bytes .../__pycache__/build_meta.cpython-310.pyc | Bin 0 -> 9478 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 20943 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 871 bytes .../__pycache__/depends.cpython-310.pyc | Bin 0 -> 5310 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 36377 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 1516 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 1960 bytes .../__pycache__/glob.cpython-310.pyc | Bin 0 -> 3749 bytes .../__pycache__/installer.cpython-310.pyc | Bin 0 -> 2995 bytes .../__pycache__/launch.cpython-310.pyc | Bin 0 -> 921 bytes .../__pycache__/monkey.cpython-310.pyc | Bin 0 -> 4649 bytes .../__pycache__/msvc.cpython-310.pyc | Bin 0 -> 42653 bytes .../__pycache__/namespaces.cpython-310.pyc | Bin 0 -> 3632 bytes .../__pycache__/package_index.cpython-310.pyc | Bin 0 -> 32747 bytes .../__pycache__/py34compat.cpython-310.pyc | Bin 0 -> 496 bytes .../__pycache__/sandbox.cpython-310.pyc | Bin 0 -> 15772 bytes .../__pycache__/unicode_utils.cpython-310.pyc | Bin 0 -> 1126 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 338 bytes .../__pycache__/wheel.cpython-310.pyc | Bin 0 -> 7364 bytes .../windows_support.cpython-310.pyc | Bin 0 -> 1039 bytes .../setuptools/_deprecation_warning.py | 7 + .../setuptools/_distutils/__init__.py | 24 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 572 bytes .../__pycache__/_msvccompiler.cpython-310.pyc | Bin 0 -> 13849 bytes .../__pycache__/archive_util.cpython-310.pyc | Bin 0 -> 6577 bytes .../__pycache__/bcppcompiler.cpython-310.pyc | Bin 0 -> 6564 bytes .../__pycache__/ccompiler.cpython-310.pyc | Bin 0 -> 33327 bytes .../__pycache__/cmd.cpython-310.pyc | Bin 0 -> 13964 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 3605 bytes .../__pycache__/core.cpython-310.pyc | Bin 0 -> 7104 bytes .../cygwinccompiler.cpython-310.pyc | Bin 0 -> 9017 bytes .../__pycache__/debug.cpython-310.pyc | Bin 0 -> 266 bytes .../__pycache__/dep_util.cpython-310.pyc | Bin 0 -> 2787 bytes .../__pycache__/dir_util.cpython-310.pyc | Bin 0 -> 5898 bytes .../__pycache__/dist.cpython-310.pyc | Bin 0 -> 34063 bytes .../__pycache__/errors.cpython-310.pyc | Bin 0 -> 5008 bytes .../__pycache__/extension.cpython-310.pyc | Bin 0 -> 7022 bytes .../__pycache__/fancy_getopt.cpython-310.pyc | Bin 0 -> 10648 bytes .../__pycache__/file_util.cpython-310.pyc | Bin 0 -> 5992 bytes .../__pycache__/filelist.cpython-310.pyc | Bin 0 -> 10838 bytes .../__pycache__/log.cpython-310.pyc | Bin 0 -> 2323 bytes .../__pycache__/msvc9compiler.cpython-310.pyc | Bin 0 -> 17578 bytes .../__pycache__/msvccompiler.cpython-310.pyc | Bin 0 -> 14797 bytes .../__pycache__/py35compat.cpython-310.pyc | Bin 0 -> 642 bytes .../__pycache__/py38compat.cpython-310.pyc | Bin 0 -> 439 bytes .../__pycache__/spawn.cpython-310.pyc | Bin 0 -> 2909 bytes .../__pycache__/sysconfig.cpython-310.pyc | Bin 0 -> 12894 bytes .../__pycache__/text_file.cpython-310.pyc | Bin 0 -> 8485 bytes .../__pycache__/unixccompiler.cpython-310.pyc | Bin 0 -> 6817 bytes .../__pycache__/util.cpython-310.pyc | Bin 0 -> 14760 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 7857 bytes .../versionpredicate.cpython-310.pyc | Bin 0 -> 5352 bytes .../setuptools/_distutils/_msvccompiler.py | 561 ++ .../setuptools/_distutils/archive_util.py | 256 + .../setuptools/_distutils/bcppcompiler.py | 393 + .../setuptools/_distutils/ccompiler.py | 1123 +++ .../setuptools/_distutils/cmd.py | 403 + .../setuptools/_distutils/command/__init__.py | 31 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 545 bytes .../command/__pycache__/bdist.cpython-310.pyc | Bin 0 -> 3679 bytes .../__pycache__/bdist_dumb.cpython-310.pyc | Bin 0 -> 3660 bytes .../__pycache__/bdist_msi.cpython-310.pyc | Bin 0 -> 19736 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 12302 bytes .../__pycache__/bdist_wininst.cpython-310.pyc | Bin 0 -> 8645 bytes .../command/__pycache__/build.cpython-310.pyc | Bin 0 -> 3907 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 4884 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 16234 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 9903 bytes .../__pycache__/build_scripts.cpython-310.pyc | Bin 0 -> 4026 bytes .../command/__pycache__/check.cpython-310.pyc | Bin 0 -> 5023 bytes .../command/__pycache__/clean.cpython-310.pyc | Bin 0 -> 2162 bytes .../__pycache__/config.cpython-310.pyc | Bin 0 -> 10344 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 15292 bytes .../__pycache__/install_data.cpython-310.pyc | Bin 0 -> 2361 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 3326 bytes .../install_headers.cpython-310.pyc | Bin 0 -> 1784 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 5186 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2213 bytes .../__pycache__/py37compat.cpython-310.pyc | Bin 0 -> 1058 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 8697 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 14513 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 5389 bytes .../setuptools/_distutils/command/bdist.py | 143 + .../_distutils/command/bdist_dumb.py | 123 + .../_distutils/command/bdist_msi.py | 749 ++ .../_distutils/command/bdist_rpm.py | 579 ++ .../_distutils/command/bdist_wininst.py | 377 + .../setuptools/_distutils/command/build.py | 157 + .../_distutils/command/build_clib.py | 209 + .../_distutils/command/build_ext.py | 755 ++ .../setuptools/_distutils/command/build_py.py | 392 + .../_distutils/command/build_scripts.py | 152 + .../setuptools/_distutils/command/check.py | 148 + .../setuptools/_distutils/command/clean.py | 76 + .../setuptools/_distutils/command/config.py | 344 + .../setuptools/_distutils/command/install.py | 721 ++ .../_distutils/command/install_data.py | 79 + .../_distutils/command/install_egg_info.py | 84 + .../_distutils/command/install_headers.py | 47 + .../_distutils/command/install_lib.py | 217 + .../_distutils/command/install_scripts.py | 60 + .../_distutils/command/py37compat.py | 30 + .../setuptools/_distutils/command/register.py | 304 + .../setuptools/_distutils/command/sdist.py | 494 + .../setuptools/_distutils/command/upload.py | 214 + .../setuptools/_distutils/config.py | 130 + .../setuptools/_distutils/core.py | 249 + .../setuptools/_distutils/cygwinccompiler.py | 425 + .../setuptools/_distutils/debug.py | 5 + .../setuptools/_distutils/dep_util.py | 92 + .../setuptools/_distutils/dir_util.py | 210 + .../setuptools/_distutils/dist.py | 1257 +++ .../setuptools/_distutils/errors.py | 97 + .../setuptools/_distutils/extension.py | 240 + .../setuptools/_distutils/fancy_getopt.py | 457 + .../setuptools/_distutils/file_util.py | 238 + .../setuptools/_distutils/filelist.py | 355 + .../setuptools/_distutils/log.py | 77 + .../setuptools/_distutils/msvc9compiler.py | 788 ++ .../setuptools/_distutils/msvccompiler.py | 643 ++ .../setuptools/_distutils/py35compat.py | 19 + .../setuptools/_distutils/py38compat.py | 7 + .../setuptools/_distutils/spawn.py | 106 + .../setuptools/_distutils/sysconfig.py | 601 ++ .../setuptools/_distutils/text_file.py | 286 + .../setuptools/_distutils/unixccompiler.py | 325 + .../setuptools/_distutils/util.py | 548 ++ .../setuptools/_distutils/version.py | 363 + .../setuptools/_distutils/versionpredicate.py | 169 + .../site-packages/setuptools/_imp.py | 82 + .../setuptools/_vendor/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 200 bytes .../__pycache__/ordered_set.cpython-310.pyc | Bin 0 -> 16336 bytes .../__pycache__/pyparsing.cpython-310.pyc | Bin 0 -> 198815 bytes .../_vendor/more_itertools/__init__.py | 4 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 281 bytes .../__pycache__/more.cpython-310.pyc | Bin 0 -> 110011 bytes .../__pycache__/recipes.cpython-310.pyc | Bin 0 -> 17981 bytes .../setuptools/_vendor/more_itertools/more.py | 3825 ++++++++ .../_vendor/more_itertools/recipes.py | 620 ++ .../setuptools/_vendor/ordered_set.py | 488 + .../setuptools/_vendor/packaging/__about__.py | 26 + .../setuptools/_vendor/packaging/__init__.py | 25 + .../__pycache__/__about__.cpython-310.pyc | Bin 0 -> 607 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 463 bytes .../__pycache__/_manylinux.cpython-310.pyc | Bin 0 -> 7317 bytes .../__pycache__/_musllinux.cpython-310.pyc | Bin 0 -> 4629 bytes .../__pycache__/_structures.cpython-310.pyc | Bin 0 -> 2987 bytes .../__pycache__/markers.cpython-310.pyc | Bin 0 -> 9312 bytes .../__pycache__/requirements.cpython-310.pyc | Bin 0 -> 3998 bytes .../__pycache__/specifiers.cpython-310.pyc | Bin 0 -> 22205 bytes .../__pycache__/tags.cpython-310.pyc | Bin 0 -> 12237 bytes .../__pycache__/utils.cpython-310.pyc | Bin 0 -> 3592 bytes .../__pycache__/version.cpython-310.pyc | Bin 0 -> 12942 bytes .../_vendor/packaging/_manylinux.py | 301 + .../_vendor/packaging/_musllinux.py | 136 + .../_vendor/packaging/_structures.py | 67 + .../setuptools/_vendor/packaging/markers.py | 304 + .../_vendor/packaging/requirements.py | 146 + .../_vendor/packaging/specifiers.py | 828 ++ .../setuptools/_vendor/packaging/tags.py | 484 + .../setuptools/_vendor/packaging/utils.py | 136 + .../setuptools/_vendor/packaging/version.py | 504 + .../setuptools/_vendor/pyparsing.py | 5742 +++++++++++ .../site-packages/setuptools/archive_util.py | 205 + .../site-packages/setuptools/build_meta.py | 290 + .../site-packages/setuptools/cli-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/cli-64.exe | Bin 0 -> 74752 bytes .../site-packages/setuptools/cli-arm64.exe | Bin 0 -> 137216 bytes .../site-packages/setuptools/cli.exe | Bin 0 -> 65536 bytes .../setuptools/command/__init__.py | 8 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 389 bytes .../command/__pycache__/alias.cpython-310.pyc | Bin 0 -> 2391 bytes .../__pycache__/bdist_egg.cpython-310.pyc | Bin 0 -> 13117 bytes .../__pycache__/bdist_rpm.cpython-310.pyc | Bin 0 -> 1604 bytes .../__pycache__/build_clib.cpython-310.pyc | Bin 0 -> 2480 bytes .../__pycache__/build_ext.cpython-310.pyc | Bin 0 -> 9907 bytes .../__pycache__/build_py.cpython-310.pyc | Bin 0 -> 8280 bytes .../__pycache__/develop.cpython-310.pyc | Bin 0 -> 6167 bytes .../__pycache__/dist_info.cpython-310.pyc | Bin 0 -> 1409 bytes .../__pycache__/easy_install.cpython-310.pyc | Bin 0 -> 65190 bytes .../__pycache__/egg_info.cpython-310.pyc | Bin 0 -> 22765 bytes .../__pycache__/install.cpython-310.pyc | Bin 0 -> 4215 bytes .../install_egg_info.cpython-310.pyc | Bin 0 -> 2940 bytes .../__pycache__/install_lib.cpython-310.pyc | Bin 0 -> 5155 bytes .../install_scripts.cpython-310.pyc | Bin 0 -> 2444 bytes .../__pycache__/py36compat.cpython-310.pyc | Bin 0 -> 4551 bytes .../__pycache__/register.cpython-310.pyc | Bin 0 -> 855 bytes .../__pycache__/rotate.cpython-310.pyc | Bin 0 -> 2522 bytes .../__pycache__/saveopts.cpython-310.pyc | Bin 0 -> 941 bytes .../command/__pycache__/sdist.cpython-310.pyc | Bin 0 -> 6970 bytes .../__pycache__/setopt.cpython-310.pyc | Bin 0 -> 4703 bytes .../command/__pycache__/test.cpython-310.pyc | Bin 0 -> 8147 bytes .../__pycache__/upload.cpython-310.pyc | Bin 0 -> 828 bytes .../__pycache__/upload_docs.cpython-310.pyc | Bin 0 -> 6197 bytes .../site-packages/setuptools/command/alias.py | 78 + .../setuptools/command/bdist_egg.py | 456 + .../setuptools/command/bdist_rpm.py | 40 + .../setuptools/command/build_clib.py | 101 + .../setuptools/command/build_ext.py | 328 + .../setuptools/command/build_py.py | 242 + .../setuptools/command/develop.py | 193 + .../setuptools/command/dist_info.py | 36 + .../setuptools/command/easy_install.py | 2354 +++++ .../setuptools/command/egg_info.py | 755 ++ .../setuptools/command/install.py | 132 + .../setuptools/command/install_egg_info.py | 82 + .../setuptools/command/install_lib.py | 148 + .../setuptools/command/install_scripts.py | 69 + .../setuptools/command/launcher manifest.xml | 15 + .../setuptools/command/py36compat.py | 134 + .../setuptools/command/register.py | 18 + .../setuptools/command/rotate.py | 64 + .../setuptools/command/saveopts.py | 22 + .../site-packages/setuptools/command/sdist.py | 196 + .../setuptools/command/setopt.py | 149 + .../site-packages/setuptools/command/test.py | 252 + .../setuptools/command/upload.py | 17 + .../setuptools/command/upload_docs.py | 202 + .../site-packages/setuptools/config.py | 751 ++ .../site-packages/setuptools/dep_util.py | 25 + .../site-packages/setuptools/depends.py | 176 + .../site-packages/setuptools/dist.py | 1156 +++ .../site-packages/setuptools/errors.py | 40 + .../site-packages/setuptools/extension.py | 55 + .../setuptools/extern/__init__.py | 73 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 2950 bytes .../site-packages/setuptools/glob.py | 167 + .../site-packages/setuptools/gui-32.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/gui-64.exe | Bin 0 -> 75264 bytes .../site-packages/setuptools/gui-arm64.exe | Bin 0 -> 137728 bytes .../site-packages/setuptools/gui.exe | Bin 0 -> 65536 bytes .../site-packages/setuptools/installer.py | 104 + .../site-packages/setuptools/launch.py | 36 + .../site-packages/setuptools/monkey.py | 177 + .../site-packages/setuptools/msvc.py | 1805 ++++ .../site-packages/setuptools/namespaces.py | 107 + .../site-packages/setuptools/package_index.py | 1127 +++ .../site-packages/setuptools/py34compat.py | 13 + .../site-packages/setuptools/sandbox.py | 530 + .../setuptools/script (dev).tmpl | 6 + .../site-packages/setuptools/script.tmpl | 3 + .../site-packages/setuptools/unicode_utils.py | 42 + .../site-packages/setuptools/version.py | 6 + .../site-packages/setuptools/wheel.py | 213 + .../setuptools/windows_support.py | 29 + Follow_the_line/.venv/lib64 | 1 + Follow_the_line/.venv/pyvenv.cfg | 3 + 3184 files changed, 573085 insertions(+), 44 deletions(-) create mode 100644 Color_Sorting/.venv/bin/Activate.ps1 create mode 100644 Color_Sorting/.venv/bin/activate create mode 100644 Color_Sorting/.venv/bin/activate.csh create mode 100644 Color_Sorting/.venv/bin/activate.fish create mode 100755 Color_Sorting/.venv/bin/pip create mode 100755 Color_Sorting/.venv/bin/pip3 create mode 100755 Color_Sorting/.venv/bin/pip3.10 create mode 100755 Color_Sorting/.venv/bin/pip3.11 create mode 120000 Color_Sorting/.venv/bin/python create mode 120000 Color_Sorting/.venv/bin/python3 create mode 120000 Color_Sorting/.venv/bin/python3.10 create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BdfFontFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BmpImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ContainerIO.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/CurImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/EpsImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ExifTags.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FliImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FontFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GbrImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GdImageFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GifImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpGradientFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Image.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageChops.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageCms.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageColor.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw2.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageEnhance.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFilter.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFont.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageGrab.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMath.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMode.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMorph.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageOps.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePalette.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePath.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageQt.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageSequence.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageShow.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageStat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTk.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTransform.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageWin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegPresets.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MicImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MspImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PSDraw.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PaletteFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcfFontFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfParser.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PngImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PyAccess.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SunImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TarIO.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffTags.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WalImageFile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__main__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Image.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFont.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PyAccess.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/__main__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_binary.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/features.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_binary.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_deprecate.py create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-x86_64-linux-gnu.so create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_tkinter_finder.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_version.py create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_webp.cpython-310-x86_64-linux-gnu.so create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/PIL/features.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/INSTALLER create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/LICENSE create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/METADATA create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/RECORD create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/WHEEL create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/top_level.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/zip-safe create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libXau-154567c4.so.6.0.0 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlicommon-702ab7f8.so.1 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlidec-7a796284.so.1.0.9 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libfreetype-8b16add1.so.6.20.0 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libharfbuzz-adaef2a2.so.0.60730.0 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libjpeg-dab02bf4.so.62.3.0 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/liblcms2-0821774a.so.2.0.15 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/liblzma-9dd5c569.so.5.4.3 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libopenjp2-20e347f0.so.2.5.0 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libpng16-39c06ea1.so.16.40.0 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libsharpyuv-20f78091.so.0.0.1 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libtiff-189042a3.so.6.0.1 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libwebp-8b6d8948.so.7.1.7 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libwebpdemux-fc93391d.so.2.0.13 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libwebpmux-b3bcb8ec.so.3.0.12 create mode 100755 Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libxcb-cd9c1006.so.1.1.0 create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/_distutils_hack/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/_distutils_hack/override.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/distutils-precedence.pth create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/auto.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/button.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/console.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/display.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/led.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/motor.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/port.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/power.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/sound.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/stopwatch.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/unit.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/brickpi.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/brickpi3.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/ev3.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/evb.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/fake.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/pistorms.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/brickpi.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/brickpi3.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/ev3.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/evb.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/fake.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/_platform/pistorms.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/auto.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/button.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/console.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/GyroBalancer.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/GyroBalancer.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/rc_tank.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/webserver.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/rc_tank.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/control/webserver.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/display.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/fonts/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/fonts/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/led.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/motor.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/port.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/power.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/sensor/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/sensor/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/sensor/__pycache__/lego.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/sensor/lego.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/sound.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/stopwatch.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/unit.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/ev3dev2/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/AUTHORS.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/INSTALLER create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/LICENSE.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/METADATA create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/RECORD create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/REQUESTED create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/WHEEL create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/entry_points.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/top_level.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/__main__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/__pip-runner__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/__pycache__/__main__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/__pycache__/__pip-runner__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/build_env.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/configuration.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/main.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/pyproject.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/build_env.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cache.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/main.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/cache.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/debug.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/help.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/index.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/list.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/search.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/show.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/cache.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/check.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/download.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/help.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/index.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/inspect.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/install.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/list.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/search.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/show.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/configuration.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/base.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/exceptions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/collector.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/sources.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/collector.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/index/sources.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/base.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/locations/base.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/main.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/_json.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_envs.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/index.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/scheme.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/index.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/installation_report.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/link.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/auth.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/auth.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/cache.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/download.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/session.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/build_tracker.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/check.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/pyproject.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_file.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_install.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_set.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/base.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_log.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/urls.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/_jaraco_text.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/models.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachinedict.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabfreq.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/macromanprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/resultdict.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf1632prober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansi_test.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/initialise_test.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/isatty_test.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/winterm_test.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/win32.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/markers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64-arm.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64-arm.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__main__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/distro/distro.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/core.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/codec.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/style.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/token.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/actions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/common.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/core.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/align.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/console.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/json.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/region.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/status.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/text.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_export_format.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_fileno.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_null_file.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_win32_console.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows_renderer.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/json.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/layout.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/live.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/live_render.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/logging.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/markup.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/measure.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/padding.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/pager.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/palette.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/panel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/pretty.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/progress.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/prompt.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/protocol.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/region.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/repr.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/rule.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/scope.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/screen.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/segment.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/spinner.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/status.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/style.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/styled.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/syntax.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/table.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/text.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/theme.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/themes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/rich/tree.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/six.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/after.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/_re.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/_types.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/typing_extensions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/request.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/vendor.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pip/py.typed create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_manylinux.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_musllinux.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/extern/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/INSTALLER create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/METADATA create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/RECORD create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/REQUESTED create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/WHEEL create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/top_level.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/INSTALLER create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/LICENSE create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/METADATA create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/RECORD create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/REQUESTED create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/WHEEL create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/entry_points.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/top_level.txt create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/_imp.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/archive_util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/build_meta.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/config.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/dep_util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/depends.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/dist.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/errors.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/extension.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/glob.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/installer.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/launch.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/monkey.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/msvc.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/namespaces.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/package_index.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/py34compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/sandbox.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/unicode_utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/wheel.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/__pycache__/windows_support.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_deprecation_warning.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/config.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/core.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/debug.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dist.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/errors.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/extension.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/log.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py35compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/util.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/archive_util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_msi.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_wininst.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/check.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/clean.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/config.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/py37compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/register.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/config.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/core.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/debug.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/dir_util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/dist.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/errors.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/extension.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/file_util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/filelist.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/log.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/py35compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/py38compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/spawn.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/text_file.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_imp.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_manylinux.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_musllinux.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/archive_util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/build_meta.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/cli-32.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/cli-64.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/cli-arm64.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/cli.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/alias.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_py.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/develop.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/dist_info.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/easy_install.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/egg_info.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/py36compat.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/register.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/rotate.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/saveopts.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/sdist.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/setopt.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/test.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload_docs.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/alias.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/bdist_egg.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/bdist_rpm.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/build_clib.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/build_ext.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/build_py.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/develop.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/dist_info.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/easy_install.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/egg_info.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/install.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/install_egg_info.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/install_lib.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/install_scripts.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/launcher manifest.xml create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/py36compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/register.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/rotate.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/saveopts.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/sdist.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/setopt.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/test.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/upload.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/command/upload_docs.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/config.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/dep_util.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/depends.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/dist.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/errors.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/extension.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/extern/__init__.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/glob.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/gui-32.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/gui-64.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/gui-arm64.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/gui.exe create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/installer.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/launch.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/monkey.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/msvc.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/namespaces.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/package_index.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/py34compat.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/sandbox.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/script (dev).tmpl create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/script.tmpl create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/unicode_utils.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/version.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/wheel.py create mode 100644 Color_Sorting/.venv/lib/python3.10/site-packages/setuptools/windows_support.py create mode 120000 Color_Sorting/.venv/lib64 create mode 100644 Color_Sorting/.venv/pyvenv.cfg delete mode 100644 Color_Sorting/Test_Python_PixyCam.py create mode 100644 Follow_the_line/.venv/bin/Activate.ps1 create mode 100644 Follow_the_line/.venv/bin/activate create mode 100644 Follow_the_line/.venv/bin/activate.csh create mode 100644 Follow_the_line/.venv/bin/activate.fish create mode 100755 Follow_the_line/.venv/bin/pip create mode 100755 Follow_the_line/.venv/bin/pip3 create mode 100755 Follow_the_line/.venv/bin/pip3.10 create mode 100755 Follow_the_line/.venv/bin/pip3.11 create mode 120000 Follow_the_line/.venv/bin/python create mode 120000 Follow_the_line/.venv/bin/python3 create mode 120000 Follow_the_line/.venv/bin/python3.10 create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/BdfFontFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/BmpImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ContainerIO.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/CurImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/EpsImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ExifTags.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/FliImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/FontFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/GbrImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/GdImageFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/GifImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/GimpGradientFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/Image.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageChops.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageCms.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageColor.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageDraw.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageDraw2.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageEnhance.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageFilter.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageFont.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageGrab.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageMath.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageMode.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageMorph.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageOps.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImagePalette.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImagePath.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageQt.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageSequence.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageShow.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageStat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageTk.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageTransform.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImageWin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/JpegPresets.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/MicImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/MspImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PSDraw.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PaletteFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PcfFontFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PdfParser.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PngImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/PyAccess.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/SunImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/TarIO.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/TiffTags.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/WalImageFile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__main__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ContainerIO.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/CurImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/DdsImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/FitsImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/Image.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageChops.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageCms.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageEnhance.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFont.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImagePalette.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageSequence.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageShow.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageTk.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageTransform.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageWin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImtImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/IptcImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/JpegImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/MpegImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/MpoImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcdImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcfFontFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PdfImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PpmImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/PyAccess.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/QoiImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/SunImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/TiffTags.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/WebPImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/__main__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/_binary.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/_util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/_version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/__pycache__/features.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_binary.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_deprecate.py create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-x86_64-linux-gnu.so create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_tkinter_finder.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_version.py create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/_webp.cpython-310-x86_64-linux-gnu.so create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/PIL/features.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/INSTALLER create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/LICENSE create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/METADATA create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/RECORD create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/WHEEL create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/top_level.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/zip-safe create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libXau-154567c4.so.6.0.0 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlicommon-702ab7f8.so.1 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlidec-7a796284.so.1.0.9 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libfreetype-8b16add1.so.6.20.0 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libharfbuzz-adaef2a2.so.0.60730.0 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libjpeg-dab02bf4.so.62.3.0 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/liblcms2-0821774a.so.2.0.15 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/liblzma-9dd5c569.so.5.4.3 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libopenjp2-20e347f0.so.2.5.0 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libpng16-39c06ea1.so.16.40.0 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libsharpyuv-20f78091.so.0.0.1 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libtiff-189042a3.so.6.0.1 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libwebp-8b6d8948.so.7.1.7 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libwebpdemux-fc93391d.so.2.0.13 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libwebpmux-b3bcb8ec.so.3.0.12 create mode 100755 Follow_the_line/.venv/lib/python3.10/site-packages/Pillow.libs/libxcb-cd9c1006.so.1.1.0 create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/_distutils_hack/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/_distutils_hack/__pycache__/override.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/_distutils_hack/override.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/distutils-precedence.pth create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/auto.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/button.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/console.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/display.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/led.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/motor.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/port.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/power.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/sound.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/stopwatch.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/unit.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/brickpi.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/brickpi3.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/ev3.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/evb.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/fake.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/__pycache__/pistorms.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/brickpi.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/brickpi3.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/ev3.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/evb.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/fake.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/_platform/pistorms.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/auto.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/button.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/console.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/GyroBalancer.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/GyroBalancer.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/rc_tank.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/__pycache__/webserver.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/rc_tank.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/control/webserver.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/display.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/fonts/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/fonts/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/led.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/motor.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/port.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/power.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/sensor/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/sensor/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/sensor/__pycache__/lego.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/sensor/lego.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/sound.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/stopwatch.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/unit.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/ev3dev2/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/AUTHORS.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/INSTALLER create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/LICENSE.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/METADATA create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/RECORD create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/REQUESTED create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/WHEEL create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/entry_points.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip-23.2.dist-info/top_level.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/__main__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/__pip-runner__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/__pycache__/__main__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/__pycache__/__pip-runner__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/build_env.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/cache.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/configuration.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/exceptions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/main.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/pyproject.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/build_env.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cache.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/parser.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/base_command.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/command_context.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/main.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/main_parser.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/parser.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/req_command.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/spinners.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/cli/status_codes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/cache.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/check.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/completion.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/debug.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/download.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/hash.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/help.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/index.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/install.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/list.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/search.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/show.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/cache.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/check.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/completion.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/configuration.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/debug.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/download.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/freeze.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/hash.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/help.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/index.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/inspect.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/install.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/list.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/search.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/show.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/uninstall.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/commands/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/configuration.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/base.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/base.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/installed.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/sdist.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/distributions/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/exceptions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/collector.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/__pycache__/sources.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/collector.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/package_finder.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/index/sources.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/__pycache__/base.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/_distutils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/locations/base.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/main.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/base.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/_json.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/base.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_dists.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/importlib/_envs.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/candidate.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/format_control.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/index.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/link.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/scheme.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/target_python.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/candidate.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/direct_url.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/format_control.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/index.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/installation_report.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/link.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/scheme.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/search_scope.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/target_python.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/models/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/auth.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/cache.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/download.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/session.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/auth.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/cache.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/download.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/session.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/check.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/build_tracker.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/check.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/freeze.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/operations/prepare.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/pyproject.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/constructors.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_file.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_install.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_set.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/constructors.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/req_file.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/req_install.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/req_set.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/__pycache__/base.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/base.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/self_outdated_check.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/_log.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/inject_securetransport.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/logging.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/misc.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/models.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/urls.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/_jaraco_text.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/_log.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/appdirs.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/datetime.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/deprecation.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/egg_link.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/encoding.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/filesystem.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/filetypes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/glibc.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/hashes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/inject_securetransport.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/logging.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/misc.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/models.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/packaging.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/subprocess.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/unpacking.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/urls.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/utils/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/git.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/git.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/subversion.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_internal/wheel_builder.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/six.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/certifi/core.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5freq.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/big5prober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/chardistribution.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetgroupprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/charsetprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachine.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/codingstatemachinedict.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/cp949prober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/enums.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/escsm.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/eucjpprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrfreq.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euckrprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwfreq.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/euctwprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312freq.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/gb2312prober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/hebrewprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jisfreq.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabfreq.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/johabprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/jpcntx.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langbulgarianmodel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langgreekmodel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhebrewmodel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langhungarianmodel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langrussianmodel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langthaimodel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/langturkishmodel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/latin1prober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/macromanprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcharsetprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcsgroupprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/mbcssm.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/resultdict.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcharsetprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sbcsgroupprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/sjisprober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/universaldetector.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf1632prober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/utf8prober.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5freq.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/big5prober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/chardistribution.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetgroupprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/charsetprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/__pycache__/chardetect.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cli/chardetect.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachine.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/codingstatemachinedict.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/cp949prober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/enums.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/escprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/escsm.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/eucjpprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrfreq.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euckrprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwfreq.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/euctwprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312freq.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/gb2312prober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/hebrewprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/jisfreq.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabfreq.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/johabprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/jpcntx.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langbulgarianmodel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langgreekmodel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhebrewmodel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langhungarianmodel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langrussianmodel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langthaimodel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/langturkishmodel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/latin1prober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/macromanprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcharsetprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcsgroupprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/mbcssm.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/__pycache__/languages.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/metadata/languages.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/resultdict.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcharsetprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/sbcsgroupprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/sjisprober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/universaldetector.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf1632prober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/utf8prober.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/chardet/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansi.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/ansitowin32.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/initialise.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/win32.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/__pycache__/winterm.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansi.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/ansitowin32.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/initialise.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansi_test.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/ansitowin32_test.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/initialise_test.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/isatty_test.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/__pycache__/winterm_test.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansi_test.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/initialise_test.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/isatty_test.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/tests/winterm_test.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/win32.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/colorama/winterm.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/database.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/index.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/locators.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/markers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/resources.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64-arm.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64-arm.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__main__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/distro/distro.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/core.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/codec.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/core.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/intranges.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/package_data.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__about__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/markers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/tags.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/packaging/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/console.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/filter.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/style.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/token.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pygments/util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/actions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/common.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/core.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/exceptions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/helpers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/results.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/testing.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/unicode.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/__pycache__/util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/actions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/common.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/core.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/diagram/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/exceptions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/helpers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/results.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/testing.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/unicode.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyparsing/util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_impl.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/api.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/help.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/models.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/__version__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/adapters.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/api.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/auth.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/certs.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/cookies.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/help.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/hooks.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/models.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/packages.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/sessions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/structures.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/requests/utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__main__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/align.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/box.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/console.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/control.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/json.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/region.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/status.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/style.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/table.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/text.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_export_format.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_extension.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_fileno.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_loop.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_null_file.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_pick.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_stack.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_timer.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_win32_console.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_windows_renderer.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/abc.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/align.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/ansi.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/bar.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/box.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/cells.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/color.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/columns.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/console.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/constrain.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/containers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/control.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/emoji.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/errors.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/filesize.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/json.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/layout.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/live.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/live_render.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/logging.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/markup.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/measure.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/padding.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/pager.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/palette.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/panel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/pretty.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/progress.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/prompt.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/protocol.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/region.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/repr.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/rule.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/scope.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/screen.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/segment.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/spinner.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/status.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/style.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/styled.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/syntax.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/table.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/text.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/theme.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/themes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/traceback.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/rich/tree.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/six.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_asyncio.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/_utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/after.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/before_sleep.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/nap.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/retry.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/stop.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/tornadoweb.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/__pycache__/wait.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_asyncio.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/_utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/after.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/before_sleep.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/nap.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/retry.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/stop.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/tornadoweb.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tenacity/wait.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/_re.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/tomli/_types.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/typing_extensions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/request.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/response.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/vendor.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/labels.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/mklabels.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/tests.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/__pycache__/x_user_defined.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/labels.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/mklabels.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/tests.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/_vendor/webencodings/x_user_defined.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pip/py.typed create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/appdirs.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/__pycache__/pyparsing.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/appdirs.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__about__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_manylinux.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_musllinux.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/_structures.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/markers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/requirements.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/specifiers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/tags.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/packaging/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/_vendor/pyparsing.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/extern/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/__pycache__/setup.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/pkg_resources/tests/data/my-test-package-source/setup.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/INSTALLER create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/METADATA create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/RECORD create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/REQUESTED create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/WHEEL create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/python_ev3dev2-2.1.0.post1.dist-info/top_level.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/INSTALLER create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/LICENSE create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/METADATA create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/RECORD create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/REQUESTED create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/WHEEL create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/entry_points.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools-59.6.0.dist-info/top_level.txt create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/_deprecation_warning.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/_imp.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/archive_util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/build_meta.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/config.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/dep_util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/depends.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/dist.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/errors.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/extension.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/glob.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/installer.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/launch.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/monkey.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/msvc.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/namespaces.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/package_index.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/py34compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/sandbox.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/unicode_utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/wheel.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/__pycache__/windows_support.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_deprecation_warning.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/_msvccompiler.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/archive_util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/bcppcompiler.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/ccompiler.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cmd.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/config.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/core.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/cygwinccompiler.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/debug.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dep_util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dir_util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/dist.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/errors.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/extension.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/fancy_getopt.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/file_util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/filelist.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/log.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvc9compiler.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/msvccompiler.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py35compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/py38compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/spawn.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/sysconfig.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/text_file.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/unixccompiler.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/util.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/__pycache__/versionpredicate.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/_msvccompiler.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/archive_util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/bcppcompiler.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/ccompiler.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/cmd.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_dumb.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_msi.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/bdist_wininst.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_py.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/build_scripts.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/check.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/clean.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/config.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_data.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_headers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/py37compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/register.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/sdist.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/__pycache__/upload.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_dumb.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_msi.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_rpm.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/bdist_wininst.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_clib.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_ext.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_py.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/build_scripts.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/check.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/clean.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/config.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_data.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_egg_info.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_headers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_lib.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/install_scripts.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/py37compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/register.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/sdist.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/command/upload.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/config.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/core.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/cygwinccompiler.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/debug.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/dep_util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/dir_util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/dist.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/errors.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/extension.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/fancy_getopt.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/file_util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/filelist.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/log.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/msvc9compiler.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/msvccompiler.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/py35compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/py38compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/spawn.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/sysconfig.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/text_file.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/unixccompiler.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_distutils/versionpredicate.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_imp.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/ordered_set.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/__pycache__/pyparsing.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/more.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/__pycache__/recipes.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/more.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/more_itertools/recipes.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/ordered_set.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__about__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/__about__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_manylinux.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_musllinux.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/_structures.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/markers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/requirements.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/specifiers.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/tags.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/utils.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/__pycache__/version.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_manylinux.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_musllinux.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/_structures.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/markers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/requirements.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/specifiers.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/tags.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/packaging/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/_vendor/pyparsing.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/archive_util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/build_meta.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/cli-32.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/cli-64.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/cli-arm64.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/cli.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/alias.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_egg.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/bdist_rpm.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_clib.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_ext.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/build_py.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/develop.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/dist_info.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/easy_install.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/egg_info.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_egg_info.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_lib.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/install_scripts.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/py36compat.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/register.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/rotate.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/saveopts.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/sdist.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/setopt.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/test.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/__pycache__/upload_docs.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/alias.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/bdist_egg.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/bdist_rpm.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/build_clib.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/build_ext.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/build_py.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/develop.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/dist_info.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/easy_install.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/egg_info.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/install.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/install_egg_info.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/install_lib.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/install_scripts.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/launcher manifest.xml create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/py36compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/register.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/rotate.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/saveopts.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/sdist.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/setopt.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/test.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/upload.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/command/upload_docs.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/config.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/dep_util.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/depends.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/dist.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/errors.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/extension.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/extern/__init__.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/extern/__pycache__/__init__.cpython-310.pyc create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/glob.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/gui-32.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/gui-64.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/gui-arm64.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/gui.exe create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/installer.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/launch.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/monkey.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/msvc.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/namespaces.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/package_index.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/py34compat.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/sandbox.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/script (dev).tmpl create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/script.tmpl create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/unicode_utils.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/version.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/wheel.py create mode 100644 Follow_the_line/.venv/lib/python3.10/site-packages/setuptools/windows_support.py create mode 120000 Follow_the_line/.venv/lib64 create mode 100644 Follow_the_line/.venv/pyvenv.cfg diff --git a/Color_Sorting/.venv/bin/Activate.ps1 b/Color_Sorting/.venv/bin/Activate.ps1 new file mode 100644 index 0000000..b49d77b --- /dev/null +++ b/Color_Sorting/.venv/bin/Activate.ps1 @@ -0,0 +1,247 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove VIRTUAL_ENV_PROMPT altogether. + if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { + Remove-Item -Path env:VIRTUAL_ENV_PROMPT + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } + $env:VIRTUAL_ENV_PROMPT = $Prompt +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/Color_Sorting/.venv/bin/activate b/Color_Sorting/.venv/bin/activate new file mode 100644 index 0000000..a37a871 --- /dev/null +++ b/Color_Sorting/.venv/bin/activate @@ -0,0 +1,69 @@ +# This file must be used with "source bin/activate" *from bash* +# you cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # This should detect bash and zsh, which have a hash command that must + # be called to get it to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null + fi + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + unset VIRTUAL_ENV_PROMPT + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +VIRTUAL_ENV="/home/cpstanja/Documents/Python_Programms/.venv" +export VIRTUAL_ENV + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1="(.venv) ${PS1:-}" + export PS1 + VIRTUAL_ENV_PROMPT="(.venv) " + export VIRTUAL_ENV_PROMPT +fi + +# This should detect bash and zsh, which have a hash command that must +# be called to get it to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +if [ -n "${BASH:-}" -o -n "${ZSH_VERSION:-}" ] ; then + hash -r 2> /dev/null +fi diff --git a/Color_Sorting/.venv/bin/activate.csh b/Color_Sorting/.venv/bin/activate.csh new file mode 100644 index 0000000..876cb39 --- /dev/null +++ b/Color_Sorting/.venv/bin/activate.csh @@ -0,0 +1,26 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/cpstanja/Documents/Python_Programms/.venv" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "(.venv) $prompt" + setenv VIRTUAL_ENV_PROMPT "(.venv) " +endif + +alias pydoc python -m pydoc + +rehash diff --git a/Color_Sorting/.venv/bin/activate.fish b/Color_Sorting/.venv/bin/activate.fish new file mode 100644 index 0000000..ab041f2 --- /dev/null +++ b/Color_Sorting/.venv/bin/activate.fish @@ -0,0 +1,66 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/); you cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + functions -e fish_prompt + set -e _OLD_FISH_PROMPT_OVERRIDE + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + + set -e VIRTUAL_ENV + set -e VIRTUAL_ENV_PROMPT + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/cpstanja/Documents/Python_Programms/.venv" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) "(.venv) " (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" + set -gx VIRTUAL_ENV_PROMPT "(.venv) " +end diff --git a/Color_Sorting/.venv/bin/pip b/Color_Sorting/.venv/bin/pip new file mode 100755 index 0000000..275122e --- /dev/null +++ b/Color_Sorting/.venv/bin/pip @@ -0,0 +1,8 @@ +#!/home/cpstanja/Documents/Python_Programms/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/Color_Sorting/.venv/bin/pip3 b/Color_Sorting/.venv/bin/pip3 new file mode 100755 index 0000000..275122e --- /dev/null +++ b/Color_Sorting/.venv/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/cpstanja/Documents/Python_Programms/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/Color_Sorting/.venv/bin/pip3.10 b/Color_Sorting/.venv/bin/pip3.10 new file mode 100755 index 0000000..275122e --- /dev/null +++ b/Color_Sorting/.venv/bin/pip3.10 @@ -0,0 +1,8 @@ +#!/home/cpstanja/Documents/Python_Programms/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/Color_Sorting/.venv/bin/pip3.11 b/Color_Sorting/.venv/bin/pip3.11 new file mode 100755 index 0000000..275122e --- /dev/null +++ b/Color_Sorting/.venv/bin/pip3.11 @@ -0,0 +1,8 @@ +#!/home/cpstanja/Documents/Python_Programms/.venv/bin/python3 +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/Color_Sorting/.venv/bin/python b/Color_Sorting/.venv/bin/python new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/Color_Sorting/.venv/bin/python @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/Color_Sorting/.venv/bin/python3 b/Color_Sorting/.venv/bin/python3 new file mode 120000 index 0000000..ae65fda --- /dev/null +++ b/Color_Sorting/.venv/bin/python3 @@ -0,0 +1 @@ +/usr/bin/python3 \ No newline at end of file diff --git a/Color_Sorting/.venv/bin/python3.10 b/Color_Sorting/.venv/bin/python3.10 new file mode 120000 index 0000000..b8a0adb --- /dev/null +++ b/Color_Sorting/.venv/bin/python3.10 @@ -0,0 +1 @@ +python3 \ No newline at end of file diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BdfFontFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BdfFontFile.py new file mode 100644 index 0000000..075d462 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BdfFontFile.py @@ -0,0 +1,122 @@ +# +# The Python Imaging Library +# $Id$ +# +# bitmap distribution font (bdf) file parser +# +# history: +# 1996-05-16 fl created (as bdf2pil) +# 1997-08-25 fl converted to FontFile driver +# 2001-05-25 fl removed bogus __init__ call +# 2002-11-20 fl robustification (from Kevin Cazabon, Dmitry Vasiliev) +# 2003-04-22 fl more robustification (from Graham Dumpleton) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +Parse X Bitmap Distribution Format (BDF) +""" + + +from . import FontFile, Image + +bdf_slant = { + "R": "Roman", + "I": "Italic", + "O": "Oblique", + "RI": "Reverse Italic", + "RO": "Reverse Oblique", + "OT": "Other", +} + +bdf_spacing = {"P": "Proportional", "M": "Monospaced", "C": "Cell"} + + +def bdf_char(f): + # skip to STARTCHAR + while True: + s = f.readline() + if not s: + return None + if s[:9] == b"STARTCHAR": + break + id = s[9:].strip().decode("ascii") + + # load symbol properties + props = {} + while True: + s = f.readline() + if not s or s[:6] == b"BITMAP": + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + + # load bitmap + bitmap = [] + while True: + s = f.readline() + if not s or s[:7] == b"ENDCHAR": + break + bitmap.append(s[:-1]) + bitmap = b"".join(bitmap) + + # The word BBX + # followed by the width in x (BBw), height in y (BBh), + # and x and y displacement (BBxoff0, BByoff0) + # of the lower left corner from the origin of the character. + width, height, x_disp, y_disp = [int(p) for p in props["BBX"].split()] + + # The word DWIDTH + # followed by the width in x and y of the character in device pixels. + dwx, dwy = [int(p) for p in props["DWIDTH"].split()] + + bbox = ( + (dwx, dwy), + (x_disp, -y_disp - height, width + x_disp, -y_disp), + (0, 0, width, height), + ) + + try: + im = Image.frombytes("1", (width, height), bitmap, "hex", "1") + except ValueError: + # deal with zero-width characters + im = Image.new("1", (width, height)) + + return id, int(props["ENCODING"]), bbox, im + + +class BdfFontFile(FontFile.FontFile): + """Font file plugin for the X11 BDF format.""" + + def __init__(self, fp): + super().__init__() + + s = fp.readline() + if s[:13] != b"STARTFONT 2.1": + msg = "not a valid BDF file" + raise SyntaxError(msg) + + props = {} + comments = [] + + while True: + s = fp.readline() + if not s or s[:13] == b"ENDPROPERTIES": + break + i = s.find(b" ") + props[s[:i].decode("ascii")] = s[i + 1 : -1].decode("ascii") + if s[:i] in [b"COMMENT", b"COPYRIGHT"]: + if s.find(b"LogicalFontDescription") < 0: + comments.append(s[i + 1 : -1].decode("ascii")) + + while True: + c = bdf_char(fp) + if not c: + break + id, ch, (xy, dst, src), im = c + if 0 <= ch < len(self.glyph): + self.glyph[ch] = xy, dst, src, im diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py new file mode 100644 index 0000000..0ca60ff --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BlpImagePlugin.py @@ -0,0 +1,472 @@ +""" +Blizzard Mipmap Format (.blp) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +BLP1 files, used mostly in Warcraft III, are not fully supported. +All types of BLP2 files used in World of Warcraft are supported. + +The BLP file structure consists of a header, up to 16 mipmaps of the +texture + +Texture sizes must be powers of two, though the two dimensions do +not have to be equal; 512x256 is valid, but 512x200 is not. +The first mipmap (mipmap #0) is the full size image; each subsequent +mipmap halves both dimensions. The final mipmap should be 1x1. + +BLP files come in many different flavours: +* JPEG-compressed (type == 0) - only supported for BLP1. +* RAW images (type == 1, encoding == 1). Each mipmap is stored as an + array of 8-bit values, one per pixel, left to right, top to bottom. + Each value is an index to the palette. +* DXT-compressed (type == 1, encoding == 2): +- DXT1 compression is used if alpha_encoding == 0. + - An additional alpha bit is used if alpha_depth == 1. + - DXT3 compression is used if alpha_encoding == 1. + - DXT5 compression is used if alpha_encoding == 7. +""" + +import os +import struct +from enum import IntEnum +from io import BytesIO + +from . import Image, ImageFile + + +class Format(IntEnum): + JPEG = 0 + + +class Encoding(IntEnum): + UNCOMPRESSED = 1 + DXT = 2 + UNCOMPRESSED_RAW_BGRA = 3 + + +class AlphaEncoding(IntEnum): + DXT1 = 0 + DXT3 = 1 + DXT5 = 7 + + +def unpack_565(i): + return ((i >> 11) & 0x1F) << 3, ((i >> 5) & 0x3F) << 2, (i & 0x1F) << 3 + + +def decode_dxt1(data, alpha=False): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 8 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + # Decode next 8-byte block. + idx = block * 8 + color0, color1, bits = struct.unpack_from("> 2 + + a = 0xFF + if control == 0: + r, g, b = r0, g0, b0 + elif control == 1: + r, g, b = r1, g1, b1 + elif control == 2: + if color0 > color1: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + else: + r = (r0 + r1) // 2 + g = (g0 + g1) // 2 + b = (b0 + b1) // 2 + elif control == 3: + if color0 > color1: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + else: + r, g, b, a = 0, 0, 0, 0 + + if alpha: + ret[j].extend([r, g, b, a]) + else: + ret[j].extend([r, g, b]) + + return ret + + +def decode_dxt3(data): + """ + input: one "row" of data (i.e. will produce 4*width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + bits = struct.unpack_from("<8B", block) + color0, color1 = struct.unpack_from(">= 4 + else: + high = True + a &= 0xF + a *= 17 # We get a value between 0 and 15 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +def decode_dxt5(data): + """ + input: one "row" of data (i.e. will produce 4 * width pixels) + """ + + blocks = len(data) // 16 # number of blocks in row + ret = (bytearray(), bytearray(), bytearray(), bytearray()) + + for block in range(blocks): + idx = block * 16 + block = data[idx : idx + 16] + # Decode next 16-byte block. + a0, a1 = struct.unpack_from("> alphacode_index) & 0x07 + elif alphacode_index == 15: + alphacode = (alphacode2 >> 15) | ((alphacode1 << 1) & 0x06) + else: # alphacode_index >= 18 and alphacode_index <= 45 + alphacode = (alphacode1 >> (alphacode_index - 16)) & 0x07 + + if alphacode == 0: + a = a0 + elif alphacode == 1: + a = a1 + elif a0 > a1: + a = ((8 - alphacode) * a0 + (alphacode - 1) * a1) // 7 + elif alphacode == 6: + a = 0 + elif alphacode == 7: + a = 255 + else: + a = ((6 - alphacode) * a0 + (alphacode - 1) * a1) // 5 + + color_code = (code >> 2 * (4 * j + i)) & 0x03 + + if color_code == 0: + r, g, b = r0, g0, b0 + elif color_code == 1: + r, g, b = r1, g1, b1 + elif color_code == 2: + r = (2 * r0 + r1) // 3 + g = (2 * g0 + g1) // 3 + b = (2 * b0 + b1) // 3 + elif color_code == 3: + r = (2 * r1 + r0) // 3 + g = (2 * g1 + g0) // 3 + b = (2 * b1 + b0) // 3 + + ret[j].extend([r, g, b, a]) + + return ret + + +class BLPFormatError(NotImplementedError): + pass + + +def _accept(prefix): + return prefix[:4] in (b"BLP1", b"BLP2") + + +class BlpImageFile(ImageFile.ImageFile): + """ + Blizzard Mipmap Format + """ + + format = "BLP" + format_description = "Blizzard Mipmap Format" + + def _open(self): + self.magic = self.fp.read(4) + + self.fp.seek(5, os.SEEK_CUR) + (self._blp_alpha_depth,) = struct.unpack(" mode, rawmode + 1: ("P", "P;1"), + 4: ("P", "P;4"), + 8: ("P", "P"), + 16: ("RGB", "BGR;15"), + 24: ("RGB", "BGR"), + 32: ("RGB", "BGRX"), +} + + +def _accept(prefix): + return prefix[:2] == b"BM" + + +def _dib_accept(prefix): + return i32(prefix) in [12, 40, 64, 108, 124] + + +# ============================================================================= +# Image plugin for the Windows BMP format. +# ============================================================================= +class BmpImageFile(ImageFile.ImageFile): + """Image plugin for the Windows Bitmap format (BMP)""" + + # ------------------------------------------------------------- Description + format_description = "Windows Bitmap" + format = "BMP" + + # -------------------------------------------------- BMP Compression values + COMPRESSIONS = {"RAW": 0, "RLE8": 1, "RLE4": 2, "BITFIELDS": 3, "JPEG": 4, "PNG": 5} + for k, v in COMPRESSIONS.items(): + vars()[k] = v + + def _bitmap(self, header=0, offset=0): + """Read relevant info about the BMP""" + read, seek = self.fp.read, self.fp.seek + if header: + seek(header) + # read bmp header size @offset 14 (this is part of the header size) + file_info = {"header_size": i32(read(4)), "direction": -1} + + # -------------------- If requested, read header at a specific position + # read the rest of the bmp header, without its size + header_data = ImageFile._safe_read(self.fp, file_info["header_size"] - 4) + + # -------------------------------------------------- IBM OS/2 Bitmap v1 + # ----- This format has different offsets because of width/height types + if file_info["header_size"] == 12: + file_info["width"] = i16(header_data, 0) + file_info["height"] = i16(header_data, 2) + file_info["planes"] = i16(header_data, 4) + file_info["bits"] = i16(header_data, 6) + file_info["compression"] = self.RAW + file_info["palette_padding"] = 3 + + # --------------------------------------------- Windows Bitmap v2 to v5 + # v3, OS/2 v2, v4, v5 + elif file_info["header_size"] in (40, 64, 108, 124): + file_info["y_flip"] = header_data[7] == 0xFF + file_info["direction"] = 1 if file_info["y_flip"] else -1 + file_info["width"] = i32(header_data, 0) + file_info["height"] = ( + i32(header_data, 4) + if not file_info["y_flip"] + else 2**32 - i32(header_data, 4) + ) + file_info["planes"] = i16(header_data, 8) + file_info["bits"] = i16(header_data, 10) + file_info["compression"] = i32(header_data, 12) + # byte size of pixel data + file_info["data_size"] = i32(header_data, 16) + file_info["pixels_per_meter"] = ( + i32(header_data, 20), + i32(header_data, 24), + ) + file_info["colors"] = i32(header_data, 28) + file_info["palette_padding"] = 4 + self.info["dpi"] = tuple(x / 39.3701 for x in file_info["pixels_per_meter"]) + if file_info["compression"] == self.BITFIELDS: + if len(header_data) >= 52: + for idx, mask in enumerate( + ["r_mask", "g_mask", "b_mask", "a_mask"] + ): + file_info[mask] = i32(header_data, 36 + idx * 4) + else: + # 40 byte headers only have the three components in the + # bitfields masks, ref: + # https://msdn.microsoft.com/en-us/library/windows/desktop/dd183376(v=vs.85).aspx + # See also + # https://github.com/python-pillow/Pillow/issues/1293 + # There is a 4th component in the RGBQuad, in the alpha + # location, but it is listed as a reserved component, + # and it is not generally an alpha channel + file_info["a_mask"] = 0x0 + for mask in ["r_mask", "g_mask", "b_mask"]: + file_info[mask] = i32(read(4)) + file_info["rgb_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + ) + file_info["rgba_mask"] = ( + file_info["r_mask"], + file_info["g_mask"], + file_info["b_mask"], + file_info["a_mask"], + ) + else: + msg = f"Unsupported BMP header type ({file_info['header_size']})" + raise OSError(msg) + + # ------------------ Special case : header is reported 40, which + # ---------------------- is shorter than real size for bpp >= 16 + self._size = file_info["width"], file_info["height"] + + # ------- If color count was not found in the header, compute from bits + file_info["colors"] = ( + file_info["colors"] + if file_info.get("colors", 0) + else (1 << file_info["bits"]) + ) + if offset == 14 + file_info["header_size"] and file_info["bits"] <= 8: + offset += 4 * file_info["colors"] + + # ---------------------- Check bit depth for unusual unsupported values + self.mode, raw_mode = BIT2MODE.get(file_info["bits"], (None, None)) + if self.mode is None: + msg = f"Unsupported BMP pixel depth ({file_info['bits']})" + raise OSError(msg) + + # ---------------- Process BMP with Bitfields compression (not palette) + decoder_name = "raw" + if file_info["compression"] == self.BITFIELDS: + SUPPORTED = { + 32: [ + (0xFF0000, 0xFF00, 0xFF, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0x0), + (0xFF000000, 0xFF0000, 0xFF00, 0xFF), + (0xFF, 0xFF00, 0xFF0000, 0xFF000000), + (0xFF0000, 0xFF00, 0xFF, 0xFF000000), + (0x0, 0x0, 0x0, 0x0), + ], + 24: [(0xFF0000, 0xFF00, 0xFF)], + 16: [(0xF800, 0x7E0, 0x1F), (0x7C00, 0x3E0, 0x1F)], + } + MASK_MODES = { + (32, (0xFF0000, 0xFF00, 0xFF, 0x0)): "BGRX", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0x0)): "XBGR", + (32, (0xFF000000, 0xFF0000, 0xFF00, 0xFF)): "ABGR", + (32, (0xFF, 0xFF00, 0xFF0000, 0xFF000000)): "RGBA", + (32, (0xFF0000, 0xFF00, 0xFF, 0xFF000000)): "BGRA", + (32, (0x0, 0x0, 0x0, 0x0)): "BGRA", + (24, (0xFF0000, 0xFF00, 0xFF)): "BGR", + (16, (0xF800, 0x7E0, 0x1F)): "BGR;16", + (16, (0x7C00, 0x3E0, 0x1F)): "BGR;15", + } + if file_info["bits"] in SUPPORTED: + if ( + file_info["bits"] == 32 + and file_info["rgba_mask"] in SUPPORTED[file_info["bits"]] + ): + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgba_mask"])] + self.mode = "RGBA" if "A" in raw_mode else self.mode + elif ( + file_info["bits"] in (24, 16) + and file_info["rgb_mask"] in SUPPORTED[file_info["bits"]] + ): + raw_mode = MASK_MODES[(file_info["bits"], file_info["rgb_mask"])] + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + else: + msg = "Unsupported BMP bitfields layout" + raise OSError(msg) + elif file_info["compression"] == self.RAW: + if file_info["bits"] == 32 and header == 22: # 32-bit .cur offset + raw_mode, self.mode = "BGRA", "RGBA" + elif file_info["compression"] in (self.RLE8, self.RLE4): + decoder_name = "bmp_rle" + else: + msg = f"Unsupported BMP compression ({file_info['compression']})" + raise OSError(msg) + + # --------------- Once the header is processed, process the palette/LUT + if self.mode == "P": # Paletted for 1, 4 and 8 bit images + # ---------------------------------------------------- 1-bit images + if not (0 < file_info["colors"] <= 65536): + msg = f"Unsupported BMP Palette size ({file_info['colors']})" + raise OSError(msg) + else: + padding = file_info["palette_padding"] + palette = read(padding * file_info["colors"]) + greyscale = True + indices = ( + (0, 255) + if file_info["colors"] == 2 + else list(range(file_info["colors"])) + ) + + # ----------------- Check if greyscale and ignore palette if so + for ind, val in enumerate(indices): + rgb = palette[ind * padding : ind * padding + 3] + if rgb != o8(val) * 3: + greyscale = False + + # ------- If all colors are grey, white or black, ditch palette + if greyscale: + self.mode = "1" if file_info["colors"] == 2 else "L" + raw_mode = self.mode + else: + self.mode = "P" + self.palette = ImagePalette.raw( + "BGRX" if padding == 4 else "BGR", palette + ) + + # ---------------------------- Finally set the tile data for the plugin + self.info["compression"] = file_info["compression"] + args = [raw_mode] + if decoder_name == "bmp_rle": + args.append(file_info["compression"] == self.RLE4) + else: + args.append(((file_info["width"] * file_info["bits"] + 31) >> 3) & (~3)) + args.append(file_info["direction"]) + self.tile = [ + ( + decoder_name, + (0, 0, file_info["width"], file_info["height"]), + offset or self.fp.tell(), + tuple(args), + ) + ] + + def _open(self): + """Open file, check magic number and read header""" + # read 14 bytes: magic number, filesize, reserved, header final offset + head_data = self.fp.read(14) + # choke if the file does not have the required magic bytes + if not _accept(head_data): + msg = "Not a BMP file" + raise SyntaxError(msg) + # read the start position of the BMP image data (u32) + offset = i32(head_data, 10) + # load bitmap information (offset=raster info) + self._bitmap(offset=offset) + + +class BmpRleDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer): + rle4 = self.args[1] + data = bytearray() + x = 0 + while len(data) < self.state.xsize * self.state.ysize: + pixels = self.fd.read(1) + byte = self.fd.read(1) + if not pixels or not byte: + break + num_pixels = pixels[0] + if num_pixels: + # encoded mode + if x + num_pixels > self.state.xsize: + # Too much data for row + num_pixels = max(0, self.state.xsize - x) + if rle4: + first_pixel = o8(byte[0] >> 4) + second_pixel = o8(byte[0] & 0x0F) + for index in range(num_pixels): + if index % 2 == 0: + data += first_pixel + else: + data += second_pixel + else: + data += byte * num_pixels + x += num_pixels + else: + if byte[0] == 0: + # end of line + while len(data) % self.state.xsize != 0: + data += b"\x00" + x = 0 + elif byte[0] == 1: + # end of bitmap + break + elif byte[0] == 2: + # delta + bytes_read = self.fd.read(2) + if len(bytes_read) < 2: + break + right, up = self.fd.read(2) + data += b"\x00" * (right + up * self.state.xsize) + x = len(data) % self.state.xsize + else: + # absolute mode + if rle4: + # 2 pixels per byte + byte_count = byte[0] // 2 + bytes_read = self.fd.read(byte_count) + for byte_read in bytes_read: + data += o8(byte_read >> 4) + data += o8(byte_read & 0x0F) + else: + byte_count = byte[0] + bytes_read = self.fd.read(byte_count) + data += bytes_read + if len(bytes_read) < byte_count: + break + x += byte[0] + + # align to 16-bit word boundary + if self.fd.tell() % 2 != 0: + self.fd.seek(1, os.SEEK_CUR) + rawmode = "L" if self.mode == "L" else "P" + self.set_as_raw(bytes(data), (rawmode, 0, self.args[-1])) + return -1, 0 + + +# ============================================================================= +# Image plugin for the DIB format (BMP alias) +# ============================================================================= +class DibImageFile(BmpImageFile): + format = "DIB" + format_description = "Windows Bitmap" + + def _open(self): + self._bitmap() + + +# +# -------------------------------------------------------------------- +# Write BMP file + + +SAVE = { + "1": ("1", 1, 2), + "L": ("L", 8, 256), + "P": ("P", 8, 256), + "RGB": ("BGR", 24, 0), + "RGBA": ("BGRA", 32, 0), +} + + +def _dib_save(im, fp, filename): + _save(im, fp, filename, False) + + +def _save(im, fp, filename, bitmap_header=True): + try: + rawmode, bits, colors = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as BMP" + raise OSError(msg) from e + + info = im.encoderinfo + + dpi = info.get("dpi", (96, 96)) + + # 1 meter == 39.3701 inches + ppm = tuple(map(lambda x: int(x * 39.3701 + 0.5), dpi)) + + stride = ((im.size[0] * bits + 7) // 8 + 3) & (~3) + header = 40 # or 64 for OS/2 version 2 + image = stride * im.size[1] + + if im.mode == "1": + palette = b"".join(o8(i) * 4 for i in (0, 255)) + elif im.mode == "L": + palette = b"".join(o8(i) * 4 for i in range(256)) + elif im.mode == "P": + palette = im.im.getpalette("RGB", "BGRX") + colors = len(palette) // 4 + else: + palette = None + + # bitmap header + if bitmap_header: + offset = 14 + header + colors * 4 + file_size = offset + image + if file_size > 2**32 - 1: + msg = "File size is too large for the BMP format" + raise ValueError(msg) + fp.write( + b"BM" # file type (magic) + + o32(file_size) # file size + + o32(0) # reserved + + o32(offset) # image data offset + ) + + # bitmap info header + fp.write( + o32(header) # info header size + + o32(im.size[0]) # width + + o32(im.size[1]) # height + + o16(1) # planes + + o16(bits) # depth + + o32(0) # compression (0=uncompressed) + + o32(image) # size of bitmap + + o32(ppm[0]) # resolution + + o32(ppm[1]) # resolution + + o32(colors) # colors used + + o32(colors) # colors important + ) + + fp.write(b"\0" * (header - 40)) # padding (for OS/2 format) + + if palette: + fp.write(palette) + + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, stride, -1))]) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(BmpImageFile.format, BmpImageFile, _accept) +Image.register_save(BmpImageFile.format, _save) + +Image.register_extension(BmpImageFile.format, ".bmp") + +Image.register_mime(BmpImageFile.format, "image/bmp") + +Image.register_decoder("bmp_rle", BmpRleDecoder) + +Image.register_open(DibImageFile.format, DibImageFile, _dib_accept) +Image.register_save(DibImageFile.format, _dib_save) + +Image.register_extension(DibImageFile.format, ".dib") + +Image.register_mime(DibImageFile.format, "image/bmp") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py new file mode 100644 index 0000000..0425bbd --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/BufrStubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# BUFR stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific BUFR image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:4] == b"BUFR" or prefix[:4] == b"ZCZC" + + +class BufrStubImageFile(ImageFile.StubImageFile): + format = "BUFR" + format_description = "BUFR" + + def _open(self): + offset = self.fp.tell() + + if not _accept(self.fp.read(4)): + msg = "Not a BUFR file" + raise SyntaxError(msg) + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + msg = "BUFR save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(BufrStubImageFile.format, BufrStubImageFile, _accept) +Image.register_save(BufrStubImageFile.format, _save) + +Image.register_extension(BufrStubImageFile.format, ".bufr") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ContainerIO.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ContainerIO.py new file mode 100644 index 0000000..45e80b3 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ContainerIO.py @@ -0,0 +1,120 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a class to read from a container file +# +# History: +# 1995-06-18 fl Created +# 1995-09-07 fl Added readline(), readlines() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +import io + + +class ContainerIO: + """ + A file object that provides read access to a part of an existing + file (for example a TAR file). + """ + + def __init__(self, file, offset, length): + """ + Create file object. + + :param file: Existing file. + :param offset: Start of region, in bytes. + :param length: Size of region, in bytes. + """ + self.fh = file + self.pos = 0 + self.offset = offset + self.length = length + self.fh.seek(offset) + + ## + # Always false. + + def isatty(self): + return False + + def seek(self, offset, mode=io.SEEK_SET): + """ + Move file pointer. + + :param offset: Offset in bytes. + :param mode: Starting position. Use 0 for beginning of region, 1 + for current offset, and 2 for end of region. You cannot move + the pointer outside the defined region. + """ + if mode == 1: + self.pos = self.pos + offset + elif mode == 2: + self.pos = self.length + offset + else: + self.pos = offset + # clamp + self.pos = max(0, min(self.pos, self.length)) + self.fh.seek(self.offset + self.pos) + + def tell(self): + """ + Get current file pointer. + + :returns: Offset from start of region, in bytes. + """ + return self.pos + + def read(self, n=0): + """ + Read data. + + :param n: Number of bytes to read. If omitted or zero, + read until end of region. + :returns: An 8-bit string. + """ + if n: + n = min(n, self.length - self.pos) + else: + n = self.length - self.pos + if not n: # EOF + return b"" if "b" in self.fh.mode else "" + self.pos = self.pos + n + return self.fh.read(n) + + def readline(self): + """ + Read a line of text. + + :returns: An 8-bit string. + """ + s = b"" if "b" in self.fh.mode else "" + newline_character = b"\n" if "b" in self.fh.mode else "\n" + while True: + c = self.read(1) + if not c: + break + s = s + c + if c == newline_character: + break + return s + + def readlines(self): + """ + Read multiple lines of text. + + :returns: A list of 8-bit strings. + """ + lines = [] + while True: + s = self.readline() + if not s: + break + lines.append(s) + return lines diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/CurImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/CurImagePlugin.py new file mode 100644 index 0000000..94efff3 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/CurImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Cursor support for PIL +# +# notes: +# uses BmpImagePlugin.py to read the bitmap data. +# +# history: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +from . import BmpImagePlugin, Image +from ._binary import i16le as i16 +from ._binary import i32le as i32 + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:4] == b"\0\0\2\0" + + +## +# Image plugin for Windows Cursor files. + + +class CurImageFile(BmpImagePlugin.BmpImageFile): + format = "CUR" + format_description = "Windows Cursor" + + def _open(self): + offset = self.fp.tell() + + # check magic + s = self.fp.read(6) + if not _accept(s): + msg = "not a CUR file" + raise SyntaxError(msg) + + # pick the largest cursor in the file + m = b"" + for i in range(i16(s, 4)): + s = self.fp.read(16) + if not m: + m = s + elif s[0] > m[0] and s[1] > m[1]: + m = s + if not m: + msg = "No cursors were found" + raise TypeError(msg) + + # load as bitmap + self._bitmap(i32(m, 12) + offset) + + # patch up the bitmap height + self._size = self.size[0], self.size[1] // 2 + d, e, o, a = self.tile[0] + self.tile[0] = d, (0, 0) + self.size, o, a + + return + + +# +# -------------------------------------------------------------------- + +Image.register_open(CurImageFile.format, CurImageFile, _accept) + +Image.register_extension(CurImageFile.format, ".cur") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py new file mode 100644 index 0000000..cde9d42 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DcxImagePlugin.py @@ -0,0 +1,79 @@ +# +# The Python Imaging Library. +# $Id$ +# +# DCX file handling +# +# DCX is a container file format defined by Intel, commonly used +# for fax applications. Each DCX file consists of a directory +# (a list of file offsets) followed by a set of (usually 1-bit) +# PCX files. +# +# History: +# 1995-09-09 fl Created +# 1996-03-20 fl Properly derived from PcxImageFile. +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2002-07-30 fl Fixed file handling +# +# Copyright (c) 1997-98 by Secret Labs AB. +# Copyright (c) 1995-96 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +from . import Image +from ._binary import i32le as i32 +from .PcxImagePlugin import PcxImageFile + +MAGIC = 0x3ADE68B1 # QUIZ: what's this value, then? + + +def _accept(prefix): + return len(prefix) >= 4 and i32(prefix) == MAGIC + + +## +# Image plugin for the Intel DCX format. + + +class DcxImageFile(PcxImageFile): + format = "DCX" + format_description = "Intel DCX" + _close_exclusive_fp_after_loading = False + + def _open(self): + # Header + s = self.fp.read(4) + if not _accept(s): + msg = "not a DCX file" + raise SyntaxError(msg) + + # Component directory + self._offset = [] + for i in range(1024): + offset = i32(self.fp.read(4)) + if not offset: + break + self._offset.append(offset) + + self._fp = self.fp + self.frame = None + self.n_frames = len(self._offset) + self.is_animated = self.n_frames > 1 + self.seek(0) + + def seek(self, frame): + if not self._seek_check(frame): + return + self.frame = frame + self.fp = self._fp + self.fp.seek(self._offset[frame]) + PcxImageFile._open(self) + + def tell(self): + return self.frame + + +Image.register_open(DcxImageFile.format, DcxImageFile, _accept) + +Image.register_extension(DcxImageFile.format, ".dcx") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py new file mode 100644 index 0000000..a946dae --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/DdsImagePlugin.py @@ -0,0 +1,291 @@ +""" +A Pillow loader for .dds files (S3TC-compressed aka DXTC) +Jerome Leclanche + +Documentation: + https://web.archive.org/web/20170802060935/http://oss.sgi.com/projects/ogl-sample/registry/EXT/texture_compression_s3tc.txt + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ +""" + +import struct +from io import BytesIO + +from . import Image, ImageFile +from ._binary import o32le as o32 + +# Magic ("DDS ") +DDS_MAGIC = 0x20534444 + +# DDS flags +DDSD_CAPS = 0x1 +DDSD_HEIGHT = 0x2 +DDSD_WIDTH = 0x4 +DDSD_PITCH = 0x8 +DDSD_PIXELFORMAT = 0x1000 +DDSD_MIPMAPCOUNT = 0x20000 +DDSD_LINEARSIZE = 0x80000 +DDSD_DEPTH = 0x800000 + +# DDS caps +DDSCAPS_COMPLEX = 0x8 +DDSCAPS_TEXTURE = 0x1000 +DDSCAPS_MIPMAP = 0x400000 + +DDSCAPS2_CUBEMAP = 0x200 +DDSCAPS2_CUBEMAP_POSITIVEX = 0x400 +DDSCAPS2_CUBEMAP_NEGATIVEX = 0x800 +DDSCAPS2_CUBEMAP_POSITIVEY = 0x1000 +DDSCAPS2_CUBEMAP_NEGATIVEY = 0x2000 +DDSCAPS2_CUBEMAP_POSITIVEZ = 0x4000 +DDSCAPS2_CUBEMAP_NEGATIVEZ = 0x8000 +DDSCAPS2_VOLUME = 0x200000 + +# Pixel Format +DDPF_ALPHAPIXELS = 0x1 +DDPF_ALPHA = 0x2 +DDPF_FOURCC = 0x4 +DDPF_PALETTEINDEXED8 = 0x20 +DDPF_RGB = 0x40 +DDPF_LUMINANCE = 0x20000 + + +# dds.h + +DDS_FOURCC = DDPF_FOURCC +DDS_RGB = DDPF_RGB +DDS_RGBA = DDPF_RGB | DDPF_ALPHAPIXELS +DDS_LUMINANCE = DDPF_LUMINANCE +DDS_LUMINANCEA = DDPF_LUMINANCE | DDPF_ALPHAPIXELS +DDS_ALPHA = DDPF_ALPHA +DDS_PAL8 = DDPF_PALETTEINDEXED8 + +DDS_HEADER_FLAGS_TEXTURE = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH | DDSD_PIXELFORMAT +DDS_HEADER_FLAGS_MIPMAP = DDSD_MIPMAPCOUNT +DDS_HEADER_FLAGS_VOLUME = DDSD_DEPTH +DDS_HEADER_FLAGS_PITCH = DDSD_PITCH +DDS_HEADER_FLAGS_LINEARSIZE = DDSD_LINEARSIZE + +DDS_HEIGHT = DDSD_HEIGHT +DDS_WIDTH = DDSD_WIDTH + +DDS_SURFACE_FLAGS_TEXTURE = DDSCAPS_TEXTURE +DDS_SURFACE_FLAGS_MIPMAP = DDSCAPS_COMPLEX | DDSCAPS_MIPMAP +DDS_SURFACE_FLAGS_CUBEMAP = DDSCAPS_COMPLEX + +DDS_CUBEMAP_POSITIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEX +DDS_CUBEMAP_NEGATIVEX = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEX +DDS_CUBEMAP_POSITIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEY +DDS_CUBEMAP_NEGATIVEY = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEY +DDS_CUBEMAP_POSITIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_POSITIVEZ +DDS_CUBEMAP_NEGATIVEZ = DDSCAPS2_CUBEMAP | DDSCAPS2_CUBEMAP_NEGATIVEZ + + +# DXT1 +DXT1_FOURCC = 0x31545844 + +# DXT3 +DXT3_FOURCC = 0x33545844 + +# DXT5 +DXT5_FOURCC = 0x35545844 + + +# dxgiformat.h + +DXGI_FORMAT_R8G8B8A8_TYPELESS = 27 +DXGI_FORMAT_R8G8B8A8_UNORM = 28 +DXGI_FORMAT_R8G8B8A8_UNORM_SRGB = 29 +DXGI_FORMAT_BC5_TYPELESS = 82 +DXGI_FORMAT_BC5_UNORM = 83 +DXGI_FORMAT_BC5_SNORM = 84 +DXGI_FORMAT_BC6H_UF16 = 95 +DXGI_FORMAT_BC6H_SF16 = 96 +DXGI_FORMAT_BC7_TYPELESS = 97 +DXGI_FORMAT_BC7_UNORM = 98 +DXGI_FORMAT_BC7_UNORM_SRGB = 99 + + +class DdsImageFile(ImageFile.ImageFile): + format = "DDS" + format_description = "DirectDraw Surface" + + def _open(self): + if not _accept(self.fp.read(4)): + msg = "not a DDS file" + raise SyntaxError(msg) + (header_size,) = struct.unpack(" 0: + s = fp.read(min(lengthfile, 100 * 1024)) + if not s: + break + lengthfile -= len(s) + f.write(s) + + device = "pngalpha" if transparency else "ppmraw" + + # Build Ghostscript command + command = [ + "gs", + "-q", # quiet mode + "-g%dx%d" % size, # set output geometry (pixels) + "-r%fx%f" % res, # set input DPI (dots per inch) + "-dBATCH", # exit after processing + "-dNOPAUSE", # don't pause between pages + "-dSAFER", # safe mode + f"-sDEVICE={device}", + f"-sOutputFile={outfile}", # output file + # adjust for image origin + "-c", + f"{-bbox[0]} {-bbox[1]} translate", + "-f", + infile, # input file + # showpage (see https://bugs.ghostscript.com/show_bug.cgi?id=698272) + "-c", + "showpage", + ] + + if gs_windows_binary is not None: + if not gs_windows_binary: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + msg = "Unable to locate Ghostscript on paths" + raise OSError(msg) + command[0] = gs_windows_binary + + # push data through Ghostscript + try: + startupinfo = None + if sys.platform.startswith("win"): + startupinfo = subprocess.STARTUPINFO() + startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW + subprocess.check_call(command, startupinfo=startupinfo) + out_im = Image.open(outfile) + out_im.load() + finally: + try: + os.unlink(outfile) + if infile_temp: + os.unlink(infile_temp) + except OSError: + pass + + im = out_im.im.copy() + out_im.close() + return im + + +class PSFile: + """ + Wrapper for bytesio object that treats either CR or LF as end of line. + This class is no longer used internally, but kept for backwards compatibility. + """ + + def __init__(self, fp): + deprecate( + "PSFile", + 11, + action="If you need the functionality of this class " + "you will need to implement it yourself.", + ) + self.fp = fp + self.char = None + + def seek(self, offset, whence=io.SEEK_SET): + self.char = None + self.fp.seek(offset, whence) + + def readline(self): + s = [self.char or b""] + self.char = None + + c = self.fp.read(1) + while (c not in b"\r\n") and len(c): + s.append(c) + c = self.fp.read(1) + + self.char = self.fp.read(1) + # line endings can be 1 or 2 of \r \n, in either order + if self.char in b"\r\n": + self.char = None + + return b"".join(s).decode("latin-1") + + +def _accept(prefix): + return prefix[:4] == b"%!PS" or (len(prefix) >= 4 and i32(prefix) == 0xC6D3D0C5) + + +## +# Image plugin for Encapsulated PostScript. This plugin supports only +# a few variants of this format. + + +class EpsImageFile(ImageFile.ImageFile): + """EPS File Parser for the Python Imaging Library""" + + format = "EPS" + format_description = "Encapsulated Postscript" + + mode_map = {1: "L", 2: "LAB", 3: "RGB", 4: "CMYK"} + + def _open(self): + (length, offset) = self._find_offset(self.fp) + + # go to offset - start of "%!PS" + self.fp.seek(offset) + + self.mode = "RGB" + self._size = None + + byte_arr = bytearray(255) + bytes_mv = memoryview(byte_arr) + bytes_read = 0 + reading_comments = True + + def check_required_header_comments(): + if "PS-Adobe" not in self.info: + msg = 'EPS header missing "%!PS-Adobe" comment' + raise SyntaxError(msg) + if "BoundingBox" not in self.info: + msg = 'EPS header missing "%%BoundingBox" comment' + raise SyntaxError(msg) + + while True: + byte = self.fp.read(1) + if byte == b"": + # if we didn't read a byte we must be at the end of the file + if bytes_read == 0: + break + elif byte in b"\r\n": + # if we read a line ending character, ignore it and parse what + # we have already read. if we haven't read any other characters, + # continue reading + if bytes_read == 0: + continue + else: + # ASCII/hexadecimal lines in an EPS file must not exceed + # 255 characters, not including line ending characters + if bytes_read >= 255: + # only enforce this for lines starting with a "%", + # otherwise assume it's binary data + if byte_arr[0] == ord("%"): + msg = "not an EPS file" + raise SyntaxError(msg) + else: + if reading_comments: + check_required_header_comments() + reading_comments = False + # reset bytes_read so we can keep reading + # data until the end of the line + bytes_read = 0 + byte_arr[bytes_read] = byte[0] + bytes_read += 1 + continue + + if reading_comments: + # Load EPS header + + # if this line doesn't start with a "%", + # or does start with "%%EndComments", + # then we've reached the end of the header/comments + if byte_arr[0] != ord("%") or bytes_mv[:13] == b"%%EndComments": + check_required_header_comments() + reading_comments = False + continue + + s = str(bytes_mv[:bytes_read], "latin-1") + + try: + m = split.match(s) + except re.error as e: + msg = "not an EPS file" + raise SyntaxError(msg) from e + + if m: + k, v = m.group(1, 2) + self.info[k] = v + if k == "BoundingBox": + try: + # Note: The DSC spec says that BoundingBox + # fields should be integers, but some drivers + # put floating point values there anyway. + box = [int(float(i)) for i in v.split()] + self._size = box[2] - box[0], box[3] - box[1] + self.tile = [ + ("eps", (0, 0) + self.size, offset, (length, box)) + ] + except Exception: + pass + else: + m = field.match(s) + if m: + k = m.group(1) + if k[:8] == "PS-Adobe": + self.info["PS-Adobe"] = k[9:] + else: + self.info[k] = "" + elif s[0] == "%": + # handle non-DSC PostScript comments that some + # tools mistakenly put in the Comments section + pass + else: + msg = "bad EPS header" + raise OSError(msg) + elif bytes_mv[:11] == b"%ImageData:": + # Check for an "ImageData" descriptor + # https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577413_pgfId-1035096 + + # Values: + # columns + # rows + # bit depth (1 or 8) + # mode (1: L, 2: LAB, 3: RGB, 4: CMYK) + # number of padding channels + # block size (number of bytes per row per channel) + # binary/ascii (1: binary, 2: ascii) + # data start identifier (the image data follows after a single line + # consisting only of this quoted value) + image_data_values = byte_arr[11:bytes_read].split(None, 7) + columns, rows, bit_depth, mode_id = [ + int(value) for value in image_data_values[:4] + ] + + if bit_depth == 1: + self.mode = "1" + elif bit_depth == 8: + try: + self.mode = self.mode_map[mode_id] + except ValueError: + break + else: + break + + self._size = columns, rows + return + + bytes_read = 0 + + check_required_header_comments() + + if not self._size: + msg = "cannot determine EPS bounding box" + raise OSError(msg) + + def _find_offset(self, fp): + s = fp.read(4) + + if s == b"%!PS": + # for HEAD without binary preview + fp.seek(0, io.SEEK_END) + length = fp.tell() + offset = 0 + elif i32(s) == 0xC6D3D0C5: + # FIX for: Some EPS file not handled correctly / issue #302 + # EPS can contain binary data + # or start directly with latin coding + # more info see: + # https://web.archive.org/web/20160528181353/http://partners.adobe.com/public/developer/en/ps/5002.EPSF_Spec.pdf + s = fp.read(8) + offset = i32(s) + length = i32(s, 4) + else: + msg = "not an EPS file" + raise SyntaxError(msg) + + return length, offset + + def load(self, scale=1, transparency=False): + # Load EPS via Ghostscript + if self.tile: + self.im = Ghostscript(self.tile, self.size, self.fp, scale, transparency) + self.mode = self.im.mode + self._size = self.im.size + self.tile = [] + return Image.Image.load(self) + + def load_seek(self, *args, **kwargs): + # we can't incrementally load, so force ImageFile.parser to + # use our custom load method by defining this method. + pass + + +# -------------------------------------------------------------------- + + +def _save(im, fp, filename, eps=1): + """EPS Writer for the Python Imaging Library.""" + + # make sure image data is available + im.load() + + # determine PostScript image mode + if im.mode == "L": + operator = (8, 1, b"image") + elif im.mode == "RGB": + operator = (8, 3, b"false 3 colorimage") + elif im.mode == "CMYK": + operator = (8, 4, b"false 4 colorimage") + else: + msg = "image mode is not supported" + raise ValueError(msg) + + if eps: + # write EPS header + fp.write(b"%!PS-Adobe-3.0 EPSF-3.0\n") + fp.write(b"%%Creator: PIL 0.1 EpsEncode\n") + # fp.write("%%CreationDate: %s"...) + fp.write(b"%%%%BoundingBox: 0 0 %d %d\n" % im.size) + fp.write(b"%%Pages: 1\n") + fp.write(b"%%EndComments\n") + fp.write(b"%%Page: 1 1\n") + fp.write(b"%%ImageData: %d %d " % im.size) + fp.write(b'%d %d 0 1 1 "%s"\n' % operator) + + # image header + fp.write(b"gsave\n") + fp.write(b"10 dict begin\n") + fp.write(b"/buf %d string def\n" % (im.size[0] * operator[1])) + fp.write(b"%d %d scale\n" % im.size) + fp.write(b"%d %d 8\n" % im.size) # <= bits + fp.write(b"[%d 0 0 -%d 0 %d]\n" % (im.size[0], im.size[1], im.size[1])) + fp.write(b"{ currentfile buf readhexstring pop } bind\n") + fp.write(operator[2] + b"\n") + if hasattr(fp, "flush"): + fp.flush() + + ImageFile._save(im, fp, [("eps", (0, 0) + im.size, 0, None)]) + + fp.write(b"\n%%%%EndBinary\n") + fp.write(b"grestore end\n") + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- + + +Image.register_open(EpsImageFile.format, EpsImageFile, _accept) + +Image.register_save(EpsImageFile.format, _save) + +Image.register_extensions(EpsImageFile.format, [".ps", ".eps"]) + +Image.register_mime(EpsImageFile.format, "application/postscript") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ExifTags.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ExifTags.py new file mode 100644 index 0000000..2347c6d --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ExifTags.py @@ -0,0 +1,380 @@ +# +# The Python Imaging Library. +# $Id$ +# +# EXIF tags +# +# Copyright (c) 2003 by Secret Labs AB +# +# See the README file for information on usage and redistribution. +# + +""" +This module provides constants and clear-text names for various +well-known EXIF tags. +""" + +from enum import IntEnum + + +class Base(IntEnum): + # possibly incomplete + InteropIndex = 0x0001 + ProcessingSoftware = 0x000B + NewSubfileType = 0x00FE + SubfileType = 0x00FF + ImageWidth = 0x0100 + ImageLength = 0x0101 + BitsPerSample = 0x0102 + Compression = 0x0103 + PhotometricInterpretation = 0x0106 + Thresholding = 0x0107 + CellWidth = 0x0108 + CellLength = 0x0109 + FillOrder = 0x010A + DocumentName = 0x010D + ImageDescription = 0x010E + Make = 0x010F + Model = 0x0110 + StripOffsets = 0x0111 + Orientation = 0x0112 + SamplesPerPixel = 0x0115 + RowsPerStrip = 0x0116 + StripByteCounts = 0x0117 + MinSampleValue = 0x0118 + MaxSampleValue = 0x0119 + XResolution = 0x011A + YResolution = 0x011B + PlanarConfiguration = 0x011C + PageName = 0x011D + FreeOffsets = 0x0120 + FreeByteCounts = 0x0121 + GrayResponseUnit = 0x0122 + GrayResponseCurve = 0x0123 + T4Options = 0x0124 + T6Options = 0x0125 + ResolutionUnit = 0x0128 + PageNumber = 0x0129 + TransferFunction = 0x012D + Software = 0x0131 + DateTime = 0x0132 + Artist = 0x013B + HostComputer = 0x013C + Predictor = 0x013D + WhitePoint = 0x013E + PrimaryChromaticities = 0x013F + ColorMap = 0x0140 + HalftoneHints = 0x0141 + TileWidth = 0x0142 + TileLength = 0x0143 + TileOffsets = 0x0144 + TileByteCounts = 0x0145 + SubIFDs = 0x014A + InkSet = 0x014C + InkNames = 0x014D + NumberOfInks = 0x014E + DotRange = 0x0150 + TargetPrinter = 0x0151 + ExtraSamples = 0x0152 + SampleFormat = 0x0153 + SMinSampleValue = 0x0154 + SMaxSampleValue = 0x0155 + TransferRange = 0x0156 + ClipPath = 0x0157 + XClipPathUnits = 0x0158 + YClipPathUnits = 0x0159 + Indexed = 0x015A + JPEGTables = 0x015B + OPIProxy = 0x015F + JPEGProc = 0x0200 + JpegIFOffset = 0x0201 + JpegIFByteCount = 0x0202 + JpegRestartInterval = 0x0203 + JpegLosslessPredictors = 0x0205 + JpegPointTransforms = 0x0206 + JpegQTables = 0x0207 + JpegDCTables = 0x0208 + JpegACTables = 0x0209 + YCbCrCoefficients = 0x0211 + YCbCrSubSampling = 0x0212 + YCbCrPositioning = 0x0213 + ReferenceBlackWhite = 0x0214 + XMLPacket = 0x02BC + RelatedImageFileFormat = 0x1000 + RelatedImageWidth = 0x1001 + RelatedImageLength = 0x1002 + Rating = 0x4746 + RatingPercent = 0x4749 + ImageID = 0x800D + CFARepeatPatternDim = 0x828D + BatteryLevel = 0x828F + Copyright = 0x8298 + ExposureTime = 0x829A + FNumber = 0x829D + IPTCNAA = 0x83BB + ImageResources = 0x8649 + ExifOffset = 0x8769 + InterColorProfile = 0x8773 + ExposureProgram = 0x8822 + SpectralSensitivity = 0x8824 + GPSInfo = 0x8825 + ISOSpeedRatings = 0x8827 + OECF = 0x8828 + Interlace = 0x8829 + TimeZoneOffset = 0x882A + SelfTimerMode = 0x882B + SensitivityType = 0x8830 + StandardOutputSensitivity = 0x8831 + RecommendedExposureIndex = 0x8832 + ISOSpeed = 0x8833 + ISOSpeedLatitudeyyy = 0x8834 + ISOSpeedLatitudezzz = 0x8835 + ExifVersion = 0x9000 + DateTimeOriginal = 0x9003 + DateTimeDigitized = 0x9004 + OffsetTime = 0x9010 + OffsetTimeOriginal = 0x9011 + OffsetTimeDigitized = 0x9012 + ComponentsConfiguration = 0x9101 + CompressedBitsPerPixel = 0x9102 + ShutterSpeedValue = 0x9201 + ApertureValue = 0x9202 + BrightnessValue = 0x9203 + ExposureBiasValue = 0x9204 + MaxApertureValue = 0x9205 + SubjectDistance = 0x9206 + MeteringMode = 0x9207 + LightSource = 0x9208 + Flash = 0x9209 + FocalLength = 0x920A + Noise = 0x920D + ImageNumber = 0x9211 + SecurityClassification = 0x9212 + ImageHistory = 0x9213 + TIFFEPStandardID = 0x9216 + MakerNote = 0x927C + UserComment = 0x9286 + SubsecTime = 0x9290 + SubsecTimeOriginal = 0x9291 + SubsecTimeDigitized = 0x9292 + AmbientTemperature = 0x9400 + Humidity = 0x9401 + Pressure = 0x9402 + WaterDepth = 0x9403 + Acceleration = 0x9404 + CameraElevationAngle = 0x9405 + XPTitle = 0x9C9B + XPComment = 0x9C9C + XPAuthor = 0x9C9D + XPKeywords = 0x9C9E + XPSubject = 0x9C9F + FlashPixVersion = 0xA000 + ColorSpace = 0xA001 + ExifImageWidth = 0xA002 + ExifImageHeight = 0xA003 + RelatedSoundFile = 0xA004 + ExifInteroperabilityOffset = 0xA005 + FlashEnergy = 0xA20B + SpatialFrequencyResponse = 0xA20C + FocalPlaneXResolution = 0xA20E + FocalPlaneYResolution = 0xA20F + FocalPlaneResolutionUnit = 0xA210 + SubjectLocation = 0xA214 + ExposureIndex = 0xA215 + SensingMethod = 0xA217 + FileSource = 0xA300 + SceneType = 0xA301 + CFAPattern = 0xA302 + CustomRendered = 0xA401 + ExposureMode = 0xA402 + WhiteBalance = 0xA403 + DigitalZoomRatio = 0xA404 + FocalLengthIn35mmFilm = 0xA405 + SceneCaptureType = 0xA406 + GainControl = 0xA407 + Contrast = 0xA408 + Saturation = 0xA409 + Sharpness = 0xA40A + DeviceSettingDescription = 0xA40B + SubjectDistanceRange = 0xA40C + ImageUniqueID = 0xA420 + CameraOwnerName = 0xA430 + BodySerialNumber = 0xA431 + LensSpecification = 0xA432 + LensMake = 0xA433 + LensModel = 0xA434 + LensSerialNumber = 0xA435 + CompositeImage = 0xA460 + CompositeImageCount = 0xA461 + CompositeImageExposureTimes = 0xA462 + Gamma = 0xA500 + PrintImageMatching = 0xC4A5 + DNGVersion = 0xC612 + DNGBackwardVersion = 0xC613 + UniqueCameraModel = 0xC614 + LocalizedCameraModel = 0xC615 + CFAPlaneColor = 0xC616 + CFALayout = 0xC617 + LinearizationTable = 0xC618 + BlackLevelRepeatDim = 0xC619 + BlackLevel = 0xC61A + BlackLevelDeltaH = 0xC61B + BlackLevelDeltaV = 0xC61C + WhiteLevel = 0xC61D + DefaultScale = 0xC61E + DefaultCropOrigin = 0xC61F + DefaultCropSize = 0xC620 + ColorMatrix1 = 0xC621 + ColorMatrix2 = 0xC622 + CameraCalibration1 = 0xC623 + CameraCalibration2 = 0xC624 + ReductionMatrix1 = 0xC625 + ReductionMatrix2 = 0xC626 + AnalogBalance = 0xC627 + AsShotNeutral = 0xC628 + AsShotWhiteXY = 0xC629 + BaselineExposure = 0xC62A + BaselineNoise = 0xC62B + BaselineSharpness = 0xC62C + BayerGreenSplit = 0xC62D + LinearResponseLimit = 0xC62E + CameraSerialNumber = 0xC62F + LensInfo = 0xC630 + ChromaBlurRadius = 0xC631 + AntiAliasStrength = 0xC632 + ShadowScale = 0xC633 + DNGPrivateData = 0xC634 + MakerNoteSafety = 0xC635 + CalibrationIlluminant1 = 0xC65A + CalibrationIlluminant2 = 0xC65B + BestQualityScale = 0xC65C + RawDataUniqueID = 0xC65D + OriginalRawFileName = 0xC68B + OriginalRawFileData = 0xC68C + ActiveArea = 0xC68D + MaskedAreas = 0xC68E + AsShotICCProfile = 0xC68F + AsShotPreProfileMatrix = 0xC690 + CurrentICCProfile = 0xC691 + CurrentPreProfileMatrix = 0xC692 + ColorimetricReference = 0xC6BF + CameraCalibrationSignature = 0xC6F3 + ProfileCalibrationSignature = 0xC6F4 + AsShotProfileName = 0xC6F6 + NoiseReductionApplied = 0xC6F7 + ProfileName = 0xC6F8 + ProfileHueSatMapDims = 0xC6F9 + ProfileHueSatMapData1 = 0xC6FA + ProfileHueSatMapData2 = 0xC6FB + ProfileToneCurve = 0xC6FC + ProfileEmbedPolicy = 0xC6FD + ProfileCopyright = 0xC6FE + ForwardMatrix1 = 0xC714 + ForwardMatrix2 = 0xC715 + PreviewApplicationName = 0xC716 + PreviewApplicationVersion = 0xC717 + PreviewSettingsName = 0xC718 + PreviewSettingsDigest = 0xC719 + PreviewColorSpace = 0xC71A + PreviewDateTime = 0xC71B + RawImageDigest = 0xC71C + OriginalRawFileDigest = 0xC71D + SubTileBlockSize = 0xC71E + RowInterleaveFactor = 0xC71F + ProfileLookTableDims = 0xC725 + ProfileLookTableData = 0xC726 + OpcodeList1 = 0xC740 + OpcodeList2 = 0xC741 + OpcodeList3 = 0xC74E + NoiseProfile = 0xC761 + + +"""Maps EXIF tags to tag names.""" +TAGS = { + **{i.value: i.name for i in Base}, + 0x920C: "SpatialFrequencyResponse", + 0x9214: "SubjectLocation", + 0x9215: "ExposureIndex", + 0x828E: "CFAPattern", + 0x920B: "FlashEnergy", + 0x9216: "TIFF/EPStandardID", +} + + +class GPS(IntEnum): + GPSVersionID = 0 + GPSLatitudeRef = 1 + GPSLatitude = 2 + GPSLongitudeRef = 3 + GPSLongitude = 4 + GPSAltitudeRef = 5 + GPSAltitude = 6 + GPSTimeStamp = 7 + GPSSatellites = 8 + GPSStatus = 9 + GPSMeasureMode = 10 + GPSDOP = 11 + GPSSpeedRef = 12 + GPSSpeed = 13 + GPSTrackRef = 14 + GPSTrack = 15 + GPSImgDirectionRef = 16 + GPSImgDirection = 17 + GPSMapDatum = 18 + GPSDestLatitudeRef = 19 + GPSDestLatitude = 20 + GPSDestLongitudeRef = 21 + GPSDestLongitude = 22 + GPSDestBearingRef = 23 + GPSDestBearing = 24 + GPSDestDistanceRef = 25 + GPSDestDistance = 26 + GPSProcessingMethod = 27 + GPSAreaInformation = 28 + GPSDateStamp = 29 + GPSDifferential = 30 + GPSHPositioningError = 31 + + +"""Maps EXIF GPS tags to tag names.""" +GPSTAGS = {i.value: i.name for i in GPS} + + +class Interop(IntEnum): + InteropIndex = 1 + InteropVersion = 2 + RelatedImageFileFormat = 4096 + RelatedImageWidth = 4097 + RleatedImageHeight = 4098 + + +class IFD(IntEnum): + Exif = 34665 + GPSInfo = 34853 + Makernote = 37500 + Interop = 40965 + IFD1 = -1 + + +class LightSource(IntEnum): + Unknown = 0 + Daylight = 1 + Fluorescent = 2 + Tungsten = 3 + Flash = 4 + Fine = 9 + Cloudy = 10 + Shade = 11 + DaylightFluorescent = 12 + DayWhiteFluorescent = 13 + CoolWhiteFluorescent = 14 + WhiteFluorescent = 15 + StandardLightA = 17 + StandardLightB = 18 + StandardLightC = 19 + D55 = 20 + D65 = 21 + D75 = 22 + D50 = 23 + ISO = 24 + Other = 255 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py new file mode 100644 index 0000000..1359aeb --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FitsImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# FITS file handling +# +# Copyright (c) 1998-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import math + +from . import Image, ImageFile + + +def _accept(prefix): + return prefix[:6] == b"SIMPLE" + + +class FitsImageFile(ImageFile.ImageFile): + format = "FITS" + format_description = "FITS" + + def _open(self): + headers = {} + while True: + header = self.fp.read(80) + if not header: + msg = "Truncated FITS file" + raise OSError(msg) + keyword = header[:8].strip() + if keyword == b"END": + break + value = header[8:].split(b"/")[0].strip() + if value.startswith(b"="): + value = value[1:].strip() + if not headers and (not _accept(keyword) or value != b"T"): + msg = "Not a FITS file" + raise SyntaxError(msg) + headers[keyword] = value + + naxis = int(headers[b"NAXIS"]) + if naxis == 0: + msg = "No image data" + raise ValueError(msg) + elif naxis == 1: + self._size = 1, int(headers[b"NAXIS1"]) + else: + self._size = int(headers[b"NAXIS1"]), int(headers[b"NAXIS2"]) + + number_of_bits = int(headers[b"BITPIX"]) + if number_of_bits == 8: + self.mode = "L" + elif number_of_bits == 16: + self.mode = "I" + # rawmode = "I;16S" + elif number_of_bits == 32: + self.mode = "I" + elif number_of_bits in (-32, -64): + self.mode = "F" + # rawmode = "F" if number_of_bits == -32 else "F;64F" + + offset = math.ceil(self.fp.tell() / 2880) * 2880 + self.tile = [("raw", (0, 0) + self.size, offset, (self.mode, 0, -1))] + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(FitsImageFile.format, FitsImageFile, _accept) + +Image.register_extensions(FitsImageFile.format, [".fit", ".fits"]) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FliImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FliImagePlugin.py new file mode 100644 index 0000000..f4e89a0 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FliImagePlugin.py @@ -0,0 +1,171 @@ +# +# The Python Imaging Library. +# $Id$ +# +# FLI/FLC file handling. +# +# History: +# 95-09-01 fl Created +# 97-01-03 fl Fixed parser, setup decoder tile +# 98-07-15 fl Renamed offset attribute to avoid name clash +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + +import os + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 + +# +# decoder + + +def _accept(prefix): + return ( + len(prefix) >= 6 + and i16(prefix, 4) in [0xAF11, 0xAF12] + and i16(prefix, 14) in [0, 3] # flags + ) + + +## +# Image plugin for the FLI/FLC animation format. Use the seek +# method to load individual frames. + + +class FliImageFile(ImageFile.ImageFile): + format = "FLI" + format_description = "Autodesk FLI/FLC Animation" + _close_exclusive_fp_after_loading = False + + def _open(self): + # HEAD + s = self.fp.read(128) + if not (_accept(s) and s[20:22] == b"\x00\x00"): + msg = "not an FLI/FLC file" + raise SyntaxError(msg) + + # frames + self.n_frames = i16(s, 6) + self.is_animated = self.n_frames > 1 + + # image characteristics + self.mode = "P" + self._size = i16(s, 8), i16(s, 10) + + # animation speed + duration = i32(s, 16) + magic = i16(s, 4) + if magic == 0xAF11: + duration = (duration * 1000) // 70 + self.info["duration"] = duration + + # look for palette + palette = [(a, a, a) for a in range(256)] + + s = self.fp.read(16) + + self.__offset = 128 + + if i16(s, 4) == 0xF100: + # prefix chunk; ignore it + self.__offset = self.__offset + i32(s) + s = self.fp.read(16) + + if i16(s, 4) == 0xF1FA: + # look for palette chunk + number_of_subchunks = i16(s, 6) + chunk_size = None + for _ in range(number_of_subchunks): + if chunk_size is not None: + self.fp.seek(chunk_size - 6, os.SEEK_CUR) + s = self.fp.read(6) + chunk_type = i16(s, 4) + if chunk_type in (4, 11): + self._palette(palette, 2 if chunk_type == 11 else 0) + break + chunk_size = i32(s) + if not chunk_size: + break + + palette = [o8(r) + o8(g) + o8(b) for (r, g, b) in palette] + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + # set things up to decode first frame + self.__frame = -1 + self._fp = self.fp + self.__rewind = self.fp.tell() + self.seek(0) + + def _palette(self, palette, shift): + # load palette + + i = 0 + for e in range(i16(self.fp.read(2))): + s = self.fp.read(2) + i = i + s[0] + n = s[1] + if n == 0: + n = 256 + s = self.fp.read(n * 3) + for n in range(0, len(s), 3): + r = s[n] << shift + g = s[n + 1] << shift + b = s[n + 2] << shift + palette[i] = (r, g, b) + i += 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0) + + for f in range(self.__frame + 1, frame + 1): + self._seek(f) + + def _seek(self, frame): + if frame == 0: + self.__frame = -1 + self._fp.seek(self.__rewind) + self.__offset = 128 + else: + # ensure that the previous frame was loaded + self.load() + + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + self.__frame = frame + + # move to next frame + self.fp = self._fp + self.fp.seek(self.__offset) + + s = self.fp.read(4) + if not s: + raise EOFError + + framesize = i32(s) + + self.decodermaxblock = framesize + self.tile = [("fli", (0, 0) + self.size, self.__offset, None)] + + self.__offset += framesize + + def tell(self): + return self.__frame + + +# +# registry + +Image.register_open(FliImageFile.format, FliImageFile, _accept) + +Image.register_extensions(FliImageFile.format, [".fli", ".flc"]) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FontFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FontFile.py new file mode 100644 index 0000000..5ec0a66 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FontFile.py @@ -0,0 +1,110 @@ +# +# The Python Imaging Library +# $Id$ +# +# base class for raster font file parsers +# +# history: +# 1997-06-05 fl created +# 1997-08-19 fl restrict image width +# +# Copyright (c) 1997-1998 by Secret Labs AB +# Copyright (c) 1997-1998 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +import os + +from . import Image, _binary + +WIDTH = 800 + + +def puti16(fp, values): + """Write network order (big-endian) 16-bit sequence""" + for v in values: + if v < 0: + v += 65536 + fp.write(_binary.o16be(v)) + + +class FontFile: + """Base class for raster font file handlers.""" + + bitmap = None + + def __init__(self): + self.info = {} + self.glyph = [None] * 256 + + def __getitem__(self, ix): + return self.glyph[ix] + + def compile(self): + """Create metrics and bitmap""" + + if self.bitmap: + return + + # create bitmap large enough to hold all data + h = w = maxwidth = 0 + lines = 1 + for glyph in self: + if glyph: + d, dst, src, im = glyph + h = max(h, src[3] - src[1]) + w = w + (src[2] - src[0]) + if w > WIDTH: + lines += 1 + w = src[2] - src[0] + maxwidth = max(maxwidth, w) + + xsize = maxwidth + ysize = lines * h + + if xsize == 0 and ysize == 0: + return "" + + self.ysize = h + + # paste glyphs into bitmap + self.bitmap = Image.new("1", (xsize, ysize)) + self.metrics = [None] * 256 + x = y = 0 + for i in range(256): + glyph = self[i] + if glyph: + d, dst, src, im = glyph + xx = src[2] - src[0] + # yy = src[3] - src[1] + x0, y0 = x, y + x = x + xx + if x > WIDTH: + x, y = 0, y + h + x0, y0 = x, y + x = xx + s = src[0] + x0, src[1] + y0, src[2] + x0, src[3] + y0 + self.bitmap.paste(im.crop(src), s) + self.metrics[i] = d, dst, s + + def save(self, filename): + """Save font""" + + self.compile() + + # font data + self.bitmap.save(os.path.splitext(filename)[0] + ".pbm", "PNG") + + # font metrics + with open(os.path.splitext(filename)[0] + ".pil", "wb") as fp: + fp.write(b"PILfont\n") + fp.write(f";;;;;;{self.ysize};\n".encode("ascii")) # HACK!!! + fp.write(b"DATA\n") + for id in range(256): + m = self.metrics[id] + if not m: + puti16(fp, [0] * 10) + else: + puti16(fp, m[0] + m[1] + m[2]) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py new file mode 100644 index 0000000..2450c67 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FpxImagePlugin.py @@ -0,0 +1,253 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library. +# $Id$ +# +# FlashPix support for PIL +# +# History: +# 97-01-25 fl Created (reads uncompressed RGB images only) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# +import olefile + +from . import Image, ImageFile +from ._binary import i32le as i32 + +# we map from colour field tuples to (mode, rawmode) descriptors +MODES = { + # opacity + (0x00007FFE,): ("A", "L"), + # monochrome + (0x00010000,): ("L", "L"), + (0x00018000, 0x00017FFE): ("RGBA", "LA"), + # photo YCC + (0x00020000, 0x00020001, 0x00020002): ("RGB", "YCC;P"), + (0x00028000, 0x00028001, 0x00028002, 0x00027FFE): ("RGBA", "YCCA;P"), + # standard RGB (NIFRGB) + (0x00030000, 0x00030001, 0x00030002): ("RGB", "RGB"), + (0x00038000, 0x00038001, 0x00038002, 0x00037FFE): ("RGBA", "RGBA"), +} + + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for the FlashPix images. + + +class FpxImageFile(ImageFile.ImageFile): + format = "FPX" + format_description = "FlashPix" + + def _open(self): + # + # read the OLE directory and see if this is a likely + # to be a FlashPix file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + msg = "not an FPX file; invalid OLE file" + raise SyntaxError(msg) from e + + if self.ole.root.clsid != "56616700-C154-11CE-8553-00AA00A1F95B": + msg = "not an FPX file; bad root CLSID" + raise SyntaxError(msg) + + self._open_index(1) + + def _open_index(self, index=1): + # + # get the Image Contents Property Set + + prop = self.ole.getproperties( + [f"Data Object Store {index:06d}", "\005Image Contents"] + ) + + # size (highest resolution) + + self._size = prop[0x1000002], prop[0x1000003] + + size = max(self.size) + i = 1 + while size > 64: + size = size / 2 + i += 1 + self.maxid = i - 1 + + # mode. instead of using a single field for this, flashpix + # requires you to specify the mode for each channel in each + # resolution subimage, and leaves it to the decoder to make + # sure that they all match. for now, we'll cheat and assume + # that this is always the case. + + id = self.maxid << 16 + + s = prop[0x2000002 | id] + + colors = [] + bands = i32(s, 4) + if bands > 4: + msg = "Invalid number of bands" + raise OSError(msg) + for i in range(bands): + # note: for now, we ignore the "uncalibrated" flag + colors.append(i32(s, 8 + i * 4) & 0x7FFFFFFF) + + self.mode, self.rawmode = MODES[tuple(colors)] + + # load JPEG tables, if any + self.jpeg = {} + for i in range(256): + id = 0x3000001 | (i << 16) + if id in prop: + self.jpeg[i] = prop[id] + + self._open_subimage(1, self.maxid) + + def _open_subimage(self, index=1, subimage=0): + # + # setup tile descriptors for a given subimage + + stream = [ + f"Data Object Store {index:06d}", + f"Resolution {subimage:04d}", + "Subimage 0000 Header", + ] + + fp = self.ole.openstream(stream) + + # skip prefix + fp.read(28) + + # header stream + s = fp.read(36) + + size = i32(s, 4), i32(s, 8) + # tilecount = i32(s, 12) + tilesize = i32(s, 16), i32(s, 20) + # channels = i32(s, 24) + offset = i32(s, 28) + length = i32(s, 32) + + if size != self.size: + msg = "subimage mismatch" + raise OSError(msg) + + # get tile descriptors + fp.seek(28 + offset) + s = fp.read(i32(s, 12) * length) + + x = y = 0 + xsize, ysize = size + xtile, ytile = tilesize + self.tile = [] + + for i in range(0, len(s), length): + x1 = min(xsize, x + xtile) + y1 = min(ysize, y + ytile) + + compression = i32(s, i + 8) + + if compression == 0: + self.tile.append( + ( + "raw", + (x, y, x1, y1), + i32(s, i) + 28, + (self.rawmode,), + ) + ) + + elif compression == 1: + # FIXME: the fill decoder is not implemented + self.tile.append( + ( + "fill", + (x, y, x1, y1), + i32(s, i) + 28, + (self.rawmode, s[12:16]), + ) + ) + + elif compression == 2: + internal_color_conversion = s[14] + jpeg_tables = s[15] + rawmode = self.rawmode + + if internal_color_conversion: + # The image is stored as usual (usually YCbCr). + if rawmode == "RGBA": + # For "RGBA", data is stored as YCbCrA based on + # negative RGB. The following trick works around + # this problem : + jpegmode, rawmode = "YCbCrK", "CMYK" + else: + jpegmode = None # let the decoder decide + + else: + # The image is stored as defined by rawmode + jpegmode = rawmode + + self.tile.append( + ( + "jpeg", + (x, y, x1, y1), + i32(s, i) + 28, + (rawmode, jpegmode), + ) + ) + + # FIXME: jpeg tables are tile dependent; the prefix + # data must be placed in the tile descriptor itself! + + if jpeg_tables: + self.tile_prefix = self.jpeg[jpeg_tables] + + else: + msg = "unknown/invalid compression" + raise OSError(msg) + + x = x + xtile + if x >= xsize: + x, y = 0, y + ytile + if y >= ysize: + break # isn't really required + + self.stream = stream + self.fp = None + + def load(self): + if not self.fp: + self.fp = self.ole.openstream(self.stream[:2] + ["Subimage 0000 Data"]) + + return ImageFile.ImageFile.load(self) + + def close(self): + self.ole.close() + super().close() + + def __exit__(self, *args): + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + + +Image.register_open(FpxImageFile.format, FpxImageFile, _accept) + +Image.register_extension(FpxImageFile.format, ".fpx") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py new file mode 100644 index 0000000..c46b2f2 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/FtexImagePlugin.py @@ -0,0 +1,113 @@ +""" +A Pillow loader for .ftc and .ftu files (FTEX) +Jerome Leclanche + +The contents of this file are hereby released in the public domain (CC0) +Full text of the CC0 license: + https://creativecommons.org/publicdomain/zero/1.0/ + +Independence War 2: Edge Of Chaos - Texture File Format - 16 October 2001 + +The textures used for 3D objects in Independence War 2: Edge Of Chaos are in a +packed custom format called FTEX. This file format uses file extensions FTC +and FTU. +* FTC files are compressed textures (using standard texture compression). +* FTU files are not compressed. +Texture File Format +The FTC and FTU texture files both use the same format. This +has the following structure: +{header} +{format_directory} +{data} +Where: +{header} = { + u32:magic, + u32:version, + u32:width, + u32:height, + u32:mipmap_count, + u32:format_count +} + +* The "magic" number is "FTEX". +* "width" and "height" are the dimensions of the texture. +* "mipmap_count" is the number of mipmaps in the texture. +* "format_count" is the number of texture formats (different versions of the +same texture) in this file. + +{format_directory} = format_count * { u32:format, u32:where } + +The format value is 0 for DXT1 compressed textures and 1 for 24-bit RGB +uncompressed textures. +The texture data for a format starts at the position "where" in the file. + +Each set of texture data in the file has the following structure: +{data} = format_count * { u32:mipmap_size, mipmap_size * { u8 } } +* "mipmap_size" is the number of bytes in that mip level. For compressed +textures this is the size of the texture data compressed with DXT1. For 24 bit +uncompressed textures, this is 3 * width * height. Following this are the image +bytes for that mipmap level. + +Note: All data is stored in little-Endian (Intel) byte order. +""" + +import struct +from enum import IntEnum +from io import BytesIO + +from . import Image, ImageFile + +MAGIC = b"FTEX" + + +class Format(IntEnum): + DXT1 = 0 + UNCOMPRESSED = 1 + + +class FtexImageFile(ImageFile.ImageFile): + format = "FTEX" + format_description = "Texture File Format (IW2:EOC)" + + def _open(self): + if not _accept(self.fp.read(4)): + msg = "not an FTEX file" + raise SyntaxError(msg) + struct.unpack("= 8 and i32(prefix, 0) >= 20 and i32(prefix, 4) in (1, 2) + + +## +# Image plugin for the GIMP brush format. + + +class GbrImageFile(ImageFile.ImageFile): + format = "GBR" + format_description = "GIMP brush file" + + def _open(self): + header_size = i32(self.fp.read(4)) + if header_size < 20: + msg = "not a GIMP brush" + raise SyntaxError(msg) + version = i32(self.fp.read(4)) + if version not in (1, 2): + msg = f"Unsupported GIMP brush version: {version}" + raise SyntaxError(msg) + + width = i32(self.fp.read(4)) + height = i32(self.fp.read(4)) + color_depth = i32(self.fp.read(4)) + if width <= 0 or height <= 0: + msg = "not a GIMP brush" + raise SyntaxError(msg) + if color_depth not in (1, 4): + msg = f"Unsupported GIMP brush color depth: {color_depth}" + raise SyntaxError(msg) + + if version == 1: + comment_length = header_size - 20 + else: + comment_length = header_size - 28 + magic_number = self.fp.read(4) + if magic_number != b"GIMP": + msg = "not a GIMP brush, bad magic number" + raise SyntaxError(msg) + self.info["spacing"] = i32(self.fp.read(4)) + + comment = self.fp.read(comment_length)[:-1] + + if color_depth == 1: + self.mode = "L" + else: + self.mode = "RGBA" + + self._size = width, height + + self.info["comment"] = comment + + # Image might not be small + Image._decompression_bomb_check(self.size) + + # Data is an uncompressed block of w * h * bytes/pixel + self._data_size = width * height * color_depth + + def load(self): + if not self.im: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self._data_size)) + return Image.Image.load(self) + + +# +# registry + + +Image.register_open(GbrImageFile.format, GbrImageFile, _accept) +Image.register_extension(GbrImageFile.format, ".gbr") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GdImageFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GdImageFile.py new file mode 100644 index 0000000..bafc43a --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GdImageFile.py @@ -0,0 +1,97 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GD file handling +# +# History: +# 1996-04-12 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +""" +.. note:: + This format cannot be automatically recognized, so the + class is not registered for use with :py:func:`PIL.Image.open()`. To open a + gd file, use the :py:func:`PIL.GdImageFile.open()` function instead. + +.. warning:: + THE GD FORMAT IS NOT DESIGNED FOR DATA INTERCHANGE. This + implementation is provided for convenience and demonstrational + purposes only. +""" + + +from . import ImageFile, ImagePalette, UnidentifiedImageError +from ._binary import i16be as i16 +from ._binary import i32be as i32 + + +class GdImageFile(ImageFile.ImageFile): + """ + Image plugin for the GD uncompressed format. Note that this format + is not supported by the standard :py:func:`PIL.Image.open()` function. To use + this plugin, you have to import the :py:mod:`PIL.GdImageFile` module and + use the :py:func:`PIL.GdImageFile.open()` function. + """ + + format = "GD" + format_description = "GD uncompressed images" + + def _open(self): + # Header + s = self.fp.read(1037) + + if i16(s) not in [65534, 65535]: + msg = "Not a valid GD 2.x .gd file" + raise SyntaxError(msg) + + self.mode = "L" # FIXME: "P" + self._size = i16(s, 2), i16(s, 4) + + true_color = s[6] + true_color_offset = 2 if true_color else 0 + + # transparency index + tindex = i32(s, 7 + true_color_offset) + if tindex < 256: + self.info["transparency"] = tindex + + self.palette = ImagePalette.raw( + "XBGR", s[7 + true_color_offset + 4 : 7 + true_color_offset + 4 + 256 * 4] + ) + + self.tile = [ + ( + "raw", + (0, 0) + self.size, + 7 + true_color_offset + 4 + 256 * 4, + ("L", 0, 1), + ) + ] + + +def open(fp, mode="r"): + """ + Load texture from a GD image file. + + :param fp: GD file name, or an opened file handle. + :param mode: Optional mode. In this version, if the mode argument + is given, it must be "r". + :returns: An image instance. + :raises OSError: If the image could not be read. + """ + if mode != "r": + msg = "bad mode" + raise ValueError(msg) + + try: + return GdImageFile(fp) + except SyntaxError as e: + msg = "cannot identify this image file" + raise UnidentifiedImageError(msg) from e diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GifImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GifImagePlugin.py new file mode 100644 index 0000000..cf2993e --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GifImagePlugin.py @@ -0,0 +1,1064 @@ +# +# The Python Imaging Library. +# $Id$ +# +# GIF file handling +# +# History: +# 1995-09-01 fl Created +# 1996-12-14 fl Added interlace support +# 1996-12-30 fl Added animation support +# 1997-01-05 fl Added write support, fixed local colour map bug +# 1997-02-23 fl Make sure to load raster data in getdata() +# 1997-07-05 fl Support external decoder (0.4) +# 1998-07-09 fl Handle all modes when saving (0.5) +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 2001-04-16 fl Added rewind support (seek to frame 0) (0.6) +# 2001-04-17 fl Added palette optimization (0.7) +# 2002-06-06 fl Added transparency support for save (0.8) +# 2004-02-24 fl Disable interlacing for small images +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import itertools +import math +import os +import subprocess +from enum import IntEnum + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + + +class LoadingStrategy(IntEnum): + """.. versionadded:: 9.1.0""" + + RGB_AFTER_FIRST = 0 + RGB_AFTER_DIFFERENT_PALETTE_ONLY = 1 + RGB_ALWAYS = 2 + + +#: .. versionadded:: 9.1.0 +LOADING_STRATEGY = LoadingStrategy.RGB_AFTER_FIRST + +# -------------------------------------------------------------------- +# Identify/read GIF files + + +def _accept(prefix): + return prefix[:6] in [b"GIF87a", b"GIF89a"] + + +## +# Image plugin for GIF images. This plugin supports both GIF87 and +# GIF89 images. + + +class GifImageFile(ImageFile.ImageFile): + format = "GIF" + format_description = "Compuserve GIF" + _close_exclusive_fp_after_loading = False + + global_palette = None + + def data(self): + s = self.fp.read(1) + if s and s[0]: + return self.fp.read(s[0]) + return None + + def _is_palette_needed(self, p): + for i in range(0, len(p), 3): + if not (i // 3 == p[i] == p[i + 1] == p[i + 2]): + return True + return False + + def _open(self): + # Screen + s = self.fp.read(13) + if not _accept(s): + msg = "not a GIF file" + raise SyntaxError(msg) + + self.info["version"] = s[:6] + self._size = i16(s, 6), i16(s, 8) + self.tile = [] + flags = s[10] + bits = (flags & 7) + 1 + + if flags & 128: + # get global palette + self.info["background"] = s[11] + # check if palette contains colour indices + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + p = ImagePalette.raw("RGB", p) + self.global_palette = self.palette = p + + self._fp = self.fp # FIXME: hack + self.__rewind = self.fp.tell() + self._n_frames = None + self._is_animated = None + self._seek(0) # get ready to read first frame + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + try: + while True: + self._seek(self.tell() + 1, False) + except EOFError: + self._n_frames = self.tell() + 1 + self.seek(current) + return self._n_frames + + @property + def is_animated(self): + if self._is_animated is None: + if self._n_frames is not None: + self._is_animated = self._n_frames != 1 + else: + current = self.tell() + if current: + self._is_animated = True + else: + try: + self._seek(1, False) + self._is_animated = True + except EOFError: + self._is_animated = False + + self.seek(current) + return self._is_animated + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self.im = None + self._seek(0) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + msg = "no more images in GIF file" + raise EOFError(msg) from e + + def _seek(self, frame, update_image=True): + if frame == 0: + # rewind + self.__offset = 0 + self.dispose = None + self.__frame = -1 + self._fp.seek(self.__rewind) + self.disposal_method = 0 + if "comment" in self.info: + del self.info["comment"] + else: + # ensure that the previous frame was loaded + if self.tile and update_image: + self.load() + + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + self.fp = self._fp + if self.__offset: + # backup to last frame + self.fp.seek(self.__offset) + while self.data(): + pass + self.__offset = 0 + + s = self.fp.read(1) + if not s or s == b";": + raise EOFError + + palette = None + + info = {} + frame_transparency = None + interlace = None + frame_dispose_extent = None + while True: + if not s: + s = self.fp.read(1) + if not s or s == b";": + break + + elif s == b"!": + # + # extensions + # + s = self.fp.read(1) + block = self.data() + if s[0] == 249: + # + # graphic control extension + # + flags = block[0] + if flags & 1: + frame_transparency = block[3] + info["duration"] = i16(block, 1) * 10 + + # disposal method - find the value of bits 4 - 6 + dispose_bits = 0b00011100 & flags + dispose_bits = dispose_bits >> 2 + if dispose_bits: + # only set the dispose if it is not + # unspecified. I'm not sure if this is + # correct, but it seems to prevent the last + # frame from looking odd for some animations + self.disposal_method = dispose_bits + elif s[0] == 254: + # + # comment extension + # + comment = b"" + + # Read this comment block + while block: + comment += block + block = self.data() + + if "comment" in info: + # If multiple comment blocks in frame, separate with \n + info["comment"] += b"\n" + comment + else: + info["comment"] = comment + s = None + continue + elif s[0] == 255 and frame == 0: + # + # application extension + # + info["extension"] = block, self.fp.tell() + if block[:11] == b"NETSCAPE2.0": + block = self.data() + if len(block) >= 3 and block[0] == 1: + self.info["loop"] = i16(block, 1) + while self.data(): + pass + + elif s == b",": + # + # local image + # + s = self.fp.read(9) + + # extent + x0, y0 = i16(s, 0), i16(s, 2) + x1, y1 = x0 + i16(s, 4), y0 + i16(s, 6) + if (x1 > self.size[0] or y1 > self.size[1]) and update_image: + self._size = max(x1, self.size[0]), max(y1, self.size[1]) + Image._decompression_bomb_check(self._size) + frame_dispose_extent = x0, y0, x1, y1 + flags = s[8] + + interlace = (flags & 64) != 0 + + if flags & 128: + bits = (flags & 7) + 1 + p = self.fp.read(3 << bits) + if self._is_palette_needed(p): + palette = ImagePalette.raw("RGB", p) + else: + palette = False + + # image data + bits = self.fp.read(1)[0] + self.__offset = self.fp.tell() + break + + else: + pass + # raise OSError, "illegal GIF tag `%x`" % s[0] + s = None + + if interlace is None: + # self._fp = None + raise EOFError + + self.__frame = frame + if not update_image: + return + + self.tile = [] + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + + self._frame_palette = palette if palette is not None else self.global_palette + self._frame_transparency = frame_transparency + if frame == 0: + if self._frame_palette: + if LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + self.mode = "RGBA" if frame_transparency is not None else "RGB" + else: + self.mode = "P" + else: + self.mode = "L" + + if not palette and self.global_palette: + from copy import copy + + palette = copy(self.global_palette) + self.palette = palette + else: + if self.mode == "P": + if ( + LOADING_STRATEGY != LoadingStrategy.RGB_AFTER_DIFFERENT_PALETTE_ONLY + or palette + ): + self.pyaccess = None + if "transparency" in self.info: + self.im.putpalettealpha(self.info["transparency"], 0) + self.im = self.im.convert("RGBA", Image.Dither.FLOYDSTEINBERG) + self.mode = "RGBA" + del self.info["transparency"] + else: + self.mode = "RGB" + self.im = self.im.convert("RGB", Image.Dither.FLOYDSTEINBERG) + + def _rgb(color): + if self._frame_palette: + color = tuple(self._frame_palette.palette[color * 3 : color * 3 + 3]) + else: + color = (color, color, color) + return color + + self.dispose_extent = frame_dispose_extent + try: + if self.disposal_method < 2: + # do not dispose or none specified + self.dispose = None + elif self.disposal_method == 2: + # replace with background colour + + # only dispose the extent in this frame + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + + # by convention, attempt to use transparency first + dispose_mode = "P" + color = self.info.get("transparency", frame_transparency) + if color is not None: + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(color) + (0,) + else: + color = self.info.get("background", 0) + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGB" + color = _rgb(color) + self.dispose = Image.core.fill(dispose_mode, dispose_size, color) + else: + # replace with previous contents + if self.im is not None: + # only dispose the extent in this frame + self.dispose = self._crop(self.im, self.dispose_extent) + elif frame_transparency is not None: + x0, y0, x1, y1 = self.dispose_extent + dispose_size = (x1 - x0, y1 - y0) + + Image._decompression_bomb_check(dispose_size) + dispose_mode = "P" + color = frame_transparency + if self.mode in ("RGB", "RGBA"): + dispose_mode = "RGBA" + color = _rgb(frame_transparency) + (0,) + self.dispose = Image.core.fill(dispose_mode, dispose_size, color) + except AttributeError: + pass + + if interlace is not None: + transparency = -1 + if frame_transparency is not None: + if frame == 0: + if LOADING_STRATEGY != LoadingStrategy.RGB_ALWAYS: + self.info["transparency"] = frame_transparency + elif self.mode not in ("RGB", "RGBA"): + transparency = frame_transparency + self.tile = [ + ( + "gif", + (x0, y0, x1, y1), + self.__offset, + (bits, interlace, transparency), + ) + ] + + if info.get("comment"): + self.info["comment"] = info["comment"] + for k in ["duration", "extension"]: + if k in info: + self.info[k] = info[k] + elif k in self.info: + del self.info[k] + + def load_prepare(self): + temp_mode = "P" if self._frame_palette else "L" + self._prev_im = None + if self.__frame == 0: + if self._frame_transparency is not None: + self.im = Image.core.fill( + temp_mode, self.size, self._frame_transparency + ) + elif self.mode in ("RGB", "RGBA"): + self._prev_im = self.im + if self._frame_palette: + self.im = Image.core.fill("P", self.size, self._frame_transparency or 0) + self.im.putpalette(*self._frame_palette.getdata()) + else: + self.im = None + self.mode = temp_mode + self._frame_palette = None + + super().load_prepare() + + def load_end(self): + if self.__frame == 0: + if self.mode == "P" and LOADING_STRATEGY == LoadingStrategy.RGB_ALWAYS: + if self._frame_transparency is not None: + self.im.putpalettealpha(self._frame_transparency, 0) + self.mode = "RGBA" + else: + self.mode = "RGB" + self.im = self.im.convert(self.mode, Image.Dither.FLOYDSTEINBERG) + return + if not self._prev_im: + return + if self._frame_transparency is not None: + self.im.putpalettealpha(self._frame_transparency, 0) + frame_im = self.im.convert("RGBA") + else: + frame_im = self.im.convert("RGB") + frame_im = self._crop(frame_im, self.dispose_extent) + + self.im = self._prev_im + self.mode = self.im.mode + if frame_im.mode == "RGBA": + self.im.paste(frame_im, self.dispose_extent, frame_im) + else: + self.im.paste(frame_im, self.dispose_extent) + + def tell(self): + return self.__frame + + +# -------------------------------------------------------------------- +# Write GIF files + + +RAWMODE = {"1": "L", "L": "L", "P": "P"} + + +def _normalize_mode(im): + """ + Takes an image (or frame), returns an image in a mode that is appropriate + for saving in a Gif. + + It may return the original image, or it may return an image converted to + palette or 'L' mode. + + :param im: Image object + :returns: Image object + """ + if im.mode in RAWMODE: + im.load() + return im + if Image.getmodebase(im.mode) == "RGB": + im = im.convert("P", palette=Image.Palette.ADAPTIVE) + if im.palette.mode == "RGBA": + for rgba in im.palette.colors: + if rgba[3] == 0: + im.info["transparency"] = im.palette.colors[rgba] + break + return im + return im.convert("L") + + +def _normalize_palette(im, palette, info): + """ + Normalizes the palette for image. + - Sets the palette to the incoming palette, if provided. + - Ensures that there's a palette for L mode images + - Optimizes the palette if necessary/desired. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: Image object + """ + source_palette = None + if palette: + # a bytes palette + if isinstance(palette, (bytes, bytearray, list)): + source_palette = bytearray(palette[:768]) + if isinstance(palette, ImagePalette.ImagePalette): + source_palette = bytearray(palette.palette) + + if im.mode == "P": + if not source_palette: + source_palette = im.im.getpalette("RGB")[:768] + else: # L-mode + if not source_palette: + source_palette = bytearray(i // 3 for i in range(768)) + im.palette = ImagePalette.ImagePalette("RGB", palette=source_palette) + + if palette: + used_palette_colors = [] + for i in range(0, len(source_palette), 3): + source_color = tuple(source_palette[i : i + 3]) + index = im.palette.colors.get(source_color) + if index in used_palette_colors: + index = None + used_palette_colors.append(index) + for i, index in enumerate(used_palette_colors): + if index is None: + for j in range(len(used_palette_colors)): + if j not in used_palette_colors: + used_palette_colors[i] = j + break + im = im.remap_palette(used_palette_colors) + else: + used_palette_colors = _get_optimize(im, info) + if used_palette_colors is not None: + return im.remap_palette(used_palette_colors, source_palette) + + im.palette.palette = source_palette + return im + + +def _write_single_frame(im, fp, palette): + im_out = _normalize_mode(im) + for k, v in im_out.info.items(): + im.encoderinfo.setdefault(k, v) + im_out = _normalize_palette(im_out, palette, im.encoderinfo) + + for s in _get_global_header(im_out, im.encoderinfo): + fp.write(s) + + # local image header + flags = 0 + if get_interlace(im): + flags = flags | 64 + _write_local_header(fp, im, (0, 0), flags) + + im_out.encoderconfig = (8, get_interlace(im)) + ImageFile._save(im_out, fp, [("gif", (0, 0) + im.size, 0, RAWMODE[im_out.mode])]) + + fp.write(b"\0") # end of image data + + +def _getbbox(base_im, im_frame): + if _get_palette_bytes(im_frame) == _get_palette_bytes(base_im): + delta = ImageChops.subtract_modulo(im_frame, base_im) + else: + delta = ImageChops.subtract_modulo( + im_frame.convert("RGBA"), base_im.convert("RGBA") + ) + return delta.getbbox(alpha_only=False) + + +def _write_multiple_frames(im, fp, palette): + duration = im.encoderinfo.get("duration") + disposal = im.encoderinfo.get("disposal", im.info.get("disposal")) + + im_frames = [] + frame_count = 0 + background_im = None + for imSequence in itertools.chain([im], im.encoderinfo.get("append_images", [])): + for im_frame in ImageSequence.Iterator(imSequence): + # a copy is required here since seek can still mutate the image + im_frame = _normalize_mode(im_frame.copy()) + if frame_count == 0: + for k, v in im_frame.info.items(): + if k == "transparency": + continue + im.encoderinfo.setdefault(k, v) + + encoderinfo = im.encoderinfo.copy() + im_frame = _normalize_palette(im_frame, palette, encoderinfo) + if "transparency" in im_frame.info: + encoderinfo.setdefault("transparency", im_frame.info["transparency"]) + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + elif duration is None and "duration" in im_frame.info: + encoderinfo["duration"] = im_frame.info["duration"] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + frame_count += 1 + + if im_frames: + # delta frame + previous = im_frames[-1] + bbox = _getbbox(previous["im"], im_frame) + if not bbox: + # This frame is identical to the previous frame + if encoderinfo.get("duration"): + previous["encoderinfo"]["duration"] += encoderinfo["duration"] + continue + if encoderinfo.get("disposal") == 2: + if background_im is None: + color = im.encoderinfo.get( + "transparency", im.info.get("transparency", (0, 0, 0)) + ) + background = _get_background(im_frame, color) + background_im = Image.new("P", im_frame.size, background) + background_im.putpalette(im_frames[0]["im"].palette) + bbox = _getbbox(background_im, im_frame) + else: + bbox = None + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + if len(im_frames) > 1: + for frame_data in im_frames: + im_frame = frame_data["im"] + if not frame_data["bbox"]: + # global header + for s in _get_global_header(im_frame, frame_data["encoderinfo"]): + fp.write(s) + offset = (0, 0) + else: + # compress difference + if not palette: + frame_data["encoderinfo"]["include_color_table"] = True + + im_frame = im_frame.crop(frame_data["bbox"]) + offset = frame_data["bbox"][:2] + _write_frame_data(fp, im_frame, offset, frame_data["encoderinfo"]) + return True + elif "duration" in im.encoderinfo and isinstance( + im.encoderinfo["duration"], (list, tuple) + ): + # Since multiple frames will not be written, add together the frame durations + im.encoderinfo["duration"] = sum(im.encoderinfo["duration"]) + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, save_all=False): + # header + if "palette" in im.encoderinfo or "palette" in im.info: + palette = im.encoderinfo.get("palette", im.info.get("palette")) + else: + palette = None + im.encoderinfo["optimize"] = im.encoderinfo.get("optimize", True) + + if not save_all or not _write_multiple_frames(im, fp, palette): + _write_single_frame(im, fp, palette) + + fp.write(b";") # end of file + + if hasattr(fp, "flush"): + fp.flush() + + +def get_interlace(im): + interlace = im.encoderinfo.get("interlace", 1) + + # workaround for @PIL153 + if min(im.size) < 16: + interlace = 0 + + return interlace + + +def _write_local_header(fp, im, offset, flags): + transparent_color_exists = False + try: + if "transparency" in im.encoderinfo: + transparency = im.encoderinfo["transparency"] + else: + transparency = im.info["transparency"] + transparency = int(transparency) + except (KeyError, ValueError): + pass + else: + # optimize the block away if transparent color is not used + transparent_color_exists = True + + used_palette_colors = _get_optimize(im, im.encoderinfo) + if used_palette_colors is not None: + # adjust the transparency index after optimize + try: + transparency = used_palette_colors.index(transparency) + except ValueError: + transparent_color_exists = False + + if "duration" in im.encoderinfo: + duration = int(im.encoderinfo["duration"] / 10) + else: + duration = 0 + + disposal = int(im.encoderinfo.get("disposal", 0)) + + if transparent_color_exists or duration != 0 or disposal: + packed_flag = 1 if transparent_color_exists else 0 + packed_flag |= disposal << 2 + if not transparent_color_exists: + transparency = 0 + + fp.write( + b"!" + + o8(249) # extension intro + + o8(4) # length + + o8(packed_flag) # packed fields + + o16(duration) # duration + + o8(transparency) # transparency index + + o8(0) + ) + + include_color_table = im.encoderinfo.get("include_color_table") + if include_color_table: + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + if color_table_size: + flags = flags | 128 # local color table flag + flags = flags | color_table_size + + fp.write( + b"," + + o16(offset[0]) # offset + + o16(offset[1]) + + o16(im.size[0]) # size + + o16(im.size[1]) + + o8(flags) # flags + ) + if include_color_table and color_table_size: + fp.write(_get_header_palette(palette_bytes)) + fp.write(o8(8)) # bits + + +def _save_netpbm(im, fp, filename): + # Unused by default. + # To use, uncomment the register_save call at the end of the file. + # + # If you need real GIF compression and/or RGB quantization, you + # can use the external NETPBM/PBMPLUS utilities. See comments + # below for information on how to enable this. + tempfile = im._dump() + + try: + with open(filename, "wb") as f: + if im.mode != "RGB": + subprocess.check_call( + ["ppmtogif", tempfile], stdout=f, stderr=subprocess.DEVNULL + ) + else: + # Pipe ppmquant output into ppmtogif + # "ppmquant 256 %s | ppmtogif > %s" % (tempfile, filename) + quant_cmd = ["ppmquant", "256", tempfile] + togif_cmd = ["ppmtogif"] + quant_proc = subprocess.Popen( + quant_cmd, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL + ) + togif_proc = subprocess.Popen( + togif_cmd, + stdin=quant_proc.stdout, + stdout=f, + stderr=subprocess.DEVNULL, + ) + + # Allow ppmquant to receive SIGPIPE if ppmtogif exits + quant_proc.stdout.close() + + retcode = quant_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, quant_cmd) + + retcode = togif_proc.wait() + if retcode: + raise subprocess.CalledProcessError(retcode, togif_cmd) + finally: + try: + os.unlink(tempfile) + except OSError: + pass + + +# Force optimization so that we can test performance against +# cases where it took lots of memory and time previously. +_FORCE_OPTIMIZE = False + + +def _get_optimize(im, info): + """ + Palette optimization is a potentially expensive operation. + + This function determines if the palette should be optimized using + some heuristics, then returns the list of palette entries in use. + + :param im: Image object + :param info: encoderinfo + :returns: list of indexes of palette entries in use, or None + """ + if im.mode in ("P", "L") and info and info.get("optimize", 0): + # Potentially expensive operation. + + # The palette saves 3 bytes per color not used, but palette + # lengths are restricted to 3*(2**N) bytes. Max saving would + # be 768 -> 6 bytes if we went all the way down to 2 colors. + # * If we're over 128 colors, we can't save any space. + # * If there aren't any holes, it's not worth collapsing. + # * If we have a 'large' image, the palette is in the noise. + + # create the new palette if not every color is used + optimise = _FORCE_OPTIMIZE or im.mode == "L" + if optimise or im.width * im.height < 512 * 512: + # check which colors are used + used_palette_colors = [] + for i, count in enumerate(im.histogram()): + if count: + used_palette_colors.append(i) + + if optimise or max(used_palette_colors) >= len(used_palette_colors): + return used_palette_colors + + num_palette_colors = len(im.palette.palette) // Image.getmodebands( + im.palette.mode + ) + current_palette_size = 1 << (num_palette_colors - 1).bit_length() + if ( + # check that the palette would become smaller when saved + len(used_palette_colors) <= current_palette_size // 2 + # check that the palette is not already the smallest possible size + and current_palette_size > 2 + ): + return used_palette_colors + + +def _get_color_table_size(palette_bytes): + # calculate the palette size for the header + if not palette_bytes: + return 0 + elif len(palette_bytes) < 9: + return 1 + else: + return math.ceil(math.log(len(palette_bytes) // 3, 2)) - 1 + + +def _get_header_palette(palette_bytes): + """ + Returns the palette, null padded to the next power of 2 (*3) bytes + suitable for direct inclusion in the GIF header + + :param palette_bytes: Unpadded palette bytes, in RGBRGB form + :returns: Null padded palette + """ + color_table_size = _get_color_table_size(palette_bytes) + + # add the missing amount of bytes + # the palette has to be 2< 0: + palette_bytes += o8(0) * 3 * actual_target_size_diff + return palette_bytes + + +def _get_palette_bytes(im): + """ + Gets the palette for inclusion in the gif header + + :param im: Image object + :returns: Bytes, len<=768 suitable for inclusion in gif header + """ + return im.palette.palette if im.palette else b"" + + +def _get_background(im, info_background): + background = 0 + if info_background: + if isinstance(info_background, tuple): + # WebPImagePlugin stores an RGBA value in info["background"] + # So it must be converted to the same format as GifImagePlugin's + # info["background"] - a global color table index + try: + background = im.palette.getcolor(info_background, im) + except ValueError as e: + if str(e) not in ( + # If all 256 colors are in use, + # then there is no need for the background color + "cannot allocate more than 256 colors", + # Ignore non-opaque WebP background + "cannot add non-opaque RGBA color to RGB palette", + ): + raise + else: + background = info_background + return background + + +def _get_global_header(im, info): + """Return a list of strings representing a GIF header""" + + # Header Block + # https://www.matthewflickinger.com/lab/whatsinagif/bits_and_bytes.asp + + version = b"87a" + if im.info.get("version") == b"89a" or ( + info + and ( + "transparency" in info + or "loop" in info + or info.get("duration") + or info.get("comment") + ) + ): + version = b"89a" + + background = _get_background(im, info.get("background")) + + palette_bytes = _get_palette_bytes(im) + color_table_size = _get_color_table_size(palette_bytes) + + header = [ + b"GIF" # signature + + version # version + + o16(im.size[0]) # canvas width + + o16(im.size[1]), # canvas height + # Logical Screen Descriptor + # size of global color table + global color table flag + o8(color_table_size + 128), # packed fields + # background + reserved/aspect + o8(background) + o8(0), + # Global Color Table + _get_header_palette(palette_bytes), + ] + if "loop" in info: + header.append( + b"!" + + o8(255) # extension intro + + o8(11) + + b"NETSCAPE2.0" + + o8(3) + + o8(1) + + o16(info["loop"]) # number of loops + + o8(0) + ) + if info.get("comment"): + comment_block = b"!" + o8(254) # extension intro + + comment = info["comment"] + if isinstance(comment, str): + comment = comment.encode() + for i in range(0, len(comment), 255): + subblock = comment[i : i + 255] + comment_block += o8(len(subblock)) + subblock + + comment_block += o8(0) + header.append(comment_block) + return header + + +def _write_frame_data(fp, im_frame, offset, params): + try: + im_frame.encoderinfo = params + + # local image header + _write_local_header(fp, im_frame, offset, 0) + + ImageFile._save( + im_frame, fp, [("gif", (0, 0) + im_frame.size, 0, RAWMODE[im_frame.mode])] + ) + + fp.write(b"\0") # end of image data + finally: + del im_frame.encoderinfo + + +# -------------------------------------------------------------------- +# Legacy GIF utilities + + +def getheader(im, palette=None, info=None): + """ + Legacy Method to get Gif data from image. + + Warning:: May modify image data. + + :param im: Image object + :param palette: bytes object containing the source palette, or .... + :param info: encoderinfo + :returns: tuple of(list of header items, optimized palette) + + """ + used_palette_colors = _get_optimize(im, info) + + if info is None: + info = {} + + if "background" not in info and "background" in im.info: + info["background"] = im.info["background"] + + im_mod = _normalize_palette(im, palette, info) + im.palette = im_mod.palette + im.im = im_mod.im + header = _get_global_header(im, info) + + return header, used_palette_colors + + +def getdata(im, offset=(0, 0), **params): + """ + Legacy Method + + Return a list of strings representing this image. + The first string is a local image header, the rest contains + encoded image data. + + To specify duration, add the time in milliseconds, + e.g. ``getdata(im_frame, duration=1000)`` + + :param im: Image object + :param offset: Tuple of (x, y) pixels. Defaults to (0, 0) + :param \\**params: e.g. duration or other encoder info parameters + :returns: List of bytes containing GIF encoded frame data + + """ + + class Collector: + data = [] + + def write(self, data): + self.data.append(data) + + im.load() # make sure raster data is available + + fp = Collector() + + _write_frame_data(fp, im, offset, params) + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GifImageFile.format, GifImageFile, _accept) +Image.register_save(GifImageFile.format, _save) +Image.register_save_all(GifImageFile.format, _save_all) +Image.register_extension(GifImageFile.format, ".gif") +Image.register_mime(GifImageFile.format, "image/gif") + +# +# Uncomment the following line if you wish to use NETPBM/PBMPLUS +# instead of the built-in "uncompressed" GIF encoder + +# Image.register_save(GifImageFile.format, _save_netpbm) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpGradientFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpGradientFile.py new file mode 100644 index 0000000..8e801be --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpGradientFile.py @@ -0,0 +1,137 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read (and render) GIMP gradient files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +""" +Stuff to translate curve segments to palette values (derived from +the corresponding code in GIMP, written by Federico Mena Quintero. +See the GIMP distribution for more information.) +""" + + +from math import log, pi, sin, sqrt + +from ._binary import o8 + +EPSILON = 1e-10 +"""""" # Enable auto-doc for data member + + +def linear(middle, pos): + if pos <= middle: + if middle < EPSILON: + return 0.0 + else: + return 0.5 * pos / middle + else: + pos = pos - middle + middle = 1.0 - middle + if middle < EPSILON: + return 1.0 + else: + return 0.5 + 0.5 * pos / middle + + +def curved(middle, pos): + return pos ** (log(0.5) / log(max(middle, EPSILON))) + + +def sine(middle, pos): + return (sin((-pi / 2.0) + pi * linear(middle, pos)) + 1.0) / 2.0 + + +def sphere_increasing(middle, pos): + return sqrt(1.0 - (linear(middle, pos) - 1.0) ** 2) + + +def sphere_decreasing(middle, pos): + return 1.0 - sqrt(1.0 - linear(middle, pos) ** 2) + + +SEGMENTS = [linear, curved, sine, sphere_increasing, sphere_decreasing] +"""""" # Enable auto-doc for data member + + +class GradientFile: + gradient = None + + def getpalette(self, entries=256): + palette = [] + + ix = 0 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + for i in range(entries): + x = i / (entries - 1) + + while x1 < x: + ix += 1 + x0, x1, xm, rgb0, rgb1, segment = self.gradient[ix] + + w = x1 - x0 + + if w < EPSILON: + scale = segment(0.5, 0.5) + else: + scale = segment((xm - x0) / w, (x - x0) / w) + + # expand to RGBA + r = o8(int(255 * ((rgb1[0] - rgb0[0]) * scale + rgb0[0]) + 0.5)) + g = o8(int(255 * ((rgb1[1] - rgb0[1]) * scale + rgb0[1]) + 0.5)) + b = o8(int(255 * ((rgb1[2] - rgb0[2]) * scale + rgb0[2]) + 0.5)) + a = o8(int(255 * ((rgb1[3] - rgb0[3]) * scale + rgb0[3]) + 0.5)) + + # add to palette + palette.append(r + g + b + a) + + return b"".join(palette), "RGBA" + + +class GimpGradientFile(GradientFile): + """File handler for GIMP's gradient format.""" + + def __init__(self, fp): + if fp.readline()[:13] != b"GIMP Gradient": + msg = "not a GIMP gradient file" + raise SyntaxError(msg) + + line = fp.readline() + + # GIMP 1.2 gradient files don't contain a name, but GIMP 1.3 files do + if line.startswith(b"Name: "): + line = fp.readline().strip() + + count = int(line) + + gradient = [] + + for i in range(count): + s = fp.readline().split() + w = [float(x) for x in s[:11]] + + x0, x1 = w[0], w[2] + xm = w[1] + rgb0 = w[3:7] + rgb1 = w[7:11] + + segment = SEGMENTS[int(s[11])] + cspace = int(s[12]) + + if cspace != 0: + msg = "cannot handle HSV colour space" + raise OSError(msg) + + gradient.append((x0, x1, xm, rgb0, rgb1, segment)) + + self.gradient = gradient diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py new file mode 100644 index 0000000..d388928 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GimpPaletteFile.py @@ -0,0 +1,56 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read GIMP palette files +# +# History: +# 1997-08-23 fl Created +# 2004-09-07 fl Support GIMP 2.0 palette files. +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1997-2004. +# +# See the README file for information on usage and redistribution. +# + +import re + +from ._binary import o8 + + +class GimpPaletteFile: + """File handler for GIMP's palette format.""" + + rawmode = "RGB" + + def __init__(self, fp): + self.palette = [o8(i) * 3 for i in range(256)] + + if fp.readline()[:12] != b"GIMP Palette": + msg = "not a GIMP palette file" + raise SyntaxError(msg) + + for i in range(256): + s = fp.readline() + if not s: + break + + # skip fields and comment lines + if re.match(rb"\w+:|#", s): + continue + if len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + v = tuple(map(int, s.split()[:3])) + if len(v) != 3: + msg = "bad palette entry" + raise ValueError(msg) + + self.palette[i] = o8(v[0]) + o8(v[1]) + o8(v[2]) + + self.palette = b"".join(self.palette) + + def getpalette(self): + return self.palette, self.rawmode diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py new file mode 100644 index 0000000..8a799f1 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/GribStubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# GRIB stub adapter +# +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific GRIB image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:4] == b"GRIB" and prefix[7] == 1 + + +class GribStubImageFile(ImageFile.StubImageFile): + format = "GRIB" + format_description = "GRIB" + + def _open(self): + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + msg = "Not a GRIB file" + raise SyntaxError(msg) + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + msg = "GRIB save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(GribStubImageFile.format, GribStubImageFile, _accept) +Image.register_save(GribStubImageFile.format, _save) + +Image.register_extension(GribStubImageFile.format, ".grib") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py new file mode 100644 index 0000000..bba05ed --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Hdf5StubImagePlugin.py @@ -0,0 +1,73 @@ +# +# The Python Imaging Library +# $Id$ +# +# HDF5 stub adapter +# +# Copyright (c) 2000-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile + +_handler = None + + +def register_handler(handler): + """ + Install application-specific HDF5 image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +# -------------------------------------------------------------------- +# Image adapter + + +def _accept(prefix): + return prefix[:8] == b"\x89HDF\r\n\x1a\n" + + +class HDF5StubImageFile(ImageFile.StubImageFile): + format = "HDF5" + format_description = "HDF5" + + def _open(self): + offset = self.fp.tell() + + if not _accept(self.fp.read(8)): + msg = "Not an HDF file" + raise SyntaxError(msg) + + self.fp.seek(offset) + + # make something up + self.mode = "F" + self._size = 1, 1 + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + msg = "HDF5 save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(HDF5StubImageFile.format, HDF5StubImageFile, _accept) +Image.register_save(HDF5StubImageFile.format, _save) + +Image.register_extensions(HDF5StubImageFile.format, [".h5", ".hdf"]) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py new file mode 100644 index 0000000..27cb89f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcnsImagePlugin.py @@ -0,0 +1,399 @@ +# +# The Python Imaging Library. +# $Id$ +# +# macOS icns file decoder, based on icns.py by Bob Ippolito. +# +# history: +# 2004-10-09 fl Turned into a PIL plugin; removed 2.3 dependencies. +# 2020-04-04 Allow saving on all operating systems. +# +# Copyright (c) 2004 by Bob Ippolito. +# Copyright (c) 2004 by Secret Labs. +# Copyright (c) 2004 by Fredrik Lundh. +# Copyright (c) 2014 by Alastair Houghton. +# Copyright (c) 2020 by Pan Jing. +# +# See the README file for information on usage and redistribution. +# + +import io +import os +import struct +import sys + +from . import Image, ImageFile, PngImagePlugin, features + +enable_jpeg2k = features.check_codec("jpg_2000") +if enable_jpeg2k: + from . import Jpeg2KImagePlugin + +MAGIC = b"icns" +HEADERSIZE = 8 + + +def nextheader(fobj): + return struct.unpack(">4sI", fobj.read(HEADERSIZE)) + + +def read_32t(fobj, start_length, size): + # The 128x128 icon seems to have an extra header for some reason. + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(4) + if sig != b"\x00\x00\x00\x00": + msg = "Unknown signature, expecting 0x00000000" + raise SyntaxError(msg) + return read_32(fobj, (start + 4, length - 4), size) + + +def read_32(fobj, start_length, size): + """ + Read a 32bit RGB icon resource. Seems to be either uncompressed or + an RLE packbits-like scheme. + """ + (start, length) = start_length + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + if length == sizesq * 3: + # uncompressed ("RGBRGBGB") + indata = fobj.read(length) + im = Image.frombuffer("RGB", pixel_size, indata, "raw", "RGB", 0, 1) + else: + # decode image + im = Image.new("RGB", pixel_size, None) + for band_ix in range(3): + data = [] + bytesleft = sizesq + while bytesleft > 0: + byte = fobj.read(1) + if not byte: + break + byte = byte[0] + if byte & 0x80: + blocksize = byte - 125 + byte = fobj.read(1) + for i in range(blocksize): + data.append(byte) + else: + blocksize = byte + 1 + data.append(fobj.read(blocksize)) + bytesleft -= blocksize + if bytesleft <= 0: + break + if bytesleft != 0: + msg = f"Error reading channel [{repr(bytesleft)} left]" + raise SyntaxError(msg) + band = Image.frombuffer("L", pixel_size, b"".join(data), "raw", "L", 0, 1) + im.im.putband(band.im, band_ix) + return {"RGB": im} + + +def read_mk(fobj, start_length, size): + # Alpha masks seem to be uncompressed + start = start_length[0] + fobj.seek(start) + pixel_size = (size[0] * size[2], size[1] * size[2]) + sizesq = pixel_size[0] * pixel_size[1] + band = Image.frombuffer("L", pixel_size, fobj.read(sizesq), "raw", "L", 0, 1) + return {"A": band} + + +def read_png_or_jpeg2000(fobj, start_length, size): + (start, length) = start_length + fobj.seek(start) + sig = fobj.read(12) + if sig[:8] == b"\x89PNG\x0d\x0a\x1a\x0a": + fobj.seek(start) + im = PngImagePlugin.PngImageFile(fobj) + Image._decompression_bomb_check(im.size) + return {"RGBA": im} + elif ( + sig[:4] == b"\xff\x4f\xff\x51" + or sig[:4] == b"\x0d\x0a\x87\x0a" + or sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ): + if not enable_jpeg2k: + msg = ( + "Unsupported icon subimage format (rebuild PIL " + "with JPEG 2000 support to fix this)" + ) + raise ValueError(msg) + # j2k, jpc or j2c + fobj.seek(start) + jp2kstream = fobj.read(length) + f = io.BytesIO(jp2kstream) + im = Jpeg2KImagePlugin.Jpeg2KImageFile(f) + Image._decompression_bomb_check(im.size) + if im.mode != "RGBA": + im = im.convert("RGBA") + return {"RGBA": im} + else: + msg = "Unsupported icon subimage format" + raise ValueError(msg) + + +class IcnsFile: + SIZES = { + (512, 512, 2): [(b"ic10", read_png_or_jpeg2000)], + (512, 512, 1): [(b"ic09", read_png_or_jpeg2000)], + (256, 256, 2): [(b"ic14", read_png_or_jpeg2000)], + (256, 256, 1): [(b"ic08", read_png_or_jpeg2000)], + (128, 128, 2): [(b"ic13", read_png_or_jpeg2000)], + (128, 128, 1): [ + (b"ic07", read_png_or_jpeg2000), + (b"it32", read_32t), + (b"t8mk", read_mk), + ], + (64, 64, 1): [(b"icp6", read_png_or_jpeg2000)], + (32, 32, 2): [(b"ic12", read_png_or_jpeg2000)], + (48, 48, 1): [(b"ih32", read_32), (b"h8mk", read_mk)], + (32, 32, 1): [ + (b"icp5", read_png_or_jpeg2000), + (b"il32", read_32), + (b"l8mk", read_mk), + ], + (16, 16, 2): [(b"ic11", read_png_or_jpeg2000)], + (16, 16, 1): [ + (b"icp4", read_png_or_jpeg2000), + (b"is32", read_32), + (b"s8mk", read_mk), + ], + } + + def __init__(self, fobj): + """ + fobj is a file-like object as an icns resource + """ + # signature : (start, length) + self.dct = dct = {} + self.fobj = fobj + sig, filesize = nextheader(fobj) + if not _accept(sig): + msg = "not an icns file" + raise SyntaxError(msg) + i = HEADERSIZE + while i < filesize: + sig, blocksize = nextheader(fobj) + if blocksize <= 0: + msg = "invalid block header" + raise SyntaxError(msg) + i += HEADERSIZE + blocksize -= HEADERSIZE + dct[sig] = (i, blocksize) + fobj.seek(blocksize, io.SEEK_CUR) + i += blocksize + + def itersizes(self): + sizes = [] + for size, fmts in self.SIZES.items(): + for fmt, reader in fmts: + if fmt in self.dct: + sizes.append(size) + break + return sizes + + def bestsize(self): + sizes = self.itersizes() + if not sizes: + msg = "No 32bit icon resources found" + raise SyntaxError(msg) + return max(sizes) + + def dataforsize(self, size): + """ + Get an icon resource as {channel: array}. Note that + the arrays are bottom-up like windows bitmaps and will likely + need to be flipped or transposed in some way. + """ + dct = {} + for code, reader in self.SIZES[size]: + desc = self.dct.get(code) + if desc is not None: + dct.update(reader(self.fobj, desc, size)) + return dct + + def getimage(self, size=None): + if size is None: + size = self.bestsize() + if len(size) == 2: + size = (size[0], size[1], 1) + channels = self.dataforsize(size) + + im = channels.get("RGBA", None) + if im: + return im + + im = channels.get("RGB").copy() + try: + im.putalpha(channels["A"]) + except KeyError: + pass + return im + + +## +# Image plugin for Mac OS icons. + + +class IcnsImageFile(ImageFile.ImageFile): + """ + PIL image support for Mac OS .icns files. + Chooses the best resolution, but will possibly load + a different size image if you mutate the size attribute + before calling 'load'. + + The info dictionary has a key 'sizes' that is a list + of sizes that the icns file has. + """ + + format = "ICNS" + format_description = "Mac OS icns resource" + + def _open(self): + self.icns = IcnsFile(self.fp) + self.mode = "RGBA" + self.info["sizes"] = self.icns.itersizes() + self.best_size = self.icns.bestsize() + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + info_size = value + if info_size not in self.info["sizes"] and len(info_size) == 2: + info_size = (info_size[0], info_size[1], 1) + if ( + info_size not in self.info["sizes"] + and len(info_size) == 3 + and info_size[2] == 1 + ): + simple_sizes = [ + (size[0] * size[2], size[1] * size[2]) for size in self.info["sizes"] + ] + if value in simple_sizes: + info_size = self.info["sizes"][simple_sizes.index(value)] + if info_size not in self.info["sizes"]: + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + self._size = value + + def load(self): + if len(self.size) == 3: + self.best_size = self.size + self.size = ( + self.best_size[0] * self.best_size[2], + self.best_size[1] * self.best_size[2], + ) + + px = Image.Image.load(self) + if self.im is not None and self.im.size == self.size: + # Already loaded + return px + self.load_prepare() + # This is likely NOT the best way to do it, but whatever. + im = self.icns.getimage(self.best_size) + + # If this is a PNG or JPEG 2000, it won't be loaded yet + px = im.load() + + self.im = im.im + self.mode = im.mode + self.size = im.size + + return px + + +def _save(im, fp, filename): + """ + Saves the image as a series of PNG files, + that are then combined into a .icns file. + """ + if hasattr(fp, "flush"): + fp.flush() + + sizes = { + b"ic07": 128, + b"ic08": 256, + b"ic09": 512, + b"ic10": 1024, + b"ic11": 32, + b"ic12": 64, + b"ic13": 256, + b"ic14": 512, + } + provided_images = {im.width: im for im in im.encoderinfo.get("append_images", [])} + size_streams = {} + for size in set(sizes.values()): + image = ( + provided_images[size] + if size in provided_images + else im.resize((size, size)) + ) + + temp = io.BytesIO() + image.save(temp, "png") + size_streams[size] = temp.getvalue() + + entries = [] + for type, size in sizes.items(): + stream = size_streams[size] + entries.append( + {"type": type, "size": HEADERSIZE + len(stream), "stream": stream} + ) + + # Header + fp.write(MAGIC) + file_length = HEADERSIZE # Header + file_length += HEADERSIZE + 8 * len(entries) # TOC + file_length += sum(entry["size"] for entry in entries) + fp.write(struct.pack(">i", file_length)) + + # TOC + fp.write(b"TOC ") + fp.write(struct.pack(">i", HEADERSIZE + len(entries) * HEADERSIZE)) + for entry in entries: + fp.write(entry["type"]) + fp.write(struct.pack(">i", entry["size"])) + + # Data + for entry in entries: + fp.write(entry["type"]) + fp.write(struct.pack(">i", entry["size"])) + fp.write(entry["stream"]) + + if hasattr(fp, "flush"): + fp.flush() + + +def _accept(prefix): + return prefix[:4] == MAGIC + + +Image.register_open(IcnsImageFile.format, IcnsImageFile, _accept) +Image.register_extension(IcnsImageFile.format, ".icns") + +Image.register_save(IcnsImageFile.format, _save) +Image.register_mime(IcnsImageFile.format, "image/icns") + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 IcnsImagePlugin.py [file]") + sys.exit() + + with open(sys.argv[1], "rb") as fp: + imf = IcnsImageFile(fp) + for size in imf.info["sizes"]: + imf.size = size + imf.save("out-%s-%s-%s.png" % size) + with Image.open(sys.argv[1]) as im: + im.save("out.png") + if sys.platform == "windows": + os.startfile("out.png") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py new file mode 100644 index 0000000..a188f8f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IcoImagePlugin.py @@ -0,0 +1,358 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Windows Icon support for PIL +# +# History: +# 96-05-27 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +# This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis +# . +# https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki +# +# Icon format references: +# * https://en.wikipedia.org/wiki/ICO_(file_format) +# * https://msdn.microsoft.com/en-us/library/ms997538.aspx + + +import warnings +from io import BytesIO +from math import ceil, log + +from . import BmpImagePlugin, Image, ImageFile, PngImagePlugin +from ._binary import i16le as i16 +from ._binary import i32le as i32 +from ._binary import o8 +from ._binary import o16le as o16 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +_MAGIC = b"\0\0\1\0" + + +def _save(im, fp, filename): + fp.write(_MAGIC) # (2+2) + bmp = im.encoderinfo.get("bitmap_format") == "bmp" + sizes = im.encoderinfo.get( + "sizes", + [(16, 16), (24, 24), (32, 32), (48, 48), (64, 64), (128, 128), (256, 256)], + ) + frames = [] + provided_ims = [im] + im.encoderinfo.get("append_images", []) + width, height = im.size + for size in sorted(set(sizes)): + if size[0] > width or size[1] > height or size[0] > 256 or size[1] > 256: + continue + + for provided_im in provided_ims: + if provided_im.size != size: + continue + frames.append(provided_im) + if bmp: + bits = BmpImagePlugin.SAVE[provided_im.mode][1] + bits_used = [bits] + for other_im in provided_ims: + if other_im.size != size: + continue + bits = BmpImagePlugin.SAVE[other_im.mode][1] + if bits not in bits_used: + # Another image has been supplied for this size + # with a different bit depth + frames.append(other_im) + bits_used.append(bits) + break + else: + # TODO: invent a more convenient method for proportional scalings + frame = provided_im.copy() + frame.thumbnail(size, Image.Resampling.LANCZOS, reducing_gap=None) + frames.append(frame) + fp.write(o16(len(frames))) # idCount(2) + offset = fp.tell() + len(frames) * 16 + for frame in frames: + width, height = frame.size + # 0 means 256 + fp.write(o8(width if width < 256 else 0)) # bWidth(1) + fp.write(o8(height if height < 256 else 0)) # bHeight(1) + + bits, colors = BmpImagePlugin.SAVE[frame.mode][1:] if bmp else (32, 0) + fp.write(o8(colors)) # bColorCount(1) + fp.write(b"\0") # bReserved(1) + fp.write(b"\0\0") # wPlanes(2) + fp.write(o16(bits)) # wBitCount(2) + + image_io = BytesIO() + if bmp: + frame.save(image_io, "dib") + + if bits != 32: + and_mask = Image.new("1", size) + ImageFile._save( + and_mask, image_io, [("raw", (0, 0) + size, 0, ("1", 0, -1))] + ) + else: + frame.save(image_io, "png") + image_io.seek(0) + image_bytes = image_io.read() + if bmp: + image_bytes = image_bytes[:8] + o32(height * 2) + image_bytes[12:] + bytes_len = len(image_bytes) + fp.write(o32(bytes_len)) # dwBytesInRes(4) + fp.write(o32(offset)) # dwImageOffset(4) + current = fp.tell() + fp.seek(offset) + fp.write(image_bytes) + offset = offset + bytes_len + fp.seek(current) + + +def _accept(prefix): + return prefix[:4] == _MAGIC + + +class IcoFile: + def __init__(self, buf): + """ + Parse image from file-like object containing ico file data + """ + + # check magic + s = buf.read(6) + if not _accept(s): + msg = "not an ICO file" + raise SyntaxError(msg) + + self.buf = buf + self.entry = [] + + # Number of items in file + self.nb_items = i16(s, 4) + + # Get headers for each item + for i in range(self.nb_items): + s = buf.read(16) + + icon_header = { + "width": s[0], + "height": s[1], + "nb_color": s[2], # No. of colors in image (0 if >=8bpp) + "reserved": s[3], + "planes": i16(s, 4), + "bpp": i16(s, 6), + "size": i32(s, 8), + "offset": i32(s, 12), + } + + # See Wikipedia + for j in ("width", "height"): + if not icon_header[j]: + icon_header[j] = 256 + + # See Wikipedia notes about color depth. + # We need this just to differ images with equal sizes + icon_header["color_depth"] = ( + icon_header["bpp"] + or ( + icon_header["nb_color"] != 0 + and ceil(log(icon_header["nb_color"], 2)) + ) + or 256 + ) + + icon_header["dim"] = (icon_header["width"], icon_header["height"]) + icon_header["square"] = icon_header["width"] * icon_header["height"] + + self.entry.append(icon_header) + + self.entry = sorted(self.entry, key=lambda x: x["color_depth"]) + # ICO images are usually squares + # self.entry = sorted(self.entry, key=lambda x: x['width']) + self.entry = sorted(self.entry, key=lambda x: x["square"]) + self.entry.reverse() + + def sizes(self): + """ + Get a list of all available icon sizes and color depths. + """ + return {(h["width"], h["height"]) for h in self.entry} + + def getentryindex(self, size, bpp=False): + for i, h in enumerate(self.entry): + if size == h["dim"] and (bpp is False or bpp == h["color_depth"]): + return i + return 0 + + def getimage(self, size, bpp=False): + """ + Get an image from the icon + """ + return self.frame(self.getentryindex(size, bpp)) + + def frame(self, idx): + """ + Get an image from frame idx + """ + + header = self.entry[idx] + + self.buf.seek(header["offset"]) + data = self.buf.read(8) + self.buf.seek(header["offset"]) + + if data[:8] == PngImagePlugin._MAGIC: + # png frame + im = PngImagePlugin.PngImageFile(self.buf) + Image._decompression_bomb_check(im.size) + else: + # XOR + AND mask bmp frame + im = BmpImagePlugin.DibImageFile(self.buf) + Image._decompression_bomb_check(im.size) + + # change tile dimension to only encompass XOR image + im._size = (im.size[0], int(im.size[1] / 2)) + d, e, o, a = im.tile[0] + im.tile[0] = d, (0, 0) + im.size, o, a + + # figure out where AND mask image starts + bpp = header["bpp"] + if 32 == bpp: + # 32-bit color depth icon image allows semitransparent areas + # PIL's DIB format ignores transparency bits, recover them. + # The DIB is packed in BGRX byte order where X is the alpha + # channel. + + # Back up to start of bmp data + self.buf.seek(o) + # extract every 4th byte (eg. 3,7,11,15,...) + alpha_bytes = self.buf.read(im.size[0] * im.size[1] * 4)[3::4] + + # convert to an 8bpp grayscale image + mask = Image.frombuffer( + "L", # 8bpp + im.size, # (w, h) + alpha_bytes, # source chars + "raw", # raw decoder + ("L", 0, -1), # 8bpp inverted, unpadded, reversed + ) + else: + # get AND image from end of bitmap + w = im.size[0] + if (w % 32) > 0: + # bitmap row data is aligned to word boundaries + w += 32 - (im.size[0] % 32) + + # the total mask data is + # padded row size * height / bits per char + + total_bytes = int((w * im.size[1]) / 8) + and_mask_offset = header["offset"] + header["size"] - total_bytes + + self.buf.seek(and_mask_offset) + mask_data = self.buf.read(total_bytes) + + # convert raw data to image + mask = Image.frombuffer( + "1", # 1 bpp + im.size, # (w, h) + mask_data, # source chars + "raw", # raw decoder + ("1;I", int(w / 8), -1), # 1bpp inverted, padded, reversed + ) + + # now we have two images, im is XOR image and mask is AND image + + # apply mask image as alpha channel + im = im.convert("RGBA") + im.putalpha(mask) + + return im + + +## +# Image plugin for Windows Icon files. + + +class IcoImageFile(ImageFile.ImageFile): + """ + PIL read-only image support for Microsoft Windows .ico files. + + By default the largest resolution image in the file will be loaded. This + can be changed by altering the 'size' attribute before calling 'load'. + + The info dictionary has a key 'sizes' that is a list of the sizes available + in the icon file. + + Handles classic, XP and Vista icon formats. + + When saving, PNG compression is used. Support for this was only added in + Windows Vista. If you are unable to view the icon in Windows, convert the + image to "RGBA" mode before saving. + + This plugin is a refactored version of Win32IconImagePlugin by Bryan Davis + . + https://code.google.com/archive/p/casadebender/wikis/Win32IconImagePlugin.wiki + """ + + format = "ICO" + format_description = "Windows Icon" + + def _open(self): + self.ico = IcoFile(self.fp) + self.info["sizes"] = self.ico.sizes() + self.size = self.ico.entry[0]["dim"] + self.load() + + @property + def size(self): + return self._size + + @size.setter + def size(self, value): + if value not in self.info["sizes"]: + msg = "This is not one of the allowed sizes of this image" + raise ValueError(msg) + self._size = value + + def load(self): + if self.im is not None and self.im.size == self.size: + # Already loaded + return Image.Image.load(self) + im = self.ico.getimage(self.size) + # if tile is PNG, it won't really be loaded yet + im.load() + self.im = im.im + self.pyaccess = None + self.mode = im.mode + if im.size != self.size: + warnings.warn("Image was not the expected size") + + index = self.ico.getentryindex(self.size) + sizes = list(self.info["sizes"]) + sizes[index] = im.size + self.info["sizes"] = set(sizes) + + self.size = im.size + + def load_seek(self): + # Flag the ImageFile.Parser so that it + # just does all the decode at the end. + pass + + +# +# -------------------------------------------------------------------- + + +Image.register_open(IcoImageFile.format, IcoImageFile, _accept) +Image.register_save(IcoImageFile.format, _save) +Image.register_extension(IcoImageFile.format, ".ico") + +Image.register_mime(IcoImageFile.format, "image/x-icon") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImImagePlugin.py new file mode 100644 index 0000000..746743f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImImagePlugin.py @@ -0,0 +1,371 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IFUNC IM file handling for PIL +# +# history: +# 1995-09-01 fl Created. +# 1997-01-03 fl Save palette images +# 1997-01-08 fl Added sequence support +# 1997-01-23 fl Added P and RGB save support +# 1997-05-31 fl Read floating point images +# 1997-06-22 fl Save floating point images +# 1997-08-27 fl Read and save 1-bit images +# 1998-06-25 fl Added support for RGB+LUT images +# 1998-07-02 fl Added support for YCC images +# 1998-07-15 fl Renamed offset attribute to avoid name clash +# 1998-12-29 fl Added I;16 support +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# 2003-09-26 fl Added LA/PA support +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +import os +import re + +from . import Image, ImageFile, ImagePalette + +# -------------------------------------------------------------------- +# Standard tags + +COMMENT = "Comment" +DATE = "Date" +EQUIPMENT = "Digitalization equipment" +FRAMES = "File size (no of images)" +LUT = "Lut" +NAME = "Name" +SCALE = "Scale (x,y)" +SIZE = "Image size (x*y)" +MODE = "Image type" + +TAGS = { + COMMENT: 0, + DATE: 0, + EQUIPMENT: 0, + FRAMES: 0, + LUT: 0, + NAME: 0, + SCALE: 0, + SIZE: 0, + MODE: 0, +} + +OPEN = { + # ifunc93/p3cfunc formats + "0 1 image": ("1", "1"), + "L 1 image": ("1", "1"), + "Greyscale image": ("L", "L"), + "Grayscale image": ("L", "L"), + "RGB image": ("RGB", "RGB;L"), + "RLB image": ("RGB", "RLB"), + "RYB image": ("RGB", "RLB"), + "B1 image": ("1", "1"), + "B2 image": ("P", "P;2"), + "B4 image": ("P", "P;4"), + "X 24 image": ("RGB", "RGB"), + "L 32 S image": ("I", "I;32"), + "L 32 F image": ("F", "F;32"), + # old p3cfunc formats + "RGB3 image": ("RGB", "RGB;T"), + "RYB3 image": ("RGB", "RYB;T"), + # extensions + "LA image": ("LA", "LA;L"), + "PA image": ("LA", "PA;L"), + "RGBA image": ("RGBA", "RGBA;L"), + "RGBX image": ("RGBX", "RGBX;L"), + "CMYK image": ("CMYK", "CMYK;L"), + "YCC image": ("YCbCr", "YCbCr;L"), +} + +# ifunc95 extensions +for i in ["8", "8S", "16", "16S", "32", "32F"]: + OPEN[f"L {i} image"] = ("F", f"F;{i}") + OPEN[f"L*{i} image"] = ("F", f"F;{i}") +for i in ["16", "16L", "16B"]: + OPEN[f"L {i} image"] = (f"I;{i}", f"I;{i}") + OPEN[f"L*{i} image"] = (f"I;{i}", f"I;{i}") +for i in ["32S"]: + OPEN[f"L {i} image"] = ("I", f"I;{i}") + OPEN[f"L*{i} image"] = ("I", f"I;{i}") +for i in range(2, 33): + OPEN[f"L*{i} image"] = ("F", f"F;{i}") + + +# -------------------------------------------------------------------- +# Read IM directory + +split = re.compile(rb"^([A-Za-z][^:]*):[ \t]*(.*)[ \t]*$") + + +def number(s): + try: + return int(s) + except ValueError: + return float(s) + + +## +# Image plugin for the IFUNC IM file format. + + +class ImImageFile(ImageFile.ImageFile): + format = "IM" + format_description = "IFUNC Image Memory" + _close_exclusive_fp_after_loading = False + + def _open(self): + # Quick rejection: if there's not an LF among the first + # 100 bytes, this is (probably) not a text header. + + if b"\n" not in self.fp.read(100): + msg = "not an IM file" + raise SyntaxError(msg) + self.fp.seek(0) + + n = 0 + + # Default values + self.info[MODE] = "L" + self.info[SIZE] = (512, 512) + self.info[FRAMES] = 1 + + self.rawmode = "L" + + while True: + s = self.fp.read(1) + + # Some versions of IFUNC uses \n\r instead of \r\n... + if s == b"\r": + continue + + if not s or s == b"\0" or s == b"\x1A": + break + + # FIXME: this may read whole file if not a text file + s = s + self.fp.readline() + + if len(s) > 100: + msg = "not an IM file" + raise SyntaxError(msg) + + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] == b"\n": + s = s[:-1] + + try: + m = split.match(s) + except re.error as e: + msg = "not an IM file" + raise SyntaxError(msg) from e + + if m: + k, v = m.group(1, 2) + + # Don't know if this is the correct encoding, + # but a decent guess (I guess) + k = k.decode("latin-1", "replace") + v = v.decode("latin-1", "replace") + + # Convert value as appropriate + if k in [FRAMES, SCALE, SIZE]: + v = v.replace("*", ",") + v = tuple(map(number, v.split(","))) + if len(v) == 1: + v = v[0] + elif k == MODE and v in OPEN: + v, self.rawmode = OPEN[v] + + # Add to dictionary. Note that COMMENT tags are + # combined into a list of strings. + if k == COMMENT: + if k in self.info: + self.info[k].append(v) + else: + self.info[k] = [v] + else: + self.info[k] = v + + if k in TAGS: + n += 1 + + else: + msg = "Syntax error in IM header: " + s.decode("ascii", "replace") + raise SyntaxError(msg) + + if not n: + msg = "Not an IM file" + raise SyntaxError(msg) + + # Basic attributes + self._size = self.info[SIZE] + self.mode = self.info[MODE] + + # Skip forward to start of image data + while s and s[:1] != b"\x1A": + s = self.fp.read(1) + if not s: + msg = "File truncated" + raise SyntaxError(msg) + + if LUT in self.info: + # convert lookup table to palette or lut attribute + palette = self.fp.read(768) + greyscale = 1 # greyscale palette + linear = 1 # linear greyscale palette + for i in range(256): + if palette[i] == palette[i + 256] == palette[i + 512]: + if palette[i] != i: + linear = 0 + else: + greyscale = 0 + if self.mode in ["L", "LA", "P", "PA"]: + if greyscale: + if not linear: + self.lut = list(palette[:256]) + else: + if self.mode in ["L", "P"]: + self.mode = self.rawmode = "P" + elif self.mode in ["LA", "PA"]: + self.mode = "PA" + self.rawmode = "PA;L" + self.palette = ImagePalette.raw("RGB;L", palette) + elif self.mode == "RGB": + if not greyscale or not linear: + self.lut = list(palette) + + self.frame = 0 + + self.__offset = offs = self.fp.tell() + + self._fp = self.fp # FIXME: hack + + if self.rawmode[:2] == "F;": + # ifunc95 formats + try: + # use bit decoder (if necessary) + bits = int(self.rawmode[2:]) + if bits not in [8, 16, 32]: + self.tile = [("bit", (0, 0) + self.size, offs, (bits, 8, 3, 0, -1))] + return + except ValueError: + pass + + if self.rawmode in ["RGB;T", "RYB;T"]: + # Old LabEye/3PC files. Would be very surprised if anyone + # ever stumbled upon such a file ;-) + size = self.size[0] * self.size[1] + self.tile = [ + ("raw", (0, 0) + self.size, offs, ("G", 0, -1)), + ("raw", (0, 0) + self.size, offs + size, ("R", 0, -1)), + ("raw", (0, 0) + self.size, offs + 2 * size, ("B", 0, -1)), + ] + else: + # LabEye/IFUNC files + self.tile = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + @property + def n_frames(self): + return self.info[FRAMES] + + @property + def is_animated(self): + return self.info[FRAMES] > 1 + + def seek(self, frame): + if not self._seek_check(frame): + return + + self.frame = frame + + if self.mode == "1": + bits = 1 + else: + bits = 8 * len(self.mode) + + size = ((self.size[0] * bits + 7) // 8) * self.size[1] + offs = self.__offset + frame * size + + self.fp = self._fp + + self.tile = [("raw", (0, 0) + self.size, offs, (self.rawmode, 0, -1))] + + def tell(self): + return self.frame + + +# +# -------------------------------------------------------------------- +# Save IM files + + +SAVE = { + # mode: (im type, raw mode) + "1": ("0 1", "1"), + "L": ("Greyscale", "L"), + "LA": ("LA", "LA;L"), + "P": ("Greyscale", "P"), + "PA": ("LA", "PA;L"), + "I": ("L 32S", "I;32S"), + "I;16": ("L 16", "I;16"), + "I;16L": ("L 16L", "I;16L"), + "I;16B": ("L 16B", "I;16B"), + "F": ("L 32F", "F;32F"), + "RGB": ("RGB", "RGB;L"), + "RGBA": ("RGBA", "RGBA;L"), + "RGBX": ("RGBX", "RGBX;L"), + "CMYK": ("CMYK", "CMYK;L"), + "YCbCr": ("YCC", "YCbCr;L"), +} + + +def _save(im, fp, filename): + try: + image_type, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as IM" + raise ValueError(msg) from e + + frames = im.encoderinfo.get("frames", 1) + + fp.write(f"Image type: {image_type} image\r\n".encode("ascii")) + if filename: + # Each line must be 100 characters or less, + # or: SyntaxError("not an IM file") + # 8 characters are used for "Name: " and "\r\n" + # Keep just the filename, ditch the potentially overlong path + name, ext = os.path.splitext(os.path.basename(filename)) + name = "".join([name[: 92 - len(ext)], ext]) + + fp.write(f"Name: {name}\r\n".encode("ascii")) + fp.write(("Image size (x*y): %d*%d\r\n" % im.size).encode("ascii")) + fp.write(f"File size (no of images): {frames}\r\n".encode("ascii")) + if im.mode in ["P", "PA"]: + fp.write(b"Lut: 1\r\n") + fp.write(b"\000" * (511 - fp.tell()) + b"\032") + if im.mode in ["P", "PA"]: + im_palette = im.im.getpalette("RGB", "RGB;L") + colors = len(im_palette) // 3 + palette = b"" + for i in range(3): + palette += im_palette[colors * i : colors * (i + 1)] + palette += b"\x00" * (256 - colors) + fp.write(palette) # 768 bytes + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, -1))]) + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(ImImageFile.format, ImImageFile) +Image.register_save(ImImageFile.format, _save) + +Image.register_extension(ImImageFile.format, ".im") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Image.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Image.py new file mode 100644 index 0000000..a519a28 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Image.py @@ -0,0 +1,3910 @@ +# +# The Python Imaging Library. +# $Id$ +# +# the Image class wrapper +# +# partial release history: +# 1995-09-09 fl Created +# 1996-03-11 fl PIL release 0.0 (proof of concept) +# 1996-04-30 fl PIL release 0.1b1 +# 1999-07-28 fl PIL release 1.0 final +# 2000-06-07 fl PIL release 1.1 +# 2000-10-20 fl PIL release 1.1.1 +# 2001-05-07 fl PIL release 1.1.2 +# 2002-03-15 fl PIL release 1.1.3 +# 2003-05-10 fl PIL release 1.1.4 +# 2005-03-28 fl PIL release 1.1.5 +# 2006-12-02 fl PIL release 1.1.6 +# 2009-11-15 fl PIL release 1.1.7 +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import atexit +import builtins +import io +import logging +import math +import os +import re +import struct +import sys +import tempfile +import warnings +from collections.abc import Callable, MutableMapping +from enum import IntEnum +from pathlib import Path + +try: + import defusedxml.ElementTree as ElementTree +except ImportError: + ElementTree = None + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +from . import ( + ExifTags, + ImageMode, + TiffTags, + UnidentifiedImageError, + __version__, + _plugins, +) +from ._binary import i32le, o32be, o32le +from ._util import DeferredError, is_path + +logger = logging.getLogger(__name__) + + +class DecompressionBombWarning(RuntimeWarning): + pass + + +class DecompressionBombError(Exception): + pass + + +# Limit to around a quarter gigabyte for a 24-bit (3 bpp) image +MAX_IMAGE_PIXELS = int(1024 * 1024 * 1024 // 4 // 3) + + +try: + # If the _imaging C module is not present, Pillow will not load. + # Note that other modules should not refer to _imaging directly; + # import Image and use the Image.core variable instead. + # Also note that Image.core is not a publicly documented interface, + # and should be considered private and subject to change. + from . import _imaging as core + + if __version__ != getattr(core, "PILLOW_VERSION", None): + msg = ( + "The _imaging extension was built for another version of Pillow or PIL:\n" + f"Core version: {getattr(core, 'PILLOW_VERSION', None)}\n" + f"Pillow version: {__version__}" + ) + raise ImportError(msg) + +except ImportError as v: + core = DeferredError(ImportError("The _imaging C module is not installed.")) + # Explanations for ways that we know we might have an import error + if str(v).startswith("Module use of python"): + # The _imaging C module is present, but not compiled for + # the right version (windows only). Print a warning, if + # possible. + warnings.warn( + "The _imaging extension was built for another version of Python.", + RuntimeWarning, + ) + elif str(v).startswith("The _imaging extension"): + warnings.warn(str(v), RuntimeWarning) + # Fail here anyway. Don't let people run with a mostly broken Pillow. + # see docs/porting.rst + raise + + +USE_CFFI_ACCESS = False +try: + import cffi +except ImportError: + cffi = None + + +def isImageType(t): + """ + Checks if an object is an image object. + + .. warning:: + + This function is for internal use only. + + :param t: object to check if it's an image + :returns: True if the object is an image + """ + return hasattr(t, "im") + + +# +# Constants + + +# transpose +class Transpose(IntEnum): + FLIP_LEFT_RIGHT = 0 + FLIP_TOP_BOTTOM = 1 + ROTATE_90 = 2 + ROTATE_180 = 3 + ROTATE_270 = 4 + TRANSPOSE = 5 + TRANSVERSE = 6 + + +# transforms (also defined in Imaging.h) +class Transform(IntEnum): + AFFINE = 0 + EXTENT = 1 + PERSPECTIVE = 2 + QUAD = 3 + MESH = 4 + + +# resampling filters (also defined in Imaging.h) +class Resampling(IntEnum): + NEAREST = 0 + BOX = 4 + BILINEAR = 2 + HAMMING = 5 + BICUBIC = 3 + LANCZOS = 1 + + +_filters_support = { + Resampling.BOX: 0.5, + Resampling.BILINEAR: 1.0, + Resampling.HAMMING: 1.0, + Resampling.BICUBIC: 2.0, + Resampling.LANCZOS: 3.0, +} + + +# dithers +class Dither(IntEnum): + NONE = 0 + ORDERED = 1 # Not yet implemented + RASTERIZE = 2 # Not yet implemented + FLOYDSTEINBERG = 3 # default + + +# palettes/quantizers +class Palette(IntEnum): + WEB = 0 + ADAPTIVE = 1 + + +class Quantize(IntEnum): + MEDIANCUT = 0 + MAXCOVERAGE = 1 + FASTOCTREE = 2 + LIBIMAGEQUANT = 3 + + +module = sys.modules[__name__] +for enum in (Transpose, Transform, Resampling, Dither, Palette, Quantize): + for item in enum: + setattr(module, item.name, item.value) + + +if hasattr(core, "DEFAULT_STRATEGY"): + DEFAULT_STRATEGY = core.DEFAULT_STRATEGY + FILTERED = core.FILTERED + HUFFMAN_ONLY = core.HUFFMAN_ONLY + RLE = core.RLE + FIXED = core.FIXED + + +# -------------------------------------------------------------------- +# Registries + +ID = [] +OPEN = {} +MIME = {} +SAVE = {} +SAVE_ALL = {} +EXTENSION = {} +DECODERS = {} +ENCODERS = {} + +# -------------------------------------------------------------------- +# Modes + +_ENDIAN = "<" if sys.byteorder == "little" else ">" + + +def _conv_type_shape(im): + m = ImageMode.getmode(im.mode) + shape = (im.height, im.width) + extra = len(m.bands) + if extra != 1: + shape += (extra,) + return shape, m.typestr + + +MODES = ["1", "CMYK", "F", "HSV", "I", "L", "LAB", "P", "RGB", "RGBA", "RGBX", "YCbCr"] + +# raw modes that may be memory mapped. NOTE: if you change this, you +# may have to modify the stride calculation in map.c too! +_MAPMODES = ("L", "P", "RGBX", "RGBA", "CMYK", "I;16", "I;16L", "I;16B") + + +def getmodebase(mode): + """ + Gets the "base" mode for given mode. This function returns "L" for + images that contain grayscale data, and "RGB" for images that + contain color data. + + :param mode: Input mode. + :returns: "L" or "RGB". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basemode + + +def getmodetype(mode): + """ + Gets the storage type mode. Given a mode, this function returns a + single-layer mode suitable for storing individual bands. + + :param mode: Input mode. + :returns: "L", "I", or "F". + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).basetype + + +def getmodebandnames(mode): + """ + Gets a list of individual band names. Given a mode, this function returns + a tuple containing the names of individual bands (use + :py:method:`~PIL.Image.getmodetype` to get the mode used to store each + individual band. + + :param mode: Input mode. + :returns: A tuple containing band names. The length of the tuple + gives the number of bands in an image of the given mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return ImageMode.getmode(mode).bands + + +def getmodebands(mode): + """ + Gets the number of individual bands for this mode. + + :param mode: Input mode. + :returns: The number of bands in this mode. + :exception KeyError: If the input mode was not a standard mode. + """ + return len(ImageMode.getmode(mode).bands) + + +# -------------------------------------------------------------------- +# Helpers + +_initialized = 0 + + +def preinit(): + """Explicitly load standard file format drivers.""" + + global _initialized + if _initialized >= 1: + return + + try: + from . import BmpImagePlugin + + assert BmpImagePlugin + except ImportError: + pass + try: + from . import GifImagePlugin + + assert GifImagePlugin + except ImportError: + pass + try: + from . import JpegImagePlugin + + assert JpegImagePlugin + except ImportError: + pass + try: + from . import PpmImagePlugin + + assert PpmImagePlugin + except ImportError: + pass + try: + from . import PngImagePlugin + + assert PngImagePlugin + except ImportError: + pass + # try: + # import TiffImagePlugin + # assert TiffImagePlugin + # except ImportError: + # pass + + _initialized = 1 + + +def init(): + """ + Explicitly initializes the Python Imaging Library. This function + loads all available file format drivers. + """ + + global _initialized + if _initialized >= 2: + return 0 + + for plugin in _plugins: + try: + logger.debug("Importing %s", plugin) + __import__(f"PIL.{plugin}", globals(), locals(), []) + except ImportError as e: + logger.debug("Image: failed to import %s: %s", plugin, e) + + if OPEN or SAVE: + _initialized = 2 + return 1 + + +# -------------------------------------------------------------------- +# Codec factories (used by tobytes/frombytes and ImageFile.load) + + +def _getdecoder(mode, decoder_name, args, extra=()): + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + decoder = DECODERS[decoder_name] + except KeyError: + pass + else: + return decoder(mode, *args + extra) + + try: + # get decoder + decoder = getattr(core, decoder_name + "_decoder") + except AttributeError as e: + msg = f"decoder {decoder_name} not available" + raise OSError(msg) from e + return decoder(mode, *args + extra) + + +def _getencoder(mode, encoder_name, args, extra=()): + # tweak arguments + if args is None: + args = () + elif not isinstance(args, tuple): + args = (args,) + + try: + encoder = ENCODERS[encoder_name] + except KeyError: + pass + else: + return encoder(mode, *args + extra) + + try: + # get encoder + encoder = getattr(core, encoder_name + "_encoder") + except AttributeError as e: + msg = f"encoder {encoder_name} not available" + raise OSError(msg) from e + return encoder(mode, *args + extra) + + +# -------------------------------------------------------------------- +# Simple expression analyzer + + +class _E: + def __init__(self, scale, offset): + self.scale = scale + self.offset = offset + + def __neg__(self): + return _E(-self.scale, -self.offset) + + def __add__(self, other): + if isinstance(other, _E): + return _E(self.scale + other.scale, self.offset + other.offset) + return _E(self.scale, self.offset + other) + + __radd__ = __add__ + + def __sub__(self, other): + return self + -other + + def __rsub__(self, other): + return other + -self + + def __mul__(self, other): + if isinstance(other, _E): + return NotImplemented + return _E(self.scale * other, self.offset * other) + + __rmul__ = __mul__ + + def __truediv__(self, other): + if isinstance(other, _E): + return NotImplemented + return _E(self.scale / other, self.offset / other) + + +def _getscaleoffset(expr): + a = expr(_E(1, 0)) + return (a.scale, a.offset) if isinstance(a, _E) else (0, a) + + +# -------------------------------------------------------------------- +# Implementation wrapper + + +class Image: + """ + This class represents an image object. To create + :py:class:`~PIL.Image.Image` objects, use the appropriate factory + functions. There's hardly ever any reason to call the Image constructor + directly. + + * :py:func:`~PIL.Image.open` + * :py:func:`~PIL.Image.new` + * :py:func:`~PIL.Image.frombytes` + """ + + format = None + format_description = None + _close_exclusive_fp_after_loading = True + + def __init__(self): + # FIXME: take "new" parameters / other image? + # FIXME: turn mode and size into delegating properties? + self.im = None + self.mode = "" + self._size = (0, 0) + self.palette = None + self.info = {} + self.readonly = 0 + self.pyaccess = None + self._exif = None + + @property + def width(self): + return self.size[0] + + @property + def height(self): + return self.size[1] + + @property + def size(self): + return self._size + + def _new(self, im): + new = Image() + new.im = im + new.mode = im.mode + new._size = im.size + if im.mode in ("P", "PA"): + if self.palette: + new.palette = self.palette.copy() + else: + from . import ImagePalette + + new.palette = ImagePalette.ImagePalette() + new.info = self.info.copy() + return new + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + if hasattr(self, "fp") and getattr(self, "_exclusive_fp", False): + if getattr(self, "_fp", False): + if self._fp != self.fp: + self._fp.close() + self._fp = DeferredError(ValueError("Operation on closed image")) + if self.fp: + self.fp.close() + self.fp = None + + def close(self): + """ + Closes the file pointer, if possible. + + This operation will destroy the image core and release its memory. + The image data will be unusable afterward. + + This function is required to close images that have multiple frames or + have not had their file read and closed by the + :py:meth:`~PIL.Image.Image.load` method. See :ref:`file-handling` for + more information. + """ + try: + if getattr(self, "_fp", False): + if self._fp != self.fp: + self._fp.close() + self._fp = DeferredError(ValueError("Operation on closed image")) + if self.fp: + self.fp.close() + self.fp = None + except Exception as msg: + logger.debug("Error closing: %s", msg) + + if getattr(self, "map", None): + self.map = None + + # Instead of simply setting to None, we're setting up a + # deferred error that will better explain that the core image + # object is gone. + self.im = DeferredError(ValueError("Operation on closed image")) + + def _copy(self): + self.load() + self.im = self.im.copy() + self.pyaccess = None + self.readonly = 0 + + def _ensure_mutable(self): + if self.readonly: + self._copy() + else: + self.load() + + def _dump(self, file=None, format=None, **options): + suffix = "" + if format: + suffix = "." + format + + if not file: + f, filename = tempfile.mkstemp(suffix) + os.close(f) + else: + filename = file + if not filename.endswith(suffix): + filename = filename + suffix + + self.load() + + if not format or format == "PPM": + self.im.save_ppm(filename) + else: + self.save(filename, format, **options) + + return filename + + def __eq__(self, other): + return ( + self.__class__ is other.__class__ + and self.mode == other.mode + and self.size == other.size + and self.info == other.info + and self.getpalette() == other.getpalette() + and self.tobytes() == other.tobytes() + ) + + def __repr__(self): + return "<%s.%s image mode=%s size=%dx%d at 0x%X>" % ( + self.__class__.__module__, + self.__class__.__name__, + self.mode, + self.size[0], + self.size[1], + id(self), + ) + + def _repr_pretty_(self, p, cycle): + """IPython plain text display support""" + + # Same as __repr__ but without unpredictable id(self), + # to keep Jupyter notebook `text/plain` output stable. + p.text( + "<%s.%s image mode=%s size=%dx%d>" + % ( + self.__class__.__module__, + self.__class__.__name__, + self.mode, + self.size[0], + self.size[1], + ) + ) + + def _repr_image(self, image_format, **kwargs): + """Helper function for iPython display hook. + + :param image_format: Image format. + :returns: image as bytes, saved into the given format. + """ + b = io.BytesIO() + try: + self.save(b, image_format, **kwargs) + except Exception as e: + msg = f"Could not save to {image_format} for display" + raise ValueError(msg) from e + return b.getvalue() + + def _repr_png_(self): + """iPython display hook support for PNG format. + + :returns: PNG version of the image as bytes + """ + return self._repr_image("PNG", compress_level=1) + + def _repr_jpeg_(self): + """iPython display hook support for JPEG format. + + :returns: JPEG version of the image as bytes + """ + return self._repr_image("JPEG") + + @property + def __array_interface__(self): + # numpy array interface support + new = {"version": 3} + try: + if self.mode == "1": + # Binary images need to be extended from bits to bytes + # See: https://github.com/python-pillow/Pillow/issues/350 + new["data"] = self.tobytes("raw", "L") + else: + new["data"] = self.tobytes() + except Exception as e: + if not isinstance(e, (MemoryError, RecursionError)): + try: + import numpy + from packaging.version import parse as parse_version + except ImportError: + pass + else: + if parse_version(numpy.__version__) < parse_version("1.23"): + warnings.warn(e) + raise + new["shape"], new["typestr"] = _conv_type_shape(self) + return new + + def __getstate__(self): + im_data = self.tobytes() # load image first + return [self.info, self.mode, self.size, self.getpalette(), im_data] + + def __setstate__(self, state): + Image.__init__(self) + info, mode, size, palette, data = state + self.info = info + self.mode = mode + self._size = size + self.im = core.new(mode, size) + if mode in ("L", "LA", "P", "PA") and palette: + self.putpalette(palette) + self.frombytes(data) + + def tobytes(self, encoder_name="raw", *args): + """ + Return image as a bytes object. + + .. warning:: + + This method returns the raw image data from the internal + storage. For compressed image data (e.g. PNG, JPEG) use + :meth:`~.save`, with a BytesIO parameter for in-memory + data. + + :param encoder_name: What encoder to use. The default is to + use the standard "raw" encoder. + + A list of C encoders can be seen under + codecs section of the function array in + :file:`_imaging.c`. Python encoders are + registered within the relevant plugins. + :param args: Extra arguments to the encoder. + :returns: A :py:class:`bytes` object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if encoder_name == "raw" and args == (): + args = self.mode + + self.load() + + if self.width == 0 or self.height == 0: + return b"" + + # unpack data + e = _getencoder(self.mode, encoder_name, args) + e.setimage(self.im) + + bufsize = max(65536, self.size[0] * 4) # see RawEncode.c + + output = [] + while True: + bytes_consumed, errcode, data = e.encode(bufsize) + output.append(data) + if errcode: + break + if errcode < 0: + msg = f"encoder error {errcode} in tobytes" + raise RuntimeError(msg) + + return b"".join(output) + + def tobitmap(self, name="image"): + """ + Returns the image converted to an X11 bitmap. + + .. note:: This method only works for mode "1" images. + + :param name: The name prefix to use for the bitmap variables. + :returns: A string containing an X11 bitmap. + :raises ValueError: If the mode is not "1" + """ + + self.load() + if self.mode != "1": + msg = "not a bitmap" + raise ValueError(msg) + data = self.tobytes("xbm") + return b"".join( + [ + f"#define {name}_width {self.size[0]}\n".encode("ascii"), + f"#define {name}_height {self.size[1]}\n".encode("ascii"), + f"static char {name}_bits[] = {{\n".encode("ascii"), + data, + b"};", + ] + ) + + def frombytes(self, data, decoder_name="raw", *args): + """ + Loads this image with pixel data from a bytes object. + + This method is similar to the :py:func:`~PIL.Image.frombytes` function, + but loads data into this image instead of creating a new image object. + """ + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + # default format + if decoder_name == "raw" and args == (): + args = self.mode + + # unpack data + d = _getdecoder(self.mode, decoder_name, args) + d.setimage(self.im) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + def load(self): + """ + Allocates storage for the image and loads the pixel data. In + normal cases, you don't need to call this method, since the + Image class automatically loads an opened image when it is + accessed for the first time. + + If the file associated with the image was opened by Pillow, then this + method will close it. The exception to this is if the image has + multiple frames, in which case the file will be left open for seek + operations. See :ref:`file-handling` for more information. + + :returns: An image access object. + :rtype: :ref:`PixelAccess` or :py:class:`PIL.PyAccess` + """ + if self.im is not None and self.palette and self.palette.dirty: + # realize palette + mode, arr = self.palette.getdata() + self.im.putpalette(mode, arr) + self.palette.dirty = 0 + self.palette.rawmode = None + if "transparency" in self.info and mode in ("LA", "PA"): + if isinstance(self.info["transparency"], int): + self.im.putpalettealpha(self.info["transparency"], 0) + else: + self.im.putpalettealphas(self.info["transparency"]) + self.palette.mode = "RGBA" + else: + palette_mode = "RGBA" if mode.startswith("RGBA") else "RGB" + self.palette.mode = palette_mode + self.palette.palette = self.im.getpalette(palette_mode, palette_mode) + + if self.im is not None: + if cffi and USE_CFFI_ACCESS: + if self.pyaccess: + return self.pyaccess + from . import PyAccess + + self.pyaccess = PyAccess.new(self, self.readonly) + if self.pyaccess: + return self.pyaccess + return self.im.pixel_access(self.readonly) + + def verify(self): + """ + Verifies the contents of a file. For data read from a file, this + method attempts to determine if the file is broken, without + actually decoding the image data. If this method finds any + problems, it raises suitable exceptions. If you need to load + the image after using this method, you must reopen the image + file. + """ + pass + + def convert( + self, mode=None, matrix=None, dither=None, palette=Palette.WEB, colors=256 + ): + """ + Returns a converted copy of this image. For the "P" mode, this + method translates pixels through the palette. If mode is + omitted, a mode is chosen so that all information in the image + and the palette can be represented without a palette. + + The current version supports all possible conversions between + "L", "RGB" and "CMYK". The ``matrix`` argument only supports "L" + and "RGB". + + When translating a color image to greyscale (mode "L"), + the library uses the ITU-R 601-2 luma transform:: + + L = R * 299/1000 + G * 587/1000 + B * 114/1000 + + The default method of converting a greyscale ("L") or "RGB" + image into a bilevel (mode "1") image uses Floyd-Steinberg + dither to approximate the original image luminosity levels. If + dither is ``None``, all values larger than 127 are set to 255 (white), + all other values to 0 (black). To use other thresholds, use the + :py:meth:`~PIL.Image.Image.point` method. + + When converting from "RGBA" to "P" without a ``matrix`` argument, + this passes the operation to :py:meth:`~PIL.Image.Image.quantize`, + and ``dither`` and ``palette`` are ignored. + + When converting from "PA", if an "RGBA" palette is present, the alpha + channel from the image will be used instead of the values from the palette. + + :param mode: The requested mode. See: :ref:`concept-modes`. + :param matrix: An optional conversion matrix. If given, this + should be 4- or 12-tuple containing floating point values. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). Note that this is not used when ``matrix`` is supplied. + :param palette: Palette to use when converting from mode "RGB" + to "P". Available palettes are :data:`Palette.WEB` or + :data:`Palette.ADAPTIVE`. + :param colors: Number of colors to use for the :data:`Palette.ADAPTIVE` + palette. Defaults to 256. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + has_transparency = self.info.get("transparency") is not None + if not mode and self.mode == "P": + # determine default mode + if self.palette: + mode = self.palette.mode + else: + mode = "RGB" + if mode == "RGB" and has_transparency: + mode = "RGBA" + if not mode or (mode == self.mode and not matrix): + return self.copy() + + if matrix: + # matrix conversion + if mode not in ("L", "RGB"): + msg = "illegal conversion" + raise ValueError(msg) + im = self.im.convert_matrix(mode, matrix) + new = self._new(im) + if has_transparency and self.im.bands == 3: + transparency = new.info["transparency"] + + def convert_transparency(m, v): + v = m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * 0.5 + return max(0, min(255, int(v))) + + if mode == "L": + transparency = convert_transparency(matrix, transparency) + elif len(mode) == 3: + transparency = tuple( + convert_transparency(matrix[i * 4 : i * 4 + 4], transparency) + for i in range(0, len(transparency)) + ) + new.info["transparency"] = transparency + return new + + if mode == "P" and self.mode == "RGBA": + return self.quantize(colors) + + trns = None + delete_trns = False + # transparency handling + if has_transparency: + if (self.mode in ("1", "L", "I") and mode in ("LA", "RGBA")) or ( + self.mode == "RGB" and mode == "RGBA" + ): + # Use transparent conversion to promote from transparent + # color to an alpha channel. + new_im = self._new( + self.im.convert_transparent(mode, self.info["transparency"]) + ) + del new_im.info["transparency"] + return new_im + elif self.mode in ("L", "RGB", "P") and mode in ("L", "RGB", "P"): + t = self.info["transparency"] + if isinstance(t, bytes): + # Dragons. This can't be represented by a single color + warnings.warn( + "Palette images with Transparency expressed in bytes should be " + "converted to RGBA images" + ) + delete_trns = True + else: + # get the new transparency color. + # use existing conversions + trns_im = Image()._new(core.new(self.mode, (1, 1))) + if self.mode == "P": + trns_im.putpalette(self.palette) + if isinstance(t, tuple): + err = "Couldn't allocate a palette color for transparency" + try: + t = trns_im.palette.getcolor(t, self) + except ValueError as e: + if str(e) == "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + t = None + else: + raise ValueError(err) from e + if t is None: + trns = None + else: + trns_im.putpixel((0, 0), t) + + if mode in ("L", "RGB"): + trns_im = trns_im.convert(mode) + else: + # can't just retrieve the palette number, got to do it + # after quantization. + trns_im = trns_im.convert("RGB") + trns = trns_im.getpixel((0, 0)) + + elif self.mode == "P" and mode in ("LA", "PA", "RGBA"): + t = self.info["transparency"] + delete_trns = True + + if isinstance(t, bytes): + self.im.putpalettealphas(t) + elif isinstance(t, int): + self.im.putpalettealpha(t, 0) + else: + msg = "Transparency for P mode should be bytes or int" + raise ValueError(msg) + + if mode == "P" and palette == Palette.ADAPTIVE: + im = self.im.quantize(colors) + new = self._new(im) + from . import ImagePalette + + new.palette = ImagePalette.ImagePalette("RGB", new.im.getpalette("RGB")) + if delete_trns: + # This could possibly happen if we requantize to fewer colors. + # The transparency would be totally off in that case. + del new.info["transparency"] + if trns is not None: + try: + new.info["transparency"] = new.palette.getcolor(trns, new) + except Exception: + # if we can't make a transparent color, don't leave the old + # transparency hanging around to mess us up. + del new.info["transparency"] + warnings.warn("Couldn't allocate palette entry for transparency") + return new + + if "LAB" in (self.mode, mode): + other_mode = mode if self.mode == "LAB" else self.mode + if other_mode in ("RGB", "RGBA", "RGBX"): + from . import ImageCms + + srgb = ImageCms.createProfile("sRGB") + lab = ImageCms.createProfile("LAB") + profiles = [lab, srgb] if self.mode == "LAB" else [srgb, lab] + transform = ImageCms.buildTransform( + profiles[0], profiles[1], self.mode, mode + ) + return transform.apply(self) + + # colorspace conversion + if dither is None: + dither = Dither.FLOYDSTEINBERG + + try: + im = self.im.convert(mode, dither) + except ValueError: + try: + # normalize source image and try again + modebase = getmodebase(self.mode) + if modebase == self.mode: + raise + im = self.im.convert(modebase) + im = im.convert(mode, dither) + except KeyError as e: + msg = "illegal conversion" + raise ValueError(msg) from e + + new_im = self._new(im) + if mode == "P" and palette != Palette.ADAPTIVE: + from . import ImagePalette + + new_im.palette = ImagePalette.ImagePalette("RGB", list(range(256)) * 3) + if delete_trns: + # crash fail if we leave a bytes transparency in an rgb/l mode. + del new_im.info["transparency"] + if trns is not None: + if new_im.mode == "P": + try: + new_im.info["transparency"] = new_im.palette.getcolor(trns, new_im) + except ValueError as e: + del new_im.info["transparency"] + if str(e) != "cannot allocate more than 256 colors": + # If all 256 colors are in use, + # then there is no need for transparency + warnings.warn( + "Couldn't allocate palette entry for transparency" + ) + else: + new_im.info["transparency"] = trns + return new_im + + def quantize( + self, + colors=256, + method=None, + kmeans=0, + palette=None, + dither=Dither.FLOYDSTEINBERG, + ): + """ + Convert the image to 'P' mode with the specified number + of colors. + + :param colors: The desired number of colors, <= 256 + :param method: :data:`Quantize.MEDIANCUT` (median cut), + :data:`Quantize.MAXCOVERAGE` (maximum coverage), + :data:`Quantize.FASTOCTREE` (fast octree), + :data:`Quantize.LIBIMAGEQUANT` (libimagequant; check support + using :py:func:`PIL.features.check_feature` with + ``feature="libimagequant"``). + + By default, :data:`Quantize.MEDIANCUT` will be used. + + The exception to this is RGBA images. :data:`Quantize.MEDIANCUT` + and :data:`Quantize.MAXCOVERAGE` do not support RGBA images, so + :data:`Quantize.FASTOCTREE` is used by default instead. + :param kmeans: Integer + :param palette: Quantize to the palette of given + :py:class:`PIL.Image.Image`. + :param dither: Dithering method, used when converting from + mode "RGB" to "P" or from "RGB" or "L" to "1". + Available methods are :data:`Dither.NONE` or :data:`Dither.FLOYDSTEINBERG` + (default). + :returns: A new image + """ + + self.load() + + if method is None: + # defaults: + method = Quantize.MEDIANCUT + if self.mode == "RGBA": + method = Quantize.FASTOCTREE + + if self.mode == "RGBA" and method not in ( + Quantize.FASTOCTREE, + Quantize.LIBIMAGEQUANT, + ): + # Caller specified an invalid mode. + msg = ( + "Fast Octree (method == 2) and libimagequant (method == 3) " + "are the only valid methods for quantizing RGBA images" + ) + raise ValueError(msg) + + if palette: + # use palette from reference image + palette.load() + if palette.mode != "P": + msg = "bad mode for palette image" + raise ValueError(msg) + if self.mode != "RGB" and self.mode != "L": + msg = "only RGB or L mode images can be quantized to a palette" + raise ValueError(msg) + im = self.im.convert("P", dither, palette.im) + new_im = self._new(im) + new_im.palette = palette.palette.copy() + return new_im + + im = self._new(self.im.quantize(colors, method, kmeans)) + + from . import ImagePalette + + mode = im.im.getpalettemode() + palette = im.im.getpalette(mode, mode)[: colors * len(mode)] + im.palette = ImagePalette.ImagePalette(mode, palette) + + return im + + def copy(self): + """ + Copies this image. Use this method if you wish to paste things + into an image, but still retain the original. + + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + self.load() + return self._new(self.im.copy()) + + __copy__ = copy + + def crop(self, box=None): + """ + Returns a rectangular region from this image. The box is a + 4-tuple defining the left, upper, right, and lower pixel + coordinate. See :ref:`coordinate-system`. + + Note: Prior to Pillow 3.4.0, this was a lazy operation. + + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :rtype: :py:class:`~PIL.Image.Image` + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if box is None: + return self.copy() + + if box[2] < box[0]: + msg = "Coordinate 'right' is less than 'left'" + raise ValueError(msg) + elif box[3] < box[1]: + msg = "Coordinate 'lower' is less than 'upper'" + raise ValueError(msg) + + self.load() + return self._new(self._crop(self.im, box)) + + def _crop(self, im, box): + """ + Returns a rectangular region from the core image object im. + + This is equivalent to calling im.crop((x0, y0, x1, y1)), but + includes additional sanity checks. + + :param im: a core image object + :param box: The crop rectangle, as a (left, upper, right, lower)-tuple. + :returns: A core image object. + """ + + x0, y0, x1, y1 = map(int, map(round, box)) + + absolute_values = (abs(x1 - x0), abs(y1 - y0)) + + _decompression_bomb_check(absolute_values) + + return im.crop((x0, y0, x1, y1)) + + def draft(self, mode, size): + """ + Configures the image file loader so it returns a version of the + image that as closely as possible matches the given mode and + size. For example, you can use this method to convert a color + JPEG to greyscale while loading it. + + If any changes are made, returns a tuple with the chosen ``mode`` and + ``box`` with coordinates of the original image within the altered one. + + Note that this method modifies the :py:class:`~PIL.Image.Image` object + in place. If the image has already been loaded, this method has no + effect. + + Note: This method is not implemented for most images. It is + currently implemented only for JPEG and MPO images. + + :param mode: The requested mode. + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + """ + pass + + def _expand(self, xmargin, ymargin=None): + if ymargin is None: + ymargin = xmargin + self.load() + return self._new(self.im.expand(xmargin, ymargin)) + + def filter(self, filter): + """ + Filters this image using the given filter. For a list of + available filters, see the :py:mod:`~PIL.ImageFilter` module. + + :param filter: Filter kernel. + :returns: An :py:class:`~PIL.Image.Image` object.""" + + from . import ImageFilter + + self.load() + + if isinstance(filter, Callable): + filter = filter() + if not hasattr(filter, "filter"): + msg = "filter argument should be ImageFilter.Filter instance or class" + raise TypeError(msg) + + multiband = isinstance(filter, ImageFilter.MultibandFilter) + if self.im.bands == 1 or multiband: + return self._new(filter.filter(self.im)) + + ims = [] + for c in range(self.im.bands): + ims.append(self._new(filter.filter(self.im.getband(c)))) + return merge(self.mode, ims) + + def getbands(self): + """ + Returns a tuple containing the name of each band in this image. + For example, ``getbands`` on an RGB image returns ("R", "G", "B"). + + :returns: A tuple containing band names. + :rtype: tuple + """ + return ImageMode.getmode(self.mode).bands + + def getbbox(self, *, alpha_only=True): + """ + Calculates the bounding box of the non-zero regions in the + image. + + :param alpha_only: Optional flag, defaulting to ``True``. + If ``True`` and the image has an alpha channel, trim transparent pixels. + Otherwise, trim pixels when all channels are zero. + Keyword-only argument. + :returns: The bounding box is returned as a 4-tuple defining the + left, upper, right, and lower pixel coordinate. See + :ref:`coordinate-system`. If the image is completely empty, this + method returns None. + + """ + + self.load() + return self.im.getbbox(alpha_only) + + def getcolors(self, maxcolors=256): + """ + Returns a list of colors used in this image. + + The colors will be in the image's mode. For example, an RGB image will + return a tuple of (red, green, blue) color values, and a P image will + return the index of the color in the palette. + + :param maxcolors: Maximum number of colors. If this number is + exceeded, this method returns None. The default limit is + 256 colors. + :returns: An unsorted list of (count, pixel) values. + """ + + self.load() + if self.mode in ("1", "L", "P"): + h = self.im.histogram() + out = [] + for i in range(256): + if h[i]: + out.append((h[i], i)) + if len(out) > maxcolors: + return None + return out + return self.im.getcolors(maxcolors) + + def getdata(self, band=None): + """ + Returns the contents of this image as a sequence object + containing pixel values. The sequence object is flattened, so + that values for line one follow directly after the values of + line zero, and so on. + + Note that the sequence object returned by this method is an + internal PIL data type, which only supports certain sequence + operations. To convert it to an ordinary sequence (e.g. for + printing), use ``list(im.getdata())``. + + :param band: What band to return. The default is to return + all bands. To return a single band, pass in the index + value (e.g. 0 to get the "R" band from an "RGB" image). + :returns: A sequence-like object. + """ + + self.load() + if band is not None: + return self.im.getband(band) + return self.im # could be abused + + def getextrema(self): + """ + Gets the minimum and maximum pixel values for each band in + the image. + + :returns: For a single-band image, a 2-tuple containing the + minimum and maximum pixel value. For a multi-band image, + a tuple containing one 2-tuple for each band. + """ + + self.load() + if self.im.bands > 1: + extrema = [] + for i in range(self.im.bands): + extrema.append(self.im.getband(i).getextrema()) + return tuple(extrema) + return self.im.getextrema() + + def _getxmp(self, xmp_tags): + def get_name(tag): + return tag.split("}")[1] + + def get_value(element): + value = {get_name(k): v for k, v in element.attrib.items()} + children = list(element) + if children: + for child in children: + name = get_name(child.tag) + child_value = get_value(child) + if name in value: + if not isinstance(value[name], list): + value[name] = [value[name]] + value[name].append(child_value) + else: + value[name] = child_value + elif value: + if element.text: + value["text"] = element.text + else: + return element.text + return value + + if ElementTree is None: + warnings.warn("XMP data cannot be read without defusedxml dependency") + return {} + else: + root = ElementTree.fromstring(xmp_tags) + return {get_name(root.tag): get_value(root)} + + def getexif(self): + """ + Gets EXIF data from the image. + + :returns: an :py:class:`~PIL.Image.Exif` object. + """ + if self._exif is None: + self._exif = Exif() + self._exif._loaded = False + elif self._exif._loaded: + return self._exif + self._exif._loaded = True + + exif_info = self.info.get("exif") + if exif_info is None: + if "Raw profile type exif" in self.info: + exif_info = bytes.fromhex( + "".join(self.info["Raw profile type exif"].split("\n")[3:]) + ) + elif hasattr(self, "tag_v2"): + self._exif.bigtiff = self.tag_v2._bigtiff + self._exif.endian = self.tag_v2._endian + self._exif.load_from_fp(self.fp, self.tag_v2._offset) + if exif_info is not None: + self._exif.load(exif_info) + + # XMP tags + if ExifTags.Base.Orientation not in self._exif: + xmp_tags = self.info.get("XML:com.adobe.xmp") + if xmp_tags: + match = re.search(r'tiff:Orientation(="|>)([0-9])', xmp_tags) + if match: + self._exif[ExifTags.Base.Orientation] = int(match[2]) + + return self._exif + + def _reload_exif(self): + if self._exif is None or not self._exif._loaded: + return + self._exif._loaded = False + self.getexif() + + def get_child_images(self): + child_images = [] + exif = self.getexif() + ifds = [] + if ExifTags.Base.SubIFDs in exif: + subifd_offsets = exif[ExifTags.Base.SubIFDs] + if subifd_offsets: + if not isinstance(subifd_offsets, tuple): + subifd_offsets = (subifd_offsets,) + for subifd_offset in subifd_offsets: + ifds.append((exif._get_ifd_dict(subifd_offset), subifd_offset)) + ifd1 = exif.get_ifd(ExifTags.IFD.IFD1) + if ifd1 and ifd1.get(513): + ifds.append((ifd1, exif._info.next)) + + offset = None + for ifd, ifd_offset in ifds: + current_offset = self.fp.tell() + if offset is None: + offset = current_offset + + fp = self.fp + thumbnail_offset = ifd.get(513) + if thumbnail_offset is not None: + try: + thumbnail_offset += self._exif_offset + except AttributeError: + pass + self.fp.seek(thumbnail_offset) + data = self.fp.read(ifd.get(514)) + fp = io.BytesIO(data) + + with open(fp) as im: + if thumbnail_offset is None: + im._frame_pos = [ifd_offset] + im._seek(0) + im.load() + child_images.append(im) + + if offset is not None: + self.fp.seek(offset) + return child_images + + def getim(self): + """ + Returns a capsule that points to the internal image memory. + + :returns: A capsule object. + """ + + self.load() + return self.im.ptr + + def getpalette(self, rawmode="RGB"): + """ + Returns the image palette as a list. + + :param rawmode: The mode in which to return the palette. ``None`` will + return the palette in its current mode. + + .. versionadded:: 9.1.0 + + :returns: A list of color values [r, g, b, ...], or None if the + image has no palette. + """ + + self.load() + try: + mode = self.im.getpalettemode() + except ValueError: + return None # no palette + if rawmode is None: + rawmode = mode + return list(self.im.getpalette(mode, rawmode)) + + def apply_transparency(self): + """ + If a P mode image has a "transparency" key in the info dictionary, + remove the key and instead apply the transparency to the palette. + Otherwise, the image is unchanged. + """ + if self.mode != "P" or "transparency" not in self.info: + return + + from . import ImagePalette + + palette = self.getpalette("RGBA") + transparency = self.info["transparency"] + if isinstance(transparency, bytes): + for i, alpha in enumerate(transparency): + palette[i * 4 + 3] = alpha + else: + palette[transparency * 4 + 3] = 0 + self.palette = ImagePalette.ImagePalette("RGBA", bytes(palette)) + self.palette.dirty = 1 + + del self.info["transparency"] + + def getpixel(self, xy): + """ + Returns the pixel value at a given position. + + :param xy: The coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: The pixel value. If the image is a multi-layer image, + this method returns a tuple. + """ + + self.load() + if self.pyaccess: + return self.pyaccess.getpixel(xy) + return self.im.getpixel(xy) + + def getprojection(self): + """ + Get projection to x and y axes + + :returns: Two sequences, indicating where there are non-zero + pixels along the X-axis and the Y-axis, respectively. + """ + + self.load() + x, y = self.im.getprojection() + return list(x), list(y) + + def histogram(self, mask=None, extrema=None): + """ + Returns a histogram for the image. The histogram is returned as a + list of pixel counts, one for each pixel value in the source + image. Counts are grouped into 256 bins for each band, even if + the image has more than 8 bits per band. If the image has more + than one band, the histograms for all bands are concatenated (for + example, the histogram for an "RGB" image contains 768 values). + + A bilevel image (mode "1") is treated as a greyscale ("L") image + by this method. + + If a mask is provided, the method returns a histogram for those + parts of the image where the mask image is non-zero. The mask + image must have the same size as the image, and be either a + bi-level image (mode "1") or a greyscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A list containing pixel counts. + """ + self.load() + if mask: + mask.load() + return self.im.histogram((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.histogram(extrema) + return self.im.histogram() + + def entropy(self, mask=None, extrema=None): + """ + Calculates and returns the entropy for the image. + + A bilevel image (mode "1") is treated as a greyscale ("L") + image by this method. + + If a mask is provided, the method employs the histogram for + those parts of the image where the mask image is non-zero. + The mask image must have the same size as the image, and be + either a bi-level image (mode "1") or a greyscale image ("L"). + + :param mask: An optional mask. + :param extrema: An optional tuple of manually-specified extrema. + :returns: A float value representing the image entropy + """ + self.load() + if mask: + mask.load() + return self.im.entropy((0, 0), mask.im) + if self.mode in ("I", "F"): + if extrema is None: + extrema = self.getextrema() + return self.im.entropy(extrema) + return self.im.entropy() + + def paste(self, im, box=None, mask=None): + """ + Pastes another image into this image. The box argument is either + a 2-tuple giving the upper left corner, a 4-tuple defining the + left, upper, right, and lower pixel coordinate, or None (same as + (0, 0)). See :ref:`coordinate-system`. If a 4-tuple is given, the size + of the pasted image must match the size of the region. + + If the modes don't match, the pasted image is converted to the mode of + this image (see the :py:meth:`~PIL.Image.Image.convert` method for + details). + + Instead of an image, the source can be a integer or tuple + containing pixel values. The method then fills the region + with the given color. When creating RGB images, you can + also use color strings as supported by the ImageColor module. + + If a mask is given, this method updates only the regions + indicated by the mask. You can use either "1", "L", "LA", "RGBA" + or "RGBa" images (if present, the alpha band is used as mask). + Where the mask is 255, the given image is copied as is. Where + the mask is 0, the current value is preserved. Intermediate + values will mix the two images together, including their alpha + channels if they have them. + + See :py:meth:`~PIL.Image.Image.alpha_composite` if you want to + combine images with respect to their alpha channels. + + :param im: Source image or pixel value (integer or tuple). + :param box: An optional 4-tuple giving the region to paste into. + If a 2-tuple is used instead, it's treated as the upper left + corner. If omitted or None, the source is pasted into the + upper left corner. + + If an image is given as the second argument and there is no + third, the box defaults to (0, 0), and the second argument + is interpreted as a mask image. + :param mask: An optional mask image. + """ + + if isImageType(box) and mask is None: + # abbreviated paste(im, mask) syntax + mask = box + box = None + + if box is None: + box = (0, 0) + + if len(box) == 2: + # upper left corner given; get size from image or mask + if isImageType(im): + size = im.size + elif isImageType(mask): + size = mask.size + else: + # FIXME: use self.size here? + msg = "cannot determine region size; use 4-item box" + raise ValueError(msg) + box += (box[0] + size[0], box[1] + size[1]) + + if isinstance(im, str): + from . import ImageColor + + im = ImageColor.getcolor(im, self.mode) + + elif isImageType(im): + im.load() + if self.mode != im.mode: + if self.mode != "RGB" or im.mode not in ("LA", "RGBA", "RGBa"): + # should use an adapter for this! + im = im.convert(self.mode) + im = im.im + + self._ensure_mutable() + + if mask: + mask.load() + self.im.paste(im, box, mask.im) + else: + self.im.paste(im, box) + + def alpha_composite(self, im, dest=(0, 0), source=(0, 0)): + """'In-place' analog of Image.alpha_composite. Composites an image + onto this image. + + :param im: image to composite over this one + :param dest: Optional 2 tuple (left, top) specifying the upper + left corner in this (destination) image. + :param source: Optional 2 (left, top) tuple for the upper left + corner in the overlay source image, or 4 tuple (left, top, right, + bottom) for the bounds of the source rectangle + + Performance Note: Not currently implemented in-place in the core layer. + """ + + if not isinstance(source, (list, tuple)): + msg = "Source must be a tuple" + raise ValueError(msg) + if not isinstance(dest, (list, tuple)): + msg = "Destination must be a tuple" + raise ValueError(msg) + if len(source) not in (2, 4): + msg = "Source must be a 2 or 4-tuple" + raise ValueError(msg) + if not len(dest) == 2: + msg = "Destination must be a 2-tuple" + raise ValueError(msg) + if min(source) < 0: + msg = "Source must be non-negative" + raise ValueError(msg) + + if len(source) == 2: + source = source + im.size + + # over image, crop if it's not the whole thing. + if source == (0, 0) + im.size: + overlay = im + else: + overlay = im.crop(source) + + # target for the paste + box = dest + (dest[0] + overlay.width, dest[1] + overlay.height) + + # destination image. don't copy if we're using the whole image. + if box == (0, 0) + self.size: + background = self + else: + background = self.crop(box) + + result = alpha_composite(background, overlay) + self.paste(result, box) + + def point(self, lut, mode=None): + """ + Maps this image through a lookup table or function. + + :param lut: A lookup table, containing 256 (or 65536 if + self.mode=="I" and mode == "L") values per band in the + image. A function can be used instead, it should take a + single argument. The function is called once for each + possible pixel value, and the resulting table is applied to + all bands of the image. + + It may also be an :py:class:`~PIL.Image.ImagePointHandler` + object:: + + class Example(Image.ImagePointHandler): + def point(self, data): + # Return result + :param mode: Output mode (default is same as input). In the + current version, this can only be used if the source image + has mode "L" or "P", and the output has mode "1" or the + source image mode is "I" and the output mode is "L". + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + self.load() + + if isinstance(lut, ImagePointHandler): + return lut.point(self) + + if callable(lut): + # if it isn't a list, it should be a function + if self.mode in ("I", "I;16", "F"): + # check if the function can be used with point_transform + # UNDONE wiredfool -- I think this prevents us from ever doing + # a gamma function point transform on > 8bit images. + scale, offset = _getscaleoffset(lut) + return self._new(self.im.point_transform(scale, offset)) + # for other modes, convert the function to a table + lut = [lut(i) for i in range(256)] * self.im.bands + + if self.mode == "F": + # FIXME: _imaging returns a confusing error message for this case + msg = "point operation not supported for this mode" + raise ValueError(msg) + + if mode != "F": + lut = [round(i) for i in lut] + return self._new(self.im.point(lut, mode)) + + def putalpha(self, alpha): + """ + Adds or replaces the alpha layer in this image. If the image + does not have an alpha layer, it's converted to "LA" or "RGBA". + The new layer must be either "L" or "1". + + :param alpha: The new alpha layer. This can either be an "L" or "1" + image having the same size as this image, or an integer or + other color value. + """ + + self._ensure_mutable() + + if self.mode not in ("LA", "PA", "RGBA"): + # attempt to promote self to a matching alpha mode + try: + mode = getmodebase(self.mode) + "A" + try: + self.im.setmode(mode) + except (AttributeError, ValueError) as e: + # do things the hard way + im = self.im.convert(mode) + if im.mode not in ("LA", "PA", "RGBA"): + raise ValueError from e # sanity check + self.im = im + self.pyaccess = None + self.mode = self.im.mode + except KeyError as e: + msg = "illegal image mode" + raise ValueError(msg) from e + + if self.mode in ("LA", "PA"): + band = 1 + else: + band = 3 + + if isImageType(alpha): + # alpha layer + if alpha.mode not in ("1", "L"): + msg = "illegal image mode" + raise ValueError(msg) + alpha.load() + if alpha.mode == "1": + alpha = alpha.convert("L") + else: + # constant alpha + try: + self.im.fillband(band, alpha) + except (AttributeError, ValueError): + # do things the hard way + alpha = new("L", self.size, alpha) + else: + return + + self.im.putband(alpha.im, band) + + def putdata(self, data, scale=1.0, offset=0.0): + """ + Copies pixel data from a flattened sequence object into the image. The + values should start at the upper left corner (0, 0), continue to the + end of the line, followed directly by the first value of the second + line, and so on. Data will be read until either the image or the + sequence ends. The scale and offset values are used to adjust the + sequence values: **pixel = value*scale + offset**. + + :param data: A flattened sequence object. + :param scale: An optional scale value. The default is 1.0. + :param offset: An optional offset value. The default is 0.0. + """ + + self._ensure_mutable() + + self.im.putdata(data, scale, offset) + + def putpalette(self, data, rawmode="RGB"): + """ + Attaches a palette to this image. The image must be a "P", "PA", "L" + or "LA" image. + + The palette sequence must contain at most 256 colors, made up of one + integer value for each channel in the raw mode. + For example, if the raw mode is "RGB", then it can contain at most 768 + values, made up of red, green and blue values for the corresponding pixel + index in the 256 colors. + If the raw mode is "RGBA", then it can contain at most 1024 values, + containing red, green, blue and alpha values. + + Alternatively, an 8-bit string may be used instead of an integer sequence. + + :param data: A palette sequence (either a list or a string). + :param rawmode: The raw mode of the palette. Either "RGB", "RGBA", or a mode + that can be transformed to "RGB" or "RGBA" (e.g. "R", "BGR;15", "RGBA;L"). + """ + from . import ImagePalette + + if self.mode not in ("L", "LA", "P", "PA"): + msg = "illegal image mode" + raise ValueError(msg) + if isinstance(data, ImagePalette.ImagePalette): + palette = ImagePalette.raw(data.rawmode, data.palette) + else: + if not isinstance(data, bytes): + data = bytes(data) + palette = ImagePalette.raw(rawmode, data) + self.mode = "PA" if "A" in self.mode else "P" + self.palette = palette + self.palette.mode = "RGB" + self.load() # install new palette + + def putpixel(self, xy, value): + """ + Modifies the pixel at the given position. The color is given as + a single numerical value for single-band images, and a tuple for + multi-band images. In addition to this, RGB and RGBA tuples are + accepted for P and PA images. + + Note that this method is relatively slow. For more extensive changes, + use :py:meth:`~PIL.Image.Image.paste` or the :py:mod:`~PIL.ImageDraw` + module instead. + + See: + + * :py:meth:`~PIL.Image.Image.paste` + * :py:meth:`~PIL.Image.Image.putdata` + * :py:mod:`~PIL.ImageDraw` + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param value: The pixel value. + """ + + if self.readonly: + self._copy() + self.load() + + if self.pyaccess: + return self.pyaccess.putpixel(xy, value) + + if ( + self.mode in ("P", "PA") + and isinstance(value, (list, tuple)) + and len(value) in [3, 4] + ): + # RGB or RGBA value for a P or PA image + if self.mode == "PA": + alpha = value[3] if len(value) == 4 else 255 + value = value[:3] + value = self.palette.getcolor(value, self) + if self.mode == "PA": + value = (value, alpha) + return self.im.putpixel(xy, value) + + def remap_palette(self, dest_map, source_palette=None): + """ + Rewrites the image to reorder the palette. + + :param dest_map: A list of indexes into the original palette. + e.g. ``[1,0]`` would swap a two item palette, and ``list(range(256))`` + is the identity transform. + :param source_palette: Bytes or None. + :returns: An :py:class:`~PIL.Image.Image` object. + + """ + from . import ImagePalette + + if self.mode not in ("L", "P"): + msg = "illegal image mode" + raise ValueError(msg) + + bands = 3 + palette_mode = "RGB" + if source_palette is None: + if self.mode == "P": + self.load() + palette_mode = self.im.getpalettemode() + if palette_mode == "RGBA": + bands = 4 + source_palette = self.im.getpalette(palette_mode, palette_mode) + else: # L-mode + source_palette = bytearray(i // 3 for i in range(768)) + + palette_bytes = b"" + new_positions = [0] * 256 + + # pick only the used colors from the palette + for i, oldPosition in enumerate(dest_map): + palette_bytes += source_palette[ + oldPosition * bands : oldPosition * bands + bands + ] + new_positions[oldPosition] = i + + # replace the palette color id of all pixel with the new id + + # Palette images are [0..255], mapped through a 1 or 3 + # byte/color map. We need to remap the whole image + # from palette 1 to palette 2. New_positions is + # an array of indexes into palette 1. Palette 2 is + # palette 1 with any holes removed. + + # We're going to leverage the convert mechanism to use the + # C code to remap the image from palette 1 to palette 2, + # by forcing the source image into 'L' mode and adding a + # mapping 'L' mode palette, then converting back to 'L' + # sans palette thus converting the image bytes, then + # assigning the optimized RGB palette. + + # perf reference, 9500x4000 gif, w/~135 colors + # 14 sec prepatch, 1 sec postpatch with optimization forced. + + mapping_palette = bytearray(new_positions) + + m_im = self.copy() + m_im.mode = "P" + + m_im.palette = ImagePalette.ImagePalette( + palette_mode, palette=mapping_palette * bands + ) + # possibly set palette dirty, then + # m_im.putpalette(mapping_palette, 'L') # converts to 'P' + # or just force it. + # UNDONE -- this is part of the general issue with palettes + m_im.im.putpalette(palette_mode + ";L", m_im.palette.tobytes()) + + m_im = m_im.convert("L") + + m_im.putpalette(palette_bytes, palette_mode) + m_im.palette = ImagePalette.ImagePalette(palette_mode, palette=palette_bytes) + + if "transparency" in self.info: + try: + m_im.info["transparency"] = dest_map.index(self.info["transparency"]) + except ValueError: + if "transparency" in m_im.info: + del m_im.info["transparency"] + + return m_im + + def _get_safe_box(self, size, resample, box): + """Expands the box so it includes adjacent pixels + that may be used by resampling with the given resampling filter. + """ + filter_support = _filters_support[resample] - 0.5 + scale_x = (box[2] - box[0]) / size[0] + scale_y = (box[3] - box[1]) / size[1] + support_x = filter_support * scale_x + support_y = filter_support * scale_y + + return ( + max(0, int(box[0] - support_x)), + max(0, int(box[1] - support_y)), + min(self.size[0], math.ceil(box[2] + support_x)), + min(self.size[1], math.ceil(box[3] + support_y)), + ) + + def resize(self, size, resample=None, box=None, reducing_gap=None): + """ + Returns a resized copy of this image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If the image has mode "1" or "P", it is always set to + :py:data:`Resampling.NEAREST`. If the image mode specifies a number + of bits, such as "I;16", then the default filter is + :py:data:`Resampling.NEAREST`. Otherwise, the default filter is + :py:data:`Resampling.BICUBIC`. See: :ref:`concept-filters`. + :param box: An optional 4-tuple of floats providing + the source image region to be scaled. + The values must be within (0, 0, width, height) rectangle. + If omitted or None, the entire source is used. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce`. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is None (no optimization). + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if resample is None: + type_special = ";" in self.mode + resample = Resampling.NEAREST if type_special else Resampling.BICUBIC + elif resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + Resampling.LANCZOS, + Resampling.BOX, + Resampling.HAMMING, + ): + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.LANCZOS, "Image.Resampling.LANCZOS"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + (Resampling.BOX, "Image.Resampling.BOX"), + (Resampling.HAMMING, "Image.Resampling.HAMMING"), + ) + ] + msg += " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + raise ValueError(msg) + + if reducing_gap is not None and reducing_gap < 1.0: + msg = "reducing_gap must be 1.0 or greater" + raise ValueError(msg) + + size = tuple(size) + + self.load() + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if self.size == size and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ("1", "P"): + resample = Resampling.NEAREST + + if self.mode in ["LA", "RGBA"] and resample != Resampling.NEAREST: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.resize(size, resample, box) + return im.convert(self.mode) + + self.load() + + if reducing_gap is not None and resample != Resampling.NEAREST: + factor_x = int((box[2] - box[0]) / size[0] / reducing_gap) or 1 + factor_y = int((box[3] - box[1]) / size[1] / reducing_gap) or 1 + if factor_x > 1 or factor_y > 1: + reduce_box = self._get_safe_box(size, resample, box) + factor = (factor_x, factor_y) + if callable(self.reduce): + self = self.reduce(factor, box=reduce_box) + else: + self = Image.reduce(self, factor, box=reduce_box) + box = ( + (box[0] - reduce_box[0]) / factor_x, + (box[1] - reduce_box[1]) / factor_y, + (box[2] - reduce_box[0]) / factor_x, + (box[3] - reduce_box[1]) / factor_y, + ) + + return self._new(self.im.resize(size, resample, box)) + + def reduce(self, factor, box=None): + """ + Returns a copy of the image reduced ``factor`` times. + If the size of the image is not dividable by ``factor``, + the resulting size will be rounded up. + + :param factor: A greater than 0 integer or tuple of two integers + for width and height separately. + :param box: An optional 4-tuple of ints providing + the source image region to be reduced. + The values must be within ``(0, 0, width, height)`` rectangle. + If omitted or ``None``, the entire source is used. + """ + if not isinstance(factor, (list, tuple)): + factor = (factor, factor) + + if box is None: + box = (0, 0) + self.size + else: + box = tuple(box) + + if factor == (1, 1) and box == (0, 0) + self.size: + return self.copy() + + if self.mode in ["LA", "RGBA"]: + im = self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + im = im.reduce(factor, box) + return im.convert(self.mode) + + self.load() + + return self._new(self.im.reduce(factor, box)) + + def rotate( + self, + angle, + resample=Resampling.NEAREST, + expand=0, + center=None, + translate=None, + fillcolor=None, + ): + """ + Returns a rotated copy of this image. This method returns a + copy of this image, rotated the given number of degrees counter + clockwise around its centre. + + :param angle: In degrees counter clockwise. + :param resample: An optional resampling filter. This can be + one of :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image has + mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See :ref:`concept-filters`. + :param expand: Optional expansion flag. If true, expands the output + image to make it large enough to hold the entire rotated image. + If false or omitted, make the output image the same size as the + input image. Note that the expand flag assumes rotation around + the center and no translation. + :param center: Optional center of rotation (a 2-tuple). Origin is + the upper left corner. Default is the center of the image. + :param translate: An optional post-rotate translation (a 2-tuple). + :param fillcolor: An optional color for area outside the rotated image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + angle = angle % 360.0 + + # Fast paths regardless of filter, as long as we're not + # translating or changing the center. + if not (center or translate): + if angle == 0: + return self.copy() + if angle == 180: + return self.transpose(Transpose.ROTATE_180) + if angle in (90, 270) and (expand or self.width == self.height): + return self.transpose( + Transpose.ROTATE_90 if angle == 90 else Transpose.ROTATE_270 + ) + + # Calculate the affine matrix. Note that this is the reverse + # transformation (from destination image to source) because we + # want to interpolate the (discrete) destination pixel from + # the local area around the (floating) source pixel. + + # The matrix we actually want (note that it operates from the right): + # (1, 0, tx) (1, 0, cx) ( cos a, sin a, 0) (1, 0, -cx) + # (0, 1, ty) * (0, 1, cy) * (-sin a, cos a, 0) * (0, 1, -cy) + # (0, 0, 1) (0, 0, 1) ( 0, 0, 1) (0, 0, 1) + + # The reverse matrix is thus: + # (1, 0, cx) ( cos -a, sin -a, 0) (1, 0, -cx) (1, 0, -tx) + # (0, 1, cy) * (-sin -a, cos -a, 0) * (0, 1, -cy) * (0, 1, -ty) + # (0, 0, 1) ( 0, 0, 1) (0, 0, 1) (0, 0, 1) + + # In any case, the final translation may be updated at the end to + # compensate for the expand flag. + + w, h = self.size + + if translate is None: + post_trans = (0, 0) + else: + post_trans = translate + if center is None: + # FIXME These should be rounded to ints? + rotn_center = (w / 2.0, h / 2.0) + else: + rotn_center = center + + angle = -math.radians(angle) + matrix = [ + round(math.cos(angle), 15), + round(math.sin(angle), 15), + 0.0, + round(-math.sin(angle), 15), + round(math.cos(angle), 15), + 0.0, + ] + + def transform(x, y, matrix): + (a, b, c, d, e, f) = matrix + return a * x + b * y + c, d * x + e * y + f + + matrix[2], matrix[5] = transform( + -rotn_center[0] - post_trans[0], -rotn_center[1] - post_trans[1], matrix + ) + matrix[2] += rotn_center[0] + matrix[5] += rotn_center[1] + + if expand: + # calculate output size + xx = [] + yy = [] + for x, y in ((0, 0), (w, 0), (w, h), (0, h)): + x, y = transform(x, y, matrix) + xx.append(x) + yy.append(y) + nw = math.ceil(max(xx)) - math.floor(min(xx)) + nh = math.ceil(max(yy)) - math.floor(min(yy)) + + # We multiply a translation matrix from the right. Because of its + # special form, this is the same as taking the image of the + # translation vector as new translation vector. + matrix[2], matrix[5] = transform(-(nw - w) / 2.0, -(nh - h) / 2.0, matrix) + w, h = nw, nh + + return self.transform( + (w, h), Transform.AFFINE, matrix, resample, fillcolor=fillcolor + ) + + def save(self, fp, format=None, **params): + """ + Saves this image under the given filename. If no format is + specified, the format to use is determined from the filename + extension, if possible. + + Keyword options can be used to provide additional instructions + to the writer. If a writer doesn't recognise an option, it is + silently ignored. The available options are described in the + :doc:`image format documentation + <../handbook/image-file-formats>` for each writer. + + You can use a file object instead of a filename. In this case, + you must always specify the format. The file object must + implement the ``seek``, ``tell``, and ``write`` + methods, and be opened in binary mode. + + :param fp: A filename (string), pathlib.Path object or file object. + :param format: Optional format override. If omitted, the + format to use is determined from the filename extension. + If a file object was used instead of a filename, this + parameter should always be used. + :param params: Extra parameters to the image writer. + :returns: None + :exception ValueError: If the output format could not be determined + from the file name. Use the format option to solve this. + :exception OSError: If the file could not be written. The file + may have been created, and may contain partial data. + """ + + filename = "" + open_fp = False + if isinstance(fp, Path): + filename = str(fp) + open_fp = True + elif is_path(fp): + filename = fp + open_fp = True + elif fp == sys.stdout: + try: + fp = sys.stdout.buffer + except AttributeError: + pass + if not filename and hasattr(fp, "name") and is_path(fp.name): + # only set the name for metadata purposes + filename = fp.name + + # may mutate self! + self._ensure_mutable() + + save_all = params.pop("save_all", False) + self.encoderinfo = params + self.encoderconfig = () + + preinit() + + ext = os.path.splitext(filename)[1].lower() + + if not format: + if ext not in EXTENSION: + init() + try: + format = EXTENSION[ext] + except KeyError as e: + msg = f"unknown file extension: {ext}" + raise ValueError(msg) from e + + if format.upper() not in SAVE: + init() + if save_all: + save_handler = SAVE_ALL[format.upper()] + else: + save_handler = SAVE[format.upper()] + + created = False + if open_fp: + created = not os.path.exists(filename) + if params.get("append", False): + # Open also for reading ("+"), because TIFF save_all + # writer needs to go back and edit the written data. + fp = builtins.open(filename, "r+b") + else: + fp = builtins.open(filename, "w+b") + + try: + save_handler(self, fp, filename) + except Exception: + if open_fp: + fp.close() + if created: + try: + os.remove(filename) + except PermissionError: + pass + raise + if open_fp: + fp.close() + + def seek(self, frame): + """ + Seeks to the given frame in this sequence file. If you seek + beyond the end of the sequence, the method raises an + ``EOFError`` exception. When a sequence file is opened, the + library automatically seeks to frame 0. + + See :py:meth:`~PIL.Image.Image.tell`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :param frame: Frame number, starting at 0. + :exception EOFError: If the call attempts to seek beyond the end + of the sequence. + """ + + # overridden by file handlers + if frame != 0: + raise EOFError + + def show(self, title=None): + """ + Displays this image. This method is mainly intended for debugging purposes. + + This method calls :py:func:`PIL.ImageShow.show` internally. You can use + :py:func:`PIL.ImageShow.register` to override its default behaviour. + + The image is first saved to a temporary file. By default, it will be in + PNG format. + + On Unix, the image is then opened using the **xdg-open**, **display**, + **gm**, **eog** or **xv** utility, depending on which one can be found. + + On macOS, the image is opened with the native Preview application. + + On Windows, the image is opened with the standard PNG display utility. + + :param title: Optional title to use for the image window, where possible. + """ + + _show(self, title=title) + + def split(self): + """ + Split this image into individual bands. This method returns a + tuple of individual image bands from an image. For example, + splitting an "RGB" image creates three new images each + containing a copy of one of the original bands (red, green, + blue). + + If you need only one band, :py:meth:`~PIL.Image.Image.getchannel` + method can be more convenient and faster. + + :returns: A tuple containing bands. + """ + + self.load() + if self.im.bands == 1: + ims = [self.copy()] + else: + ims = map(self._new, self.im.split()) + return tuple(ims) + + def getchannel(self, channel): + """ + Returns an image containing a single channel of the source image. + + :param channel: What channel to return. Could be index + (0 for "R" channel of "RGB") or channel name + ("A" for alpha channel of "RGBA"). + :returns: An image in "L" mode. + + .. versionadded:: 4.3.0 + """ + self.load() + + if isinstance(channel, str): + try: + channel = self.getbands().index(channel) + except ValueError as e: + msg = f'The image has no channel "{channel}"' + raise ValueError(msg) from e + + return self._new(self.im.getband(channel)) + + def tell(self): + """ + Returns the current frame number. See :py:meth:`~PIL.Image.Image.seek`. + + If defined, :attr:`~PIL.Image.Image.n_frames` refers to the + number of available frames. + + :returns: Frame number, starting with 0. + """ + return 0 + + def thumbnail(self, size, resample=Resampling.BICUBIC, reducing_gap=2.0): + """ + Make this image into a thumbnail. This method modifies the + image to contain a thumbnail version of itself, no larger than + the given size. This method calculates an appropriate thumbnail + size to preserve the aspect of the image, calls the + :py:meth:`~PIL.Image.Image.draft` method to configure the file reader + (where applicable), and finally resizes the image. + + Note that this function modifies the :py:class:`~PIL.Image.Image` + object in place. If you need to use the full resolution image as well, + apply this method to a :py:meth:`~PIL.Image.Image.copy` of the original + image. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param resample: Optional resampling filter. This can be one + of :py:data:`Resampling.NEAREST`, :py:data:`Resampling.BOX`, + :py:data:`Resampling.BILINEAR`, :py:data:`Resampling.HAMMING`, + :py:data:`Resampling.BICUBIC` or :py:data:`Resampling.LANCZOS`. + If omitted, it defaults to :py:data:`Resampling.BICUBIC`. + (was :py:data:`Resampling.NEAREST` prior to version 2.5.0). + See: :ref:`concept-filters`. + :param reducing_gap: Apply optimization by resizing the image + in two steps. First, reducing the image by integer times + using :py:meth:`~PIL.Image.Image.reduce` or + :py:meth:`~PIL.Image.Image.draft` for JPEG images. + Second, resizing using regular resampling. The last step + changes size no less than by ``reducing_gap`` times. + ``reducing_gap`` may be None (no first step is performed) + or should be greater than 1.0. The bigger ``reducing_gap``, + the closer the result to the fair resampling. + The smaller ``reducing_gap``, the faster resizing. + With ``reducing_gap`` greater or equal to 3.0, the result is + indistinguishable from fair resampling in most cases. + The default value is 2.0 (very close to fair resampling + while still being faster in many cases). + :returns: None + """ + + provided_size = tuple(map(math.floor, size)) + + def preserve_aspect_ratio(): + def round_aspect(number, key): + return max(min(math.floor(number), math.ceil(number), key=key), 1) + + x, y = provided_size + if x >= self.width and y >= self.height: + return + + aspect = self.width / self.height + if x / y >= aspect: + x = round_aspect(y * aspect, key=lambda n: abs(aspect - n / y)) + else: + y = round_aspect( + x / aspect, key=lambda n: 0 if n == 0 else abs(aspect - x / n) + ) + return x, y + + box = None + if reducing_gap is not None: + size = preserve_aspect_ratio() + if size is None: + return + + res = self.draft(None, (size[0] * reducing_gap, size[1] * reducing_gap)) + if res is not None: + box = res[1] + if box is None: + self.load() + + # load() may have changed the size of the image + size = preserve_aspect_ratio() + if size is None: + return + + if self.size != size: + im = self.resize(size, resample, box=box, reducing_gap=reducing_gap) + + self.im = im.im + self._size = size + self.mode = self.im.mode + + self.readonly = 0 + self.pyaccess = None + + # FIXME: the different transform methods need further explanation + # instead of bloating the method docs, add a separate chapter. + def transform( + self, + size, + method, + data=None, + resample=Resampling.NEAREST, + fill=1, + fillcolor=None, + ): + """ + Transforms this image. This method creates a new image with the + given size, and the same mode as the original, and copies data + to the new image using the given transform. + + :param size: The output size in pixels, as a 2-tuple: + (width, height). + :param method: The transformation method. This is one of + :py:data:`Transform.EXTENT` (cut out a rectangular subregion), + :py:data:`Transform.AFFINE` (affine transform), + :py:data:`Transform.PERSPECTIVE` (perspective transform), + :py:data:`Transform.QUAD` (map a quadrilateral to a rectangle), or + :py:data:`Transform.MESH` (map a number of source quadrilaterals + in one operation). + + It may also be an :py:class:`~PIL.Image.ImageTransformHandler` + object:: + + class Example(Image.ImageTransformHandler): + def transform(self, size, data, resample, fill=1): + # Return result + + It may also be an object with a ``method.getdata`` method + that returns a tuple supplying new ``method`` and ``data`` values:: + + class Example: + def getdata(self): + method = Image.Transform.EXTENT + data = (0, 0, 100, 100) + return method, data + :param data: Extra data to the transformation method. + :param resample: Optional resampling filter. It can be one of + :py:data:`Resampling.NEAREST` (use nearest neighbour), + :py:data:`Resampling.BILINEAR` (linear interpolation in a 2x2 + environment), or :py:data:`Resampling.BICUBIC` (cubic spline + interpolation in a 4x4 environment). If omitted, or if the image + has mode "1" or "P", it is set to :py:data:`Resampling.NEAREST`. + See: :ref:`concept-filters`. + :param fill: If ``method`` is an + :py:class:`~PIL.Image.ImageTransformHandler` object, this is one of + the arguments passed to it. Otherwise, it is unused. + :param fillcolor: Optional fill color for the area outside the + transform in the output image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if self.mode in ("LA", "RGBA") and resample != Resampling.NEAREST: + return ( + self.convert({"LA": "La", "RGBA": "RGBa"}[self.mode]) + .transform(size, method, data, resample, fill, fillcolor) + .convert(self.mode) + ) + + if isinstance(method, ImageTransformHandler): + return method.transform(size, self, resample=resample, fill=fill) + + if hasattr(method, "getdata"): + # compatibility w. old-style transform objects + method, data = method.getdata() + + if data is None: + msg = "missing method data" + raise ValueError(msg) + + im = new(self.mode, size, fillcolor) + if self.mode == "P" and self.palette: + im.palette = self.palette.copy() + im.info = self.info.copy() + if method == Transform.MESH: + # list of quads + for box, quad in data: + im.__transformer( + box, self, Transform.QUAD, quad, resample, fillcolor is None + ) + else: + im.__transformer( + (0, 0) + size, self, method, data, resample, fillcolor is None + ) + + return im + + def __transformer( + self, box, image, method, data, resample=Resampling.NEAREST, fill=1 + ): + w = box[2] - box[0] + h = box[3] - box[1] + + if method == Transform.AFFINE: + data = data[:6] + + elif method == Transform.EXTENT: + # convert extent to an affine transform + x0, y0, x1, y1 = data + xs = (x1 - x0) / w + ys = (y1 - y0) / h + method = Transform.AFFINE + data = (xs, 0, x0, 0, ys, y0) + + elif method == Transform.PERSPECTIVE: + data = data[:8] + + elif method == Transform.QUAD: + # quadrilateral warp. data specifies the four corners + # given as NW, SW, SE, and NE. + nw = data[:2] + sw = data[2:4] + se = data[4:6] + ne = data[6:8] + x0, y0 = nw + As = 1.0 / w + At = 1.0 / h + data = ( + x0, + (ne[0] - x0) * As, + (sw[0] - x0) * At, + (se[0] - sw[0] - ne[0] + x0) * As * At, + y0, + (ne[1] - y0) * As, + (sw[1] - y0) * At, + (se[1] - sw[1] - ne[1] + y0) * As * At, + ) + + else: + msg = "unknown transformation method" + raise ValueError(msg) + + if resample not in ( + Resampling.NEAREST, + Resampling.BILINEAR, + Resampling.BICUBIC, + ): + if resample in (Resampling.BOX, Resampling.HAMMING, Resampling.LANCZOS): + msg = { + Resampling.BOX: "Image.Resampling.BOX", + Resampling.HAMMING: "Image.Resampling.HAMMING", + Resampling.LANCZOS: "Image.Resampling.LANCZOS", + }[resample] + f" ({resample}) cannot be used." + else: + msg = f"Unknown resampling filter ({resample})." + + filters = [ + f"{filter[1]} ({filter[0]})" + for filter in ( + (Resampling.NEAREST, "Image.Resampling.NEAREST"), + (Resampling.BILINEAR, "Image.Resampling.BILINEAR"), + (Resampling.BICUBIC, "Image.Resampling.BICUBIC"), + ) + ] + msg += " Use " + ", ".join(filters[:-1]) + " or " + filters[-1] + raise ValueError(msg) + + image.load() + + self.load() + + if image.mode in ("1", "P"): + resample = Resampling.NEAREST + + self.im.transform2(box, image.im, method, data, resample, fill) + + def transpose(self, method): + """ + Transpose image (flip or rotate in 90 degree steps) + + :param method: One of :py:data:`Transpose.FLIP_LEFT_RIGHT`, + :py:data:`Transpose.FLIP_TOP_BOTTOM`, :py:data:`Transpose.ROTATE_90`, + :py:data:`Transpose.ROTATE_180`, :py:data:`Transpose.ROTATE_270`, + :py:data:`Transpose.TRANSPOSE` or :py:data:`Transpose.TRANSVERSE`. + :returns: Returns a flipped or rotated copy of this image. + """ + + self.load() + return self._new(self.im.transpose(method)) + + def effect_spread(self, distance): + """ + Randomly spread pixels in an image. + + :param distance: Distance to spread pixels. + """ + self.load() + return self._new(self.im.effect_spread(distance)) + + def toqimage(self): + """Returns a QImage copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqimage(self) + + def toqpixmap(self): + """Returns a QPixmap copy of this image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.toqpixmap(self) + + +# -------------------------------------------------------------------- +# Abstract handlers. + + +class ImagePointHandler: + """ + Used as a mixin by point transforms + (for use with :py:meth:`~PIL.Image.Image.point`) + """ + + pass + + +class ImageTransformHandler: + """ + Used as a mixin by geometry transforms + (for use with :py:meth:`~PIL.Image.Image.transform`) + """ + + pass + + +# -------------------------------------------------------------------- +# Factories + +# +# Debugging + + +def _wedge(): + """Create greyscale wedge (for debugging only)""" + + return Image()._new(core.wedge("L")) + + +def _check_size(size): + """ + Common check to enforce type and sanity check on size tuples + + :param size: Should be a 2 tuple of (width, height) + :returns: True, or raises a ValueError + """ + + if not isinstance(size, (list, tuple)): + msg = "Size must be a tuple" + raise ValueError(msg) + if len(size) != 2: + msg = "Size must be a tuple of length 2" + raise ValueError(msg) + if size[0] < 0 or size[1] < 0: + msg = "Width and height must be >= 0" + raise ValueError(msg) + + return True + + +def new(mode, size, color=0): + """ + Creates a new image with the given mode and size. + + :param mode: The mode to use for the new image. See: + :ref:`concept-modes`. + :param size: A 2-tuple, containing (width, height) in pixels. + :param color: What color to use for the image. Default is black. + If given, this should be a single integer or floating point value + for single-band modes, and a tuple for multi-band modes (one value + per band). When creating RGB or HSV images, you can also use color + strings as supported by the ImageColor module. If the color is + None, the image is not initialised. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + if color is None: + # don't initialize + return Image()._new(core.new(mode, size)) + + if isinstance(color, str): + # css3-style specifier + + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + + im = Image() + if mode == "P" and isinstance(color, (list, tuple)) and len(color) in [3, 4]: + # RGB or RGBA value for a P image + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette() + color = im.palette.getcolor(color) + return im._new(core.fill(mode, size, color)) + + +def frombytes(mode, size, data, decoder_name="raw", *args): + """ + Creates a copy of an image memory from pixel data in a buffer. + + In its simplest form, this function takes three arguments + (mode, size, and unpacked pixel data). + + You can also use any pixel decoder supported by PIL. For more + information on available decoders, see the section + :ref:`Writing Your Own File Codec `. + + Note that this function decodes pixel data only, not entire images. + If you have an entire image in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load + it. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A byte buffer containing raw data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw" and args == (): + args = mode + + im = new(mode, size) + im.frombytes(data, decoder_name, args) + return im + + +def frombuffer(mode, size, data, decoder_name="raw", *args): + """ + Creates an image memory referencing pixel data in a byte buffer. + + This function is similar to :py:func:`~PIL.Image.frombytes`, but uses data + in the byte buffer, where possible. This means that changes to the + original buffer object are reflected in this image). Not all modes can + share memory; supported modes include "L", "RGBX", "RGBA", and "CMYK". + + Note that this function decodes pixel data only, not entire images. + If you have an entire image file in a string, wrap it in a + :py:class:`~io.BytesIO` object, and use :py:func:`~PIL.Image.open` to load it. + + In the current version, the default parameters used for the "raw" decoder + differs from that used for :py:func:`~PIL.Image.frombytes`. This is a + bug, and will probably be fixed in a future release. The current release + issues a warning if you do this; to disable the warning, you should provide + the full set of parameters. See below for details. + + :param mode: The image mode. See: :ref:`concept-modes`. + :param size: The image size. + :param data: A bytes or other buffer object containing raw + data for the given mode. + :param decoder_name: What decoder to use. + :param args: Additional parameters for the given decoder. For the + default encoder ("raw"), it's recommended that you provide the + full set of parameters:: + + frombuffer(mode, size, data, "raw", mode, 0, 1) + + :returns: An :py:class:`~PIL.Image.Image` object. + + .. versionadded:: 1.1.4 + """ + + _check_size(size) + + # may pass tuple instead of argument list + if len(args) == 1 and isinstance(args[0], tuple): + args = args[0] + + if decoder_name == "raw": + if args == (): + args = mode, 0, 1 + if args[0] in _MAPMODES: + im = new(mode, (1, 1)) + im = im._new(core.map_buffer(data, size, decoder_name, 0, args)) + if mode == "P": + from . import ImagePalette + + im.palette = ImagePalette.ImagePalette("RGB", im.im.getpalette("RGB")) + im.readonly = 1 + return im + + return frombytes(mode, size, data, decoder_name, args) + + +def fromarray(obj, mode=None): + """ + Creates an image memory from an object exporting the array interface + (using the buffer protocol):: + + from PIL import Image + import numpy as np + a = np.zeros((5, 5)) + im = Image.fromarray(a) + + If ``obj`` is not contiguous, then the ``tobytes`` method is called + and :py:func:`~PIL.Image.frombuffer` is used. + + In the case of NumPy, be aware that Pillow modes do not always correspond + to NumPy dtypes. Pillow modes only offer 1-bit pixels, 8-bit pixels, + 32-bit signed integer pixels, and 32-bit floating point pixels. + + Pillow images can also be converted to arrays:: + + from PIL import Image + import numpy as np + im = Image.open("hopper.jpg") + a = np.asarray(im) + + When converting Pillow images to arrays however, only pixel values are + transferred. This means that P and PA mode images will lose their palette. + + :param obj: Object with array interface + :param mode: Optional mode to use when reading ``obj``. Will be determined from + type if ``None``. + + This will not be used to convert the data after reading, but will be used to + change how the data is read:: + + from PIL import Image + import numpy as np + a = np.full((1, 1), 300) + im = Image.fromarray(a, mode="L") + im.getpixel((0, 0)) # 44 + im = Image.fromarray(a, mode="RGB") + im.getpixel((0, 0)) # (44, 1, 0) + + See: :ref:`concept-modes` for general information about modes. + :returns: An image object. + + .. versionadded:: 1.1.6 + """ + arr = obj.__array_interface__ + shape = arr["shape"] + ndim = len(shape) + strides = arr.get("strides", None) + if mode is None: + try: + typekey = (1, 1) + shape[2:], arr["typestr"] + except KeyError as e: + msg = "Cannot handle this data type" + raise TypeError(msg) from e + try: + mode, rawmode = _fromarray_typemap[typekey] + except KeyError as e: + msg = "Cannot handle this data type: %s, %s" % typekey + raise TypeError(msg) from e + else: + rawmode = mode + if mode in ["1", "L", "I", "P", "F"]: + ndmax = 2 + elif mode == "RGB": + ndmax = 3 + else: + ndmax = 4 + if ndim > ndmax: + msg = f"Too many dimensions: {ndim} > {ndmax}." + raise ValueError(msg) + + size = 1 if ndim == 1 else shape[1], shape[0] + if strides is not None: + if hasattr(obj, "tobytes"): + obj = obj.tobytes() + else: + obj = obj.tostring() + + return frombuffer(mode, size, obj, "raw", rawmode, 0, 1) + + +def fromqimage(im): + """Creates an image instance from a QImage image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.fromqimage(im) + + +def fromqpixmap(im): + """Creates an image instance from a QPixmap image""" + from . import ImageQt + + if not ImageQt.qt_is_installed: + msg = "Qt bindings are not installed" + raise ImportError(msg) + return ImageQt.fromqpixmap(im) + + +_fromarray_typemap = { + # (shape, typestr) => mode, rawmode + # first two members of shape are set to one + ((1, 1), "|b1"): ("1", "1;8"), + ((1, 1), "|u1"): ("L", "L"), + ((1, 1), "|i1"): ("I", "I;8"), + ((1, 1), "u2"): ("I", "I;16B"), + ((1, 1), "i2"): ("I", "I;16BS"), + ((1, 1), "u4"): ("I", "I;32B"), + ((1, 1), "i4"): ("I", "I;32BS"), + ((1, 1), "f4"): ("F", "F;32BF"), + ((1, 1), "f8"): ("F", "F;64BF"), + ((1, 1, 2), "|u1"): ("LA", "LA"), + ((1, 1, 3), "|u1"): ("RGB", "RGB"), + ((1, 1, 4), "|u1"): ("RGBA", "RGBA"), + # shortcuts: + ((1, 1), _ENDIAN + "i4"): ("I", "I"), + ((1, 1), _ENDIAN + "f4"): ("F", "F"), +} + + +def _decompression_bomb_check(size): + if MAX_IMAGE_PIXELS is None: + return + + pixels = max(1, size[0]) * max(1, size[1]) + + if pixels > 2 * MAX_IMAGE_PIXELS: + msg = ( + f"Image size ({pixels} pixels) exceeds limit of {2 * MAX_IMAGE_PIXELS} " + "pixels, could be decompression bomb DOS attack." + ) + raise DecompressionBombError(msg) + + if pixels > MAX_IMAGE_PIXELS: + warnings.warn( + f"Image size ({pixels} pixels) exceeds limit of {MAX_IMAGE_PIXELS} pixels, " + "could be decompression bomb DOS attack.", + DecompressionBombWarning, + ) + + +def open(fp, mode="r", formats=None): + """ + Opens and identifies the given image file. + + This is a lazy operation; this function identifies the file, but + the file remains open and the actual image data is not read from + the file until you try to process the data (or call the + :py:meth:`~PIL.Image.Image.load` method). See + :py:func:`~PIL.Image.new`. See :ref:`file-handling`. + + :param fp: A filename (string), pathlib.Path object or a file object. + The file object must implement ``file.read``, + ``file.seek``, and ``file.tell`` methods, + and be opened in binary mode. The file object will also seek to zero + before reading. + :param mode: The mode. If given, this argument must be "r". + :param formats: A list or tuple of formats to attempt to load the file in. + This can be used to restrict the set of formats checked. + Pass ``None`` to try all supported formats. You can print the set of + available formats by running ``python3 -m PIL`` or using + the :py:func:`PIL.features.pilinfo` function. + :returns: An :py:class:`~PIL.Image.Image` object. + :exception FileNotFoundError: If the file cannot be found. + :exception PIL.UnidentifiedImageError: If the image cannot be opened and + identified. + :exception ValueError: If the ``mode`` is not "r", or if a ``StringIO`` + instance is used for ``fp``. + :exception TypeError: If ``formats`` is not ``None``, a list or a tuple. + """ + + if mode != "r": + msg = f"bad mode {repr(mode)}" + raise ValueError(msg) + elif isinstance(fp, io.StringIO): + msg = ( + "StringIO cannot be used to open an image. " + "Binary data must be used instead." + ) + raise ValueError(msg) + + if formats is None: + formats = ID + elif not isinstance(formats, (list, tuple)): + msg = "formats must be a list or tuple" + raise TypeError(msg) + + exclusive_fp = False + filename = "" + if isinstance(fp, Path): + filename = str(fp.resolve()) + elif is_path(fp): + filename = fp + + if filename: + fp = builtins.open(filename, "rb") + exclusive_fp = True + + try: + fp.seek(0) + except (AttributeError, io.UnsupportedOperation): + fp = io.BytesIO(fp.read()) + exclusive_fp = True + + prefix = fp.read(16) + + preinit() + + accept_warnings = [] + + def _open_core(fp, filename, prefix, formats): + for i in formats: + i = i.upper() + if i not in OPEN: + init() + try: + factory, accept = OPEN[i] + result = not accept or accept(prefix) + if type(result) in [str, bytes]: + accept_warnings.append(result) + elif result: + fp.seek(0) + im = factory(fp, filename) + _decompression_bomb_check(im.size) + return im + except (SyntaxError, IndexError, TypeError, struct.error): + # Leave disabled by default, spams the logs with image + # opening failures that are entirely expected. + # logger.debug("", exc_info=True) + continue + except BaseException: + if exclusive_fp: + fp.close() + raise + return None + + im = _open_core(fp, filename, prefix, formats) + + if im is None and formats is ID: + checked_formats = formats.copy() + if init(): + im = _open_core( + fp, + filename, + prefix, + tuple(format for format in formats if format not in checked_formats), + ) + + if im: + im._exclusive_fp = exclusive_fp + return im + + if exclusive_fp: + fp.close() + for message in accept_warnings: + warnings.warn(message) + msg = "cannot identify image file %r" % (filename if filename else fp) + raise UnidentifiedImageError(msg) + + +# +# Image processing. + + +def alpha_composite(im1, im2): + """ + Alpha composite im2 over im1. + + :param im1: The first image. Must have mode RGBA. + :param im2: The second image. Must have mode RGBA, and the same size as + the first image. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.alpha_composite(im1.im, im2.im)) + + +def blend(im1, im2, alpha): + """ + Creates a new image by interpolating between two input images, using + a constant alpha:: + + out = image1 * (1.0 - alpha) + image2 * alpha + + :param im1: The first image. + :param im2: The second image. Must have the same mode and size as + the first image. + :param alpha: The interpolation alpha factor. If alpha is 0.0, a + copy of the first image is returned. If alpha is 1.0, a copy of + the second image is returned. There are no restrictions on the + alpha value. If necessary, the result is clipped to fit into + the allowed output range. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + im1.load() + im2.load() + return im1._new(core.blend(im1.im, im2.im, alpha)) + + +def composite(image1, image2, mask): + """ + Create composite image by blending images using a transparency mask. + + :param image1: The first image. + :param image2: The second image. Must have the same mode and + size as the first image. + :param mask: A mask image. This image can have mode + "1", "L", or "RGBA", and must have the same size as the + other two images. + """ + + image = image2.copy() + image.paste(image1, None, mask) + return image + + +def eval(image, *args): + """ + Applies the function (which should take one argument) to each pixel + in the given image. If the image has more than one band, the same + function is applied to each band. Note that the function is + evaluated once for each possible pixel value, so you cannot use + random components or other generators. + + :param image: The input image. + :param function: A function object, taking one integer argument. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + return image.point(args[0]) + + +def merge(mode, bands): + """ + Merge a set of single band images into a new multiband image. + + :param mode: The mode to use for the output image. See: + :ref:`concept-modes`. + :param bands: A sequence containing one single-band image for + each band in the output image. All bands must have the + same size. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + + if getmodebands(mode) != len(bands) or "*" in mode: + msg = "wrong number of bands" + raise ValueError(msg) + for band in bands[1:]: + if band.mode != getmodetype(mode): + msg = "mode mismatch" + raise ValueError(msg) + if band.size != bands[0].size: + msg = "size mismatch" + raise ValueError(msg) + for band in bands: + band.load() + return bands[0]._new(core.merge(mode, *[b.im for b in bands])) + + +# -------------------------------------------------------------------- +# Plugin registry + + +def register_open(id, factory, accept=None): + """ + Register an image file plugin. This function should not be used + in application code. + + :param id: An image format identifier. + :param factory: An image file factory method. + :param accept: An optional function that can be used to quickly + reject images having another format. + """ + id = id.upper() + if id not in ID: + ID.append(id) + OPEN[id] = factory, accept + + +def register_mime(id, mimetype): + """ + Registers an image MIME type. This function should not be used + in application code. + + :param id: An image format identifier. + :param mimetype: The image MIME type for this format. + """ + MIME[id.upper()] = mimetype + + +def register_save(id, driver): + """ + Registers an image save function. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE[id.upper()] = driver + + +def register_save_all(id, driver): + """ + Registers an image function to save all the frames + of a multiframe format. This function should not be + used in application code. + + :param id: An image format identifier. + :param driver: A function to save images in this format. + """ + SAVE_ALL[id.upper()] = driver + + +def register_extension(id, extension): + """ + Registers an image extension. This function should not be + used in application code. + + :param id: An image format identifier. + :param extension: An extension used for this format. + """ + EXTENSION[extension.lower()] = id.upper() + + +def register_extensions(id, extensions): + """ + Registers image extensions. This function should not be + used in application code. + + :param id: An image format identifier. + :param extensions: A list of extensions used for this format. + """ + for extension in extensions: + register_extension(id, extension) + + +def registered_extensions(): + """ + Returns a dictionary containing all file extensions belonging + to registered plugins + """ + init() + return EXTENSION + + +def register_decoder(name, decoder): + """ + Registers an image decoder. This function should not be + used in application code. + + :param name: The name of the decoder + :param decoder: A callable(mode, args) that returns an + ImageFile.PyDecoder object + + .. versionadded:: 4.1.0 + """ + DECODERS[name] = decoder + + +def register_encoder(name, encoder): + """ + Registers an image encoder. This function should not be + used in application code. + + :param name: The name of the encoder + :param encoder: A callable(mode, args) that returns an + ImageFile.PyEncoder object + + .. versionadded:: 4.1.0 + """ + ENCODERS[name] = encoder + + +# -------------------------------------------------------------------- +# Simple display support. + + +def _show(image, **options): + from . import ImageShow + + ImageShow.show(image, **options) + + +# -------------------------------------------------------------------- +# Effects + + +def effect_mandelbrot(size, extent, quality): + """ + Generate a Mandelbrot set covering the given extent. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param extent: The extent to cover, as a 4-tuple: + (x0, y0, x1, y1). + :param quality: Quality. + """ + return Image()._new(core.effect_mandelbrot(size, extent, quality)) + + +def effect_noise(size, sigma): + """ + Generate Gaussian noise centered around 128. + + :param size: The requested size in pixels, as a 2-tuple: + (width, height). + :param sigma: Standard deviation of noise. + """ + return Image()._new(core.effect_noise(size, sigma)) + + +def linear_gradient(mode): + """ + Generate 256x256 linear gradient from black to white, top to bottom. + + :param mode: Input mode. + """ + return Image()._new(core.linear_gradient(mode)) + + +def radial_gradient(mode): + """ + Generate 256x256 radial gradient from black to white, centre to edge. + + :param mode: Input mode. + """ + return Image()._new(core.radial_gradient(mode)) + + +# -------------------------------------------------------------------- +# Resources + + +def _apply_env_variables(env=None): + if env is None: + env = os.environ + + for var_name, setter in [ + ("PILLOW_ALIGNMENT", core.set_alignment), + ("PILLOW_BLOCK_SIZE", core.set_block_size), + ("PILLOW_BLOCKS_MAX", core.set_blocks_max), + ]: + if var_name not in env: + continue + + var = env[var_name].lower() + + units = 1 + for postfix, mul in [("k", 1024), ("m", 1024 * 1024)]: + if var.endswith(postfix): + units = mul + var = var[: -len(postfix)] + + try: + var = int(var) * units + except ValueError: + warnings.warn(f"{var_name} is not int") + continue + + try: + setter(var) + except ValueError as e: + warnings.warn(f"{var_name}: {e}") + + +_apply_env_variables() +atexit.register(core.clear_cache) + + +class Exif(MutableMapping): + """ + This class provides read and write access to EXIF image data:: + + from PIL import Image + im = Image.open("exif.png") + exif = im.getexif() # Returns an instance of this class + + Information can be read and written, iterated over or deleted:: + + print(exif[274]) # 1 + exif[274] = 2 + for k, v in exif.items(): + print("Tag", k, "Value", v) # Tag 274 Value 2 + del exif[274] + + To access information beyond IFD0, :py:meth:`~PIL.Image.Exif.get_ifd` + returns a dictionary:: + + from PIL import ExifTags + im = Image.open("exif_gps.jpg") + exif = im.getexif() + gps_ifd = exif.get_ifd(ExifTags.IFD.GPSInfo) + print(gps_ifd) + + Other IFDs include ``ExifTags.IFD.Exif``, ``ExifTags.IFD.Makernote``, + ``ExifTags.IFD.Interop`` and ``ExifTags.IFD.IFD1``. + + :py:mod:`~PIL.ExifTags` also has enum classes to provide names for data:: + + print(exif[ExifTags.Base.Software]) # PIL + print(gps_ifd[ExifTags.GPS.GPSDateStamp]) # 1999:99:99 99:99:99 + """ + + endian = None + bigtiff = False + + def __init__(self): + self._data = {} + self._hidden_data = {} + self._ifds = {} + self._info = None + self._loaded_exif = None + + def _fixup(self, value): + try: + if len(value) == 1 and isinstance(value, tuple): + return value[0] + except Exception: + pass + return value + + def _fixup_dict(self, src_dict): + # Helper function + # returns a dict with any single item tuples/lists as individual values + return {k: self._fixup(v) for k, v in src_dict.items()} + + def _get_ifd_dict(self, offset): + try: + # an offset pointer to the location of the nested embedded IFD. + # It should be a long, but may be corrupted. + self.fp.seek(offset) + except (KeyError, TypeError): + pass + else: + from . import TiffImagePlugin + + info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + info.load(self.fp) + return self._fixup_dict(info) + + def _get_head(self): + version = b"\x2B" if self.bigtiff else b"\x2A" + if self.endian == "<": + head = b"II" + version + b"\x00" + o32le(8) + else: + head = b"MM\x00" + version + o32be(8) + if self.bigtiff: + head += o32le(8) if self.endian == "<" else o32be(8) + head += b"\x00\x00\x00\x00" + return head + + def load(self, data): + # Extract EXIF information. This is highly experimental, + # and is likely to be replaced with something better in a future + # version. + + # The EXIF record consists of a TIFF file embedded in a JPEG + # application marker (!). + if data == self._loaded_exif: + return + self._loaded_exif = data + self._data.clear() + self._hidden_data.clear() + self._ifds.clear() + if data and data.startswith(b"Exif\x00\x00"): + data = data[6:] + if not data: + self._info = None + return + + self.fp = io.BytesIO(data) + self.head = self.fp.read(8) + # process dictionary + from . import TiffImagePlugin + + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + self.endian = self._info._endian + self.fp.seek(self._info.next) + self._info.load(self.fp) + + def load_from_fp(self, fp, offset=None): + self._loaded_exif = None + self._data.clear() + self._hidden_data.clear() + self._ifds.clear() + + # process dictionary + from . import TiffImagePlugin + + self.fp = fp + if offset is not None: + self.head = self._get_head() + else: + self.head = self.fp.read(8) + self._info = TiffImagePlugin.ImageFileDirectory_v2(self.head) + if self.endian is None: + self.endian = self._info._endian + if offset is None: + offset = self._info.next + self.fp.seek(offset) + self._info.load(self.fp) + + def _get_merged_dict(self): + merged_dict = dict(self) + + # get EXIF extension + if ExifTags.IFD.Exif in self: + ifd = self._get_ifd_dict(self[ExifTags.IFD.Exif]) + if ifd: + merged_dict.update(ifd) + + # GPS + if ExifTags.IFD.GPSInfo in self: + merged_dict[ExifTags.IFD.GPSInfo] = self._get_ifd_dict( + self[ExifTags.IFD.GPSInfo] + ) + + return merged_dict + + def tobytes(self, offset=8): + from . import TiffImagePlugin + + head = self._get_head() + ifd = TiffImagePlugin.ImageFileDirectory_v2(ifh=head) + for tag, value in self.items(): + if tag in [ + ExifTags.IFD.Exif, + ExifTags.IFD.GPSInfo, + ] and not isinstance(value, dict): + value = self.get_ifd(tag) + if ( + tag == ExifTags.IFD.Exif + and ExifTags.IFD.Interop in value + and not isinstance(value[ExifTags.IFD.Interop], dict) + ): + value = value.copy() + value[ExifTags.IFD.Interop] = self.get_ifd(ExifTags.IFD.Interop) + ifd[tag] = value + return b"Exif\x00\x00" + head + ifd.tobytes(offset) + + def get_ifd(self, tag): + if tag not in self._ifds: + if tag == ExifTags.IFD.IFD1: + if self._info is not None and self._info.next != 0: + self._ifds[tag] = self._get_ifd_dict(self._info.next) + elif tag in [ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo]: + offset = self._hidden_data.get(tag, self.get(tag)) + if offset is not None: + self._ifds[tag] = self._get_ifd_dict(offset) + elif tag in [ExifTags.IFD.Interop, ExifTags.IFD.Makernote]: + if ExifTags.IFD.Exif not in self._ifds: + self.get_ifd(ExifTags.IFD.Exif) + tag_data = self._ifds[ExifTags.IFD.Exif][tag] + if tag == ExifTags.IFD.Makernote: + from .TiffImagePlugin import ImageFileDirectory_v2 + + if tag_data[:8] == b"FUJIFILM": + ifd_offset = i32le(tag_data, 8) + ifd_data = tag_data[ifd_offset:] + + makernote = {} + for i in range(0, struct.unpack(" 4: + (offset,) = struct.unpack("H", tag_data[:2])[0]): + ifd_tag, typ, count, data = struct.unpack( + ">HHL4s", tag_data[i * 12 + 2 : (i + 1) * 12 + 2] + ) + if ifd_tag == 0x1101: + # CameraInfo + (offset,) = struct.unpack(">L", data) + self.fp.seek(offset) + + camerainfo = {"ModelID": self.fp.read(4)} + + self.fp.read(4) + # Seconds since 2000 + camerainfo["TimeStamp"] = i32le(self.fp.read(12)) + + self.fp.read(4) + camerainfo["InternalSerialNumber"] = self.fp.read(4) + + self.fp.read(12) + parallax = self.fp.read(4) + handler = ImageFileDirectory_v2._load_dispatch[ + TiffTags.FLOAT + ][1] + camerainfo["Parallax"] = handler( + ImageFileDirectory_v2(), parallax, False + ) + + self.fp.read(4) + camerainfo["Category"] = self.fp.read(2) + + makernote = {0x1101: dict(self._fixup_dict(camerainfo))} + self._ifds[tag] = makernote + else: + # Interop + self._ifds[tag] = self._get_ifd_dict(tag_data) + ifd = self._ifds.get(tag, {}) + if tag == ExifTags.IFD.Exif and self._hidden_data: + ifd = { + k: v + for (k, v) in ifd.items() + if k not in (ExifTags.IFD.Interop, ExifTags.IFD.Makernote) + } + return ifd + + def hide_offsets(self): + for tag in (ExifTags.IFD.Exif, ExifTags.IFD.GPSInfo): + if tag in self: + self._hidden_data[tag] = self[tag] + del self[tag] + + def __str__(self): + if self._info is not None: + # Load all keys into self._data + for tag in self._info: + self[tag] + + return str(self._data) + + def __len__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return len(keys) + + def __getitem__(self, tag): + if self._info is not None and tag not in self._data and tag in self._info: + self._data[tag] = self._fixup(self._info[tag]) + del self._info[tag] + return self._data[tag] + + def __contains__(self, tag): + return tag in self._data or (self._info is not None and tag in self._info) + + def __setitem__(self, tag, value): + if self._info is not None and tag in self._info: + del self._info[tag] + self._data[tag] = value + + def __delitem__(self, tag): + if self._info is not None and tag in self._info: + del self._info[tag] + else: + del self._data[tag] + + def __iter__(self): + keys = set(self._data) + if self._info is not None: + keys.update(self._info) + return iter(keys) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageChops.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageChops.py new file mode 100644 index 0000000..7012003 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageChops.py @@ -0,0 +1,303 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard channel operations +# +# History: +# 1996-03-24 fl Created +# 1996-08-13 fl Added logical operations (for "1" images) +# 2000-10-12 fl Added offset method (from Image.py) +# +# Copyright (c) 1997-2000 by Secret Labs AB +# Copyright (c) 1996-2000 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +def constant(image, value): + """Fill a channel with a given grey level. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.new("L", image.size, value) + + +def duplicate(image): + """Copy a channel. Alias for :py:meth:`PIL.Image.Image.copy`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return image.copy() + + +def invert(image): + """ + Invert an image (channel). :: + + out = MAX - image + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image.load() + return image._new(image.im.chop_invert()) + + +def lighter(image1, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the lighter values. :: + + out = max(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_lighter(image2.im)) + + +def darker(image1, image2): + """ + Compares the two images, pixel by pixel, and returns a new image containing + the darker values. :: + + out = min(image1, image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_darker(image2.im)) + + +def difference(image1, image2): + """ + Returns the absolute value of the pixel-by-pixel difference between the two + images. :: + + out = abs(image1 - image2) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_difference(image2.im)) + + +def multiply(image1, image2): + """ + Superimposes two images on top of each other. + + If you multiply an image with a solid black image, the result is black. If + you multiply with a solid white image, the image is unaffected. :: + + out = image1 * image2 / MAX + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_multiply(image2.im)) + + +def screen(image1, image2): + """ + Superimposes two inverted images on top of each other. :: + + out = MAX - ((MAX - image1) * (MAX - image2) / MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_screen(image2.im)) + + +def soft_light(image1, image2): + """ + Superimposes two images on top of each other using the Soft Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_soft_light(image2.im)) + + +def hard_light(image1, image2): + """ + Superimposes two images on top of each other using the Hard Light algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_hard_light(image2.im)) + + +def overlay(image1, image2): + """ + Superimposes two images on top of each other using the Overlay algorithm + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_overlay(image2.im)) + + +def add(image1, image2, scale=1.0, offset=0): + """ + Adds two images, dividing the result by scale and adding the + offset. If omitted, scale defaults to 1.0, and offset to 0.0. :: + + out = ((image1 + image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add(image2.im, scale, offset)) + + +def subtract(image1, image2, scale=1.0, offset=0): + """ + Subtracts two images, dividing the result by scale and adding the offset. + If omitted, scale defaults to 1.0, and offset to 0.0. :: + + out = ((image1 - image2) / scale + offset) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract(image2.im, scale, offset)) + + +def add_modulo(image1, image2): + """Add two images, without clipping the result. :: + + out = ((image1 + image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_add_modulo(image2.im)) + + +def subtract_modulo(image1, image2): + """Subtract two images, without clipping the result. :: + + out = ((image1 - image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_subtract_modulo(image2.im)) + + +def logical_and(image1, image2): + """Logical AND between two images. + + Both of the images must have mode "1". If you would like to perform a + logical AND on an image with a mode other than "1", try + :py:meth:`~PIL.ImageChops.multiply` instead, using a black-and-white mask + as the second image. :: + + out = ((image1 and image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_and(image2.im)) + + +def logical_or(image1, image2): + """Logical OR between two images. + + Both of the images must have mode "1". :: + + out = ((image1 or image2) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_or(image2.im)) + + +def logical_xor(image1, image2): + """Logical XOR between two images. + + Both of the images must have mode "1". :: + + out = ((bool(image1) != bool(image2)) % MAX) + + :rtype: :py:class:`~PIL.Image.Image` + """ + + image1.load() + image2.load() + return image1._new(image1.im.chop_xor(image2.im)) + + +def blend(image1, image2, alpha): + """Blend images using constant transparency weight. Alias for + :py:func:`PIL.Image.blend`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.blend(image1, image2, alpha) + + +def composite(image1, image2, mask): + """Create composite using transparency mask. Alias for + :py:func:`PIL.Image.composite`. + + :rtype: :py:class:`~PIL.Image.Image` + """ + + return Image.composite(image1, image2, mask) + + +def offset(image, xoffset, yoffset=None): + """Returns a copy of the image where data has been offset by the given + distances. Data wraps around the edges. If ``yoffset`` is omitted, it + is assumed to be equal to ``xoffset``. + + :param image: Input image. + :param xoffset: The horizontal distance. + :param yoffset: The vertical distance. If omitted, both + distances are set to the same value. + :rtype: :py:class:`~PIL.Image.Image` + """ + + if yoffset is None: + yoffset = xoffset + image.load() + return image._new(image.im.offset(xoffset, yoffset)) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageCms.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageCms.py new file mode 100644 index 0000000..3a337f9 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageCms.py @@ -0,0 +1,1009 @@ +# The Python Imaging Library. +# $Id$ + +# Optional color management support, based on Kevin Cazabon's PyCMS +# library. + +# History: + +# 2009-03-08 fl Added to PIL. + +# Copyright (C) 2002-2003 Kevin Cazabon +# Copyright (c) 2009 by Fredrik Lundh +# Copyright (c) 2013 by Eric Soroos + +# See the README file for information on usage and redistribution. See +# below for the original description. + +import sys +from enum import IntEnum + +from . import Image + +try: + from . import _imagingcms +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import DeferredError + + _imagingcms = DeferredError(ex) + +DESCRIPTION = """ +pyCMS + + a Python / PIL interface to the littleCMS ICC Color Management System + Copyright (C) 2002-2003 Kevin Cazabon + kevin@cazabon.com + https://www.cazabon.com + + pyCMS home page: https://www.cazabon.com/pyCMS + littleCMS home page: https://www.littlecms.com + (littleCMS is Copyright (C) 1998-2001 Marti Maria) + + Originally released under LGPL. Graciously donated to PIL in + March 2009, for distribution under the standard PIL license + + The pyCMS.py module provides a "clean" interface between Python/PIL and + pyCMSdll, taking care of some of the more complex handling of the direct + pyCMSdll functions, as well as error-checking and making sure that all + relevant data is kept together. + + While it is possible to call pyCMSdll functions directly, it's not highly + recommended. + + Version History: + + 1.0.0 pil Oct 2013 Port to LCMS 2. + + 0.1.0 pil mod March 10, 2009 + + Renamed display profile to proof profile. The proof + profile is the profile of the device that is being + simulated, not the profile of the device which is + actually used to display/print the final simulation + (that'd be the output profile) - also see LCMSAPI.txt + input colorspace -> using 'renderingIntent' -> proof + colorspace -> using 'proofRenderingIntent' -> output + colorspace + + Added LCMS FLAGS support. + Added FLAGS["SOFTPROOFING"] as default flag for + buildProofTransform (otherwise the proof profile/intent + would be ignored). + + 0.1.0 pil March 2009 - added to PIL, as PIL.ImageCms + + 0.0.2 alpha Jan 6, 2002 + + Added try/except statements around type() checks of + potential CObjects... Python won't let you use type() + on them, and raises a TypeError (stupid, if you ask + me!) + + Added buildProofTransformFromOpenProfiles() function. + Additional fixes in DLL, see DLL code for details. + + 0.0.1 alpha first public release, Dec. 26, 2002 + + Known to-do list with current version (of Python interface, not pyCMSdll): + + none + +""" + +VERSION = "1.0.0 pil" + +# --------------------------------------------------------------------. + +core = _imagingcms + +# +# intent/direction values + + +class Intent(IntEnum): + PERCEPTUAL = 0 + RELATIVE_COLORIMETRIC = 1 + SATURATION = 2 + ABSOLUTE_COLORIMETRIC = 3 + + +class Direction(IntEnum): + INPUT = 0 + OUTPUT = 1 + PROOF = 2 + + +# +# flags + +FLAGS = { + "MATRIXINPUT": 1, + "MATRIXOUTPUT": 2, + "MATRIXONLY": (1 | 2), + "NOWHITEONWHITEFIXUP": 4, # Don't hot fix scum dot + # Don't create prelinearization tables on precalculated transforms + # (internal use): + "NOPRELINEARIZATION": 16, + "GUESSDEVICECLASS": 32, # Guess device class (for transform2devicelink) + "NOTCACHE": 64, # Inhibit 1-pixel cache + "NOTPRECALC": 256, + "NULLTRANSFORM": 512, # Don't transform anyway + "HIGHRESPRECALC": 1024, # Use more memory to give better accuracy + "LOWRESPRECALC": 2048, # Use less memory to minimize resources + "WHITEBLACKCOMPENSATION": 8192, + "BLACKPOINTCOMPENSATION": 8192, + "GAMUTCHECK": 4096, # Out of Gamut alarm + "SOFTPROOFING": 16384, # Do softproofing + "PRESERVEBLACK": 32768, # Black preservation + "NODEFAULTRESOURCEDEF": 16777216, # CRD special + "GRIDPOINTS": lambda n: (n & 0xFF) << 16, # Gridpoints +} + +_MAX_FLAG = 0 +for flag in FLAGS.values(): + if isinstance(flag, int): + _MAX_FLAG = _MAX_FLAG | flag + + +# --------------------------------------------------------------------. +# Experimental PIL-level API +# --------------------------------------------------------------------. + +## +# Profile. + + +class ImageCmsProfile: + def __init__(self, profile): + """ + :param profile: Either a string representing a filename, + a file like object containing a profile or a + low-level profile object + + """ + + if isinstance(profile, str): + if sys.platform == "win32": + profile_bytes_path = profile.encode() + try: + profile_bytes_path.decode("ascii") + except UnicodeDecodeError: + with open(profile, "rb") as f: + self._set(core.profile_frombytes(f.read())) + return + self._set(core.profile_open(profile), profile) + elif hasattr(profile, "read"): + self._set(core.profile_frombytes(profile.read())) + elif isinstance(profile, _imagingcms.CmsProfile): + self._set(profile) + else: + msg = "Invalid type for Profile" + raise TypeError(msg) + + def _set(self, profile, filename=None): + self.profile = profile + self.filename = filename + self.product_name = None # profile.product_name + self.product_info = None # profile.product_info + + def tobytes(self): + """ + Returns the profile in a format suitable for embedding in + saved images. + + :returns: a bytes object containing the ICC profile. + """ + + return core.profile_tobytes(self.profile) + + +class ImageCmsTransform(Image.ImagePointHandler): + + """ + Transform. This can be used with the procedural API, or with the standard + :py:func:`~PIL.Image.Image.point` method. + + Will return the output profile in the ``output.info['icc_profile']``. + """ + + def __init__( + self, + input, + output, + input_mode, + output_mode, + intent=Intent.PERCEPTUAL, + proof=None, + proof_intent=Intent.ABSOLUTE_COLORIMETRIC, + flags=0, + ): + if proof is None: + self.transform = core.buildTransform( + input.profile, output.profile, input_mode, output_mode, intent, flags + ) + else: + self.transform = core.buildProofTransform( + input.profile, + output.profile, + proof.profile, + input_mode, + output_mode, + intent, + proof_intent, + flags, + ) + # Note: inputMode and outputMode are for pyCMS compatibility only + self.input_mode = self.inputMode = input_mode + self.output_mode = self.outputMode = output_mode + + self.output_profile = output + + def point(self, im): + return self.apply(im) + + def apply(self, im, imOut=None): + im.load() + if imOut is None: + imOut = Image.new(self.output_mode, im.size, None) + self.transform.apply(im.im.id, imOut.im.id) + imOut.info["icc_profile"] = self.output_profile.tobytes() + return imOut + + def apply_in_place(self, im): + im.load() + if im.mode != self.output_mode: + msg = "mode mismatch" + raise ValueError(msg) # wrong output mode + self.transform.apply(im.im.id, im.im.id) + im.info["icc_profile"] = self.output_profile.tobytes() + return im + + +def get_display_profile(handle=None): + """ + (experimental) Fetches the profile for the current display device. + + :returns: ``None`` if the profile is not known. + """ + + if sys.platform != "win32": + return None + + from . import ImageWin + + if isinstance(handle, ImageWin.HDC): + profile = core.get_display_profile_win32(handle, 1) + else: + profile = core.get_display_profile_win32(handle or 0) + if profile is None: + return None + return ImageCmsProfile(profile) + + +# --------------------------------------------------------------------. +# pyCMS compatible layer +# --------------------------------------------------------------------. + + +class PyCMSError(Exception): + + """(pyCMS) Exception class. + This is used for all errors in the pyCMS API.""" + + pass + + +def profileToProfile( + im, + inputProfile, + outputProfile, + renderingIntent=Intent.PERCEPTUAL, + outputMode=None, + inPlace=False, + flags=0, +): + """ + (pyCMS) Applies an ICC transformation to a given image, mapping from + ``inputProfile`` to ``outputProfile``. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If ``inPlace`` is ``True`` and + ``outputMode != im.mode``, a :exc:`PyCMSError` will be raised. + If an error occurs during application of the profiles, + a :exc:`PyCMSError` will be raised. + If ``outputMode`` is not a mode supported by the ``outputProfile`` (or by pyCMS), + a :exc:`PyCMSError` will be raised. + + This function applies an ICC transformation to im from ``inputProfile``'s + color space to ``outputProfile``'s color space using the specified rendering + intent to decide how to handle out-of-gamut colors. + + ``outputMode`` can be used to specify that a color mode conversion is to + be done using these profiles, but the specified profiles must be able + to handle that mode. I.e., if converting im from RGB to CMYK using + profiles, the input profile must handle RGB data, and the output + profile must handle CMYK data. + + :param im: An open :py:class:`~PIL.Image.Image` object (i.e. Image.new(...) + or Image.open(...), etc.) + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this image, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this image, or a profile object + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param outputMode: A valid PIL mode for the output image (i.e. "RGB", + "CMYK", etc.). Note: if rendering the image "inPlace", outputMode + MUST be the same mode as the input, or omitted completely. If + omitted, the outputMode will be the same as the mode of the input + image (im.mode) + :param inPlace: Boolean. If ``True``, the original image is modified in-place, + and ``None`` is returned. If ``False`` (default), a new + :py:class:`~PIL.Image.Image` object is returned with the transform applied. + :param flags: Integer (0-...) specifying additional flags + :returns: Either None or a new :py:class:`~PIL.Image.Image` object, depending on + the value of ``inPlace`` + :exception PyCMSError: + """ + + if outputMode is None: + outputMode = im.mode + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = f"flags must be an integer between 0 and {_MAX_FLAG}" + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + transform = ImageCmsTransform( + inputProfile, + outputProfile, + im.mode, + outputMode, + renderingIntent, + flags=flags, + ) + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def getOpenProfile(profileFilename): + """ + (pyCMS) Opens an ICC profile file. + + The PyCMSProfile object can be passed back into pyCMS for use in creating + transforms and such (as in ImageCms.buildTransformFromOpenProfiles()). + + If ``profileFilename`` is not a valid filename for an ICC profile, + a :exc:`PyCMSError` will be raised. + + :param profileFilename: String, as a valid filename path to the ICC profile + you wish to open, or a file-like object. + :returns: A CmsProfile class object. + :exception PyCMSError: + """ + + try: + return ImageCmsProfile(profileFilename) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent=Intent.PERCEPTUAL, + flags=0, +): + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``. Use applyTransform to apply the transform to a given + image. + + If the input or output profiles specified are not valid filenames, a + :exc:`PyCMSError` will be raised. If an error occurs during creation + of the transform, a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile`` using the ``renderingIntent`` to determine what to do + with out-of-gamut colors. It will ONLY work for converting images that + are in ``inMode`` to images that are in ``outMode`` color format (PIL mode, + i.e. "RGB", "RGBA", "CMYK", etc.). + + Building the transform is a fair part of the overhead in + ImageCms.profileToProfile(), so if you're planning on converting multiple + images using the same input/output settings, this can save you time. + Once you have a transform object, it can be used with + ImageCms.applyProfile() to convert images without the need to re-compute + the lookup table for the transform. + + The reason pyCMS returns a class object rather than a handle directly + to the transform is that it needs to keep track of the PIL input/output + modes that the transform is meant for. These attributes are stored in + the ``inMode`` and ``outMode`` attributes of the object (which can be + manually overridden if you really want to, but I don't know of any + time that would be of use, or would even work). + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = "flags must be an integer between 0 and %s" + _MAX_FLAG + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + return ImageCmsTransform( + inputProfile, outputProfile, inMode, outMode, renderingIntent, flags=flags + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def buildProofTransform( + inputProfile, + outputProfile, + proofProfile, + inMode, + outMode, + renderingIntent=Intent.PERCEPTUAL, + proofRenderingIntent=Intent.ABSOLUTE_COLORIMETRIC, + flags=FLAGS["SOFTPROOFING"], +): + """ + (pyCMS) Builds an ICC transform mapping from the ``inputProfile`` to the + ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device. + + If the input, output, or proof profiles specified are not valid + filenames, a :exc:`PyCMSError` will be raised. + + If an error occurs during creation of the transform, + a :exc:`PyCMSError` will be raised. + + If ``inMode`` or ``outMode`` are not a mode supported by the ``outputProfile`` + (or by pyCMS), a :exc:`PyCMSError` will be raised. + + This function builds and returns an ICC transform from the ``inputProfile`` + to the ``outputProfile``, but tries to simulate the result that would be + obtained on the ``proofProfile`` device using ``renderingIntent`` and + ``proofRenderingIntent`` to determine what to do with out-of-gamut + colors. This is known as "soft-proofing". It will ONLY work for + converting images that are in ``inMode`` to images that are in outMode + color format (PIL mode, i.e. "RGB", "RGBA", "CMYK", etc.). + + Usage of the resulting transform object is exactly the same as with + ImageCms.buildTransform(). + + Proof profiling is generally used when using an output device to get a + good idea of what the final printed/displayed image would look like on + the ``proofProfile`` device when it's quicker and easier to use the + output device for judging color. Generally, this means that the + output device is a monitor, or a dye-sub printer (etc.), and the simulated + device is something more expensive, complicated, or time consuming + (making it difficult to make a real print for color judgement purposes). + + Soft-proofing basically functions by adjusting the colors on the + output device to match the colors of the device being simulated. However, + when the simulated device has a much wider gamut than the output + device, you may obtain marginal results. + + :param inputProfile: String, as a valid filename path to the ICC input + profile you wish to use for this transform, or a profile object + :param outputProfile: String, as a valid filename path to the ICC output + (monitor, usually) profile you wish to use for this transform, or a + profile object + :param proofProfile: String, as a valid filename path to the ICC proof + profile you wish to use for this transform, or a profile object + :param inMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param outMode: String, as a valid PIL mode that the appropriate profile + also supports (i.e. "RGB", "RGBA", "CMYK", etc.) + :param renderingIntent: Integer (0-3) specifying the rendering intent you + wish to use for the input->proof (simulated) transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param proofRenderingIntent: Integer (0-3) specifying the rendering intent + you wish to use for proof->output transform + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param flags: Integer (0-...) specifying additional flags + :returns: A CmsTransform class object. + :exception PyCMSError: + """ + + if not isinstance(renderingIntent, int) or not (0 <= renderingIntent <= 3): + msg = "renderingIntent must be an integer between 0 and 3" + raise PyCMSError(msg) + + if not isinstance(flags, int) or not (0 <= flags <= _MAX_FLAG): + msg = "flags must be an integer between 0 and %s" + _MAX_FLAG + raise PyCMSError(msg) + + try: + if not isinstance(inputProfile, ImageCmsProfile): + inputProfile = ImageCmsProfile(inputProfile) + if not isinstance(outputProfile, ImageCmsProfile): + outputProfile = ImageCmsProfile(outputProfile) + if not isinstance(proofProfile, ImageCmsProfile): + proofProfile = ImageCmsProfile(proofProfile) + return ImageCmsTransform( + inputProfile, + outputProfile, + inMode, + outMode, + renderingIntent, + proofProfile, + proofRenderingIntent, + flags, + ) + except (OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +buildTransformFromOpenProfiles = buildTransform +buildProofTransformFromOpenProfiles = buildProofTransform + + +def applyTransform(im, transform, inPlace=False): + """ + (pyCMS) Applies a transform to a given image. + + If ``im.mode != transform.inMode``, a :exc:`PyCMSError` is raised. + + If ``inPlace`` is ``True`` and ``transform.inMode != transform.outMode``, a + :exc:`PyCMSError` is raised. + + If ``im.mode``, ``transform.inMode`` or ``transform.outMode`` is not + supported by pyCMSdll or the profiles you used for the transform, a + :exc:`PyCMSError` is raised. + + If an error occurs while the transform is being applied, + a :exc:`PyCMSError` is raised. + + This function applies a pre-calculated transform (from + ImageCms.buildTransform() or ImageCms.buildTransformFromOpenProfiles()) + to an image. The transform can be used for multiple images, saving + considerable calculation time if doing the same conversion multiple times. + + If you want to modify im in-place instead of receiving a new image as + the return value, set ``inPlace`` to ``True``. This can only be done if + ``transform.inMode`` and ``transform.outMode`` are the same, because we can't + change the mode in-place (the buffer sizes for some modes are + different). The default behavior is to return a new :py:class:`~PIL.Image.Image` + object of the same dimensions in mode ``transform.outMode``. + + :param im: An :py:class:`~PIL.Image.Image` object, and im.mode must be the same + as the ``inMode`` supported by the transform. + :param transform: A valid CmsTransform class object + :param inPlace: Bool. If ``True``, ``im`` is modified in place and ``None`` is + returned, if ``False``, a new :py:class:`~PIL.Image.Image` object with the + transform applied is returned (and ``im`` is not changed). The default is + ``False``. + :returns: Either ``None``, or a new :py:class:`~PIL.Image.Image` object, + depending on the value of ``inPlace``. The profile will be returned in + the image's ``info['icc_profile']``. + :exception PyCMSError: + """ + + try: + if inPlace: + transform.apply_in_place(im) + imOut = None + else: + imOut = transform.apply(im) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + return imOut + + +def createProfile(colorSpace, colorTemp=-1): + """ + (pyCMS) Creates a profile. + + If colorSpace not in ``["LAB", "XYZ", "sRGB"]``, + a :exc:`PyCMSError` is raised. + + If using LAB and ``colorTemp`` is not a positive integer, + a :exc:`PyCMSError` is raised. + + If an error occurs while creating the profile, + a :exc:`PyCMSError` is raised. + + Use this function to create common profiles on-the-fly instead of + having to supply a profile on disk and knowing the path to it. It + returns a normal CmsProfile object that can be passed to + ImageCms.buildTransformFromOpenProfiles() to create a transform to apply + to images. + + :param colorSpace: String, the color space of the profile you wish to + create. + Currently only "LAB", "XYZ", and "sRGB" are supported. + :param colorTemp: Positive integer for the white point for the profile, in + degrees Kelvin (i.e. 5000, 6500, 9600, etc.). The default is for D50 + illuminant if omitted (5000k). colorTemp is ONLY applied to LAB + profiles, and is ignored for XYZ and sRGB. + :returns: A CmsProfile class object + :exception PyCMSError: + """ + + if colorSpace not in ["LAB", "XYZ", "sRGB"]: + msg = ( + f"Color space not supported for on-the-fly profile creation ({colorSpace})" + ) + raise PyCMSError(msg) + + if colorSpace == "LAB": + try: + colorTemp = float(colorTemp) + except (TypeError, ValueError) as e: + msg = f'Color temperature must be numeric, "{colorTemp}" not valid' + raise PyCMSError(msg) from e + + try: + return core.createProfile(colorSpace, colorTemp) + except (TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileName(profile): + """ + + (pyCMS) Gets the internal product name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised If an error occurs while trying + to obtain the name tag, a :exc:`PyCMSError` is raised. + + Use this function to obtain the INTERNAL name of the profile (stored + in an ICC tag in the profile itself), usually the one used when the + profile was originally created. Sometimes this tag also contains + additional information supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal name of the profile as stored + in an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # do it in python, not c. + # // name was "%s - %s" (model, manufacturer) || Description , + # // but if the Model and Manufacturer were the same or the model + # // was long, Just the model, in 1.x + model = profile.profile.model + manufacturer = profile.profile.manufacturer + + if not (model or manufacturer): + return (profile.profile.profile_description or "") + "\n" + if not manufacturer or len(model) > 30: + return model + "\n" + return f"{model} - {manufacturer}\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileInfo(profile): + """ + (pyCMS) Gets the internal product information for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, + a :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the info tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + info tag. This often contains details about the profile, and how it + was created, as supplied by the creator. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # add an extra newline to preserve pyCMS compatibility + # Python, not C. the white point bits weren't working well, + # so skipping. + # info was description \r\n\r\n copyright \r\n\r\n K007 tag \r\n\r\n whitepoint + description = profile.profile.profile_description + cpright = profile.profile.copyright + arr = [] + for elt in (description, cpright): + if elt: + arr.append(elt) + return "\r\n\r\n".join(arr) + "\r\n\r\n" + + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileCopyright(profile): + """ + (pyCMS) Gets the copyright for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the copyright tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + copyright tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.copyright or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileManufacturer(profile): + """ + (pyCMS) Gets the manufacturer for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the manufacturer tag, a + :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + manufacturer tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.manufacturer or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileModel(profile): + """ + (pyCMS) Gets the model for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the model tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + model tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in + an ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.model or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getProfileDescription(profile): + """ + (pyCMS) Gets the description for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the description tag, + a :exc:`PyCMSError` is raised. + + Use this function to obtain the information stored in the profile's + description tag. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: A string containing the internal profile information stored in an + ICC tag. + :exception PyCMSError: + """ + + try: + # add an extra newline to preserve pyCMS compatibility + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return (profile.profile.profile_description or "") + "\n" + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def getDefaultIntent(profile): + """ + (pyCMS) Gets the default intent name for the given profile. + + If ``profile`` isn't a valid CmsProfile object or filename to a profile, a + :exc:`PyCMSError` is raised. + + If an error occurs while trying to obtain the default intent, a + :exc:`PyCMSError` is raised. + + Use this function to determine the default (and usually best optimized) + rendering intent for this profile. Most profiles support multiple + rendering intents, but are intended mostly for one type of conversion. + If you wish to use a different intent than returned, use + ImageCms.isIntentSupported() to verify it will work first. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :returns: Integer 0-3 specifying the default rendering intent for this + profile. + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + return profile.profile.rendering_intent + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def isIntentSupported(profile, intent, direction): + """ + (pyCMS) Checks if a given intent is supported. + + Use this function to verify that you can use your desired + ``intent`` with ``profile``, and that ``profile`` can be used for the + input/output/proof profile as you desire. + + Some profiles are created specifically for one "direction", can cannot + be used for others. Some profiles can only be used for certain + rendering intents, so it's best to either verify this before trying + to create a transform with them (using this function), or catch the + potential :exc:`PyCMSError` that will occur if they don't + support the modes you select. + + :param profile: EITHER a valid CmsProfile object, OR a string of the + filename of an ICC profile. + :param intent: Integer (0-3) specifying the rendering intent you wish to + use with this profile + + ImageCms.Intent.PERCEPTUAL = 0 (DEFAULT) + ImageCms.Intent.RELATIVE_COLORIMETRIC = 1 + ImageCms.Intent.SATURATION = 2 + ImageCms.Intent.ABSOLUTE_COLORIMETRIC = 3 + + see the pyCMS documentation for details on rendering intents and what + they do. + :param direction: Integer specifying if the profile is to be used for + input, output, or proof + + INPUT = 0 (or use ImageCms.Direction.INPUT) + OUTPUT = 1 (or use ImageCms.Direction.OUTPUT) + PROOF = 2 (or use ImageCms.Direction.PROOF) + + :returns: 1 if the intent/direction are supported, -1 if they are not. + :exception PyCMSError: + """ + + try: + if not isinstance(profile, ImageCmsProfile): + profile = ImageCmsProfile(profile) + # FIXME: I get different results for the same data w. different + # compilers. Bug in LittleCMS or in the binding? + if profile.profile.is_intent_supported(intent, direction): + return 1 + else: + return -1 + except (AttributeError, OSError, TypeError, ValueError) as v: + raise PyCMSError(v) from v + + +def versions(): + """ + (pyCMS) Fetches versions. + """ + + return VERSION, core.littlecms_version, sys.version.split()[0], Image.__version__ diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageColor.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageColor.py new file mode 100644 index 0000000..befc1fd --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageColor.py @@ -0,0 +1,313 @@ +# +# The Python Imaging Library +# $Id$ +# +# map CSS3-style colour description strings to RGB +# +# History: +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-15 fl Added RGBA support +# 2004-03-27 fl Fixed remaining int() problems for Python 1.5.2 +# 2004-07-19 fl Fixed gray/grey spelling issues +# 2009-03-05 fl Fixed rounding error in grayscale calculation +# +# Copyright (c) 2002-2004 by Secret Labs AB +# Copyright (c) 2002-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re + +from . import Image + + +def getrgb(color): + """ + Convert a color string to an RGB or RGBA tuple. If the string cannot be + parsed, this function raises a :py:exc:`ValueError` exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :return: ``(red, green, blue[, alpha])`` + """ + if len(color) > 100: + msg = "color specifier is too long" + raise ValueError(msg) + color = color.lower() + + rgb = colormap.get(color, None) + if rgb: + if isinstance(rgb, tuple): + return rgb + colormap[color] = rgb = getrgb(rgb) + return rgb + + # check for known string formats + if re.match("#[a-f0-9]{3}$", color): + return int(color[1] * 2, 16), int(color[2] * 2, 16), int(color[3] * 2, 16) + + if re.match("#[a-f0-9]{4}$", color): + return ( + int(color[1] * 2, 16), + int(color[2] * 2, 16), + int(color[3] * 2, 16), + int(color[4] * 2, 16), + ) + + if re.match("#[a-f0-9]{6}$", color): + return int(color[1:3], 16), int(color[3:5], 16), int(color[5:7], 16) + + if re.match("#[a-f0-9]{8}$", color): + return ( + int(color[1:3], 16), + int(color[3:5], 16), + int(color[5:7], 16), + int(color[7:9], 16), + ) + + m = re.match(r"rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return int(m.group(1)), int(m.group(2)), int(m.group(3)) + + m = re.match(r"rgb\(\s*(\d+)%\s*,\s*(\d+)%\s*,\s*(\d+)%\s*\)$", color) + if m: + return ( + int((int(m.group(1)) * 255) / 100.0 + 0.5), + int((int(m.group(2)) * 255) / 100.0 + 0.5), + int((int(m.group(3)) * 255) / 100.0 + 0.5), + ) + + m = re.match( + r"hsl\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hls_to_rgb + + rgb = hls_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(3)) / 100.0, + float(m.group(2)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5), + ) + + m = re.match( + r"hs[bv]\(\s*(\d+\.?\d*)\s*,\s*(\d+\.?\d*)%\s*,\s*(\d+\.?\d*)%\s*\)$", color + ) + if m: + from colorsys import hsv_to_rgb + + rgb = hsv_to_rgb( + float(m.group(1)) / 360.0, + float(m.group(2)) / 100.0, + float(m.group(3)) / 100.0, + ) + return ( + int(rgb[0] * 255 + 0.5), + int(rgb[1] * 255 + 0.5), + int(rgb[2] * 255 + 0.5), + ) + + m = re.match(r"rgba\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$", color) + if m: + return int(m.group(1)), int(m.group(2)), int(m.group(3)), int(m.group(4)) + msg = f"unknown color specifier: {repr(color)}" + raise ValueError(msg) + + +def getcolor(color, mode): + """ + Same as :py:func:`~PIL.ImageColor.getrgb` for most modes. However, if + ``mode`` is HSV, converts the RGB value to a HSV value, or if ``mode`` is + not color or a palette image, converts the RGB value to a greyscale value. + If the string cannot be parsed, this function raises a :py:exc:`ValueError` + exception. + + .. versionadded:: 1.1.4 + + :param color: A color string + :param mode: Convert result to this mode + :return: ``(graylevel[, alpha]) or (red, green, blue[, alpha])`` + """ + # same as getrgb, but converts the result to the given mode + color, alpha = getrgb(color), 255 + if len(color) == 4: + color, alpha = color[:3], color[3] + + if mode == "HSV": + from colorsys import rgb_to_hsv + + r, g, b = color + h, s, v = rgb_to_hsv(r / 255, g / 255, b / 255) + return int(h * 255), int(s * 255), int(v * 255) + elif Image.getmodebase(mode) == "L": + r, g, b = color + # ITU-R Recommendation 601-2 for nonlinear RGB + # scaled to 24 bits to match the convert's implementation. + color = (r * 19595 + g * 38470 + b * 7471 + 0x8000) >> 16 + if mode[-1] == "A": + return color, alpha + else: + if mode[-1] == "A": + return color + (alpha,) + return color + + +colormap = { + # X11 colour table from https://drafts.csswg.org/css-color-4/, with + # gray/grey spelling issues fixed. This is a superset of HTML 4.0 + # colour names used in CSS 1. + "aliceblue": "#f0f8ff", + "antiquewhite": "#faebd7", + "aqua": "#00ffff", + "aquamarine": "#7fffd4", + "azure": "#f0ffff", + "beige": "#f5f5dc", + "bisque": "#ffe4c4", + "black": "#000000", + "blanchedalmond": "#ffebcd", + "blue": "#0000ff", + "blueviolet": "#8a2be2", + "brown": "#a52a2a", + "burlywood": "#deb887", + "cadetblue": "#5f9ea0", + "chartreuse": "#7fff00", + "chocolate": "#d2691e", + "coral": "#ff7f50", + "cornflowerblue": "#6495ed", + "cornsilk": "#fff8dc", + "crimson": "#dc143c", + "cyan": "#00ffff", + "darkblue": "#00008b", + "darkcyan": "#008b8b", + "darkgoldenrod": "#b8860b", + "darkgray": "#a9a9a9", + "darkgrey": "#a9a9a9", + "darkgreen": "#006400", + "darkkhaki": "#bdb76b", + "darkmagenta": "#8b008b", + "darkolivegreen": "#556b2f", + "darkorange": "#ff8c00", + "darkorchid": "#9932cc", + "darkred": "#8b0000", + "darksalmon": "#e9967a", + "darkseagreen": "#8fbc8f", + "darkslateblue": "#483d8b", + "darkslategray": "#2f4f4f", + "darkslategrey": "#2f4f4f", + "darkturquoise": "#00ced1", + "darkviolet": "#9400d3", + "deeppink": "#ff1493", + "deepskyblue": "#00bfff", + "dimgray": "#696969", + "dimgrey": "#696969", + "dodgerblue": "#1e90ff", + "firebrick": "#b22222", + "floralwhite": "#fffaf0", + "forestgreen": "#228b22", + "fuchsia": "#ff00ff", + "gainsboro": "#dcdcdc", + "ghostwhite": "#f8f8ff", + "gold": "#ffd700", + "goldenrod": "#daa520", + "gray": "#808080", + "grey": "#808080", + "green": "#008000", + "greenyellow": "#adff2f", + "honeydew": "#f0fff0", + "hotpink": "#ff69b4", + "indianred": "#cd5c5c", + "indigo": "#4b0082", + "ivory": "#fffff0", + "khaki": "#f0e68c", + "lavender": "#e6e6fa", + "lavenderblush": "#fff0f5", + "lawngreen": "#7cfc00", + "lemonchiffon": "#fffacd", + "lightblue": "#add8e6", + "lightcoral": "#f08080", + "lightcyan": "#e0ffff", + "lightgoldenrodyellow": "#fafad2", + "lightgreen": "#90ee90", + "lightgray": "#d3d3d3", + "lightgrey": "#d3d3d3", + "lightpink": "#ffb6c1", + "lightsalmon": "#ffa07a", + "lightseagreen": "#20b2aa", + "lightskyblue": "#87cefa", + "lightslategray": "#778899", + "lightslategrey": "#778899", + "lightsteelblue": "#b0c4de", + "lightyellow": "#ffffe0", + "lime": "#00ff00", + "limegreen": "#32cd32", + "linen": "#faf0e6", + "magenta": "#ff00ff", + "maroon": "#800000", + "mediumaquamarine": "#66cdaa", + "mediumblue": "#0000cd", + "mediumorchid": "#ba55d3", + "mediumpurple": "#9370db", + "mediumseagreen": "#3cb371", + "mediumslateblue": "#7b68ee", + "mediumspringgreen": "#00fa9a", + "mediumturquoise": "#48d1cc", + "mediumvioletred": "#c71585", + "midnightblue": "#191970", + "mintcream": "#f5fffa", + "mistyrose": "#ffe4e1", + "moccasin": "#ffe4b5", + "navajowhite": "#ffdead", + "navy": "#000080", + "oldlace": "#fdf5e6", + "olive": "#808000", + "olivedrab": "#6b8e23", + "orange": "#ffa500", + "orangered": "#ff4500", + "orchid": "#da70d6", + "palegoldenrod": "#eee8aa", + "palegreen": "#98fb98", + "paleturquoise": "#afeeee", + "palevioletred": "#db7093", + "papayawhip": "#ffefd5", + "peachpuff": "#ffdab9", + "peru": "#cd853f", + "pink": "#ffc0cb", + "plum": "#dda0dd", + "powderblue": "#b0e0e6", + "purple": "#800080", + "rebeccapurple": "#663399", + "red": "#ff0000", + "rosybrown": "#bc8f8f", + "royalblue": "#4169e1", + "saddlebrown": "#8b4513", + "salmon": "#fa8072", + "sandybrown": "#f4a460", + "seagreen": "#2e8b57", + "seashell": "#fff5ee", + "sienna": "#a0522d", + "silver": "#c0c0c0", + "skyblue": "#87ceeb", + "slateblue": "#6a5acd", + "slategray": "#708090", + "slategrey": "#708090", + "snow": "#fffafa", + "springgreen": "#00ff7f", + "steelblue": "#4682b4", + "tan": "#d2b48c", + "teal": "#008080", + "thistle": "#d8bfd8", + "tomato": "#ff6347", + "turquoise": "#40e0d0", + "violet": "#ee82ee", + "wheat": "#f5deb3", + "white": "#ffffff", + "whitesmoke": "#f5f5f5", + "yellow": "#ffff00", + "yellowgreen": "#9acd32", +} diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw.py new file mode 100644 index 0000000..7d1790f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw.py @@ -0,0 +1,1038 @@ +# +# The Python Imaging Library +# $Id$ +# +# drawing interface operations +# +# History: +# 1996-04-13 fl Created (experimental) +# 1996-08-07 fl Filled polygons, ellipses. +# 1996-08-13 fl Added text support +# 1998-06-28 fl Handle I and F images +# 1998-12-29 fl Added arc; use arc primitive to draw ellipses +# 1999-01-10 fl Added shape stuff (experimental) +# 1999-02-06 fl Added bitmap support +# 1999-02-11 fl Changed all primitives to take options +# 1999-02-20 fl Fixed backwards compatibility +# 2000-10-12 fl Copy on write, when necessary +# 2001-02-18 fl Use default ink for bitmap/text also in fill mode +# 2002-10-24 fl Added support for CSS-style color strings +# 2002-12-10 fl Added experimental support for RGBA-on-RGB drawing +# 2002-12-11 fl Refactored low-level drawing API (work in progress) +# 2004-08-26 fl Made Draw() a factory function, added getdraw() support +# 2004-09-04 fl Added width support to line primitive +# 2004-09-10 fl Added font mode handling +# 2006-06-19 fl Added font bearing support (getmask2) +# +# Copyright (c) 1997-2006 by Secret Labs AB +# Copyright (c) 1996-2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import math +import numbers + +from . import Image, ImageColor + +""" +A simple 2D drawing interface for PIL images. +

+Application code should use the Draw factory, instead of +directly. +""" + + +class ImageDraw: + font = None + + def __init__(self, im, mode=None): + """ + Create a drawing instance. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + im.load() + if im.readonly: + im._copy() # make it writeable + blend = 0 + if mode is None: + mode = im.mode + if mode != im.mode: + if mode == "RGBA" and im.mode == "RGB": + blend = 1 + else: + msg = "mode mismatch" + raise ValueError(msg) + if mode == "P": + self.palette = im.palette + else: + self.palette = None + self._image = im + self.im = im.im + self.draw = Image.core.draw(self.im, blend) + self.mode = mode + if mode in ("I", "F"): + self.ink = self.draw.draw_ink(1) + else: + self.ink = self.draw.draw_ink(-1) + if mode in ("1", "P", "I", "F"): + # FIXME: fix Fill2 to properly support matte for I+F images + self.fontmode = "1" + else: + self.fontmode = "L" # aliasing is okay for other modes + self.fill = False + + def getfont(self): + """ + Get the current default font. + + To set the default font for this ImageDraw instance:: + + from PIL import ImageDraw, ImageFont + draw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + To set the default font for all future ImageDraw instances:: + + from PIL import ImageDraw, ImageFont + ImageDraw.ImageDraw.font = ImageFont.truetype("Tests/fonts/FreeMono.ttf") + + If the current default font is ``None``, + it is initialized with ``ImageFont.load_default()``. + + :returns: An image font.""" + if not self.font: + # FIXME: should add a font repository + from . import ImageFont + + self.font = ImageFont.load_default() + return self.font + + def _getink(self, ink, fill=None): + if ink is None and fill is None: + if self.fill: + fill = self.ink + else: + ink = self.ink + else: + if ink is not None: + if isinstance(ink, str): + ink = ImageColor.getcolor(ink, self.mode) + if self.palette and not isinstance(ink, numbers.Number): + ink = self.palette.getcolor(ink, self._image) + ink = self.draw.draw_ink(ink) + if fill is not None: + if isinstance(fill, str): + fill = ImageColor.getcolor(fill, self.mode) + if self.palette and not isinstance(fill, numbers.Number): + fill = self.palette.getcolor(fill, self._image) + fill = self.draw.draw_ink(fill) + return ink, fill + + def arc(self, xy, start, end, fill=None, width=1): + """Draw an arc.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_arc(xy, start, end, ink, width) + + def bitmap(self, xy, bitmap, fill=None): + """Draw a bitmap.""" + bitmap.load() + ink, fill = self._getink(fill) + if ink is None: + ink = fill + if ink is not None: + self.draw.draw_bitmap(xy, bitmap.im, ink) + + def chord(self, xy, start, end, fill=None, outline=None, width=1): + """Draw a chord.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_chord(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_chord(xy, start, end, ink, 0, width) + + def ellipse(self, xy, fill=None, outline=None, width=1): + """Draw an ellipse.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_ellipse(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_ellipse(xy, ink, 0, width) + + def line(self, xy, fill=None, width=0, joint=None): + """Draw a line, or a connected sequence of line segments.""" + ink = self._getink(fill)[0] + if ink is not None: + self.draw.draw_lines(xy, ink, width) + if joint == "curve" and width > 4: + if not isinstance(xy[0], (list, tuple)): + xy = [tuple(xy[i : i + 2]) for i in range(0, len(xy), 2)] + for i in range(1, len(xy) - 1): + point = xy[i] + angles = [ + math.degrees(math.atan2(end[0] - start[0], start[1] - end[1])) + % 360 + for start, end in ((xy[i - 1], point), (point, xy[i + 1])) + ] + if angles[0] == angles[1]: + # This is a straight line, so no joint is required + continue + + def coord_at_angle(coord, angle): + x, y = coord + angle -= 90 + distance = width / 2 - 1 + return tuple( + p + (math.floor(p_d) if p_d > 0 else math.ceil(p_d)) + for p, p_d in ( + (x, distance * math.cos(math.radians(angle))), + (y, distance * math.sin(math.radians(angle))), + ) + ) + + flipped = ( + angles[1] > angles[0] and angles[1] - 180 > angles[0] + ) or (angles[1] < angles[0] and angles[1] + 180 > angles[0]) + coords = [ + (point[0] - width / 2 + 1, point[1] - width / 2 + 1), + (point[0] + width / 2 - 1, point[1] + width / 2 - 1), + ] + if flipped: + start, end = (angles[1] + 90, angles[0] + 90) + else: + start, end = (angles[0] - 90, angles[1] - 90) + self.pieslice(coords, start - 90, end - 90, fill) + + if width > 8: + # Cover potential gaps between the line and the joint + if flipped: + gap_coords = [ + coord_at_angle(point, angles[0] + 90), + point, + coord_at_angle(point, angles[1] + 90), + ] + else: + gap_coords = [ + coord_at_angle(point, angles[0] - 90), + point, + coord_at_angle(point, angles[1] - 90), + ] + self.line(gap_coords, fill, width=3) + + def shape(self, shape, fill=None, outline=None): + """(Experimental) Draw a shape.""" + shape.close() + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_outline(shape, fill, 1) + if ink is not None and ink != fill: + self.draw.draw_outline(shape, ink, 0) + + def pieslice(self, xy, start, end, fill=None, outline=None, width=1): + """Draw a pieslice.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_pieslice(xy, start, end, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_pieslice(xy, start, end, ink, 0, width) + + def point(self, xy, fill=None): + """Draw one or more individual pixels.""" + ink, fill = self._getink(fill) + if ink is not None: + self.draw.draw_points(xy, ink) + + def polygon(self, xy, fill=None, outline=None, width=1): + """Draw a polygon.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_polygon(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + if width == 1: + self.draw.draw_polygon(xy, ink, 0, width) + else: + # To avoid expanding the polygon outwards, + # use the fill as a mask + mask = Image.new("1", self.im.size) + mask_ink = self._getink(1)[0] + + fill_im = mask.copy() + draw = Draw(fill_im) + draw.draw.draw_polygon(xy, mask_ink, 1) + + ink_im = mask.copy() + draw = Draw(ink_im) + width = width * 2 - 1 + draw.draw.draw_polygon(xy, mask_ink, 0, width) + + mask.paste(ink_im, mask=fill_im) + + im = Image.new(self.mode, self.im.size) + draw = Draw(im) + draw.draw.draw_polygon(xy, ink, 0, width) + self.im.paste(im.im, (0, 0) + im.size, mask.im) + + def regular_polygon( + self, bounding_circle, n_sides, rotation=0, fill=None, outline=None, width=1 + ): + """Draw a regular polygon.""" + xy = _compute_regular_polygon_vertices(bounding_circle, n_sides, rotation) + self.polygon(xy, fill, outline, width) + + def rectangle(self, xy, fill=None, outline=None, width=1): + """Draw a rectangle.""" + ink, fill = self._getink(outline, fill) + if fill is not None: + self.draw.draw_rectangle(xy, fill, 1) + if ink is not None and ink != fill and width != 0: + self.draw.draw_rectangle(xy, ink, 0, width) + + def rounded_rectangle( + self, xy, radius=0, fill=None, outline=None, width=1, *, corners=None + ): + """Draw a rounded rectangle.""" + if isinstance(xy[0], (list, tuple)): + (x0, y0), (x1, y1) = xy + else: + x0, y0, x1, y1 = xy + if x1 < x0: + msg = "x1 must be greater than or equal to x0" + raise ValueError(msg) + if y1 < y0: + msg = "y1 must be greater than or equal to y0" + raise ValueError(msg) + if corners is None: + corners = (True, True, True, True) + + d = radius * 2 + + full_x, full_y = False, False + if all(corners): + full_x = d >= x1 - x0 - 1 + if full_x: + # The two left and two right corners are joined + d = x1 - x0 + full_y = d >= y1 - y0 - 1 + if full_y: + # The two top and two bottom corners are joined + d = y1 - y0 + if full_x and full_y: + # If all corners are joined, that is a circle + return self.ellipse(xy, fill, outline, width) + + if d == 0 or not any(corners): + # If the corners have no curve, + # or there are no corners, + # that is a rectangle + return self.rectangle(xy, fill, outline, width) + + r = d // 2 + ink, fill = self._getink(outline, fill) + + def draw_corners(pieslice): + if full_x: + # Draw top and bottom halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 180, 360), + ((x0, y1 - d, x0 + d, y1), 0, 180), + ) + elif full_y: + # Draw left and right halves + parts = ( + ((x0, y0, x0 + d, y0 + d), 90, 270), + ((x1 - d, y0, x1, y0 + d), 270, 90), + ) + else: + # Draw four separate corners + parts = [] + for i, part in enumerate( + ( + ((x0, y0, x0 + d, y0 + d), 180, 270), + ((x1 - d, y0, x1, y0 + d), 270, 360), + ((x1 - d, y1 - d, x1, y1), 0, 90), + ((x0, y1 - d, x0 + d, y1), 90, 180), + ) + ): + if corners[i]: + parts.append(part) + for part in parts: + if pieslice: + self.draw.draw_pieslice(*(part + (fill, 1))) + else: + self.draw.draw_arc(*(part + (ink, width))) + + if fill is not None: + draw_corners(True) + + if full_x: + self.draw.draw_rectangle((x0, y0 + r + 1, x1, y1 - r - 1), fill, 1) + else: + self.draw.draw_rectangle((x0 + r + 1, y0, x1 - r - 1, y1), fill, 1) + if not full_x and not full_y: + left = [x0, y0, x0 + r, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, fill, 1) + + right = [x1 - r, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, fill, 1) + if ink is not None and ink != fill and width != 0: + draw_corners(False) + + if not full_x: + top = [x0, y0, x1, y0 + width - 1] + if corners[0]: + top[0] += r + 1 + if corners[1]: + top[2] -= r + 1 + self.draw.draw_rectangle(top, ink, 1) + + bottom = [x0, y1 - width + 1, x1, y1] + if corners[3]: + bottom[0] += r + 1 + if corners[2]: + bottom[2] -= r + 1 + self.draw.draw_rectangle(bottom, ink, 1) + if not full_y: + left = [x0, y0, x0 + width - 1, y1] + if corners[0]: + left[1] += r + 1 + if corners[3]: + left[3] -= r + 1 + self.draw.draw_rectangle(left, ink, 1) + + right = [x1 - width + 1, y0, x1, y1] + if corners[1]: + right[1] += r + 1 + if corners[2]: + right[3] -= r + 1 + self.draw.draw_rectangle(right, ink, 1) + + def _multiline_check(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + + return split_character in text + + def _multiline_split(self, text): + split_character = "\n" if isinstance(text, str) else b"\n" + + return text.split(split_character) + + def _multiline_spacing(self, font, spacing, stroke_width): + return ( + self.textbbox((0, 0), "A", font, stroke_width=stroke_width)[3] + + stroke_width + + spacing + ) + + def text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + embedded_color=False, + *args, + **kwargs, + ): + """Draw text.""" + if self._multiline_check(text): + return self.multiline_text( + xy, + text, + fill, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + stroke_fill, + embedded_color, + ) + + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self.getfont() + + def getink(fill): + ink, fill = self._getink(fill) + if ink is None: + return fill + return ink + + def draw_text(ink, stroke_width=0, stroke_offset=None): + mode = self.fontmode + if stroke_width == 0 and embedded_color: + mode = "RGBA" + coord = [] + start = [] + for i in range(2): + coord.append(int(xy[i])) + start.append(math.modf(xy[i])[0]) + try: + mask, offset = font.getmask2( + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + anchor=anchor, + ink=ink, + start=start, + *args, + **kwargs, + ) + coord = coord[0] + offset[0], coord[1] + offset[1] + except AttributeError: + try: + mask = font.getmask( + text, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + start=start, + *args, + **kwargs, + ) + except TypeError: + mask = font.getmask(text) + if stroke_offset: + coord = coord[0] + stroke_offset[0], coord[1] + stroke_offset[1] + if mode == "RGBA": + # font.getmask2(mode="RGBA") returns color in RGB bands and mask in A + # extract mask and set text alpha + color, mask = mask, mask.getband(3) + color.fillband(3, (ink >> 24) & 0xFF) + x, y = coord + self.im.paste(color, (x, y, x + mask.size[0], y + mask.size[1]), mask) + else: + self.draw.draw_bitmap(coord, mask, ink) + + ink = getink(fill) + if ink is not None: + stroke_ink = None + if stroke_width: + stroke_ink = getink(stroke_fill) if stroke_fill is not None else ink + + if stroke_ink is not None: + # Draw stroked text + draw_text(stroke_ink, stroke_width) + + # Draw normal text + draw_text(ink, 0) + else: + # Only draw normal text + draw_text(ink) + + def multiline_text( + self, + xy, + text, + fill=None, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + stroke_fill=None, + embedded_color=False, + ): + if direction == "ttb": + msg = "ttb direction is unsupported for multiline text" + raise ValueError(msg) + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + msg = "anchor must be a 2 character string" + raise ValueError(msg) + elif anchor[1] in "tb": + msg = "anchor not supported for multiline text" + raise ValueError(msg) + + widths = [] + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self._multiline_spacing(font, spacing, stroke_width) + for line in lines: + line_width = self.textlength( + line, font, direction=direction, features=features, language=language + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + top = xy[1] + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + msg = 'align must be "left", "center" or "right"' + raise ValueError(msg) + + self.text( + (left, top), + line, + fill, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + stroke_fill=stroke_fill, + embedded_color=embedded_color, + ) + top += line_spacing + + def textlength( + self, + text, + font=None, + direction=None, + features=None, + language=None, + embedded_color=False, + ): + """Get the length of a given string, in pixels with 1/64 precision.""" + if self._multiline_check(text): + msg = "can't measure length of multiline text" + raise ValueError(msg) + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if font is None: + font = self.getfont() + mode = "RGBA" if embedded_color else self.fontmode + return font.getlength(text, mode, direction, features, language) + + def textbbox( + self, + xy, + text, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + embedded_color=False, + ): + """Get the bounding box of a given string, in pixels.""" + if embedded_color and self.mode not in ("RGB", "RGBA"): + msg = "Embedded color supported only in RGB and RGBA modes" + raise ValueError(msg) + + if self._multiline_check(text): + return self.multiline_textbbox( + xy, + text, + font, + anchor, + spacing, + align, + direction, + features, + language, + stroke_width, + embedded_color, + ) + + if font is None: + font = self.getfont() + mode = "RGBA" if embedded_color else self.fontmode + bbox = font.getbbox( + text, mode, direction, features, language, stroke_width, anchor + ) + return bbox[0] + xy[0], bbox[1] + xy[1], bbox[2] + xy[0], bbox[3] + xy[1] + + def multiline_textbbox( + self, + xy, + text, + font=None, + anchor=None, + spacing=4, + align="left", + direction=None, + features=None, + language=None, + stroke_width=0, + embedded_color=False, + ): + if direction == "ttb": + msg = "ttb direction is unsupported for multiline text" + raise ValueError(msg) + + if anchor is None: + anchor = "la" + elif len(anchor) != 2: + msg = "anchor must be a 2 character string" + raise ValueError(msg) + elif anchor[1] in "tb": + msg = "anchor not supported for multiline text" + raise ValueError(msg) + + widths = [] + max_width = 0 + lines = self._multiline_split(text) + line_spacing = self._multiline_spacing(font, spacing, stroke_width) + for line in lines: + line_width = self.textlength( + line, + font, + direction=direction, + features=features, + language=language, + embedded_color=embedded_color, + ) + widths.append(line_width) + max_width = max(max_width, line_width) + + top = xy[1] + if anchor[1] == "m": + top -= (len(lines) - 1) * line_spacing / 2.0 + elif anchor[1] == "d": + top -= (len(lines) - 1) * line_spacing + + bbox = None + + for idx, line in enumerate(lines): + left = xy[0] + width_difference = max_width - widths[idx] + + # first align left by anchor + if anchor[0] == "m": + left -= width_difference / 2.0 + elif anchor[0] == "r": + left -= width_difference + + # then align by align parameter + if align == "left": + pass + elif align == "center": + left += width_difference / 2.0 + elif align == "right": + left += width_difference + else: + msg = 'align must be "left", "center" or "right"' + raise ValueError(msg) + + bbox_line = self.textbbox( + (left, top), + line, + font, + anchor, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + embedded_color=embedded_color, + ) + if bbox is None: + bbox = bbox_line + else: + bbox = ( + min(bbox[0], bbox_line[0]), + min(bbox[1], bbox_line[1]), + max(bbox[2], bbox_line[2]), + max(bbox[3], bbox_line[3]), + ) + + top += line_spacing + + if bbox is None: + return xy[0], xy[1], xy[0], xy[1] + return bbox + + +def Draw(im, mode=None): + """ + A simple 2D drawing interface for PIL images. + + :param im: The image to draw in. + :param mode: Optional mode to use for color values. For RGB + images, this argument can be RGB or RGBA (to blend the + drawing into the image). For all other modes, this argument + must be the same as the image mode. If omitted, the mode + defaults to the mode of the image. + """ + try: + return im.getdraw(mode) + except AttributeError: + return ImageDraw(im, mode) + + +# experimental access to the outline API +try: + Outline = Image.core.outline +except AttributeError: + Outline = None + + +def getdraw(im=None, hints=None): + """ + (Experimental) A more advanced 2D drawing interface for PIL images, + based on the WCK interface. + + :param im: The image to draw in. + :param hints: An optional list of hints. + :returns: A (drawing context, drawing resource factory) tuple. + """ + # FIXME: this needs more work! + # FIXME: come up with a better 'hints' scheme. + handler = None + if not hints or "nicest" in hints: + try: + from . import _imagingagg as handler + except ImportError: + pass + if handler is None: + from . import ImageDraw2 as handler + if im: + im = handler.Draw(im) + return im, handler + + +def floodfill(image, xy, value, border=None, thresh=0): + """ + (experimental) Fills a bounded region with a given color. + + :param image: Target image. + :param xy: Seed position (a 2-item coordinate tuple). See + :ref:`coordinate-system`. + :param value: Fill color. + :param border: Optional border value. If given, the region consists of + pixels with a color different from the border color. If not given, + the region consists of pixels having the same color as the seed + pixel. + :param thresh: Optional threshold value which specifies a maximum + tolerable difference of a pixel value from the 'background' in + order for it to be replaced. Useful for filling regions of + non-homogeneous, but similar, colors. + """ + # based on an implementation by Eric S. Raymond + # amended by yo1995 @20180806 + pixel = image.load() + x, y = xy + try: + background = pixel[x, y] + if _color_diff(value, background) <= thresh: + return # seed point already has fill color + pixel[x, y] = value + except (ValueError, IndexError): + return # seed point outside image + edge = {(x, y)} + # use a set to keep record of current and previous edge pixels + # to reduce memory consumption + full_edge = set() + while edge: + new_edge = set() + for x, y in edge: # 4 adjacent method + for s, t in ((x + 1, y), (x - 1, y), (x, y + 1), (x, y - 1)): + # If already processed, or if a coordinate is negative, skip + if (s, t) in full_edge or s < 0 or t < 0: + continue + try: + p = pixel[s, t] + except (ValueError, IndexError): + pass + else: + full_edge.add((s, t)) + if border is None: + fill = _color_diff(p, background) <= thresh + else: + fill = p != value and p != border + if fill: + pixel[s, t] = value + new_edge.add((s, t)) + full_edge = edge # discard pixels processed + edge = new_edge + + +def _compute_regular_polygon_vertices(bounding_circle, n_sides, rotation): + """ + Generate a list of vertices for a 2D regular polygon. + + :param bounding_circle: The bounding circle is a tuple defined + by a point and radius. The polygon is inscribed in this circle. + (e.g. ``bounding_circle=(x, y, r)`` or ``((x, y), r)``) + :param n_sides: Number of sides + (e.g. ``n_sides=3`` for a triangle, ``6`` for a hexagon) + :param rotation: Apply an arbitrary rotation to the polygon + (e.g. ``rotation=90``, applies a 90 degree rotation) + :return: List of regular polygon vertices + (e.g. ``[(25, 50), (50, 50), (50, 25), (25, 25)]``) + + How are the vertices computed? + 1. Compute the following variables + - theta: Angle between the apothem & the nearest polygon vertex + - side_length: Length of each polygon edge + - centroid: Center of bounding circle (1st, 2nd elements of bounding_circle) + - polygon_radius: Polygon radius (last element of bounding_circle) + - angles: Location of each polygon vertex in polar grid + (e.g. A square with 0 degree rotation => [225.0, 315.0, 45.0, 135.0]) + + 2. For each angle in angles, get the polygon vertex at that angle + The vertex is computed using the equation below. + X= xcos(φ) + ysin(φ) + Y= −xsin(φ) + ycos(φ) + + Note: + φ = angle in degrees + x = 0 + y = polygon_radius + + The formula above assumes rotation around the origin. + In our case, we are rotating around the centroid. + To account for this, we use the formula below + X = xcos(φ) + ysin(φ) + centroid_x + Y = −xsin(φ) + ycos(φ) + centroid_y + """ + # 1. Error Handling + # 1.1 Check `n_sides` has an appropriate value + if not isinstance(n_sides, int): + msg = "n_sides should be an int" + raise TypeError(msg) + if n_sides < 3: + msg = "n_sides should be an int > 2" + raise ValueError(msg) + + # 1.2 Check `bounding_circle` has an appropriate value + if not isinstance(bounding_circle, (list, tuple)): + msg = "bounding_circle should be a tuple" + raise TypeError(msg) + + if len(bounding_circle) == 3: + *centroid, polygon_radius = bounding_circle + elif len(bounding_circle) == 2: + centroid, polygon_radius = bounding_circle + else: + msg = ( + "bounding_circle should contain 2D coordinates " + "and a radius (e.g. (x, y, r) or ((x, y), r) )" + ) + raise ValueError(msg) + + if not all(isinstance(i, (int, float)) for i in (*centroid, polygon_radius)): + msg = "bounding_circle should only contain numeric data" + raise ValueError(msg) + + if not len(centroid) == 2: + msg = "bounding_circle centre should contain 2D coordinates (e.g. (x, y))" + raise ValueError(msg) + + if polygon_radius <= 0: + msg = "bounding_circle radius should be > 0" + raise ValueError(msg) + + # 1.3 Check `rotation` has an appropriate value + if not isinstance(rotation, (int, float)): + msg = "rotation should be an int or float" + raise ValueError(msg) + + # 2. Define Helper Functions + def _apply_rotation(point, degrees, centroid): + return ( + round( + point[0] * math.cos(math.radians(360 - degrees)) + - point[1] * math.sin(math.radians(360 - degrees)) + + centroid[0], + 2, + ), + round( + point[1] * math.cos(math.radians(360 - degrees)) + + point[0] * math.sin(math.radians(360 - degrees)) + + centroid[1], + 2, + ), + ) + + def _compute_polygon_vertex(centroid, polygon_radius, angle): + start_point = [polygon_radius, 0] + return _apply_rotation(start_point, angle, centroid) + + def _get_angles(n_sides, rotation): + angles = [] + degrees = 360 / n_sides + # Start with the bottom left polygon vertex + current_angle = (270 - 0.5 * degrees) + rotation + for _ in range(0, n_sides): + angles.append(current_angle) + current_angle += degrees + if current_angle > 360: + current_angle -= 360 + return angles + + # 3. Variable Declarations + angles = _get_angles(n_sides, rotation) + + # 4. Compute Vertices + return [ + _compute_polygon_vertex(centroid, polygon_radius, angle) for angle in angles + ] + + +def _color_diff(color1, color2): + """ + Uses 1-norm distance to calculate difference between two values. + """ + if isinstance(color2, tuple): + return sum(abs(color1[i] - color2[i]) for i in range(0, len(color2))) + else: + return abs(color1 - color2) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw2.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw2.py new file mode 100644 index 0000000..7ce0224 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageDraw2.py @@ -0,0 +1,193 @@ +# +# The Python Imaging Library +# $Id$ +# +# WCK-style drawing interface operations +# +# History: +# 2003-12-07 fl created +# 2005-05-15 fl updated; added to PIL as ImageDraw2 +# 2005-05-15 fl added text support +# 2005-05-20 fl added arc/chord/pieslice support +# +# Copyright (c) 2003-2005 by Secret Labs AB +# Copyright (c) 2003-2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +""" +(Experimental) WCK-style drawing interface operations + +.. seealso:: :py:mod:`PIL.ImageDraw` +""" + + +from . import Image, ImageColor, ImageDraw, ImageFont, ImagePath + + +class Pen: + """Stores an outline color and width.""" + + def __init__(self, color, width=1, opacity=255): + self.color = ImageColor.getrgb(color) + self.width = width + + +class Brush: + """Stores a fill color""" + + def __init__(self, color, opacity=255): + self.color = ImageColor.getrgb(color) + + +class Font: + """Stores a TrueType font and color""" + + def __init__(self, color, file, size=12): + # FIXME: add support for bitmap fonts + self.color = ImageColor.getrgb(color) + self.font = ImageFont.truetype(file, size) + + +class Draw: + """ + (Experimental) WCK-style drawing interface + """ + + def __init__(self, image, size=None, color=None): + if not hasattr(image, "im"): + image = Image.new(image, size, color) + self.draw = ImageDraw.Draw(image) + self.image = image + self.transform = None + + def flush(self): + return self.image + + def render(self, op, xy, pen, brush=None): + # handle color arguments + outline = fill = None + width = 1 + if isinstance(pen, Pen): + outline = pen.color + width = pen.width + elif isinstance(brush, Pen): + outline = brush.color + width = brush.width + if isinstance(brush, Brush): + fill = brush.color + elif isinstance(pen, Brush): + fill = pen.color + # handle transformation + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + # render the item + if op == "line": + self.draw.line(xy, fill=outline, width=width) + else: + getattr(self.draw, op)(xy, fill=fill, outline=outline) + + def settransform(self, offset): + """Sets a transformation offset.""" + (xoffset, yoffset) = offset + self.transform = (1, 0, xoffset, 0, 1, yoffset) + + def arc(self, xy, start, end, *options): + """ + Draws an arc (a portion of a circle outline) between the start and end + angles, inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.arc` + """ + self.render("arc", xy, start, end, *options) + + def chord(self, xy, start, end, *options): + """ + Same as :py:meth:`~PIL.ImageDraw2.Draw.arc`, but connects the end points + with a straight line. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.chord` + """ + self.render("chord", xy, start, end, *options) + + def ellipse(self, xy, *options): + """ + Draws an ellipse inside the given bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.ellipse` + """ + self.render("ellipse", xy, *options) + + def line(self, xy, *options): + """ + Draws a line between the coordinates in the ``xy`` list. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.line` + """ + self.render("line", xy, *options) + + def pieslice(self, xy, start, end, *options): + """ + Same as arc, but also draws straight lines between the end points and the + center of the bounding box. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.pieslice` + """ + self.render("pieslice", xy, start, end, *options) + + def polygon(self, xy, *options): + """ + Draws a polygon. + + The polygon outline consists of straight lines between the given + coordinates, plus a straight line between the last and the first + coordinate. + + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.polygon` + """ + self.render("polygon", xy, *options) + + def rectangle(self, xy, *options): + """ + Draws a rectangle. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.rectangle` + """ + self.render("rectangle", xy, *options) + + def text(self, xy, text, font): + """ + Draws the string at the given position. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.text` + """ + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + self.draw.text(xy, text, font=font.font, fill=font.color) + + def textbbox(self, xy, text, font): + """ + Returns bounding box (in pixels) of given text. + + :return: ``(left, top, right, bottom)`` bounding box + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textbbox` + """ + if self.transform: + xy = ImagePath.Path(xy) + xy.transform(self.transform) + return self.draw.textbbox(xy, text, font=font.font) + + def textlength(self, text, font): + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. seealso:: :py:meth:`PIL.ImageDraw.ImageDraw.textlength` + """ + return self.draw.textlength(text, font=font.font) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageEnhance.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageEnhance.py new file mode 100644 index 0000000..3b79d5c --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageEnhance.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image enhancement classes +# +# For a background, see "Image Processing By Interpolation and +# Extrapolation", Paul Haeberli and Douglas Voorhies. Available +# at http://www.graficaobscura.com/interp/index.html +# +# History: +# 1996-03-23 fl Created +# 2009-06-16 fl Fixed mean calculation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFilter, ImageStat + + +class _Enhance: + def enhance(self, factor): + """ + Returns an enhanced image. + + :param factor: A floating point value controlling the enhancement. + Factor 1.0 always returns a copy of the original image, + lower factors mean less color (brightness, contrast, + etc), and higher values more. There are no restrictions + on this value. + :rtype: :py:class:`~PIL.Image.Image` + """ + return Image.blend(self.degenerate, self.image, factor) + + +class Color(_Enhance): + """Adjust image color balance. + + This class can be used to adjust the colour balance of an image, in + a manner similar to the controls on a colour TV set. An enhancement + factor of 0.0 gives a black and white image. A factor of 1.0 gives + the original image. + """ + + def __init__(self, image): + self.image = image + self.intermediate_mode = "L" + if "A" in image.getbands(): + self.intermediate_mode = "LA" + + self.degenerate = image.convert(self.intermediate_mode).convert(image.mode) + + +class Contrast(_Enhance): + """Adjust image contrast. + + This class can be used to control the contrast of an image, similar + to the contrast control on a TV set. An enhancement factor of 0.0 + gives a solid grey image. A factor of 1.0 gives the original image. + """ + + def __init__(self, image): + self.image = image + mean = int(ImageStat.Stat(image.convert("L")).mean[0] + 0.5) + self.degenerate = Image.new("L", image.size, mean).convert(image.mode) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Brightness(_Enhance): + """Adjust image brightness. + + This class can be used to control the brightness of an image. An + enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the + original image. + """ + + def __init__(self, image): + self.image = image + self.degenerate = Image.new(image.mode, image.size, 0) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) + + +class Sharpness(_Enhance): + """Adjust image sharpness. + + This class can be used to adjust the sharpness of an image. An + enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the + original image, and a factor of 2.0 gives a sharpened image. + """ + + def __init__(self, image): + self.image = image + self.degenerate = image.filter(ImageFilter.SMOOTH) + + if "A" in image.getbands(): + self.degenerate.putalpha(image.getchannel("A")) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFile.py new file mode 100644 index 0000000..8e4f7df --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFile.py @@ -0,0 +1,773 @@ +# +# The Python Imaging Library. +# $Id$ +# +# base class for image file handlers +# +# history: +# 1995-09-09 fl Created +# 1996-03-11 fl Fixed load mechanism. +# 1996-04-15 fl Added pcx/xbm decoders. +# 1996-04-30 fl Added encoders. +# 1996-12-14 fl Added load helpers +# 1997-01-11 fl Use encode_to_file where possible +# 1997-08-27 fl Flush output in _save +# 1998-03-05 fl Use memory mapping for some modes +# 1999-02-04 fl Use memory mapping also for "I;16" and "I;16B" +# 1999-05-31 fl Added image parser +# 2000-10-12 fl Set readonly flag on memory-mapped images +# 2002-03-20 fl Use better messages for common decoder errors +# 2003-04-21 fl Fall back on mmap/map_buffer if map is not available +# 2003-10-30 fl Added StubImageFile class +# 2004-02-25 fl Made incremental parser more robust +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1995-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import io +import itertools +import struct +import sys + +from . import Image +from ._util import is_path + +MAXBLOCK = 65536 + +SAFEBLOCK = 1024 * 1024 + +LOAD_TRUNCATED_IMAGES = False +"""Whether or not to load truncated image files. User code may change this.""" + +ERRORS = { + -1: "image buffer overrun error", + -2: "decoding error", + -3: "unknown error", + -8: "bad configuration", + -9: "out of memory error", +} +""" +Dict of known error codes returned from :meth:`.PyDecoder.decode`, +:meth:`.PyEncoder.encode` :meth:`.PyEncoder.encode_to_pyfd` and +:meth:`.PyEncoder.encode_to_file`. +""" + + +# +# -------------------------------------------------------------------- +# Helpers + + +def raise_oserror(error): + try: + msg = Image.core.getcodecstatus(error) + except AttributeError: + msg = ERRORS.get(error) + if not msg: + msg = f"decoder error {error}" + msg += " when reading image file" + raise OSError(msg) + + +def _tilesort(t): + # sort on offset + return t[2] + + +# +# -------------------------------------------------------------------- +# ImageFile base class + + +class ImageFile(Image.Image): + """Base class for image file format handlers.""" + + def __init__(self, fp=None, filename=None): + super().__init__() + + self._min_frame = 0 + + self.custom_mimetype = None + + self.tile = None + """ A list of tile descriptors, or ``None`` """ + + self.readonly = 1 # until we know better + + self.decoderconfig = () + self.decodermaxblock = MAXBLOCK + + if is_path(fp): + # filename + self.fp = open(fp, "rb") + self.filename = fp + self._exclusive_fp = True + else: + # stream + self.fp = fp + self.filename = filename + # can be overridden + self._exclusive_fp = None + + try: + try: + self._open() + except ( + IndexError, # end of data + TypeError, # end of data (ord) + KeyError, # unsupported mode + EOFError, # got header but not the first frame + struct.error, + ) as v: + raise SyntaxError(v) from v + + if not self.mode or self.size[0] <= 0 or self.size[1] <= 0: + msg = "not identified by this driver" + raise SyntaxError(msg) + except BaseException: + # close the file only if we have opened it this constructor + if self._exclusive_fp: + self.fp.close() + raise + + def get_format_mimetype(self): + if self.custom_mimetype: + return self.custom_mimetype + if self.format is not None: + return Image.MIME.get(self.format.upper()) + + def __setstate__(self, state): + self.tile = [] + super().__setstate__(state) + + def verify(self): + """Check file integrity""" + + # raise exception if something's wrong. must be called + # directly after open, and closes file when finished. + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def load(self): + """Load image data based on tile list""" + + if self.tile is None: + msg = "cannot load this image" + raise OSError(msg) + + pixel = Image.Image.load(self) + if not self.tile: + return pixel + + self.map = None + use_mmap = self.filename and len(self.tile) == 1 + # As of pypy 2.1.0, memory mapping was failing here. + use_mmap = use_mmap and not hasattr(sys, "pypy_version_info") + + readonly = 0 + + # look for read/seek overrides + try: + read = self.load_read + # don't use mmap if there are custom read/seek functions + use_mmap = False + except AttributeError: + read = self.fp.read + + try: + seek = self.load_seek + use_mmap = False + except AttributeError: + seek = self.fp.seek + + if use_mmap: + # try memory mapping + decoder_name, extents, offset, args = self.tile[0] + if ( + decoder_name == "raw" + and len(args) >= 3 + and args[0] == self.mode + and args[0] in Image._MAPMODES + ): + try: + # use mmap, if possible + import mmap + + with open(self.filename) as fp: + self.map = mmap.mmap(fp.fileno(), 0, access=mmap.ACCESS_READ) + if offset + self.size[1] * args[1] > self.map.size(): + # buffer is not large enough + raise OSError + self.im = Image.core.map_buffer( + self.map, self.size, decoder_name, offset, args + ) + readonly = 1 + # After trashing self.im, + # we might need to reload the palette data. + if self.palette: + self.palette.dirty = 1 + except (AttributeError, OSError, ImportError): + self.map = None + + self.load_prepare() + err_code = -3 # initialize to unknown error + if not self.map: + # sort tiles in file order + self.tile.sort(key=_tilesort) + + try: + # FIXME: This is a hack to handle TIFF's JpegTables tag. + prefix = self.tile_prefix + except AttributeError: + prefix = b"" + + # Remove consecutive duplicates that only differ by their offset + self.tile = [ + list(tiles)[-1] + for _, tiles in itertools.groupby( + self.tile, lambda tile: (tile[0], tile[1], tile[3]) + ) + ] + for decoder_name, extents, offset, args in self.tile: + seek(offset) + decoder = Image._getdecoder( + self.mode, decoder_name, args, self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + if decoder.pulls_fd: + decoder.setfd(self.fp) + err_code = decoder.decode(b"")[1] + else: + b = prefix + while True: + try: + s = read(self.decodermaxblock) + except (IndexError, struct.error) as e: + # truncated png/gif + if LOAD_TRUNCATED_IMAGES: + break + else: + msg = "image file is truncated" + raise OSError(msg) from e + + if not s: # truncated jpeg + if LOAD_TRUNCATED_IMAGES: + break + else: + msg = ( + "image file is truncated " + f"({len(b)} bytes not processed)" + ) + raise OSError(msg) + + b = b + s + n, err_code = decoder.decode(b) + if n < 0: + break + b = b[n:] + finally: + # Need to cleanup here to prevent leaks + decoder.cleanup() + + self.tile = [] + self.readonly = readonly + + self.load_end() + + if self._exclusive_fp and self._close_exclusive_fp_after_loading: + self.fp.close() + self.fp = None + + if not self.map and not LOAD_TRUNCATED_IMAGES and err_code < 0: + # still raised if decoder fails to return anything + raise_oserror(err_code) + + return Image.Image.load(self) + + def load_prepare(self): + # create image memory if necessary + if not self.im or self.im.mode != self.mode or self.im.size != self.size: + self.im = Image.core.new(self.mode, self.size) + # create palette (optional) + if self.mode == "P": + Image.Image.load(self) + + def load_end(self): + # may be overridden + pass + + # may be defined for contained formats + # def load_seek(self, pos): + # pass + + # may be defined for blocked formats (e.g. PNG) + # def load_read(self, bytes): + # pass + + def _seek_check(self, frame): + if ( + frame < self._min_frame + # Only check upper limit on frames if additional seek operations + # are not required to do so + or ( + not (hasattr(self, "_n_frames") and self._n_frames is None) + and frame >= self.n_frames + self._min_frame + ) + ): + msg = "attempt to seek outside sequence" + raise EOFError(msg) + + return self.tell() != frame + + +class StubImageFile(ImageFile): + """ + Base class for stub image loaders. + + A stub loader is an image loader that can identify files of a + certain format, but relies on external code to load the file. + """ + + def _open(self): + msg = "StubImageFile subclass must implement _open" + raise NotImplementedError(msg) + + def load(self): + loader = self._load() + if loader is None: + msg = f"cannot find loader for this {self.format} file" + raise OSError(msg) + image = loader.load(self) + assert image is not None + # become the other object (!) + self.__class__ = image.__class__ + self.__dict__ = image.__dict__ + return image.load() + + def _load(self): + """(Hook) Find actual image loader.""" + msg = "StubImageFile subclass must implement _load" + raise NotImplementedError(msg) + + +class Parser: + """ + Incremental image parser. This class implements the standard + feed/close consumer interface. + """ + + incremental = None + image = None + data = None + decoder = None + offset = 0 + finished = 0 + + def reset(self): + """ + (Consumer) Reset the parser. Note that you can only call this + method immediately after you've created a parser; parser + instances cannot be reused. + """ + assert self.data is None, "cannot reuse parsers" + + def feed(self, data): + """ + (Consumer) Feed data to the parser. + + :param data: A string buffer. + :exception OSError: If the parser failed to parse the image file. + """ + # collect data + + if self.finished: + return + + if self.data is None: + self.data = data + else: + self.data = self.data + data + + # parse what we have + if self.decoder: + if self.offset > 0: + # skip header + skip = min(len(self.data), self.offset) + self.data = self.data[skip:] + self.offset = self.offset - skip + if self.offset > 0 or not self.data: + return + + n, e = self.decoder.decode(self.data) + + if n < 0: + # end of stream + self.data = None + self.finished = 1 + if e < 0: + # decoding error + self.image = None + raise_oserror(e) + else: + # end of image + return + self.data = self.data[n:] + + elif self.image: + # if we end up here with no decoder, this file cannot + # be incrementally parsed. wait until we've gotten all + # available data + pass + + else: + # attempt to open this file + try: + with io.BytesIO(self.data) as fp: + im = Image.open(fp) + except OSError: + # traceback.print_exc() + pass # not enough data + else: + flag = hasattr(im, "load_seek") or hasattr(im, "load_read") + if flag or len(im.tile) != 1: + # custom load code, or multiple tiles + self.decode = None + else: + # initialize decoder + im.load_prepare() + d, e, o, a = im.tile[0] + im.tile = [] + self.decoder = Image._getdecoder(im.mode, d, a, im.decoderconfig) + self.decoder.setimage(im.im, e) + + # calculate decoder offset + self.offset = o + if self.offset <= len(self.data): + self.data = self.data[self.offset :] + self.offset = 0 + + self.image = im + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + """ + (Consumer) Close the stream. + + :returns: An image object. + :exception OSError: If the parser failed to parse the image file either + because it cannot be identified or cannot be + decoded. + """ + # finish decoding + if self.decoder: + # get rid of what's left in the buffers + self.feed(b"") + self.data = self.decoder = None + if not self.finished: + msg = "image was incomplete" + raise OSError(msg) + if not self.image: + msg = "cannot parse this image" + raise OSError(msg) + if self.data: + # incremental parsing not possible; reopen the file + # not that we have all data + with io.BytesIO(self.data) as fp: + try: + self.image = Image.open(fp) + finally: + self.image.load() + return self.image + + +# -------------------------------------------------------------------- + + +def _save(im, fp, tile, bufsize=0): + """Helper to save image based on tile list + + :param im: Image object. + :param fp: File object. + :param tile: Tile list. + :param bufsize: Optional buffer size + """ + + im.load() + if not hasattr(im, "encoderconfig"): + im.encoderconfig = () + tile.sort(key=_tilesort) + # FIXME: make MAXBLOCK a configuration parameter + # It would be great if we could have the encoder specify what it needs + # But, it would need at least the image size in most cases. RawEncode is + # a tricky case. + bufsize = max(MAXBLOCK, bufsize, im.size[0] * 4) # see RawEncode.c + try: + fh = fp.fileno() + fp.flush() + _encode_tile(im, fp, tile, bufsize, fh) + except (AttributeError, io.UnsupportedOperation) as exc: + _encode_tile(im, fp, tile, bufsize, None, exc) + if hasattr(fp, "flush"): + fp.flush() + + +def _encode_tile(im, fp, tile, bufsize, fh, exc=None): + for e, b, o, a in tile: + if o > 0: + fp.seek(o) + encoder = Image._getencoder(im.mode, e, a, im.encoderconfig) + try: + encoder.setimage(im.im, b) + if encoder.pushes_fd: + encoder.setfd(fp) + errcode = encoder.encode_to_pyfd()[1] + else: + if exc: + # compress to Python file-compatible object + while True: + errcode, data = encoder.encode(bufsize)[1:] + fp.write(data) + if errcode: + break + else: + # slight speedup: compress to real file object + errcode = encoder.encode_to_file(fh, bufsize) + if errcode < 0: + msg = f"encoder error {errcode} when writing image file" + raise OSError(msg) from exc + finally: + encoder.cleanup() + + +def _safe_read(fp, size): + """ + Reads large blocks in a safe way. Unlike fp.read(n), this function + doesn't trust the user. If the requested size is larger than + SAFEBLOCK, the file is read block by block. + + :param fp: File handle. Must implement a read method. + :param size: Number of bytes to read. + :returns: A string containing size bytes of data. + + Raises an OSError if the file is truncated and the read cannot be completed + + """ + if size <= 0: + return b"" + if size <= SAFEBLOCK: + data = fp.read(size) + if len(data) < size: + msg = "Truncated File Read" + raise OSError(msg) + return data + data = [] + remaining_size = size + while remaining_size > 0: + block = fp.read(min(remaining_size, SAFEBLOCK)) + if not block: + break + data.append(block) + remaining_size -= len(block) + if sum(len(d) for d in data) < size: + msg = "Truncated File Read" + raise OSError(msg) + return b"".join(data) + + +class PyCodecState: + def __init__(self): + self.xsize = 0 + self.ysize = 0 + self.xoff = 0 + self.yoff = 0 + + def extents(self): + return self.xoff, self.yoff, self.xoff + self.xsize, self.yoff + self.ysize + + +class PyCodec: + def __init__(self, mode, *args): + self.im = None + self.state = PyCodecState() + self.fd = None + self.mode = mode + self.init(args) + + def init(self, args): + """ + Override to perform codec specific initialization + + :param args: Array of args items from the tile entry + :returns: None + """ + self.args = args + + def cleanup(self): + """ + Override to perform codec specific cleanup + + :returns: None + """ + pass + + def setfd(self, fd): + """ + Called from ImageFile to set the Python file-like object + + :param fd: A Python file-like object + :returns: None + """ + self.fd = fd + + def setimage(self, im, extents=None): + """ + Called from ImageFile to set the core output image for the codec + + :param im: A core image object + :param extents: a 4 tuple of (x0, y0, x1, y1) defining the rectangle + for this tile + :returns: None + """ + + # following c code + self.im = im + + if extents: + (x0, y0, x1, y1) = extents + else: + (x0, y0, x1, y1) = (0, 0, 0, 0) + + if x0 == 0 and x1 == 0: + self.state.xsize, self.state.ysize = self.im.size + else: + self.state.xoff = x0 + self.state.yoff = y0 + self.state.xsize = x1 - x0 + self.state.ysize = y1 - y0 + + if self.state.xsize <= 0 or self.state.ysize <= 0: + msg = "Size cannot be negative" + raise ValueError(msg) + + if ( + self.state.xsize + self.state.xoff > self.im.size[0] + or self.state.ysize + self.state.yoff > self.im.size[1] + ): + msg = "Tile cannot extend outside image" + raise ValueError(msg) + + +class PyDecoder(PyCodec): + """ + Python implementation of a format decoder. Override this class and + add the decoding logic in the :meth:`decode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pulls_fd = False + + @property + def pulls_fd(self): + return self._pulls_fd + + def decode(self, buffer): + """ + Override to perform the decoding process. + + :param buffer: A bytes object with the data to be decoded. + :returns: A tuple of ``(bytes consumed, errcode)``. + If finished with decoding return -1 for the bytes consumed. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + raise NotImplementedError() + + def set_as_raw(self, data, rawmode=None): + """ + Convenience method to set the internal image from a stream of raw data + + :param data: Bytes to be set + :param rawmode: The rawmode to be used for the decoder. + If not specified, it will default to the mode of the image + :returns: None + """ + + if not rawmode: + rawmode = self.mode + d = Image._getdecoder(self.mode, "raw", rawmode) + d.setimage(self.im, self.state.extents()) + s = d.decode(data) + + if s[0] >= 0: + msg = "not enough image data" + raise ValueError(msg) + if s[1] != 0: + msg = "cannot decode image data" + raise ValueError(msg) + + +class PyEncoder(PyCodec): + """ + Python implementation of a format encoder. Override this class and + add the decoding logic in the :meth:`encode` method. + + See :ref:`Writing Your Own File Codec in Python` + """ + + _pushes_fd = False + + @property + def pushes_fd(self): + return self._pushes_fd + + def encode(self, bufsize): + """ + Override to perform the encoding process. + + :param bufsize: Buffer size. + :returns: A tuple of ``(bytes encoded, errcode, bytes)``. + If finished with encoding return 1 for the error code. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + raise NotImplementedError() + + def encode_to_pyfd(self): + """ + If ``pushes_fd`` is ``True``, then this method will be used, + and ``encode()`` will only be called once. + + :returns: A tuple of ``(bytes consumed, errcode)``. + Err codes are from :data:`.ImageFile.ERRORS`. + """ + if not self.pushes_fd: + return 0, -8 # bad configuration + bytes_consumed, errcode, data = self.encode(0) + if data: + self.fd.write(data) + return bytes_consumed, errcode + + def encode_to_file(self, fh, bufsize): + """ + :param fh: File handle. + :param bufsize: Buffer size. + + :returns: If finished successfully, return 0. + Otherwise, return an error code. Err codes are from + :data:`.ImageFile.ERRORS`. + """ + errcode = 0 + while errcode == 0: + status, errcode, buf = self.encode(bufsize) + if status > 0: + fh.write(buf[status:]) + return errcode diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFilter.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFilter.py new file mode 100644 index 0000000..33bc7cc --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFilter.py @@ -0,0 +1,550 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard filters +# +# History: +# 1995-11-27 fl Created +# 2002-06-08 fl Added rank and mode filters +# 2003-09-15 fl Fixed rank calculation in rank filter; added expand call +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2002 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +import functools + + +class Filter: + pass + + +class MultibandFilter(Filter): + pass + + +class BuiltinFilter(MultibandFilter): + def filter(self, image): + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + return image.filter(*self.filterargs) + + +class Kernel(BuiltinFilter): + """ + Create a convolution kernel. The current version only + supports 3x3 and 5x5 integer and floating point kernels. + + In the current version, kernels can only be applied to + "L" and "RGB" images. + + :param size: Kernel size, given as (width, height). In the current + version, this must be (3,3) or (5,5). + :param kernel: A sequence containing kernel weights. The kernel will + be flipped vertically before being applied to the image. + :param scale: Scale factor. If given, the result for each pixel is + divided by this value. The default is the sum of the + kernel weights. + :param offset: Offset. If given, this value is added to the result, + after it has been divided by the scale factor. + """ + + name = "Kernel" + + def __init__(self, size, kernel, scale=None, offset=0): + if scale is None: + # default scale is sum of kernel + scale = functools.reduce(lambda a, b: a + b, kernel) + if size[0] * size[1] != len(kernel): + msg = "not enough coefficients in kernel" + raise ValueError(msg) + self.filterargs = size, scale, offset, kernel + + +class RankFilter(Filter): + """ + Create a rank filter. The rank filter sorts all pixels in + a window of the given size, and returns the ``rank``'th value. + + :param size: The kernel size, in pixels. + :param rank: What pixel value to pick. Use 0 for a min filter, + ``size * size / 2`` for a median filter, ``size * size - 1`` + for a max filter, etc. + """ + + name = "Rank" + + def __init__(self, size, rank): + self.size = size + self.rank = rank + + def filter(self, image): + if image.mode == "P": + msg = "cannot filter palette images" + raise ValueError(msg) + image = image.expand(self.size // 2, self.size // 2) + return image.rankfilter(self.size, self.rank) + + +class MedianFilter(RankFilter): + """ + Create a median filter. Picks the median pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Median" + + def __init__(self, size=3): + self.size = size + self.rank = size * size // 2 + + +class MinFilter(RankFilter): + """ + Create a min filter. Picks the lowest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Min" + + def __init__(self, size=3): + self.size = size + self.rank = 0 + + +class MaxFilter(RankFilter): + """ + Create a max filter. Picks the largest pixel value in a window with the + given size. + + :param size: The kernel size, in pixels. + """ + + name = "Max" + + def __init__(self, size=3): + self.size = size + self.rank = size * size - 1 + + +class ModeFilter(Filter): + """ + Create a mode filter. Picks the most frequent pixel value in a box with the + given size. Pixel values that occur only once or twice are ignored; if no + pixel value occurs more than twice, the original pixel value is preserved. + + :param size: The kernel size, in pixels. + """ + + name = "Mode" + + def __init__(self, size=3): + self.size = size + + def filter(self, image): + return image.modefilter(self.size) + + +class GaussianBlur(MultibandFilter): + """Blurs the image with a sequence of extended box filters, which + approximates a Gaussian kernel. For details on accuracy see + + + :param radius: Standard deviation of the Gaussian kernel. + """ + + name = "GaussianBlur" + + def __init__(self, radius=2): + self.radius = radius + + def filter(self, image): + return image.gaussian_blur(self.radius) + + +class BoxBlur(MultibandFilter): + """Blurs the image by setting each pixel to the average value of the pixels + in a square box extending radius pixels in each direction. + Supports float radius of arbitrary size. Uses an optimized implementation + which runs in linear time relative to the size of the image + for any radius value. + + :param radius: Size of the box in one direction. Radius 0 does not blur, + returns an identical image. Radius 1 takes 1 pixel + in each direction, i.e. 9 pixels in total. + """ + + name = "BoxBlur" + + def __init__(self, radius): + if radius < 0: + msg = "radius must be >= 0" + raise ValueError(msg) + self.radius = radius + + def filter(self, image): + return image.box_blur(self.radius) + + +class UnsharpMask(MultibandFilter): + """Unsharp mask filter. + + See Wikipedia's entry on `digital unsharp masking`_ for an explanation of + the parameters. + + :param radius: Blur Radius + :param percent: Unsharp strength, in percent + :param threshold: Threshold controls the minimum brightness change that + will be sharpened + + .. _digital unsharp masking: https://en.wikipedia.org/wiki/Unsharp_masking#Digital_unsharp_masking + + """ # noqa: E501 + + name = "UnsharpMask" + + def __init__(self, radius=2, percent=150, threshold=3): + self.radius = radius + self.percent = percent + self.threshold = threshold + + def filter(self, image): + return image.unsharp_mask(self.radius, self.percent, self.threshold) + + +class BLUR(BuiltinFilter): + name = "Blur" + # fmt: off + filterargs = (5, 5), 16, 0, ( + 1, 1, 1, 1, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 0, 0, 0, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class CONTOUR(BuiltinFilter): + name = "Contour" + # fmt: off + filterargs = (3, 3), 1, 255, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class DETAIL(BuiltinFilter): + name = "Detail" + # fmt: off + filterargs = (3, 3), 6, 0, ( + 0, -1, 0, + -1, 10, -1, + 0, -1, 0, + ) + # fmt: on + + +class EDGE_ENHANCE(BuiltinFilter): + name = "Edge-enhance" + # fmt: off + filterargs = (3, 3), 2, 0, ( + -1, -1, -1, + -1, 10, -1, + -1, -1, -1, + ) + # fmt: on + + +class EDGE_ENHANCE_MORE(BuiltinFilter): + name = "Edge-enhance More" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 9, -1, + -1, -1, -1, + ) + # fmt: on + + +class EMBOSS(BuiltinFilter): + name = "Emboss" + # fmt: off + filterargs = (3, 3), 1, 128, ( + -1, 0, 0, + 0, 1, 0, + 0, 0, 0, + ) + # fmt: on + + +class FIND_EDGES(BuiltinFilter): + name = "Find Edges" + # fmt: off + filterargs = (3, 3), 1, 0, ( + -1, -1, -1, + -1, 8, -1, + -1, -1, -1, + ) + # fmt: on + + +class SHARPEN(BuiltinFilter): + name = "Sharpen" + # fmt: off + filterargs = (3, 3), 16, 0, ( + -2, -2, -2, + -2, 32, -2, + -2, -2, -2, + ) + # fmt: on + + +class SMOOTH(BuiltinFilter): + name = "Smooth" + # fmt: off + filterargs = (3, 3), 13, 0, ( + 1, 1, 1, + 1, 5, 1, + 1, 1, 1, + ) + # fmt: on + + +class SMOOTH_MORE(BuiltinFilter): + name = "Smooth More" + # fmt: off + filterargs = (5, 5), 100, 0, ( + 1, 1, 1, 1, 1, + 1, 5, 5, 5, 1, + 1, 5, 44, 5, 1, + 1, 5, 5, 5, 1, + 1, 1, 1, 1, 1, + ) + # fmt: on + + +class Color3DLUT(MultibandFilter): + """Three-dimensional color lookup table. + + Transforms 3-channel pixels using the values of the channels as coordinates + in the 3D lookup table and interpolating the nearest elements. + + This method allows you to apply almost any color transformation + in constant time by using pre-calculated decimated tables. + + .. versionadded:: 5.2.0 + + :param size: Size of the table. One int or tuple of (int, int, int). + Minimal size in any dimension is 2, maximum is 65. + :param table: Flat lookup table. A list of ``channels * size**3`` + float elements or a list of ``size**3`` channels-sized + tuples with floats. Channels are changed first, + then first dimension, then second, then third. + Value 0.0 corresponds lowest value of output, 1.0 highest. + :param channels: Number of channels in the table. Could be 3 or 4. + Default is 3. + :param target_mode: A mode for the result image. Should have not less + than ``channels`` channels. Default is ``None``, + which means that mode wouldn't be changed. + """ + + name = "Color 3D LUT" + + def __init__(self, size, table, channels=3, target_mode=None, **kwargs): + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + self.size = size = self._check_size(size) + self.channels = channels + self.mode = target_mode + + # Hidden flag `_copy_table=False` could be used to avoid extra copying + # of the table if the table is specially made for the constructor. + copy_table = kwargs.get("_copy_table", True) + items = size[0] * size[1] * size[2] + wrong_size = False + + numpy = None + if hasattr(table, "shape"): + try: + import numpy + except ImportError: # pragma: no cover + pass + + if numpy and isinstance(table, numpy.ndarray): + if copy_table: + table = table.copy() + + if table.shape in [ + (items * channels,), + (items, channels), + (size[2], size[1], size[0], channels), + ]: + table = table.reshape(items * channels) + else: + wrong_size = True + + else: + if copy_table: + table = list(table) + + # Convert to a flat list + if table and isinstance(table[0], (list, tuple)): + table, raw_table = [], table + for pixel in raw_table: + if len(pixel) != channels: + msg = ( + "The elements of the table should " + f"have a length of {channels}." + ) + raise ValueError(msg) + table.extend(pixel) + + if wrong_size or len(table) != items * channels: + msg = ( + "The table should have either channels * size**3 float items " + "or size**3 items of channels-sized tuples with floats. " + f"Table should be: {channels}x{size[0]}x{size[1]}x{size[2]}. " + f"Actual length: {len(table)}" + ) + raise ValueError(msg) + self.table = table + + @staticmethod + def _check_size(size): + try: + _, _, _ = size + except ValueError as e: + msg = "Size should be either an integer or a tuple of three integers." + raise ValueError(msg) from e + except TypeError: + size = (size, size, size) + size = [int(x) for x in size] + for size_1d in size: + if not 2 <= size_1d <= 65: + msg = "Size should be in [2, 65] range." + raise ValueError(msg) + return size + + @classmethod + def generate(cls, size, callback, channels=3, target_mode=None): + """Generates new LUT using provided callback. + + :param size: Size of the table. Passed to the constructor. + :param callback: Function with three parameters which correspond + three color channels. Will be called ``size**3`` + times with values from 0.0 to 1.0 and should return + a tuple with ``channels`` elements. + :param channels: The number of channels which should return callback. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + size_1d, size_2d, size_3d = cls._check_size(size) + if channels not in (3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + + table = [0] * (size_1d * size_2d * size_3d * channels) + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + table[idx_out : idx_out + channels] = callback( + r / (size_1d - 1), g / (size_2d - 1), b / (size_3d - 1) + ) + idx_out += channels + + return cls( + (size_1d, size_2d, size_3d), + table, + channels=channels, + target_mode=target_mode, + _copy_table=False, + ) + + def transform(self, callback, with_normals=False, channels=None, target_mode=None): + """Transforms the table values using provided callback and returns + a new LUT with altered values. + + :param callback: A function which takes old lookup table values + and returns a new set of values. The number + of arguments which function should take is + ``self.channels`` or ``3 + self.channels`` + if ``with_normals`` flag is set. + Should return a tuple of ``self.channels`` or + ``channels`` elements if it is set. + :param with_normals: If true, ``callback`` will be called with + coordinates in the color cube as the first + three arguments. Otherwise, ``callback`` + will be called only with actual color values. + :param channels: The number of channels in the resulting lookup table. + :param target_mode: Passed to the constructor of the resulting + lookup table. + """ + if channels not in (None, 3, 4): + msg = "Only 3 or 4 output channels are supported" + raise ValueError(msg) + ch_in = self.channels + ch_out = channels or ch_in + size_1d, size_2d, size_3d = self.size + + table = [0] * (size_1d * size_2d * size_3d * ch_out) + idx_in = 0 + idx_out = 0 + for b in range(size_3d): + for g in range(size_2d): + for r in range(size_1d): + values = self.table[idx_in : idx_in + ch_in] + if with_normals: + values = callback( + r / (size_1d - 1), + g / (size_2d - 1), + b / (size_3d - 1), + *values, + ) + else: + values = callback(*values) + table[idx_out : idx_out + ch_out] = values + idx_in += ch_in + idx_out += ch_out + + return type(self)( + self.size, + table, + channels=ch_out, + target_mode=target_mode or self.mode, + _copy_table=False, + ) + + def __repr__(self): + r = [ + f"{self.__class__.__name__} from {self.table.__class__.__name__}", + "size={:d}x{:d}x{:d}".format(*self.size), + f"channels={self.channels:d}", + ] + if self.mode: + r.append(f"target_mode={self.mode}") + return "<{}>".format(" ".join(r)) + + def filter(self, image): + from . import Image + + return image.color_lut_3d( + self.mode or image.mode, + Image.Resampling.BILINEAR, + self.channels, + self.size[0], + self.size[1], + self.size[2], + self.table, + ) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFont.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFont.py new file mode 100644 index 0000000..05828a7 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageFont.py @@ -0,0 +1,997 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIL raster font management +# +# History: +# 1996-08-07 fl created (experimental) +# 1997-08-25 fl minor adjustments to handle fonts from pilfont 0.3 +# 1999-02-06 fl rewrote most font management stuff in C +# 1999-03-17 fl take pth files into account in load_path (from Richard Jones) +# 2001-02-17 fl added freetype support +# 2001-05-09 fl added TransposedFont wrapper class +# 2002-03-04 fl make sure we have a "L" or "1" font +# 2002-12-04 fl skip non-directory entries in the system path +# 2003-04-29 fl add embedded default font +# 2003-09-27 fl added support for truetype charmap encodings +# +# Todo: +# Adapt to PILFONT2 format (16-bit fonts, compressed, single file) +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1996-2003 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import base64 +import os +import sys +import warnings +from enum import IntEnum +from io import BytesIO + +from . import Image +from ._util import is_directory, is_path + + +class Layout(IntEnum): + BASIC = 0 + RAQM = 1 + + +MAX_STRING_LENGTH = 1_000_000 + + +try: + from . import _imagingft as core +except ImportError as ex: + from ._util import DeferredError + + core = DeferredError(ex) + + +def _string_length_check(text): + if MAX_STRING_LENGTH is not None and len(text) > MAX_STRING_LENGTH: + msg = "too many characters in string" + raise ValueError(msg) + + +# FIXME: add support for pilfont2 format (see FontFile.py) + +# -------------------------------------------------------------------- +# Font metrics format: +# "PILfont" LF +# fontdescriptor LF +# (optional) key=value... LF +# "DATA" LF +# binary data: 256*10*2 bytes (dx, dy, dstbox, srcbox) +# +# To place a character, cut out srcbox and paste at dstbox, +# relative to the character position. Then move the character +# position according to dx, dy. +# -------------------------------------------------------------------- + + +class ImageFont: + """PIL font wrapper""" + + def _load_pilfont(self, filename): + with open(filename, "rb") as fp: + image = None + for ext in (".png", ".gif", ".pbm"): + if image: + image.close() + try: + fullname = os.path.splitext(filename)[0] + ext + image = Image.open(fullname) + except Exception: + pass + else: + if image and image.mode in ("1", "L"): + break + else: + if image: + image.close() + msg = "cannot find glyph data file" + raise OSError(msg) + + self.file = fullname + + self._load_pilfont_data(fp, image) + image.close() + + def _load_pilfont_data(self, file, image): + # read PILfont header + if file.readline() != b"PILfont\n": + msg = "Not a PILfont file" + raise SyntaxError(msg) + file.readline().split(b";") + self.info = [] # FIXME: should be a dictionary + while True: + s = file.readline() + if not s or s == b"DATA\n": + break + self.info.append(s) + + # read PILfont metrics + data = file.read(256 * 20) + + # check image + if image.mode not in ("1", "L"): + msg = "invalid font image mode" + raise TypeError(msg) + + image.load() + + self.font = Image.core.font(image.im, data) + + def getmask(self, text, mode="", *args, **kwargs): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.font.getmask(text, mode) + + def getbbox(self, text, *args, **kwargs): + """ + Returns bounding box (in pixels) of given text. + + .. versionadded:: 9.2.0 + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return 0, 0, width, height + + def getlength(self, text, *args, **kwargs): + """ + Returns length (in pixels) of given text. + This is the amount by which following text should be offset. + + .. versionadded:: 9.2.0 + """ + _string_length_check(text) + width, height = self.font.getsize(text) + return width + + +## +# Wrapper for FreeType fonts. Application code should use the +# truetype factory function to create font objects. + + +class FreeTypeFont: + """FreeType font wrapper (requires _imagingft service)""" + + def __init__(self, font=None, size=10, index=0, encoding="", layout_engine=None): + # FIXME: use service provider instead + + self.path = font + self.size = size + self.index = index + self.encoding = encoding + + if layout_engine not in (Layout.BASIC, Layout.RAQM): + layout_engine = Layout.BASIC + if core.HAVE_RAQM: + layout_engine = Layout.RAQM + elif layout_engine == Layout.RAQM and not core.HAVE_RAQM: + warnings.warn( + "Raqm layout was requested, but Raqm is not available. " + "Falling back to basic layout." + ) + layout_engine = Layout.BASIC + + self.layout_engine = layout_engine + + def load_from_bytes(f): + self.font_bytes = f.read() + self.font = core.getfont( + "", size, index, encoding, self.font_bytes, layout_engine + ) + + if is_path(font): + if sys.platform == "win32": + font_bytes_path = font if isinstance(font, bytes) else font.encode() + try: + font_bytes_path.decode("ascii") + except UnicodeDecodeError: + # FreeType cannot load fonts with non-ASCII characters on Windows + # So load it into memory first + with open(font, "rb") as f: + load_from_bytes(f) + return + self.font = core.getfont( + font, size, index, encoding, layout_engine=layout_engine + ) + else: + load_from_bytes(font) + + def __getstate__(self): + return [self.path, self.size, self.index, self.encoding, self.layout_engine] + + def __setstate__(self, state): + path, size, index, encoding, layout_engine = state + self.__init__(path, size, index, encoding, layout_engine) + + def getname(self): + """ + :return: A tuple of the font family (e.g. Helvetica) and the font style + (e.g. Bold) + """ + return self.font.family, self.font.style + + def getmetrics(self): + """ + :return: A tuple of the font ascent (the distance from the baseline to + the highest outline point) and descent (the distance from the + baseline to the lowest outline point, a negative value) + """ + return self.font.ascent, self.font.descent + + def getlength(self, text, mode="", direction=None, features=None, language=None): + """ + Returns length (in pixels with 1/64 precision) of given text when rendered + in font with provided direction, features, and language. + + This is the amount by which following text should be offset. + Text bounding box may extend past the length in some fonts, + e.g. when using italics or accents. + + The result is returned as a float; it is a whole number if using basic layout. + + Note that the sum of two lengths may not equal the length of a concatenated + string due to kerning. If you need to adjust for kerning, include the following + character and subtract its length. + + For example, instead of :: + + hello = font.getlength("Hello") + world = font.getlength("World") + hello_world = hello + world # not adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # may fail + + use :: + + hello = font.getlength("HelloW") - font.getlength("W") # adjusted for kerning + world = font.getlength("World") + hello_world = hello + world # adjusted for kerning + assert hello_world == font.getlength("HelloWorld") # True + + or disable kerning with (requires libraqm) :: + + hello = draw.textlength("Hello", font, features=["-kern"]) + world = draw.textlength("World", font, features=["-kern"]) + hello_world = hello + world # kerning is disabled, no need to adjust + assert hello_world == draw.textlength("HelloWorld", font, features=["-kern"]) + + .. versionadded:: 8.0.0 + + :param text: Text to measure. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + :return: Width for horizontal, height for vertical text. + """ + _string_length_check(text) + return self.font.getlength(text, mode, direction, features, language) / 64 + + def getbbox( + self, + text, + mode="", + direction=None, + features=None, + language=None, + stroke_width=0, + anchor=None, + ): + """ + Returns bounding box (in pixels) of given text relative to given anchor + when rendered in font with provided direction, features, and language. + + Use :py:meth:`getlength()` to get the offset of following text with + 1/64 pixel precision. The bounding box includes extra margins for + some fonts, e.g. italics or accents. + + .. versionadded:: 8.0.0 + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + :param stroke_width: The width of the text stroke. + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left. + See :ref:`text-anchors` for valid values. + + :return: ``(left, top, right, bottom)`` bounding box + """ + _string_length_check(text) + size, offset = self.font.getsize( + text, mode, direction, features, language, anchor + ) + left, top = offset[0] - stroke_width, offset[1] - stroke_width + width, height = size[0] + 2 * stroke_width, size[1] + 2 * stroke_width + return left, top, left + width, top + height + + def getmask( + self, + text, + mode="", + direction=None, + features=None, + language=None, + stroke_width=0, + anchor=None, + ink=0, + start=None, + ): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left. + See :ref:`text-anchors` for valid values. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.0 + + :return: An internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module. + """ + return self.getmask2( + text, + mode, + direction=direction, + features=features, + language=language, + stroke_width=stroke_width, + anchor=anchor, + ink=ink, + start=start, + )[0] + + def getmask2( + self, + text, + mode="", + direction=None, + features=None, + language=None, + stroke_width=0, + anchor=None, + ink=0, + start=None, + *args, + **kwargs, + ): + """ + Create a bitmap for the text. + + If the font uses antialiasing, the bitmap should have mode ``L`` and use a + maximum value of 255. If the font has embedded color data, the bitmap + should have mode ``RGBA``. Otherwise, it should have mode ``1``. + + :param text: Text to render. + :param mode: Used by some graphics drivers to indicate what mode the + driver prefers; if empty, the renderer may return either + mode. Note that the mode is always a string, to simplify + C-level implementations. + + .. versionadded:: 1.1.5 + + :param direction: Direction of the text. It can be 'rtl' (right to + left), 'ltr' (left to right) or 'ttb' (top to bottom). + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param features: A list of OpenType font features to be used during text + layout. This is usually used to turn on optional + font features that are not enabled by default, + for example 'dlig' or 'ss01', but can be also + used to turn off default font features for + example '-liga' to disable ligatures or '-kern' + to disable kerning. To get all supported + features, see + https://learn.microsoft.com/en-us/typography/opentype/spec/featurelist + Requires libraqm. + + .. versionadded:: 4.2.0 + + :param language: Language of the text. Different languages may use + different glyph shapes or ligatures. This parameter tells + the font which language the text is in, and to apply the + correct substitutions as appropriate, if available. + It should be a `BCP 47 language code + `_ + Requires libraqm. + + .. versionadded:: 6.0.0 + + :param stroke_width: The width of the text stroke. + + .. versionadded:: 6.2.0 + + :param anchor: The text anchor alignment. Determines the relative location of + the anchor to the text. The default alignment is top left. + See :ref:`text-anchors` for valid values. + + .. versionadded:: 8.0.0 + + :param ink: Foreground ink for rendering in RGBA mode. + + .. versionadded:: 8.0.0 + + :param start: Tuple of horizontal and vertical offset, as text may render + differently when starting at fractional coordinates. + + .. versionadded:: 9.4.0 + + :return: A tuple of an internal PIL storage memory instance as defined by the + :py:mod:`PIL.Image.core` interface module, and the text offset, the + gap between the starting coordinate and the first marking + """ + _string_length_check(text) + if start is None: + start = (0, 0) + im = None + + def fill(mode, size): + nonlocal im + + im = Image.core.fill(mode, size) + return im + + size, offset = self.font.render( + text, + fill, + mode, + direction, + features, + language, + stroke_width, + anchor, + ink, + start[0], + start[1], + Image.MAX_IMAGE_PIXELS, + ) + Image._decompression_bomb_check(size) + return im, offset + + def font_variant( + self, font=None, size=None, index=None, encoding=None, layout_engine=None + ): + """ + Create a copy of this FreeTypeFont object, + using any specified arguments to override the settings. + + Parameters are identical to the parameters used to initialize this + object. + + :return: A FreeTypeFont object. + """ + if font is None: + try: + font = BytesIO(self.font_bytes) + except AttributeError: + font = self.path + return FreeTypeFont( + font=font, + size=self.size if size is None else size, + index=self.index if index is None else index, + encoding=self.encoding if encoding is None else encoding, + layout_engine=layout_engine or self.layout_engine, + ) + + def get_variation_names(self): + """ + :returns: A list of the named styles in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + names = self.font.getvarnames() + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + return [name.replace(b"\x00", b"") for name in names] + + def set_variation_by_name(self, name): + """ + :param name: The name of the style. + :exception OSError: If the font is not a variation font. + """ + names = self.get_variation_names() + if not isinstance(name, bytes): + name = name.encode() + index = names.index(name) + 1 + + if index == getattr(self, "_last_variation_index", None): + # When the same name is set twice in a row, + # there is an 'unknown freetype error' + # https://savannah.nongnu.org/bugs/?56186 + return + self._last_variation_index = index + + self.font.setvarname(index) + + def get_variation_axes(self): + """ + :returns: A list of the axes in a variation font. + :exception OSError: If the font is not a variation font. + """ + try: + axes = self.font.getvaraxes() + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + for axis in axes: + axis["name"] = axis["name"].replace(b"\x00", b"") + return axes + + def set_variation_by_axes(self, axes): + """ + :param axes: A list of values for each axis. + :exception OSError: If the font is not a variation font. + """ + try: + self.font.setvaraxes(axes) + except AttributeError as e: + msg = "FreeType 2.9.1 or greater is required" + raise NotImplementedError(msg) from e + + +class TransposedFont: + """Wrapper for writing rotated or mirrored text""" + + def __init__(self, font, orientation=None): + """ + Wrapper that creates a transposed font from any existing font + object. + + :param font: A font object. + :param orientation: An optional orientation. If given, this should + be one of Image.Transpose.FLIP_LEFT_RIGHT, Image.Transpose.FLIP_TOP_BOTTOM, + Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_180, or + Image.Transpose.ROTATE_270. + """ + self.font = font + self.orientation = orientation # any 'transpose' argument, or None + + def getmask(self, text, mode="", *args, **kwargs): + im = self.font.getmask(text, mode, *args, **kwargs) + if self.orientation is not None: + return im.transpose(self.orientation) + return im + + def getbbox(self, text, *args, **kwargs): + # TransposedFont doesn't support getmask2, move top-left point to (0, 0) + # this has no effect on ImageFont and simulates anchor="lt" for FreeTypeFont + left, top, right, bottom = self.font.getbbox(text, *args, **kwargs) + width = right - left + height = bottom - top + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + return 0, 0, height, width + return 0, 0, width, height + + def getlength(self, text, *args, **kwargs): + if self.orientation in (Image.Transpose.ROTATE_90, Image.Transpose.ROTATE_270): + msg = "text length is undefined for text rotated by 90 or 270 degrees" + raise ValueError(msg) + _string_length_check(text) + return self.font.getlength(text, *args, **kwargs) + + +def load(filename): + """ + Load a font file. This function loads a font object from the given + bitmap font file, and returns the corresponding font object. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + f = ImageFont() + f._load_pilfont(filename) + return f + + +def truetype(font=None, size=10, index=0, encoding="", layout_engine=None): + """ + Load a TrueType or OpenType font from a file or file-like object, + and create a font object. + This function loads a font object from the given file or file-like + object, and creates a font object for a font of the given size. + + Pillow uses FreeType to open font files. On Windows, be aware that FreeType + will keep the file open as long as the FreeTypeFont object exists. Windows + limits the number of files that can be open in C at once to 512, so if many + fonts are opened simultaneously and that limit is approached, an + ``OSError`` may be thrown, reporting that FreeType "cannot open resource". + A workaround would be to copy the file(s) into memory, and open that instead. + + This function requires the _imagingft service. + + :param font: A filename or file-like object containing a TrueType font. + If the file is not found in this filename, the loader may also + search in other directories, such as the :file:`fonts/` + directory on Windows or :file:`/Library/Fonts/`, + :file:`/System/Library/Fonts/` and :file:`~/Library/Fonts/` on + macOS. + + :param size: The requested size, in pixels. + :param index: Which font face to load (default is first available face). + :param encoding: Which font encoding to use (default is Unicode). Possible + encodings include (see the FreeType documentation for more + information): + + * "unic" (Unicode) + * "symb" (Microsoft Symbol) + * "ADOB" (Adobe Standard) + * "ADBE" (Adobe Expert) + * "ADBC" (Adobe Custom) + * "armn" (Apple Roman) + * "sjis" (Shift JIS) + * "gb " (PRC) + * "big5" + * "wans" (Extended Wansung) + * "joha" (Johab) + * "lat1" (Latin-1) + + This specifies the character set to use. It does not alter the + encoding of any text provided in subsequent operations. + :param layout_engine: Which layout engine to use, if available: + :data:`.ImageFont.Layout.BASIC` or :data:`.ImageFont.Layout.RAQM`. + If it is available, Raqm layout will be used by default. + Otherwise, basic layout will be used. + + Raqm layout is recommended for all non-English text. If Raqm layout + is not required, basic layout will have better performance. + + You can check support for Raqm layout using + :py:func:`PIL.features.check_feature` with ``feature="raqm"``. + + .. versionadded:: 4.2.0 + :return: A font object. + :exception OSError: If the file could not be read. + """ + + def freetype(font): + return FreeTypeFont(font, size, index, encoding, layout_engine) + + try: + return freetype(font) + except OSError: + if not is_path(font): + raise + ttf_filename = os.path.basename(font) + + dirs = [] + if sys.platform == "win32": + # check the windows font repository + # NOTE: must use uppercase WINDIR, to work around bugs in + # 1.5.2's os.environ.get() + windir = os.environ.get("WINDIR") + if windir: + dirs.append(os.path.join(windir, "fonts")) + elif sys.platform in ("linux", "linux2"): + lindirs = os.environ.get("XDG_DATA_DIRS") + if not lindirs: + # According to the freedesktop spec, XDG_DATA_DIRS should + # default to /usr/share + lindirs = "/usr/share" + dirs += [os.path.join(lindir, "fonts") for lindir in lindirs.split(":")] + elif sys.platform == "darwin": + dirs += [ + "/Library/Fonts", + "/System/Library/Fonts", + os.path.expanduser("~/Library/Fonts"), + ] + + ext = os.path.splitext(ttf_filename)[1] + first_font_with_a_different_extension = None + for directory in dirs: + for walkroot, walkdir, walkfilenames in os.walk(directory): + for walkfilename in walkfilenames: + if ext and walkfilename == ttf_filename: + return freetype(os.path.join(walkroot, walkfilename)) + elif not ext and os.path.splitext(walkfilename)[0] == ttf_filename: + fontpath = os.path.join(walkroot, walkfilename) + if os.path.splitext(fontpath)[1] == ".ttf": + return freetype(fontpath) + if not ext and first_font_with_a_different_extension is None: + first_font_with_a_different_extension = fontpath + if first_font_with_a_different_extension: + return freetype(first_font_with_a_different_extension) + raise + + +def load_path(filename): + """ + Load font file. Same as :py:func:`~PIL.ImageFont.load`, but searches for a + bitmap font along the Python path. + + :param filename: Name of font file. + :return: A font object. + :exception OSError: If the file could not be read. + """ + for directory in sys.path: + if is_directory(directory): + if not isinstance(filename, str): + filename = filename.decode("utf-8") + try: + return load(os.path.join(directory, filename)) + except OSError: + pass + msg = "cannot find font file" + raise OSError(msg) + + +def load_default(): + """Load a "better than nothing" default font. + + .. versionadded:: 1.1.4 + + :return: A font object. + """ + f = ImageFont() + f._load_pilfont_data( + # courB08 + BytesIO( + base64.b64decode( + b""" +UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA +BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL +AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA +AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB +ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A +BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB +//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA +AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH +AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA +ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv +AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/ +/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5 +AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA +AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG +AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA +BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA +AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA +2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF +AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA//// ++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA +////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA +BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv +AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA +AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA +AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA +BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP// +//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA +AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF +AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB +mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn +AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA +AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7 +AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA +Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB +//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA +AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ +AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC +DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ +AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/ ++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5 +AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/ +///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG +AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA +BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA +Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC +eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG +AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA//// ++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA +////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA +BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT +AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A +AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA +Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA +Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP// +//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA +AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ +AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA +LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5 +AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA +AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5 +AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA +AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG +AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA +EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK +AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA +pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG +AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA//// ++QAGAAIAzgAKANUAEw== +""" + ) + ), + Image.open( + BytesIO( + base64.b64decode( + b""" +iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u +Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9 +M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g +LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F +IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA +Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791 +NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx +in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9 +SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY +AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt +y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG +ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY +lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H +/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3 +AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47 +c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/ +/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw +pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv +oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR +evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA +AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v// +Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR +w7IkEbzhVQAAAABJRU5ErkJggg== +""" + ) + ) + ), + ) + return f diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageGrab.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageGrab.py new file mode 100644 index 0000000..927033c --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageGrab.py @@ -0,0 +1,169 @@ +# +# The Python Imaging Library +# $Id$ +# +# screen grabber +# +# History: +# 2001-04-26 fl created +# 2001-09-17 fl use builtin driver, if present +# 2002-11-19 fl added grabclipboard support +# +# Copyright (c) 2001-2002 by Secret Labs AB +# Copyright (c) 2001-2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import io +import os +import shutil +import subprocess +import sys +import tempfile + +from . import Image + + +def grab(bbox=None, include_layered_windows=False, all_screens=False, xdisplay=None): + if xdisplay is None: + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + args = ["screencapture"] + if bbox: + left, top, right, bottom = bbox + args += ["-R", f"{left},{top},{right-left},{bottom-top}"] + subprocess.call(args + ["-x", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_resized = im.resize((right - left, bottom - top)) + im.close() + return im_resized + return im + elif sys.platform == "win32": + offset, size, data = Image.core.grabscreen_win32( + include_layered_windows, all_screens + ) + im = Image.frombytes( + "RGB", + size, + data, + # RGB, 32-bit line padding, origin lower left corner + "raw", + "BGR", + (size[0] * 3 + 3) & -4, + -1, + ) + if bbox: + x0, y0 = offset + left, top, right, bottom = bbox + im = im.crop((left - x0, top - y0, right - x0, bottom - y0)) + return im + try: + if not Image.core.HAVE_XCB: + msg = "Pillow was built without XCB support" + raise OSError(msg) + size, data = Image.core.grabscreen_x11(xdisplay) + except OSError: + if ( + xdisplay is None + and sys.platform not in ("darwin", "win32") + and shutil.which("gnome-screenshot") + ): + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + subprocess.call(["gnome-screenshot", "-f", filepath]) + im = Image.open(filepath) + im.load() + os.unlink(filepath) + if bbox: + im_cropped = im.crop(bbox) + im.close() + return im_cropped + return im + else: + raise + else: + im = Image.frombytes("RGB", size, data, "raw", "BGRX", size[0] * 4, 1) + if bbox: + im = im.crop(bbox) + return im + + +def grabclipboard(): + if sys.platform == "darwin": + fh, filepath = tempfile.mkstemp(".png") + os.close(fh) + commands = [ + 'set theFile to (open for access POSIX file "' + + filepath + + '" with write permission)', + "try", + " write (the clipboard as «class PNGf») to theFile", + "end try", + "close access theFile", + ] + script = ["osascript"] + for command in commands: + script += ["-e", command] + subprocess.call(script) + + im = None + if os.stat(filepath).st_size != 0: + im = Image.open(filepath) + im.load() + os.unlink(filepath) + return im + elif sys.platform == "win32": + fmt, data = Image.core.grabclipboard_win32() + if fmt == "file": # CF_HDROP + import struct + + o = struct.unpack_from("I", data)[0] + if data[16] != 0: + files = data[o:].decode("utf-16le").split("\0") + else: + files = data[o:].decode("mbcs").split("\0") + return files[: files.index("")] + if isinstance(data, bytes): + data = io.BytesIO(data) + if fmt == "png": + from . import PngImagePlugin + + return PngImagePlugin.PngImageFile(data) + elif fmt == "DIB": + from . import BmpImagePlugin + + return BmpImagePlugin.DibImageFile(data) + return None + else: + if shutil.which("wl-paste"): + output = subprocess.check_output(["wl-paste", "-l"]).decode() + mimetypes = output.splitlines() + if "image/png" in mimetypes: + mimetype = "image/png" + elif mimetypes: + mimetype = mimetypes[0] + else: + mimetype = None + + args = ["wl-paste"] + if mimetype: + args.extend(["-t", mimetype]) + elif shutil.which("xclip"): + args = ["xclip", "-selection", "clipboard", "-t", "image/png", "-o"] + else: + msg = "wl-paste or xclip is required for ImageGrab.grabclipboard() on Linux" + raise NotImplementedError(msg) + p = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + err = p.stderr + if err: + msg = f"{args[0]} error: {err.strip().decode()}" + raise ChildProcessError(msg) + data = io.BytesIO(p.stdout) + im = Image.open(data) + im.load() + return im diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMath.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMath.py new file mode 100644 index 0000000..ac7d36b --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMath.py @@ -0,0 +1,263 @@ +# +# The Python Imaging Library +# $Id$ +# +# a simple math add-on for the Python Imaging Library +# +# History: +# 1999-02-15 fl Original PIL Plus release +# 2005-05-05 fl Simplified and cleaned up for PIL 1.1.6 +# 2005-09-12 fl Fixed int() and float() for Python 2.4.1 +# +# Copyright (c) 1999-2005 by Secret Labs AB +# Copyright (c) 2005 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import builtins + +from . import Image, _imagingmath + + +def _isconstant(v): + return isinstance(v, (int, float)) + + +class _Operand: + """Wraps an image operand, providing standard operators""" + + def __init__(self, im): + self.im = im + + def __fixup(self, im1): + # convert image to suitable mode + if isinstance(im1, _Operand): + # argument was an image. + if im1.im.mode in ("1", "L"): + return im1.im.convert("I") + elif im1.im.mode in ("I", "F"): + return im1.im + else: + msg = f"unsupported mode: {im1.im.mode}" + raise ValueError(msg) + else: + # argument was a constant + if _isconstant(im1) and self.im.mode in ("1", "L", "I"): + return Image.new("I", self.im.size, im1) + else: + return Image.new("F", self.im.size, im1) + + def apply(self, op, im1, im2=None, mode=None): + im1 = self.__fixup(im1) + if im2 is None: + # unary operation + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.unop(op, out.im.id, im1.im.id) + else: + # binary operation + im2 = self.__fixup(im2) + if im1.mode != im2.mode: + # convert both arguments to floating point + if im1.mode != "F": + im1 = im1.convert("F") + if im2.mode != "F": + im2 = im2.convert("F") + if im1.size != im2.size: + # crop both arguments to a common size + size = (min(im1.size[0], im2.size[0]), min(im1.size[1], im2.size[1])) + if im1.size != size: + im1 = im1.crop((0, 0) + size) + if im2.size != size: + im2 = im2.crop((0, 0) + size) + out = Image.new(mode or im1.mode, im1.size, None) + im1.load() + im2.load() + try: + op = getattr(_imagingmath, op + "_" + im1.mode) + except AttributeError as e: + msg = f"bad operand type for '{op}'" + raise TypeError(msg) from e + _imagingmath.binop(op, out.im.id, im1.im.id, im2.im.id) + return _Operand(out) + + # unary operators + def __bool__(self): + # an image is "true" if it contains at least one non-zero pixel + return self.im.getbbox() is not None + + def __abs__(self): + return self.apply("abs", self) + + def __pos__(self): + return self + + def __neg__(self): + return self.apply("neg", self) + + # binary operators + def __add__(self, other): + return self.apply("add", self, other) + + def __radd__(self, other): + return self.apply("add", other, self) + + def __sub__(self, other): + return self.apply("sub", self, other) + + def __rsub__(self, other): + return self.apply("sub", other, self) + + def __mul__(self, other): + return self.apply("mul", self, other) + + def __rmul__(self, other): + return self.apply("mul", other, self) + + def __truediv__(self, other): + return self.apply("div", self, other) + + def __rtruediv__(self, other): + return self.apply("div", other, self) + + def __mod__(self, other): + return self.apply("mod", self, other) + + def __rmod__(self, other): + return self.apply("mod", other, self) + + def __pow__(self, other): + return self.apply("pow", self, other) + + def __rpow__(self, other): + return self.apply("pow", other, self) + + # bitwise + def __invert__(self): + return self.apply("invert", self) + + def __and__(self, other): + return self.apply("and", self, other) + + def __rand__(self, other): + return self.apply("and", other, self) + + def __or__(self, other): + return self.apply("or", self, other) + + def __ror__(self, other): + return self.apply("or", other, self) + + def __xor__(self, other): + return self.apply("xor", self, other) + + def __rxor__(self, other): + return self.apply("xor", other, self) + + def __lshift__(self, other): + return self.apply("lshift", self, other) + + def __rshift__(self, other): + return self.apply("rshift", self, other) + + # logical + def __eq__(self, other): + return self.apply("eq", self, other) + + def __ne__(self, other): + return self.apply("ne", self, other) + + def __lt__(self, other): + return self.apply("lt", self, other) + + def __le__(self, other): + return self.apply("le", self, other) + + def __gt__(self, other): + return self.apply("gt", self, other) + + def __ge__(self, other): + return self.apply("ge", self, other) + + +# conversions +def imagemath_int(self): + return _Operand(self.im.convert("I")) + + +def imagemath_float(self): + return _Operand(self.im.convert("F")) + + +# logical +def imagemath_equal(self, other): + return self.apply("eq", self, other, mode="I") + + +def imagemath_notequal(self, other): + return self.apply("ne", self, other, mode="I") + + +def imagemath_min(self, other): + return self.apply("min", self, other) + + +def imagemath_max(self, other): + return self.apply("max", self, other) + + +def imagemath_convert(self, mode): + return _Operand(self.im.convert(mode)) + + +ops = {} +for k, v in list(globals().items()): + if k[:10] == "imagemath_": + ops[k[10:]] = v + + +def eval(expression, _dict={}, **kw): + """ + Evaluates an image expression. + + :param expression: A string containing a Python-style expression. + :param options: Values to add to the evaluation context. You + can either use a dictionary, or one or more keyword + arguments. + :return: The evaluated expression. This is usually an image object, but can + also be an integer, a floating point value, or a pixel tuple, + depending on the expression. + """ + + # build execution namespace + args = ops.copy() + args.update(_dict) + args.update(kw) + for k, v in list(args.items()): + if hasattr(v, "im"): + args[k] = _Operand(v) + + compiled_code = compile(expression, "", "eval") + + def scan(code): + for const in code.co_consts: + if type(const) == type(compiled_code): + scan(const) + + for name in code.co_names: + if name not in args and name != "abs": + msg = f"'{name}' not allowed" + raise ValueError(msg) + + scan(compiled_code) + out = builtins.eval(expression, {"__builtins": {"abs": abs}}, args) + try: + return out.im + except AttributeError: + return out diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMode.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMode.py new file mode 100644 index 0000000..a0b3351 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageMode.py @@ -0,0 +1,90 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard mode descriptors +# +# History: +# 2006-03-20 fl Added +# +# Copyright (c) 2006 by Secret Labs AB. +# Copyright (c) 2006 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import sys + +# mode descriptor cache +_modes = None + + +class ModeDescriptor: + """Wrapper for mode strings.""" + + def __init__(self, mode, bands, basemode, basetype, typestr): + self.mode = mode + self.bands = bands + self.basemode = basemode + self.basetype = basetype + self.typestr = typestr + + def __str__(self): + return self.mode + + +def getmode(mode): + """Gets a mode descriptor for the given mode.""" + global _modes + if not _modes: + # initialize mode cache + modes = {} + endian = "<" if sys.byteorder == "little" else ">" + for m, (basemode, basetype, bands, typestr) in { + # core modes + # Bits need to be extended to bytes + "1": ("L", "L", ("1",), "|b1"), + "L": ("L", "L", ("L",), "|u1"), + "I": ("L", "I", ("I",), endian + "i4"), + "F": ("L", "F", ("F",), endian + "f4"), + "P": ("P", "L", ("P",), "|u1"), + "RGB": ("RGB", "L", ("R", "G", "B"), "|u1"), + "RGBX": ("RGB", "L", ("R", "G", "B", "X"), "|u1"), + "RGBA": ("RGB", "L", ("R", "G", "B", "A"), "|u1"), + "CMYK": ("RGB", "L", ("C", "M", "Y", "K"), "|u1"), + "YCbCr": ("RGB", "L", ("Y", "Cb", "Cr"), "|u1"), + # UNDONE - unsigned |u1i1i1 + "LAB": ("RGB", "L", ("L", "A", "B"), "|u1"), + "HSV": ("RGB", "L", ("H", "S", "V"), "|u1"), + # extra experimental modes + "RGBa": ("RGB", "L", ("R", "G", "B", "a"), "|u1"), + "BGR;15": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;16": ("RGB", "L", ("B", "G", "R"), "|u1"), + "BGR;24": ("RGB", "L", ("B", "G", "R"), "|u1"), + "LA": ("L", "L", ("L", "A"), "|u1"), + "La": ("L", "L", ("L", "a"), "|u1"), + "PA": ("RGB", "L", ("P", "A"), "|u1"), + }.items(): + modes[m] = ModeDescriptor(m, bands, basemode, basetype, typestr) + # mapping modes + for i16mode, typestr in { + # I;16 == I;16L, and I;32 == I;32L + "I;16": "u2", + "I;16BS": ">i2", + "I;16N": endian + "u2", + "I;16NS": endian + "i2", + "I;32": "u4", + "I;32L": "i4", + "I;32LS": " + +import re + +from . import Image, _imagingmorph + +LUT_SIZE = 1 << 9 + +# fmt: off +ROTATION_MATRIX = [ + 6, 3, 0, + 7, 4, 1, + 8, 5, 2, +] +MIRROR_MATRIX = [ + 2, 1, 0, + 5, 4, 3, + 8, 7, 6, +] +# fmt: on + + +class LutBuilder: + """A class for building a MorphLut from a descriptive language + + The input patterns is a list of a strings sequences like these:: + + 4:(... + .1. + 111)->1 + + (whitespaces including linebreaks are ignored). The option 4 + describes a series of symmetry operations (in this case a + 4-rotation), the pattern is described by: + + - . or X - Ignore + - 1 - Pixel is on + - 0 - Pixel is off + + The result of the operation is described after "->" string. + + The default is to return the current pixel value, which is + returned if no other match is found. + + Operations: + + - 4 - 4 way rotation + - N - Negate + - 1 - Dummy op for no other operation (an op must always be given) + - M - Mirroring + + Example:: + + lb = LutBuilder(patterns = ["4:(... .1. 111)->1"]) + lut = lb.build_lut() + + """ + + def __init__(self, patterns=None, op_name=None): + if patterns is not None: + self.patterns = patterns + else: + self.patterns = [] + self.lut = None + if op_name is not None: + known_patterns = { + "corner": ["1:(... ... ...)->0", "4:(00. 01. ...)->1"], + "dilation4": ["4:(... .0. .1.)->1"], + "dilation8": ["4:(... .0. .1.)->1", "4:(... .0. ..1)->1"], + "erosion4": ["4:(... .1. .0.)->0"], + "erosion8": ["4:(... .1. .0.)->0", "4:(... .1. ..0)->0"], + "edge": [ + "1:(... ... ...)->0", + "4:(.0. .1. ...)->1", + "4:(01. .1. ...)->1", + ], + } + if op_name not in known_patterns: + msg = "Unknown pattern " + op_name + "!" + raise Exception(msg) + + self.patterns = known_patterns[op_name] + + def add_patterns(self, patterns): + self.patterns += patterns + + def build_default_lut(self): + symbols = [0, 1] + m = 1 << 4 # pos of current pixel + self.lut = bytearray(symbols[(i & m) > 0] for i in range(LUT_SIZE)) + + def get_lut(self): + return self.lut + + def _string_permute(self, pattern, permutation): + """string_permute takes a pattern and a permutation and returns the + string permuted according to the permutation list. + """ + assert len(permutation) == 9 + return "".join(pattern[p] for p in permutation) + + def _pattern_permute(self, basic_pattern, options, basic_result): + """pattern_permute takes a basic pattern and its result and clones + the pattern according to the modifications described in the $options + parameter. It returns a list of all cloned patterns.""" + patterns = [(basic_pattern, basic_result)] + + # rotations + if "4" in options: + res = patterns[-1][1] + for i in range(4): + patterns.append( + (self._string_permute(patterns[-1][0], ROTATION_MATRIX), res) + ) + # mirror + if "M" in options: + n = len(patterns) + for pattern, res in patterns[:n]: + patterns.append((self._string_permute(pattern, MIRROR_MATRIX), res)) + + # negate + if "N" in options: + n = len(patterns) + for pattern, res in patterns[:n]: + # Swap 0 and 1 + pattern = pattern.replace("0", "Z").replace("1", "0").replace("Z", "1") + res = 1 - int(res) + patterns.append((pattern, res)) + + return patterns + + def build_lut(self): + """Compile all patterns into a morphology lut. + + TBD :Build based on (file) morphlut:modify_lut + """ + self.build_default_lut() + patterns = [] + + # Parse and create symmetries of the patterns strings + for p in self.patterns: + m = re.search(r"(\w*):?\s*\((.+?)\)\s*->\s*(\d)", p.replace("\n", "")) + if not m: + msg = 'Syntax error in pattern "' + p + '"' + raise Exception(msg) + options = m.group(1) + pattern = m.group(2) + result = int(m.group(3)) + + # Get rid of spaces + pattern = pattern.replace(" ", "").replace("\n", "") + + patterns += self._pattern_permute(pattern, options, result) + + # compile the patterns into regular expressions for speed + for i, pattern in enumerate(patterns): + p = pattern[0].replace(".", "X").replace("X", "[01]") + p = re.compile(p) + patterns[i] = (p, pattern[1]) + + # Step through table and find patterns that match. + # Note that all the patterns are searched. The last one + # caught overrides + for i in range(LUT_SIZE): + # Build the bit pattern + bitpattern = bin(i)[2:] + bitpattern = ("0" * (9 - len(bitpattern)) + bitpattern)[::-1] + + for p, r in patterns: + if p.match(bitpattern): + self.lut[i] = [0, 1][r] + + return self.lut + + +class MorphOp: + """A class for binary morphological operators""" + + def __init__(self, lut=None, op_name=None, patterns=None): + """Create a binary morphological operator""" + self.lut = lut + if op_name is not None: + self.lut = LutBuilder(op_name=op_name).build_lut() + elif patterns is not None: + self.lut = LutBuilder(patterns=patterns).build_lut() + + def apply(self, image): + """Run a single morphological operation on an image + + Returns a tuple of the number of changed pixels and the + morphed image""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + outimage = Image.new(image.mode, image.size, None) + count = _imagingmorph.apply(bytes(self.lut), image.im.id, outimage.im.id) + return count, outimage + + def match(self, image): + """Get a list of coordinates matching the morphological operation on + an image. + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.match(bytes(self.lut), image.im.id) + + def get_on_pixels(self, image): + """Get a list of all turned on pixels in a binary image + + Returns a list of tuples of (x,y) coordinates + of all matching pixels. See :ref:`coordinate-system`.""" + + if image.mode != "L": + msg = "Image mode must be L" + raise ValueError(msg) + return _imagingmorph.get_on_pixels(image.im.id) + + def load_lut(self, filename): + """Load an operator from an mrl file""" + with open(filename, "rb") as f: + self.lut = bytearray(f.read()) + + if len(self.lut) != LUT_SIZE: + self.lut = None + msg = "Wrong size operator file!" + raise Exception(msg) + + def save_lut(self, filename): + """Save an operator to an mrl file""" + if self.lut is None: + msg = "No operator loaded" + raise Exception(msg) + with open(filename, "wb") as f: + f.write(self.lut) + + def set_lut(self, lut): + """Set the lut from an external source""" + self.lut = lut diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageOps.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageOps.py new file mode 100644 index 0000000..1770277 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageOps.py @@ -0,0 +1,628 @@ +# +# The Python Imaging Library. +# $Id$ +# +# standard image operations +# +# History: +# 2001-10-20 fl Created +# 2001-10-23 fl Added autocontrast operator +# 2001-12-18 fl Added Kevin's fit operator +# 2004-03-14 fl Fixed potential division by zero in equalize +# 2005-05-05 fl Fixed equalize for low number of values +# +# Copyright (c) 2001-2004 by Secret Labs AB +# Copyright (c) 2001-2004 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import functools +import operator +import re + +from . import ExifTags, Image, ImagePalette + +# +# helpers + + +def _border(border): + if isinstance(border, tuple): + if len(border) == 2: + left, top = right, bottom = border + elif len(border) == 4: + left, top, right, bottom = border + else: + left = top = right = bottom = border + return left, top, right, bottom + + +def _color(color, mode): + if isinstance(color, str): + from . import ImageColor + + color = ImageColor.getcolor(color, mode) + return color + + +def _lut(image, lut): + if image.mode == "P": + # FIXME: apply to lookup table, not image data + msg = "mode P support coming soon" + raise NotImplementedError(msg) + elif image.mode in ("L", "RGB"): + if image.mode == "RGB" and len(lut) == 256: + lut = lut + lut + lut + return image.point(lut) + else: + msg = "not supported for this image mode" + raise OSError(msg) + + +# +# actions + + +def autocontrast(image, cutoff=0, ignore=None, mask=None, preserve_tone=False): + """ + Maximize (normalize) image contrast. This function calculates a + histogram of the input image (or mask region), removes ``cutoff`` percent of the + lightest and darkest pixels from the histogram, and remaps the image + so that the darkest pixel becomes black (0), and the lightest + becomes white (255). + + :param image: The image to process. + :param cutoff: The percent to cut off from the histogram on the low and + high ends. Either a tuple of (low, high), or a single + number for both. + :param ignore: The background pixel value (use None for no background). + :param mask: Histogram used in contrast operation is computed using pixels + within the mask. If no mask is given the entire image is used + for histogram computation. + :param preserve_tone: Preserve image tone in Photoshop-like style autocontrast. + + .. versionadded:: 8.2.0 + + :return: An image. + """ + if preserve_tone: + histogram = image.convert("L").histogram(mask) + else: + histogram = image.histogram(mask) + + lut = [] + for layer in range(0, len(histogram), 256): + h = histogram[layer : layer + 256] + if ignore is not None: + # get rid of outliers + try: + h[ignore] = 0 + except TypeError: + # assume sequence + for ix in ignore: + h[ix] = 0 + if cutoff: + # cut off pixels from both ends of the histogram + if not isinstance(cutoff, tuple): + cutoff = (cutoff, cutoff) + # get number of pixels + n = 0 + for ix in range(256): + n = n + h[ix] + # remove cutoff% pixels from the low end + cut = n * cutoff[0] // 100 + for lo in range(256): + if cut > h[lo]: + cut = cut - h[lo] + h[lo] = 0 + else: + h[lo] -= cut + cut = 0 + if cut <= 0: + break + # remove cutoff% samples from the high end + cut = n * cutoff[1] // 100 + for hi in range(255, -1, -1): + if cut > h[hi]: + cut = cut - h[hi] + h[hi] = 0 + else: + h[hi] -= cut + cut = 0 + if cut <= 0: + break + # find lowest/highest samples after preprocessing + for lo in range(256): + if h[lo]: + break + for hi in range(255, -1, -1): + if h[hi]: + break + if hi <= lo: + # don't bother + lut.extend(list(range(256))) + else: + scale = 255.0 / (hi - lo) + offset = -lo * scale + for ix in range(256): + ix = int(ix * scale + offset) + if ix < 0: + ix = 0 + elif ix > 255: + ix = 255 + lut.append(ix) + return _lut(image, lut) + + +def colorize(image, black, white, mid=None, blackpoint=0, whitepoint=255, midpoint=127): + """ + Colorize grayscale image. + This function calculates a color wedge which maps all black pixels in + the source image to the first color and all white pixels to the + second color. If ``mid`` is specified, it uses three-color mapping. + The ``black`` and ``white`` arguments should be RGB tuples or color names; + optionally you can use three-color mapping by also specifying ``mid``. + Mapping positions for any of the colors can be specified + (e.g. ``blackpoint``), where these parameters are the integer + value corresponding to where the corresponding color should be mapped. + These parameters must have logical order, such that + ``blackpoint <= midpoint <= whitepoint`` (if ``mid`` is specified). + + :param image: The image to colorize. + :param black: The color to use for black input pixels. + :param white: The color to use for white input pixels. + :param mid: The color to use for midtone input pixels. + :param blackpoint: an int value [0, 255] for the black mapping. + :param whitepoint: an int value [0, 255] for the white mapping. + :param midpoint: an int value [0, 255] for the midtone mapping. + :return: An image. + """ + + # Initial asserts + assert image.mode == "L" + if mid is None: + assert 0 <= blackpoint <= whitepoint <= 255 + else: + assert 0 <= blackpoint <= midpoint <= whitepoint <= 255 + + # Define colors from arguments + black = _color(black, "RGB") + white = _color(white, "RGB") + if mid is not None: + mid = _color(mid, "RGB") + + # Empty lists for the mapping + red = [] + green = [] + blue = [] + + # Create the low-end values + for i in range(0, blackpoint): + red.append(black[0]) + green.append(black[1]) + blue.append(black[2]) + + # Create the mapping (2-color) + if mid is None: + range_map = range(0, whitepoint - blackpoint) + + for i in range_map: + red.append(black[0] + i * (white[0] - black[0]) // len(range_map)) + green.append(black[1] + i * (white[1] - black[1]) // len(range_map)) + blue.append(black[2] + i * (white[2] - black[2]) // len(range_map)) + + # Create the mapping (3-color) + else: + range_map1 = range(0, midpoint - blackpoint) + range_map2 = range(0, whitepoint - midpoint) + + for i in range_map1: + red.append(black[0] + i * (mid[0] - black[0]) // len(range_map1)) + green.append(black[1] + i * (mid[1] - black[1]) // len(range_map1)) + blue.append(black[2] + i * (mid[2] - black[2]) // len(range_map1)) + for i in range_map2: + red.append(mid[0] + i * (white[0] - mid[0]) // len(range_map2)) + green.append(mid[1] + i * (white[1] - mid[1]) // len(range_map2)) + blue.append(mid[2] + i * (white[2] - mid[2]) // len(range_map2)) + + # Create the high-end values + for i in range(0, 256 - whitepoint): + red.append(white[0]) + green.append(white[1]) + blue.append(white[2]) + + # Return converted image + image = image.convert("RGB") + return _lut(image, red + green + blue) + + +def contain(image, size, method=Image.Resampling.BICUBIC): + """ + Returns a resized version of the image, set to the maximum width and height + within the requested size, while maintaining the original aspect ratio. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :return: An image. + """ + + im_ratio = image.width / image.height + dest_ratio = size[0] / size[1] + + if im_ratio != dest_ratio: + if im_ratio > dest_ratio: + new_height = round(image.height / image.width * size[0]) + if new_height != size[1]: + size = (size[0], new_height) + else: + new_width = round(image.width / image.height * size[1]) + if new_width != size[0]: + size = (new_width, size[1]) + return image.resize(size, resample=method) + + +def pad(image, size, method=Image.Resampling.BICUBIC, color=None, centering=(0.5, 0.5)): + """ + Returns a resized and padded version of the image, expanded to fill the + requested aspect ratio and size. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :param color: The background color of the padded image. + :param centering: Control the position of the original image within the + padded version. + + (0.5, 0.5) will keep the image centered + (0, 0) will keep the image aligned to the top left + (1, 1) will keep the image aligned to the bottom + right + :return: An image. + """ + + resized = contain(image, size, method) + if resized.size == size: + out = resized + else: + out = Image.new(image.mode, size, color) + if resized.palette: + out.putpalette(resized.getpalette()) + if resized.width != size[0]: + x = round((size[0] - resized.width) * max(0, min(centering[0], 1))) + out.paste(resized, (x, 0)) + else: + y = round((size[1] - resized.height) * max(0, min(centering[1], 1))) + out.paste(resized, (0, y)) + return out + + +def crop(image, border=0): + """ + Remove border from image. The same amount of pixels are removed + from all four sides. This function works on all image modes. + + .. seealso:: :py:meth:`~PIL.Image.Image.crop` + + :param image: The image to crop. + :param border: The number of pixels to remove. + :return: An image. + """ + left, top, right, bottom = _border(border) + return image.crop((left, top, image.size[0] - right, image.size[1] - bottom)) + + +def scale(image, factor, resample=Image.Resampling.BICUBIC): + """ + Returns a rescaled image by a specific factor given in parameter. + A factor greater than 1 expands the image, between 0 and 1 contracts the + image. + + :param image: The image to rescale. + :param factor: The expansion factor, as a float. + :param resample: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :returns: An :py:class:`~PIL.Image.Image` object. + """ + if factor == 1: + return image.copy() + elif factor <= 0: + msg = "the factor must be greater than 0" + raise ValueError(msg) + else: + size = (round(factor * image.width), round(factor * image.height)) + return image.resize(size, resample) + + +def deform(image, deformer, resample=Image.Resampling.BILINEAR): + """ + Deform the image. + + :param image: The image to deform. + :param deformer: A deformer object. Any object that implements a + ``getmesh`` method can be used. + :param resample: An optional resampling filter. Same values possible as + in the PIL.Image.transform function. + :return: An image. + """ + return image.transform( + image.size, Image.Transform.MESH, deformer.getmesh(image), resample + ) + + +def equalize(image, mask=None): + """ + Equalize the image histogram. This function applies a non-linear + mapping to the input image, in order to create a uniform + distribution of grayscale values in the output image. + + :param image: The image to equalize. + :param mask: An optional mask. If given, only the pixels selected by + the mask are included in the analysis. + :return: An image. + """ + if image.mode == "P": + image = image.convert("RGB") + h = image.histogram(mask) + lut = [] + for b in range(0, len(h), 256): + histo = [_f for _f in h[b : b + 256] if _f] + if len(histo) <= 1: + lut.extend(list(range(256))) + else: + step = (functools.reduce(operator.add, histo) - histo[-1]) // 255 + if not step: + lut.extend(list(range(256))) + else: + n = step // 2 + for i in range(256): + lut.append(n // step) + n = n + h[i + b] + return _lut(image, lut) + + +def expand(image, border=0, fill=0): + """ + Add border to the image + + :param image: The image to expand. + :param border: Border width, in pixels. + :param fill: Pixel fill value (a color value). Default is 0 (black). + :return: An image. + """ + left, top, right, bottom = _border(border) + width = left + image.size[0] + right + height = top + image.size[1] + bottom + color = _color(fill, image.mode) + if image.palette: + palette = ImagePalette.ImagePalette(palette=image.getpalette()) + if isinstance(color, tuple): + color = palette.getcolor(color) + else: + palette = None + out = Image.new(image.mode, (width, height), color) + if palette: + out.putpalette(palette.palette) + out.paste(image, (left, top)) + return out + + +def fit(image, size, method=Image.Resampling.BICUBIC, bleed=0.0, centering=(0.5, 0.5)): + """ + Returns a resized and cropped version of the image, cropped to the + requested aspect ratio and size. + + This function was contributed by Kevin Cazabon. + + :param image: The image to resize and crop. + :param size: The requested output size in pixels, given as a + (width, height) tuple. + :param method: Resampling method to use. Default is + :py:attr:`~PIL.Image.Resampling.BICUBIC`. + See :ref:`concept-filters`. + :param bleed: Remove a border around the outside of the image from all + four edges. The value is a decimal percentage (use 0.01 for + one percent). The default value is 0 (no border). + Cannot be greater than or equal to 0.5. + :param centering: Control the cropping position. Use (0.5, 0.5) for + center cropping (e.g. if cropping the width, take 50% off + of the left side, and therefore 50% off the right side). + (0.0, 0.0) will crop from the top left corner (i.e. if + cropping the width, take all of the crop off of the right + side, and if cropping the height, take all of it off the + bottom). (1.0, 0.0) will crop from the bottom left + corner, etc. (i.e. if cropping the width, take all of the + crop off the left side, and if cropping the height take + none from the top, and therefore all off the bottom). + :return: An image. + """ + + # by Kevin Cazabon, Feb 17/2000 + # kevin@cazabon.com + # https://www.cazabon.com + + # ensure centering is mutable + centering = list(centering) + + if not 0.0 <= centering[0] <= 1.0: + centering[0] = 0.5 + if not 0.0 <= centering[1] <= 1.0: + centering[1] = 0.5 + + if not 0.0 <= bleed < 0.5: + bleed = 0.0 + + # calculate the area to use for resizing and cropping, subtracting + # the 'bleed' around the edges + + # number of pixels to trim off on Top and Bottom, Left and Right + bleed_pixels = (bleed * image.size[0], bleed * image.size[1]) + + live_size = ( + image.size[0] - bleed_pixels[0] * 2, + image.size[1] - bleed_pixels[1] * 2, + ) + + # calculate the aspect ratio of the live_size + live_size_ratio = live_size[0] / live_size[1] + + # calculate the aspect ratio of the output image + output_ratio = size[0] / size[1] + + # figure out if the sides or top/bottom will be cropped off + if live_size_ratio == output_ratio: + # live_size is already the needed ratio + crop_width = live_size[0] + crop_height = live_size[1] + elif live_size_ratio >= output_ratio: + # live_size is wider than what's needed, crop the sides + crop_width = output_ratio * live_size[1] + crop_height = live_size[1] + else: + # live_size is taller than what's needed, crop the top and bottom + crop_width = live_size[0] + crop_height = live_size[0] / output_ratio + + # make the crop + crop_left = bleed_pixels[0] + (live_size[0] - crop_width) * centering[0] + crop_top = bleed_pixels[1] + (live_size[1] - crop_height) * centering[1] + + crop = (crop_left, crop_top, crop_left + crop_width, crop_top + crop_height) + + # resize the image and return it + return image.resize(size, method, box=crop) + + +def flip(image): + """ + Flip the image vertically (top to bottom). + + :param image: The image to flip. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_TOP_BOTTOM) + + +def grayscale(image): + """ + Convert the image to grayscale. + + :param image: The image to convert. + :return: An image. + """ + return image.convert("L") + + +def invert(image): + """ + Invert (negate) the image. + + :param image: The image to invert. + :return: An image. + """ + lut = [] + for i in range(256): + lut.append(255 - i) + return image.point(lut) if image.mode == "1" else _lut(image, lut) + + +def mirror(image): + """ + Flip image horizontally (left to right). + + :param image: The image to mirror. + :return: An image. + """ + return image.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +def posterize(image, bits): + """ + Reduce the number of bits for each color channel. + + :param image: The image to posterize. + :param bits: The number of bits to keep for each channel (1-8). + :return: An image. + """ + lut = [] + mask = ~(2 ** (8 - bits) - 1) + for i in range(256): + lut.append(i & mask) + return _lut(image, lut) + + +def solarize(image, threshold=128): + """ + Invert all pixel values above a threshold. + + :param image: The image to solarize. + :param threshold: All pixels above this greyscale level are inverted. + :return: An image. + """ + lut = [] + for i in range(256): + if i < threshold: + lut.append(i) + else: + lut.append(255 - i) + return _lut(image, lut) + + +def exif_transpose(image, *, in_place=False): + """ + If an image has an EXIF Orientation tag, other than 1, transpose the image + accordingly, and remove the orientation data. + + :param image: The image to transpose. + :param in_place: Boolean. Keyword-only argument. + If ``True``, the original image is modified in-place, and ``None`` is returned. + If ``False`` (default), a new :py:class:`~PIL.Image.Image` object is returned + with the transposition applied. If there is no transposition, a copy of the + image will be returned. + """ + image_exif = image.getexif() + orientation = image_exif.get(ExifTags.Base.Orientation) + method = { + 2: Image.Transpose.FLIP_LEFT_RIGHT, + 3: Image.Transpose.ROTATE_180, + 4: Image.Transpose.FLIP_TOP_BOTTOM, + 5: Image.Transpose.TRANSPOSE, + 6: Image.Transpose.ROTATE_270, + 7: Image.Transpose.TRANSVERSE, + 8: Image.Transpose.ROTATE_90, + }.get(orientation) + if method is not None: + transposed_image = image.transpose(method) + if in_place: + image.im = transposed_image.im + image.pyaccess = None + image._size = transposed_image._size + exif_image = image if in_place else transposed_image + + exif = exif_image.getexif() + if ExifTags.Base.Orientation in exif: + del exif[ExifTags.Base.Orientation] + if "exif" in exif_image.info: + exif_image.info["exif"] = exif.tobytes() + elif "Raw profile type exif" in exif_image.info: + exif_image.info["Raw profile type exif"] = exif.tobytes().hex() + elif "XML:com.adobe.xmp" in exif_image.info: + for pattern in ( + r'tiff:Orientation="([0-9])"', + r"([0-9])", + ): + exif_image.info["XML:com.adobe.xmp"] = re.sub( + pattern, "", exif_image.info["XML:com.adobe.xmp"] + ) + if not in_place: + return transposed_image + elif not in_place: + return image.copy() diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePalette.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePalette.py new file mode 100644 index 0000000..f0c0947 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePalette.py @@ -0,0 +1,266 @@ +# +# The Python Imaging Library. +# $Id$ +# +# image palette object +# +# History: +# 1996-03-11 fl Rewritten. +# 1997-01-03 fl Up and running. +# 1997-08-23 fl Added load hack +# 2001-04-16 fl Fixed randint shadow bug in random() +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import array + +from . import GimpGradientFile, GimpPaletteFile, ImageColor, PaletteFile + + +class ImagePalette: + """ + Color palette for palette mapped images + + :param mode: The mode to use for the palette. See: + :ref:`concept-modes`. Defaults to "RGB" + :param palette: An optional palette. If given, it must be a bytearray, + an array or a list of ints between 0-255. The list must consist of + all channels for one color followed by the next color (e.g. RGBRGBRGB). + Defaults to an empty palette. + """ + + def __init__(self, mode="RGB", palette=None): + self.mode = mode + self.rawmode = None # if set, palette contains raw data + self.palette = palette or bytearray() + self.dirty = None + + @property + def palette(self): + return self._palette + + @palette.setter + def palette(self, palette): + self._colors = None + self._palette = palette + + @property + def colors(self): + if self._colors is None: + mode_len = len(self.mode) + self._colors = {} + for i in range(0, len(self.palette), mode_len): + color = tuple(self.palette[i : i + mode_len]) + if color in self._colors: + continue + self._colors[color] = i // mode_len + return self._colors + + @colors.setter + def colors(self, colors): + self._colors = colors + + def copy(self): + new = ImagePalette() + + new.mode = self.mode + new.rawmode = self.rawmode + if self.palette is not None: + new.palette = self.palette[:] + new.dirty = self.dirty + + return new + + def getdata(self): + """ + Get palette contents in format suitable for the low-level + ``im.putpalette`` primitive. + + .. warning:: This method is experimental. + """ + if self.rawmode: + return self.rawmode, self.palette + return self.mode, self.tobytes() + + def tobytes(self): + """Convert palette to bytes. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(self.palette, bytes): + return self.palette + arr = array.array("B", self.palette) + return arr.tobytes() + + # Declare tostring as an alias for tobytes + tostring = tobytes + + def getcolor(self, color, image=None): + """Given an rgb tuple, allocate palette entry. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(color, tuple): + if self.mode == "RGB": + if len(color) == 4: + if color[3] != 255: + msg = "cannot add non-opaque RGBA color to RGB palette" + raise ValueError(msg) + color = color[:3] + elif self.mode == "RGBA": + if len(color) == 3: + color += (255,) + try: + return self.colors[color] + except KeyError as e: + # allocate new color slot + if not isinstance(self.palette, bytearray): + self._palette = bytearray(self.palette) + index = len(self.palette) // 3 + special_colors = () + if image: + special_colors = ( + image.info.get("background"), + image.info.get("transparency"), + ) + while index in special_colors: + index += 1 + if index >= 256: + if image: + # Search for an unused index + for i, count in reversed(list(enumerate(image.histogram()))): + if count == 0 and i not in special_colors: + index = i + break + if index >= 256: + msg = "cannot allocate more than 256 colors" + raise ValueError(msg) from e + self.colors[color] = index + if index * 3 < len(self.palette): + self._palette = ( + self.palette[: index * 3] + + bytes(color) + + self.palette[index * 3 + 3 :] + ) + else: + self._palette += bytes(color) + self.dirty = 1 + return index + else: + msg = f"unknown color specifier: {repr(color)}" + raise ValueError(msg) + + def save(self, fp): + """Save palette to text file. + + .. warning:: This method is experimental. + """ + if self.rawmode: + msg = "palette contains raw palette data" + raise ValueError(msg) + if isinstance(fp, str): + fp = open(fp, "w") + fp.write("# Palette\n") + fp.write(f"# Mode: {self.mode}\n") + for i in range(256): + fp.write(f"{i}") + for j in range(i * len(self.mode), (i + 1) * len(self.mode)): + try: + fp.write(f" {self.palette[j]}") + except IndexError: + fp.write(" 0") + fp.write("\n") + fp.close() + + +# -------------------------------------------------------------------- +# Internal + + +def raw(rawmode, data): + palette = ImagePalette() + palette.rawmode = rawmode + palette.palette = data + palette.dirty = 1 + return palette + + +# -------------------------------------------------------------------- +# Factories + + +def make_linear_lut(black, white): + lut = [] + if black == 0: + for i in range(256): + lut.append(white * i // 255) + else: + raise NotImplementedError # FIXME + return lut + + +def make_gamma_lut(exp): + lut = [] + for i in range(256): + lut.append(int(((i / 255.0) ** exp) * 255.0 + 0.5)) + return lut + + +def negative(mode="RGB"): + palette = list(range(256 * len(mode))) + palette.reverse() + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def random(mode="RGB"): + from random import randint + + palette = [] + for i in range(256 * len(mode)): + palette.append(randint(0, 255)) + return ImagePalette(mode, palette) + + +def sepia(white="#fff0c0"): + bands = [make_linear_lut(0, band) for band in ImageColor.getrgb(white)] + return ImagePalette("RGB", [bands[i % 3][i // 3] for i in range(256 * 3)]) + + +def wedge(mode="RGB"): + palette = list(range(256 * len(mode))) + return ImagePalette(mode, [i // len(mode) for i in palette]) + + +def load(filename): + # FIXME: supports GIMP gradients only + + with open(filename, "rb") as fp: + for paletteHandler in [ + GimpPaletteFile.GimpPaletteFile, + GimpGradientFile.GimpGradientFile, + PaletteFile.PaletteFile, + ]: + try: + fp.seek(0) + lut = paletteHandler(fp).getpalette() + if lut: + break + except (SyntaxError, ValueError): + # import traceback + # traceback.print_exc() + pass + else: + msg = "cannot load palette" + raise OSError(msg) + + return lut # data, rawmode diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePath.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePath.py new file mode 100644 index 0000000..3d3538c --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImagePath.py @@ -0,0 +1,19 @@ +# +# The Python Imaging Library +# $Id$ +# +# path interface +# +# History: +# 1996-11-04 fl Created +# 2002-04-14 fl Added documentation stub class +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + +from . import Image + +Path = Image.core.path diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageQt.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageQt.py new file mode 100644 index 0000000..9b72454 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageQt.py @@ -0,0 +1,216 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a simple Qt image interface. +# +# history: +# 2006-06-03 fl: created +# 2006-06-04 fl: inherit from QImage instead of wrapping it +# 2006-06-05 fl: removed toimage helper; move string support to ImageQt +# 2013-11-13 fl: add support for Qt5 (aurelien.ballier@cyclonit.com) +# +# Copyright (c) 2006 by Secret Labs AB +# Copyright (c) 2006 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import sys +from io import BytesIO + +from . import Image +from ._util import is_path + +qt_versions = [ + ["6", "PyQt6"], + ["side6", "PySide6"], +] + +# If a version has already been imported, attempt it first +qt_versions.sort(key=lambda qt_version: qt_version[1] in sys.modules, reverse=True) +for qt_version, qt_module in qt_versions: + try: + if qt_module == "PyQt6": + from PyQt6.QtCore import QBuffer, QIODevice + from PyQt6.QtGui import QImage, QPixmap, qRgba + elif qt_module == "PySide6": + from PySide6.QtCore import QBuffer, QIODevice + from PySide6.QtGui import QImage, QPixmap, qRgba + except (ImportError, RuntimeError): + continue + qt_is_installed = True + break +else: + qt_is_installed = False + qt_version = None + + +def rgb(r, g, b, a=255): + """(Internal) Turns an RGB color into a Qt compatible color integer.""" + # use qRgb to pack the colors, and then turn the resulting long + # into a negative integer with the same bitpattern. + return qRgba(r, g, b, a) & 0xFFFFFFFF + + +def fromqimage(im): + """ + :param im: QImage or PIL ImageQt object + """ + buffer = QBuffer() + if qt_version == "6": + try: + qt_openmode = QIODevice.OpenModeFlag + except AttributeError: + qt_openmode = QIODevice.OpenMode + else: + qt_openmode = QIODevice + buffer.open(qt_openmode.ReadWrite) + # preserve alpha channel with png + # otherwise ppm is more friendly with Image.open + if im.hasAlphaChannel(): + im.save(buffer, "png") + else: + im.save(buffer, "ppm") + + b = BytesIO() + b.write(buffer.data()) + buffer.close() + b.seek(0) + + return Image.open(b) + + +def fromqpixmap(im): + return fromqimage(im) + # buffer = QBuffer() + # buffer.open(QIODevice.ReadWrite) + # # im.save(buffer) + # # What if png doesn't support some image features like animation? + # im.save(buffer, 'ppm') + # bytes_io = BytesIO() + # bytes_io.write(buffer.data()) + # buffer.close() + # bytes_io.seek(0) + # return Image.open(bytes_io) + + +def align8to32(bytes, width, mode): + """ + converts each scanline of data from 8 bit to 32 bit aligned + """ + + bits_per_pixel = {"1": 1, "L": 8, "P": 8, "I;16": 16}[mode] + + # calculate bytes per line and the extra padding if needed + bits_per_line = bits_per_pixel * width + full_bytes_per_line, remaining_bits_per_line = divmod(bits_per_line, 8) + bytes_per_line = full_bytes_per_line + (1 if remaining_bits_per_line else 0) + + extra_padding = -bytes_per_line % 4 + + # already 32 bit aligned by luck + if not extra_padding: + return bytes + + new_data = [] + for i in range(len(bytes) // bytes_per_line): + new_data.append( + bytes[i * bytes_per_line : (i + 1) * bytes_per_line] + + b"\x00" * extra_padding + ) + + return b"".join(new_data) + + +def _toqclass_helper(im): + data = None + colortable = None + exclusive_fp = False + + # handle filename, if given instead of image name + if hasattr(im, "toUtf8"): + # FIXME - is this really the best way to do this? + im = str(im.toUtf8(), "utf-8") + if is_path(im): + im = Image.open(im) + exclusive_fp = True + + qt_format = QImage.Format if qt_version == "6" else QImage + if im.mode == "1": + format = qt_format.Format_Mono + elif im.mode == "L": + format = qt_format.Format_Indexed8 + colortable = [] + for i in range(256): + colortable.append(rgb(i, i, i)) + elif im.mode == "P": + format = qt_format.Format_Indexed8 + colortable = [] + palette = im.getpalette() + for i in range(0, len(palette), 3): + colortable.append(rgb(*palette[i : i + 3])) + elif im.mode == "RGB": + # Populate the 4th channel with 255 + im = im.convert("RGBA") + + data = im.tobytes("raw", "BGRA") + format = qt_format.Format_RGB32 + elif im.mode == "RGBA": + data = im.tobytes("raw", "BGRA") + format = qt_format.Format_ARGB32 + elif im.mode == "I;16" and hasattr(qt_format, "Format_Grayscale16"): # Qt 5.13+ + im = im.point(lambda i: i * 256) + + format = qt_format.Format_Grayscale16 + else: + if exclusive_fp: + im.close() + msg = f"unsupported image mode {repr(im.mode)}" + raise ValueError(msg) + + size = im.size + __data = data or align8to32(im.tobytes(), size[0], im.mode) + if exclusive_fp: + im.close() + return {"data": __data, "size": size, "format": format, "colortable": colortable} + + +if qt_is_installed: + + class ImageQt(QImage): + def __init__(self, im): + """ + An PIL image wrapper for Qt. This is a subclass of PyQt's QImage + class. + + :param im: A PIL Image object, or a file name (given either as + Python string or a PyQt string object). + """ + im_data = _toqclass_helper(im) + # must keep a reference, or Qt will crash! + # All QImage constructors that take data operate on an existing + # buffer, so this buffer has to hang on for the life of the image. + # Fixes https://github.com/python-pillow/Pillow/issues/1370 + self.__data = im_data["data"] + super().__init__( + self.__data, + im_data["size"][0], + im_data["size"][1], + im_data["format"], + ) + if im_data["colortable"]: + self.setColorTable(im_data["colortable"]) + + +def toqimage(im): + return ImageQt(im) + + +def toqpixmap(im): + # # This doesn't work. For now using a dumb approach. + # im_data = _toqclass_helper(im) + # result = QPixmap(im_data["size"][0], im_data["size"][1]) + # result.loadFromData(im_data["data"]) + qimage = toqimage(im) + return QPixmap.fromImage(qimage) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageSequence.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageSequence.py new file mode 100644 index 0000000..c4bb633 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageSequence.py @@ -0,0 +1,76 @@ +# +# The Python Imaging Library. +# $Id$ +# +# sequence support classes +# +# history: +# 1997-02-20 fl Created +# +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## + + +class Iterator: + """ + This class implements an iterator object that can be used to loop + over an image sequence. + + You can use the ``[]`` operator to access elements by index. This operator + will raise an :py:exc:`IndexError` if you try to access a nonexistent + frame. + + :param im: An image object. + """ + + def __init__(self, im): + if not hasattr(im, "seek"): + msg = "im must have seek method" + raise AttributeError(msg) + self.im = im + self.position = getattr(self.im, "_min_frame", 0) + + def __getitem__(self, ix): + try: + self.im.seek(ix) + return self.im + except EOFError as e: + raise IndexError from e # end of sequence + + def __iter__(self): + return self + + def __next__(self): + try: + self.im.seek(self.position) + self.position += 1 + return self.im + except EOFError as e: + raise StopIteration from e + + +def all_frames(im, func=None): + """ + Applies a given function to all frames in an image or a list of images. + The frames are returned as a list of separate images. + + :param im: An image, or a list of images. + :param func: The function to apply to all of the image frames. + :returns: A list of images. + """ + if not isinstance(im, list): + im = [im] + + ims = [] + for imSequence in im: + current = imSequence.tell() + + ims += [im_frame.copy() for im_frame in Iterator(imSequence)] + + imSequence.seek(current) + return [func(im) for im in ims] if func else ims diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageShow.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageShow.py new file mode 100644 index 0000000..8b1c3f8 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageShow.py @@ -0,0 +1,323 @@ +# +# The Python Imaging Library. +# $Id$ +# +# im.show() drivers +# +# History: +# 2008-04-06 fl Created +# +# Copyright (c) Secret Labs AB 2008. +# +# See the README file for information on usage and redistribution. +# +import os +import shutil +import subprocess +import sys +from shlex import quote + +from . import Image + +_viewers = [] + + +def register(viewer, order=1): + """ + The :py:func:`register` function is used to register additional viewers:: + + from PIL import ImageShow + ImageShow.register(MyViewer()) # MyViewer will be used as a last resort + ImageShow.register(MySecondViewer(), 0) # MySecondViewer will be prioritised + ImageShow.register(ImageShow.XVViewer(), 0) # XVViewer will be prioritised + + :param viewer: The viewer to be registered. + :param order: + Zero or a negative integer to prepend this viewer to the list, + a positive integer to append it. + """ + try: + if issubclass(viewer, Viewer): + viewer = viewer() + except TypeError: + pass # raised if viewer wasn't a class + if order > 0: + _viewers.append(viewer) + else: + _viewers.insert(0, viewer) + + +def show(image, title=None, **options): + r""" + Display a given image. + + :param image: An image object. + :param title: Optional title. Not all viewers can display the title. + :param \**options: Additional viewer options. + :returns: ``True`` if a suitable viewer was found, ``False`` otherwise. + """ + for viewer in _viewers: + if viewer.show(image, title=title, **options): + return True + return False + + +class Viewer: + """Base class for viewers.""" + + # main api + + def show(self, image, **options): + """ + The main function for displaying an image. + Converts the given image to the target format and displays it. + """ + + if not ( + image.mode in ("1", "RGBA") + or (self.format == "PNG" and image.mode in ("I;16", "LA")) + ): + base = Image.getmodebase(image.mode) + if image.mode != base: + image = image.convert(base) + + return self.show_image(image, **options) + + # hook methods + + format = None + """The format to convert the image into.""" + options = {} + """Additional options used to convert the image.""" + + def get_format(self, image): + """Return format name, or ``None`` to save as PGM/PPM.""" + return self.format + + def get_command(self, file, **options): + """ + Returns the command used to display the file. + Not implemented in the base class. + """ + raise NotImplementedError + + def save_image(self, image): + """Save to temporary file and return filename.""" + return image._dump(format=self.get_format(image), **self.options) + + def show_image(self, image, **options): + """Display the given image.""" + return self.show_file(self.save_image(image), **options) + + def show_file(self, path, **options): + """ + Display given file. + """ + os.system(self.get_command(path, **options)) # nosec + return 1 + + +# -------------------------------------------------------------------- + + +class WindowsViewer(Viewer): + """The default viewer on Windows is the default system application for PNG files.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file, **options): + return ( + f'start "Pillow" /WAIT "{file}" ' + "&& ping -n 4 127.0.0.1 >NUL " + f'&& del /f "{file}"' + ) + + +if sys.platform == "win32": + register(WindowsViewer) + + +class MacViewer(Viewer): + """The default viewer on macOS using ``Preview.app``.""" + + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file, **options): + # on darwin open returns immediately resulting in the temp + # file removal while app is opening + command = "open -a Preview.app" + command = f"({command} {quote(file)}; sleep 20; rm -f {quote(file)})&" + return command + + def show_file(self, path, **options): + """ + Display given file. + """ + subprocess.call(["open", "-a", "Preview.app", path]) + executable = sys.executable or shutil.which("python3") + if executable: + subprocess.Popen( + [ + executable, + "-c", + "import os, sys, time; time.sleep(20); os.remove(sys.argv[1])", + path, + ] + ) + return 1 + + +if sys.platform == "darwin": + register(MacViewer) + + +class UnixViewer(Viewer): + format = "PNG" + options = {"compress_level": 1, "save_all": True} + + def get_command(self, file, **options): + command = self.get_command_ex(file, **options)[0] + return f"({command} {quote(file)}" + + +class XDGViewer(UnixViewer): + """ + The freedesktop.org ``xdg-open`` command. + """ + + def get_command_ex(self, file, **options): + command = executable = "xdg-open" + return command, executable + + def show_file(self, path, **options): + """ + Display given file. + """ + subprocess.Popen(["xdg-open", path]) + return 1 + + +class DisplayViewer(UnixViewer): + """ + The ImageMagick ``display`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex(self, file, title=None, **options): + command = executable = "display" + if title: + command += f" -title {quote(title)}" + return command, executable + + def show_file(self, path, **options): + """ + Display given file. + """ + args = ["display"] + title = options.get("title") + if title: + args += ["-title", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +class GmDisplayViewer(UnixViewer): + """The GraphicsMagick ``gm display`` command.""" + + def get_command_ex(self, file, **options): + executable = "gm" + command = "gm display" + return command, executable + + def show_file(self, path, **options): + """ + Display given file. + """ + subprocess.Popen(["gm", "display", path]) + return 1 + + +class EogViewer(UnixViewer): + """The GNOME Image Viewer ``eog`` command.""" + + def get_command_ex(self, file, **options): + executable = "eog" + command = "eog -n" + return command, executable + + def show_file(self, path, **options): + """ + Display given file. + """ + subprocess.Popen(["eog", "-n", path]) + return 1 + + +class XVViewer(UnixViewer): + """ + The X Viewer ``xv`` command. + This viewer supports the ``title`` parameter. + """ + + def get_command_ex(self, file, title=None, **options): + # note: xv is pretty outdated. most modern systems have + # imagemagick's display command instead. + command = executable = "xv" + if title: + command += f" -name {quote(title)}" + return command, executable + + def show_file(self, path, **options): + """ + Display given file. + """ + args = ["xv"] + title = options.get("title") + if title: + args += ["-name", title] + args.append(path) + + subprocess.Popen(args) + return 1 + + +if sys.platform not in ("win32", "darwin"): # unixoids + if shutil.which("xdg-open"): + register(XDGViewer) + if shutil.which("display"): + register(DisplayViewer) + if shutil.which("gm"): + register(GmDisplayViewer) + if shutil.which("eog"): + register(EogViewer) + if shutil.which("xv"): + register(XVViewer) + + +class IPythonViewer(Viewer): + """The viewer for IPython frontends.""" + + def show_image(self, image, **options): + ipython_display(image) + return 1 + + +try: + from IPython.display import display as ipython_display +except ImportError: + pass +else: + register(IPythonViewer) + + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 ImageShow.py imagefile [title]") + sys.exit() + + with Image.open(sys.argv[1]) as im: + print(show(im, *sys.argv[2:])) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageStat.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageStat.py new file mode 100644 index 0000000..b7ebddf --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageStat.py @@ -0,0 +1,148 @@ +# +# The Python Imaging Library. +# $Id$ +# +# global image statistics +# +# History: +# 1996-04-05 fl Created +# 1997-05-21 fl Added mask; added rms, var, stddev attributes +# 1997-08-05 fl Added median +# 1998-07-05 hk Fixed integer overflow error +# +# Notes: +# This class shows how to implement delayed evaluation of attributes. +# To get a certain value, simply access the corresponding attribute. +# The __getattr__ dispatcher takes care of the rest. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996-97. +# +# See the README file for information on usage and redistribution. +# + +import functools +import math +import operator + + +class Stat: + def __init__(self, image_or_list, mask=None): + try: + if mask: + self.h = image_or_list.histogram(mask) + else: + self.h = image_or_list.histogram() + except AttributeError: + self.h = image_or_list # assume it to be a histogram list + if not isinstance(self.h, list): + msg = "first argument must be image or list" + raise TypeError(msg) + self.bands = list(range(len(self.h) // 256)) + + def __getattr__(self, id): + """Calculate missing attribute""" + if id[:4] == "_get": + raise AttributeError(id) + # calculate missing attribute + v = getattr(self, "_get" + id)() + setattr(self, id, v) + return v + + def _getextrema(self): + """Get min/max values for each band in the image""" + + def minmax(histogram): + n = 255 + x = 0 + for i in range(256): + if histogram[i]: + n = min(n, i) + x = max(x, i) + return n, x # returns (255, 0) if there's no data in the histogram + + v = [] + for i in range(0, len(self.h), 256): + v.append(minmax(self.h[i:])) + return v + + def _getcount(self): + """Get total number of pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + v.append(functools.reduce(operator.add, self.h[i : i + 256])) + return v + + def _getsum(self): + """Get sum of all pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + layer_sum = 0.0 + for j in range(256): + layer_sum += j * self.h[i + j] + v.append(layer_sum) + return v + + def _getsum2(self): + """Get squared sum of all pixels in each layer""" + + v = [] + for i in range(0, len(self.h), 256): + sum2 = 0.0 + for j in range(256): + sum2 += (j**2) * float(self.h[i + j]) + v.append(sum2) + return v + + def _getmean(self): + """Get average pixel level for each layer""" + + v = [] + for i in self.bands: + v.append(self.sum[i] / self.count[i]) + return v + + def _getmedian(self): + """Get median pixel level for each layer""" + + v = [] + for i in self.bands: + s = 0 + half = self.count[i] // 2 + b = i * 256 + for j in range(256): + s = s + self.h[b + j] + if s > half: + break + v.append(j) + return v + + def _getrms(self): + """Get RMS for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.sum2[i] / self.count[i])) + return v + + def _getvar(self): + """Get variance for each layer""" + + v = [] + for i in self.bands: + n = self.count[i] + v.append((self.sum2[i] - (self.sum[i] ** 2.0) / n) / n) + return v + + def _getstddev(self): + """Get standard deviation for each layer""" + + v = [] + for i in self.bands: + v.append(math.sqrt(self.var[i])) + return v + + +Global = Stat # compatibility diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTk.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTk.py new file mode 100644 index 0000000..bf98eb2 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTk.py @@ -0,0 +1,283 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Tk display interface +# +# History: +# 96-04-08 fl Created +# 96-09-06 fl Added getimage method +# 96-11-01 fl Rewritten, removed image attribute and crop method +# 97-05-09 fl Use PyImagingPaste method instead of image type +# 97-05-12 fl Minor tweaks to match the IFUNC95 interface +# 97-05-17 fl Support the "pilbitmap" booster patch +# 97-06-05 fl Added file= and data= argument to image constructors +# 98-03-09 fl Added width and height methods to Image classes +# 98-07-02 fl Use default mode for "P" images without palette attribute +# 98-07-02 fl Explicitly destroy Tkinter image objects +# 99-07-24 fl Support multiple Tk interpreters (from Greg Couch) +# 99-07-26 fl Automatically hook into Tkinter (if possible) +# 99-08-15 fl Hook uses _imagingtk instead of _imaging +# +# Copyright (c) 1997-1999 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import tkinter +from io import BytesIO + +from . import Image + +# -------------------------------------------------------------------- +# Check for Tkinter interface hooks + +_pilbitmap_ok = None + + +def _pilbitmap_check(): + global _pilbitmap_ok + if _pilbitmap_ok is None: + try: + im = Image.new("1", (1, 1)) + tkinter.BitmapImage(data=f"PIL:{im.im.id}") + _pilbitmap_ok = 1 + except tkinter.TclError: + _pilbitmap_ok = 0 + return _pilbitmap_ok + + +def _get_image_from_kw(kw): + source = None + if "file" in kw: + source = kw.pop("file") + elif "data" in kw: + source = BytesIO(kw.pop("data")) + if source: + return Image.open(source) + + +def _pyimagingtkcall(command, photo, id): + tk = photo.tk + try: + tk.call(command, photo, id) + except tkinter.TclError: + # activate Tkinter hook + # may raise an error if it cannot attach to Tkinter + from . import _imagingtk + + _imagingtk.tkinit(tk.interpaddr()) + tk.call(command, photo, id) + + +# -------------------------------------------------------------------- +# PhotoImage + + +class PhotoImage: + """ + A Tkinter-compatible photo image. This can be used + everywhere Tkinter expects an image object. If the image is an RGBA + image, pixels having alpha 0 are treated as transparent. + + The constructor takes either a PIL image, or a mode and a size. + Alternatively, you can use the ``file`` or ``data`` options to initialize + the photo image object. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. + :param size: If the first argument is a mode string, this defines the size + of the image. + :keyword file: A filename to load the image from (using + ``Image.open(file)``). + :keyword data: An 8-bit string containing image data (as loaded from an + image file). + """ + + def __init__(self, image=None, size=None, **kw): + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + if hasattr(image, "mode") and hasattr(image, "size"): + # got an image instead of a mode + mode = image.mode + if mode == "P": + # palette mapped data + image.apply_transparency() + image.load() + try: + mode = image.palette.mode + except AttributeError: + mode = "RGB" # default + size = image.size + kw["width"], kw["height"] = size + else: + mode = image + image = None + + if mode not in ["1", "L", "RGB", "RGBA"]: + mode = Image.getmodebase(mode) + + self.__mode = mode + self.__size = size + self.__photo = tkinter.PhotoImage(**kw) + self.tk = self.__photo.tk + if image: + self.paste(image) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def __str__(self): + """ + Get the Tkinter photo image identifier. This method is automatically + called by Tkinter whenever a PhotoImage object is passed to a Tkinter + method. + + :return: A Tkinter photo image identifier (a string). + """ + return str(self.__photo) + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def paste(self, im): + """ + Paste a PIL image into the photo image. Note that this can + be very slow if the photo image is displayed. + + :param im: A PIL image. The size must match the target region. If the + mode does not match, the image is converted to the mode of + the bitmap image. + """ + # convert to blittable + im.load() + image = im.im + if image.isblock() and im.mode == self.__mode: + block = image + else: + block = image.new_block(self.__mode, im.size) + image.convert2(block, image) # convert directly between buffers + + _pyimagingtkcall("PyImagingPhoto", self.__photo, block.id) + + +# -------------------------------------------------------------------- +# BitmapImage + + +class BitmapImage: + """ + A Tkinter-compatible bitmap image. This can be used everywhere Tkinter + expects an image object. + + The given image must have mode "1". Pixels having value 0 are treated as + transparent. Options, if any, are passed on to Tkinter. The most commonly + used option is ``foreground``, which is used to specify the color for the + non-transparent parts. See the Tkinter documentation for information on + how to specify colours. + + :param image: A PIL image. + """ + + def __init__(self, image=None, **kw): + # Tk compatibility: file or data + if image is None: + image = _get_image_from_kw(kw) + + self.__mode = image.mode + self.__size = image.size + + if _pilbitmap_check(): + # fast way (requires the pilbitmap booster patch) + image.load() + kw["data"] = f"PIL:{image.im.id}" + self.__im = image # must keep a reference + else: + # slow but safe way + kw["data"] = image.tobitmap() + self.__photo = tkinter.BitmapImage(**kw) + + def __del__(self): + name = self.__photo.name + self.__photo.name = None + try: + self.__photo.tk.call("image", "delete", name) + except Exception: + pass # ignore internal errors + + def width(self): + """ + Get the width of the image. + + :return: The width, in pixels. + """ + return self.__size[0] + + def height(self): + """ + Get the height of the image. + + :return: The height, in pixels. + """ + return self.__size[1] + + def __str__(self): + """ + Get the Tkinter bitmap image identifier. This method is automatically + called by Tkinter whenever a BitmapImage object is passed to a Tkinter + method. + + :return: A Tkinter bitmap image identifier (a string). + """ + return str(self.__photo) + + +def getimage(photo): + """Copies the contents of a PhotoImage to a PIL image memory.""" + im = Image.new("RGBA", (photo.width(), photo.height())) + block = im.im + + _pyimagingtkcall("PyImagingPhotoGet", photo, block.id) + + return im + + +def _show(image, title): + """Helper for the Image.show method.""" + + class UI(tkinter.Label): + def __init__(self, master, im): + if im.mode == "1": + self.image = BitmapImage(im, foreground="white", master=master) + else: + self.image = PhotoImage(im, master=master) + super().__init__(master, image=self.image, bg="black", bd=0) + + if not tkinter._default_root: + msg = "tkinter not initialized" + raise OSError(msg) + top = tkinter.Toplevel() + if title: + top.title(title) + UI(top, image).pack() diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTransform.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTransform.py new file mode 100644 index 0000000..7881f0d --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageTransform.py @@ -0,0 +1,102 @@ +# +# The Python Imaging Library. +# $Id$ +# +# transform wrappers +# +# History: +# 2002-04-08 fl Created +# +# Copyright (c) 2002 by Secret Labs AB +# Copyright (c) 2002 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +class Transform(Image.ImageTransformHandler): + def __init__(self, data): + self.data = data + + def getdata(self): + return self.method, self.data + + def transform(self, size, image, **options): + # can be overridden + method, data = self.getdata() + return image.transform(size, method, data, **options) + + +class AffineTransform(Transform): + """ + Define an affine image transform. + + This function takes a 6-tuple (a, b, c, d, e, f) which contain the first + two rows from an affine transform matrix. For each pixel (x, y) in the + output image, the new value is taken from a position (a x + b y + c, + d x + e y + f) in the input image, rounded to nearest pixel. + + This function can be used to scale, translate, rotate, and shear the + original image. + + See :py:meth:`~PIL.Image.Image.transform` + + :param matrix: A 6-tuple (a, b, c, d, e, f) containing the first two rows + from an affine transform matrix. + """ + + method = Image.Transform.AFFINE + + +class ExtentTransform(Transform): + """ + Define a transform to extract a subregion from an image. + + Maps a rectangle (defined by two corners) from the image to a rectangle of + the given size. The resulting image will contain data sampled from between + the corners, such that (x0, y0) in the input image will end up at (0,0) in + the output image, and (x1, y1) at size. + + This method can be used to crop, stretch, shrink, or mirror an arbitrary + rectangle in the current image. It is slightly slower than crop, but about + as fast as a corresponding resize operation. + + See :py:meth:`~PIL.Image.Image.transform` + + :param bbox: A 4-tuple (x0, y0, x1, y1) which specifies two points in the + input image's coordinate system. See :ref:`coordinate-system`. + """ + + method = Image.Transform.EXTENT + + +class QuadTransform(Transform): + """ + Define a quad image transform. + + Maps a quadrilateral (a region defined by four corners) from the image to a + rectangle of the given size. + + See :py:meth:`~PIL.Image.Image.transform` + + :param xy: An 8-tuple (x0, y0, x1, y1, x2, y2, x3, y3) which contain the + upper left, lower left, lower right, and upper right corner of the + source quadrilateral. + """ + + method = Image.Transform.QUAD + + +class MeshTransform(Transform): + """ + Define a mesh image transform. A mesh transform consists of one or more + individual quad transforms. + + See :py:meth:`~PIL.Image.Image.transform` + + :param data: A list of (bbox, quad) tuples. + """ + + method = Image.Transform.MESH diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageWin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageWin.py new file mode 100644 index 0000000..ca9b14c --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImageWin.py @@ -0,0 +1,230 @@ +# +# The Python Imaging Library. +# $Id$ +# +# a Windows DIB display interface +# +# History: +# 1996-05-20 fl Created +# 1996-09-20 fl Fixed subregion exposure +# 1997-09-21 fl Added draw primitive (for tzPrint) +# 2003-05-21 fl Added experimental Window/ImageWindow classes +# 2003-09-05 fl Added fromstring/tostring methods +# +# Copyright (c) Secret Labs AB 1997-2003. +# Copyright (c) Fredrik Lundh 1996-2003. +# +# See the README file for information on usage and redistribution. +# + +from . import Image + + +class HDC: + """ + Wraps an HDC integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods. + """ + + def __init__(self, dc): + self.dc = dc + + def __int__(self): + return self.dc + + +class HWND: + """ + Wraps an HWND integer. The resulting object can be passed to the + :py:meth:`~PIL.ImageWin.Dib.draw` and :py:meth:`~PIL.ImageWin.Dib.expose` + methods, instead of a DC. + """ + + def __init__(self, wnd): + self.wnd = wnd + + def __int__(self): + return self.wnd + + +class Dib: + """ + A Windows bitmap with the given mode and size. The mode can be one of "1", + "L", "P", or "RGB". + + If the display requires a palette, this constructor creates a suitable + palette and associates it with the image. For an "L" image, 128 greylevels + are allocated. For an "RGB" image, a 6x6x6 colour cube is used, together + with 20 greylevels. + + To make sure that palettes work properly under Windows, you must call the + ``palette`` method upon certain events from Windows. + + :param image: Either a PIL image, or a mode string. If a mode string is + used, a size must also be given. The mode can be one of "1", + "L", "P", or "RGB". + :param size: If the first argument is a mode string, this + defines the size of the image. + """ + + def __init__(self, image, size=None): + if hasattr(image, "mode") and hasattr(image, "size"): + mode = image.mode + size = image.size + else: + mode = image + image = None + if mode not in ["1", "L", "P", "RGB"]: + mode = Image.getmodebase(mode) + self.image = Image.core.display(mode, size) + self.mode = mode + self.size = size + if image: + self.paste(image) + + def expose(self, handle): + """ + Copy the bitmap contents to a device context. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. In PythonWin, you can use + ``CDC.GetHandleAttrib()`` to get a suitable handle. + """ + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.expose(dc) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.expose(handle) + return result + + def draw(self, handle, dst, src=None): + """ + Same as expose, but allows you to specify where to draw the image, and + what part of it to draw. + + The destination and source areas are given as 4-tuple rectangles. If + the source is omitted, the entire image is copied. If the source and + the destination have different sizes, the image is resized as + necessary. + """ + if not src: + src = (0, 0) + self.size + if isinstance(handle, HWND): + dc = self.image.getdc(handle) + try: + result = self.image.draw(dc, dst, src) + finally: + self.image.releasedc(handle, dc) + else: + result = self.image.draw(handle, dst, src) + return result + + def query_palette(self, handle): + """ + Installs the palette associated with the image in the given device + context. + + This method should be called upon **QUERYNEWPALETTE** and + **PALETTECHANGED** events from Windows. If this method returns a + non-zero value, one or more display palette entries were changed, and + the image should be redrawn. + + :param handle: Device context (HDC), cast to a Python integer, or an + HDC or HWND instance. + :return: A true value if one or more entries were changed (this + indicates that the image should be redrawn). + """ + if isinstance(handle, HWND): + handle = self.image.getdc(handle) + try: + result = self.image.query_palette(handle) + finally: + self.image.releasedc(handle, handle) + else: + result = self.image.query_palette(handle) + return result + + def paste(self, im, box=None): + """ + Paste a PIL image into the bitmap image. + + :param im: A PIL image. The size must match the target region. + If the mode does not match, the image is converted to the + mode of the bitmap image. + :param box: A 4-tuple defining the left, upper, right, and + lower pixel coordinate. See :ref:`coordinate-system`. If + None is given instead of a tuple, all of the image is + assumed. + """ + im.load() + if self.mode != im.mode: + im = im.convert(self.mode) + if box: + self.image.paste(im.im, box) + else: + self.image.paste(im.im) + + def frombytes(self, buffer): + """ + Load display memory contents from byte data. + + :param buffer: A buffer containing display data (usually + data returned from :py:func:`~PIL.ImageWin.Dib.tobytes`) + """ + return self.image.frombytes(buffer) + + def tobytes(self): + """ + Copy display memory contents to bytes object. + + :return: A bytes object containing display data. + """ + return self.image.tobytes() + + +class Window: + """Create a Window with the given title size.""" + + def __init__(self, title="PIL", width=None, height=None): + self.hwnd = Image.core.createwindow( + title, self.__dispatcher, width or 0, height or 0 + ) + + def __dispatcher(self, action, *args): + return getattr(self, "ui_handle_" + action)(*args) + + def ui_handle_clear(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_damage(self, x0, y0, x1, y1): + pass + + def ui_handle_destroy(self): + pass + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + pass + + def ui_handle_resize(self, width, height): + pass + + def mainloop(self): + Image.core.eventloop() + + +class ImageWindow(Window): + """Create an image window which displays the given image.""" + + def __init__(self, image, title="PIL"): + if not isinstance(image, Dib): + image = Dib(image) + self.image = image + width, height = image.size + super().__init__(title, width=width, height=height) + + def ui_handle_repair(self, dc, x0, y0, x1, y1): + self.image.draw(dc, (x0, y0, x1, y1)) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py new file mode 100644 index 0000000..ac26745 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/ImtImagePlugin.py @@ -0,0 +1,101 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IM Tools support for PIL +# +# history: +# 1996-05-27 fl Created (read 8-bit images only) +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.2) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +import re + +from . import Image, ImageFile + +# +# -------------------------------------------------------------------- + +field = re.compile(rb"([a-z]*) ([^ \r\n]*)") + + +## +# Image plugin for IM Tools images. + + +class ImtImageFile(ImageFile.ImageFile): + format = "IMT" + format_description = "IM Tools" + + def _open(self): + # Quick rejection: if there's not a LF among the first + # 100 bytes, this is (probably) not a text header. + + buffer = self.fp.read(100) + if b"\n" not in buffer: + msg = "not an IM file" + raise SyntaxError(msg) + + xsize = ysize = 0 + + while True: + if buffer: + s = buffer[:1] + buffer = buffer[1:] + else: + s = self.fp.read(1) + if not s: + break + + if s == b"\x0C": + # image data begins + self.tile = [ + ( + "raw", + (0, 0) + self.size, + self.fp.tell() - len(buffer), + (self.mode, 0, 1), + ) + ] + + break + + else: + # read key/value pair + if b"\n" not in buffer: + buffer += self.fp.read(100) + lines = buffer.split(b"\n") + s += lines.pop(0) + buffer = b"\n".join(lines) + if len(s) == 1 or len(s) > 100: + break + if s[0] == ord(b"*"): + continue # comment + + m = field.match(s) + if not m: + break + k, v = m.group(1, 2) + if k == b"width": + xsize = int(v) + self._size = xsize, ysize + elif k == b"height": + ysize = int(v) + self._size = xsize, ysize + elif k == b"pixel" and v == b"n8": + self.mode = "L" + + +# +# -------------------------------------------------------------------- + +Image.register_open(ImtImageFile.format, ImtImageFile) + +# +# no extension registered (".im" is simply too common) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py new file mode 100644 index 0000000..4c47b55 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/IptcImagePlugin.py @@ -0,0 +1,230 @@ +# +# The Python Imaging Library. +# $Id$ +# +# IPTC/NAA file handling +# +# history: +# 1995-10-01 fl Created +# 1998-03-09 fl Cleaned up and added to PIL +# 2002-06-18 fl Added getiptcinfo helper +# +# Copyright (c) Secret Labs AB 1997-2002. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# +import os +import tempfile + +from . import Image, ImageFile +from ._binary import i8 +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 + +COMPRESSION = {1: "raw", 5: "jpeg"} + +PAD = o8(0) * 4 + + +# +# Helpers + + +def i(c): + return i32((PAD + c)[-4:]) + + +def dump(c): + for i in c: + print("%02x" % i8(i), end=" ") + print() + + +## +# Image plugin for IPTC/NAA datastreams. To read IPTC/NAA fields +# from TIFF and JPEG files, use the getiptcinfo function. + + +class IptcImageFile(ImageFile.ImageFile): + format = "IPTC" + format_description = "IPTC/NAA" + + def getint(self, key): + return i(self.info[key]) + + def field(self): + # + # get a IPTC field header + s = self.fp.read(5) + if not len(s): + return None, 0 + + tag = s[1], s[2] + + # syntax + if s[0] != 0x1C or tag[0] < 1 or tag[0] > 9: + msg = "invalid IPTC/NAA file" + raise SyntaxError(msg) + + # field size + size = s[3] + if size > 132: + msg = "illegal field length in IPTC/NAA file" + raise OSError(msg) + elif size == 128: + size = 0 + elif size > 128: + size = i(self.fp.read(size - 128)) + else: + size = i16(s, 3) + + return tag, size + + def _open(self): + # load descriptive fields + while True: + offset = self.fp.tell() + tag, size = self.field() + if not tag or tag == (8, 10): + break + if size: + tagdata = self.fp.read(size) + else: + tagdata = None + if tag in self.info: + if isinstance(self.info[tag], list): + self.info[tag].append(tagdata) + else: + self.info[tag] = [self.info[tag], tagdata] + else: + self.info[tag] = tagdata + + # mode + layers = i8(self.info[(3, 60)][0]) + component = i8(self.info[(3, 60)][1]) + if (3, 65) in self.info: + id = i8(self.info[(3, 65)][0]) - 1 + else: + id = 0 + if layers == 1 and not component: + self.mode = "L" + elif layers == 3 and component: + self.mode = "RGB"[id] + elif layers == 4 and component: + self.mode = "CMYK"[id] + + # size + self._size = self.getint((3, 20)), self.getint((3, 30)) + + # compression + try: + compression = COMPRESSION[self.getint((3, 120))] + except KeyError as e: + msg = "Unknown IPTC image compression" + raise OSError(msg) from e + + # tile + if tag == (8, 10): + self.tile = [ + ("iptc", (compression, offset), (0, 0, self.size[0], self.size[1])) + ] + + def load(self): + if len(self.tile) != 1 or self.tile[0][0] != "iptc": + return ImageFile.ImageFile.load(self) + + type, tile, box = self.tile[0] + + encoding, offset = tile + + self.fp.seek(offset) + + # Copy image data to temporary file + o_fd, outfile = tempfile.mkstemp(text=False) + o = os.fdopen(o_fd) + if encoding == "raw": + # To simplify access to the extracted file, + # prepend a PPM header + o.write("P5\n%d %d\n255\n" % self.size) + while True: + type, size = self.field() + if type != (8, 10): + break + while size > 0: + s = self.fp.read(min(size, 8192)) + if not s: + break + o.write(s) + size -= len(s) + o.close() + + try: + with Image.open(outfile) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(outfile) + except OSError: + pass + + +Image.register_open(IptcImageFile.format, IptcImageFile) + +Image.register_extension(IptcImageFile.format, ".iim") + + +def getiptcinfo(im): + """ + Get IPTC information from TIFF, JPEG, or IPTC file. + + :param im: An image containing IPTC data. + :returns: A dictionary containing IPTC information, or None if + no IPTC information block was found. + """ + import io + + from . import JpegImagePlugin, TiffImagePlugin + + data = None + + if isinstance(im, IptcImageFile): + # return info dictionary right away + return im.info + + elif isinstance(im, JpegImagePlugin.JpegImageFile): + # extract the IPTC/NAA resource + photoshop = im.info.get("photoshop") + if photoshop: + data = photoshop.get(0x0404) + + elif isinstance(im, TiffImagePlugin.TiffImageFile): + # get raw data from the IPTC/NAA tag (PhotoShop tags the data + # as 4-byte integers, so we cannot use the get method...) + try: + data = im.tag.tagdata[TiffImagePlugin.IPTC_NAA_CHUNK] + except (AttributeError, KeyError): + pass + + if data is None: + return None # no properties + + # create an IptcImagePlugin object without initializing it + class FakeImage: + pass + + im = FakeImage() + im.__class__ = IptcImageFile + + # parse the IPTC information chunk + im.info = {} + im.fp = io.BytesIO(data) + + try: + im._open() + except (IndexError, KeyError): + pass # expected failure + + return im.info diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py new file mode 100644 index 0000000..9309768 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/Jpeg2KImagePlugin.py @@ -0,0 +1,399 @@ +# +# The Python Imaging Library +# $Id$ +# +# JPEG2000 file handling +# +# History: +# 2014-03-12 ajh Created +# 2021-06-30 rogermb Extract dpi information from the 'resc' header box +# +# Copyright (c) 2014 Coriolis Systems Limited +# Copyright (c) 2014 Alastair Houghton +# +# See the README file for information on usage and redistribution. +# +import io +import os +import struct + +from . import Image, ImageFile, _binary + + +class BoxReader: + """ + A small helper class to read fields stored in JPEG2000 header boxes + and to easily step into and read sub-boxes. + """ + + def __init__(self, fp, length=-1): + self.fp = fp + self.has_length = length >= 0 + self.length = length + self.remaining_in_box = -1 + + def _can_read(self, num_bytes): + if self.has_length and self.fp.tell() + num_bytes > self.length: + # Outside box: ensure we don't read past the known file length + return False + if self.remaining_in_box >= 0: + # Inside box contents: ensure read does not go past box boundaries + return num_bytes <= self.remaining_in_box + else: + return True # No length known, just read + + def _read_bytes(self, num_bytes): + if not self._can_read(num_bytes): + msg = "Not enough data in header" + raise SyntaxError(msg) + + data = self.fp.read(num_bytes) + if len(data) < num_bytes: + msg = f"Expected to read {num_bytes} bytes but only got {len(data)}." + raise OSError(msg) + + if self.remaining_in_box > 0: + self.remaining_in_box -= num_bytes + return data + + def read_fields(self, field_format): + size = struct.calcsize(field_format) + data = self._read_bytes(size) + return struct.unpack(field_format, data) + + def read_boxes(self): + size = self.remaining_in_box + data = self._read_bytes(size) + return BoxReader(io.BytesIO(data), size) + + def has_next_box(self): + if self.has_length: + return self.fp.tell() + self.remaining_in_box < self.length + else: + return True + + def next_box_type(self): + # Skip the rest of the box if it has not been read + if self.remaining_in_box > 0: + self.fp.seek(self.remaining_in_box, os.SEEK_CUR) + self.remaining_in_box = -1 + + # Read the length and type of the next box + lbox, tbox = self.read_fields(">I4s") + if lbox == 1: + lbox = self.read_fields(">Q")[0] + hlen = 16 + else: + hlen = 8 + + if lbox < hlen or not self._can_read(lbox - hlen): + msg = "Invalid header length" + raise SyntaxError(msg) + + self.remaining_in_box = lbox - hlen + return tbox + + +def _parse_codestream(fp): + """Parse the JPEG 2000 codestream to extract the size and component + count from the SIZ marker segment, returning a PIL (size, mode) tuple.""" + + hdr = fp.read(2) + lsiz = _binary.i16be(hdr) + siz = hdr + fp.read(lsiz - 2) + lsiz, rsiz, xsiz, ysiz, xosiz, yosiz, _, _, _, _, csiz = struct.unpack_from( + ">HHIIIIIIIIH", siz + ) + ssiz = [None] * csiz + xrsiz = [None] * csiz + yrsiz = [None] * csiz + for i in range(csiz): + ssiz[i], xrsiz[i], yrsiz[i] = struct.unpack_from(">BBB", siz, 36 + 3 * i) + + size = (xsiz - xosiz, ysiz - yosiz) + if csiz == 1: + if (yrsiz[0] & 0x7F) > 8: + mode = "I;16" + else: + mode = "L" + elif csiz == 2: + mode = "LA" + elif csiz == 3: + mode = "RGB" + elif csiz == 4: + mode = "RGBA" + else: + mode = None + + return size, mode + + +def _res_to_dpi(num, denom, exp): + """Convert JPEG2000's (numerator, denominator, exponent-base-10) resolution, + calculated as (num / denom) * 10^exp and stored in dots per meter, + to floating-point dots per inch.""" + if denom != 0: + return (254 * num * (10**exp)) / (10000 * denom) + + +def _parse_jp2_header(fp): + """Parse the JP2 header box to extract size, component count, + color space information, and optionally DPI information, + returning a (size, mode, mimetype, dpi) tuple.""" + + # Find the JP2 header box + reader = BoxReader(fp) + header = None + mimetype = None + while reader.has_next_box(): + tbox = reader.next_box_type() + + if tbox == b"jp2h": + header = reader.read_boxes() + break + elif tbox == b"ftyp": + if reader.read_fields(">4s")[0] == b"jpx ": + mimetype = "image/jpx" + + size = None + mode = None + bpc = None + nc = None + dpi = None # 2-tuple of DPI info, or None + + while header.has_next_box(): + tbox = header.next_box_type() + + if tbox == b"ihdr": + height, width, nc, bpc = header.read_fields(">IIHB") + size = (width, height) + if nc == 1 and (bpc & 0x7F) > 8: + mode = "I;16" + elif nc == 1: + mode = "L" + elif nc == 2: + mode = "LA" + elif nc == 3: + mode = "RGB" + elif nc == 4: + mode = "RGBA" + elif tbox == b"res ": + res = header.read_boxes() + while res.has_next_box(): + tres = res.next_box_type() + if tres == b"resc": + vrcn, vrcd, hrcn, hrcd, vrce, hrce = res.read_fields(">HHHHBB") + hres = _res_to_dpi(hrcn, hrcd, hrce) + vres = _res_to_dpi(vrcn, vrcd, vrce) + if hres is not None and vres is not None: + dpi = (hres, vres) + break + + if size is None or mode is None: + msg = "Malformed JP2 header" + raise SyntaxError(msg) + + return size, mode, mimetype, dpi + + +## +# Image plugin for JPEG2000 images. + + +class Jpeg2KImageFile(ImageFile.ImageFile): + format = "JPEG2000" + format_description = "JPEG 2000 (ISO 15444)" + + def _open(self): + sig = self.fp.read(4) + if sig == b"\xff\x4f\xff\x51": + self.codec = "j2k" + self._size, self.mode = _parse_codestream(self.fp) + else: + sig = sig + self.fp.read(8) + + if sig == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a": + self.codec = "jp2" + header = _parse_jp2_header(self.fp) + self._size, self.mode, self.custom_mimetype, dpi = header + if dpi is not None: + self.info["dpi"] = dpi + if self.fp.read(12).endswith(b"jp2c\xff\x4f\xff\x51"): + self._parse_comment() + else: + msg = "not a JPEG 2000 file" + raise SyntaxError(msg) + + if self.size is None or self.mode is None: + msg = "unable to determine size/mode" + raise SyntaxError(msg) + + self._reduce = 0 + self.layers = 0 + + fd = -1 + length = -1 + + try: + fd = self.fp.fileno() + length = os.fstat(fd).st_size + except Exception: + fd = -1 + try: + pos = self.fp.tell() + self.fp.seek(0, io.SEEK_END) + length = self.fp.tell() + self.fp.seek(pos) + except Exception: + length = -1 + + self.tile = [ + ( + "jpeg2k", + (0, 0) + self.size, + 0, + (self.codec, self._reduce, self.layers, fd, length), + ) + ] + + def _parse_comment(self): + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + self.fp.seek(length - 2, os.SEEK_CUR) + + while True: + marker = self.fp.read(2) + if not marker: + break + typ = marker[1] + if typ in (0x90, 0xD9): + # Start of tile or end of codestream + break + hdr = self.fp.read(2) + length = _binary.i16be(hdr) + if typ == 0x64: + # Comment + self.info["comment"] = self.fp.read(length - 2)[2:] + break + else: + self.fp.seek(length - 2, os.SEEK_CUR) + + @property + def reduce(self): + # https://github.com/python-pillow/Pillow/issues/4343 found that the + # new Image 'reduce' method was shadowed by this plugin's 'reduce' + # property. This attempts to allow for both scenarios + return self._reduce or super().reduce + + @reduce.setter + def reduce(self, value): + self._reduce = value + + def load(self): + if self.tile and self._reduce: + power = 1 << self._reduce + adjust = power >> 1 + self._size = ( + int((self.size[0] + adjust) / power), + int((self.size[1] + adjust) / power), + ) + + # Update the reduce and layers settings + t = self.tile[0] + t3 = (t[3][0], self._reduce, self.layers, t[3][3], t[3][4]) + self.tile = [(t[0], (0, 0) + self.size, t[2], t3)] + + return ImageFile.ImageFile.load(self) + + +def _accept(prefix): + return ( + prefix[:4] == b"\xff\x4f\xff\x51" + or prefix[:12] == b"\x00\x00\x00\x0cjP \x0d\x0a\x87\x0a" + ) + + +# ------------------------------------------------------------ +# Save support + + +def _save(im, fp, filename): + # Get the keyword arguments + info = im.encoderinfo + + if filename.endswith(".j2k") or info.get("no_jp2", False): + kind = "j2k" + else: + kind = "jp2" + + offset = info.get("offset", None) + tile_offset = info.get("tile_offset", None) + tile_size = info.get("tile_size", None) + quality_mode = info.get("quality_mode", "rates") + quality_layers = info.get("quality_layers", None) + if quality_layers is not None and not ( + isinstance(quality_layers, (list, tuple)) + and all( + [ + isinstance(quality_layer, (int, float)) + for quality_layer in quality_layers + ] + ) + ): + msg = "quality_layers must be a sequence of numbers" + raise ValueError(msg) + + num_resolutions = info.get("num_resolutions", 0) + cblk_size = info.get("codeblock_size", None) + precinct_size = info.get("precinct_size", None) + irreversible = info.get("irreversible", False) + progression = info.get("progression", "LRCP") + cinema_mode = info.get("cinema_mode", "no") + mct = info.get("mct", 0) + signed = info.get("signed", False) + comment = info.get("comment") + if isinstance(comment, str): + comment = comment.encode() + plt = info.get("plt", False) + + fd = -1 + if hasattr(fp, "fileno"): + try: + fd = fp.fileno() + except Exception: + fd = -1 + + im.encoderconfig = ( + offset, + tile_offset, + tile_size, + quality_mode, + quality_layers, + num_resolutions, + cblk_size, + precinct_size, + irreversible, + progression, + cinema_mode, + mct, + signed, + fd, + comment, + plt, + ) + + ImageFile._save(im, fp, [("jpeg2k", (0, 0) + im.size, 0, kind)]) + + +# ------------------------------------------------------------ +# Registry stuff + + +Image.register_open(Jpeg2KImageFile.format, Jpeg2KImageFile, _accept) +Image.register_save(Jpeg2KImageFile.format, _save) + +Image.register_extensions( + Jpeg2KImageFile.format, [".jp2", ".j2k", ".jpc", ".jpf", ".jpx", ".j2c"] +) + +Image.register_mime(Jpeg2KImageFile.format, "image/jp2") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py new file mode 100644 index 0000000..dfc7e6e --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegImagePlugin.py @@ -0,0 +1,849 @@ +# +# The Python Imaging Library. +# $Id$ +# +# JPEG (JFIF) file handling +# +# See "Digital Compression and Coding of Continuous-Tone Still Images, +# Part 1, Requirements and Guidelines" (CCITT T.81 / ISO 10918-1) +# +# History: +# 1995-09-09 fl Created +# 1995-09-13 fl Added full parser +# 1996-03-25 fl Added hack to use the IJG command line utilities +# 1996-05-05 fl Workaround Photoshop 2.5 CMYK polarity bug +# 1996-05-28 fl Added draft support, JFIF version (0.1) +# 1996-12-30 fl Added encoder options, added progression property (0.2) +# 1997-08-27 fl Save mode 1 images as BW (0.3) +# 1998-07-12 fl Added YCbCr to draft and save methods (0.4) +# 1998-10-19 fl Don't hang on files using 16-bit DQT's (0.4.1) +# 2001-04-16 fl Extract DPI settings from JFIF files (0.4.2) +# 2002-07-01 fl Skip pad bytes before markers; identify Exif files (0.4.3) +# 2003-04-25 fl Added experimental EXIF decoder (0.5) +# 2003-06-06 fl Added experimental EXIF GPSinfo decoder +# 2003-09-13 fl Extract COM markers +# 2009-09-06 fl Added icc_profile support (from Florian Hoech) +# 2009-03-06 fl Changed CMYK handling; always use Adobe polarity (0.6) +# 2009-03-08 fl Added subsampling support (from Justin Huff). +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# +import array +import io +import math +import os +import struct +import subprocess +import sys +import tempfile +import warnings + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from .JpegPresets import presets + +# +# Parser + + +def Skip(self, marker): + n = i16(self.fp.read(2)) - 2 + ImageFile._safe_read(self.fp, n) + + +def APP(self, marker): + # + # Application marker. Store these in the APP dictionary. + # Also look for well-known application markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + app = "APP%d" % (marker & 15) + + self.app[app] = s # compatibility + self.applist.append((app, s)) + + if marker == 0xFFE0 and s[:4] == b"JFIF": + # extract JFIF information + self.info["jfif"] = version = i16(s, 5) # version + self.info["jfif_version"] = divmod(version, 256) + # extract JFIF properties + try: + jfif_unit = s[7] + jfif_density = i16(s, 8), i16(s, 10) + except Exception: + pass + else: + if jfif_unit == 1: + self.info["dpi"] = jfif_density + self.info["jfif_unit"] = jfif_unit + self.info["jfif_density"] = jfif_density + elif marker == 0xFFE1 and s[:5] == b"Exif\0": + if "exif" not in self.info: + # extract EXIF information (incomplete) + self.info["exif"] = s # FIXME: value will change + self._exif_offset = self.fp.tell() - n + 6 + elif marker == 0xFFE2 and s[:5] == b"FPXR\0": + # extract FlashPix information (incomplete) + self.info["flashpix"] = s # FIXME: value will change + elif marker == 0xFFE2 and s[:12] == b"ICC_PROFILE\0": + # Since an ICC profile can be larger than the maximum size of + # a JPEG marker (64K), we need provisions to split it into + # multiple markers. The format defined by the ICC specifies + # one or more APP2 markers containing the following data: + # Identifying string ASCII "ICC_PROFILE\0" (12 bytes) + # Marker sequence number 1, 2, etc (1 byte) + # Number of markers Total of APP2's used (1 byte) + # Profile data (remainder of APP2 data) + # Decoders should use the marker sequence numbers to + # reassemble the profile, rather than assuming that the APP2 + # markers appear in the correct sequence. + self.icclist.append(s) + elif marker == 0xFFED and s[:14] == b"Photoshop 3.0\x00": + # parse the image resource block + offset = 14 + photoshop = self.info.setdefault("photoshop", {}) + while s[offset : offset + 4] == b"8BIM": + try: + offset += 4 + # resource code + code = i16(s, offset) + offset += 2 + # resource name (usually empty) + name_len = s[offset] + # name = s[offset+1:offset+1+name_len] + offset += 1 + name_len + offset += offset & 1 # align + # resource data block + size = i32(s, offset) + offset += 4 + data = s[offset : offset + size] + if code == 0x03ED: # ResolutionInfo + data = { + "XResolution": i32(data, 0) / 65536, + "DisplayedUnitsX": i16(data, 4), + "YResolution": i32(data, 8) / 65536, + "DisplayedUnitsY": i16(data, 12), + } + photoshop[code] = data + offset += size + offset += offset & 1 # align + except struct.error: + break # insufficient data + + elif marker == 0xFFEE and s[:5] == b"Adobe": + self.info["adobe"] = i16(s, 5) + # extract Adobe custom properties + try: + adobe_transform = s[11] + except IndexError: + pass + else: + self.info["adobe_transform"] = adobe_transform + elif marker == 0xFFE2 and s[:4] == b"MPF\0": + # extract MPO information + self.info["mp"] = s[4:] + # offset is current location minus buffer size + # plus constant header size + self.info["mpoffset"] = self.fp.tell() - n + 4 + + # If DPI isn't in JPEG header, fetch from EXIF + if "dpi" not in self.info and "exif" in self.info: + try: + exif = self.getexif() + resolution_unit = exif[0x0128] + x_resolution = exif[0x011A] + try: + dpi = float(x_resolution[0]) / x_resolution[1] + except TypeError: + dpi = x_resolution + if math.isnan(dpi): + raise ValueError + if resolution_unit == 3: # cm + # 1 dpcm = 2.54 dpi + dpi *= 2.54 + self.info["dpi"] = dpi, dpi + except (TypeError, KeyError, SyntaxError, ValueError, ZeroDivisionError): + # SyntaxError for invalid/unreadable EXIF + # KeyError for dpi not included + # ZeroDivisionError for invalid dpi rational value + # ValueError or TypeError for dpi being an invalid float + self.info["dpi"] = 72, 72 + + +def COM(self, marker): + # + # Comment marker. Store these in the APP dictionary. + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + + self.info["comment"] = s + self.app["COM"] = s # compatibility + self.applist.append(("COM", s)) + + +def SOF(self, marker): + # + # Start of frame marker. Defines the size and mode of the + # image. JPEG is colour blind, so we use some simple + # heuristics to map the number of layers to an appropriate + # mode. Note that this could be made a bit brighter, by + # looking for JFIF and Adobe APP markers. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + self._size = i16(s, 3), i16(s, 1) + + self.bits = s[0] + if self.bits != 8: + msg = f"cannot handle {self.bits}-bit layers" + raise SyntaxError(msg) + + self.layers = s[5] + if self.layers == 1: + self.mode = "L" + elif self.layers == 3: + self.mode = "RGB" + elif self.layers == 4: + self.mode = "CMYK" + else: + msg = f"cannot handle {self.layers}-layer images" + raise SyntaxError(msg) + + if marker in [0xFFC2, 0xFFC6, 0xFFCA, 0xFFCE]: + self.info["progressive"] = self.info["progression"] = 1 + + if self.icclist: + # fixup icc profile + self.icclist.sort() # sort by sequence number + if self.icclist[0][13] == len(self.icclist): + profile = [] + for p in self.icclist: + profile.append(p[14:]) + icc_profile = b"".join(profile) + else: + icc_profile = None # wrong number of fragments + self.info["icc_profile"] = icc_profile + self.icclist = [] + + for i in range(6, len(s), 3): + t = s[i : i + 3] + # 4-tuples: id, vsamp, hsamp, qtable + self.layer.append((t[0], t[1] // 16, t[1] & 15, t[2])) + + +def DQT(self, marker): + # + # Define quantization table. Note that there might be more + # than one table in each marker. + + # FIXME: The quantization tables can be used to estimate the + # compression quality. + + n = i16(self.fp.read(2)) - 2 + s = ImageFile._safe_read(self.fp, n) + while len(s): + v = s[0] + precision = 1 if (v // 16 == 0) else 2 # in bytes + qt_length = 1 + precision * 64 + if len(s) < qt_length: + msg = "bad quantization table marker" + raise SyntaxError(msg) + data = array.array("B" if precision == 1 else "H", s[1:qt_length]) + if sys.byteorder == "little" and precision > 1: + data.byteswap() # the values are always big-endian + self.quantization[v & 15] = [data[i] for i in zigzag_index] + s = s[qt_length:] + + +# +# JPEG marker table + +MARKER = { + 0xFFC0: ("SOF0", "Baseline DCT", SOF), + 0xFFC1: ("SOF1", "Extended Sequential DCT", SOF), + 0xFFC2: ("SOF2", "Progressive DCT", SOF), + 0xFFC3: ("SOF3", "Spatial lossless", SOF), + 0xFFC4: ("DHT", "Define Huffman table", Skip), + 0xFFC5: ("SOF5", "Differential sequential DCT", SOF), + 0xFFC6: ("SOF6", "Differential progressive DCT", SOF), + 0xFFC7: ("SOF7", "Differential spatial", SOF), + 0xFFC8: ("JPG", "Extension", None), + 0xFFC9: ("SOF9", "Extended sequential DCT (AC)", SOF), + 0xFFCA: ("SOF10", "Progressive DCT (AC)", SOF), + 0xFFCB: ("SOF11", "Spatial lossless DCT (AC)", SOF), + 0xFFCC: ("DAC", "Define arithmetic coding conditioning", Skip), + 0xFFCD: ("SOF13", "Differential sequential DCT (AC)", SOF), + 0xFFCE: ("SOF14", "Differential progressive DCT (AC)", SOF), + 0xFFCF: ("SOF15", "Differential spatial (AC)", SOF), + 0xFFD0: ("RST0", "Restart 0", None), + 0xFFD1: ("RST1", "Restart 1", None), + 0xFFD2: ("RST2", "Restart 2", None), + 0xFFD3: ("RST3", "Restart 3", None), + 0xFFD4: ("RST4", "Restart 4", None), + 0xFFD5: ("RST5", "Restart 5", None), + 0xFFD6: ("RST6", "Restart 6", None), + 0xFFD7: ("RST7", "Restart 7", None), + 0xFFD8: ("SOI", "Start of image", None), + 0xFFD9: ("EOI", "End of image", None), + 0xFFDA: ("SOS", "Start of scan", Skip), + 0xFFDB: ("DQT", "Define quantization table", DQT), + 0xFFDC: ("DNL", "Define number of lines", Skip), + 0xFFDD: ("DRI", "Define restart interval", Skip), + 0xFFDE: ("DHP", "Define hierarchical progression", SOF), + 0xFFDF: ("EXP", "Expand reference component", Skip), + 0xFFE0: ("APP0", "Application segment 0", APP), + 0xFFE1: ("APP1", "Application segment 1", APP), + 0xFFE2: ("APP2", "Application segment 2", APP), + 0xFFE3: ("APP3", "Application segment 3", APP), + 0xFFE4: ("APP4", "Application segment 4", APP), + 0xFFE5: ("APP5", "Application segment 5", APP), + 0xFFE6: ("APP6", "Application segment 6", APP), + 0xFFE7: ("APP7", "Application segment 7", APP), + 0xFFE8: ("APP8", "Application segment 8", APP), + 0xFFE9: ("APP9", "Application segment 9", APP), + 0xFFEA: ("APP10", "Application segment 10", APP), + 0xFFEB: ("APP11", "Application segment 11", APP), + 0xFFEC: ("APP12", "Application segment 12", APP), + 0xFFED: ("APP13", "Application segment 13", APP), + 0xFFEE: ("APP14", "Application segment 14", APP), + 0xFFEF: ("APP15", "Application segment 15", APP), + 0xFFF0: ("JPG0", "Extension 0", None), + 0xFFF1: ("JPG1", "Extension 1", None), + 0xFFF2: ("JPG2", "Extension 2", None), + 0xFFF3: ("JPG3", "Extension 3", None), + 0xFFF4: ("JPG4", "Extension 4", None), + 0xFFF5: ("JPG5", "Extension 5", None), + 0xFFF6: ("JPG6", "Extension 6", None), + 0xFFF7: ("JPG7", "Extension 7", None), + 0xFFF8: ("JPG8", "Extension 8", None), + 0xFFF9: ("JPG9", "Extension 9", None), + 0xFFFA: ("JPG10", "Extension 10", None), + 0xFFFB: ("JPG11", "Extension 11", None), + 0xFFFC: ("JPG12", "Extension 12", None), + 0xFFFD: ("JPG13", "Extension 13", None), + 0xFFFE: ("COM", "Comment", COM), +} + + +def _accept(prefix): + # Magic number was taken from https://en.wikipedia.org/wiki/JPEG + return prefix[:3] == b"\xFF\xD8\xFF" + + +## +# Image plugin for JPEG and JFIF images. + + +class JpegImageFile(ImageFile.ImageFile): + format = "JPEG" + format_description = "JPEG (ISO 10918)" + + def _open(self): + s = self.fp.read(3) + + if not _accept(s): + msg = "not a JPEG file" + raise SyntaxError(msg) + s = b"\xFF" + + # Create attributes + self.bits = self.layers = 0 + + # JPEG specifics (internal) + self.layer = [] + self.huffman_dc = {} + self.huffman_ac = {} + self.quantization = {} + self.app = {} # compatibility + self.applist = [] + self.icclist = [] + + while True: + i = s[0] + if i == 0xFF: + s = s + self.fp.read(1) + i = i16(s) + else: + # Skip non-0xFF junk + s = self.fp.read(1) + continue + + if i in MARKER: + name, description, handler = MARKER[i] + if handler is not None: + handler(self, i) + if i == 0xFFDA: # start of scan + rawmode = self.mode + if self.mode == "CMYK": + rawmode = "CMYK;I" # assume adobe conventions + self.tile = [("jpeg", (0, 0) + self.size, 0, (rawmode, ""))] + # self.__offset = self.fp.tell() + break + s = self.fp.read(1) + elif i == 0 or i == 0xFFFF: + # padded marker or junk; move on + s = b"\xff" + elif i == 0xFF00: # Skip extraneous data (escaped 0xFF) + s = self.fp.read(1) + else: + msg = "no marker found" + raise SyntaxError(msg) + + def load_read(self, read_bytes): + """ + internal: read more image data + For premature EOF and LOAD_TRUNCATED_IMAGES adds EOI marker + so libjpeg can finish decoding + """ + s = self.fp.read(read_bytes) + + if not s and ImageFile.LOAD_TRUNCATED_IMAGES and not hasattr(self, "_ended"): + # Premature EOF. + # Pretend file is finished adding EOI marker + self._ended = True + return b"\xFF\xD9" + + return s + + def draft(self, mode, size): + if len(self.tile) != 1: + return + + # Protect from second call + if self.decoderconfig: + return + + d, e, o, a = self.tile[0] + scale = 1 + original_size = self.size + + if a[0] == "RGB" and mode in ["L", "YCbCr"]: + self.mode = mode + a = mode, "" + + if size: + scale = min(self.size[0] // size[0], self.size[1] // size[1]) + for s in [8, 4, 2, 1]: + if scale >= s: + break + e = ( + e[0], + e[1], + (e[2] - e[0] + s - 1) // s + e[0], + (e[3] - e[1] + s - 1) // s + e[1], + ) + self._size = ((self.size[0] + s - 1) // s, (self.size[1] + s - 1) // s) + scale = s + + self.tile = [(d, e, o, a)] + self.decoderconfig = (scale, 0) + + box = (0, 0, original_size[0] / scale, original_size[1] / scale) + return self.mode, box + + def load_djpeg(self): + # ALTERNATIVE: handle JPEGs via the IJG command line utilities + + f, path = tempfile.mkstemp() + os.close(f) + if os.path.exists(self.filename): + subprocess.check_call(["djpeg", "-outfile", path, self.filename]) + else: + try: + os.unlink(path) + except OSError: + pass + + msg = "Invalid Filename" + raise ValueError(msg) + + try: + with Image.open(path) as _im: + _im.load() + self.im = _im.im + finally: + try: + os.unlink(path) + except OSError: + pass + + self.mode = self.im.mode + self._size = self.im.size + + self.tile = [] + + def _getexif(self): + return _getexif(self) + + def _getmp(self): + return _getmp(self) + + def getxmp(self): + """ + Returns a dictionary containing the XMP tags. + Requires defusedxml to be installed. + + :returns: XMP tags in a dictionary. + """ + + for segment, content in self.applist: + if segment == "APP1": + marker, xmp_tags = content.rsplit(b"\x00", 1) + if marker == b"http://ns.adobe.com/xap/1.0/": + return self._getxmp(xmp_tags) + return {} + + +def _getexif(self): + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + +def _getmp(self): + # Extract MP information. This method was inspired by the "highly + # experimental" _getexif version that's been in use for years now, + # itself based on the ImageFileDirectory class in the TIFF plugin. + + # The MP record essentially consists of a TIFF file embedded in a JPEG + # application marker. + try: + data = self.info["mp"] + except KeyError: + return None + file_contents = io.BytesIO(data) + head = file_contents.read(8) + endianness = ">" if head[:4] == b"\x4d\x4d\x00\x2a" else "<" + # process dictionary + from . import TiffImagePlugin + + try: + info = TiffImagePlugin.ImageFileDirectory_v2(head) + file_contents.seek(info.next) + info.load(file_contents) + mp = dict(info) + except Exception as e: + msg = "malformed MP Index (unreadable directory)" + raise SyntaxError(msg) from e + # it's an error not to have a number of images + try: + quant = mp[0xB001] + except KeyError as e: + msg = "malformed MP Index (no number of images)" + raise SyntaxError(msg) from e + # get MP entries + mpentries = [] + try: + rawmpentries = mp[0xB002] + for entrynum in range(0, quant): + unpackedentry = struct.unpack_from( + f"{endianness}LLLHH", rawmpentries, entrynum * 16 + ) + labels = ("Attribute", "Size", "DataOffset", "EntryNo1", "EntryNo2") + mpentry = dict(zip(labels, unpackedentry)) + mpentryattr = { + "DependentParentImageFlag": bool(mpentry["Attribute"] & (1 << 31)), + "DependentChildImageFlag": bool(mpentry["Attribute"] & (1 << 30)), + "RepresentativeImageFlag": bool(mpentry["Attribute"] & (1 << 29)), + "Reserved": (mpentry["Attribute"] & (3 << 27)) >> 27, + "ImageDataFormat": (mpentry["Attribute"] & (7 << 24)) >> 24, + "MPType": mpentry["Attribute"] & 0x00FFFFFF, + } + if mpentryattr["ImageDataFormat"] == 0: + mpentryattr["ImageDataFormat"] = "JPEG" + else: + msg = "unsupported picture format in MPO" + raise SyntaxError(msg) + mptypemap = { + 0x000000: "Undefined", + 0x010001: "Large Thumbnail (VGA Equivalent)", + 0x010002: "Large Thumbnail (Full HD Equivalent)", + 0x020001: "Multi-Frame Image (Panorama)", + 0x020002: "Multi-Frame Image: (Disparity)", + 0x020003: "Multi-Frame Image: (Multi-Angle)", + 0x030000: "Baseline MP Primary Image", + } + mpentryattr["MPType"] = mptypemap.get(mpentryattr["MPType"], "Unknown") + mpentry["Attribute"] = mpentryattr + mpentries.append(mpentry) + mp[0xB002] = mpentries + except KeyError as e: + msg = "malformed MP Index (bad MP Entry)" + raise SyntaxError(msg) from e + # Next we should try and parse the individual image unique ID list; + # we don't because I've never seen this actually used in a real MPO + # file and so can't test it. + return mp + + +# -------------------------------------------------------------------- +# stuff to save JPEG files + +RAWMODE = { + "1": "L", + "L": "L", + "RGB": "RGB", + "RGBX": "RGB", + "CMYK": "CMYK;I", # assume adobe conventions + "YCbCr": "YCbCr", +} + +# fmt: off +zigzag_index = ( + 0, 1, 5, 6, 14, 15, 27, 28, + 2, 4, 7, 13, 16, 26, 29, 42, + 3, 8, 12, 17, 25, 30, 41, 43, + 9, 11, 18, 24, 31, 40, 44, 53, + 10, 19, 23, 32, 39, 45, 52, 54, + 20, 22, 33, 38, 46, 51, 55, 60, + 21, 34, 37, 47, 50, 56, 59, 61, + 35, 36, 48, 49, 57, 58, 62, 63, +) + +samplings = { + (1, 1, 1, 1, 1, 1): 0, + (2, 1, 1, 1, 1, 1): 1, + (2, 2, 1, 1, 1, 1): 2, +} +# fmt: on + + +def get_sampling(im): + # There's no subsampling when images have only 1 layer + # (grayscale images) or when they are CMYK (4 layers), + # so set subsampling to the default value. + # + # NOTE: currently Pillow can't encode JPEG to YCCK format. + # If YCCK support is added in the future, subsampling code will have + # to be updated (here and in JpegEncode.c) to deal with 4 layers. + if not hasattr(im, "layers") or im.layers in (1, 4): + return -1 + sampling = im.layer[0][1:3] + im.layer[1][1:3] + im.layer[2][1:3] + return samplings.get(sampling, -1) + + +def _save(im, fp, filename): + if im.width == 0 or im.height == 0: + msg = "cannot write empty image as JPEG" + raise ValueError(msg) + + try: + rawmode = RAWMODE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as JPEG" + raise OSError(msg) from e + + info = im.encoderinfo + + dpi = [round(x) for x in info.get("dpi", (0, 0))] + + quality = info.get("quality", -1) + subsampling = info.get("subsampling", -1) + qtables = info.get("qtables") + + if quality == "keep": + quality = -1 + subsampling = "keep" + qtables = "keep" + elif quality in presets: + preset = presets[quality] + quality = -1 + subsampling = preset.get("subsampling", -1) + qtables = preset.get("quantization") + elif not isinstance(quality, int): + msg = "Invalid quality setting" + raise ValueError(msg) + else: + if subsampling in presets: + subsampling = presets[subsampling].get("subsampling", -1) + if isinstance(qtables, str) and qtables in presets: + qtables = presets[qtables].get("quantization") + + if subsampling == "4:4:4": + subsampling = 0 + elif subsampling == "4:2:2": + subsampling = 1 + elif subsampling == "4:2:0": + subsampling = 2 + elif subsampling == "4:1:1": + # For compatibility. Before Pillow 4.3, 4:1:1 actually meant 4:2:0. + # Set 4:2:0 if someone is still using that value. + subsampling = 2 + elif subsampling == "keep": + if im.format != "JPEG": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + subsampling = get_sampling(im) + + def validate_qtables(qtables): + if qtables is None: + return qtables + if isinstance(qtables, str): + try: + lines = [ + int(num) + for line in qtables.splitlines() + for num in line.split("#", 1)[0].split() + ] + except ValueError as e: + msg = "Invalid quantization table" + raise ValueError(msg) from e + else: + qtables = [lines[s : s + 64] for s in range(0, len(lines), 64)] + if isinstance(qtables, (tuple, list, dict)): + if isinstance(qtables, dict): + qtables = [ + qtables[key] for key in range(len(qtables)) if key in qtables + ] + elif isinstance(qtables, tuple): + qtables = list(qtables) + if not (0 < len(qtables) < 5): + msg = "None or too many quantization tables" + raise ValueError(msg) + for idx, table in enumerate(qtables): + try: + if len(table) != 64: + raise TypeError + table = array.array("H", table) + except TypeError as e: + msg = "Invalid quantization table" + raise ValueError(msg) from e + else: + qtables[idx] = list(table) + return qtables + + if qtables == "keep": + if im.format != "JPEG": + msg = "Cannot use 'keep' when original image is not a JPEG" + raise ValueError(msg) + qtables = getattr(im, "quantization", None) + qtables = validate_qtables(qtables) + + extra = info.get("extra", b"") + + MAX_BYTES_IN_MARKER = 65533 + icc_profile = info.get("icc_profile") + if icc_profile: + ICC_OVERHEAD_LEN = 14 + MAX_DATA_BYTES_IN_MARKER = MAX_BYTES_IN_MARKER - ICC_OVERHEAD_LEN + markers = [] + while icc_profile: + markers.append(icc_profile[:MAX_DATA_BYTES_IN_MARKER]) + icc_profile = icc_profile[MAX_DATA_BYTES_IN_MARKER:] + i = 1 + for marker in markers: + size = o16(2 + ICC_OVERHEAD_LEN + len(marker)) + extra += ( + b"\xFF\xE2" + + size + + b"ICC_PROFILE\0" + + o8(i) + + o8(len(markers)) + + marker + ) + i += 1 + + comment = info.get("comment", im.info.get("comment")) + + # "progressive" is the official name, but older documentation + # says "progression" + # FIXME: issue a warning if the wrong form is used (post-1.1.7) + progressive = info.get("progressive", False) or info.get("progression", False) + + optimize = info.get("optimize", False) + + exif = info.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + if len(exif) > MAX_BYTES_IN_MARKER: + msg = "EXIF data is too long" + raise ValueError(msg) + + # get keyword arguments + im.encoderconfig = ( + quality, + progressive, + info.get("smooth", 0), + optimize, + info.get("streamtype", 0), + dpi[0], + dpi[1], + subsampling, + qtables, + comment, + extra, + exif, + ) + + # if we optimize, libjpeg needs a buffer big enough to hold the whole image + # in a shot. Guessing on the size, at im.size bytes. (raw pixel size is + # channels*size, this is a value that's been used in a django patch. + # https://github.com/matthewwithanm/django-imagekit/issues/50 + bufsize = 0 + if optimize or progressive: + # CMYK can be bigger + if im.mode == "CMYK": + bufsize = 4 * im.size[0] * im.size[1] + # keep sets quality to -1, but the actual value may be high. + elif quality >= 95 or quality == -1: + bufsize = 2 * im.size[0] * im.size[1] + else: + bufsize = im.size[0] * im.size[1] + + # The EXIF info needs to be written as one block, + APP1, + one spare byte. + # Ensure that our buffer is big enough. Same with the icc_profile block. + bufsize = max(ImageFile.MAXBLOCK, bufsize, len(exif) + 5, len(extra) + 1) + + ImageFile._save(im, fp, [("jpeg", (0, 0) + im.size, 0, rawmode)], bufsize) + + +def _save_cjpeg(im, fp, filename): + # ALTERNATIVE: handle JPEGs via the IJG command line utilities. + tempfile = im._dump() + subprocess.check_call(["cjpeg", "-outfile", filename, tempfile]) + try: + os.unlink(tempfile) + except OSError: + pass + + +## +# Factory for making JPEG and MPO instances +def jpeg_factory(fp=None, filename=None): + im = JpegImageFile(fp, filename) + try: + mpheader = im._getmp() + if mpheader[45057] > 1: + # It's actually an MPO + from .MpoImagePlugin import MpoImageFile + + # Don't reload everything, just convert it. + im = MpoImageFile.adopt(im, mpheader) + except (TypeError, IndexError): + # It is really a JPEG + pass + except SyntaxError: + warnings.warn( + "Image appears to be a malformed MPO file, it will be " + "interpreted as a base JPEG file" + ) + return im + + +# --------------------------------------------------------------------- +# Registry stuff + +Image.register_open(JpegImageFile.format, jpeg_factory, _accept) +Image.register_save(JpegImageFile.format, _save) + +Image.register_extensions(JpegImageFile.format, [".jfif", ".jpe", ".jpg", ".jpeg"]) + +Image.register_mime(JpegImageFile.format, "image/jpeg") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegPresets.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegPresets.py new file mode 100644 index 0000000..a678e24 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/JpegPresets.py @@ -0,0 +1,240 @@ +""" +JPEG quality settings equivalent to the Photoshop settings. +Can be used when saving JPEG files. + +The following presets are available by default: +``web_low``, ``web_medium``, ``web_high``, ``web_very_high``, ``web_maximum``, +``low``, ``medium``, ``high``, ``maximum``. +More presets can be added to the :py:data:`presets` dict if needed. + +To apply the preset, specify:: + + quality="preset_name" + +To apply only the quantization table:: + + qtables="preset_name" + +To apply only the subsampling setting:: + + subsampling="preset_name" + +Example:: + + im.save("image_name.jpg", quality="web_high") + +Subsampling +----------- + +Subsampling is the practice of encoding images by implementing less resolution +for chroma information than for luma information. +(ref.: https://en.wikipedia.org/wiki/Chroma_subsampling) + +Possible subsampling values are 0, 1 and 2 that correspond to 4:4:4, 4:2:2 and +4:2:0. + +You can get the subsampling of a JPEG with the +:func:`.JpegImagePlugin.get_sampling` function. + +In JPEG compressed data a JPEG marker is used instead of an EXIF tag. +(ref.: https://exiv2.org/tags.html) + + +Quantization tables +------------------- + +They are values use by the DCT (Discrete cosine transform) to remove +*unnecessary* information from the image (the lossy part of the compression). +(ref.: https://en.wikipedia.org/wiki/Quantization_matrix#Quantization_matrices, +https://en.wikipedia.org/wiki/JPEG#Quantization) + +You can get the quantization tables of a JPEG with:: + + im.quantization + +This will return a dict with a number of lists. You can pass this dict +directly as the qtables argument when saving a JPEG. + +The quantization table format in presets is a list with sublists. These formats +are interchangeable. + +Libjpeg ref.: +https://web.archive.org/web/20120328125543/http://www.jpegcameras.com/libjpeg/libjpeg-3.html + +""" + +# fmt: off +presets = { + 'web_low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [20, 16, 25, 39, 50, 46, 62, 68, + 16, 18, 23, 38, 38, 53, 65, 68, + 25, 23, 31, 38, 53, 65, 68, 68, + 39, 38, 38, 53, 65, 68, 68, 68, + 50, 38, 53, 65, 68, 68, 68, 68, + 46, 53, 65, 68, 68, 68, 68, 68, + 62, 65, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68], + [21, 25, 32, 38, 54, 68, 68, 68, + 25, 28, 24, 38, 54, 68, 68, 68, + 32, 24, 32, 43, 66, 68, 68, 68, + 38, 38, 43, 53, 68, 68, 68, 68, + 54, 54, 66, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68, + 68, 68, 68, 68, 68, 68, 68, 68] + ]}, + 'web_medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [16, 11, 11, 16, 23, 27, 31, 30, + 11, 12, 12, 15, 20, 23, 23, 30, + 11, 12, 13, 16, 23, 26, 35, 47, + 16, 15, 16, 23, 26, 37, 47, 64, + 23, 20, 23, 26, 39, 51, 64, 64, + 27, 23, 26, 37, 51, 64, 64, 64, + 31, 23, 35, 47, 64, 64, 64, 64, + 30, 30, 47, 64, 64, 64, 64, 64], + [17, 15, 17, 21, 20, 26, 38, 48, + 15, 19, 18, 17, 20, 26, 35, 43, + 17, 18, 20, 22, 26, 30, 46, 53, + 21, 17, 22, 28, 30, 39, 53, 64, + 20, 20, 26, 30, 39, 48, 64, 64, + 26, 26, 30, 39, 48, 63, 64, 64, + 38, 35, 46, 53, 64, 64, 64, 64, + 48, 43, 53, 64, 64, 64, 64, 64] + ]}, + 'web_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 14, 19, + 6, 6, 6, 11, 12, 15, 19, 28, + 9, 8, 10, 12, 16, 20, 27, 31, + 11, 10, 12, 15, 20, 27, 31, 31, + 12, 12, 14, 19, 27, 31, 31, 31, + 16, 12, 19, 28, 31, 31, 31, 31], + [7, 7, 13, 24, 26, 31, 31, 31, + 7, 12, 16, 21, 31, 31, 31, 31, + 13, 16, 17, 31, 31, 31, 31, 31, + 24, 21, 31, 31, 31, 31, 31, 31, + 26, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31, + 31, 31, 31, 31, 31, 31, 31, 31] + ]}, + 'web_very_high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 11, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 11, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'web_maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, + 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 2, 2, 3, + 1, 1, 1, 1, 2, 2, 3, 3, + 1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 2, 2, 3, 3, 3, 3], + [1, 1, 1, 2, 2, 3, 3, 3, + 1, 1, 1, 2, 3, 3, 3, 3, + 1, 1, 1, 3, 3, 3, 3, 3, + 2, 2, 3, 3, 3, 3, 3, 3, + 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3] + ]}, + 'low': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [18, 14, 14, 21, 30, 35, 34, 17, + 14, 16, 16, 19, 26, 23, 12, 12, + 14, 16, 17, 21, 23, 12, 12, 12, + 21, 19, 21, 23, 12, 12, 12, 12, + 30, 26, 23, 12, 12, 12, 12, 12, + 35, 23, 12, 12, 12, 12, 12, 12, + 34, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [20, 19, 22, 27, 20, 20, 17, 17, + 19, 25, 23, 14, 14, 12, 12, 12, + 22, 23, 14, 14, 12, 12, 12, 12, + 27, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'medium': {'subsampling': 2, # "4:2:0" + 'quantization': [ + [12, 8, 8, 12, 17, 21, 24, 17, + 8, 9, 9, 11, 15, 19, 12, 12, + 8, 9, 10, 12, 19, 12, 12, 12, + 12, 11, 12, 21, 12, 12, 12, 12, + 17, 15, 19, 12, 12, 12, 12, 12, + 21, 19, 12, 12, 12, 12, 12, 12, + 24, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12], + [13, 11, 13, 16, 20, 20, 17, 17, + 11, 14, 14, 14, 14, 12, 12, 12, + 13, 14, 14, 14, 12, 12, 12, 12, + 16, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'high': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [6, 4, 4, 6, 9, 11, 12, 16, + 4, 5, 5, 6, 8, 10, 12, 12, + 4, 5, 5, 6, 10, 12, 12, 12, + 6, 6, 6, 11, 12, 12, 12, 12, + 9, 8, 10, 12, 12, 12, 12, 12, + 11, 10, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, + 16, 12, 12, 12, 12, 12, 12, 12], + [7, 7, 13, 24, 20, 20, 17, 17, + 7, 12, 16, 14, 14, 12, 12, 12, + 13, 16, 14, 14, 12, 12, 12, 12, + 24, 14, 14, 12, 12, 12, 12, 12, + 20, 14, 12, 12, 12, 12, 12, 12, + 20, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12, + 17, 12, 12, 12, 12, 12, 12, 12] + ]}, + 'maximum': {'subsampling': 0, # "4:4:4" + 'quantization': [ + [2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 3, 4, 5, 6, + 2, 2, 2, 2, 4, 5, 7, 9, + 2, 2, 2, 4, 5, 7, 9, 12, + 3, 3, 4, 5, 8, 10, 12, 12, + 4, 4, 5, 7, 10, 12, 12, 12, + 5, 5, 7, 9, 12, 12, 12, 12, + 6, 6, 9, 12, 12, 12, 12, 12], + [3, 3, 5, 9, 13, 15, 15, 15, + 3, 4, 6, 10, 14, 12, 12, 12, + 5, 6, 9, 14, 12, 12, 12, 12, + 9, 10, 14, 12, 12, 12, 12, 12, + 13, 14, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12, + 15, 12, 12, 12, 12, 12, 12, 12] + ]}, +} +# fmt: on diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py new file mode 100644 index 0000000..17c008b --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/McIdasImagePlugin.py @@ -0,0 +1,75 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Basic McIdas support for PIL +# +# History: +# 1997-05-05 fl Created (8-bit images only) +# 2009-03-08 fl Added 16/32-bit support. +# +# Thanks to Richard Jones and Craig Swank for specs and samples. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +import struct + +from . import Image, ImageFile + + +def _accept(s): + return s[:8] == b"\x00\x00\x00\x00\x00\x00\x00\x04" + + +## +# Image plugin for McIdas area images. + + +class McIdasImageFile(ImageFile.ImageFile): + format = "MCIDAS" + format_description = "McIdas area file" + + def _open(self): + # parse area file directory + s = self.fp.read(256) + if not _accept(s) or len(s) != 256: + msg = "not an McIdas area file" + raise SyntaxError(msg) + + self.area_descriptor_raw = s + self.area_descriptor = w = [0] + list(struct.unpack("!64i", s)) + + # get mode + if w[11] == 1: + mode = rawmode = "L" + elif w[11] == 2: + # FIXME: add memory map support + mode = "I" + rawmode = "I;16B" + elif w[11] == 4: + # FIXME: add memory map support + mode = "I" + rawmode = "I;32B" + else: + msg = "unsupported McIdas format" + raise SyntaxError(msg) + + self.mode = mode + self._size = w[10], w[9] + + offset = w[34] + w[15] + stride = w[15] + w[10] * w[11] * w[14] + + self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride, 1))] + + +# -------------------------------------------------------------------- +# registry + +Image.register_open(McIdasImageFile.format, McIdasImageFile, _accept) + +# no default extension diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MicImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MicImagePlugin.py new file mode 100644 index 0000000..8013189 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MicImagePlugin.py @@ -0,0 +1,103 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Microsoft Image Composer support for PIL +# +# Notes: +# uses TiffImagePlugin.py to read the actual image streams +# +# History: +# 97-01-20 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + + +import olefile + +from . import Image, TiffImagePlugin + +# +# -------------------------------------------------------------------- + + +def _accept(prefix): + return prefix[:8] == olefile.MAGIC + + +## +# Image plugin for Microsoft's Image Composer file format. + + +class MicImageFile(TiffImagePlugin.TiffImageFile): + format = "MIC" + format_description = "Microsoft Image Composer" + _close_exclusive_fp_after_loading = False + + def _open(self): + # read the OLE directory and see if this is a likely + # to be a Microsoft Image Composer file + + try: + self.ole = olefile.OleFileIO(self.fp) + except OSError as e: + msg = "not an MIC file; invalid OLE file" + raise SyntaxError(msg) from e + + # find ACI subfiles with Image members (maybe not the + # best way to identify MIC files, but what the... ;-) + + self.images = [] + for path in self.ole.listdir(): + if path[1:] and path[0][-4:] == ".ACI" and path[1] == "Image": + self.images.append(path) + + # if we didn't find any images, this is probably not + # an MIC file. + if not self.images: + msg = "not an MIC file; no image entries" + raise SyntaxError(msg) + + self.frame = None + self._n_frames = len(self.images) + self.is_animated = self._n_frames > 1 + + self.seek(0) + + def seek(self, frame): + if not self._seek_check(frame): + return + try: + filename = self.images[frame] + except IndexError as e: + msg = "no such frame" + raise EOFError(msg) from e + + self.fp = self.ole.openstream(filename) + + TiffImagePlugin.TiffImageFile._open(self) + + self.frame = frame + + def tell(self): + return self.frame + + def close(self): + self.ole.close() + super().close() + + def __exit__(self, *args): + self.ole.close() + super().__exit__() + + +# +# -------------------------------------------------------------------- + +Image.register_open(MicImageFile.format, MicImageFile, _accept) + +Image.register_extension(MicImageFile.format, ".mic") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py new file mode 100644 index 0000000..d96d3a1 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpegImagePlugin.py @@ -0,0 +1,82 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPEG file handling +# +# History: +# 95-09-09 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile +from ._binary import i8 + +# +# Bitstream parser + + +class BitStream: + def __init__(self, fp): + self.fp = fp + self.bits = 0 + self.bitbuffer = 0 + + def next(self): + return i8(self.fp.read(1)) + + def peek(self, bits): + while self.bits < bits: + c = self.next() + if c < 0: + self.bits = 0 + continue + self.bitbuffer = (self.bitbuffer << 8) + c + self.bits += 8 + return self.bitbuffer >> (self.bits - bits) & (1 << bits) - 1 + + def skip(self, bits): + while self.bits < bits: + self.bitbuffer = (self.bitbuffer << 8) + i8(self.fp.read(1)) + self.bits += 8 + self.bits = self.bits - bits + + def read(self, bits): + v = self.peek(bits) + self.bits = self.bits - bits + return v + + +## +# Image plugin for MPEG streams. This plugin can identify a stream, +# but it cannot read it. + + +class MpegImageFile(ImageFile.ImageFile): + format = "MPEG" + format_description = "MPEG" + + def _open(self): + s = BitStream(self.fp) + + if s.read(32) != 0x1B3: + msg = "not an MPEG file" + raise SyntaxError(msg) + + self.mode = "RGB" + self._size = s.read(12), s.read(12) + + +# -------------------------------------------------------------------- +# Registry stuff + +Image.register_open(MpegImageFile.format, MpegImageFile) + +Image.register_extensions(MpegImageFile.format, [".mpg", ".mpeg"]) + +Image.register_mime(MpegImageFile.format, "video/mpeg") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py new file mode 100644 index 0000000..f9261c7 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MpoImagePlugin.py @@ -0,0 +1,197 @@ +# +# The Python Imaging Library. +# $Id$ +# +# MPO file handling +# +# See "Multi-Picture Format" (CIPA DC-007-Translation 2009, Standard of the +# Camera & Imaging Products Association) +# +# The multi-picture object combines multiple JPEG images (with a modified EXIF +# data format) into a single file. While it can theoretically be used much like +# a GIF animation, it is commonly used to represent 3D photographs and is (as +# of this writing) the most commonly used format by 3D cameras. +# +# History: +# 2014-03-13 Feneric Created +# +# See the README file for information on usage and redistribution. +# + +import itertools +import os +import struct + +from . import ( + ExifTags, + Image, + ImageFile, + ImageSequence, + JpegImagePlugin, + TiffImagePlugin, +) +from ._binary import i16be as i16 +from ._binary import o32le + +# def _accept(prefix): +# return JpegImagePlugin._accept(prefix) + + +def _save(im, fp, filename): + JpegImagePlugin._save(im, fp, filename) + + +def _save_all(im, fp, filename): + append_images = im.encoderinfo.get("append_images", []) + if not append_images: + try: + animated = im.is_animated + except AttributeError: + animated = False + if not animated: + _save(im, fp, filename) + return + + mpf_offset = 28 + offsets = [] + for imSequence in itertools.chain([im], append_images): + for im_frame in ImageSequence.Iterator(imSequence): + if not offsets: + # APP2 marker + im_frame.encoderinfo["extra"] = ( + b"\xFF\xE2" + struct.pack(">H", 6 + 82) + b"MPF\0" + b" " * 82 + ) + exif = im_frame.encoderinfo.get("exif") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + im_frame.encoderinfo["exif"] = exif + if exif: + mpf_offset += 4 + len(exif) + + JpegImagePlugin._save(im_frame, fp, filename) + offsets.append(fp.tell()) + else: + im_frame.save(fp, "JPEG") + offsets.append(fp.tell() - offsets[-1]) + + ifd = TiffImagePlugin.ImageFileDirectory_v2() + ifd[0xB000] = b"0100" + ifd[0xB001] = len(offsets) + + mpentries = b"" + data_offset = 0 + for i, size in enumerate(offsets): + if i == 0: + mptype = 0x030000 # Baseline MP Primary Image + else: + mptype = 0x000000 # Undefined + mpentries += struct.pack(" 1 + self._fp = self.fp # FIXME: hack + self._fp.seek(self.__mpoffsets[0]) # get ready to read first frame + self.__frame = 0 + self.offset = 0 + # for now we can only handle reading and individual frame extraction + self.readonly = 1 + + def load_seek(self, pos): + self._fp.seek(pos) + + def seek(self, frame): + if not self._seek_check(frame): + return + self.fp = self._fp + self.offset = self.__mpoffsets[frame] + + self.fp.seek(self.offset + 2) # skip SOI marker + segment = self.fp.read(2) + if not segment: + msg = "No data found for frame" + raise ValueError(msg) + self._size = self._initial_size + if i16(segment) == 0xFFE1: # APP1 + n = i16(self.fp.read(2)) - 2 + self.info["exif"] = ImageFile._safe_read(self.fp, n) + self._reload_exif() + + mptype = self.mpinfo[0xB002][frame]["Attribute"]["MPType"] + if mptype.startswith("Large Thumbnail"): + exif = self.getexif().get_ifd(ExifTags.IFD.Exif) + if 40962 in exif and 40963 in exif: + self._size = (exif[40962], exif[40963]) + elif "exif" in self.info: + del self.info["exif"] + self._reload_exif() + + self.tile = [("jpeg", (0, 0) + self.size, self.offset, (self.mode, ""))] + self.__frame = frame + + def tell(self): + return self.__frame + + @staticmethod + def adopt(jpeg_instance, mpheader=None): + """ + Transform the instance of JpegImageFile into + an instance of MpoImageFile. + After the call, the JpegImageFile is extended + to be an MpoImageFile. + + This is essentially useful when opening a JPEG + file that reveals itself as an MPO, to avoid + double call to _open. + """ + jpeg_instance.__class__ = MpoImageFile + jpeg_instance._after_jpeg_open(mpheader) + return jpeg_instance + + +# --------------------------------------------------------------------- +# Registry stuff + +# Note that since MPO shares a factory with JPEG, we do not need to do a +# separate registration for it here. +# Image.register_open(MpoImageFile.format, +# JpegImagePlugin.jpeg_factory, _accept) +Image.register_save(MpoImageFile.format, _save) +Image.register_save_all(MpoImageFile.format, _save_all) + +Image.register_extension(MpoImageFile.format, ".mpo") + +Image.register_mime(MpoImageFile.format, "image/mpo") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MspImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MspImagePlugin.py new file mode 100644 index 0000000..c6567b2 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/MspImagePlugin.py @@ -0,0 +1,194 @@ +# +# The Python Imaging Library. +# +# MSP file handling +# +# This is the format used by the Paint program in Windows 1 and 2. +# +# History: +# 95-09-05 fl Created +# 97-01-03 fl Read/write MSP images +# 17-02-21 es Fixed RLE interpretation +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-97. +# Copyright (c) Eric Soroos 2017. +# +# See the README file for information on usage and redistribution. +# +# More info on this format: https://archive.org/details/gg243631 +# Page 313: +# Figure 205. Windows Paint Version 1: "DanM" Format +# Figure 206. Windows Paint Version 2: "LinS" Format. Used in Windows V2.03 +# +# See also: https://www.fileformat.info/format/mspaint/egff.htm + +import io +import struct + +from . import Image, ImageFile +from ._binary import i16le as i16 +from ._binary import o16le as o16 + +# +# read MSP files + + +def _accept(prefix): + return prefix[:4] in [b"DanM", b"LinS"] + + +## +# Image plugin for Windows MSP images. This plugin supports both +# uncompressed (Windows 1.0). + + +class MspImageFile(ImageFile.ImageFile): + format = "MSP" + format_description = "Windows Paint" + + def _open(self): + # Header + s = self.fp.read(32) + if not _accept(s): + msg = "not an MSP file" + raise SyntaxError(msg) + + # Header checksum + checksum = 0 + for i in range(0, 32, 2): + checksum = checksum ^ i16(s, i) + if checksum != 0: + msg = "bad MSP checksum" + raise SyntaxError(msg) + + self.mode = "1" + self._size = i16(s, 4), i16(s, 6) + + if s[:4] == b"DanM": + self.tile = [("raw", (0, 0) + self.size, 32, ("1", 0, 1))] + else: + self.tile = [("MSP", (0, 0) + self.size, 32, None)] + + +class MspDecoder(ImageFile.PyDecoder): + # The algo for the MSP decoder is from + # https://www.fileformat.info/format/mspaint/egff.htm + # cc-by-attribution -- That page references is taken from the + # Encyclopedia of Graphics File Formats and is licensed by + # O'Reilly under the Creative Common/Attribution license + # + # For RLE encoded files, the 32byte header is followed by a scan + # line map, encoded as one 16bit word of encoded byte length per + # line. + # + # NOTE: the encoded length of the line can be 0. This was not + # handled in the previous version of this encoder, and there's no + # mention of how to handle it in the documentation. From the few + # examples I've seen, I've assumed that it is a fill of the + # background color, in this case, white. + # + # + # Pseudocode of the decoder: + # Read a BYTE value as the RunType + # If the RunType value is zero + # Read next byte as the RunCount + # Read the next byte as the RunValue + # Write the RunValue byte RunCount times + # If the RunType value is non-zero + # Use this value as the RunCount + # Read and write the next RunCount bytes literally + # + # e.g.: + # 0x00 03 ff 05 00 01 02 03 04 + # would yield the bytes: + # 0xff ff ff 00 01 02 03 04 + # + # which are then interpreted as a bit packed mode '1' image + + _pulls_fd = True + + def decode(self, buffer): + img = io.BytesIO() + blank_line = bytearray((0xFF,) * ((self.state.xsize + 7) // 8)) + try: + self.fd.seek(32) + rowmap = struct.unpack_from( + f"<{self.state.ysize}H", self.fd.read(self.state.ysize * 2) + ) + except struct.error as e: + msg = "Truncated MSP file in row map" + raise OSError(msg) from e + + for x, rowlen in enumerate(rowmap): + try: + if rowlen == 0: + img.write(blank_line) + continue + row = self.fd.read(rowlen) + if len(row) != rowlen: + msg = f"Truncated MSP file, expected {rowlen} bytes on row {x}" + raise OSError(msg) + idx = 0 + while idx < rowlen: + runtype = row[idx] + idx += 1 + if runtype == 0: + (runcount, runval) = struct.unpack_from("Bc", row, idx) + img.write(runval * runcount) + idx += 2 + else: + runcount = runtype + img.write(row[idx : idx + runcount]) + idx += runcount + + except struct.error as e: + msg = f"Corrupted MSP file in row {x}" + raise OSError(msg) from e + + self.set_as_raw(img.getvalue(), ("1", 0, 1)) + + return -1, 0 + + +Image.register_decoder("MSP", MspDecoder) + + +# +# write MSP files (uncompressed only) + + +def _save(im, fp, filename): + if im.mode != "1": + msg = f"cannot write mode {im.mode} as MSP" + raise OSError(msg) + + # create MSP header + header = [0] * 16 + + header[0], header[1] = i16(b"Da"), i16(b"nM") # version 1 + header[2], header[3] = im.size + header[4], header[5] = 1, 1 + header[6], header[7] = 1, 1 + header[8], header[9] = im.size + + checksum = 0 + for h in header: + checksum = checksum ^ h + header[12] = checksum # FIXME: is this the right field? + + # header + for h in header: + fp.write(o16(h)) + + # image body + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 32, ("1", 0, 1))]) + + +# +# registry + +Image.register_open(MspImageFile.format, MspImageFile, _accept) +Image.register_save(MspImageFile.format, _save) + +Image.register_extension(MspImageFile.format, ".msp") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PSDraw.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PSDraw.py new file mode 100644 index 0000000..13b3048 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PSDraw.py @@ -0,0 +1,229 @@ +# +# The Python Imaging Library +# $Id$ +# +# Simple PostScript graphics interface +# +# History: +# 1996-04-20 fl Created +# 1999-01-10 fl Added gsave/grestore to image method +# 2005-05-04 fl Fixed floating point issue in image (from Eric Etheridge) +# +# Copyright (c) 1997-2005 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import sys + +from . import EpsImagePlugin + +## +# Simple PostScript graphics interface. + + +class PSDraw: + """ + Sets up printing to the given file. If ``fp`` is omitted, + ``sys.stdout.buffer`` or ``sys.stdout`` is assumed. + """ + + def __init__(self, fp=None): + if not fp: + try: + fp = sys.stdout.buffer + except AttributeError: + fp = sys.stdout + self.fp = fp + + def begin_document(self, id=None): + """Set up printing of a document. (Write PostScript DSC header.)""" + # FIXME: incomplete + self.fp.write( + b"%!PS-Adobe-3.0\n" + b"save\n" + b"/showpage { } def\n" + b"%%EndComments\n" + b"%%BeginDocument\n" + ) + # self.fp.write(ERROR_PS) # debugging! + self.fp.write(EDROFF_PS) + self.fp.write(VDI_PS) + self.fp.write(b"%%EndProlog\n") + self.isofont = {} + + def end_document(self): + """Ends printing. (Write PostScript DSC footer.)""" + self.fp.write(b"%%EndDocument\nrestore showpage\n%%End\n") + if hasattr(self.fp, "flush"): + self.fp.flush() + + def setfont(self, font, size): + """ + Selects which font to use. + + :param font: A PostScript font name + :param size: Size in points. + """ + font = bytes(font, "UTF-8") + if font not in self.isofont: + # reencode font + self.fp.write(b"/PSDraw-%s ISOLatin1Encoding /%s E\n" % (font, font)) + self.isofont[font] = 1 + # rough + self.fp.write(b"/F0 %d /PSDraw-%s F\n" % (size, font)) + + def line(self, xy0, xy1): + """ + Draws a line between the two points. Coordinates are given in + PostScript point coordinates (72 points per inch, (0, 0) is the lower + left corner of the page). + """ + self.fp.write(b"%d %d %d %d Vl\n" % (*xy0, *xy1)) + + def rectangle(self, box): + """ + Draws a rectangle. + + :param box: A tuple of four integers, specifying left, bottom, width and + height. + """ + self.fp.write(b"%d %d M 0 %d %d Vr\n" % box) + + def text(self, xy, text): + """ + Draws text at the given position. You must use + :py:meth:`~PIL.PSDraw.PSDraw.setfont` before calling this method. + """ + text = bytes(text, "UTF-8") + text = b"\\(".join(text.split(b"(")) + text = b"\\)".join(text.split(b")")) + xy += (text,) + self.fp.write(b"%d %d M (%s) S\n" % xy) + + def image(self, box, im, dpi=None): + """Draw a PIL image, centered in the given box.""" + # default resolution depends on mode + if not dpi: + if im.mode == "1": + dpi = 200 # fax + else: + dpi = 100 # greyscale + # image size (on paper) + x = im.size[0] * 72 / dpi + y = im.size[1] * 72 / dpi + # max allowed size + xmax = float(box[2] - box[0]) + ymax = float(box[3] - box[1]) + if x > xmax: + y = y * xmax / x + x = xmax + if y > ymax: + x = x * ymax / y + y = ymax + dx = (xmax - x) / 2 + box[0] + dy = (ymax - y) / 2 + box[1] + self.fp.write(b"gsave\n%f %f translate\n" % (dx, dy)) + if (x, y) != im.size: + # EpsImagePlugin._save prints the image at (0,0,xsize,ysize) + sx = x / im.size[0] + sy = y / im.size[1] + self.fp.write(b"%f %f scale\n" % (sx, sy)) + EpsImagePlugin._save(im, self.fp, None, 0) + self.fp.write(b"\ngrestore\n") + + +# -------------------------------------------------------------------- +# PostScript driver + +# +# EDROFF.PS -- PostScript driver for Edroff 2 +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + + +EDROFF_PS = b"""\ +/S { show } bind def +/P { moveto show } bind def +/M { moveto } bind def +/X { 0 rmoveto } bind def +/Y { 0 exch rmoveto } bind def +/E { findfont + dup maxlength dict begin + { + 1 index /FID ne { def } { pop pop } ifelse + } forall + /Encoding exch def + dup /FontName exch def + currentdict end definefont pop +} bind def +/F { findfont exch scalefont dup setfont + [ exch /setfont cvx ] cvx bind def +} bind def +""" + +# +# VDI.PS -- PostScript driver for VDI meta commands +# +# History: +# 94-01-25 fl: created (edroff 2.04) +# +# Copyright (c) Fredrik Lundh 1994. +# + +VDI_PS = b"""\ +/Vm { moveto } bind def +/Va { newpath arcn stroke } bind def +/Vl { moveto lineto stroke } bind def +/Vc { newpath 0 360 arc closepath } bind def +/Vr { exch dup 0 rlineto + exch dup 0 exch rlineto + exch neg 0 rlineto + 0 exch neg rlineto + setgray fill } bind def +/Tm matrix def +/Ve { Tm currentmatrix pop + translate scale newpath 0 0 .5 0 360 arc closepath + Tm setmatrix +} bind def +/Vf { currentgray exch setgray fill setgray } bind def +""" + +# +# ERROR.PS -- Error handler +# +# History: +# 89-11-21 fl: created (pslist 1.10) +# + +ERROR_PS = b"""\ +/landscape false def +/errorBUF 200 string def +/errorNL { currentpoint 10 sub exch pop 72 exch moveto } def +errordict begin /handleerror { + initmatrix /Courier findfont 10 scalefont setfont + newpath 72 720 moveto $error begin /newerror false def + (PostScript Error) show errorNL errorNL + (Error: ) show + /errorname load errorBUF cvs show errorNL errorNL + (Command: ) show + /command load dup type /stringtype ne { errorBUF cvs } if show + errorNL errorNL + (VMstatus: ) show + vmstatus errorBUF cvs show ( bytes available, ) show + errorBUF cvs show ( bytes used at level ) show + errorBUF cvs show errorNL errorNL + (Operand stargck: ) show errorNL /ostargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall errorNL + (Execution stargck: ) show errorNL /estargck load { + dup type /stringtype ne { errorBUF cvs } if 72 0 rmoveto show errorNL + } forall + end showpage +} def end +""" diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PaletteFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PaletteFile.py new file mode 100644 index 0000000..4a2c497 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PaletteFile.py @@ -0,0 +1,51 @@ +# +# Python Imaging Library +# $Id$ +# +# stuff to read simple, teragon-style palette files +# +# History: +# 97-08-23 fl Created +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from ._binary import o8 + + +class PaletteFile: + """File handler for Teragon-style palette files.""" + + rawmode = "RGB" + + def __init__(self, fp): + self.palette = [(i, i, i) for i in range(256)] + + while True: + s = fp.readline() + + if not s: + break + if s[:1] == b"#": + continue + if len(s) > 100: + msg = "bad palette file" + raise SyntaxError(msg) + + v = [int(x) for x in s.split()] + try: + [i, r, g, b] = v + except ValueError: + [i, r] = v + g = b = r + + if 0 <= i <= 255: + self.palette[i] = o8(r) + o8(g) + o8(b) + + self.palette = b"".join(self.palette) + + def getpalette(self): + return self.palette, self.rawmode diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py new file mode 100644 index 0000000..a88a907 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PalmImagePlugin.py @@ -0,0 +1,225 @@ +# +# The Python Imaging Library. +# $Id$ +# + +## +# Image plugin for Palm pixmap images (output only). +## + +from . import Image, ImageFile +from ._binary import o8 +from ._binary import o16be as o16b + +# fmt: off +_Palm8BitColormapValues = ( + (255, 255, 255), (255, 204, 255), (255, 153, 255), (255, 102, 255), + (255, 51, 255), (255, 0, 255), (255, 255, 204), (255, 204, 204), + (255, 153, 204), (255, 102, 204), (255, 51, 204), (255, 0, 204), + (255, 255, 153), (255, 204, 153), (255, 153, 153), (255, 102, 153), + (255, 51, 153), (255, 0, 153), (204, 255, 255), (204, 204, 255), + (204, 153, 255), (204, 102, 255), (204, 51, 255), (204, 0, 255), + (204, 255, 204), (204, 204, 204), (204, 153, 204), (204, 102, 204), + (204, 51, 204), (204, 0, 204), (204, 255, 153), (204, 204, 153), + (204, 153, 153), (204, 102, 153), (204, 51, 153), (204, 0, 153), + (153, 255, 255), (153, 204, 255), (153, 153, 255), (153, 102, 255), + (153, 51, 255), (153, 0, 255), (153, 255, 204), (153, 204, 204), + (153, 153, 204), (153, 102, 204), (153, 51, 204), (153, 0, 204), + (153, 255, 153), (153, 204, 153), (153, 153, 153), (153, 102, 153), + (153, 51, 153), (153, 0, 153), (102, 255, 255), (102, 204, 255), + (102, 153, 255), (102, 102, 255), (102, 51, 255), (102, 0, 255), + (102, 255, 204), (102, 204, 204), (102, 153, 204), (102, 102, 204), + (102, 51, 204), (102, 0, 204), (102, 255, 153), (102, 204, 153), + (102, 153, 153), (102, 102, 153), (102, 51, 153), (102, 0, 153), + (51, 255, 255), (51, 204, 255), (51, 153, 255), (51, 102, 255), + (51, 51, 255), (51, 0, 255), (51, 255, 204), (51, 204, 204), + (51, 153, 204), (51, 102, 204), (51, 51, 204), (51, 0, 204), + (51, 255, 153), (51, 204, 153), (51, 153, 153), (51, 102, 153), + (51, 51, 153), (51, 0, 153), (0, 255, 255), (0, 204, 255), + (0, 153, 255), (0, 102, 255), (0, 51, 255), (0, 0, 255), + (0, 255, 204), (0, 204, 204), (0, 153, 204), (0, 102, 204), + (0, 51, 204), (0, 0, 204), (0, 255, 153), (0, 204, 153), + (0, 153, 153), (0, 102, 153), (0, 51, 153), (0, 0, 153), + (255, 255, 102), (255, 204, 102), (255, 153, 102), (255, 102, 102), + (255, 51, 102), (255, 0, 102), (255, 255, 51), (255, 204, 51), + (255, 153, 51), (255, 102, 51), (255, 51, 51), (255, 0, 51), + (255, 255, 0), (255, 204, 0), (255, 153, 0), (255, 102, 0), + (255, 51, 0), (255, 0, 0), (204, 255, 102), (204, 204, 102), + (204, 153, 102), (204, 102, 102), (204, 51, 102), (204, 0, 102), + (204, 255, 51), (204, 204, 51), (204, 153, 51), (204, 102, 51), + (204, 51, 51), (204, 0, 51), (204, 255, 0), (204, 204, 0), + (204, 153, 0), (204, 102, 0), (204, 51, 0), (204, 0, 0), + (153, 255, 102), (153, 204, 102), (153, 153, 102), (153, 102, 102), + (153, 51, 102), (153, 0, 102), (153, 255, 51), (153, 204, 51), + (153, 153, 51), (153, 102, 51), (153, 51, 51), (153, 0, 51), + (153, 255, 0), (153, 204, 0), (153, 153, 0), (153, 102, 0), + (153, 51, 0), (153, 0, 0), (102, 255, 102), (102, 204, 102), + (102, 153, 102), (102, 102, 102), (102, 51, 102), (102, 0, 102), + (102, 255, 51), (102, 204, 51), (102, 153, 51), (102, 102, 51), + (102, 51, 51), (102, 0, 51), (102, 255, 0), (102, 204, 0), + (102, 153, 0), (102, 102, 0), (102, 51, 0), (102, 0, 0), + (51, 255, 102), (51, 204, 102), (51, 153, 102), (51, 102, 102), + (51, 51, 102), (51, 0, 102), (51, 255, 51), (51, 204, 51), + (51, 153, 51), (51, 102, 51), (51, 51, 51), (51, 0, 51), + (51, 255, 0), (51, 204, 0), (51, 153, 0), (51, 102, 0), + (51, 51, 0), (51, 0, 0), (0, 255, 102), (0, 204, 102), + (0, 153, 102), (0, 102, 102), (0, 51, 102), (0, 0, 102), + (0, 255, 51), (0, 204, 51), (0, 153, 51), (0, 102, 51), + (0, 51, 51), (0, 0, 51), (0, 255, 0), (0, 204, 0), + (0, 153, 0), (0, 102, 0), (0, 51, 0), (17, 17, 17), + (34, 34, 34), (68, 68, 68), (85, 85, 85), (119, 119, 119), + (136, 136, 136), (170, 170, 170), (187, 187, 187), (221, 221, 221), + (238, 238, 238), (192, 192, 192), (128, 0, 0), (128, 0, 128), + (0, 128, 0), (0, 128, 128), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0), + (0, 0, 0), (0, 0, 0), (0, 0, 0), (0, 0, 0)) +# fmt: on + + +# so build a prototype image to be used for palette resampling +def build_prototype_image(): + image = Image.new("L", (1, len(_Palm8BitColormapValues))) + image.putdata(list(range(len(_Palm8BitColormapValues)))) + palettedata = () + for colormapValue in _Palm8BitColormapValues: + palettedata += colormapValue + palettedata += (0, 0, 0) * (256 - len(_Palm8BitColormapValues)) + image.putpalette(palettedata) + return image + + +Palm8BitColormapImage = build_prototype_image() + +# OK, we now have in Palm8BitColormapImage, +# a "P"-mode image with the right palette +# +# -------------------------------------------------------------------- + +_FLAGS = {"custom-colormap": 0x4000, "is-compressed": 0x8000, "has-transparent": 0x2000} + +_COMPRESSION_TYPES = {"none": 0xFF, "rle": 0x01, "scanline": 0x00} + + +# +# -------------------------------------------------------------------- + +## +# (Internal) Image save plugin for the Palm format. + + +def _save(im, fp, filename): + if im.mode == "P": + # we assume this is a color Palm image with the standard colormap, + # unless the "info" dict has a "custom-colormap" field + + rawmode = "P" + bpp = 8 + version = 1 + + elif im.mode == "L": + if im.encoderinfo.get("bpp") in (1, 2, 4): + # this is 8-bit grayscale, so we shift it to get the high-order bits, + # and invert it because + # Palm does greyscale from white (0) to black (1) + bpp = im.encoderinfo["bpp"] + im = im.point( + lambda x, shift=8 - bpp, maxval=(1 << bpp) - 1: maxval - (x >> shift) + ) + elif im.info.get("bpp") in (1, 2, 4): + # here we assume that even though the inherent mode is 8-bit grayscale, + # only the lower bpp bits are significant. + # We invert them to match the Palm. + bpp = im.info["bpp"] + im = im.point(lambda x, maxval=(1 << bpp) - 1: maxval - (x & maxval)) + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # we ignore the palette here + im.mode = "P" + rawmode = "P;" + str(bpp) + version = 1 + + elif im.mode == "1": + # monochrome -- write it inverted, as is the Palm standard + rawmode = "1;I" + bpp = 1 + version = 0 + + else: + msg = f"cannot write mode {im.mode} as Palm" + raise OSError(msg) + + # + # make sure image data is available + im.load() + + # write header + + cols = im.size[0] + rows = im.size[1] + + rowbytes = int((cols + (16 // bpp - 1)) / (16 // bpp)) * 2 + transparent_index = 0 + compression_type = _COMPRESSION_TYPES["none"] + + flags = 0 + if im.mode == "P" and "custom-colormap" in im.info: + flags = flags & _FLAGS["custom-colormap"] + colormapsize = 4 * 256 + 2 + colormapmode = im.palette.mode + colormap = im.getdata().getpalette() + else: + colormapsize = 0 + + if "offset" in im.info: + offset = (rowbytes * rows + 16 + 3 + colormapsize) // 4 + else: + offset = 0 + + fp.write(o16b(cols) + o16b(rows) + o16b(rowbytes) + o16b(flags)) + fp.write(o8(bpp)) + fp.write(o8(version)) + fp.write(o16b(offset)) + fp.write(o8(transparent_index)) + fp.write(o8(compression_type)) + fp.write(o16b(0)) # reserved by Palm + + # now write colormap if necessary + + if colormapsize > 0: + fp.write(o16b(256)) + for i in range(256): + fp.write(o8(i)) + if colormapmode == "RGB": + fp.write( + o8(colormap[3 * i]) + + o8(colormap[3 * i + 1]) + + o8(colormap[3 * i + 2]) + ) + elif colormapmode == "RGBA": + fp.write( + o8(colormap[4 * i]) + + o8(colormap[4 * i + 1]) + + o8(colormap[4 * i + 2]) + ) + + # now convert data to raw form + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, rowbytes, 1))]) + + if hasattr(fp, "flush"): + fp.flush() + + +# +# -------------------------------------------------------------------- + +Image.register_save("Palm", _save) + +Image.register_extension("Palm", ".palm") + +Image.register_mime("Palm", "image/palm") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py new file mode 100644 index 0000000..e390f3f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcdImagePlugin.py @@ -0,0 +1,62 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCD file handling +# +# History: +# 96-05-10 fl Created +# 96-05-27 fl Added draft mode (128x192, 256x384) +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile + +## +# Image plugin for PhotoCD images. This plugin only reads the 768x512 +# image from the file; higher resolutions are encoded in a proprietary +# encoding. + + +class PcdImageFile(ImageFile.ImageFile): + format = "PCD" + format_description = "Kodak PhotoCD" + + def _open(self): + # rough + self.fp.seek(2048) + s = self.fp.read(2048) + + if s[:4] != b"PCD_": + msg = "not a PCD file" + raise SyntaxError(msg) + + orientation = s[1538] & 3 + self.tile_post_rotate = None + if orientation == 1: + self.tile_post_rotate = 90 + elif orientation == 3: + self.tile_post_rotate = -90 + + self.mode = "RGB" + self._size = 768, 512 # FIXME: not correct for rotated images! + self.tile = [("pcd", (0, 0) + self.size, 96 * 2048, None)] + + def load_end(self): + if self.tile_post_rotate: + # Handle rotated PCDs + self.im = self.im.rotate(self.tile_post_rotate) + self._size = self.im.size + + +# +# registry + +Image.register_open(PcdImageFile.format, PcdImageFile) + +Image.register_extension(PcdImageFile.format, ".pcd") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcfFontFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcfFontFile.py new file mode 100644 index 0000000..8db5822 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcfFontFile.py @@ -0,0 +1,256 @@ +# +# THIS IS WORK IN PROGRESS +# +# The Python Imaging Library +# $Id$ +# +# portable compiled font file parser +# +# history: +# 1997-08-19 fl created +# 2003-09-13 fl fixed loading of unicode fonts +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1997-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import FontFile, Image +from ._binary import i8 +from ._binary import i16be as b16 +from ._binary import i16le as l16 +from ._binary import i32be as b32 +from ._binary import i32le as l32 + +# -------------------------------------------------------------------- +# declarations + +PCF_MAGIC = 0x70636601 # "\x01fcp" + +PCF_PROPERTIES = 1 << 0 +PCF_ACCELERATORS = 1 << 1 +PCF_METRICS = 1 << 2 +PCF_BITMAPS = 1 << 3 +PCF_INK_METRICS = 1 << 4 +PCF_BDF_ENCODINGS = 1 << 5 +PCF_SWIDTHS = 1 << 6 +PCF_GLYPH_NAMES = 1 << 7 +PCF_BDF_ACCELERATORS = 1 << 8 + +BYTES_PER_ROW = [ + lambda bits: ((bits + 7) >> 3), + lambda bits: ((bits + 15) >> 3) & ~1, + lambda bits: ((bits + 31) >> 3) & ~3, + lambda bits: ((bits + 63) >> 3) & ~7, +] + + +def sz(s, o): + return s[o : s.index(b"\0", o)] + + +class PcfFontFile(FontFile.FontFile): + """Font file plugin for the X11 PCF format.""" + + name = "name" + + def __init__(self, fp, charset_encoding="iso8859-1"): + self.charset_encoding = charset_encoding + + magic = l32(fp.read(4)) + if magic != PCF_MAGIC: + msg = "not a PCF file" + raise SyntaxError(msg) + + super().__init__() + + count = l32(fp.read(4)) + self.toc = {} + for i in range(count): + type = l32(fp.read(4)) + self.toc[type] = l32(fp.read(4)), l32(fp.read(4)), l32(fp.read(4)) + + self.fp = fp + + self.info = self._load_properties() + + metrics = self._load_metrics() + bitmaps = self._load_bitmaps(metrics) + encoding = self._load_encoding() + + # + # create glyph structure + + for ch, ix in enumerate(encoding): + if ix is not None: + ( + xsize, + ysize, + left, + right, + width, + ascent, + descent, + attributes, + ) = metrics[ix] + self.glyph[ch] = ( + (width, 0), + (left, descent - ysize, xsize + left, descent), + (0, 0, xsize, ysize), + bitmaps[ix], + ) + + def _getformat(self, tag): + format, size, offset = self.toc[tag] + + fp = self.fp + fp.seek(offset) + + format = l32(fp.read(4)) + + if format & 4: + i16, i32 = b16, b32 + else: + i16, i32 = l16, l32 + + return fp, format, i16, i32 + + def _load_properties(self): + # + # font properties + + properties = {} + + fp, format, i16, i32 = self._getformat(PCF_PROPERTIES) + + nprops = i32(fp.read(4)) + + # read property description + p = [] + for i in range(nprops): + p.append((i32(fp.read(4)), i8(fp.read(1)), i32(fp.read(4)))) + if nprops & 3: + fp.seek(4 - (nprops & 3), io.SEEK_CUR) # pad + + data = fp.read(i32(fp.read(4))) + + for k, s, v in p: + k = sz(data, k) + if s: + v = sz(data, v) + properties[k] = v + + return properties + + def _load_metrics(self): + # + # font metrics + + metrics = [] + + fp, format, i16, i32 = self._getformat(PCF_METRICS) + + append = metrics.append + + if (format & 0xFF00) == 0x100: + # "compressed" metrics + for i in range(i16(fp.read(2))): + left = i8(fp.read(1)) - 128 + right = i8(fp.read(1)) - 128 + width = i8(fp.read(1)) - 128 + ascent = i8(fp.read(1)) - 128 + descent = i8(fp.read(1)) - 128 + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, 0)) + + else: + # "jumbo" metrics + for i in range(i32(fp.read(4))): + left = i16(fp.read(2)) + right = i16(fp.read(2)) + width = i16(fp.read(2)) + ascent = i16(fp.read(2)) + descent = i16(fp.read(2)) + attributes = i16(fp.read(2)) + xsize = right - left + ysize = ascent + descent + append((xsize, ysize, left, right, width, ascent, descent, attributes)) + + return metrics + + def _load_bitmaps(self, metrics): + # + # bitmap data + + bitmaps = [] + + fp, format, i16, i32 = self._getformat(PCF_BITMAPS) + + nbitmaps = i32(fp.read(4)) + + if nbitmaps != len(metrics): + msg = "Wrong number of bitmaps" + raise OSError(msg) + + offsets = [] + for i in range(nbitmaps): + offsets.append(i32(fp.read(4))) + + bitmap_sizes = [] + for i in range(4): + bitmap_sizes.append(i32(fp.read(4))) + + # byteorder = format & 4 # non-zero => MSB + bitorder = format & 8 # non-zero => MSB + padindex = format & 3 + + bitmapsize = bitmap_sizes[padindex] + offsets.append(bitmapsize) + + data = fp.read(bitmapsize) + + pad = BYTES_PER_ROW[padindex] + mode = "1;R" + if bitorder: + mode = "1" + + for i in range(nbitmaps): + xsize, ysize = metrics[i][:2] + b, e = offsets[i : i + 2] + bitmaps.append( + Image.frombytes("1", (xsize, ysize), data[b:e], "raw", mode, pad(xsize)) + ) + + return bitmaps + + def _load_encoding(self): + fp, format, i16, i32 = self._getformat(PCF_BDF_ENCODINGS) + + first_col, last_col = i16(fp.read(2)), i16(fp.read(2)) + first_row, last_row = i16(fp.read(2)), i16(fp.read(2)) + + i16(fp.read(2)) # default + + nencoding = (last_col - first_col + 1) * (last_row - first_row + 1) + + # map character code to bitmap index + encoding = [None] * min(256, nencoding) + + encoding_offsets = [i16(fp.read(2)) for _ in range(nencoding)] + + for i in range(first_col, len(encoding)): + try: + encoding_offset = encoding_offsets[ + ord(bytearray([i]).decode(self.charset_encoding)) + ] + if encoding_offset != 0xFFFF: + encoding[i] = encoding_offset + except UnicodeDecodeError: + # character is not supported in selected encoding + pass + + return encoding diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py new file mode 100644 index 0000000..f42c245 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PcxImagePlugin.py @@ -0,0 +1,221 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PCX file handling +# +# This format was originally used by ZSoft's popular PaintBrush +# program for the IBM PC. It is also supported by many MS-DOS and +# Windows applications, including the Windows PaintBrush program in +# Windows 3. +# +# history: +# 1995-09-01 fl Created +# 1996-05-20 fl Fixed RGB support +# 1997-01-03 fl Fixed 2-bit and 4-bit support +# 1999-02-03 fl Fixed 8-bit support (broken in 1.0b1) +# 1999-02-07 fl Added write support +# 2002-06-09 fl Made 2-bit and 4-bit support a bit more robust +# 2002-07-30 fl Seek from to current position, not beginning of file +# 2003-06-03 fl Extract DPI settings (info["dpi"]) +# +# Copyright (c) 1997-2003 by Secret Labs AB. +# Copyright (c) 1995-2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +import io +import logging + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +logger = logging.getLogger(__name__) + + +def _accept(prefix): + return prefix[0] == 10 and prefix[1] in [0, 2, 3, 5] + + +## +# Image plugin for Paintbrush images. + + +class PcxImageFile(ImageFile.ImageFile): + format = "PCX" + format_description = "Paintbrush" + + def _open(self): + # header + s = self.fp.read(128) + if not _accept(s): + msg = "not a PCX file" + raise SyntaxError(msg) + + # image + bbox = i16(s, 4), i16(s, 6), i16(s, 8) + 1, i16(s, 10) + 1 + if bbox[2] <= bbox[0] or bbox[3] <= bbox[1]: + msg = "bad PCX image size" + raise SyntaxError(msg) + logger.debug("BBox: %s %s %s %s", *bbox) + + # format + version = s[1] + bits = s[3] + planes = s[65] + provided_stride = i16(s, 66) + logger.debug( + "PCX version %s, bits %s, planes %s, stride %s", + version, + bits, + planes, + provided_stride, + ) + + self.info["dpi"] = i16(s, 12), i16(s, 14) + + if bits == 1 and planes == 1: + mode = rawmode = "1" + + elif bits == 1 and planes in (2, 4): + mode = "P" + rawmode = "P;%dL" % planes + self.palette = ImagePalette.raw("RGB", s[16:64]) + + elif version == 5 and bits == 8 and planes == 1: + mode = rawmode = "L" + # FIXME: hey, this doesn't work with the incremental loader !!! + self.fp.seek(-769, io.SEEK_END) + s = self.fp.read(769) + if len(s) == 769 and s[0] == 12: + # check if the palette is linear greyscale + for i in range(256): + if s[i * 3 + 1 : i * 3 + 4] != o8(i) * 3: + mode = rawmode = "P" + break + if mode == "P": + self.palette = ImagePalette.raw("RGB", s[1:]) + self.fp.seek(128) + + elif version == 5 and bits == 8 and planes == 3: + mode = "RGB" + rawmode = "RGB;L" + + else: + msg = "unknown PCX mode" + raise OSError(msg) + + self.mode = mode + self._size = bbox[2] - bbox[0], bbox[3] - bbox[1] + + # Don't trust the passed in stride. + # Calculate the approximate position for ourselves. + # CVE-2020-35653 + stride = (self._size[0] * bits + 7) // 8 + + # While the specification states that this must be even, + # not all images follow this + if provided_stride != stride: + stride += stride % 2 + + bbox = (0, 0) + self.size + logger.debug("size: %sx%s", *self.size) + + self.tile = [("pcx", bbox, self.fp.tell(), (rawmode, planes * stride))] + + +# -------------------------------------------------------------------- +# save PCX files + + +SAVE = { + # mode: (version, bits, planes, raw mode) + "1": (2, 1, 1, "1"), + "L": (5, 8, 1, "L"), + "P": (5, 8, 1, "P"), + "RGB": (5, 8, 3, "RGB;L"), +} + + +def _save(im, fp, filename): + try: + version, bits, planes, rawmode = SAVE[im.mode] + except KeyError as e: + msg = f"Cannot save {im.mode} images as PCX" + raise ValueError(msg) from e + + # bytes per plane + stride = (im.size[0] * bits + 7) // 8 + # stride should be even + stride += stride % 2 + # Stride needs to be kept in sync with the PcxEncode.c version. + # Ideally it should be passed in in the state, but the bytes value + # gets overwritten. + + logger.debug( + "PcxImagePlugin._save: xwidth: %d, bits: %d, stride: %d", + im.size[0], + bits, + stride, + ) + + # under windows, we could determine the current screen size with + # "Image.core.display_mode()[1]", but I think that's overkill... + + screen = im.size + + dpi = 100, 100 + + # PCX header + fp.write( + o8(10) + + o8(version) + + o8(1) + + o8(bits) + + o16(0) + + o16(0) + + o16(im.size[0] - 1) + + o16(im.size[1] - 1) + + o16(dpi[0]) + + o16(dpi[1]) + + b"\0" * 24 + + b"\xFF" * 24 + + b"\0" + + o8(planes) + + o16(stride) + + o16(1) + + o16(screen[0]) + + o16(screen[1]) + + b"\0" * 54 + ) + + assert fp.tell() == 128 + + ImageFile._save(im, fp, [("pcx", (0, 0) + im.size, 0, (rawmode, bits * planes))]) + + if im.mode == "P": + # colour palette + fp.write(o8(12)) + palette = im.im.getpalette("RGB", "RGB") + palette += b"\x00" * (768 - len(palette)) + fp.write(palette) # 768 bytes + elif im.mode == "L": + # greyscale palette + fp.write(o8(12)) + for i in range(256): + fp.write(o8(i) * 3) + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PcxImageFile.format, PcxImageFile, _accept) +Image.register_save(PcxImageFile.format, _save) + +Image.register_extension(PcxImageFile.format, ".pcx") + +Image.register_mime(PcxImageFile.format, "image/x-pcx") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py new file mode 100644 index 0000000..c41f8ae --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfImagePlugin.py @@ -0,0 +1,284 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PDF (Acrobat) file handling +# +# History: +# 1996-07-16 fl Created +# 1997-01-18 fl Fixed header +# 2004-02-21 fl Fixes for 1/L/CMYK images, etc. +# 2004-02-24 fl Fixes for 1 and P images. +# +# Copyright (c) 1997-2004 by Secret Labs AB. All rights reserved. +# Copyright (c) 1996-1997 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +## +# Image plugin for PDF images (output only). +## + +import io +import math +import os +import time + +from . import Image, ImageFile, ImageSequence, PdfParser, __version__, features + +# +# -------------------------------------------------------------------- + +# object ids: +# 1. catalogue +# 2. pages +# 3. image +# 4. page +# 5. page contents + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +## +# (Internal) Image save plugin for the PDF format. + + +def _save(im, fp, filename, save_all=False): + is_appending = im.encoderinfo.get("append", False) + if is_appending: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="r+b") + else: + existing_pdf = PdfParser.PdfParser(f=fp, filename=filename, mode="w+b") + + dpi = im.encoderinfo.get("dpi") + if dpi: + x_resolution = dpi[0] + y_resolution = dpi[1] + else: + x_resolution = y_resolution = im.encoderinfo.get("resolution", 72.0) + + info = { + "title": None + if is_appending + else os.path.splitext(os.path.basename(filename))[0], + "author": None, + "subject": None, + "keywords": None, + "creator": None, + "producer": None, + "creationDate": None if is_appending else time.gmtime(), + "modDate": None if is_appending else time.gmtime(), + } + for k, default in info.items(): + v = im.encoderinfo.get(k) if k in im.encoderinfo else default + if v: + existing_pdf.info[k[0].upper() + k[1:]] = v + + # + # make sure image data is available + im.load() + + existing_pdf.start_writing() + existing_pdf.write_header() + existing_pdf.write_comment(f"created by Pillow {__version__} PDF driver") + + # + # pages + ims = [im] + if save_all: + append_images = im.encoderinfo.get("append_images", []) + for append_im in append_images: + append_im.encoderinfo = im.encoderinfo.copy() + ims.append(append_im) + number_of_pages = 0 + image_refs = [] + page_refs = [] + contents_refs = [] + for im in ims: + im_number_of_pages = 1 + if save_all: + try: + im_number_of_pages = im.n_frames + except AttributeError: + # Image format does not have n_frames. + # It is a single frame image + pass + number_of_pages += im_number_of_pages + for i in range(im_number_of_pages): + image_refs.append(existing_pdf.next_object_id(0)) + page_refs.append(existing_pdf.next_object_id(0)) + contents_refs.append(existing_pdf.next_object_id(0)) + existing_pdf.pages.append(page_refs[-1]) + + # + # catalog and list of pages + existing_pdf.write_catalog() + + page_number = 0 + for im_sequence in ims: + im_pages = ImageSequence.Iterator(im_sequence) if save_all else [im_sequence] + for im in im_pages: + # FIXME: Should replace ASCIIHexDecode with RunLengthDecode + # (packbits) or LZWDecode (tiff/lzw compression). Note that + # PDF 1.2 also supports Flatedecode (zip compression). + + bits = 8 + params = None + decode = None + + # + # Get image characteristics + + width, height = im.size + + if im.mode == "1": + if features.check("libtiff"): + filter = "CCITTFaxDecode" + bits = 1 + params = PdfParser.PdfArray( + [ + PdfParser.PdfDict( + { + "K": -1, + "BlackIs1": True, + "Columns": width, + "Rows": height, + } + ) + ] + ) + else: + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "L": + filter = "DCTDecode" + # params = f"<< /Predictor 15 /Columns {width-2} >>" + colorspace = PdfParser.PdfName("DeviceGray") + procset = "ImageB" # grayscale + elif im.mode == "P": + filter = "ASCIIHexDecode" + palette = im.getpalette() + colorspace = [ + PdfParser.PdfName("Indexed"), + PdfParser.PdfName("DeviceRGB"), + 255, + PdfParser.PdfBinary(palette), + ] + procset = "ImageI" # indexed color + elif im.mode == "RGB": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "RGBA": + filter = "JPXDecode" + colorspace = PdfParser.PdfName("DeviceRGB") + procset = "ImageC" # color images + elif im.mode == "CMYK": + filter = "DCTDecode" + colorspace = PdfParser.PdfName("DeviceCMYK") + procset = "ImageC" # color images + decode = [1, 0, 1, 0, 1, 0, 1, 0] + else: + msg = f"cannot save mode {im.mode}" + raise ValueError(msg) + + # + # image + + op = io.BytesIO() + + if filter == "ASCIIHexDecode": + ImageFile._save(im, op, [("hex", (0, 0) + im.size, 0, im.mode)]) + elif filter == "CCITTFaxDecode": + im.save( + op, + "TIFF", + compression="group4", + # use a single strip + strip_size=math.ceil(im.width / 8) * im.height, + ) + elif filter == "DCTDecode": + Image.SAVE["JPEG"](im, op, filename) + elif filter == "JPXDecode": + Image.SAVE["JPEG2000"](im, op, filename) + elif filter == "FlateDecode": + ImageFile._save(im, op, [("zip", (0, 0) + im.size, 0, im.mode)]) + elif filter == "RunLengthDecode": + ImageFile._save(im, op, [("packbits", (0, 0) + im.size, 0, im.mode)]) + else: + msg = f"unsupported PDF filter ({filter})" + raise ValueError(msg) + + stream = op.getvalue() + if filter == "CCITTFaxDecode": + stream = stream[8:] + filter = PdfParser.PdfArray([PdfParser.PdfName(filter)]) + else: + filter = PdfParser.PdfName(filter) + + existing_pdf.write_obj( + image_refs[page_number], + stream=stream, + Type=PdfParser.PdfName("XObject"), + Subtype=PdfParser.PdfName("Image"), + Width=width, # * 72.0 / x_resolution, + Height=height, # * 72.0 / y_resolution, + Filter=filter, + BitsPerComponent=bits, + Decode=decode, + DecodeParms=params, + ColorSpace=colorspace, + ) + + # + # page + + existing_pdf.write_page( + page_refs[page_number], + Resources=PdfParser.PdfDict( + ProcSet=[PdfParser.PdfName("PDF"), PdfParser.PdfName(procset)], + XObject=PdfParser.PdfDict(image=image_refs[page_number]), + ), + MediaBox=[ + 0, + 0, + width * 72.0 / x_resolution, + height * 72.0 / y_resolution, + ], + Contents=contents_refs[page_number], + ) + + # + # page contents + + page_contents = b"q %f 0 0 %f 0 0 cm /image Do Q\n" % ( + width * 72.0 / x_resolution, + height * 72.0 / y_resolution, + ) + + existing_pdf.write_obj(contents_refs[page_number], stream=page_contents) + + page_number += 1 + + # + # trailer + existing_pdf.write_xref_and_trailer() + if hasattr(fp, "flush"): + fp.flush() + existing_pdf.close() + + +# +# -------------------------------------------------------------------- + + +Image.register_save("PDF", _save) +Image.register_save_all("PDF", _save_all) + +Image.register_extension("PDF", ".pdf") + +Image.register_mime("PDF", "application/pdf") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfParser.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfParser.py new file mode 100644 index 0000000..dc1012f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PdfParser.py @@ -0,0 +1,996 @@ +import calendar +import codecs +import collections +import mmap +import os +import re +import time +import zlib + + +# see 7.9.2.2 Text String Type on page 86 and D.3 PDFDocEncoding Character Set +# on page 656 +def encode_text(s): + return codecs.BOM_UTF16_BE + s.encode("utf_16_be") + + +PDFDocEncoding = { + 0x16: "\u0017", + 0x18: "\u02D8", + 0x19: "\u02C7", + 0x1A: "\u02C6", + 0x1B: "\u02D9", + 0x1C: "\u02DD", + 0x1D: "\u02DB", + 0x1E: "\u02DA", + 0x1F: "\u02DC", + 0x80: "\u2022", + 0x81: "\u2020", + 0x82: "\u2021", + 0x83: "\u2026", + 0x84: "\u2014", + 0x85: "\u2013", + 0x86: "\u0192", + 0x87: "\u2044", + 0x88: "\u2039", + 0x89: "\u203A", + 0x8A: "\u2212", + 0x8B: "\u2030", + 0x8C: "\u201E", + 0x8D: "\u201C", + 0x8E: "\u201D", + 0x8F: "\u2018", + 0x90: "\u2019", + 0x91: "\u201A", + 0x92: "\u2122", + 0x93: "\uFB01", + 0x94: "\uFB02", + 0x95: "\u0141", + 0x96: "\u0152", + 0x97: "\u0160", + 0x98: "\u0178", + 0x99: "\u017D", + 0x9A: "\u0131", + 0x9B: "\u0142", + 0x9C: "\u0153", + 0x9D: "\u0161", + 0x9E: "\u017E", + 0xA0: "\u20AC", +} + + +def decode_text(b): + if b[: len(codecs.BOM_UTF16_BE)] == codecs.BOM_UTF16_BE: + return b[len(codecs.BOM_UTF16_BE) :].decode("utf_16_be") + else: + return "".join(PDFDocEncoding.get(byte, chr(byte)) for byte in b) + + +class PdfFormatError(RuntimeError): + """An error that probably indicates a syntactic or semantic error in the + PDF file structure""" + + pass + + +def check_format_condition(condition, error_message): + if not condition: + raise PdfFormatError(error_message) + + +class IndirectReference( + collections.namedtuple("IndirectReferenceTuple", ["object_id", "generation"]) +): + def __str__(self): + return "%s %s R" % self + + def __bytes__(self): + return self.__str__().encode("us-ascii") + + def __eq__(self, other): + return ( + other.__class__ is self.__class__ + and other.object_id == self.object_id + and other.generation == self.generation + ) + + def __ne__(self, other): + return not (self == other) + + def __hash__(self): + return hash((self.object_id, self.generation)) + + +class IndirectObjectDef(IndirectReference): + def __str__(self): + return "%s %s obj" % self + + +class XrefTable: + def __init__(self): + self.existing_entries = {} # object ID => (offset, generation) + self.new_entries = {} # object ID => (offset, generation) + self.deleted_entries = {0: 65536} # object ID => generation + self.reading_finished = False + + def __setitem__(self, key, value): + if self.reading_finished: + self.new_entries[key] = value + else: + self.existing_entries[key] = value + if key in self.deleted_entries: + del self.deleted_entries[key] + + def __getitem__(self, key): + try: + return self.new_entries[key] + except KeyError: + return self.existing_entries[key] + + def __delitem__(self, key): + if key in self.new_entries: + generation = self.new_entries[key][1] + 1 + del self.new_entries[key] + self.deleted_entries[key] = generation + elif key in self.existing_entries: + generation = self.existing_entries[key][1] + 1 + self.deleted_entries[key] = generation + elif key in self.deleted_entries: + generation = self.deleted_entries[key] + else: + msg = ( + "object ID " + str(key) + " cannot be deleted because it doesn't exist" + ) + raise IndexError(msg) + + def __contains__(self, key): + return key in self.existing_entries or key in self.new_entries + + def __len__(self): + return len( + set(self.existing_entries.keys()) + | set(self.new_entries.keys()) + | set(self.deleted_entries.keys()) + ) + + def keys(self): + return ( + set(self.existing_entries.keys()) - set(self.deleted_entries.keys()) + ) | set(self.new_entries.keys()) + + def write(self, f): + keys = sorted(set(self.new_entries.keys()) | set(self.deleted_entries.keys())) + deleted_keys = sorted(set(self.deleted_entries.keys())) + startxref = f.tell() + f.write(b"xref\n") + while keys: + # find a contiguous sequence of object IDs + prev = None + for index, key in enumerate(keys): + if prev is None or prev + 1 == key: + prev = key + else: + contiguous_keys = keys[:index] + keys = keys[index:] + break + else: + contiguous_keys = keys + keys = None + f.write(b"%d %d\n" % (contiguous_keys[0], len(contiguous_keys))) + for object_id in contiguous_keys: + if object_id in self.new_entries: + f.write(b"%010d %05d n \n" % self.new_entries[object_id]) + else: + this_deleted_object_id = deleted_keys.pop(0) + check_format_condition( + object_id == this_deleted_object_id, + f"expected the next deleted object ID to be {object_id}, " + f"instead found {this_deleted_object_id}", + ) + try: + next_in_linked_list = deleted_keys[0] + except IndexError: + next_in_linked_list = 0 + f.write( + b"%010d %05d f \n" + % (next_in_linked_list, self.deleted_entries[object_id]) + ) + return startxref + + +class PdfName: + def __init__(self, name): + if isinstance(name, PdfName): + self.name = name.name + elif isinstance(name, bytes): + self.name = name + else: + self.name = name.encode("us-ascii") + + def name_as_str(self): + return self.name.decode("us-ascii") + + def __eq__(self, other): + return ( + isinstance(other, PdfName) and other.name == self.name + ) or other == self.name + + def __hash__(self): + return hash(self.name) + + def __repr__(self): + return f"PdfName({repr(self.name)})" + + @classmethod + def from_pdf_stream(cls, data): + return cls(PdfParser.interpret_name(data)) + + allowed_chars = set(range(33, 127)) - {ord(c) for c in "#%/()<>[]{}"} + + def __bytes__(self): + result = bytearray(b"/") + for b in self.name: + if b in self.allowed_chars: + result.append(b) + else: + result.extend(b"#%02X" % b) + return bytes(result) + + +class PdfArray(list): + def __bytes__(self): + return b"[ " + b" ".join(pdf_repr(x) for x in self) + b" ]" + + +class PdfDict(collections.UserDict): + def __setattr__(self, key, value): + if key == "data": + collections.UserDict.__setattr__(self, key, value) + else: + self[key.encode("us-ascii")] = value + + def __getattr__(self, key): + try: + value = self[key.encode("us-ascii")] + except KeyError as e: + raise AttributeError(key) from e + if isinstance(value, bytes): + value = decode_text(value) + if key.endswith("Date"): + if value.startswith("D:"): + value = value[2:] + + relationship = "Z" + if len(value) > 17: + relationship = value[14] + offset = int(value[15:17]) * 60 + if len(value) > 20: + offset += int(value[18:20]) + + format = "%Y%m%d%H%M%S"[: len(value) - 2] + value = time.strptime(value[: len(format) + 2], format) + if relationship in ["+", "-"]: + offset *= 60 + if relationship == "+": + offset *= -1 + value = time.gmtime(calendar.timegm(value) + offset) + return value + + def __bytes__(self): + out = bytearray(b"<<") + for key, value in self.items(): + if value is None: + continue + value = pdf_repr(value) + out.extend(b"\n") + out.extend(bytes(PdfName(key))) + out.extend(b" ") + out.extend(value) + out.extend(b"\n>>") + return bytes(out) + + +class PdfBinary: + def __init__(self, data): + self.data = data + + def __bytes__(self): + return b"<%s>" % b"".join(b"%02X" % b for b in self.data) + + +class PdfStream: + def __init__(self, dictionary, buf): + self.dictionary = dictionary + self.buf = buf + + def decode(self): + try: + filter = self.dictionary.Filter + except AttributeError: + return self.buf + if filter == b"FlateDecode": + try: + expected_length = self.dictionary.DL + except AttributeError: + expected_length = self.dictionary.Length + return zlib.decompress(self.buf, bufsize=int(expected_length)) + else: + msg = f"stream filter {repr(self.dictionary.Filter)} unknown/unsupported" + raise NotImplementedError(msg) + + +def pdf_repr(x): + if x is True: + return b"true" + elif x is False: + return b"false" + elif x is None: + return b"null" + elif isinstance(x, (PdfName, PdfDict, PdfArray, PdfBinary)): + return bytes(x) + elif isinstance(x, (int, float)): + return str(x).encode("us-ascii") + elif isinstance(x, time.struct_time): + return b"(D:" + time.strftime("%Y%m%d%H%M%SZ", x).encode("us-ascii") + b")" + elif isinstance(x, dict): + return bytes(PdfDict(x)) + elif isinstance(x, list): + return bytes(PdfArray(x)) + elif isinstance(x, str): + return pdf_repr(encode_text(x)) + elif isinstance(x, bytes): + # XXX escape more chars? handle binary garbage + x = x.replace(b"\\", b"\\\\") + x = x.replace(b"(", b"\\(") + x = x.replace(b")", b"\\)") + return b"(" + x + b")" + else: + return bytes(x) + + +class PdfParser: + """Based on + https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/PDF32000_2008.pdf + Supports PDF up to 1.4 + """ + + def __init__(self, filename=None, f=None, buf=None, start_offset=0, mode="rb"): + if buf and f: + msg = "specify buf or f or filename, but not both buf and f" + raise RuntimeError(msg) + self.filename = filename + self.buf = buf + self.f = f + self.start_offset = start_offset + self.should_close_buf = False + self.should_close_file = False + if filename is not None and f is None: + self.f = f = open(filename, mode) + self.should_close_file = True + if f is not None: + self.buf = buf = self.get_buf_from_file(f) + self.should_close_buf = True + if not filename and hasattr(f, "name"): + self.filename = f.name + self.cached_objects = {} + if buf: + self.read_pdf_info() + else: + self.file_size_total = self.file_size_this = 0 + self.root = PdfDict() + self.root_ref = None + self.info = PdfDict() + self.info_ref = None + self.page_tree_root = {} + self.pages = [] + self.orig_pages = [] + self.pages_ref = None + self.last_xref_section_offset = None + self.trailer_dict = {} + self.xref_table = XrefTable() + self.xref_table.reading_finished = True + if f: + self.seek_end() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + return False # do not suppress exceptions + + def start_writing(self): + self.close_buf() + self.seek_end() + + def close_buf(self): + try: + self.buf.close() + except AttributeError: + pass + self.buf = None + + def close(self): + if self.should_close_buf: + self.close_buf() + if self.f is not None and self.should_close_file: + self.f.close() + self.f = None + + def seek_end(self): + self.f.seek(0, os.SEEK_END) + + def write_header(self): + self.f.write(b"%PDF-1.4\n") + + def write_comment(self, s): + self.f.write(f"% {s}\n".encode()) + + def write_catalog(self): + self.del_root() + self.root_ref = self.next_object_id(self.f.tell()) + self.pages_ref = self.next_object_id(0) + self.rewrite_pages() + self.write_obj(self.root_ref, Type=PdfName(b"Catalog"), Pages=self.pages_ref) + self.write_obj( + self.pages_ref, + Type=PdfName(b"Pages"), + Count=len(self.pages), + Kids=self.pages, + ) + return self.root_ref + + def rewrite_pages(self): + pages_tree_nodes_to_delete = [] + for i, page_ref in enumerate(self.orig_pages): + page_info = self.cached_objects[page_ref] + del self.xref_table[page_ref.object_id] + pages_tree_nodes_to_delete.append(page_info[PdfName(b"Parent")]) + if page_ref not in self.pages: + # the page has been deleted + continue + # make dict keys into strings for passing to write_page + stringified_page_info = {} + for key, value in page_info.items(): + # key should be a PdfName + stringified_page_info[key.name_as_str()] = value + stringified_page_info["Parent"] = self.pages_ref + new_page_ref = self.write_page(None, **stringified_page_info) + for j, cur_page_ref in enumerate(self.pages): + if cur_page_ref == page_ref: + # replace the page reference with the new one + self.pages[j] = new_page_ref + # delete redundant Pages tree nodes from xref table + for pages_tree_node_ref in pages_tree_nodes_to_delete: + while pages_tree_node_ref: + pages_tree_node = self.cached_objects[pages_tree_node_ref] + if pages_tree_node_ref.object_id in self.xref_table: + del self.xref_table[pages_tree_node_ref.object_id] + pages_tree_node_ref = pages_tree_node.get(b"Parent", None) + self.orig_pages = [] + + def write_xref_and_trailer(self, new_root_ref=None): + if new_root_ref: + self.del_root() + self.root_ref = new_root_ref + if self.info: + self.info_ref = self.write_obj(None, self.info) + start_xref = self.xref_table.write(self.f) + num_entries = len(self.xref_table) + trailer_dict = {b"Root": self.root_ref, b"Size": num_entries} + if self.last_xref_section_offset is not None: + trailer_dict[b"Prev"] = self.last_xref_section_offset + if self.info: + trailer_dict[b"Info"] = self.info_ref + self.last_xref_section_offset = start_xref + self.f.write( + b"trailer\n" + + bytes(PdfDict(trailer_dict)) + + b"\nstartxref\n%d\n%%%%EOF" % start_xref + ) + + def write_page(self, ref, *objs, **dict_obj): + if isinstance(ref, int): + ref = self.pages[ref] + if "Type" not in dict_obj: + dict_obj["Type"] = PdfName(b"Page") + if "Parent" not in dict_obj: + dict_obj["Parent"] = self.pages_ref + return self.write_obj(ref, *objs, **dict_obj) + + def write_obj(self, ref, *objs, **dict_obj): + f = self.f + if ref is None: + ref = self.next_object_id(f.tell()) + else: + self.xref_table[ref.object_id] = (f.tell(), ref.generation) + f.write(bytes(IndirectObjectDef(*ref))) + stream = dict_obj.pop("stream", None) + if stream is not None: + dict_obj["Length"] = len(stream) + if dict_obj: + f.write(pdf_repr(dict_obj)) + for obj in objs: + f.write(pdf_repr(obj)) + if stream is not None: + f.write(b"stream\n") + f.write(stream) + f.write(b"\nendstream\n") + f.write(b"endobj\n") + return ref + + def del_root(self): + if self.root_ref is None: + return + del self.xref_table[self.root_ref.object_id] + del self.xref_table[self.root[b"Pages"].object_id] + + @staticmethod + def get_buf_from_file(f): + if hasattr(f, "getbuffer"): + return f.getbuffer() + elif hasattr(f, "getvalue"): + return f.getvalue() + else: + try: + return mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + except ValueError: # cannot mmap an empty file + return b"" + + def read_pdf_info(self): + self.file_size_total = len(self.buf) + self.file_size_this = self.file_size_total - self.start_offset + self.read_trailer() + self.root_ref = self.trailer_dict[b"Root"] + self.info_ref = self.trailer_dict.get(b"Info", None) + self.root = PdfDict(self.read_indirect(self.root_ref)) + if self.info_ref is None: + self.info = PdfDict() + else: + self.info = PdfDict(self.read_indirect(self.info_ref)) + check_format_condition(b"Type" in self.root, "/Type missing in Root") + check_format_condition( + self.root[b"Type"] == b"Catalog", "/Type in Root is not /Catalog" + ) + check_format_condition(b"Pages" in self.root, "/Pages missing in Root") + check_format_condition( + isinstance(self.root[b"Pages"], IndirectReference), + "/Pages in Root is not an indirect reference", + ) + self.pages_ref = self.root[b"Pages"] + self.page_tree_root = self.read_indirect(self.pages_ref) + self.pages = self.linearize_page_tree(self.page_tree_root) + # save the original list of page references + # in case the user modifies, adds or deletes some pages + # and we need to rewrite the pages and their list + self.orig_pages = self.pages[:] + + def next_object_id(self, offset=None): + try: + # TODO: support reuse of deleted objects + reference = IndirectReference(max(self.xref_table.keys()) + 1, 0) + except ValueError: + reference = IndirectReference(1, 0) + if offset is not None: + self.xref_table[reference.object_id] = (offset, 0) + return reference + + delimiter = rb"[][()<>{}/%]" + delimiter_or_ws = rb"[][()<>{}/%\000\011\012\014\015\040]" + whitespace = rb"[\000\011\012\014\015\040]" + whitespace_or_hex = rb"[\000\011\012\014\015\0400-9a-fA-F]" + whitespace_optional = whitespace + b"*" + whitespace_mandatory = whitespace + b"+" + # No "\012" aka "\n" or "\015" aka "\r": + whitespace_optional_no_nl = rb"[\000\011\014\040]*" + newline_only = rb"[\r\n]+" + newline = whitespace_optional_no_nl + newline_only + whitespace_optional_no_nl + re_trailer_end = re.compile( + whitespace_mandatory + + rb"trailer" + + whitespace_optional + + rb"<<(.*>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional + + rb"$", + re.DOTALL, + ) + re_trailer_prev = re.compile( + whitespace_optional + + rb"trailer" + + whitespace_optional + + rb"<<(.*?>>)" + + newline + + rb"startxref" + + newline + + rb"([0-9]+)" + + newline + + rb"%%EOF" + + whitespace_optional, + re.DOTALL, + ) + + def read_trailer(self): + search_start_offset = len(self.buf) - 16384 + if search_start_offset < self.start_offset: + search_start_offset = self.start_offset + m = self.re_trailer_end.search(self.buf, search_start_offset) + check_format_condition(m, "trailer end not found") + # make sure we found the LAST trailer + last_match = m + while m: + last_match = m + m = self.re_trailer_end.search(self.buf, m.start() + 16) + if not m: + m = last_match + trailer_data = m.group(1) + self.last_xref_section_offset = int(m.group(2)) + self.trailer_dict = self.interpret_trailer(trailer_data) + self.xref_table = XrefTable() + self.read_xref_table(xref_section_offset=self.last_xref_section_offset) + if b"Prev" in self.trailer_dict: + self.read_prev_trailer(self.trailer_dict[b"Prev"]) + + def read_prev_trailer(self, xref_section_offset): + trailer_offset = self.read_xref_table(xref_section_offset=xref_section_offset) + m = self.re_trailer_prev.search( + self.buf[trailer_offset : trailer_offset + 16384] + ) + check_format_condition(m, "previous trailer not found") + trailer_data = m.group(1) + check_format_condition( + int(m.group(2)) == xref_section_offset, + "xref section offset in previous trailer doesn't match what was expected", + ) + trailer_dict = self.interpret_trailer(trailer_data) + if b"Prev" in trailer_dict: + self.read_prev_trailer(trailer_dict[b"Prev"]) + + re_whitespace_optional = re.compile(whitespace_optional) + re_name = re.compile( + whitespace_optional + + rb"/([!-$&'*-.0-;=?-Z\\^-z|~]+)(?=" + + delimiter_or_ws + + rb")" + ) + re_dict_start = re.compile(whitespace_optional + rb"<<") + re_dict_end = re.compile(whitespace_optional + rb">>" + whitespace_optional) + + @classmethod + def interpret_trailer(cls, trailer_data): + trailer = {} + offset = 0 + while True: + m = cls.re_name.match(trailer_data, offset) + if not m: + m = cls.re_dict_end.match(trailer_data, offset) + check_format_condition( + m and m.end() == len(trailer_data), + "name not found in trailer, remaining data: " + + repr(trailer_data[offset:]), + ) + break + key = cls.interpret_name(m.group(1)) + value, offset = cls.get_value(trailer_data, m.end()) + trailer[key] = value + check_format_condition( + b"Size" in trailer and isinstance(trailer[b"Size"], int), + "/Size not in trailer or not an integer", + ) + check_format_condition( + b"Root" in trailer and isinstance(trailer[b"Root"], IndirectReference), + "/Root not in trailer or not an indirect reference", + ) + return trailer + + re_hashes_in_name = re.compile(rb"([^#]*)(#([0-9a-fA-F]{2}))?") + + @classmethod + def interpret_name(cls, raw, as_text=False): + name = b"" + for m in cls.re_hashes_in_name.finditer(raw): + if m.group(3): + name += m.group(1) + bytearray.fromhex(m.group(3).decode("us-ascii")) + else: + name += m.group(1) + if as_text: + return name.decode("utf-8") + else: + return bytes(name) + + re_null = re.compile(whitespace_optional + rb"null(?=" + delimiter_or_ws + rb")") + re_true = re.compile(whitespace_optional + rb"true(?=" + delimiter_or_ws + rb")") + re_false = re.compile(whitespace_optional + rb"false(?=" + delimiter_or_ws + rb")") + re_int = re.compile( + whitespace_optional + rb"([-+]?[0-9]+)(?=" + delimiter_or_ws + rb")" + ) + re_real = re.compile( + whitespace_optional + + rb"([-+]?([0-9]+\.[0-9]*|[0-9]*\.[0-9]+))(?=" + + delimiter_or_ws + + rb")" + ) + re_array_start = re.compile(whitespace_optional + rb"\[") + re_array_end = re.compile(whitespace_optional + rb"]") + re_string_hex = re.compile( + whitespace_optional + rb"<(" + whitespace_or_hex + rb"*)>" + ) + re_string_lit = re.compile(whitespace_optional + rb"\(") + re_indirect_reference = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"R(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_start = re.compile( + whitespace_optional + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"([-+]?[0-9]+)" + + whitespace_mandatory + + rb"obj(?=" + + delimiter_or_ws + + rb")" + ) + re_indirect_def_end = re.compile( + whitespace_optional + rb"endobj(?=" + delimiter_or_ws + rb")" + ) + re_comment = re.compile( + rb"(" + whitespace_optional + rb"%[^\r\n]*" + newline + rb")*" + ) + re_stream_start = re.compile(whitespace_optional + rb"stream\r?\n") + re_stream_end = re.compile( + whitespace_optional + rb"endstream(?=" + delimiter_or_ws + rb")" + ) + + @classmethod + def get_value(cls, data, offset, expect_indirect=None, max_nesting=-1): + if max_nesting == 0: + return None, None + m = cls.re_comment.match(data, offset) + if m: + offset = m.end() + m = cls.re_indirect_def_start.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object definition: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object definition: generation must be non-negative", + ) + check_format_condition( + expect_indirect is None + or expect_indirect + == IndirectReference(int(m.group(1)), int(m.group(2))), + "indirect object definition different than expected", + ) + object, offset = cls.get_value(data, m.end(), max_nesting=max_nesting - 1) + if offset is None: + return object, None + m = cls.re_indirect_def_end.match(data, offset) + check_format_condition(m, "indirect object definition end not found") + return object, m.end() + check_format_condition( + not expect_indirect, "indirect object definition not found" + ) + m = cls.re_indirect_reference.match(data, offset) + if m: + check_format_condition( + int(m.group(1)) > 0, + "indirect object reference: object ID must be greater than 0", + ) + check_format_condition( + int(m.group(2)) >= 0, + "indirect object reference: generation must be non-negative", + ) + return IndirectReference(int(m.group(1)), int(m.group(2))), m.end() + m = cls.re_dict_start.match(data, offset) + if m: + offset = m.end() + result = {} + m = cls.re_dict_end.match(data, offset) + while not m: + key, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + if offset is None: + return result, None + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result[key] = value + if offset is None: + return result, None + m = cls.re_dict_end.match(data, offset) + offset = m.end() + m = cls.re_stream_start.match(data, offset) + if m: + try: + stream_len = int(result[b"Length"]) + except (TypeError, KeyError, ValueError) as e: + msg = "bad or missing Length in stream dict (%r)" % result.get( + b"Length", None + ) + raise PdfFormatError(msg) from e + stream_data = data[m.end() : m.end() + stream_len] + m = cls.re_stream_end.match(data, m.end() + stream_len) + check_format_condition(m, "stream end not found") + offset = m.end() + result = PdfStream(PdfDict(result), stream_data) + else: + result = PdfDict(result) + return result, offset + m = cls.re_array_start.match(data, offset) + if m: + offset = m.end() + result = [] + m = cls.re_array_end.match(data, offset) + while not m: + value, offset = cls.get_value(data, offset, max_nesting=max_nesting - 1) + result.append(value) + if offset is None: + return result, None + m = cls.re_array_end.match(data, offset) + return result, m.end() + m = cls.re_null.match(data, offset) + if m: + return None, m.end() + m = cls.re_true.match(data, offset) + if m: + return True, m.end() + m = cls.re_false.match(data, offset) + if m: + return False, m.end() + m = cls.re_name.match(data, offset) + if m: + return PdfName(cls.interpret_name(m.group(1))), m.end() + m = cls.re_int.match(data, offset) + if m: + return int(m.group(1)), m.end() + m = cls.re_real.match(data, offset) + if m: + # XXX Decimal instead of float??? + return float(m.group(1)), m.end() + m = cls.re_string_hex.match(data, offset) + if m: + # filter out whitespace + hex_string = bytearray( + b for b in m.group(1) if b in b"0123456789abcdefABCDEF" + ) + if len(hex_string) % 2 == 1: + # append a 0 if the length is not even - yes, at the end + hex_string.append(ord(b"0")) + return bytearray.fromhex(hex_string.decode("us-ascii")), m.end() + m = cls.re_string_lit.match(data, offset) + if m: + return cls.get_literal_string(data, m.end()) + # return None, offset # fallback (only for debugging) + msg = "unrecognized object: " + repr(data[offset : offset + 32]) + raise PdfFormatError(msg) + + re_lit_str_token = re.compile( + rb"(\\[nrtbf()\\])|(\\[0-9]{1,3})|(\\(\r\n|\r|\n))|(\r\n|\r|\n)|(\()|(\))" + ) + escaped_chars = { + b"n": b"\n", + b"r": b"\r", + b"t": b"\t", + b"b": b"\b", + b"f": b"\f", + b"(": b"(", + b")": b")", + b"\\": b"\\", + ord(b"n"): b"\n", + ord(b"r"): b"\r", + ord(b"t"): b"\t", + ord(b"b"): b"\b", + ord(b"f"): b"\f", + ord(b"("): b"(", + ord(b")"): b")", + ord(b"\\"): b"\\", + } + + @classmethod + def get_literal_string(cls, data, offset): + nesting_depth = 0 + result = bytearray() + for m in cls.re_lit_str_token.finditer(data, offset): + result.extend(data[offset : m.start()]) + if m.group(1): + result.extend(cls.escaped_chars[m.group(1)[1]]) + elif m.group(2): + result.append(int(m.group(2)[1:], 8)) + elif m.group(3): + pass + elif m.group(5): + result.extend(b"\n") + elif m.group(6): + result.extend(b"(") + nesting_depth += 1 + elif m.group(7): + if nesting_depth == 0: + return bytes(result), m.end() + result.extend(b")") + nesting_depth -= 1 + offset = m.end() + msg = "unfinished literal string" + raise PdfFormatError(msg) + + re_xref_section_start = re.compile(whitespace_optional + rb"xref" + newline) + re_xref_subsection_start = re.compile( + whitespace_optional + + rb"([0-9]+)" + + whitespace_mandatory + + rb"([0-9]+)" + + whitespace_optional + + newline_only + ) + re_xref_entry = re.compile(rb"([0-9]{10}) ([0-9]{5}) ([fn])( \r| \n|\r\n)") + + def read_xref_table(self, xref_section_offset): + subsection_found = False + m = self.re_xref_section_start.match( + self.buf, xref_section_offset + self.start_offset + ) + check_format_condition(m, "xref section start not found") + offset = m.end() + while True: + m = self.re_xref_subsection_start.match(self.buf, offset) + if not m: + check_format_condition( + subsection_found, "xref subsection start not found" + ) + break + subsection_found = True + offset = m.end() + first_object = int(m.group(1)) + num_objects = int(m.group(2)) + for i in range(first_object, first_object + num_objects): + m = self.re_xref_entry.match(self.buf, offset) + check_format_condition(m, "xref entry not found") + offset = m.end() + is_free = m.group(3) == b"f" + if not is_free: + generation = int(m.group(2)) + new_entry = (int(m.group(1)), generation) + if i not in self.xref_table: + self.xref_table[i] = new_entry + return offset + + def read_indirect(self, ref, max_nesting=-1): + offset, generation = self.xref_table[ref[0]] + check_format_condition( + generation == ref[1], + f"expected to find generation {ref[1]} for object ID {ref[0]} in xref " + f"table, instead found generation {generation} at offset {offset}", + ) + value = self.get_value( + self.buf, + offset + self.start_offset, + expect_indirect=IndirectReference(*ref), + max_nesting=max_nesting, + )[0] + self.cached_objects[ref] = value + return value + + def linearize_page_tree(self, node=None): + if node is None: + node = self.page_tree_root + check_format_condition( + node[b"Type"] == b"Pages", "/Type of page tree node is not /Pages" + ) + pages = [] + for kid in node[b"Kids"]: + kid_object = self.read_indirect(kid) + if kid_object[b"Type"] == b"Page": + pages.append(kid) + else: + pages.extend(self.linearize_page_tree(node=kid_object)) + return pages diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py new file mode 100644 index 0000000..7eb8222 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PixarImagePlugin.py @@ -0,0 +1,69 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PIXAR raster support for PIL +# +# history: +# 97-01-29 fl Created +# +# notes: +# This is incomplete; it is based on a few samples created with +# Photoshop 2.5 and 3.0, and a summary description provided by +# Greg Coats . Hopefully, "L" and +# "RGBA" support will be added in future versions. +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1997. +# +# See the README file for information on usage and redistribution. +# + +from . import Image, ImageFile +from ._binary import i16le as i16 + +# +# helpers + + +def _accept(prefix): + return prefix[:4] == b"\200\350\000\000" + + +## +# Image plugin for PIXAR raster images. + + +class PixarImageFile(ImageFile.ImageFile): + format = "PIXAR" + format_description = "PIXAR raster image" + + def _open(self): + # assuming a 4-byte magic label + s = self.fp.read(4) + if not _accept(s): + msg = "not a PIXAR file" + raise SyntaxError(msg) + + # read rest of header + s = s + self.fp.read(508) + + self._size = i16(s, 418), i16(s, 416) + + # get channel/depth descriptions + mode = i16(s, 424), i16(s, 426) + + if mode == (14, 2): + self.mode = "RGB" + # FIXME: to be continued... + + # create tile descriptor (assuming "dumped") + self.tile = [("raw", (0, 0) + self.size, 1024, (self.mode, 0, 1))] + + +# +# -------------------------------------------------------------------- + +Image.register_open(PixarImageFile.format, PixarImageFile, _accept) + +Image.register_extension(PixarImageFile.format, ".pxr") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PngImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PngImagePlugin.py new file mode 100644 index 0000000..bfa8cb7 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PngImagePlugin.py @@ -0,0 +1,1456 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PNG support code +# +# See "PNG (Portable Network Graphics) Specification, version 1.0; +# W3C Recommendation", 1996-10-01, Thomas Boutell (ed.). +# +# history: +# 1996-05-06 fl Created (couldn't resist it) +# 1996-12-14 fl Upgraded, added read and verify support (0.2) +# 1996-12-15 fl Separate PNG stream parser +# 1996-12-29 fl Added write support, added getchunks +# 1996-12-30 fl Eliminated circular references in decoder (0.3) +# 1998-07-12 fl Read/write 16-bit images as mode I (0.4) +# 2001-02-08 fl Added transparency support (from Zircon) (0.5) +# 2001-04-16 fl Don't close data source in "open" method (0.6) +# 2004-02-24 fl Don't even pretend to support interlaced files (0.7) +# 2004-08-31 fl Do basic sanity check on chunk identifiers (0.8) +# 2004-09-20 fl Added PngInfo chunk container +# 2004-12-18 fl Added DPI read support (based on code by Niki Spahiev) +# 2008-08-13 fl Added tRNS support for RGB images +# 2009-03-06 fl Support for preserving ICC profiles (by Florian Hoech) +# 2009-03-08 fl Added zTXT support (from Lowell Alleman) +# 2009-03-29 fl Read interlaced PNG files (from Conrado Porto Lopes Gouvua) +# +# Copyright (c) 1997-2009 by Secret Labs AB +# Copyright (c) 1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import itertools +import logging +import re +import struct +import warnings +import zlib +from enum import IntEnum + +from . import Image, ImageChops, ImageFile, ImagePalette, ImageSequence +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from ._binary import o16be as o16 +from ._binary import o32be as o32 + +logger = logging.getLogger(__name__) + +is_cid = re.compile(rb"\w\w\w\w").match + + +_MAGIC = b"\211PNG\r\n\032\n" + + +_MODES = { + # supported bits/color combinations, and corresponding modes/rawmodes + # Greyscale + (1, 0): ("1", "1"), + (2, 0): ("L", "L;2"), + (4, 0): ("L", "L;4"), + (8, 0): ("L", "L"), + (16, 0): ("I", "I;16B"), + # Truecolour + (8, 2): ("RGB", "RGB"), + (16, 2): ("RGB", "RGB;16B"), + # Indexed-colour + (1, 3): ("P", "P;1"), + (2, 3): ("P", "P;2"), + (4, 3): ("P", "P;4"), + (8, 3): ("P", "P"), + # Greyscale with alpha + (8, 4): ("LA", "LA"), + (16, 4): ("RGBA", "LA;16B"), # LA;16B->LA not yet available + # Truecolour with alpha + (8, 6): ("RGBA", "RGBA"), + (16, 6): ("RGBA", "RGBA;16B"), +} + + +_simple_palette = re.compile(b"^\xff*\x00\xff*$") + +MAX_TEXT_CHUNK = ImageFile.SAFEBLOCK +""" +Maximum decompressed size for a iTXt or zTXt chunk. +Eliminates decompression bombs where compressed chunks can expand 1000x. +See :ref:`Text in PNG File Format`. +""" +MAX_TEXT_MEMORY = 64 * MAX_TEXT_CHUNK +""" +Set the maximum total text chunk size. +See :ref:`Text in PNG File Format`. +""" + + +# APNG frame disposal modes +class Disposal(IntEnum): + OP_NONE = 0 + """ + No disposal is done on this frame before rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_BACKGROUND = 1 + """ + This frame’s modified region is cleared to fully transparent black before rendering + the next frame. + See :ref:`Saving APNG sequences`. + """ + OP_PREVIOUS = 2 + """ + This frame’s modified region is reverted to the previous frame’s contents before + rendering the next frame. + See :ref:`Saving APNG sequences`. + """ + + +# APNG frame blend modes +class Blend(IntEnum): + OP_SOURCE = 0 + """ + All color components of this frame, including alpha, overwrite the previous output + image contents. + See :ref:`Saving APNG sequences`. + """ + OP_OVER = 1 + """ + This frame should be alpha composited with the previous output image contents. + See :ref:`Saving APNG sequences`. + """ + + +def _safe_zlib_decompress(s): + dobj = zlib.decompressobj() + plaintext = dobj.decompress(s, MAX_TEXT_CHUNK) + if dobj.unconsumed_tail: + msg = "Decompressed Data Too Large" + raise ValueError(msg) + return plaintext + + +def _crc32(data, seed=0): + return zlib.crc32(data, seed) & 0xFFFFFFFF + + +# -------------------------------------------------------------------- +# Support classes. Suitable for PNG and related formats like MNG etc. + + +class ChunkStream: + def __init__(self, fp): + self.fp = fp + self.queue = [] + + def read(self): + """Fetch a new chunk. Returns header information.""" + cid = None + + if self.queue: + cid, pos, length = self.queue.pop() + self.fp.seek(pos) + else: + s = self.fp.read(8) + cid = s[4:] + pos = self.fp.tell() + length = i32(s) + + if not is_cid(cid): + if not ImageFile.LOAD_TRUNCATED_IMAGES: + msg = f"broken PNG file (chunk {repr(cid)})" + raise SyntaxError(msg) + + return cid, pos, length + + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.queue = self.fp = None + + def push(self, cid, pos, length): + self.queue.append((cid, pos, length)) + + def call(self, cid, pos, length): + """Call the appropriate chunk handler""" + + logger.debug("STREAM %r %s %s", cid, pos, length) + return getattr(self, "chunk_" + cid.decode("ascii"))(pos, length) + + def crc(self, cid, data): + """Read and verify checksum""" + + # Skip CRC checks for ancillary chunks if allowed to load truncated + # images + # 5th byte of first char is 1 [specs, section 5.4] + if ImageFile.LOAD_TRUNCATED_IMAGES and (cid[0] >> 5 & 1): + self.crc_skip(cid, data) + return + + try: + crc1 = _crc32(data, _crc32(cid)) + crc2 = i32(self.fp.read(4)) + if crc1 != crc2: + msg = f"broken PNG file (bad header checksum in {repr(cid)})" + raise SyntaxError(msg) + except struct.error as e: + msg = f"broken PNG file (incomplete checksum in {repr(cid)})" + raise SyntaxError(msg) from e + + def crc_skip(self, cid, data): + """Read checksum""" + + self.fp.read(4) + + def verify(self, endchunk=b"IEND"): + # Simple approach; just calculate checksum for all remaining + # blocks. Must be called directly after open. + + cids = [] + + while True: + try: + cid, pos, length = self.read() + except struct.error as e: + msg = "truncated PNG file" + raise OSError(msg) from e + + if cid == endchunk: + break + self.crc(cid, ImageFile._safe_read(self.fp, length)) + cids.append(cid) + + return cids + + +class iTXt(str): + """ + Subclass of string to allow iTXt chunks to look like strings while + keeping their extra information + + """ + + @staticmethod + def __new__(cls, text, lang=None, tkey=None): + """ + :param cls: the class to use when creating the instance + :param text: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + """ + + self = str.__new__(cls, text) + self.lang = lang + self.tkey = tkey + return self + + +class PngInfo: + """ + PNG chunk container (for use with save(pnginfo=)) + + """ + + def __init__(self): + self.chunks = [] + + def add(self, cid, data, after_idat=False): + """Appends an arbitrary chunk. Use with caution. + + :param cid: a byte string, 4 bytes long. + :param data: a byte string of the encoded data + :param after_idat: for use with private chunks. Whether the chunk + should be written after IDAT + + """ + + chunk = [cid, data] + if after_idat: + chunk.append(True) + self.chunks.append(tuple(chunk)) + + def add_itxt(self, key, value, lang="", tkey="", zip=False): + """Appends an iTXt chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key + :param lang: language code + :param tkey: UTF-8 version of the key name + :param zip: compression flag + + """ + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + if not isinstance(value, bytes): + value = value.encode("utf-8", "strict") + if not isinstance(lang, bytes): + lang = lang.encode("utf-8", "strict") + if not isinstance(tkey, bytes): + tkey = tkey.encode("utf-8", "strict") + + if zip: + self.add( + b"iTXt", + key + b"\0\x01\0" + lang + b"\0" + tkey + b"\0" + zlib.compress(value), + ) + else: + self.add(b"iTXt", key + b"\0\0\0" + lang + b"\0" + tkey + b"\0" + value) + + def add_text(self, key, value, zip=False): + """Appends a text chunk. + + :param key: latin-1 encodable text key name + :param value: value for this key, text or an + :py:class:`PIL.PngImagePlugin.iTXt` instance + :param zip: compression flag + + """ + if isinstance(value, iTXt): + return self.add_itxt(key, value, value.lang, value.tkey, zip=zip) + + # The tEXt chunk stores latin-1 text + if not isinstance(value, bytes): + try: + value = value.encode("latin-1", "strict") + except UnicodeError: + return self.add_itxt(key, value, zip=zip) + + if not isinstance(key, bytes): + key = key.encode("latin-1", "strict") + + if zip: + self.add(b"zTXt", key + b"\0\0" + zlib.compress(value)) + else: + self.add(b"tEXt", key + b"\0" + value) + + +# -------------------------------------------------------------------- +# PNG image stream (IHDR/IEND) + + +class PngStream(ChunkStream): + def __init__(self, fp): + super().__init__(fp) + + # local copies of Image attributes + self.im_info = {} + self.im_text = {} + self.im_size = (0, 0) + self.im_mode = None + self.im_tile = None + self.im_palette = None + self.im_custom_mimetype = None + self.im_n_frames = None + self._seq_num = None + self.rewind_state = None + + self.text_memory = 0 + + def check_text_memory(self, chunklen): + self.text_memory += chunklen + if self.text_memory > MAX_TEXT_MEMORY: + msg = ( + "Too much memory used in text chunks: " + f"{self.text_memory}>MAX_TEXT_MEMORY" + ) + raise ValueError(msg) + + def save_rewind(self): + self.rewind_state = { + "info": self.im_info.copy(), + "tile": self.im_tile, + "seq_num": self._seq_num, + } + + def rewind(self): + self.im_info = self.rewind_state["info"] + self.im_tile = self.rewind_state["tile"] + self._seq_num = self.rewind_state["seq_num"] + + def chunk_iCCP(self, pos, length): + # ICC profile + s = ImageFile._safe_read(self.fp, length) + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + i = s.find(b"\0") + logger.debug("iCCP profile name %r", s[:i]) + logger.debug("Compression method %s", s[i]) + comp_method = s[i] + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in iCCP chunk" + raise SyntaxError(msg) + try: + icc_profile = _safe_zlib_decompress(s[i + 2 :]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + icc_profile = None + else: + raise + except zlib.error: + icc_profile = None # FIXME + self.im_info["icc_profile"] = icc_profile + return s + + def chunk_IHDR(self, pos, length): + # image header + s = ImageFile._safe_read(self.fp, length) + if length < 13: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated IHDR chunk" + raise ValueError(msg) + self.im_size = i32(s, 0), i32(s, 4) + try: + self.im_mode, self.im_rawmode = _MODES[(s[8], s[9])] + except Exception: + pass + if s[12]: + self.im_info["interlace"] = 1 + if s[11]: + msg = "unknown filter category" + raise SyntaxError(msg) + return s + + def chunk_IDAT(self, pos, length): + # image data + if "bbox" in self.im_info: + tile = [("zip", self.im_info["bbox"], pos, self.im_rawmode)] + else: + if self.im_n_frames is not None: + self.im_info["default_image"] = True + tile = [("zip", (0, 0) + self.im_size, pos, self.im_rawmode)] + self.im_tile = tile + self.im_idat = length + raise EOFError + + def chunk_IEND(self, pos, length): + # end of PNG image + raise EOFError + + def chunk_PLTE(self, pos, length): + # palette + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + self.im_palette = "RGB", s + return s + + def chunk_tRNS(self, pos, length): + # transparency + s = ImageFile._safe_read(self.fp, length) + if self.im_mode == "P": + if _simple_palette.match(s): + # tRNS contains only one full-transparent entry, + # other entries are full opaque + i = s.find(b"\0") + if i >= 0: + self.im_info["transparency"] = i + else: + # otherwise, we have a byte string with one alpha value + # for each palette entry + self.im_info["transparency"] = s + elif self.im_mode in ("1", "L", "I"): + self.im_info["transparency"] = i16(s) + elif self.im_mode == "RGB": + self.im_info["transparency"] = i16(s), i16(s, 2), i16(s, 4) + return s + + def chunk_gAMA(self, pos, length): + # gamma setting + s = ImageFile._safe_read(self.fp, length) + self.im_info["gamma"] = i32(s) / 100000.0 + return s + + def chunk_cHRM(self, pos, length): + # chromaticity, 8 unsigned ints, actual value is scaled by 100,000 + # WP x,y, Red x,y, Green x,y Blue x,y + + s = ImageFile._safe_read(self.fp, length) + raw_vals = struct.unpack(">%dI" % (len(s) // 4), s) + self.im_info["chromaticity"] = tuple(elt / 100000.0 for elt in raw_vals) + return s + + def chunk_sRGB(self, pos, length): + # srgb rendering intent, 1 byte + # 0 perceptual + # 1 relative colorimetric + # 2 saturation + # 3 absolute colorimetric + + s = ImageFile._safe_read(self.fp, length) + if length < 1: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated sRGB chunk" + raise ValueError(msg) + self.im_info["srgb"] = s[0] + return s + + def chunk_pHYs(self, pos, length): + # pixels per unit + s = ImageFile._safe_read(self.fp, length) + if length < 9: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "Truncated pHYs chunk" + raise ValueError(msg) + px, py = i32(s, 0), i32(s, 4) + unit = s[8] + if unit == 1: # meter + dpi = px * 0.0254, py * 0.0254 + self.im_info["dpi"] = dpi + elif unit == 0: + self.im_info["aspect"] = px, py + return s + + def chunk_tEXt(self, pos, length): + # text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + # fallback for broken tEXt tags + k = s + v = b"" + if k: + k = k.decode("latin-1", "strict") + v_str = v.decode("latin-1", "replace") + + self.im_info[k] = v if k == "exif" else v_str + self.im_text[k] = v_str + self.check_text_memory(len(v_str)) + + return s + + def chunk_zTXt(self, pos, length): + # compressed text + s = ImageFile._safe_read(self.fp, length) + try: + k, v = s.split(b"\0", 1) + except ValueError: + k = s + v = b"" + if v: + comp_method = v[0] + else: + comp_method = 0 + if comp_method != 0: + msg = f"Unknown compression method {comp_method} in zTXt chunk" + raise SyntaxError(msg) + try: + v = _safe_zlib_decompress(v[1:]) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + v = b"" + else: + raise + except zlib.error: + v = b"" + + if k: + k = k.decode("latin-1", "strict") + v = v.decode("latin-1", "replace") + + self.im_info[k] = self.im_text[k] = v + self.check_text_memory(len(v)) + + return s + + def chunk_iTXt(self, pos, length): + # international text + r = s = ImageFile._safe_read(self.fp, length) + try: + k, r = r.split(b"\0", 1) + except ValueError: + return s + if len(r) < 2: + return s + cf, cm, r = r[0], r[1], r[2:] + try: + lang, tk, v = r.split(b"\0", 2) + except ValueError: + return s + if cf != 0: + if cm == 0: + try: + v = _safe_zlib_decompress(v) + except ValueError: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + else: + raise + except zlib.error: + return s + else: + return s + try: + k = k.decode("latin-1", "strict") + lang = lang.decode("utf-8", "strict") + tk = tk.decode("utf-8", "strict") + v = v.decode("utf-8", "strict") + except UnicodeError: + return s + + self.im_info[k] = self.im_text[k] = iTXt(v, lang, tk) + self.check_text_memory(len(v)) + + return s + + def chunk_eXIf(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + self.im_info["exif"] = b"Exif\x00\x00" + s + return s + + # APNG chunks + def chunk_acTL(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + if length < 8: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated acTL chunk" + raise ValueError(msg) + if self.im_n_frames is not None: + self.im_n_frames = None + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + n_frames = i32(s) + if n_frames == 0 or n_frames > 0x80000000: + warnings.warn("Invalid APNG, will use default PNG image if possible") + return s + self.im_n_frames = n_frames + self.im_info["loop"] = i32(s, 4) + self.im_custom_mimetype = "image/apng" + return s + + def chunk_fcTL(self, pos, length): + s = ImageFile._safe_read(self.fp, length) + if length < 26: + if ImageFile.LOAD_TRUNCATED_IMAGES: + return s + msg = "APNG contains truncated fcTL chunk" + raise ValueError(msg) + seq = i32(s) + if (self._seq_num is None and seq != 0) or ( + self._seq_num is not None and self._seq_num != seq - 1 + ): + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + self._seq_num = seq + width, height = i32(s, 4), i32(s, 8) + px, py = i32(s, 12), i32(s, 16) + im_w, im_h = self.im_size + if px + width > im_w or py + height > im_h: + msg = "APNG contains invalid frames" + raise SyntaxError(msg) + self.im_info["bbox"] = (px, py, px + width, py + height) + delay_num, delay_den = i16(s, 20), i16(s, 22) + if delay_den == 0: + delay_den = 100 + self.im_info["duration"] = float(delay_num) / float(delay_den) * 1000 + self.im_info["disposal"] = s[24] + self.im_info["blend"] = s[25] + return s + + def chunk_fdAT(self, pos, length): + if length < 4: + if ImageFile.LOAD_TRUNCATED_IMAGES: + s = ImageFile._safe_read(self.fp, length) + return s + msg = "APNG contains truncated fDAT chunk" + raise ValueError(msg) + s = ImageFile._safe_read(self.fp, 4) + seq = i32(s) + if self._seq_num != seq - 1: + msg = "APNG contains frame sequence errors" + raise SyntaxError(msg) + self._seq_num = seq + return self.chunk_IDAT(pos + 4, length - 4) + + +# -------------------------------------------------------------------- +# PNG reader + + +def _accept(prefix): + return prefix[:8] == _MAGIC + + +## +# Image plugin for PNG images. + + +class PngImageFile(ImageFile.ImageFile): + format = "PNG" + format_description = "Portable network graphics" + + def _open(self): + if not _accept(self.fp.read(8)): + msg = "not a PNG file" + raise SyntaxError(msg) + self._fp = self.fp + self.__frame = 0 + + # + # Parse headers up to the first IDAT or fDAT chunk + + self.private_chunks = [] + self.png = PngStream(self.fp) + + while True: + # + # get next chunk + + cid, pos, length = self.png.read() + + try: + s = self.png.call(cid, pos, length) + except EOFError: + break + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + if cid[1:2].islower(): + self.private_chunks.append((cid, s)) + + self.png.crc(cid, s) + + # + # Copy relevant attributes from the PngStream. An alternative + # would be to let the PngStream class modify these attributes + # directly, but that introduces circular references which are + # difficult to break if things go wrong in the decoder... + # (believe me, I've tried ;-) + + self.mode = self.png.im_mode + self._size = self.png.im_size + self.info = self.png.im_info + self._text = None + self.tile = self.png.im_tile + self.custom_mimetype = self.png.im_custom_mimetype + self.n_frames = self.png.im_n_frames or 1 + self.default_image = self.info.get("default_image", False) + + if self.png.im_palette: + rawmode, data = self.png.im_palette + self.palette = ImagePalette.raw(rawmode, data) + + if cid == b"fdAT": + self.__prepare_idat = length - 4 + else: + self.__prepare_idat = length # used by load_prepare() + + if self.png.im_n_frames is not None: + self._close_exclusive_fp_after_loading = False + self.png.save_rewind() + self.__rewind_idat = self.__prepare_idat + self.__rewind = self._fp.tell() + if self.default_image: + # IDAT chunk contains default image and not first animation frame + self.n_frames += 1 + self._seek(0) + self.is_animated = self.n_frames > 1 + + @property + def text(self): + # experimental + if self._text is None: + # iTxt, tEXt and zTXt chunks may appear at the end of the file + # So load the file to ensure that they are read + if self.is_animated: + frame = self.__frame + # for APNG, seek to the final frame before loading + self.seek(self.n_frames - 1) + self.load() + if self.is_animated: + self.seek(frame) + return self._text + + def verify(self): + """Verify PNG file""" + + if self.fp is None: + msg = "verify must be called directly after open" + raise RuntimeError(msg) + + # back up to beginning of IDAT block + self.fp.seek(self.tile[0][2] - 8) + + self.png.verify() + self.png.close() + + if self._exclusive_fp: + self.fp.close() + self.fp = None + + def seek(self, frame): + if not self._seek_check(frame): + return + if frame < self.__frame: + self._seek(0, True) + + last_frame = self.__frame + for f in range(self.__frame + 1, frame + 1): + try: + self._seek(f) + except EOFError as e: + self.seek(last_frame) + msg = "no more images in APNG file" + raise EOFError(msg) from e + + def _seek(self, frame, rewind=False): + if frame == 0: + if rewind: + self._fp.seek(self.__rewind) + self.png.rewind() + self.__prepare_idat = self.__rewind_idat + self.im = None + if self.pyaccess: + self.pyaccess = None + self.info = self.png.im_info + self.tile = self.png.im_tile + self.fp = self._fp + self._prev_im = None + self.dispose = None + self.default_image = self.info.get("default_image", False) + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + self.dispose_extent = self.info.get("bbox") + self.__frame = 0 + else: + if frame != self.__frame + 1: + msg = f"cannot seek to frame {frame}" + raise ValueError(msg) + + # ensure previous frame was loaded + self.load() + + if self.dispose: + self.im.paste(self.dispose, self.dispose_extent) + self._prev_im = self.im.copy() + + self.fp = self._fp + + # advance to the next frame + if self.__prepare_idat: + ImageFile._safe_read(self.fp, self.__prepare_idat) + self.__prepare_idat = 0 + frame_start = False + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + msg = "No more images in APNG file" + raise EOFError(msg) + if cid == b"fcTL": + if frame_start: + # there must be at least one fdAT chunk between fcTL chunks + msg = "APNG missing frame data" + raise SyntaxError(msg) + frame_start = True + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + if frame_start: + self.__prepare_idat = length + break + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + ImageFile._safe_read(self.fp, length) + + self.__frame = frame + self.tile = self.png.im_tile + self.dispose_op = self.info.get("disposal") + self.blend_op = self.info.get("blend") + self.dispose_extent = self.info.get("bbox") + + if not self.tile: + raise EOFError + + # setup frame disposal (actual disposal done when needed in the next _seek()) + if self._prev_im is None and self.dispose_op == Disposal.OP_PREVIOUS: + self.dispose_op = Disposal.OP_BACKGROUND + + if self.dispose_op == Disposal.OP_PREVIOUS: + self.dispose = self._prev_im.copy() + self.dispose = self._crop(self.dispose, self.dispose_extent) + elif self.dispose_op == Disposal.OP_BACKGROUND: + self.dispose = Image.core.fill(self.mode, self.size) + self.dispose = self._crop(self.dispose, self.dispose_extent) + else: + self.dispose = None + + def tell(self): + return self.__frame + + def load_prepare(self): + """internal: prepare to read PNG file""" + + if self.info.get("interlace"): + self.decoderconfig = self.decoderconfig + (1,) + + self.__idat = self.__prepare_idat # used by load_read() + ImageFile.ImageFile.load_prepare(self) + + def load_read(self, read_bytes): + """internal: read more image data""" + + while self.__idat == 0: + # end of chunk, skip forward to next one + + self.fp.read(4) # CRC + + cid, pos, length = self.png.read() + + if cid not in [b"IDAT", b"DDAT", b"fdAT"]: + self.png.push(cid, pos, length) + return b"" + + if cid == b"fdAT": + try: + self.png.call(cid, pos, length) + except EOFError: + pass + self.__idat = length - 4 # sequence_num has already been read + else: + self.__idat = length # empty chunks are allowed + + # read more data from this chunk + if read_bytes <= 0: + read_bytes = self.__idat + else: + read_bytes = min(read_bytes, self.__idat) + + self.__idat = self.__idat - read_bytes + + return self.fp.read(read_bytes) + + def load_end(self): + """internal: finished reading image data""" + if self.__idat != 0: + self.fp.read(self.__idat) + while True: + self.fp.read(4) # CRC + + try: + cid, pos, length = self.png.read() + except (struct.error, SyntaxError): + break + + if cid == b"IEND": + break + elif cid == b"fcTL" and self.is_animated: + # start of the next frame, stop reading + self.__prepare_idat = 0 + self.png.push(cid, pos, length) + break + + try: + self.png.call(cid, pos, length) + except UnicodeDecodeError: + break + except EOFError: + if cid == b"fdAT": + length -= 4 + ImageFile._safe_read(self.fp, length) + except AttributeError: + logger.debug("%r %s %s (unknown)", cid, pos, length) + s = ImageFile._safe_read(self.fp, length) + if cid[1:2].islower(): + self.private_chunks.append((cid, s, True)) + self._text = self.png.im_text + if not self.is_animated: + self.png.close() + self.png = None + else: + if self._prev_im and self.blend_op == Blend.OP_OVER: + updated = self._crop(self.im, self.dispose_extent) + if self.im.mode == "RGB" and "transparency" in self.info: + mask = updated.convert_transparent( + "RGBA", self.info["transparency"] + ) + else: + mask = updated.convert("RGBA") + self._prev_im.paste(updated, self.dispose_extent, mask) + self.im = self._prev_im + if self.pyaccess: + self.pyaccess = None + + def _getexif(self): + if "exif" not in self.info: + self.load() + if "exif" not in self.info and "Raw profile type exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + def getexif(self): + if "exif" not in self.info: + self.load() + + return super().getexif() + + def getxmp(self): + """ + Returns a dictionary containing the XMP tags. + Requires defusedxml to be installed. + + :returns: XMP tags in a dictionary. + """ + return ( + self._getxmp(self.info["XML:com.adobe.xmp"]) + if "XML:com.adobe.xmp" in self.info + else {} + ) + + +# -------------------------------------------------------------------- +# PNG writer + +_OUTMODES = { + # supported PIL modes, and corresponding rawmodes/bits/color combinations + "1": ("1", b"\x01\x00"), + "L;1": ("L;1", b"\x01\x00"), + "L;2": ("L;2", b"\x02\x00"), + "L;4": ("L;4", b"\x04\x00"), + "L": ("L", b"\x08\x00"), + "LA": ("LA", b"\x08\x04"), + "I": ("I;16B", b"\x10\x00"), + "I;16": ("I;16B", b"\x10\x00"), + "P;1": ("P;1", b"\x01\x03"), + "P;2": ("P;2", b"\x02\x03"), + "P;4": ("P;4", b"\x04\x03"), + "P": ("P", b"\x08\x03"), + "RGB": ("RGB", b"\x08\x02"), + "RGBA": ("RGBA", b"\x08\x06"), +} + + +def putchunk(fp, cid, *data): + """Write a PNG chunk (including CRC field)""" + + data = b"".join(data) + + fp.write(o32(len(data)) + cid) + fp.write(data) + crc = _crc32(data, _crc32(cid)) + fp.write(o32(crc)) + + +class _idat: + # wrap output from the encoder in IDAT chunks + + def __init__(self, fp, chunk): + self.fp = fp + self.chunk = chunk + + def write(self, data): + self.chunk(self.fp, b"IDAT", data) + + +class _fdat: + # wrap encoder output in fdAT chunks + + def __init__(self, fp, chunk, seq_num): + self.fp = fp + self.chunk = chunk + self.seq_num = seq_num + + def write(self, data): + self.chunk(self.fp, b"fdAT", o32(self.seq_num), data) + self.seq_num += 1 + + +def _write_multiple_frames(im, fp, chunk, rawmode, default_image, append_images): + duration = im.encoderinfo.get("duration", im.info.get("duration", 0)) + loop = im.encoderinfo.get("loop", im.info.get("loop", 0)) + disposal = im.encoderinfo.get("disposal", im.info.get("disposal", Disposal.OP_NONE)) + blend = im.encoderinfo.get("blend", im.info.get("blend", Blend.OP_SOURCE)) + + if default_image: + chain = itertools.chain(append_images) + else: + chain = itertools.chain([im], append_images) + + im_frames = [] + frame_count = 0 + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + if im_frame.mode == rawmode: + im_frame = im_frame.copy() + else: + if rawmode == "P": + im_frame = im_frame.convert(rawmode, palette=im.palette) + else: + im_frame = im_frame.convert(rawmode) + encoderinfo = im.encoderinfo.copy() + if isinstance(duration, (list, tuple)): + encoderinfo["duration"] = duration[frame_count] + if isinstance(disposal, (list, tuple)): + encoderinfo["disposal"] = disposal[frame_count] + if isinstance(blend, (list, tuple)): + encoderinfo["blend"] = blend[frame_count] + frame_count += 1 + + if im_frames: + previous = im_frames[-1] + prev_disposal = previous["encoderinfo"].get("disposal") + prev_blend = previous["encoderinfo"].get("blend") + if prev_disposal == Disposal.OP_PREVIOUS and len(im_frames) < 2: + prev_disposal = Disposal.OP_BACKGROUND + + if prev_disposal == Disposal.OP_BACKGROUND: + base_im = previous["im"].copy() + dispose = Image.core.fill("RGBA", im.size, (0, 0, 0, 0)) + bbox = previous["bbox"] + if bbox: + dispose = dispose.crop(bbox) + else: + bbox = (0, 0) + im.size + base_im.paste(dispose, bbox) + elif prev_disposal == Disposal.OP_PREVIOUS: + base_im = im_frames[-2]["im"] + else: + base_im = previous["im"] + delta = ImageChops.subtract_modulo( + im_frame.convert("RGBA"), base_im.convert("RGBA") + ) + bbox = delta.getbbox(alpha_only=False) + if ( + not bbox + and prev_disposal == encoderinfo.get("disposal") + and prev_blend == encoderinfo.get("blend") + ): + previous["encoderinfo"]["duration"] += encoderinfo.get( + "duration", duration + ) + continue + else: + bbox = None + if "duration" not in encoderinfo: + encoderinfo["duration"] = duration + im_frames.append({"im": im_frame, "bbox": bbox, "encoderinfo": encoderinfo}) + + # animation control + chunk( + fp, + b"acTL", + o32(len(im_frames)), # 0: num_frames + o32(loop), # 4: num_plays + ) + + # default image IDAT (if it exists) + if default_image: + ImageFile._save(im, _idat(fp, chunk), [("zip", (0, 0) + im.size, 0, rawmode)]) + + seq_num = 0 + for frame, frame_data in enumerate(im_frames): + im_frame = frame_data["im"] + if not frame_data["bbox"]: + bbox = (0, 0) + im_frame.size + else: + bbox = frame_data["bbox"] + im_frame = im_frame.crop(bbox) + size = im_frame.size + encoderinfo = frame_data["encoderinfo"] + frame_duration = int(round(encoderinfo["duration"])) + frame_disposal = encoderinfo.get("disposal", disposal) + frame_blend = encoderinfo.get("blend", blend) + # frame control + chunk( + fp, + b"fcTL", + o32(seq_num), # sequence_number + o32(size[0]), # width + o32(size[1]), # height + o32(bbox[0]), # x_offset + o32(bbox[1]), # y_offset + o16(frame_duration), # delay_numerator + o16(1000), # delay_denominator + o8(frame_disposal), # dispose_op + o8(frame_blend), # blend_op + ) + seq_num += 1 + # frame data + if frame == 0 and not default_image: + # first frame must be in IDAT chunks for backwards compatibility + ImageFile._save( + im_frame, + _idat(fp, chunk), + [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + else: + fdat_chunks = _fdat(fp, chunk, seq_num) + ImageFile._save( + im_frame, + fdat_chunks, + [("zip", (0, 0) + im_frame.size, 0, rawmode)], + ) + seq_num = fdat_chunks.seq_num + + +def _save_all(im, fp, filename): + _save(im, fp, filename, save_all=True) + + +def _save(im, fp, filename, chunk=putchunk, save_all=False): + # save an image to disk (called by the save method) + + if save_all: + default_image = im.encoderinfo.get( + "default_image", im.info.get("default_image") + ) + modes = set() + append_images = im.encoderinfo.get("append_images", []) + if default_image: + chain = itertools.chain(append_images) + else: + chain = itertools.chain([im], append_images) + for im_seq in chain: + for im_frame in ImageSequence.Iterator(im_seq): + modes.add(im_frame.mode) + for mode in ("RGBA", "RGB", "P"): + if mode in modes: + break + else: + mode = modes.pop() + else: + mode = im.mode + + if mode == "P": + # + # attempt to minimize storage requirements for palette images + if "bits" in im.encoderinfo: + # number of bits specified by user + colors = min(1 << im.encoderinfo["bits"], 256) + else: + # check palette contents + if im.palette: + colors = max(min(len(im.palette.getdata()[1]) // 3, 256), 1) + else: + colors = 256 + + if colors <= 16: + if colors <= 2: + bits = 1 + elif colors <= 4: + bits = 2 + else: + bits = 4 + mode = f"{mode};{bits}" + + # encoder options + im.encoderconfig = ( + im.encoderinfo.get("optimize", False), + im.encoderinfo.get("compress_level", -1), + im.encoderinfo.get("compress_type", -1), + im.encoderinfo.get("dictionary", b""), + ) + + # get the corresponding PNG mode + try: + rawmode, mode = _OUTMODES[mode] + except KeyError as e: + msg = f"cannot write mode {mode} as PNG" + raise OSError(msg) from e + + # + # write minimal PNG file + + fp.write(_MAGIC) + + chunk( + fp, + b"IHDR", + o32(im.size[0]), # 0: size + o32(im.size[1]), + mode, # 8: depth/type + b"\0", # 10: compression + b"\0", # 11: filter category + b"\0", # 12: interlace flag + ) + + chunks = [b"cHRM", b"gAMA", b"sBIT", b"sRGB", b"tIME"] + + icc = im.encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + # ICC profile + # according to PNG spec, the iCCP chunk contains: + # Profile name 1-79 bytes (character string) + # Null separator 1 byte (null character) + # Compression method 1 byte (0) + # Compressed profile n bytes (zlib with deflate compression) + name = b"ICC Profile" + data = name + b"\0\0" + zlib.compress(icc) + chunk(fp, b"iCCP", data) + + # You must either have sRGB or iCCP. + # Disallow sRGB chunks when an iCCP-chunk has been emitted. + chunks.remove(b"sRGB") + + info = im.encoderinfo.get("pnginfo") + if info: + chunks_multiple_allowed = [b"sPLT", b"iTXt", b"tEXt", b"zTXt"] + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + elif cid in chunks_multiple_allowed: + chunk(fp, cid, data) + elif cid[1:2].islower(): + # Private chunk + after_idat = info_chunk[2:3] + if not after_idat: + chunk(fp, cid, data) + + if im.mode == "P": + palette_byte_number = colors * 3 + palette_bytes = im.im.getpalette("RGB")[:palette_byte_number] + while len(palette_bytes) < palette_byte_number: + palette_bytes += b"\0" + chunk(fp, b"PLTE", palette_bytes) + + transparency = im.encoderinfo.get("transparency", im.info.get("transparency", None)) + + if transparency or transparency == 0: + if im.mode == "P": + # limit to actual palette size + alpha_bytes = colors + if isinstance(transparency, bytes): + chunk(fp, b"tRNS", transparency[:alpha_bytes]) + else: + transparency = max(0, min(255, transparency)) + alpha = b"\xFF" * transparency + b"\0" + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + elif im.mode in ("1", "L", "I"): + transparency = max(0, min(65535, transparency)) + chunk(fp, b"tRNS", o16(transparency)) + elif im.mode == "RGB": + red, green, blue = transparency + chunk(fp, b"tRNS", o16(red) + o16(green) + o16(blue)) + else: + if "transparency" in im.encoderinfo: + # don't bother with transparency if it's an RGBA + # and it's in the info dict. It's probably just stale. + msg = "cannot use transparency for this mode" + raise OSError(msg) + else: + if im.mode == "P" and im.im.getpalettemode() == "RGBA": + alpha = im.im.getpalette("RGBA", "A") + alpha_bytes = colors + chunk(fp, b"tRNS", alpha[:alpha_bytes]) + + dpi = im.encoderinfo.get("dpi") + if dpi: + chunk( + fp, + b"pHYs", + o32(int(dpi[0] / 0.0254 + 0.5)), + o32(int(dpi[1] / 0.0254 + 0.5)), + b"\x01", + ) + + if info: + chunks = [b"bKGD", b"hIST"] + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid in chunks: + chunks.remove(cid) + chunk(fp, cid, data) + + exif = im.encoderinfo.get("exif") + if exif: + if isinstance(exif, Image.Exif): + exif = exif.tobytes(8) + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + chunk(fp, b"eXIf", exif) + + if save_all: + _write_multiple_frames(im, fp, chunk, rawmode, default_image, append_images) + else: + ImageFile._save(im, _idat(fp, chunk), [("zip", (0, 0) + im.size, 0, rawmode)]) + + if info: + for info_chunk in info.chunks: + cid, data = info_chunk[:2] + if cid[1:2].islower(): + # Private chunk + after_idat = info_chunk[2:3] + if after_idat: + chunk(fp, cid, data) + + chunk(fp, b"IEND", b"") + + if hasattr(fp, "flush"): + fp.flush() + + +# -------------------------------------------------------------------- +# PNG chunk converter + + +def getchunks(im, **params): + """Return a list of PNG chunks representing this image.""" + + class collector: + data = [] + + def write(self, data): + pass + + def append(self, chunk): + self.data.append(chunk) + + def append(fp, cid, *data): + data = b"".join(data) + crc = o32(_crc32(data, _crc32(cid))) + fp.append((cid, data, crc)) + + fp = collector() + + try: + im.encoderinfo = params + _save(im, fp, None, append) + finally: + del im.encoderinfo + + return fp.data + + +# -------------------------------------------------------------------- +# Registry + +Image.register_open(PngImageFile.format, PngImageFile, _accept) +Image.register_save(PngImageFile.format, _save) +Image.register_save_all(PngImageFile.format, _save_all) + +Image.register_extensions(PngImageFile.format, [".png", ".apng"]) + +Image.register_mime(PngImageFile.format, "image/png") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py new file mode 100644 index 0000000..2cb1e56 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PpmImagePlugin.py @@ -0,0 +1,347 @@ +# +# The Python Imaging Library. +# $Id$ +# +# PPM support for PIL +# +# History: +# 96-03-24 fl Created +# 98-03-06 fl Write RGBA images (as RGB, that is) +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 +from ._binary import o32le as o32 + +# +# -------------------------------------------------------------------- + +b_whitespace = b"\x20\x09\x0a\x0b\x0c\x0d" + +MODES = { + # standard + b"P1": "1", + b"P2": "L", + b"P3": "RGB", + b"P4": "1", + b"P5": "L", + b"P6": "RGB", + # extensions + b"P0CMYK": "CMYK", + # PIL extensions (for test purposes only) + b"PyP": "P", + b"PyRGBA": "RGBA", + b"PyCMYK": "CMYK", +} + + +def _accept(prefix): + return prefix[0:1] == b"P" and prefix[1] in b"0123456y" + + +## +# Image plugin for PBM, PGM, and PPM images. + + +class PpmImageFile(ImageFile.ImageFile): + format = "PPM" + format_description = "Pbmplus image" + + def _read_magic(self): + magic = b"" + # read until whitespace or longest available magic number + for _ in range(6): + c = self.fp.read(1) + if not c or c in b_whitespace: + break + magic += c + return magic + + def _read_token(self): + token = b"" + while len(token) <= 10: # read until next whitespace or limit of 10 characters + c = self.fp.read(1) + if not c: + break + elif c in b_whitespace: # token ended + if not token: + # skip whitespace at start + continue + break + elif c == b"#": + # ignores rest of the line; stops at CR, LF or EOF + while self.fp.read(1) not in b"\r\n": + pass + continue + token += c + if not token: + # Token was not even 1 byte + msg = "Reached EOF while reading header" + raise ValueError(msg) + elif len(token) > 10: + msg = f"Token too long in file header: {token.decode()}" + raise ValueError(msg) + return token + + def _open(self): + magic_number = self._read_magic() + try: + mode = MODES[magic_number] + except KeyError: + msg = "not a PPM file" + raise SyntaxError(msg) + + if magic_number in (b"P1", b"P4"): + self.custom_mimetype = "image/x-portable-bitmap" + elif magic_number in (b"P2", b"P5"): + self.custom_mimetype = "image/x-portable-graymap" + elif magic_number in (b"P3", b"P6"): + self.custom_mimetype = "image/x-portable-pixmap" + + maxval = None + decoder_name = "raw" + if magic_number in (b"P1", b"P2", b"P3"): + decoder_name = "ppm_plain" + for ix in range(3): + token = int(self._read_token()) + if ix == 0: # token is the x size + xsize = token + elif ix == 1: # token is the y size + ysize = token + if mode == "1": + self.mode = "1" + rawmode = "1;I" + break + else: + self.mode = rawmode = mode + elif ix == 2: # token is maxval + maxval = token + if not 0 < maxval < 65536: + msg = "maxval must be greater than 0 and less than 65536" + raise ValueError(msg) + if maxval > 255 and mode == "L": + self.mode = "I" + + if decoder_name != "ppm_plain": + # If maxval matches a bit depth, use the raw decoder directly + if maxval == 65535 and mode == "L": + rawmode = "I;16B" + elif maxval != 255: + decoder_name = "ppm" + + args = (rawmode, 0, 1) if decoder_name == "raw" else (rawmode, maxval) + self._size = xsize, ysize + self.tile = [(decoder_name, (0, 0, xsize, ysize), self.fp.tell(), args)] + + +# +# -------------------------------------------------------------------- + + +class PpmPlainDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def _read_block(self): + return self.fd.read(ImageFile.SAFEBLOCK) + + def _find_comment_end(self, block, start=0): + a = block.find(b"\n", start) + b = block.find(b"\r", start) + return min(a, b) if a * b > 0 else max(a, b) # lowest nonnegative index (or -1) + + def _ignore_comments(self, block): + if self._comment_spans: + # Finish current comment + while block: + comment_end = self._find_comment_end(block) + if comment_end != -1: + # Comment ends in this block + # Delete tail of comment + block = block[comment_end + 1 :] + break + else: + # Comment spans whole block + # So read the next block, looking for the end + block = self._read_block() + + # Search for any further comments + self._comment_spans = False + while True: + comment_start = block.find(b"#") + if comment_start == -1: + # No comment found + break + comment_end = self._find_comment_end(block, comment_start) + if comment_end != -1: + # Comment ends in this block + # Delete comment + block = block[:comment_start] + block[comment_end + 1 :] + else: + # Comment continues to next block(s) + block = block[:comment_start] + self._comment_spans = True + break + return block + + def _decode_bitonal(self): + """ + This is a separate method because in the plain PBM format, all data tokens are + exactly one byte, so the inter-token whitespace is optional. + """ + data = bytearray() + total_bytes = self.state.xsize * self.state.ysize + + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + # eof + break + + block = self._ignore_comments(block) + + tokens = b"".join(block.split()) + for token in tokens: + if token not in (48, 49): + msg = b"Invalid token for this mode: %s" % bytes([token]) + raise ValueError(msg) + data = (data + tokens)[:total_bytes] + invert = bytes.maketrans(b"01", b"\xFF\x00") + return data.translate(invert) + + def _decode_blocks(self, maxval): + data = bytearray() + max_len = 10 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + total_bytes = self.state.xsize * self.state.ysize * bands * out_byte_count + + half_token = False + while len(data) != total_bytes: + block = self._read_block() # read next block + if not block: + if half_token: + block = bytearray(b" ") # flush half_token + else: + # eof + break + + block = self._ignore_comments(block) + + if half_token: + block = half_token + block # stitch half_token to new block + half_token = False + + tokens = block.split() + + if block and not block[-1:].isspace(): # block might split token + half_token = tokens.pop() # save half token for later + if len(half_token) > max_len: # prevent buildup of half_token + msg = ( + b"Token too long found in data: %s" % half_token[: max_len + 1] + ) + raise ValueError(msg) + + for token in tokens: + if len(token) > max_len: + msg = b"Token too long found in data: %s" % token[: max_len + 1] + raise ValueError(msg) + value = int(token) + if value > maxval: + msg = f"Channel value too large for this mode: {value}" + raise ValueError(msg) + value = round(value / maxval * out_max) + data += o32(value) if self.mode == "I" else o8(value) + if len(data) == total_bytes: # finished! + break + return data + + def decode(self, buffer): + self._comment_spans = False + if self.mode == "1": + data = self._decode_bitonal() + rawmode = "1;8" + else: + maxval = self.args[-1] + data = self._decode_blocks(maxval) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +class PpmDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer): + data = bytearray() + maxval = self.args[-1] + in_byte_count = 1 if maxval < 256 else 2 + out_byte_count = 4 if self.mode == "I" else 1 + out_max = 65535 if self.mode == "I" else 255 + bands = Image.getmodebands(self.mode) + while len(data) < self.state.xsize * self.state.ysize * bands * out_byte_count: + pixels = self.fd.read(in_byte_count * bands) + if len(pixels) < in_byte_count * bands: + # eof + break + for b in range(bands): + value = ( + pixels[b] if in_byte_count == 1 else i16(pixels, b * in_byte_count) + ) + value = min(out_max, round(value / maxval * out_max)) + data += o32(value) if self.mode == "I" else o8(value) + rawmode = "I;32" if self.mode == "I" else self.mode + self.set_as_raw(bytes(data), rawmode) + return -1, 0 + + +# +# -------------------------------------------------------------------- + + +def _save(im, fp, filename): + if im.mode == "1": + rawmode, head = "1;I", b"P4" + elif im.mode == "L": + rawmode, head = "L", b"P5" + elif im.mode == "I": + rawmode, head = "I;16B", b"P5" + elif im.mode in ("RGB", "RGBA"): + rawmode, head = "RGB", b"P6" + else: + msg = f"cannot write mode {im.mode} as PPM" + raise OSError(msg) + fp.write(head + b"\n%d %d\n" % im.size) + if head == b"P6": + fp.write(b"255\n") + elif head == b"P5": + if rawmode == "L": + fp.write(b"255\n") + else: + fp.write(b"65535\n") + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + # ALTERNATIVE: save via builtin debug function + # im._dump(filename) + + +# +# -------------------------------------------------------------------- + + +Image.register_open(PpmImageFile.format, PpmImageFile, _accept) +Image.register_save(PpmImageFile.format, _save) + +Image.register_decoder("ppm", PpmDecoder) +Image.register_decoder("ppm_plain", PpmPlainDecoder) + +Image.register_extensions(PpmImageFile.format, [".pbm", ".pgm", ".ppm", ".pnm"]) + +Image.register_mime(PpmImageFile.format, "image/x-portable-anymap") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py new file mode 100644 index 0000000..5a5d60d --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PsdImagePlugin.py @@ -0,0 +1,303 @@ +# +# The Python Imaging Library +# $Id$ +# +# Adobe PSD 2.5/3.0 file handling +# +# History: +# 1995-09-01 fl Created +# 1997-01-03 fl Read most PSD images +# 1997-01-18 fl Fixed P and CMYK support +# 2001-10-21 fl Added seek/tell support (for layers) +# +# Copyright (c) 1997-2001 by Secret Labs AB. +# Copyright (c) 1995-2001 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import Image, ImageFile, ImagePalette +from ._binary import i8 +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import si16be as si16 + +MODES = { + # (photoshop mode, bits) -> (pil mode, required channels) + (0, 1): ("1", 1), + (0, 8): ("L", 1), + (1, 8): ("L", 1), + (2, 8): ("P", 1), + (3, 8): ("RGB", 3), + (4, 8): ("CMYK", 4), + (7, 8): ("L", 1), # FIXME: multilayer + (8, 8): ("L", 1), # duotone + (9, 8): ("LAB", 3), +} + + +# --------------------------------------------------------------------. +# read PSD images + + +def _accept(prefix): + return prefix[:4] == b"8BPS" + + +## +# Image plugin for Photoshop images. + + +class PsdImageFile(ImageFile.ImageFile): + format = "PSD" + format_description = "Adobe Photoshop" + _close_exclusive_fp_after_loading = False + + def _open(self): + read = self.fp.read + + # + # header + + s = read(26) + if not _accept(s) or i16(s, 4) != 1: + msg = "not a PSD file" + raise SyntaxError(msg) + + psd_bits = i16(s, 22) + psd_channels = i16(s, 12) + psd_mode = i16(s, 24) + + mode, channels = MODES[(psd_mode, psd_bits)] + + if channels > psd_channels: + msg = "not enough channels" + raise OSError(msg) + if mode == "RGB" and psd_channels == 4: + mode = "RGBA" + channels = 4 + + self.mode = mode + self._size = i32(s, 18), i32(s, 14) + + # + # color mode data + + size = i32(read(4)) + if size: + data = read(size) + if mode == "P" and size == 768: + self.palette = ImagePalette.raw("RGB;L", data) + + # + # image resources + + self.resources = [] + + size = i32(read(4)) + if size: + # load resources + end = self.fp.tell() + size + while self.fp.tell() < end: + read(4) # signature + id = i16(read(2)) + name = read(i8(read(1))) + if not (len(name) & 1): + read(1) # padding + data = read(i32(read(4))) + if len(data) & 1: + read(1) # padding + self.resources.append((id, name, data)) + if id == 1039: # ICC profile + self.info["icc_profile"] = data + + # + # layer and mask information + + self.layers = [] + + size = i32(read(4)) + if size: + end = self.fp.tell() + size + size = i32(read(4)) + if size: + _layer_data = io.BytesIO(ImageFile._safe_read(self.fp, size)) + self.layers = _layerinfo(_layer_data, size) + self.fp.seek(end) + self.n_frames = len(self.layers) + self.is_animated = self.n_frames > 1 + + # + # image descriptor + + self.tile = _maketile(self.fp, mode, (0, 0) + self.size, channels) + + # keep the file open + self._fp = self.fp + self.frame = 1 + self._min_frame = 1 + + def seek(self, layer): + if not self._seek_check(layer): + return + + # seek to given layer (1..max) + try: + name, mode, bbox, tile = self.layers[layer - 1] + self.mode = mode + self.tile = tile + self.frame = layer + self.fp = self._fp + return name, bbox + except IndexError as e: + msg = "no such layer" + raise EOFError(msg) from e + + def tell(self): + # return layer number (0=image, 1..max=layers) + return self.frame + + +def _layerinfo(fp, ct_bytes): + # read layerinfo block + layers = [] + + def read(size): + return ImageFile._safe_read(fp, size) + + ct = si16(read(2)) + + # sanity check + if ct_bytes < (abs(ct) * 20): + msg = "Layer block too short for number of layers requested" + raise SyntaxError(msg) + + for _ in range(abs(ct)): + # bounding box + y0 = i32(read(4)) + x0 = i32(read(4)) + y1 = i32(read(4)) + x1 = i32(read(4)) + + # image info + mode = [] + ct_types = i16(read(2)) + types = list(range(ct_types)) + if len(types) > 4: + continue + + for _ in types: + type = i16(read(2)) + + if type == 65535: + m = "A" + else: + m = "RGBA"[type] + + mode.append(m) + read(4) # size + + # figure out the image mode + mode.sort() + if mode == ["R"]: + mode = "L" + elif mode == ["B", "G", "R"]: + mode = "RGB" + elif mode == ["A", "B", "G", "R"]: + mode = "RGBA" + else: + mode = None # unknown + + # skip over blend flags and extra information + read(12) # filler + name = "" + size = i32(read(4)) # length of the extra data field + if size: + data_end = fp.tell() + size + + length = i32(read(4)) + if length: + fp.seek(length - 16, io.SEEK_CUR) + + length = i32(read(4)) + if length: + fp.seek(length, io.SEEK_CUR) + + length = i8(read(1)) + if length: + # Don't know the proper encoding, + # Latin-1 should be a good guess + name = read(length).decode("latin-1", "replace") + + fp.seek(data_end) + layers.append((name, mode, (x0, y0, x1, y1))) + + # get tiles + for i, (name, mode, bbox) in enumerate(layers): + tile = [] + for m in mode: + t = _maketile(fp, m, bbox, 1) + if t: + tile.extend(t) + layers[i] = name, mode, bbox, tile + + return layers + + +def _maketile(file, mode, bbox, channels): + tile = None + read = file.read + + compression = i16(read(2)) + + xsize = bbox[2] - bbox[0] + ysize = bbox[3] - bbox[1] + + offset = file.tell() + + if compression == 0: + # + # raw compression + tile = [] + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("raw", bbox, offset, layer)) + offset = offset + xsize * ysize + + elif compression == 1: + # + # packbits compression + i = 0 + tile = [] + bytecount = read(channels * ysize * 2) + offset = file.tell() + for channel in range(channels): + layer = mode[channel] + if mode == "CMYK": + layer += ";I" + tile.append(("packbits", bbox, offset, layer)) + for y in range(ysize): + offset = offset + i16(bytecount, i) + i += 2 + + file.seek(offset) + + if offset & 1: + read(1) # padding + + return tile + + +# -------------------------------------------------------------------- +# registry + + +Image.register_open(PsdImageFile.format, PsdImageFile, _accept) + +Image.register_extension(PsdImageFile.format, ".psd") + +Image.register_mime(PsdImageFile.format, "image/vnd.adobe.photoshop") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PyAccess.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PyAccess.py new file mode 100644 index 0000000..99b46a4 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/PyAccess.py @@ -0,0 +1,363 @@ +# +# The Python Imaging Library +# Pillow fork +# +# Python implementation of the PixelAccess Object +# +# Copyright (c) 1997-2009 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-2009 by Fredrik Lundh. +# Copyright (c) 2013 Eric Soroos +# +# See the README file for information on usage and redistribution +# + +# Notes: +# +# * Implements the pixel access object following Access.c +# * Taking only the tuple form, which is used from python. +# * Fill.c uses the integer form, but it's still going to use the old +# Access.c implementation. +# + +import logging +import sys + +from ._deprecate import deprecate + +try: + from cffi import FFI + + defs = """ + struct Pixel_RGBA { + unsigned char r,g,b,a; + }; + struct Pixel_I16 { + unsigned char l,r; + }; + """ + ffi = FFI() + ffi.cdef(defs) +except ImportError as ex: + # Allow error import for doc purposes, but error out when accessing + # anything in core. + from ._util import DeferredError + + FFI = ffi = DeferredError(ex) + +logger = logging.getLogger(__name__) + + +class PyAccess: + def __init__(self, img, readonly=False): + deprecate("PyAccess", 11) + vals = dict(img.im.unsafe_ptrs) + self.readonly = readonly + self.image8 = ffi.cast("unsigned char **", vals["image8"]) + self.image32 = ffi.cast("int **", vals["image32"]) + self.image = ffi.cast("unsigned char **", vals["image"]) + self.xsize, self.ysize = img.im.size + self._img = img + + # Keep pointer to im object to prevent dereferencing. + self._im = img.im + if self._im.mode in ("P", "PA"): + self._palette = img.palette + + # Debugging is polluting test traces, only useful here + # when hacking on PyAccess + # logger.debug("%s", vals) + self._post_init() + + def _post_init(self): + pass + + def __setitem__(self, xy, color): + """ + Modifies the pixel at x,y. The color is given as a single + numerical value for single band images, and a tuple for + multi-band images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :param color: The pixel value. + """ + if self.readonly: + msg = "Attempt to putpixel a read only image" + raise ValueError(msg) + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + + if ( + self._im.mode in ("P", "PA") + and isinstance(color, (list, tuple)) + and len(color) in [3, 4] + ): + # RGB or RGBA value for a P or PA image + if self._im.mode == "PA": + alpha = color[3] if len(color) == 4 else 255 + color = color[:3] + color = self._palette.getcolor(color, self._img) + if self._im.mode == "PA": + color = (color, alpha) + + return self.set_pixel(x, y, color) + + def __getitem__(self, xy): + """ + Returns the pixel at x,y. The pixel is returned as a single + value for single band images or a tuple for multiple band + images + + :param xy: The pixel coordinate, given as (x, y). See + :ref:`coordinate-system`. + :returns: a pixel value for single band images, a tuple of + pixel values for multiband images. + """ + (x, y) = xy + if x < 0: + x = self.xsize + x + if y < 0: + y = self.ysize + y + (x, y) = self.check_xy((x, y)) + return self.get_pixel(x, y) + + putpixel = __setitem__ + getpixel = __getitem__ + + def check_xy(self, xy): + (x, y) = xy + if not (0 <= x < self.xsize and 0 <= y < self.ysize): + msg = "pixel location out of range" + raise ValueError(msg) + return xy + + +class _PyAccess32_2(PyAccess): + """PA, LA, stored in first and last bytes of a 32 bit word""" + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.r, pixel.a + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.a = min(color[1], 255) + + +class _PyAccess32_3(PyAccess): + """RGB and friends, stored in the first three bytes of a 32 bit word""" + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.r, pixel.g, pixel.b + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = 255 + + +class _PyAccess32_4(PyAccess): + """RGBA etc, all 4 bytes of a 32 bit word""" + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_RGBA **", self.image32) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.r, pixel.g, pixel.b, pixel.a + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + # tuple + pixel.r = min(color[0], 255) + pixel.g = min(color[1], 255) + pixel.b = min(color[2], 255) + pixel.a = min(color[3], 255) + + +class _PyAccess8(PyAccess): + """1, L, P, 8 bit images stored as uint8""" + + def _post_init(self, *args, **kwargs): + self.pixels = self.image8 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 255) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 255) + + +class _PyAccessI16_N(PyAccess): + """I;16 access, native bitendian without conversion""" + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("unsigned short **", self.image) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # integer + self.pixels[y][x] = min(color, 65535) + except TypeError: + # tuple + self.pixels[y][x] = min(color[0], 65535) + + +class _PyAccessI16_L(PyAccess): + """I;16L access, with conversion""" + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l + pixel.r * 256 + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except TypeError: + color = min(color[0], 65535) + + pixel.l = color & 0xFF # noqa: E741 + pixel.r = color >> 8 + + +class _PyAccessI16_B(PyAccess): + """I;16B access, with conversion""" + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("struct Pixel_I16 **", self.image) + + def get_pixel(self, x, y): + pixel = self.pixels[y][x] + return pixel.l * 256 + pixel.r + + def set_pixel(self, x, y, color): + pixel = self.pixels[y][x] + try: + color = min(color, 65535) + except Exception: + color = min(color[0], 65535) + + pixel.l = color >> 8 # noqa: E741 + pixel.r = color & 0xFF + + +class _PyAccessI32_N(PyAccess): + """Signed Int32 access, native endian""" + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + self.pixels[y][x] = color + + +class _PyAccessI32_Swap(PyAccess): + """I;32L/B access, with byteswapping conversion""" + + def _post_init(self, *args, **kwargs): + self.pixels = self.image32 + + def reverse(self, i): + orig = ffi.new("int *", i) + chars = ffi.cast("unsigned char *", orig) + chars[0], chars[1], chars[2], chars[3] = chars[3], chars[2], chars[1], chars[0] + return ffi.cast("int *", chars)[0] + + def get_pixel(self, x, y): + return self.reverse(self.pixels[y][x]) + + def set_pixel(self, x, y, color): + self.pixels[y][x] = self.reverse(color) + + +class _PyAccessF(PyAccess): + """32 bit float access""" + + def _post_init(self, *args, **kwargs): + self.pixels = ffi.cast("float **", self.image32) + + def get_pixel(self, x, y): + return self.pixels[y][x] + + def set_pixel(self, x, y, color): + try: + # not a tuple + self.pixels[y][x] = color + except TypeError: + # tuple + self.pixels[y][x] = color[0] + + +mode_map = { + "1": _PyAccess8, + "L": _PyAccess8, + "P": _PyAccess8, + "I;16N": _PyAccessI16_N, + "LA": _PyAccess32_2, + "La": _PyAccess32_2, + "PA": _PyAccess32_2, + "RGB": _PyAccess32_3, + "LAB": _PyAccess32_3, + "HSV": _PyAccess32_3, + "YCbCr": _PyAccess32_3, + "RGBA": _PyAccess32_4, + "RGBa": _PyAccess32_4, + "RGBX": _PyAccess32_4, + "CMYK": _PyAccess32_4, + "F": _PyAccessF, + "I": _PyAccessI32_N, +} + +if sys.byteorder == "little": + mode_map["I;16"] = _PyAccessI16_N + mode_map["I;16L"] = _PyAccessI16_N + mode_map["I;16B"] = _PyAccessI16_B + + mode_map["I;32L"] = _PyAccessI32_N + mode_map["I;32B"] = _PyAccessI32_Swap +else: + mode_map["I;16"] = _PyAccessI16_L + mode_map["I;16L"] = _PyAccessI16_L + mode_map["I;16B"] = _PyAccessI16_N + + mode_map["I;32L"] = _PyAccessI32_Swap + mode_map["I;32B"] = _PyAccessI32_N + + +def new(img, readonly=False): + access_type = mode_map.get(img.mode, None) + if not access_type: + logger.debug("PyAccess Not Implemented: %s", img.mode) + return None + return access_type(img, readonly) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py new file mode 100644 index 0000000..ef91b90 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/QoiImagePlugin.py @@ -0,0 +1,105 @@ +# +# The Python Imaging Library. +# +# QOI support for PIL +# +# See the README file for information on usage and redistribution. +# + +import os + +from . import Image, ImageFile +from ._binary import i32be as i32 +from ._binary import o8 + + +def _accept(prefix): + return prefix[:4] == b"qoif" + + +class QoiImageFile(ImageFile.ImageFile): + format = "QOI" + format_description = "Quite OK Image" + + def _open(self): + if not _accept(self.fp.read(4)): + msg = "not a QOI file" + raise SyntaxError(msg) + + self._size = tuple(i32(self.fp.read(4)) for i in range(2)) + + channels = self.fp.read(1)[0] + self.mode = "RGB" if channels == 3 else "RGBA" + + self.fp.seek(1, os.SEEK_CUR) # colorspace + self.tile = [("qoi", (0, 0) + self._size, self.fp.tell(), None)] + + +class QoiDecoder(ImageFile.PyDecoder): + _pulls_fd = True + + def _add_to_previous_pixels(self, value): + self._previous_pixel = value + + r, g, b, a = value + hash_value = (r * 3 + g * 5 + b * 7 + a * 11) % 64 + self._previously_seen_pixels[hash_value] = value + + def decode(self, buffer): + self._previously_seen_pixels = {} + self._previous_pixel = None + self._add_to_previous_pixels(b"".join(o8(i) for i in (0, 0, 0, 255))) + + data = bytearray() + bands = Image.getmodebands(self.mode) + while len(data) < self.state.xsize * self.state.ysize * bands: + byte = self.fd.read(1)[0] + if byte == 0b11111110: # QOI_OP_RGB + value = self.fd.read(3) + o8(255) + elif byte == 0b11111111: # QOI_OP_RGBA + value = self.fd.read(4) + else: + op = byte >> 6 + if op == 0: # QOI_OP_INDEX + op_index = byte & 0b00111111 + value = self._previously_seen_pixels.get(op_index, (0, 0, 0, 0)) + elif op == 1: # QOI_OP_DIFF + value = ( + (self._previous_pixel[0] + ((byte & 0b00110000) >> 4) - 2) + % 256, + (self._previous_pixel[1] + ((byte & 0b00001100) >> 2) - 2) + % 256, + (self._previous_pixel[2] + (byte & 0b00000011) - 2) % 256, + ) + value += (self._previous_pixel[3],) + elif op == 2: # QOI_OP_LUMA + second_byte = self.fd.read(1)[0] + diff_green = (byte & 0b00111111) - 32 + diff_red = ((second_byte & 0b11110000) >> 4) - 8 + diff_blue = (second_byte & 0b00001111) - 8 + + value = tuple( + (self._previous_pixel[i] + diff_green + diff) % 256 + for i, diff in enumerate((diff_red, 0, diff_blue)) + ) + value += (self._previous_pixel[3],) + elif op == 3: # QOI_OP_RUN + run_length = (byte & 0b00111111) + 1 + value = self._previous_pixel + if bands == 3: + value = value[:3] + data += value * run_length + continue + value = b"".join(o8(i) for i in value) + self._add_to_previous_pixels(value) + + if bands == 3: + value = value[:3] + data += value + self.set_as_raw(bytes(data)) + return -1, 0 + + +Image.register_open(QoiImageFile.format, QoiImageFile, _accept) +Image.register_decoder("qoi", QoiDecoder) +Image.register_extension(QoiImageFile.format, ".qoi") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py new file mode 100644 index 0000000..3662ffd --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SgiImagePlugin.py @@ -0,0 +1,231 @@ +# +# The Python Imaging Library. +# $Id$ +# +# SGI image file handling +# +# See "The SGI Image File Format (Draft version 0.97)", Paul Haeberli. +# +# +# +# History: +# 2017-22-07 mb Add RLE decompression +# 2016-16-10 mb Add save method without compression +# 1995-09-10 fl Created +# +# Copyright (c) 2016 by Mickael Bonfill. +# Copyright (c) 2008 by Karsten Hiddemann. +# Copyright (c) 1997 by Secret Labs AB. +# Copyright (c) 1995 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + + +import os +import struct + +from . import Image, ImageFile +from ._binary import i16be as i16 +from ._binary import o8 + + +def _accept(prefix): + return len(prefix) >= 2 and i16(prefix) == 474 + + +MODES = { + (1, 1, 1): "L", + (1, 2, 1): "L", + (2, 1, 1): "L;16B", + (2, 2, 1): "L;16B", + (1, 3, 3): "RGB", + (2, 3, 3): "RGB;16B", + (1, 3, 4): "RGBA", + (2, 3, 4): "RGBA;16B", +} + + +## +# Image plugin for SGI images. +class SgiImageFile(ImageFile.ImageFile): + format = "SGI" + format_description = "SGI Image File Format" + + def _open(self): + # HEAD + headlen = 512 + s = self.fp.read(headlen) + + if not _accept(s): + msg = "Not an SGI image file" + raise ValueError(msg) + + # compression : verbatim or RLE + compression = s[2] + + # bpc : 1 or 2 bytes (8bits or 16bits) + bpc = s[3] + + # dimension : 1, 2 or 3 (depending on xsize, ysize and zsize) + dimension = i16(s, 4) + + # xsize : width + xsize = i16(s, 6) + + # ysize : height + ysize = i16(s, 8) + + # zsize : channels count + zsize = i16(s, 10) + + # layout + layout = bpc, dimension, zsize + + # determine mode from bits/zsize + rawmode = "" + try: + rawmode = MODES[layout] + except KeyError: + pass + + if rawmode == "": + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + self._size = xsize, ysize + self.mode = rawmode.split(";")[0] + if self.mode == "RGB": + self.custom_mimetype = "image/rgb" + + # orientation -1 : scanlines begins at the bottom-left corner + orientation = -1 + + # decoder info + if compression == 0: + pagesize = xsize * ysize * bpc + if bpc == 2: + self.tile = [ + ("SGI16", (0, 0) + self.size, headlen, (self.mode, 0, orientation)) + ] + else: + self.tile = [] + offset = headlen + for layer in self.mode: + self.tile.append( + ("raw", (0, 0) + self.size, offset, (layer, 0, orientation)) + ) + offset += pagesize + elif compression == 1: + self.tile = [ + ("sgi_rle", (0, 0) + self.size, headlen, (rawmode, orientation, bpc)) + ] + + +def _save(im, fp, filename): + if im.mode != "RGB" and im.mode != "RGBA" and im.mode != "L": + msg = "Unsupported SGI image mode" + raise ValueError(msg) + + # Get the keyword arguments + info = im.encoderinfo + + # Byte-per-pixel precision, 1 = 8bits per pixel + bpc = info.get("bpc", 1) + + if bpc not in (1, 2): + msg = "Unsupported number of bytes per pixel" + raise ValueError(msg) + + # Flip the image, since the origin of SGI file is the bottom-left corner + orientation = -1 + # Define the file as SGI File Format + magic_number = 474 + # Run-Length Encoding Compression - Unsupported at this time + rle = 0 + + # Number of dimensions (x,y,z) + dim = 3 + # X Dimension = width / Y Dimension = height + x, y = im.size + if im.mode == "L" and y == 1: + dim = 1 + elif im.mode == "L": + dim = 2 + # Z Dimension: Number of channels + z = len(im.mode) + + if dim == 1 or dim == 2: + z = 1 + + # assert we've got the right number of bands. + if len(im.getbands()) != z: + msg = f"incorrect number of bands in SGI write: {z} vs {len(im.getbands())}" + raise ValueError(msg) + + # Minimum Byte value + pinmin = 0 + # Maximum Byte value (255 = 8bits per pixel) + pinmax = 255 + # Image name (79 characters max, truncated below in write) + img_name = os.path.splitext(os.path.basename(filename))[0] + img_name = img_name.encode("ascii", "ignore") + # Standard representation of pixel in the file + colormap = 0 + fp.write(struct.pack(">h", magic_number)) + fp.write(o8(rle)) + fp.write(o8(bpc)) + fp.write(struct.pack(">H", dim)) + fp.write(struct.pack(">H", x)) + fp.write(struct.pack(">H", y)) + fp.write(struct.pack(">H", z)) + fp.write(struct.pack(">l", pinmin)) + fp.write(struct.pack(">l", pinmax)) + fp.write(struct.pack("4s", b"")) # dummy + fp.write(struct.pack("79s", img_name)) # truncates to 79 chars + fp.write(struct.pack("s", b"")) # force null byte after img_name + fp.write(struct.pack(">l", colormap)) + fp.write(struct.pack("404s", b"")) # dummy + + rawmode = "L" + if bpc == 2: + rawmode = "L;16B" + + for channel in im.split(): + fp.write(channel.tobytes("raw", rawmode, 0, orientation)) + + if hasattr(fp, "flush"): + fp.flush() + + +class SGI16Decoder(ImageFile.PyDecoder): + _pulls_fd = True + + def decode(self, buffer): + rawmode, stride, orientation = self.args + pagesize = self.state.xsize * self.state.ysize + zsize = len(self.mode) + self.fd.seek(512) + + for band in range(zsize): + channel = Image.new("L", (self.state.xsize, self.state.ysize)) + channel.frombytes( + self.fd.read(2 * pagesize), "raw", "L;16B", stride, orientation + ) + self.im.putband(channel.im, band) + + return -1, 0 + + +# +# registry + + +Image.register_decoder("SGI16", SGI16Decoder) +Image.register_open(SgiImageFile.format, SgiImageFile, _accept) +Image.register_save(SgiImageFile.format, _save) +Image.register_mime(SgiImageFile.format, "image/sgi") + +Image.register_extensions(SgiImageFile.format, [".bw", ".rgb", ".rgba", ".sgi"]) + +# End of file diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py new file mode 100644 index 0000000..5614957 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SpiderImagePlugin.py @@ -0,0 +1,318 @@ +# +# The Python Imaging Library. +# +# SPIDER image file handling +# +# History: +# 2004-08-02 Created BB +# 2006-03-02 added save method +# 2006-03-13 added support for stack images +# +# Copyright (c) 2004 by Health Research Inc. (HRI) RENSSELAER, NY 12144. +# Copyright (c) 2004 by William Baxter. +# Copyright (c) 2004 by Secret Labs AB. +# Copyright (c) 2004 by Fredrik Lundh. +# + +## +# Image plugin for the Spider image format. This format is used +# by the SPIDER software, in processing image data from electron +# microscopy and tomography. +## + +# +# SpiderImagePlugin.py +# +# The Spider image format is used by SPIDER software, in processing +# image data from electron microscopy and tomography. +# +# Spider home page: +# https://spider.wadsworth.org/spider_doc/spider/docs/spider.html +# +# Details about the Spider image format: +# https://spider.wadsworth.org/spider_doc/spider/docs/image_doc.html +# +import os +import struct +import sys + +from . import Image, ImageFile + + +def isInt(f): + try: + i = int(f) + if f - i == 0: + return 1 + else: + return 0 + except (ValueError, OverflowError): + return 0 + + +iforms = [1, 3, -11, -12, -21, -22] + + +# There is no magic number to identify Spider files, so just check a +# series of header locations to see if they have reasonable values. +# Returns no. of bytes in the header, if it is a valid Spider header, +# otherwise returns 0 + + +def isSpiderHeader(t): + h = (99,) + t # add 1 value so can use spider header index start=1 + # header values 1,2,5,12,13,22,23 should be integers + for i in [1, 2, 5, 12, 13, 22, 23]: + if not isInt(h[i]): + return 0 + # check iform + iform = int(h[5]) + if iform not in iforms: + return 0 + # check other header values + labrec = int(h[13]) # no. records in file header + labbyt = int(h[22]) # total no. of bytes in header + lenbyt = int(h[23]) # record length in bytes + if labbyt != (labrec * lenbyt): + return 0 + # looks like a valid header + return labbyt + + +def isSpiderImage(filename): + with open(filename, "rb") as fp: + f = fp.read(92) # read 23 * 4 bytes + t = struct.unpack(">23f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + t = struct.unpack("<23f", f) # little-endian + hdrlen = isSpiderHeader(t) + return hdrlen + + +class SpiderImageFile(ImageFile.ImageFile): + format = "SPIDER" + format_description = "Spider 2D image" + _close_exclusive_fp_after_loading = False + + def _open(self): + # check header + n = 27 * 4 # read 27 float values + f = self.fp.read(n) + + try: + self.bigendian = 1 + t = struct.unpack(">27f", f) # try big-endian first + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + self.bigendian = 0 + t = struct.unpack("<27f", f) # little-endian + hdrlen = isSpiderHeader(t) + if hdrlen == 0: + msg = "not a valid Spider file" + raise SyntaxError(msg) + except struct.error as e: + msg = "not a valid Spider file" + raise SyntaxError(msg) from e + + h = (99,) + t # add 1 value : spider header index starts at 1 + iform = int(h[5]) + if iform != 1: + msg = "not a Spider 2D image" + raise SyntaxError(msg) + + self._size = int(h[12]), int(h[2]) # size in pixels (width, height) + self.istack = int(h[24]) + self.imgnumber = int(h[27]) + + if self.istack == 0 and self.imgnumber == 0: + # stk=0, img=0: a regular 2D image + offset = hdrlen + self._nimages = 1 + elif self.istack > 0 and self.imgnumber == 0: + # stk>0, img=0: Opening the stack for the first time + self.imgbytes = int(h[12]) * int(h[2]) * 4 + self.hdrlen = hdrlen + self._nimages = int(h[26]) + # Point to the first image in the stack + offset = hdrlen * 2 + self.imgnumber = 1 + elif self.istack == 0 and self.imgnumber > 0: + # stk=0, img>0: an image within the stack + offset = hdrlen + self.stkoffset + self.istack = 2 # So Image knows it's still a stack + else: + msg = "inconsistent stack header values" + raise SyntaxError(msg) + + if self.bigendian: + self.rawmode = "F;32BF" + else: + self.rawmode = "F;32F" + self.mode = "F" + + self.tile = [("raw", (0, 0) + self.size, offset, (self.rawmode, 0, 1))] + self._fp = self.fp # FIXME: hack + + @property + def n_frames(self): + return self._nimages + + @property + def is_animated(self): + return self._nimages > 1 + + # 1st image index is zero (although SPIDER imgnumber starts at 1) + def tell(self): + if self.imgnumber < 1: + return 0 + else: + return self.imgnumber - 1 + + def seek(self, frame): + if self.istack == 0: + msg = "attempt to seek in a non-stack file" + raise EOFError(msg) + if not self._seek_check(frame): + return + self.stkoffset = self.hdrlen + frame * (self.hdrlen + self.imgbytes) + self.fp = self._fp + self.fp.seek(self.stkoffset) + self._open() + + # returns a byte image after rescaling to 0..255 + def convert2byte(self, depth=255): + (minimum, maximum) = self.getextrema() + m = 1 + if maximum != minimum: + m = depth / (maximum - minimum) + b = -m * minimum + return self.point(lambda i, m=m, b=b: i * m + b).convert("L") + + # returns a ImageTk.PhotoImage object, after rescaling to 0..255 + def tkPhotoImage(self): + from . import ImageTk + + return ImageTk.PhotoImage(self.convert2byte(), palette=256) + + +# -------------------------------------------------------------------- +# Image series + + +# given a list of filenames, return a list of images +def loadImageSeries(filelist=None): + """create a list of :py:class:`~PIL.Image.Image` objects for use in a montage""" + if filelist is None or len(filelist) < 1: + return + + imglist = [] + for img in filelist: + if not os.path.exists(img): + print(f"unable to find {img}") + continue + try: + with Image.open(img) as im: + im = im.convert2byte() + except Exception: + if not isSpiderImage(img): + print(img + " is not a Spider image file") + continue + im.info["filename"] = img + imglist.append(im) + return imglist + + +# -------------------------------------------------------------------- +# For saving images in Spider format + + +def makeSpiderHeader(im): + nsam, nrow = im.size + lenbyt = nsam * 4 # There are labrec records in the header + labrec = int(1024 / lenbyt) + if 1024 % lenbyt != 0: + labrec += 1 + labbyt = labrec * lenbyt + nvalues = int(labbyt / 4) + if nvalues < 23: + return [] + + hdr = [] + for i in range(nvalues): + hdr.append(0.0) + + # NB these are Fortran indices + hdr[1] = 1.0 # nslice (=1 for an image) + hdr[2] = float(nrow) # number of rows per slice + hdr[3] = float(nrow) # number of records in the image + hdr[5] = 1.0 # iform for 2D image + hdr[12] = float(nsam) # number of pixels per line + hdr[13] = float(labrec) # number of records in file header + hdr[22] = float(labbyt) # total number of bytes in header + hdr[23] = float(lenbyt) # record length in bytes + + # adjust for Fortran indexing + hdr = hdr[1:] + hdr.append(0.0) + # pack binary data into a string + return [struct.pack("f", v) for v in hdr] + + +def _save(im, fp, filename): + if im.mode[0] != "F": + im = im.convert("F") + + hdr = makeSpiderHeader(im) + if len(hdr) < 256: + msg = "Error creating Spider header" + raise OSError(msg) + + # write the SPIDER header + fp.writelines(hdr) + + rawmode = "F;32NF" # 32-bit native floating point + ImageFile._save(im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, 1))]) + + +def _save_spider(im, fp, filename): + # get the filename extension and register it with Image + ext = os.path.splitext(filename)[1] + Image.register_extension(SpiderImageFile.format, ext) + _save(im, fp, filename) + + +# -------------------------------------------------------------------- + + +Image.register_open(SpiderImageFile.format, SpiderImageFile) +Image.register_save(SpiderImageFile.format, _save_spider) + +if __name__ == "__main__": + if len(sys.argv) < 2: + print("Syntax: python3 SpiderImagePlugin.py [infile] [outfile]") + sys.exit() + + filename = sys.argv[1] + if not isSpiderImage(filename): + print("input image must be in Spider format") + sys.exit() + + with Image.open(filename) as im: + print("image: " + str(im)) + print("format: " + str(im.format)) + print("size: " + str(im.size)) + print("mode: " + str(im.mode)) + print("max, min: ", end=" ") + print(im.getextrema()) + + if len(sys.argv) > 2: + outfile = sys.argv[2] + + # perform some image operation + im = im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + print( + f"saving a flipped version of {os.path.basename(filename)} " + f"as {outfile} " + ) + im.save(outfile, SpiderImageFile.format) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SunImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SunImagePlugin.py new file mode 100644 index 0000000..6712583 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/SunImagePlugin.py @@ -0,0 +1,139 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Sun image file handling +# +# History: +# 1995-09-10 fl Created +# 1996-05-28 fl Fixed 32-bit alignment +# 1998-12-29 fl Import ImagePalette module +# 2001-12-18 fl Fixed palette loading (from Jean-Claude Rimbault) +# +# Copyright (c) 1997-2001 by Secret Labs AB +# Copyright (c) 1995-1996 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + + +from . import Image, ImageFile, ImagePalette +from ._binary import i32be as i32 + + +def _accept(prefix): + return len(prefix) >= 4 and i32(prefix) == 0x59A66A95 + + +## +# Image plugin for Sun raster files. + + +class SunImageFile(ImageFile.ImageFile): + format = "SUN" + format_description = "Sun Raster File" + + def _open(self): + # The Sun Raster file header is 32 bytes in length + # and has the following format: + + # typedef struct _SunRaster + # { + # DWORD MagicNumber; /* Magic (identification) number */ + # DWORD Width; /* Width of image in pixels */ + # DWORD Height; /* Height of image in pixels */ + # DWORD Depth; /* Number of bits per pixel */ + # DWORD Length; /* Size of image data in bytes */ + # DWORD Type; /* Type of raster file */ + # DWORD ColorMapType; /* Type of color map */ + # DWORD ColorMapLength; /* Size of the color map in bytes */ + # } SUNRASTER; + + # HEAD + s = self.fp.read(32) + if not _accept(s): + msg = "not an SUN raster file" + raise SyntaxError(msg) + + offset = 32 + + self._size = i32(s, 4), i32(s, 8) + + depth = i32(s, 12) + # data_length = i32(s, 16) # unreliable, ignore. + file_type = i32(s, 20) + palette_type = i32(s, 24) # 0: None, 1: RGB, 2: Raw/arbitrary + palette_length = i32(s, 28) + + if depth == 1: + self.mode, rawmode = "1", "1;I" + elif depth == 4: + self.mode, rawmode = "L", "L;4" + elif depth == 8: + self.mode = rawmode = "L" + elif depth == 24: + if file_type == 3: + self.mode, rawmode = "RGB", "RGB" + else: + self.mode, rawmode = "RGB", "BGR" + elif depth == 32: + if file_type == 3: + self.mode, rawmode = "RGB", "RGBX" + else: + self.mode, rawmode = "RGB", "BGRX" + else: + msg = "Unsupported Mode/Bit Depth" + raise SyntaxError(msg) + + if palette_length: + if palette_length > 1024: + msg = "Unsupported Color Palette Length" + raise SyntaxError(msg) + + if palette_type != 1: + msg = "Unsupported Palette Type" + raise SyntaxError(msg) + + offset = offset + palette_length + self.palette = ImagePalette.raw("RGB;L", self.fp.read(palette_length)) + if self.mode == "L": + self.mode = "P" + rawmode = rawmode.replace("L", "P") + + # 16 bit boundaries on stride + stride = ((self.size[0] * depth + 15) // 16) * 2 + + # file type: Type is the version (or flavor) of the bitmap + # file. The following values are typically found in the Type + # field: + # 0000h Old + # 0001h Standard + # 0002h Byte-encoded + # 0003h RGB format + # 0004h TIFF format + # 0005h IFF format + # FFFFh Experimental + + # Old and standard are the same, except for the length tag. + # byte-encoded is run-length-encoded + # RGB looks similar to standard, but RGB byte order + # TIFF and IFF mean that they were converted from T/IFF + # Experimental means that it's something else. + # (https://www.fileformat.info/format/sunraster/egff.htm) + + if file_type in (0, 1, 3, 4, 5): + self.tile = [("raw", (0, 0) + self.size, offset, (rawmode, stride))] + elif file_type == 2: + self.tile = [("sun_rle", (0, 0) + self.size, offset, rawmode)] + else: + msg = "Unsupported Sun Raster file type" + raise SyntaxError(msg) + + +# +# registry + + +Image.register_open(SunImageFile.format, SunImageFile, _accept) + +Image.register_extension(SunImageFile.format, ".ras") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TarIO.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TarIO.py new file mode 100644 index 0000000..32928f6 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TarIO.py @@ -0,0 +1,66 @@ +# +# The Python Imaging Library. +# $Id$ +# +# read files from within a tar file +# +# History: +# 95-06-18 fl Created +# 96-05-28 fl Open files in binary mode +# +# Copyright (c) Secret Labs AB 1997. +# Copyright (c) Fredrik Lundh 1995-96. +# +# See the README file for information on usage and redistribution. +# + +import io + +from . import ContainerIO + + +class TarIO(ContainerIO.ContainerIO): + """A file object that provides read access to a given member of a TAR file.""" + + def __init__(self, tarfile, file): + """ + Create file object. + + :param tarfile: Name of TAR file. + :param file: Name of member file. + """ + self.fh = open(tarfile, "rb") + + while True: + s = self.fh.read(512) + if len(s) != 512: + msg = "unexpected end of tar file" + raise OSError(msg) + + name = s[:100].decode("utf-8") + i = name.find("\0") + if i == 0: + msg = "cannot find subfile" + raise OSError(msg) + if i > 0: + name = name[:i] + + size = int(s[124:135], 8) + + if file == name: + break + + self.fh.seek((size + 511) & (~511), io.SEEK_CUR) + + # Open region + super().__init__(self.fh, self.fh.tell(), size) + + # Context manager support + def __enter__(self): + return self + + def __exit__(self, *args): + self.close() + + def close(self): + self.fh.close() diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py new file mode 100644 index 0000000..67dfc3d --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TgaImagePlugin.py @@ -0,0 +1,255 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TGA file handling +# +# History: +# 95-09-01 fl created (reads 24-bit files only) +# 97-01-04 fl support more TGA versions, including compressed images +# 98-07-04 fl fixed orientation and alpha layer bugs +# 98-09-11 fl fixed orientation for runlength decoder +# +# Copyright (c) Secret Labs AB 1997-98. +# Copyright (c) Fredrik Lundh 1995-97. +# +# See the README file for information on usage and redistribution. +# + + +import warnings + +from . import Image, ImageFile, ImagePalette +from ._binary import i16le as i16 +from ._binary import o8 +from ._binary import o16le as o16 + +# +# -------------------------------------------------------------------- +# Read RGA file + + +MODES = { + # map imagetype/depth to rawmode + (1, 8): "P", + (3, 1): "1", + (3, 8): "L", + (3, 16): "LA", + (2, 16): "BGR;5", + (2, 24): "BGR", + (2, 32): "BGRA", +} + + +## +# Image plugin for Targa files. + + +class TgaImageFile(ImageFile.ImageFile): + format = "TGA" + format_description = "Targa" + + def _open(self): + # process header + s = self.fp.read(18) + + id_len = s[0] + + colormaptype = s[1] + imagetype = s[2] + + depth = s[16] + + flags = s[17] + + self._size = i16(s, 12), i16(s, 14) + + # validate header fields + if ( + colormaptype not in (0, 1) + or self.size[0] <= 0 + or self.size[1] <= 0 + or depth not in (1, 8, 16, 24, 32) + ): + msg = "not a TGA file" + raise SyntaxError(msg) + + # image mode + if imagetype in (3, 11): + self.mode = "L" + if depth == 1: + self.mode = "1" # ??? + elif depth == 16: + self.mode = "LA" + elif imagetype in (1, 9): + self.mode = "P" + elif imagetype in (2, 10): + self.mode = "RGB" + if depth == 32: + self.mode = "RGBA" + else: + msg = "unknown TGA mode" + raise SyntaxError(msg) + + # orientation + orientation = flags & 0x30 + self._flip_horizontally = orientation in [0x10, 0x30] + if orientation in [0x20, 0x30]: + orientation = 1 + elif orientation in [0, 0x10]: + orientation = -1 + else: + msg = "unknown TGA orientation" + raise SyntaxError(msg) + + self.info["orientation"] = orientation + + if imagetype & 8: + self.info["compression"] = "tga_rle" + + if id_len: + self.info["id_section"] = self.fp.read(id_len) + + if colormaptype: + # read palette + start, size, mapdepth = i16(s, 3), i16(s, 5), s[7] + if mapdepth == 16: + self.palette = ImagePalette.raw( + "BGR;15", b"\0" * 2 * start + self.fp.read(2 * size) + ) + elif mapdepth == 24: + self.palette = ImagePalette.raw( + "BGR", b"\0" * 3 * start + self.fp.read(3 * size) + ) + elif mapdepth == 32: + self.palette = ImagePalette.raw( + "BGRA", b"\0" * 4 * start + self.fp.read(4 * size) + ) + + # setup tile descriptor + try: + rawmode = MODES[(imagetype & 7, depth)] + if imagetype & 8: + # compressed + self.tile = [ + ( + "tga_rle", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, orientation, depth), + ) + ] + else: + self.tile = [ + ( + "raw", + (0, 0) + self.size, + self.fp.tell(), + (rawmode, 0, orientation), + ) + ] + except KeyError: + pass # cannot decode + + def load_end(self): + if self._flip_horizontally: + self.im = self.im.transpose(Image.Transpose.FLIP_LEFT_RIGHT) + + +# +# -------------------------------------------------------------------- +# Write TGA file + + +SAVE = { + "1": ("1", 1, 0, 3), + "L": ("L", 8, 0, 3), + "LA": ("LA", 16, 0, 3), + "P": ("P", 8, 1, 1), + "RGB": ("BGR", 24, 0, 2), + "RGBA": ("BGRA", 32, 0, 2), +} + + +def _save(im, fp, filename): + try: + rawmode, bits, colormaptype, imagetype = SAVE[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TGA" + raise OSError(msg) from e + + if "rle" in im.encoderinfo: + rle = im.encoderinfo["rle"] + else: + compression = im.encoderinfo.get("compression", im.info.get("compression")) + rle = compression == "tga_rle" + if rle: + imagetype += 8 + + id_section = im.encoderinfo.get("id_section", im.info.get("id_section", "")) + id_len = len(id_section) + if id_len > 255: + id_len = 255 + id_section = id_section[:255] + warnings.warn("id_section has been trimmed to 255 characters") + + if colormaptype: + palette = im.im.getpalette("RGB", "BGR") + colormaplength, colormapentry = len(palette) // 3, 24 + else: + colormaplength, colormapentry = 0, 0 + + if im.mode in ("LA", "RGBA"): + flags = 8 + else: + flags = 0 + + orientation = im.encoderinfo.get("orientation", im.info.get("orientation", -1)) + if orientation > 0: + flags = flags | 0x20 + + fp.write( + o8(id_len) + + o8(colormaptype) + + o8(imagetype) + + o16(0) # colormapfirst + + o16(colormaplength) + + o8(colormapentry) + + o16(0) + + o16(0) + + o16(im.size[0]) + + o16(im.size[1]) + + o8(bits) + + o8(flags) + ) + + if id_section: + fp.write(id_section) + + if colormaptype: + fp.write(palette) + + if rle: + ImageFile._save( + im, fp, [("tga_rle", (0, 0) + im.size, 0, (rawmode, orientation))] + ) + else: + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, 0, (rawmode, 0, orientation))] + ) + + # write targa version 2 footer + fp.write(b"\000" * 8 + b"TRUEVISION-XFILE." + b"\000") + + +# +# -------------------------------------------------------------------- +# Registry + + +Image.register_open(TgaImageFile.format, TgaImageFile) +Image.register_save(TgaImageFile.format, _save) + +Image.register_extensions(TgaImageFile.format, [".tga", ".icb", ".vda", ".vst"]) + +Image.register_mime(TgaImageFile.format, "image/x-tga") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py new file mode 100644 index 0000000..d514882 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffImagePlugin.py @@ -0,0 +1,2163 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF file handling +# +# TIFF is a flexible, if somewhat aged, image file format originally +# defined by Aldus. Although TIFF supports a wide variety of pixel +# layouts and compression methods, the name doesn't really stand for +# "thousands of incompatible file formats," it just feels that way. +# +# To read TIFF data from a stream, the stream must be seekable. For +# progressive decoding, make sure to use TIFF files where the tag +# directory is placed first in the file. +# +# History: +# 1995-09-01 fl Created +# 1996-05-04 fl Handle JPEGTABLES tag +# 1996-05-18 fl Fixed COLORMAP support +# 1997-01-05 fl Fixed PREDICTOR support +# 1997-08-27 fl Added support for rational tags (from Perry Stoll) +# 1998-01-10 fl Fixed seek/tell (from Jan Blom) +# 1998-07-15 fl Use private names for internal variables +# 1999-06-13 fl Rewritten for PIL 1.0 (1.0) +# 2000-10-11 fl Additional fixes for Python 2.0 (1.1) +# 2001-04-17 fl Fixed rewind support (seek to frame 0) (1.2) +# 2001-05-12 fl Added write support for more tags (from Greg Couch) (1.3) +# 2001-12-18 fl Added workaround for broken Matrox library +# 2002-01-18 fl Don't mess up if photometric tag is missing (D. Alan Stewart) +# 2003-05-19 fl Check FILLORDER tag +# 2003-09-26 fl Added RGBa support +# 2004-02-24 fl Added DPI support; fixed rational write support +# 2005-02-07 fl Added workaround for broken Corel Draw 10 files +# 2006-01-09 fl Added support for float/double tags (from Russell Nelson) +# +# Copyright (c) 1997-2006 by Secret Labs AB. All rights reserved. +# Copyright (c) 1995-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# +import io +import itertools +import logging +import math +import os +import struct +import warnings +from collections.abc import MutableMapping +from fractions import Fraction +from numbers import Number, Rational + +from . import ExifTags, Image, ImageFile, ImageOps, ImagePalette, TiffTags +from ._binary import i16be as i16 +from ._binary import i32be as i32 +from ._binary import o8 +from .TiffTags import TYPES + +logger = logging.getLogger(__name__) + +# Set these to true to force use of libtiff for reading or writing. +READ_LIBTIFF = False +WRITE_LIBTIFF = False +IFD_LEGACY_API = True +STRIP_SIZE = 65536 + +II = b"II" # little-endian (Intel style) +MM = b"MM" # big-endian (Motorola style) + +# +# -------------------------------------------------------------------- +# Read TIFF files + +# a few tag names, just to make the code below a bit more readable +IMAGEWIDTH = 256 +IMAGELENGTH = 257 +BITSPERSAMPLE = 258 +COMPRESSION = 259 +PHOTOMETRIC_INTERPRETATION = 262 +FILLORDER = 266 +IMAGEDESCRIPTION = 270 +STRIPOFFSETS = 273 +SAMPLESPERPIXEL = 277 +ROWSPERSTRIP = 278 +STRIPBYTECOUNTS = 279 +X_RESOLUTION = 282 +Y_RESOLUTION = 283 +PLANAR_CONFIGURATION = 284 +RESOLUTION_UNIT = 296 +TRANSFERFUNCTION = 301 +SOFTWARE = 305 +DATE_TIME = 306 +ARTIST = 315 +PREDICTOR = 317 +COLORMAP = 320 +TILEWIDTH = 322 +TILELENGTH = 323 +TILEOFFSETS = 324 +TILEBYTECOUNTS = 325 +SUBIFD = 330 +EXTRASAMPLES = 338 +SAMPLEFORMAT = 339 +JPEGTABLES = 347 +YCBCRSUBSAMPLING = 530 +REFERENCEBLACKWHITE = 532 +COPYRIGHT = 33432 +IPTC_NAA_CHUNK = 33723 # newsphoto properties +PHOTOSHOP_CHUNK = 34377 # photoshop properties +ICCPROFILE = 34675 +EXIFIFD = 34665 +XMP = 700 +JPEGQUALITY = 65537 # pseudo-tag by libtiff + +# https://github.com/imagej/ImageJA/blob/master/src/main/java/ij/io/TiffDecoder.java +IMAGEJ_META_DATA_BYTE_COUNTS = 50838 +IMAGEJ_META_DATA = 50839 + +COMPRESSION_INFO = { + # Compression => pil compression name + 1: "raw", + 2: "tiff_ccitt", + 3: "group3", + 4: "group4", + 5: "tiff_lzw", + 6: "tiff_jpeg", # obsolete + 7: "jpeg", + 8: "tiff_adobe_deflate", + 32771: "tiff_raw_16", # 16-bit padding + 32773: "packbits", + 32809: "tiff_thunderscan", + 32946: "tiff_deflate", + 34676: "tiff_sgilog", + 34677: "tiff_sgilog24", + 34925: "lzma", + 50000: "zstd", + 50001: "webp", +} + +COMPRESSION_INFO_REV = {v: k for k, v in COMPRESSION_INFO.items()} + +OPEN_INFO = { + # (ByteOrder, PhotoInterpretation, SampleFormat, FillOrder, BitsPerSample, + # ExtraSamples) => mode, rawmode + (II, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (MM, 0, (1,), 1, (1,), ()): ("1", "1;I"), + (II, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (MM, 0, (1,), 2, (1,), ()): ("1", "1;IR"), + (II, 1, (1,), 1, (1,), ()): ("1", "1"), + (MM, 1, (1,), 1, (1,), ()): ("1", "1"), + (II, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (MM, 1, (1,), 2, (1,), ()): ("1", "1;R"), + (II, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (MM, 0, (1,), 1, (2,), ()): ("L", "L;2I"), + (II, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (MM, 0, (1,), 2, (2,), ()): ("L", "L;2IR"), + (II, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (MM, 1, (1,), 1, (2,), ()): ("L", "L;2"), + (II, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (MM, 1, (1,), 2, (2,), ()): ("L", "L;2R"), + (II, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (MM, 0, (1,), 1, (4,), ()): ("L", "L;4I"), + (II, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (MM, 0, (1,), 2, (4,), ()): ("L", "L;4IR"), + (II, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (MM, 1, (1,), 1, (4,), ()): ("L", "L;4"), + (II, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (MM, 1, (1,), 2, (4,), ()): ("L", "L;4R"), + (II, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (MM, 0, (1,), 1, (8,), ()): ("L", "L;I"), + (II, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (MM, 0, (1,), 2, (8,), ()): ("L", "L;IR"), + (II, 1, (1,), 1, (8,), ()): ("L", "L"), + (MM, 1, (1,), 1, (8,), ()): ("L", "L"), + (II, 1, (2,), 1, (8,), ()): ("L", "L"), + (MM, 1, (2,), 1, (8,), ()): ("L", "L"), + (II, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (MM, 1, (1,), 2, (8,), ()): ("L", "L;R"), + (II, 1, (1,), 1, (12,), ()): ("I;16", "I;12"), + (II, 0, (1,), 1, (16,), ()): ("I;16", "I;16"), + (II, 1, (1,), 1, (16,), ()): ("I;16", "I;16"), + (MM, 1, (1,), 1, (16,), ()): ("I;16B", "I;16B"), + (II, 1, (1,), 2, (16,), ()): ("I;16", "I;16R"), + (II, 1, (2,), 1, (16,), ()): ("I", "I;16S"), + (MM, 1, (2,), 1, (16,), ()): ("I", "I;16BS"), + (II, 0, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 0, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (32,), ()): ("I", "I;32N"), + (II, 1, (2,), 1, (32,), ()): ("I", "I;32S"), + (MM, 1, (2,), 1, (32,), ()): ("I", "I;32BS"), + (II, 1, (3,), 1, (32,), ()): ("F", "F;32F"), + (MM, 1, (3,), 1, (32,), ()): ("F", "F;32BF"), + (II, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (MM, 1, (1,), 1, (8, 8), (2,)): ("LA", "LA"), + (II, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (MM, 2, (1,), 1, (8, 8, 8), ()): ("RGB", "RGB"), + (II, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (MM, 2, (1,), 2, (8, 8, 8), ()): ("RGB", "RGB;R"), + (II, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (MM, 2, (1,), 1, (8, 8, 8, 8), ()): ("RGBA", "RGBA"), # missing ExtraSamples + (II, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (0,)): ("RGBX", "RGBX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (0, 0)): ("RGBX", "RGBXX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0, 0)): ("RGBX", "RGBXXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (1,)): ("RGBA", "RGBa"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (1, 0)): ("RGBA", "RGBaX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (1, 0, 0)): ("RGBA", "RGBaXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (MM, 2, (1,), 1, (8, 8, 8, 8), (2,)): ("RGBA", "RGBA"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8), (2, 0)): ("RGBA", "RGBAX"), + (II, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (MM, 2, (1,), 1, (8, 8, 8, 8, 8, 8), (2, 0, 0)): ("RGBA", "RGBAXX"), + (II, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (MM, 2, (1,), 1, (8, 8, 8, 8), (999,)): ("RGBA", "RGBA"), # Corel Draw 10 + (II, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16L"), + (MM, 2, (1,), 1, (16, 16, 16), ()): ("RGB", "RGB;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), ()): ("RGBA", "RGBA;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (0,)): ("RGBX", "RGBX;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (1,)): ("RGBA", "RGBa;16B"), + (II, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16L"), + (MM, 2, (1,), 1, (16, 16, 16, 16), (2,)): ("RGBA", "RGBA;16B"), + (II, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (MM, 3, (1,), 1, (1,), ()): ("P", "P;1"), + (II, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (MM, 3, (1,), 2, (1,), ()): ("P", "P;1R"), + (II, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (MM, 3, (1,), 1, (2,), ()): ("P", "P;2"), + (II, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (MM, 3, (1,), 2, (2,), ()): ("P", "P;2R"), + (II, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (MM, 3, (1,), 1, (4,), ()): ("P", "P;4"), + (II, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (MM, 3, (1,), 2, (4,), ()): ("P", "P;4R"), + (II, 3, (1,), 1, (8,), ()): ("P", "P"), + (MM, 3, (1,), 1, (8,), ()): ("P", "P"), + (II, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (MM, 3, (1,), 1, (8, 8), (2,)): ("PA", "PA"), + (II, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (MM, 3, (1,), 2, (8,), ()): ("P", "P;R"), + (II, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (MM, 5, (1,), 1, (8, 8, 8, 8), ()): ("CMYK", "CMYK"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8), (0,)): ("CMYK", "CMYKX"), + (II, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (MM, 5, (1,), 1, (8, 8, 8, 8, 8, 8), (0, 0)): ("CMYK", "CMYKXX"), + (II, 5, (1,), 1, (16, 16, 16, 16), ()): ("CMYK", "CMYK;16L"), + # JPEG compressed images handled by LibTiff and auto-converted to RGBX + # Minimal Baseline TIFF requires YCbCr images to have 3 SamplesPerPixel + (II, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (MM, 6, (1,), 1, (8, 8, 8), ()): ("RGB", "RGBX"), + (II, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), + (MM, 8, (1,), 1, (8, 8, 8), ()): ("LAB", "LAB"), +} + +MAX_SAMPLESPERPIXEL = max(len(key_tp[4]) for key_tp in OPEN_INFO) + +PREFIXES = [ + b"MM\x00\x2A", # Valid TIFF header with big-endian byte order + b"II\x2A\x00", # Valid TIFF header with little-endian byte order + b"MM\x2A\x00", # Invalid TIFF header, assume big-endian + b"II\x00\x2A", # Invalid TIFF header, assume little-endian + b"MM\x00\x2B", # BigTIFF with big-endian byte order + b"II\x2B\x00", # BigTIFF with little-endian byte order +] + + +def _accept(prefix): + return prefix[:4] in PREFIXES + + +def _limit_rational(val, max_val): + inv = abs(val) > 1 + n_d = IFDRational(1 / val if inv else val).limit_rational(max_val) + return n_d[::-1] if inv else n_d + + +def _limit_signed_rational(val, max_val, min_val): + frac = Fraction(val) + n_d = frac.numerator, frac.denominator + + if min(n_d) < min_val: + n_d = _limit_rational(val, abs(min_val)) + + if max(n_d) > max_val: + val = Fraction(*n_d) + n_d = _limit_rational(val, max_val) + + return n_d + + +## +# Wrapper for TIFF IFDs. + +_load_dispatch = {} +_write_dispatch = {} + + +class IFDRational(Rational): + """Implements a rational class where 0/0 is a legal value to match + the in the wild use of exif rationals. + + e.g., DigitalZoomRatio - 0.00/0.00 indicates that no digital zoom was used + """ + + """ If the denominator is 0, store this as a float('nan'), otherwise store + as a fractions.Fraction(). Delegate as appropriate + + """ + + __slots__ = ("_numerator", "_denominator", "_val") + + def __init__(self, value, denominator=1): + """ + :param value: either an integer numerator, a + float/rational/other number, or an IFDRational + :param denominator: Optional integer denominator + """ + if isinstance(value, IFDRational): + self._numerator = value.numerator + self._denominator = value.denominator + self._val = value._val + return + + if isinstance(value, Fraction): + self._numerator = value.numerator + self._denominator = value.denominator + else: + self._numerator = value + self._denominator = denominator + + if denominator == 0: + self._val = float("nan") + elif denominator == 1: + self._val = Fraction(value) + else: + self._val = Fraction(value, denominator) + + @property + def numerator(self): + return self._numerator + + @property + def denominator(self): + return self._denominator + + def limit_rational(self, max_denominator): + """ + + :param max_denominator: Integer, the maximum denominator value + :returns: Tuple of (numerator, denominator) + """ + + if self.denominator == 0: + return self.numerator, self.denominator + + f = self._val.limit_denominator(max_denominator) + return f.numerator, f.denominator + + def __repr__(self): + return str(float(self._val)) + + def __hash__(self): + return self._val.__hash__() + + def __eq__(self, other): + val = self._val + if isinstance(other, IFDRational): + other = other._val + if isinstance(other, float): + val = float(val) + return val == other + + def __getstate__(self): + return [self._val, self._numerator, self._denominator] + + def __setstate__(self, state): + IFDRational.__init__(self, 0) + _val, _numerator, _denominator = state + self._val = _val + self._numerator = _numerator + self._denominator = _denominator + + def _delegate(op): + def delegate(self, *args): + return getattr(self._val, op)(*args) + + return delegate + + """ a = ['add','radd', 'sub', 'rsub', 'mul', 'rmul', + 'truediv', 'rtruediv', 'floordiv', 'rfloordiv', + 'mod','rmod', 'pow','rpow', 'pos', 'neg', + 'abs', 'trunc', 'lt', 'gt', 'le', 'ge', 'bool', + 'ceil', 'floor', 'round'] + print("\n".join("__%s__ = _delegate('__%s__')" % (s,s) for s in a)) + """ + + __add__ = _delegate("__add__") + __radd__ = _delegate("__radd__") + __sub__ = _delegate("__sub__") + __rsub__ = _delegate("__rsub__") + __mul__ = _delegate("__mul__") + __rmul__ = _delegate("__rmul__") + __truediv__ = _delegate("__truediv__") + __rtruediv__ = _delegate("__rtruediv__") + __floordiv__ = _delegate("__floordiv__") + __rfloordiv__ = _delegate("__rfloordiv__") + __mod__ = _delegate("__mod__") + __rmod__ = _delegate("__rmod__") + __pow__ = _delegate("__pow__") + __rpow__ = _delegate("__rpow__") + __pos__ = _delegate("__pos__") + __neg__ = _delegate("__neg__") + __abs__ = _delegate("__abs__") + __trunc__ = _delegate("__trunc__") + __lt__ = _delegate("__lt__") + __gt__ = _delegate("__gt__") + __le__ = _delegate("__le__") + __ge__ = _delegate("__ge__") + __bool__ = _delegate("__bool__") + __ceil__ = _delegate("__ceil__") + __floor__ = _delegate("__floor__") + __round__ = _delegate("__round__") + # Python >= 3.11 + if hasattr(Fraction, "__int__"): + __int__ = _delegate("__int__") + + +class ImageFileDirectory_v2(MutableMapping): + """This class represents a TIFF tag directory. To speed things up, we + don't decode tags unless they're asked for. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v2() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + 'Some Data' + + Individual values are returned as the strings or numbers, sequences are + returned as tuples of the values. + + The tiff metadata type of each item is stored in a dictionary of + tag types in + :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v2.tagtype`. The types + are read from a tiff file, guessed from the type added, or added + manually. + + Data Structures: + + * ``self.tagtype = {}`` + + * Key: numerical TIFF tag number + * Value: integer corresponding to the data type from + :py:data:`.TiffTags.TYPES` + + .. versionadded:: 3.0.0 + + 'Internal' data structures: + + * ``self._tags_v2 = {}`` + + * Key: numerical TIFF tag number + * Value: decoded data, as tuple for multiple values + + * ``self._tagdata = {}`` + + * Key: numerical TIFF tag number + * Value: undecoded byte string from file + + * ``self._tags_v1 = {}`` + + * Key: numerical TIFF tag number + * Value: decoded data in the v1 format + + Tags will be found in the private attributes ``self._tagdata``, and in + ``self._tags_v2`` once decoded. + + ``self.legacy_api`` is a value for internal use, and shouldn't be changed + from outside code. In cooperation with + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1`, if ``legacy_api`` + is true, then decoded tags will be populated into both ``_tags_v1`` and + ``_tags_v2``. ``_tags_v2`` will be used if this IFD is used in the TIFF + save routine. Tags should be read from ``_tags_v1`` if + ``legacy_api == true``. + + """ + + def __init__(self, ifh=b"II\052\0\0\0\0\0", prefix=None, group=None): + """Initialize an ImageFileDirectory. + + To construct an ImageFileDirectory from a real file, pass the 8-byte + magic header to the constructor. To only set the endianness, pass it + as the 'prefix' keyword argument. + + :param ifh: One of the accepted magic headers (cf. PREFIXES); also sets + endianness. + :param prefix: Override the endianness of the file. + """ + if not _accept(ifh): + msg = f"not a TIFF file (header {repr(ifh)} not valid)" + raise SyntaxError(msg) + self._prefix = prefix if prefix is not None else ifh[:2] + if self._prefix == MM: + self._endian = ">" + elif self._prefix == II: + self._endian = "<" + else: + msg = "not a TIFF IFD" + raise SyntaxError(msg) + self._bigtiff = ifh[2] == 43 + self.group = group + self.tagtype = {} + """ Dictionary of tag types """ + self.reset() + (self.next,) = ( + self._unpack("Q", ifh[8:]) if self._bigtiff else self._unpack("L", ifh[4:]) + ) + self._legacy_api = False + + prefix = property(lambda self: self._prefix) + offset = property(lambda self: self._offset) + legacy_api = property(lambda self: self._legacy_api) + + @legacy_api.setter + def legacy_api(self, value): + msg = "Not allowing setting of legacy api" + raise Exception(msg) + + def reset(self): + self._tags_v1 = {} # will remain empty if legacy_api is false + self._tags_v2 = {} # main tag storage + self._tagdata = {} + self.tagtype = {} # added 2008-06-05 by Florian Hoech + self._next = None + self._offset = None + + def __str__(self): + return str(dict(self)) + + def named(self): + """ + :returns: dict of name|key: value + + Returns the complete tag dictionary, with named tags where possible. + """ + return { + TiffTags.lookup(code, self.group).name: value + for code, value in self.items() + } + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v2)) + + def __getitem__(self, tag): + if tag not in self._tags_v2: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + self[tag] = handler(self, data, self.legacy_api) # check type + val = self._tags_v2[tag] + if self.legacy_api and not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + def __contains__(self, tag): + return tag in self._tags_v2 or tag in self._tagdata + + def __setitem__(self, tag, value): + self._setitem(tag, value, self.legacy_api) + + def _setitem(self, tag, value, legacy_api): + basetypes = (Number, bytes, str) + + info = TiffTags.lookup(tag, self.group) + values = [value] if isinstance(value, basetypes) else value + + if tag not in self.tagtype: + if info.type: + self.tagtype[tag] = info.type + else: + self.tagtype[tag] = TiffTags.UNDEFINED + if all(isinstance(v, IFDRational) for v in values): + self.tagtype[tag] = ( + TiffTags.RATIONAL + if all(v >= 0 for v in values) + else TiffTags.SIGNED_RATIONAL + ) + elif all(isinstance(v, int) for v in values): + if all(0 <= v < 2**16 for v in values): + self.tagtype[tag] = TiffTags.SHORT + elif all(-(2**15) < v < 2**15 for v in values): + self.tagtype[tag] = TiffTags.SIGNED_SHORT + else: + self.tagtype[tag] = ( + TiffTags.LONG + if all(v >= 0 for v in values) + else TiffTags.SIGNED_LONG + ) + elif all(isinstance(v, float) for v in values): + self.tagtype[tag] = TiffTags.DOUBLE + elif all(isinstance(v, str) for v in values): + self.tagtype[tag] = TiffTags.ASCII + elif all(isinstance(v, bytes) for v in values): + self.tagtype[tag] = TiffTags.BYTE + + if self.tagtype[tag] == TiffTags.UNDEFINED: + values = [ + v.encode("ascii", "replace") if isinstance(v, str) else v + for v in values + ] + elif self.tagtype[tag] == TiffTags.RATIONAL: + values = [float(v) if isinstance(v, int) else v for v in values] + + is_ifd = self.tagtype[tag] == TiffTags.LONG and isinstance(values, dict) + if not is_ifd: + values = tuple(info.cvt_enum(value) for value in values) + + dest = self._tags_v1 if legacy_api else self._tags_v2 + + # Three branches: + # Spec'd length == 1, Actual length 1, store as element + # Spec'd length == 1, Actual > 1, Warn and truncate. Formerly barfed. + # No Spec, Actual length 1, Formerly (<4.2) returned a 1 element tuple. + # Don't mess with the legacy api, since it's frozen. + if not is_ifd and ( + (info.length == 1) + or self.tagtype[tag] == TiffTags.BYTE + or (info.length is None and len(values) == 1 and not legacy_api) + ): + # Don't mess with the legacy api, since it's frozen. + if legacy_api and self.tagtype[tag] in [ + TiffTags.RATIONAL, + TiffTags.SIGNED_RATIONAL, + ]: # rationals + values = (values,) + try: + (dest[tag],) = values + except ValueError: + # We've got a builtin tag with 1 expected entry + warnings.warn( + f"Metadata Warning, tag {tag} had too many entries: " + f"{len(values)}, expected 1" + ) + dest[tag] = values[0] + + else: + # Spec'd length > 1 or undefined + # Unspec'd, and length > 1 + dest[tag] = values + + def __delitem__(self, tag): + self._tags_v2.pop(tag, None) + self._tags_v1.pop(tag, None) + self._tagdata.pop(tag, None) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v2)) + + def _unpack(self, fmt, data): + return struct.unpack(self._endian + fmt, data) + + def _pack(self, fmt, *values): + return struct.pack(self._endian + fmt, *values) + + def _register_loader(idx, size): + def decorator(func): + from .TiffTags import TYPES + + if func.__name__.startswith("load_"): + TYPES[idx] = func.__name__[5:].replace("_", " ") + _load_dispatch[idx] = size, func # noqa: F821 + return func + + return decorator + + def _register_writer(idx): + def decorator(func): + _write_dispatch[idx] = func # noqa: F821 + return func + + return decorator + + def _register_basic(idx_fmt_name): + from .TiffTags import TYPES + + idx, fmt, name = idx_fmt_name + TYPES[idx] = name + size = struct.calcsize("=" + fmt) + _load_dispatch[idx] = ( # noqa: F821 + size, + lambda self, data, legacy_api=True: ( + self._unpack(f"{len(data) // size}{fmt}", data) + ), + ) + _write_dispatch[idx] = lambda self, *values: ( # noqa: F821 + b"".join(self._pack(fmt, value) for value in values) + ) + + list( + map( + _register_basic, + [ + (TiffTags.SHORT, "H", "short"), + (TiffTags.LONG, "L", "long"), + (TiffTags.SIGNED_BYTE, "b", "signed byte"), + (TiffTags.SIGNED_SHORT, "h", "signed short"), + (TiffTags.SIGNED_LONG, "l", "signed long"), + (TiffTags.FLOAT, "f", "float"), + (TiffTags.DOUBLE, "d", "double"), + (TiffTags.IFD, "L", "long"), + (TiffTags.LONG8, "Q", "long8"), + ], + ) + ) + + @_register_loader(1, 1) # Basic type, except for the legacy API. + def load_byte(self, data, legacy_api=True): + return data + + @_register_writer(1) # Basic type, except for the legacy API. + def write_byte(self, data): + if isinstance(data, IFDRational): + data = int(data) + if isinstance(data, int): + data = bytes((data,)) + return data + + @_register_loader(2, 1) + def load_string(self, data, legacy_api=True): + if data.endswith(b"\0"): + data = data[:-1] + return data.decode("latin-1", "replace") + + @_register_writer(2) + def write_string(self, value): + # remerge of https://github.com/python-pillow/Pillow/pull/1416 + if isinstance(value, int): + value = str(value) + if not isinstance(value, bytes): + value = value.encode("ascii", "replace") + return value + b"\0" + + @_register_loader(5, 8) + def load_rational(self, data, legacy_api=True): + vals = self._unpack(f"{len(data) // 4}L", data) + + def combine(a, b): + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(5) + def write_rational(self, *values): + return b"".join( + self._pack("2L", *_limit_rational(frac, 2**32 - 1)) for frac in values + ) + + @_register_loader(7, 1) + def load_undefined(self, data, legacy_api=True): + return data + + @_register_writer(7) + def write_undefined(self, value): + if isinstance(value, int): + value = str(value).encode("ascii", "replace") + return value + + @_register_loader(10, 8) + def load_signed_rational(self, data, legacy_api=True): + vals = self._unpack(f"{len(data) // 4}l", data) + + def combine(a, b): + return (a, b) if legacy_api else IFDRational(a, b) + + return tuple(combine(num, denom) for num, denom in zip(vals[::2], vals[1::2])) + + @_register_writer(10) + def write_signed_rational(self, *values): + return b"".join( + self._pack("2l", *_limit_signed_rational(frac, 2**31 - 1, -(2**31))) + for frac in values + ) + + def _ensure_read(self, fp, size): + ret = fp.read(size) + if len(ret) != size: + msg = ( + "Corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(ret)}. " + ) + raise OSError(msg) + return ret + + def load(self, fp): + self.reset() + self._offset = fp.tell() + + try: + tag_count = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("H", self._ensure_read(fp, 2)) + )[0] + for i in range(tag_count): + tag, typ, count, data = ( + self._unpack("HHQ8s", self._ensure_read(fp, 20)) + if self._bigtiff + else self._unpack("HHL4s", self._ensure_read(fp, 12)) + ) + + tagname = TiffTags.lookup(tag, self.group).name + typname = TYPES.get(typ, "unknown") + msg = f"tag: {tagname} ({tag}) - type: {typname} ({typ})" + + try: + unit_size, handler = self._load_dispatch[typ] + except KeyError: + logger.debug(msg + f" - unsupported type {typ}") + continue # ignore unsupported type + size = count * unit_size + if size > (8 if self._bigtiff else 4): + here = fp.tell() + (offset,) = self._unpack("Q" if self._bigtiff else "L", data) + msg += f" Tag Location: {here} - Data Location: {offset}" + fp.seek(offset) + data = ImageFile._safe_read(fp, size) + fp.seek(here) + else: + data = data[:size] + + if len(data) != size: + warnings.warn( + "Possibly corrupt EXIF data. " + f"Expecting to read {size} bytes but only got {len(data)}." + f" Skipping tag {tag}" + ) + logger.debug(msg) + continue + + if not data: + logger.debug(msg) + continue + + self._tagdata[tag] = data + self.tagtype[tag] = typ + + msg += " - value: " + ( + "" % size if size > 32 else repr(data) + ) + logger.debug(msg) + + (self.next,) = ( + self._unpack("Q", self._ensure_read(fp, 8)) + if self._bigtiff + else self._unpack("L", self._ensure_read(fp, 4)) + ) + except OSError as msg: + warnings.warn(str(msg)) + return + + def tobytes(self, offset=0): + # FIXME What about tagdata? + result = self._pack("H", len(self._tags_v2)) + + entries = [] + offset = offset + len(result) + len(self._tags_v2) * 12 + 4 + stripoffsets = None + + # pass 1: convert tags to binary format + # always write tags in ascending order + for tag, value in sorted(self._tags_v2.items()): + if tag == STRIPOFFSETS: + stripoffsets = len(entries) + typ = self.tagtype.get(tag) + logger.debug(f"Tag {tag}, Type: {typ}, Value: {repr(value)}") + is_ifd = typ == TiffTags.LONG and isinstance(value, dict) + if is_ifd: + if self._endian == "<": + ifh = b"II\x2A\x00\x08\x00\x00\x00" + else: + ifh = b"MM\x00\x2A\x00\x00\x00\x08" + ifd = ImageFileDirectory_v2(ifh, group=tag) + values = self._tags_v2[tag] + for ifd_tag, ifd_value in values.items(): + ifd[ifd_tag] = ifd_value + data = ifd.tobytes(offset) + else: + values = value if isinstance(value, tuple) else (value,) + data = self._write_dispatch[typ](self, *values) + + tagname = TiffTags.lookup(tag, self.group).name + typname = "ifd" if is_ifd else TYPES.get(typ, "unknown") + msg = f"save: {tagname} ({tag}) - type: {typname} ({typ})" + msg += " - value: " + ( + "" % len(data) if len(data) >= 16 else str(values) + ) + logger.debug(msg) + + # count is sum of lengths for string and arbitrary data + if is_ifd: + count = 1 + elif typ in [TiffTags.BYTE, TiffTags.ASCII, TiffTags.UNDEFINED]: + count = len(data) + else: + count = len(values) + # figure out if data fits into the entry + if len(data) <= 4: + entries.append((tag, typ, count, data.ljust(4, b"\0"), b"")) + else: + entries.append((tag, typ, count, self._pack("L", offset), data)) + offset += (len(data) + 1) // 2 * 2 # pad to word + + # update strip offset data to point beyond auxiliary data + if stripoffsets is not None: + tag, typ, count, value, data = entries[stripoffsets] + if data: + msg = "multistrip support not yet implemented" + raise NotImplementedError(msg) + value = self._pack("L", self._unpack("L", value)[0] + offset) + entries[stripoffsets] = tag, typ, count, value, data + + # pass 2: write entries to file + for tag, typ, count, value, data in entries: + logger.debug(f"{tag} {typ} {count} {repr(value)} {repr(data)}") + result += self._pack("HHL4s", tag, typ, count, value) + + # -- overwrite here for multi-page -- + result += b"\0\0\0\0" # end of entries + + # pass 3: write auxiliary data to file + for tag, typ, count, value, data in entries: + result += data + if len(data) & 1: + result += b"\0" + + return result + + def save(self, fp): + if fp.tell() == 0: # skip TIFF header on subsequent pages + # tiff header -- PIL always starts the first IFD at offset 8 + fp.write(self._prefix + self._pack("HL", 42, 8)) + + offset = fp.tell() + result = self.tobytes(offset) + fp.write(result) + return offset + len(result) + + +ImageFileDirectory_v2._load_dispatch = _load_dispatch +ImageFileDirectory_v2._write_dispatch = _write_dispatch +for idx, name in TYPES.items(): + name = name.replace(" ", "_") + setattr(ImageFileDirectory_v2, "load_" + name, _load_dispatch[idx][1]) + setattr(ImageFileDirectory_v2, "write_" + name, _write_dispatch[idx]) +del _load_dispatch, _write_dispatch, idx, name + + +# Legacy ImageFileDirectory support. +class ImageFileDirectory_v1(ImageFileDirectory_v2): + """This class represents the **legacy** interface to a TIFF tag directory. + + Exposes a dictionary interface of the tags in the directory:: + + ifd = ImageFileDirectory_v1() + ifd[key] = 'Some Data' + ifd.tagtype[key] = TiffTags.ASCII + print(ifd[key]) + ('Some Data',) + + Also contains a dictionary of tag types as read from the tiff image file, + :attr:`~PIL.TiffImagePlugin.ImageFileDirectory_v1.tagtype`. + + Values are returned as a tuple. + + .. deprecated:: 3.0.0 + """ + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self._legacy_api = True + + tags = property(lambda self: self._tags_v1) + tagdata = property(lambda self: self._tagdata) + + # defined in ImageFileDirectory_v2 + tagtype: dict + """Dictionary of tag types""" + + @classmethod + def from_v2(cls, original): + """Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + + """ + + ifd = cls(prefix=original.prefix) + ifd._tagdata = original._tagdata + ifd.tagtype = original.tagtype + ifd.next = original.next # an indicator for multipage tiffs + return ifd + + def to_v2(self): + """Returns an + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + instance with the same data as is contained in the original + :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v1` + instance. + + :returns: :py:class:`~PIL.TiffImagePlugin.ImageFileDirectory_v2` + + """ + + ifd = ImageFileDirectory_v2(prefix=self.prefix) + ifd._tagdata = dict(self._tagdata) + ifd.tagtype = dict(self.tagtype) + ifd._tags_v2 = dict(self._tags_v2) + return ifd + + def __contains__(self, tag): + return tag in self._tags_v1 or tag in self._tagdata + + def __len__(self): + return len(set(self._tagdata) | set(self._tags_v1)) + + def __iter__(self): + return iter(set(self._tagdata) | set(self._tags_v1)) + + def __setitem__(self, tag, value): + for legacy_api in (False, True): + self._setitem(tag, value, legacy_api) + + def __getitem__(self, tag): + if tag not in self._tags_v1: # unpack on the fly + data = self._tagdata[tag] + typ = self.tagtype[tag] + size, handler = self._load_dispatch[typ] + for legacy in (False, True): + self._setitem(tag, handler(self, data, legacy), legacy) + val = self._tags_v1[tag] + if not isinstance(val, (tuple, bytes)): + val = (val,) + return val + + +# undone -- switch this pointer when IFD_LEGACY_API == False +ImageFileDirectory = ImageFileDirectory_v1 + + +## +# Image plugin for TIFF files. + + +class TiffImageFile(ImageFile.ImageFile): + format = "TIFF" + format_description = "Adobe TIFF" + _close_exclusive_fp_after_loading = False + + def __init__(self, fp=None, filename=None): + self.tag_v2 = None + """ Image file directory (tag dictionary) """ + + self.tag = None + """ Legacy tag entries """ + + super().__init__(fp, filename) + + def _open(self): + """Open the first image in a TIFF file""" + + # Header + ifh = self.fp.read(8) + if ifh[2] == 43: + ifh += self.fp.read(8) + + self.tag_v2 = ImageFileDirectory_v2(ifh) + + # legacy IFD entries will be filled in later + self.ifd = None + + # setup frame pointers + self.__first = self.__next = self.tag_v2.next + self.__frame = -1 + self._fp = self.fp + self._frame_pos = [] + self._n_frames = None + + logger.debug("*** TiffImageFile._open ***") + logger.debug(f"- __first: {self.__first}") + logger.debug(f"- ifh: {repr(ifh)}") # Use repr to avoid str(bytes) + + # and load the first frame + self._seek(0) + + @property + def n_frames(self): + if self._n_frames is None: + current = self.tell() + self._seek(len(self._frame_pos)) + while self._n_frames is None: + self._seek(self.tell() + 1) + self.seek(current) + return self._n_frames + + def seek(self, frame): + """Select a given frame as current image""" + if not self._seek_check(frame): + return + self._seek(frame) + # Create a new core image object on second and + # subsequent frames in the image. Image may be + # different size/mode. + Image._decompression_bomb_check(self.size) + self.im = Image.core.new(self.mode, self.size) + + def _seek(self, frame): + self.fp = self._fp + + # reset buffered io handle in case fp + # was passed to libtiff, invalidating the buffer + self.fp.tell() + + while len(self._frame_pos) <= frame: + if not self.__next: + msg = "no more images in TIFF file" + raise EOFError(msg) + logger.debug( + f"Seeking to frame {frame}, on frame {self.__frame}, " + f"__next {self.__next}, location: {self.fp.tell()}" + ) + self.fp.seek(self.__next) + self._frame_pos.append(self.__next) + logger.debug("Loading tags, location: %s" % self.fp.tell()) + self.tag_v2.load(self.fp) + if self.tag_v2.next in self._frame_pos: + # This IFD has already been processed + # Declare this to be the end of the image + self.__next = 0 + else: + self.__next = self.tag_v2.next + if self.__next == 0: + self._n_frames = frame + 1 + if len(self._frame_pos) == 1: + self.is_animated = self.__next != 0 + self.__frame += 1 + self.fp.seek(self._frame_pos[frame]) + self.tag_v2.load(self.fp) + self._reload_exif() + # fill the legacy tag/ifd entries + self.tag = self.ifd = ImageFileDirectory_v1.from_v2(self.tag_v2) + self.__frame = frame + self._setup() + + def tell(self): + """Return the current frame number""" + return self.__frame + + def getxmp(self): + """ + Returns a dictionary containing the XMP tags. + Requires defusedxml to be installed. + + :returns: XMP tags in a dictionary. + """ + return self._getxmp(self.tag_v2[XMP]) if XMP in self.tag_v2 else {} + + def get_photoshop_blocks(self): + """ + Returns a dictionary of Photoshop "Image Resource Blocks". + The keys are the image resource ID. For more information, see + https://www.adobe.com/devnet-apps/photoshop/fileformatashtml/#50577409_pgfId-1037727 + + :returns: Photoshop "Image Resource Blocks" in a dictionary. + """ + blocks = {} + val = self.tag_v2.get(ExifTags.Base.ImageResources) + if val: + while val[:4] == b"8BIM": + id = i16(val[4:6]) + n = math.ceil((val[6] + 1) / 2) * 2 + size = i32(val[6 + n : 10 + n]) + data = val[10 + n : 10 + n + size] + blocks[id] = {"data": data} + + val = val[math.ceil((10 + n + size) / 2) * 2 :] + return blocks + + def load(self): + if self.tile and self.use_load_libtiff: + return self._load_libtiff() + return super().load() + + def load_end(self): + if self._tile_orientation: + method = { + 2: Image.Transpose.FLIP_LEFT_RIGHT, + 3: Image.Transpose.ROTATE_180, + 4: Image.Transpose.FLIP_TOP_BOTTOM, + 5: Image.Transpose.TRANSPOSE, + 6: Image.Transpose.ROTATE_270, + 7: Image.Transpose.TRANSVERSE, + 8: Image.Transpose.ROTATE_90, + }.get(self._tile_orientation) + if method is not None: + self.im = self.im.transpose(method) + self._size = self.im.size + + # allow closing if we're on the first frame, there's no next + # This is the ImageFile.load path only, libtiff specific below. + if not self.is_animated: + self._close_exclusive_fp_after_loading = True + + # reset buffered io handle in case fp + # was passed to libtiff, invalidating the buffer + self.fp.tell() + + # load IFD data from fp before it is closed + exif = self.getexif() + for key in TiffTags.TAGS_V2_GROUPS: + if key not in exif: + continue + exif.get_ifd(key) + + def _load_libtiff(self): + """Overload method triggered when we detect a compressed tiff + Calls out to libtiff""" + + Image.Image.load(self) + + self.load_prepare() + + if not len(self.tile) == 1: + msg = "Not exactly one tile" + raise OSError(msg) + + # (self._compression, (extents tuple), + # 0, (rawmode, self._compression, fp)) + extents = self.tile[0][1] + args = list(self.tile[0][3]) + + # To be nice on memory footprint, if there's a + # file descriptor, use that instead of reading + # into a string in python. + try: + fp = hasattr(self.fp, "fileno") and self.fp.fileno() + # flush the file descriptor, prevents error on pypy 2.4+ + # should also eliminate the need for fp.tell + # in _seek + if hasattr(self.fp, "flush"): + self.fp.flush() + except OSError: + # io.BytesIO have a fileno, but returns an OSError if + # it doesn't use a file descriptor. + fp = False + + if fp: + args[2] = fp + + decoder = Image._getdecoder( + self.mode, "libtiff", tuple(args), self.decoderconfig + ) + try: + decoder.setimage(self.im, extents) + except ValueError as e: + msg = "Couldn't set the image" + raise OSError(msg) from e + + close_self_fp = self._exclusive_fp and not self.is_animated + if hasattr(self.fp, "getvalue"): + # We've got a stringio like thing passed in. Yay for all in memory. + # The decoder needs the entire file in one shot, so there's not + # a lot we can do here other than give it the entire file. + # unless we could do something like get the address of the + # underlying string for stringio. + # + # Rearranging for supporting byteio items, since they have a fileno + # that returns an OSError if there's no underlying fp. Easier to + # deal with here by reordering. + logger.debug("have getvalue. just sending in a string from getvalue") + n, err = decoder.decode(self.fp.getvalue()) + elif fp: + # we've got a actual file on disk, pass in the fp. + logger.debug("have fileno, calling fileno version of the decoder.") + if not close_self_fp: + self.fp.seek(0) + # 4 bytes, otherwise the trace might error out + n, err = decoder.decode(b"fpfp") + else: + # we have something else. + logger.debug("don't have fileno or getvalue. just reading") + self.fp.seek(0) + # UNDONE -- so much for that buffer size thing. + n, err = decoder.decode(self.fp.read()) + + self.tile = [] + self.readonly = 0 + + self.load_end() + + if close_self_fp: + self.fp.close() + self.fp = None # might be shared + + if err < 0: + raise OSError(err) + + return Image.Image.load(self) + + def _setup(self): + """Setup this image object based on current tags""" + + if 0xBC01 in self.tag_v2: + msg = "Windows Media Photo files not yet supported" + raise OSError(msg) + + # extract relevant tags + self._compression = COMPRESSION_INFO[self.tag_v2.get(COMPRESSION, 1)] + self._planar_configuration = self.tag_v2.get(PLANAR_CONFIGURATION, 1) + + # photometric is a required tag, but not everyone is reading + # the specification + photo = self.tag_v2.get(PHOTOMETRIC_INTERPRETATION, 0) + + # old style jpeg compression images most certainly are YCbCr + if self._compression == "tiff_jpeg": + photo = 6 + + fillorder = self.tag_v2.get(FILLORDER, 1) + + logger.debug("*** Summary ***") + logger.debug(f"- compression: {self._compression}") + logger.debug(f"- photometric_interpretation: {photo}") + logger.debug(f"- planar_configuration: {self._planar_configuration}") + logger.debug(f"- fill_order: {fillorder}") + logger.debug(f"- YCbCr subsampling: {self.tag.get(YCBCRSUBSAMPLING)}") + + # size + xsize = int(self.tag_v2.get(IMAGEWIDTH)) + ysize = int(self.tag_v2.get(IMAGELENGTH)) + self._size = xsize, ysize + + logger.debug(f"- size: {self.size}") + + sample_format = self.tag_v2.get(SAMPLEFORMAT, (1,)) + if len(sample_format) > 1 and max(sample_format) == min(sample_format) == 1: + # SAMPLEFORMAT is properly per band, so an RGB image will + # be (1,1,1). But, we don't support per band pixel types, + # and anything more than one band is a uint8. So, just + # take the first element. Revisit this if adding support + # for more exotic images. + sample_format = (1,) + + bps_tuple = self.tag_v2.get(BITSPERSAMPLE, (1,)) + extra_tuple = self.tag_v2.get(EXTRASAMPLES, ()) + if photo in (2, 6, 8): # RGB, YCbCr, LAB + bps_count = 3 + elif photo == 5: # CMYK + bps_count = 4 + else: + bps_count = 1 + bps_count += len(extra_tuple) + bps_actual_count = len(bps_tuple) + samples_per_pixel = self.tag_v2.get( + SAMPLESPERPIXEL, + 3 if self._compression == "tiff_jpeg" and photo in (2, 6) else 1, + ) + + if samples_per_pixel > MAX_SAMPLESPERPIXEL: + # DOS check, samples_per_pixel can be a Long, and we extend the tuple below + logger.error( + "More samples per pixel than can be decoded: %s", samples_per_pixel + ) + msg = "Invalid value for samples per pixel" + raise SyntaxError(msg) + + if samples_per_pixel < bps_actual_count: + # If a file has more values in bps_tuple than expected, + # remove the excess. + bps_tuple = bps_tuple[:samples_per_pixel] + elif samples_per_pixel > bps_actual_count and bps_actual_count == 1: + # If a file has only one value in bps_tuple, when it should have more, + # presume it is the same number of bits for all of the samples. + bps_tuple = bps_tuple * samples_per_pixel + + if len(bps_tuple) != samples_per_pixel: + msg = "unknown data organization" + raise SyntaxError(msg) + + # mode: check photometric interpretation and bits per pixel + key = ( + self.tag_v2.prefix, + photo, + sample_format, + fillorder, + bps_tuple, + extra_tuple, + ) + logger.debug(f"format key: {key}") + try: + self.mode, rawmode = OPEN_INFO[key] + except KeyError as e: + logger.debug("- unsupported format") + msg = "unknown pixel mode" + raise SyntaxError(msg) from e + + logger.debug(f"- raw mode: {rawmode}") + logger.debug(f"- pil mode: {self.mode}") + + self.info["compression"] = self._compression + + xres = self.tag_v2.get(X_RESOLUTION, 1) + yres = self.tag_v2.get(Y_RESOLUTION, 1) + + if xres and yres: + resunit = self.tag_v2.get(RESOLUTION_UNIT) + if resunit == 2: # dots per inch + self.info["dpi"] = (xres, yres) + elif resunit == 3: # dots per centimeter. convert to dpi + self.info["dpi"] = (xres * 2.54, yres * 2.54) + elif resunit is None: # used to default to 1, but now 2) + self.info["dpi"] = (xres, yres) + # For backward compatibility, + # we also preserve the old behavior + self.info["resolution"] = xres, yres + else: # No absolute unit of measurement + self.info["resolution"] = xres, yres + + # build tile descriptors + x = y = layer = 0 + self.tile = [] + self.use_load_libtiff = READ_LIBTIFF or self._compression != "raw" + if self.use_load_libtiff: + # Decoder expects entire file as one tile. + # There's a buffer size limit in load (64k) + # so large g4 images will fail if we use that + # function. + # + # Setup the one tile for the whole image, then + # use the _load_libtiff function. + + # libtiff handles the fillmode for us, so 1;IR should + # actually be 1;I. Including the R double reverses the + # bits, so stripes of the image are reversed. See + # https://github.com/python-pillow/Pillow/issues/279 + if fillorder == 2: + # Replace fillorder with fillorder=1 + key = key[:3] + (1,) + key[4:] + logger.debug(f"format key: {key}") + # this should always work, since all the + # fillorder==2 modes have a corresponding + # fillorder=1 mode + self.mode, rawmode = OPEN_INFO[key] + # libtiff always returns the bytes in native order. + # we're expecting image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if rawmode == "I;16": + rawmode = "I;16N" + if ";16B" in rawmode: + rawmode = rawmode.replace(";16B", ";16N") + if ";16L" in rawmode: + rawmode = rawmode.replace(";16L", ";16N") + + # YCbCr images with new jpeg compression with pixels in one plane + # unpacked straight into RGB values + if ( + photo == 6 + and self._compression == "jpeg" + and self._planar_configuration == 1 + ): + rawmode = "RGB" + + # Offset in the tile tuple is 0, we go from 0,0 to + # w,h, and we only do this once -- eds + a = (rawmode, self._compression, False, self.tag_v2.offset) + self.tile.append(("libtiff", (0, 0, xsize, ysize), 0, a)) + + elif STRIPOFFSETS in self.tag_v2 or TILEOFFSETS in self.tag_v2: + # striped image + if STRIPOFFSETS in self.tag_v2: + offsets = self.tag_v2[STRIPOFFSETS] + h = self.tag_v2.get(ROWSPERSTRIP, ysize) + w = self.size[0] + else: + # tiled image + offsets = self.tag_v2[TILEOFFSETS] + w = self.tag_v2.get(TILEWIDTH) + h = self.tag_v2.get(TILELENGTH) + + for offset in offsets: + if x + w > xsize: + stride = w * sum(bps_tuple) / 8 # bytes per line + else: + stride = 0 + + tile_rawmode = rawmode + if self._planar_configuration == 2: + # each band on it's own layer + tile_rawmode = rawmode[layer] + # adjust stride width accordingly + stride /= bps_count + + a = (tile_rawmode, int(stride), 1) + self.tile.append( + ( + self._compression, + (x, y, min(x + w, xsize), min(y + h, ysize)), + offset, + a, + ) + ) + x = x + w + if x >= self.size[0]: + x, y = 0, y + h + if y >= self.size[1]: + x = y = 0 + layer += 1 + else: + logger.debug("- unsupported data organization") + msg = "unknown data organization" + raise SyntaxError(msg) + + # Fix up info. + if ICCPROFILE in self.tag_v2: + self.info["icc_profile"] = self.tag_v2[ICCPROFILE] + + # fixup palette descriptor + + if self.mode in ["P", "PA"]: + palette = [o8(b // 256) for b in self.tag_v2[COLORMAP]] + self.palette = ImagePalette.raw("RGB;L", b"".join(palette)) + + self._tile_orientation = self.tag_v2.get(ExifTags.Base.Orientation) + + +# +# -------------------------------------------------------------------- +# Write TIFF files + +# little endian is default except for image modes with +# explicit big endian byte-order + +SAVE_INFO = { + # mode => rawmode, byteorder, photometrics, + # sampleformat, bitspersample, extra + "1": ("1", II, 1, 1, (1,), None), + "L": ("L", II, 1, 1, (8,), None), + "LA": ("LA", II, 1, 1, (8, 8), 2), + "P": ("P", II, 3, 1, (8,), None), + "PA": ("PA", II, 3, 1, (8, 8), 2), + "I": ("I;32S", II, 1, 2, (32,), None), + "I;16": ("I;16", II, 1, 1, (16,), None), + "I;16S": ("I;16S", II, 1, 2, (16,), None), + "F": ("F;32F", II, 1, 3, (32,), None), + "RGB": ("RGB", II, 2, 1, (8, 8, 8), None), + "RGBX": ("RGBX", II, 2, 1, (8, 8, 8, 8), 0), + "RGBA": ("RGBA", II, 2, 1, (8, 8, 8, 8), 2), + "CMYK": ("CMYK", II, 5, 1, (8, 8, 8, 8), None), + "YCbCr": ("YCbCr", II, 6, 1, (8, 8, 8), None), + "LAB": ("LAB", II, 8, 1, (8, 8, 8), None), + "I;32BS": ("I;32BS", MM, 1, 2, (32,), None), + "I;16B": ("I;16B", MM, 1, 1, (16,), None), + "I;16BS": ("I;16BS", MM, 1, 2, (16,), None), + "F;32BF": ("F;32BF", MM, 1, 3, (32,), None), +} + + +def _save(im, fp, filename): + try: + rawmode, prefix, photo, format, bits, extra = SAVE_INFO[im.mode] + except KeyError as e: + msg = f"cannot write mode {im.mode} as TIFF" + raise OSError(msg) from e + + ifd = ImageFileDirectory_v2(prefix=prefix) + + encoderinfo = im.encoderinfo + encoderconfig = im.encoderconfig + try: + compression = encoderinfo["compression"] + except KeyError: + compression = im.info.get("compression") + if isinstance(compression, int): + # compression value may be from BMP. Ignore it + compression = None + if compression is None: + compression = "raw" + elif compression == "tiff_jpeg": + # OJPEG is obsolete, so use new-style JPEG compression instead + compression = "jpeg" + elif compression == "tiff_deflate": + compression = "tiff_adobe_deflate" + + libtiff = WRITE_LIBTIFF or compression != "raw" + + # required for color libtiff images + ifd[PLANAR_CONFIGURATION] = 1 + + ifd[IMAGEWIDTH] = im.size[0] + ifd[IMAGELENGTH] = im.size[1] + + # write any arbitrary tags passed in as an ImageFileDirectory + if "tiffinfo" in encoderinfo: + info = encoderinfo["tiffinfo"] + elif "exif" in encoderinfo: + info = encoderinfo["exif"] + if isinstance(info, bytes): + exif = Image.Exif() + exif.load(info) + info = exif + else: + info = {} + logger.debug("Tiffinfo Keys: %s" % list(info)) + if isinstance(info, ImageFileDirectory_v1): + info = info.to_v2() + for key in info: + if isinstance(info, Image.Exif) and key in TiffTags.TAGS_V2_GROUPS: + ifd[key] = info.get_ifd(key) + else: + ifd[key] = info.get(key) + try: + ifd.tagtype[key] = info.tagtype[key] + except Exception: + pass # might not be an IFD. Might not have populated type + + # additions written by Greg Couch, gregc@cgl.ucsf.edu + # inspired by image-sig posting from Kevin Cazabon, kcazabon@home.com + if hasattr(im, "tag_v2"): + # preserve tags from original TIFF image file + for key in ( + RESOLUTION_UNIT, + X_RESOLUTION, + Y_RESOLUTION, + IPTC_NAA_CHUNK, + PHOTOSHOP_CHUNK, + XMP, + ): + if key in im.tag_v2: + ifd[key] = im.tag_v2[key] + ifd.tagtype[key] = im.tag_v2.tagtype[key] + + # preserve ICC profile (should also work when saving other formats + # which support profiles as TIFF) -- 2008-06-06 Florian Hoech + icc = encoderinfo.get("icc_profile", im.info.get("icc_profile")) + if icc: + ifd[ICCPROFILE] = icc + + for key, name in [ + (IMAGEDESCRIPTION, "description"), + (X_RESOLUTION, "resolution"), + (Y_RESOLUTION, "resolution"), + (X_RESOLUTION, "x_resolution"), + (Y_RESOLUTION, "y_resolution"), + (RESOLUTION_UNIT, "resolution_unit"), + (SOFTWARE, "software"), + (DATE_TIME, "date_time"), + (ARTIST, "artist"), + (COPYRIGHT, "copyright"), + ]: + if name in encoderinfo: + ifd[key] = encoderinfo[name] + + dpi = encoderinfo.get("dpi") + if dpi: + ifd[RESOLUTION_UNIT] = 2 + ifd[X_RESOLUTION] = dpi[0] + ifd[Y_RESOLUTION] = dpi[1] + + if bits != (1,): + ifd[BITSPERSAMPLE] = bits + if len(bits) != 1: + ifd[SAMPLESPERPIXEL] = len(bits) + if extra is not None: + ifd[EXTRASAMPLES] = extra + if format != 1: + ifd[SAMPLEFORMAT] = format + + if PHOTOMETRIC_INTERPRETATION not in ifd: + ifd[PHOTOMETRIC_INTERPRETATION] = photo + elif im.mode in ("1", "L") and ifd[PHOTOMETRIC_INTERPRETATION] == 0: + if im.mode == "1": + inverted_im = im.copy() + px = inverted_im.load() + for y in range(inverted_im.height): + for x in range(inverted_im.width): + px[x, y] = 0 if px[x, y] == 255 else 255 + im = inverted_im + else: + im = ImageOps.invert(im) + + if im.mode in ["P", "PA"]: + lut = im.im.getpalette("RGB", "RGB;L") + colormap = [] + colors = len(lut) // 3 + for i in range(3): + colormap += [v * 256 for v in lut[colors * i : colors * (i + 1)]] + colormap += [0] * (256 - colors) + ifd[COLORMAP] = colormap + # data orientation + stride = len(bits) * ((im.size[0] * bits[0] + 7) // 8) + # aim for given strip size (64 KB by default) when using libtiff writer + if libtiff: + im_strip_size = encoderinfo.get("strip_size", STRIP_SIZE) + rows_per_strip = 1 if stride == 0 else min(im_strip_size // stride, im.size[1]) + # JPEG encoder expects multiple of 8 rows + if compression == "jpeg": + rows_per_strip = min(((rows_per_strip + 7) // 8) * 8, im.size[1]) + else: + rows_per_strip = im.size[1] + if rows_per_strip == 0: + rows_per_strip = 1 + strip_byte_counts = 1 if stride == 0 else stride * rows_per_strip + strips_per_image = (im.size[1] + rows_per_strip - 1) // rows_per_strip + ifd[ROWSPERSTRIP] = rows_per_strip + if strip_byte_counts >= 2**16: + ifd.tagtype[STRIPBYTECOUNTS] = TiffTags.LONG + ifd[STRIPBYTECOUNTS] = (strip_byte_counts,) * (strips_per_image - 1) + ( + stride * im.size[1] - strip_byte_counts * (strips_per_image - 1), + ) + ifd[STRIPOFFSETS] = tuple( + range(0, strip_byte_counts * strips_per_image, strip_byte_counts) + ) # this is adjusted by IFD writer + # no compression by default: + ifd[COMPRESSION] = COMPRESSION_INFO_REV.get(compression, 1) + + if im.mode == "YCbCr": + for tag, value in { + YCBCRSUBSAMPLING: (1, 1), + REFERENCEBLACKWHITE: (0, 255, 128, 255, 128, 255), + }.items(): + ifd.setdefault(tag, value) + + blocklist = [TILEWIDTH, TILELENGTH, TILEOFFSETS, TILEBYTECOUNTS] + if libtiff: + if "quality" in encoderinfo: + quality = encoderinfo["quality"] + if not isinstance(quality, int) or quality < 0 or quality > 100: + msg = "Invalid quality setting" + raise ValueError(msg) + if compression != "jpeg": + msg = "quality setting only supported for 'jpeg' compression" + raise ValueError(msg) + ifd[JPEGQUALITY] = quality + + logger.debug("Saving using libtiff encoder") + logger.debug("Items: %s" % sorted(ifd.items())) + _fp = 0 + if hasattr(fp, "fileno"): + try: + fp.seek(0) + _fp = os.dup(fp.fileno()) + except io.UnsupportedOperation: + pass + + # optional types for non core tags + types = {} + # STRIPOFFSETS and STRIPBYTECOUNTS are added by the library + # based on the data in the strip. + # The other tags expect arrays with a certain length (fixed or depending on + # BITSPERSAMPLE, etc), passing arrays with a different length will result in + # segfaults. Block these tags until we add extra validation. + # SUBIFD may also cause a segfault. + blocklist += [ + REFERENCEBLACKWHITE, + STRIPBYTECOUNTS, + STRIPOFFSETS, + TRANSFERFUNCTION, + SUBIFD, + ] + + # bits per sample is a single short in the tiff directory, not a list. + atts = {BITSPERSAMPLE: bits[0]} + # Merge the ones that we have with (optional) more bits from + # the original file, e.g x,y resolution so that we can + # save(load('')) == original file. + legacy_ifd = {} + if hasattr(im, "tag"): + legacy_ifd = im.tag.to_v2() + + # SAMPLEFORMAT is determined by the image format and should not be copied + # from legacy_ifd. + supplied_tags = {**getattr(im, "tag_v2", {}), **legacy_ifd} + if SAMPLEFORMAT in supplied_tags: + del supplied_tags[SAMPLEFORMAT] + + for tag, value in itertools.chain(ifd.items(), supplied_tags.items()): + # Libtiff can only process certain core items without adding + # them to the custom dictionary. + # Custom items are supported for int, float, unicode, string and byte + # values. Other types and tuples require a tagtype. + if tag not in TiffTags.LIBTIFF_CORE: + if not getattr(Image.core, "libtiff_support_custom_tags", False): + continue + + if tag in ifd.tagtype: + types[tag] = ifd.tagtype[tag] + elif not (isinstance(value, (int, float, str, bytes))): + continue + else: + type = TiffTags.lookup(tag).type + if type: + types[tag] = type + if tag not in atts and tag not in blocklist: + if isinstance(value, str): + atts[tag] = value.encode("ascii", "replace") + b"\0" + elif isinstance(value, IFDRational): + atts[tag] = float(value) + else: + atts[tag] = value + + if SAMPLEFORMAT in atts and len(atts[SAMPLEFORMAT]) == 1: + atts[SAMPLEFORMAT] = atts[SAMPLEFORMAT][0] + + logger.debug("Converted items: %s" % sorted(atts.items())) + + # libtiff always expects the bytes in native order. + # we're storing image byte order. So, if the rawmode + # contains I;16, we need to convert from native to image + # byte order. + if im.mode in ("I;16B", "I;16"): + rawmode = "I;16N" + + # Pass tags as sorted list so that the tags are set in a fixed order. + # This is required by libtiff for some tags. For example, the JPEGQUALITY + # pseudo tag requires that the COMPRESS tag was already set. + tags = list(atts.items()) + tags.sort() + a = (rawmode, compression, _fp, filename, tags, types) + e = Image._getencoder(im.mode, "libtiff", a, encoderconfig) + e.setimage(im.im, (0, 0) + im.size) + while True: + # undone, change to self.decodermaxblock: + errcode, data = e.encode(16 * 1024)[1:] + if not _fp: + fp.write(data) + if errcode: + break + if _fp: + try: + os.close(_fp) + except OSError: + pass + if errcode < 0: + msg = f"encoder error {errcode} when writing image file" + raise OSError(msg) + + else: + for tag in blocklist: + del ifd[tag] + offset = ifd.save(fp) + + ImageFile._save( + im, fp, [("raw", (0, 0) + im.size, offset, (rawmode, stride, 1))] + ) + + # -- helper for multi-page save -- + if "_debug_multipage" in encoderinfo: + # just to access o32 and o16 (using correct byte order) + im._debug_multipage = ifd + + +class AppendingTiffWriter: + fieldSizes = [ + 0, # None + 1, # byte + 1, # ascii + 2, # short + 4, # long + 8, # rational + 1, # sbyte + 1, # undefined + 2, # sshort + 4, # slong + 8, # srational + 4, # float + 8, # double + 4, # ifd + 2, # unicode + 4, # complex + 8, # long8 + ] + + # StripOffsets = 273 + # FreeOffsets = 288 + # TileOffsets = 324 + # JPEGQTables = 519 + # JPEGDCTables = 520 + # JPEGACTables = 521 + Tags = {273, 288, 324, 519, 520, 521} + + def __init__(self, fn, new=False): + if hasattr(fn, "read"): + self.f = fn + self.close_fp = False + else: + self.name = fn + self.close_fp = True + try: + self.f = open(fn, "w+b" if new else "r+b") + except OSError: + self.f = open(fn, "w+b") + self.beginning = self.f.tell() + self.setup() + + def setup(self): + # Reset everything. + self.f.seek(self.beginning, os.SEEK_SET) + + self.whereToWriteNewIFDOffset = None + self.offsetOfNewPage = 0 + + self.IIMM = iimm = self.f.read(4) + if not iimm: + # empty file - first page + self.isFirst = True + return + + self.isFirst = False + if iimm == b"II\x2a\x00": + self.setEndian("<") + elif iimm == b"MM\x00\x2a": + self.setEndian(">") + else: + msg = "Invalid TIFF file header" + raise RuntimeError(msg) + + self.skipIFDs() + self.goToEnd() + + def finalize(self): + if self.isFirst: + return + + # fix offsets + self.f.seek(self.offsetOfNewPage) + + iimm = self.f.read(4) + if not iimm: + # msg = "nothing written into new page" + # raise RuntimeError(msg) + # Make it easy to finish a frame without committing to a new one. + return + + if iimm != self.IIMM: + msg = "IIMM of new page doesn't match IIMM of first page" + raise RuntimeError(msg) + + ifd_offset = self.readLong() + ifd_offset += self.offsetOfNewPage + self.f.seek(self.whereToWriteNewIFDOffset) + self.writeLong(ifd_offset) + self.f.seek(ifd_offset) + self.fixIFD() + + def newFrame(self): + # Call this to finish a frame. + self.finalize() + self.setup() + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + if self.close_fp: + self.close() + return False + + def tell(self): + return self.f.tell() - self.offsetOfNewPage + + def seek(self, offset, whence=io.SEEK_SET): + if whence == os.SEEK_SET: + offset += self.offsetOfNewPage + + self.f.seek(offset, whence) + return self.tell() + + def goToEnd(self): + self.f.seek(0, os.SEEK_END) + pos = self.f.tell() + + # pad to 16 byte boundary + pad_bytes = 16 - pos % 16 + if 0 < pad_bytes < 16: + self.f.write(bytes(pad_bytes)) + self.offsetOfNewPage = self.f.tell() + + def setEndian(self, endian): + self.endian = endian + self.longFmt = self.endian + "L" + self.shortFmt = self.endian + "H" + self.tagFormat = self.endian + "HHL" + + def skipIFDs(self): + while True: + ifd_offset = self.readLong() + if ifd_offset == 0: + self.whereToWriteNewIFDOffset = self.f.tell() - 4 + break + + self.f.seek(ifd_offset) + num_tags = self.readShort() + self.f.seek(num_tags * 12, os.SEEK_CUR) + + def write(self, data): + return self.f.write(data) + + def readShort(self): + (value,) = struct.unpack(self.shortFmt, self.f.read(2)) + return value + + def readLong(self): + (value,) = struct.unpack(self.longFmt, self.f.read(4)) + return value + + def rewriteLastShortToLong(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytes_written = self.f.write(struct.pack(self.longFmt, value)) + if bytes_written is not None and bytes_written != 4: + msg = f"wrote only {bytes_written} bytes but wanted 4" + raise RuntimeError(msg) + + def rewriteLastShort(self, value): + self.f.seek(-2, os.SEEK_CUR) + bytes_written = self.f.write(struct.pack(self.shortFmt, value)) + if bytes_written is not None and bytes_written != 2: + msg = f"wrote only {bytes_written} bytes but wanted 2" + raise RuntimeError(msg) + + def rewriteLastLong(self, value): + self.f.seek(-4, os.SEEK_CUR) + bytes_written = self.f.write(struct.pack(self.longFmt, value)) + if bytes_written is not None and bytes_written != 4: + msg = f"wrote only {bytes_written} bytes but wanted 4" + raise RuntimeError(msg) + + def writeShort(self, value): + bytes_written = self.f.write(struct.pack(self.shortFmt, value)) + if bytes_written is not None and bytes_written != 2: + msg = f"wrote only {bytes_written} bytes but wanted 2" + raise RuntimeError(msg) + + def writeLong(self, value): + bytes_written = self.f.write(struct.pack(self.longFmt, value)) + if bytes_written is not None and bytes_written != 4: + msg = f"wrote only {bytes_written} bytes but wanted 4" + raise RuntimeError(msg) + + def close(self): + self.finalize() + self.f.close() + + def fixIFD(self): + num_tags = self.readShort() + + for i in range(num_tags): + tag, field_type, count = struct.unpack(self.tagFormat, self.f.read(8)) + + field_size = self.fieldSizes[field_type] + total_size = field_size * count + is_local = total_size <= 4 + if not is_local: + offset = self.readLong() + offset += self.offsetOfNewPage + self.rewriteLastLong(offset) + + if tag in self.Tags: + cur_pos = self.f.tell() + + if is_local: + self.fixOffsets( + count, isShort=(field_size == 2), isLong=(field_size == 4) + ) + self.f.seek(cur_pos + 4) + else: + self.f.seek(offset) + self.fixOffsets( + count, isShort=(field_size == 2), isLong=(field_size == 4) + ) + self.f.seek(cur_pos) + + offset = cur_pos = None + + elif is_local: + # skip the locally stored value that is not an offset + self.f.seek(4, os.SEEK_CUR) + + def fixOffsets(self, count, isShort=False, isLong=False): + if not isShort and not isLong: + msg = "offset is neither short nor long" + raise RuntimeError(msg) + + for i in range(count): + offset = self.readShort() if isShort else self.readLong() + offset += self.offsetOfNewPage + if isShort and offset >= 65536: + # offset is now too large - we must convert shorts to longs + if count != 1: + msg = "not implemented" + raise RuntimeError(msg) # XXX TODO + + # simple case - the offset is just one and therefore it is + # local (not referenced with another offset) + self.rewriteLastShortToLong(offset) + self.f.seek(-10, os.SEEK_CUR) + self.writeShort(TiffTags.LONG) # rewrite the type to LONG + self.f.seek(8, os.SEEK_CUR) + elif isShort: + self.rewriteLastShort(offset) + else: + self.rewriteLastLong(offset) + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + encoderconfig = im.encoderconfig + append_images = list(encoderinfo.get("append_images", [])) + if not hasattr(im, "n_frames") and not append_images: + return _save(im, fp, filename) + + cur_idx = im.tell() + try: + with AppendingTiffWriter(fp) as tf: + for ims in [im] + append_images: + ims.encoderinfo = encoderinfo + ims.encoderconfig = encoderconfig + if not hasattr(ims, "n_frames"): + nfr = 1 + else: + nfr = ims.n_frames + + for idx in range(nfr): + ims.seek(idx) + ims.load() + _save(ims, tf, filename) + tf.newFrame() + finally: + im.seek(cur_idx) + + +# +# -------------------------------------------------------------------- +# Register + +Image.register_open(TiffImageFile.format, TiffImageFile, _accept) +Image.register_save(TiffImageFile.format, _save) +Image.register_save_all(TiffImageFile.format, _save_all) + +Image.register_extensions(TiffImageFile.format, [".tif", ".tiff"]) + +Image.register_mime(TiffImageFile.format, "image/tiff") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffTags.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffTags.py new file mode 100644 index 0000000..30b05e4 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/TiffTags.py @@ -0,0 +1,560 @@ +# +# The Python Imaging Library. +# $Id$ +# +# TIFF tags +# +# This module provides clear-text names for various well-known +# TIFF tags. the TIFF codec works just fine without it. +# +# Copyright (c) Secret Labs AB 1999. +# +# See the README file for information on usage and redistribution. +# + +## +# This module provides constants and clear-text names for various +# well-known TIFF tags. +## + +from collections import namedtuple + + +class TagInfo(namedtuple("_TagInfo", "value name type length enum")): + __slots__ = [] + + def __new__(cls, value=None, name="unknown", type=None, length=None, enum=None): + return super().__new__(cls, value, name, type, length, enum or {}) + + def cvt_enum(self, value): + # Using get will call hash(value), which can be expensive + # for some types (e.g. Fraction). Since self.enum is rarely + # used, it's usually better to test it first. + return self.enum.get(value, value) if self.enum else value + + +def lookup(tag, group=None): + """ + :param tag: Integer tag number + :param group: Which :py:data:`~PIL.TiffTags.TAGS_V2_GROUPS` to look in + + .. versionadded:: 8.3.0 + + :returns: Taginfo namedtuple, From the ``TAGS_V2`` info if possible, + otherwise just populating the value and name from ``TAGS``. + If the tag is not recognized, "unknown" is returned for the name + + """ + + if group is not None: + info = TAGS_V2_GROUPS[group].get(tag) if group in TAGS_V2_GROUPS else None + else: + info = TAGS_V2.get(tag) + return info or TagInfo(tag, TAGS.get(tag, "unknown")) + + +## +# Map tag numbers to tag info. +# +# id: (Name, Type, Length, enum_values) +# +# The length here differs from the length in the tiff spec. For +# numbers, the tiff spec is for the number of fields returned. We +# agree here. For string-like types, the tiff spec uses the length of +# field in bytes. In Pillow, we are using the number of expected +# fields, in general 1 for string-like types. + + +BYTE = 1 +ASCII = 2 +SHORT = 3 +LONG = 4 +RATIONAL = 5 +SIGNED_BYTE = 6 +UNDEFINED = 7 +SIGNED_SHORT = 8 +SIGNED_LONG = 9 +SIGNED_RATIONAL = 10 +FLOAT = 11 +DOUBLE = 12 +IFD = 13 +LONG8 = 16 + +TAGS_V2 = { + 254: ("NewSubfileType", LONG, 1), + 255: ("SubfileType", SHORT, 1), + 256: ("ImageWidth", LONG, 1), + 257: ("ImageLength", LONG, 1), + 258: ("BitsPerSample", SHORT, 0), + 259: ( + "Compression", + SHORT, + 1, + { + "Uncompressed": 1, + "CCITT 1d": 2, + "Group 3 Fax": 3, + "Group 4 Fax": 4, + "LZW": 5, + "JPEG": 6, + "PackBits": 32773, + }, + ), + 262: ( + "PhotometricInterpretation", + SHORT, + 1, + { + "WhiteIsZero": 0, + "BlackIsZero": 1, + "RGB": 2, + "RGB Palette": 3, + "Transparency Mask": 4, + "CMYK": 5, + "YCbCr": 6, + "CieLAB": 8, + "CFA": 32803, # TIFF/EP, Adobe DNG + "LinearRaw": 32892, # Adobe DNG + }, + ), + 263: ("Threshholding", SHORT, 1), + 264: ("CellWidth", SHORT, 1), + 265: ("CellLength", SHORT, 1), + 266: ("FillOrder", SHORT, 1), + 269: ("DocumentName", ASCII, 1), + 270: ("ImageDescription", ASCII, 1), + 271: ("Make", ASCII, 1), + 272: ("Model", ASCII, 1), + 273: ("StripOffsets", LONG, 0), + 274: ("Orientation", SHORT, 1), + 277: ("SamplesPerPixel", SHORT, 1), + 278: ("RowsPerStrip", LONG, 1), + 279: ("StripByteCounts", LONG, 0), + 280: ("MinSampleValue", SHORT, 0), + 281: ("MaxSampleValue", SHORT, 0), + 282: ("XResolution", RATIONAL, 1), + 283: ("YResolution", RATIONAL, 1), + 284: ("PlanarConfiguration", SHORT, 1, {"Contiguous": 1, "Separate": 2}), + 285: ("PageName", ASCII, 1), + 286: ("XPosition", RATIONAL, 1), + 287: ("YPosition", RATIONAL, 1), + 288: ("FreeOffsets", LONG, 1), + 289: ("FreeByteCounts", LONG, 1), + 290: ("GrayResponseUnit", SHORT, 1), + 291: ("GrayResponseCurve", SHORT, 0), + 292: ("T4Options", LONG, 1), + 293: ("T6Options", LONG, 1), + 296: ("ResolutionUnit", SHORT, 1, {"none": 1, "inch": 2, "cm": 3}), + 297: ("PageNumber", SHORT, 2), + 301: ("TransferFunction", SHORT, 0), + 305: ("Software", ASCII, 1), + 306: ("DateTime", ASCII, 1), + 315: ("Artist", ASCII, 1), + 316: ("HostComputer", ASCII, 1), + 317: ("Predictor", SHORT, 1, {"none": 1, "Horizontal Differencing": 2}), + 318: ("WhitePoint", RATIONAL, 2), + 319: ("PrimaryChromaticities", RATIONAL, 6), + 320: ("ColorMap", SHORT, 0), + 321: ("HalftoneHints", SHORT, 2), + 322: ("TileWidth", LONG, 1), + 323: ("TileLength", LONG, 1), + 324: ("TileOffsets", LONG, 0), + 325: ("TileByteCounts", LONG, 0), + 330: ("SubIFDs", LONG, 0), + 332: ("InkSet", SHORT, 1), + 333: ("InkNames", ASCII, 1), + 334: ("NumberOfInks", SHORT, 1), + 336: ("DotRange", SHORT, 0), + 337: ("TargetPrinter", ASCII, 1), + 338: ("ExtraSamples", SHORT, 0), + 339: ("SampleFormat", SHORT, 0), + 340: ("SMinSampleValue", DOUBLE, 0), + 341: ("SMaxSampleValue", DOUBLE, 0), + 342: ("TransferRange", SHORT, 6), + 347: ("JPEGTables", UNDEFINED, 1), + # obsolete JPEG tags + 512: ("JPEGProc", SHORT, 1), + 513: ("JPEGInterchangeFormat", LONG, 1), + 514: ("JPEGInterchangeFormatLength", LONG, 1), + 515: ("JPEGRestartInterval", SHORT, 1), + 517: ("JPEGLosslessPredictors", SHORT, 0), + 518: ("JPEGPointTransforms", SHORT, 0), + 519: ("JPEGQTables", LONG, 0), + 520: ("JPEGDCTables", LONG, 0), + 521: ("JPEGACTables", LONG, 0), + 529: ("YCbCrCoefficients", RATIONAL, 3), + 530: ("YCbCrSubSampling", SHORT, 2), + 531: ("YCbCrPositioning", SHORT, 1), + 532: ("ReferenceBlackWhite", RATIONAL, 6), + 700: ("XMP", BYTE, 0), + 33432: ("Copyright", ASCII, 1), + 33723: ("IptcNaaInfo", UNDEFINED, 1), + 34377: ("PhotoshopInfo", BYTE, 0), + # FIXME add more tags here + 34665: ("ExifIFD", LONG, 1), + 34675: ("ICCProfile", UNDEFINED, 1), + 34853: ("GPSInfoIFD", LONG, 1), + 36864: ("ExifVersion", UNDEFINED, 1), + 37724: ("ImageSourceData", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 1), + # MPInfo + 45056: ("MPFVersion", UNDEFINED, 1), + 45057: ("NumberOfImages", LONG, 1), + 45058: ("MPEntry", UNDEFINED, 1), + 45059: ("ImageUIDList", UNDEFINED, 0), # UNDONE, check + 45060: ("TotalFrames", LONG, 1), + 45313: ("MPIndividualNum", LONG, 1), + 45569: ("PanOrientation", LONG, 1), + 45570: ("PanOverlap_H", RATIONAL, 1), + 45571: ("PanOverlap_V", RATIONAL, 1), + 45572: ("BaseViewpointNum", LONG, 1), + 45573: ("ConvergenceAngle", SIGNED_RATIONAL, 1), + 45574: ("BaselineLength", RATIONAL, 1), + 45575: ("VerticalDivergence", SIGNED_RATIONAL, 1), + 45576: ("AxisDistance_X", SIGNED_RATIONAL, 1), + 45577: ("AxisDistance_Y", SIGNED_RATIONAL, 1), + 45578: ("AxisDistance_Z", SIGNED_RATIONAL, 1), + 45579: ("YawAngle", SIGNED_RATIONAL, 1), + 45580: ("PitchAngle", SIGNED_RATIONAL, 1), + 45581: ("RollAngle", SIGNED_RATIONAL, 1), + 40960: ("FlashPixVersion", UNDEFINED, 1), + 50741: ("MakerNoteSafety", SHORT, 1, {"Unsafe": 0, "Safe": 1}), + 50780: ("BestQualityScale", RATIONAL, 1), + 50838: ("ImageJMetaDataByteCounts", LONG, 0), # Can be more than one + 50839: ("ImageJMetaData", UNDEFINED, 1), # see Issue #2006 +} +TAGS_V2_GROUPS = { + # ExifIFD + 34665: { + 36864: ("ExifVersion", UNDEFINED, 1), + 40960: ("FlashPixVersion", UNDEFINED, 1), + 40965: ("InteroperabilityIFD", LONG, 1), + 41730: ("CFAPattern", UNDEFINED, 1), + }, + # GPSInfoIFD + 34853: { + 0: ("GPSVersionID", BYTE, 4), + 1: ("GPSLatitudeRef", ASCII, 2), + 2: ("GPSLatitude", RATIONAL, 3), + 3: ("GPSLongitudeRef", ASCII, 2), + 4: ("GPSLongitude", RATIONAL, 3), + 5: ("GPSAltitudeRef", BYTE, 1), + 6: ("GPSAltitude", RATIONAL, 1), + 7: ("GPSTimeStamp", RATIONAL, 3), + 8: ("GPSSatellites", ASCII, 0), + 9: ("GPSStatus", ASCII, 2), + 10: ("GPSMeasureMode", ASCII, 2), + 11: ("GPSDOP", RATIONAL, 1), + 12: ("GPSSpeedRef", ASCII, 2), + 13: ("GPSSpeed", RATIONAL, 1), + 14: ("GPSTrackRef", ASCII, 2), + 15: ("GPSTrack", RATIONAL, 1), + 16: ("GPSImgDirectionRef", ASCII, 2), + 17: ("GPSImgDirection", RATIONAL, 1), + 18: ("GPSMapDatum", ASCII, 0), + 19: ("GPSDestLatitudeRef", ASCII, 2), + 20: ("GPSDestLatitude", RATIONAL, 3), + 21: ("GPSDestLongitudeRef", ASCII, 2), + 22: ("GPSDestLongitude", RATIONAL, 3), + 23: ("GPSDestBearingRef", ASCII, 2), + 24: ("GPSDestBearing", RATIONAL, 1), + 25: ("GPSDestDistanceRef", ASCII, 2), + 26: ("GPSDestDistance", RATIONAL, 1), + 27: ("GPSProcessingMethod", UNDEFINED, 0), + 28: ("GPSAreaInformation", UNDEFINED, 0), + 29: ("GPSDateStamp", ASCII, 11), + 30: ("GPSDifferential", SHORT, 1), + }, + # InteroperabilityIFD + 40965: {1: ("InteropIndex", ASCII, 1), 2: ("InteropVersion", UNDEFINED, 1)}, +} + +# Legacy Tags structure +# these tags aren't included above, but were in the previous versions +TAGS = { + 347: "JPEGTables", + 700: "XMP", + # Additional Exif Info + 32932: "Wang Annotation", + 33434: "ExposureTime", + 33437: "FNumber", + 33445: "MD FileTag", + 33446: "MD ScalePixel", + 33447: "MD ColorTable", + 33448: "MD LabName", + 33449: "MD SampleInfo", + 33450: "MD PrepDate", + 33451: "MD PrepTime", + 33452: "MD FileUnits", + 33550: "ModelPixelScaleTag", + 33723: "IptcNaaInfo", + 33918: "INGR Packet Data Tag", + 33919: "INGR Flag Registers", + 33920: "IrasB Transformation Matrix", + 33922: "ModelTiepointTag", + 34264: "ModelTransformationTag", + 34377: "PhotoshopInfo", + 34735: "GeoKeyDirectoryTag", + 34736: "GeoDoubleParamsTag", + 34737: "GeoAsciiParamsTag", + 34850: "ExposureProgram", + 34852: "SpectralSensitivity", + 34855: "ISOSpeedRatings", + 34856: "OECF", + 34864: "SensitivityType", + 34865: "StandardOutputSensitivity", + 34866: "RecommendedExposureIndex", + 34867: "ISOSpeed", + 34868: "ISOSpeedLatitudeyyy", + 34869: "ISOSpeedLatitudezzz", + 34908: "HylaFAX FaxRecvParams", + 34909: "HylaFAX FaxSubAddress", + 34910: "HylaFAX FaxRecvTime", + 36864: "ExifVersion", + 36867: "DateTimeOriginal", + 36868: "DateTimeDigitized", + 37121: "ComponentsConfiguration", + 37122: "CompressedBitsPerPixel", + 37724: "ImageSourceData", + 37377: "ShutterSpeedValue", + 37378: "ApertureValue", + 37379: "BrightnessValue", + 37380: "ExposureBiasValue", + 37381: "MaxApertureValue", + 37382: "SubjectDistance", + 37383: "MeteringMode", + 37384: "LightSource", + 37385: "Flash", + 37386: "FocalLength", + 37396: "SubjectArea", + 37500: "MakerNote", + 37510: "UserComment", + 37520: "SubSec", + 37521: "SubSecTimeOriginal", + 37522: "SubsecTimeDigitized", + 40960: "FlashPixVersion", + 40961: "ColorSpace", + 40962: "PixelXDimension", + 40963: "PixelYDimension", + 40964: "RelatedSoundFile", + 40965: "InteroperabilityIFD", + 41483: "FlashEnergy", + 41484: "SpatialFrequencyResponse", + 41486: "FocalPlaneXResolution", + 41487: "FocalPlaneYResolution", + 41488: "FocalPlaneResolutionUnit", + 41492: "SubjectLocation", + 41493: "ExposureIndex", + 41495: "SensingMethod", + 41728: "FileSource", + 41729: "SceneType", + 41730: "CFAPattern", + 41985: "CustomRendered", + 41986: "ExposureMode", + 41987: "WhiteBalance", + 41988: "DigitalZoomRatio", + 41989: "FocalLengthIn35mmFilm", + 41990: "SceneCaptureType", + 41991: "GainControl", + 41992: "Contrast", + 41993: "Saturation", + 41994: "Sharpness", + 41995: "DeviceSettingDescription", + 41996: "SubjectDistanceRange", + 42016: "ImageUniqueID", + 42032: "CameraOwnerName", + 42033: "BodySerialNumber", + 42034: "LensSpecification", + 42035: "LensMake", + 42036: "LensModel", + 42037: "LensSerialNumber", + 42112: "GDAL_METADATA", + 42113: "GDAL_NODATA", + 42240: "Gamma", + 50215: "Oce Scanjob Description", + 50216: "Oce Application Selector", + 50217: "Oce Identification Number", + 50218: "Oce ImageLogic Characteristics", + # Adobe DNG + 50706: "DNGVersion", + 50707: "DNGBackwardVersion", + 50708: "UniqueCameraModel", + 50709: "LocalizedCameraModel", + 50710: "CFAPlaneColor", + 50711: "CFALayout", + 50712: "LinearizationTable", + 50713: "BlackLevelRepeatDim", + 50714: "BlackLevel", + 50715: "BlackLevelDeltaH", + 50716: "BlackLevelDeltaV", + 50717: "WhiteLevel", + 50718: "DefaultScale", + 50719: "DefaultCropOrigin", + 50720: "DefaultCropSize", + 50721: "ColorMatrix1", + 50722: "ColorMatrix2", + 50723: "CameraCalibration1", + 50724: "CameraCalibration2", + 50725: "ReductionMatrix1", + 50726: "ReductionMatrix2", + 50727: "AnalogBalance", + 50728: "AsShotNeutral", + 50729: "AsShotWhiteXY", + 50730: "BaselineExposure", + 50731: "BaselineNoise", + 50732: "BaselineSharpness", + 50733: "BayerGreenSplit", + 50734: "LinearResponseLimit", + 50735: "CameraSerialNumber", + 50736: "LensInfo", + 50737: "ChromaBlurRadius", + 50738: "AntiAliasStrength", + 50740: "DNGPrivateData", + 50778: "CalibrationIlluminant1", + 50779: "CalibrationIlluminant2", + 50784: "Alias Layer Metadata", +} + + +def _populate(): + for k, v in TAGS_V2.items(): + # Populate legacy structure. + TAGS[k] = v[0] + if len(v) == 4: + for sk, sv in v[3].items(): + TAGS[(k, sv)] = sk + + TAGS_V2[k] = TagInfo(k, *v) + + for group, tags in TAGS_V2_GROUPS.items(): + for k, v in tags.items(): + tags[k] = TagInfo(k, *v) + + +_populate() +## +# Map type numbers to type names -- defined in ImageFileDirectory. + +TYPES = {} + +# was: +# TYPES = { +# 1: "byte", +# 2: "ascii", +# 3: "short", +# 4: "long", +# 5: "rational", +# 6: "signed byte", +# 7: "undefined", +# 8: "signed short", +# 9: "signed long", +# 10: "signed rational", +# 11: "float", +# 12: "double", +# } + +# +# These tags are handled by default in libtiff, without +# adding to the custom dictionary. From tif_dir.c, searching for +# case TIFFTAG in the _TIFFVSetField function: +# Line: item. +# 148: case TIFFTAG_SUBFILETYPE: +# 151: case TIFFTAG_IMAGEWIDTH: +# 154: case TIFFTAG_IMAGELENGTH: +# 157: case TIFFTAG_BITSPERSAMPLE: +# 181: case TIFFTAG_COMPRESSION: +# 202: case TIFFTAG_PHOTOMETRIC: +# 205: case TIFFTAG_THRESHHOLDING: +# 208: case TIFFTAG_FILLORDER: +# 214: case TIFFTAG_ORIENTATION: +# 221: case TIFFTAG_SAMPLESPERPIXEL: +# 228: case TIFFTAG_ROWSPERSTRIP: +# 238: case TIFFTAG_MINSAMPLEVALUE: +# 241: case TIFFTAG_MAXSAMPLEVALUE: +# 244: case TIFFTAG_SMINSAMPLEVALUE: +# 247: case TIFFTAG_SMAXSAMPLEVALUE: +# 250: case TIFFTAG_XRESOLUTION: +# 256: case TIFFTAG_YRESOLUTION: +# 262: case TIFFTAG_PLANARCONFIG: +# 268: case TIFFTAG_XPOSITION: +# 271: case TIFFTAG_YPOSITION: +# 274: case TIFFTAG_RESOLUTIONUNIT: +# 280: case TIFFTAG_PAGENUMBER: +# 284: case TIFFTAG_HALFTONEHINTS: +# 288: case TIFFTAG_COLORMAP: +# 294: case TIFFTAG_EXTRASAMPLES: +# 298: case TIFFTAG_MATTEING: +# 305: case TIFFTAG_TILEWIDTH: +# 316: case TIFFTAG_TILELENGTH: +# 327: case TIFFTAG_TILEDEPTH: +# 333: case TIFFTAG_DATATYPE: +# 344: case TIFFTAG_SAMPLEFORMAT: +# 361: case TIFFTAG_IMAGEDEPTH: +# 364: case TIFFTAG_SUBIFD: +# 376: case TIFFTAG_YCBCRPOSITIONING: +# 379: case TIFFTAG_YCBCRSUBSAMPLING: +# 383: case TIFFTAG_TRANSFERFUNCTION: +# 389: case TIFFTAG_REFERENCEBLACKWHITE: +# 393: case TIFFTAG_INKNAMES: + +# Following pseudo-tags are also handled by default in libtiff: +# TIFFTAG_JPEGQUALITY 65537 + +# some of these are not in our TAGS_V2 dict and were included from tiff.h + +# This list also exists in encode.c +LIBTIFF_CORE = { + 255, + 256, + 257, + 258, + 259, + 262, + 263, + 266, + 274, + 277, + 278, + 280, + 281, + 340, + 341, + 282, + 283, + 284, + 286, + 287, + 296, + 297, + 321, + 320, + 338, + 32995, + 322, + 323, + 32998, + 32996, + 339, + 32997, + 330, + 531, + 530, + 301, + 532, + 333, + # as above + 269, # this has been in our tests forever, and works + 65537, +} + +LIBTIFF_CORE.remove(255) # We don't have support for subfiletypes +LIBTIFF_CORE.remove(322) # We don't have support for writing tiled images with libtiff +LIBTIFF_CORE.remove(323) # Tiled images +LIBTIFF_CORE.remove(333) # Ink Names either + +# Note to advanced users: There may be combinations of these +# parameters and values that when added properly, will work and +# produce valid tiff images that may work in your application. +# It is safe to add and remove tags from this set from Pillow's point +# of view so long as you test against libtiff. diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WalImageFile.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WalImageFile.py new file mode 100644 index 0000000..e4f47aa --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WalImageFile.py @@ -0,0 +1,123 @@ +# +# The Python Imaging Library. +# $Id$ +# +# WAL file handling +# +# History: +# 2003-04-23 fl created +# +# Copyright (c) 2003 by Fredrik Lundh. +# +# See the README file for information on usage and redistribution. +# + +""" +This reader is based on the specification available from: +https://www.flipcode.com/archives/Quake_2_BSP_File_Format.shtml +and has been tested with a few sample files found using google. + +.. note:: + This format cannot be automatically recognized, so the reader + is not registered for use with :py:func:`PIL.Image.open()`. + To open a WAL file, use the :py:func:`PIL.WalImageFile.open()` function instead. +""" + +from . import Image, ImageFile +from ._binary import i32le as i32 + + +class WalImageFile(ImageFile.ImageFile): + format = "WAL" + format_description = "Quake2 Texture" + + def _open(self): + self.mode = "P" + + # read header fields + header = self.fp.read(32 + 24 + 32 + 12) + self._size = i32(header, 32), i32(header, 36) + Image._decompression_bomb_check(self.size) + + # load pixel data + offset = i32(header, 40) + self.fp.seek(offset) + + # strings are null-terminated + self.info["name"] = header[:32].split(b"\0", 1)[0] + next_name = header[56 : 56 + 32].split(b"\0", 1)[0] + if next_name: + self.info["next_name"] = next_name + + def load(self): + if not self.im: + self.im = Image.core.new(self.mode, self.size) + self.frombytes(self.fp.read(self.size[0] * self.size[1])) + self.putpalette(quake2palette) + return Image.Image.load(self) + + +def open(filename): + """ + Load texture from a Quake2 WAL texture file. + + By default, a Quake2 standard palette is attached to the texture. + To override the palette, use the :py:func:`PIL.Image.Image.putpalette()` method. + + :param filename: WAL file name, or an opened file handle. + :returns: An image instance. + """ + return WalImageFile(filename) + + +quake2palette = ( + # default palette taken from piffo 0.93 by Hans Häggström + b"\x01\x01\x01\x0b\x0b\x0b\x12\x12\x12\x17\x17\x17\x1b\x1b\x1b\x1e" + b"\x1e\x1e\x22\x22\x22\x26\x26\x26\x29\x29\x29\x2c\x2c\x2c\x2f\x2f" + b"\x2f\x32\x32\x32\x35\x35\x35\x37\x37\x37\x3a\x3a\x3a\x3c\x3c\x3c" + b"\x24\x1e\x13\x22\x1c\x12\x20\x1b\x12\x1f\x1a\x10\x1d\x19\x10\x1b" + b"\x17\x0f\x1a\x16\x0f\x18\x14\x0d\x17\x13\x0d\x16\x12\x0d\x14\x10" + b"\x0b\x13\x0f\x0b\x10\x0d\x0a\x0f\x0b\x0a\x0d\x0b\x07\x0b\x0a\x07" + b"\x23\x23\x26\x22\x22\x25\x22\x20\x23\x21\x1f\x22\x20\x1e\x20\x1f" + b"\x1d\x1e\x1d\x1b\x1c\x1b\x1a\x1a\x1a\x19\x19\x18\x17\x17\x17\x16" + b"\x16\x14\x14\x14\x13\x13\x13\x10\x10\x10\x0f\x0f\x0f\x0d\x0d\x0d" + b"\x2d\x28\x20\x29\x24\x1c\x27\x22\x1a\x25\x1f\x17\x38\x2e\x1e\x31" + b"\x29\x1a\x2c\x25\x17\x26\x20\x14\x3c\x30\x14\x37\x2c\x13\x33\x28" + b"\x12\x2d\x24\x10\x28\x1f\x0f\x22\x1a\x0b\x1b\x14\x0a\x13\x0f\x07" + b"\x31\x1a\x16\x30\x17\x13\x2e\x16\x10\x2c\x14\x0d\x2a\x12\x0b\x27" + b"\x0f\x0a\x25\x0f\x07\x21\x0d\x01\x1e\x0b\x01\x1c\x0b\x01\x1a\x0b" + b"\x01\x18\x0a\x01\x16\x0a\x01\x13\x0a\x01\x10\x07\x01\x0d\x07\x01" + b"\x29\x23\x1e\x27\x21\x1c\x26\x20\x1b\x25\x1f\x1a\x23\x1d\x19\x21" + b"\x1c\x18\x20\x1b\x17\x1e\x19\x16\x1c\x18\x14\x1b\x17\x13\x19\x14" + b"\x10\x17\x13\x0f\x14\x10\x0d\x12\x0f\x0b\x0f\x0b\x0a\x0b\x0a\x07" + b"\x26\x1a\x0f\x23\x19\x0f\x20\x17\x0f\x1c\x16\x0f\x19\x13\x0d\x14" + b"\x10\x0b\x10\x0d\x0a\x0b\x0a\x07\x33\x22\x1f\x35\x29\x26\x37\x2f" + b"\x2d\x39\x35\x34\x37\x39\x3a\x33\x37\x39\x30\x34\x36\x2b\x31\x34" + b"\x27\x2e\x31\x22\x2b\x2f\x1d\x28\x2c\x17\x25\x2a\x0f\x20\x26\x0d" + b"\x1e\x25\x0b\x1c\x22\x0a\x1b\x20\x07\x19\x1e\x07\x17\x1b\x07\x14" + b"\x18\x01\x12\x16\x01\x0f\x12\x01\x0b\x0d\x01\x07\x0a\x01\x01\x01" + b"\x2c\x21\x21\x2a\x1f\x1f\x29\x1d\x1d\x27\x1c\x1c\x26\x1a\x1a\x24" + b"\x18\x18\x22\x17\x17\x21\x16\x16\x1e\x13\x13\x1b\x12\x12\x18\x10" + b"\x10\x16\x0d\x0d\x12\x0b\x0b\x0d\x0a\x0a\x0a\x07\x07\x01\x01\x01" + b"\x2e\x30\x29\x2d\x2e\x27\x2b\x2c\x26\x2a\x2a\x24\x28\x29\x23\x27" + b"\x27\x21\x26\x26\x1f\x24\x24\x1d\x22\x22\x1c\x1f\x1f\x1a\x1c\x1c" + b"\x18\x19\x19\x16\x17\x17\x13\x13\x13\x10\x0f\x0f\x0d\x0b\x0b\x0a" + b"\x30\x1e\x1b\x2d\x1c\x19\x2c\x1a\x17\x2a\x19\x14\x28\x17\x13\x26" + b"\x16\x10\x24\x13\x0f\x21\x12\x0d\x1f\x10\x0b\x1c\x0f\x0a\x19\x0d" + b"\x0a\x16\x0b\x07\x12\x0a\x07\x0f\x07\x01\x0a\x01\x01\x01\x01\x01" + b"\x28\x29\x38\x26\x27\x36\x25\x26\x34\x24\x24\x31\x22\x22\x2f\x20" + b"\x21\x2d\x1e\x1f\x2a\x1d\x1d\x27\x1b\x1b\x25\x19\x19\x21\x17\x17" + b"\x1e\x14\x14\x1b\x13\x12\x17\x10\x0f\x13\x0d\x0b\x0f\x0a\x07\x07" + b"\x2f\x32\x29\x2d\x30\x26\x2b\x2e\x24\x29\x2c\x21\x27\x2a\x1e\x25" + b"\x28\x1c\x23\x26\x1a\x21\x25\x18\x1e\x22\x14\x1b\x1f\x10\x19\x1c" + b"\x0d\x17\x1a\x0a\x13\x17\x07\x10\x13\x01\x0d\x0f\x01\x0a\x0b\x01" + b"\x01\x3f\x01\x13\x3c\x0b\x1b\x39\x10\x20\x35\x14\x23\x31\x17\x23" + b"\x2d\x18\x23\x29\x18\x3f\x3f\x3f\x3f\x3f\x39\x3f\x3f\x31\x3f\x3f" + b"\x2a\x3f\x3f\x20\x3f\x3f\x14\x3f\x3c\x12\x3f\x39\x0f\x3f\x35\x0b" + b"\x3f\x32\x07\x3f\x2d\x01\x3d\x2a\x01\x3b\x26\x01\x39\x21\x01\x37" + b"\x1d\x01\x34\x1a\x01\x32\x16\x01\x2f\x12\x01\x2d\x0f\x01\x2a\x0b" + b"\x01\x27\x07\x01\x23\x01\x01\x1d\x01\x01\x17\x01\x01\x10\x01\x01" + b"\x3d\x01\x01\x19\x19\x3f\x3f\x01\x01\x01\x01\x3f\x16\x16\x13\x10" + b"\x10\x0f\x0d\x0d\x0b\x3c\x2e\x2a\x36\x27\x20\x30\x21\x18\x29\x1b" + b"\x10\x3c\x39\x37\x37\x32\x2f\x31\x2c\x28\x2b\x26\x21\x30\x22\x20" +) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py new file mode 100644 index 0000000..ce8e05f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WebPImagePlugin.py @@ -0,0 +1,366 @@ +from io import BytesIO + +from . import Image, ImageFile + +try: + from . import _webp + + SUPPORTED = True +except ImportError: + SUPPORTED = False + + +_VALID_WEBP_MODES = {"RGBX": True, "RGBA": True, "RGB": True} + +_VALID_WEBP_LEGACY_MODES = {"RGB": True, "RGBA": True} + +_VP8_MODES_BY_IDENTIFIER = { + b"VP8 ": "RGB", + b"VP8X": "RGBA", + b"VP8L": "RGBA", # lossless +} + + +def _accept(prefix): + is_riff_file_format = prefix[:4] == b"RIFF" + is_webp_file = prefix[8:12] == b"WEBP" + is_valid_vp8_mode = prefix[12:16] in _VP8_MODES_BY_IDENTIFIER + + if is_riff_file_format and is_webp_file and is_valid_vp8_mode: + if not SUPPORTED: + return ( + "image file could not be identified because WEBP support not installed" + ) + return True + + +class WebPImageFile(ImageFile.ImageFile): + format = "WEBP" + format_description = "WebP image" + __loaded = 0 + __logical_frame = 0 + + def _open(self): + if not _webp.HAVE_WEBPANIM: + # Legacy mode + data, width, height, self.mode, icc_profile, exif = _webp.WebPDecode( + self.fp.read() + ) + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + self._size = width, height + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.mode)] + self.n_frames = 1 + self.is_animated = False + return + + # Use the newer AnimDecoder API to parse the (possibly) animated file, + # and access muxed chunks like ICC/EXIF/XMP. + self._decoder = _webp.WebPAnimDecoder(self.fp.read()) + + # Get info from decoder + width, height, loop_count, bgcolor, frame_count, mode = self._decoder.get_info() + self._size = width, height + self.info["loop"] = loop_count + bg_a, bg_r, bg_g, bg_b = ( + (bgcolor >> 24) & 0xFF, + (bgcolor >> 16) & 0xFF, + (bgcolor >> 8) & 0xFF, + bgcolor & 0xFF, + ) + self.info["background"] = (bg_r, bg_g, bg_b, bg_a) + self.n_frames = frame_count + self.is_animated = self.n_frames > 1 + self.mode = "RGB" if mode == "RGBX" else mode + self.rawmode = mode + self.tile = [] + + # Attempt to read ICC / EXIF / XMP chunks from file + icc_profile = self._decoder.get_chunk("ICCP") + exif = self._decoder.get_chunk("EXIF") + xmp = self._decoder.get_chunk("XMP ") + if icc_profile: + self.info["icc_profile"] = icc_profile + if exif: + self.info["exif"] = exif + if xmp: + self.info["xmp"] = xmp + + # Initialize seek state + self._reset(reset=False) + + def _getexif(self): + if "exif" not in self.info: + return None + return self.getexif()._get_merged_dict() + + def getxmp(self): + """ + Returns a dictionary containing the XMP tags. + Requires defusedxml to be installed. + + :returns: XMP tags in a dictionary. + """ + return self._getxmp(self.info["xmp"]) if "xmp" in self.info else {} + + def seek(self, frame): + if not self._seek_check(frame): + return + + # Set logical frame to requested position + self.__logical_frame = frame + + def _reset(self, reset=True): + if reset: + self._decoder.reset() + self.__physical_frame = 0 + self.__loaded = -1 + self.__timestamp = 0 + + def _get_next(self): + # Get next frame + ret = self._decoder.get_next() + self.__physical_frame += 1 + + # Check if an error occurred + if ret is None: + self._reset() # Reset just to be safe + self.seek(0) + msg = "failed to decode next frame in WebP file" + raise EOFError(msg) + + # Compute duration + data, timestamp = ret + duration = timestamp - self.__timestamp + self.__timestamp = timestamp + + # libwebp gives frame end, adjust to start of frame + timestamp -= duration + return data, timestamp, duration + + def _seek(self, frame): + if self.__physical_frame == frame: + return # Nothing to do + if frame < self.__physical_frame: + self._reset() # Rewind to beginning + while self.__physical_frame < frame: + self._get_next() # Advance to the requested frame + + def load(self): + if _webp.HAVE_WEBPANIM: + if self.__loaded != self.__logical_frame: + self._seek(self.__logical_frame) + + # We need to load the image data for this frame + data, timestamp, duration = self._get_next() + self.info["timestamp"] = timestamp + self.info["duration"] = duration + self.__loaded = self.__logical_frame + + # Set tile + if self.fp and self._exclusive_fp: + self.fp.close() + self.fp = BytesIO(data) + self.tile = [("raw", (0, 0) + self.size, 0, self.rawmode)] + + return super().load() + + def tell(self): + if not _webp.HAVE_WEBPANIM: + return super().tell() + + return self.__logical_frame + + +def _save_all(im, fp, filename): + encoderinfo = im.encoderinfo.copy() + append_images = list(encoderinfo.get("append_images", [])) + + # If total frame count is 1, then save using the legacy API, which + # will preserve non-alpha modes + total = 0 + for ims in [im] + append_images: + total += getattr(ims, "n_frames", 1) + if total == 1: + _save(im, fp, filename) + return + + background = (0, 0, 0, 0) + if "background" in encoderinfo: + background = encoderinfo["background"] + elif "background" in im.info: + background = im.info["background"] + if isinstance(background, int): + # GifImagePlugin stores a global color table index in + # info["background"]. So it must be converted to an RGBA value + palette = im.getpalette() + if palette: + r, g, b = palette[background * 3 : (background + 1) * 3] + background = (r, g, b, 255) + else: + background = (background, background, background, 255) + + duration = im.encoderinfo.get("duration", im.info.get("duration", 0)) + loop = im.encoderinfo.get("loop", 0) + minimize_size = im.encoderinfo.get("minimize_size", False) + kmin = im.encoderinfo.get("kmin", None) + kmax = im.encoderinfo.get("kmax", None) + allow_mixed = im.encoderinfo.get("allow_mixed", False) + verbose = False + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + method = im.encoderinfo.get("method", 0) + icc_profile = im.encoderinfo.get("icc_profile") or "" + exif = im.encoderinfo.get("exif", "") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + xmp = im.encoderinfo.get("xmp", "") + if allow_mixed: + lossless = False + + # Sensible keyframe defaults are from gif2webp.c script + if kmin is None: + kmin = 9 if lossless else 3 + if kmax is None: + kmax = 17 if lossless else 5 + + # Validate background color + if ( + not isinstance(background, (list, tuple)) + or len(background) != 4 + or not all(0 <= v < 256 for v in background) + ): + msg = f"Background color is not an RGBA tuple clamped to (0-255): {background}" + raise OSError(msg) + + # Convert to packed uint + bg_r, bg_g, bg_b, bg_a = background + background = (bg_a << 24) | (bg_r << 16) | (bg_g << 8) | (bg_b << 0) + + # Setup the WebP animation encoder + enc = _webp.WebPAnimEncoder( + im.size[0], + im.size[1], + background, + loop, + minimize_size, + kmin, + kmax, + allow_mixed, + verbose, + ) + + # Add each frame + frame_idx = 0 + timestamp = 0 + cur_idx = im.tell() + try: + for ims in [im] + append_images: + # Get # of frames in this image + nfr = getattr(ims, "n_frames", 1) + + for idx in range(nfr): + ims.seek(idx) + ims.load() + + # Make sure image mode is supported + frame = ims + rawmode = ims.mode + if ims.mode not in _VALID_WEBP_MODES: + alpha = ( + "A" in ims.mode + or "a" in ims.mode + or (ims.mode == "P" and "A" in ims.im.getpalettemode()) + ) + rawmode = "RGBA" if alpha else "RGB" + frame = ims.convert(rawmode) + + if rawmode == "RGB": + # For faster conversion, use RGBX + rawmode = "RGBX" + + # Append the frame to the animation encoder + enc.add( + frame.tobytes("raw", rawmode), + round(timestamp), + frame.size[0], + frame.size[1], + rawmode, + lossless, + quality, + method, + ) + + # Update timestamp and frame index + if isinstance(duration, (list, tuple)): + timestamp += duration[frame_idx] + else: + timestamp += duration + frame_idx += 1 + + finally: + im.seek(cur_idx) + + # Force encoder to flush frames + enc.add(None, round(timestamp), 0, 0, "", lossless, quality, 0) + + # Get the final output from the encoder + data = enc.assemble(icc_profile, exif, xmp) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +def _save(im, fp, filename): + lossless = im.encoderinfo.get("lossless", False) + quality = im.encoderinfo.get("quality", 80) + icc_profile = im.encoderinfo.get("icc_profile") or "" + exif = im.encoderinfo.get("exif", b"") + if isinstance(exif, Image.Exif): + exif = exif.tobytes() + if exif.startswith(b"Exif\x00\x00"): + exif = exif[6:] + xmp = im.encoderinfo.get("xmp", "") + method = im.encoderinfo.get("method", 4) + exact = 1 if im.encoderinfo.get("exact") else 0 + + if im.mode not in _VALID_WEBP_LEGACY_MODES: + alpha = ( + "A" in im.mode + or "a" in im.mode + or (im.mode == "P" and "transparency" in im.info) + ) + im = im.convert("RGBA" if alpha else "RGB") + + data = _webp.WebPEncode( + im.tobytes(), + im.size[0], + im.size[1], + lossless, + float(quality), + im.mode, + icc_profile, + method, + exact, + exif, + xmp, + ) + if data is None: + msg = "cannot write file as WebP (encoder returned None)" + raise OSError(msg) + + fp.write(data) + + +Image.register_open(WebPImageFile.format, WebPImageFile, _accept) +if SUPPORTED: + Image.register_save(WebPImageFile.format, _save) + if _webp.HAVE_WEBPANIM: + Image.register_save_all(WebPImageFile.format, _save_all) + Image.register_extension(WebPImageFile.format, ".webp") + Image.register_mime(WebPImageFile.format, "image/webp") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py new file mode 100644 index 0000000..0ecab56 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/WmfImagePlugin.py @@ -0,0 +1,178 @@ +# +# The Python Imaging Library +# $Id$ +# +# WMF stub codec +# +# history: +# 1996-12-14 fl Created +# 2004-02-22 fl Turned into a stub driver +# 2004-02-23 fl Added EMF support +# +# Copyright (c) Secret Labs AB 1997-2004. All rights reserved. +# Copyright (c) Fredrik Lundh 1996. +# +# See the README file for information on usage and redistribution. +# +# WMF/EMF reference documentation: +# https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/MS-WMF/[MS-WMF].pdf +# http://wvware.sourceforge.net/caolan/index.html +# http://wvware.sourceforge.net/caolan/ora-wmf.html + +from . import Image, ImageFile +from ._binary import i16le as word +from ._binary import si16le as short +from ._binary import si32le as _long + +_handler = None + + +def register_handler(handler): + """ + Install application-specific WMF image handler. + + :param handler: Handler object. + """ + global _handler + _handler = handler + + +if hasattr(Image.core, "drawwmf"): + # install default handler (windows only) + + class WmfHandler: + def open(self, im): + im.mode = "RGB" + self.bbox = im.info["wmf_bbox"] + + def load(self, im): + im.fp.seek(0) # rewind + return Image.frombytes( + "RGB", + im.size, + Image.core.drawwmf(im.fp.read(), im.size, self.bbox), + "raw", + "BGR", + (im.size[0] * 3 + 3) & -4, + -1, + ) + + register_handler(WmfHandler()) + +# +# -------------------------------------------------------------------- +# Read WMF file + + +def _accept(prefix): + return ( + prefix[:6] == b"\xd7\xcd\xc6\x9a\x00\x00" or prefix[:4] == b"\x01\x00\x00\x00" + ) + + +## +# Image plugin for Windows metafiles. + + +class WmfStubImageFile(ImageFile.StubImageFile): + format = "WMF" + format_description = "Windows Metafile" + + def _open(self): + self._inch = None + + # check placable header + s = self.fp.read(80) + + if s[:6] == b"\xd7\xcd\xc6\x9a\x00\x00": + # placeable windows metafile + + # get units per inch + self._inch = word(s, 14) + + # get bounding box + x0 = short(s, 6) + y0 = short(s, 8) + x1 = short(s, 10) + y1 = short(s, 12) + + # normalize size to 72 dots per inch + self.info["dpi"] = 72 + size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + # sanity check (standard metafile header) + if s[22:26] != b"\x01\x00\t\x00": + msg = "Unsupported WMF file format" + raise SyntaxError(msg) + + elif s[:4] == b"\x01\x00\x00\x00" and s[40:44] == b" EMF": + # enhanced metafile + + # get bounding box + x0 = _long(s, 8) + y0 = _long(s, 12) + x1 = _long(s, 16) + y1 = _long(s, 20) + + # get frame (in 0.01 millimeter units) + frame = _long(s, 24), _long(s, 28), _long(s, 32), _long(s, 36) + + size = x1 - x0, y1 - y0 + + # calculate dots per inch from bbox and frame + xdpi = 2540.0 * (x1 - y0) / (frame[2] - frame[0]) + ydpi = 2540.0 * (y1 - y0) / (frame[3] - frame[1]) + + self.info["wmf_bbox"] = x0, y0, x1, y1 + + if xdpi == ydpi: + self.info["dpi"] = xdpi + else: + self.info["dpi"] = xdpi, ydpi + + else: + msg = "Unsupported file format" + raise SyntaxError(msg) + + self.mode = "RGB" + self._size = size + + loader = self._load() + if loader: + loader.open(self) + + def _load(self): + return _handler + + def load(self, dpi=None): + if dpi is not None and self._inch is not None: + self.info["dpi"] = dpi + x0, y0, x1, y1 = self.info["wmf_bbox"] + self._size = ( + (x1 - x0) * self.info["dpi"] // self._inch, + (y1 - y0) * self.info["dpi"] // self._inch, + ) + return super().load() + + +def _save(im, fp, filename): + if _handler is None or not hasattr(_handler, "save"): + msg = "WMF save handler not installed" + raise OSError(msg) + _handler.save(im, fp, filename) + + +# +# -------------------------------------------------------------------- +# Registry stuff + + +Image.register_open(WmfStubImageFile.format, WmfStubImageFile, _accept) +Image.register_save(WmfStubImageFile.format, _save) + +Image.register_extensions(WmfStubImageFile.format, [".wmf", ".emf"]) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py new file mode 100644 index 0000000..aa4a01f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XVThumbImagePlugin.py @@ -0,0 +1,78 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XV Thumbnail file handler by Charles E. "Gene" Cash +# (gcash@magicnet.net) +# +# see xvcolor.c and xvbrowse.c in the sources to John Bradley's XV, +# available from ftp://ftp.cis.upenn.edu/pub/xv/ +# +# history: +# 98-08-15 cec created (b/w only) +# 98-12-09 cec added color palette +# 98-12-28 fl added to PIL (with only a few very minor modifications) +# +# To do: +# FIXME: make save work (this requires quantization support) +# + +from . import Image, ImageFile, ImagePalette +from ._binary import o8 + +_MAGIC = b"P7 332" + +# standard color palette for thumbnails (RGB332) +PALETTE = b"" +for r in range(8): + for g in range(8): + for b in range(4): + PALETTE = PALETTE + ( + o8((r * 255) // 7) + o8((g * 255) // 7) + o8((b * 255) // 3) + ) + + +def _accept(prefix): + return prefix[:6] == _MAGIC + + +## +# Image plugin for XV thumbnail images. + + +class XVThumbImageFile(ImageFile.ImageFile): + format = "XVThumb" + format_description = "XV thumbnail image" + + def _open(self): + # check magic + if not _accept(self.fp.read(6)): + msg = "not an XV thumbnail file" + raise SyntaxError(msg) + + # Skip to beginning of next line + self.fp.readline() + + # skip info comments + while True: + s = self.fp.readline() + if not s: + msg = "Unexpected EOF reading XV thumbnail file" + raise SyntaxError(msg) + if s[0] != 35: # ie. when not a comment: '#' + break + + # parse header line (already read) + s = s.strip().split() + + self.mode = "P" + self._size = int(s[0]), int(s[1]) + + self.palette = ImagePalette.raw("RGB", PALETTE) + + self.tile = [("raw", (0, 0) + self.size, self.fp.tell(), (self.mode, 0, 1))] + + +# -------------------------------------------------------------------- + +Image.register_open(XVThumbImageFile.format, XVThumbImageFile, _accept) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py new file mode 100644 index 0000000..3c12564 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XbmImagePlugin.py @@ -0,0 +1,94 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XBM File handling +# +# History: +# 1995-09-08 fl Created +# 1996-11-01 fl Added save support +# 1997-07-07 fl Made header parser more tolerant +# 1997-07-22 fl Fixed yet another parser bug +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.4) +# 2001-05-13 fl Added hotspot handling (based on code from Bernhard Herzog) +# 2004-02-24 fl Allow some whitespace before first #define +# +# Copyright (c) 1997-2004 by Secret Labs AB +# Copyright (c) 1996-1997 by Fredrik Lundh +# +# See the README file for information on usage and redistribution. +# + +import re + +from . import Image, ImageFile + +# XBM header +xbm_head = re.compile( + rb"\s*#define[ \t]+.*_width[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+.*_height[ \t]+(?P[0-9]+)[\r\n]+" + b"(?P" + b"#define[ \t]+[^_]*_x_hot[ \t]+(?P[0-9]+)[\r\n]+" + b"#define[ \t]+[^_]*_y_hot[ \t]+(?P[0-9]+)[\r\n]+" + b")?" + rb"[\000-\377]*_bits\[]" +) + + +def _accept(prefix): + return prefix.lstrip()[:7] == b"#define" + + +## +# Image plugin for X11 bitmaps. + + +class XbmImageFile(ImageFile.ImageFile): + format = "XBM" + format_description = "X11 Bitmap" + + def _open(self): + m = xbm_head.match(self.fp.read(512)) + + if not m: + msg = "not a XBM file" + raise SyntaxError(msg) + + xsize = int(m.group("width")) + ysize = int(m.group("height")) + + if m.group("hotspot"): + self.info["hotspot"] = (int(m.group("xhot")), int(m.group("yhot"))) + + self.mode = "1" + self._size = xsize, ysize + + self.tile = [("xbm", (0, 0) + self.size, m.end(), None)] + + +def _save(im, fp, filename): + if im.mode != "1": + msg = f"cannot write mode {im.mode} as XBM" + raise OSError(msg) + + fp.write(f"#define im_width {im.size[0]}\n".encode("ascii")) + fp.write(f"#define im_height {im.size[1]}\n".encode("ascii")) + + hotspot = im.encoderinfo.get("hotspot") + if hotspot: + fp.write(f"#define im_x_hot {hotspot[0]}\n".encode("ascii")) + fp.write(f"#define im_y_hot {hotspot[1]}\n".encode("ascii")) + + fp.write(b"static char im_bits[] = {\n") + + ImageFile._save(im, fp, [("xbm", (0, 0) + im.size, 0, None)]) + + fp.write(b"};\n") + + +Image.register_open(XbmImageFile.format, XbmImageFile, _accept) +Image.register_save(XbmImageFile.format, _save) + +Image.register_extension(XbmImageFile.format, ".xbm") + +Image.register_mime(XbmImageFile.format, "image/xbm") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py new file mode 100644 index 0000000..5d5bdc3 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/XpmImagePlugin.py @@ -0,0 +1,128 @@ +# +# The Python Imaging Library. +# $Id$ +# +# XPM File handling +# +# History: +# 1996-12-29 fl Created +# 2001-02-17 fl Use 're' instead of 'regex' (Python 2.1) (0.7) +# +# Copyright (c) Secret Labs AB 1997-2001. +# Copyright (c) Fredrik Lundh 1996-2001. +# +# See the README file for information on usage and redistribution. +# + + +import re + +from . import Image, ImageFile, ImagePalette +from ._binary import o8 + +# XPM header +xpm_head = re.compile(b'"([0-9]*) ([0-9]*) ([0-9]*) ([0-9]*)') + + +def _accept(prefix): + return prefix[:9] == b"/* XPM */" + + +## +# Image plugin for X11 pixel maps. + + +class XpmImageFile(ImageFile.ImageFile): + format = "XPM" + format_description = "X11 Pixel Map" + + def _open(self): + if not _accept(self.fp.read(9)): + msg = "not an XPM file" + raise SyntaxError(msg) + + # skip forward to next string + while True: + s = self.fp.readline() + if not s: + msg = "broken XPM file" + raise SyntaxError(msg) + m = xpm_head.match(s) + if m: + break + + self._size = int(m.group(1)), int(m.group(2)) + + pal = int(m.group(3)) + bpp = int(m.group(4)) + + if pal > 256 or bpp != 1: + msg = "cannot read this XPM file" + raise ValueError(msg) + + # + # load palette description + + palette = [b"\0\0\0"] * 256 + + for _ in range(pal): + s = self.fp.readline() + if s[-2:] == b"\r\n": + s = s[:-2] + elif s[-1:] in b"\r\n": + s = s[:-1] + + c = s[1] + s = s[2:-2].split() + + for i in range(0, len(s), 2): + if s[i] == b"c": + # process colour key + rgb = s[i + 1] + if rgb == b"None": + self.info["transparency"] = c + elif rgb[:1] == b"#": + # FIXME: handle colour names (see ImagePalette.py) + rgb = int(rgb[1:], 16) + palette[c] = ( + o8((rgb >> 16) & 255) + o8((rgb >> 8) & 255) + o8(rgb & 255) + ) + else: + # unknown colour + msg = "cannot read this XPM file" + raise ValueError(msg) + break + + else: + # missing colour key + msg = "cannot read this XPM file" + raise ValueError(msg) + + self.mode = "P" + self.palette = ImagePalette.raw("RGB", b"".join(palette)) + + self.tile = [("raw", (0, 0) + self.size, self.fp.tell(), ("P", 0, 1))] + + def load_read(self, bytes): + # + # load all image data in one chunk + + xsize, ysize = self.size + + s = [None] * ysize + + for i in range(ysize): + s[i] = self.fp.readline()[1 : xsize + 1].ljust(xsize) + + return b"".join(s) + + +# +# Registry + + +Image.register_open(XpmImageFile.format, XpmImageFile, _accept) + +Image.register_extension(XpmImageFile.format, ".xpm") + +Image.register_mime(XpmImageFile.format, "image/xpm") diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__init__.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__init__.py new file mode 100644 index 0000000..2bb8f6d --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__init__.py @@ -0,0 +1,84 @@ +"""Pillow (Fork of the Python Imaging Library) + +Pillow is the friendly PIL fork by Jeffrey A. Clark (Alex) and contributors. + https://github.com/python-pillow/Pillow/ + +Pillow is forked from PIL 1.1.7. + +PIL is the Python Imaging Library by Fredrik Lundh and contributors. +Copyright (c) 1999 by Secret Labs AB. + +Use PIL.__version__ for this Pillow version. + +;-) +""" + +from . import _version + +# VERSION was removed in Pillow 6.0.0. +# PILLOW_VERSION was removed in Pillow 9.0.0. +# Use __version__ instead. +__version__ = _version.__version__ +del _version + + +_plugins = [ + "BlpImagePlugin", + "BmpImagePlugin", + "BufrStubImagePlugin", + "CurImagePlugin", + "DcxImagePlugin", + "DdsImagePlugin", + "EpsImagePlugin", + "FitsImagePlugin", + "FliImagePlugin", + "FpxImagePlugin", + "FtexImagePlugin", + "GbrImagePlugin", + "GifImagePlugin", + "GribStubImagePlugin", + "Hdf5StubImagePlugin", + "IcnsImagePlugin", + "IcoImagePlugin", + "ImImagePlugin", + "ImtImagePlugin", + "IptcImagePlugin", + "JpegImagePlugin", + "Jpeg2KImagePlugin", + "McIdasImagePlugin", + "MicImagePlugin", + "MpegImagePlugin", + "MpoImagePlugin", + "MspImagePlugin", + "PalmImagePlugin", + "PcdImagePlugin", + "PcxImagePlugin", + "PdfImagePlugin", + "PixarImagePlugin", + "PngImagePlugin", + "PpmImagePlugin", + "PsdImagePlugin", + "QoiImagePlugin", + "SgiImagePlugin", + "SpiderImagePlugin", + "SunImagePlugin", + "TgaImagePlugin", + "TiffImagePlugin", + "WebPImagePlugin", + "WmfImagePlugin", + "XbmImagePlugin", + "XpmImagePlugin", + "XVThumbImagePlugin", +] + + +class UnidentifiedImageError(OSError): + """ + Raised in :py:meth:`PIL.Image.open` if an image cannot be opened and identified. + + If a PNG image raises this error, setting :data:`.ImageFile.LOAD_TRUNCATED_IMAGES` + to true may allow the image to be opened after all. The setting will ignore missing + data and checksum failures. + """ + + pass diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__main__.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__main__.py new file mode 100644 index 0000000..a05323f --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__main__.py @@ -0,0 +1,3 @@ +from .features import pilinfo + +pilinfo() diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BdfFontFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b0ca34d4ce5a735707c7acce856fa5220ba69129 GIT binary patch literal 2514 zcmZ`)&2QUA7M~e@h@>RPaa^ZO(^UHbY}6o9+(o|tBWP^diO|>*WT8#8S#W6%B{8N* zdPqB#K^|JCC{Xm$dk@l~hx`G(?4L5%J^37gjh8ou?O{B6`sykIAvpE6{~)RK0Zcp4E0(;#D40R{eD3#Fd7h zq|D#hPyHyYY(#A2q?PNdjg6{xf+2+};l@T3rW=0XajiLW2Jq@cBPZl~Gj#&r<%QNx z;P35wM{^zTz!Skw4M!Jd`k4dQTItYZRh{Dw$4!n~oOGJd;oa);Qkz9_#6%)az^%f^aZY@cE9cjZ_R*wD*Sr%C*lB^fZnreCZ3lv^dQEHC=iII4~%bIyjNnU=4Li_|} zBrQUAZ@dM0Wu>g#SE1gPwz?;#I2R$dyLUR>wR?9uTyqlF_fK?T5n{F3-MrI&E>5+= zggp5#v=f1aM2PjRhFJF;hUm4kCorKx--iBt5ySw_{_lE@Q#kWu{5{zt+vpj3hPmR0 z=`+Gf?H0!|y9%ySys+!TXyn!1I7yxGu~TnE?*7ON)1=-Wr^6_;p(qE;8I6*9?Z68U z>VdygkEQ9awdGs̱OP^G&73|P~=UtgvD8DMJhm|H6WAk2+M@$I`JOOf&-I=Z?; z`?foDSZyVUTqj6w!(isfmDSY;|97M8?OFEh9Wi?Mr7E}eN1^@+#AjmgXAoR(e9>%l z@14LHalFixp?AoQ^{us5qq%jrTH*%t92)o`U|X<3%ysIy5%sv*_e08cCyqUMtB)f; z1eZAQQ>KVuW}ii)opI_V-1^)J_Puq+BF2@_d%~`PLv@bhKF0|sKIK{r08cpfxxORG zhigxKnhv=>^!&jv<@%vb{RF-~K7A|n$sq?Z=IYK)bO=F4ua1t1jdEl5AO8Ycat{O{ z23Fyj#{`pKmvmJj*uaaRS@=54sK!iRz~nbeyQW`Jb!7>x>c5G81()z5A^%xanIIGw z`fE+>TC}7B!b3g4YmZReQ@%lc!6?d8qo;lYMcLD!{#9N)R}M$lMPXF>K&6#9*dO>| zr5~{haAM`b@^S@8SLi^%HCI&0tOo@R{$Om1HWfV&?A-f8@ zOqEgyIy_(yq|7$?ryz#CFvL8W9l93t1uAl_XsNIs+`= zGE;?Z?_&04YGmlKd5j_QcOk(jGzGDp5{6_Ijt=T;FDwVW}h`_NExU0isGI4Xw2{H`lkilFZgx z?T4M_-Fw|+2^{W610O&vjHAF~goag+?$$6{mvw@Aifp9mGZ>?83e z?vRtiF~BEDxsouKt->@gp=sN0;3Ns;@ro}5HQCUU_d!_LAoGAAz!6cgz|#yp^LP$l z#pD-aonmYOU&DZ+7e|Zd%Dgt)CtUQf=g=8>w#_Zu9z}FN5aW_<@9jImnWbRcG;$#w zkpwTFrRTzxKTA>O*#)b_JZr${5p;QX7)S-c%DJto!5)ejhzb0hF_a*PByhr%7v&Jh r+7Acv7t2-W80F>v;Ks^nvbV);l!!u5FU@NNsATr&FG{ANEPe1lD4A?L literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BlpImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..14bbf93b8d47913e00aa83b2da92f92af4c961b0 GIT binary patch literal 12334 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 CqU)#t literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BmpImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c8f402914447dc9d2051b9121aaa322dbfc7f1de GIT binary patch literal 8824 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 TnMxbEb9i|G+Q_S^m*@WrVUp?G literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4533b22db41c116a91159ca5d694c9c5d5760b20 GIT binary patch literal 1688 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 S1MFW5p@zOU@b^C)kbeP*C`Z=- literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/DcxImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eb09be93263c5e1a584b46bcced05642172e1ccf GIT binary patch literal 1603 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 T2edi+iz$J2U^=Qs0IB~UqBo#U literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/EpsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8325b8b9d25ca19fd08c4e4a6b71a84f2bfd5378 GIT binary patch literal 8683 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 a1Kcw-GncO$rJ=O)zImzea$X(6-~R#OkPpHD literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ExifTags.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51f8afc6d0c9e778d7c7f0953e99fd00a10a3727 GIT binary patch literal 10195 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FliImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9bf5e761ce7d0a81cdc9967d0e19781dd597b8f9 GIT binary patch literal 3600 zcmZuzTW=gm6|SnjOwUaFHoj*G7&ZhZu=ehT-K-#lWRrLmh)h@u9tM`CJ=Np%Oizzp z-Q!KH9=PthNBM`|XPgsjdA+3b>MN9OpmesdgHm5N=ar$nnVt5C< z*Qy%c1z&5`z*nUAg0<@JFSoJ86;?2|Bw@;qvC?Zj`qos`VYHQ} z17tF71{9qVY>%YV9%q+8=Fa7 znjsnP#_9Urb6p9-c01b3uj0at9PSIBikMFPDOXGf+$Afh9f`>?6GPLo~UtraOb=eU-bj(LQ7X=@4)hIXx<;P-`NxLVq z73qvbZWUt8f5vkgv+h_FEO4;bk(Hhe-jyC`#mrX6!nC!q=+HVZuVPPqEJl_Y_rckP zEvI@yZ5EcCUSM+O3L9C4g%fLX_BNAqvhjlDbvZxg4-i2kx{KtjlbjNf6!@oS$pxIF zFz?enW4;WX0{{H_vz3cj`DfFE1|wIpQ6;YzF5U6LTO+TiNH*l^7iRAidhQC#r@J$h zGAHM`#!h4d(xO^a<r)#&9ILq6E{@xwB z&&a;S4zHgN@bzG@7p3dBlR-O7vO8c-w@hGO7PG&DdQShDLLx`L5;3oM{RjGN@)E!1surC+ZL27h1~YVh`+1s&&mJl@P>TGay)@_msiI8R<17eGI!995 zedM`zf-F9a0D?E))OMV92HH_!3iw_O&f6{s2Axh8<=W1os0X;tw7326;dg@j-+y0w z!CndNimah66@IAg?jTNe`VipiREo#EXsK*z~oX5*uHuj2_)7Ap^(ynQK*f?** zG636Dd`^FqHDok{qJIPLL2BdLvoD95jP(z)u1(bRfYn;MeMR?u;dJ!+JWp>i{OkbS!t3{>o zifYF~W?Huq%F?=poA1wHA^3p!G`o$2^{I)|QBLNz263~1ctkeqcbQyQRM zV5bPZBj*?>X)J(ZzRY@-x-Ol9|C0Smps2fLQK$Lx473%TQZZ-Qbe8FPk_sORbap4N z;t^0IRHPz~^>uoQVwF#Yw`)t*v3KdbsR9CbvE~*Nkj7ZEdScD5KmoN(gzS2_*bY;w zSETh?K3FsMTQhL3txggH+UWskNORiQU44rN$e`*Tk+(s#oeV;$Yd;8+VN^otS>$T( z;deL7v75AXMn-KQsp^N%c2HV+KrBL3J4c;tI%R-=j}Cr7!~}M=#A7VG>{kMzkMU*K zKs@dudJ)eS5C^SG9QT1ez$l>63U7$Z2xHt$DxUs`r_Y2mJ=kDcs`q@W$&LPKOcK(w zw-kpes=5pEYka2excpL75oT{S>wx|sMQI5DvO$1?GE9i~gJ6FcCMPp)X8_~mx>2?P zUYBhZ@6nS|e?Dj@gDeW7XYFK|#Rm~8LJ)RxAUb&{pM`R%*+&R-3(T&uL zn7u(#(~!r=Qe-Rd8(zb!`d1arAKL4P1Vh`+S@jNvG*guNit?f?VwGSgPDAxvk;zKz zst`vmS5+ePP%`J~DHZMFDM3{T#YFuW6MFt^EP9qlX$EDp|0l8bZkJ}eLryBio?Ad7 O8z^%dQ?ox^68{AhQY?G` literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FontFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4ab6490a953712550ee98f92970bc8d30906964f GIT binary patch literal 2366 zcmZuyOK%)S5bo}I?Cg5ikBt@MfMCM`v50tMh!P~C2uKu&gjSIfDPk2gjJL=3#5*(V z?(u8YBO#eP7j6h)ANc|N1}^-9J|S`Pl>-MJ5?{?amTfVkuBoZ6?y9c(syc7A8Vt{$ zU;Qk91@}AsoPQkre1xHIgGeU%hz*z&(i!no3`FV-9L}UWaHS{xZ`i>5l*yV5zF{&r z6a!!KC#+jP!CKZo;h)Z5!+h0mSmASNII}F6r^(ckWC-sK89WaG5i7hvRw)z zB;R7HiLbcB@XwA|!H*z6=Et0~ZTJOy?&Rh(l@xI&i;KNnZFO=bW7TvtXN?a^}OLT0^u_4Zl}p;#YVe>WQK#M<)RpO~V+ z{q?-JnWu4YIMzj!y@+}b^5ISzXNB%PJ}5TxEPSl;4Hc!S?yc;`*=}!?to6p#)cY%| zH+vd}Zj7Vh7D9qGk3R1`%(LQQGKyEm2i70&6v^uCWmwW=E)W3^c$>TbswRGi7#ALj z;zt_kVP`YSM=hoX89gH`-+`2j*tyl4#k{Rq_gD_08qzJ>e@TVy^KA-24g_rKGyqv#)CGz9U z7Yd=kw> zN^S)Hyh)hT{Ce~L@K z%$cTX2~p0M3*hG9ebY26?|+oSvo%-ERkThT?OX5JqX$nvv)+MDCb6Og*2&^MTRYv^dMe7$ z_`EUIk#&bEA9t@zk;gYJ-?IU>*-K=xX}wXB#kvBg<4r7oeURTzu`K%ghUx z`=aeMA*DfDn63KHEVNwyF4oMG_8*h^vtl?kbD;!1me{ir5=YWWpc!%o5XxN?4Qj_R_0TwMm$OoMca zhMcKDdcCCd&lr>vO2pOug02#Rb#oD=g$v{^Nl--a1hln`;=&iOUOJtB#^jvKTy{v; z-rN(m%5<^^8}xpGL9*`rr2Zt@jjK*sVQAv6jMq}@Jnnx=Y%;Q9Z%tEB(DA9CHYWau z)iV(vHmn!vVUlPH+=Gvwe%z?wc0%2&0;8gy+V8g1dnBRD0UZ#}V)o=Qg<-*97A6N z37prR*PI5w22eCBV6=Hhh`-a1k>oHtcO=yFgkkn0$l3Nv6X2Zlx922QhA&2?+)1JYX}LZw+< g?&?+I==_z^|LtspyHiK+(XBSUgcnd8B5>Nle?@Z$wg3PC literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FpxImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9359b1c61f7763756278381e67ed7f7c77bfdf60 GIT binary patch literal 4064 zcmZ`+&2t<_74Po(*x64>E7_88NH$cUY6G^UICcU_rDDq;h&Zx{sDf;T8b;f*>ydV6 z*F7V9wKa=fQ6N>ExC4cJGC~B(YIO_r?%a*`%cS6-I1;= zNKY1JNtR{hw}nZ1AFhZL%_2?xOw%8 z7PqdTZlOMQK3rXWYXhTbZ(|p&E2c??P(+TpOnv*`YNd`K+6W(%VouGtTf#5_i`jmCJft1%OnmU2XYn47_Hfxn(nOR*q){hXPts5IZ z(cX<-klfjbMyCu-%Fvk`LvNunE~e~&XKY(M0`;vQvv}5KslE3CXA{oZxFGpNq)sOG zdB#5$65OBj`}{tRXxrL$w+mA2Sn5@29gq4Lat=IcKf-Lupq{fnemNebjUaA7u?C&o zTa75b7xW_8xP9xo;f!Cobouhi&#$grdj0&$%Ifv=Z(h1|@%-}gl`AMKH@iDHE2-*r{Lk%E)_15OvHAN@UEUF4Vx_G-6l0nvPYtb2M3$W3J+nd*w8Yo@f+>6s- zls9aWpq+LviKH(3gJBr^Q7pqz)6#Yl_Bxuwto@{G@RgHkTEa17FQb~A1rbi2*SO6~ z+xkgt|DSiO3Ls z78$6s$T|XtCQ=Jy?R`G6q&u-QOBQx)^&Nb@b8KQ|wshZM$NZ#0?FC5p9n5lM@f|k7 z@yb%>TxE-F;&$1jkh+;G%ll&DWu7cU+WWFHDW-+2xX(Z4DY*Om8vE%qq!tc}W^@&D z%X4g=?F(6Zm(lUx{b5>4%UNNcFS3tF(+Wy8qP1(OC#Q^z*@-QuF&BDVB~75qJ*Iw{ zi46OLhPBLoo83(SswwG`#wJt}ux8eu)UO3;(73&|9k$cPW;#$|LtD$2<#;L&oQ>5% zoRa4w5-}bD{@hsp@LgE?kj#Hb=SaQc&_-=MzjlPoc(=b5s>Yzx*a~8qs4|Uv_Uze% zL&QZ2Z_H{=t9fvBwHu~G1=OfC3KM`LiN=JNU9`ptZ`s5pU3B8}guX+Kzn<&YfAg&GUKC8PWLAW*V(~?#4D#8{(G;rHi25fWjur9_6U&MFrK8gZ+n}W{qvxv&`0CW{*KZ$Qbwn4hnwSZfL|I7mB?aV$9 z(j`opS^+!bv}w(f^lU~JO=~WjlT$lF{T`YX4$AO}GDg<3*^Zr$ zgI~GxH9C3&$&EXVnvou4ZS+qy1X! z%Ec2_H`bYyA*Z_I{FOF0*zW?ES>UH#t&+W!L z@!)>Ebesa)gFdb=Ndk?VGkHKMQ3gs<6$X86gGzOtgpz;f@dHUI+|hQ5?4~Y&tF2xb zBjQA{TB1Q0iO_PoOk@1~ex%)8rlMTcTr?3xQS#E>@mAFa&7^+yJt8KgcqGFFGI!AF zBw?yuEZ0r%D2geXk2K%Y&L|Icd--QXbF{N(RHW#l#b`x~y%k+Pv0=R!AwH`(==mmC zfyVbjMYhmoihF(f>`?5*Uvyed=CDaneCC$$uFYxC?H=p!@)dbK9bS5prHBx}3rjz>izn zwtavk{)qk?taSsyas4#fDL*#d{6HyJsWl?zkSX11yEh2rW1d67AlDE|iYfs48%pAW zxco(45#yOtJEF;7*au}*3i%0TI@-qpe}t5oiv6P+IqhS<-n4SCZd*#C@9!x8B-P2(pSxKZL8tT~U8v9>(wFIDk!GZiYGXvxHX50A zR0xLld_NpTsqf<_$>du*P~Ajz(04*F{P3`U5bF-e_{=F2Jr|H)JRpbkF)^fBA^CC8 z4}D*kd>_c(g|GU$;`?`ZgWge(+ZiZCA6?JCz6_JLiiQ;7RD)zuC{yGD=EQRCNhMu9 zGGaUI^^Of`j@RgK&X|6-UPCc|T^_S3$&1oVX~i2>+&NoO|Jc6J8IGFO{8r5r9j-Fy zDfnAa9H>1-*v(@Uf!F*9nW?&}!fuqn#q(Qlj9y)T&I?DloRPDiaOmgw)85;;McyIr eNE#sC^t6DpIq*NYY+l@dd9!toJ(&JMUHl(gySEVl literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/FtexImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..acc5027dc7ddc7e31c437de236878c310e1b0466 GIT binary patch literal 3716 zcmai1TW=f372X>!T2c~Y2X>0Iz(7a<(XdEKPK!WrQ#-o23KB_(Vafcm|uRZ8e*| z6kZaX3qS7n<484P*==U>GI7ljjBIW+)|;-oA8|1d7$RS=m!4#sTWpti1v~7p?VcAa zw#JU3atKrR;5yrjW#3Cc-S`bV^pp4mC~dBfI4oCjK zI>H2uo;&dTGsy6VDvA3fiq!gE7=lRXH`wtM$b1({b7Wx#Pzm5Yc(+}O-rn(xhWmh) zc??MtAR542GInbE>QDtym#GAAd2+fj<%QIGCh5hTq$q}UQ)vzN7SMDikpA49Yn8c_ zlQ`)SZaV(TLtbTWWsbT%PwAabObMDxO{V|fV@_Y!a7 zzNAc>akAgC*T@;hhL1M4`d&BiA5NF&LK1c}!bQN7-fY=4Wds zLBhU$_N6S6ufXPQ(^_ibEsAUm=jOM5}|}VUQ%DSlf+w z;Ng7P$MF=_8OdX@L?>yu?{GXD2X!+oVRILyMAI(`xBbI+Cid!9TG%Hu(gpoT$AfaP zLG|p@+w(tq;|U)1AqHXKxHnoBH(NHhS`N2y1UqRF=p)}G@k)|(P%otAb~{2dY`0Ul z-R{SH7}C7jZvScMh53#{NT<~o2iu3=9DTd{{Q2(AKMaZ6M>hP&Z}xCbH~j%M^;568 z6Z=DSlSDO-E|XpywU1=nm0rKEnvHW2oj1eaq&d)Aj~W~6O(eWnqXP-v;+_4kn|sI% z?e$SO>;_R|a4B(rFn)(e6)}_z$1Izg_8t@#_MZ^rCm7y`f;+gk6zJB2{~|8|nsT~0 zRY)+W4q-g{)p1^5^C$D_{>#m+-NWs=PcUBp%9xN{+jvw1JBcwiPR+Ln!Ik;OR7>2N zn29~c{Lg0Mye)8hwokVtO>=Tu;mW+S#zwpNKJ|NRVohvb#BOP9^U|56KL5(dW!`un zoX(`6C6>pKnCrNq_j_{!No41^cx6sXV<%ZSbQ)?fJeKB&pRIqz*27Jgq#xj1uqFu9UG%iz=auL0TL}l(T6; z_s7&h@gQ@Q5NA3sWra*}sGFruf~=BNO^{+BQ}+*a%4G5iei$nuZR{cwAt3Cec3*YV zYTjh^5uaAkhfuxQH6Sf!tF)jGiL^4;k5h;G(X2e>66r0pV_ZakkEwcqp=MG6eQ4e@ zKQfC})%nP(VqUdes|bpVXUQs?uC-*2?%t@4hL+<~kzN02PPpsjr!eY}ng`khMCVhG zQXA*mPi0+jR5l|l%6F50siCS&-<&A(W`K!KmphmCb0KL8!g zyYS7^XZzcj6mjM41h3{aYo+(W7UI!v)=Ww3kwafUdK}hk$h{dQY^jJ?zmI29y; zl3GEm^CLARecwrHHFARn>WbQKEiYY^q8q40NFAjNpSx4q?AktOoCZjzNcnNr|Gyx& b)jbT3QT}z+teQ2;v1<06LV303+%x|R6!a-5 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GbrImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..879855f2f35b391fe88b803235e011fc7e3eafd1 GIT binary patch literal 1926 zcmZ`(OK%%D5GJ`#Jsiub(Z)fGY=Z!a(AG+uo&qCC-G^WxF^mKSiba9VYDr0JX?Im} z<%h7o)agIyttem}^8@;4c#7>QIH z;1;~wV<~#^(OV*K!Q#K&_8?0{I~uDzO!vd~cUd$^M4GGi-f=$2(qKB=(Oz0sr}r<>zr?F3;IiE(}x94ZXy zA(agnBA_cDt~~=%_kjuGQ%-!wsc&%Ro6Ck+i+1=ncOZRN*WdZW>T092{c^h6*?F<& zb>&12ydG$;lp5iIB`Qn(8mfe)-lu2aXGTxy2`wmRLn52pIAOU_uv7Xgy=G$+0FDDH zA8@NM{vdy{8!gRiJFRQ7U6|Y+Qq?H{WJ4-nT=rT(j^M@TZed^b0{$yQCL@gXHaT(9 zyD+Qb>>`&Fw{UrFXvjlezbQVjHu=idvI2!OgNpN8zp)K+QUUMi<9EJVkibd}-oUXi z3#-RqW*3!m_u3Z8oii8al^LZ3*Vjp51CgN05u(jqi4c_zuxTUBaxe5QIwUKo_I^y& zWIWDfF8HNI??6ZuXXz79+F;gNz`8tcdjEzkQ8vn?#{q8x*j8SHk72LErlZ^Gz3U-- z?sY@%!9|TDFP$V^A+@6b({b9L{|BF@&$aoov;B>BqAbDN(W=Qh9H&`ttW7CGu4}K3 z(>y%-Udl{rGfsP%Hj|7CZ3QZx3W?Cx8vz$^0^C4_Sq0rJ=?2k2L_=+&m97Rn%)@d= zs|q?X>gn15&KI&&Y9mp7?JTRJt;3k-18omP+#lq+R;CU>{8hFAkTczO#m zqkuBH+p1|6CyPp(Q6}LvNX4Q21kRNnFkR_MDEM(Ml-xk&9b}*4iaE+c-lFmzYVcjW zD2sdqq7S4H#5P@rzfPxXS5m|6yDdk%L6C-t2mUe?NUi~U0Hp8@bBT$qVD)yXpPHNfuEZLUvI5co8+duU zaT>~FiQq3GTRyzy4!t5pKUO(F3;Qm=#tqGLojA%xiYR?wDB9gxWcL(XsPHZ{?f?*s KrrUVhr2hlB(%WYM literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GdImageFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b068ed0682f611aebc5b83e309bd8234df514924 GIT binary patch literal 2488 zcmb7GOK%%D5GJ{+hu3nNxT%exhZ0FsM1>>e0rVgQMcmkN45YFVyASBHrk9kw$-YXi zY)g=fB2NEDa_kT2Kj^R6Yft_IJrqUU8LnNc?x_Sg;tuCQ4!@aEIydJL7=P^iD%-I7 z9Y3ar3m=bRnoS^*^oXRAMKoqT7CSvBc6%;Go)cB#YOiM3F0AXl8A{fOtjOvcBCCqM zWXDd=le4leXWr1>tn{`>vmstnLcCUsCuy!a9goA<-U|)yr#con4@3exd{=QX%v0cm zfrz3J*D6Q{NjO$=iJO$?d&;T?kuZjXIx1;32u-fEl4y+&jp7GkzQ;S+sM8-NL1$-k z{dsFW76a8vGnL$F?zF&r%JG8>Yj6O%VWgITMS+N z@HB}=E$;+gfi#_B=AY{n4ZGYFk;-#bEPRuI{Ui_jp(^jZs&%THw5Wvlzt~lF@$kW} z3c%3627|B1FbxNyNRI-Dn4~>NvYsoQUPZdH@`m)PvI>Bx6|++@6}J%`hzWZbo<+k! znAq3Ew}1#jtkXEt%9!%g&~mjeRuk=`q! zJCh3ds>#_$B(J}nk&Sa1SzRQhv|Y_DlAqZP@(!(g@{0Tbv}P|$$g6#KKtZA*3BcxB zH=Kh?)nwuOQ$oU1Amfh#1zhlb5rq<=@}PCdTW9%P(B~%z%o8kcCm53xnB)W_b3!0q zMFa9BF`3YiMx(<0{;RbYApz;a(c+-V^c+Z9(scC9`C8jFnk!g8D_jk^UpSB*#q8Dy za`n(=OyRm5ty&STtMU%iICd zU=8NdI<2w=T4xP<#i>(|x{TB6DXZ4$70M|4%R3!ko3>+ZbfE^+eLoSg^8Lc|{W3#f z-SGV%h9WxKsrkN417KInR#D8CzrF;->oCL8s6T_V*a%FK+sMO*z6H}@_p1|^x;2+J znB^B#2MCVyffzwCn=(&f0l=lN9PLR4DMHE=8CP_AE1qHOCa{&=z+u7K%+0fzZ zrL$5tNQaTMy&D=n=1-}l??TYW^<9V&9%}r_*}sCbj)WB)j&%{NZqqHiZ$&gz)`@*o zy#O{eK4sI@AL4ou2?tV8bqOAYi)h|}J#!sM-9s!h<^gV9z;XR2_FmtEjc$|Lvo#y~ zb2LOW;-*YxbXC;+-7pb)q$|k(2niM&eFF(%(3+X@j@haap+)@>+!b2GmsnFw1BiR| N`douH=)7}f>2E>-qdfos literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GifImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98358666ee2f393096c471452a99bba819d5c6d4 GIT binary patch literal 19509 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 I(u)3n0c2kOmjD0& literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpGradientFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ba0bd90d41be22361a869ce5f871367ae0279df GIT binary patch literal 3310 zcmZ`*-EUh-6`z@VZC^Y7N|SAp2DTS=fi<*tx=8G@lx|s?%~opNEJi$7tjvvP;@sB0 z*PVNlCeif^DH5;z0Z8d%{{X}T;_pBV4{QUuR~H&z#?H zPF$&!7`}h~;&<{+g|WX==lqvL=Qc|6YY54@OmZoPd?dPJawiL8tRHFs*;*hWmOsEy451vV6raf zpE5arB)T>9F3AP-7F6xX>DJ|9hc(_h{C%mD?rv}UY3!#uh>~HDD!;$0_mrQg!AM1E zLUZF_s8Y=A1;bsH`0q)j!#ySaZ5@wF=?<2}TB~FnM>32C=t<>=k-u^G{^m9Ri4L(g z^0yBBPZh1~$Nqg41^(x|VU#KzH%lF*eAdKhGH&u%r&CT-+=%$Y!5{wkr$7HS`^yjeg7i;5YC9-DMoI2L zWISV!xUOd`WsjIHN#0>nWPFijY?XEF{4$$x>0}HwMy=l4(jmPUnoH1axa|S9wBJ8w z)!#loY5enJm{nNc?A*Qgp#5B!{3w)isEjj?ljlrVq5f~#+KET1)gLEm5Iqc9cjEr8 zy@uB2LAn!1y-ghtbTAqvt>&JJ_FBVmt2MS$-)-JlYb9Z-u8)KMqhO$t*5=)Nt&MOr z-q3*zahacnL)9D~nEWt|RG_co#N-l$$35=yvhc*LRTsLB;aA+2$DnoF6*MxQB8-n9 zQ#ddcN8*UDvITO2XloA|4M&r+jWY`NH33A=k)S_16E&L6+jx^rw7(?vD_oOJZ$A88 z%+jHAIDQp%Dl!;zBo^5cI|8nj>^RJD&hFy2E@BbvaZzcyeftMrYmbXiQtv}0A#2{{ zdJ)wt))1o4TtSW?Cy*7AFC!`z5GhB9qvuZB9zCVKo(oOO-hA|YGTu>I^}?vHRRB8% z-y{7663Y;;SaIP(V8eMkPHb4lh3L0vhb0oPyMfbVr8+(KBT}`;uF$b47d~>}ZIp!K zK(Q{DtcyS1b!3hR>?!ZM1foXXl+TA=d&&UL3x9%cx`1L`ImYaOO|a7hPDCNnPn?p5!YmE0Ba%1tekHOKcJ3O#yhs zC)G1uVRa$TbkV+`TRYRuSzX98U9>Og*3WeFRu}S27wrqW^O-o#W!0><#Iicd{1SV{ zIeWYy3&;6PJmb>a7PzBgTN7hy3MGr$>Hny88DdKJ{3QxA?oT#8`B9@_Jdls25|hJw zF;FvD(+wI2Y;N+wc&s96+=p=(H7rZTP_OEyIJCNu)GT>B-*fFedpXgv(uV8LU?3#A}zi z_g~NT(7Ph8IoCM-mYu3NTsj}3%@_MLxL(CBjhyj%y(k!|UeA(LlU~zrCI0D+(HI`k<^}u_%@Z|R{QU=wj32XSNKqvJ6(UuNM~<#b zXCi<+@cS=;Kbi-^oMR!~XIx*MjT}2Pn!1^T_;-QgTndy~tUj3JPjvFoDS#vLPYE?l z7U+ySz|6!0t~|svlAIML#H0v(d$P1b*!Con9nu71J)}K$74TTVX$4tW!FtS9ZLdPT zNiC~M50;N)6_$G^mgkO(Kz9kKE@zdjx}CRpXn+k^uO#W+s-4v`i0qr2OUoc@qb|2_$NJx!t4 zlX1V-)0;H(I#T!nCKSpUDU^k#v36r#e~#L?fa{J;p=K$IOklp-smKg8mjMZ*Ya3o)WaBItjGW;R9=Xf>nCVo{{@T#-; G&i?_z-^@w? literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/GimpPaletteFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..67cae29cd970d19b9d8ab422728c9d8f4749b982 GIT binary patch literal 1426 zcmZ`(UvC^W5VyU%cbm(m4Q)h2sLDwN%87E@iU$xxQ7MI}0-}f@9!^w?vvw|7?!On>x!Wq*i zWK1g((TZNMOU&8*jlBi=9Xo16G)Bxg6&urE>D>C+HzQ|iJ8~;me?Uq8*ti#-Xjbke zQ{l-S)2Q4r75=fSJ{L<1Cp3+3mMZt6RmW*zoH3j|^1#Cbj~2xIK`evE@+@Xhc_IKS zYEW81=@zNwYg4%*N3?P_$;lmY{bB`ImvuIRKoM7WVrcq&8N**8cz677A--cHj-7U{-Ycox>iHoe< zx(z`!UVWVm?_V{Iq9jjD6m>V#BIc>y0%7hrA&~qeKzC#ami7!!!&`Y_+PntPOZWi1 zG(zR4=O2Dn-JJ*!hpYQsykemcNW(W4)sVb8Q&?$*_naX68;EqSSx@o2FKu&%QR^$o zMVjQ&F7KV?hX3-FQiZZiN$UZ4<3sDDGPj-?l&Q2%#!KrYxv`!u)5O@;k31d7+DBn4 zt$S1?d8c7rEz<+b4!}IqeYJ#pR9kvlH*Lz6QR&Z1_BO2Q-+Ya(F_-!@U_N!>3mirR zn0>mzrt^JvgALbTSNm5mhE>4)>t7Aa4v<8m2Q{vCI!xUJt!*m)JS&9kQ1uS1uimoN zmu6P7Phh+5e?W&DSMTuBY^T%2+;X1DD6*|6g3|{n%0U#J40t-*X-1JK;wVz@VOV^R z6uxx}7eJINtd)WnlDr9|QRNdT4)a-XyViGHgAn-~ccv1ly;LPo5;hznY+(2Ac8k&ub-%|aR`(`{#*`J=lX zCD!bPEbrkQ_W^jBzH-V7aNq(}?Ks4{wA9sA{WDed)i+gkIxPa@uV4NUyFMX*qH%vT zz<3T*7a#-?G$T2k(40*eC4$AC@C1KFCR{Xx4{PI)h(Ls|hzKQ{`&Zs15KYm7lTgxC zQwH;v3}oZlqXg_7XNTADEwI{Xi5;{A8RvyG!Xo=Mwu%ZoIVqXbVj19hC= zz|aRu9Hep-r4+y|}8fG>J`G7LRo$lXRLUy~Cf5zV4;yp?4Y=B9m&+ za<86Nv5ND}=F{Hy>(gF&GM9-NxI3fQ)P~XRyFRtSt@@g%03!K&HasnJIZP@DpqR(Q zZ_8wn%fjg4@ufK}i|AODGw_n@;ow{r=ff;L8CLG-i^1nlhB`I!aTO zfbD_K&#(}U(G71LHe+vnuh2iTwK#Ds^1apB{RHcSM)dPP8v0w02jTQM84o4gPN>DcCy zWDM}Ffx^6(4@RZw#cO6wF);d~&(?q;YWxqv&`XPxstK4JLAj3#24QwRVvH1 zlxLRbrI5A}>2!%pR>C!2Rg_1{brEN`C;qfld2DQVy+%UnM5Pt})(WZS9Nr7U(G?4$ zc0qiIkzm&g38w%9Ywx@L#Dl%fz-+MhIo>=0#XyA@L^llujb1VR0QlkohdktqAuC`> zO>2go&2hmSL4o3PxqRdr462(}(kp-->AELL(dP<1Ve8PbG0Fx%jvWQm$FL1`W@)av zcq2qEAqMILFz+Skel{Qp_;>~A3zYnOJ}zYM&G=l}o! literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bf166c00ce6a97743b4cca2b50d6d9f5111aa293 GIT binary patch literal 1676 zcmZuxPiq`E6qhvGnc4AfvUVWBEhST0NEe#jlwv3$lt5G0hO#yIwiKr0k#;@y{Hvrj z_A7n1kKIQ}T%jnuuzCaJXwC`zcV<#27rzbs0@89pK?)M`CJL#AAGgb#D)2OWjdF(>!$6zkdq8G z*8^pw?|^g&tR*RU3oo!`62&lfD{a!Eh|{Ji@+>uZT|L!}%<@^D#XGOIx8fWv#D{4m z3aLhsyY;+DRa#zeK96@++PFSAl9?H~Gn2Q}hRM~vA+^Dk_?D;uJo#rnKCDYQ&Khu_ zI!ec{>TFTU%INXlnK`VhWKY#|uu|&r=tNd0<03y8H%|5S=&NUAog4YINwZ^c5AN*# zINlMnt$njNaLL#!7W2FsHD`99rPl4-a~R>{R~1&j>rYQ zB(JGqP6iW~^qlGkg1u&jx9pt$MxCb9f(DT1wIuNc2OhNKB80nM>!~kW@1olhcY^Fg zvcRd%L}3Fh?@wwIrxgMzo}puOd&m?b(y?J=*{reL$f9uhuw2Ph*tPw$%A}{?D^)AY zwUoz}m$i_#ljwYjQ&Gb)UN^EDay(JYtY6P&S{mz>dTxC@Al3VI=p=aM3E0;Ufkkw{ zI1Oo!`JPWhknd6c@AALx>Kn?<&{;wf) zd;(PslcY*ZnItw!5(s`#pxjH6Ul(a{rSWIADpO-OR&yex&Q#uD6RS_qJ{r8`1ooXm zK&n2l&ww;bpXCN4;@Pg>Bp&-$7rtbq@Jiw5LcroMx zP}0(t;a}#k;7y=F>4{uE#SI{m3eYthfCOy30F7(W4UCO$Q1u1uEWOd;){>77#cbHOL}9-vjMtfV zzrhNK{W}fi^5Pz_{hQwep`<>AySMhxvVCxKM4lR1X()%j<>XBjZ1`eT*l!U`dIQ*C SjkC}T?``mKa}eF557~cYH-tz4 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef25c7aae46a72ef12433b2aaeb100cb8b4e7d2a GIT binary patch literal 9567 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/IcoImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..648f76d5087f15f1ca91fa9b809cd60cfee1f9ba GIT binary patch literal 7667 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bbd407875988f77ac92d526dc0e76665f15e172d GIT binary patch literal 6619 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 QJ(*g+unYO&JnQBE56EI6r2qf` literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Image.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Image.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e6b7b836704cde086a89e6777ded09dfc541792e GIT binary patch literal 105555 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageColor.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a50c9881b4b64a59f94d97efae2bdaba4a49a09e GIT binary patch literal 7776 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12b7da30b51a978f9d7519745c402137d38101de GIT binary patch literal 22641 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 P#c%tLKkGeO`tkn{Y-Asj literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageDraw2.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8d1050a63ddc3155a45c9e94944a94268cc63d8b GIT binary patch literal 5837 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 X+ZXiTMoZVq%7VRkZE<;VX=U+0(&0;I literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f93105ec0f6cd843c5a8841e343cd10e59ab65d GIT binary patch literal 17233 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 ZGg0xV@ugfocQ|vn_*gMN^ZeYY{{xk`7v%r| literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageFilter.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..382cbcc01640a5cbfdd7e3ceb54bf37bff7e7a6f GIT binary patch literal 16232 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageGrab.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28ecb95c47c4ea09a56a78dd6f323c1ca6fc9754 GIT binary patch literal 3373 zcmai0&2Jn@6|d^A>G|+@Y)@i4U)u>;$b>jfSnYzA6$*}%tYLAiSc0sTmA5_BGt*9g zZFNm-kE*5BZaA*AcZ4*P0}?_UBM#j5AAlQDT@gsWAWjG@So2=Z#7Pc_8TG5~davGB zRsVjSPEAz^{QmLrbM}WOA%Dh)SAQlv+=45A0D=)lBeFFf=@!+`#+IQ+bIa7DwPoqi z-m;m&%*csLTO~?Znc2*FO1E5AV(wG2Rc3UPv?_<-m#iOBkS(h0wb<_lciR@uPJWOU z!6a|PmEST5kr1d)_%lIvDWi`K?h9jRGGjy^8HH8Y!W!Dr8c_&pc4^^A!rzwUkyVrm zw2oVoWnv*5x!bts?8Jx=2{93D-PfQ@04Kk4g}q@S&W7iW|kuYt>bU4Oxo{0X65YX^fRinnUkjOBxLe4l5AK+%zjA^918hE z1-kcNQf})S8c(RcZw^nfnbG+Ef9wVJlFhJL=q337f1L!c6uQ=s(Dh>OqsiuOQ+b;QLDKd!(dWUy zSbA_oufeddY%qH3JIZ`;Z$+8h-&5wwy$2jm>mj}xhyOl4K0bu&cyM_mjG}bU+w*g8 zryoYb+Y3c6?F;YW?G-QYXIaWc%iwslxeH>@=q70#ERAF5y;MNNjFaHm77Jr=%hSWt_b3+6Gnk5#gB7*P)3?7yB(!@pelKPC*x^5$a7`2{V3v?r?S#4 zNR$<&K2uIViNfTua(Ix3g8)qI$=qdp6^BmW@a0mBF^-OE)K zGTfeYK)L%Y%%RQ$WpsMV#TqkT^pxfEF60me9idDCiP${s_JneFQX$e<8DXp{VZ1%A z2MSC(ojefA8kfg>;VWbRhB6LrC^OEx+88U!0`_ad--QMpeYD(z%~)<{x$u)+e|a@+ z_v0WD`SQjAY-6&$!BeO;j`QW~PlDvhaun_?XIk~v^_w@A^H2m!ncsd4_yud$K3LXJ zb`P3*Jv&eq_URl1%0C6+(h9A^(=v6uk_c&+K(=b}_AL}Z|mT6G^Hw>^csP#{) z;=-CsU}I=omo~wdV_3(oVSVkI)_>}Dg*GN09X+~WX&A=eE;RAkqWnEbq7B!{4?)(3 zOM~nN9J~{7U3&#wNkKKZYA9r;qyR`3T!8F|>Rr1qSQ#MKl*TIg$So{@i;A=~n3|tl z)Nra_envD*yONIRZkbgdn|wu707&7vu%$h$O`vrOX8?BW324>;G=C>5yY=DphyeIG z1p@RG%znYDj6{vXmF{qc)n#d9AaE7{#%vk@6l3fIFqRqlxv@xwv#c?q!#RYlqLS2J z)6Blq$O+Gzo zKOy{&>})Zelx3a&X$*Go1PokEvqk89Lr(L*$j0yzJ13{n2PH{Edp{4}|K26+!ZWZ+ z9QH;rBfcSLH0(ROmt{jZyKmyfyf4fG2x0e|0K9VmpYyVTodklsDCdUX8bR+yNRlRa zxH9p8otWKiVK4MPVpmS~5qGb3X?+ZRc*+LX;Pv!GFSrY@xF=HY3c`~I@aFk#gf4I6 z{^r_44-vq-G+4N#vDDk+@RE61z~eB_!!&6D8t{YuJK)iS-&lPG+wNY57RH-|9+ZNFdEjHv)adyl`b4eDY3>6!g&9I~pkZG_x3V<;(zU|| zR^#?XXX)lUQE)^7Y2%%Cu81;$Shz-Ts_Gj_SHrhY%7Z9q3+RF>pH$0#1UkNk2F6l4SbgEo zgU0IRUYL74_@o~K2J3de1Stfl6GvBCUYd9xgh_wDWdNuP21KUEfb)UtflT?kUh68K z!HBac=1?Gx@KY#GqnJmr00OXB_(GL(v5latNr^9__6&-%D9)qZ+-rGEmtmvg#G}d1p5H(d6*!Ew?Q)|FC$D{Atsnu{tcSKKJM$*&UYGQv#F-0p=D13tl%t}XdbK;3Hcs~GXyXzI4pIQA0;5yl5ll_oR% zChE;jEcn}KjvwZVrpm@6nd{QV#W<66%W)V7;vj=;-50m~8ZP~wUYaQrwo|ji)uH`J5a literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMath.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bde7d6ba58f9ba7004e6c4fa115dd950f309e2c6 GIT binary patch literal 7844 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMode.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..25ea6e0d32d296416670c9b3ad44ea02ca593559 GIT binary patch literal 2160 zcmah~TW=dh6rP!#T{}1D(&korF{PBaP`ge-C1?~i7m-GFq9_)niCQgd&nDT_x6ZCB z#aaub_6H#G+6Q>xp+A5>Gq1c*aV>%Z0VK|uT{m%y#9H&6Ip=(HX3m-MOnqRWm%#V@ z|fB9y18=051iV* zlUuHrn^m_K__>XPV6R@YH)MTRI@PM5%RX>x4{{Z+lxt|$Og4Wd=X-&Bx#5)WIlC^5 zSuNyNtI)-|WE%%6Y1>}S3v7E5Ci8Jdi$=d*+8RgJQT4JNZkYnF^I;#Gt`+7Gl6|O$ z#BI+|ogauE&~!o(z&Rl*VcSp%+fIYxW4SHb8hd3*O<9L}!BT5Z)wONaYuixPW(E8G zwtc_pRALW=6!o%g%YFza2M{o)V}LVDoNNr5kCjdmPLr%Zp{-r1;i3nj>C~nm$$HnSz)}9Sd@Ue5^QD5@LN4QU~f2l1bS7%xvq@iW~T8C;F3#7ym&0 z#|!q{^sWb|ReQ6_s(3+AaS!R-A)Qw=pW%uYByJF#oKX-hBP``31J|PCM9!fRHuH+E z0(Syb#k^TXKLG8N)^IFfH&xLkMb{MFQuJm-GPjmWOR|e)$SItWEtR0jh-MTP zUP>V<(S^`4t?pQg-cYot=&g87kg3zfcr{Z;Q(M;J%I3BFyIo{M7b7Z*E)bS4 zW?qft^sHh9tPpNnv={8yT5-UCIcJa^JC8PsMLVjq)J_J$9mO^lTE<*+8o&dX$KJd* ztymKpTIQOwXa<<`u;vgf>y{l@#*uRO(m;e+fMA7(%C5%wcL!G7Q;+4p>ueaFTawVv{ck#EN)8D|hR z`r*6L>7(S&_)zc9W5b*!sa$|Xz~;UWLcWK9cd)h|Tf4ri_1ln~gXO~wKaWpKbWIO( JBW3ib{sk0P(jEW+ literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageMorph.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..572e3fb8d9a8f2125ec99d6ae45cf05775d8dbbf GIT binary patch literal 7325 zcmcIp&2!wybw>l38O(4;ve`RuA3NZ<4axGKjSlUvTXDcGKCqhqo8BJE7|Cc$$vE;z=HJP6!o6vrh_Cne>Ta?Zl!gM-_cmifRTg9^&bW zPN-;-A~>o@6@gH+rin833{U*~kI?OE+d^vFx)j@nJS`1rJ{8-h%*p&yZ9A8pa66x! zZMz_6WEuUIoRxEU7v(8Ak9SGxIPXGQy48z6=y|?$m2(fpes@+my2j9|-n#$|O-XqucouJ(Vok}Ge&%GVj_JS^^cAYqORS?-;gcZIQ#dg?2 zD~c6>Mt0;r?72bHjWD+7+VPGXxtp6A6oRy|xm>MQ87O_?sjg3buCK3GR<5pRE0!Pc zc(EIG9RlbDO~1#e`(EHSl;=FUr)oNpYdgGpV?~8Ak5?|!QHH0d!w(@#yRknw--=zeLE%sB z75gTm#6VW;b##2}J#l?n7Y2jgwW;1#YfNe7Mm?YDN_&oQoZi)G;U4Uzm8(kw+E>Q_ zq}y@`0=A1oTe)#h(cxUX*;C35aEpx1BggN#mu=9vxr4ckS2o#|w%4+Q&0PC%ob z9(c_00X4E4uH6QA29*Jr+kku9Qz|6p%g%q}iPP!&Q#|K4?04<4NGy+d_+9(6rHmno z3+(~xEj`G<6Lb1t`FCxehzx=oOWQw zdSV`mpNj;eiv!48fKJ-3_F`e3h0KPaQGqzE^%ro?wY93fhI3|p>)gk4(2w(z*iH9U zSro^8w03O_kJmE1HQJ+Ms5zWGo1TH3+KRUxZ(qr$`DUmBSEWVi`7CA|88n zcI$!Danm^lQXjACMD6FA`Z^}P`046S*l|~z-6(c~U1#-r*z9#6I??LK`|(Z~)IU~X zTRELhv|0s2K3es?#%h;`-l?vytwzvWE6`he(4km!^VTYx9ag#3?tW_3>t5i+_4<3* zEm}fl2}|VlJlCek3o7_~VU^41o72tz?0;>{#MR;YCYhq)Lv3P9X2S(E63x_h!HnO5 zeIxeU(w>XjbHRkD=xPyDxXp*osyES>mK`Zag!u`2A_Bc2`sXH4n4HrjdpUflO;(do ziK?hFPX7XY{)HB6&$MTvrAt`1r&cUt{ZL%j4#go!iorabuVwa>_B@$KH3gk|3Hm!I zk&Wu_aLflY2jZ6^5x>;l!!h^FMeWC$&>q5`LMC(uSL5@+1JJ8$sqmibspzBy*n&pr zM-yi+UTM35`=qO`)@cXYO8?oLT7Pxo=$Seg=vh(=)hmA3bo}UQb+o!-rp3m7>^e$0 z`)N+WqPnSd>qqzMTQ|3FsB?geo8T)TmQ&xNim8A474Y{l7Lik7fiIRs|HA)<%M`Wf zE~qd|5QGE_v85>+O>9qCs1>Rh2d)^0Lfeh$U=GIk^7EpeUm2SdtXK) z))L&V6nlDPeWd*y`tC?P(^{WT zb~ehof_pM^1v9skSr*dS8KA*bSTd&xHN$=bj3HUUNg(9GjQx)ja@o>X*^Lgw>~?P+SaEJ*?K=|OguNfWcJ0N%TI+~C=wlu48Cm3a zNzNPtvNYmCk~I$ znSVtL$~>6)(XTRRCzM{xYYx29v6sp2scXNLxwm6rT?bakg)dmOZ^i>(Z^||I{cL|Z z#4xI+V&mjXJXz?%0Sl>!RNStm0{>8t+o@QuSnAu%(bJ4KIihClQ0DvrMONV2gvc3!~F`T?LHol1(wLj6XT z$bU_M2dFd8dpvvSQyVh0(D$!}ov!C2zyezi2v3n6G_zxKBp&)cljUZgEEdNGw5)$|`Tpa#E1N&KAH98ldAa)SA5`vF z&|bNUYWcpbq@tw$5;xml+}aOf=ZWo7C;@basM$*|#8M_D9O{$(d?9RhCsF}9`m}F; zwzmGDrmkW{tyA@VRF%_;+@6e?b>*h{2yQ@gM_s30G9qcNt-@Yc-Jp)Yp^l;(z{5m1 z>ZXNeMkN+Mb(uzuh8JX_mg8uQ4R>W`!h<9Gr2c}c3sikb72AaTK(bh#N)0a_&^;CE zWw9!b!kjO#JR;gyIa8F3Gms~8LreIZ6K9Mw`n+)-?FCWJ&FgQ9vQBONXZoM=X8+8D zbd3O3^jfVlLw+y$-t~G~s@HL6J)hd;di`O~@dqP?dR>OidR-w;q^TvUn3`+UA|=EG zQ=d_5?6r(s7d49kqCrF+u%!Y2Z&-`a06COG`Ar^gVrc3i6aOBHDx*RUrNFNGoo@f_ zsqBdtILI4}I2DT8A4KS(ifYYCOG#~ldJQG|096(XBKi}E3{S@t2kO5PNBS{j1ZWvMqdk8%k{Q1Vh78wW7VM;25aU?4;gyQSTk#Go2ua1_Y-U9Q4N^tQ0QFKMa33Rp_4=+No=S7D$37wo3NE5l_c|!DlFO`Yj*(y;kXm6c=Fc?O zMCK-b`GR)b%g zMHEz@P(|T@+NFv-ndbwa-lq;$=VLv`qDgE11tp@4ODR9Txw8|u#wfpXYjksbYj2?e zd4gm@2B##G+!>6RyEzWdjQ;cKdm(yIPBF8@1EGM`9O)!xx-3sNEnoldgr6XJ{v|@E zvlO!;b(0}HrnU+}iI-)gi@twFiOBuSC_E?ne>RkeDNs{1raK+Ej1;#c2u28esQ>y@ zru#_YXUUFF@B@blF*-Da7Fg?AbndYba4v=R6BL9p+OBaZ;vDYhveY>}Li#YDpqGMa z=smN4=@v8$DYcQx$@DcR>H@2WJNg)FI;8&c$cAwBMH1JEJu&0`CO|4?tFxkiFcnQHml%;z9 z8}m5TQ_}mVhKxQKs~9!%-xM*ldO+1rsiF*7=BAM?$y6Chj(SAZK2?3H#yfJ0b=c<^ z_#MjFP17yQnzv3_Gghf=DH?~~{2^ZKrL!^2R3^E^imZ+zy0AmX(_gnwYF)|v%&QdR VGCNv@dEL~>Bb>9ezg>9ae*g~z1q=WH literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageOps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..837f329e99edc5ef2565380be5273a544a80ca90 GIT binary patch literal 16908 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 Qe#H-hQs4!1fm?C^55)u0wEzGB literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImagePath.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b6486bdb93ae1d7aa3946f51ea1fa34e6faedf0 GIT binary patch literal 244 zcmd1j<>g`kf^P|1Qvw(n7#@Q-$bbpRaRB0C2_TWekiwY5kjogw$jFe&n8lRE9L18t z6wIK>{1T{_L6h+ot7mRvda9o$>n(;Nkk(r)$@xX8w^#}iOEPY;1OUmE3`Oif2{7?1 zRzD*@H&s8mptvM4FDp^sB|o_|H#M)MSU;e$BqKjBKAJTUz}Nzs#}nloDH-TsK?VsA8bF!9=(FfTO2mI`6;D2sdgaO6|(>d9swRE E0Gs?kO8@`> literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageQt.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eddb2c2c29126098dc5f3bbd7d5c7ffb34f4bafa GIT binary patch literal 4491 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/ImageStat.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bfdbe024032dc3ea0cafc5f68fa952676031af00 GIT binary patch literal 3695 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 z z;lzru&ZfC#QCe6Lxb3zzzTBc&}%%-D*{s+72@6c{VwC{@NnV&Tlf#m_`{ zk?-Fp{YjRn{xCO1n4X6H&$Hn)QE6fN2Uo=;OM?TQjdhqLrr*0z=|w+|PWpKTeb9UV zy}pSG^*9fQXZYwaXYX16_F){v({Ysc@+;(-dhK7(dx1r7J?T=QmmczA_4j7=>5|yDZ{EC_d2in5 zh7%J-hTnfb`K$WlEMxzo!O5S*;B7q7p8*t8+-J?~&6`{aW%*)YHLZbcO3pBrer{kl zZG-24=bMhfZQzAw(cpRDrDh4ZqYA3{m1vgTl49Fjm1bCTLY39TXRKLK6*YJ|+T(x?k>(Z$ z?Vg(!%E-RZ>F+8bbAe<1@_p>5uiKi(3Xck z!ijhdPc#D%vzRCBSzMQ5zY}Mn8iWx`d*AQx??Vm?hosi>!gUy#!$CmoF@KL?Vq>+Iw5 zn8(lsI`M5jOJ=sdz*RpGG23Riat7_>(ny|v<~SY!h@e3loveimp44D_cosBH2{~v1zA%l-n5ixN@Xbt)8|x9 z*?8M3uN=JdBP~skPD=8arxf0kwb8PXn3D%{QkB<*zOHhZ7m4iBc|?=?H*qeLh{k8wF624piEY|- zTO3mw6HB@TEf5Quf+hF2O6kjohb=nlq>W63o$y0AH6_Pw$n&>6ai=clF`sb>2NXJbSRe6_gq^Kr#c^5LbN~1ztHk8UP;&klXXTh{& z@x<0&I2#u@8|BsHxENQG;x&mXx z!-=gbr9G4Srk3t~E%qGPYmbbEl<*V6uK*l-`5|=y)Rez#SW@f#TUT|NDDv8!4{smx zPzgE2pFe>=0zP{FgJ3-fH#0}CdsNZtop3PJZWMW8fJ}s}-p+)i8I$Cr%y}Q?%r8`|HjJ7;@zdxx$SOc z@j~@Mzf62Grea#kqQ(xp-N=pgFOH`32qM*v+o|ohw_F{i1rj(6P~1>|Ra!bJKX>&7 zT1hqWM2*O`LWuYQh|xO$LKJx!e}UMlaEVcs*Z8a`3h|#>t%d?}2GlZQkGRSh&sxH& z5ifA(v3TO->Y}(W_n(eNbIz$~Bm+_MH_^C;Xw0er`W24!N-={@2p&$4wQlLzSoFn? zl^`7=Q69{GWQ}cui$p<@SlLh#=Kxr1|-U;eS0l7eG-|RjCA4loi7TBqn6r+!WN!lkV(hf-h zS|9@6g!gBwqW2zL#r)(hO8V$xT-}*U^1J-Y>bR7Yb}XVMrG5>bU%L;#m-ug6$QjN> z7X4upJJSC{JonkifdL`R0&k6C91wlBp0`6kUc1 zZlbr4vHK|2rbgQGQ((A7m@9BB4c&v`-c}7z{)?_kGtr;9WY^#Hyh+KC) zbz*lgq@t4M2kQ|HQV~X}-BsjhX>L=apEB-!96zW89;P~e7`d8iQ7R3y@CK>95%^xP zt|=-Sd{W=2c68;vga%M1sVdBEOnhBYuUS{+^D0G zgOH0%63K4wHY7IkpU}xfI5mL!48SEk5rvt&bDlRi6_j~!k`I`m z{5KHv+QLV9q%P3s1C+;sHHL#Kgc~{;7Uxj%W)T?n3Zro%`gu@ZBFc`V5QqrMoNgpJ zj41eI@SNeZ`siWwjZp!d#eONV`eo{rP*zG*R^m!mY+XNe+knc5RAPha+tiog*S)UUf}{l)*+30y{yiqhs__-^PrtL>>&E0ITyXJ(YhNVBjD%~cqO5nIQ9r2g&O>qk! zE3Iq4{$S~LT3Lu=?X7OaZdRDD5>uho>iF#_Lcr#)ZpCi2c-N#qO`(_;7X#&H4R9l` z?~@!Jfg=I&Q3m7d9uY}}6FQr3w$h19`v&t7Ddad+fm$qVWTmp8N-G|h1=ZcE$ukc6 z;)-QkHn%O*Zd7esR(}xO7UBmTV*}*v_vo;@1o{Lh%Vrro-&*y^=}ecRZK5{_P$tln zIJ84xfxsjI`YSb0@S0pCtsT)&Q`~?WC?m%SZI3PNT**@4TjWd; aHD*o~c^A3$pvQpDPTrBVQYEQ~vh_cq?DRAM literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3c86b32423038e64a335d37327cef2157f824249 GIT binary patch literal 8689 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/JpegPresets.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05a91b5a7a244c9bfa87a1b38db23084e0ce0ba4 GIT binary patch literal 7914 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 rm6n}XIwB(@lZX-c%kT}EI(AH4s6I5WBR literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..05eaffffaf4d15ba91192aa8c475c979b9289659 GIT binary patch literal 47121 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 Yt6p$%Ny)`NEbrU4rUW{o@?P_Q0TpcSN&o-= literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-x86_64-linux-gnu.so b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingft.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..3a9e1a126b98941dd3f8e527cd11067b1b36016a GIT binary patch literal 77073 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..8130a0c639cc86b5d9f251589a20af79d9d9a21a GIT binary patch literal 14992 zcmeHOe{5UVb-t9Pn5q>~$y{5rUHc`VTe`IwQLa0AnG;f`;-{5LG)GRi)+tR%l*E=I zS@J2i3}e+ou?WG*6TG2KQef!st!uEQ!D4J#(NVGEcwGZHEt+OakSU&nP*okf4Pv`p zYwkPu-a|jXNKMf{3KZZK_|84wIp^N<&OPtG``)|ybWh~22A4~4St0Ha*Ek`9T5x7N zYY^5YnsHn&)=AyQYofQ+I@}6kD%uoJeKb*3^G^CrZO4@5WGDMG$QZ?t#~QU76wlOd zcLPKhw<-C>UDwmu6^egYQ?{e#$j&&k0!n zYt}H;&lyU=Nk6Dy!IbU(1a{=-uUk0mdv$-y#idRA&s3kTJipcGjKa0&?tS9Dw?F=a z8*g6s$hSZFxBKUR_Q}(?yywwXX0b}lwkzRHtP_onj;B-6oE6Jj(Wr>_4)jHb47rj?W6%)$cYh@Fu zQAnfR6N%*TeX-;O>Gm8Nite3AS&8v@Pd1y*5|qtG?~Pm9U_3sai(7yra58##{2*6D znM^!2ETU*J9FHZF=^;pZQwf||VmvmA&c@T(%oxDF^zcM79^IXd$EMGi+3tYbBUgsBrtEoc}^rj#fBr$wQ|vhx7JW0uGnyo z4Q~%BW+jNrh8s4VZyhA|*>HKEBM_w{D2bqU)O@J;E*nlVF2SIx5yr75#0=6=$adbP zs`A($R1E3M30Se>Pi=UM#)urS;WygwF&l1=gH5Ggtw*39fqDe$5vWI?9)aJ{2)yap z_;WM=W4Bpq`mfuttSFSNhUytJf6{$Io>6tjS-{oJ=Wz6F3Zh2*7|9mqt0!Aqd`_+4V>V&TFRW7?GV(?{`GR{1lyRT;+NRMRivtLuLBUF)Ch7Y;(G{Rw@< zEM5+j&6yp0u}lr!7upvZ*mo~R%rs{r-VSqS!0U_5guPvrvsbItLfJFDAF($}N4!3> zw8wpEik`0Bp6M2#l}|&(+*QS3d5*4UwaUK|S{m?n^%hT>rLec7lyQek=IWB!Uby5b zJP7stp*EMNa0s>1N8N>&JcV%r4-+_qTBJ1QiFEK2;5z zH;Z9!+f1n1H}nc>?J8b+UK3^eM>2$gJmhZ6L`8`izF9tPIg7aqn8JCHZZ1WT@A@s#pkQiUb znmkahT>S-xB7f5S*!`jXq5DH04@GNvS!xO(d5{OAP&G?km1EFFVqC91i}Bk~DF6BA zF`gR&mmaPeXUIqU8#zD`+e$fPSC@oqJXKT&ZC zmn?9ltWz|V)FNfoq__=A z@dl;1K`O4)BBkhVK4U&Sbp+F|XPU+jY2%X#`5w%mNXYS@)7)?bNn1Qc<5!7DV71po zK&S77g_(apW`P}4EB=tqrn2xej15kyu#G^p*iN&G(ObM=mJkrSD$JcvdkS+%{s<(v zAWoW*V%e7TBYuugZ{Fv!)+6V(Z;{#h&zR{c`~L==^aRR_Cy?TmgJ2e4lBxqxbt~1) zS~Wq^?@MVA(jWO`L!Z~u50mssDaAN8eOE~vv~(LuKSzE19@V}?wPvavr&{$2YTp^T z=IzK5`QKGJ4K?JyXS$ivs`!kYv~dl{%zpy6vdVkWBq{tSWduUv3zstOGza%!20r>_ zpglCVJ}SjQU*ILm#`fN!Q+-1}k<;t7e1dg5F8P+80D`;q#YKjK85C0x9Uxu+8zV5lD?FDX4wVyr8};Q9*ZtY>@kTfMG{a-{e=HBo6HeCOqf zf8qNjM%>)F-`h4(z%X{1#fohh&HT75on7hs|K8OA)Poci} zGLQGS-@;M>PMw3nLKPyMa&3)LTa^H;mwE*15vWI?9)WrU>Jj*jBXCbDCGatBVmzL* zj10cW;TxEd$)@o=Z(Qt4Rw8}xlFZdj9^45S@O+l^<|=$s@1Jno;`*o2R-NN&rQO0c&~8b>34n0O7|>qFLXEHS9zmaErW{I zw!2!}|JbwYpnFQ(x$gG&Z};9x@GyROEg*vE=b!MjA-Y@J{;J{b*7l<-x?7Ez#_m?% zUp9qWJ3ezmsI@DD_LFe)qeh>Y$ zT79$DPk6b0_E0~Y8_-_(ZT)Jg|%pdNvG1nLo}N8q;<0p3sO+&@T5eJU$;g?ZYmNTo%Q z+QvoREA|z=U-b92ocAxT*F4@W%d$>W-p5GKP*hm{*41j7_yhC|gF?@0RE$PNd9U0< zTF!gk=yM|#dUm0r-I4o}B@mRy+Fn7o*5~It`mjtzZ$}h94KO~d9brEo*7o>5APe`0 zZyD16jMm4e56NqFfyY3}->v0%;V=1GTy=ZDZNmH6o&A2OO(Az_dY`5vnm(ZEXEgn+ zreD+axTdExeL+)aKO7$??&R+<6jIg{@s)-5r#kh2U7q)|^8Qt)KfHgH_p3VP2ed!D zKh-IJCqMS=-u;J$4?F0$7y;Tu956aNIy(b_&Vb?Di`On@%+i8wf3O9OQ69=rqN6<_ zuWNfOAm(*!nJ%THjD%RDb(hlNYxyyq)Jy4bACKq<`lWQfsO_2lraJ8F`d{HQ`}$43 z5dFEaoRzg=gTjxuOL6~bYQjHAyT`XBhK1zt9%)SYhbL3H$#F%ktdcws$NR5z>N+M0 zSvH=Gk%6vdl9uo%uxniSt@t4vv9Ub?S$a5T#e_dT79GjP#^cekVc0UKETXY&Ha4j& zxK38o1sag<#Ksdta3PI`aq!FDRLg_8obV5&$LVFAa#Eg|KW1U0{NM!MqPyXTG2#0y&l^nnz77>x$X9zA z0%Nx~^tH>hY*$8Ii)%FHu%FioOy~H>pBtnt0@x^4TmSHS zjQ_vOsn0yquff)1v*-2Nm2Ch~SWj`+c*dWAfL!GK>++%xQ zpYZ?R@&DOz+_*i?gVV6J_s{en(Qu{rF2QVkd+DxUQ&V~4BFqh z?;iU_u}h~rv;9Zc^WM4VcRucU=iYbk(|gxnY4f+2IUIsZx%j-8<%IAm!Q^t*AgoC& z#CfT>Sn5{Hiq5I+uC^eiqSoT6jY_I2zL;)VXz4L!IoZkfbW1LZ=)rOeXKJ@Q52D<) zmOQumY`S0B9Z{6+%AiJe!fojzJyub4QYDLNl@e2obTpBJIjGBm1yjkWpkKrIYiqBVDD|U;jMW{;rpXb%JopRq_`ePK z1vrWe+z7oG1iuc)T>5+FY4?}VpDPcW=h5$+2Opfr&sXQcUGw<42KqXV;?fS_lf@wT z$8cOAYD6OqGL(JrOXXo4gzvpbvf{5TB9aPkRQOE_4=H@A&H`2`d>j0cADsp&N~=YL z2n06uC*pyW8BCgifCzNNdcf_GO#vct~HY|76CE~#1cV7Cx`^h&Cxhwl!6o-B?cmK@&vP%SR|N4y|aHH zf$Or!nnXB_%jg>X;>J58Av4esF@2_)RQ|gL*TtiuL^u*?ixX*I+ZyQ&reh`yng`8D zD&R{g)o?5nOQevHuE9WSBp8b&LQwK0HwC(a$yB5#Js_L$CveTa)Xj-#xXVmR?HiFy zI7x@dE2Se4h+4@pHv_RE474O8K{K*U#G)Gq%swz-cPim-BtAs7m7>Gn+1wIX=3eGr zK^^IsL-O zGG)WnttBm{ZMeD>C0_5f94-KHSXFt}y%s|_FVTcFc*{HYC?ukSn+GXg)3gg z*?E~4HRAh7mOoKIx#A__X{pXnO8yw}WyFt5{yE}l$<7~?{4>PUQk_2_`NxT;M~wVl z$^VdeTC(%Ql7Eh}N`W0h|cxqjNLLszWC+Xm{2g@qH&%Z8yVCKQGK zQK`S;86sDGXk@31r{BE6czU|ra2zsT_|RMe2X)FpRpCUh^D_KsVSDQD;ngFs73r(j z8JX2@(+d$J`^p0X?B8P) zHD=x~H?K8D&u{aL8)J(PAgf09En{rO!>D=23w3UaIrD7ePiVZXzukA+gfY6M3Oa?l z8i+cx&*G|`J6Az$jNV=QICZ1vbnZGzRCYqjt|M9Yq(A##g}Q&jRgU^yi$;z*?>Ph2 z(NqbBv^Z*AmaM{Et!XbvrNH2`a&Q=ieRjk5;%GFF1}E zp`*rrpYzcQvAe=a2ATI9L)*zOm`g|t%8nyYot#6pZ0IJXs(+Mf`OuY0)%CkoNz3uv z_0R0kaFzG2LFS3u{ytrI=8)t1e{}AlaZ6eCjLVdIjv?b-jBw(-?!EqgiCH*Ew+H zwO*fd=;>bPi>1_~nq|M1-%61>bxL56da5dU}5PhWXH!1(|to&t?-(4jC!L0lVlCPhYqhHU+ z%ot;JwSW;7y_zl5JqSh48e}f&nz0pkL$d>+&8p0fJsLM_(P+I4|4eR*6tk5M ziVS{Dh@94y<^I(Y{l}**(U%~qRHDZ%(T|kq^AMfE@_;yV-?2mol;}?=_OTVefi$-h zqV;G6?QMbBdEdD6(Q(9Yjq8b-{`LL2r|=|3r|{h@ZsfB&0^NsLL2+{I4WL$@HkHNfC-3PCeD0?_}p;SL4?~Mg=&O5B)KP<8P zp(g{$MWr>N<`%Nd!qT5DWG8a>%CO$beVsHi*SH+cosYn*Gt(~|W_r!YY4a1E8Mh<- zF@N^mTr-qjUyL~;cMEDi!(f!XMEyv2h3^hu0QrC%j#rZIudMsL@-IInFXknz$<)2o zkU>j2$Snqw|0-PZ{o#lI)r7FtX2h#z&5spD;$Z19=GMl&sHDw4;^3yb{4@ zgahNUe!?~#?p^!jJ9u_MAO01tGWVpkn#i?-j*O?PX_RBS!}@Auu6CH!o?pEFhIOA{ zXnB5-d-F8%^wP{T*345CI-yib87O6-lz~zPN*VYgW!FAk*)Z;B{l}bdOX-45z@x8h8xS6+~9kb8BN6JwhTv81F_(s z-XG~tBnL%zN3%~f!(%_b9nr@f>$8sZTEybJljsS>)MuWSM1OxU9+rr20H3hJ-H{Z1 zcIw$2kk(MQLIThpjfX9lEbU60&G`O=uScDJ_v|Mz=;1S2&!2VP*wfY>z}F(xH!Z<< zJYnkA$1+`gL8F-QWlZml;=7eq=+V$#DilLFy%hPPuzk29H~6yWSX%zsF39jSD8BV( zp%4RoVyaNM4|LDlg~D;r*l!DkKZTP=K)XN}y;CUcBp&o3P(PkXehd07&_!s7-^Dw& zbqmMVTF25w3##@)PCuG1!O?(rHh>peZM#Y@wmz-4S*!BZl=~e3T4n)p3(V*@+av!|DEzzf zF;>>B)$b|yY5J~;R;?jZ*`aNKqlR`(hjTOnUu`vI-`4utv;n`?=hHT{LkxYJ7(VHn z!mBtMPZbKQKn23cl%+I0^od5|(OwT^^7}4iyUJR%`b>F;rr%br)wgQ3KCP;yW<6JB zPAI>_u#w-2rN6T6)mqisns%+q50^c34amRz#*9$!E$h_k?6S_<1EmahZK;yeb2t^=E5!TW=(h(ImcR31Awm2G`f-H9d(E0uh4*glS8}}M zmt{i5#}CEy+)QO=Z_M#A0s!e?Dir%bfucCJ;x=Yb-D*8P| zA64{_qAx0XQqj|jo~Op+MT%aj=t@P~6}?%}UPbRxl=EB^{yFT-zDXrPKgq)TCC@SV zJptZd$@?jP-+0)4M@!2py#YJuuhKoVE!CqhYh1R><5}j>8@eN5-3XdWaP4(h!HCAA zOdT5P@VOkzgB~%ga=~;i9p2=9k;?mAI($#Z)J;8?4!3bV?QlSuONae1{X=y))}_BA zW{!0WPekriUkcl(gByh#FKi<2P4TpQV>%iOUmFbz$@K+OeZn0cjMD~cNwLXTO74mz zQ+RK6788Ih8Hoi+QPl?UlF2RK+_=riR@AY9I|^AM95jQ%9q9}7Ch>YK&=-a+bCyLQ zm`nx-Eeo!b6*U0|GMr$4G=vZmaEy~%wq|+Wm`VwE2=BcjaT4;Cxr5k^9o?A5UTdpU z{tsuGPibya)9pF`ze4Yi?4`oapnfS1eDq4NJkw03hl=yZ*MA3W$-Y@R~7j*9VN^;&qqj4W_)l zLq(S2{tp4Q+w1DyWxAm#;Y!TzMZCzK=NqQ47A>4?Z$%@7S!B<15L14BVg2Ixw<&wh zztEMYqV&$yUW(iQ8ib_6_Qn6l)nhkCy}13oMfS%pw+v=zQTyC~?DhdvG#orW__>V# zzpGfEd8Xfktz z`2XxUZ`>~T!x8A%+voppnEZ@1x84m~Re5H6rq37I3$IdcwCK2EnXnzx7a_2>Kkl_O z$LF!vE%D6xWz@(QU;nVr5)FGSs@zx%&fG2oze0uDFV;2rd+oK?UVEQ&wvKmplz2;1Q&Kc}q-o#KrZ`P=3xR%<)F7-t z%f$Bu+IdWO)|BY1voR-!B-I?8-|)w9$K{%Zx&$mK(*-8|wCYR#(F|TtQt2nT!TN7V7`9M{@KaJ@W~x4mz9#qy z(GQZ!`fC4!4$-=^$sA3(Hcj>(l5_qvgfm?T^i23;32+CBIcKnw4*Mjt9wy>F6aLEt z{;W@%SwBC4{r?U7Gx<+b$4vDuNPzD^y))TyCD5-yqRym$6aknCzZZ69!e39Ie{BN& zISJbPKJ3iY-q$b~X2N$Qi2tqxad3F2^Pf_@oKQ14bWXr_L74h^0O-vRxZ@@G>5Kd(s8t~(OMxjsR= zjwG;uPXhlRLA^8i|8jzQUrC_$s zmZ5d(+^O@0Zx^xnWN7XyIq-FXuNV3wLjNlQZ(;qFp^aa~fr|t_AoRy9`ZbVKy}ngk z@dwCDI%Wxdr_f)^Va>(-hyFDjxE1x$ai8#WMEJRz!`huJJ{j6@5eIrvo{j*^{|wD> z1?MkDc{(l@{=0?$cXL=fB>eG}ap0uD^94R6{Jc=$`viVk;2Q;gt?;u`_$l?>!cWb^ z6~8b12@Cxpi~c{0IE;Oh>)V9=yM_PS)f~`8Jl_@i<3c|}=r0oWo)&nT&|f9ub9yyb zl>Pf3bbFPoHW`6r1dmJvUszJsGiBkgsb5;5I|wRY zt*nLI^|yO*hm@w>D6sBDEm+Y>)mp&QA=km=eTrM$AJ&TXF^Oveue0Ei@3Y`pmE8U= z3;uP14_WXMf$y{6n*=^=!P}($5U)r2*|UN3!xns8@RCaX?+E<~i@wCQuIcvo2>q-C zxYL5)E%XZ#;BE{46QN(50I##)4-5Ss3w}i4eHQ#*1->r_R#vMHlZBg(Hkw1i&D|ohoi_~FKUBTBY`ppV{or3RD z@EQd_s^H=glt~Q*_bK`rA|J@lDh1D0@J$Ndtl%Qmm~@wd*DCs_75rKS9};;*_1>u9 zS)H7r>78Wqa4NWX4t=z3Z5C)*0df4mum$i?o;qDDf+te3^oGDtLv0_bB+~ z3f`ySn-zSQg6Aptkb>tc_&x<+uHeH8zCywGEBHzUA5m~|>&c{#D)?$ee^kM*Q1GJ) zUZCJ(3NDuXnDn@Ui=|11k1M!X@?*H6;9{wi;inaR4MX_Xgo1xV!8LImr2H34giM;D z;2uTaq2TKEG)uvY6n&?H7b|$Sf|n?Go`RPuc!7eiRdBb0U$5ZF(_{pa5lBWL8G&R3 zk`YKoAQ^#V1dkF#ajxX^Gby zX8hyC(@ziP5aS;ro|byeKF0r)cv_|~I~jiu@${2~S;zPv5Kl|ArjPO8Bc7IKO*iB3 zAfA?F%{<0`mw5W=!gMnJ7UF3M)^spFL_96Mni}J8BHm8?>CXWysVCk+{5az`6F-mm zF~(OCKcDzf#;+rumRijb#upM#ORVNF9?#$QG}Ev1^BjK73< zT0%AJ7{7>kS~@j-jGs?DEt#5b#?K|5mP*Y$#-|cbOQfcg@gHMZsF{A6F&&J5k9b-t zH8sY+Mf^p?pZ<*6{~Ga5;>Q{P67jTDYK}4fMdE3R)Es5}v&7TVs5!#;r--K|QFEB_ zj}uQzq2>_dA0nQXK+QhJ|CD%I`ZPNke-H7r5uW+&q>A)b~N z%{s;}BA%8MO&{au6HiNtrkn9|iKit*Gmr79#M9ED>16!JST1a)B}3D}`1gp14%*N7 zw}?m1p#7h){wLl|{5a!ZBA%8C%`wKmNIWeOnxl+=mUvnkG)EZ!6!EkqXbv;}apGwy z&>RA<$JPX(tjE$f6S;CCybx2<=V%X2P3KIG+b`;au69sR=;t&2RhJRT`CN~j)(^b% zP5r<`nx1l4|IO#&1u*cLFpx1h-ekWBwafA}|Mji;fc)+LdX3({<|PW99{FSVT$ug_ z;%t0`VPG_(>4(#whhEAJC_AmZxgA2`kEdFXe5l7(-MdKBYN{}^*6A^?%b~}rUFWiS zHdgFf>C^FDz`n0x-){C@?8_hZLRViX5blsP)F`vYxc3YMM9lC*%9* zIDl72!!AekHrKh2aVOt0UicU#AUR);6gkkAIz4iH%MG6E526zWV3`*`N?MUujMGG; z=@%oJ5yAPGqx5Kju^DLo%O?)-euMlRF85;2%YT_P3ZQY~$8q_q=rol7Dds#b&m#Hl zTwbL|KG9=4vWzNL*{zN(=5;uW`{UW<+32b9RHN^p$hz{gEZDpKnxsv)b&zMK)E&B6j>c#%sTv?iZAcxMWZ{N2&()W|sXC9}> zQZN5(g7@+g=%7o^g$ge1_6*%bZ*A5Bhr(S2EzR=08WB5FHi_d$k!+)xx-(CCeP z?u~qCqymaAaOn}#8#&{Juk(bjk5SQR`Yo8V^k{}2+mND19Qy5tD1g-Yo*O(jdi<0E z7>9+i1@{3*8Zo2)Kwb3{j4umbg33<(EpXJB|4crs@5djqbeTU@&xyT5sQ6V(o@lA> zD^!1hu?TMEkD9l#F-nd-!{y~d{xQrzzJ<%FA+;!>M-D@EFR8-DF|Kn3befuSW$x1b z5OTl~UGI!;TAV)`-JUhM-B%o4pIsbX>%#Og7gZQ{P@?r8%EGLH_OhIb?r<0lEdSE0 zsfKQi z}AULfN$q>#@a=%f^C17=*@ zLs4H{Mv5?yKf2{$(-8A7y2EXJjg`OE(PTe0YM)o+-eUe7$dG3vVu_f>R^5g2V&va` z(t%j*&#qz`!rkBbc9VKg7J}Gc64^mRHeR-Nr>9&`ft~)MKAF zn@05x@Ce{2?oJSZ1JoG^p!sJu;r^24D~*Q?R%4MHHBqfkdn0doBX1f9P}&>0SvUP` z=#-lX`ViMADQM)-SDBz23B2rTaw=Ma>>S1X z0U9}hmN6SsEyFY-?*lAdvy#G!9L}OX!-V+~>lou_tOENW%{kHCu3aGB*pi*NJs*4~ zJpagmYd;VgCqN5{{G1%J!O>G|}++LaM#a`f8br)DVg*PuK@f z;>P5}KMOrH(?<=)Fn*~d|BN1C&8D%KgZ?CE^3cb_crc->$3de3)xshBz%8O%+z{{N z;*$KgjUp+(isWS77=Mqa4-8P7ea0kw8hqJ4*aVe+-kiC5^a&Tu^!C3osp-*&T}MHU zl_*;lIYPtYC-A2%atL{CAGnYiUsi$pXK%zPA3ReQG0P+4xEhq(OI~1;Wo*p{c)IeT zw?<(Iv+P~2C&=P*3J9V@mC@Yv6wKCcE+3o>&o1k~JSDt_M$eqG{-v&zum_e2&P@rI zvU;CD=*s%rv=sZ`&v8mw{?NOVljgl(MBYyt!$3|v#^Xzl4-x+h$$x0{5kDg1|FFv- zx2^?XHu9O|Y4btUfkJZr3cCtOj{5^9KWuhPmoLl5!-gI)%s&99 z22+X}|BEs$x@;knoiG=(+HifL`OetN(lCwYKRxtX}>>fRO?g8BU>Vs$O13zGKeUHtJ`|!L=iF-E;V=~-Dvi?s#4{zxI zWb(G9{RdO}KS|l1gQ=tq4@!FE9hye&L9LjFdoT~*Fm=Dz|H-G}3!r$-lwz-{2vPo& z=tfn<`o+9}H3oU0N1jE-j@!9sv$$uGCIkXDevbz@NNtqQ@Z~(!j&cQWV)Oq5zt0$(-PC0p*PzojUq=^+LYnwvjV?Ez#b3b` z$z}%QN~n-R3QcmjP-N59BF~G&D9{Jr-f<2kgvI}1hrYcl-XFA4R37uTSPR@Mi z5^7;5{WUtp?K!M}u=yBqqe)`$SHRIA!ft{shW$M=A5ZVfcPR3xjU34^{t2vz1P{ZD z2m?8c3;4-Cc^`NX1JizI8tb&UrHtv8S{RFhC!VH!PESG3!pF^&ljz&4NDPydXZ+@p zu6OxoFzNo|+ZdojVjf-fDHeGE-T~0;k>f>=E!z#8P1d~ibi?tE;S#MJI7Xu`@(v1a zK*4Fgv-`i;vJIkqom&14c*UmIe?<8cPfm?@L~w!(vHQ!_ScjlCYy-mQ5!~thP96X3 z{sgTpLM8FLlTOMcq-8Ci)@k_;$=Jj4vlib2u0He)W9!&=wIbRlMWjFAinC#+(<9RR zHcIav;|3PoLv@tDv}FM0FZ5PjiUl;95MppVauCwNE%51AvtS!tjC;Of*JAsFPh(cO z8kuXq^Ex&-?sc7p0zKv&K!Ssg9ZA5zws4L8ZfM_4rvxHj9-}c2f~V{c z{#HC04Y=rL1DCgfQBdQ{utN7MY*69ex`)PsjYeBEeJhrm5Dh)@BiC{0>Tqj}%257! zBkW#qfb}_Dc;})FU2k5bHpBWQJmt#@oE&lUcV!Xc*pD!*(IrCd=qJjU>^s;QUDYlAsQlT;bU5GK- zeN2Jm`CR@BA+P81ytsTG%y9Xv5CH6-~?T8=il$>Q7?+{0mde|AjfceZ3T?{?rsR0?(%A*XY7?xV%Zq zTU2=so}Ou0F2i`}PY4@k4Y&QSBgQXSjjP;Lh6eIel=pcki07TzdOsdYZR82=WMm$I zLpZkFVBP{dQ)>cP|BJ1elY{B!1LSEHWOFfC%v8JXrId@U`8_TGMux!n zAb!PY=Ap(tvhnttEb7KW>KlxkHK@$UX3Pbw0?7z`aU#&tQr5x_t)+ciptYsZ*$}`?p|4u4jE*kFMkp9) zbhZb3!p^2ppe?9XwUDA#R#fEEN@~kW0kl+ARcQ?!-K|jU2s;B^UBR~cR@B+t-F|b| zRn8?{inJ>jb}q?X*~O(y*!4B~Ppd8WIq6I5rKU7>b%8L!lxf+ZuAsBCr6JrM3Tnaj zhK|OT_N~rfDAW;hE@{-3H0HAZHQlqZ#J{Pe&{tklJH>b^%E~!cUFoT)@_8ytDvGYt zwg>Aw8-uVF4EeVOLljiaPoTCbSnu<+x3m>=X`C;inu8(6^K*8})s)lFMq!Q&sprCA zVfWUpy`I+2=76>}81}ccH+8TR7Cv@H;nzYzgiZ@IHfl1!8nw-j#`!DOSNluX*Hjcw zL1h&iJ>Ifnzo&9-O?gR0^^~O0Q|vGHRC}h7@{;oPmDl-8Dl6AlPN8J9q+)%|TAi!o zH>sI2i*-OSR>H}Snj(R|sf)0VYK}SHV zK^<7?-33Yq7VX)Qa!aL_(&I?E;M_SGL-5%J6hFvnr(d3&?1W9t<|wsgt+Qut&*;;> zx#;T4R=6&qf?j-z@tGK(oMd}G71|uTQ?IpU?M(C7oc*(kZG9;fwp}Tuwjq4>;WLcS zetbq!Y9LE}Zm!K)Y|HZ49EG-wb(s{`yYSHwQ~cV6MG%{#KXro*H|km=KJ*CYg^ca< zgu3obEwp9rNh`EDW3viv*}Ky{w!EFQJ+^}WIn}n)DV4SfRMnSSYTJd+5I+0x8BVQ% zEcMg5wgRYoY}qIdGcX4q)-oTm5Q7D8Oir@Dor8ZBHfJq4LGfA%SvF)B;#@1XIY>ab zm-<@4eZcd8Hv%sJzMJ&Xo}H;>wygfNa$9F=@myOLEO=}gdghJtl*;TwnY&QtZc(N` zb*(Kgb;DeyTbj9%pOj^8wmFK(FNz!Oai{%pa*|%&;c>f;M4B5P1F~6=>7;{(?n$k% zWyL6NyJsN)J1K7cv)9^2Q&XRuYs)LPWuyDzF)7Zx9>tbYZX$PYMedP}JITh(u`jcY zq*3DviqDF#o|*Q4Qf!Z=>9*0dCQuJlx&OOiKM%Q&wIboam-+7iyB{(aWYiuys_}UO zm=hS=>uMdvbsfcZ9a1f|8i6fh!CIHOC4TP7+$iDFgNJn}_NVPk-6k>E?89dP{5cN0 zZ0{}>tMxO)su&quZF>~yHHtKQGzINQNy|?`@DNWmc%IDEbwG=zqs5u2@XM-OLNBiM z;Ij`t{27nHY@ajcgLeiW*4l>CD{TAIF`DpsG`-9=3VIZuF?^1L9|tu+PlHb2(>J>Y zWzv3;dUoB#R5#_(0*v3eUkO}}3Cexy zw>se00B2(vJYivAx`I)@?*dj0Y$MM37{Q?HPb;=LyU}|XG;D|fh}xSxk`YKoAQ^$bHUe@#BkTS}iR{UJi{w5< za$h3350Tt==)d0PSjiTv5lECj|6Y85+sqbL(?u9Zsh}GLZ4z{wpgRTKE9m`#J|gI0 zL5~Ugrl4m8olS2}<2X;yO9fpmXsMtZ1#J>^o1i-d-7Dz*f<7YXVL^`x`lg^~1f9KH z)Gz3zg02>{RM3rrHVL{-(4B(r74&{V9})DhpvMG#Q_wSl&cKF7+P{$p$ImRN9xg+%HXP z;TDx0a=$dWKblo;#iiUzO-udKzQpDJXtJF2PvUYvG%1(mC7xa>C7epR6`!s(#mW89 zBqHmVxZMBDD!1ZNZl%(m6_@>6YZZJ!dAYya7tQ@d{UgU0t*iWJIOKkMUzE12Eh@Uo znZ356CdZk-Ja>6+zH@or^5yyY%k!Ptm004}17RUpb_IUT#!l}1SzSYat@XH4Rs{03 zAu;z$I+G4t@Iu-1#PxnAoom+ds1*x3la8#T3@>}rF_Vt8Bk5nOBYnN#-|$)bS|)tf za=V(boE#3+Yq|KPBAC0iy*szQyQQ^pSxckFxaL4tvzFV~+uqgN#%VajCGtlBrY0Ca zWT9YdfC`AS&epJ&OTSZSxnWwi&usz&SqEE?&J8yE+3zU+=0=p2953MyghGK{UP7Kz zDXIbnm^*>CmInCK0mJypWwmk3^<7n~WsV~3O06mdvuP-o)6pH)!`vi>KY)~Dzwzy~)B9kTp)zRX}v(kD5~%F?OSle7dF z-g=3bcQ4=tBo(P}R{dOyuRqeYQQGSi+5p56U~YHez!d3iXiXBo@YrT3(J}N%8vQw8QHEEuy@PzvdI_g1SXMNh30TlK-xye4>BnOX^$e zAF`BpRC7&9XNmro<*oJ88`ZSVE!~v+B+GvX%&ISWN$*ElyuTbTFZWZfy#XK&smHk~ zUg8fyK=GIL%YByXM0s5n6x3-|Rtm9OVcP!^+ zIZ2NJR_m_|alN{FPWM^j@8od&`*%1aTeAIZ(H;E6R<4rGN&MRpKjSB_f>8Z=7F?Fk zwcw;nhoo=e9B*I6kL-Q?G`pEor&JUg*8C%J+;^cvL~jv{rM!h@b1&5&4|AU=C#XxX zl345iDg^i$F+P80i*k~Vih{CU*>3{YevK2Fd*W>v5)wh>zauB6#dto;exSHhS?Ryy zd%V1)Z>YhA$XY+wPJSmNkc>bw0?7y@Ban;eVd{`nUJ&`C!lU zKYVT89nPn_Z~uE&e&vc|@7e?RoYS4tZ!3NNpH{xU_fuO<`|MLcTvE12eU~D6o{T^; z0?7y@Ban;b|2X{qt!*9c{;qH! z6!!Zye_3_8A6pRwx3+YJgQ4p3qSlV~V08eSFmTz-5`RNaz>n7x*$xq!KY%?B{NgY5 z{q4c+n%~#!32pWJ0->&8b$4fL&|ihEB(Rf!*bsqldJtOA|M0&I?>v^Zqk7n*qU+h; z^7|`bhzj`leht&KEQX*OH=qh#e()+Ab*P3o*8Gg0ClwB70e(PYk0x5 zp^fhvA=}*6*%1oUt{IjFdtexm@>ig@;5N27m=-Eotae5e`!`JQhqb{l4+ZyL?5W_7 z?7<|fvrrs zrX|0!gPY{k6hQE`~W+`_X`#9*47mzfr7UfHHl3))0s=K*0JFp%-Q96PmkGp~{Y z6x5pd97wGw?Fh96xG~X@ay(+@VTJ^(>?=bapM}Pq#r%f4N?QY4t2@d&8oTMLfgw>H z>Xx&Tub1O~%vgM0r;TVRR?|uWs}2R)yE+4*V0%OFG#SP~M@K6g$=(h&KT}Nne2bm9 zeV%>G(P7oSok4#kI=>f;s2$l}jLQfBA~e}!#EXeRYi+6Dj_rDKyE<~OkW5>55AiD` z-$=6yA. + + The following license texts are included in the following files: + - COPYING.LGPLv2.1: GNU Lesser General Public License version 2.1 + - COPYING.GPLv2: GNU General Public License version 2 + - COPYING.GPLv3: GNU General Public License version 3 + + Note that the toolchain (compiler, linker etc.) may add some code + pieces that are copyrighted. Thus, it is possible that e.g. liblzma + binary wouldn't actually be in the public domain in its entirety + even though it contains no copyrighted code from the XZ Utils source + package. + + If you have questions, don't hesitate to ask the author(s) for more + information. + + +---- + +LIBPNG + +COPYRIGHT NOTICE, DISCLAIMER, and LICENSE +========================================= + +PNG Reference Library License version 2 +--------------------------------------- + + * Copyright (c) 1995-2022 The PNG Reference Library Authors. + * Copyright (c) 2018-2022 Cosmin Truta. + * Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson. + * Copyright (c) 1996-1997 Andreas Dilger. + * Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + +The software is supplied "as is", without warranty of any kind, +express or implied, including, without limitation, the warranties +of merchantability, fitness for a particular purpose, title, and +non-infringement. In no event shall the Copyright owners, or +anyone distributing the software, be liable for any damages or +other liability, whether in contract, tort or otherwise, arising +from, out of, or in connection with the software, or the use or +other dealings in the software, even if advised of the possibility +of such damage. + +Permission is hereby granted to use, copy, modify, and distribute +this software, or portions hereof, for any purpose, without fee, +subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you + use this software in a product, an acknowledgment in the product + documentation would be appreciated, but is not required. + + 2. Altered source versions must be plainly marked as such, and must + not be misrepresented as being the original software. + + 3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + + +PNG Reference Library License version 1 (for libpng 0.5 through 1.6.35) +----------------------------------------------------------------------- + +libpng versions 1.0.7, July 1, 2000, through 1.6.35, July 15, 2018 are +Copyright (c) 2000-2002, 2004, 2006-2018 Glenn Randers-Pehrson, are +derived from libpng-1.0.6, and are distributed according to the same +disclaimer and license as libpng-1.0.6 with the following individuals +added to the list of Contributing Authors: + + Simon-Pierre Cadieux + Eric S. Raymond + Mans Rullgard + Cosmin Truta + Gilles Vollant + James Yu + Mandar Sahastrabuddhe + Google Inc. + Vadim Barkov + +and with the following additions to the disclaimer: + + There is no warranty against interference with your enjoyment of + the library or against infringement. There is no warranty that our + efforts or the library will fulfill any of your particular purposes + or needs. This library is provided with all faults, and the entire + risk of satisfactory quality, performance, accuracy, and effort is + with the user. + +Some files in the "contrib" directory and some configure-generated +files that are distributed with libpng have other copyright owners, and +are released under other open source licenses. + +libpng versions 0.97, January 1998, through 1.0.6, March 20, 2000, are +Copyright (c) 1998-2000 Glenn Randers-Pehrson, are derived from +libpng-0.96, and are distributed according to the same disclaimer and +license as libpng-0.96, with the following individuals added to the +list of Contributing Authors: + + Tom Lane + Glenn Randers-Pehrson + Willem van Schaik + +libpng versions 0.89, June 1996, through 0.96, May 1997, are +Copyright (c) 1996-1997 Andreas Dilger, are derived from libpng-0.88, +and are distributed according to the same disclaimer and license as +libpng-0.88, with the following individuals added to the list of +Contributing Authors: + + John Bowler + Kevin Bracey + Sam Bushell + Magnus Holmgren + Greg Roelofs + Tom Tanner + +Some files in the "scripts" directory have other copyright owners, +but are released under this license. + +libpng versions 0.5, May 1995, through 0.88, January 1996, are +Copyright (c) 1995-1996 Guy Eric Schalnat, Group 42, Inc. + +For the purposes of this copyright and license, "Contributing Authors" +is defined as the following set of individuals: + + Andreas Dilger + Dave Martindale + Guy Eric Schalnat + Paul Schmidt + Tim Wegner + +The PNG Reference Library is supplied "AS IS". The Contributing +Authors and Group 42, Inc. disclaim all warranties, expressed or +implied, including, without limitation, the warranties of +merchantability and of fitness for any purpose. The Contributing +Authors and Group 42, Inc. assume no liability for direct, indirect, +incidental, special, exemplary, or consequential damages, which may +result from the use of the PNG Reference Library, even if advised of +the possibility of such damage. + +Permission is hereby granted to use, copy, modify, and distribute this +source code, or portions hereof, for any purpose, without fee, subject +to the following restrictions: + + 1. The origin of this source code must not be misrepresented. + + 2. Altered versions must be plainly marked as such and must not + be misrepresented as being the original source. + + 3. This Copyright notice may not be removed or altered from any + source or altered source distribution. + +The Contributing Authors and Group 42, Inc. specifically permit, +without fee, and encourage the use of this source code as a component +to supporting the PNG file format in commercial products. If you use +this source code in a product, acknowledgment is not required but would +be appreciated. + + +---- + +LIBTIFF + +Copyright (c) 1988-1997 Sam Leffler +Copyright (c) 1991-1997 Silicon Graphics, Inc. + +Permission to use, copy, modify, distribute, and sell this software and +its documentation for any purpose is hereby granted without fee, provided +that (i) the above copyright notices and this permission notice appear in +all copies of the software and related documentation, and (ii) the names of +Sam Leffler and Silicon Graphics may not be used in any advertising or +publicity relating to the software without the specific, prior written +permission of Sam Leffler and Silicon Graphics. + +THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, +EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY +WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR +ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, +OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, +WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF +LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE +OF THIS SOFTWARE. + + +---- + +LIBWEBP + +Copyright (c) 2010, Google Inc. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * 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. + + * Neither the name of Google 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. + + +---- + +OPENJPEG + +* + * The copyright in this software is being made available under the 2-clauses + * BSD License, included below. This software may be subject to other third + * party and contributor rights, including patent rights, and no such rights + * are granted under this license. + * + * Copyright (c) 2002-2014, Universite catholique de Louvain (UCL), Belgium + * Copyright (c) 2002-2014, Professor Benoit Macq + * Copyright (c) 2003-2014, Antonin Descampe + * Copyright (c) 2003-2009, Francois-Olivier Devaux + * Copyright (c) 2005, Herve Drolon, FreeImage Team + * Copyright (c) 2002-2003, Yannick Verschueren + * Copyright (c) 2001-2003, David Janssens + * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France + * Copyright (c) 2012, CS Systemes d'Information, France + * + * 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. + * + * 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 OWNER 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. + */ + + +---- + +RAQM + +The MIT License (MIT) + +Copyright © 2015 Information Technology Authority (ITA) +Copyright © 2016 Khaled Hosny + +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. + + +---- + +XAU + +Copyright 1988, 1993, 1994, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +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 +OPEN GROUP 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. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + + +---- + +XCB + +Copyright (C) 2001-2006 Bart Massey, Jamey Sharp, and Josh Triplett. +All Rights Reserved. + +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 +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. + +Except as contained in this notice, the names of the authors +or their institutions shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this +Software without prior written authorization from the +authors. + + +---- + +XDMCP + +Copyright 1989, 1998 The Open Group + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +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 +OPEN GROUP 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. + +Except as contained in this notice, the name of The Open Group shall not be +used in advertising or otherwise to promote the sale, use or other dealings +in this Software without prior written authorization from The Open Group. + +Author: Keith Packard, MIT X Consortium + + +---- + +ZLIB + + (C) 1995-2017 Jean-loup Gailly and Mark Adler + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. + + Jean-loup Gailly Mark Adler + jloup@gzip.org madler@alumni.caltech.edu + +If you use the zlib library in a product, we would appreciate *not* receiving +lengthy legal documents to sign. The sources are provided for free but without +warranty of any kind. The library has been entirely written by Jean-loup +Gailly and Mark Adler; it does not include third-party code. + +If you redistribute modified sources, we would appreciate that you include in +the file ChangeLog history information documenting your changes. Please read +the FAQ for more information on the distribution of modified source versions. diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/METADATA b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/METADATA new file mode 100644 index 0000000..c5dc5ad --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/METADATA @@ -0,0 +1,175 @@ +Metadata-Version: 2.1 +Name: Pillow +Version: 10.0.0 +Summary: Python Imaging Library (Fork) +Home-page: https://python-pillow.org +Author: Jeffrey A. Clark (Alex) +Author-email: aclark@aclark.net +License: HPND +Project-URL: Documentation, https://pillow.readthedocs.io +Project-URL: Source, https://github.com/python-pillow/Pillow +Project-URL: Funding, https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=pypi +Project-URL: Release notes, https://pillow.readthedocs.io/en/stable/releasenotes/index.html +Project-URL: Changelog, https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst +Project-URL: Twitter, https://twitter.com/PythonPillow +Project-URL: Mastodon, https://fosstodon.org/@pillow +Keywords: Imaging +Classifier: Development Status :: 6 - Mature +Classifier: License :: OSI Approved :: Historical Permission Notice and Disclaimer (HPND) +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +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 :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Multimedia :: Graphics +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Digital Camera +Classifier: Topic :: Multimedia :: Graphics :: Capture :: Screen Capture +Classifier: Topic :: Multimedia :: Graphics :: Graphics Conversion +Classifier: Topic :: Multimedia :: Graphics :: Viewers +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +License-File: LICENSE +Provides-Extra: docs +Requires-Dist: furo ; extra == 'docs' +Requires-Dist: olefile ; extra == 'docs' +Requires-Dist: sphinx (>=2.4) ; extra == 'docs' +Requires-Dist: sphinx-copybutton ; extra == 'docs' +Requires-Dist: sphinx-inline-tabs ; extra == 'docs' +Requires-Dist: sphinx-removed-in ; extra == 'docs' +Requires-Dist: sphinxext-opengraph ; extra == 'docs' +Provides-Extra: tests +Requires-Dist: check-manifest ; extra == 'tests' +Requires-Dist: coverage ; extra == 'tests' +Requires-Dist: defusedxml ; extra == 'tests' +Requires-Dist: markdown2 ; extra == 'tests' +Requires-Dist: olefile ; extra == 'tests' +Requires-Dist: packaging ; extra == 'tests' +Requires-Dist: pyroma ; extra == 'tests' +Requires-Dist: pytest ; extra == 'tests' +Requires-Dist: pytest-cov ; extra == 'tests' +Requires-Dist: pytest-timeout ; extra == 'tests' + +

+ Pillow logo +

+ +# Pillow + +## Python Imaging Library (Fork) + +Pillow is the friendly PIL fork by [Jeffrey A. Clark (Alex) and +contributors](https://github.com/python-pillow/Pillow/graphs/contributors). +PIL is the Python Imaging Library by Fredrik Lundh and Contributors. +As of 2019, Pillow development is +[supported by Tidelift](https://tidelift.com/subscription/pkg/pypi-pillow?utm_source=pypi-pillow&utm_medium=readme&utm_campaign=enterprise). + + + + + + + + + + + + + + + + + + +
docs + Documentation Status +
tests + GitHub Actions build status (Lint) + GitHub Actions build status (Test Linux and macOS) + GitHub Actions build status (Test Windows) + GitHub Actions build status (Test MinGW) + GitHub Actions build status (Test Cygwin) + GitHub Actions build status (Test Docker) + AppVeyor CI build status (Windows) + GitHub Actions wheels build status (Wheels) + Travis CI wheels build status (aarch64) + Code coverage + Fuzzing Status +
package + Zenodo + Tidelift + Newest PyPI version + Number of PyPI downloads + OpenSSF Best Practices +
social + Join the chat at https://gitter.im/python-pillow/Pillow + Follow on https://twitter.com/PythonPillow + Follow on https://fosstodon.org/@pillow +
+ +## Overview + +The Python Imaging Library adds image processing capabilities to your Python interpreter. + +This library provides extensive file format support, an efficient internal representation, and fairly powerful image processing capabilities. + +The core image library is designed for fast access to data stored in a few basic pixel formats. It should provide a solid foundation for a general image processing tool. + +## More Information + +- [Documentation](https://pillow.readthedocs.io/) + - [Installation](https://pillow.readthedocs.io/en/latest/installation.html) + - [Handbook](https://pillow.readthedocs.io/en/latest/handbook/index.html) +- [Contribute](https://github.com/python-pillow/Pillow/blob/main/.github/CONTRIBUTING.md) + - [Issues](https://github.com/python-pillow/Pillow/issues) + - [Pull requests](https://github.com/python-pillow/Pillow/pulls) +- [Release notes](https://pillow.readthedocs.io/en/stable/releasenotes/index.html) +- [Changelog](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst) + - [Pre-fork](https://github.com/python-pillow/Pillow/blob/main/CHANGES.rst#pre-fork) + +## Report a Vulnerability + +To report a security vulnerability, please follow the procedure described in the [Tidelift security policy](https://tidelift.com/docs/security). diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/RECORD b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/RECORD new file mode 100644 index 0000000..224ecdb --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/RECORD @@ -0,0 +1,218 @@ +PIL/BdfFontFile.py,sha256=lo7QkxtmkcmZor2POI_xiRvP8BLBxvJcAFKRnnx6fVs,3237 +PIL/BlpImagePlugin.py,sha256=Nk3QwGk6_otspTspcBopPik3gqbe3-cRajRbQ10dltU,15468 +PIL/BmpImagePlugin.py,sha256=gvIYtt6eBthf7F89e4wIb-nuC21ELYL28B6qiITeQEI,17667 +PIL/BufrStubImagePlugin.py,sha256=9g2hzrbbxItGI1IAOGyL3v2ZlU1M1GD-DhlG0JEKSWE,1556 +PIL/ContainerIO.py,sha256=1U15zUXjWO8uWK-MyCp66Eh7djQEU-oUeCDoBqewNkA,2883 +PIL/CurImagePlugin.py,sha256=aLLyY94iXRjiaBqmSEQwuLMsCX4vTVi-FNa7gKzkzmU,1721 +PIL/DcxImagePlugin.py,sha256=HHSoW6E2wTJ21XLDm9Ueip9a5dizMXr_A9OonxvgGsY,1958 +PIL/DdsImagePlugin.py,sha256=LFvMJvavb1yD-1TmRzjEi9mBraOjKB0z1WvgeCAQxS4,9346 +PIL/EpsImagePlugin.py,sha256=OcX72Ds5ivIOVhUcgVDy635PDA0u-tZUVCg7SfRj5w8,15060 +PIL/ExifTags.py,sha256=bzD8J9y_qWVU0TDYzmpFa_TescH4tZGb0Qps8ZTJIJA,9718 +PIL/FitsImagePlugin.py,sha256=FpaZ2HaP2tOghnsXnXVKdtHTphdxYeo_P9wJ5-0nMNA,2059 +PIL/FliImagePlugin.py,sha256=rVY_H7Tl8OL5Iq1ahM51i-43Hk3TH0__7-wW4eF531M,4443 +PIL/FontFile.py,sha256=0RmRsczPgH8vKeLg6L2fGRMXobK5FqImTXAs0nfnR7I,2764 +PIL/FpxImagePlugin.py,sha256=DetKlgYdxphb8oFZNqZsIdvcfNWbsKttrFVzoH7JXjQ,6961 +PIL/FtexImagePlugin.py,sha256=ljpKfr8oeSsfeNeVchd2Z8iB0jhxvtsQDky3txsDPWs,3428 +PIL/GbrImagePlugin.py,sha256=38HOs4E0qb5_x-jNQbcxP6kUDdSgPgLAYCop_RHrs0s,2908 +PIL/GdImageFile.py,sha256=HSUfz-XnNAaPgLfERZcO466QZMfWO5H8l8EocUrC4jI,2607 +PIL/GifImagePlugin.py,sha256=3VM5lSC4lyQuRmvb4A4THYJZz6tMpoHw604Pt5VOBPE,35774 +PIL/GimpGradientFile.py,sha256=XmzOVRuhvVR1jh9pIfwvvJ6IfTau5_wG9hFfPsKNfjw,3396 +PIL/GimpPaletteFile.py,sha256=_kfSY0tbaxJO97QWKB597LhZGpVZZAfeUGPhtxmBiwc,1345 +PIL/GribStubImagePlugin.py,sha256=fFMWAJXaYWN__oexwCPzZnkNkgEZAfqxrcrWSd9W_Og,1550 +PIL/Hdf5StubImagePlugin.py,sha256=dLUoNcW1bTXadlvW70Lfko26qQIsNdCf_zI_wYTKF6A,1553 +PIL/IcnsImagePlugin.py,sha256=i_e6qjSuiTIlItAW-ZuiMSnhDSMKo6sW7JsHT8KXXLE,11926 +PIL/IcoImagePlugin.py,sha256=N00QAtAlUrBXiWqIAjMW1Isgy8PygBBAbfkGOFa__D4,11622 +PIL/ImImagePlugin.py,sha256=IehGdbhWUevEtqz2tqOSapcAScFbtOXZPH9nOQ9DYps,10867 +PIL/Image.py,sha256=2uneihrCcCc_Cqw7BDpYgTvC_f_65dgSslRd7iB6jUI,133256 +PIL/ImageChops.py,sha256=7mZC-G8OS3NbJxv1UzibqNmJSNBDwJ629gmpaupBcXk,7003 +PIL/ImageCms.py,sha256=WzjCn04HsHg6RyLMQK3oRf9_A6dgaCdl2iP_FTzza-M,37171 +PIL/ImageColor.py,sha256=hPgYZQnxaVYzz2TTJfhf8qoobWYanrFFNWBFsv3ypNQ,9084 +PIL/ImageDraw.py,sha256=xri4zT78oaRIq60CDnABvRFHIVbNdxal6hyrPbszSqU,35791 +PIL/ImageDraw2.py,sha256=0sm4-D8qolpzOhQzT1Z4CDXeWR4O7n1eDWkxSWql4RU,5501 +PIL/ImageEnhance.py,sha256=CJnCouiBmxN2fE0xW7m_uMdBqcm-Fp0S3ruHhkygal4,3190 +PIL/ImageFile.py,sha256=b0s8wpaEMOxLNyURdzRfFKd5VRdvqI2_xUuHI63JotI,23539 +PIL/ImageFilter.py,sha256=xD6_EevS_D9hRtXB8aDZ06c8Dro5cpqNAnoSIneYJPA,16560 +PIL/ImageFont.py,sha256=VGE0TeAf1-GT1No5SR60iK5foVUIxi7qQNxPniLjIKA,42024 +PIL/ImageGrab.py,sha256=upyAj33kGTc0T6MY2r7cZ72eK5oQLVy-jUrdJ66sL1k,5327 +PIL/ImageMath.py,sha256=gPvQgOG9_yYcreJyUshxGnz3GcgCb0itZ9Uv38QjKWc,7357 +PIL/ImageMode.py,sha256=ToNN9DhhnUijbolcYpHVoqNt3wpFVas77NfhxoFzUvo,2914 +PIL/ImageMorph.py,sha256=PWS1-d4WgiWZxLJ_SyhvvgTDXIFS8DlvUpxLWlw9yUU,7977 +PIL/ImageOps.py,sha256=v43rFr-1-ZRVfF9rmAw1T-6iDcYbNbRkftk-a1uOuAw,21424 +PIL/ImagePalette.py,sha256=zqnIJFY1Eyirk2y76ocesuVtuabL8OfAo-aw6oWPmPA,7908 +PIL/ImagePath.py,sha256=lVmH1-lCd0SyrFoqyhlstAFW2iJuC14fPcW8iewvxCQ,336 +PIL/ImageQt.py,sha256=zDkvdqm3adlrV1nxF2r9uCBUsXcX6YU9tbqK4FrKylA,6366 +PIL/ImageSequence.py,sha256=4vey85AWprZthqCFEqpaH-65WIP5OSjHTS6gH2c50y4,1872 +PIL/ImageShow.py,sha256=YCHA6sP0TBnVi5iN-eyMKJERHBpq-gkWWEYcLvr8zlU,8308 +PIL/ImageStat.py,sha256=GkE2NEsd6c5QrDlvIOt5xUEqSZppHzQ_4tub66Dervg,3924 +PIL/ImageTk.py,sha256=Hkepk-26IFTdm2U7MNWMs-HqD0AUjTW6HI9oKS63uN0,8461 +PIL/ImageTransform.py,sha256=oO7Ir7j_5r4DeoZ-ZgqW9FO099cP2gHdE32SQdfmW_s,2883 +PIL/ImageWin.py,sha256=1MQBJS7tVrQzI9jN0nmeNeFpIaq8fXra9kQocHkiFxM,7191 +PIL/ImtImagePlugin.py,sha256=VRBqJ7iuF-iVln-JPTilaSSRhLjTsfq9DSEhxoEYt6s,2579 +PIL/IptcImagePlugin.py,sha256=LZa9f9A2hjTnLuaAuD1Zimozi-vIASgsikc5eCmtL3I,5777 +PIL/Jpeg2KImagePlugin.py,sha256=E47q26RzlNxeaI49pKheBwyDQdHhibleb7uACJGzq70,11583 +PIL/JpegImagePlugin.py,sha256=zu3KH7nxlRyFG_RPwTEl00DwTTb_xX0a2xVAHbc9REs,29088 +PIL/JpegPresets.py,sha256=ICr_9Xeh2FoY5vMpNbPbs3HdmQfhr3C7uyL1PE7BShk,12343 +PIL/McIdasImagePlugin.py,sha256=J_oMX8dg2b1YR1XJyzm2TOxdtNfF52a3llMRflD44rQ,1796 +PIL/MicImagePlugin.py,sha256=HP_LCGqEiFKF-Km6-_VHJINtA6NleUrg78RCwnLE9Xc,2514 +PIL/MpegImagePlugin.py,sha256=Nh55XKDpfmpc6G21SQKWEZm8UQJ5iMejiVHGgaGhS9A,1823 +PIL/MpoImagePlugin.py,sha256=ivSlGji16r7D7lx6nFpdtdu7LnkSj9XeDKEuIOs9AwE,6289 +PIL/MspImagePlugin.py,sha256=HS_5fc5w6DzBlFVAuY3HHcUhBV5kM9K5Km_0sODZ8HA,5612 +PIL/PSDraw.py,sha256=96uX-it9Ey3Vm5Okhiv7ScgU0G4AtVKIlTAEMAszp1E,6525 +PIL/PaletteFile.py,sha256=EoUcTJ8iwiSVNE03skj5y5qpZhXlFi6mTu3bqxQorMg,1128 +PIL/PalmImagePlugin.py,sha256=-dAS8BfzSCQfEhrBBFdGQdNB6pF68QVpfMGRgyssDmU,9144 +PIL/PcdImagePlugin.py,sha256=iS5i6IHndLKlUTQI1OxcLmXfEa6VRsEXChxCaY6KVKU,1496 +PIL/PcfFontFile.py,sha256=YS0xp_pKvfBhvcEsOljPbwsFDUwSf6ZU9JmuSwY8OrY,6757 +PIL/PcxImagePlugin.py,sha256=4Ds9t7Mqz1LKAcJJHw2hJI_DIW7EtxqZdSKkOZj4edQ,6021 +PIL/PdfImagePlugin.py,sha256=6_PHL47TwgfxbxKZTb8Ya6z14OzS_g6gw1aUaFdGc7A,8980 +PIL/PdfParser.py,sha256=qITSjToIONKh7j3LvsQ2-iCsgb_d2de0LgeahwNOmEY,34401 +PIL/PixarImagePlugin.py,sha256=v8Ka_s6TIldo0YpL0C7bLnC9btml_C47lpkXGP-XOHw,1651 +PIL/PngImagePlugin.py,sha256=YoZboYSnmqELhp8s8XF1f1ZRhDCNeY2xk84Z_X2D0XU,46374 +PIL/PpmImagePlugin.py,sha256=uuAHH5BXyXR7tI7eyZWRt_VfRPwGJ83y6NO1lf1Ac1g,11399 +PIL/PsdImagePlugin.py,sha256=h2DZm62irBjDvPzLv4yoVXhVsFo8XF5OyGkrd8XFP8o,7535 +PIL/PyAccess.py,sha256=WHfPT4Rs_rrcGTZ8PlBcNNy3MclkbtYXNFObjvr-XIU,9898 +PIL/QoiImagePlugin.py,sha256=xGI4_icUqNBP-yEsD9H5KXAR8V1h6kc7Grjj4jRVABM,3617 +PIL/SgiImagePlugin.py,sha256=jRm7KUhSYFB6WZhISGKTYx9aL9tNXmtSvR28loLRZqU,6178 +PIL/SpiderImagePlugin.py,sha256=J5Az7hjHD9ClPKMiaNQ2p7YuDSUNDEOdC3EatUlOz1g,9470 +PIL/SunImagePlugin.py,sha256=r7yNMWtv30v59gn5e8W6R8LleGVwBWtVcpGunqI142c,4398 +PIL/TarIO.py,sha256=1zNNZmPtgI7ZQ3yCSJufh9SkUTfJ5msEf6qNdyi1PKQ,1491 +PIL/TgaImagePlugin.py,sha256=zcX1dk8kkpQPK-qFmEX09UCJguMKtTBePjRhFNy6QMM,6575 +PIL/TiffImagePlugin.py,sha256=YuLqp39k877knhd8X8gsAGlY9Jo0kKPsOz0QlVM6x7M,77008 +PIL/TiffTags.py,sha256=d7b3bnEhSkiG2W9DzReGE4zbcdAogznonqLmD3HEJkc,16814 +PIL/WalImageFile.py,sha256=K6LBAm9RN0vmwJUYG_bZZWm_gI-fidmjwmXcudymGqQ,5519 +PIL/WebPImagePlugin.py,sha256=9pjIkb2dKLJOgLQXlTnYYTOHedCYQaqLvWbhk-peiDg,11366 +PIL/WmfImagePlugin.py,sha256=WnTGyHLsWmPRXNJAp8xBMZ00yyn4afijmCP-hp9CJBg,4689 +PIL/XVThumbImagePlugin.py,sha256=wqe8AYhV7h9yNY3Q50duXcvfl-KR8vybSdGBfHjSEHI,1986 +PIL/XbmImagePlugin.py,sha256=XNyfl9RSNCcm1iCXc3TC3xerLO7FBE8cQ1emec926_8,2487 +PIL/XpmImagePlugin.py,sha256=D5e8cvmE5GLyda4byo_ZJwiNDQcLcHKhMO4RiCrjtiU,3184 +PIL/__init__.py,sha256=I4crowTvU4ZZLI15VbrhhxVJhSSKJqn1MHcLLXPbLns,1979 +PIL/__main__.py,sha256=axR7PO-HtXp-o0rBhKIxs0wark0rBfaDIhAIWqtWUo4,41 +PIL/__pycache__/BdfFontFile.cpython-310.pyc,, +PIL/__pycache__/BlpImagePlugin.cpython-310.pyc,, +PIL/__pycache__/BmpImagePlugin.cpython-310.pyc,, +PIL/__pycache__/BufrStubImagePlugin.cpython-310.pyc,, +PIL/__pycache__/ContainerIO.cpython-310.pyc,, +PIL/__pycache__/CurImagePlugin.cpython-310.pyc,, +PIL/__pycache__/DcxImagePlugin.cpython-310.pyc,, +PIL/__pycache__/DdsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/EpsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/ExifTags.cpython-310.pyc,, +PIL/__pycache__/FitsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/FliImagePlugin.cpython-310.pyc,, +PIL/__pycache__/FontFile.cpython-310.pyc,, +PIL/__pycache__/FpxImagePlugin.cpython-310.pyc,, +PIL/__pycache__/FtexImagePlugin.cpython-310.pyc,, +PIL/__pycache__/GbrImagePlugin.cpython-310.pyc,, +PIL/__pycache__/GdImageFile.cpython-310.pyc,, +PIL/__pycache__/GifImagePlugin.cpython-310.pyc,, +PIL/__pycache__/GimpGradientFile.cpython-310.pyc,, +PIL/__pycache__/GimpPaletteFile.cpython-310.pyc,, +PIL/__pycache__/GribStubImagePlugin.cpython-310.pyc,, +PIL/__pycache__/Hdf5StubImagePlugin.cpython-310.pyc,, +PIL/__pycache__/IcnsImagePlugin.cpython-310.pyc,, +PIL/__pycache__/IcoImagePlugin.cpython-310.pyc,, +PIL/__pycache__/ImImagePlugin.cpython-310.pyc,, +PIL/__pycache__/Image.cpython-310.pyc,, +PIL/__pycache__/ImageChops.cpython-310.pyc,, +PIL/__pycache__/ImageCms.cpython-310.pyc,, +PIL/__pycache__/ImageColor.cpython-310.pyc,, +PIL/__pycache__/ImageDraw.cpython-310.pyc,, +PIL/__pycache__/ImageDraw2.cpython-310.pyc,, +PIL/__pycache__/ImageEnhance.cpython-310.pyc,, +PIL/__pycache__/ImageFile.cpython-310.pyc,, +PIL/__pycache__/ImageFilter.cpython-310.pyc,, +PIL/__pycache__/ImageFont.cpython-310.pyc,, +PIL/__pycache__/ImageGrab.cpython-310.pyc,, +PIL/__pycache__/ImageMath.cpython-310.pyc,, +PIL/__pycache__/ImageMode.cpython-310.pyc,, +PIL/__pycache__/ImageMorph.cpython-310.pyc,, +PIL/__pycache__/ImageOps.cpython-310.pyc,, +PIL/__pycache__/ImagePalette.cpython-310.pyc,, +PIL/__pycache__/ImagePath.cpython-310.pyc,, +PIL/__pycache__/ImageQt.cpython-310.pyc,, +PIL/__pycache__/ImageSequence.cpython-310.pyc,, +PIL/__pycache__/ImageShow.cpython-310.pyc,, +PIL/__pycache__/ImageStat.cpython-310.pyc,, +PIL/__pycache__/ImageTk.cpython-310.pyc,, +PIL/__pycache__/ImageTransform.cpython-310.pyc,, +PIL/__pycache__/ImageWin.cpython-310.pyc,, +PIL/__pycache__/ImtImagePlugin.cpython-310.pyc,, +PIL/__pycache__/IptcImagePlugin.cpython-310.pyc,, +PIL/__pycache__/Jpeg2KImagePlugin.cpython-310.pyc,, +PIL/__pycache__/JpegImagePlugin.cpython-310.pyc,, +PIL/__pycache__/JpegPresets.cpython-310.pyc,, +PIL/__pycache__/McIdasImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MicImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MpegImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MpoImagePlugin.cpython-310.pyc,, +PIL/__pycache__/MspImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PSDraw.cpython-310.pyc,, +PIL/__pycache__/PaletteFile.cpython-310.pyc,, +PIL/__pycache__/PalmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PcdImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PcfFontFile.cpython-310.pyc,, +PIL/__pycache__/PcxImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PdfImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PdfParser.cpython-310.pyc,, +PIL/__pycache__/PixarImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PngImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PpmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PsdImagePlugin.cpython-310.pyc,, +PIL/__pycache__/PyAccess.cpython-310.pyc,, +PIL/__pycache__/QoiImagePlugin.cpython-310.pyc,, +PIL/__pycache__/SgiImagePlugin.cpython-310.pyc,, +PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc,, +PIL/__pycache__/SunImagePlugin.cpython-310.pyc,, +PIL/__pycache__/TarIO.cpython-310.pyc,, +PIL/__pycache__/TgaImagePlugin.cpython-310.pyc,, +PIL/__pycache__/TiffImagePlugin.cpython-310.pyc,, +PIL/__pycache__/TiffTags.cpython-310.pyc,, +PIL/__pycache__/WalImageFile.cpython-310.pyc,, +PIL/__pycache__/WebPImagePlugin.cpython-310.pyc,, +PIL/__pycache__/WmfImagePlugin.cpython-310.pyc,, +PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc,, +PIL/__pycache__/XbmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/XpmImagePlugin.cpython-310.pyc,, +PIL/__pycache__/__init__.cpython-310.pyc,, +PIL/__pycache__/__main__.cpython-310.pyc,, +PIL/__pycache__/_binary.cpython-310.pyc,, +PIL/__pycache__/_deprecate.cpython-310.pyc,, +PIL/__pycache__/_tkinter_finder.cpython-310.pyc,, +PIL/__pycache__/_util.cpython-310.pyc,, +PIL/__pycache__/_version.cpython-310.pyc,, +PIL/__pycache__/features.cpython-310.pyc,, +PIL/_binary.py,sha256=E5qhxNJ7hhbEoqu0mODOXHT8z-FDRShXG3jTJhsDdas,2043 +PIL/_deprecate.py,sha256=iFhNhOQ_OEFvD3x4NE4_MEsnzO3Wdl-fzV6AOe4s_3I,1936 +PIL/_imaging.cpython-310-x86_64-linux-gnu.so,sha256=ujtCEn5qyIqzUZ1Q6r1THX5t1YFE687qXbigEGD9l1Y,710913 +PIL/_imagingcms.cpython-310-x86_64-linux-gnu.so,sha256=bjtKdLV_e535Pj915I7VDC2Flcf9Y0jfyjoO3fBIlLs,47121 +PIL/_imagingft.cpython-310-x86_64-linux-gnu.so,sha256=pGBNpwrqf6JcMtTNkQ68XMMjVKwly1PCYygP3K8hf4I,77073 +PIL/_imagingmath.cpython-310-x86_64-linux-gnu.so,sha256=oA3xqtKFGWBjs-gKzTTCnlFOSCrMnMn4OJi0hrlQlmo,31344 +PIL/_imagingmorph.cpython-310-x86_64-linux-gnu.so,sha256=Pd1exIBz46tWRers_OQS_EYhOdPrBPM-3LaMIfIm7ew,14992 +PIL/_imagingtk.cpython-310-x86_64-linux-gnu.so,sha256=4ivNzl64Qakx3PtgecE5Gz1HOEtPEqbzBvQLyYLAvLU,14992 +PIL/_tkinter_finder.py,sha256=PApqlh4yEhsM99fojTtsqNmgL0v_9qRFEqqRJYlY74c,503 +PIL/_util.py,sha256=7897Hlb76Da6zwBXnh4ASp-DOw_1dgc2HoZZ-9FTWaQ,369 +PIL/_version.py,sha256=xd_m0M1kzhH2RNPWuROwH2UGFdJl68we0_HibQuv220,51 +PIL/_webp.cpython-310-x86_64-linux-gnu.so,sha256=c2RAd9cX2MitRQ5Jo3WPEOj3Ea9ohGZE6NWh5sWMEUM,39417 +PIL/features.py,sha256=57SM06GH_FCbRtlIlz8yN8LImIpo9O2opicY1Kdj2zI,9618 +Pillow-10.0.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Pillow-10.0.0.dist-info/LICENSE,sha256=K90RjgGaYeDw8U6GalErfx-kD86mRYFdvrdBvY999NE,31127 +Pillow-10.0.0.dist-info/METADATA,sha256=yA_OeUlOUJtPiV9GfM-LsRb5JP8ZfYxAUh1TrE1qoHo,9454 +Pillow-10.0.0.dist-info/RECORD,, +Pillow-10.0.0.dist-info/WHEEL,sha256=9rnmjtxhPKPVe0Tp4jfKCIcCRc7MAyKmWpLWATLJWWk,114 +Pillow-10.0.0.dist-info/top_level.txt,sha256=riZqrk-hyZqh5f1Z0Zwii3dKfxEsByhu9cU9IODF-NY,4 +Pillow-10.0.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +Pillow.libs/libXau-154567c4.so.6.0.0,sha256=BUhNJL94y47QMWnxywZyBNgpy3ryHeiCBADSnRFeQyA,22081 +Pillow.libs/libbrotlicommon-702ab7f8.so.1,sha256=4byXU4c8Kw8xNTK7GSzwLClvy-0z0Dk6WUB1boNrZgU,140113 +Pillow.libs/libbrotlidec-7a796284.so.1.0.9,sha256=mSvRiQ6mPsQ0vCRI-rs6FxIZVaYXsn9Ly_SNHJh_l80,54001 +Pillow.libs/libfreetype-8b16add1.so.6.20.0,sha256=x-N_0VqzMmvrPWQn_aYVE3vJWSfGZ_BjtgpF5EBXWYw,1430857 +Pillow.libs/libharfbuzz-adaef2a2.so.0.60730.0,sha256=OgUVABNafGRITb15afT5E0ONa9PzSe_0-a9kha4UNvk,3159841 +Pillow.libs/libjpeg-dab02bf4.so.62.3.0,sha256=0isE9IzzmNHQonzOhGaVAkx4zCeUdClsg1s8XaD20vs,683249 +Pillow.libs/liblcms2-0821774a.so.2.0.15,sha256=8XrlZSyPgEtSJgYjfqdSxArEEK7hIx_9-PIJV0FuCh8,502529 +Pillow.libs/liblzma-9dd5c569.so.5.4.3,sha256=fyOOaYW_lyazOi5smV0mTJSI2Zg8iqNajVw56vCt_c4,270265 +Pillow.libs/libopenjp2-20e347f0.so.2.5.0,sha256=36Q8K57KjogaIVDJWcU7Bl9uHn4XuLl6EkhquAF1TlQ,578001 +Pillow.libs/libpng16-39c06ea1.so.16.40.0,sha256=PFNeHs4qMFBdmQKSLCANTAuxC1ELkKMM2VLWTSctbCI,281937 +Pillow.libs/libsharpyuv-20f78091.so.0.0.1,sha256=jCg1XQ4-9EpGfwdfBBAutIfMfAHhNcLi-cS20-2_-Go,37713 +Pillow.libs/libtiff-189042a3.so.6.0.1,sha256=2ceBIAXKpMQUUoVWE8CMKJ5MdBEJVFOs9IQmZHwTlI0,696937 +Pillow.libs/libwebp-8b6d8948.so.7.1.7,sha256=2h2ctwu-5-eqZiPaZPJCWIIYtJ53nXWCphYkkT9Lv8I,755753 +Pillow.libs/libwebpdemux-fc93391d.so.2.0.13,sha256=Gmu_9sQCy4e5vrDO_UNUWOwP_u18mZ70XZnhn-bY110,26121 +Pillow.libs/libwebpmux-b3bcb8ec.so.3.0.12,sha256=-HkOAwqYCprVo2ZHYvqsPGKoabaq5sCrpsZgizJMBKs,54441 +Pillow.libs/libxcb-cd9c1006.so.1.1.0,sha256=utVY1gWATUsRGD1FIp_gARUaixeE2bapCHBz9T7tmpw,247305 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/WHEEL b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/WHEEL new file mode 100644 index 0000000..e8b03bc --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.40.0) +Root-Is-Purelib: false +Tag: cp310-cp310-manylinux_2_28_x86_64 + diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/top_level.txt b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/top_level.txt new file mode 100644 index 0000000..b338169 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/top_level.txt @@ -0,0 +1 @@ +PIL diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/zip-safe b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow-10.0.0.dist-info/zip-safe @@ -0,0 +1 @@ + diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libXau-154567c4.so.6.0.0 b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libXau-154567c4.so.6.0.0 new file mode 100755 index 0000000000000000000000000000000000000000..ff06a58be7b9ff80cee9b8eb45d5e9a28cf67d1b GIT binary patch literal 22081 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlicommon-702ab7f8.so.1 b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlicommon-702ab7f8.so.1 new file mode 100755 index 0000000000000000000000000000000000000000..32d70febf2fb0b59ed975c5dde408029db6897c0 GIT binary patch literal 140113 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlidec-7a796284.so.1.0.9 b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libbrotlidec-7a796284.so.1.0.9 new file mode 100755 index 0000000000000000000000000000000000000000..1083d7062beb2bbb9b8f88b545602473ac4299f3 GIT binary patch literal 54001 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�R`CgWJ3%3|C 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� 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

v4^J9sb^zGyPc%QX%KRzSM7!*t{Z?uEMd*1K| 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

C#+ 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 JJR@F^{a^VCj?(}D literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libharfbuzz-adaef2a2.so.0.60730.0 b/Color_Sorting/.venv/lib/python3.10/site-packages/Pillow.libs/libharfbuzz-adaef2a2.so.0.60730.0 new file mode 100755 index 0000000000000000000000000000000000000000..e3bc296fc6cb0d023c999b115932524d4bd98f14 GIT binary patch literal 3159841 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

cSjA+gReHRbt6WARLKp7K4vHN6= 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%0Dk-`A6vT=d@eCKObN1 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

!t zrSl)M?)yBt&m$Nl5LnOT&QI9N{tChF3osyiJpDmw6&w=3BcGGaEf(c8VrE2H3zEzK{nEe2n6sxuZ3qo zuJIJr$951y0tp0{jO-XOBoMqXB>yG*6C6mOSSPuNRYq_xy(5OzQBIz?jC>R2xZV!g z_idh{Q%Xh^oMCH@b*^fq)l4N?d|-06B3*@ofwTOG2XINC81LAb|&{{9DtS%R^{@+J*8D8Pyt%@845Hc|@E0AJ}`{)ulf#9e> ztJRQ69R%lv7?nURPDuC$92``8$8t>0P+0gJ1=$YrTk5luZ#CVD zRi?;Zrt3yjK|JxX6TF<^!44e+{6GMLw;t3(YF_aTFBe0w0)f_g5vNE4IMLOOfU7f9 zbeF75L7U3jnkiKfT0Gn!Fhvwl;})M7rm*7rmuCQOWt3KY3+|{q?FvM|@)n3_VvrGn z*98&?MsTn;kbtoxnXVmOveHyRJnOI%d6TQ-pgcB(ICa#JXQ$xm(!^bGF$BwAeGcAc zrpU__rou98qVjqu?qVT( ztsuI((Mx_)#-CG`UNP!IvhLveY-|2eaAxtK_>woP^Z1h%f5AB| tzJl8EbhiETAaX~(`HstE|1RlB=W^ zR+l>cANH|7pnrzfp7sy)&{Kz$;<_flZ-z76;p{gB85e~L4&R9KO^|0l z2eoxQI(+a&pt44MUdPE9Ht8X5OWj~jzh{x$T;N;2z9sv|L5x68%G&}wEODW?D=;m%i-EFiKU1q z>22x^A%*};9Rng;bc!x9$5(iT8`9znEQbv>lH)TfKj36V8rG5v{2Oj@iz0{9Id0s> zyYxA0@fCRX5ra6<){3^2J5U7ojL3)FV`#-zPI<7g`e6NrZ><>bf%VSDx((JJt+fwU zmk(~7#~^AC_U()j;O-cu1T5R253S|S8118#3v1A>_dy1GW;HSr{2sr{_uxPK`>1tW zr}em-(v;23-wZecI`18I2)J18msK-~%gJpDrRlgOyZ`vhtlI`vno4Q>vRlj9(wTkr z;PKOrnQfpydiZoXUX*H4*OhDpe;+WdWDz%=xn7;=fbL@hy9RauG?nq&DY2(nnC@tj z)|x>nxosIub5ZK;lk>8PfBjy{O6t3&&=D6Zky+hTGJ+VI<(X=rg$Lp7S8kQ2N~{mbxcKi{Nz-Ex zw5mn<38?B*fIiv74Exw62e?mrxQ`ieH^_*wkMNL8@PsVy-RkT^8|eso-jAX(E<_aR zUKBwRi`?k_DEeg)=Npf^=2(x`@|u{eD&=R8$c;ShLtv7XrXUlT_Py{CgH-#(TBpAJ z2pk$o^WaERU|R_5)B`EzK(vrHMHv|H_4BgUEE)dS>ukR@eWc83{%A;iI`a3X{{kZv BM|}VQ literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MicImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c5aa7ecea6235307d0f1fab226c31086a1d5d942 GIT binary patch literal 2173 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/MspImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..befdd695a3d0239938c6f8c6ff2278e9d293dad6 GIT binary patch literal 3114 zcmZ`*TaP106|Snjx_udsce0mZ6HK@oZDv@IKu8NL$po?}J3C?%R2oGa%H4BMopu?TNS2`~LsNmKs+_Z$tf=ZtU|dz!Fm4ID zx+?E2tFnq_4rgdLYPRW z|M8-dQl(3#7Z24Pl=o1wIz(Z&{3me-TRdcN;B3xa=v(4H^x24$#~D>V>?coOFwE|c zwCeSbbqPu^jO^0f|JIeAn*^AdV((ZVuk~~}AI>~p_q_d^d9UTvc+4|a{N)Fct z{q6OU?fTK${U5An{an2>io5&R3C2A7aQ$&MvK!hOjCcCU+UUdtow(aoqx{?OnhA(H z*A;xaD6c%!_Yft!3!xZplC_28ZAXf>D;??L)II58qrRzJ_@RR{&f}+Blj^g6BGaR+ zxfS=5{FS34yil=6_jgnZw#Ux6hlz+yhGj($E$t4i6!G2$w zx`mT_1uxuF@k=&!4sI8YboL#6PkPtJ`339vWG91DVZY(2=m}^8=$H)bb(QvoenJ?- zI>KAPudMXk9S*CK#6<#OS3T@{Pph^$Z({wEr6kRpani)bn>`$XCUnf{1Sj?FSXzB| zS9SNZ@zC)5I-qVJLWdB>(ecp>VFy|9!qLmrNwa90Mb{u&krBO-akYx2y)sjNdXnVv z@%vh*+ITun0AL50HSRE#%6OfuKT*bA$eb|kp``{r!!zRyvmFy&t*URx>)6_V$!${fi*jH6UYcVog^NrPRB%@4pucDP`%RW z9E{_^d5_;q^)Sv&WAW`sm34K0l=ss_e+!Wy9bb(^eMA*WH>f-41M_oGhi-%61oLa#C1-Fs|t}_OpAs_%6XU~-az;RaD z3OnUfXL1)>@64C(jB}O;XQA}0UFi!Xy62AVjTRaitgsoMiK+XHB`Yqh_sS;^Ih%T% zO#&HC{k&56r@Zh!6B61#dPn?-bR2@xhk85JScQZ9lo*mL*72STkhjSBSbGyS3{7113wEfUC3&i5Y4 znq8f^Slz29P_VN)=3bt$^Q2zKB`$Ba`1~cVYHmY}u%VYAzTyuI|3Fiop1k>y9w*&6 zSBto$cy0ERrcRHV!+2za?sYczn(BC@x-@K3Yi^(9Dr=^TVKzpMc(*%QeJ|B|JbK;S z8q^6gn7_nhowOQ8^ivbOOH)01VoEe;taW^1JP<&R06w;%D|(W`R_z-<%k{XMoANlJ zG~emzbZER2veLIOz44UI1;LZ2i=SPT=8M7~A~fOB-t`rpkT`5%Swy@CpLC$-|d*$K??ZKNbJ2y8@{uq5#Kx zk$OVtLf+st>OmSp>r403dL_CX<%-GjRYb2Xylu8TP1L8qL*ly-rqmgY2ZOBBllloM zFZp;;v)ShR==cpvMoAml=9|bhq_c^+>!5b=5bg+eHdp);6+|E?1u+LoqdKC_c}|4J z3&)Zhs787#Z0aJLAkHC!Q!Ye-wDf>MhLFfHpOB_xHPHh^u5DLryL#EK+4j=45p}Cs zhJ`!z3Kto}pZbMY_@GVi-~-fL*&rKBtA4@HTo5JJK~Z|}aqgc51p`^$kSnwbWVtuw zO(H@1$s&4e-P*KlHEDF?gm}>6tVs;ioCM7{Blfd^pHukRe~yjVev-!vb|d|q4zVQ` z3d?ymg6Tg&H%Qzg@eahCE@)2wEcynC6%rKWiwFz#*Qow8600QMB=HLfYqXwrfJWM1qGe$eiG{wZ8vP!ZT}B`M;3OkM0lpO zb#l&77JjC#)lNUll?G{A;^-@g~uD?e^uXMC^)3`KI$GJ)}BHPy>--Hhqto?KP d8Odm2;hhkqPq7&KjZ))oWh)HoZ`F81{11%?*>?Z{ literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PSDraw.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..31900c7b38b843c775f3c25c74aec653fcf3d171 GIT binary patch literal 5630 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 Hy>{#0Swqjt literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PaletteFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..37f53fa0fcda187135d899e7817c3027ff8c71da GIT binary patch literal 1393 zcmZux&2HO95T03*A}z~E>bTBNfxu{rwhCY=Z7(?(M$o1W0u+W38!aNVU}^43rcEv7 z-L(@5)TMGCpl@Iw`v85JJ@nF(4m}0vp@%lJl#R$~mY9z-JF~O1-ws(UE!Ba>-#`7% z_kDmroiRT=G9HoWy969K=FrCuB0K@kxOWQNo3IY!{th&QDN;}qEh`?Tq+J<|tVbmJ zBLV>(0Na-TGxSiy}81YS(i_yBnwf#i$T&T5fq1JYV zN_vG{*Jenb!7O&IOJTZYy=PCpOx>oJV}X>2W2LVUUPQkbn;A5Cz2{A4}iD&E_ z#;jy|S?-pM&K&&0ZUe6!GWEex-FPLNAP*0H^$Cy0p7Bds|1D zTGd8MBs|ZguwE{tUECQ;lf3*|sY2O65Aw{|`gciwEUGEx_^|##kx9zsYms*?>kcex z>-BZd;)x1f1S*SU?Y&i=jV`&nMN#@b!3r`Kq0bmzM}`gbF~a4_YLM1I_U|qKF0#Lt z-yf~K>k_UI=@@qvR^L~H6za#SL%Y;gP23{hZqTd^Rq~==aM46{hwQhjtoMYu;OBF4 zS6nu5v^u~4n~<$$=*}gRzKCO6k7LSwoIAY{$4AFWe&Gq@m=|drt9x$C4;{Gw(A?&( z>u1;Kk>)DZ?#~#3PXtA*aYwoNt)^$gcrTNQ8dmpF&Auy*jW%YrY&v4JYq7?)W$!hV CggXxa literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PalmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fbc07c6a44218897de0b55f361fb54c5ebe89bb6 GIT binary patch literal 6775 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 F{2!3Iwj2Ne literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PcxImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0b63ae33517efd9977c267f6826c51817d9e73bc GIT binary patch literal 3756 zcma)8&2t<_74Po(*xA_+tyZfq$95JwPNKrLVggQZTq(!4VvLQViXgxi)Ur~KP#ROs-i{I;6$uecCSZQ9re*OBr z*RQ*OuiJ%!%kcaBN57XJOfvQ->Ky%9=v=`U{sBZX$(yW}w!FrrkVaFqjGEChYi7%; zS)4&;HtklX=4jpmpRHvzZ-aMhInF%3oA(NPyjGMM>AcTsBR81LO80#xUC&%I`$nxK zb22XrvM5J>W!6SzNsdCV>>0abUTLl3mAsKX1D1^4aosQP3Ei8Zo;>JH>fRWQNxsNt zDg&&7%?~)}jFDJ3Ta8sO$?E1!zv(4;%`P;WUKDvVJhA)>7n{V0_N&xwQ+JuBAN+_H z_^#m#r$A!3nnoJdMLP%H0B>$GIJf2%DGw;&il)q%set%_L4>mXF@qz!qr4S=TNNPC z7UVzt-qMG8Wgk~Av z6F(Zef-gJ{;xU{ARuhuf3@K`+G^B~WvZRGY+e!Ywk4~_$aP51EyU_51Xi05^cb>>) z9@aAWbS{4fCox-NyIk@;-s6#od7pb^~Vby?<)*tOPdnP26x@f-d&`;c)4KhW!uKg{Y`XbWg< z?WNcky-Z~7+Hxc|V=K1f%pR_S9xDx_8tsb}f%Rl$`7(pdrSuIjlv2{azBF9sIoCW;uA7e+3YfA@F+fvU-qaMbDorU(XbOk@>%1PItIa|8x zf;c&e96XEc*s_W}8cp{;cCh;L(OsRQ-96mXDMtCOkHOOztt+;$f-g-nX&qy|T%3t> z>jtd98t3AibSBsLh>~gLGA1fwl)h8s~ z@iX&-cX5Eb#h@Kk8&w?k>I!gWU_v;si8vto_Ny#$8Vm>)R1TzDUTR1^%O_;2hJM%U zj$Xam-o8{l6CVB#-hl4lDor>?E;cj_4$@oIoT6pb@yqy?t-?%!Ut3S8`qG(#eZ~OZX_xF7cs2bo(u=^IY zUc22bZ3OEM`8n(}biP2f!o|#O z5H+^vlxnNQ0PZGsv%R|Nsl<}r(#C3H`oT(D5kw}2YHTH$P72eB8G7D&BK&sZEY8i{ zs?W_|PmHD)B$jFfFhJ2HnYR{G(h;8}*Ae_illXkSes`nM9FEvXf2$EC z<+QC!FI-lBC&JNFH?WGw)hgv^rD_yp7GFpQ-(e=A%nL0=`8zCy>5Vu66-eo{DLh7o z_vF-5r6>PeO7}-SmrBWyqIrtc)UzPVIJJjAx&h={7n=Jx%H3QoK(8xvq-4#6f1 zu*gb4I3Omg%S7g}UYy-CH6)uoS2_SDzMF|0neFq)iH$x-A#)@^mfG0VZ5Abu`iJd- zHR(>VbVN%4g-0YgifcHUBbX#!=J4h56|{Y8I1caHe(E<1(0@D^rC>O>ILQdU5wW|+ zJENlxklR_GPdk+^_THC53u-~E*4 zYRI0R@8+*H0s`!?vFTO2#i|D1u-XU-(NYvUgVU0pNjf*(iwC!8A$>g6Y3ilw_LeWB zJHR=a0&&Wv5J3El7)UboEg~BK@yJP^jcA|x({IZC|MB~bDhCTMK6U2*BUBY=sTYVm zPefmrW5m&&@fj{ndXG+%jIP+sXksqD@y=Wdb$bst4lOQC6Qnli34`G5_i>$hKR1dN(x^CnJKF85dR`6J5)*ui_{g8Q4v&B z1l4trgnR0B>byxE8_48&fui@RdWpy!ktb1DeH*f$;R}BXA~+#u5t!?|D;`Z)d0|=t zs7m;2KD1p^n1&5h75lajk8DHy+cw2R+Y%2-wzyx)h%a16{L9UXe+pN8E^^`@A}{XQ z1@W0(6o0oz#NXVK_^UfA{vyia&*pw<;&~_*MUhvu*CLR-0#Bx)U-E;7+EMh>P+ulO#ZT!+$0E2Si!9&PWmSEH zM)WRGq1TYC-Xf0Dk`$D;>WA1iT_V)2CuMrq%7-f6cH{;01UWLT5fbNe nT3=qL!yD4EbDnW{1@DlH+`}O;cNvg3jQ9edrTgz3z9pRDIufn}NXK3y-kM!(2%Zs9~x z`~V(iIc5*w5@0pY=qjld??V@I<32@OGlj9-aayj(scy+@yP~MTRrgNM^&7yfu;z-x zLzjzuy}s@8&pYA%1+b|bvmaoskFlFjW zyVvskneLv*DJ_&rQhyCih4K=*rH1t7;d36qFg|7FuMGklw@9B#8xOQZk9A&-v@K29 zoniXDOk()f(TtJK4Az(jG%;h7Ux-bX9VbZ^y@lTLa{~(HNgbHP0_PVQ@$*q;OYa-1 zHDm379#FX!ku-QgcO7(@DBHIV2u7<9M=bx5mE_`FKX*VD$-7hUXo;QVV_QnwCcK?W zjqL;K(>R|L;sSp!F2u%`9ote$KM#&Jvl#iQHcpO_m&l!WW701i5K3Z1FY#g)5M zTAe%=kAS<;A7fd$f6%P_rSa&O#>Un$%#_*iI8i$N{m!4T{KVqzQ)FqNnp<~NK8(%<4M(*o;=CM z702&?1^yj{KcVn@Y$BP27pD$Laz^nvc|cWv3b7?QPse8vnlBwuyJaw1; zghuE3=b`6xJjo^$hrdOS_n*KyGtHi0HPBBSgGc1LrjGr|P=dXfWTT4qKIUtne3D&= zp6p-1=qXm3fJXs6T_Nl#c}n?fpdVB8|A}U{X4%u@@*JCvwY!qrRbZ!q)p%B6XTE@a z9@trhJ$0nl+}G$;1?@#ed+CVwnXjR>*`;_Ane^<(nTLB3Pxt4r7iYmo+Nbe1hCCY~Hb%A{``j^S@(>tZ|-k3oA$d4@eV@cHxD4MbQx8IQ*k@rn2}d*NPQ zX7|=Jaaq#iEUT&&FQzNvD)?)1Hs!~@agVZZ-qUbXW#f~~u8=r8K@hVNvL;ANk4GgR z_APZMy!2HxO>K-M=ai0$Ha^F`eGfNXJjN{K^4JITP6eNi9K0lRFnTto?B%<15B?m} z{&R8;xaU=V%3J3c(Dm#cQ{No$7wRy0W-bW!%GsD~hSsbx&T^;r$1A z?px4A(2F9AYcBGdO)<2vu)MamtYoYy-hU5D|RF!2yReGx` zGMnyhO-q+ZhY5Xcd1*q#{3k0GVTTd-y7kc8cZL4y%GGPalI=5d zb8{lU)P^GlT4wgWt{A@A^RK&pE7}~)TC#N5@S<@4c+U@e-EP1mxJ-Hpl}hCD>Jy*R zn#kUILj?ktg;32FCZxJf2deFL;qukqMkE2_EssT;!hFT`TAPtDQFwucD9uB_ipv+E zci^MA5#~UAKJ8J6bwXjol>uLcMy|*}16e<**nrJhltGPEH{y#@fsDxAMEv%6!wrS? zy30IgKG+r3Lf}WTb_!2}>Q41svpR=&&^0>MS;elp7*xM&*C@X#ch_jPd*Np71(8Qx z2nTS_Zw4aMf-G6_2`xZubsd;xh21u)tzD$Uh7+nPPUw->LB6y)syBd!A-ZB=U^ijB z-VPiliYV`RRNvuV%F2&trC7ZYbocm(1TDYbL1@r~n1Zlm6Cy|yrR(ooq{p`zkS=&M)Wyece6*_IqdF5MRxChQcH zhKaEh-sNty?)a=8aR)^;POD8Pbg)7Eds3v)Xa}KNJJ0h{i-K(AnaFbzS@6Podip4D zxVv5`{Zj9;CYR;CDD2iBo{*xj_sEFXB>}xHvdnEdy>=w%w#ay$kWWfP?&wq#!+x)` z;qrRWtfwBaRs4Zh6DO6NO2J}d5Vz^D>~-p2UP(QXR|`^v$b%+4{FkvXNCoIJm4(@L z5HIMNIy3n`^x{91%9&|W3%emxEmWzN#X;T(UHJLXx0z1ZLfm)L1Su-HhbpSSmb8(- z3d+3~0fe`3Rt-^|mT5^VXgam1P0O05n-9h`jUK*3bcmXtlnN(6IZ3r2S-PcJSYzrs zFcvM~)d#PodJTLqm(l)b=>=L+Z<%VJS(dKZbPQPCkSlDXpdGE%@Fsefjga^(@lA*GrtfXXs#ZAwZS*iq4}|JvCKX5=R^Q&iDGqk^2% zbV!lBrG!Uc^WXZ22|i_5tADN;(mET~n5OwJtt?^l^D-5#Eyy*_F*L*}Q{B5S3bKD#{Z;9ct=`QE9LK0@EBV za<_#vK)kAC9r?mg{yd8E(G<=b*H`z?!&M!egpWjr{JZ5cM1=JcF1B9VeOcaS;c+z9 WnA{nQRyC_=Tjae$3x3y1+W!G;*P?3x literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PdfParser.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e00908d3c8a0c0d0a30e01f32064312fa84cd7a3 GIT binary patch literal 26897 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 Nz59BT$t?pr|1Z~^Ko$T1 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PixarImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d08c333e0b2ecc60df56901709ec6a3d695a3972 GIT binary patch literal 1167 zcmY*YOK;Oa5Z;IFIB8mX4XX}+1+-5Gx~J1&-&8wA$R7vF^T2>FiA|H}nu9Yk*f z2qI`oG8)p1g^Z%lQl2@X3pN+ddlGt2iExGYo(NB}F`M(SCh4IsYva1CN$-eL0)7L1 zQ9HsM{ub%hk13?@GUIM!@kpAwRZo&scByfbn|D$CWlneBYHq9HluT@TY??1iqF`bzN0gGa)Tey z3k2>sGb)@pv)Y}rA)ArNwVrpfTf^N0KI6jQW$L!5!wpX~#1dqxT_BI2j3nimj#KK8%`S!_qiP#=^dVS=!pqt9bHQsX`eJvu4~#CsS#htPp?;yTVy? zz?13FP;GdoM`{f}aym@P2N!~iQs!MS^(sJ<`P894ZSgg>%6;b1tIl-w?9=sZ$R@n0 zA4Peb$tW_7D1y)LrD!*!=+$1Fo}75YLS=Df+6x^CsRt@4tE9*kj?I6BEHz}M@F%|p zqS5n-1Du-7?oORvIZ>P4B|{W;QE>p6*q2Ejt9^yzqOcI#EE{2#l^i8FUY57&U_kqH kPfjYCYh?4UGp9t1e|J&VJ$ww^1ZbUaQr~O)tt)Nz2S6|pX#fBK literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PngImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60a7ff1e17c3af3db13c55fe7ce2ce1194f3bb65 GIT binary patch literal 30319 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 IsL7iAKeot&a{vGU literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PsdImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b4520ba6512d75267f65ff2a0cee92155f85c8bc GIT binary patch literal 4874 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 BUatTE literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PyAccess.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/PyAccess.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..836262d285fe413bfc3cfb8bc6d8af7dd277686e GIT binary patch literal 10254 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 F{J#VO0I~o8 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/SgiImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dfb9e920af99bdc10009ebaa188bfa309310c7da GIT binary patch literal 4005 zcmZ`+-H+SG5$BRiij=62(|!2zSv9SJ2u1H~#I>8aaAVhr?k=_pI2 zyrk?qfqLnsF9izZJuM*hp+NtDzVtsR(1$+nYoG49Kv5V4uD@B`$+De_;BaPkW_QV* z`OPRPmx~5||Nhlq#5YD>=*BbC$&J4)B zZx5W^g63`T?yd{o5rr>}T~D~UJX}Rl622&l%J1FX;w?i|MeR#N)I#3lN7imhtcW`7 zeT=M%HH@rbq>PbDXickPJ*>=3W`M7SrQS+d3cZ=7<+_&r)6rFu#Kx(#MpD-h=l;k@ zBiMbTxp|DYGIov`Xwy{o?Lp8Dm8TycNBywLlpS5Xyhn_g{IE@SXFuXi+&{sc;?o(K zksC)$ut#=M%9!TOM*_HEiX?Q4_C3Lc8xd1l|adhzlNW&Qlt zjd1})OB~Ggu}hTXrrWe6`8_9Rio%%|iUqID&J+vnsmrlNE~_AC7Q~+^^eUt{<}X{U zLD9zj!jJ4f#GSqg5*i3lW7iaH*AnI~7na}%DqGk%5=Z%GUxv1t+&p4wU6>OqvvTW*{hH-Slh=$1 z$CKk}XT;e@=ETvQ1FoRC0ytN5E;ui@b0_yY)}$!BNonk4c3y;k=`$ntxRE)BH<>}# z=SIw)8hJ^0k4$-26qi;m&n%B?S1oQR0o5n9U zCRK3$v@Gfi-%4IR^PDkesAf&fc)CJb{T~E!zk4(&?mOrfk@UQe)Sgl<9letpppp0ycdJ!cCvK zCTA{lE!Qe8E^e93$Hkd>;#xFbG;6HL9L8Y>AGT>0PaMv*ZiDfYqQ(E~+8faFlW~1H zfw%OMJIHId)rx~b*lMX_tA%$M^@;aet;eIFe>&oHbY`pi{Miy=+LqCfUQ%Aej+b7D zU|G^z$#szTaHkYTuEDWy-_+VRf!NuPVs3#D4-uir0ieVqORj6qTyPd~f+JhmDNYzY z6DYx_mav60Gbc8(ukeJ)cZK`h3RvJE#|xq~afJ_*Fnat8b5fj?^!${q*MS8NJ%uyz z;=)4zi6~Dzpa^z!#E|bES)~u~BqaC@);^6+of*b+ANxyy4*u6D(9iW>8-G~ZGj>rH zwMiu_^xUbZX)!lvz(P?1R#o%rRF`wSO%=AaoK5|#Jgtb;yfA|uFn~1G+&zNNLb8`6 zvR=!*CF{AS_==|ViUzH~Vpj56&&#i9&`i8wvmwsCq}j}?FKJ$T#b!OPy=3$HnT@a} zD>zAft`)7s1cMphweV0_F5W5he zjN(qBtZtae@6i}#n{pxU(T32crHT)OY+tz=O2dOpxqCqxQt~TjK8LdPhLw|Ma?}Rg zQqv@P7G*oWLX%Aa4VYT;^E5HOE?RaTAwSH0warB1VC(K;fFT2|F6y1TJ%oR&dq7@!}@= z`R41mVS6IGSm^(EUDO1>*mVgD9TyiI_1Z?qMV0ersL${hZ9wDVM@L9;r`xLEf+2|d z!kVCo0w5Ya){|Zd5-D+wLv09D!Krj zGSme$tBMD*o1%cDT!!)oWOSJby_}9>^aO%xb@)ixGKjmOq{5-BIDD$Sj!XtRHm(QbOXd^ zRBcg#%}ty#)z>;l8J&zI{7V-v(5@FQ4K3A99W2B&CydH(gdkN}z>% literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/SpiderImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a981e7818c365fc9048e5395338fa26710ab4dca GIT binary patch literal 6636 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TarIO.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..df3e419730107fb876feccf2c6ff726ba90af62b GIT binary patch literal 1591 zcmZ8h&2Aev5GJ|1+LbIhMp`&^(ZlvX3J|G5FF{fSFF5XOJM`WguRZC|YY#cpomokVZ2}w(IUnceo6+WtMvcJw_t!tfUmhWU zAw z2U3N37jE`9UzQG9@iH;YFMtgM5xmoXf-t0@f{s~1IIWU`^ymaqozhdsIE6E&!Z~)- zhHy_^;}-6i{zeN&K>EM44KneB4@j@@CQt}ym7*f5$4osCwJUhMbJgR*6JAliJN1kY zURFdMy@S!-9jVUSosY9V@ zK-}7BR0|ht3-~eeDu1ooJL984q@sRkB8B`u3U{MEu-tu5*iGbh*n(rcY`sHTrVjQK z!U!3CJj~?l0klktP-X%>L#Q&B-I)N!N8ZqM?>~G?iNdiOeGo@kmK#6-S`QD<^Q-{N z>>LGlEV%?^LjJqFY_3{2AIQwI?vZtI46KvF(SN?TtyHdTMaVc8(z@u*I!R`%tED`) zEXi%Kx4r!%-}?Eb_4IHcl?^ygvczz1T_e-986Y_AT7SU~x=E#_+B$uGXx$9BvNQoy zGLje6RymK;NNdh7$lG7qM|oeiIGjgML93#wzu>_yUet zD-S~pUM z`etZolYEVBdV-G7W1YUQZ*IC47;8gVS>Gxs@P{E2dOb8#n3B4S0(rd=wKQzPeHn0- zj#lQS&eN^p?BF=S?9@2#=VF+mUg!MPFiIB|pL3DNoR83BKZ`^jCH+_->xw6Qo5~Km==b Hw(k57H%5D= literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TgaImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07fe3292d09b6229173a25a074e9380f7327f30e GIT binary patch literal 4050 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 Ma>cbGEAuk{A7YxE5&!@I literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/TiffImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b813e2ed57d1ba47bd6ee13019288e1eff616e25 GIT binary patch literal 52204 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/WalImageFile.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3a04f2dd5bf767348fb6a10731e9d97304956e28 GIT binary patch literal 2890 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/WmfImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5dd4dffce3049a3e0dc5566c36f41c7fdb0b96ab GIT binary patch literal 3458 zcmZuz&2JmW6`z@%T`pIYMA5SRS(jrCqNECP#CUb$8D@SQ5zR*(9Mc7lvg5m z+1ZsXsnn%(k-wlo(UXLn{0H>XKcKf9gA{Wr&=W7c1Srs=u=;yLNtSHSV&1-aZ$94l zOg=pwF|>bw`WN+KgRy_o;AHbLxQSl;6+kh?d#umfyf4~<(^&MpzHIvr_kaiOio+%F zuw4c2Cy@$N6+&2(<&SZ^X6Tqsw#TQR5TLp89k+EMr_0}e@fLbcNY9DhgcGmOu=abq7cVYEOaHK!VDf+)&gVXZS`4h34m z`uFrJbZq^XytN(4DlKcA5|G-)W|Fdh=0|sh&2Akz4f6ATde*i1<$P{Ry|3 zudeG(x#;FBKjSux57$BD$|3rU8FJu%SC<~;eZABf;QVYoS-PEfHv2j&i=_wK<)b`{ zADDa%r}T@Z#m72(ywpoqmj;gY*5ZxpOGR4hYlEb-0r9Zr-Umw$`(0oP2144y`+Cgj09cUjU-`kjHGu*Rjt9_#zgH!57}L^**|L%Z3mnUR}+%TAr2t zTxl!Qteaa&v}eM~Lif5>q37EpRR^|hp{Rmhg0Rmpklo3HAXH zh{X1|;`@l_QtWw3fFet=?(YSTSJ|gIa>&-heWyN+6u*F2oku^%RB)52%6Q(^Wjbq8HOXreocVV*{P143I;}Z)2)}yQHhgIM-NJOAg#F~ z#DTd6q=SB{5tmx=Ho%K8M~DlA_aw}H<*NYU9;oOu*5xWx)u+{V_?;+Fn`7W}B3br$h zw;{}@r3Z=}37S_*;9?|pg~NPcp2GrQ(qR=~z6!CUud45|p&W|yv_D1{*gRqEA{+Wc z?^SA7>;^+I^svV7QrP<{!Va8@y_08p!!xm(*{zhpurlJm=h^R^w6l&|hqPZ}jFRrg zXJ}kjKp{DW!$>;MVe?L6;+`dm9c^JWnRV{)fBx`)VI;b8H$2qE$xgDWi=aRcXcekU zs4bzoe1V;3m)LF{#V}Jkr=9ub{p&8~90ZO@@b0-fyc_5X!R?Yfxnspu- zx?#+>0jzwI8)g0C5#%&@sW3aWvYnO5)_ca}2J?G)wr1vt;m5Av5ea3EN=~b0&Ju?g zR%~6jVjF$y2L3n98$|c|#hUfIxF1m`w_q$Qw+RNcgElW$1V5%b;6tn|sN4s<=G8?_ zMqb3-=Pif@E}u92x+i(a#q*|&GcS9Wc|(Mv#_K|QArC~rLm~MLmj^owFDL(^ zJM2`hlLe_CSELd#@r*B<3WzQ4bbU!?Lvip&ba!7%{u2a<^YbNKx+jPh289*(u|)GAkUcl0C+i77rxO0X_cA3e6(hyW{Ni zp&%XI>m3P0xoSQp;KW)4Mq(F~z9EyidP5Q3UhoWYI^>F@My{a;x{Cw4uuF0ZE2`%|m zA}LE_D?eXxiD!NdGPqP%T(;VfvYD=XvrIInodcvD4JmGJ6QC$HcLqIA?#ZO$h+>gw$rCB zRcB6juAM%9*iv4bUtz@w8VPLA98b|(rOpcYwm6~N3kAb>Cr_UrQ-T&$zv^deoIWW+ UuNKXC(Og(*MB&Hv+6)5j|6U6KDF6Tf literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XVThumbImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..afb6ae73204a08213e46264c77c03727c9bee0f1 GIT binary patch literal 1459 zcmZWpPj4GV6rY*h^{(x;f3LVt&FpSNBS z-V*GHU07jD(95=H9W9BL@MoA?`zh%y%_*ebv$V6D#bcrCW_g^XLi#Hmn9^r&XV z=T!|h4?gQ|ZGHMDNMw!#%x#1>2*44UTL42m^`C(<8Xv-}Isj9{)z565D00jo3${1M zlOaeg`uf4n?n9JHDMrcJFGMbZ>-8u&EHV)c%Sy%hQ5-xfhNqdxRTT`*)nSoG16hn^ zoMlzeeAm;T9b3Ky@|Uxf;um>%O&2 zmY+ZCD$FB~leC-QC0rv9i9>D-dDvzO=sTj95Nbv*Xw~NIB~{iGBilg;mP zaaM|<61=5LwTGrO$%S?*C6f}CGEJ1Wvw{n4CArd0R3#H3vA^XS#&HJ^o^0>$ zZ)>+)JPU2(4s9!urhrfgJSDpl=}22yHP*B;-Mav6eK@lyMIL}yeF)HDHuY%3VpfCN z@bjoo8D+2idX3$rZMMlK@Bg=X`sRo|=qoRZ@;DPwq#IELd7q{z`%!dq8mDhPwNW9n zSn1`(8gWq#pi_?ybbNExCQd8jKz}$y9MYp6FCzTS?)FS)%i3$G>3|-zAi?Y7Nd#-K+ ati0z_o7t8ROd(f&T6@Fb=ef(?%EsS^;$qMM literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XbmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4bc5f8d021d6a04a808b932eccfd608bc084980e GIT binary patch literal 2124 zcmZ`)OOG2x5bno}Jsv-@F$qghSVn*VXBB&wfFeXlqCh~AU|Eq%WP2HAr`z^yJTsjs_g`C2yJyu*Q>j_>#K5Ft-1uppWpu~ek&33 zJ2I=o2Ie}<>;Vu#1Rat#5lrwQjai$;yv-?*WM&C#PTRJyMd1-?7rrE-D4a(`IFcXm zhrC@BCE?_b-!V%V#lt&1P;Z8kbx z)lK#`pSzTd$3RB?LEiCzLyraf+@jD5%T_qb@*p_~TA!!kVJwq8YwaH8 zgEaAXRoYiU9A~ZOJ(=8V4Ws?m$fzzgx3^kZl*@~wAiN8S0-sx7weIZ4CSSY5!+w-B zM@PEo2Vp2j`MVew19FBc#AOKc#6aD3nAv$ClC-HHZ6;`&3)Z#-7ZyMaKnS-i=*qKm z5Eq)?x$*VHy|caT-H7ry7@c@HL^)3La6iK$Co?)F2W-X#ox|^#PHA>puw#~6Q}&QP zpt(Jzvx4Ar`j8&;B?mPCoMkljoT`tO@&d}2>msgu40bOH`wCRZl=#k+Pc4-BC9D(B zx$6XWDP!__Rv%*VD}una$~zH(N0`)-H1`4zF6H&`dbUBdE-YZGi+~=)rM3`w+CnsG zx~=(mKYqd#0>zLNhAO!C#C~pse;7y8NkRc)`rox;sm z{Y@M7PKZpS^s?8%6nat~giy`dS8zLQf*I!O_!GBLQg6UY7r(i^ zK(uXwS8t-QAd?W$TwZ*Y0XXl=Tv@0FkO%h=(=3YBI!YWYI|P?{2UrvLi}3jn6gOdJ zuK{ss4FJ8tHUL5vJr6&ZZLk_sXf?5#P=%9Hg#TtOST<^!DXEFV*cTxb!!#bjnd&Tx zusa$g8h>3?vL9u+RHi7@CTLe=7`v`NH<9C9CK(`q#Uzg4CNHT0?Oa(@)K%;m<|fYB WHD+-}t-qae-Er2}&eWh#>+BzSwjz%J literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/XpmImagePlugin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ebaefaade8e4b56abcf9fd89dbbdd8d473e3e8c6 GIT binary patch literal 2279 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 literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_binary.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_binary.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0995cc161ced298c673f58cbeb9bd484f01423a0 GIT binary patch literal 2584 zcmd5;&2JMs5MS?Zl5N_iDIbOMX+A|H$kG%cR8BR6s!DJn2rZknn=T}FWP2+$ z>aCplH&D4gy?-WGPMncAl*4;74$Z4t+5{m1mUia1YkNHYd1kzFa7R$##!QqKb#V?{s( zK;vuzPylF>l>m(anqp-@ML^T+7@%=L$Jq%$6YM0L0c(@&6gv&N#AewU&{OOzI|sVV z&OdP~7rWOUq#{-uG!>o9gfcUrsLnbasSH){o(it3AHj8};`aPboV@OhX99J!s$@GM z*!8s`cHwylkDdXs>AZ3b$sASKbe_N)BeS3@?y|z6U~nvol2)vB6!pARms+jdt+Ww#Y}b5s?slkC z!*8LZag)QGM~}m(VK-atZ1mjp-bwTl-JKz74AgC^VDcg1Zf|4-YQ#sSLsZLz~Vf+47icnew{t zixk>JDb~3%n#Qzt%PvT7%-yAp)aVM;Mx~-jjij-lnb2uda0Vx8c$2GY(HdCj#6T5I z7IsG`QkXauII(XJro%T}W$y&JK;`PH<_6S(fw0C`b9Ty(yZDzq*lnVayKPtHLG_5- zPfRYIyW8RyaNEd1xu8yfI+PnV1-%uo`|i8ApudcWuDiHqiBQwvxH^UcLwZkWX)3uGYxA^gRg+K zeyt(u+=!M(IkEz_I6#HsKPGXgO z20hmEB2kwCAG(5~(2IBLY0&Btif>y*o?l@16%;F+U z=W7kl2R5$*TCNZqMwRJaA&Qtx;J+ac*I$;HK8?t>z0B=pYi|`>Srt|kg*l}#u51X{ z^Rkp$4iq}AaFsphU{A!}<-uZGvaH3I@PIYC?w875;01m$SNy;EK`!tEf5QI{FA*vK literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_deprecate.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..87c7e8799379dbbee0d4e9b75e1c53099072bdc4 GIT binary patch literal 2073 zcmcIlUvJws5Em&~{u4XR(l$V!#(95IuZ^5^+lw)5L)Q%`He^AEtXP6fV@$?YB9Q_m z*@&UMta}}>_bfp7xDT)|!`D6K3+%x_fgLS3R)W2jf=(3gj(7LF<59L+4GYG=^E>>UYV_9wt8l#)#F;pi`%(-Zsqp5b>XIU$j#l~ zY{;B#@siI!NF;2Dj7swwF*n06xs9H*~ zIKD=E-(Y`0?w`Wgh@uU~Iz<>}+uekd{Srp7b>W=XE^PlOGr&oZkW+w8X6Y=}k_JiO zka5xHZ_3%ZBi|{AF&#p%63|vRlJ};JFOb?Vs^kEGF~DgXQmJu}Y)@7wIm)1o@Yf}+ zk*7>En<6r4-%M08lv&71sq!wDKz6b=KO9?ITDMUhz= zzBbY$le$NCV+M_oOws3)4^1wmFclF)p3)uri^(7mCt(*8-vM?CB_v<>}NIl$4CBo2dAH=ku94I=)PQc~%f?+a)bzONfU z&@h{?x(b?e5bN5QDgg&1fo2Xfy;|x+&kI(krc6IpbwdndrDkpiiLa~k(${vB4F0mz z`yey@sXLSr@AhNxRUFgq6WPzqt&ntgPSYV=F*{1aIgg^G>y5Y=b;IDW8_!rDd0U&^ zBuM#23}Mm%2c4(icKxe^=f$VGe)VTAjKl-de5Zz8w1!qt4IUS*V)$YQ<_=y)4!Q$h z2d^OvPvezZ2bB)m?lg<=%r-@g<}NM*ZJOEa>YB~W{iRxlEE{qQNXOL;-!H1r_m#Q8 u)Z2!v8Dg?Bvoph_L_Pq9u6-IwmWBK?Q?khlkfv3`O^jXq3Rf^%o&E<4Bv^F- literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/_tkinter_finder.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..234f6d0227c7887aabdf7200b14b2e629d91d940 GIT binary patch literal 522 zcmYjO!H&}~5Vf6jn@!t=11GrTS|n-^91#M}P(tZse zz|Z)~i5~z735jVJB*yZa8GGiNKz015Z@>VkjIWrz1M%i)Gb|Dvp@sS#(W98aaetSR{gSLm-V;qf5=en< zMpv{LOZJ9L2bYhsmrBd5GHs_CkXdWwwt=isx>kCXd6VT;lkqIC@oZsBtH7n-u|IM? zr6Ca>!#vnNv^)3wmhFgXNf%!TN*QG1Hw;}a4 z77*2PsgM?#8o;bk{%U@npS~7n^XK8@83wAw*2Af_#v&!=9q091uud7hrx3eq`wOu* zvBUv>ReWt);8o{*sW&BmVXAEl+B<&H`?b;H!kU#W+t%^f4)l&=BfL9YJ)Awb&z=)l&TUEhrO-@Sr8H@getWNA)%^LPvl~@YbSBKyH0JVB2`Yb z4+6(N059V!CtiR9CuSVA>d#0s9*;fyeKX_L8yh_W^7rd6aY_mKjhovN!DbiKz6B$Q zpfwrd%4*uMA)`b@BEBTUNF<^IYy6Rju1GJ5NH5qh5%h@UYkwe@9OTr;hozfTfO8}0 zC!l+vb`y*vOX8?wE*eD_?1)^^gFN;LBpF33#W((g{md}7c(zOV@NzFPe59-05g?hHZ!Fn#JUUPKHend<16FWlB z_x2{TI6kqh5_X z773Kn@f-VcB#n{cgE87vn0hVfqlRuEjU`73yl zSq0z@J%4r|_~zC@o_OHemW|}x_c(8~nAhm{IX|73_3Fgnn=m_Qa0s^yw#VQf@Cei* z;gqDbAB9-nF@1>mE{++VYg`kf^P|1Q;dQ1V-N=!FakLaKwQiLBvKfn7*ZI688n%y*bEKyfY48q@fLS{ zd|7Hyab|vAeEdp=A|{|hF!3u!KO;XkRX@3)xFj(zD^cGiKe;qFHLs*tKcKQC1E@Tp zC_lX@F*mnZU#~1RuS`EDGfBSyEM=@`XrN!5S(2(-keHmEn4SvMPO2TqiNzpWIT!(6k2hif literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/features.cpython-310.pyc b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/__pycache__/features.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1656845df6c4914b830872270dc200b964f9819e GIT binary patch literal 8806 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 K%wcmd*Z<%9XYz3X literal 0 HcmV?d00001 diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_binary.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_binary.py new file mode 100644 index 0000000..a74ee9e --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_binary.py @@ -0,0 +1,102 @@ +# +# The Python Imaging Library. +# $Id$ +# +# Binary input/output support routines. +# +# Copyright (c) 1997-2003 by Secret Labs AB +# Copyright (c) 1995-2003 by Fredrik Lundh +# Copyright (c) 2012 by Brian Crowell +# +# See the README file for information on usage and redistribution. +# + + +"""Binary input/output support routines.""" + + +from struct import pack, unpack_from + + +def i8(c): + return c if c.__class__ is int else c[0] + + +def o8(i): + return bytes((i & 255,)) + + +# Input, le = little endian, be = big endian +def i16le(c, o=0): + """ + Converts a 2-bytes (16 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from("h", c, o)[0] + + +def i32le(c, o=0): + """ + Converts a 4-bytes (32 bits) string to an unsigned integer. + + :param c: string containing bytes to convert + :param o: offset of bytes to convert in string + """ + return unpack_from("H", c, o)[0] + + +def i32be(c, o=0): + return unpack_from(">I", c, o)[0] + + +# Output, le = little endian, be = big endian +def o16le(i): + return pack("H", i) + + +def o32be(i): + return pack(">I", i) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_deprecate.py b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_deprecate.py new file mode 100644 index 0000000..2f2a3df --- /dev/null +++ b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_deprecate.py @@ -0,0 +1,69 @@ +from __future__ import annotations + +import warnings + +from . import __version__ + + +def deprecate( + deprecated: str, + when: int | None, + replacement: str | None = None, + *, + action: str | None = None, + plural: bool = False, +) -> None: + """ + Deprecations helper. + + :param deprecated: Name of thing to be deprecated. + :param when: Pillow major version to be removed in. + :param replacement: Name of replacement. + :param action: Instead of "replacement", give a custom call to action + e.g. "Upgrade to new thing". + :param plural: if the deprecated thing is plural, needing "are" instead of "is". + + Usually of the form: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + Use [replacement] instead." + + You can leave out the replacement sentence: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd)" + + Or with another call to action: + + "[deprecated] is deprecated and will be removed in Pillow [when] (yyyy-mm-dd). + [action]." + """ + + is_ = "are" if plural else "is" + + if when is None: + removed = "a future version" + elif when <= int(__version__.split(".")[0]): + msg = f"{deprecated} {is_} deprecated and should be removed." + raise RuntimeError(msg) + elif when == 11: + removed = "Pillow 11 (2024-10-15)" + else: + msg = f"Unknown removal version: {when}. Update {__name__}?" + raise ValueError(msg) + + if replacement and action: + msg = "Use only one of 'replacement' and 'action'" + raise ValueError(msg) + + if replacement: + action = f". Use {replacement} instead." + elif action: + action = f". {action.rstrip('.')}." + else: + action = "" + + warnings.warn( + f"{deprecated} {is_} deprecated and will be removed in {removed}{action}", + DeprecationWarning, + stacklevel=3, + ) diff --git a/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so b/Color_Sorting/.venv/lib/python3.10/site-packages/PIL/_imaging.cpython-310-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..b504f83cf296b40e45c7d46ad0603c061cd69bc6 GIT binary patch literal 710913 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�ae-SWc8TtOl9+KPEUduc1%NU6nZC8X;v4fFwNGf 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 fp&0x ztjlZDRtt$v(`KmbAdlU^k%Bh)sLa))om>ZY)v1$OFaEA#D@kT~ zGbBZQ?y9cX5lV#dYQSOF*byXv_oMBxCpb&{uJ^rvq`fq$Ym{2kzy-RoZ?k(%#u{rX zFbDp2`HWeK@JL(>>rh5u!23}bR%`4P9Xm#zn=r<<<-!GAJqXsEwGn=OHnRoZ>i{Y=3h;;S;y66fbU<=r*4?uheLK%h8)V3QHxzv z%2E>b`_H!d28;{1Scl_U$3wbNr`U4u23fid>ePr7{*q8&FYrsgDH zWc}o(@pwr>~Usjslb!_ zDmUMJ1ZY>1HYdE>c4+gw-;DTaEg}kB;!9;@UnLMKe+6=6O?j0_i-FZrDxO`l>mYj- z4(!GDao+t!>kX5I^+)*tY%|3Mm$*aM1fq0^GCm|sRFUYgblUA*`wFtuVOs~bQ4PK{RL4q}fk@Ay9)(!adVtSRqBEPOY=c?ygh zI>(dv)LyPe`~wL+>3#OB?L=M4lJ2;B6vlQ1d(yov-J9+@JW|50gyK!#tu03FC9^+0 zVmc876TwsmQ|`?AWqich(5-7)VDcs4F?F4BgstfBg){MLa^nHgW|Sm@q{XqQw$M`C zJegkStczbYgf(xx(AelJRDo+Ti$o*vb! z(lxGrK3Q2JzWg5PKOP&?!P@F;FQ3aB#0C85n>@;$l131Zx`duLOW}Dv@E_z?c+?xw zll($Cz)w25JV>RZ_s}~?K?CiY>_A&nJ#3(@`|rosSBde#@wJ)pmH(=jm-<^PJ>vt7 zI^=bz-?!bCpT`w1Jkch1ypn^V%1lV6PxOCb=+BO_f1gGo21E%k0+OxgM}_A{rA%GJ zF8`2d!DLao$64qlG-dl=(WYjLxk<^U*75541HJMF#LQA~X&PcOpfi=@Z?Ou)?wNJ>W|BqG`xw-vHrXX@yX@c>oWEWrZIDc$!7!2GcjP8MzVm_ZB5Rs z;h*P9s@{guDl4cBya}5v4R746Cah31^Vj4V3ovndDEpo}8`L=9rth5W2`^_)_2Z3z zLXls2_>R&FZS(lunu^g{%dsGnscKc8UvZcX*6ykqma!NSEC4*#tn`a+Ms-*By#yzH z1yNO1DUyB{Km(cFR;u0@088haHq!OdQ83T6vKp5}xBQGVHkj`b!oQ)`mr_gkJ0W@tdiQ zFVvwE{$Mj<4HYa!baz*$YmG}m36Fgt{%cF%U2p9en4~TG@w@CRk*(9*J?>O`n^iR( zy~IyEv_W4={8?G@k*^#d{M{7z4^My1+dkChTrz?E#J>>t&I{r8+GU$Z4Y%ybR(@)NjfeDl6-Ss`{&zM^ANm$bg{-Ko zjr}Q=e#z}?M6agf^q(ySh>KRb%aWhtT|A6+>GG@}O*25T1)nT_RJ`qDlG0u6@Sq+% zpc8)~^@Sn5NdqOar7R^|aN&uKBUQDl^pq})N1cBfF@t@d3}Ew;f4$H(Q;E81;?k!E z^DRs=Kl$Bs*ik+~*k{gi@#u_s$*-ov_PVf*mswbHcADJf$a(1~!sg^f>9ButVYj;| z4>6C(OM2*mrf-6n$0{9ysCD)Ypz#GQlE0kMkl!7 zhlYZc;nW!}_&e#~zaI)#=28bt>RkHz7hLQ+E!gXL8ZsYH9#cDb&OvO4w|7=q6E1__ z+DwaoAVxSZ?}K>zLA*!aoIiLiCHhZ6wZV3B1IsiSyaq{rYYldmPAq%~kIURTMQuq2 zpVD|+mBCw}Xj6&dt(ieFK)~B+J_DmD**ni#-R55$T~LL`8-tAIF9=-$PDYU*yKAqa zFG8;KypLzy4E6m-Y`k8&tCA(BUH+otwMe7E{fpO`kHosfgXK$Uj=IFR%bSw_3k>+3 ze1fGB@}TtnCJL5EiRuviVogS9`?|yf<@Pli_UF7?mO`ird1^fV%R$GfikZ!tUX(XG z7L(3>H2`|oI%37Er$q)hLb;nfM+VBg_Gd^gGEjtV5)YdO$VN&_`6gGjlynPZ`!?nk zu|{wTTUbB7qEW{++Up67U%S9x6j84H_SA6x^%W4Hfq&LPOx?n7#Y44GO$$>4Mvrxb|2OOkAs5U}g;E zV^$S&l;$b%D}A43hQw`6zt=W`!O-kmYUBzQ zl($yJ_GX|ata3?KN4lGmJ6S<617lS~No-cpe^OtA{p^D|`%jY&bl`8^tmQD2ulU+;3_ur~%sRX80T8Uq<-eF~eWkJ6nV0NDF9WnqRgLuK z#X9bWs!ta+B)-`sbN1hJXEG-C^z2mpFY;J|^xEy1LEVhV$-zxG!0v^U9Xsyy`sZfl z|JBpjq1}snI&OA*fqPA4B)x%2^!JkM<|s9doJCvwM6imz-4XGtXZQtoZ6YN+{U>Gx zDmUNxpq+22CyQ3J__|*aTKVK1pZ6C%Qt_N0zhB(CE-w+RBi(D142}UfxDqa;p65<1 zLEgtonRz$)m781Maj8^IG5NHd+BMHgI#ew!AYs)_dpm8a<3f9*!-NVMtis-E}E=cL%I1+nyy5zu5h_Dt*8IepX(HmBqzZW`gEyG0fYm)*c| z{WWzZKyKsJb!7=X*T*BX&^#goi@ennh4pG}^t2{P+|Fy&K6fyDv>5)9&s%p*6$Nyi zf*?k?g1TK$V@}XR(!La0lKfv5YU)@H!yV~0_PC4dCJcNuZepDhBiE^vywsf%AUXbG zvLiJ$#Y*{O`;vzBe%O=8uTiE|V~xQS)9Q>Iv=N~M{n!uH<5M4}xUxULRfA#tK)wcp zZzod8IWIOYlE1pzVg5UOtJ?;IP3&Le)y8x3B48w?o0`;aW3S@naS~=Ya0HzP`>f`K zuP1jgyi#{sC0p~I)%Yijz<8T=U(HD3XFV=TtZ}IyTi2sJuE^p3w-0dVu<7zl>(wOj z;}5XK&${&kiJoWNS5MP`Ol5juvY?*aX}T;JygHaV3>V|(T0e2Fe^=0*j$x-M_Tulf ztU#6Jk! z^qS9N;N!fcrtjeC6o0)iENm$|;w{)^FuZ1<`gs_nK546uIVNo*vV(qg^sv&SZI$zG2PxA2vyGG$k{>H?Xf^g&PD2lD!Q2a}!nw)Cmk=C4`2AT62 zTNc{At}gzi8GgKlwnPDw`OYQV)!I>bW$C1I1$U*}W{1Csb=XgJdmC@ROHHz{MlGZ& zTsS8vA`PKvY?znRjh8K*A+4C?V2dwttgWkWx=W6$(e{x$!a9$DSh6d5ejvFEKfc>Eiz`KZt^J&mW@BYS4Kv)t-10I` z$Rpr+!D-?qV`tHELeNBm#b zuq65eT`*Ony8samvl6$DVOtS5!1_oDt{USnO0uJQ@n<68UzG(^ivz8%xHMYv+sJpcg*HJN zk4@pHQ+di)Ui^~paRJ{|1Kw4StMdKJC2?C)+V?B1V-X{;on6j5zv;)XoQi=R#;nB^ zSn>vylE2_DSINq8U)L&ySsMXGwN_f{+HAO>gUrz5$6Nf0NFk-4I zdWB2XGXA*tgD#Tl|HbqjDc$^@x&W4S5`o{jmfnx?f*P@57N0;JUEs8atK(PBrP_z& zTgQ&p%j*`sht)*a>jm^@Kkn1l4>RN%;+P;~wMLODL80k*kd78lBYx$sI{`-O|FSDf zZ-4l@Evb8%3Jk+ztxjO97kei(*Ny{`7tO=mm`wh*dT21p-bS}#v$j5-X$bquI6#Z9 zDE;ZN_c*Db6e@PJZ8$pY`Mr3S`RTD!p^B&3vb+>49Y4vH=ziq3sd--ezmtx-*x&JM z{X+v7NX^v0mFc!p zt_z$vERXRC>s@9q}cY5d0ct#!- zR=xXTRVipO6Ga=yV)rjacH3z|Apd>rF{d*=DUj5U9bE^paeY0Q3D-HdiHp5vcIu2n;=3TRw^m||MM46n5ZIRu%vYd%ou4kSK!G36 z1`ba)sKCN(;P7NeC@>`)wr^%)Vqm8{u}8P|Q416nOni55X=gMzZp(CRr&2mgm$SOG zcwJp=06S!6jIB3?6W5%=m*TlAr-WmBcD=>znGBfO*o)P1JNXh0KKPa0E50VUiQ(vS z^R8r=i_PZ*x~xBW8$+C5nJ!(2qr~}WAb|n*yfn$4hZY(i# zeu$fob@J8QI1&rxP?Uu%ODD!vkIO#&&)7Hfd+vG1^HEc}QZ(^?nwWm8_MOc?b7z;p z(8C{=o;qxBlbz?0Nv)0@xN`=Jy%Q*%GO5*X=C7Zv>~TRxNGBbmtL1-lPjD!*{}BGZ zLdTwsyyn$$oojVsLOt{2*n^UpbaD#4>sq%ZS9yM~&rX$1+AN#lu(%6E`0=ma80#Czi3pSVkspK4dHx zJC<=`DH+C6l(_jVV=<488<(Fcmhr<_MkQ`OU@Wg`&a`p)Sz?(mjAeA<<~NLGi({E2 zmWjhy&Pd#xG?sfD%h_Tn9mZ0excN0>xx=xXBbLdLH>M2Z8l&}+wO=uo#&dOyAo7w& zrySKA4UJ7zL(ds8nekHKt<|0bW99^7=CYNatl_@Zt`tYKLK-%!b%<9tX=_QyhR${` zB6$v*xnbCD%xEDtfU3~Ls~JD_OcucL$mSs5@7kXq*D|8SE5a7fOH$r7!^q|8y1`j(3 zO^0}WPv|pL4K&q?5u*#t%<=Iylvo|YBa z#>NUI@Tt=#Ff}KEi?RufPRx7C5?JpNFys8soHl`ra}xM$Hi0t|^Li}-)<%_s>B_<9 zPMg5AoCN+Pn?P}5-lLYlc$dJXO5jf;Z_PMu8kgjx@%d~TW3UMJ*6zZDg&Z&$T>b?j zcfFP$c})Xx6!%Cj$9H7aW#C(6U%{xu4*CB9e(-WOxI8~!c>Gd6!$x@A>usFW^-|%e z-XR=ye3OigMBuTob?8dceiPN4V`m@h{m4M!%JB_};H?dn+gE&!hbtN?yH-?aEv60e zkjLHL$bt!l(YeSG(|!k9`g80j?AUi$`tLKS&8OFY3xP;($!_Z9tWU^2FXee|NNA1D zGr;}ey>_l0MHpr5*2>MzcayzPMORJYYII_h^bkjoT8l~PU}t@zSg8QnO=#6kq`bWI zOK8aB_zM-`jx@5LC6yj|V%X1NmzgL{SDND5vwb9GDIOcWDuAX~xzk%~`zecdZ0ABy z7f_J!^A#}JA`lQv2aHJg1qujc0t(XsBNKj50d^=rNfo67MkV|a3U~s{^c65VkMqv% zGiR_WvsO+&{SDh^7ZV{^7@a)^Z)#7lsEaM3$5)*G`9Ezhwbk};D3BMO5c9#u0HHixtK|nCwRwHr)MiNk%ZY%kNrAb_jQ3MpF+v-UdkZz~#v(F%GwAxDM z#{LGi)Are8@}jegKhRb~`y0B=ejv8T2HAJrAln@obc5`Ncv4vLX$D!N23a|dP8z+9 z%n0R9qbnF~Jmqb?dNA6^iJI*#uQA1Bei0dDe);EG7muNkEIaq^x3tlLX;L?r4Fv1h zkE;vxu%3d(GMc|?hSX*hpzbnWt~ta%-;f@|d_?-mk{+>0`(a9A3X9E82wlQ?^<~%4 z=wfwjjAlEU=8m3OI5F+b=<>1P9yn+0#y5SY#~U|)pEvHRLk(10$6{K5j5A|pI@65{ z6ZZF3F~WZvMptRqAY-yqqhY>~VSbzgoO{3=roZPt@Mb>8M~i>RVYNoy1N_~H%4Fxo zkMMFe8eXfN)q96bqXRAD%$^)UEIY!xPUmsQr)Abo+uigukzH<&@nEN$br||x$SR1P z%~OpyUkv7Kf@6LzhH8#7T0+KXrRAGVRM_$z!k!ZTe6Xj7Q`sD>4Ri{7C@hn>`dP6LJQpj|nMI$SW?S zn1jZIcpNAuB&d*`E~F${&FpaYnbGP|gp5$g{Vv2jE<~$G6FMnceTEug?O(Z|(r9%t z+u4 z588u-xp)sd^49s(6$7DadS@MH9atw_)I+Z=z`8nKJT`XK$vUJ$f2eZT9TMaDtPE@H zA;L7DVX-vd-!Ml5ShT7@H4kHX$ls#%1J+};sN~jX7>r0cj%IWWw$2XY79|uJ7`bx1 zpJ=S|EBCCx+0eW%vZAx%vkb;fiX8iLCw-XkZtiGcjp;%o{iF5VU=D z93ANR7^9dvpu-=kiS4YZ=&4V8_oe$!<3PD8+*>WfS9!Al3I-UtW1dQ3auwLs5a65$ zGqBbG=_ARPX*!kS{Z=MwtzR$E1WLg-=~Ql}$bBzT0`nAefSi+i#geCkJ`GuoZ8wTl zc}x0vGZzN0@$e=TG27wUzUMTb(y?d+9rHn^W_yV*q>yU}t-e`3*}iB&k6+4CGo}yu zeqb}ZAls#p6ap3A#@c|vLv6mnLnwg1skOHY< zE?PaFpYhS^GhrGbrdOF&Y_FamrU}vNv-mkHT0N1UiP7pwFcpfa)0j%dWF8cv)o1f~ zcC>mjKa-=?=Y(;*vG#9_Yl^t0M5|c?sXaGZeI7sOMXS$8^geF*v;&Ar{R>$ej!&Oq zeVV@a*Ea5mqcsdhb9X^>Hlw-rBwnldIblAl4!69Ji%?pBWY6L-`v`c&9Z0keMg~EP zxwV1iHA(mccENlpHHn<9zxNNcp`7{S0odS^h zeKz8~io5N`djNQSxvY)C(Z)^@XXshPD;#mFh*LAf&pBd`h@~0gCmiunuVQ_%@p-R;!=@SHPDk7)qP7w&x^`Yj z^A!>A%@F_15tAZr$PoY85fA7@Q8Yu8nGVqpiMT35Y;{DtHhO7>c(Wr8h;u=PxY!X- zSbb)Qb&l9&^_d}F?ugs0J~KpZ0`T=6R-YN-g^u``)n|q{$`N;2eWLGJ*-z>r+W559 zXNLH;BR*^OnIXRFh<~v9%n)}t;(n{o4DlgHeAVhRL;STPrmQ|Q#D8+cH?2N1L_1g? zZG79SklSR=qnF=74&Tx1QhU9L*Z1_gz+S(}>q%g=^*J6kdlejsG-&1$V6VT}UbRJSb8354 zci#4@NBDb!zbE;7hQB`kUgYm({$A&=pTC3r9pUd7f5-V7#7Xo{uj5a_wb;qXtGIc3 zqvBwFqS$=I0VYKZbD+js{dxL^S0%zF1r70Qu{64_ zbWZGvIkD%%(FOT+T?b2a;3~?kU)0j75`v&%Rfe}JZz*t z-Bbjv0soZI#?eYWx(aY76N+Eg^+s7Z>W{DMN|i+yOqMxalvIj+K1ecn$XUQ{Q6oMc z{E5*8=i!hTRZQ{_2xW6bLa~d-qCEa7)<5_w-(EFA|CH(<35!s^H0%)a60sTBj>$BV zGf`uz_I`RbVaUfIKS)c2W+=G5nt5S$VWP&AZjBeHh({FY5W*6f87kUd%`~ujbfU)8 z@1Hszq$B!r2w9293>9y$_TU+ts6i2Ly%h?Av4kJQB+@cevc39D!pA3SP{&&rLO~`@ z;0FnbpbSmeUOkEMiHVv*!YiRnj%;H(fJglhvXNR0m2R&-2bRf|Z?)mC=VkpQ{gFjR@t~qs>us z6yg(Ug&2)8JO6ch@pp6eV*KZ1^y0Jr@Z#z9V)UnF*feaGSTnu&8;6kERp@0qp_p!r zhAJ;AAEg@;yo6X2>T@|Q5}~^T2`aSnlA0aQ7w_8Bus20XJ?Qo^il$w z2GD~KkqSvKMU87hUDRg6ve$VhObXz#?L5Ejjces2Ok~ZzSEBvntsgG-08>U*Ub~ioax8e3VDknz6{YcV$S;8M#U1! zBkh@>Z*?#G2NQ!0-AEtRkwC74zlm<=EhR5EyZQ%!djSX zk~%N_m}+Zc+jIGD>Bd^E!;hPVHc6c(5t~Yz(hR$??I}YmUO9f<1zhw%m>Bo?B^kcN;tbVLxw%a*bLJAD|9Q_z=IjbL+8I$S9jQJe>7;QPL zA0Ib;)%0TqevW>Oww%?E_ZXAu$Bh0Q{TOXIs~`W`m`p#O%sdwiV6Bj&;j(&``{9o(Gx#PbfaSQ7&?{N@y`jPirZ@J8k{Wg$}y2%~Q~mV_zwk6MiC+2^6XH(Z z$yjF5^gB$N=K%t>fB^n~bQL3Y;TFPhj?E*&n zr~?B9O?Vv+Fh#b)tDpu5Oa8z|sI)$6Lg~7-G$n5J?%Z5uP?wsKr&gB~Rp#oEFWI!) zs@5gSGvi%QT*F%eZ>@<$G>=O{Z`x|3fHIRmuT> zn?!F%WzZs=*ZvJgFx%PrQP#_<1JPO#BR^V;qEKBBt<{2?&8TNOuEJ<7`a$)GXf2>o z9gNm0(#UA77TIi4J;Cvfj@F_hRF8_*f*aLE(OMSOs?Uhlf*UN;G11l0DoA6awde`e zW1_V{M|E+umZ^2M7p(<4ShRz0tK%CVtwmp`9v7_zJ*rEhwal)o&y3cB9xUO(cemr4 z7-DfcT8r*beO9y<5UIvp6qD@gNzvL#>Pc%?IL67*TC|7iv!k^DNOftnmI-$CInmm4 zwxk#K{*i)UKOe*5?tK==uHs4*fq@L7e5Sd61rm6m^_DA`O8<69z5_JZD^axV^@Q{s)Vj^1Z_i# zK%)Sm2|(CfMb`pgY@tlz*pz@OhMbM&Y%g{~T}#!C!T~zul9%)X4rE7#8~+;J{ZQ#~ z4k75THZU}-5lvb>HV16kHMAuR4ucF0a=Ks>u%We}rF2hQ;9;07h1PVy8)vI<;zJ@g z?efNb3yt6!z@Qp1;Jj~1E*Nwg7_jVr4liq-=L z>~BX4;c89qxFD+e|EGU zFsPC?kqZVUzq5F-lC^R+cZY+)joQ0OudB@)!hx$PTz1MQG1l!_p+vjHugGEP4%pZ?fgrT_xj%W* ztb;DS>Sc`uZGizHZoOY7KjRtm*Gz*^f@X^-)n)p(o=#!@gZU@K%z`fZQf4_#gf9MB z_Pz{#SUg|_%eT)-lg402PA`{e6=6*|ZpZS(+QnQ|7}Q&2>@$pg$$;_bsvmt_>2|_L zZ+2tNSTQFgRAUDXd!I$%G)^9GOP;p`l~H2#kVP6J;w2tSK*o-M)rLB1?&>I)>m1;sBKk;w*F?)TfM^%usa;4OCUkn)1E8 zkk@59EUnk|CL9bifZ=%_p7!#dOw31IOiBrLQ-&%>M)1C3)O$13e|OZRQ8)0SuXNj2 z{zY%z(v$iMio?@S5c>cneVPSK{NrU(h`SV616*Ie%A%Zn+~VJikIs(psXc8p!E3%N#k? z#soca$u8ox?jnJQ^d(EGl&ob7Z-Li1HH#3MV!a+r#5Tt+dbs_-zCXyHm zim_M0PSn3_{QHbR?~VGbcdpN@AFnCjMF2$BJJ)B{kJprMc0|@Y*Jsv`*OdReBeLGf zwaI!`#(&|6tas9PGQ_`fMAkd$I~n3?M`YELE|VeN;)w52lvZ_#-)mH)7n0YMFLa@- zfUYsmJod$UM`RszP5F#WI+r;jtD$Skr)G%SDkIIuMJ&w_<;xZ#>!Xa~3~{U@vP#PM zWwK@;8q`D7XRUONd2Te~AxC^c#Jw5L{f@}$sq+G9oVy*7HB=VnGn`u-k(E>y<}*Z{ z@8UymiMSy{bPLHoYpZMQzBNnpuN@~VtXzd=lH^}=)+oVT}n_x`Hj5NQQe|) zL-|*D?bfSrp;z+yh+b#d>r7ss(Cbut{WPyn>b2Bf&*SwOy{hvyl;bwm@6+o5ulTu* z`Y-A&X@PI^`m$d4+UrZaG62H1aNJPN@~Gdh*G(3x{&-NY_uA`!@OnhA8|?L;c|E4r zsJ;G#*W)$|{Mvgtv%vIbpN>4C^ffoR`7@WuV0OtVgN%+nT()+Fy52*!_IyCL4v|kQ zTS@=Uf7aR{sGqyth2G76{^bpec83$iHl|D#5Q{yx7r+KK2_PB&z>K* z6g6KEFYM^Nvkx1q-TnJbk1_WZze6D(?C;e++lSJ({XkYt*b=;){lHM{u&jBQB3*sH zU$L3>k}Gbxh>862w7uMrJx@NXqpXu)&%>t=4YTLj&bZ}L9WvX3BE8R7 zJP!ROJPs{>+1zocEN%*jh>7R*UTx*o~j~d=mD%gI&Fgf5<2-yW(C8I zJXQ1ojANXYhm2EtETmdN+%3ZL9yT5<@!4YiuUwcmT{TtLRXtoU!lpLy*10elhv0Uf z6~AazAz@}E)9k{y$fQbB_fh;75oUHW3tZS}XlD?{B_~y*31d;-TWdFLGlhqysr(pz zWd*jgF4j4nyUcc^9wsvLY3(0>pugl>fAL&@Iq#$UOYVYN*8U5lsEwdy?3nsVfje7d z`@z9+92-$vV?y~%%UjOQYJjUpFtxI_<`kV)m$o-QK(DQ-*qmJmv*+i z;m)S*;%plCp$G0!j?;5Rr{5gF4#51*|-gF4T?U~{5j(dKF-Y~it8)v^t% z4{-8ituAJhG%;JPW4)3p_(oC4S56mFpb&Rd?E`Uw3em-EA4+Y6LW*684xiLU1u*0-otnyfO6fi&x4vRztvrk@D^{v=1UR(y&>6qOif zuDBq_{>|i>tL^TVLz({Q_QBRr;q3hY(r3NARfe0aggqe}F=re0w)Ib~eff-I9bD-a z>MuA1=xcTgoVwE|`*>kXMFa&b0c-7-R-28bWlzf{jE69?3}J^=fr0eQwU+b6m}2qd zEUvym252-b7tPc3oZqjOk`CK6GJukOSnE6xy6;)8Ju(Pqvj3YL29|Wp=*fNAfjrj^ z1V>TNBmG5(Xwm73<$=n>_!Fh3q0SEC*2alH_5UT?ur3Pm)ujL>sSxSd^*zc^h z_SV$utRwi}Lpr2)J%VPX3m?s!X>V}bt#kg5+PhkowQ6rnO=)iir$B7A<$FneqIosu zk^9ZW?j~}O)8J?iAKlJiyi$>%z;wK|+H z?onBCfymuyGHwLY9U&<4{b};JEO~^;KTVU*%90C3{$84VHsnl;v;O_(kiCu9oSSL! z!)o!))P9k%GyTZ+#@Smfce0$Oz4QN=_Aco9|Eaxoe#_eXuFn6L?Tu!By7n&2w#l&e z9-So*YwxjH^04+EpCu1#Z%*8&d&jW$o(%cJ?S0<=puHz*#L(OYYVHd&!+Qz`SZsV3 zq}v;7{f{2sXR?Cz|I7H+sXS}%AL8ov|K0d5IDLBq^jSn_3}(jn8CmkM_V%*mVeNfp zmOQMzCuPaQ+WQ>HA8zmSPv741AGT| zTbG8!>`G2~8*B2oCOIY#A2Zv$cHPHTXLnOapv2y)*xr9W>7umx@mVus zSL))5Ie}<#Nmbih_yc_fCV$bj#qldIsoZ({vvrYeSic_R%+&2y#BVFZwOwmtd={?l zzBHp?RtY{*a23bR!fA)4gV#>QgIf2jViMsnR3J91>H}5?D_#`WsoPGb1Db!+{3RdM)UeVF;pcuK#-G_*lo)9?U&}EYzMT!P+tLCF~GBa_c7R4gy$E%9}UD#qz<}yoa_{wj`g@XXk znXiUjM41^bFqaG7vi@Y>;D(A(lxgq8=8aws(f6BLqsuOA-LN6L%p08J&sVjN z>4~dnHdOTK>4csJ^mIzJ9D6A%hxzrG1Vy>zH$GB+?yW2D(OmmDas7JCBz;+VuSO$Dh|c$Dh^8$5{{ZQ?-(x_z!8vqtvqMO||gfc>5V||7>qR z=j}1xeq?XIi8^Q4lz6xN9Xv9Pt5V> zpIX+Za9Cc;pFz7hM44VDtD<=Ndxh*D;ol7vY%GiugB5_4{eGcK?SmZbF^nG+&*`(e ziRvlsz|3#hj|%7X#{^CK?`GBsj&<+Ee@b*`MJ3cfg~p3&`?0O|9Pi8ZH8A`Syg#<< zu~JWELne;Q+(SmT`)xg6H2@+1ula*eIzP1-^^hPe7tS+)SvHHKn>uB;s#KhyN(bH|c9Q zn;zeMLbr7+e}%gZ2rq^_Dw6&t&J6G<|5IWrn7cFF0kqbC55oTqsbucP0B3$%p7}4$ zf7enF_cxnuKT7mbUfJWOXd##Tx*mgEC3Z1Ix=zT7Cy9hx!pQM*z+fO2Z#Jg^WDael z9wTsrnO2YY$`+MAp^A@LvOw*0pj-l+QWY`W>MO>gNJ9(U)K&p+GV&jO#X9x6FZls~ zrMx8vdO)vx%(v|W_Zm{TBeU_SNq2Gv6v$YbVEqp{w7m z%F(5A^C940vQK8u&g(3IoBGd%iBR2_j51)RBeqXyksXsh=IzJT+_?-h>cNP#f)Uh% zUfGh;DF{zEd?db=OHv(XnKe83zejB~C0~c0q*?4!fQi0!`oSWiu2bo+F)El@@}$rd zeQ)t|bT_~kZW*V1NA%U)msLVt3Men#;FJ2YaML*Q&g7O_QeRYRo0{`Go~${pkVL^0RVfT*$+Uq& zSnKOu-NLHF^7C|**E#R-sxnb;Hi}=AC?}LteXrl^a?+<$N>jn3uLfP_aSQMBUs7$Z z(N5L>67REL735t!oz`8z-^mSFtghGjvF_gUrZV-Cz56cf*oWwUiHZ#OUlTJ&(}BTa z0NRbjJ^JFh#)JoBGRLM{GkO#~F%xB@^H4BdZiHS}>(yJ-$UyAo=N@&-!Ro$~!PLZ& zYc?evl{e={exz7NBo;l|H0=hxP1$b0IRBkGO)W z8HEC6)+w9jxc7JZlyqHa=NXfRh_}aDgXh`RO=+K^AZX#Q@e0@jl4A-+&yhD^P(Tv7;^J=>_};C_IscV4f{f|bC` z(s|^bsSQlS$%yoNa|3Z4ydVM0Bv#GyfuSls<)Zf@VVC=%B4Q` z^{bF=^7r)Al}*d;Iu+I!xcw#wu82Xhvk?KsTPR^V0J;a6mJfc;bo7Sx>!)|%#2@u#)=-jZrX`F#< zm@OC%1Es8dsDG3E51Y1HZyFmqOM6bJeVf!i29+vbu!>qTl_*uYfR5iZNYwh z|M1x+r1S3^Ih)1$C|g3~#?OH8}a`E2mtx!&&okNS>o%W+%|yW0Y~Oe5%XZ#@yN{ zII|6bvaZi8eL`JgVKVdVXC-z+XloTSFIG4Fg9r`##-M}7EY}NG3G9J7#LnbL=&F0b z3KawkMvaO;5|XPR(*o|041z3D-*#9 zFdX&;9C(5}U>MUHvyB3K+}Vk7JJ|0nHDHaIt?-&ffl~zM8Rd0na_=r>bEXygWSG<} zlbj8P($u6qOB~kiA))>Seu!UB!MkkzVa;vmmV`Uq0&%%}*SkDB`P2Otg9^$8o+fS2 z5ng*w>HDK@rSgR3O)$PT=Z~AYiRyaU!Lh;Afw~8>-jKD+-Yo>TM@{QJ$d4Td4oN<4 zW-R((_~g;R)PgIK{fT?%f+?*DGskr+(}t(KeD1*Pe&7+h3I9o?y!`G`oQ8_PE1nDygH3Q)RJ+ zPIJgnI!kaMHTSqp#oGW|nIoNK2*Ewto#fu6+)-Jva7q;@#b`mDJe1(9!8x6WE_Q(# z#&Ft{C_xBW=Vo9Oz?&UYa>b!>UY!vDRA0v-SEDA?7`4j-6bVQRdCLtC)iBDO zt$f_+K60=;8;llTMdi#Uvklp!?hyO%Lng4=*jXZf2(iuzT90Ecs7MR{ePgC}XVe*u z(m96;@HC(C;qc>uy+D&~yl2X;iNhc`Ee2jxQ;Y}&OS6`3CR$Z7=`+DY-aR^K2j0*- z)?z~la*puOz*c^&kV7nLoklsZ!8HuSUJ`_RUgoFXfdST>9*v!nY>{f+&e5W(*U1;` zFRvRyFF3c${<8~47f`ddj(B^zV zM~FK%#1>=^i?~wHI4qK~tFwhnX<=rL5>2L^9d76z&K_A1xl}BaH4Nz?p6l%#32>O2 zkv&d?83@P0QDJ9;juViTO^Q|yX9w_x4u(C!`gusDUIX1}djTvsFAVjGu_64S9T1cq zI_liKKjugf${0VSLv7DNmO-%6X{n03Za7Ov+SC1>vVpzpAI_d#y)P(TP28jP0F!L( zJYh3I`<2y}9y7av40Ck!KrgB$n^%(Lw9dz&{;S`B(r9#RT=q0)2~z^531EqvXB7FM zf7_S)PRTq&In?)FAz^Do;#TU>4GmEC)Yj9_%=I-z~+mdoTH z*LR8J8@$}Qm(-mkTsF;Q6mztxZ#N!j0J(;pMUJxpF=_vD_IQ2QT%ybocfxSo^o%~&4!o2X-bV=^Y=aJ9T-&vP``IQWyB(tFeq>J^jJcgd43cb7{3+~p3w8-GSR z;Vjt$e+n2|fD{eA)CCon5$F4P6)UVK(|ke$4>`K;M`e2MhqRnYT)@x;M^@ zKDp*yV|fvh3UJCo?wmPa{N{}eMfOLeMd>t24bSV z8D=AE{qPiNe>6Zw_3TX_9pv0fwTsiWK98Wnm0g(;el!ll#FQzv4X6e5v$XG6tK%P^h{`5%;l zPF+9ZoEg$n1t9zZ-%I#D@|@pkqB4wTPFb~GGC zQ@=LT`*Po4Q`g{aoOIFyNq_XI_vw3zG7pd`-f6H|cIb?T^wl|`F|2$x?vu3hH=@>w zvreO|p(&{!mNxPXe6RV93Xr#d%&y%YP^tlPqe&?`IzD*ceS*A^CQQ1vgjvLtMFuPOy_Okadt*qpZ zMKJQjmTqtPEo?}so@VfuW_Zp2n;W+{hqxs5#3ZlzMv|LOa6xPSd6s-vX{cpCajQv= zrycLCEmnjgF77v%?xnKKulM(H3C?v~Jkp=6y-VMwmYVLm_X_IjwmZ6n_>07Tcr!%e zTv_`MQoPh(k=lsv`$;*)@OIT#EcM`)h`$xn=U0gj{n{a{@2L=U|3&Pa7oIN*>!|;5 zDXSunK2?#P&);hPj^OWn{)XA$jeO>DB#)1{$5A}~!aa`WvCTae@VLo6p2uUxJzl`$ z2_ECLdR)}s<3C<{h}T5AA;csn{CBeUzZzt$DaPyG*YWA%KZ~d6I`Pd$Ox?r;O(k}F zC?gvSU8NM>a6>v=c0;;weA7t}`$=wSPlk5J{egJdhIrEefkgk&lDI+jM7)f6izi4* zktE&fI2jmVR}KkX9Fn(WIA5gcbKIp=A2uPH2~{N_AqE0IZjxEZ3m5i>EJpI93sa1{ z8cE=4_VH6E#Y>-P?QLQn=E)rrc`D4gluh<}R1u>VZW{+Fe)KtIgqRKFzDO2e*hRdf z5A*7t=Aj0nZ9r-xejraxbZ2adSO{{!gPSBqyuFh*A63SMFB*LD7HAmADRD}TScpJL zWfFqfLy!hGQb+_M_0a*7jbuT>GoJ=B2L!D(5Kzdj21xw@sjeWkX|1$3j)j)=uTJCH zC+^ooAx^-4bf;SD1ksz+ytM_&pguWC`U3n=O^6QAHU=Mpd;y--43Xqih;w2R?(ixW zk19wr(UGLcH5#ru>H5e=7R?KDMVg5u4S*(R0n%r$AIRq9A)!z`G_k5deyW0+all$Z zt2qnSBwiZ3nl60}@{vVOjWyCI*4Yy@dOsj(LEuON8#R~Ev4wIk0{OOkExJ07Wm%C7 z^;L%6s|=k0r!;>aM&ymQwkYny*ri1f|SXCAY2-XDKxT znn5jA!MQ=fFx7#3hB{UeK1;zc1s@3temW><4lua|N1mnNND2x+sm6CXYScj-+NX`m zEja2d1xHb^EhxAqD2Q9l^`p7$q3n>G1N>~x9M91d6z)@vO+i6L&A`5ExQ_*ADOf;3 zVM-O0@)pQYgW6cj>M!JYh7jphPGL5Rkc zBxRQyu0dyZ^@8+ug(~}SP*y=d3UezhJWHX%^mSv(*Dn2QRW^p7_!t~=C^)9@n%NBN8u2`Y5x7 z?|f_N_;VF?{mt#`w_k@Q6}2SFsj~LDq+iHbhyZJW#5NL_HNjYyG;@Is4x7kexu(ldS^OPv+qvSpJE-hkV58c)8)R8vj4J*K&7zNQUGRHZXS}22l ziOzIpTbk7>y2$weS>w;+LK?&^7ljK5fm>9mFqePI%8|@Wlb1wfqe)9WX49GsJ)I1l zfJQAR1ZI@PM!vEQ%j?v{aQkolKi7&h}&0}{t^GD zGdya2_c~t8jY-y8a&egs6VQ!hQ-mF#`L8bwl&obeVR*C@yvy=c%Q8t(=OPyNS@u}f zXoj-G#%GG_D`Q9W0ugBnVW1Y6y%(cq0!Fg{D&~yr`K|H%bma(Tf00=rJI9yH4*7CM_7Sb|5$VdX zvj5a&FUn?zXgMQ$xHTS5SB@-yX6d~^=2A)r88YRJtRq|FBh!_m$U1|pC1fQOrbZ+V zZE{BLQLXV&<-JQw@%Z7Ixc0Km+^7O6@^n*AqyKdKzJic`BKcn$-CD(UL~FU^lyikP zbKdFntG3hcDP85__G6@RNogqJwbUb3&@*AUTWWdEVpyT(Tr4}5qbgoI8H;xzSqv>F zJI?faxZ8B`uNWGT$$vBc#(qBkAZW67OO_wS?hH<~2ixg*`d%C^#JFDeBzf4xTMQj% z@i6$8d%ECo&qT1`)uw$Rf1BMV2v#hjviAKT%bD~}?hXjI^fEtvONh^nG$nmYK2O53 z>03td^oTu$dD2cz-!hV?HhUVy(lmpAwqnsyOF0*94ZG za4hdE(((1Nc45#NUdB&ySrJ&V{uLgVESo6)w=kbgD-^RS9;fmp46|E_UH#SC8S?U7*oF_5$HO8>!^1-Cp z(fK}pSzNL#b>WHw{`f4sv5oNm_q;J@S1xb7-fOuI(kyQDhEN!{V_L9=jznm^x4InO zxQtj_hoFdKaK@eK#~m+lNSyH@IOAcylUve3^xq7VwE^ZB7UFo>32*hi94GHD25;PK z7(+}Bm-DGyfy%)i50&FwIip-Y4)6VfK2fZ;=AB^!C<-`~Zt*e}ITOZ zyCn@*d`2x7Qoy6Yr(mO}GG|0F*d&$a1{L-oHqsAHY@`80Y_vCLWeyEdb6DKmb>n-+ z8S~ssPMs@Uy$(NulUm_2g59tVwnw2}R&599B9yxV`@_#PlGWedexM+9q;+zZPkg5L zpH^niC2~)N4p}`J?Z9U3%lAlNf4z`?{6Z`2=)%?s7LW%f^ZA~SA0qz9B(&u^Zz=ht zqD~{USUq`46mdcXl8Bg))EN!ww<3RXc}45wDFht|m7k>i%f|)>GcUc+H)w8cJ>LUd zWopL6%GAvhuTM{Hp~ZQ~myJEFOeuOloEH4@o#LE1-CezK%73O~e`5ThL~3$7ub^2cS_5G`Q`VI~b!ns-fEfPA{ zU-@g?GWBr9@+O$b|1se{raUsMg*8QMpp6Ux!3|pztX!P(6-wiqHml&-d-}c+O4CM+ zr(>h_tj%TGLvIH00vt_)&ZH?5A}Yq-L-3_!(oTX@alpBHFXC(y;kLz|N6!cQB?^9AE8AG0P` zhB8UmCAAd4WH?X;avybN^Yc+|NJ%O_Q3qif`>ysLc;^E5 zU3*!8v~hKLY-l?<6QOql`WO0#2od$4z;Ci5aId*RE;TnF;^3=4nvfR`_ATr5^E&BY zZQ}V7&vulsPomN_>cvlOGX zYOw_|oeMLF3kto2DxZ5;52EN^<3Hj2Xu8a)=Sv+jpROoatTA!eC3$m2Ov%6m(hmXx z&QX!p@dLnv>e13hW`s{yY;Lq(&x11T3kpQMI$2uE-bl1g4e{Bgma2-yZS=HH0u!az zy@Dmr?WngHsa-Z)QeyO-RL)sYB??ig0V5acB;^tr342LA$?l;{7Qxb$(PX;M&)8=h zZ;Aemo3(z;HM=P3ExKhVs5Ar)W-%|?7mp^YQH@SqLsb|a2Q4vuh54@Nx>}6|d5t=f z1(itIc_K7{!E}msmiA_@uJfqw#d$%ucOG-Biq=+caT)XrwV@^uRk59$U%}li_Su`!(hjyrG=( zj^3q57p@ks1aCGr?KazW+kxeXYt0aFX&oJ6YI^x`pnB=Y?P7)8t33v84YxC44(@E_ zx1paAhW$x`Pq45D%u zus^hh^e%6e8mXTgO>C+nnK?oj^Obq4InIN8RwrM?s5MT<3V1i_W)J4# zvR2E-ZJzp~OaJB)lWXMz!F`JM9wl$Md;U)!Ghll2%Zh*o^ z7$yz2HKm3@qd3(tHVU_1k9=1k>FrTMYGxN8>&GoX>$I8qq~M1}m)G`_%wsi>6y0 zpxjZk))X-{>iiyS02R#cA+r{OZ9RJ!ILM1lt#o%xGC*ZuZa#@x0PG22HJZ+h=!rStiiU8}Z2 zv|eRMxl$OFD&ax<-AD!qS7E8a{nrltJSAUR-+z^}DEOT|1*$?K<_Bv}oOTZQm!=e4+5C)4>3xF|X zMIU8$oxMIne%6D~m#w4Od>BA9smXK;;{U}O@ai9TC))=t2G0be%!M)JftcAX9a{x% zP1uRxP>bQ7)0Tpez9x&wrk}KyRU$_srjM!b7usSngY(HGs=$|7KkfU4J9&i&m3bRt zTzsKyJpk|+Pun)}W9P}6Zn|x%gV^M@%}M7v1TqPVm0@IUyL$tyw)#@ejHA#1*-fe~ zZ}*_Qu1(4ZI|g*jV<;~>`Ro~yTWDx!4;3=(B+Fwrt8yC_>cNOUnALil%%i>3Y#tVD z(fKcHW)Es-_fa>ehT-G^1PB@sClsLo8`rDTmZwY|IHrc2jHp+`7}YVB`p)U$)vze* z7;UBNmW+M@5$?g|*jvD<9#B9kLUx9cNkyiu>mxKvb(Gh=4mEpu&hWf0$he-rbVTX> z8k9#J$_`EqQDk$qfB8G_cZkU}^Q=)MXPkdBFtObYFkLS*Pl70sihN+2*LoM-+NKEn z-bL5%brJX9^;-VqT?8ingi?!eC@H)b$CRfi8t}x@_o0Fv0n_$LjB&8g3wf&v+|t1{ z2kvISvg5E&2fS4WW9i4PY-CwQ{r&Cx;iUHaJ>Keh{jKxxL|pwsKzMGv~_HI*;gvUma9ktLO9QczVrMs?Hw}uQ=czZk;z6g)v^CXp8X_Dolw;W%(N| z$3)9p(frQfU{B|(L-K6(nus3it?`BQbJ6!OP#7QccdB!=XTpynWk`!w;iq=4mIwX2 z>qoGpACxcX;axw<|A2hf$Gd(6U(yi@I!f+C(R8zQ6@kC;s2i-a*+d#oI%nB@-r4!^T$uZPakF@@t{sVJ}b%?RE{sceZo zqrQYW9H(c}#CgFaI(dP3M0nk)$j0HciDN8YF_Z}%6qASotnfWCig6?@YE~jOm9Y5X z&v08DtoWaqnb$NJKjh-h2+o_~IKax#zGP?zSF1~ZE}jvFu>;)!*XklC?~E4g@S4vv zj&Y5X)Q9?%)8zMD>iPpX!uNEE&dhjfY!?aBf!H}$2>M(lj zZ^_o{$2?%UOawc3FHoli@Jt0*KMlMx%aQ~v4-AI?BWPYUX}6;Eiy?ryd(S@5*_|%0it-f|kiKptafZf6y{ji2 zSp9W-`D&CX)D_&6B3F>Zh8ZX#VuXKP%93BYWXJ7$`GRv!>_+hjw66=X3>*Qtwhdnn$Q?vmde=^R#L4>aoEgaY(sgsv%2sWC+%PS~Att5iSL^QT49HXndrl5&dRzf&qyY zP>qlzp54*T8Xy}R^~3Zf3@3K1bmDgXN=@Q;QG6rK%8#}NY7&7kUeJ+;>LYHW^uTl^ z+5pyVONaBo>d$V&6a7x01B*RU$1K(y;(x%M>z)H6OLS4YBO+LDw3u|8J(K(7aE@vL zu;3ZZBC}3J+)>^U%+!f#XIIxyhbXL?H)&h7$VUx?1T8QNwx+y(wyxtC;S*VTdl-a= zOB;jrrqMEygf4O3X3V>U1>0!1@hNqp6^&~(Lj5h0HJfg}#S|G`Mk^hi%?76qtqZ0@ z;s+O;L!6Z4Gh~OXIm!;Vd0|4U$ioV>9cp%#MxbMdouV8=%G>EdUl|d|gpB9ca z%Sj>RAIYN2@zBko_yvEqnlRPaRR9p!VMu(yLU7^(6K?Q9+AiH}XwAVz)@aHa5;dW^ zcuc`+Y?2vS241_)O^ou;&Kivp6sEqp2?xvCga0k_G}R*iO|VgC!8tvS5+Ce_Cxk37g=shOI@nZs=iFN>k;A*%k~xVn$dCRG^*X z5P`!E%%au+pQ(sI5N_&o7hO&Oikw-t^MDFxGdr5;?1tvl%3W~t0j~uyyv{iJoGd_7 z&BC)0)>Je4n&uiUot&w*y{=Jnlg?yo(odW4ezEyX#R8qEcA(hCeT!a60$}-psD-0N zVr&BpzIL@Op56QvU!k2%dcS7X872S@n1Fem!`Rgl?04e_UB;Deed&-FD%b``0yn}k zQHrruOeC9_s*l2vh=F4Th%eHPX6j7CoU`x6*D)b*OtZ;fZ_G6jJhZ8cfbljkPCpw0 zHk%JdAh>Nzbpr=TVKpJd1iWyINgIN~V0s-a+2ujA-7GOw#%&I0qali>JUGyuP7Iks zA9?fN9s~9HIJ4 zH)PthK=%d8om28y$JZNAsNE^dX>1?p^eTp*1VlD9ShP|*$MffG*W0{;>&@YWnIu+M9$5*G-SE211)R^)nu z!1ttxB>;OcVhc~?w_gG!ApP0^FA0q}}%i&OmZ zi-FxQ{hYK#JCw36TTPocLjW6)u{+tNLXNR)#h`y-SzRV?}e0$%;(JLI(gUk z@;@k}>*dVv8Lw!=v3l_!%;I~o^n;&MU%A$z{UB`k3;xO0#e>$@X+zv1>{JofMbaVX z$%gQ%zrxU-Bl2LI?4gWZL7@l{e;w)ZK*gy~^M#QwJA99rM=Y51sR9^qUQXc$AJ}N` z*LBAIzBsSKHCeV$WvV9~OE1P~Y}#6V)k)`{;0`n2X*J*&VLeCjrc+5d#N45b)6JE< zwec3rgZM+SgyIop=~NXu6n`jP_!kK&ND%;_SG{>6mbq~Gdljliu;7oIPnK{dAr;$f}F`O+rFLp_P|jouI1qXq3=^WOv|)UV2P z_yU53Cd=Ac>deG@XcHUwZYs)&=R45qqST7&NKk-asTSY93}z!?)>Sxiwu$xmlA_#y zc^u3klhDo)q8mlJGbGj+dpQ3PXkA*oL>uWlrSYoa$;bpDesoRdm-J0gmYplXb+F1< z2TCy|;+GC7-(IDC6L=#2cn2X7Xa!zI+KRb~^YvIxu7wn z3V+J4+&D<%kc9Q-zGnKfHmei-R7H#AAg^F9Kv#+&W>dB+*AwOofs%iGWqq80hJdd(cI%IME4*{IO4ib2+%=GqgwSbCJ`*w zs$2P)Yq3cBcyg3*zXh}qO<|*iSbTdXq;G=MBjM3=sZ&(V~i z&9ev?I??9s<+WPHPgzFAH`*qul_rz#4SxEiLv-o^jska>_bY^o(bcXw2GyFgH@7*o zME%f`aow035KyE+B0E0QHAZ@gc^RO(##lZ@Ov*Nf@l!K~+rr`Rdf0D)iH3)UZU;k? zQHPCVu>qND8W^cfm?$cuRoiq@owB>>q?hWK#?f^Znp;Il3v?(BR5p<_%z7n7t(J_g zc@S|+OgZlqUCX^ES4X1wKD%n}W$z;G6d7jQ6{OF47k!zdFM$B`ONT1Uu^4OM9!Oz; zHnwLR2VLwWLr?QA{1frJWQhF;kFm1#Q4WD|&KkQ5S(|W9Q8G0_JOe^xek@?h^VnWu zk#Ivg+QJQtzsqOIEiKSbRl$t(?H7!w3_Y#4c}4oIE}=hA8Qs!dFa1j?{FmNKn%mFX zOLJe52gW!aG-6c259Em`b7FyrJ&h3b+)a)YJjxTbtA|)5rrI&)Wv*7AC~%`~bz6M5 z>3ku#TwNMjBc>!@=JHopjiHck2W9_olmTX>*iFmkzGxYX0Ks-6w^&x-s1|SOHTTVzI4OYcvg3g< z_v@A_gmVxih1oFMb03pWd(HN=8rn?e>zMn$F8H5d$!&Xsv|~509u+=D1h+$-bG2CM z1KU^*kftU^bx(5*T{yPD1RHEfuU{Bu>AgbV8lhmvDfAi40LVtNd6x)Cqzev*STHkD z(cP-dhE&6j+kq0@9&nr9f_~Oxzp-@8vU+-%h1RWQWZz}+V=QcF6ZX?5X4Il^jO=pE0 zJQUEhkVQwvw}IkX-g$R!%cU!JEjJ`0VH6lE7zJ2}Y{TJ=>49r^Fy)3da+)nmU2Ar? znyu(L)@&n%bDM3bK%KCr({t+UM*_HX%!Ht6+9x8cX_~D#F}awn#J#&kvscTm!>u|P z+n9HX_20isUnQHYrmFe6fp?qk8y>UkYg&!mhdEU1kebgVgq$_O6dOKv%Umm5G`n`Q z7*Ew;i;y);4XjREtCBbA)?Y1X(fBrB63VFlh_}5&KXJ-y6IR3L2>+?1l8f{^za-{& zxvQEwlOc?xI*e|ISiVmBoua08-Q5z7{I{&eoQkJ240$gyG}5%MG3IaL&X$5$h-*%>; zC{__kptdJk)=6{;Nb|z790ih9P^fs<8QnP)*{bqo>!z(mSX1x|7;mUjg#DRfz6QZUf`THqO zNIcza>?>-$apsM}<(Zl9J%%evDqO0Qw6b0Pn0RR&t{`2IQyWhCT zZ?pr%5>f+K|6H~8db|s1$hZ&@1(K=K4%4+|?)?XWrG1s5Q+`LwmM^BmxNhDuKIujG zQnETWX^;ZIkzM162}lgIJ_-7fyhhw|aVeKM0KEa|8XOteZt_-R^4*^PVSXb`@Hfda zeUsJ3t&Ne^aA{^Fm8!EZUzi02lmwQliKcbv7FW+K9Xux>gApwqjFk^~D-@Z(iIJ0Q zcM(A_3b{@QhfgyO)d2aOJ?{}`B<8KI4-po_YtcPYIm7GXP-u8R^Y4s9dX1^T61C_M zU+HYN7rKy_DgLP&d~fyDjJ=4aq4EE2;9y!P2h-|=zpm0hnYvv!6=<9SKhw!DayO1A z=sSL-+zEeIiZ-mN;fh_=9b#~OPePK`={}I z#jYsI{Krr5+2x^ys3GgQ^Kqos+FfF4ud2GkxAt1Dt}SYe$Et}-VAetnurr+dcmN7 zgpF0v^rq=wkMn$|a}$*(rhG=JZLyj%>nXEb*LZ8-6R8Gyh+e>RwfTdFH|f=!MJI1( zePi!j{Q0K$a0b0k%GHfS%2jN2;*=Vf#Oj&-aHKNS5ij2`e$wR85bi+C4Z%ROciBe1oO2+?u-+&gqK-Se_K4XTMpS3 zk+R-M)5+1^1G2lWOqYH-k)E(hnW_ljg4pgrWoU0K1UJ9*LjKP&P6T>gvg__QNVx%e zyBnG0T)B(R;Y;^(-s;aXq~;R}q1?URe}~V{wjzIoKJk%%%IX)VEyrakS$T~Vf*51K z7-w_hLI7M1p)CJUZySThNWtKVl(Y~RP&N`B7>^-=xFeCWDQcmmbR*`s7P1EJekG~~ zP~j18{xcx^;$Ox?Of4>=5IC6je@6FITJH(JuzDhbu?>-?4A%XD<%C)Hf3~7^VkEsF zRDRf7K8s<)!68gJY&|e7L2`MHGV=+7vmjrE{@4{Fs8&#jn|IDth+A0~j8LHiAO~tH z94Z8ja;`#L9l9W_LjUaw6%7@_EahB!g^Gs?jXZaukrWzLet7APG_6Dh znmR_iff#k}LZhPPo0ooEj-~!U8J7*ouk?sqa*s&9s-OIe&8rk*r#z{XhnLa(GpNlguTb^>oGG{-xo@ zYnJlY*}Npv3qxR!{lXvtPQ7X+2Iuk@-I$9yi{vc2-JC_+4}`hZN(geILzkio(o0IY zdFstDsTF$3=iyF0jNpObM@vfeX|Wzg(&AQHtY--`9}1pF^DM!k(hGQgBzQiL=SPF* z^LhSR@QieEQRyrao**IWJ6)X|ORDFrgzzZ1Ha&R)9uwf`KTD(*bD5OfM{%48Z<6f3 zkwR>d@pw&uv%#vnMhj;@#p=yVcr*Iq*wTbfB+HM0e>>ylYn}ZIQMUe*d^#}kFy)5k zBcyLg5P2qW9{mAdAybrLR@|3O>D|akcO?BT&aLV;eh^8*G_~m*LwyGxl?$Wz5uGy# z7WE&Vgs%$qUN7-xm3fwa6z2-N`;jdVM!*in`8dQuwrEetE9r#1M3MLa7oLfHB+G=p z4v96K6pp3vk1B3B%4Bb#2-gOgB5%upEMV?oAY~_EN;Md>J~3giZqhuX?b^YQ(}EJ! znHnUev-m-RZZZ|)*0}j2K>BqYNESJIfU{r#Cd?c`B|hkTp0YCb6=*y(C3%r@idrQ0 zoBs;vQ@}8ekg`VA5f+Ie^xEtROlfadoj9{-beHEoirb z0@ulo93c3S%6^sxqC&HSO5A+kUS2Ux0g!<^Ds!SB=n{gWz?sxId#)&;q->6y!La1T zPU{8E527sz8rm|<t%>QKGLL_tkLY&ng4B&1;}E}`*oUZ z;y>qsY1}0{qR>tU(k%-LlC)PK46Gg3k_F&^OPW<+)oZqxB+?}I<*Pf2_-pn;w%~}i zbi<)I_h`0!$-GHn4!Dpz4yGB$0h0)|M|}vF)#W&ZuHwWvi;JdWELE^!mX|;glJ%Qm zT>Ee%eZ^e+&RWDGEZwOxufxTtjKTroLi#~vTznVjgW)P~pS2h}F0QDJEn(^Xt*vuK|qr_2aUwWI`H--E-jDApl{6(+x$p0zj$6+*g&~X<%!@ty%T`^o* zl!!}E2Onnu9p4FcP-;G-6z@Q;7NiB95^r$KhY9Oj`#WMlW!sDHatd7Sr~OwVh_o!u1F@A~ z=B&e|K(wiL{^D06%KMo+Rhfv#eCJO!HPIp)`xrQh28^q>I|`6$gf@a&V;Km`iom&x0rjQ#L7Dlcffshc2KY(U8<8 z-3XHqJHI~KyeG`O4jby)AanpkHuOGV&!jo%V!T4t*m|Bm5fW8{Jx?=xjzPeeyo)oDtyJ+3d=O) z+=WL_INu6q81bOd!!?iiz`|h)kFdi3ezwBl4=g;A!bDkrbLoQNTAMmX1zjF_?y{5{ z$(mXExu6_7DJV4R?1iHFg%?w3R4#s$3<{GY`F!9jF1L?y-ij9Vy9zg5CCSu$VU5M| zVo{joLT|+&tY{A?b#Tr~(2VgXtj!2lQI>7u6e%v?6zOmhgbvu+Xh^@)@{2E+)>^En zUZG_93k}cpG=j-u{!s+J3BL_MJs*Q|1fNXW-*fW;iE%n5b4>W15k-jv0bKQVLRbot zGE=(T2_nVHj^o137+(iJtFMEZg7yYRW_!!aU?7 z(DZ(Y9BI{o%Gv|*+IJ1rKEO~kV5f0*F6hG+)y+(iq5ha|o`yx5QB+9of z`Yf40*VH#+(a2cy>kTax-fC19RM`9E@cd6|GsRW!zXt8B#B7J+&Z?`(TM=cB7%Rne zK-J-`$mhN1Ur%UtG~1aKlgKuzgmeP=#7%@+m^BfuHWAv4xbkmkT%O+%O@C=XYW-xo z)LdiQ_wo2xX(`j{B&-StO*DiNO|PC}dMgk!MUfgQtU>4i(gQ@Vgv82uh)Nd)gX>2x$>X&O!4W~>*_le{ zxtBT6N`)-4Wm-Z*A{_QH|AB{Y zAkkLxRm~)`(}-B2*DHUDnm6u0=KPJYAhUB?v7eo3S|mL!#N#7OE`#dQowR0JKI!5N zhSEjvlYa#1qTz?qMYWTz=of2p)7xD7NYXdurgypYQKT!N+z_0dE`2oVuji%yzyfRjSshg(|kW6$=2_CSWX8D~ zk%p|t9*a+0@r4Zt=tVwnS`7sc2B@r40CfO!nQ6U!z0#yJaBiRsHa~M7| zDU#61xpn|m;kglNb!y|u9K@U(9BiowW|Kw!5zcV}ahVh1Xrk&Y9)*nb>JYCHXv`#i z<|->Ij2cu4>Z^?15oVe5jXpZZU3zCiC=(TtLw3|A&XK{kjIA-^hO9$?Bp+VU!!`7z z4r2;gGby))lzZBxW8IN8wB~8Ot`Vrn=ye|Fl#oAagA3|{-BqNF(=Zk|ew6}Usq_reg z{))GJ<}kFX(COfWpgtI!@KzSwEC@;9g@Ko(CSfr))h8nUyTGV|lwAF>SlJsiZ5#hz zI(zek?}p$(TLSNK<5gS?k{ozYmmdP2@Z=CY$W7ph&r$o@PH!Is=ZAnN{5k{=3KV$7 z0X$*boc2M4eh7HN%R}%+8oYIIGisl(bPhb|(+>gf^;~$P4Bnyup0IlkywM*Dp3Z@x z_Kh}p1mv{#=~T#p2aEC{+Nbkl2p(Ju&Jeuw3|?~pPp420 zyz@U4Ja=BX?J?_ogEtvCb{q&;W$jkhGq=Euy%=~^7ku!74))nB>A4q2(>E5zU{{yF z#u(%P)5Jw%$P?@vr!LBP zgQG@V2a7ZU@lDxYsJITAR4nH5#cAp0qDDF&@jHa#2<`Q{&tAY=xiJiR|3<`tAba?7MPXF=s|oN0QyAa!#| zdhB1uYrEs+ySxWuEU<(>knrD)`_EPSZv}jXY$RH?EWJbYhsHBry9uq;2so7DOIvU5 zkECuYNf)kEh~3LWPjBvnDhfUgxKH0FYHM5QEZ+z9y}aZ8pR0yMYWkE!ZDkRi?}`lG zG(M7w6;UkW$BH6X$Hsc;pJ;q35HzP&+^fbsFZ8sUu9^E>f2I)&<=xLV3nV(&Io_6g~{dnR}f%HQHc$OC3R~#>UIT6|uFMoN-WolT@ zR*p&wm=|waSCAvB)N9l~aT}}VE0NnHUy0li`Kz_W55%4=;ct)J6q$Jw*9g56Z+g2V z#q~X_rcac)NPxe;)gU!!#ahZ?(n?0ZE`2hnEj6=Nk+QNA1 z#wm7bTGReedVa`Xr~sSy3=-TgKXqea>aQo4?^|-KpNXcfE&031@e_Wyv}Fr-ER|=x z2cH8{>RaPj*Gm*Sof!S8YfDF5%Y-b{Ak+?W(M(6w?-;yseCpbw&THYv;mDcTYm2VF zmiY(@)J$_^LswUi(8kj zgS~HL<;{M(pZUAv@4--oVHmyTmyQ>0@Eem+$4VbGk-0?|<}@icO4| zHoNIWNy7z^r#SKRo+wa%RuP5a*`XB^!Tck0d8B@wv@DWr; zoNw)Y|0{)nkCgB6mX9Hizth_0>S_3VDpqXo*GS9cEx(#-V{C~Px^JZE`8I0Er>6W! z>!Q*D@c=Fi3l{?VEJWTE<{d zjsEriMDyEpGQZ&@iK&LXo=0pAH``YMTKd&9`gark!={n~JrTM%JpRl2G(7irVH?SP zBdx`y8hx^90(w4bqtPh9(tTVk)6MMc^n8(8=d6tSuSLtAVS9}CcjoMk&X@?KyxuqY z9z2t+cgIR_VKQ}o!av#4wsc17=3-NQ>HN_hSheV<%881t|oo^{@Fs0-RytS$G{&hob`g=IfApT6kKddOAYEOjra8D1@ z5=nj2wF!Kg`V#G7Of()t?Wy^{ZjV~XpwVW~m|DoFeKXs_U%D24sbonjb7k|IyB=;h z=X#hJtcM9h?aEmXsX{;E7p`>6;jN+N@EfWCuWP;iArtYn8&lJZLDZ87^K*Q7#^OZ4 zB``nmHz!ipv+fEvllk*f$Oh}~>E8~b{z}w_Tgwk|VaSF_$6Byzjc;H9M8FRt*c9h+ zymul}o&CI5cgTIzQ5ZI;tlbjJnsp~LpKNk0*2br1{RTyu& zU&_~ac}(3{l3G|C$9#7*Czpg=2q$kyeX$^!zUm5gX3NF~k3*ZcU$YgjjukDs7xgar z6aE{Sqm6x7;~vc1zEnjIO6`Ym>=lHuC~^n4>r+Hfo7NS@{Y-Y}u3g!5BGfRd@xHv| zqRZ@C`kK$(nm?qX?HSXIwpjFH<9#8T`DL2XOE_f4`KAIP_ivFvgN~uDXgYzu>95`U zJtz{IPK3SY+jws}fw1|i8|AT<9{Dz^i=-DjWN1nBxql$Dv%##Dn@`fM03+x1EVP>4 z{fX6K#`Bgr-uRswRc;|NVyo%xxVQT9rjrS;d9_9|ebw(iCItjBBkwFNI^tc#dByM8 z(#$ug;D}c=wv-pW#^_Up zU(0j%6B^<+aO@H9li|NT;(dAT5pP!e5pP15U-%;x1=sG5@I7{QtYpa(sxnW*L9^ng zp?=p7M!)tCZS->oeqf=qLqEXG4z>KhzonMPN^)D?w)7uWC#??lVIoxtj%ov6gR{Rl zMdyUbss_eLdBnd2?e~6Ncr$&V>BC)^;}_l%^kMr@A0F%Z3rYv@BW^(tuuyxxN9(ft z*IH={h#u#5WdyBG)SlLAn}6Y05tT8TpGbX;!LOYdQ&XQ-qQ3(r%z73Da)lin?M-i; zYCo8ts6}cw{vFIuLNULe$DSnmf$@-K1@VVs>FWn|XJrC=hB!K#IbJcc;^O@%-dhBS zQu*X8!m5GDXXarZMP-=9KdG5lf#k!JBTet+eJq7e2>gx`V>oF{Ct1QFc`$WMv@OvmM?ft2ncbhTbPxC%< zXMTZI;N6Oh^2;0ekJ@_{O88j_G;f9PymgEB(T;45MdGM8#>#gr`sz^IK6ysl#!DYs zaNl*xBA3!4>%(Wx$TyKovX_2bB!Xy>1it03s0*ZeV70ty{BR6Tm@$p?eZS?Oap zx_X1R`uX;KMRjd2uo3Gv=H2wCP`q2}w&dl#(Lbqc(x#kCVEw}tQ?@r;>aAYytv*&U zq`F^wlgo6=%gu#cZMY;m=%}}lY9P^ zw;?<*`K6@)M#7)@Y(b(kEVdN!#?iPxVK)UAU8R;UjT4!JIEZ5>R!mt`GI7B(U=37d zT;4OYYq(dG!1#qi4bP|$7&^*0_;>9r0jF_Ro^aSUm=|nWPz&zt`2sx_-o;8u_03e# z8FBwTi(hEx*EXg92M6xUH0-XI-UrQYEoPn>)IBz+r&mUN|K6wKet++iL4Q-zyjh710y`D-uTT5$u-3R{2~}=t zbXix#-{q}-q3n6gHL#t$o~sAikiKp7Rvn9$@w+i}DAbj@9JV{zy4M&z|5q3`v$3Uo45LSs=&{*@28%1 zB<$bXxAjC_n|9IGfvx>@TWnVy(|g^1+fp6g>b32?MO#mJtGlp1je2C-cNNWzx1I#dZ@I0Xea?&w&Bl7OTmD+B9h= zmpSK*7X*c*Hwk0q0fv0=HE;Dn2PSg|ke{kx$)yS+TTgB6-+D50+t)b+Sp+r0Gx5%f z@mi7IMHPs&Zpv${o{VE?^~8$Sd6QaaeJ1M9pAtuH&DLYhPg9nHgdbxuRY3>3#Bn5I zV-aHoRt@DGPeM`l^gq45f&ZkWf2NTx;cc+-6ac?}m~UdMoC zAtAAnt)Bl%=2t9hIprO z%G96pvZyMO^4NM3cJ0}^H`2OZFO#DFzO8#(H|Y5@5r10*=>Z>?y#Zm(M76c=EsC5+ zV1fggpMO>KLBlV5X4*E>K54qIC~wioNK?2p^aQvi&&Zw0dn(P&i55CZ+Sh`&%Hq7jNJ{dY43j2e@{D)gF#u`B(<9K)DuD%QhT>^!h8 zd>4yv2>qnrpYZo^t7Ft(%Mm_jC8*Nqr*vV7KaKOSqbQLsToL!LKjgPV>_y9e$GO1i zU-YDEHBKT5RgxaF5W+pPbT(Xu)4ON<-G&!a6aCFFq(!oM@h5jB%MUg5(zmgZbSxA) z87qH-$@JIvekUQOWH2+K8lk!7m328jXI)w+C-J>5+qZ^I2;6q%%=falr4)<%7?d&+ zi)Dv2KZ@{b$ui7@2ETC6N8-!YDMt=ezw5VQQrIlcQ5KwET9xUV$4234oc8h4@w79f zaQoR^QbZXjZRfzEoYimvURhvpLGP*zZ03FgG{PogjxHx_S_}QOr{N`C0`dqjRJKBf zAjjYI8l&X!*IG$&2h%8=FecAyF5}a0B?8okvY>g+8}nwtWyq_fQ;}OPm%tHKsQoo; za-ve`;>&6lAR-Bg0qpmhdBoK+SD7{Gn3|Ni^nXzm?aDwOEhdMyO)mqZ2qHgItyoC> zg1?ivOOs&{8C4-inR!Wo%!s zIp7YPWuX7BD;*K8jI+{H+wnF88MXIDpl>&+CcAPw62N{w3Sv7AcBo4v!1>rGYv3Y& z8_|FZlI4SoJ`zujHY?wK@%Fy_=+)yEuEI`0nbcEt@})cR_x}!zgT2Z(d17YqUomm0 zA|Op$8xRvQTT{5Uafz2+skf-RVevvM^mwo!-PMJY+F%kd83$W$qb_5}Sz4kM!}vT^ zhzaaLq9`0}JCg7|xiOY1%+mw>;2r#*)o~;WPpi+d)kV41JlDeKiLUZie>CQw^j6=UA48_8bD<3V@y!ZG(T#N{ro}w9 zmF?rW;fTSqQ(-4igk9^;Y{58VQzZ1XJ;q_<{!0@1DH6wn=+}ld7m+kp8KIN@_Rw?X zn-_f?lhK~*S&k%yo>Ly_SelQ3pH0-=yC;baS}Q$B_!~G&={EB?9zb#RAqidp8&6E6 z7Zeyy7dD>i`k^i+Q-6X{IaEVxY)5a2OV=Vv`jBxw1+3GWN`GxK6*&=2&w$H7G{e2U zvDElj`KK0e8`)hnzWiXr7bNc#=O**Ne+2;dQ&A7hb0oAGtH`9++({F)LclW56HNR# zQ2=V~4CQRxT|0jl5>v@L8FfP-=R`H8i0TC5DK{YZIx@yH0FivbaeL zqF7y$;w_Q718TT?(WL=g4#s%uW10Q8P$@dLLy|}BhILmCtc!Jy zIXFMfh4Te4rynohoHHJqcsWNuel?u$VCH9*?{>~B2Kb|HUk2?;59fO; z)5uFQ^}pyYvnbW&&@BEor|+?$zUQ6R;vbUe4A3;e7O;mrAh92hHQ;(`x^doZ3&D$FB^-J)WsDxbL6GeQep` z74ee2xwW0sk4tjl6!3D6e(aw))Zc@dy}TsYyl0um^~3qz$~>W$v#;+TXY<_#sUO%i z^t6(gov+jAZ@HSq{i&tUX9ZyEv20hb`IC@w{vlnb2kCf?JcqpR+~Z7O|H9u2CxQkM z6uniX88$J=^c6csNKpKy*nyY7(l_X@SD=>WACn={G*IO=xAKI*m)riXIyfDpm?y}j zqx4&(E2PU4{7qjwfSld?&SRE0Ot8~r?YxrIyka4b`yRApi$f?!TT|P z$UF-+6_Lr90r7^QGzaiR>P~tsOGx1jHx`KGmb-bArgR?v@8mk@WU3m}h<*5^jfA8c zk*wX1s1;Af=M(-j5nS!kOGf6EZ4lk*t;R;hV!L3|;;nurkuLsz>&vaT=FjoZ-!N^& zAXhmwbSM2?QU9Gts0Th1`l`L*KSA`>woTH`&^vJI8=q;0u0jXwH8;W!cq@KJ!&sdA>Ty0#ZopT4G$Kbg6( zb)bJy3mTOR6wQcJ0Db~THpO{*T|{*SG~{<=N!72wCc%D2b&~faL(XY(JOSyO>An@| zK3CPAiiB|ISRLyRNhS~*2(7Iw?{ARMUjAxEuZcRW(3$z-k+}EC=kx>MgRirs;X$aM zij{b0=|oQH%l_aZPU-ZOe~7UawB3vRe-`>~D=LeQR(FvHN$W^@hNO0q4l|OxqS%z`JIG^#hj-n=4g?AVa9 zr;Wqe65;}x!lLQvscB{IogUBu{)t2yN*9-Qe27B?^HAycmy{b-7yOI6vm@fS%YqO4 zsD&4QF%{mxo=TRz6>lGeftj-K=c&&!oo&=%eGqdQ&wLcxrYFRzUMaJ_Jg?w=9 z-{WsjBR|>oPp|4jJ%3CJTOtaOW$T0`hh-2w_s&4C@ab&+Grxa#Zti!(fGy_>(WdZ9 zQD_&Dt}R-d@zmmR5`T=3r@v7soVolt*R191`5RBg!A+b71Xn_=3gTkh%5k?*FW0Av zKOXZBSK^$L7b(M-JlMbZDa6uYb6LV{3MPL>I^2}3J%Lr^)X&FS{||BR0$x>l=6z?8 z4ea379W-jBQPa+@O*GY@X-zcNY}gxia7VD9(iW}n#8EoMN;Og1aLsDFGD{Kt=I@=e>!X6#@$Re*b%|odge^Uhg;8_31_STF-jc zTF<(l`+VQe{nV%Y1x`!rV0gNKWkCx@b#xZflzFhwNQOdWOmcZsF-4Kue+3y(BYRJ_ z;f?mc$=5Kjj(3XV%l@Z*5j34U|7uAiz9RR~Egbn*Ol*Y5{|py}5HSGXi4jIyTk3!6 zl_rUe!Q8)~E(PKP=UDECoH4@ysVxc_EL(6Al-nup{oPKG_$GtXFVSl;*Nk-suClcI zBGr`>z-VIUG(Q#sZ1+kSJ++u;*7|i-fNT`cX=@~ak*Esc=#9&?4wyZ%n(8~T-!`mo zf76U@@<2K|@&5F*|33d2URS`^c}$nQjUhe7AKrt*nE+9c4VrZK;vlu>bw?W3x7B)Q zW?MU%gL`qCx}{ya%iCX;U$TcT>E*T9;jDCAz~S6cym<@s$@66q*J8q(1kr zJot;r*~@k;xwYdR^od>QTK%r*a7MsY8XzE9d=(~=pFY`K1{jezM1K(sf!|IZkMl&9 zQ?BQ#;1fIf4L<4N@Te-+C@^?+4F8HBeTJM|@2;{WX?wX;OVF3eT9Z2yg@Y^Q%MLA` z#nrMF8T(t5t6D@5J=xN_5i!{HQnBm_?;F5BWRk6Ynbv*G6!thi@0HWM#`yBGOOxJA z1=F7ll3`|+FZ`X{Od4?R92?iLB(o;fyrK5P7_NhN8wDGqZPW6F~qod;Y z{WJYs7E|9o`lfmi*MCxV=x*wG{au%ZcV#Q9 z_iIhznHlej^X$&XhYoc)ZSjtmj&t>IywRn!x~e{MlNiOf&`~uJhM0fX98Q1kBj`f; zcGy4yAK!54Vj&zX& z^Ha-5XXqU-=01m%zk&?vqPtN+)<;?z-fr*0vWqXBXyXbhLCX<=c5pI-;~t^_L+)%u zvV6b#FSkNe+41|tPjrUPj%wfR=HZylUIW$0lHfMWhoiZ>7+15Kr0&*0ar-OKQu-A> zx(VI-(HY#yhvY7ig$LKmnAUP5T$%U-{%CLE+aU2%W;#SvY~CHPID$)_2L+%|AKq$q z7w#k4l-*Z_*9Xtf@#6L#fh@z!)_h9k5LEGhL6abe62y{DcR@zH?IJh@{VJsneHGWD zv>78B#=%N1lh3dx@s8YS7+LDqtbX`h)Xz(&mUVvZnhX&+!gDA%e1C>am5kR?i>krD zriu7tCu)Iir$g?r*HXoKZS_Wu>T$zzXC)2jCZD~SPSRyoyXllNg6`8((OFQHlw8}w zZ#y+g^w4G=de_C(y<92(a%T&T6YYtWU)u6L%>xgt-v8wdXE*f5{VQZ`^*#!X1jN(O z^+>5k-ku>>ZQzkn9COf%TmxcPl)Be8^;ZbKsp6aJ6`h>y#}Wc`!>0JX4}#YM_$z6Z zMonFTUU3Jqd|_$ru)ad7;60f-xwrR4lhuzWaT5|W8QXLjz1m(DW8cRs#ppZvg-cHJ zW<6QjEQcI34x>EO+zp{~+}%_j{3h*J@z1+(DEeO;)&Gg%_ZePn)||MJ&7_S&L07wT z1}t29zOC&o+jyv{&S?jO@aX+2=!yMx5KJiaw2PL|ut~3!S4nvQo9)Csss+}~Zmlrc zWHy1xab)kYtTw_GxeFwSL&n-Hn1v{2M9*{deflr!|15+l1dnYi zekRx#9+`U?UPc%_n6Tf#3NcTkEe&tBKM#v&$}$3V&w4*IyH9RcJzBG?Xq@Q{>Zmn8 zFpPc~zv5@JN&e8+GptVTZ+7>PJ7AG`l(4M3v&DUv*zAzK5~>EUs``e3JEto0B%4Qr zi8!-H%L=;oSkft@(#^xy9#3{e#yCz{F~f{6{W-&tc`dsWbiiQDo%2~Uu>O_EZnOKm z9JdVZZF?oQ;Nje+NrC3G-hTJy{>ZPCyodG66Ee9uyG#J&mdbkzC6jj0o%_CZdoi~; zjhqUUC_XKKL52o>sQ%OOgTY}@?k~e%@FW1Rm&2M))r6=X{=*k&ya%FeXXQxg|uE)I1-!edxCgNr@YqGuNQfg}Z%aQ+< zVF51-g++X66MgElFr(KL>)$PAl`5WFj|vucX@66moX^rNe;|BBVc`2p@JSLI* z`=nsgn8^Jt2agK7a^FXGnVyorlci*&?j(%Vgn}gN5lpJ;&ClE`K(3y6D8Ed704|1f zF2ugKnH_|nO%St_yKWlqkPx!Z`mCwYloe3yVRF$Z>=l_1QH3MDw$YMrK|BlJ$EKuL zH%3m7^+WNjc+EbIgyleJnRSs5x!C4#m506Wa?|oQCyY6)ZeJ;^d9W$Knw9puH@BQ$ zVa+}IHLN)=7kuLEz?<a_mtB>#6N_@-rVPwqFzcnoN;vSp0M$ekPb?7UkPuh%Dsj9nEy4U-Rv_1vX~DLhN*m> z7#pl(Ht#imUws-KVp%b~FMl6@K(7jHHeqy&yVJ0qFK)6gPWhR^oTD$UMI{N8xkM%Q z*e`|IVLf?Cfyv$C`z6I2qQbM)>b-2|~FymHgdXqkdUas^R7M zy$b70^=lH7{aGI`YFK?oJkxQ)dN`%=puXOvf@n(PfA0KIMg3=vcs|#)2I;PDXg=xR zHt6QqLYdT$`vBp~ZVpZ*e{ZMQ5YFEVSI56~gjXJjUqkanr~e@~s>qbq_*k8xcIr36qPrM4g9$` zQksY$FJ}*z+%HGNrH=SgsM?{=HXvC@s%y0DtrI#uISAFbUyn?CNklz$tAJ%gDl zyAMr#CubipRf_Xzs%(mwg~ynMt#?Td{}=PbcIx>Vyei|3es&xd8#|BmY6`l({Rm}e46(Qdihsr3FV6x3R9%{QR)6f$!+OqG&g1{2n)enopo;_>O!jC zx&Wo!x#bMypFc6G=uz>JO!wqUeo(0=M{|y8ZNhRAyF1o`T)DvQ%sTZKb8G64!Z>#K zzcwP$+KfS+E__O5G!tAiIts2!r>t~5U zgy{Vu22$H!TQkBY5#vH~@ag`>M@t!Q?mTfu#@URCi@cZ%S@4-@%L4c$U6o<(&xo;5 zNtmtSrw|K;Ji(Fqt5R2Um#Uhi)(AIgnU$@+)~5j1YiHVLBo8w@LUXwJDta^C1tQc_ z`!C@8mz+l$LD16n5$Ka|Kqw^#aacm6FQwe}SpP)&1>^n-3bDrh$&7az-E7pwNs_-} zAn#mmo*&EoJ^a>2TJZU=VQdEr{6q;;Jm5>g!lfr|z3{P_-t|$4?kW=5$=WpinDn@e zSJ9)0{JHur4?aVQ2W6?^A|BkPQIq$OBZF9lH>o;zC+o!1Mg6R^kY8iypwx-4&yRTh$@cp05U)S%{o$-+yelQSrX;_gZC0N?suqzz4t{~TAXuG$k>eB48+;hbkABN2NQ?5d z^p0wvcf+|!#eKWE>vfY8@=)h~FKr|g6=otc!17R7m@vsY`}A8Xt@3x^a`?Rglkuv+ ztoYKup&die#(tZ8%I}pGE#5`sjI^JdS7MlbCoS;@zQtLKySD|(;&R(JBr{O0hK0s6 z5*lg51r-#OhS7E_??`%AN1Od?W6gd$OZ&FzE1s$oxQI{PCE)>nM)_7&%LJor=!q}O zhEhe#6Gr6S=6}SUn(vljxl&EnH1bIgUc}{mx!ns~1gH~kU$auF^I&z-eamuw6b%R% z310zvGP(Hlc0hce3FcdTM3~%mA?QUm8`wQ~tw`^6Z?e7;ANblJnJnaG1$fguu`_HN zG3Tf=BQbtu#+zC>vO(t=_wLG}^#Vc%@5GHrYeV&;~UhiKs z80IsDSOhaB|Fek+VpYai_xcz+>GgCRMfPgTgCL~y2NQ7Th2tiORPSd$Sv1Wp+evK$ zbO$yYy7xZycHeZLaPz1VPjFV$@Z_DfR=uyT2j%@qHEDg9SJtbLUw{&9`@#dh7FBQ@ z;JvMfXASSrP1sN1HQi->7Jn=2){u`%6$7b81?pr0Ksc_#x)i+2{o8&UrBDA8#!roY zY>6e@$+GOD-WQ|Z?JpCWFvZ1M~VYXXJi4hX*+$0$9!4S#Qd_H-URnJMm2Fq|E_>uyfGJy9f{BIH#b<4 zBFT41tH6x>9uKA};AgV3A7f0s6IYs|p`>IqcT-EFSSN>4@ytHrqO`4>cnFo4gSS%d zoe{JOg6_2x9GU8uoifR99N#f`?%fNM_Qmd!B^#cM->Xf#lHT-4 zb#L1H3MvxpJ<{+*yhH8P`!Vq9?R&l3%Lo(K(GwPaS2Wr1c%e(uyE{fVeY-Ys!j@PZ zqg#2y!LY}1u1ZZRN_$_dAh*h5`%8Zc(nz@cP`|LG@9>KyC@XjAw>aieHSW`-jQ6G7 zov?_ei95FD+#_1Rl0smSMZa@vPAftrzAC6ilT{jW84Zmt#p8zJ|Jg*nn@hU8xllXt z(AFHjwnQCv3POaW=H%AhX}LJpg?vL-tH=N%-6QJ`xbGmo7!=pH?$)KmR*W^taXzpT zQCg9552W1J-My^;@uq_<{H-eKb)Vh(vbx7gdgblex`*bPt*@8tgCX40>`kqwo@h_f zYtbXhb!&^=+QO|{-_VVvB?BqcHca5Hd%0S(^^KB&;NCR%HumJUL2BGgwUD*(Ww%4u zXvc8P$`&n%>E=p}N~%&CPo-yYY1Gox*y8RnH6y<4H8gfD(@7}{85-i&CPtdo8|7>$ zOXHzkMradhyB7b_z7ZUjZ;4c|PJ6er2sA{Nd$(c=u=Wn*V6N*76Yy>%y{`~`4v;16 z!sUc6Bjn3Lg(@MB5C&ukdK{)lOg+-xjTKBoX?_#W9-2?ZtyY`~YU1PiHa5$vN#m#_ zMX$GcNqJ)|EqxXkG?PVqGHW2B>qJghmmkCe>x^Hx_UmKfODE9-gJ!W}a`ELq(-|ej z)nog?_>J2wWE($q*THzr8Uj<(SF7(Xy?*)Z5q;UiDeOzf9V`u*{;WD~w2tu)>=-|F zKg;lHb|f3Nro!$Ata~S4T^NHs*GlK|+^xve>5##O3vgeoui82Q@`?X!xL|r@>pQ}` zSL}pEe4JI4Y)^&_v8_izyj02dtuL3TviUuz3*b+r7ictc3~J6#-S;3-XHu)ni0 zK0ZUH-cxO-hk#u6h~dEcDjM7SzW_6_!}zlA&`y0QtwGzt|DE|8BwSWz+`f*N<>J_p z>C0zI`UFol_ME*VsDbn+u0O{E|J40@p{`TLH+=rCOv!3JA6W7Hsdjy&ERlR;zjLi~ za}S%Oa`#^_j+~>Z4j`Nc2sxh?N$Mm4L)TgKf;(cV5*&rpY>q#?q}VQ2*~P7c-ZWs@ z34`~h)r%e@_wcXFV>$Cs{*(AI!IQS}!%;FK_%E*i*sf^Ig(aYiA`olhGEWudCu8pK)u-XVAt?8$3c8;qhbSGizHb@>U?Yq@v`);eW(%}^b! z+06X1Y6}jJJ~dHXWSJw9zm@LMz(?GOpS!Sjb1!UKEA~(!gq%yq3R9`J?oCBUxE=Y5 z&`FwZ-t2v`UILj*RcThXx=*IvZRraxOpljkRmE&ed|*|b`ZCE(g&V-h-8w@{u4wm4?~mge|Zx+%=-ca+_ z2-)11z&8RIN5U?p*4P&`4up;6!)OU=t`Yx~qBb|$Q3Pgf>(LV_jXQ5G%oL`&Z5_-N z-{;o&vg??5Tcf8B004ttrko;7-u%*(*Hn?a$bc6_k%EN6*{lV+IZ=l}8DIJf%hqUu zf0zA`sy}{NFZ`gRp6}g(l)U;guHmrRMn5=bEdZY4L6+WUI*A5ISWk8FsG% zJ%&<>Q2qUdQdCupC%#l$?KFFL*I(t&`lY7I5GW7M{Z`tYnPPiM+nM?n*)X5|1ouh1 z3G$0`-#%Zf4yI5bgcr7;^|p&Ho2gNK74$oC11isIJl>(6W#fJ(9QXQmc6NFu-k~h1 zi92jQJ1z^qYc=0>pnYEpH4>_y=Sgl>9<9S!GD!Tkbw#<4gs*LJ^SreE0Rzg7( z8BYk(84EgOf~1X{n}CL>zm~g)13_Q`zp8MSyIlt~+{&*~MzBJ2UkKY~^2;)Z`rI@Q zZ+br7&98nGLV;$AexpA|E%_%1kSKT}Yp|&QJHzs0 z*;L?$r; z<+OrIG*)6L=`AYFUCtv5=w!NsJgJNZ1aP0t{Q{Ux*b--?TX1&;gkzrKG$9z ztWW<3lv5_6PQy?%G^B`uX@1>5OU`@a3i7%O$G+sX>h&Rhk=IDk#hjcV50j6G2+;X9 zq#B5xPVZTcpDC2p{(s#$Lsq~v%AN4& zKwfq%DJ9qFJ9ZSM;F!zNA!G%it$*W?U3#QIEFn;LoR7SJ5p8}<)n$qb?MKx9SG2ot zYlABuy!`9Bvte)C|EjuQ2bLf5?xqskJ62xStxGt)>;c}f^LX{@>h-xVLHq?;+$Uu1 z_=ZZjeVcnTt;cegeNuC?#t82Vv_Ze+GPzc)qHlBSX138#X{wZe1FA@)?UjjV6WKxd zLdM%NJ+hSyz75bX0gRaW0#h(6{I3}6vf`^ipUQ0OJc1U3i{}ZuN?}kKs%=`Ylak`V zVu32!D=B;+qRu#7luhLoZj4wba;J4YgEeYYJb@ZvYctM^Dd$+$*^@gHnc+neNm9(8 z7L!59@W&N3%{2IIj46;ToeJkw3`m$Z=>)B;5@vTFU+) zEv*OoDJxT0Kcrk~>gct!b`grbB<()Y>}+R?B5tZ`sy}wei%s>L@BGLx|L@r4WLnw5 zOMSR>$KE9SP_0N+8{459{6e zhX_xQrSdsq+`4DPm51f8_pi8!EB&u>kktW#y{U-rOR@oz`+U>#Dh%NG1FHO&Z9QOh ziTNC>j+%70aA^hhF zgvAnWdL|zqaNM{eCd~Js~Y!d9#f0o z)Tqr+me(~?IKyj9u$(^4MrVWtTUy^f7%z?YpB(tJzzikuH@D(=TE{**zhjxrui3bp z;56OF#xL4<_YR`PcbygJ+lHq{8SC$Yt6g{RPB!!|o(+m(G(G{hS@;a zX0l<+lJ5v_CNq`L$fED_!TAXz=Kb4Mg?W!J{WT9l*I>azd_|PwOe=HmFCu_U;t$nE zgaJ%Fap4Xs_rV!!5}N+!(b8ZfOi?XNoCT4p+!0KwrX%I-BRI>w2_~Xa9LKL&2E1`+ zF226Nv``!PQ1c<8Q8v{onG)iB-;@(A2xnXzsvVsyoN=4*-mJS@nMp|0bgihhiTN(B zsTK1gEidWr*QYJD$%bpfZ8cOF8C=foNipLst@}NAYtQ@UyB8+}^Zgy-E5A;9HSmcE z4SScom}+=&QQ0jkS@#OF#@P4{?X)f2lWgc*{JCU9cfg7EF1&?$^$WkJ&n-_eoO)$v zd3Ds)UGI3OxM+G*OhzOx1Oaw?t{ijsFxkzDui?2NOnxw^Y}CP9VL1$SOP zvtrR#cqpt3p~VRF$TNaIx*>cYt&4vMmyMDHk*dxOmuN50huEINMAXRZ|3AY3s-_^v ztVAU4eu8V=Q=$Xv!ei`nhB-Fj1R)PVAnLM7pi~V~o+W5{Q|gEbP#WtB?=!8tRu&~*?vyyzk_8F+&2Gy1kP*p*1LDidCmubDc;ppQ3tUk() zT+SOTNY0H$L~x=1C*6~km`+Z{&gvnF#>WAD=iCR3ujp>!jnWwu65Q#N?Z_6s0XuZq7$(fmLWY ziQLoVu)zd~iK+Pi_P&AUj>T0)wA99zvK9^VKq}DW7^T0Di4RS}@+W}_E|c)S5oHkq zE-EeaL&f5zsw6(Gyu*_#slQ2f$usVN_tnS`4kKAo&Qp4T!vm-`D#eMSTospK+!{Bd z#)$+64}mqzOU#n)HCvl@&0r6UjEk6|Qc~zwzcA_SP9d>Z+%E-A)}!pi=5(wcH7WjZ z>WU)vu4ufh1r^fiR>P;%Pe=WJRg<>yqVmoC&n zPc^)<qgc2^xs7XWTDtrTXXS{1{F(H*#yOJnoS^=pVG8yJ|cv6cXF>mNMI=BQdy0p%>fRv1I@EtS8V$cf|5|negpv zAn_!h9p_-F8OX0_;vt@0+T6M(z`Hp?S~BUi^C)&UFJUS^?;#eIDi#KnB4y%!1CO(J zf?i-G#qZdAG?gICdBlAO$9dLUpcLnNFljcZJ!g_%Q^hv8ztkHg|Cswd^sj{8!NX=R z)*T`tL3(g$Puy3owp;~K9#ct0BJeTiFCcrbQ}|d{%@W|6^Qo(lbl&E)LCBeM_Bh8` zHS8Sp=a1$RTMOW5Yz(f^oyAUd7pI+L=yuLwfBqN>-?64x8xXV((lNL`bjNVVu}SBs zzkn@54s~?0U%{W~OEn|g3`6OmmMQ^3l(FuvC5bN6+`13kut7jEYm$BwyBIShNBHDG zg-vV|&{@oOBhLQeW|#x(EUiz{Ie;zYJZ7_?O$CTB-v0;CpHdfK5U9=!NRXHDZ#I}T zhlVV(zU)5$dwkV1nlX$im;>wJ*u3HyWIaFVr%hCaTGiLpU!MHtEA$Tlh7XbNYk!EGOVIc1R&P0^-J!q_y zH$azA=xp97+rgV_L@7$018Lnn$*-scj{jRvI?Mtiw_9 zT-^V$(d9g&OQ?9~Q2#%lK9eUBXh^&T0!%w^4-+VKCjxyx-32!l`dSIg?eY5;7~L^A zQ9-Fzyk7o3%3~HpdSWCa$?yGiwgJpaVbI@yfQhjOLS(Z=WOE>)n|Z@rXd|oK|8Hwb zARx_1ll+ntR)efsF*`Yc?wX*cU3gKp8c}tB;Oe;C|Yk~8Q0NpDlh;BwFogMycY>eISxd7=r>(8e9Zkv`7Hzl2Cc=p0y z7>&Hi2$Ef|LL+MfG63wU1aRj~!-NrD>&lCd1qd4;tL-%+vgpPFF^Oe_LB1~942W6~ zSszFq1{%d@L>bz;xHP_kErN$c7V6X*UPFzK0`AX|FKLKA7Lu*P6pK)1Bf5}3J?sh7 z>@9>GCL1{r;7F2);a_zkIlMHi--{kH$g3{NtFntEuP)5AZb&+mDK3k{(@#k`yPS=F zra0+r@n^tqHW)m$TUldpom;5yU3P|vqP)`w?@wa6|8LowQDJu#_yd6Zcne!$M69zz zB|bP#7dMWjZH%)z>9AkKDC!=vtM8|vkhI$cCeH$a4UvV>pf%;}Y?;V6!DYd(NeFGi z!cbVaJOYnRKm@V^G)|X1D=bdAWr08#M%)|?s4Ex@+d001rJbs#c}cdIXJewMVP>(OOb|nZs?8`37o)^1kFj};y=(DjX zZyQ<%pPawKMld~Q43=qF{0~f4+P@k#aZumHn|dGXLm%(wp;#tD+`OVPilRQM5Cs0)|2e6@NnHn;aznfOF7b}>&{1d z^HUw3P7rfD)j3SlSscd3(=JA}FX<2`8(8=+1}A3LY#dFGtg=cfLTO3H96YNJX4!NO z+jF%av5`~A1e3AuV$%{3KZop03cJexaE^j(*8_UxMO_poeL>*C|27Bt+q$2IO>*zE zdzm;0r|XlZ+`a_H!(1Ze*pw);U2mY$=E~6#N>e49QzhMQ<3k2#g8n2@VqM+`(M!Uj zS2I)K*qk9f7OUU~hglAWIDQu;Hh&9$f=PfcxLfn5fmF=-;=aOs<8LNHGRrt`HszZL zW6Ecfh`o++6=`t# zH6l&TTa%nF?1_{JW@}+$mIbX-o)}gp>1bdYki}cNt9U1yfZ(F@1Bt)|2v?^2+SbD=ogjuPpyLSn+kpylfU+mE+Q7 z7q>Svxi6ojsPlC=$vTJJZNQ1d0ScgK6TOtzLP9d~>|9PH;mUE=C*2)nDWu)kl9Go0 zOjL%o21hSVCGZ>qh)svg7L_!8jait8TjmLzau8K4sGW3=O%CzBMD9KTNH&=O$BVlyTkxQ7JYjU|^4nsIrVH82Gv17SdMgRhQFJI`>H3UaTaXutP%?JM4Jbm2F} zHcE}A7<~*!=Ec-Tz!%OmQ}ubhKPj;DIqvi)jY5{1F~e!sP^Z<<)WHlJ(u$Lyj%?$6 zD;g%9R81RwC?b*cSkegYWj-A>G>1GoAnqo%mM-a)WtcAMNx6}gDb~IPlL70EKcM)l zL<2kuU~8teq&3~JIex#^x#stq90~ypQ1h37DafH`!s)7#gF5gtYr2S1rP#ZOx3t)V zrIDw8BhNb$_s5?wVbAd}SepqMt(Rt+*qyLTgkn?_Kyan*`WQ3^k!TuyL?wYyy%LJ-3(2h6JK(&D7D6!2U`B?3K-}+MXS- zuj3MlgR2e(KCL$qA-nkZDu8|&8L|gpzYOS8*e)Xh&HkOcLO|o0woHVUSpM5I8S)Ai z`Oh0*<0}@@It*OVLe`I%kdPTb`2LU*y-*no5Y7)lcn7mzfGLmU*#-V-@a-IiZ^Q}U zyE^4JVc=jgg2`;777ai=bQ#bKhMf`)u+Pr6iV%Q2N;ZxlH3T!0xupUWXetyHpoF%S z;A+9#3v9jDg{L0?C@@kM8v%6FS1e&cNEzxw`XrMJk_Wa!Bzh`)>6yvo-Bp$HJ|DA! zN-9T?WNXBLTNd^3qBXphcn z*zuXT`vDB}9XqS2(iH7q z8H_~>s8B7)qc7C6^sa$bey!dw`)f=l>9nA*k&D7M-_(LWn~z@YAhX5RpbN1+Rk;-91cffo5rv#P)t_^&Hf(4-gU>lL z+1Jk(or(YGl_-}R&+FR-Hm6FSRo_ooU%GJ49Tj7k^|3f#ik-e(*Us{i)s&C@e~J+9 zDV9$>pgQF#?{l$~`z!!aU3GTihK&1;HtdQ&a0*vP$Q9%ioMaoHw9?}{ZsI$3*>|w* zO7IzwJ!~PcATkfiVh9H8&pJcHud~7Q?P54%9QT`7CXPk9MjYCe=#?)nJ(zFBd$r?iTApxOIu)wMId8$nc5lW#JSIQ>?z zFJ%!6VzB{(@k~Mg*e=o8xY{<1zJcp4t&dIIBBg_RnPb@fw91dnnC4ZKpoGg*-k_Pm zYKr?QhsjwUIgJM@*~0Bn{ILhT>|H|fJDld1-$*Z2XVqZ(zpVkNG;m=6O@z_G%g@$_ zV<=ml^d^;>>~7~K6W!VdO#>R#fNY40#}xRDjj!I1EYSGCM-5Q}tQqHLh^BB98|TkE z+3_lM44->{xGsXXE z&JRXh^1;Jh(vepL$Uv-3E`~;B^e;RJ##Ix*8KV~XRRBym0S(UClN>o_c_Z%C$f&+N z*C%wnR2~pX6atD>yIrn0T?+(hBLB z&0agqxGS2U3lM|h{)lF!XYb?#Fc2{MCWhbZO#=Vh>lyn3OkJ^mX|dRjb?eD=2}q%p z@f#`J%3~%+ha4a=;pR}Qzl7h@$_OM_Va*piZ$unELTkAy?bDim4T^%Y8{#{`> z>SoHHF@}i}K~#eq7s9+TaZ`AI5!J%=wEKoGo&`wGX=&Yn*k-d$=iQX^8cZp17Jn+v z@#mZ^M{&(~@u@Sq`iU^V26HFu1jjmUl=`3v?HXlTOUbiztsw5dL%$_ljGe;CR6l!? z?Ulq#P#3u?KZq}dP;Ea^(Su|Eoo!Xy^unS-(uwgbs2grKj_ zNv`jcK|COgA_^gWQ)~TqMy)?=O8%$^zRnFN$clS3NdofXjRNbwiJ0F8(uIkgD?RY% zM$y65UgGjl{sBo?O%4D8IiQ!3uYj@F$SF}VzN2#t;N!ePGO_Foau!-UQ%?U0a4>KI z?urlyfXvwe)bKMrhNqb;Wfw{q1~6bhxGrFWJF8cZ3;@Lm5eI`(s-%a^^WT36i0Z*h zK?f}1^8}sz^8g{htE~pVY+~m`%scq=sFvV+r+XDA@x6#DedGvk$j313YM}~auenfj zmU3Pp7*iN+xw{5HL;@W7upzU^(2e}=Lq>cTBerrlh5VS2rui{j3_)ViRt)s2+{Sl~ zV4&Ys#e#Xc%b#E}JH8Pc6<=|sc*bPR$`<#)Q2fu2Eh)Y#l5_{Mts9uqO)0=GYp=bw>-f2uu6$+nelqssD_r9! zcT@@0^ID#tQsD=Q$Q54+xr#0N;F&O$m6QF(CB@%}w2&~CY2EDK?XY8?ypOHGB({OH z<^2=~Ig<9SE`>9ZYjK=saD<6`F-K?x`qnr3JmGwqcnj5wq_^OGy%xR6)a)qYS~3lM znC{hFhVlo}o9l<`}3o)BGlpZEkgl6H=QB8?7+{xPXki7|j?EI}IfWqKFP zjtGepB>+j5&c_+SAexSza|(ZA@wD?YjAER6l_~tcQ5GjQLKIwAhcWz#jKy6yRayxh zcuv7b+Bw-xp*pf!Uw)y9A^MkzO_U3q&8=9hC@cYgpccscCgMo^f&T?z;IF7UfmcYc zB>VuV5Jd(pJv2H({|9b20JnU~>6z{&E=htR#x|NzIMMoG6|hyt-l#9DD15~`A*|4T zISO=PeN&oL4M|h=9Y6eyaI|vs26qYyfzpUq0Z^0_O2S}r2P{1wWO#KEXU+&7AczBfyWVn6cP;$n$N z{QC{UY}qv-E>|E94OL?$IA-`Hhfi8BOj{l~mHbLXl8WVaWxmuYT28y*=~3u8SDC8r zMJ@iZ2tIZBWYppgqihDB|Ds{!Ozd9l!g(~GFm8Py3bGAe3Np?{(~yy z-rHm#2Didd7#ZNV`+@x^UT!21fL$gSD>Y)j4PXxi55YcpBJ2_MdxhpymC+oeQP=MO zM;f5%Xh74-eT3_f{^Kj*B_`p{Pj(ga62G??!&}=ggnzB!4+$9_Fuwcs3cvZwE?&42EziRQ;oD48VR!2gN0>t-_nt zWNhM-kVmp(iIjrp;V0x>CyBI*bJwHn!2+9x_yO=p7Ei@0M3syk@aH?`BOscW^~w(5 z&cSHrDc|QQp>mK2l!GnEgi`a5-z9#MEXGJ00CBh-ouH!OYA$b^l&B%(QPsVcC)opMv9jyZIaHo6=`D$M4DzAB;)+F=6;Q_XVwJ4y z8mq=)_+yd4$>N|gY_35G0dS24z+oA(x&#jFB}-AP4j3OhI}-A-n|L@SKuoten`1?< zQd*U*cyK5W6se2ycx4vU7o&XL7GP>dE-2$t#OpF+z(?$R3>t*;EQCC%QzX{uL6uw{ z=g${?N-E=zq+x7F=Sjj=aD0OVvO)n0b(Eqv*^o&+C6ZP130f`j81&iS*L!) zJ71I2?%bsFrmo?Mvh#D8>a)T&DgPB`aY1hSCZ}Kh&V)OBB*IZe92e$ua5fspI?t=c zr1*F-iJ-5kK_$-fbTNIvkp+Qi)JLq7a@cT#2t$Zn30kbBm1CCg2wG`pBV7Uo$q5y! z?b`XKJnTlWsIh@wy8Y8&-bA&tr>WDeHNlmB+oc*}BS!M7x9~i7y&f&uM?>9M=eXK0 zat`b4oZxIsaCV_{9G$=MEaxyk;IjQx>rui!)|Q2jDlOUPM!r8RI6Fh6L?1f=fg@m{ zLU<{yP-YX6Sf;hxJt_lSCS55io5|ZDJT@oc?Zgyd?;}={tr2!Dwzy~|(F7p`JJl$j z$+HR3f>e|JlnOWAoG2|OB5CL~&71deMR?$9vh=naC(IyAn`G$$+{C$B6%04u;4c^h zFlx>e7PSug^CSL@C?X6bV&>H|E;hd9y*QyO;e-bm6wEgFU`mT2!DH!DF;+UT=DF-j zm@1*|XF0Aw?cK`NGSeRMt_F&6crl#at-5K9loz#Ay;#xfha>0usj;$E8qa~7(1y|$ z0ZHxJrGZvSAVM9^M9~f}d^&8xM_NZ_u;M4(q&mzxGZJ6*q~-je!c!ndFrDP4eyQs1 zh|Eb8kR6`i)g$JLu*El+V388hS~4v(%T?ZjSpIZzAL9ro2?IpTvRYX(XT)p>F8$7Q zwiZkjvpjZyW??n30dV(SF0U{Wk!1ok^?h)SMTf+6iR)bKEwX2C_Oo~Z#<+Nim4>p@g7#2~z6i9R2HMz85tMf-kzI=nUGMmlic!OxS9cAJ zQeL>0eo|o|2G?5dCySAYz^S=QR|n!N4oUEXwJX_42KJGu%I^pemQR1yl!94_<=)p3 zl{<(dNmTv>jihK;f6>j$B`CcnIWXZ3Jy|cYF;FqHUJXYEST1Y;uqHV(GzXHCg%V}~ zEY_=d_=9>lzbp0IF~}h5xT4_oTOyYM>9bh|M9*TGp+xIQI484XA5kGV6+CXVC6_-d zA>T=fSuR5$N7V>2{2Y=h$?&*`psSMu#a_ts2|6~y+T*+$X}x^<2rM`ZNj zg~Xt&Aw?#T^;mdvp=GpMU}fq9vP=k9|5!)FFdcbdY+TrEy`43B_5>UoPM3~GNusI% zeXLP@vJNZ}vv~-?sKyvE@3eBb9*&d+P1!5RH&O$OjKY?a3oS}T>R~+e5oTUSN6zTT znHG20HAb&Nh1bF*NV*1dC29zi9kQmF1b^1}C_~JCs;FyMga8@=A+Wp7=|j}c`cx4+ zTJxNX$^Ed_je2TDaMtMPj2rEA*4gyc`4yapw{k|S&S>4gjyM2rf4|eZkN^^tD{JA%~;lOoIx?RQMh}`(nNS!Qe9(%bdi{ za0H0|m4u=6o{I$;5PYS<1qtLvE-?awt|X@cf}*@0Q66P#mWn1}7SNvn zm@|wQCALsr#i$V%{b!6KmA@|O1ue>@Oq}9?RErssWQ`SaGof5asjG`YqDEcpc_qx4 z4@rYT$Bih}JK`@mSptqRJcM2hw@y2ULDIU$fXQ}roFe}BB8O zyKfKj9QIg$^fu~{*O@!}Y zoN3utWoW;P>tVk?nk*i}#+~Soik5k|R;e9pTe!pg)sR!7cTD#h8#zrVSxemMO{c8)bJd(VCR>F=NJNZep-0W z3wJWjiAz9Lv8A<~L{5Sui8a|3l6BZ8HoQ_C4r`~e8rI6BM#b1%Ogb6f@4#boWpnEk zv`x7y<%YTSmRoLd`?`+cC?5D|b&tZ5io?;#JT{m^Kr?XesH=Hw3Z2bk^Y7BuVFCo6 zv9zRzUJ~LF0S-0_u=%-Po!|sjnjqzhv%KAXqu?h7X($Vc+a}|&8`?-URQhI+KY=TU zBb$9Gq|81$`IW8qrUoAA<6xxeqn{4nRH-*%Pk{T2#`JkNS`lJ)j;HahL2oWp}akt3X!NCwuX{TAE+D3j!!r~Pzk z+Ha3b&^6KHWb^Nkv8~(3>n&CAuHbI!bF?KgCN}Nn8LSW2eY5F`gw!1v?0U~B>UmT6 zj=4#H5mgbhiTPZ?*N-l%u2zv~LDFv@OV-|L^u;YILUDhQxQ8#))J3USPgePyv+b-@ zNL-U~e`I@@vX)w1Nc=UuaOTi$>M@O z&SAIgs`ju_wVdb0MNfy5SqtncXb}Upd+=M?J>+cLc|1HH8{AQ&tZr%1dQOFgT6Su9 zMezeE(sreY6Y*lcDEN3{*xru}^UdjCvAGx|8f(ORfzO)cM^tMC`~n#tiy`9qs7M{> z{KjfH7l)Pp5sLh<#nb}c7bprGq&}%Wdia%e(St7y&*O4-)rU`3qn>}G2aU45eQm4+(o+8;; zS3$scj$jUFQa0a_OJ=uJT|kwZZT{@Vh1i*Demf zCj5}_8#H`lH2GsQ?<5etu=C=-$d5_K^cRNSv-viOXt7w4ISiwUJ z2eydET14;GB8mUD9(!*15Pt0;M4#=UxbEy6*P9+%18>n2>iE?IYK(buP%(i&Wheo5 zHDF|6mw=IRMH_EQa2rpXN6`p}MTJnxd)XNtKh|nlz5%N|0=5=%p8`vRl^J)c2pG(t zVrk-J#`Xk;4`yj}0Duv=m|X`3#tam2ok+m-Q(J7VNkigSLev!z_&o1_9+& z1YGTWXA|8fh?POT%n4q5@?pg3j157qVt(a8kTM`JVsz&VJzS#K4%}~U$Wng z{n$vVK=f!C%{V? z`fVQ@>O1ULE?vh|8>1!YQG`sHokhy8hBQx-o+DkOK#&%)YGu_YEBHf#r0GzgbRbj$ z%91K0_i7#fv^~&|f>Z&01hSp_1^++k69rXbgcebDDzq6J#~;%tQs@&R!;t(y+GmBl z$YqOjHS$#x(|033HY^1}O&|VnEd6%q7Z8><2}?7Er8lu&eMCf{U{A8s zhsDk3Dyxzx%ZwjLM3f&sBDBGROC_kbM^UNx(pfm2mu+c3Pv*u9TUKhNd+?br8znb% z#|f*PQ|=lI%Tt^_zUo=ZLte1$2>F?;O6HNXZ3SJDMGY!iMZ+AcGo+==|Dpuhy=;25 z_f@Ny$-xf(ZP6|k+LUB}XiuiegHL;(i=^C6f-|iAa@XTVKTB@96<2AybVkX-tz+&J zl-5J(q>i1;-L5^DIkPc)Ngth+s9~9TM3S#I>8xXkRI@E=uBT`k$$o46NrPNs@A<}l zs>rePVC(Z8uk8aY$Vrq=h8^W4a{@c6*}Gf|I#(>k((Y(XoD#q9Ees#3lAg=x4>kLB zrv&||?~QiQReDSO_MThfb4dulec+b(O^@9Y{~zqj@};A<#E*B=c7*ed;rV9Ty7)(J z>rL&Ca*?gf?%W=wg#$h1&SxUlB^h75I({mR$JeuJhCNx9YUgs5py&he(PZ`hwEsU~ zRqu|8-*=Zr=Nvy6UmQCpc;8J=Fpgul#OH6gnufy+;9dT`MZ+N)jvuFSKMjwMY}~{J zhN>Yi=DqXxy><(OI6l)I_p^#PJTo&CvJd@H1tS_pt6>5S9bIFB$FKl;F&$u@G`tgE)`~r> z$U6ZqCR`X;3r*DX+XR7RBp`_2K1Ye6Bnyg?&c>`axk{oQL***3j>>AR{y#&w3XUE= zVr$x#Kw?^y`)+{(mL8W3h_BjaIL~e~Pv$P~6TYJw@h{=7adRXeYl9L}Fr!Y+uzt2X zK-~aL?i9-;lZW3``r6aXOMKOSaA)g$OaH1S?K5Uq@)ljC6j@%@>G zzW<6Yx`ybYOY75@{*{Ht*puQ7uPjl$+5h5T$2(BP6phi@e{d3Han^qiSwOiVS?s6C zfP19lC8(mu+1T-h5d|TS*eOnrKMkVj5m5+#tpTFw5m5{^KomV9ilGLGqDMqA)BsWR zh$uF6tcED`7}ZjRC|DZIvfy4V6>DLg)H0QoR#7`4dJW`ID{QHkq-n}}Q*g?OGFqv_ zLiwvVrhAcEE#RI5f`=K8rCMwa>lN0D<7%aamyG4V2VqP+WMu`ggz|74CYt(!A=mlV z-=H9++}`}&@b@~%Mgn9svc=?zT%LNaY7TN?=|3U0+^s=^7l|^+kyoBL!q7!i>%w)| zLaG^k1LTId>q#R8`&FI9$jSyNvTA{>kOKRMi3yLmXrCl;KSRMC^aCGWz0m1A;?*a%cnuTasPp*Z^-sJkEdyq<1)h&Lax5cmP zgg)hOr&1hcm!DrWjU8WuyoFzisPWoS3k=0T0h4zKo02j)7@i*GR54&hPam{4X+>%0 z2*YW3zWoo)9c!7**V}(4Pm`@?lEe2|iiTBAdm^YVv6J@` zL5SEA(=>VbtU6E*$$OXcPPLg9>m%^(Kp_-A$v+7OP26Boxy#*Ejf~pc8B)==e#@-F z((>nk4f=SGTZ|qS6XB&?xDk&peSo&+OpfUuU^u^r4$BqoL(3|?N zi(^`Z-PM&p7Yrc>*Sj(DgT5nRAV~>Y(7(lbQP1E*2h!9mqvQ))-mNIJgtFI?-Z|2R zO5H6gX6|kiv%_)tbpWsg?;2_CuS&EhK#3~8#S{>JcR0^Cx0(WyLG|=2Ud*&UpY`jW z#>}7OFZ{Ryu^@nUq$kc;mT2}aF|H>qAlWep*Lz)Z)@!6bc_d_dW%ZhW_?^nl|6lUE z-ant;ZAdq4i!Z&MVSpISFTFb{_Q9N$6$F^Xn@WEDFPFQIi4v2(gr?I=6|4e za6Hsg7Nf@ubG$zHXvfQNybVsTINn#NA7Q+xkCm5VPB#>o6Af^@-o@Dw4RE~P#g~t0 zfaCQpW{F#qUvN={+aE4Xor~cK$gWIHrjjZwZjO=GtMM~Zy zM^uiXhsEKmx`V7=;9AlP&BRwd9ba_}w=b-QDE(18(pp+K@`L$z8a8SSIeW9aJ?YJj!vAX0UMAw^en6?p!|$L5CQ<}m zRV4mn(5cGo(pH-GN^x)@2`IIe(b7~AcFK7&8EpAc3wNlx+D~jutLbR7^Njn>)qdSZ zs=x*OU1jxmFS?47Z^qw)!bSmn#k?C*;_n7uJ2iGc0>0J=cnMxv)s#K$zb`QOpL(!w zm{%0BR7HV4@lCOKEgW8jR%nd=nP%@R^_&M~F<%OJJ0+2f*Oxp46cWlfH=lb@6VrKt z^>$Rnycg(bog4)*ZDCw@s4>@2M=pOmRgH%V-MR1d--A30WF2xY?-}4Xu#{U z(K{z@$v z*4`b6-`LB>Ya|{^`Rv3UYeo92pao?^EqjPbB$*9l7;w8J>{ay9OT+8lNqOl=$19E~ z$vx2VGU*iq+J8a2rN|Q4nQ85!%7M!J%j(_!DD9l>ELMiI*IZkDIPK4=<;#w{n=PAT zil1#jZ9tTfE+R?W%WXTSitgMa$~ev`(V8GSd&+V^xGS5GSa~<=&!a+S?+AUIecM!^ z@;Y8AisrL!PN2>1-GCCqU5~SE31nRhSqJ{#)~*&Wv6^xcs^?N8`btyE{7Sv_5&TQG zkX`GF;DrY#$4evMrOf?o{!WU|CXtYBO6>3Ff%ohlDhn^fp~syRh+z$n%JWB-s?Rcd z27Oozmuh%s;kVegRpwI<`1iQGkLt(M55zyWQ5E=M7-?tVK>YLUYc{^+-E0HihDaqY=mnocU&sL-fGEKsjer zvP~>?l5gW(%FI}yV$COUaGF?g+BE1l4|5 zoSgNIdr|&@+3v|+w#!Cd^>_5+Wo64iA(GjA&c23nh{Ac{$s#<3N1QpL`w& zy!byy0P+6cfm0f%B-~#1A&xJd!`lq3_y|}W`B8EVg{*v|eLbd6Z{kSx?IRBt4Y%Y$-Vbj(Ata==B^zb5>$IrNFa^?U+Elv<*Yuz)IZsJ9fj7Yv#z)S|viZd$@nzcoL4vds_zEVEDPtU#4NSQ2U9pqP&0Of! zz-fL?ki`)+1YFkXwaZpTi!}bv`4>p-OzR%94%l9ZuSiz!!-HwYX0wyKnxg#~XX~_ZgOOo*)Z!JV z8a6FD=PJLko_-;`y9Mv*2JhyEf%aX}r?U+^LU=d~7DP2vjuBE+v8r^W|>@^HF(Aa%IoKC%HW(Sg>b<&S~M5v9=%HJbH zW?|wv!^+Hq)u=tQf)54UPkWzE`i+-P@gry0E`g*DAeQ}#)v4+}cvZ&f%K9-w{0t@k zGTs@p=oM>(qB=LOfeNjAxI7XT9Poc;&%o>nxTG05*bXu?I)U zHPwz_3!S@zGMz`olT>I2a_e>X>6_7YA>^|^d#A(w=dYIj!dGsWEU7Y?kT$&OA)P-4<#ydrV`5c^g4H@T1h##vXjC@)M zr@mo0i5}NziXNe`m5i*irw|lt@Aw3i%QD<`_*q{-M)aV3dhO;|r4s$RMW3K*T>fIP z2mb#d-BJy?B~}^!At6%_rKZ_030y&WMY+TCBsg2ya#onTQm8t!t=(dnyS^I28H{`h z5CQ9*tY&3@_xOst&91tw76S(N6q4J(E090VT|5LAKoz@Ev>k&>&P#M+Ves~cFyRXH z=Ut1}=mr(X8s{8HJ8N(ktvH3J8hWCrS8tl?*I;1p?S!MTFBfV8(18UaMArcD04r(s z>w-gXe7fQJ#lSmq8RmHi?@qzHfS0|3cULsi@R-r#T2@AxG`?9t#wfsOlpIdFW%mVD z{e&0Yi*5$u`4)gINM+4M!{mUDp!IVCRM&iI>UG3egt4)L%;}Bt9k;|KI%TL_dSO}Ao_V|D1gNHY|d75h0H+6SPi|;@yZp&@5pGJ^5ep((pTi_+B&NFLt@ucCGt1Yvd1MfeENx$8TM%@hyU(NCyLQnHb_hM3Tl*01 zy%U@M=WmIeaPx04{WZSq3A@IJ-*?Y9K+>gGfW}tWZe_cum55Q#7S7Y=fJ{#f|#_l)J^d{zE--twOIlOH`Y*uPbI zxgGD0YP*)d#chpP97Au*owS}F|32hz;q7gA@aDEDBftLjhv{^`=xO-I1Ha>yTDLpg zwE0&w{UuGgcEFXNeZs|i|3Fh(7kgH5bh(cH@%J35-o@}UzO1HmXe!9Li$>4*2dC(+ zQ$+HwQ+xoF?zuB6Y}0ypT1P)ZE64W$A@M*Vea~I=xPJ5|uIRq+h4EozU%Jx zwp)8ywB6Rt1PK8Z11cb~iYPKeL?S4Ji{$HPmif7z6`M7f3vljP(71(#xnZ1tV7q@76Itf1rTE@ds zOzW)ZZQQ0~dXO`{9=}7+S)3fg)Kud)=~=Nj$~eu)ziQ9|4Fk9 z%LmDX@T{79{>?mtxadWQPad5gtz)FI1S{0we)aPjPEXz_#5^h-krdB4qp)L9@98={ zX2T7|N1|sq4hIO`k;H2`AJl*GCGYS5naB5^9V4^<9gW+VS5M6w4>s08cEt?pq$-4f z3wFo{Xg+Rt7Pkr=VB+%Ycv4Oedl~(7j~a_EGUrSQJ-@T-X!OROUuyjZZvb7Mr$~-R z9<}9-ZOtUfotXuY#DYL_JL?@|bE98tZ-SX* z$Wt4)YL+2=8WGLK^ta7lTd}HfW!OE$pckpTZ0v=Is3h0)y;!lvX^~$eA)+|>bmD!p ztZEHf{`%(?<+O|^dCzZSRmBK$p5duD&9YC-@@3(Av&~Muqxe4zayO1VqyXP2dTIiR z_Sy-tF+2dcaY8Jx9G}Sc<+*6=rcvS8xPT^av`zI=I^ON_^)0RRpQ2NSSJykRl(^YW_Vg?b$gN7|`R(04<`hE@Whh7ltKM7!#;L2yTGBYYf+lQ7tzu;TWK%lT(OL_{5|`-4L(GuU{X6G zO*&t%e%>tdK1W`47f@U0Ugx%hrhj2_44X#|LM#tjagW-`afRR%zBbQrrXobSXvykNB^Eup~U zOrpgH%*)QpIGixG0-ExAcz{c0wx8r9zhWJdv>ZmxX`ZP>B#4i@)F#MIHhBr~s6v8q zUINjSJkIHkGNLcT;fpm; z4(jO0w9`IqO8U&y0LYp)H85Sn1QF&~GA;LF6E|(|-jH)aFS&Eiv49T5njoP!ZUVzX(qkc*+TTmVFC zPFlgz`KxIJqs&=WE%~Q9_4hMy2>qwh5KUdlL;8qA2jk7gHjSK4SQoI>PGeiuB$XI; z6f^aPppgy^H7y}!>4pu-8BUR2iuLniv{!%OQ0#`7RkyY~BWlnE>uc=c{Lf?C!ToK% zhEur~h#N^np%AaBj+d)8#6p2Z7l6+@BXOPsLN}E~tnTKOweuM33mEQXB};xHl?u@w zBIEvik)KKkCwH~tCms&DW4=KVs7Uzl=YglvifCY#(=rj-BQ9o+xQEKH%Z|qUR-l{! z-vRX8wLCHyhr#`2bX#h=NBql^SN-F`{^ULU!tFizdfJJV!=em*MW!fEcvos}z54fN zseN?xXQ4rLND>F$Q|i^F^RRVd6W}EH7&Ndh^?Y99Osd_C?}sNFRk(`FL^%uy57Og{xt`oCR8Rt zL7~%p2BR8`O*SvxyhX)yus9gIp-Ai?YS`)av>;hrM>Ls=HAdmO6n6;G*hde4pI5OH zJ9H%lrxYK_sC0+nki2yhj9&wv*bbkFgRmBAy6@|Z`*V^4e~aSe^i;!{C&Ly0naCc# z@kCZuNf!K~8CxW(=1$l7`PD~!n<~~c?o1p#9f>&`Jjx8X_~$YKO(HhRqVr)#wVlej zKhMjm4?Ip5;zsAeyBRCZ9b$u*Plj{4$P6vr6GGnpjoI2Wy|K(#F?xT`cVv8sMrk*< z;aq6*aJ(E7t_5GlFQJ3@idV3IALNPo(Q8}wFZvZOufg6J>%JeuK=4;yi{@K=oDq|T z>o$P7QRZ=NDdl)zG1vFelGqiGelHuDwH^QXJP_G#6#w?e{7a*CMZYj!*z}SEUbV|5 z-z$X<6xQPHgR42*>}3akFVulYR7s$0a0B1r2KZ~i{}4F%Tm3el<~&!oEq0O2&$%}b zlpuK9VV?wm8+kngw1ZayxUCrk;XxCSEbTI(cqoZf>~H)@Fmd>F{zEqkbt#AD&U>fh zXYTX}{u%35VG6=jh{n#q(FU%jcSD zb3n8DAQB@@7P;1e$7E74n!sNIt`U{eVeG=9?`A`tn8u7SFEnt9IDqUXJ+8_Im*Ry9 z6prrZ>NH%}LATR$KT;R{I!|Uh%jL#g#*F5kJnBoxo|!y(!QW_z@P>EEr{hJsgEk0U8?D&e$b$!cVE*9gl4j>YXnEEQ?`c`J zv6^!HC(D0;YA@stO?UdB8%MnUQHkyNGZ%iV+@e+?MGI)F^WZ4EfJ%uPg$LvTygo0y z{tCg7INYA^3vEA<1dZOH!#tT2m-;I|fboKC$P#7%A6@rtFo`ANTC-MA4HY7v0VVWt zox%S=SXdoIi zTIVK0r3K*J4*fO^iVb=#Y+a;cQzNb-4}x7LI(6Floru&u#TmF3x>OsR%MPpQ6azlS(9T0qj3-_4;dTs6BgYCUlqQ5t7X7-vak)ZG?j(zcBs}3P%XWaY1VzJ z8gUya=Wr$YoA^PqA3*QTmf*byV7b58;$oc}^0Xr?aMwp&e}FlCfi{JbTL>8kATyB9wSx_#WN)55Lnj9Y%=E$4ai1HP|xz*X9xF7vT=a1rKf}zzu%)7t^9}&Y@$l7}R;p{9Oswc%SSiv@8`V*<+k?WT3MVHm0?}Y5F+0KcKlNm95L{7NK*@Yj%%7yn*>=v*Ib=$1JEH=rx9UJ8*5|7G4YH)ine# z>=CbmKJ#F~C$vYjE&303MpY~PP0`K%Q@j{c>n6m@)S;AY*_fKxn6FmH#x2z~ex>g1 zrVDW~%0dlx9|*-i>x+M0>#~sO%4pp#Xu3ILMq~5K<2T}slh-aW&|pi?+(hgWO4BC0 zU(rOU0vsUT^@=)THAgUn8go8|Ogvtu&kvhVso3)ZY|&YSxMxBSpVt(F+?2MZ=@sL^ zn3zSS1!hi~xWSFo9jw)M$c-p;J&NmRD4`}H6b0MnE$~k`g8n4SYush&ZKU8N^B~za z+*I~qr-CskkXLcj-C6DWzY|+j#0mew*I83^ej3HzA(fk1^y2bK#S70c^I%o#GsIg7 z5N`*r?OCGwr=)hWH;6fZ#q1r>IrbEM4z7w9!Q33OFIiN_#{9}qtfH@JL=A)WbJ9b3 zgmHuIl}zxx`4OeQV9?(lr96NwKBSG^zK^sNiZ6&gYtWCgMidu zSI0&^B#chira4M$WSaJzI%y+Rj^58b)+f`v6%0}s31>KV+SG?&Q$ZfGM3^o4mY71K z2ZhvWVs%+PM3~ZY%o1U3GZLZr?Y{WzY}QqwW(RcrZPtkQ9`|(Chvls@IIIDAR43i! zUWWBB=GkB@q6IPTQf`mvtUf=+Qn-j9O5eP5jR%p6WaB#RC1zh4qX+&9SpYChk-Edt zx~HPCQ}jYdxb9`?>@o9;EpKe*yBGpECM^Lo=U>$WeEDmF?l_p(1w|DHoCnXbV^Ilj z21?+zg#kumni-8sM&lGV6>7b}_e@If^fBw1@@+l$5AH9B7oGq)S?L1@azum-F4|Ua zqNZFVH7za*umRRrIFD+ZpCtVnp3X7ZDsC%wns*7kab|mz2W&_2DzjEY^2k3R#de?6 znSC~Ac4h!0MTAn8x-YB1YQKJCGfckn+BqwSjoc=AyzeS zFgYzh7YcxuCU*eUS9!8qUrkT4!jqW?(lq@x#X&QYzw&a7O8!_Snpd@)<{k7y{IJBL z{mH9nEv=-j4I}NeB^|qHO5O?8#{P!_OUQwjjpV-X*cOx~KQqvl$$XhxrNRAOXIST= z_Iv6Zzo^gAZRtVX=bXRUxoCs)?Y58;>J4g$Th39d z_tK3@-sgRlCg%<0oyFJa-Da|{F!&w4J2`bA$3(tTpEt!(Z^YdbaoA06{s6rJKcOwm{aMNO0CjL;Uj-CDE71{h5c8EVs2XmbV3`-P0ZPHhK zS?=0Mo&WEmzOMdl9^Op3kEO<@%MHheeP$ITtm)0d;I+x`|A5{$AqyPX--(Y9-@~JC z8d+A@uzZEr4~8ogequ0uu$}O~d10+1-P_q~Q0Ia3`KHZh+cs}{Fgq(%11KE7V$o8r ze}9h@c5reqZowOj?2hMocn~uEAQf`l1B(kQYKoi(e}u>5i2I(%{<81#9gZyuhhw)^ z{#Gk+^#0_}D3Esm!^x)a(zW>GSsmpb6$RIz6vpS8nnL}h z|E(_4Cc=8SN`;jtYraYibzg+BTUhjjAr(J=4~b54^0z6i?%t9o{7UK8l(T)<8x*l! z#mS2m&qU2L3Bqm_M%x|9GYxbq=6o%{eGxJ_vRdOGKkLuzzRTroU_SLOxK+T$}Q36OUWfmwLz2D4x zqf0hF&j;PRwook_cfWgYajf7g?x#mCMRO7|d;hJVP=gYGK%-k7yROKsDvtWLHC^tj zjYo?Z{~OAk=D#OZDDJ;ht{i;r;#m)qJN}p+X^;Beh*Z4oe8m{eI4diCVZ1+8H@7w9 z>p`97U(v4keHU_r?n4wpWp({d%W!hfSizHxJaM_$Y5o_2Sefq&;Y0xw)CX59+|1}t z&gR3zrzq1Hy+E|i6C_2NU$W0xX+%AQf}j*9R`W<^Kin;AH4`5mJj zn-4GhMPw8{cm62EJn=r(TkP5kG%Zsxc7&*V*hp>6C8#jT>dm7K{iz?5-L&(VcD(c# zwIlUYQ%E!2*Hk(h_8rn}{37M6Q(tpdjtXNCSJ}MZn|@_s&SJ99!Ua`j z|2XWn4zfzHW&YCYkjt&h^tQ^jJs4Tv&Vg@ETb45-yK)KI%9lDL#uxIH-EaY4C4A*H ze3-9MeEA!S`KshAw_!M6Q}`O%=;v#?d!Xr!IZZp~gngUJ`acB0L+S#%1i{+ z&99sUis6t3QSUVW5|CL=8gn}x+{39yI1-q9Z&1sL_*_QJ`O4GGnP7ZYf8`Qcmi-t6 zN8|Opim|D->@8FnBiI4oJ;@ZYLTA>C$G46-UyjS76+MlxgN!Ctc4|<|y^M*jM;O_R zDdJRP*$veMXO=i4 zK3hUCr{Pk9^`o2-pC3ig-|%sQcUL+i=2a5RZ73$Vc#1RPo+$)}Hs&iho#6DKyPx3$ z?Q^(Bx}@6WHfhYKLS;Lu%b(;vjCNO-ZL5w??+-3HGUTqZFt5pn-Eo&NjiPSH(l<1O zj9bLFKjM40>^wOjgclm($=psaKy9eT3vPNc~l$oCO zKskVN0HM~TWvz^OHg5C-@}uD7fpP)m0?Kuozu|#~02-2NCA7kf3S*R#y*vbYbbo3l zSVo!)3lw4rx%(`AU&ARzG_Bg#tEV&`+(DT2v|xr=OPdL?mT(V^?P@SSpQ5@<{-(El zq1I7hU$Sz^(f&rBJYU%jIr>AIq|YUvDc~D?gn4V)u6@ze77>6YsZSc+Hj&eA$ef*T zvrXbnnuk>SDf!h4wO$(by`{UJ-Gk*fKAI|21up6VFCdzpss2Oc*l&VvO<}4YTNqW^Pz2LDt{lRIu2tsd1C4MQwu2Qad6$=(_;WVuS<>)Tg(k> zf5Xt!hsiNxMdsa<`n&WfeK^;7utnsJM=;(qwo6j>dk0So*YR#OtZZH~7Y-|oQj^%v zYe^b%rx&@iiq}-a>=?ROEsnbJ%fTh+Q8mt6Q#FM|upou{6LRZ#Gn@nDE6HbQM9c2S z1vQ4b&g9jo+a~{cg^I7Tm&H9q#;%uvk}Rc#k9hqrnEWO`RJ^?4jJGS_!+8d>WelGGo?7q zx^L`q=dSsuoW5vn0GK# zo*&+pqG`sclx%&3mizBN*zetIrGCqI#{OffZP9B>v_Mr%)8}9n^zt(7iZW_S_UWjo zUOvFsdi!`&--O00i=S~`ZaYE)4O~-|rzWSaA=5GSQ)#nyyOf__O?{EZGF#4vKd>B? zoHAQLeC+SX`q*IiBykaMT0;+JXx%wcxQH_LYM+x1gHe5 z`fA#C1mx(;t(uy;ge5kJpK9Oh-Yh4v@TbY{rA`ecDGpHsIbM;bAd`xM(uuZ9kY>kI zRb&igYK`P&@v)6#Y&T16OPf8UWO?9x59}f3@rX^mH*R`Ap8|g3fnKqo>43iLfu1%X zr}-Yn7I4f1|GNj)yaT+z1ApHGM+Iiyu5UWneFyKlvilAs+C}yFVd+AIbE*r&vGQagWuTATR9)(;*s}N!A}TlC zqN6(d6hvhSEzKI#c+N|%FhZhx3tM(K7IVi)gM!JYze0oPq|)|`l>XqmiYN`^5h!`C zgcS7RLRMp;`-MD1_q=Mn^8ZsglmCnXtkRIUaWk?!G`zg~0M6(<$E$av5#rG~w675* z&sKK`c-^Vt7Izl+BPF4Vw;HdgZFwEJ7sbjbZ!y|`1x-~YKHKrC!e~WFgTJXN;JeA) z6?M1W61+KhOYqhKeFpXxuI-bb`+IX{??E!YpV!FG!)`XYfmOyizNu=Y&)s#?F?lPq z%(jty`R{DD!S;vi*eJDOXvErArU?H&vDTjE3?+|EF3TxSE2? zYw{L;23tM$0%Vy7cu%|H`TItNxoyJzgyy5Yo;h!yaiWlOU12!?sjz!l*u622k=Is1 zClUL7wkV?fV=sB+&BqV8ap^p3S>e!58p)Qg`D_snirf@4> z&5qG9sy}>SOZdEw)NBTOpnc(ZuC9LQ)HD_rY<{n03WB!=Z_{{lB^fkxGu5koZABzz zdf$L^2FCNM!SUOp@f+R@ekAcaZv2uv7BR4tKUjF`l*L-JYkFSG(DuO|l;^`jv6)k4 zB~e#zhOVUqMBDYTe3|m#Tmv3zU8E%1*+?%`@yjA(3%KN*CcX=#rXMK)MjMgQYh zY`~Zx)r@Fe`%Ch2w!GhFL8UDNTVOLaLRwx)-o|wC>K)zPgZX?V-nCMn0XopW-!Q^i zsR#MPK{)sR(#`~~d^sy*+pm8g7Gn`Gajz84gR4p|nR z$7&nKhuQLUaqvp=9Vii-NnWhFsG_QCrT4LBd*d) zSbizIQwN+9V%j5!ro%1>egTU`XJvKPxFwijgU3kS4FwUDHgFoi382RpH2Z0*AGH{A za;-8Z@_V26k3(BB^(}DkjSm-9CCI2zhebgG)eo+wf;l>+-B66)h&ib7#BGi}t8q#z zL_}4f38h1udqW|b9V4B%h;TJRpXN9*st{#5XJrRI^Dgpqj7qjPg~N@jUkp1>9dzctOQpCw>zPfT9~NZP~bZEM&IlpY6UB zzlY7`{HRvZ&OU@xC-sHP4rys8QaSs=KQ*R7%qvh8MkBrDX%+|fUwKOZWO12yMDnO1 z=|V1x>&}yos1YeWi|pYitgE&TPQTSY473qsH`eOCKZ$xlH!jtBvMsth{Mk!VF}nmQ zZ-z=cYD&`?VTCz)s_H>X2^nVIHXTONAloC5YaY;K9L6{+8?(p9$7NMKyXcg%1Uev< ztqp;kGDPLL3D^{=>*8=2$yr>kO~jvU6UA*>oufU&Pm6L=IkW?I>A}JEBK?~5#YWgt zf%4cSc!qHSO}0{0Kt{%{FETR+iGJ&cn0FkZxn`*GYpDifLv_s+me{<5I5s%lzLp}= zfZHOf#92uL?g-#_2h-B+i>0~39AF;&e7nTcaKc&ga)*N6{)lwmB-b{5j@>Y3e7vBf zV#A_hm=`xumI#*d*x+2AG``?GTmi|8d|h8SKHsM7X(|U!(_Q=60+mz(bR|hgmQs5(}40wtqvhH?hMx;}Q}=P*9Oc zFuyNS<6Cw&T&)^;DZXNL*yUl3NvqW&UU`b*n#{DLy6oNL?HR2L@xY|JxPUvK_~$i| zDPvem|6<(h_xJop<1hSy(+5So+4oD`EoGglC+SIg{$W{PvKaSTH<;csDL(9Oa66>> z5hIoEbeT1W*+BjmL6o>O;dR{~j(^&x4{f!JhxJ@Ju->5+bsaoCWmHq_9kp+b`jPw* zJi9JrgT9XHigy-2pGGmrm10Io*!NVp>=|Pz5t}eltoDRLGp|z{InbqL*9-ykKRw^e zkDKq#$|^BSA_?LDOcNzG!8Mrp<;^b(?tjwXcs)&Sn9!O{AiLpGIMNwzNNZ^_D7bq} z&jn`Pu>K9N$`ah!#{@L%KNv44vg<#c+U*5p=cOb!B)OYSLe{uf(suNqrx9cB|8(n@ ze!tC}kji6su|CkYXxZO*R_xlrwXv1??^YG9sWK}gR)tFJojil!?g_=`3~y@V@$E=& zEGL*anlrfm*t1(sXBLU3FCo94%jFs6Vw^BI%{69vVZJLre?dHr$mr;k7|@i5DxQ(I z8ov{ld;no+ZQWaDP+3(NC52k22F{h5O`%k5;0TXIeXpQ5dvWq-Y*BJ^0V7GQ`-K9j zujBzJ4k7?Xt9da7Ma*Cxqxkl>g^36;$eCZBJOa%l zH61KVmZjXB)OT1wv@cdwlv7o>rpoM5oE)82j_6sJSFwmIRl)p{oGR%L;-*$J`e7ZR zouAL05;kwDQuY{J|E%l3wlqCJsvyrv<@8$?xc&#A$9 z4S3qe2@4Yef5Q|`Az}1j29b2~eTEU)9Ck4?zy*-5;lNR0yjpai*yR{l_QLt0z_}pc zE%y_tr_%i^Onr)BIzF57upjlL?W`%!e?F7L;GM|A`1mE6axV%0OWBXuLi%nBl_kCN zE{B6y)ktqRZQw}?mJHuu8Abm0HOnNb#(+I1#HF>tSJl`#8 zVdtt9VRtXLjq$PLFj^Sh4R?4QAIa;#OfoAEJ+=W^o}Q^)@bV^;yv(%WmO>urg*!w| z_@zkM^R*Rk);g1SFq^Net=O@s0@3&pc0tRFV?DHJ{I8)FmPW{`Hx9HrYhY@4drSe3@3z-#NVHbci9yc)6rOBVd zp&u(uSOVfHXCVl9Ir$Q2a&earkr?20%)U3n?k$Bq-?r_t_!STA9!}mySvo+SB`fK% z>_NyaUP(rD2Eck;6na(ESC`k58l+cIm+*^&Va`vb++K&>`FTCiMalN;?-uuX_%@lKNqX140~d8{u;SaSeCw!+BwDU zl#u{S6*Bo$J{e-%^c{1{C$gEWY#xE(VcZc7AKjL0 zWN&sJ0}!9mH{(G2f&PYz)>P-Qv~-HKQ{A+Q^REUb$3QjXy_ROpXzF8Y9lQH>#yp;T z^fvvuaQV6XL3>DQt9z28=Wse`x-T$X3F~0c0jj8Y?h8t8(j^Nr6E$JoWD@ZjX*_oY zGuKP?Mtw$6pHM9-3IxV;?;A|jMk=7i<_UYX*fjQ-0}A>rquYM7h>oDc)MmH3_v{!k zax%30ksp-Be;0U^G)`G_;D`K$j|Pj$HqA8Y1N$mE=Z_7dbCstnAC>kFcvUm<4s1EIO%H+4Eullg zJc!!>e~89>1aey*WG@)QjZQMA70H77MTGjwgCdzh46#No`mtm-E2Ns|E;DZ{QBB!; zcSFS{A_C5Y^@wPa7n)9jA8mv|g}Vs3 zM}vA__2&zxL~`&F9P;(b9G-o;!-t=3o{VRg!g|oKs&MKbP&|&J7XO5o^t4l>0TSQC zq>fNYc`68MRxo5@KQv@>5wB^;T53tcJS{-UNKAQS0iq#J(;m&@h+ED0*9L;| z>vfAc5{zEJ?R)%d#G%G-Y#3p8-iWx*8YLpYZkIH5;g>P@pzl$2urliQ!4pQ%V~qJ< zu8uX*eYBo~avdbem-84tzEJ>{!g@I|rJQA}-FMNn()?h9y&%E^mPj5$@OgBQdp=O; zrjq~AKx3Qw`kiL!yWqFCm@ZGlUGGRz-5hlLs>_l%gyZDhR@PJTlr#B76h}X&qhbLs zNXfnAo1=FJwfG3V7jf5^`WC_hU59PW(?Q&{+Y4H?7I&g(LNNa(=8RjX`K((9jh=56 zXN1PiTKA}GN4-!Dk(>XD_nc){YBjQ$M=5P(EdmhML^%W9P^MQFQo9&uppWy1i`r^? zQ48gom9bPo2S^Cl!bE~mni;DcNs%}EfOGC@bK~3d?-?Xd^e#O^F)}oh z-*ZM`=4jZ8SeQ%WWX4gP?77n;WKT0T_)8WY8>e}+p0H4#muzL>m@$;7Qj3MD`lwA^ z45B8CLbUuI5A-tEoJbcvAD1|U4Z>EAH><+<;9EA8#DEJ;aY1*&m}D-jvek5Tnz`aL zYvI8Q`H0lr#q3;Ep4=xEMoVRapzZ{w=Ax0cb*pJ&A*aCQ2blxv0d#~Z1FD3aad03q zW?D}qc&>Hd&}bOlan#)(+vIlC#y-cBz$5o1|53!9EVfbbCQ!5bdw`i4_5(A+7DCRd zWn(eUJyh1tiDfb_g%;gLB|$f>zYwd2oGmOtCTT=b&d=ZFreA1TJSF7Y7RhNW*Tf3> z+6Jgu|8ry*Sv^p4$SXQjv3)Uq-`dpV65fAC5A9{A<#MJIM+@IVE4FVR9pZ4n;*y!V9ALUQ-*E3Wys?cby=m;2_KN5i^*Ij#( zsrlxZRVjj4_ykNS)E%mrJn!>l0aj#*q>qT?FkqT_K~5v+uzz2}s%;Z&;6SLDlt{Mj zP2R8Rh!VFU_Zc{xv7&$MFYhqwzd!w)3=y`{zG1Ylf9w|k!*1sgh{kfiSeFgVQJUDW zQlk3D{yl-@u)9pbkU-Owma$s+=?3&Ho3SGKotfN&Edgx#R~lQS#^NhQ#|!l*?+H1E zv3`mlq`IZXB5`fW#4}C&vsH$Tpbr?=D%lcF^lyyc^xzBk(Dl{m#z){A> z9zCCl(ET}GQ6U`-!8hOv<#KRy-|*B`q&t?MV970H$@S@^9)YB%*Beiq!&M*#5B6`W z=IB0h@lz@3q*{Ed87B?pe%7ExIQhFTF(BJG^BMj;c@r}?B^RTE=?i>~UB9I(S?CrU z)|AQD%tT8`|0!d2seOi9*P$UCyA4L)t`GitjDD5j?Zazy)6Z4^DE)D-Ek^jLFK${t z?rvsfd69NmKZ-Fr$5vQRnfd^|`?5bF;|AD3;JZZsXu zHcE)j*SQ6IgXdn58l2bJ8VWe@`oFqXJz)7J8`URtYFELr%h#56F*pcW_7D%t5e}P==n((hZhW~egHp1NMLQa+iw&`0- zPD@ln7pHy=O`Rf7ueqGYb1r)okk*XC(V>4*y&Ip@( zNpdyoGgjr-8qrq6*$`39eWR>Ck>-sja4@ILOxZap5kYelBK^Y8BGzHr-;IEGayjyy z@WZ(IG0G8=7L7?D&XHC(mx(f!+LOF^p7#3w#@|vpQ`M~Z7;Dk25G>~NBe8LTWd3JK z)!Co=3Mp1J+)6VI*DN`%Rv}JutRE*_Fq%{S&g5n=VcrIgaB|3VTEZmtI-n9Ygn7wd z-VVCRpJ%k3((*7*~$idXfcM!Npll zON2^|m$Hl%IAcZXFi8fF^DDwGFHjv2kMOS)%2Q0C_%(e^+xnvMVYlN(GgyYR2gz}< z6Oq~<`+TsiZ)nq@p?9CG3y3kli2By|zY%Knv7uvfh+{f_`%vROI<&HNF2ocKX;&TrGPiPepOoD?fva?gt@P9E zy@|WN=O@S^c&Do;A$bI07}+f9^5WC|+p7M}>!XWwPj86Chy7rR>7nMAI_Ipc>9;-G z7^y4zYSg!`e>>jAOot9^Y&$fx_3HljhiwOJ{0O%_g7vkp%>;w3g>L&_5`Cacx!t{V zH`vNk0-G92o8HPZ4m{HHL;d8!!1VX;y}zCOrL#-uApQR%{e5=wpV{B8Bu?B9Y#r!t zW>_6chrRxK!GZq%xzTt9w;evP z$D@wzKYfPNfOn*Z1TLOO;JTqOTyd!J4Y$2%d#}5>qO0MTq6%eQ)$uUI=irdLN_phO ze=tF3$^+yc(_5Y-`oNwIBOC) zlF06X$ZSPcen4c7B0n+^d2F$MMN0qsM8)PRGQ|#HBhxu~-AQdiYO`F|##~onoO=5H zEyZozsjtGQbYtoiN<4oJ!@%q+u$k%WsK4)no&RuQQ?FYJAYx+L`807}!n3O}^&ItA-YZ-2LUo?JpJ36@*xnT9=^m+oXv{?q#YI{M>{|($$yxiD| z&Wzc|kG=k2-_v|pG}$2Af7ym41Om6dH6*t5fwtOx-EFUId&|#~*PDYKWk*}jXgca^ zC~@1RFv{~0P1_xxW&zd(jq3*azZ2JY?eX>Xoa?QRW6Lx1iV_<>@&WBQu+eKtW5+5p zFKmCNQa=0pRowY)NMeL{ndw$h&5RXZIpE$8vvT52edyRmm`)vPTy4rfaet=S`kuu@ z%rW)#6dzlZ*PlZTrGKm)gPlsOdVhTf<;i$a1b5ERe|%AE3pgbj_fLpcBs- z9rG{dl4&V)fOX=m#Dfn;_N7ji@H&>-Hg zhfy-&;X^dnF1#O^F(6!qZp)4MdMTHE;Us>>qd3)G!nRUL;F{hUPWNhlo|)my>{RTw z8P42|Xc+5#!C6mZ-*p5)SKf?}Q;)UROnA%LhY8%ye5oh%tS2!AtM4Km&tcBnn@8v< zp@A>5;fi(kJ}=9>{l%o1*Q?(>UCxLp$e`+R<)`${(aet?Ja3y9ws09Zg%axt+fUHtC zy-@>#uHb}<&3H^EMvwfIZK#fahQ0DI)>~ZpWN}-5J?Py(F<$Uh_Rh1cRA*?0hs=lVkQCICTue*8Uy-Zu|1um z<@63=n{w;H_U%1huhjWDyC(_tL>Ua+{u-dyDeLybDxHsc?|_)wL54xZoQ>(^J?q)& z*+J@=0TxG@A3e+fnq!80Q-ns=^OTt>+>|Mtnu7JhnZ>_BGa=>N6e%P}Ce8;&p$G0{ zQ?NMXuI1H7cRi0z@f2!p-2W(upW`&2CE>+NUJ0J#o4wY||2KG)I_T!bC;BR$b(SB( zjKEnL&L%<5F$u!{_{40b*kV)oNs)VO3d+b)ij_76i*3%(V^b8wC;FA*A)7+Y$Uink zVSHk)Qp~d{P9nw0@E*q|Dq;dHpJGx>DZmbQ*zAp_E8AGgLASD)ON3sSNBp>&n*javulw_!HN4KkaB zVm3KsM9XmBesK8RAIIUuvHWJykOLcAi#RQc)l4+Ll|f$$#AhbNXWq3ok%G^BmG>VE zf4N7z%%{sMWdnjJG|n<&}-ng4Q+@=>)Nq< zEEsZN!}!*Mp&Df#zLB3ax(!e1A09l=1!w1Ibcwm~L@_yvv8?8CdHjm`*opGwDyG23 zh})v zgV!u}ch=cyUn@j`qD}8OW2rINKE^A=15-|YG&lmP1lj3kNzT;pseK#`dK-Db34fW~ zFQLFEU%nC3tjj0HqY+#|Z|l<#j-hz|QqrQUQQ%7GLLfc{($dX<+9E}3@@9-T!|SZ% zF(zEcY0$zxZXTA0Kr;xQz{Sd13(gk!LJyof0L~HEvpt?LbO7uZxStVGA$rf)7LqG) z(gUA703IUn1`j+8u++O~jGmwPEnxOoC;TvYWf`uQ7p1kSVYCE&X)`_*nd5V6I3AkY zuK_w=1H>Ykf1U*rdDz94Pj0FfB%!Rl;mHSd}~!q%0>v*x~6T<(6*kTGu(5G0PIdW z08h{STHmu7eoS(MwEXMagpq&U#N0s=JGgd5|Di8;(AQ9WB5$&BE+vndU*37jO|+$k z=u9$M=e^;rj*femV{~iIq&(}xS#Dc4X<8j;Whb9ayEv0B$ZlQTwtEQR8SJX^Q2uCo z-lqSu5A{4ld#L|%Q-8)`!|qE%paMG5l^t~3+jjXmUvM0Tz2s=I&4CAx!mPgdK7QEk zV$?ikOPoa>%AtZ<2UY8+A5@k1rmJNC#b^8(1Lvoz_?QtC zJzDyTyvBt!{wPDvTN2dT(oyMry@R)e3YJG8-ikc0gJac_7yEfRlOh2X6`FQ#=!+L^ zpndt$r_N~L;l}S}HV}X86OkeH;mU8(RNjJ&x(QyIx&|W{Z=7Q~Hlxmz@DBq){pJvG zpfNQWXM2p>!n2Wq`ka+FWGA*6zm9k$JR`r$Bn`SuCg$4#h?}0|u;)Y83*AR^h6}23 z-_-ePLJsRK*E?_w!8s&F@0bhc7D_u0Fk5nBU3w>G_>rr~H`owBs3JW8>3WFP2_o z;G_$;{>!)miu=C_+*ug}FIQ_FsBQF7Wfq-2h^MRHQ#jqm8lLD{)3}!HK>hnh&R8M(y1_Qytj1H)^yV?RFc<`k1l(1L zK8K~73)g-wUgJ(WuqEWe$!({7ubs=i9*@|XUSamIp?3CK+p844TDM^r>!ccM0l6XF z<*zQ=AWH*xUG40RHr1{YV8IP39#5-ww|XyclWr>}32Up}=W1tn+k`zN+#1}ltJ+5@ zN}`-lewV7vhs@~_UH@bdp3NcKX}QXD^Z(ZP9R05tALi6wH$JPNa7>xQc61mJ#)bg_ z`5!bIFAj{xi)J*QItIxvn$h5aaWm?ahwPuT0Hec5Yg9ByU|eJLUpGFF{MW6YlfCuB z;<@Vmizhc&=+9hoiDd4dyLe=`Y3YTt{BPFY<0sQ!)m}T9OnV`24bZ5d`<%P^1oEiq zX?fHQ`Vbv`j16dzZng{xR*4=l=UDJ9sZ`sNN5WHW$iE-<*b~pb=p$=W-M>#|h@68_)(pl$9aIx{8aA0TEWSvcu)p zpF-j%`FUEREW-18ImlFc+%p1=nVd-K`8#(5vaq?EkWxsA=m8jUlQ3s@yk?BBd7-`s%HYJdE z3nexQh7lmQX=tAg9m;i7AFbgnN-eEQ1KeYQFA2CM4cumd+XU=P12jFx-*JN+E zz@&gbN&}^RNkwl8_;4Edhz0fv*qR1@-2&eca6uY)zXkRQI4cdj+X9bhEQGy;Q?@KH zEgkzA8@pP-a2kjJU(Eo=%L3(Tpd8l&d`7_1H1Glo+#q0a8hEw^z93*;8py#)*?4aFc??CU_3PtqSIuphNIw1^Wo{I(ut)yFy75`8L5f z6x?Eh+X?Pcu+s#eBlwnrkDK6=1otZVBNP00g8LPG*aZKX;2{NDP4Jr?m8<#z9qp)G z)8A3~6hF`M^Bg~$`RV586@FghXD2^B{OsXpA3q29Im{1Nxe^9{7ln0+e4AeFsB9P4-(GNGV13!c%W1qWG#0g=%(@hcG zt1x0;L^<`8V=3M9XgL0%wU{^+|57-yyRdZuc~ry9Rh6x?6z^4rq=tBnNT8#Dl0T!Bw1;L(Kz*bWd*{|LK00~|TW96A zPRl2(v;c}*rwt>-m#U$#5jIrXI_)&`m9mwD&nC&J)@f&|xET>=5gz2<#$GejIw!kz z))35v3&V+B<*nh9WRj3b6}L_~r!_p>21;7Pr`WI3*6``}YgB9atdP3}X+g&j)Ix$h z^V;;<(2fcI{*DQG{Yalz)W(ah>6lPJxR9SBev0`SiL&QQ3^Mw+*};y=oPIaK9{8%+ z1J}V3OKGGnmEHo^u>}TOr}(@*FxXm&yRV>68o%GPg^X7zL*G}*6#of|$sH_a2*qTp z7<6FNmhpayIr;s?^NlkXKXgkqfc7gKP8VulSCGn``lDyAJOqt@h6 z%&G4$=0vzbBg60q;N}#H$*owkXt9boDcF=yYtDFoF-0e6&1r+hoX+B0bh*kXApeKn zpPy^J_YKjRgZa-w4Ne>hnzOgAinx0b&X`waQXfHne~dr|c?cuGQ8ajiB)G`c>)M0Y zV@@HDHezgk2!%km?-6LjU1#wq@PsgL**A$g6IdFq*yJ?11ZsV}m8HeZvT`GB-^P@4d{{m5LWy6;AKw<8 zy>#~B*T7-O^?zA18Hq-|MmN>I3;q>ybb!EvHOv7Rv&z33NY20`Xli2ag067}$}7NpO!1w2?pr36ANJ zz^pV(C49jKh^${tB2iJ%*10dBAO1*Snu#^?*j=W)n+;%QA4#Fb-G`MZY+&_kOoCcl z-Wn1-pRTan!rDxNE7JiuG7_v&38lbH^+6mBVsk9eaAnCfP}WLd z#&Bg@(m?S601a2xnFemMK)5nEJ-(T2>rJ_9OrU!mIV^+5%zlOdGrf6`ul}*k4y)EY z$X9>c0%6#i2l?ul1;Vy95AxObSs=_?^B`aSMGJ(5YaV2$Z?!-ex#mH38s$Uv2zIV{ zke#lyK)AZ*L3UdDXrzR~MR{gY5LXmVJfi zYaV2$->^V9zh=WuYv~(&ZYF|7#mVnT8%05djzBofPa@3#uTri7ep@zJq+}U_aD8hX z{lo&F5^#Xu{*DDcE8qaXz03li6A!w8ywSiyO53d9EED_^!EObonc!^%Ur{h@f>Q{- zreL`V1_|y|u+#)EA=sl}u?c>J;2s6@Ot6UHJ_Y+sFqhx~1(PPYpCHsJ&1CN+XgS;Q zI1065M>t!y4Q?z8z8Z}eT_0i}Z+;bLo9^LI*{b-p{aCj>f|iPN{{xT}_}5{d!g_*N z@g|73{poq|w#Wwf7JvI$m`a#(2I572;556Te%%nbndm*t>4u_qi>-uXJ)$3^y#qgD zgh@E}Ie66W7sbw!y`JoFy4dK^8;b1S5J~JQRB^K0Z~e2&6e;i0Zlf|1DqPi>!WH$r z*j;LPO*QcIG#ss|g_=<0zccV7oUM434f4wB39PMoz1?)F)9aSlb#?9dzc!xAJJo_s z7{gI#FZ-)Hg&j1Zx8P#2F267EII*+>OOL5MXO8f5>CP;jDH6K?-5Ee4j|uVA0QK*6 zR&I*sACg-kWN+d8UCzqg17D=ncQhX^X1)E|#S>-rYdik#B8fNQoVVu%m%gs@Bl&MS zEAI?+MiQ^*dEadr-;ZZ}KbrCVqm1v?X#Unn;;j;a)WlYLR~m7B8+_RW$g))uW1_hkyf(ctb9XT&AE?m@Esm8NUEMnyO-sOTSo7~s70 zw`-J#sJ-FDTjlBS<6#uO6G2`G)+<7SS@Z%vzf54^ANNc&9#Os;KtSiwDFy6>fWG$YlIyl<_Y z6)uZFnBZiBm*v7B50tiZGO1;G>O|r+SMQf=;m0_=@Z_GyCR#2r%_PDj#>Zr^h@fr% zpJWm9d+9|!c6qoJsWc~)mvE^@MK|&++~20Apr5MDDQ2!$mH%&6RUTEDlg<#YDlRPl zM!hPaDk&_-zw?eoAQ}>XqpAw2iW3tLYI#+0YHIu2^^6zGsO!mnY#q*H_Y}B?+@q)z zZ+Fl!;gI6n z(xd!E&k*iAo7$;QcYmXG^@lpNxf*?=Fuymy6UTz~7FD->?Tycw`_WDcM3tt1H?^x> z7>GT)r8&v#+`8sqWq!0`w_)7Ij=(Z8l6ZAU#J6_vj-K-n`$_!~iJ+;wl5k}gzoztR zSJ{UuU!}e{q-bL_T9%dD;7F_>2e8ou)SlU=9gDKGAI;ss$IQ)?v!E-T3x39&s!XDp zYZSN5mMn14nb{}BK{_ytjjQ_zf$507XQH=R&-rWC3yP(%>F*I(tym;Kb9;?$=d)@M zN|@*xBBnvb6D`fR3sLGjP&lL7so$!IZhoOoS?%;ZCD;}PSMjT-gVa5TY!bdqD`@NN zRXByGJ}M_SXFlm-N+EIH-a=)2*%pr?s4X*{l@82)D&&lq*yiO!N72;c^sG}&(8!6s z6unKJ^;;H7i^OQ3p}L7p!$eQT9^PhX7@K3}igW)P@Rt$9ah|r!*|U1s1AH5zzRmcn zgNO0aN^u90ru7j1avr~KS1apR@in&?e9{vTkIDnzC^&Y%i85R^=oQQI6f=U#fa=yk zCtoAbGgl9DpVvsH>_E&!i*wFy0IF)v>q>~mRLCmfavavtxceo_c)<*4C%J$a%~7j0 z%8)4s^OFyRhO`h=*T2fJ!pRs^PbbH8&^(VPhM!2MTNAtmGl+Nj&gqr73jR><)nyU;F-S63{CK9J= ziKOS7X3_w)anr@Ns`?~n<+@$oS(ty&S-BuP|KQTK&=FYQd?^;L$Ew7tZRQf|&qz6BFlEFq zO+%7)BMqiZXxf5&R1tXN%oKW3MpC0tO43Jd(qSYm$S8GqMpC0$O41ga6gQ6x3Nw