From 4ca9442bd9b12b9cd1d0bd49e9296429dce0bf93 Mon Sep 17 00:00:00 2001 From: louispawaon Date: Tue, 9 Jul 2024 13:53:07 +0800 Subject: [PATCH 1/6] chore: remove poetry related stuff --- poetry.lock | 219 ------------------------------------------------- pyproject.toml | 18 ---- 2 files changed, 237 deletions(-) delete mode 100644 poetry.lock delete mode 100644 pyproject.toml diff --git a/poetry.lock b/poetry.lock deleted file mode 100644 index ed9c20a..0000000 --- a/poetry.lock +++ /dev/null @@ -1,219 +0,0 @@ -# This file is automatically @generated by Poetry 1.4.2 and should not be changed by hand. - -[[package]] -name = "pillow" -version = "9.5.0" -description = "Python Imaging Library (Fork)" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "Pillow-9.5.0-cp310-cp310-macosx_10_10_x86_64.whl", hash = "sha256:ace6ca218308447b9077c14ea4ef381ba0b67ee78d64046b3f19cf4e1139ad16"}, - {file = "Pillow-9.5.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:d3d403753c9d5adc04d4694d35cf0391f0f3d57c8e0030aac09d7678fa8030aa"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5ba1b81ee69573fe7124881762bb4cd2e4b6ed9dd28c9c60a632902fe8db8b38"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fe7e1c262d3392afcf5071df9afa574544f28eac825284596ac6db56e6d11062"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8f36397bf3f7d7c6a3abdea815ecf6fd14e7fcd4418ab24bae01008d8d8ca15e"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_aarch64.whl", hash = "sha256:252a03f1bdddce077eff2354c3861bf437c892fb1832f75ce813ee94347aa9b5"}, - {file = "Pillow-9.5.0-cp310-cp310-manylinux_2_28_x86_64.whl", hash = "sha256:85ec677246533e27770b0de5cf0f9d6e4ec0c212a1f89dfc941b64b21226009d"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:b416f03d37d27290cb93597335a2f85ed446731200705b22bb927405320de903"}, - {file = "Pillow-9.5.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:1781a624c229cb35a2ac31cc4a77e28cafc8900733a864870c49bfeedacd106a"}, - {file = "Pillow-9.5.0-cp310-cp310-win32.whl", hash = "sha256:8507eda3cd0608a1f94f58c64817e83ec12fa93a9436938b191b80d9e4c0fc44"}, - {file = "Pillow-9.5.0-cp310-cp310-win_amd64.whl", hash = "sha256:d3c6b54e304c60c4181da1c9dadf83e4a54fd266a99c70ba646a9baa626819eb"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_10_10_x86_64.whl", hash = "sha256:7ec6f6ce99dab90b52da21cf0dc519e21095e332ff3b399a357c187b1a5eee32"}, - {file = "Pillow-9.5.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:560737e70cb9c6255d6dcba3de6578a9e2ec4b573659943a5e7e4af13f298f5c"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:96e88745a55b88a7c64fa49bceff363a1a27d9a64e04019c2281049444a571e3"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d9c206c29b46cfd343ea7cdfe1232443072bbb270d6a46f59c259460db76779a"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cfcc2c53c06f2ccb8976fb5c71d448bdd0a07d26d8e07e321c103416444c7ad1"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_aarch64.whl", hash = "sha256:a0f9bb6c80e6efcde93ffc51256d5cfb2155ff8f78292f074f60f9e70b942d99"}, - {file = "Pillow-9.5.0-cp311-cp311-manylinux_2_28_x86_64.whl", hash = "sha256:8d935f924bbab8f0a9a28404422da8af4904e36d5c33fc6f677e4c4485515625"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:fed1e1cf6a42577953abbe8e6cf2fe2f566daebde7c34724ec8803c4c0cda579"}, - {file = "Pillow-9.5.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:c1170d6b195555644f0616fd6ed929dfcf6333b8675fcca044ae5ab110ded296"}, - {file = "Pillow-9.5.0-cp311-cp311-win32.whl", hash = "sha256:54f7102ad31a3de5666827526e248c3530b3a33539dbda27c6843d19d72644ec"}, - {file = "Pillow-9.5.0-cp311-cp311-win_amd64.whl", hash = "sha256:cfa4561277f677ecf651e2b22dc43e8f5368b74a25a8f7d1d4a3a243e573f2d4"}, - {file = "Pillow-9.5.0-cp311-cp311-win_arm64.whl", hash = "sha256:965e4a05ef364e7b973dd17fc765f42233415974d773e82144c9bbaaaea5d089"}, - {file = "Pillow-9.5.0-cp312-cp312-win32.whl", hash = "sha256:22baf0c3cf0c7f26e82d6e1adf118027afb325e703922c8dfc1d5d0156bb2eeb"}, - {file = "Pillow-9.5.0-cp312-cp312-win_amd64.whl", hash = "sha256:432b975c009cf649420615388561c0ce7cc31ce9b2e374db659ee4f7d57a1f8b"}, - {file = "Pillow-9.5.0-cp37-cp37m-macosx_10_10_x86_64.whl", hash = "sha256:5d4ebf8e1db4441a55c509c4baa7a0587a0210f7cd25fcfe74dbbce7a4bd1906"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:375f6e5ee9620a271acb6820b3d1e94ffa8e741c0601db4c0c4d3cb0a9c224bf"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:99eb6cafb6ba90e436684e08dad8be1637efb71c4f2180ee6b8f940739406e78"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dfaaf10b6172697b9bceb9a3bd7b951819d1ca339a5ef294d1f1ac6d7f63270"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_aarch64.whl", hash = "sha256:763782b2e03e45e2c77d7779875f4432e25121ef002a41829d8868700d119392"}, - {file = "Pillow-9.5.0-cp37-cp37m-manylinux_2_28_x86_64.whl", hash = "sha256:35f6e77122a0c0762268216315bf239cf52b88865bba522999dc38f1c52b9b47"}, - {file = "Pillow-9.5.0-cp37-cp37m-win32.whl", hash = "sha256:aca1c196f407ec7cf04dcbb15d19a43c507a81f7ffc45b690899d6a76ac9fda7"}, - {file = "Pillow-9.5.0-cp37-cp37m-win_amd64.whl", hash = "sha256:322724c0032af6692456cd6ed554bb85f8149214d97398bb80613b04e33769f6"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_10_10_x86_64.whl", hash = "sha256:a0aa9417994d91301056f3d0038af1199eb7adc86e646a36b9e050b06f526597"}, - {file = "Pillow-9.5.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:f8286396b351785801a976b1e85ea88e937712ee2c3ac653710a4a57a8da5d9c"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c830a02caeb789633863b466b9de10c015bded434deb3ec87c768e53752ad22a"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fbd359831c1657d69bb81f0db962905ee05e5e9451913b18b831febfe0519082"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f8fc330c3370a81bbf3f88557097d1ea26cd8b019d6433aa59f71195f5ddebbf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_aarch64.whl", hash = "sha256:7002d0797a3e4193c7cdee3198d7c14f92c0836d6b4a3f3046a64bd1ce8df2bf"}, - {file = "Pillow-9.5.0-cp38-cp38-manylinux_2_28_x86_64.whl", hash = "sha256:229e2c79c00e85989a34b5981a2b67aa079fd08c903f0aaead522a1d68d79e51"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:9adf58f5d64e474bed00d69bcd86ec4bcaa4123bfa70a65ce72e424bfb88ed96"}, - {file = "Pillow-9.5.0-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:662da1f3f89a302cc22faa9f14a262c2e3951f9dbc9617609a47521c69dd9f8f"}, - {file = "Pillow-9.5.0-cp38-cp38-win32.whl", hash = "sha256:6608ff3bf781eee0cd14d0901a2b9cc3d3834516532e3bd673a0a204dc8615fc"}, - {file = "Pillow-9.5.0-cp38-cp38-win_amd64.whl", hash = "sha256:e49eb4e95ff6fd7c0c402508894b1ef0e01b99a44320ba7d8ecbabefddcc5569"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_10_10_x86_64.whl", hash = "sha256:482877592e927fd263028c105b36272398e3e1be3269efda09f6ba21fd83ec66"}, - {file = "Pillow-9.5.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:3ded42b9ad70e5f1754fb7c2e2d6465a9c842e41d178f262e08b8c85ed8a1d8e"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c446d2245ba29820d405315083d55299a796695d747efceb5717a8b450324115"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8aca1152d93dcc27dc55395604dcfc55bed5f25ef4c98716a928bacba90d33a3"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:608488bdcbdb4ba7837461442b90ea6f3079397ddc968c31265c1e056964f1ef"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_aarch64.whl", hash = "sha256:60037a8db8750e474af7ffc9faa9b5859e6c6d0a50e55c45576bf28be7419705"}, - {file = "Pillow-9.5.0-cp39-cp39-manylinux_2_28_x86_64.whl", hash = "sha256:07999f5834bdc404c442146942a2ecadd1cb6292f5229f4ed3b31e0a108746b1"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:a127ae76092974abfbfa38ca2d12cbeddcdeac0fb71f9627cc1135bedaf9d51a"}, - {file = "Pillow-9.5.0-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:489f8389261e5ed43ac8ff7b453162af39c3e8abd730af8363587ba64bb2e865"}, - {file = "Pillow-9.5.0-cp39-cp39-win32.whl", hash = "sha256:9b1af95c3a967bf1da94f253e56b6286b50af23392a886720f563c547e48e964"}, - {file = "Pillow-9.5.0-cp39-cp39-win_amd64.whl", hash = "sha256:77165c4a5e7d5a284f10a6efaa39a0ae8ba839da344f20b111d62cc932fa4e5d"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-macosx_10_10_x86_64.whl", hash = "sha256:833b86a98e0ede388fa29363159c9b1a294b0905b5128baf01db683672f230f5"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aaf305d6d40bd9632198c766fb64f0c1a83ca5b667f16c1e79e1661ab5060140"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:0852ddb76d85f127c135b6dd1f0bb88dbb9ee990d2cd9aa9e28526c93e794fba"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:91ec6fe47b5eb5a9968c79ad9ed78c342b1f97a091677ba0e012701add857829"}, - {file = "Pillow-9.5.0-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:cb841572862f629b99725ebaec3287fc6d275be9b14443ea746c1dd325053cbd"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-macosx_10_10_x86_64.whl", hash = "sha256:c380b27d041209b849ed246b111b7c166ba36d7933ec6e41175fd15ab9eb1572"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7c9af5a3b406a50e313467e3565fc99929717f780164fe6fbb7704edba0cebbe"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:5671583eab84af046a397d6d0ba25343c00cd50bce03787948e0fff01d4fd9b1"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:84a6f19ce086c1bf894644b43cd129702f781ba5751ca8572f08aa40ef0ab7b7"}, - {file = "Pillow-9.5.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:1e7723bd90ef94eda669a3c2c19d549874dd5badaeefabefd26053304abe5799"}, - {file = "Pillow-9.5.0.tar.gz", hash = "sha256:bf548479d336726d7a0eceb6e767e179fbde37833ae42794602631a070d630f1"}, -] - -[package.extras] -docs = ["furo", "olefile", "sphinx (>=2.4)", "sphinx-copybutton", "sphinx-inline-tabs", "sphinx-removed-in", "sphinxext-opengraph"] -tests = ["check-manifest", "coverage", "defusedxml", "markdown2", "olefile", "packaging", "pyroma", "pytest", "pytest-cov", "pytest-timeout"] - -[[package]] -name = "pillow-heif" -version = "0.10.1" -description = "Python interface for libheif library" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pillow_heif-0.10.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2e34110c906035f9902bb7dee964384e33b45c4545cee0fc4f78bd06b6cffbe0"}, - {file = "pillow_heif-0.10.1-cp310-cp310-macosx_12_0_arm64.whl", hash = "sha256:9d67655cde69eb76f7b5a3f3b3069998d43c9cd157a1e41997fe165a44614401"}, - {file = "pillow_heif-0.10.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dd3b2bfa20f3af072c1a1fedbdee441b71972969e09efc6b0f9789b540d51899"}, - {file = "pillow_heif-0.10.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:091e43a45b1ed155c65a3a99252ba5d1ea7ba9ba7e9880afa06997533abe4875"}, - {file = "pillow_heif-0.10.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd01437bca86e61b252a0e730c2181b3dd3bfb57367c0473a8dca6db53be5818"}, - {file = "pillow_heif-0.10.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:2229077a834182477cfb8f665c4c42ce9766d90d746d74c7ab6d48945c8a6992"}, - {file = "pillow_heif-0.10.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:f62617d91e6656535fde6ddb61f413c27e81f2d58eb38201b62982a05a729acd"}, - {file = "pillow_heif-0.10.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:f98a5c77626bfb1dfdc83939fe44eb11ab721edfd4ca516e8e9b8e3c0dcfbe13"}, - {file = "pillow_heif-0.10.1-cp310-cp310-win_amd64.whl", hash = "sha256:2c791917a9e286f3d692f5c162dedf07e65ebab18c4df7ad7a5a109d395aaca9"}, - {file = "pillow_heif-0.10.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b21d19372d9a1cc22a6e639cc929bc3abae7f701ee7c8b66bad5302f36977eef"}, - {file = "pillow_heif-0.10.1-cp311-cp311-macosx_12_0_arm64.whl", hash = "sha256:c57bbb1a1aabb88efa72ba24300a3df733826ed8892d5bbcc8317b4262e95a03"}, - {file = "pillow_heif-0.10.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4d4b04bf35280f7d895ba783c4b7f7e3d0f139c99fd736e1831d2cfe06a41c10"}, - {file = "pillow_heif-0.10.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:a2722a220d898cbcd1e3d6bcb669a28cfcb240d05f41bcd57d4b78af991b32cc"}, - {file = "pillow_heif-0.10.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:bae92c3e9b348e367122b140fd7a744bdb087c551ac00efc2b486a410569d00f"}, - {file = "pillow_heif-0.10.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:400b25a1110ef5dfe394255646bae5318779d2ec4c787792bd5ba72956df628f"}, - {file = "pillow_heif-0.10.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:16db680b312ea684b3b88a3f97b3b122df48e12a057351c3ed1f435dd0a634d2"}, - {file = "pillow_heif-0.10.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:db7363f190faeda67b15cf774fddf6c658a5681abb8b9860dcbc47cc85d668f8"}, - {file = "pillow_heif-0.10.1-cp311-cp311-win_amd64.whl", hash = "sha256:7b84073e2997f34062751e8dd0a644e3e8f6fd952265edfe7ee021531a939018"}, - {file = "pillow_heif-0.10.1-cp37-cp37m-macosx_10_9_x86_64.whl", hash = "sha256:ef1c87acea720edf784fa3da77d3292f288de1c9f40e9808f4c6837dd167afc3"}, - {file = "pillow_heif-0.10.1-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:dae1ca05c818abc31bbc259a17554c3dd9faca4d79618f06f0cc2439320c4f58"}, - {file = "pillow_heif-0.10.1-cp37-cp37m-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3dece6099058422ab7a66b713e9fc3ea4e21946a95442c276956825602a0782c"}, - {file = "pillow_heif-0.10.1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8173d2843207a1c3265e382e7dcb02d8d5f882b5cd8ab9a1701c5bf47639ae22"}, - {file = "pillow_heif-0.10.1-cp37-cp37m-win_amd64.whl", hash = "sha256:0ed8652a520a46aa936b816bb3fcd445aba5ae6678f444927dcd6e7f831e02db"}, - {file = "pillow_heif-0.10.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:da5c734c9510ccb05f42199bedb6b0f126f9e8447e3bde3ad03f3882817ad08c"}, - {file = "pillow_heif-0.10.1-cp38-cp38-macosx_12_0_arm64.whl", hash = "sha256:27c1b4e388fde47f690a0b8e4299a8da57329a35e1924444028865e0efd20430"}, - {file = "pillow_heif-0.10.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:05406e07d6640e122729e249ad6a2bf28c1aabe0dde0a71217ad54c36854e0e9"}, - {file = "pillow_heif-0.10.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:ffa99da11b0328dc483976d5c4e62cccc75903e0bcc861e3d9fbce2752f0dff5"}, - {file = "pillow_heif-0.10.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dd6f4f01006dfa5cfefd1e960763e2f3bd829e0c6e6d8202462fc3f7d0b91dfd"}, - {file = "pillow_heif-0.10.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:ea6cf2255179bb667b75b834845083f23959fc3873c444a15f54cad415e501dd"}, - {file = "pillow_heif-0.10.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:bc12fc70de7f59a313678255b9abc7acd4915032cdbdb887a402f1e6c632e95d"}, - {file = "pillow_heif-0.10.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:50cbb535e9b776bd327d7344e22bec1f7457ae587487189a136339cf90952a99"}, - {file = "pillow_heif-0.10.1-cp38-cp38-win_amd64.whl", hash = "sha256:82143407c590122e1d36bf674d7d589d20ed76fac243a65d1704e6b0fbc14dde"}, - {file = "pillow_heif-0.10.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:4bf6abce62e934e33dbd5cf8528c76c746397116a87128b913278554eb840c3b"}, - {file = "pillow_heif-0.10.1-cp39-cp39-macosx_12_0_arm64.whl", hash = "sha256:5909585d1878dfe214a7bc6ae502ce6e1ee99cab88dd0669714c2d524f8509da"}, - {file = "pillow_heif-0.10.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:95c0e83ef5237b18ae5e4adc5e5c9261b23c13704abedf1bbb46cc44d086312a"}, - {file = "pillow_heif-0.10.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:158dc0eabaadb13240d2bc14ce11047a661a4748e56423a5346c4ffa9831e0e3"}, - {file = "pillow_heif-0.10.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:856a4f46a689bc037c0e51b8ceae1e7944907a2c8a3767dd4d72c9f781ed82b7"}, - {file = "pillow_heif-0.10.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:41a75fbf044db03d3e5d64c8288b7ea3ba4b9575ff1078f1df814936f15d11b7"}, - {file = "pillow_heif-0.10.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:e9745aab7ed2bb0e53548e1e2c906721b0bc76adedeb17e661ec9ccbd8b698fd"}, - {file = "pillow_heif-0.10.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:5ade9dbfbc5653fcf345fd8db75fb4fec603b521b1a832f091a809258d2232b5"}, - {file = "pillow_heif-0.10.1-cp39-cp39-win_amd64.whl", hash = "sha256:41610fae8e2494f605b7b5c2508f6c2688227a7cd3f2c71e1fff966fd9476297"}, - {file = "pillow_heif-0.10.1-pp38-pypy38_pp73-macosx_10_9_x86_64.whl", hash = "sha256:a49c5671f74d8d58e4a0d507a3cdbd37c28693f5ad50b5bed5983a2b693e572a"}, - {file = "pillow_heif-0.10.1-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:de3a2929e509a93981866fb9ec2f313ee349312009ca50ed1ca999c4039c31e1"}, - {file = "pillow_heif-0.10.1-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b1e50cab15f2531ea5bdda9b15e5f2d05bf023b607e4322bc600dd18e3783757"}, - {file = "pillow_heif-0.10.1-pp38-pypy38_pp73-win_amd64.whl", hash = "sha256:dc143d3f61b7a7d28f4200be9cdcf0149b5da44511d8faacb4778a9dc264e900"}, - {file = "pillow_heif-0.10.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:c57dc8496e59d4d9b8f79e66be148e5c898704b7bbd65531d69352bce2e820f0"}, - {file = "pillow_heif-0.10.1-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:37dd748836c8d5d82ef5395cd8aee523dba5bc0c6a77353baacf7868de41eec3"}, - {file = "pillow_heif-0.10.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:28a3872f66d55d74ea4c18f1460ccba1bae20874100331b58dae6bbc240c63a5"}, - {file = "pillow_heif-0.10.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:9c6880056df5898cada6f65b5dc6ba8259da1b570491c18da867420f32314512"}, - {file = "pillow_heif-0.10.1.tar.gz", hash = "sha256:af9bd9d8fc189451edb193f321214207bf890d0ac80ac697056def39fec7565d"}, -] - -[package.dependencies] -pillow = ">=8.4.0" - -[package.extras] -dev = ["coverage", "defusedxml", "numpy", "opencv-python (==4.7.0.72)", "packaging", "pre-commit", "pylint", "pympler", "pytest"] -docs = ["sphinx (>=4.4)", "sphinx-issues (>=3.0.1)", "sphinx-rtd-theme (>=1.0)"] -tests = ["defusedxml", "numpy", "packaging", "pympler", "pytest"] -tests-min = ["defusedxml", "packaging", "pytest"] - -[[package]] -name = "pyqt5" -version = "5.15.10" -description = "Python bindings for the Qt cross platform application toolkit" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "PyQt5-5.15.10-cp37-abi3-macosx_10_13_x86_64.whl", hash = "sha256:93288d62ebd47b1933d80c27f5d43c7c435307b84d480af689cef2474e87e4c8"}, - {file = "PyQt5-5.15.10-cp37-abi3-macosx_11_0_arm64.whl", hash = "sha256:862cea3be95b4b0a2b9678003b3a18edf7bd5eafd673860f58820f246d4bf616"}, - {file = "PyQt5-5.15.10-cp37-abi3-manylinux_2_17_x86_64.whl", hash = "sha256:b89478d16d4118664ff58ed609e0a804d002703c9420118de7e4e70fa1cb5486"}, - {file = "PyQt5-5.15.10-cp37-abi3-win32.whl", hash = "sha256:ff99b4f91aa8eb60510d5889faad07116d3340041916e46c07d519f7cad344e1"}, - {file = "PyQt5-5.15.10-cp37-abi3-win_amd64.whl", hash = "sha256:501355f327e9a2c38db0428e1a236d25ebcb99304cd6e668c05d1188d514adec"}, - {file = "PyQt5-5.15.10.tar.gz", hash = "sha256:d46b7804b1b10a4ff91753f8113e5b5580d2b4462f3226288e2d84497334898a"}, -] - -[package.dependencies] -PyQt5-Qt5 = ">=5.15.2" -PyQt5-sip = ">=12.13,<13" - -[[package]] -name = "pyqt5-qt5" -version = "5.15.11" -description = "The subset of a Qt installation needed by PyQt5." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "PyQt5_Qt5-5.15.11-1-py3-none-macosx_11_0_arm64.whl", hash = "sha256:9bb0d816de8c003ce41881e39fe5d64c2cdf5e8ca96b6c016c34f8e0bdc30768"}, - {file = "PyQt5_Qt5-5.15.11-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:109c418d221538751e4d7755a81c978ee31abbd65facb3f1f361dca74a1b758a"}, - {file = "PyQt5_Qt5-5.15.11-py3-none-macosx_11_0_arm64.whl", hash = "sha256:3cccb21942eb49d21fb0193f28e3e8ae3d35395f158e8a9d4d58e23efa3a2ea7"}, -] - -[[package]] -name = "pyqt5-sip" -version = "12.13.0" -description = "The sip module support for PyQt5" -category = "main" -optional = false -python-versions = ">=3.7" -files = [ - {file = "PyQt5_sip-12.13.0-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:a7e3623b2c743753625c4650ec7696362a37fb36433b61824cf257f6d3d43cca"}, - {file = "PyQt5_sip-12.13.0-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:6e4ac714252370ca037c7d609da92388057165edd4f94e63354f6d65c3ed9d53"}, - {file = "PyQt5_sip-12.13.0-cp310-cp310-win32.whl", hash = "sha256:d5032da3fff62da055104926ffe76fd6044c1221f8ad35bb60804bcb422fe866"}, - {file = "PyQt5_sip-12.13.0-cp310-cp310-win_amd64.whl", hash = "sha256:9a8cdd6cb66adcbe5c941723ed1544eba05cf19b6c961851b58ccdae1c894afb"}, - {file = "PyQt5_sip-12.13.0-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:0f85fb633a522f04e48008de49dce1ff1d947011b48885b8428838973fbca412"}, - {file = "PyQt5_sip-12.13.0-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ec60162e034c42fb99859206d62b83b74f987d58937b3a82bdc07b5c3d190dec"}, - {file = "PyQt5_sip-12.13.0-cp311-cp311-win32.whl", hash = "sha256:205cd449d08a2b024a468fb6100cd7ed03e946b4f49706f508944006f955ae1a"}, - {file = "PyQt5_sip-12.13.0-cp311-cp311-win_amd64.whl", hash = "sha256:1c8371682f77852256f1f2d38c41e2e684029f43330f0635870895ab01c02f6c"}, - {file = "PyQt5_sip-12.13.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:7fe3375b508c5bc657d73b9896bba8a768791f1f426c68053311b046bcebdddf"}, - {file = "PyQt5_sip-12.13.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:773731b1b5ab1a7cf5621249f2379c95e3d2905e9bd96ff3611b119586daa876"}, - {file = "PyQt5_sip-12.13.0-cp312-cp312-win32.whl", hash = "sha256:fb4a5271fa3f6bc2feb303269a837a95a6d8dd16be553aa40e530de7fb81bfdf"}, - {file = "PyQt5_sip-12.13.0-cp312-cp312-win_amd64.whl", hash = "sha256:3a4498f3b1b15f43f5d12963accdce0fd652b0bcaae6baf8008663365827444c"}, - {file = "PyQt5_sip-12.13.0-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:9b984c2620a7a7eaf049221b09ae50a345317add2624c706c7d2e9e6632a9587"}, - {file = "PyQt5_sip-12.13.0-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:3188a06956aef86f604fb0d14421a110fad70d2a9e943dbacbfc3303f651dade"}, - {file = "PyQt5_sip-12.13.0-cp38-cp38-win32.whl", hash = "sha256:108a15f603e1886988c4b0d9d41cb74c9f9815bf05cefc843d559e8c298a10ce"}, - {file = "PyQt5_sip-12.13.0-cp38-cp38-win_amd64.whl", hash = "sha256:db228cd737f5cbfc66a3c3e50042140cb80b30b52edc5756dbbaa2346ec73137"}, - {file = "PyQt5_sip-12.13.0-cp39-cp39-macosx_10_9_universal2.whl", hash = "sha256:5338773bbaedaa4f16a73c142fb23cc18c327be6c338813af70260b756c7bc92"}, - {file = "PyQt5_sip-12.13.0-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:29fa9cc964517c9fc3f94f072b9a2aeef4e7a2eda1879cb835d9e06971161cdf"}, - {file = "PyQt5_sip-12.13.0-cp39-cp39-win32.whl", hash = "sha256:96414c93f3d33963887cf562d50d88b955121fbfd73f937c8eca46643e77bf61"}, - {file = "PyQt5_sip-12.13.0-cp39-cp39-win_amd64.whl", hash = "sha256:bbc7cd498bf19e0862097be1ad2243e824dea56726f00c11cff1b547c2d31d01"}, - {file = "PyQt5_sip-12.13.0.tar.gz", hash = "sha256:7f321daf84b9c9dbca61b80e1ef37bdaffc0e93312edae2cd7da25b953971d91"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.11" -content-hash = "456f70d5e3c7c0f5723ee808787d2768126911c9bf54baf91dc5822e68256ca5" diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 358fcbf..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,18 +0,0 @@ -[tool.poetry] -name = "heic-to-jpg" -version = "0.1.0" -description = "converting heic files is tiring using the internet, so i made one myself" -authors = ["louispawaon "] -readme = "README.md" -packages = [{include = "heic_to_jpg"}] - -[tool.poetry.dependencies] -python = "^3.11" -pillow = "^9.5.0" -pillow-heif = "^0.10.1" -pyqt5 = "^5.15.9" - - -[build-system] -requires = ["poetry-core"] -build-backend = "poetry.core.masonry.api" From 9a08bf801e701946e5f29a7c1e70c52ca008fde4 Mon Sep 17 00:00:00 2001 From: louispawaon Date: Tue, 9 Jul 2024 13:53:48 +0800 Subject: [PATCH 2/6] refactor: entire heic converter refactor - better gui - added feature for converting to multiple image files - updated requirements.txt --- converter.py | 57 --------------- requirements.txt | Bin 722 -> 242 bytes src/converter.py | 182 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 182 insertions(+), 57 deletions(-) delete mode 100644 converter.py create mode 100644 src/converter.py diff --git a/converter.py b/converter.py deleted file mode 100644 index ce16eaa..0000000 --- a/converter.py +++ /dev/null @@ -1,57 +0,0 @@ -import os -from PIL import Image -import pillow_heif -from PyQt5.QtWidgets import QApplication, QFileDialog, QMessageBox - - -def convert_to_jpg(input_path, output_path): - for filename in os.listdir(input_path): - if filename.lower().endswith((".heic", ".heif")): - filepath = os.path.join(input_path, filename) - heif_file = pillow_heif.read_heif(filepath) - image = Image.frombytes( - heif_file.mode, - heif_file.size, - heif_file.data, - "raw", - ) - output_path_new = os.path.join( - output_path, os.path.splitext(filename)[0] + ".jpg" - ) - image.save(output_path_new) - - -def choose_folder(): - input_path = QFileDialog.getExistingDirectory(None, "Choose a Folder") - return input_path - - -def main(): - input_path = choose_folder() - if input_path: - output_path = os.path.join(os.path.dirname(input_path), "converted_jpgs") - os.makedirs(output_path, exist_ok=True) - try: - convert_to_jpg(input_path, output_path) - message_box = QMessageBox() - message_box.setWindowTitle("Success") - message_box.setText("Conversion complete.") - message_box.setIcon(QMessageBox.Information) - message_box.exec_() - except Exception as e: - message_box = QMessageBox() - message_box.setWindowTitle("Error") - message_box.setText(f"An error occurred: {e}") - message_box.setIcon(QMessageBox.Warning) - message_box.exec_() - else: - message_box = QMessageBox() - message_box.setWindowTitle("Error") - message_box.setText("No folder selected.") - message_box.setIcon(QMessageBox.Warning) - message_box.exec_() - - -if __name__ == "__main__": - app = QApplication([]) - main() diff --git a/requirements.txt b/requirements.txt index 4d4525c4cfc41df77c2c0e3afc8d91d8652c97d0..ea28189ab072e78de3793b641d7d3239e082bac5 100644 GIT binary patch literal 242 zcmezWFMuJFAqNQa8Oj-KfzXmckHHj(4H$SCxEKnMWOW%b7*c`!G_X1Ypc+GlBjXnhqCR20OTD_$Pu?O6lPtSKzRar&oH(m$ z8m1iCt3ObwGG_RXI+i#BEf4L~T-fl`?v1DaZH#;pV!T?)nxb6xr)Ape3@Kh zMtW(WGL}-aBF@v3v|RP;Lh1CU@feGbnu|SkHUp8RAH-9MCXY 0 + ) + + def start_conversion(self): + output_format = self.format_combo.currentText() + self.conversion_thread = ConversionThread( + self.input_path.text(), self.output_path.text(), output_format + ) + self.conversion_thread.progress.connect(self.update_progress) + self.conversion_thread.finished.connect(self.conversion_finished) + self.conversion_thread.error.connect(self.conversion_error) + + self.convert_button.setEnabled(False) + self.progress_bar.setValue(0) + self.conversion_thread.start() + + def update_progress(self, value): + self.progress_bar.setValue(value) + + def conversion_finished(self): + QMessageBox.information(self, "Success", "Conversion completed successfully!") + self.convert_button.setEnabled(True) + + def conversion_error(self, error_message): + QMessageBox.warning(self, "Error", f"An error occurred: {error_message}") + self.convert_button.setEnabled(True) + + +if __name__ == "__main__": + app = QApplication(sys.argv) + window = MainWindow() + window.show() + sys.exit(app.exec()) From f321a7193afec0eab75a86ac6fe35935c200057b Mon Sep 17 00:00:00 2001 From: louispawaon Date: Tue, 9 Jul 2024 14:48:36 +0800 Subject: [PATCH 3/6] feat: new icon --- src/assets/icon.ico | Bin 0 -> 175587 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 src/assets/icon.ico diff --git a/src/assets/icon.ico b/src/assets/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..08f6c537337a7a808fb1dfa177b6b1996b8ea819 GIT binary patch literal 175587 zcmeEv1zc81_y0U}gNTS=H#TF|^pss}qBA9ebha#Y)f`r8V zf6ow$zPhXXzQ6a~-TyovhWkAC&Yd~ud(NCWGk5MB#$-&D>F6*VYqFUNj2&W(85k7* z-lED_5zf`DS^WDv@@>*$tVN5G-}M-4R)ewb-HU%W?8#V2Z^rucDY<_*?%%|inORBx z1GqneF>C9R{3eaL-p@$!`R5Ba;zbKqbi&!K92)qprfLCapJ$lzkeHnSi9-$ zjq_gi>Y^1pi_-k&>oMPXI!M~g&q|m1%vR^;{N`8W=Y8gAFiO62wV1DE1r~jLY=eZG z8~VoDO>26!0+Zo>b=+k)Yo&LrGpiF~ty*ETr_8V(@uN+e61w?LYM`^|l3t4+qa-f!;j*^=yL zBfWJ!c=F*7Oa=GN#r2^$4)$MUFc`-{zVoz3;J66)&cL-PIL`H%rMd^_ehAyqtx3dz zfg8hi_3D`Y${#%GXroRgpIIu*Z-GAeS7pz}Fn%8QYT~*A>eax#I>;v_c20Ib?w0O%%`55d&a3{5s#G2ZqG01&qA%+L+g=Cd z*F%|2gVq@Lf!*(q^J{Q#WAt4e@VzbSs!e%Nek1f<_3_&X_cildP^k*~(E*teZn^0` z4$}J<_v3=C8&{KHnEV%39sxS+K*xH}xdHd>2;JT#68*$++0F>Y^iSz-QJa-Uyk3eE-(B< z4Pz41Sm4UKEOc9EMtwEW0xVFM5(`{j3*|K6K2E@rs%83KzQ6vYF!4hm@DE0SY}xN6 z`B*qtU;DIYO!*J)CqJwvQgj^huMoQ9a#9@J}h)=NBDbP;1AYiFE+KoSVe*R zkmSz=uWOF;b(qIwUcVgqmLcm~@O*Thd_efECHdiN!WX1*1D$)Zr9GbuB3}{X5-s?Y zGcoVAGTL_B3d|iXhhJXkW!*3PpD?O(%ng1d~nYV?K41TwqqZX3`|7!4c zXT!fVAo_rTe87@w%Fdk_(Tn_5WWY&=`Z1SQiGRnKi2PDH+#~at$f~70ITfCl5+mg# zg-P(ErSLsJj*31$hWck2eAUqym+XVzJ`R5J&nWK)9}DG4sACEExQM!^!;f~rIO8Pd z^nOCQ7Vy*eW4vLC{1cJ?N7O$7^-n?leQ<6NXzz$JSHm~2i2AE$_+JlA_jQ!sxa^lc z#Ca7)9vU(-_Vg6)9{`6o@cH+k9y{+@%KI=zumXlhf!)!Fef=^qPB@O=XE2UhiZTxb zEUo?n^4jD37SweJ`RAkl1E}8y<031ZTLJv$gT8t1g69n^LmdQR%}=U)28- z>YvQ(N8MY%&pC`Ox}uzwp#3s_uLS=iQ07Hkw?LURr)Upa=A&LaoZAmxO;C>=@?S^3 zg`jBz&hN#!2l#y#zt3XKRoQbgtNO-eU+CM1N2J6%TclJE`y%Mx$f%y(E#z|@@lg6Js z0q3%@OzC;hK;s-0o_~>nGU(OC7);)+4|`M_^Uf0j5}<3wws zX#VlVrndaq!=EkdOZQx=D#||~ zbZe(;5&QZ&Vvf8tUBmqKAj zZ23O)fmHAzji>yqR4G66trYLLJQ{1&j7sT$I*QSnqxP7q-j8|f6L^L(2G1X~fxkKM zuMhkOdrg;_Vs5`9o&g*}S_It8yv-E`;8{Tg^6tYkfR%W5qzk!@!S`d}>kz)T!#-TF2KJn%9$9txjn7PYK89`G4F3m^y9e{&B@Qpjt`JNrpHTZ zUYDeIA@`)Bf_y3Q_NItOgNx};y1RqjZ^tO_7|^vGb#DR>VJN!`==TQw{XoAB=%8mh zwox`CC9Fl0fbC<{HxzjiQ1=ed7z+NTV$OdNaG>>Um%-bwICj9b;E;{2u+C1?1@zAZ z{g*-i64YUiGVX<}YfjG|Y*Ftcto`cj+_9AYCiAji2TAm-De?AZDc)h3l%JLI3H|TG zTo~5c;rXAbI-Vm8pyxCwGY**c0KT4hHqjq^9f8j5gnmx~9U*7~DX7mKX&CbQ;kOa) z!&*3%6`|X@R03U-asDyR-31;U@I5Hlx=Aa1zXv%I{TD$0BIKKaYq#+XO$p`yg5xUE zi8Is|IR3@-<9V5cHYvqlSq%D9KcPPw>&NMN2FeY2unvH;Y5T4Ur#d$wq zxh!NuOVXb;(EU50pyWl%`*7yYa^O0mxraw_fM>5iX zl(7c#dkh)$1~%QjXQ^mIN5(=9=AgwI=WF13QZwiVJy+WR-EM~VTMarf9nYT@gD&WJ z%Zj*0m>-57_W%x*r#a~(%G~HXM{^PG(*rKE{1;Rn2CR1E$?WM!`mN5d(Rq>|*(Q2U3z~=HdEGtG=8ScbV?lpIl<9=$&ovRXvaE`Ej@3X2_pm|D_B|d6Zm>hk|os%+s5gqzL4&t z1ig^C4`3=zO_`c=d!|O~l&OCzz5cEA{V(#B()hLG|AHn_r$9g;AP^7;2m}NI0s(=5 zKtLcM5csDdfUz|VuW5|^mpHO+61{@;AN+L7;DvQ7=FfUf@sa-j75JugTHTSXk;>L- z;e>df41kD_KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0{^E7 zV2vkVhlzEfd{0ZPm1nd*^1t=@+S6oqdl|ep63%-1*{>zj&;J3*atSO ze8QUDFuV&A1v=MrI!pNH>wB?BDqky$_c5M~C|(1NHRLS%*qE|+G|KZ&dw@6VW>w&#-0~{GSB>p?HTy7wgjb{Zt>l(?NM@eKj4izL_~;pCxK9-^2fN+>7=3 zs84~v$5Nhu_x?-|Yo7!2(q2gg*%?Ubza4YlOPLYw680%N{yG1&b{gx3^+3~Dto7cA zwcs1DKD$ritxfV+S8oXUj|cxXA^(ctX)NSlA6Qnvn)tcEb0O`Ui#%hnX1yZ#IgYjd zk*H?|aIi+1EwAh2y^=MJnu6~6Si`)P*2!ZHbA4KGkMf&=|1pq1)@s*o0DT(^S?Zyj z_E=Lt3^=Ml{;g2{DBPz>?tfe+hE1!PheV#~xUG4K?^7-s3^vQ^-CHd?urw-grL>?_Vfpg8$**zZK4B zfWB$q-2(hc*t@C-Z6FnNr(lmX6VQDGWfWj7zYoeuMgFIFr=uo#vj@%5IQIzcG!^%{ zV6D0~@-M~tx8T1X@=QlLRDK(rKLGy1!9Tsnu@N-Hga2CCBTO0caX`KgSlj;q{MYyw z{_{Raxo@LN-W3>+_f3`pi#!Q&0se*mx2}izo>zEJqAu3ww}?48Q4Q_BFZ3%5^{qy| z#D7*f{@+1n(?QcF$Xj|J<|@6qv_QhSRIHnC3A$~-V`9j9lNR_r5BKKa9f$!~uiqN) z1y#ddbDE(00NTqtlu7SJECK(?Xn&>rzboPYAo!0c$Ny{8S<`opMg{O51biKFzdo>) z|5yIAr4O;5(#!L6_`Y(8=^z#6W`0rriMKYgl&7cJt=jxutu`ok8)W8#Iwa6<4jg*m zJ%JC<<59#DczcKTKOK8(x5T?BF0cbpkb4UFOv8IB#6RA7QVRo~+TeQ-?$3eF{uJ-9 zL=kw6fsWasytk<172c(&P5hId;Cp?vxv8iZ_{!QMk^CcIgAj9~686$ojK{k!)nMZ^ z@a|3^XghtU5#H~j{Q^tY`IqT`9`Wx5`A?G4ye~_T=~wy39@!=PoYigyy^R8G1)wbk zSRY2Yl|WB#(2|e$I2`@3A2+V&;rj&eXM{FA98N7~^38&N#3S!hv>`LRTVX)^CgL3XjsGmXEB2b+Z^z& zR{`0Xq3&FiKOb$;2z!XDT{on61m!zGh8}oNbFJgRVRWe}Om`1-z{B zZipi2UJJTBuqUBAt|j67*63rSN#}1u&SAi!8?e*G{^ZKkkAVMWz~K0y8i@O%pO zYoMGJ`0g06*r-1+e+mBbaepv$%^%-$abE`X>N)zjmY?$f6YO6mf4_|Sfznh6n?Uc- zeQy6~zeDI3+0A=xjB} zxGC9Vy#Gaes#AZ4y#g!h;#wuV-_sE7UKOwPkWWEvJ{dG`ruGk9*1x{9UIspvqs|oA z-*#vp^t)+xt*Gd_Ix9Gj2Px?Q4Z;js1!8PQ$m2O^JO$ni zapZk1?XgMz5Nr-x3x1-GjmCRQE%`gCwD({5u3qqkIRAXFKYEvs_A;csJfY9@ZeKl= zcM>x8fbKp5AM>8#9W3yVeJj;`@a}3|x}V-ndW`o_!T(0^>l%4r5cV>xL3{Q;gB$`u z<2dj?5M_2b4?3v*m-3HyskCv=anR_FeCg0L3GY5hcrQwVe#Juf9-{sQ<@>*+dpr4i zRP;VAePH7>@D8PB!p-#xx3R71ZhrR9|3i!d_5^+r+B-vgRKUKBTJ(-1XuzJJ3dFxQ z_^$^36<=&@!+oL0c>fIiR|GFcz*Sxi)dyKOt_1z81)Hh`{<#lCe8l}Sn-fRvAMH@~ zd>m83drp<0lkTstua;0h;sDH)P{%gB!=-|EW0mk)W?BDFH;2F^)GtN6+8i#(UI^VqyL-KIPxT{GRXsSG4{W@u8TS zcu$?jYNmJdDc0wwsVDZU>4G?>6&T)m|37`Fw;VpY(4Urgx4zQ#W z5r>rT3x>TVnC~Kew9Vq!a(+-CdAH7cC(QX3poP&F&UP} z=MCQX#~v%3ckF9JdrMTtJ|9NdLqYcpU?e)hs{-&*1wQh?M~3}SR8R)3D55>B3h+^)a)5~<)dhUyXdelD$DRgL6>zUA_KHw0 zkI!D4&t`6aY{e#pUfKN5x(**e31U`s+ ztz?L6mr(XflpzB?b5Q6^L@v@gio^DQ6485I<5n;8OuSzW~i{z@-7`r+wU{teEH6*TVw)PRa7H z7lvsuK5|9S>s8=~Y}!filMUH+i9Y_b5$aQGg1TUzx?tatG}Lz=dugfS{?ouG75Fp& zKAlm1F6!C@zG*L`x4`E@2|fo4GrQ)LqD2ljl? z3PJmN1m3lvlQn;c2^p#9CJ*w$zRyQxg%=>{z2V0(t5 zKRt~-Mk2tsgzG1h?rv8=9*Vb~4&5|H-5v2g7j@T-*MZR(=o0qZQgwkZp@zKyJHYmuLO;5~#$3Z5EFZA9 zN_*flitfSryRbI{fw>=eO`XVZMY<%9GPl#Qp&i^p)?m zM*G@*4WF13eU6%8 zZ$>qW+a9p04(;!Bn)CqW2jZR&;6D*^>VYHdpe!6ZYXdwdB3}-8CwrHUJ}`;$;_!xW*pQ3_%=u8$*gbjVZW}ji77}^8*Fg-y-4s^&4y4x0eHH|<$6CoP~=z>1# zZy&O*c^%jf+G}YL_|l;LdZ5qM(a#Nq?wBF(PxxI4-w9Ja;MgAhQaxZa06H@S{iGI1 zfi10glJ>7cJrhw@2c%i3tEKle+M`Bx26(5SoIb#4B(Uicd2o;%>es=wDJbhlw9U$p z!)4R~J=d^A8*YbdC{qb~XJCcz2XwI9kFi@bwiH);l9??vjx6&S|XnU-v;3G?RKgQ3YFXDTHq3`CuQy!lH2aKVe^WWf=k9X4ju5temIwa$L zfmOv(ko6eg)dhXNM)-Q{dpAQi1o$igE&AlcM;sW$eP`f9dvPuXJ|jp6;VWxF@6c~3 zYy`h!P@XdKs6t-w7ma!S^pEThWKGAO*!#^KV~wNO$F=b7g9F?rdHKs6vVpD`cUi#3 zk3k)3bWiyY?RoY1C&p-u06ph6hmN#Q8uszx_>|B8XTKAkw8t#=H{@kQ4%ib`gQ0zJ z{~db=a@_+ye1BQOhd!X6C(zEv7dAK-vcZIbU*-v$PC5pRINhYrpX1{>wHPPbhYa8Q zgU<}u-47T)WuZ^cg-zXoJ{cGm?>F^1K19RoYpd9Y7!Sy6ARiM&pBTrI?(V?&YAm}z z8U8~blKrbo3t7CwGRUJDZ=dm37IQrd-e~eo_6r)eED1Ysrj>FgZE04kNegE41;=DjW zARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5D5IU z5x{zg;t$v?{VIv?-;GH|4ctPig3UU={GBeAeB?{N;P_woj^*^l)yP|SlVX`QuTtK% zo0P$Z)D*_4Dr~XL%m+y%?)+!GZQ6H6vV+%Jw0}rlb|I(3_I@2m}NI z0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVX zAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jAn?ydfZ_nq z-q47xz>nDLp6{1WF{=I!pWoZp`dhF4FZmSs|1Z%;oQB`@pJJGGg8nx{JRpU?nf@z- z_A!Vvu>kQy<|9_X?v4oB3{kvv8TVl(g<9B=OLVHt?6 z@hzX!XLbznQg{pxiUomKPAuWqHHhzVx;*}~K+6Z<{{Z;w#Mq8!6l>xwVx=YB*~-#9 z&ojg}Vug7hcpL`A8sYIOUR_?qTzfKB@IK{RNcoTFA^Z@(LI?Kq`HRhM5o4&Igjhdc zPq-eswIjv<2*!N|U&BAm`w|-gY7wu9g&-Ch#ebrh8;C!`UTkd5;}25oKA$;ih(94$ z92bV-f*_7e*!Hf#RlO`W1jXV&>?4ZrLNUpB{0fR6L$N#f5ivGE|9sFwv2Z+J+RxIV z_;=J7fL6rTs0R6uD6Vr$`{I~2h|R&{&LBPrVwNG^4dMu*4zUN0qF^mvv zh0|DqRaswySUx=NNZh%ZJjMy92eE7rFOR+0(2Daxu}MhQbT48p@%+)pMspn`VbXcT z!O%eru4fs6x1^$iJRUoZ;-`Hn73JqinGx<1>JCDT!mr|Akn@f`=uR;Ohp8bhOjE=z z8ibfGLlA#uAmSL-rMLOR5swjZhY%l5t~z4EG(;ZV68zPHe?8Dv2T7S?setB6;G-{M z8Vy3+&Fa8iAN)4NvC6Zty#Fo5|2eR(3t5>WR?h%nXn=AV;t!GD%j4dvh~3s3u~mj3 zM$Qn#+36T%Gg6J(6^{>Op+vD{>H+_{xL3IZf7B({5a$gk?h53jgYON1K~2Pckq7=1 z+pj98XRf9m;r|56M={x=ZAPi#SeNIYU#SlAD}5P%?Pu>pUCOpM_`NS5Vm&EF(C^}p z_*cYpWyEbl>>|}f#DggSeT9e_^bvaZ0+>ud9Wulx(g1Icz&{D+W|!cPxMb>)pxF;` zQW_wx9^&>G*h4pSfYC?9w|RhkjwtU9@ZS$e2oo#hmmsS+;O>I*a(P|I2f0-_jyz}! z(gb4aB9Jct_%|-We?4e?i}S~TzYKMa$M*!_ ze;0UG1pdmv{})crT+PLVKjK?b3@L5s`~lSW5_}}$yFc>R|0@13oPUG8s7R8E3d<$@ zF8NSQt3SjaG2##>t`YPw5%s@@uHD0tVpT>EPH1nTz@rv;A^e{JFT?_Eyu1YeAAx@! z@+BiRLJXn4xSkE%CCF8Zv$w$g+J(FvOPyZ;Z5jTMGsTh$#r3-+FO)5T25XQm2VFk} zymKHkZ|H;wJy0%Ul4+#^f0GjY4^TNc?+E-67fivN>IVJ+ zz_SwYR{{Rcz+Xa{8wr2N6fuh$AO@#WHk}9kk-*;x`D_0n{=hxi-3DjLKVpWx3EkGIC;DhD*eZL%31vP; z{KpFDiv}b9Q9sz^N^hL^$Rp06E^xlhv0SKswzwQc!ap15Q-FVq68!g<;O|g^|4e?* z0)5iwQvC0i;J<YMiqR3P7>Pmzu=E{=84#K6{zop9hwdOCfy4{|8IcU zPrSbdT{2*60D1ODI|wYsvJ%B0g>5OrKN-H-pT@r=?$$V7_WVlWh__}$@uPu1^<`h^ ze?P+?I{()75ZCwA=k`+M;UV9JKgGBs-vf1NpdC(z-*N+(#sQCf!VS6+kAAQz^k1Fy zpY#j1do}qauoJz>PJni@xlIf5vgBc#roj(-hPEG#`=fCF9eAV|ouBAG;%@ptS1OXv zgm{LQ9Dj4gK*Xr4d{qm6$)>jLVCN6P{`sQ~W)eP>2eMlApc~mS!e90QwlWPow5B+r zuuX^~&Fzl^j%0tz>AzW}gj*ZP{@*Ln_4UukV_Y(a`)^~Zd|V4hoINA70mOYBiulQ$ zxNcH=!}SvX=U?$hyjgB@k{=!aZu}|c-iJ6J8TeX;wn*_x$$oNPVaH!X_ZGmfS3v)( z#qq~A=&l>|l6;rxz@z|eBniG_6Vglg5sjj4M%P2^*jm7~Ir!u49eIyXC}!B!cfO*)XQLHFh2Hu4+(uwm%84eNpSCsZ!l>0!`a5ACfc?pZ|j;94wvfNp4O zb%DRex8P5-i?HdSx751t!>3&K7D?7Eei~T2Chc;l0Iun3HK6GgUjmIdyp-UIUaJLzy{ID<0 zAE=T2u|*yq#5mjqY{_p)hpvS|FNdGOJ+H5>P=Vg>!?}21o`Jj>zH>CA(GE6Y>_l;! z34dzqK4=fuAgdF=BndK4My$XCkP+>$M)=!uIa})din!$3Zhg@HF@}46ZM7ogERX!9 z{?7+sp9XsNLLVYPPa1yTLVs0<%g9_|DC+VA{&u*pD(*W8tczpC&X6S_j~D!mr)Wbl zgg@xb1&@KC^BM5({)hN;l)wJ(Tkr>67_;^_0NsAXGxY74{{sD<7>f)6Mw?+17r;M} z15OklR~t0yg=}c0g7LRLaBU5rryhJ1IrstGR-&D&L!R|wH3ScSSI;1vj2i~)W`&s-c2fu1^K zvw?M~|C5aN+YDp9Og&`EW{wy;6CuUpiS5z3&UGQK|~tii7hz8j!?ZTv3w zQ>`k-pigTCxl{oDN?*l4>;VTo!~eRJ zrYqql1AnmpN+f^835VZR*pYRF^Ok_@RG!QUiV z^8TFs8j5XAu`p>)g2qhXlQ7{&x=yx_<~ssc)aLhv@9RUcs%eg)1#AKKB2ui*E)#hjjO@B;n_@c-BT*9`Lyb2Xo*K07PrzKxVXzXX4UV$&nl=SS!j z_xW-XUr3l&qwB%&Ex$VdKp4RHXXr=Bc29zST>)LUVGnKq-~9p0YxaVC_R$)B)) zd43-CRi*fot&0Qxw}5{|n#V#LXa-EK4@_z_W-oy0IMwMWIoE4U~`e`@+0(&`nCet(k$>#<983-SDEhr(#IcjP4F)<|1+H3 zMrhwx7c7-Qk1Ar!s#3dnIvVo<&~=}=d|39SBK~9Nzz2JMeKkvgjH$ikrNqi(9HxqK zp(^GH6`i5L)Gw9jKiRRGz`q9YS0el|j^wlyw^gqHTF6ry7#RUmdGN+Or(v$~@DPmo zj3}l!Y*tl0*Ivc`CGbZ~-ErLa|C}j~|8%B+V=K%n_k=C|0kUvIozi>QqxUcF^CQKl zhyHrwdLQH?8`%~~iSGZ}hvu5m&+&O;vLAj{6&S{H=uek(-6k7FedmAULv1ZLC6;YR zWfZ>}dc@}?Y3`Edv2WKa!=Kw3;Lqnjzk)x{1N=+IQ)3Xf`XrwpC;LY>3i{7^O!(FM zciAKS%BN>PGn$Wd0Cp1QZzPOc`H|+OVJDsOe1M)6d~(n4R`55uNV*OE;%$KV`yTwM zjiaAuH0Mb1)ZzF4Y5Y;QJkm7Ga~y`AA1q5#*kPQXgT!?n$1)lGO(6culgTlK9it=s zDE|C{#wFCIXkLco3Y*Wb|K*wa8xmMvr~l~t-;g~)vOqu}AP^7;2m}NI0s(=5KtLcM z5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI z0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{kaz6k-mlPo@eYXq!0_13H#j$i!F*0?f8 zo4;7Iu4Ov$SNUF((asr6ndkuru1tr%ccbsI_};CUFZ?L?9jr(hGWuWqDgV9noH+hH z5NHVDTayOJ=&vSy!$-y{sxzL7e~bSD0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO z0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0j zARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka z1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM5D*9m1Ox&C0fB%( z;NM5UXSOQywopP+W?nO7%xgMhfh%gW*H>4t7~66Geg%K=5{Tdbi}V*~yNo;`ec$Y z4f!91{5AeRlD|6mw(*+A0z9WM-|tRSnIGHR z#C+#zv#6sZSjy8g?CpaCEW_{GpVFX&U#-!HuVioT?_n>tv}b`U>#BKG!SDUVOEq`Ny`Qr@?x!UE}i=mW{uvcd+N82HZSd_ey4C|?Qq zC_(-T<>W7i`;_P!k|N~D(qT7%4Pl`HB0 zf0O_6+7FZNY}1N5JhYPkVngGw?Op38yV)oQF0aMQJd83(b~kG?_WJs2wb;{B>cD0g zLmtL2Hn(f|>e2$;OY)3G+m45BnnM06B!3y?uLyZ4LHR8eJyo1P+pv~ zhx}XOH?_Ai`3J3P@C0^zlHYv22Xr5FI|8!bjC-|1*0*5K#xU5c@il{1H=GCT9sCy> zghIZtUNhukedlS#;N1P-HI2<)U9{4OJTQpc7hJCZ`R|6@u0sB&A^-X%@>cnkDVOD)6Dc+7a?U0{I(~{3G`FM;d^>bEF#RACGhAQQsBh zbAbG9A^)1+CjX-E)`853?~^~Z|NQrFR6@6PvPYYiz~dJaaE}k$*<;Yt(XjtBGC8sR>3HIsNb7RtGh ze}A&a<>eo+w0Z_~CA~ads51}e*1W#HM)7I|-u{=OtfKOH%6~`O%Yyzc&P#tS4;w=5 z-w^V6LA0R0caVRF68URD{?3p!VL&{LD3O0Joa6lwy^mA5#*mp0vF6#V@^BE=Oao!>SbjaW2uO$Dxlo-{}tsQTG)*|?PVX)6PeP*d{fgP|# z8+wUxh(tVqw+nH<%u>ZUlK(=&xJ3Ro<=X#9$UnCP|2xmeG1Z8DeVal)afB1vw}k#g zO80S)fIGjRmt&!v1^M>_o}b8{%17Ie1uaKlo1S@_D{wi(H+cpsRbp$6nkQ2wg3t@^Q{TY*(-9)PI-AKd?mpsi32MIr-l$kr(kWyhQ#zaqbDEgu`Dvq3C>-E{Of+N{Bz$#NC`LA zN%4-$%cW%;N2#c=%ual7`%iYaVOi17ltJ_2;C0RCq2Fo{e`T>|(Z?KFR^%hapf!!g zLe}p~unGg#wPJMg;mcnDL0@BSm?@gBB73fW*HeSDY1>CJxSFTod-=seo| zhcC$=GR+9z-TP%vO)$@|msn9yabrw8=j!|M%Z2f7m+sxV1DO^Shi@3+0cnkyg+Z9bl&e`OAN= z{NDxN;Wm@n588nQ9MC4^q?nTvA^!Y7E&tSKb{OBCmZdyBrA!WB*v{_UZ$^7#*Yp?* zTGMzCu+AVp(8gYcY-rh#+vwkK|7G&`n8;M&ch`d)BS{WKd+PIZ(#Q08DJLmZg5CLD z`2(}(k%xxp!4Ktr3fk8J;+xti%G`PcG^ac{r9|?EzsLP98eh7ZGUB5VY=0=#3;oIs zTHRnMwaItTLYw8-!S{ju3;wkHA$yh)c#|bLZNs>^A;!_?6kxAwqrV)4wz3H_59am| z7{Z=L!cNwO4f~}1!$uU_|E(S2WB)J`aw(HP#v$skTgpLej1NNw+;&5z@EMwr-#|K5 z>=S&Y{iFYPh5xKYHkEw+pq2GEb3cOXqt;%Md;FCpEaKomt{<>ZRbU5tp&ws@dfZ{Z zxi12LBP(=!mwtgO>wYGG-PDNv{o0YwhH<3^bmwdK|2yT+K9~Q97n|EdCp%Fy`{IY| zP3idWOY&cABxQ!Xaaq&2Fk)Xn2{!THlE23!#!@kla<>^HzqJ8y+XdVL(QZCa-%I+- z6WSbf*B;|3HSVMH_Fv)`EUbL`&Hdd9A?r;r&hIz^_m=hl&>eNkkNE||VCyE7c7C`aXUsD^1#66cU$o1bu&>$ zKHUd7I00LY7vLLXbFH@z4r)Pv^uc>g=tT|4x-H}$NO@rg(9i$Si{|*s%OB@c&_4U$ zZisR8Ig2`|-;>h>I$^JtJ^T@4`{O^W!&Z@f`AFBu-t!};U7mc-1lWXWz+2`A`IMJG zWL1bU+9q66fbGynUYa{4o^wIp2=GAkkpK6I{4vfZU2o=VRUw}0gYO&%+8RHf$P_T9 zQ9v0LknT}g;2{^fGUiT0CI{bH3G$cwGxA5jE5Ub=-nt%^(B6oD>EE^gG$&^dEySG3 z9LSXW%4F}sb3S-~4Y|96)-C9Nn-P97rze$;|Ka}^%b)AVV#7z^e=Yp-0OFa-fG>XL zt?MBrk}3KWGuYO%@E<0l%+~PrI)eTks3((SG*3H#{Byqrl|GR_*&vh~j6TO2<=n=+ zL;>LqOy6Qou?zVkXuCb3N2$DCk{x_Q(4K;8UZ~Rs{ztE5_v4Dx?oi(+@-LQ;Ryz8b z1E|{;_wsQbY)d-ks(X+x_qqIEUt6UMe|7-Q-$j0IzhIL-AUR=Nc{zApvopBg0cF3T z@_|nwem?`t+7IV^!@$rB0{LdmTfAkBG&0Dl7F2^z%K(4rF?Bk(~!3Usu z|M|#6dQ}LV-T;$SU{`EkER+k-FRxAayDCp}&d5_X{|}yXAje{iNw27FV@wAf+V%3n zJQbI&jG^CIR$3PHARK+zGPKRE5eEku=DZ14BpF8AjN)@LCG)>D{x7jRT6xf~c$8UY zGl&PY{kwSfQ3>@BJ>|#$-k4{u06Vex^LvVAEib_jCH?%Qyi#09evto+@0EXkRtn~J zU8Hv*_sXTa66TjBspvO9@q5RA(Ke$Q{4-Vbi`R?Wy;45>WHab1p10KGbK}&XArIzB z2PsC52+GM`21H87u#J~j$+NQZvL!_Qv>xu{Wp8;Ch|_$oi3e{lwGFCinE z6G?|Yq(Qd9@aZYvvgc~Og}xn!ZP7>H!e|Z| zdbXa+pX*|^z1J&ao*mCL!ttz#o&~{omWTY6Ql6YHo&PVEKXeKHLTdP~-qWEYj^H^J zc0A2*ekC`Q-_Er+=BH=TniS=hpyxKx15A!W{+hn?bVi|0Z|HHcuRB977kNB^ha2pX z6UuT&em-x7bA>2_=9}Cg|A&zOfbW$*+Tb^RzE}SATm%Knqy3kRtK^D+$zhDSn?N>| z(1uLF&uG}*-N3yi67z)52;S-Was}|Fi~dvf&Ar`1L2tAwK>ipHeY^ixkez|?@@wg1#upNu z$9zgrLGc{G_sT!@*;zb;Q)g(yKjFydd7#rDF>ewL9z0=>(Oy+@Amu5Y*>%!1>7|EU59zClKg>M;)KISE!nbGq%v~!vp;keQ`ot_uc*o!_i z4k^LA>=_*V5*Bp~W#joF`35w`h&nQyJsQkd6l^*l^Y8557;*?FtRbgD@R2~Y;~0*1 zmu_4K_IyvM%Yn;19s2(r=tkgdTTBV(@Rdyh{Jk z`hddROqz$|eMZ!gVJzL(ktN;R#k0^e&{U6e47Bm*vCuX0!T4GLS{ner8*>o1N{jpC znDW$)x%XuZ^Li{0{Sn3jG~dI^2E!P$Eu`lca_}!^Kv(h1ipDR+erXx)&|lC!o%*zr z=YQ1xgGp|%ap^Sw8?m=9e_ls(G&Fxt^-;Shkw5kSIiz2Zu`kX4!bX6XRf@1Hd&!TVX%X$M<<2ESKAW&_anG^zbjJNzqrur7eFJ)pTktOb#Wt#1#zy2a13!db}8 z4zf9m-<#2P#=uTgA)8d<|LH^iw;=x*$lr_lB$7YPBbEP@lYa-upVrmHK>iMpe+BX< zgJ8cfFHsjVI0*kF6#5p4Ja`UJ)jsCbBuzY8{A)q}Dt{nGwQ+=_uV=c(2 zF3+>1suB7IIrzl9k0hH9`6KT)$)EhHd7$kG+VDZ7Lr6i;WhwT|G%3#B0%Jb&;)FRO z_~X>)Wg^cnrTKCH9;7Bny#7Cu5B0zIOt>G#*Lq>h$Ne_K4A}7X*YKg)B{{~Hp)lg- zuk=Cx1UiSXywq5%3z~)XHx2mOC0c_)ZJO4KwFJS`Uwm!-&mYLY%pZaL`T8G{KlwDY zeu{htnm>dO%JD|~=j*BH{P%oHRZVE5a$00`IpKLZCehu zzy@|#f<8+a2bCp^w1*!UH_i*&M4+5JRq>t1lV3}kxF%Pc|L@7Ip!#zJO6B>z$Ir_VzXbvU z0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI0s(=5KtLcM z5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVXAP^7;2m}NI z0s(=5KtLcM5D*9m1Ox&C0fB%(Kp-Fx5C{ka1Ofs9fq+0jARrJB2nYlO0s;YnfIvVX zAP^7;2m}NI0s(=5KtLcM5D*9m1Ox*AWCRfBOMCbv%kXuY_R;Is?3jUr`)FU#QPEkx zxAws9#v`{`YgQ;Q?%H`nP99`X-wQ4!fTfE;pyX&gCoe~R*?)-Y} z%5x>%?s+Z~9iKP8*J(kb*U=TeU0$#7k*U<$pwsjJw|~!8Kk1s?xcT^Hu|q#3I-Tq> zQs@0+yOklTH8-qWe524(qq+6CmHWaKYO;m0tKE_{YQ=A#x<-%LvE$meYv$h3W!07Z za>vY2sWq`~z8y1Ajx}U)gDrQ|XO3&tSkJB_aFRv3C@8VnH4Np3YOU;2D?YFlikjzK zuupcRUHvUnwA6Z4d2%jAB{px-klAxvvhLY=ucD)m{iv!E);xQZCNp!r?7{;zcBiH$L7cV{%)$JoYu3+|3XYgUxRxVWTqVb+dY7?B* zWRB}@7@I9n^?bA9?T*G-FLR$)IPf~D<JeC&pj%eVW*ForzLl1)a$`G4~DKt@hVx zf2XDOF`tI=MrRkKL_fZAer_w1MltKJG_9{cufN%h&0EjbT0ZE#wduptQ`Q-@a@(#P zW3E`#am|AS|7bN<$@M7nk$2s6Cri#Oqn~P%uoI7-)Soiid0EeXH|p7@)u^-Qj+%9c z*sW;~+go>%&3-Iv#^$bck;P1CFX!v9^^AQ~&q<@*uiNN_w3+IsyM*nkWX*u2?)5)B@OWRXZ)CQGx{K3Q=Igj~ z(#pM+Z&uTfzBK5}E%%-QdMeBH^b%(t8T#_+jrrXQI=Z)-HM#wyeg^7Kl&oF`RlOW~ z^kZaV{uRg8ad-Dm=;fgo>OVJbpQ7T-E#ZE8ZD;nds+oF)nXzrM9m>pJBjw`Z(5PcI zJS`u!tZ}KnV@t(KD>}BdUMFu`W#ZjSYB8PcRZL?hY;4nRz>~oz=UVH8wa#j`I6m!$ zm1=0!hP#q-v)w9~J#G5qR12+LA5(A1+eS)_GEJ2ysc#*oe}898S0^@(^~}yIigK)Z zET?C`(5fm+D-CFz`Rc5>)3dxHi-ME`x;t|H4R1(ku|@M9w#e->Oq!ST${_pNnw;gW z-mf=Yot194w?-rj$5$OByHudBPLmUY%-`mJ*~s@ z83*!TcUbVguKs=15tE!d9b6F@t8`iMW8nmLUS3DqP@|4^_bN*EZBBGq?d#;pye?&e<`YYIZF?Rv`pN2TR@DJbvg2+J zv}#iL{OqI#D?@Fqd+c6k@A3wCSwwC41oClg%S zFPyFOqUf68`#0|Iq!Z>U{kC4))HI=!+nfn^wN;zRJS+4WTRZAtg6F8ze(hpz-|;?_ zUSq%7nt3-nuUx6(>$v?xx0MF2lH8G_g--b!TCxH?*JCGZzR_^CVh+luX6%j{uhT>+ zqau5g)*xcsWUCRn-X=!3okLy@w3+-QVfw4qyFCWI>DQ_HG0*51TAtO@tFU&mtJzCj zwC}N>Dw!=@t31rJpo{8Mws_H)pY(38FdMsl>!zd(x4e4RXX7T+z3b89mS4nzl(fOl zr)%w>Q?Xj8TIa=B>1{;%b+!`QG6zW~=69 z#iaz@yX`x7aL2?py;Jkl+;c~7O0Lr1wLnsZIFhi7#;8o+Aj$Jxcpj>z3+Nl#cxZ%5T7Fdb)% zr^iVX<~(fkv{F9o$AtS1wH6Fn;dZq4+N#I;*N;Dy_))FusqRjz43&l-F?#c&TRr&Hk|X7HcY2ri8>+@%iJX6Ee*I=9F+WQ@OtZ{nGlX_2coJB3+d7l3a25+x-6SIMtSZsrwX_4&we>Erpl$xMMGX#T}lp! zNgmLl;s8?%d6%V!<|r|psDV9|cB)^faw}tb>$VT=OuQY9qZAjcnSbO#C$k@?Z_ZzB zl{vfcO&fnZqchnW?)nxviSlgVv_0K7sfXQbWINnoe?Zfpw3IEYDCx86cQVbj#>rY7 zvD!Fc+=`wiU7zPUT+*o5;p5Y8t_@n$J{#BR_B{9TF-Gajru2V#XW-7GfgOhqa!HEv zSvz*Qy79DIMr@nh50f;;^?MdICaq8RK7F>Vx__-;)fi=svDWHamt5MnbU}YPt;0t~ zRB<)g?{@xK;JZhrLpm=B&aJik+BK8))7tdi(In%HL!etiefh?-hJ}VqKGW)Tce#dY z=10c7c{=G;&xYRqCM%{g$obs|_a9eYF1VL`MSt9?0VZin?W&BpQh!3kf$qJ6+(LUc z_c?NO`-N#;SAKX{EjMS$lb4MbWG+cu@sm63r^)GOn{VHGWa>EY*~&RHHn$0jTxBJn zj0~4U2r7v<;mzd?)xq(M28-?_O3U5WUf`p*%oNN zck<5Z&&~@DIz6EgYi}@GJ}I!mjmb0AjQ7_`8KypBqwRrf8y@7uwAr}TW2LXdore=s z`gBYU9p7NIopEf~$vSMCQr})$U4NXDP_Z(bbaLB;X+?vVAMy2iU(NX0FWTyyG;)*nVja>uFeAA=b?UA6L=u(Hai$ZnN$ znwz^X88lX{w{OZa2kGJnGYuWL)TPO`%`2ST_NsxY&bv!TGBPzY-mG_Q`szicnr~ts ze=unhv-eT0Fq4lDnx?Zv-LYc_9BQ3gYti_Sz2=wFz59}KmO#WbA%yXA-ZJRV(r8@h+XTM|B&i9DCb9%B;BJy~|-+ zcEa5?`AwZWit4_l`+_@Ql;U84&gnU23wec+@-A8(@u8^&d< zUgYug+;KzC4D-Ij;xDOH9XQEy!z0Uky*eBA3Wz^{C$0Usr88ZwJJfpRugCV)iXYa( zInp<*-Kfx4o`nWWJf|-_SFP%T{E_z;dG}z}XSR%8(Q*1vgISI%ss*mTuJvJwZ$QUk zjm2%J~f=dPpS;E5)y zcbn@E?b%0l_r+7~&&0jA+m>;uvXS!yTazCqWxUa-wCrxd`-e^mUhCa{8WH=b)2&x8 zm6yCsonuwCoAJ6?)g9e)b~nxLdh_nA#R0KS&bu93w3qF^KD*!1bnl~;)&>uDO#3-d z=ces4yY&xyJyF;l?svraf`v(D7sF2XO)L(dR~yRCKCai<&}ebAysOPejkay3T}{|z z?D28a4%1;(HXKlKYS*rML3Y0t1?QQ4LCl4u0iD{vy*>6??o;JO55~zYt?X){5zuAR zgokr-n$7Js)~!dcppirMYy9*&SWkb}j4s-1;rH?gc>kLu`)!X~? zhxzLZuk>$_>$u|jq@DwhbqKy%?^RFqlCPX@`hQ%YWjwmo@(m5%rPv%v8L(i7*Ni*! ztc))Htavui;va zb9)T5NI5ip%Jl;VF(>AGU0Gyab$FGelQ}C6wC<3wQ|+URG&*X7&Ef?=KhgE7K)zIS zhuv*XEXdt5!cML8)?Y@NP7BvzX~|nk`xdjGh8|MsIPPM^ zSnn;9JY~119F*-G5)q@jWd7O{)%%aBakE3^q3c&TfAn)awO6;#QMa66p?bSVR-p>Ef!nc|7;lFn3=ygxldT{ehyD3Wy z+EgDOy*6On?pvq*N8h*<*zsPS*S$}Ssb+g>*6eYuy~hOTUELV5zq+U8>_wYr+36o{ z%$mH=>zsdhyXh$DrIXUK$96MZ(;~Jzu=a{``z$?a(O}Bx_qnFFyW2cIo`-rI$L{KU zvDIsZrp^2fmt0*swzh5ZsKW;mlGZfw4LmHT(_?%uQxDf$`to~>gKiv)zEMxjKmBYo zwOQGhJ-P?h@$8gqyym=HKx*G3ySh(Zt~KcXuWCC@#?H+>`C?yAb0Ra{nndis z^@G}>ly1*w`zF?`dF<7onp2)Tws~^dv7UyBbEotrH;&C5+(C1h?1PhSwS=fD{aX(* z{!q(&%j(Up6QK>zg||dylvk?zWWhbHzoJbX`P1V*{tg$^{+Q)>-`PJtCdc5 z+SB8rTB|x;Z|*f|t2WfaGBG-9?=^+7ce^YbJ~qIqqI~nLgRE%FL-q58qgWr-c=6ec zkdQ}LJ1VqMY(MA6X7vw$%r1(TZ)iTh{kR?;dh$=qoc7Ed*gkrT??|mG6}!*aMy^=y z;|u3TFO3+vqj}a#?;3+1)rc{F95TJvYzvRGkqx^~yE>#o4Qo4@*Bje88hwd!gw=4y-%1IAVlp<;8`W?hYs9vJzS~&e(kW z=U!vS?(iI$HsGW|yE`GZoE%!5ci!yJTrKNfKHGbRnv+_uzHYImHyYU1u?W8+IpyxD zFe`oey-G8@JRUY}-Y)KN^R}|I=bfv}mHFMvuD$B+nJbqECeAf)>oaR$sIt{s=Ib&l zApY6HEs^zi+PYi{^cZE3|7M;~GbzctsjB7L+0X9mTDqx~X9fAWihYMQ)Ewg3Zt;f7 zueRS;$=5sHrm=Qn)cB2Oj4SkEOXd{nSDzSGZ{oNbzcy*sv{~JCc^%*0-BhD_#jHm4 z?3*@|o_Xh+jO(5lwd`cVmg!5+w(;3kSpA2lDi*g_=bU%*d2m0*UrK1B?|L{c`%zAU zvgJf6J?4gDt1#(EJL%Kn!lRs{mEp>0uHG#-Vw(JPla4*lm{|Cl%zk&p zcv_LBo!b4zQq1#uO2;xcE%<-sn{{84@88BpOSg;`5tZ(e1{DwxkWx}aKzc|sMu*e@ zrE3UMf{gBt(cL+^VdQA|?fdWj6z&Iby{F4I> z2zNc4t+%*y3||cnWV&LH*efS?ld_c8Nj+}kC|}%eXkq7kc6s=j7}nvX>Xzo!IB5CB z#Ns+Ml5QR48jOoF^7UF4GxL5#_>9DP<~np>VJcV#;reGxYEiMi!%Zy7w?B?p$#i3` zr5SnLqG>AY+s{^G|FesdS)Kup%|ZT=1i&>n;|Q(q)yrlPbj5xuW2c$PP$*?%2))bs z!umE?Bwd7;0K;)W=W=_?ll1O)uzA7m8BUeHr0cD_tlHS?yyt5J*L-&B(jDETJz#Ni zTIC)}s>|I0B28uMROHPG_#ixz{6JXr4FN@atG53V(rx$xDU<(OZbvqMcrKO5Vnp}x zf{vx66n}0*_z04Pzx2)!M+Jy|o{=b}lm{NEmcy4fA92OI14HD9@z`i3WoZYZXW#!e z_?jFq-$#|han!Um{buh&-p4Xmu#oJ<{>g<;{g`%Kk@9c`_=^mmNqF`T=yl?_^Q7F~ z2u+1^XE2uVn76kr7-L)d=C02IJwwB;$z{;@E%E*~{e6f6$YxR6>VslZf{&F34XxL! z`27Qw+Pm*sK#C)~N8YqjsqXHnP!YhB7g$RFp@(@rxd@lhPRPQG==NqXWk zKz^@t@2qUhDKpoVt9D-DN9{oBKSIwCB)*9H>w&024Me?hOa0!V$DHj`SvLo$nP{_^ zoFARkMbN;?=?SQ}?MmW`T<>!1j7jB+>i+Wmd};GdiOBTSR6bp2Xy48L@N6UeThyF& zQ?=kd(7#jIF8l7ZyRDVMA5@XE^^3XI@{)l32{u|tq}J>Ppo=#mg8v)f@-{@EKFi5h z1(23Tf?22Jr-AV+#mw&hHbfoCl%}&xHPhdSitt9Pqr!*_^VDU{tsBy_xRP6PX9cot zwhD%5P>pMYQ`cVNa+Tgg1)mQpg^<_mj`NQnhT17>w{|Bb(BXKOOD*mzZMg?vpNHhO zPa+*kz9tI3S`Pc~PDNAuZb_2q#XWsd`r+))QrFPI;a$x(ewTM`q{IKBd*iNNjXe%) z$NahzOf9J+y49lF+P2)M=R*#>m!+ImFMv32={yndJ}2_8FpXupzC}CkdE|PTnk2cc z?xn41{01rroww~SD?8=FlKy4p+< z@6;Lo7YT7aJnm}XI+eEb^HJ07gfZh3qQZlBu zP>R?WjpGr68Y#mXS^GDWoD28eTwd$F8}r10yWnFI*v}p4&~CzE6bB$wYfL~XY6Uk^ z4dVycm$g#^&Nib-Q>c=j2bAzWJ^0sxRMeO4&oCTfiDz54`9vzO-h;%b=bGZ;H&V^#EX=F8!&z=4)+->%MQHbndK4F5x92Fv%Q6#;YQ_ zG%s`U&3K(~d)+n+S z1uTDM`)cP9cHY=VC|FMM>U#cl7?&<;~X7iL3$ARVy6TTOE8F zXkgv;F%+gVZj}iWc>~*i+3}b%vR_F|oF2|l4H6)sYF(#d1$+faV=V`j8t_i)8jqx` zLjH!EYN&$P9xPpE=kBEX5X~ zPK>Na;E9F2&Fk*k_5dTis7E%i>udt>N!$4^&=RZ&1JcviUF>o+t?iwSAxSbrhvGbw z;GcoGu|l{X{P|NibLM{zZBr^ZKmmF8o9BrwOmdQqhvM++AFM29wbK{YBtXhB!!0P$ z(p|?|1Z$?>q9L^^RE-~4$DX(XqinghHc1 zOzDn_rpO?9WL`#KjC&r#P+D3{{-xyQR7VweZ9M9$y_e(Idb4bZe2Y%kCY1>%nE*|< zP|7M(%d1?0;$aB<)zxyi&eP$$_1@6Vj4i!v8w{5M`UhrBiCOC&WujR0E^BgptC#%S zoUg9f?N;dpIUQ2E(Y;{4^Hee68up#i#Lm(ZKR_#!2foAivq!_QXsZC~{I^!{LQU9Q z!s_oO)=4;b87136=3m4>C`cv9oY)wHLZHbM?dU1P3AaxS3!H(|5R8R*1;fmGfyGv0pc~1 zj&vBM$n9owIKt7e&kl%9?Q5*_o!lj}Jmi>Q@aX%H$M~~RJjDE;mu|oo+$;sGtkmVU zmBner{t#xjG2EhiJ+)1lX<$1ySY~7AQDyq5mnu|ZJI5r&=VQ6Kn+e0I(`*zs9c>qn z@@?B@`8T6T=Z}a)Hoo-{k8o4wXcL=~=Ne@_@QS!P->TEJFuKMunu@ROGdJORTyCM!?JCBJs$|w64^&- zDlAQsCL!5ms(L^sJ_GEJ9)~c#HW(ihUi0$^%oycMPI7Y3yCf#sV~kMQeiA-L+EoARVygNIK8b=pBS&7_ z5;tBinH6yfj3;{fTD{5Y_n5R@zOPFb=X%8V=OrT-idP&(YK=sF#Z1%Ew>??h1&$~w zTk-VYZXtpqT^9}>P5if;Sy6)0Rj(qn@mQoQo<~Rx-?&V#e|U%_Fu*VQ*K=wtn)CDs zo?Y79D1`j=$SWa}a}<~zI-cPE?v>8%x{K9TC}vf?9BP-*EDyh=(PkQb#nk$5dj`22ZR=O%p7eXx0JZQ+j#weQ4`BM=qk5rZOfsVhn>*bYx*2an z$@9?t`{g6smksv0XFJ90{8^GXUo0HjfI)`~QjE-;1YMM*fxo zNIUUPA)nkntzA9J}THkl(A-|2`w zY2vrM*AvVNgKCy`)?}Tqz@ahq0241fYm+0D^h{@W`p_J1^d(HdCyuozKS7Xt5 z+orXkQrZog&#n7O_9L+rjy$)S1tdM>wnEczZ2azdBWjF*Ef~1S!ermsrF@J8Hj%bO zO{_@)^$3kU(?phLC0qUt$&*G!z^Pav9$Zf zHUH(h9@PHFoMk94(G8p`;h+OZxO{X`^ox5|ATfpfzpM9Jhnq@MX$Ug1D>8^Av~8J> z=xq>}=}lsB0%~!W;HqxqerK^CzBoXh&(mD`d_^IXsyZkg=Y$doK49}N){$PYrgK+U z0}F%OYKrSt4tav_CFd;qoZ& zi*jk`&rEhEYKMn2^$3Ri~h-dnHJg z_E!Yt={=|M1jmkfAj- zojIi1jPR0u+ctKoM8B;SB{^fmjETQST{S#>H@MQzNcile7K#0w9Bf)0KDff1l2|_d zsB2jYUebvO%jP0sZjk~i-?`fz4w2cJE066|)V}U1T8>JolW?%&!?=Rw=|$|;O{$uf zrNCV=my!B?P`z|*?6>gQVu@lLXlFYiTjdLf|B4E`N!7nOksYh_vda>R@4zNXd1?ll zvDdUU==G+JM?QN;l(pzy`~iCU*12=R9zXt8WRe>Y1FSqDF4>DwhN3Zdpf5+6HAWr| zo8OC5ToGro)g2tEYt`!W*~7-+Y^O3eTJeise*38EyKd8qfkCsZORubrO7kYG2mKy! zSB7|{(M+ju$axbBqpi-j=sB6;8|iIFiy|W8b-am2wV0Q>Gr6p6nJbrl>C!zOF^G1Z zq~)evj8_sn>Y=VZ><#g>HY&Gr4cH<@2t2tA6hyeQUQkO0z^f( zn>f{cQ4S-lcush=&F1L@7INDxUhrsQU@TQ7vG8vPjsqDhQR^1gXIuU^v!TiINhTrB z9S8-Rd&1(7Ks@7ms<5SUddz!^B4#aayHmrDfi5_S0`NVe{4n(s=#0yOYCChoz_H)H zC=;5ozxMAR;YVn&d)Jlc zb`aTu-{{M8ak$uCke-W@X;MVEt`5Ewg`P@VdBVaTuBXrPJ1l_{7rD^Z^A=T@1ZVO3UZPDb@Pgiw_b@8kpg{RBf ze37>)$xM;r+HNct#AgG9^)KWlLzY$@dJ*t@(5g2;npG7?@?g_=yG~VAXkaK`E_8V)S&|lE*TFT}+H&nxT4z z5?#puN26@F7AaSo{iGnDoR!tpc5Yxm22~j@Og3aW-hUS$g|y|3VZ6mgTxYI-j`hu$ z)Z{rq&~BFCT$r8*s5az%rPHTfc%6O&qskv99@%i3s2u)9~L zAulJ@2IqZ2_S%!F^_4RJ8lM?2TKN{{4N4@p5pr?(dhX0c6OZdKf9sl}lK!aawc9f)Bw3`mBfAB60!{6R3 zw0s6)3KD-J*u4)XgkamI&ett(pk_*@@^AX6ia8vW&bR==)tyt1UDVAbWNJ#=TMBt+ zh2L_n3^~!4%T!`;NCf+i|^h%7l)z#C#jZ*iO)RF^T95~ER`sRv+2QY~uHy^=g9x>1~7t$^EZTsfcD z*{CO9x;c-pV$pTI7ejpcQM;AzZl(pWSvY>N>L$GwZnSut%i8~UN})$7zLG5_2 z*UlGnIbq@9{?SO$)J@r~D8*1G$v2;U!`>sfQ)-?{M<-9hUFVmxipU_rgeL}~%`w#= zZ?4VpRuf2JuJD-QBtdrRWZhLIi;2WClCVJ!IuKb>F^4(p`DUW0wsPNW=)RRKhz|Qo z#(z+W*#m0TA1|EvM4C6+dY@Bk=#jbObH+C1Ks z16Iz0B6Un1kNfSW7eh?lXUXQ9weU;ORx=L?`f78UR-N}WGM+=9o5UGV*YuEC9gHm9 zP-he5xZx)BQ2yP5+Nm|Whgdm9B-2c0|K++?pL&XlRe?U*DEJU_*H5mGus25b`<7)B z!{#4{@}tg+Q$}e{xCVXU~m{oTbygacJhxl(@ zzj8VC7Iy(&A2N*(2L0aC2y!qUZ6d_8=hKeMU;9%Sr)~qiSJ!@RbTIi5*5=a|@U30J zE-B>OSis*WhBQ+w#5WVXK_YFsBra|y8kRtV?M0EQffng~gEyLpGnUoCdt^ShU`xsE zAWA#4c4OdVK*2!MAK3xW^~a*uFrPog<}v{Dn~r6ma8`S7Sd0wliInD`81&e}Y)t=g z;U_3vCvW2n`KKDpk#T?4w0`%Q5kitEM}%L32O!BvQpzA!%2S>OHea`riM%;5Nw~`N z+r+E2LEF$-=MSB*b?c)pX?>6jNcV-1!-Cw?Yv7fGsv9O zb#KwMAe95>VHq(BA9l%LppcSsYmT(m&m5E%W~7#s7n;}{j_M`y2M2d8CPe=M(J^ad zrUOUY@;9QrAD0t@A?61=cosqYJWGl8y~jo02lL)#c5r+r8^TEW))fkL<;UhBGRNwbrk9OckUY)H(_5;^@ z|9RXQi)V9m&46#=QrqvGKOrq0ZhONy+*LgajA3NF%MOD`^F{2B0=Bc0z{UBg< zEHrjRFJ$AAmL}A#ue#ta99j zSEhPrJ`an@GUP0L(quleo#E$m0u~?AlilN3?wAgY=6uG2X%2Mz9>ME9YAS&i!L8bi zjKXna#t_pn3dsY`uv`r`UKIfWTxlXk%BeqQ2D|j7-c}(GO*!O5{HDeU0_3c8o#!te z$YLO#GD9#k|K-V|`f*!;C($ALQ`0QKHnis^7X%)@*}D6Fwg^$io_Vya3H0nnhPLr< zy93DEOkP&k02dT3J_iOfHc8rj1?({hY2**})cF}j)?q%u?Q>F_CQ&wmw6>H0BLPwy z)(iYwSMVip9xSr(!fl1^s&==`d*Qnkz3D7PObti+C8M0N9>>O&r?*?Bk5Q!HO4Dw9 zd9Gy8RB%J5`%M1lFJW@B!MUy&6I&3=4i{D=wV-A;`n#k3jw`u$StVF7?@OAq6*OTEr*A3!X2ZeFpg`NQImVV{14ahs$JSz0HPqe+?X8G?y^gl z5G~&z57n$%?mNPN`1pxJ(`XR=4+SA7RoaNi z{#Q#KIY})91GwLZ@P@eP8_mlII`{w!Ua0IB=o@*or)yX?dY= z_bR-;K8k|SI+@V@r zYj;^Cw=_a~jW3_#==e(_%{Ly>NB|P2`pYSkCIx$y3(^Gs%&IC^Y+|DHi1(9*zqxRn zun&L!bUfYbVCGyt_fF1FRP5^)yrN^2Gl(4AcRH4`R=Cp_#)}ZmgI=D)>ENvDTdlrv-{s5K2P@|m2pqAI2PMtkNEiGSq*vG3zxVU%Naa* z#N*3(0_GzUm$=ZoHqiRfW35Zv&8Y7N4W^gB7F)npZge6E3Nz)_ktYg|cMqU4-I&V6 z?Z(ehiM3_p+j8Wwj>q8AnwZ{vMa+`^y*-isVTW}ss$IJlrRY&~s#j$rJ{aUmp~lHJ z4f796a?9GB#zEI85w+Hv%H6;XL(I*U?vN&yjB85&?JLl+-b8!NCRv}G2%m(wX$!cM zXBvUc-NU*R=yncz!3Y48Nw6K1pXF?*rKS-+Bl!}ZO@i{zbwnac?0_kmMrpfywaM;cdfjy7v|TkYoco8k!jRdu7V`8m{QmL@_pcp z5mqZ!WALJA_;5t9)Yo%KqYr1qIpDQOS)(9xV9{aha7_~}fJ$Bot Date: Tue, 9 Jul 2024 14:49:52 +0800 Subject: [PATCH 4/6] chore: update requirements --- requirements.txt | Bin 242 -> 244 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/requirements.txt b/requirements.txt index ea28189ab072e78de3793b641d7d3239e082bac5..b7d66bbf70511572ec40d9db14d2e72c010052af 100644 GIT binary patch delta 79 zcmeyw_=VB^|Gxr;OokjF%x5TPumwUx1_K5?1`{AQVBlroVnCLUXUJek1*%U2s|2Yt MWH1M*oank10OAY~DF6Tf delta 77 zcmeyu_=(Z=|Gxl+OokjF%x5TPumwU(20aE-AU0s&W#D2cK$6vE$Y4kX^3%ZT41j73 LfvSMyMEA7-yZR5R From 9fdb83056fddae458304d1dcecdfd1b6821ec878 Mon Sep 17 00:00:00 2001 From: louispawaon Date: Tue, 9 Jul 2024 14:50:03 +0800 Subject: [PATCH 5/6] refactor: fix not converting to jpg problem --- src/converter.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/converter.py b/src/converter.py index c565dfd..5b52970 100644 --- a/src/converter.py +++ b/src/converter.py @@ -50,7 +50,10 @@ def run(self): os.path.splitext(filename)[0] + f".{self.output_format.lower()}" ) output_path_new = os.path.join(self.output_path, output_filename) - image.save(output_path_new, format=self.output_format) + if self.output_format.upper() == "JPG": + image.save(output_path_new, format="JPEG") + else: + image.save(output_path_new, format=self.output_format.upper()) self.progress.emit(int((i / total_files) * 100)) self.finished.emit() @@ -61,12 +64,9 @@ def run(self): class MainWindow(QMainWindow): def __init__(self): super().__init__() - self.setWindowTitle("HEIC Converter") + self.setWindowTitle("SnapShift") self.setGeometry(100, 100, 600, 400) - self.setWindowIcon( - QIcon("path_to_your_icon.png") - ) # Replace with your icon path - + self.setWindowIcon(QIcon("src/assets/icon.ico")) main_layout = QVBoxLayout() # Input folder selection From 527a5e56e777f2eaef27fca2f3323022e0533566 Mon Sep 17 00:00:00 2001 From: louispawaon Date: Tue, 9 Jul 2024 14:50:14 +0800 Subject: [PATCH 6/6] refactor: update README --- README.md | 52 ++++++++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index e2f787c..ab4fc6d 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,37 @@ -# **heic-to-jpg** -converting heic files using the internet is cumbersome so i made this not-so-intuitive way of converting things +# **SnapShift** +Previously *heic-to-jpg*, converting heic files using the internet is cumbersome and so i made this *now intuitive* way of converting `.heic` files to multiple image formats. # **Installation** -To run this script, you will need to install the required libraries listed in the `requirements.txt` file. You can do this using pip by running the following command in your terminal: - -``` -pip install -r requirements.txt # for Windows -``` - -Alternatively, you can manually install the required libraries by running the following command for each library: - -``` -pip install -``` - -# **Usage** -To use the script, run the following command in your terminal: - -``` -python3 converter.py -``` -Choose the folder with your HEIC file/s, and it will automatically place the converted HEIC files to the same path destination of your HEIC file/s folder. +1. Download the `SnapShift.exe` file +2. Choose your Target Folder with the .heic images +3. Choose your Destination Folder for the converted images +4. Choose what image type you want your .heic file to be converted +5. Convert and wait for it to be finished. # **Contributing** + Contributions to this project are welcome! To contribute, please fork this repository, make your changes, and submit a pull request. Before submitting a pull request, please make sure that your changes are well-tested and adhere to the PEP 8 style guide. +To run this script, you will need to install the required libraries listed in the `requirements.txt` file. + +1. Clone the repository + ``` + git clone https://github.com/louispawaon/snapshift.git + ``` +2. Create a virtual environment + ``` + cd SnapShift + python3 -m venv venv + ``` +3. Install `requirements.txt` + ``` + pip install -r requirements.txt + ``` +4. Run the script + ``` + cd src + python3 converter.py + ``` + # **Issues** -If you encounter any issues while using this script, please report them by creating a new [issue](https://github.com/louispawaon/heic-to-jpg/issues) in the issue tracker. When reporting an issue, please include a detailed description of the problem, along with any relevant error messages and steps to reproduce the issue. \ No newline at end of file +If you encounter any issues while using this script, please report them by creating a new [issue](https://github.com/louispawaon/snapshift/issues) in the issue tracker. When reporting an issue, please include a detailed description of the problem, along with any relevant error messages and steps to reproduce the issue. \ No newline at end of file